{"version":3,"sources":["webpack:///node_modules/@asymmetrik/ngx-leaflet/__ivy_ngcc__/dist/index.js","webpack:///node_modules/@asymmetrik/ngx-leaflet/__ivy_ngcc__/dist/leaflet/core/leaflet.directive.js","webpack:///node_modules/@asymmetrik/ngx-leaflet/__ivy_ngcc__/dist/leaflet/core/leaflet.directive.wrapper.js","webpack:///node_modules/@asymmetrik/ngx-leaflet/__ivy_ngcc__/dist/leaflet/core/leaflet.util.js","webpack:///node_modules/@asymmetrik/ngx-leaflet/__ivy_ngcc__/dist/leaflet/layers/base/leaflet-baselayers.directive.js","webpack:///node_modules/@asymmetrik/ngx-leaflet/__ivy_ngcc__/dist/leaflet/layers/control/leaflet-control-layers-changes.model.js","webpack:///node_modules/@asymmetrik/ngx-leaflet/__ivy_ngcc__/dist/leaflet/layers/control/leaflet-control-layers-config.model.js","webpack:///node_modules/@asymmetrik/ngx-leaflet/__ivy_ngcc__/dist/leaflet/layers/control/leaflet-control-layers.directive.js","webpack:///node_modules/@asymmetrik/ngx-leaflet/__ivy_ngcc__/dist/leaflet/layers/control/leaflet-control-layers.wrapper.js","webpack:///node_modules/@asymmetrik/ngx-leaflet/__ivy_ngcc__/dist/leaflet/layers/leaflet-layer.directive.js","webpack:///node_modules/@asymmetrik/ngx-leaflet/__ivy_ngcc__/dist/leaflet/layers/leaflet-layers.directive.js","webpack:///node_modules/@asymmetrik/ngx-leaflet/__ivy_ngcc__/dist/leaflet/layers/leaflet-tile-layer-definition.model.js","webpack:///node_modules/@asymmetrik/ngx-leaflet/__ivy_ngcc__/dist/leaflet/leaflet.module.js","webpack:///node_modules/@swimlane/ngx-charts/__ivy_ngcc__/fesm2015/swimlane-ngx-charts.js","webpack:///node_modules/angular2-chartjs/__ivy_ngcc__/dist/chart.component.js","webpack:///node_modules/angular2-chartjs/__ivy_ngcc__/dist/chart.module.js","webpack:///node_modules/angular2-chartjs/__ivy_ngcc__/dist/index.js","webpack:///node_modules/chart.js/dist/Chart.js","webpack:///node_modules/d3-array/src/array.js","webpack:///node_modules/d3-array/src/ascending.js","webpack:///node_modules/d3-array/src/bin.js","webpack:///node_modules/d3-array/src/bisect.js","webpack:///node_modules/d3-array/src/bisector.js","webpack:///node_modules/d3-array/src/constant.js","webpack:///node_modules/d3-array/src/count.js","webpack:///node_modules/d3-array/src/cross.js","webpack:///node_modules/d3-array/src/cumsum.js","webpack:///node_modules/d3-array/src/descending.js","webpack:///node_modules/d3-array/src/deviation.js","webpack:///node_modules/d3-array/src/extent.js","webpack:///node_modules/d3-array/src/greatest.js","webpack:///node_modules/d3-array/src/greatestIndex.js","webpack:///node_modules/d3-array/src/group.js","webpack:///node_modules/d3-array/src/identity.js","webpack:///node_modules/d3-array/src/index.js","webpack:///node_modules/d3-array/src/least.js","webpack:///node_modules/d3-array/src/leastIndex.js","webpack:///node_modules/d3-array/src/max.js","webpack:///node_modules/d3-array/src/maxIndex.js","webpack:///node_modules/d3-array/src/mean.js","webpack:///node_modules/d3-array/src/median.js","webpack:///node_modules/d3-array/src/merge.js","webpack:///node_modules/d3-array/src/min.js","webpack:///node_modules/d3-array/src/minIndex.js","webpack:///node_modules/d3-array/src/number.js","webpack:///node_modules/d3-array/src/pairs.js","webpack:///node_modules/d3-array/src/permute.js","webpack:///node_modules/d3-array/src/quantile.js","webpack:///node_modules/d3-array/src/quickselect.js","webpack:///node_modules/d3-array/src/range.js","webpack:///node_modules/d3-array/src/scan.js","webpack:///node_modules/d3-array/src/shuffle.js","webpack:///node_modules/d3-array/src/sum.js","webpack:///node_modules/d3-array/src/threshold/freedmanDiaconis.js","webpack:///node_modules/d3-array/src/threshold/scott.js","webpack:///node_modules/d3-array/src/threshold/sturges.js","webpack:///node_modules/d3-array/src/ticks.js","webpack:///node_modules/d3-array/src/transpose.js","webpack:///node_modules/d3-array/src/variance.js","webpack:///node_modules/d3-array/src/zip.js","webpack:///node_modules/d3-brush/src/brush.js","webpack:///node_modules/d3-brush/src/constant.js","webpack:///node_modules/d3-brush/src/event.js","webpack:///node_modules/d3-brush/src/index.js","webpack:///node_modules/d3-brush/src/noevent.js","webpack:///node_modules/d3-color/src/color.js","webpack:///node_modules/d3-color/src/cubehelix.js","webpack:///node_modules/d3-color/src/define.js","webpack:///node_modules/d3-color/src/index.js","webpack:///node_modules/d3-color/src/lab.js","webpack:///node_modules/d3-color/src/math.js","webpack:///node_modules/d3-dispatch/src/dispatch.js","webpack:///node_modules/d3-dispatch/src/index.js","webpack:///node_modules/d3-drag/src/constant.js","webpack:///node_modules/d3-drag/src/drag.js","webpack:///node_modules/d3-drag/src/event.js","webpack:///node_modules/d3-drag/src/index.js","webpack:///node_modules/d3-drag/src/nodrag.js","webpack:///node_modules/d3-drag/src/noevent.js","webpack:///node_modules/d3-ease/src/back.js","webpack:///node_modules/d3-ease/src/bounce.js","webpack:///node_modules/d3-ease/src/circle.js","webpack:///node_modules/d3-ease/src/cubic.js","webpack:///node_modules/d3-ease/src/elastic.js","webpack:///node_modules/d3-ease/src/exp.js","webpack:///node_modules/d3-ease/src/index.js","webpack:///node_modules/d3-ease/src/linear.js","webpack:///node_modules/d3-ease/src/poly.js","webpack:///node_modules/d3-ease/src/quad.js","webpack:///node_modules/d3-ease/src/sin.js","webpack:///node_modules/d3-format/src/defaultLocale.js","webpack:///node_modules/d3-format/src/exponent.js","webpack:///node_modules/d3-format/src/formatDecimal.js","webpack:///node_modules/d3-format/src/formatGroup.js","webpack:///node_modules/d3-format/src/formatNumerals.js","webpack:///node_modules/d3-format/src/formatPrefixAuto.js","webpack:///node_modules/d3-format/src/formatRounded.js","webpack:///node_modules/d3-format/src/formatSpecifier.js","webpack:///node_modules/d3-format/src/formatTrim.js","webpack:///node_modules/d3-format/src/formatTypes.js","webpack:///node_modules/d3-format/src/identity.js","webpack:///node_modules/d3-format/src/index.js","webpack:///node_modules/d3-format/src/locale.js","webpack:///node_modules/d3-format/src/precisionFixed.js","webpack:///node_modules/d3-format/src/precisionPrefix.js","webpack:///node_modules/d3-format/src/precisionRound.js","webpack:///node_modules/d3-hierarchy/src/accessors.js","webpack:///node_modules/d3-hierarchy/src/array.js","webpack:///node_modules/d3-hierarchy/src/cluster.js","webpack:///node_modules/d3-hierarchy/src/constant.js","webpack:///node_modules/d3-hierarchy/src/hierarchy/ancestors.js","webpack:///node_modules/d3-hierarchy/src/hierarchy/count.js","webpack:///node_modules/d3-hierarchy/src/hierarchy/descendants.js","webpack:///node_modules/d3-hierarchy/src/hierarchy/each.js","webpack:///node_modules/d3-hierarchy/src/hierarchy/eachAfter.js","webpack:///node_modules/d3-hierarchy/src/hierarchy/eachBefore.js","webpack:///node_modules/d3-hierarchy/src/hierarchy/index.js","webpack:///node_modules/d3-hierarchy/src/hierarchy/leaves.js","webpack:///node_modules/d3-hierarchy/src/hierarchy/links.js","webpack:///node_modules/d3-hierarchy/src/hierarchy/path.js","webpack:///node_modules/d3-hierarchy/src/hierarchy/sort.js","webpack:///node_modules/d3-hierarchy/src/hierarchy/sum.js","webpack:///node_modules/d3-hierarchy/src/index.js","webpack:///node_modules/d3-hierarchy/src/pack/enclose.js","webpack:///node_modules/d3-hierarchy/src/pack/index.js","webpack:///node_modules/d3-hierarchy/src/pack/siblings.js","webpack:///node_modules/d3-hierarchy/src/partition.js","webpack:///node_modules/d3-hierarchy/src/stratify.js","webpack:///node_modules/d3-hierarchy/src/tree.js","webpack:///node_modules/d3-hierarchy/src/treemap/binary.js","webpack:///node_modules/d3-hierarchy/src/treemap/dice.js","webpack:///node_modules/d3-hierarchy/src/treemap/index.js","webpack:///node_modules/d3-hierarchy/src/treemap/resquarify.js","webpack:///node_modules/d3-hierarchy/src/treemap/round.js","webpack:///node_modules/d3-hierarchy/src/treemap/slice.js","webpack:///node_modules/d3-hierarchy/src/treemap/sliceDice.js","webpack:///node_modules/d3-hierarchy/src/treemap/squarify.js","webpack:///node_modules/d3-interpolate/src/array.js","webpack:///node_modules/d3-interpolate/src/basis.js","webpack:///node_modules/d3-interpolate/src/basisClosed.js","webpack:///node_modules/d3-interpolate/src/color.js","webpack:///node_modules/d3-interpolate/src/constant.js","webpack:///node_modules/d3-interpolate/src/cubehelix.js","webpack:///node_modules/d3-interpolate/src/date.js","webpack:///node_modules/d3-interpolate/src/discrete.js","webpack:///node_modules/d3-interpolate/src/hcl.js","webpack:///node_modules/d3-interpolate/src/hsl.js","webpack:///node_modules/d3-interpolate/src/hue.js","webpack:///node_modules/d3-interpolate/src/index.js","webpack:///node_modules/d3-interpolate/src/lab.js","webpack:///node_modules/d3-interpolate/src/number.js","webpack:///node_modules/d3-interpolate/src/numberArray.js","webpack:///node_modules/d3-interpolate/src/object.js","webpack:///node_modules/d3-interpolate/src/piecewise.js","webpack:///node_modules/d3-interpolate/src/quantize.js","webpack:///node_modules/d3-interpolate/src/rgb.js","webpack:///node_modules/d3-interpolate/src/round.js","webpack:///node_modules/d3-interpolate/src/string.js","webpack:///node_modules/d3-interpolate/src/transform/decompose.js","webpack:///node_modules/d3-interpolate/src/transform/index.js","webpack:///node_modules/d3-interpolate/src/transform/parse.js","webpack:///node_modules/d3-interpolate/src/value.js","webpack:///node_modules/d3-interpolate/src/zoom.js","webpack:///node_modules/d3-path/src/index.js","webpack:///node_modules/d3-path/src/path.js","webpack:///node_modules/d3-scale/src/band.js","webpack:///node_modules/d3-scale/src/constant.js","webpack:///node_modules/d3-scale/src/continuous.js","webpack:///node_modules/d3-scale/src/diverging.js","webpack:///node_modules/d3-scale/src/identity.js","webpack:///node_modules/d3-scale/src/index.js","webpack:///node_modules/d3-scale/src/init.js","webpack:///node_modules/d3-scale/src/linear.js","webpack:///node_modules/d3-scale/src/log.js","webpack:///node_modules/d3-scale/src/nice.js","webpack:///node_modules/d3-scale/src/number.js","webpack:///node_modules/d3-scale/src/ordinal.js","webpack:///node_modules/d3-scale/src/pow.js","webpack:///node_modules/d3-scale/src/quantile.js","webpack:///node_modules/d3-scale/src/quantize.js","webpack:///node_modules/d3-scale/src/radial.js","webpack:///node_modules/d3-scale/src/sequential.js","webpack:///node_modules/d3-scale/src/sequentialQuantile.js","webpack:///node_modules/d3-scale/src/symlog.js","webpack:///node_modules/d3-scale/src/threshold.js","webpack:///node_modules/d3-scale/src/tickFormat.js","webpack:///node_modules/d3-scale/src/time.js","webpack:///node_modules/d3-scale/src/utcTime.js","webpack:///node_modules/d3-selection/src/constant.js","webpack:///node_modules/d3-selection/src/create.js","webpack:///node_modules/d3-selection/src/creator.js","webpack:///node_modules/d3-selection/src/index.js","webpack:///node_modules/d3-selection/src/local.js","webpack:///node_modules/d3-selection/src/matcher.js","webpack:///node_modules/d3-selection/src/mouse.js","webpack:///node_modules/d3-selection/src/namespace.js","webpack:///node_modules/d3-selection/src/namespaces.js","webpack:///node_modules/d3-selection/src/point.js","webpack:///node_modules/d3-selection/src/select.js","webpack:///node_modules/d3-selection/src/selectAll.js","webpack:///node_modules/d3-selection/src/selection/append.js","webpack:///node_modules/d3-selection/src/selection/attr.js","webpack:///node_modules/d3-selection/src/selection/call.js","webpack:///node_modules/d3-selection/src/selection/classed.js","webpack:///node_modules/d3-selection/src/selection/clone.js","webpack:///node_modules/d3-selection/src/selection/data.js","webpack:///node_modules/d3-selection/src/selection/datum.js","webpack:///node_modules/d3-selection/src/selection/dispatch.js","webpack:///node_modules/d3-selection/src/selection/each.js","webpack:///node_modules/d3-selection/src/selection/empty.js","webpack:///node_modules/d3-selection/src/selection/enter.js","webpack:///node_modules/d3-selection/src/selection/exit.js","webpack:///node_modules/d3-selection/src/selection/filter.js","webpack:///node_modules/d3-selection/src/selection/html.js","webpack:///node_modules/d3-selection/src/selection/index.js","webpack:///node_modules/d3-selection/src/selection/insert.js","webpack:///node_modules/d3-selection/src/selection/join.js","webpack:///node_modules/d3-selection/src/selection/lower.js","webpack:///node_modules/d3-selection/src/selection/merge.js","webpack:///node_modules/d3-selection/src/selection/node.js","webpack:///node_modules/d3-selection/src/selection/nodes.js","webpack:///node_modules/d3-selection/src/selection/on.js","webpack:///node_modules/d3-selection/src/selection/order.js","webpack:///node_modules/d3-selection/src/selection/property.js","webpack:///node_modules/d3-selection/src/selection/raise.js","webpack:///node_modules/d3-selection/src/selection/remove.js","webpack:///node_modules/d3-selection/src/selection/select.js","webpack:///node_modules/d3-selection/src/selection/selectAll.js","webpack:///node_modules/d3-selection/src/selection/size.js","webpack:///node_modules/d3-selection/src/selection/sort.js","webpack:///node_modules/d3-selection/src/selection/sparse.js","webpack:///node_modules/d3-selection/src/selection/style.js","webpack:///node_modules/d3-selection/src/selection/text.js","webpack:///node_modules/d3-selection/src/selector.js","webpack:///node_modules/d3-selection/src/selectorAll.js","webpack:///node_modules/d3-selection/src/sourceEvent.js","webpack:///node_modules/d3-selection/src/touch.js","webpack:///node_modules/d3-selection/src/touches.js","webpack:///node_modules/d3-selection/src/window.js","webpack:///node_modules/d3-shape/src/arc.js","webpack:///node_modules/d3-shape/src/area.js","webpack:///node_modules/d3-shape/src/areaRadial.js","webpack:///node_modules/d3-shape/src/array.js","webpack:///node_modules/d3-shape/src/constant.js","webpack:///node_modules/d3-shape/src/curve/basis.js","webpack:///node_modules/d3-shape/src/curve/basisClosed.js","webpack:///node_modules/d3-shape/src/curve/basisOpen.js","webpack:///node_modules/d3-shape/src/curve/bundle.js","webpack:///node_modules/d3-shape/src/curve/cardinal.js","webpack:///node_modules/d3-shape/src/curve/cardinalClosed.js","webpack:///node_modules/d3-shape/src/curve/cardinalOpen.js","webpack:///node_modules/d3-shape/src/curve/catmullRom.js","webpack:///node_modules/d3-shape/src/curve/catmullRomClosed.js","webpack:///node_modules/d3-shape/src/curve/catmullRomOpen.js","webpack:///node_modules/d3-shape/src/curve/linear.js","webpack:///node_modules/d3-shape/src/curve/linearClosed.js","webpack:///node_modules/d3-shape/src/curve/monotone.js","webpack:///node_modules/d3-shape/src/curve/natural.js","webpack:///node_modules/d3-shape/src/curve/radial.js","webpack:///node_modules/d3-shape/src/curve/step.js","webpack:///node_modules/d3-shape/src/descending.js","webpack:///node_modules/d3-shape/src/identity.js","webpack:///node_modules/d3-shape/src/index.js","webpack:///node_modules/d3-shape/src/line.js","webpack:///node_modules/d3-shape/src/lineRadial.js","webpack:///node_modules/d3-shape/src/link/index.js","webpack:///node_modules/d3-shape/src/math.js","webpack:///node_modules/d3-shape/src/noop.js","webpack:///node_modules/d3-shape/src/offset/diverging.js","webpack:///node_modules/d3-shape/src/offset/expand.js","webpack:///node_modules/d3-shape/src/offset/none.js","webpack:///node_modules/d3-shape/src/offset/silhouette.js","webpack:///node_modules/d3-shape/src/offset/wiggle.js","webpack:///node_modules/d3-shape/src/order/appearance.js","webpack:///node_modules/d3-shape/src/order/ascending.js","webpack:///node_modules/d3-shape/src/order/descending.js","webpack:///node_modules/d3-shape/src/order/insideOut.js","webpack:///node_modules/d3-shape/src/order/none.js","webpack:///node_modules/d3-shape/src/order/reverse.js","webpack:///node_modules/d3-shape/src/pie.js","webpack:///node_modules/d3-shape/src/point.js","webpack:///node_modules/d3-shape/src/pointRadial.js","webpack:///node_modules/d3-shape/src/stack.js","webpack:///node_modules/d3-shape/src/symbol.js","webpack:///node_modules/d3-shape/src/symbol/circle.js","webpack:///node_modules/d3-shape/src/symbol/cross.js","webpack:///node_modules/d3-shape/src/symbol/diamond.js","webpack:///node_modules/d3-shape/src/symbol/square.js","webpack:///node_modules/d3-shape/src/symbol/star.js","webpack:///node_modules/d3-shape/src/symbol/triangle.js","webpack:///node_modules/d3-shape/src/symbol/wye.js","webpack:///node_modules/d3-time-format/src/defaultLocale.js","webpack:///node_modules/d3-time-format/src/index.js","webpack:///node_modules/d3-time-format/src/isoFormat.js","webpack:///node_modules/d3-time-format/src/isoParse.js","webpack:///node_modules/d3-time-format/src/locale.js","webpack:///node_modules/d3-time/src/day.js","webpack:///node_modules/d3-time/src/duration.js","webpack:///node_modules/d3-time/src/hour.js","webpack:///node_modules/d3-time/src/index.js","webpack:///node_modules/d3-time/src/interval.js","webpack:///node_modules/d3-time/src/millisecond.js","webpack:///node_modules/d3-time/src/minute.js","webpack:///node_modules/d3-time/src/month.js","webpack:///node_modules/d3-time/src/second.js","webpack:///node_modules/d3-time/src/utcDay.js","webpack:///node_modules/d3-time/src/utcHour.js","webpack:///node_modules/d3-time/src/utcMinute.js","webpack:///node_modules/d3-time/src/utcMonth.js","webpack:///node_modules/d3-time/src/utcWeek.js","webpack:///node_modules/d3-time/src/utcYear.js","webpack:///node_modules/d3-time/src/week.js","webpack:///node_modules/d3-time/src/year.js","webpack:///node_modules/d3-timer/src/index.js","webpack:///node_modules/d3-timer/src/interval.js","webpack:///node_modules/d3-timer/src/timeout.js","webpack:///node_modules/d3-timer/src/timer.js","webpack:///node_modules/d3-transition/src/active.js","webpack:///node_modules/d3-transition/src/index.js","webpack:///node_modules/d3-transition/src/interrupt.js","webpack:///node_modules/d3-transition/src/selection/index.js","webpack:///node_modules/d3-transition/src/selection/interrupt.js","webpack:///node_modules/d3-transition/src/selection/transition.js","webpack:///node_modules/d3-transition/src/transition/attr.js","webpack:///node_modules/d3-transition/src/transition/attrTween.js","webpack:///node_modules/d3-transition/src/transition/delay.js","webpack:///node_modules/d3-transition/src/transition/duration.js","webpack:///node_modules/d3-transition/src/transition/ease.js","webpack:///node_modules/d3-transition/src/transition/end.js","webpack:///node_modules/d3-transition/src/transition/filter.js","webpack:///node_modules/d3-transition/src/transition/index.js","webpack:///node_modules/d3-transition/src/transition/interpolate.js","webpack:///node_modules/d3-transition/src/transition/merge.js","webpack:///node_modules/d3-transition/src/transition/on.js","webpack:///node_modules/d3-transition/src/transition/remove.js","webpack:///node_modules/d3-transition/src/transition/schedule.js","webpack:///node_modules/d3-transition/src/transition/select.js","webpack:///node_modules/d3-transition/src/transition/selectAll.js","webpack:///node_modules/d3-transition/src/transition/selection.js","webpack:///node_modules/d3-transition/src/transition/style.js","webpack:///node_modules/d3-transition/src/transition/styleTween.js","webpack:///node_modules/d3-transition/src/transition/text.js","webpack:///node_modules/d3-transition/src/transition/textTween.js","webpack:///node_modules/d3-transition/src/transition/transition.js","webpack:///node_modules/d3-transition/src/transition/tween.js","webpack:///node_modules/echarts/index.js","webpack:///node_modules/echarts/lib/CoordinateSystem.js","webpack:///node_modules/echarts/lib/ExtensionAPI.js","webpack:///node_modules/echarts/lib/action/createDataSelectAction.js","webpack:///node_modules/echarts/lib/action/geoRoam.js","webpack:///node_modules/echarts/lib/action/roamHelper.js","webpack:///node_modules/echarts/lib/chart/bar.js","webpack:///node_modules/echarts/lib/chart/bar/BarSeries.js","webpack:///node_modules/echarts/lib/chart/bar/BarView.js","webpack:///node_modules/echarts/lib/chart/bar/BaseBarSeries.js","webpack:///node_modules/echarts/lib/chart/bar/PictorialBarSeries.js","webpack:///node_modules/echarts/lib/chart/bar/PictorialBarView.js","webpack:///node_modules/echarts/lib/chart/bar/barItemStyle.js","webpack:///node_modules/echarts/lib/chart/bar/helper.js","webpack:///node_modules/echarts/lib/chart/boxplot.js","webpack:///node_modules/echarts/lib/chart/boxplot/BoxplotSeries.js","webpack:///node_modules/echarts/lib/chart/boxplot/BoxplotView.js","webpack:///node_modules/echarts/lib/chart/boxplot/boxplotLayout.js","webpack:///node_modules/echarts/lib/chart/boxplot/boxplotVisual.js","webpack:///node_modules/echarts/lib/chart/candlestick.js","webpack:///node_modules/echarts/lib/chart/candlestick/CandlestickSeries.js","webpack:///node_modules/echarts/lib/chart/candlestick/CandlestickView.js","webpack:///node_modules/echarts/lib/chart/candlestick/candlestickLayout.js","webpack:///node_modules/echarts/lib/chart/candlestick/candlestickVisual.js","webpack:///node_modules/echarts/lib/chart/candlestick/preprocessor.js","webpack:///node_modules/echarts/lib/chart/custom.js","webpack:///node_modules/echarts/lib/chart/effectScatter.js","webpack:///node_modules/echarts/lib/chart/effectScatter/EffectScatterSeries.js","webpack:///node_modules/echarts/lib/chart/effectScatter/EffectScatterView.js","webpack:///node_modules/echarts/lib/chart/funnel.js","webpack:///node_modules/echarts/lib/chart/funnel/FunnelSeries.js","webpack:///node_modules/echarts/lib/chart/funnel/FunnelView.js","webpack:///node_modules/echarts/lib/chart/funnel/funnelLayout.js","webpack:///node_modules/echarts/lib/chart/gauge.js","webpack:///node_modules/echarts/lib/chart/gauge/GaugeSeries.js","webpack:///node_modules/echarts/lib/chart/gauge/GaugeView.js","webpack:///node_modules/echarts/lib/chart/gauge/PointerPath.js","webpack:///node_modules/echarts/lib/chart/graph.js","webpack:///node_modules/echarts/lib/chart/graph/GraphSeries.js","webpack:///node_modules/echarts/lib/chart/graph/GraphView.js","webpack:///node_modules/echarts/lib/chart/graph/adjustEdge.js","webpack:///node_modules/echarts/lib/chart/graph/categoryFilter.js","webpack:///node_modules/echarts/lib/chart/graph/categoryVisual.js","webpack:///node_modules/echarts/lib/chart/graph/circularLayout.js","webpack:///node_modules/echarts/lib/chart/graph/circularLayoutHelper.js","webpack:///node_modules/echarts/lib/chart/graph/createView.js","webpack:///node_modules/echarts/lib/chart/graph/edgeVisual.js","webpack:///node_modules/echarts/lib/chart/graph/forceHelper.js","webpack:///node_modules/echarts/lib/chart/graph/forceLayout.js","webpack:///node_modules/echarts/lib/chart/graph/graphAction.js","webpack:///node_modules/echarts/lib/chart/graph/simpleLayout.js","webpack:///node_modules/echarts/lib/chart/graph/simpleLayoutHelper.js","webpack:///node_modules/echarts/lib/chart/heatmap.js","webpack:///node_modules/echarts/lib/chart/heatmap/HeatmapLayer.js","webpack:///node_modules/echarts/lib/chart/heatmap/HeatmapSeries.js","webpack:///node_modules/echarts/lib/chart/heatmap/HeatmapView.js","webpack:///node_modules/echarts/lib/chart/helper/EffectLine.js","webpack:///node_modules/echarts/lib/chart/helper/EffectPolyline.js","webpack:///node_modules/echarts/lib/chart/helper/EffectSymbol.js","webpack:///node_modules/echarts/lib/chart/helper/LargeLineDraw.js","webpack:///node_modules/echarts/lib/chart/helper/LargeSymbolDraw.js","webpack:///node_modules/echarts/lib/chart/helper/Line.js","webpack:///node_modules/echarts/lib/chart/helper/LineDraw.js","webpack:///node_modules/echarts/lib/chart/helper/LinePath.js","webpack:///node_modules/echarts/lib/chart/helper/Polyline.js","webpack:///node_modules/echarts/lib/chart/helper/Symbol.js","webpack:///node_modules/echarts/lib/chart/helper/SymbolDraw.js","webpack:///node_modules/echarts/lib/chart/helper/WhiskerBoxDraw.js","webpack:///node_modules/echarts/lib/chart/helper/createGraphFromNodeEdge.js","webpack:///node_modules/echarts/lib/chart/helper/createListFromArray.js","webpack:///node_modules/echarts/lib/chart/helper/createListSimply.js","webpack:///node_modules/echarts/lib/chart/helper/createRenderPlanner.js","webpack:///node_modules/echarts/lib/chart/helper/labelHelper.js","webpack:///node_modules/echarts/lib/chart/helper/treeHelper.js","webpack:///node_modules/echarts/lib/chart/helper/whiskerBoxCommon.js","webpack:///node_modules/echarts/lib/chart/line.js","webpack:///node_modules/echarts/lib/chart/line/LineSeries.js","webpack:///node_modules/echarts/lib/chart/line/LineView.js","webpack:///node_modules/echarts/lib/chart/line/lineAnimationDiff.js","webpack:///node_modules/echarts/lib/chart/line/poly.js","webpack:///node_modules/echarts/lib/chart/lines.js","webpack:///node_modules/echarts/lib/chart/lines/LinesSeries.js","webpack:///node_modules/echarts/lib/chart/lines/LinesView.js","webpack:///node_modules/echarts/lib/chart/lines/linesLayout.js","webpack:///node_modules/echarts/lib/chart/lines/linesVisual.js","webpack:///node_modules/echarts/lib/chart/map.js","webpack:///node_modules/echarts/lib/chart/map/MapSeries.js","webpack:///node_modules/echarts/lib/chart/map/MapView.js","webpack:///node_modules/echarts/lib/chart/map/backwardCompat.js","webpack:///node_modules/echarts/lib/chart/map/mapDataStatistic.js","webpack:///node_modules/echarts/lib/chart/map/mapSymbolLayout.js","webpack:///node_modules/echarts/lib/chart/map/mapVisual.js","webpack:///node_modules/echarts/lib/chart/parallel.js","webpack:///node_modules/echarts/lib/chart/parallel/ParallelSeries.js","webpack:///node_modules/echarts/lib/chart/parallel/ParallelView.js","webpack:///node_modules/echarts/lib/chart/parallel/parallelVisual.js","webpack:///node_modules/echarts/lib/chart/pictorialBar.js","webpack:///node_modules/echarts/lib/chart/pie.js","webpack:///node_modules/echarts/lib/chart/pie/PieSeries.js","webpack:///node_modules/echarts/lib/chart/pie/PieView.js","webpack:///node_modules/echarts/lib/chart/pie/labelLayout.js","webpack:///node_modules/echarts/lib/chart/pie/pieLayout.js","webpack:///node_modules/echarts/lib/chart/radar.js","webpack:///node_modules/echarts/lib/chart/radar/RadarSeries.js","webpack:///node_modules/echarts/lib/chart/radar/RadarView.js","webpack:///node_modules/echarts/lib/chart/radar/backwardCompat.js","webpack:///node_modules/echarts/lib/chart/radar/radarLayout.js","webpack:///node_modules/echarts/lib/chart/sankey.js","webpack:///node_modules/echarts/lib/chart/sankey/SankeySeries.js","webpack:///node_modules/echarts/lib/chart/sankey/SankeyView.js","webpack:///node_modules/echarts/lib/chart/sankey/sankeyLayout.js","webpack:///node_modules/echarts/lib/chart/sankey/sankeyVisual.js","webpack:///node_modules/echarts/lib/chart/scatter.js","webpack:///node_modules/echarts/lib/chart/scatter/ScatterSeries.js","webpack:///node_modules/echarts/lib/chart/scatter/ScatterView.js","webpack:///node_modules/echarts/lib/chart/sunburst.js","webpack:///node_modules/echarts/lib/chart/sunburst/SunburstPiece.js","webpack:///node_modules/echarts/lib/chart/sunburst/SunburstSeries.js","webpack:///node_modules/echarts/lib/chart/sunburst/SunburstView.js","webpack:///node_modules/echarts/lib/chart/sunburst/sunburstAction.js","webpack:///node_modules/echarts/lib/chart/sunburst/sunburstLayout.js","webpack:///node_modules/echarts/lib/chart/themeRiver.js","webpack:///node_modules/echarts/lib/chart/themeRiver/ThemeRiverSeries.js","webpack:///node_modules/echarts/lib/chart/themeRiver/ThemeRiverView.js","webpack:///node_modules/echarts/lib/chart/themeRiver/themeRiverLayout.js","webpack:///node_modules/echarts/lib/chart/themeRiver/themeRiverVisual.js","webpack:///node_modules/echarts/lib/chart/tree.js","webpack:///node_modules/echarts/lib/chart/tree/TreeSeries.js","webpack:///node_modules/echarts/lib/chart/tree/TreeView.js","webpack:///node_modules/echarts/lib/chart/tree/commonLayout.js","webpack:///node_modules/echarts/lib/chart/tree/layoutHelper.js","webpack:///node_modules/echarts/lib/chart/tree/orthogonalLayout.js","webpack:///node_modules/echarts/lib/chart/tree/radialLayout.js","webpack:///node_modules/echarts/lib/chart/tree/traversalHelper.js","webpack:///node_modules/echarts/lib/chart/tree/treeAction.js","webpack:///node_modules/echarts/lib/chart/treemap.js","webpack:///node_modules/echarts/lib/chart/treemap/Breadcrumb.js","webpack:///node_modules/echarts/lib/chart/treemap/TreemapSeries.js","webpack:///node_modules/echarts/lib/chart/treemap/TreemapView.js","webpack:///node_modules/echarts/lib/chart/treemap/treemapAction.js","webpack:///node_modules/echarts/lib/chart/treemap/treemapLayout.js","webpack:///node_modules/echarts/lib/chart/treemap/treemapVisual.js","webpack:///node_modules/echarts/lib/component/angleAxis.js","webpack:///node_modules/echarts/lib/component/axis.js","webpack:///node_modules/echarts/lib/component/axis/AngleAxisView.js","webpack:///node_modules/echarts/lib/component/axis/AxisBuilder.js","webpack:///node_modules/echarts/lib/component/axis/AxisView.js","webpack:///node_modules/echarts/lib/component/axis/CartesianAxisView.js","webpack:///node_modules/echarts/lib/component/axis/ParallelAxisView.js","webpack:///node_modules/echarts/lib/component/axis/RadiusAxisView.js","webpack:///node_modules/echarts/lib/component/axis/SingleAxisView.js","webpack:///node_modules/echarts/lib/component/axis/cartesianAxisHelper.js","webpack:///node_modules/echarts/lib/component/axis/parallelAxisAction.js","webpack:///node_modules/echarts/lib/component/axis/singleAxisHelper.js","webpack:///node_modules/echarts/lib/component/axisPointer.js","webpack:///node_modules/echarts/lib/component/axisPointer/AxisPointerModel.js","webpack:///node_modules/echarts/lib/component/axisPointer/AxisPointerView.js","webpack:///node_modules/echarts/lib/component/axisPointer/BaseAxisPointer.js","webpack:///node_modules/echarts/lib/component/axisPointer/CartesianAxisPointer.js","webpack:///node_modules/echarts/lib/component/axisPointer/PolarAxisPointer.js","webpack:///node_modules/echarts/lib/component/axisPointer/SingleAxisPointer.js","webpack:///node_modules/echarts/lib/component/axisPointer/axisTrigger.js","webpack:///node_modules/echarts/lib/component/axisPointer/findPointFromSeries.js","webpack:///node_modules/echarts/lib/component/axisPointer/globalListener.js","webpack:///node_modules/echarts/lib/component/axisPointer/modelHelper.js","webpack:///node_modules/echarts/lib/component/axisPointer/viewHelper.js","webpack:///node_modules/echarts/lib/component/brush.js","webpack:///node_modules/echarts/lib/component/brush/BrushModel.js","webpack:///node_modules/echarts/lib/component/brush/BrushView.js","webpack:///node_modules/echarts/lib/component/brush/brushAction.js","webpack:///node_modules/echarts/lib/component/brush/preprocessor.js","webpack:///node_modules/echarts/lib/component/brush/selector.js","webpack:///node_modules/echarts/lib/component/brush/visualEncoding.js","webpack:///node_modules/echarts/lib/component/calendar.js","webpack:///node_modules/echarts/lib/component/calendar/CalendarView.js","webpack:///node_modules/echarts/lib/component/dataZoom.js","webpack:///node_modules/echarts/lib/component/dataZoom/AxisProxy.js","webpack:///node_modules/echarts/lib/component/dataZoom/DataZoomModel.js","webpack:///node_modules/echarts/lib/component/dataZoom/DataZoomView.js","webpack:///node_modules/echarts/lib/component/dataZoom/InsideZoomModel.js","webpack:///node_modules/echarts/lib/component/dataZoom/InsideZoomView.js","webpack:///node_modules/echarts/lib/component/dataZoom/SelectZoomModel.js","webpack:///node_modules/echarts/lib/component/dataZoom/SelectZoomView.js","webpack:///node_modules/echarts/lib/component/dataZoom/SliderZoomModel.js","webpack:///node_modules/echarts/lib/component/dataZoom/SliderZoomView.js","webpack:///node_modules/echarts/lib/component/dataZoom/dataZoomAction.js","webpack:///node_modules/echarts/lib/component/dataZoom/dataZoomProcessor.js","webpack:///node_modules/echarts/lib/component/dataZoom/helper.js","webpack:///node_modules/echarts/lib/component/dataZoom/history.js","webpack:///node_modules/echarts/lib/component/dataZoom/roams.js","webpack:///node_modules/echarts/lib/component/dataZoom/typeDefaulter.js","webpack:///node_modules/echarts/lib/component/dataZoomSelect.js","webpack:///node_modules/echarts/lib/component/dataset.js","webpack:///node_modules/echarts/lib/component/dataset/DatasetModel.js","webpack:///node_modules/echarts/lib/component/geo.js","webpack:///node_modules/echarts/lib/component/geo/GeoView.js","webpack:///node_modules/echarts/lib/component/graphic.js","webpack:///node_modules/echarts/lib/component/grid.js","webpack:///node_modules/echarts/lib/component/gridSimple.js","webpack:///node_modules/echarts/lib/component/helper/BrushController.js","webpack:///node_modules/echarts/lib/component/helper/BrushTargetManager.js","webpack:///node_modules/echarts/lib/component/helper/MapDraw.js","webpack:///node_modules/echarts/lib/component/helper/RoamController.js","webpack:///node_modules/echarts/lib/component/helper/brushHelper.js","webpack:///node_modules/echarts/lib/component/helper/cursorHelper.js","webpack:///node_modules/echarts/lib/component/helper/interactionMutex.js","webpack:///node_modules/echarts/lib/component/helper/listComponent.js","webpack:///node_modules/echarts/lib/component/helper/roamHelper.js","webpack:///node_modules/echarts/lib/component/helper/selectableMixin.js","webpack:///node_modules/echarts/lib/component/helper/sliderMove.js","webpack:///node_modules/echarts/lib/component/legend.js","webpack:///node_modules/echarts/lib/component/legend/LegendModel.js","webpack:///node_modules/echarts/lib/component/legend/LegendView.js","webpack:///node_modules/echarts/lib/component/legend/ScrollableLegendModel.js","webpack:///node_modules/echarts/lib/component/legend/ScrollableLegendView.js","webpack:///node_modules/echarts/lib/component/legend/legendAction.js","webpack:///node_modules/echarts/lib/component/legend/legendFilter.js","webpack:///node_modules/echarts/lib/component/legend/scrollableLegendAction.js","webpack:///node_modules/echarts/lib/component/legendScroll.js","webpack:///node_modules/echarts/lib/component/markArea.js","webpack:///node_modules/echarts/lib/component/markLine.js","webpack:///node_modules/echarts/lib/component/markPoint.js","webpack:///node_modules/echarts/lib/component/marker/MarkAreaModel.js","webpack:///node_modules/echarts/lib/component/marker/MarkAreaView.js","webpack:///node_modules/echarts/lib/component/marker/MarkLineModel.js","webpack:///node_modules/echarts/lib/component/marker/MarkLineView.js","webpack:///node_modules/echarts/lib/component/marker/MarkPointModel.js","webpack:///node_modules/echarts/lib/component/marker/MarkPointView.js","webpack:///node_modules/echarts/lib/component/marker/MarkerModel.js","webpack:///node_modules/echarts/lib/component/marker/MarkerView.js","webpack:///node_modules/echarts/lib/component/marker/markerHelper.js","webpack:///node_modules/echarts/lib/component/parallel.js","webpack:///node_modules/echarts/lib/component/parallelAxis.js","webpack:///node_modules/echarts/lib/component/polar.js","webpack:///node_modules/echarts/lib/component/radar.js","webpack:///node_modules/echarts/lib/component/radar/RadarView.js","webpack:///node_modules/echarts/lib/component/radiusAxis.js","webpack:///node_modules/echarts/lib/component/singleAxis.js","webpack:///node_modules/echarts/lib/component/timeline.js","webpack:///node_modules/echarts/lib/component/timeline/SliderTimelineModel.js","webpack:///node_modules/echarts/lib/component/timeline/SliderTimelineView.js","webpack:///node_modules/echarts/lib/component/timeline/TimelineAxis.js","webpack:///node_modules/echarts/lib/component/timeline/TimelineModel.js","webpack:///node_modules/echarts/lib/component/timeline/TimelineView.js","webpack:///node_modules/echarts/lib/component/timeline/preprocessor.js","webpack:///node_modules/echarts/lib/component/timeline/timelineAction.js","webpack:///node_modules/echarts/lib/component/timeline/typeDefaulter.js","webpack:///node_modules/echarts/lib/component/title.js","webpack:///node_modules/echarts/lib/component/toolbox.js","webpack:///node_modules/echarts/lib/component/toolbox/ToolboxModel.js","webpack:///node_modules/echarts/lib/component/toolbox/ToolboxView.js","webpack:///node_modules/echarts/lib/component/toolbox/feature/Brush.js","webpack:///node_modules/echarts/lib/component/toolbox/feature/DataView.js","webpack:///node_modules/echarts/lib/component/toolbox/feature/DataZoom.js","webpack:///node_modules/echarts/lib/component/toolbox/feature/MagicType.js","webpack:///node_modules/echarts/lib/component/toolbox/feature/Restore.js","webpack:///node_modules/echarts/lib/component/toolbox/feature/SaveAsImage.js","webpack:///node_modules/echarts/lib/component/toolbox/featureManager.js","webpack:///node_modules/echarts/lib/component/tooltip.js","webpack:///node_modules/echarts/lib/component/tooltip/TooltipContent.js","webpack:///node_modules/echarts/lib/component/tooltip/TooltipModel.js","webpack:///node_modules/echarts/lib/component/tooltip/TooltipView.js","webpack:///node_modules/echarts/lib/component/visualMap.js","webpack:///node_modules/echarts/lib/component/visualMap/ContinuousModel.js","webpack:///node_modules/echarts/lib/component/visualMap/ContinuousView.js","webpack:///node_modules/echarts/lib/component/visualMap/PiecewiseModel.js","webpack:///node_modules/echarts/lib/component/visualMap/PiecewiseView.js","webpack:///node_modules/echarts/lib/component/visualMap/VisualMapModel.js","webpack:///node_modules/echarts/lib/component/visualMap/VisualMapView.js","webpack:///node_modules/echarts/lib/component/visualMap/helper.js","webpack:///node_modules/echarts/lib/component/visualMap/preprocessor.js","webpack:///node_modules/echarts/lib/component/visualMap/typeDefaulter.js","webpack:///node_modules/echarts/lib/component/visualMap/visualEncoding.js","webpack:///node_modules/echarts/lib/component/visualMap/visualMapAction.js","webpack:///node_modules/echarts/lib/component/visualMapContinuous.js","webpack:///node_modules/echarts/lib/component/visualMapPiecewise.js","webpack:///node_modules/echarts/lib/config.js","webpack:///node_modules/echarts/lib/coord/Axis.js","webpack:///node_modules/echarts/lib/coord/View.js","webpack:///node_modules/echarts/lib/coord/axisDefault.js","webpack:///node_modules/echarts/lib/coord/axisHelper.js","webpack:///node_modules/echarts/lib/coord/axisModelCommonMixin.js","webpack:///node_modules/echarts/lib/coord/axisModelCreator.js","webpack:///node_modules/echarts/lib/coord/calendar/Calendar.js","webpack:///node_modules/echarts/lib/coord/calendar/CalendarModel.js","webpack:///node_modules/echarts/lib/coord/calendar/prepareCustom.js","webpack:///node_modules/echarts/lib/coord/cartesian/Axis2D.js","webpack:///node_modules/echarts/lib/coord/cartesian/AxisModel.js","webpack:///node_modules/echarts/lib/coord/cartesian/Cartesian.js","webpack:///node_modules/echarts/lib/coord/cartesian/Cartesian2D.js","webpack:///node_modules/echarts/lib/coord/cartesian/Grid.js","webpack:///node_modules/echarts/lib/coord/cartesian/GridModel.js","webpack:///node_modules/echarts/lib/coord/cartesian/prepareCustom.js","webpack:///node_modules/echarts/lib/coord/geo/Geo.js","webpack:///node_modules/echarts/lib/coord/geo/GeoModel.js","webpack:///node_modules/echarts/lib/coord/geo/Region.js","webpack:///node_modules/echarts/lib/coord/geo/fix/diaoyuIsland.js","webpack:///node_modules/echarts/lib/coord/geo/fix/geoCoord.js","webpack:///node_modules/echarts/lib/coord/geo/fix/nanhai.js","webpack:///node_modules/echarts/lib/coord/geo/fix/textCoord.js","webpack:///node_modules/echarts/lib/coord/geo/geoCreator.js","webpack:///node_modules/echarts/lib/coord/geo/parseGeoJson.js","webpack:///node_modules/echarts/lib/coord/geo/prepareCustom.js","webpack:///node_modules/echarts/lib/coord/parallel/AxisModel.js","webpack:///node_modules/echarts/lib/coord/parallel/Parallel.js","webpack:///node_modules/echarts/lib/coord/parallel/ParallelAxis.js","webpack:///node_modules/echarts/lib/coord/parallel/ParallelModel.js","webpack:///node_modules/echarts/lib/coord/parallel/parallelCreator.js","webpack:///node_modules/echarts/lib/coord/parallel/parallelPreprocessor.js","webpack:///node_modules/echarts/lib/coord/polar/AngleAxis.js","webpack:///node_modules/echarts/lib/coord/polar/AxisModel.js","webpack:///node_modules/echarts/lib/coord/polar/Polar.js","webpack:///node_modules/echarts/lib/coord/polar/PolarModel.js","webpack:///node_modules/echarts/lib/coord/polar/RadiusAxis.js","webpack:///node_modules/echarts/lib/coord/polar/polarCreator.js","webpack:///node_modules/echarts/lib/coord/polar/prepareCustom.js","webpack:///node_modules/echarts/lib/coord/radar/IndicatorAxis.js","webpack:///node_modules/echarts/lib/coord/radar/Radar.js","webpack:///node_modules/echarts/lib/coord/radar/RadarModel.js","webpack:///node_modules/echarts/lib/coord/single/AxisModel.js","webpack:///node_modules/echarts/lib/coord/single/Single.js","webpack:///node_modules/echarts/lib/coord/single/SingleAxis.js","webpack:///node_modules/echarts/lib/coord/single/prepareCustom.js","webpack:///node_modules/echarts/lib/coord/single/singleCreator.js","webpack:///node_modules/echarts/lib/data/DataDiffer.js","webpack:///node_modules/echarts/lib/data/Graph.js","webpack:///node_modules/echarts/lib/data/List.js","webpack:///node_modules/echarts/lib/data/OrdinalMeta.js","webpack:///node_modules/echarts/lib/data/Source.js","webpack:///node_modules/echarts/lib/data/Tree.js","webpack:///node_modules/echarts/lib/data/helper/completeDimensions.js","webpack:///node_modules/echarts/lib/data/helper/createDimensions.js","webpack:///node_modules/echarts/lib/data/helper/dataProvider.js","webpack:///node_modules/echarts/lib/data/helper/dimensionHelper.js","webpack:///node_modules/echarts/lib/data/helper/linkList.js","webpack:///node_modules/echarts/lib/data/helper/sourceHelper.js","webpack:///node_modules/echarts/lib/data/helper/sourceType.js","webpack:///node_modules/echarts/lib/echarts.js","webpack:///node_modules/echarts/lib/export.js","webpack:///node_modules/echarts/lib/helper.js","webpack:///node_modules/echarts/lib/lang.js","webpack:///node_modules/echarts/lib/layout/barGrid.js","webpack:///node_modules/echarts/lib/layout/barPolar.js","webpack:///node_modules/echarts/lib/layout/points.js","webpack:///node_modules/echarts/lib/loading/default.js","webpack:///node_modules/echarts/lib/model/Component.js","webpack:///node_modules/echarts/lib/model/Global.js","webpack:///node_modules/echarts/lib/model/Model.js","webpack:///node_modules/echarts/lib/model/OptionManager.js","webpack:///node_modules/echarts/lib/model/Series.js","webpack:///node_modules/echarts/lib/model/globalDefault.js","webpack:///node_modules/echarts/lib/model/mixin/areaStyle.js","webpack:///node_modules/echarts/lib/model/mixin/boxLayout.js","webpack:///node_modules/echarts/lib/model/mixin/colorPalette.js","webpack:///node_modules/echarts/lib/model/mixin/dataFormat.js","webpack:///node_modules/echarts/lib/model/mixin/itemStyle.js","webpack:///node_modules/echarts/lib/model/mixin/lineStyle.js","webpack:///node_modules/echarts/lib/model/mixin/makeStyleMapper.js","webpack:///node_modules/echarts/lib/model/mixin/textStyle.js","webpack:///node_modules/echarts/lib/model/referHelper.js","webpack:///node_modules/echarts/lib/preprocessor/backwardCompat.js","webpack:///node_modules/echarts/lib/preprocessor/helper/compatStyle.js","webpack:///node_modules/echarts/lib/processor/dataFilter.js","webpack:///node_modules/echarts/lib/processor/dataSample.js","webpack:///node_modules/echarts/lib/scale/Interval.js","webpack:///node_modules/echarts/lib/scale/Log.js","webpack:///node_modules/echarts/lib/scale/Ordinal.js","webpack:///node_modules/echarts/lib/scale/Scale.js","webpack:///node_modules/echarts/lib/scale/Time.js","webpack:///node_modules/echarts/lib/scale/helper.js","webpack:///node_modules/echarts/lib/stream/Scheduler.js","webpack:///node_modules/echarts/lib/stream/task.js","webpack:///node_modules/echarts/lib/theme/dark.js","webpack:///node_modules/echarts/lib/theme/light.js","webpack:///node_modules/echarts/lib/util/animation.js","webpack:///node_modules/echarts/lib/util/array/nest.js","webpack:///node_modules/echarts/lib/util/clazz.js","webpack:///node_modules/echarts/lib/util/component.js","webpack:///node_modules/echarts/lib/util/format.js","webpack:///node_modules/echarts/lib/util/graphic.js","webpack:///node_modules/echarts/lib/util/layout.js","webpack:///node_modules/echarts/lib/util/model.js","webpack:///node_modules/echarts/lib/util/number.js","webpack:///node_modules/echarts/lib/util/symbol.js","webpack:///node_modules/echarts/lib/util/throttle.js","webpack:///node_modules/echarts/lib/view/Chart.js","webpack:///node_modules/echarts/lib/view/Component.js","webpack:///node_modules/echarts/lib/visual/VisualMapping.js","webpack:///node_modules/echarts/lib/visual/aria.js","webpack:///node_modules/echarts/lib/visual/dataColor.js","webpack:///node_modules/echarts/lib/visual/seriesColor.js","webpack:///node_modules/echarts/lib/visual/symbol.js","webpack:///node_modules/echarts/lib/visual/visualDefault.js","webpack:///node_modules/echarts/lib/visual/visualSolution.js","webpack:///node_modules/leaflet/dist/leaflet-src.js","webpack:///node_modules/moment/locale sync ^\\.\\/.*$","webpack:///node_modules/moment/locale/af.js","webpack:///node_modules/moment/locale/ar-dz.js","webpack:///node_modules/moment/locale/ar-kw.js","webpack:///node_modules/moment/locale/ar-ly.js","webpack:///node_modules/moment/locale/ar-ma.js","webpack:///node_modules/moment/locale/ar-sa.js","webpack:///node_modules/moment/locale/ar-tn.js","webpack:///node_modules/moment/locale/ar.js","webpack:///node_modules/moment/locale/az.js","webpack:///node_modules/moment/locale/be.js","webpack:///node_modules/moment/locale/bg.js","webpack:///node_modules/moment/locale/bm.js","webpack:///node_modules/moment/locale/bn.js","webpack:///node_modules/moment/locale/bo.js","webpack:///node_modules/moment/locale/br.js","webpack:///node_modules/moment/locale/bs.js","webpack:///node_modules/moment/locale/ca.js","webpack:///node_modules/moment/locale/cs.js","webpack:///node_modules/moment/locale/cv.js","webpack:///node_modules/moment/locale/cy.js","webpack:///node_modules/moment/locale/da.js","webpack:///node_modules/moment/locale/de-at.js","webpack:///node_modules/moment/locale/de-ch.js","webpack:///node_modules/moment/locale/de.js","webpack:///node_modules/moment/locale/dv.js","webpack:///node_modules/moment/locale/el.js","webpack:///node_modules/moment/locale/en-SG.js","webpack:///node_modules/moment/locale/en-au.js","webpack:///node_modules/moment/locale/en-ca.js","webpack:///node_modules/moment/locale/en-gb.js","webpack:///node_modules/moment/locale/en-ie.js","webpack:///node_modules/moment/locale/en-il.js","webpack:///node_modules/moment/locale/en-nz.js","webpack:///node_modules/moment/locale/eo.js","webpack:///node_modules/moment/locale/es-do.js","webpack:///node_modules/moment/locale/es-us.js","webpack:///node_modules/moment/locale/es.js","webpack:///node_modules/moment/locale/et.js","webpack:///node_modules/moment/locale/eu.js","webpack:///node_modules/moment/locale/fa.js","webpack:///node_modules/moment/locale/fi.js","webpack:///node_modules/moment/locale/fo.js","webpack:///node_modules/moment/locale/fr-ca.js","webpack:///node_modules/moment/locale/fr-ch.js","webpack:///node_modules/moment/locale/fr.js","webpack:///node_modules/moment/locale/fy.js","webpack:///node_modules/moment/locale/ga.js","webpack:///node_modules/moment/locale/gd.js","webpack:///node_modules/moment/locale/gl.js","webpack:///node_modules/moment/locale/gom-latn.js","webpack:///node_modules/moment/locale/gu.js","webpack:///node_modules/moment/locale/he.js","webpack:///node_modules/moment/locale/hi.js","webpack:///node_modules/moment/locale/hr.js","webpack:///node_modules/moment/locale/hu.js","webpack:///node_modules/moment/locale/hy-am.js","webpack:///node_modules/moment/locale/id.js","webpack:///node_modules/moment/locale/is.js","webpack:///node_modules/moment/locale/it-ch.js","webpack:///node_modules/moment/locale/it.js","webpack:///node_modules/moment/locale/ja.js","webpack:///node_modules/moment/locale/jv.js","webpack:///node_modules/moment/locale/ka.js","webpack:///node_modules/moment/locale/kk.js","webpack:///node_modules/moment/locale/km.js","webpack:///node_modules/moment/locale/kn.js","webpack:///node_modules/moment/locale/ko.js","webpack:///node_modules/moment/locale/ku.js","webpack:///node_modules/moment/locale/ky.js","webpack:///node_modules/moment/locale/lb.js","webpack:///node_modules/moment/locale/lo.js","webpack:///node_modules/moment/locale/lt.js","webpack:///node_modules/moment/locale/lv.js","webpack:///node_modules/moment/locale/me.js","webpack:///node_modules/moment/locale/mi.js","webpack:///node_modules/moment/locale/mk.js","webpack:///node_modules/moment/locale/ml.js","webpack:///node_modules/moment/locale/mn.js","webpack:///node_modules/moment/locale/mr.js","webpack:///node_modules/moment/locale/ms-my.js","webpack:///node_modules/moment/locale/ms.js","webpack:///node_modules/moment/locale/mt.js","webpack:///node_modules/moment/locale/my.js","webpack:///node_modules/moment/locale/nb.js","webpack:///node_modules/moment/locale/ne.js","webpack:///node_modules/moment/locale/nl-be.js","webpack:///node_modules/moment/locale/nl.js","webpack:///node_modules/moment/locale/nn.js","webpack:///node_modules/moment/locale/pa-in.js","webpack:///node_modules/moment/locale/pl.js","webpack:///node_modules/moment/locale/pt-br.js","webpack:///node_modules/moment/locale/pt.js","webpack:///node_modules/moment/locale/ro.js","webpack:///node_modules/moment/locale/ru.js","webpack:///node_modules/moment/locale/sd.js","webpack:///node_modules/moment/locale/se.js","webpack:///node_modules/moment/locale/si.js","webpack:///node_modules/moment/locale/sk.js","webpack:///node_modules/moment/locale/sl.js","webpack:///node_modules/moment/locale/sq.js","webpack:///node_modules/moment/locale/sr-cyrl.js","webpack:///node_modules/moment/locale/sr.js","webpack:///node_modules/moment/locale/ss.js","webpack:///node_modules/moment/locale/sv.js","webpack:///node_modules/moment/locale/sw.js","webpack:///node_modules/moment/locale/ta.js","webpack:///node_modules/moment/locale/te.js","webpack:///node_modules/moment/locale/tet.js","webpack:///node_modules/moment/locale/tg.js","webpack:///node_modules/moment/locale/th.js","webpack:///node_modules/moment/locale/tl-ph.js","webpack:///node_modules/moment/locale/tlh.js","webpack:///node_modules/moment/locale/tr.js","webpack:///node_modules/moment/locale/tzl.js","webpack:///node_modules/moment/locale/tzm-latn.js","webpack:///node_modules/moment/locale/tzm.js","webpack:///node_modules/moment/locale/ug-cn.js","webpack:///node_modules/moment/locale/uk.js","webpack:///node_modules/moment/locale/ur.js","webpack:///node_modules/moment/locale/uz-latn.js","webpack:///node_modules/moment/locale/uz.js","webpack:///node_modules/moment/locale/vi.js","webpack:///node_modules/moment/locale/x-pseudo.js","webpack:///node_modules/moment/locale/yo.js","webpack:///node_modules/moment/locale/zh-cn.js","webpack:///node_modules/moment/locale/zh-hk.js","webpack:///node_modules/moment/locale/zh-tw.js","webpack:///node_modules/moment/moment.js","webpack:///node_modules/ngx-echarts/__ivy_ngcc__/fesm2015/ngx-echarts.js","webpack:///(webpack)/buildin/module.js","webpack:///node_modules/zrender/lib/Element.js","webpack:///node_modules/zrender/lib/Handler.js","webpack:///node_modules/zrender/lib/Layer.js","webpack:///node_modules/zrender/lib/Painter.js","webpack:///node_modules/zrender/lib/Storage.js","webpack:///node_modules/zrender/lib/animation/Animation.js","webpack:///node_modules/zrender/lib/animation/Animator.js","webpack:///node_modules/zrender/lib/animation/Clip.js","webpack:///node_modules/zrender/lib/animation/easing.js","webpack:///node_modules/zrender/lib/animation/requestAnimationFrame.js","webpack:///node_modules/zrender/lib/config.js","webpack:///node_modules/zrender/lib/contain/arc.js","webpack:///node_modules/zrender/lib/contain/cubic.js","webpack:///node_modules/zrender/lib/contain/line.js","webpack:///node_modules/zrender/lib/contain/path.js","webpack:///node_modules/zrender/lib/contain/polygon.js","webpack:///node_modules/zrender/lib/contain/quadratic.js","webpack:///node_modules/zrender/lib/contain/text.js","webpack:///node_modules/zrender/lib/contain/util.js","webpack:///node_modules/zrender/lib/contain/windingLine.js","webpack:///node_modules/zrender/lib/container/Group.js","webpack:///node_modules/zrender/lib/core/BoundingRect.js","webpack:///node_modules/zrender/lib/core/GestureMgr.js","webpack:///node_modules/zrender/lib/core/LRU.js","webpack:///node_modules/zrender/lib/core/PathProxy.js","webpack:///node_modules/zrender/lib/core/arrayDiff2.js","webpack:///node_modules/zrender/lib/core/bbox.js","webpack:///node_modules/zrender/lib/core/curve.js","webpack:///node_modules/zrender/lib/core/env.js","webpack:///node_modules/zrender/lib/core/event.js","webpack:///node_modules/zrender/lib/core/guid.js","webpack:///node_modules/zrender/lib/core/log.js","webpack:///node_modules/zrender/lib/core/matrix.js","webpack:///node_modules/zrender/lib/core/timsort.js","webpack:///node_modules/zrender/lib/core/util.js","webpack:///node_modules/zrender/lib/core/vector.js","webpack:///node_modules/zrender/lib/dom/HandlerProxy.js","webpack:///node_modules/zrender/lib/graphic/CompoundPath.js","webpack:///node_modules/zrender/lib/graphic/Displayable.js","webpack:///node_modules/zrender/lib/graphic/Gradient.js","webpack:///node_modules/zrender/lib/graphic/Image.js","webpack:///node_modules/zrender/lib/graphic/IncrementalDisplayable.js","webpack:///node_modules/zrender/lib/graphic/LinearGradient.js","webpack:///node_modules/zrender/lib/graphic/Path.js","webpack:///node_modules/zrender/lib/graphic/Pattern.js","webpack:///node_modules/zrender/lib/graphic/RadialGradient.js","webpack:///node_modules/zrender/lib/graphic/Style.js","webpack:///node_modules/zrender/lib/graphic/Text.js","webpack:///node_modules/zrender/lib/graphic/helper/fixClipWithShadow.js","webpack:///node_modules/zrender/lib/graphic/helper/fixShadow.js","webpack:///node_modules/zrender/lib/graphic/helper/image.js","webpack:///node_modules/zrender/lib/graphic/helper/poly.js","webpack:///node_modules/zrender/lib/graphic/helper/roundRect.js","webpack:///node_modules/zrender/lib/graphic/helper/smoothBezier.js","webpack:///node_modules/zrender/lib/graphic/helper/smoothSpline.js","webpack:///node_modules/zrender/lib/graphic/helper/text.js","webpack:///node_modules/zrender/lib/graphic/mixin/RectText.js","webpack:///node_modules/zrender/lib/graphic/shape/Arc.js","webpack:///node_modules/zrender/lib/graphic/shape/BezierCurve.js","webpack:///node_modules/zrender/lib/graphic/shape/Circle.js","webpack:///node_modules/zrender/lib/graphic/shape/Line.js","webpack:///node_modules/zrender/lib/graphic/shape/Polygon.js","webpack:///node_modules/zrender/lib/graphic/shape/Polyline.js","webpack:///node_modules/zrender/lib/graphic/shape/Rect.js","webpack:///node_modules/zrender/lib/graphic/shape/Ring.js","webpack:///node_modules/zrender/lib/graphic/shape/Sector.js","webpack:///node_modules/zrender/lib/mixin/Animatable.js","webpack:///node_modules/zrender/lib/mixin/Draggable.js","webpack:///node_modules/zrender/lib/mixin/Eventful.js","webpack:///node_modules/zrender/lib/mixin/Transformable.js","webpack:///node_modules/zrender/lib/svg/Painter.js","webpack:///node_modules/zrender/lib/svg/core.js","webpack:///node_modules/zrender/lib/svg/graphic.js","webpack:///node_modules/zrender/lib/svg/helper/ClippathManager.js","webpack:///node_modules/zrender/lib/svg/helper/Definable.js","webpack:///node_modules/zrender/lib/svg/helper/GradientManager.js","webpack:///node_modules/zrender/lib/svg/helper/ShadowManager.js","webpack:///node_modules/zrender/lib/svg/svg.js","webpack:///node_modules/zrender/lib/tool/color.js","webpack:///node_modules/zrender/lib/tool/path.js","webpack:///node_modules/zrender/lib/tool/transformPath.js","webpack:///node_modules/zrender/lib/vml/Painter.js","webpack:///node_modules/zrender/lib/vml/core.js","webpack:///node_modules/zrender/lib/vml/graphic.js","webpack:///node_modules/zrender/lib/vml/vml.js","webpack:///node_modules/zrender/lib/zrender.js","webpack:///src/app/pages/e-commerce/charts-panel/chart-panel-header/chart-panel-header.component.ts","webpack:///src/app/pages/e-commerce/charts-panel/chart-panel-header/chart-panel-header.component.html","webpack:///src/app/pages/e-commerce/charts-panel/chart-panel-summary/chart-panel-summary.component.ts","webpack:///src/app/pages/e-commerce/charts-panel/charts-panel.component.ts","webpack:///src/app/pages/e-commerce/charts-panel/charts-panel.component.html","webpack:///src/app/pages/e-commerce/charts-panel/charts/orders-chart.component.ts","webpack:///src/app/pages/e-commerce/charts-panel/charts/profit-chart.component.ts","webpack:///src/app/pages/e-commerce/country-orders/chart/country-orders-chart.component.ts","webpack:///src/app/pages/e-commerce/country-orders/country-orders.component.ts","webpack:///src/app/pages/e-commerce/country-orders/map/country-orders-map.component.ts","webpack:///src/app/pages/e-commerce/country-orders/map/country-orders-map.service.ts","webpack:///src/app/pages/e-commerce/covid-test-card/back-side/test-stats-area-chart.component.ts","webpack:///src/app/pages/e-commerce/covid-test-card/back-side/test-stats-card-back.component.ts","webpack:///src/app/pages/e-commerce/covid-test-card/back-side/test-stats-card-back.component.html","webpack:///src/app/pages/e-commerce/covid-test-card/front-side/test-stats-bar-animation-chart.component.ts","webpack:///src/app/pages/e-commerce/covid-test-card/front-side/test-stats-card-front.component.ts","webpack:///src/app/pages/e-commerce/covid-test-card/front-side/test-stats-card-front.component.html","webpack:///src/app/pages/e-commerce/covid-test-card/test-card.component.ts","webpack:///src/app/pages/e-commerce/covid-test-card/test-card.component.html","webpack:///src/app/pages/e-commerce/e-commerce.component.ts","webpack:///src/app/pages/e-commerce/e-commerce.component.html","webpack:///src/app/pages/e-commerce/e-commerce.module.ts","webpack:///src/app/pages/e-commerce/earning-card/back-side/earning-card-back.component.ts","webpack:///src/app/pages/e-commerce/earning-card/back-side/earning-card-back.component.html","webpack:///src/app/pages/e-commerce/earning-card/back-side/earning-pie-chart.component.ts","webpack:///src/app/pages/e-commerce/earning-card/earning-card.component.ts","webpack:///src/app/pages/e-commerce/earning-card/earning-card.component.html","webpack:///src/app/pages/e-commerce/earning-card/front-side/earning-card-front.component.ts","webpack:///src/app/pages/e-commerce/earning-card/front-side/earning-card-front.component.html","webpack:///src/app/pages/e-commerce/earning-card/front-side/earning-live-update-chart.component.ts","webpack:///src/app/pages/e-commerce/legend-chart/legend-chart.component.ts","webpack:///src/app/pages/e-commerce/legend-chart/legend-chart.component.html","webpack:///src/app/pages/e-commerce/progress-section/progress-section.component.ts","webpack:///src/app/pages/e-commerce/progress-section/progress-section.component.html","webpack:///src/app/pages/e-commerce/slide-out/slide-out.component.ts","webpack:///src/app/pages/e-commerce/slide-out/slide-out.component.html","webpack:///src/app/pages/e-commerce/traffic-reveal-card/back-side/traffic-back-card.component.ts","webpack:///src/app/pages/e-commerce/traffic-reveal-card/back-side/traffic-back-card.component.html","webpack:///src/app/pages/e-commerce/traffic-reveal-card/back-side/traffic-bar-chart.component.ts","webpack:///src/app/pages/e-commerce/traffic-reveal-card/front-side/traffic-bar/traffic-bar.component.ts","webpack:///src/app/pages/e-commerce/traffic-reveal-card/front-side/traffic-bar/traffic-bar.component.html","webpack:///src/app/pages/e-commerce/traffic-reveal-card/front-side/traffic-front-card.component.ts","webpack:///src/app/pages/e-commerce/traffic-reveal-card/front-side/traffic-front-card.component.html","webpack:///src/app/pages/e-commerce/traffic-reveal-card/traffic-cards-header/traffic-cards-header.component.ts","webpack:///src/app/pages/e-commerce/traffic-reveal-card/traffic-cards-header/traffic-cards-header.component.html","webpack:///src/app/pages/e-commerce/traffic-reveal-card/traffic-reveal-card.component.ts","webpack:///src/app/pages/e-commerce/traffic-reveal-card/traffic-reveal-card.component.html","webpack:///src/app/pages/e-commerce/user-activity/user-activity.component.ts","webpack:///src/app/pages/e-commerce/user-activity/user-activity.component.html","webpack:///src/app/pages/e-commerce/visitors-analytics/visitors-analytics-chart/visitors-analytics-chart.component.ts","webpack:///src/app/pages/e-commerce/visitors-analytics/visitors-analytics.component.ts","webpack:///src/app/pages/e-commerce/visitors-analytics/visitors-analytics.component.html","webpack:///src/app/pages/e-commerce/visitors-analytics/visitors-statistics/visitors-statistics.component.ts","webpack:///src/app/pages/e-commerce/visitors-analytics/visitors-statistics/visitors-statistics.component.html","webpack:///src/app/pages/miscellaneous/miscellaneous-routing.module.ts","webpack:///src/app/pages/miscellaneous/miscellaneous.component.ts","webpack:///src/app/pages/miscellaneous/miscellaneous.module.ts","webpack:///src/app/pages/pages-menu.ts","webpack:///src/app/pages/pages-routing.module.ts","webpack:///src/app/pages/pages.component.ts","webpack:///src/app/pages/pages.module.ts","webpack:///src/app/services/guards/auth.guard.ts"],"names":["LeafletDirective","element","zone","DEFAULT_ZOOM","DEFAULT_CENTER","DEFAULT_FPZ_OPTIONS","fitBoundsOptions","panOptions","zoomOptions","zoomPanOptions","options","mapReady","zoomChange","centerChange","onClick","onDoubleClick","onMouseDown","onMouseUp","onMouseMove","onMouseOver","onMouseOut","onMapMove","onMapMoveStart","onMapMoveEnd","onMapZoom","onMapZoomStart","onMapZoomEnd","prototype","ngOnInit","_this","runOutsideAngular","map","nativeElement","addMapEventListeners","center","zoom","setView","fitBounds","setFitBounds","maxBounds","setMaxBounds","minZoom","setMinZoom","maxZoom","setMaxZoom","doResize","emit","ngOnChanges","changes","currentValue","setZoom","setCenter","getMap","onResize","delayResize","on","e","handleEvent","getZoom","getCenter","lat","lng","invalidateSize","resizeTimer","clearTimeout","setTimeout","bind","panTo","latLngBounds","Object","Number","Function","ɵfac","LeafletDirective_Factory","t","ɵdir","type","selectors","hostBindings","LeafletDirective_HostBindings","rf","ctx","LeafletDirective_resize_HostBindingHandler","inputs","outputs","features","args","selector","LeafletDirectiveWrapper","leafletDirective","init","LeafletUtil","mapToArray","toReturn","k","hasOwnProperty","push","eventEmitter","event","observers","length","run","LeafletBaseLayersDirective","differs","layersControlReady","controlLayers","baseLayersDiffer","find","create","defineProperty","get","baseLayersValue","set","v","updateBaseLayers","enumerable","configurable","ngOnDestroy","baseLayers","getLayersControl","remove","layersControlOptions","addTo","ngDoCheck","layersControl","diff","results","applyBaseLayerChanges","changed","syncBaseLayer","layers","foundLayer","eachLayer","l","bl","baseLayer","LeafletBaseLayersDirective_Factory","LeafletControlLayersChanges","layersRemoved","layersChanged","layersAdded","LeafletControlLayersConfig","overlays","LeafletLayersControlDirective","overlaysDiffer","layersControlConfigValue","updateLayers","layersControlConfig","applyOverlayChanges","LeafletLayersControlDirective_Factory","LeafletControlLayersWrapper","controlConfig","controlOptions","applyChanges","addBaseLayer","addOverlay","addFn","forEachChangedItem","c","removeLayer","previousValue","call","key","forEachRemovedItem","forEachAddedItem","LeafletLayerDirective","onAdd","onRemove","layer","p_1","n_1","addLayerEventListeners","addLayer","LeafletLayerDirective_Factory","LeafletLayersDirective","layersDiffer","layersValue","changes_1","item","Array","LeafletLayersDirective_Factory","LeafletTileLayerDefinition","url","createTileLayer","layerDef","wms","createTileLayers","layerDefs","LeafletModule","ɵmod","ɵinj","factory","LeafletModule_Factory","ngJitMode","declarations","exports","_c0","TooltipContentComponent_span_4_ng_template_1_Template","_c1","a0","model","TooltipContentComponent_span_4_Template","ctx_r1","template","context","TooltipContentComponent_span_5_Template","ctx_r2","title","ChartComponent_ngx_charts_scale_legend_3_Template","ctx_r0","legendOptions","position","domain","colors","view","legendWidth","ChartComponent_ngx_charts_legend_4_Template","_r3","ChartComponent_ngx_charts_legend_4_Template_ngx_charts_legend_labelClick_0_listener","$event","legendLabelClick","ChartComponent_ngx_charts_legend_4_Template_ngx_charts_legend_labelActivate_0_listener","ctx_r4","legendLabelActivate","ChartComponent_ngx_charts_legend_4_Template_ngx_charts_legend_labelDeactivate_0_listener","ctx_r5","legendLabelDeactivate","activeEntries","_c2","_c3","_c4","_c5","XAxisTicksComponent__svg_g_2_Template","tick_r3","$implicit","tickTransform","tickFormat","textAnchor","textTransform","tickTrim","XAxisTicksComponent__svg_g_3__svg_g_1_Template","gridLineTransform","gridLineHeight","XAxisTicksComponent__svg_g_3_Template","tick_r4","showGridLines","_c6","XAxisComponent__svg_g_1_Template","XAxisComponent__svg_g_1_Template__svg_g_dimensionsChanged_0_listener","emitTicksHeight","trimTicks","rotateTicks","maxTickLength","tickFormatting","tickArguments","tickStroke","xScale","xOrient","dims","height","width","ticks","XAxisComponent__svg_g_2_Template","labelText","labelOffset","_c7","YAxisTicksComponent__svg_g_2_Template","tick_r5","transform","dy","x1","y1","YAxisTicksComponent__svg_path_3_Template","referenceAreaPath","YAxisTicksComponent__svg_g_4__svg_g_1__svg_line_1_Template","ctx_r8","gridLineWidth","YAxisTicksComponent__svg_g_4__svg_g_1__svg_line_2_Template","ctx_r9","YAxisTicksComponent__svg_g_4__svg_g_1_Template","ctx_r7","orient","YAxisTicksComponent__svg_g_4_Template","tick_r6","ctx_r3","YAxisTicksComponent__svg_g_5__svg_g_1__svg_g_2_Template","refLine_r10","ctx_r12","value","name","YAxisTicksComponent__svg_g_5__svg_g_1_Template","ctx_r11","showRefLabels","YAxisTicksComponent__svg_g_5_Template","showRefLines","_c8","YAxisComponent__svg_g_1_Template","YAxisComponent__svg_g_1_Template__svg_g_dimensionsChanged_0_listener","emitTicksWidth","yScale","yOrient","referenceLines","YAxisComponent__svg_g_2_Template","_c9","CircleSeriesComponent__svg_g_0__svg_rect_3_Template","circle","cx","radius","cy","gradientFill","_c10","CircleSeriesComponent__svg_g_0_Template","CircleSeriesComponent__svg_g_0_Template__svg_g_select_4_listener","data","CircleSeriesComponent__svg_g_0_Template__svg_g_activate_4_listener","activateCircle","CircleSeriesComponent__svg_g_0_Template__svg_g_deactivate_4_listener","deactivateCircle","gradientId","gradientStops","barVisible","isActive","seriesName","color","classNames","tooltipDisabled","tooltipTemplate","undefined","getTooltipText","_c11","_c12","_c13","GridPanelSeriesComponent__svg_g_0_Template","gridPanel_r1","x","y","_c14","SvgLinearGradientComponent__svg_stop_1_Template","stop_r1","opacity","offset","_c15","SvgRadialGradientComponent__svg_stop_1_Template","_c16","AreaComponent__svg_defs_0_Template","_c17","_c18","_c19","TooltipArea__svg_ng_template_2__xhtml_div_1_Template","tooltipItem_r5","getToolTipText","TooltipArea__svg_ng_template_2_Template","model_r3","_c20","LegendComponent_header_1_Template","LegendComponent_li_4_Template","_r4","LegendComponent_li_4_Template_ngx_charts_legend_entry_select_1_listener","labelClick","LegendComponent_li_4_Template_ngx_charts_legend_entry_activate_1_listener","activate","LegendComponent_li_4_Template_ngx_charts_legend_entry_deactivate_1_listener","ctx_r6","deactivate","entry_r2","label","formattedLabel","AdvancedLegendComponent_div_1_Template","roundedTotal","valueFormatting","AdvancedLegendComponent_div_2_Template","defaultValueFormatting","AdvancedLegendComponent_div_7_div_2_Template","legendItem_r3","_value","AdvancedLegendComponent_div_7_div_3_Template","AdvancedLegendComponent_div_7_div_6_Template","percentage","AdvancedLegendComponent_div_7_div_7_Template","toLocaleString","AdvancedLegendComponent_div_7_Template","_r13","AdvancedLegendComponent_div_7_Template_div_mouseenter_0_listener","AdvancedLegendComponent_div_7_Template_div_mouseleave_0_listener","ctx_r14","AdvancedLegendComponent_div_7_Template_div_click_0_listener","ctx_r15","select","animations","displayLabel","_c21","_c22","AreaChartComponent__svg_g_5_Template","_r6","AreaChartComponent__svg_g_5_Template__svg_g_dimensionsChanged_0_listener","updateXAxisHeight","showXAxisLabel","xAxisLabel","trimXAxisTicks","rotateXAxisTicks","maxXAxisTickLength","xAxisTickFormatting","xAxisTicks","AreaChartComponent__svg_g_6_Template","_r8","AreaChartComponent__svg_g_6_Template__svg_g_dimensionsChanged_0_listener","updateYAxisWidth","showYAxisLabel","yAxisLabel","trimYAxisTicks","maxYAxisTickLength","yAxisTickFormatting","yAxisTicks","AreaChartComponent__svg_g_8_Template","series_r9","baseValue","scaleType","gradient","curve","AreaChartComponent__svg_g_9__svg_g_2_Template","AreaChartComponent__svg_g_9__svg_g_2_Template__svg_g_select_1_listener","series_r11","AreaChartComponent__svg_g_9__svg_g_2_Template__svg_g_activate_1_listener","onActivate","AreaChartComponent__svg_g_9__svg_g_2_Template__svg_g_deactivate_1_listener","onDeactivate","ctx_r10","hoveredVertical","AreaChartComponent__svg_g_9_Template","_r17","AreaChartComponent__svg_g_9_Template__svg_g_mouseleave_0_listener","ctx_r16","hideCircles","AreaChartComponent__svg_g_9_Template__svg_g_hover_1_listener","ctx_r18","updateHoveredVertical","xSet","seriesTooltipTemplate","AreaChartComponent__svg_g_10__svg_g_1_Template","series_r20","ctx_r19","timelineXScale","timelineYScale","_c23","a1","AreaChartComponent__svg_g_10_Template","_r22","AreaChartComponent__svg_g_10_Template__svg_g_onDomainChange_0_listener","ctx_r21","updateDomain","timelineWidth","timelineHeight","scheme","customColors","legend","timelineTransform","trackBy","AreaChartNormalizedComponent__svg_g_5_Template","AreaChartNormalizedComponent__svg_g_5_Template__svg_g_dimensionsChanged_0_listener","AreaChartNormalizedComponent__svg_g_6_Template","AreaChartNormalizedComponent__svg_g_6_Template__svg_g_dimensionsChanged_0_listener","AreaChartNormalizedComponent__svg_g_8_Template","AreaChartNormalizedComponent__svg_g_9__svg_g_2_Template","AreaChartNormalizedComponent__svg_g_9__svg_g_2_Template__svg_g_select_1_listener","AreaChartNormalizedComponent__svg_g_9__svg_g_2_Template__svg_g_activate_1_listener","AreaChartNormalizedComponent__svg_g_9__svg_g_2_Template__svg_g_deactivate_1_listener","AreaChartNormalizedComponent__svg_g_9_Template","AreaChartNormalizedComponent__svg_g_9_Template__svg_g_mouseleave_0_listener","AreaChartNormalizedComponent__svg_g_9_Template__svg_g_hover_1_listener","AreaChartNormalizedComponent__svg_g_10__svg_g_1_Template","AreaChartNormalizedComponent__svg_g_10_Template","AreaChartNormalizedComponent__svg_g_10_Template__svg_g_onDomainChange_0_listener","_c24","AreaChartStackedComponent__svg_g_5_Template","AreaChartStackedComponent__svg_g_5_Template__svg_g_dimensionsChanged_0_listener","AreaChartStackedComponent__svg_g_6_Template","AreaChartStackedComponent__svg_g_6_Template__svg_g_dimensionsChanged_0_listener","AreaChartStackedComponent__svg_g_8_Template","AreaChartStackedComponent__svg_g_9__svg_g_2_Template","AreaChartStackedComponent__svg_g_9__svg_g_2_Template__svg_g_select_1_listener","AreaChartStackedComponent__svg_g_9__svg_g_2_Template__svg_g_activate_1_listener","AreaChartStackedComponent__svg_g_9__svg_g_2_Template__svg_g_deactivate_1_listener","AreaChartStackedComponent__svg_g_9_Template","AreaChartStackedComponent__svg_g_9_Template__svg_g_mouseleave_0_listener","AreaChartStackedComponent__svg_g_9_Template__svg_g_hover_1_listener","AreaChartStackedComponent__svg_g_10__svg_g_1_Template","AreaChartStackedComponent__svg_g_10_Template","AreaChartStackedComponent__svg_g_10_Template__svg_g_onDomainChange_0_listener","_c25","_c26","BarComponent__svg_defs_0_Template","orientation","BarHorizontalComponent__svg_g_2_Template","BarHorizontalComponent__svg_g_2_Template__svg_g_dimensionsChanged_0_listener","BarHorizontalComponent__svg_g_3_Template","_r5","BarHorizontalComponent__svg_g_3_Template__svg_g_dimensionsChanged_0_listener","dataLabelMaxWidth","negative","BarHorizontal2DComponent__svg_g_3_Template","BarHorizontal2DComponent__svg_g_3_Template__svg_g_dimensionsChanged_0_listener","valueScale","BarHorizontal2DComponent__svg_g_4_Template","BarHorizontal2DComponent__svg_g_4_Template__svg_g_dimensionsChanged_0_listener","groupScale","BarHorizontal2DComponent__svg_g_5_Template","_r10","BarHorizontal2DComponent__svg_g_5_Template__svg_g_select_1_listener","group_r7","BarHorizontal2DComponent__svg_g_5_Template__svg_g_activate_1_listener","BarHorizontal2DComponent__svg_g_5_Template__svg_g_deactivate_1_listener","BarHorizontal2DComponent__svg_g_5_Template__svg_g_dataLabelWidthChanged_1_listener","index_r8","index","ctx_r13","onDataLabelMaxWidthChanged","groupTransform","innerScale","series","roundEdges","showDataLabel","dataLabelFormatting","noBarWhenZero","BarHorizontalNormalizedComponent__svg_g_2_Template","BarHorizontalNormalizedComponent__svg_g_2_Template__svg_g_dimensionsChanged_0_listener","BarHorizontalNormalizedComponent__svg_g_3_Template","BarHorizontalNormalizedComponent__svg_g_3_Template__svg_g_dimensionsChanged_0_listener","BarHorizontalNormalizedComponent__svg_g_4_Template","_r9","BarHorizontalNormalizedComponent__svg_g_4_Template__svg_g_select_1_listener","BarHorizontalNormalizedComponent__svg_g_4_Template__svg_g_activate_1_listener","BarHorizontalNormalizedComponent__svg_g_4_Template__svg_g_deactivate_1_listener","BarHorizontalStackedComponent__svg_g_2_Template","BarHorizontalStackedComponent__svg_g_2_Template__svg_g_dimensionsChanged_0_listener","BarHorizontalStackedComponent__svg_g_3_Template","BarHorizontalStackedComponent__svg_g_3_Template__svg_g_dimensionsChanged_0_listener","BarHorizontalStackedComponent__svg_g_4_Template","BarHorizontalStackedComponent__svg_g_4_Template__svg_g_select_1_listener","BarHorizontalStackedComponent__svg_g_4_Template__svg_g_activate_1_listener","BarHorizontalStackedComponent__svg_g_4_Template__svg_g_deactivate_1_listener","BarHorizontalStackedComponent__svg_g_4_Template__svg_g_dataLabelWidthChanged_1_listener","BarVerticalComponent__svg_g_2_Template","BarVerticalComponent__svg_g_2_Template__svg_g_dimensionsChanged_0_listener","dataLabelMaxHeight","BarVerticalComponent__svg_g_3_Template","BarVerticalComponent__svg_g_3_Template__svg_g_dimensionsChanged_0_listener","BarVertical2DComponent__svg_g_3_Template","BarVertical2DComponent__svg_g_3_Template__svg_g_dimensionsChanged_0_listener","BarVertical2DComponent__svg_g_4_Template","BarVertical2DComponent__svg_g_4_Template__svg_g_dimensionsChanged_0_listener","BarVertical2DComponent__svg_g_5_Template","BarVertical2DComponent__svg_g_5_Template__svg_g_select_0_listener","BarVertical2DComponent__svg_g_5_Template__svg_g_activate_0_listener","BarVertical2DComponent__svg_g_5_Template__svg_g_deactivate_0_listener","BarVertical2DComponent__svg_g_5_Template__svg_g_dataLabelHeightChanged_0_listener","onDataLabelMaxHeightChanged","BarVerticalNormalizedComponent__svg_g_2_Template","BarVerticalNormalizedComponent__svg_g_2_Template__svg_g_dimensionsChanged_0_listener","BarVerticalNormalizedComponent__svg_g_3_Template","BarVerticalNormalizedComponent__svg_g_3_Template__svg_g_dimensionsChanged_0_listener","BarVerticalNormalizedComponent__svg_g_4_Template","BarVerticalNormalizedComponent__svg_g_4_Template__svg_g_select_1_listener","BarVerticalNormalizedComponent__svg_g_4_Template__svg_g_activate_1_listener","BarVerticalNormalizedComponent__svg_g_4_Template__svg_g_deactivate_1_listener","BarVerticalStackedComponent__svg_g_2_Template","BarVerticalStackedComponent__svg_g_2_Template__svg_g_dimensionsChanged_0_listener","BarVerticalStackedComponent__svg_g_3_Template","BarVerticalStackedComponent__svg_g_3_Template__svg_g_dimensionsChanged_0_listener","BarVerticalStackedComponent__svg_g_4_Template","BarVerticalStackedComponent__svg_g_4_Template__svg_g_select_1_listener","BarVerticalStackedComponent__svg_g_4_Template__svg_g_activate_1_listener","BarVerticalStackedComponent__svg_g_4_Template__svg_g_deactivate_1_listener","BarVerticalStackedComponent__svg_g_4_Template__svg_g_dataLabelHeightChanged_1_listener","_c27","SeriesVerticalComponent__svg_g_0_Template","SeriesVerticalComponent__svg_g_0_Template__svg_g_select_0_listener","SeriesVerticalComponent__svg_g_0_Template__svg_g_activate_0_listener","SeriesVerticalComponent__svg_g_0_Template__svg_g_deactivate_0_listener","bar_r2","ariaLabel","tooltipPlacement","tooltipType","tooltipText","SeriesVerticalComponent__svg_g_1__svg_g_1_Template","_r11","SeriesVerticalComponent__svg_g_1__svg_g_1_Template__svg_g_dimensionsChanged_0_listener","i_r9","dataLabelHeightChanged","size","b_r8","total","SeriesVerticalComponent__svg_g_1_Template","barsForDataLabels","trackDataLabelBy","_c28","SeriesHorizontal__svg_g_0_Template","SeriesHorizontal__svg_g_0_Template__svg_g_select_0_listener","click","SeriesHorizontal__svg_g_0_Template__svg_g_activate_0_listener","SeriesHorizontal__svg_g_0_Template__svg_g_deactivate_0_listener","SeriesHorizontal__svg_g_1__svg_g_1_Template","SeriesHorizontal__svg_g_1__svg_g_1_Template__svg_g_dimensionsChanged_0_listener","dataLabelWidthChanged","SeriesHorizontal__svg_g_1_Template","_c29","BubbleChartComponent__svg_g_5_Template","BubbleChartComponent__svg_g_5_Template__svg_g_dimensionsChanged_0_listener","BubbleChartComponent__svg_g_6_Template","BubbleChartComponent__svg_g_6_Template__svg_g_dimensionsChanged_0_listener","BubbleChartComponent__svg_g_9_Template","BubbleChartComponent__svg_g_9_Template__svg_g_select_1_listener","series_r7","BubbleChartComponent__svg_g_9_Template__svg_g_activate_1_listener","BubbleChartComponent__svg_g_9_Template__svg_g_deactivate_1_listener","rScale","xScaleType","yScaleType","_c30","BubbleSeriesComponent__svg_g_0_Template","BubbleSeriesComponent__svg_g_0_Template__svg_g_select_2_listener","circle_r1","BubbleSeriesComponent__svg_g_0_Template__svg_g_activate_2_listener","BubbleSeriesComponent__svg_g_0_Template__svg_g_deactivate_2_listener","_c31","HeatMapCellComponent__svg_defs_1_Template","_c32","_c33","a2","HeatCellSeriesComponent__svg_g_0_Template","HeatCellSeriesComponent__svg_g_0_Template__svg_g_select_0_listener","c_r1","cell","HeatCellSeriesComponent__svg_g_0_Template__svg_g_activate_0_listener","HeatCellSeriesComponent__svg_g_0_Template__svg_g_deactivate_0_listener","fill","HeatMapComponent__svg_g_2_Template","HeatMapComponent__svg_g_2_Template__svg_g_dimensionsChanged_0_listener","HeatMapComponent__svg_g_3_Template","HeatMapComponent__svg_g_3_Template__svg_g_dimensionsChanged_0_listener","HeatMapComponent__svg_rect_4_Template","rect_r7","rx","_c34","LineChartComponent__svg_g_5_Template","LineChartComponent__svg_g_5_Template__svg_g_dimensionsChanged_0_listener","LineChartComponent__svg_g_6_Template","LineChartComponent__svg_g_6_Template__svg_g_dimensionsChanged_0_listener","LineChartComponent__svg_g_8_Template","rangeFillOpacity","hasRange","LineChartComponent__svg_g_9__svg_g_2_Template","LineChartComponent__svg_g_9__svg_g_2_Template__svg_g_select_1_listener","LineChartComponent__svg_g_9__svg_g_2_Template__svg_g_activate_1_listener","LineChartComponent__svg_g_9__svg_g_2_Template__svg_g_deactivate_1_listener","LineChartComponent__svg_g_9_Template","LineChartComponent__svg_g_9_Template__svg_g_mouseleave_0_listener","LineChartComponent__svg_g_9_Template__svg_g_hover_1_listener","LineChartComponent__svg_g_10__svg_g_1_Template","LineChartComponent__svg_g_10_Template","LineChartComponent__svg_g_10_Template__svg_g_onDomainChange_0_listener","_c35","LineSeriesComponent__svg_g_2_Template","LineSeriesComponent__svg_g_5_Template","isInactive","outerPath","hasGradient","gradientUrl","getColor","PolarChartComponent__svg_g_4__svg_circle_1_Template","r_r6","PolarChartComponent__svg_g_4_Template","radiusTicks","PolarChartComponent__svg_g_5__svg_g_1_Template","tick_r8","outerRadius","labelTrim","labelTrimSize","PolarChartComponent__svg_g_5_Template","thetaTicks","PolarChartComponent__svg_g_6_Template","PolarChartComponent__svg_g_6_Template__svg_g_dimensionsChanged_0_listener","yAxisScale","yAxisDims","transformYAxis","PolarChartComponent__svg_g_7_Template","PolarChartComponent__svg_g_9_Template","PolarChartComponent__svg_g_9_Template__svg_g_select_1_listener","PolarChartComponent__svg_g_9_Template__svg_g_activate_1_listener","PolarChartComponent__svg_g_9_Template__svg_g_deactivate_1_listener","_c36","PolarSeriesComponent__svg_g_2_Template","seriesColor","PolarSeriesComponent__svg_g_4_Template","PolarSeriesComponent__svg_g_4_Template__svg_g_select_0_listener","circle_r2","PolarSeriesComponent__svg_g_4_Template__svg_g_activate_0_listener","PolarSeriesComponent__svg_g_4_Template__svg_g_deactivate_0_listener","inactive","circleRadius","_c37","_c38","PieArcComponent__svg_defs_1_Template","radialGradientId","startOpacity","_c39","PieGridComponent__svg_g_2__svg_text_2_Template","series_r1","percent","PieGridComponent__svg_g_2__svg_text_3_Template","PieGridComponent__svg_g_2__svg_text_6_Template","PieGridComponent__svg_g_2__svg_text_7_Template","_c40","PieGridComponent__svg_g_2_Template","PieGridComponent__svg_g_2_Template__svg_g_select_1_listener","PieGridComponent__svg_g_2_Template__svg_g_activate_1_listener","PieGridComponent__svg_g_2_Template__svg_g_deactivate_1_listener","innerRadius","_c41","PieGridSeriesComponent__svg_g_1_Template","PieGridSeriesComponent__svg_g_1_Template__svg_g_select_0_listener","PieGridSeriesComponent__svg_g_1_Template__svg_g_activate_0_listener","PieGridSeriesComponent__svg_g_1_Template__svg_g_deactivate_0_listener","arc_r1","startAngle","endAngle","pointerEvents","animate","_c42","PieSeriesComponent__svg_g_0__svg_g_1_Template","trimLabels","maxLabelLength","max","explodeSlices","PieSeriesComponent__svg_g_0_Template","PieSeriesComponent__svg_g_0_Template__svg_g_select_2_listener","PieSeriesComponent__svg_g_0_Template__svg_g_activate_2_listener","PieSeriesComponent__svg_g_0_Template__svg_g_deactivate_2_listener","PieSeriesComponent__svg_g_0_Template__svg_g_dblclick_2_listener","dblclick","labelVisible","getTooltipTitle","_c43","_c44","CardComponent__svg_path_2_Template","bandColor","transformBand","bandPath","_c45","CardSeriesComponent__svg_rect_0_Template","c_r2","emptyColor","CardSeriesComponent__svg_g_1_Template","CardSeriesComponent__svg_g_1_Template__svg_g_select_0_listener","c_r3","textColor","medianSize","labelFormatting","_c46","TreeMapCellComponent__svg_defs_1_Template","TreeMapCellComponent__svg_foreignObject_3__xhtml_span_4_Template","TreeMapCellComponent__svg_foreignObject_3__xhtml_span_5_Template","formattedValue","TreeMapCellComponent__svg_foreignObject_3_Template","getTextColor","_c47","TreeMapCellSeriesComponent__svg_g_0_Template","TreeMapCellSeriesComponent__svg_g_0_Template__svg_g_select_0_listener","valueType","_c48","_c49","LinearGaugeComponent__svg_line_4_Template","transformLine","units","LinearGaugeComponent__svg_line_5_Template","_c50","GaugeComponent__svg_g_2_Template","GaugeComponent__svg_g_2_Template__svg_g_select_1_listener","GaugeComponent__svg_g_2_Template__svg_g_activate_1_listener","GaugeComponent__svg_g_2_Template__svg_g_deactivate_1_listener","arc_r3","rotation","backgroundArc","valueArc","cornerRadius","GaugeComponent__svg_g_3_Template","bigSegments","smallSegments","min","angleSpan","axisTickFormatting","GaugeComponent__svg_text_4_Template","displayValue","_c51","_c52","GaugeAxisComponent__svg_g_1_Template","line","GaugeAxisComponent__svg_g_2_Template","text","GaugeAxisComponent__svg_g_3_Template","InjectionService_1","isViewContainerRef","InjectionService","applicationRef","componentFactoryResolver","injector","_container","globalRootViewContainer","components","Error","container","component","hostView","rootNodes","location","getComponentRootNode","bindings","bindingKeys","getOwnPropertyNames","bindingName","instance","eventKeys","eventName","componentClass","getRootViewContainer","appendLocation","portalHost","portal","componentRef","attach","projectComponentBindings","InjectionService_Factory","ɵprov","token","ctorParameters","throttle","func","wait","result","timeout","previous","later","leading","Date","apply","now","remaining","arguments","trailing","throttleable","duration","innerDecorator","target","descriptor","getter","PlacementTypes","caretOffset","verticalPosition","elDimensions","popoverDimensions","alignment","top","horizontalPosition","left","PositionHelper","window","innerHeight","caretDimensions","popoverPosition","innerWidth","placement","spacing","flip","elmDim","hostDim","right","calculateVerticalCaret","calculateHorizontalCaret","bottom","calculateVerticalAlignment","calculateHorizontalAlignment","shouldFlip","TooltipContentComponent","renderer","nativeElm","host","getBoundingClientRect","checkFlip","positionContent","showCaret","positionCaret","addClass","setStyle","caretElm","determinePlacement","clz","cssClass","TooltipContentComponent_Factory","ɵcmp","viewQuery","TooltipContentComponent_Query","_t","first","hostVars","TooltipContentComponent_HostBindings","TooltipContentComponent_resize_HostBindingHandler","onWindowResize","cssClasses","decls","vars","consts","TooltipContentComponent_Template","directives","styles","encapsulation","InjectionRegisteryService","injectionService","defaults","Map","createByType","assignDefaults","injectComponent","register","compsByType","componentType","idx","indexOf","destroy","splice","destroyByType","comps","i","appendComponent","assign","has","types","TooltipService","TooltipService_Factory","ChartComponent","showLegend","update","legendColumns","legendType","getLegendType","chartColumns","chartWidth","Math","floor","ChartComponent_Factory","legendData","ngContentSelectors","ChartComponent_Template","ScaleLegendComponent","LegendComponent","animation","changeDetection","VisibilityObserver","visible","isVisible","runCheck","check","offsetHeight","offsetWidth","onVisibilityChange","VisibilityObserver_Factory","BaseChartComponent","chartElement","cd","schemeType","bindWindowResizeEvent","visibilityObserver","subscribe","unbindEvents","unsubscribe","cloneData","getContainerDims","markForCheck","hostElem","parentNode","g","toLocaleDateString","j","d","resizeSubscription","source","subscription","pipe","copy","seriesItem","seriesItemCopy","JSON","parse","stringify","BaseChartComponent_Factory","BaseChartComponent_Template","AxisLabelComponent","textHeight","margin","strokeWidth","AxisLabelComponent_Factory","attrs","AxisLabelComponent_Template","trimLabel","s","trim","slice","reduceTicks","maxTicks","reduced","modulus","XAxisTicksComponent","dimensionsChanged","verticalSpacing","rotateLabels","innerTickSize","outerTickSize","tickPadding","maxTicksLength","maxAllowedLength","updateDims","parseInt","ticksElement","scale","getTicks","constructor","angle","getRotationAngle","adjustedScale","bandwidth","tick","toString","tickLength","len","charWidth","wordWidth","baseWidth","maxBaseWidth","cos","PI","getMaxTicks","maxScaleTicks","tickValues","tickWidth","XAxisTicksComponent_Factory","XAxisTicksComponent_Query","XAxisTicksComponent_Template","XAxisComponent","xAxisOffset","xAxisClassName","stroke","padding","xAxisTickCount","newLabelOffset","XAxisComponent_Factory","XAxisComponent_Query","ticksComponent","showLabel","xAxisTickInterval","XAxisComponent_Template","roundedRect","w","h","r","tl","tr","br","retval","YAxisTicksComponent","referenceLineLength","sign","tickSpacing","setReferencelines","y2","x2","refMin","refMax","tickHeight","YAxisTicksComponent_Factory","YAxisTicksComponent_Query","YAxisTicksComponent_Template","YAxisComponent","yAxisOffset","yAxisClassName","yAxisTickCount","YAxisComponent_Factory","YAxisComponent_Query","yAxisTickInterval","YAxisComponent_Template","AxesModule","AxesModule_Factory","imports","StyleTypes","AlignmentTypes","ShowTypes","TooltipDirective","tooltipService","viewContainerRef","tooltipCssClass","tooltipTitle","tooltipAppendToBody","tooltipSpacing","tooltipShowCaret","tooltipAlignment","popover","tooltipCloseOnClickOutside","tooltipCloseOnMouseLeave","tooltipHideTimeout","tooltipShowTimeout","tooltipShowEvent","all","tooltipImmediateExit","show","hide","hideTooltip","listensForFocus","showTooltip","listensForHover","contentDom","contains","immediate","time","destroyAll","createBoundOptions","addHideListeners","tooltip","mouseEnterContentEvent","listen","mouseLeaveContentEvent","documentClickEvent","document","destroyFn","tooltipContext","focus","mouseover","TooltipDirective_Factory","TooltipDirective_HostBindings","TooltipDirective_focusin_HostBindingHandler","onFocus","TooltipDirective_blur_HostBindingHandler","onBlur","TooltipDirective_mouseenter_HostBindingHandler","onMouseEnter","TooltipDirective_mouseleave_HostBindingHandler","onMouseLeave","TooltipDirective_click_HostBindingHandler","onMouseClick","TooltipModule","TooltipModule_Factory","providers","formatLabel","escapeLabel","replace","match","cache","id","newId","random","pow","CircleSeriesComponent","getActiveCircle","indexActiveDataPoint","findIndex","visibleValue","mapDataPointToCircle","tooltipLabel","d1","range","getGradientStops","getTooltipMinMaxText","entry","CircleSeriesComponent_Factory","CircleSeriesComponent_Template","SvgLinearGradientComponent","CircleComponent","isArray","join","CircleComponent_Factory","CircleComponent_HostBindings","CircleComponent_click_HostBindingHandler","CircleComponent_mouseenter_HostBindingHandler","CircleComponent_mouseleave_HostBindingHandler","circleOpacity","CircleComponent_Template","GridPanelComponent","GridPanelComponent_Factory","path","GridPanelComponent_Template","GridPanelSeriesComponent","gridPanels","getGridPanels","className","positionIndex","step","paddingInner","GridPanelSeriesComponent_Factory","GridPanelSeriesComponent_Template","SvgLinearGradientComponent_Factory","stops","SvgLinearGradientComponent_Template","SvgRadialGradientComponent","endOpacity","stopsDefault","stopsInput","SvgRadialGradientComponent_Factory","SvgRadialGradientComponent_Template","AreaComponent","initialized","loadAnimation","getGradient","updatePathEl","areaPath","startingPath","node","transition","attr","AreaComponent_Factory","activeLabel","AreaComponent_Template","easeOutExpo","b","count","countFrom","countTo","countDecimals","countDuration","callback","startVal","endVal","countDown","decimals","dec","startTime","runCount","timestamp","frameVal","progress","round","finished","requestAnimationFrame","val","decimalChecker","abs","CountUpDirective","countPrefix","countSuffix","countChange","countFinish","_countDecimals","_countTo","_countFrom","cancelAnimationFrame","animationReq","parseFloat","start","CountUpDirective_Factory","CountUpDirective_Template","root","global","MouseEvent","createMouseEvent","bubbles","cancelable","createEvent","initEvent","TooltipArea","anchorOpacity","anchorPos","anchorValues","showPercentage","hover","xVal","group","groupName","d0","toFixed","xPos","pageX","closestIndex","findClosestPointIndex","closestPoint","getValues","lastAnchorPos","ev","tooltipAnchor","dispatchEvent","minIndex","maxIndex","minDiff","MAX_VALUE","currentIndex","currentElement","curDiff","tooltipItem","TooltipArea_Factory","TooltipArea_Query","TooltipArea_Template","TooltipArea_Template__svg_rect_mousemove_1_listener","mouseMove","TooltipArea_Template__svg_rect_mouseleave_1_listener","_r0","Timeline","onDomainChange","addBrush","getDims","offsetY","xDomain","getXDomain","getXScale","brush","updateBrush","filterId","filter","values","includes","extent","selection","newDomain","invert","Timeline_Factory","state","miniChart","autoScale","Timeline_Template","horizontal","labelActivate","labelDeactivate","legendEntries","getLegendEntries","items","LegendComponent_Factory","LegendComponent_Template","LegendEntryComponent","toggle","LegendEntryComponent_Factory","LegendEntryComponent_HostBindings","LegendEntryComponent_mouseenter_HostBindingHandler","LegendEntryComponent_mouseleave_HostBindingHandler","LegendEntryComponent_Template","LegendEntryComponent_Template_span_click_0_listener","LegendEntryComponent_Template_span_click_1_listener","trimmedLabel","sanitizer","gradientValues","gradientString","direction","bypassSecurityTrustStyle","splits","pairs","reverse","forEach","ScaleLegendComponent_Factory","valueRange","ScaleLegendComponent_Template","AdvancedLegendComponent","legendItems","percentageFormatting","reduce","sum","getTotal","getLegendItems","origialLabel","AdvancedLegendComponent_Factory","AdvancedLegendComponent_Template","COMPONENTS","ChartCommonModule","ChartCommonModule_Factory","calculateViewDimensions","margins","showXAxis","showYAxis","xAxisHeight","yAxisWidth","showXLabel","showYLabel","legendPosition","columns","xOffset","chartHeight","colorSets","selectable","ColorHelper","cs","colorDomain","generateColorScheme","colorScale","points","found","mapping","toLowerCase","colorValueScale","endColor","startColor","currentVal","originalOffset","getUniqueXDomainValues","valueSet","Set","add","from","getScaleType","checkDateType","allDates","every","allNumbers","AreaChartComponent","legendTitle","roundDomains","timelinePadding","xAxis","yAxis","timeline","filteredDomain","yDomain","getYDomain","seriesDomain","getSeriesDomain","getYScale","updateTimeline","setColors","getLegendOptions","clipPathId","clipPath","timelineXDomain","xScaleMin","xScaleMax","sort","a","aDate","getTime","bDate","yScaleMin","yScaleMax","nice","date","num","isDate","deactivateAll","opts","entries","AreaChartComponent_Factory","ɵAreaChartComponent_BaseFactory","contentQueries","AreaChartComponent_ContentQueries","dirIndex","AreaChartComponent_HostBindings","AreaChartComponent_mouseleave_HostBindingHandler","AreaChartComponent_Template","AreaChartComponent_Template_ngx_charts_chart_legendLabelClick_0_listener","AreaChartComponent_Template_ngx_charts_chart_legendLabelActivate_0_listener","AreaChartComponent_Template_ngx_charts_chart_legendLabelDeactivate_0_listener","AreaSeriesComponent","AreaChartNormalizedComponent","valueOf","AreaChartNormalizedComponent_Factory","ɵAreaChartNormalizedComponent_BaseFactory","AreaChartNormalizedComponent_ContentQueries","AreaChartNormalizedComponent_HostBindings","AreaChartNormalizedComponent_mouseleave_HostBindingHandler","AreaChartNormalizedComponent_Template","AreaChartNormalizedComponent_Template_ngx_charts_chart_legendLabelClick_0_listener","AreaChartNormalizedComponent_Template_ngx_charts_chart_legendLabelActivate_0_listener","AreaChartNormalizedComponent_Template_ngx_charts_chart_legendLabelDeactivate_0_listener","AreaChartStackedComponent","AreaChartStackedComponent_Factory","ɵAreaChartStackedComponent_BaseFactory","AreaChartStackedComponent_ContentQueries","AreaChartStackedComponent_HostBindings","AreaChartStackedComponent_mouseleave_HostBindingHandler","AreaChartStackedComponent_Template","AreaChartStackedComponent_Template_ngx_charts_chart_legendLabelClick_0_listener","AreaChartStackedComponent_Template_ngx_charts_chart_legendLabelActivate_0_listener","AreaChartStackedComponent_Template_ngx_charts_chart_legendLabelDeactivate_0_listener","sortLinear","property","sortByDomain","aVal","bVal","aIdx","bIdx","sortByTime","stacked","normalized","updateGradient","currentArea","startingArea","xProperty","y0","d0values","d1values","getLinearGradientStops","AreaSeriesComponent_Factory","AreaSeriesComponent_Template","AreaChartModule","AreaChartModule_Factory","BarComponent","hideBar","checkToHideBar","getStartingPath","getPath","getStartOpacity","getRadius","edges","BarComponent_Factory","BarComponent_HostBindings","BarComponent_mouseenter_HostBindingHandler","BarComponent_mouseleave_HostBindingHandler","BarComponent_Template","BarComponent_Template__svg_path_click_1_listener","BarHorizontalComponent","barPadding","positive","formatDates","rangeRound","fromLegend","BarHorizontalComponent_Factory","ɵBarHorizontalComponent_BaseFactory","BarHorizontalComponent_ContentQueries","BarHorizontalComponent_Template","BarHorizontalComponent_Template_ngx_charts_chart_legendLabelClick_0_listener","BarHorizontalComponent_Template_ngx_charts_chart_legendLabelActivate_0_listener","BarHorizontalComponent_Template_ngx_charts_chart_legendLabelDeactivate_0_listener","BarHorizontalComponent_Template__svg_g_select_4_listener","BarHorizontalComponent_Template__svg_g_activate_4_listener","BarHorizontalComponent_Template__svg_g_deactivate_4_listener","BarHorizontalComponent_Template__svg_g_dataLabelWidthChanged_4_listener","SeriesHorizontal","BarHorizontal2DComponent","groupPadding","groupDomain","getGroupDomain","innerDomain","getInnerDomain","valuesDomain","getValueDomain","getGroupScale","getInnerScale","getValueScale","paddingOuter","groupIndex","flat","BarHorizontal2DComponent_Factory","ɵBarHorizontal2DComponent_BaseFactory","BarHorizontal2DComponent_ContentQueries","BarHorizontal2DComponent_Template","BarHorizontal2DComponent_Template_ngx_charts_chart_legendLabelActivate_0_listener","BarHorizontal2DComponent_Template_ngx_charts_chart_legendLabelDeactivate_0_listener","BarHorizontal2DComponent_Template_ngx_charts_chart_legendLabelClick_0_listener","BarHorizontalNormalizedComponent","valueDomain","BarHorizontalNormalizedComponent_Factory","ɵBarHorizontalNormalizedComponent_BaseFactory","BarHorizontalNormalizedComponent_ContentQueries","BarHorizontalNormalizedComponent_Template","BarHorizontalNormalizedComponent_Template_ngx_charts_chart_legendLabelActivate_0_listener","BarHorizontalNormalizedComponent_Template_ngx_charts_chart_legendLabelDeactivate_0_listener","BarHorizontalNormalizedComponent_Template_ngx_charts_chart_legendLabelClick_0_listener","BarHorizontalStackedComponent","smallest","biggest","smallestSum","biggestSum","BarHorizontalStackedComponent_Factory","ɵBarHorizontalStackedComponent_BaseFactory","BarHorizontalStackedComponent_ContentQueries","BarHorizontalStackedComponent_Template","BarHorizontalStackedComponent_Template_ngx_charts_chart_legendLabelActivate_0_listener","BarHorizontalStackedComponent_Template_ngx_charts_chart_legendLabelDeactivate_0_listener","BarHorizontalStackedComponent_Template_ngx_charts_chart_legendLabelClick_0_listener","BarVerticalComponent","some","isNaN","BarVerticalComponent_Factory","ɵBarVerticalComponent_BaseFactory","BarVerticalComponent_ContentQueries","BarVerticalComponent_Template","BarVerticalComponent_Template_ngx_charts_chart_legendLabelClick_0_listener","BarVerticalComponent_Template_ngx_charts_chart_legendLabelActivate_0_listener","BarVerticalComponent_Template_ngx_charts_chart_legendLabelDeactivate_0_listener","BarVerticalComponent_Template__svg_g_activate_4_listener","BarVerticalComponent_Template__svg_g_deactivate_4_listener","BarVerticalComponent_Template__svg_g_select_4_listener","BarVerticalComponent_Template__svg_g_dataLabelHeightChanged_4_listener","SeriesVerticalComponent","BarVertical2DComponent","BarVertical2DComponent_Factory","ɵBarVertical2DComponent_BaseFactory","BarVertical2DComponent_ContentQueries","BarVertical2DComponent_Template","BarVertical2DComponent_Template_ngx_charts_chart_legendLabelActivate_0_listener","BarVertical2DComponent_Template_ngx_charts_chart_legendLabelDeactivate_0_listener","BarVertical2DComponent_Template_ngx_charts_chart_legendLabelClick_0_listener","BarVerticalNormalizedComponent","BarVerticalNormalizedComponent_Factory","ɵBarVerticalNormalizedComponent_BaseFactory","BarVerticalNormalizedComponent_ContentQueries","BarVerticalNormalizedComponent_Template","BarVerticalNormalizedComponent_Template_ngx_charts_chart_legendLabelActivate_0_listener","BarVerticalNormalizedComponent_Template_ngx_charts_chart_legendLabelDeactivate_0_listener","BarVerticalNormalizedComponent_Template_ngx_charts_chart_legendLabelClick_0_listener","BarVerticalStackedComponent","BarVerticalStackedComponent_Factory","ɵBarVerticalStackedComponent_BaseFactory","BarVerticalStackedComponent_ContentQueries","BarVerticalStackedComponent_Template","BarVerticalStackedComponent_Template_ngx_charts_chart_legendLabelActivate_0_listener","BarVerticalStackedComponent_Template_ngx_charts_chart_legendLabelDeactivate_0_listener","BarVerticalStackedComponent_Template_ngx_charts_chart_legendLabelClick_0_listener","D0Types","updateTooltipSettings","d0Type","bars","getLabel","bar","offset0","offset1","updateDataLabels","section","totalPositive","totalNegative","dataItem","barLabel","SeriesVerticalComponent_Factory","SeriesVerticalComponent_Template","BarLabelComponent","SeriesHorizontal_Factory","SeriesHorizontal_Template","horizontalPadding","verticalPadding","getSize","formatedValue","barX","barWidth","barY","barHeight","BarLabelComponent_Factory","BarLabelComponent_Template","BarChartModule","BarChartModule_Factory","getDomain","minVal","maxVal","getScale","BubbleChartComponent","maxRadius","minRadius","bubblePadding","rDomain","getRDomain","getRScale","setScales","getBubblePadding","yMin","xMin","yMax","xMax","Infinity","BubbleChartComponent_Factory","ɵBubbleChartComponent_BaseFactory","BubbleChartComponent_ContentQueries","BubbleChartComponent_HostBindings","BubbleChartComponent_mouseleave_HostBindingHandler","BubbleChartComponent_Template","BubbleChartComponent_Template_ngx_charts_chart_legendLabelClick_0_listener","BubbleChartComponent_Template_ngx_charts_chart_legendLabelActivate_0_listener","BubbleChartComponent_Template_ngx_charts_chart_legendLabelDeactivate_0_listener","BubbleChartComponent_Template__svg_rect_mouseenter_7_listener","BubbleSeriesComponent","circles","getCircles","hasRadius","hasTooltipLabel","hasSeriesName","radiusValue","BubbleSeriesComponent_Factory","BubbleSeriesComponent_Template","BubbleChartModule","BubbleChartModule_Factory","HeatMapCellComponent","animateToCurrentForm","HeatMapCellComponent_Factory","HeatMapCellComponent_HostBindings","HeatMapCellComponent_mouseenter_HostBindingHandler","HeatMapCellComponent_mouseleave_HostBindingHandler","HeatMapCellComponent_Template","HeatMapCellComponent_Template__svg_rect_click_2_listener","HeatCellSeriesComponent","cells","getCells","row","HeatCellSeriesComponent_Factory","HeatCellSeriesComponent_Template","HeatMapComponent","innerPadding","rects","getRects","N","L","split","getDimension","f","yVal","HeatMapComponent_Factory","ɵHeatMapComponent_BaseFactory","HeatMapComponent_ContentQueries","HeatMapComponent_Template","HeatMapComponent_Template_ngx_charts_chart_legendLabelClick_0_listener","HeatMapComponent_Template__svg_g_select_5_listener","HeatMapComponent_Template__svg_g_activate_5_listener","HeatMapComponent_Template__svg_g_deactivate_5_listener","HeatMapModule","HeatMapModule_Factory","LineComponent","initialPath","LineComponent_Factory","LineComponent_Template","strokeDasharray","strokeDashoffset","LineChartComponent","LineChartComponent_Factory","ɵLineChartComponent_BaseFactory","LineChartComponent_ContentQueries","LineChartComponent_HostBindings","LineChartComponent_mouseleave_HostBindingHandler","LineChartComponent_Template","LineChartComponent_Template_ngx_charts_chart_legendLabelClick_0_listener","LineChartComponent_Template_ngx_charts_chart_legendLabelActivate_0_listener","LineChartComponent_Template_ngx_charts_chart_legendLabelDeactivate_0_listener","LineSeriesComponent","updateGradients","sortData","lineGen","getLineGenerator","areaGen","getAreaGenerator","getRangeGenerator","areaGradientStops","LineSeriesComponent_Factory","LineSeriesComponent_Template","LineChartModule","LineChartModule_Factory","isNumber","twoPI","PolarChartComponent","showSeriesOnHover","yAxisMinScale","setDims","setTicks","halfWidth","halfHeight","yOffset","transformPlot","xValues","getXValues","dd","startPos","sin","pos","minDistance","o","getYValues","PolarChartComponent_Factory","ɵPolarChartComponent_BaseFactory","PolarChartComponent_ContentQueries","PolarChartComponent_Template","PolarChartComponent_Template_ngx_charts_chart_legendLabelClick_0_listener","PolarChartComponent_Template_ngx_charts_chart_legendLabelActivate_0_listener","PolarChartComponent_Template_ngx_charts_chart_legendLabelDeactivate_0_listener","PieLabelComponent","PolarSeriesComponent","linearScaleType","getAngle","cData","active","defaultTooltipText","PolarSeriesComponent_Factory","PolarSeriesComponent_Template","AdvancedPieChartComponent","AdvancedPieChartComponent_Factory","ɵAdvancedPieChartComponent_BaseFactory","AdvancedPieChartComponent_ContentQueries","nameFormatting","AdvancedPieChartComponent_Template","AdvancedPieChartComponent_Template__svg_g_select_4_listener","AdvancedPieChartComponent_Template__svg_g_activate_4_listener","AdvancedPieChartComponent_Template__svg_g_deactivate_4_listener","AdvancedPieChartComponent_Template_ngx_charts_advanced_legend_select_6_listener","AdvancedPieChartComponent_Template_ngx_charts_advanced_legend_activate_6_listener","AdvancedPieChartComponent_Template_ngx_charts_advanced_legend_deactivate_6_listener","PieSeriesComponent","isIE","test","navigator","userAgent","startRadius","innerArc","innerPos","centroid","outerPos","midAngle","textX","textY","PieLabelComponent_Factory","PieLabelComponent_Template","styleTransform","textTransition","attrTransform","PieArcComponent","calc","calculateArc","updateAnimation","selectAll","attrTween","_current","copyOfD","interpolater","_timeout","preventDefault","stopPropagation","nativeEvent","PieArcComponent_Factory","PieArcComponent_Template","PieArcComponent_Template__svg_path_click_2_listener","PieArcComponent_Template__svg_path_dblclick_2_listener","onDblClick","PieArcComponent_Template__svg_path_mouseenter_2_listener","PieArcComponent_Template__svg_path_mouseleave_2_listener","getPointerEvents","PieChartComponent","labels","doughnut","arcWidth","hasNoOptionalMarginsSet","translation","PieChartComponent_Factory","ɵPieChartComponent_BaseFactory","PieChartComponent_ContentQueries","PieChartComponent_Template","PieChartComponent_Template_ngx_charts_chart_legendLabelActivate_0_listener","PieChartComponent_Template_ngx_charts_chart_legendLabelDeactivate_0_listener","PieChartComponent_Template_ngx_charts_chart_legendLabelClick_0_listener","PieChartComponent_Template__svg_g_dblclick_2_listener","PieChartComponent_Template__svg_g_select_2_listener","PieChartComponent_Template__svg_g_activate_2_listener","PieChartComponent_Template__svg_g_deactivate_2_listener","gridSize","minWidth","rows","cols","ceil","gridLayout","designatedTotal","res","cardWidth","cardHeight","extra","PieGridComponent","getSeries","baselineLabelHeight","yPos","other","PieGridComponent_Factory","ɵPieGridComponent_BaseFactory","PieGridComponent_ContentQueries","PieGridComponent_Template","PieGridSeriesComponent","layout","arcs","getArcs","arc","PieGridSeriesComponent_Factory","PieGridSeriesComponent_Template","pieGenerator","arcData","calculateLabelPositions","factor","pieData","labelPositions","outerArc","myArc","showLabels","PieSeriesComponent_Factory","PieSeriesComponent_Template","PieChartModule","PieChartModule_Factory","PolarChartModule","PolarChartModule_Factory","CardComponent","textFontSize","bandHeight","textPadding","labelFontSize","hasValue","card","textWidth","cardData","paddedValue","setPadding","scaleText","startCount","repeat","decs","textEl","availableWidth","availableHeight","resizeScale","CardComponent_Factory","CardComponent_Query","CardComponent_Template","CardComponent_Template__svg_g_click_0_listener","hexToRgb","invertColor","yiq","depth","shadeRGBColor","p","CardSeriesComponent","sortedLengths","cards","getCards","emptySlots","yPadding","xPadding","valueColor","cardColor","CardSeriesComponent_Factory","slots","CardSeriesComponent_Template","NumberCardComponent","NumberCardComponent_Factory","ɵNumberCardComponent_BaseFactory","NumberCardComponent_Template","NumberCardComponent_Template__svg_g_select_2_listener","clickable","NumberCardModule","NumberCardModule_Factory","TreeMapCellComponent","cellData","TreeMapCellComponent_Factory","TreeMapCellComponent_Template","TreeMapCellComponent_Template__svg_rect_click_2_listener","TreeMapCellSeriesComponent","children","x0","TreeMapCellSeriesComponent_Factory","TreeMapCellSeriesComponent_Template","TreeMapComponent","treemap","rootNode","isRoot","parentId","TreeMapComponent_Factory","ɵTreeMapComponent_BaseFactory","TreeMapComponent_ContentQueries","TreeMapComponent_Template","TreeMapComponent_Template__svg_g_select_2_listener","TreeMapModule","TreeMapModule_Factory","LinearGaugeComponent","valueResizeScale","unitsResizeScale","valueTextTransform","valueTranslate","unitsTextTransform","unitsTranslate","hasPreviousValue","getDisplayValue","el","valueTextEl","unitsTextEl","oldScale","resizeScaleWidth","resizeScaleHeight","LinearGaugeComponent_Factory","ɵLinearGaugeComponent_BaseFactory","LinearGaugeComponent_Query","LinearGaugeComponent_Template","LinearGaugeComponent_Template_ngx_charts_chart_click_0_listener","GaugeComponent","showAxis","showText","availableRadius","radiusPerArc","textRadius","dataMin","dataMax","textValue","availableSpace","GaugeComponent_Factory","ɵGaugeComponent_BaseFactory","GaugeComponent_ContentQueries","GaugeComponent_Query","GaugeComponent_Template","GaugeComponent_Template_ngx_charts_chart_legendLabelClick_0_listener","GaugeComponent_Template_ngx_charts_chart_legendLabelActivate_0_listener","GaugeComponent_Template_ngx_charts_chart_legendLabelDeactivate_0_listener","GaugeArcComponent","GaugeAxisComponent","GaugeArcComponent_Factory","GaugeArcComponent_Template","GaugeArcComponent_Template__svg_g_select_1_listener","GaugeArcComponent_Template__svg_g_activate_1_listener","GaugeArcComponent_Template__svg_g_deactivate_1_listener","rotate","rotationAngle","bigTickSegment","smallTickSegment","big","small","startDistance","textDist","angleDeg","getTextAnchor","skip","getTickPath","smallAngleDeg","smallAngle","lineGenerator","GaugeAxisComponent_Factory","GaugeAxisComponent_Template","GaugeModule","GaugeModule_Factory","ngxChartsPolyfills","SVGElement","HTMLDivElement","NgxChartsModule","NgxChartsModule_Factory","None","OnPush","entryComponents","fieldType","groupByType","formatter","core_1","ɵngcc0","elementRef","chart","currentValue_1","canvas","removeChild","createElement","appendChild","Chart","ElementRef","propDecorators","Input","ɵɵdirectiveInject","ɵɵdefineComponent","ɵɵNgOnChangesFeature","ɵsetClassMetadata","Component","chart_component_1","ɵngcc1","ChartModule","ɵɵdefineNgModule","ɵɵdefineInjector","ChartModule_Factory","ɵɵsetNgModuleScope","NgModule","__export","m","module","moment","createCommonjsModule","fn","getCjsExportFromNamespace","n","colorName","conversions","reverseKeywords","convert","rgb","channels","hsl","hsv","hwb","cmyk","xyz","lab","lch","hex","keyword","ansi16","ansi256","hcg","apple","gray","delta","rdif","gdif","bdif","diffc","comparativeDistance","reversed","currentClosestDistance","currentClosestKeyword","distance","z","t1","t2","t3","smin","lmin","sv","hi","q","vmin","sl","wh","ratio","z2","hr","atan2","sqrt","ansi","mult","rem","integer","string","toUpperCase","substring","colorString","char","chroma","grayscale","hue","pure","mg","conversions_1","conversions_2","conversions_3","conversions_4","conversions_5","conversions_6","conversions_7","conversions_8","conversions_9","conversions_10","conversions_11","conversions_12","conversions_13","conversions_14","conversions_15","buildGraph","graph","models","keys","parent","deriveBFS","fromModel","queue","current","pop","adjacents","adjacent","unshift","link","to","wrapConversion","toModel","cur","conversion","route","wrapRaw","wrappedFn","wrapRounded","routes","routeModels","raw","colorConvert","colorName$1","getRgba","getHsla","getRgb","getHsl","getHwb","getAlpha","hexString","rgbString","rgbaString","percentString","percentaString","hslString","hslaString","hwbString","abbr","rgba","per","hexAlpha","alpha","hsla","vals","hexDouble","reverseNames","str","Color","obj","valid","setValues","red","lightness","whiteness","cyan","isValid","setSpace","rgbArray","hslArray","hsvArray","hwbArray","concat","cmykArray","rgbaArray","hslaArray","setChannel","green","blue","saturation","saturationv","blackness","magenta","yellow","black","rgbNumber","luminosity","lum","chan","contrast","color2","lum1","lum2","level","contrastRatio","dark","light","negate","lighten","darken","saturate","desaturate","whiten","blacken","greyscale","clearer","opaquer","degrees","mix","mixinColor","weight","color1","w1","w2","toJSON","clone","prop","console","error","spaces","maxes","space","charAt","chans","capped","sname","svalues","chartjsColor","helpers","noop","uid","isNullOrUndef","substr","isObject","isFinite","valueOrDefault","defaultValue","valueAtIndexOrDefault","thisArg","each","loopable","arrayEquals","ilen","v0","v1","klen","_merger","tval","sval","merge","_mergerIf","mergeIf","sources","merger","extend","dst","src","inherits","extensions","me","ChartElement","Surrogate","__super__","_deprecated","scope","warn","helpers_core","callCallback","array","fromIndex","getValueOrDefault","getValueAtIndexOrDefault","effects","linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","easeOutSine","easeInOutSine","easeInExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInElastic","asin","easeOutElastic","easeInOutElastic","easeInBack","easeOutBack","easeInOutBack","easeInBounce","easeOutBounce","easeInOutBounce","helpers_easing","easingEffects","RAD_PER_DEG","DOUBLE_PI","HALF_PI","QUARTER_PI","TWO_THIRDS_PI","exports$1","clear","clearRect","moveTo","closePath","rect","drawPoint","style","rad","save","translate","drawImage","restore","beginPath","lineTo","SQRT1_2","_isPointInArea","point","area","epsilon","clipArea","clip","unclipArea","stepped","steppedLine","midpoint","tension","bezierCurveTo","controlPointPreviousX","controlPointNextX","controlPointPreviousY","controlPointNextY","helpers_canvas","drawRoundedRectangle","_set","defaultColor","defaultFontColor","defaultFontFamily","defaultFontSize","defaultFontStyle","defaultLineHeight","showLines","core_defaults","toFontString","font","family","helpers_options","toLineHeight","matches","toPadding","_parseFont","globalDefaults","fontSize","fontFamily","lineHeight","fontStyle","resolve","info","cacheable","exports$2","_factorize","log10","exponent","log","LOG10E","powerOf10","isPowerOf10","helpers_math","getRtlAdapter","rectX","setWidth","textAlign","align","xPlus","leftForLtr","itemWidth","getLtrAdapter","_itemWidth","getAdapter","rtl","overrideTextDirection","original","getPropertyValue","getPropertyPriority","setProperty","prevTextDirection","restoreTextDirection","helpers_rtl","helpers$1","easing","math","interpolate","ease","actual","origin","c0","c1","Element","configuration","initialize","_type","hidden","pivot","_view","_model","_start","tooltipPosition","core_element","exports$3","currentStep","numSteps","render","onAnimationProgress","onAnimationComplete","core_animation","onProgress","onComplete","core_animations","request","addAnimation","lazy","animating","cancelAnimation","requestAnimFrame","startDigest","advance","nextStep","arrayEvents","listenArrayEvents","listener","_chartjs","listeners","method","base","object","unlistenArrayEvents","stub","DatasetController","datasetIndex","datasetElementType","dataElementType","_datasetElementOptions","_dataElementOptions","linkScales","addElements","getMeta","updateIndex","meta","scales","dataset","getDataset","scalesOpts","xAxisID","xAxes","yAxisID","yAxes","datasets","getDatasetMeta","getScaleForId","scaleID","_getValueScaleId","_getIndexScaleId","_getValueScale","_getIndexScale","reset","_update","_data","createMetaDataset","_chart","_datasetIndex","createMetaData","_index","metaData","addElementAndReset","updateElement","buildOrUpdateElements","isExtensible","resyncElements","_configure","_config","_cachedDataOpts","easingValue","elements","draw","getStyle","_resolveDatasetElementOptions","_resolveDataElementOptions","backgroundColor","borderColor","datasetOpts","custom","elementOptions","readKey","cached","dataIndex","freeze","removeHoverStyle","$previousStyle","setHoverStyle","getHoverColor","borderWidth","hoverBackgroundColor","hoverBorderColor","hoverBorderWidth","_removeDatasetHoverStyle","_setDatasetHoverStyle","prev","hoverOptions","numMeta","numData","insertElements","onDataPush","onDataPop","onDataShift","shift","onDataSplice","onDataUnshift","core_datasetController","TAU","borderAlign","clipArc","pixelMargin","angleMargin","drawFullCircleBorders","vm","inner","fullCircles","drawBorder","lineWidth","lineJoin","element_arc","inLabelRange","mouseX","hoverRadius","inRange","chartX","chartY","pointRelativePosition","getAngleFromPoint","betweenAngles","withinRadius","getCenterPoint","halfAngle","halfRadius","getArea","centreAngle","rangeFromCentre","circumference","fillStyle","strokeStyle","valueOrDefault$1","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","capBezierPoints","element_line","spanGaps","_children","globalOptionLineElements","lastDrawnIndex","_loop","currentVM","previousItem","lineCap","setLineDash","lineDashOffset","valueOrDefault$2","defaultColor$1","pointStyle","hitRadius","xRange","yRange","mouseY","element_point","inXRange","inYRange","chartArea","defaultColor$2","rectangle","borderSkipped","isVertical","getBarBounds","half","swap","orig","v2","parseBorderSkipped","edge","parseBorderWidth","maxW","maxH","boundingRects","bounds","border","outer","skipX","skipY","element_rectangle","fillRect","Arc","Line","Point","Rectangle","deprecated","valueOrDefault$3","mode","gridLines","offsetGridLines","categoryPercentage","barPercentage","computeMinSampleSize","pixels","_length","curr","getPixelForTick","computeFitCategoryTraits","ruler","thickness","barThickness","stackCount","chunk","computeFlexCategoryTraits","next","end","controller_bar","scaleOpts","stack","minBarLength","maxBarThickness","_ruler","getRuler","_xScale","_yScale","datasetLabel","_updateElementGeometry","vscale","getBasePixel","isHorizontal","vpixels","calculateBarValuePixels","ipixels","calculateBarIndexPixels","head","_getStacks","last","metasets","_getMatchingVisibleMetas","stacks","getStackCount","getStackIndex","getPixelForValue","_startPixel","_endPixel","_parseValue","imeta","ivalue","stackLength","stackIndex","indexOpts","valueOpts","valueOrDefault$4","resolve$1","tooltips","callbacks","dataPoint","xLabel","yLabel","controller_bubble","dsIndex","getPixelForDecimal","NaN","_options","valueOrDefault$5","PI$1","DOUBLE_PI$1","HALF_PI$1","animateRotate","animateScale","legendCallback","list","listItem","listItemSpan","setAttribute","createTextNode","outerHTML","generateLabels","controller","legendItem","cutoutPercentage","dataLabel","controller_doughnut","getRingIndex","ringIndex","isDatasetVisible","ratioX","ratioY","offsetX","cutout","chartWeight","_getRingWeight","maxWidth","maxHeight","startX","startY","endX","endY","contains0","contains90","contains180","contains270","minX","minY","maxX","maxY","getMaxBorderWidth","radiusLength","_getVisibleDatasetWeightTotal","calculateTotal","_getRingWeightOffset","animationOpts","centerX","centerY","calculateCircumference","hoverWidth","ringWeightOffset","dataSetIndex","axis","horizontalBar","controller_horizontalBar","valueOrDefault$6","resolve$2","isPointInArea","scaleClip","halfBorderWidth","tickOpts","defaultClip","toClip","controller_line","config","showLine","_showLine","lineTension","_scale","updateBezierControlPoints","lineModel","calculatePointY","lineOptions","sumPos","sumNeg","ds","dsMeta","stackedRightValue","rightValue","getRightValue","_getSortedVisibleDatasetMetas","controlPoints","pt","capControlPoint","cubicInterpolationMode","splineCurveMonotone","splineCurve","nextItem","resolve$3","angleLines","display","circular","pointLabels","beginAtZero","controller_polarArea","starts","_starts","angles","_angles","_updateRadius","countVisibleElements","_computeAngle","minSize","getVisibleDatasetCount","xCenter","yCenter","datasetStartAngle","getDistanceFromCenterForValue","resetRadius","controller_pie","valueOrDefault$7","controller_radar","pointPosition","getPointPositionForValue","scatter","controller_scatter","controllers","bubble","polarArea","pie","radar","getRelativePosition","parseVisibleItems","handler","metadata","jlen","getIntersectItems","getNearestItems","intersect","distanceMetric","POSITIVE_INFINITY","nearestItems","getDistanceMetricForAxis","useX","useY","pt1","pt2","deltaX","deltaY","indexMode","core_interaction","modes","single","nearest","intersectsItem","filterByPosition","where","sortByWeight","wrapBoxes","boxes","layoutBoxes","box","setLayoutDims","layouts","params","fullWidth","vBoxMaxWidth","hBoxMaxHeight","buildLayoutBoxes","leftAndTop","rightAndBottom","vertical","getCombinedMax","maxPadding","newWidth","newHeight","getPadding","boxPadding","outerWidth","outerHeight","handleMaxPadding","updatePos","change","getMargins","marginForPositions","positions","fitBoxes","refitBoxes","refit","placeBoxes","userPadding","core_layouts","addBox","_layers","removeBox","layoutItem","configure","props","layoutOptions","verticalBoxes","horizontalBoxes","platform_basic","acquireContext","getContext","platform_dom","platform_dom$1","__proto__","stylesheet","EXPANDO_KEY","CSS_PREFIX","CSS_SIZE_MONITOR","CSS_RENDER_MONITOR","CSS_RENDER_ANIMATION","ANIMATION_START_EVENTS","EVENT_TYPES","touchstart","touchmove","touchend","pointerenter","pointerdown","pointermove","pointerup","pointerleave","pointerout","readUsedSize","initCanvas","renderHeight","getAttribute","renderWidth","initial","displayWidth","aspectRatio","displayHeight","supportsEventListenerOptions","supports","addEventListener","eventListenerOptions","passive","addListener","removeListener","removeEventListener","fromNativeEvent","throttled","ticking","createDiv","cls","createResizer","maxSize","resizer","expand","shrink","_reset","scrollLeft","scrollTop","onScroll","watchForRender","expando","proxy","renderProxy","animationName","reflow","offsetParent","classList","unwatchForRender","addResizeListener","maintainAspectRatio","clientWidth","insertBefore","firstChild","removeResizeListener","injectCSS","css","containsStyles","platform_dom$2","disableCSSInjection","_enabled","_ensureLoaded","getRootNode","targetNode","getElementById","releaseContext","removeAttribute","proxies","addEvent","removeEvent","implementation","platform","plugins","core_plugins","_plugins","_cacheId","plugin","unregister","getAll","notify","hook","descriptors","$plugins","_invalidate","core_scaleService","constructors","registerScaleType","scaleConstructor","scaleDefaults","getScaleConstructor","getScaleDefaults","updateScaleDefaults","additions","addScalesToLayout","valueOrDefault$8","getRtlHelper","enabled","titleFontStyle","titleSpacing","titleMarginBottom","titleFontColor","titleAlign","bodySpacing","bodyFontColor","bodyAlign","footerFontStyle","footerSpacing","footerMarginTop","footerFontColor","footerAlign","caretPadding","caretSize","multiKeyBackground","displayColors","beforeTitle","tooltipItems","labelCount","afterTitle","beforeBody","beforeLabel","labelColor","activeElement","labelTextColor","afterLabel","afterBody","beforeFooter","footer","afterFooter","positioners","average","eventPosition","nearestElement","distanceBetweenPoints","tp","pushOrConcat","toPush","splitNewlines","String","createTooltipItem","indexScale","getLabelForIndex","getBaseModel","tooltipOpts","xAlign","yAlign","textDirection","_bodyFontFamily","bodyFontFamily","_bodyFontStyle","bodyFontStyle","_bodyAlign","bodyFontSize","_titleFontFamily","titleFontFamily","_titleFontStyle","titleFontSize","_titleAlign","_footerFontFamily","footerFontFamily","_footerFontStyle","footerFontSize","_footerAlign","legendColorBackground","getTooltipSize","body","combinedBodyLength","bodyItem","before","lines","after","titleLineCount","footerLineCount","widthPadding","maxLineWidth","measureText","fontString","determineAlignment","lf","olf","orf","yf","midX","midY","getBackgroundPoint","paddingAndSize","radiusAndPadding","getAlignedX","getBeforeAfterBodyLines","exports$4","_lastActive","getTitle","getBeforeBody","getBody","bodyItems","getAfterBody","getFooter","existingModel","_active","backgroundPoint","tooltipSize","caretX","caretY","labelColors","labelTextColors","_eventPosition","itemSort","dataPoints","drawCaret","tooltipPoint","caretPosition","getCaretPosition","x3","y3","ptX","ptY","tmp","drawTitle","rtlHelper","textBaseline","fillText","drawBody","drawColorBoxes","xLinePadding","colorX","fillLineOfText","bodyAlignForCalculation","rtlColorX","strokeRect","drawFooter","drawBackground","quadraticCurveTo","hasTooltipContent","globalAlpha","getElementsAtEventForMode","positioners_1","core_tooltip","valueOrDefault$9","events","onHover","animationDuration","responsive","responsiveAnimationDuration","mergeScaleConfig","slen","mergeConfig","initConfig","updateConfig","newOptions","ensureScalesHaveIDs","buildOrUpdateScales","nextAvailableScaleId","axesOpts","prefix","hasId","positionIsHorizontal","compare2Level","l1","l2","construct","_bufferedRender","instances","retinaScale","devicePixelRatio","bindEvents","resize","initToolTip","stop","silent","getMaximumWidth","getMaximumHeight","newSize","scalesOptions","scaleOptions","xAxisOptions","yAxisOptions","updated","dtype","dposition","isDefault","scaleClass","mergeTicksOptions","hasUpdated","buildOrUpdateControllers","newControllers","destroyDatasetMeta","order","ControllerClass","resetElements","updateLayout","updateDatasets","lastActive","_bufferedRequest","_idx","updateDataset","animationOptions","animationObject","easingFunction","stepDecimal","drawDatasets","_drawTooltip","_getSortedDatasetMetas","filterVisible","drawDataset","getElementAtEvent","getElementsAtEvent","getElementsAtXAxis","getDatasetAtEvent","_meta","generateLegend","toBase64Image","toDataURL","_chartInstance","_listeners","eventHandler","updateHoverStyle","bufferedRequest","core_controller","Controller","configMerge","scaleMerge","core_helpers","collection","filterCallback","filtered","findNextWhere","arrayToSearch","startIndex","currentItem","findPreviousWhere","almostEquals","almostWhole","rounded","NEGATIVE_INFINITY","toRadians","toDegrees","radians","_decimalPlaces","centrePoint","anglePoint","distanceFromXCenter","distanceFromYCenter","radialDistanceFromCenter","aliasPixel","pixelWidth","_alignPixel","pixel","currentDevicePixelRatio","firstPoint","middlePoint","afterPoint","d01","d12","s01","s12","fa","fb","EPSILON","pointsWithTangents","deltaK","mK","pointsLen","pointBefore","pointCurrent","pointAfter","slopeDeltaX","alphaK","betaK","tauK","squaredMagnitude","loop","niceNum","fraction","niceFraction","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","evt","originalEvent","srcElement","boundingRect","touches","clientX","clientY","paddingLeft","paddingTop","paddingRight","paddingBottom","parseMaxStyle","styleValue","parentProperty","valueInPixels","isConstrainedValue","getConstraintDimension","domNode","maxStyle","percentageProperty","defaultView","_getParentNode","constrainedNode","getComputedStyle","constrainedContainer","hasCNode","hasCContainer","infinity","getConstraintWidth","getConstraintHeight","_calculatePadding","parentDimension","cw","clientHeight","ch","currentStyle","forceRatio","pixelRatio","pixelSize","longestText","arrayOfThings","gc","garbageCollect","longest","thing","nestedThing","gcLen","numberOfLabelLines","numberOfLines","CanvasGradient","colorValue","CanvasPattern","abstract","DateAdapter","formats","format","startOf","endOf","_create","override","members","_date","core_adapters","core_ticks","formatters","tickValue","logDelta","tickString","maxTick","logTick","numExponential","toExponential","numDecimal","logarithmic","remain","valueOrDefault$a","drawOnChartArea","drawTicks","tickMarkLength","zeroLineWidth","zeroLineColor","zeroLineBorderDash","zeroLineBorderDashOffset","scaleLabel","labelString","minRotation","maxRotation","mirror","autoSkip","autoSkipPadding","minor","major","sample","arr","numItems","increment","getPixelForGridLine","validIndex","lineValue","caches","computeLabelSizes","tickFonts","widths","heights","offsets","tickFont","nestedLabel","widest","highest","valueAt","getTickMarkLength","getScaleLabelHeight","parseFontOptions","nestedOpts","fontColor","parseTickFontOptions","nonSkipped","ticksToFilter","getEvenSpacing","calculateSpacing","majorIndices","axisLength","ticksLimit","evenMajorSpacing","factors","getMajorIndices","skipMajors","majorStart","majorEnd","Scale","zeroLineIndex","_ticks","_getLabels","xLabels","yLabels","beforeUpdate","sampleSize","samplingEnabled","_labelSizes","_maxLabelLines","longestLabelWidth","longestTextCache","_gridLineItems","_labelItems","beforeSetDimensions","setDimensions","afterSetDimensions","beforeDataLimits","determineDataLimits","afterDataLimits","beforeBuildTicks","buildTicks","afterBuildTicks","_convertTicksToLabels","beforeCalculateTickRotation","calculateTickRotation","afterCalculateTickRotation","beforeFit","fit","afterFit","_ticksToDraw","_autoSkip","afterUpdate","reversePixels","startPixel","endPixel","_reversePixels","beforeTickToLabelConversion","convertTicksToLabels","userCallback","afterTickToLabelConversion","numTicks","labelRotation","labelSizes","maxLabelWidth","maxLabelHeight","maxLabelDiagonal","_isVisible","_getLabelSizes","scaleLabelOpts","gridLineOpts","isBottom","firstLabelSize","lastLabelSize","widestLabelSize","highestLabelSize","lineSpace","isRotated","angleRadians","cosRotation","sinRotation","labelHeight","offsetLeft","offsetRight","labelWidth","handleMargins","isFullWidth","rawValue","_getScaleLabel","getValueForPixel","decimal","getDecimalForPixel","getBaseValue","maxTicksLimit","_tickSize","numMajorIndices","avgMajorSpacing","optionTicks","rot","_computeGridLineItems","ticksLength","axisWidth","axisHalfWidth","alignPixel","alignBorderValue","borderValue","alignedLineValue","tx1","ty1","tx2","ty2","lineColor","_computeLabelItems","isMirrored","fonts","lineCount","textOffset","_drawGrid","firstLineWidth","lastLineWidth","_drawLabels","_drawTitle","scaleLabelFontColor","scaleLabelFont","scaleLabelPadding","halfLineHeight","scaleLabelX","scaleLabelY","isLeft","tz","gz","_draw","core_scale","isNullOrUndef$1","defaultConfig","scale_category","ticksOpts","_startValue","_valueRange","valueCategory","_defaults","isNullOrUndef$2","generateTicks","generationOptions","dataRange","MIN_SPACING","stepSize","unit","maxNumSpaces","precision","rmin","rmax","niceMin","niceMax","numSpaces","scale_linearbase","handleTickRangeOptions","minSign","maxSign","setMin","suggestedMin","setMax","suggestedMax","getTickLimit","_computeTickLimit","handleDirectionalChanges","numericGeneratorOptions","fixedStepSize","ticksAsNumbers","_endValue","defaultConfig$1","DEFAULT_MIN","DEFAULT_MAX","getOrCreateStack","neg","stackData","relativePoints","updateMinMax","scale_linear","hasStacks","stackValues","_defaults$1","valueOrDefault$b","generateTicks$1","tickVal","endExp","endSignificand","exp","significand","minNotZero","lastTick","defaultConfig$2","nonNegativeOrDefault","scale_logarithmic","IDMatches","valuesPerStack","valuesForType","_getFirstTickValue","_valueOffset","_defaults$2","valueOrDefault$c","valueAtIndexOrDefault$1","resolve$4","defaultConfig$3","showLabelBackdrop","backdropColor","backdropPaddingY","backdropPaddingX","getTickBackdropHeight","measureLabelSize","determineLimits","fitWithPointLabels","plFont","furthestLimits","furthestAngles","textSize","_pointLabelSizes","valueCount","getPointPosition","drawingArea","getIndexAngle","hLimits","vLimits","setReductions","getTextAlignForAngle","adjustPointPositionForLabelHeight","drawPointLabels","pointLabelOpts","tickBackdropHeight","outerDistance","pointLabelPosition","pointLabelFontColor","drawRadiusLine","numberOrZero","param","scale_radialLinear","setCenterPoint","largestPossibleRadius","radiusReductionLeft","radiusReductionRight","radiusReductionTop","radiusReductionBottom","leftMovement","rightMovement","topMovement","bottomMovement","maxRight","maxLeft","maxTop","maxBottom","angleMultiplier","scalingFactor","distanceFromCenter","thisAngle","getBasePosition","angleLineOpts","tickFontColor","_defaults$3","deprecated$1","resolve$5","valueOrDefault$d","MIN_INTEGER","MIN_SAFE_INTEGER","MAX_INTEGER","MAX_SAFE_INTEGER","INTERVALS","millisecond","common","steps","second","minute","hour","day","week","month","quarter","year","UNITS","sorter","arrayUnique","hash","out","getMin","getMax","buildLookupTable","timestamps","distribution","table","lookup","lo","mid","i0","i1","interpolate$1","skey","tkey","span","toTimestamp","input","adapter","_adapter","parser","determineUnitForAutoTicks","minUnit","capacity","interval","determineUnitForFormatting","determineMajorUnit","generate","timeOpts","unitStepSize","weekday","isoWeekday","computeOffsets","setMajorTicks","majorUnit","ticksFromTimestamps","defaultConfig$4","adapters","displayFormat","displayFormats","scale_time","labelsAdded","dataLabels","_table","_timestamps","getLabelCapacity","_unit","_majorUnit","_offsets","tooltipFormat","datetime","tickFormatFunction","minorFormat","majorFormat","nestedTickOpts","getPixelForOffset","_getLabelSize","tickLabelWidth","tickFontSize","getLabelWidth","exampleTime","exampleLabel","_defaults$4","category","radialLinear","FORMATS","_id","amount","filler","propagate","mappers","boundary","decodeFill","computeLinearBoundary","scaleBottom","scaleTop","scaleZero","computeCircularBoundary","computeBoundary","resolveTarget","visited","createMapper","isDrawable","drawArea","curve0","curve1","len0","len1","doFill","mapper","p0","p1","loopOffset","plugin_filler","afterDatasetsUpdate","$filler","beforeDatasetsDraw","getRtlHelper$1","noop$1","valueOrDefault$e","ci","onLeave","boxWidth","usePointStyle","lineDash","getBoxWidth","labelOpts","Legend","legendHitBoxes","_hoveredItem","doughnutMode","beforeBuildLabels","buildLabels","afterBuildLabels","labelFont","hitboxes","lineWidths","totalHeight","vPadding","columnWidths","columnHeights","totalWidth","currentColWidth","currentColHeight","lineDefault","legendHeight","cursor","drawLegendBox","SQRT2","halfFontSize","xLeft","yMiddle","alignmentOffset","dimension","blockSize","itemHeight","realX","_getLegendItemAt","hitBox","lh","hoveredItem","createNewLegendAndAttach","legendOpts","plugin_legend","_element","beforeInit","afterEvent","noop$2","Title","fontOpts","titleX","titleY","createNewTitleBlockAndAttach","titleOpts","titleBlock","plugin_title","_adapters","Animation","animationService","Interaction","scaleService","Ticks","Tooltip","pluginService","PluginBase","canvasHelpers","layoutService","LinearScaleBase","klass","cfg","threshold","histogram","xz","bins","bin","_","thresholds","ascendingBisect","bisectRight","bisectLeft","compare","ascendingComparator","valueof","empty","arrayify","reducer","cross","lengths","product","cumsum","Float64Array","deviation","greatest","defined","maxValue","greatestIndex","nest","groups","rollup","rollups","regroup","keyof","least","minValue","leastIndex","mean","flatten","arrays","numbers","pairof","pair","quantile","value0","subarray","value1","quantileSorted","quickselect","sd","newLeft","newRight","scan","shuffle","LN2","e10","e5","e2","tickIncrement","power","LN10","tickStep","step0","step1","matrix","transpose","variance","MODE_DRAG","MODE_SPACE","MODE_HANDLE","MODE_CENTER","number1","number2","toucher","identifier","X","handles","output","xy","Y","XY","cursors","overlay","nw","ne","se","sw","flipX","flipY","signsX","signsY","defaultFilter","ctrlKey","button","defaultExtent","svg","ownerSVGElement","hasAttribute","viewBox","baseVal","defaultTouchable","maxTouchPoints","local","__brush","brushSelection","dim","brushX","brushY","touchable","handleSize","touchending","enter","append","handle","exit","redraw","started","touchmoved","touchended","move","emitter","beforestart","tween","that","selection0","selection1","clean","Emitter","starting","__data__","metaKey","altKey","signX","signY","W","w0","n0","n1","E","e0","e1","S","s0","s1","dx","moving","shifting","shiftKey","lockX","lockY","pointer","changedTouches","point0","moved","ended","keydowned","keyupped","point1","keyCode","keyModifiers","nopropagation","stopImmediatePropagation","darker","brighter","reI","reN","reP","reHex","reRgbInteger","RegExp","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","blanchedalmond","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellowgreen","displayable","color_formatHex","formatHex","formatHsl","color_formatHsl","formatRgb","color_formatRgb","hslConvert","exec","rgbn","Rgb","rgbConvert","rgb_formatHex","rgb_formatRgb","Hsl","m2","m1","hsl2rgb","A","B","C","D","ED","EB","BC_DA","cubehelixConvert","Cubehelix","cubehelix","cosh","sinh","definition","K","Xn","Yn","Zn","t0","labConvert","Lab","Hcl","hcl2lab","rgb2lrgb","xyz2lab","lab2xyz","lrgb2rgb","hclConvert","hcl","deg2rad","rad2deg","dispatch","Dispatch","parseTypenames","typenames","typename","T","defaultContainer","defaultSubject","subject","gestures","mousedownx","mousedowny","mousemoving","clickDistance2","drag","mousedowned","touchstarted","gesture","mousemoved","mouseupped","mouse","sublisteners","clickDistance","DragEvent","documentElement","__noselect","MozUserSelect","yesdrag","noclick","overshoot","backIn","backOut","backInOut","b1","b2","b3","b4","b5","b6","b7","b8","b9","b0","bounceIn","bounceOut","bounceInOut","circleIn","circleOut","circleInOut","cubicIn","cubicOut","cubicInOut","tau","amplitude","period","elasticIn","elasticOut","elasticInOut","expIn","expOut","expInOut","polyIn","polyOut","polyInOut","quadIn","quadOut","quadInOut","pi","halfPi","sinIn","sinOut","sinInOut","locale","formatPrefix","defaultLocale","thousands","grouping","currency","minus","coefficient","numerals","prefixExponent","re","formatSpecifier","specifier","FormatSpecifier","symbol","zero","comma","toPrecision","prefixes","currencyPrefix","currencySuffix","nan","newFormat","suffix","formatType","maybeSuffix","valuePrefix","valueSuffix","valueNegative","charCodeAt","optional","required","defaultSeparation","meanX","meanXReduce","maxYReduce","leafLeft","leafRight","separation","nodeSize","cluster","previousNode","eachAfter","constantZero","nodes","hierarchy","Node","valued","child","childs","defaultChildren","eachBefore","computeHeight","node_copy","copyData","ancestors","descendants","leaves","links","ancestor","leastCommonAncestor","aNodes","bNodes","enclosesWeak","encloseBasis","extendBasis","enclosesWeakAll","enclosesNot","encloseBasis2","encloseBasis3","dr","encloseBasis1","r1","r2","x21","y21","r21","r3","a3","c2","c3","d2","d3","ab","xa","xb","ya","yb","defaultRadius","pack","radiusLeaf","packChildren","translateChild","place","intersects","score","packEnclose","aa","ca","sj","sk","partition","positionNode","keyPrefix","preroot","ambiguous","defaultId","defaultParentId","stratify","nodeId","nodeKey","nodeByKey","nextLeft","nextRight","moveSubtree","wm","wp","executeShifts","nextAncestor","vim","TreeNode","treeRoot","tree","firstWalk","secondWalk","sizeNode","tx","kx","ky","siblings","apportion","vip","vop","vom","sip","sop","sim","som","sums","valueOffset","valueTarget","valueLeft","valueRight","xk","yk","tile","paddingStack","resquarify","_squarify","dice","phi","squarifyRatio","nodeValue","sumValue","newRatio","minRatio","beta","squarify","genericArray","nb","na","basis","v3","exponential","gamma","nogamma","cubehelixGamma","cubehelixLong","setTime","hclLong","hslLong","isNumberArray","ArrayBuffer","isView","DataView","piecewise","I","samples","interpolator","rgbGamma","rgbSpline","spline","rgbBasis","rgbBasisClosed","reA","reB","one","bi","lastIndex","am","bm","bs","identity","translateX","translateY","skewX","scaleX","scaleY","atan","interpolateTransform","pxComma","pxParen","degParen","interpolateTransformCss","interpolateTransformSvg","cssNode","cssRoot","cssView","svgNode","parseCss","parseSvg","createElementNS","consolidate","rho","rho2","rho4","epsilon2","tanh","ux0","uy0","ux1","uy1","r0","coshr0","u","tauEpsilon","Path","_x0","_y0","_x1","_y1","arcTo","x01","y01","l01_2","x20","y20","l21_2","l20_2","l21","l01","acos","t01","t21","ccw","da","band","unknown","ordinalRange","rescale","pointish","normalize","clamper","bimap","polymap","clamp","transformer","untransform","continuous","k10","k21","diverging","divergingLog","divergingSymlog","constant","divergingPow","divergingSqrt","initRange","initInterpolator","linearish","transformLog","transformExp","transformLogn","transformExpn","pow10","powp","logp","log2","reflect","loggish","logs","pows","implicit","Symbol","ordinal","transformPow","transformSqrt","transformSquare","powish","invertExtent","quantiles","quantize","square","unsquare","radial","squared","sequential","sequentialLog","sequentialSymlog","sequentialPow","sequentialSqrt","sequentialQuantile","transformSymlog","log1p","transformSymexp","expm1","symlogish","symlog","durationSecond","durationMinute","durationHour","durationDay","durationWeek","durationMonth","durationYear","number","calendar","formatMillisecond","formatSecond","formatMinute","formatHour","formatDay","formatWeek","formatMonth","formatYear","tickIntervals","tickInterval","UTC","creatorInherit","ownerDocument","uri","namespaceURI","creatorFixed","fullname","nextId","Local","xhtml","xlink","xml","xmlns","createSVGPoint","matrixTransform","getScreenCTM","inverse","clientLeft","clientTop","querySelector","querySelectorAll","attrRemove","attrRemoveNS","removeAttributeNS","attrConstant","attrConstantNS","setAttributeNS","attrFunction","attrFunctionNS","getAttributeNS","classArray","ClassList","_node","_names","classedAdd","names","classedRemove","classedTrue","classedFalse","classedFunction","selection_cloneShallow","cloneNode","nextSibling","selection_cloneDeep","deep","bindIndex","groupLength","dataLength","bindKey","nodeByKeyValue","keyValues","keyValue","parents","_parents","_groups","enterGroup","updateGroup","exitGroup","_next","_enter","_exit","CustomEvent","detail","dispatchConstant","dispatchFunction","EnterNode","datum","_parent","subgroups","subgroup","htmlRemove","innerHTML","htmlConstant","htmlFunction","Selection","classed","html","raise","lower","insert","constantNull","onenter","onupdate","onexit","previousSibling","groups0","groups1","m0","merges","group0","group1","filterEvents","mouseenter","mouseleave","filterContextListener","contextListener","related","relatedTarget","compareDocumentPosition","event1","event0","__on","capture","wrap","customEvent","sourceEvent","propertyRemove","propertyConstant","propertyFunction","subnode","ascending","compareNode","sortgroups","sortgroup","styleRemove","removeProperty","styleConstant","priority","styleFunction","textRemove","textContent","textConstant","textFunction","none","touch","arcInnerRadius","arcOuterRadius","arcStartAngle","arcEndAngle","arcPadAngle","padAngle","x10","y10","x32","y32","cornerTangents","rc","ox","oy","x11","y11","x00","y00","cx0","cy0","cx1","cy1","dx0","dy0","dx1","dy1","padRadius","buffer","a01","a11","a00","a10","da0","da1","ap","rp","rc0","rc1","oc","ax","ay","bx","by","kc","lc","defined0","x0z","y0z","areaStart","lineStart","lineEnd","areaEnd","arealine","lineX0","lineY0","lineY1","lineX1","lineStartAngle","lineEndAngle","lineInnerRadius","lineOuterRadius","_curve","_context","Basis","_line","_point","BasisClosed","_x2","_x3","_x4","_y2","_y3","_y4","BasisOpen","Bundle","_basis","_beta","_x","_y","bundle","_k","Cardinal","cardinal","CardinalClosed","_x5","_y5","CardinalOpen","_l01_a","_l01_2a","_l12_a","_l12_2a","_l23_a","_l23_2a","CatmullRom","_alpha","x23","y23","catmullRom","CatmullRomClosed","CatmullRomOpen","Linear","LinearClosed","slope3","h0","h1","slope2","MonotoneX","_t0","MonotoneY","ReflectContext","monotoneX","monotoneY","Natural","px","py","curveRadialLinear","curveRadial","Radial","Step","stepBefore","stepAfter","lineRadial","linkSource","linkTarget","argv","curveHorizontal","curveVertical","p2","p3","linkHorizontal","linkVertical","linkRadial","yp","yn","s2","si","sij0","sij1","s3","skj0","skj1","peaks","peak","vi","vj","tops","bottoms","sortValues","pa","stackValue","kz","sz","oz","ki","sij","symbols","tan30","tan30_2","ka","kr","sqrt3","timeFormat","timeParse","utcFormat","utcParse","dateTime","periods","days","shortDays","months","shortMonths","isoSpecifier","formatIsoNative","toISOString","formatIso","parseIsoNative","parseIso","localDate","H","M","setFullYear","utcDate","setUTCFullYear","newDate","formatLocale","locale_dateTime","locale_date","locale_time","locale_periods","locale_weekdays","locale_shortWeekdays","locale_months","locale_shortMonths","periodRe","formatRe","periodLookup","formatLookup","weekdayRe","weekdayLookup","shortWeekdayRe","shortWeekdayLookup","monthRe","monthLookup","shortMonthRe","shortMonthLookup","formatShortWeekday","formatWeekday","formatShortMonth","formatDayOfMonth","formatMicroseconds","formatHour24","formatHour12","formatDayOfYear","formatMilliseconds","formatMonthNumber","formatMinutes","formatPeriod","formatQuarter","formatUnixTimestamp","formatUnixTimestampSeconds","formatSeconds","formatWeekdayNumberMonday","formatWeekNumberSunday","formatWeekNumberISO","formatWeekdayNumberSunday","formatWeekNumberMonday","formatFullYear","formatZone","formatLiteralPercent","utcFormats","formatUTCShortWeekday","formatUTCWeekday","formatUTCShortMonth","formatUTCMonth","formatUTCDayOfMonth","formatUTCMicroseconds","formatUTCHour24","formatUTCHour12","formatUTCDayOfYear","formatUTCMilliseconds","formatUTCMonthNumber","formatUTCMinutes","formatUTCPeriod","formatUTCQuarter","formatUTCSeconds","formatUTCWeekdayNumberMonday","formatUTCWeekNumberSunday","formatUTCWeekNumberISO","formatUTCWeekdayNumberSunday","formatUTCWeekNumberMonday","formatUTCYear","formatUTCFullYear","formatUTCZone","parses","parseShortWeekday","parseWeekday","parseShortMonth","parseMonth","parseLocaleDateTime","parseDayOfMonth","parseMicroseconds","parseHour24","parseDayOfYear","parseMilliseconds","parseMonthNumber","parseMinutes","parsePeriod","parseQuarter","parseUnixTimestamp","parseUnixTimestampSeconds","parseSeconds","parseWeekdayNumberMonday","parseWeekNumberSunday","parseWeekNumberISO","parseWeekdayNumberSunday","parseWeekNumberMonday","parseLocaleDate","parseLocaleTime","parseYear","parseFullYear","parseZone","parseLiteralPercent","pad","pads","newParse","Z","parseSpecifier","Q","V","getUTCDay","getUTCFullYear","getUTCMonth","getUTCDate","getDay","getFullYear","getMonth","getDate","U","getHours","getUTCHours","numberRe","percentRe","requoteRe","requote","getMilliseconds","getMinutes","getSeconds","getTimezoneOffset","getUTCMilliseconds","getUTCMinutes","getUTCSeconds","dow","setHours","setDate","hours","newInterval","floori","offseti","field","milliseconds","minutes","setMonth","seconds","utcDay","setUTCHours","setUTCDate","utcDays","utcHour","setUTCMinutes","utcHours","utcMinute","setUTCSeconds","utcMinutes","utcMonth","setUTCMonth","utcMonths","utcWeekday","utcSunday","utcMonday","utcTuesday","utcWednesday","utcThursday","utcFriday","utcSaturday","utcSundays","utcMondays","utcTuesdays","utcWednesdays","utcThursdays","utcFridays","utcSaturdays","utcYear","utcYears","sunday","monday","tuesday","wednesday","thursday","friday","saturday","sundays","mondays","tuesdays","wednesdays","thursdays","fridays","saturdays","years","delay","restart","elapsed","frame","pokeDelay","taskHead","taskTail","clockLast","clockNow","clockSkew","clock","performance","setFrame","clearNow","Timer","_call","_time","timer","TypeError","sleep","timerFlush","wake","nap","poke","clearInterval","setInterval","schedules","__transition","schedule","interrupt","defaultTiming","inherit","timing","_name","string00","string1","interpolate0","string0","string10","attrInterpolate","attrInterpolateNS","attrTweenNS","delayFunction","delayConstant","durationFunction","durationConstant","easeConstant","on0","on1","Promise","reject","cancel","Transition","selection_prototype","styleTween","textTween","onFunction","sit","removeFunction","emptyOn","emptyTween","CREATED","SCHEDULED","STARTING","STARTED","RUNNING","ENDING","ENDED","self","styleNull","styleMaybeRemove","listener0","styleInterpolate","textInterpolate","id0","id1","tweenRemove","tween0","tween1","tweenFunction","tweenValue","_echarts","_export","zrUtil","coordinateSystemCreators","CoordinateSystemManager","_coordinateSystems","ecModel","api","coordinateSystems","creater","coordSys","getCoordinateSystems","coordinateSystemCreator","_default","echartsAPIList","ExtensionAPI","chartInstance","echarts","seriesType","actionInfos","actionInfo","registerAction","payload","selected","eachComponent","mainType","subType","query","seriesModel","getData","getName","isSelected","_roamHelper","updateCenterAndZoom","componentModel","geo","coordinateSystem","seriesGroup","zoomLimit","previousZoom","dataToPoint","pointToData","zoomMin","zoomMax","fixX","originX","fixY","originY","updateTransform","_barGrid","registerLayout","curry","registerVisual","eachSeriesByType","setVisual","BaseBarSeries","dependencies","brushSelector","__DEV__","graphic","_helper","setLabel","Model","barItemStyle","BAR_BORDER_WIDTH_QUERY","extendChartView","coordinateSystemType","_render","dispose","oldData","coord","baseAxis","getBaseAxis","isHorizontalOrRadial","animationModel","isAnimationEnabled","itemModel","getItemModel","getLayout","elementCreator","setItemGraphicEl","updateStyle","newIndex","oldIndex","getItemGraphicEl","updateProps","shape","removeRect","removeSector","execute","eachItemGraphicEl","removeAll","cartesian2d","isUpdate","Rect","rectShape","animateProperty","animateTarget","polar","isRadial","sector","Sector","sectorShape","getItemLayout","fixedLineWidth","getLineWidth","isPolar","getItemVisual","itemStyleModel","getModel","hoverStyle","getBarItemStyle","setShape","useStyle","cursorStyle","getShallow","labelPositionOutside","rawLayout","SeriesModel","createListFromArray","getInitialData","option","getSource","getMarkerPosition","clampData","offsetIndex","defaultOption","zlevel","legendHoverLink","barMinHeight","barMinAngle","itemStyle","emphasis","PictorialBarSeries","symbolSize","symbolRotate","symbolPosition","symbolOffset","symbolMargin","symbolRepeat","symbolRepeatDirection","symbolClip","symbolBoundingData","symbolPatternSize","barGap","progressive","hoverAnimation","superApply","_symbol","createSymbol","_number","parsePercent","isNumeric","LAYOUT_ATTRS","posDesc","pathForLineWidth","Circle","BarView","cartesian","coordSysRect","grid","getRect","opt","ecSize","getWidth","getHeight","coordSysExtent","valueDim","categoryDim","symbolMeta","getSymbolMeta","createBar","updateCommon","pictorialShapeStr","getShapeStr","__pictorialShapeStr","updateBar","__pictorialSymbolMeta","removeBar","symbolType","prepareBarLength","prepareSymbolSize","boundingLength","pxSign","prepareLineWidth","symbolScale","prepareLayoutInfo","valueLineWidth","repeatCutLength","valueAxis","getOtherAxis","zeroPx","toGlobalCoord","dataToCoord","pxSignIdx","symbolBoundingExtent","convertToCoordOnAxis","categorySize","getLineScale","unitLength","pathLen","absBoundingLength","retrieve","hasEndGap","lastIndexOf","uLenWithMargin","endFix","repeatSpecified","repeatTimes","toIntTimes","mDiff","sizeFix","pathPosition","bundlePosition","barRectShape","clipShape","createPath","culling","strokeNoScale","createOrUpdateRepeatSymbols","__pictorialBundle","eachPath","__pictorialAnimationIndex","__pictorialRepeatTimes","updateAttr","makeTarget","updateHoverAnimation","trigger","createOrUpdateSingleSymbol","mainPath","__pictorialMainPath","createOrUpdateBarRect","barRect","__pictorialBarRect","createOrUpdateClip","__pictorialClipPath","setClipPath","getAnimationDelayParams","parentModel","off","animateTo","Group","labelRect","pathes","cb","immediateAttrs","animationAttrs","normalStyle","getItemStyle","setColor","barRectHoverStyle","barPositionOutside","times","roundedTimes","makeStyleMapper","excludes","getBorderLineDash","_labelHelper","getDefaultLabel","labelModel","hoverLabelModel","setLabelStyle","labelFetcher","labelDataIndex","defaultText","isRectText","autoColor","fixPosition","textPosition","boxplotVisual","boxplotLayout","_whiskerBoxCommon","seriesModelMixin","BoxplotSeries","defaultValueDimensions","dimensions","shadowBlur","shadowOffsetX","shadowOffsetY","shadowColor","animationEasing","mixin","ChartView","viewMixin","BoxplotView","getStyleUpdater","normalStyleAccessPath","emphasisStyleAccessPath","itemGroup","normalItemStyleModel","whiskerEl","childAt","whiskerIndex","dirty","bodyEl","bodyIndex","groupResult","groupSeriesByAxis","groupItem","seriesModels","calculateBase","layoutSingleSeries","boxOffsetList","boxWidthList","axisList","seriesCount","boundList","bandWidth","getBandWidth","maxDataCount","getExtent","boxWidthBound","boxGap","chartLayout","variableDim","constDim","coordDims","vDims","cDim","dimName","dimInfo","getDimensionInfo","coordDim","axisDimVal","median","getPoint","end1","end5","whiskerEnds","layEndLine","bodyEnds","addBodyEnd","setItemLayout","initBaseline","point2","endCenter","borderColorQuery","globalColors","eachRawSeriesByType","defaulColor","seriesIndex","legendSymbol","isSeriesFiltered","setItemVisual","preprocessor","candlestickVisual","candlestickLayout","registerPreprocessor","CandlestickSeries","color0","borderColor0","barMaxWidth","barMinWidth","animationUpdate","getShadowDim","itemLayout","brushRect","CandlestickView","_graphic","subPixelOptimize","retrieve2","candleWidth","calculateCandleWidth","openVal","closeVal","lowestVal","highestVal","ocLow","ocHigh","ocLowPoint","ocHighPoint","lowestPoint","highestPoint","subPixelOptimizePoint","makeBrushRect","pmin","pmax","positiveBorderColorQuery","negativeBorderColorQuery","positiveColorQuery","negativeColorQuery","graphicUtil","getLayoutOnAxis","DataDiffer","prepareCartesian2d","prepareGeo","prepareSingleAxis","preparePolar","prepareCalendar","ITEM_STYLE_NORMAL_PATH","ITEM_STYLE_EMPHASIS_PATH","LABEL_NORMAL","LABEL_EMPHASIS","GROUP_DIFF_PREFIX","prepareCustoms","singleAxis","extendSeriesModel","customSeries","renderItem","makeRenderItem","newIdx","createOrUpdate","oldIdx","incrementalPrepareRender","incrementalRender","setIncrementalAndHoverLayer","isGroup","incremental","useHoverLayer","traverse","createEl","elOption","graphicType","makePath","pathData","__customPathData","Image","__customImagePath","image","Text","__customText","Clz","__customGraphicType","updateEl","animatableModel","isInit","targetProps","elOptionStyle","targetStyle","prepareStyleTransition","textFill","textStroke","targetOpacity","initProps","styleEmphasis","oldElStyle","prepareResult","userAPI","getZr","getDevicePixelRatio","visual","barLayout","currentSeriesIndices","userParams","seriesId","dataInsideLength","encode","wrapEncodeDef","currDataIndexInside","currDirty","currItemModel","currLabelNormalModel","currLabelEmphasisModel","currVisualColor","dataIndexInside","getRawIndex","updateCache","setTextStyle","getFormattedLabel","retrieve3","visualType","getCurrentSeriesIndices","getFont","encodeDef","dataDimIndex","isExtraCoord","dataDims","coordDimIndex","doCreateOrUpdate","elOptionType","oldChildren","newChildren","diffChildrenByName","diffGroupChildren","getKey","processAddUpdate","processRemove","childOption","visualSymbol","layoutPoints","effectType","showEffectOn","rippleEffect","brushType","SymbolDraw","EffectSymbol","pointsLayout","_symbolDraw","effectSymbolDraw","updateData","_updateGroupTransform","getRoamTransform","decomposeTransform","dataColor","funnelLayout","dataFilter","registerProcessor","createListSimply","defaultEmphasis","FunnelSeries","legendDataProvider","getRawData","_defaultLabelLine","labelLineNormalOpt","labelLine","labelLineEmphasisOpt","getDataParams","superCall","mapDimension","getSum","$vars","gap","funnelAlign","lineStyle","FunnelPiece","polygon","Polygon","Polyline","onEmphasis","ignore","hoverIgnore","onNormal","normalIgnore","funnelPieceProto","opacityAccessPath","firstCreate","hostModel","visualColor","_updateLabel","labelLayout","linePoints","labelHoverModel","labelLineModel","labelLineHoverModel","useInsideStyle","inside","textVerticalAlign","verticalAlign","getLineStyle","FunnelView","funnelPiece","piePiece","linearMap","getViewRect","getLayoutRect","getBoxLayoutParams","getSortedIndices","valueArr","mapArray","indices","isAscending","labelPosition","isLabelInside","labelLineLen","viewRect","sizeExtent","dataExtent","getDataExtent","getLinePoints","offY","nextIdx","GaugeSeries","dataOpt","clockwise","splitNumber","axisLine","splitLine","axisTick","axisLabel","offsetCenter","PointerPath","parsePosition","labelFormatter","PI2","GaugeView","colorList","posInfo","_renderMain","axisLineModel","lineStyleModel","angleRangeSpan","prevEndAngle","axisLineWidth","_renderTicks","_renderPointer","_renderTitle","_renderDetail","splitLineModel","tickModel","subSplitNumber","splitLineLen","tickLen","subStep","splitLineStyle","tickLineStyle","unitX","unitY","tickLine","valueExtent","angleExtent","pointerModel","titleModel","forceRich","detailModel","buildPath","mathCos","mathSin","categoryFilter","categoryVisual","edgeVisual","simpleLayout","circularLayout","forceLayout","createView","registerCoordinateSystem","List","_format","encodeHTML","createGraphFromNodeEdge","GraphSeries","_categoriesData","fillDataTextStyle","_updateCategoriesData","mergeOption","mergeDefaultAndTheme","beforeLink","nodeData","edgeData","wrapMethod","categoriesModels","_categoriesModels","categoryIdx","categoryModel","edgeLabelModel","fakeSeriesModel","customizeGetParent","edgeGetParent","parsePath","getGraph","getEdgeData","getCategoriesData","formatTooltip","multipleSeries","dataType","getEdgeByIndex","sourceName","node1","targetName","node2","categories","categoriesData","initData","focusNodeAdjacency","rotateLabel","force","initLayout","repulsion","gravity","edgeLength","layoutAnimation","edgeSymbol","edgeSymbolSize","edgeLabel","draggable","roam","nodeScaleRatio","curveness","LineDraw","RoamController","roamHelper","_cursorHelper","onIrrelevantElement","adjustEdge","nodeOpacityPath","lineOpacityPath","getItemOpacity","opacityPath","getVisual","fadeOutItem","opacityRatio","getGraphicEl","downplay","fadeInItem","highlight","symbolDraw","lineDraw","_controller","_controllerHost","_lineDraw","_firstRender","_nodeScaleRatio","groupNewProp","_getNodeGlobalScale","_updateNodeAndLinkScale","_updateController","_layoutTimeout","_startForceLayoutIteration","warmUp","_layouting","setFixed","setUnfixed","setDraggable","__focusNodeAdjacency","__unfocusNodeAdjacency","dispatchAction","eachEdge","edgeDataIndex","circularRotateLabel","symbolPath","getSymbolPath","textRotation","textOrigin","getNodeByIndex","eachNode","adjacentEdge","unfocusNodeAdjacency","stopped","controllerHost","setPointerChecker","getBoundingRect","applyTransform","contain","disable","enable","updateViewOnPan","updateViewOnZoom","nodeScale","invScale","groupZoom","roamZoom","curveTool","vec2","quadraticAt","v2DistSquare","distSquare","mathAbs","intersectCurveCircle","curvePoints","radiusSquare","nextDiff","tmp0","quadraticSubdivide","pts","pts2","getSymbolSize","fromSymbol","toSymbol","__original","originalPoints","sub","scaleAndAdd","legendModels","findComponents","graphSeries","categoryNames","filterSelf","paletteScope","categoryNameIdxMap","getColorFromPalette","_circularLayoutHelper","unitAngle","getValue","setLayout","cp1","x12","y12","View","_layout","bbox","aspect","viewList","coordSysType","fromPoints","bbWidth","bbHeight","viewWidth","viewHeight","viewCoordSys","setBoundingRect","setViewRect","colorQuery","opacityQuery","pp","friction","fixed","v12","nLen","n2","repFact","rep","_forceHelper","_simpleLayoutHelper","preservedPoints","forceModel","getId","nodeDataExtent","edgeDataExtent","forceInstance","oldStep","_util","simpleLayoutEdge","GRADIENT_LEVELS","Heatmap","createCanvas","blurSize","pointSize","maxOpacity","minOpacity","_gradientPixels","colorFunc","isInRange","_getBrush","gradientInRange","_getGradient","gradientOutOfRange","imageData","getImageData","pixelLen","diffOpacity","gradientOffset","putImageData","brushCanvas","_brushCanvas","gradientPixels","pixelsSingleState","Uint8ClampedArray","CoordinateSystem","preventIncremental","coordSysCreator","geoIndex","HeatmapLayer","getIsInPiecewiseRange","pieceList","dataSpan","piece","getIsInContinuousRange","isGeoCoordSys","visualMapOfThisSeries","visualMap","eachTargetSeries","targetSeries","_incrementalDisplayable","_renderOnCartesianAndCalendar","_renderOnGeo","getAxis","itemStyleQuery","hoverItemStyleQuery","labelQuery","hoverLabelQuery","hoverStl","dataToRect","contentShape","hasItemOption","getRawValue","visualMapModel","inRangeVisuals","targetVisuals","outOfRangeVisuals","outOfRange","hmLayer","_hmLayer","roamTransform","getPieceList","getNormalizer","getColorMapper","img","curveUtil","EffectLine","lineData","seriesScope","createLine","_updateEffectSymbol","effectLineProto","effectModel","_symbolType","_updateEffectAnimation","constantSpeed","delayExpr","isDelayFunc","updateAnimationPoints","getLineLength","_period","stopAnimation","__t","animator","when","during","updateSymbolPosition","done","dist","__p1","__cp1","__p2","quadraticDerivativeAt","ty","EffectPolyline","_lastFrame","_lastFramePercent","effectPolylineProto","_points","accLenArr","lastFrame","lerp","SymbolClz","EFFECT_RIPPLE_NUMBER","normalizeSymbolSize","updateRipplePath","rippleGroup","effectCfg","eachChild","ripplePath","effectSymbolProto","stopEffectAnimation","startEffectAnimation","effectOffset","rippleScale","animateStyle","updateEffectAnimation","oldEffectCfg","_effectCfg","DIFFICULT_PROPS","propName","fadeOut","IncrementalDisplayable","lineContain","quadraticContain","LargeLineShape","extendShape","polyline","segs","findDataIndex","containStroke","LargeLineDraw","largeLineProto","isPersistent","_incremental","lineEl","rectHover","_setCommon","incrementalPrepareUpdate","_clearIncremental","incrementalUpdate","taskParams","__startIndex","addDisplayable","isIncremental","clearDisplaybles","BOOST_SIZE_THRESHOLD","LargeSymbolPath","symbolProxy","symbolProxyShape","canBoost","afterBrush","setTransform","restoreTransform","LargeSymbolDraw","largeSymbolProto","symbolEl","endIndex","byteOffset","Float32Array","extrudeShadow","vector","symbolUtil","LinePath","SYMBOL_CATEGORIES","makeSymbolTypeKey","symbolCategory","setLinePoints","targetShape","cpx1","cpy1","updateSymbolAndLabelBeforeLineUpdate","lineGroup","symbolFrom","childOfName","symbolTo","__dirty","fromPos","pointAt","toPos","tangent","tangentAt","__position","halfPercent","cp","__verticalAlign","__textAlign","_createLine","lineProto","_updateCommonStl","hoverLineStyle","visualOpacity","hoverShowLabel","defaultLabelColor","normalText","emphasisText","rawVal","labelStyle","fontWeight","linePath","LineGroup","ctor","_ctor","lineDrawProto","oldLineData","_lineData","makeSeriesScope","doAdd","doUpdate","lineNeedsDraw","newLineData","itemEl","_seriesScope","updateIncrementalAndHover","isPointNaN","straightLineProto","bezierCurveProto","BezierCurve","isLine","_createPolyline","polylineProto","symbolProto","driftSymbol","drift","_createSymbol","stopSymbolAnimation","toLastFrame","setZ","_updateCommon","fadeIn","_seriesModel","normalLabelAccessPath","emphasisLabelAccessPath","hoverItemStyle","elStyle","symbolInnerColor","useNameLabel","getLabelDefaultText","keepLabel","symbolCtor","_symbolCtor","symbolDrawProto","symbolNeedsDraw","isIgnore","SymbolCtor","enableAnimation","WhiskerPath","WhiskerBox","styleUpdater","_createContent","whiskerBoxProto","transInit","ends","makeWhiskerEndsShape","updateMethod","WhiskerBoxDraw","whiskerBoxDrawProto","Graph","linkList","createDimensions","directed","addNode","linkNameList","validEdges","linkCount","addEdge","coordSysCtor","dimensionNames","coordDimensions","mainData","struct","structAttr","datas","datasAttr","_sourceType","SOURCE_FORMAT_ORIGINAL","_dimensionHelper","getDimensionTypeByAxis","getDataItemValue","_referHelper","getCoordSysDefineBySeries","Source","isInstance","seriesDataToSource","coordSysName","registeredCoordSys","coordSysDefine","coordSysDimDefs","coordSysDims","axisModel","axisMap","axisType","stackable","isStackable","getDimensionsInfo","dimInfoList","firstCategoryDimIndex","hasNameEncode","dimIndex","categoryAxisModel","categoryAxisMap","ordinalMeta","getOrdinalMeta","otherDims","itemName","dimValueGetter","isNeedCompleteOrdinalData","itemOpt","defaultDimValueGetter","sourceFormat","sampleItem","firstDataNotNull","nameList","dimensionsInfo","makeInner","fields","pipelineContext","originalLarge","large","originalIncremental","_dataProvider","retrieveRawValue","labelDims","retrieveTargetInfo","validPayloadTypes","targetNodeId","getNodeById","getPathToRoot","aboveViewRoot","viewRoot","viewPath","wrapTreePathInfo","treePathInfo","nodeDataIndex","_baseAxisDim","xAxisModel","getComponent","yAxisModel","xAxisType","yAxisType","addOrdinal","baseAxisDimIndex","baseAxisDim","otherAxisDim","axisModels","baseAxisType","otherAxisType","newOptionData","newItem","dimsDef","dimensionsCount","whiskerBoxDraw","_whiskerBoxDraw","dataSample","PRIORITY","PROCESSOR","STATISTIC","clipOverflow","smooth","smoothMonotone","showSymbol","showAllSymbol","connectNulls","sampling","hoverLayerThreshold","lineAnimationDiff","modelUtil","_poly","isPointsSame","points1","points2","getSmooth","getAxisExtentWithGap","getGlobalExtent","onBand","halfBandWidth","dir","getStackedOnPoints","valueStart","valueCoordDim","baseDataOffset","stackedOnSameSign","stackedOn","stackedData","createGridClipShape","hasAnimation","xExtent","yExtent","expandSize","createPolarClipShape","angleAxis","getAngleAxis","radiusAxis","getRadiusAxis","radiusExtent","RADIAN","createClipShape","turnPointsIntoStep","stepTurnAt","baseIndex","stepPoints","nextPt","stepPt","middle","stepPt2","getVisualGradient","visualMetaList","visualMeta","colorStops","stopLen","outerColors","tinyExtent","minCoord","maxCoord","coordSpan","LinearGradient","_lineGroup","areaStyleModel","isCoordSysPolar","prevCoordSys","_coordSys","_polyline","_polygon","isAreaChart","isEmpty","stackedOnPoints","isSymbolIgnore","_getSymbolIgnoreFunc","__temp","_step","_newPolyline","_newPolygon","_stackedOnPoints","_updateAnimation","stackedOnSmooth","getAreaStyle","stackedOnSeries","queryDataIndex","categoryAxis","getAxesByScale","isLabelIgnored","stackedOnCurrent","stackedOnNext","__points","updatedDataInfo","diffStatus","status","cmd","idx1","ptIdx","animators","getStackedOnPoint","onZero","diffData","newData","diffResult","oldStackedOnPoints","newStackedOnPoints","oldCoordSys","newCoordSys","currPoints","nextPoints","currStackedPoints","nextStackedPoints","sortedIndices","rawIndices","diffItem","pointAdded","currentPt","rawIndex","sortedCurrPoints","sortedNextPoints","sortedCurrStackedPoints","sortedNextStackedPoints","sortedStatus","fixClipWithShadow","vec2Min","vec2Max","v2Copy","cp0","isPointNull","drawSegment","segLen","allLen","smoothMin","smoothMax","prevIdx","nextP","ratioNextSeg","prevP","lenPrevSeg","lenNextSeg","getBoundingBox","smoothConstraint","ptMin","ptMax","stackedOnBBox","linesLayout","linesVisual","concatArray","mergeAll","globalObj","Uint32Arr","Uint32Array","Float64Arr","compatEc2","seriesOpt","coords","fromName","toName","LinesSeries","visualColorAccessPath","_processFlatCoordsArray","_flatCoords","flatCoords","_flatCoordsOffset","flatCoordsOffset","appendData","_getCoordsFromItemModel","getLineCoordsCount","getLineCoords","startOffset","coordsOffsetAndLenStorage","coordsStorage","coordsCursor","offsetCursor","dataCount","getProgressive","getProgressiveThreshold","progressiveThreshold","xAxisIndex","yAxisIndex","effect","trailLength","largeThreshold","incrementalThreshold","_updateLineDraw","zr","isSvg","painter","getType","getLayer","_lastZlevel","configLayer","motionBlur","_showEffect","lastFrameAlpha","_finished","_clearLayer","hasEffect","isPolyline","isLargeDraw","_hasEffet","_isPolyline","_isLargeDraw","createRenderPlanner","plan","isLarge","lineCoords","segCount","totalCoordsCount","dataEach","mapSymbolLayout","mapVisual","mapDataStatistic","backwardCompat","createDataSelectAction","addCommas","dataSelectableMixin","MapSeries","layoutMode","needsDrawMap","_fillOption","getMapType","updateSelectedMap","newOption","getHostGeoModel","dependentModels","mapName","getRegionModel","regionName","indexOfName","seriesNames","otherIndex","originalData","getTooltipPosition","region","getRegion","aspectScale","showLegendSymbol","dataRangeHoverLink","boundingCoords","scaleLimit","areaColor","MapDraw","mapModel","mapDraw","_mapDraw","_renderSymbols","fullData","mainSeries","fullIndex","polygonGroups","extendFrom","__mapOriginalZ2","mapSeries","mapType","mapLocation","dataStatistics","statisticType","dataNameMap","mapKey","seriesGroups","hostGeoModel","seriesList","setData","cloneShallow","processedMapType","mapSymbolOffsets","subMapSeries","parallelVisual","createHashMap","setEncodeAndDimensions","getRawIndicesByActiveState","activeState","eachActiveState","theActiveState","parallelIndex","inactiveOpacity","activeOpacity","encodeDefine","parallelModel","axisDim","convertDimNameToNumber","SMOOTH","ParallelView","_dataGroup","_renderForNormal","dataGroup","updateElCommon","removeClipPath","newDataIndex","addEl","oldDataIndex","createLinePoints","rectEl","isEmptyValue","seriesStyleModel","opacityMap","normal","itemOpacity","pieLayout","getPercentWithPrecision","PieSeries","valueList","minAngle","selectedOffset","hoverOffset","avoidLabelOverlap","percentPrecision","stillShowZeroSum","length2","animationType","updateDataSelected","toggleItemSelected","PiePiece","piePieceProto","PieView","sectorGroup","_sectorGroup","isFirstRender","onSectorClick","selectedMode","_createClipPath","containPoint","textContain","adjustSingleSide","shiftDown","shiftUp","changeX","isDownList","lastDeltaX","len2","lastY","upList","downList","avoidOverlap","labelLayoutList","leftList","rightList","hasLabelRotate","labelLineLen2","labelRotate","textRect","validDataCount","unitRadian","roseType","restAngle","valueSumLargerThanMinAngle","currentAngle","radarLayout","RadarSeries","extraPrefix","extraFromZero","indicatorAxes","getIndicatorAxes","radarIndex","updateSymbols","oldPoints","newPoints","symbolGroup","__dimIdx","getInitialPoints","hoverAreaStyleModel","polygonIgnore","hoverPolygonIgnore","itemHoverStyle","labelDimIndex","polarOptArr","polarNotRadar","polarOpt","indicator","polarIndex","pointsConverter","axes","sankeyLayout","sankeyVisual","SankeySeries","layoutInfo","rawDataOpt","nodeWidth","nodeGap","layoutIterations","SankeyShape","cpx2","cpy2","halfExtent","curvature","n1Layout","n2Layout","edgeLayout","sy","computeNodeValues","filteredNodes","iterations","layoutSankey","computeNodeBreadths","computeNodeDepths","computeEdgeDepths","outEdges","getEdgeValue","value2","inEdges","remainNodes","nextNode","lenj","moveSinksRight","scaleNodeBreadths","nodeX","nodesByBreadth","sortKeys","initializeNodeDepth","resolveCollisions","relaxRightToLeft","relaxLeftToRight","kyArray","ky0","nodeDy","edgeDy","ascendingDepth","nodeY","weightedTarget","weightedSource","ascendingTargetDepth","ascendingSourceDepth","VisualMapping","mappingMethod","mapValueToColor","mapValueToVisual","customColor","_updateSymbolDraw","sunburstLayout","NodeHighlightPolicy","NONE","DESCENDANT","ANCESTOR","SELF","DEFAULT_SECTOR_Z","DEFAULT_TEXT_Z","SunburstPiece","SunburstPieceProto","_ecModel","getNodeColor","stateStyle","highlightPolicy","_initEvents","hostTree","isNodeHighlighted","onHighlight","onDownplay","labelPadding","rotateType","getRootId","virtualRoot","getAncestors","activeNode","policy","isAncestorOf","isDescendantOf","Tree","_treeHelper","_viewRoot","completeTreeValue","levels","treeOption","createTree","optionUpdated","resetViewRoot","getNodeByDataIndex","nodeClick","renderLabelForZeroData","animationDurationUpdate","getViewRoot","dataNode","childValue","thisValue","ROOT_TO_NODE_ACTION","SunburstView","newRoot","_oldChildren","dualTravel","renderRollUp","unhighlight","processNode","oldId","newNode","oldNode","doRenderNode","removeNode","_onclickEvent","_rootToNode","targetFound","open","helper","handleRootToNode","targetInfo","originViewRoot","HIGHLIGHT_ACTION","handleHighlight","UNHIGHLIGHT_ACTION","handleUnhighlight","rootDepth","initChildren","renderRollupNode","rPerLevel","renderNode","rStart","rEnd","siblingAngle","isAsc","sortOrder","themeRiverLayout","themeRiverVisual","DATA_NAME_INDEX","ThemeRiverSeries","nameMap","fixData","rawDataLength","dataByName","layData","dataList","layerNum","largestLayer","timeValue","keyIndex","singleAxisModel","queryComponents","filterData","dimensionsDefine","getLayerSeries","lenCount","indexArr","layerSeries","timeDim","comparer","index1","index2","getAxisTooltipData","nestestValue","minDist","nearestIdx","pointNum","theValue","dataIndices","htmlName","htmlValue","boundaryGap","singleAxisIndex","keyGetter","dataDiffer","_layersSeries","newLayersGroups","process","oldLayersGroups","points0","textLayout","layerGroup","hoverItemStyleModel","numberUtil","layerPoints","singleLayer","computeBaseline","baseLine","baseY0","layerIndex","temp","rawData","idxMap","orthogonalLayout","radialLayout","treeDepth","expandAndCollapse","expandTreeDepth","initialTreeDepth","getRawDataItem","isExpand","collapsed","realRoot","_layoutHelper","radialCoordinate","_oldTree","_mainGroup","updateNode","getTreeNodeStyle","sourceSymbolEl","sourceLayout","sourceOldLayout","rawX","__radialOldRawX","rawY","__radialOldRawY","targetLayout","__radialRawX","__radialRawY","rootLayout","__edge","getEdgeShape","radialCoor1","radialCoor2","radialCoor3","radialCoor4","_traversalHelper","sep","hierNode","modifier","prelim","coorX","coorY","finalCoor","defaultAncestor","thread","subtreeW","midPoint","radialCoor","subtreeV","nodeOutRight","nodeInRight","nodeOutLeft","nodeInLeft","sumOutRight","sumInRight","sumOutLeft","sumInLeft","wl","wr","commonLayout","treemapVisual","treemapLayout","TEXT_PADDING","ITEM_GAP","ARRAY_LENGTH","Breadcrumb","containerGroup","onSelect","thisGroup","normalStyleModel","textStyleModel","layoutParam","emptyItemWidth","renderList","_prepare","_renderContent","positionElement","getTextRect","lastX","availableSize","getAvailableSize","itemNode","makeItemPoints","textFont","onclick","packEventData","tail","eventData","componentSubType","componentIndex","selfType","clipWindow","squareRatio","leafDepth","drillDownIcon","zoomToNodeRatio","breadcrumb","textStyle","ellipsis","upperLabel","colorAlpha","colorSaturation","gapWidth","borderColorSaturation","visualDimension","visualMin","visualMax","colorMappingBy","visibleMin","childrenVisibleMin","setDefault","setLayoutInfo","mapIdToIndex","idIndexMap","_idIndexMap","_idIndexMapCount","globalColorList","hasColorDefine","levelDefine","modelColor","level0","BoundingRect","animationUtil","DRAG_THRESHOLD","PATH_LABEL_NOAMAL","PATH_LABEL_EMPHASIS","PATH_UPPERLABEL_NORMAL","PATH_UPPERLABEL_EMPHASIS","Z_BASE","Z_BG","Z_CONTENT","getItemStyleEmphasis","getItemStyleNormal","_containerGroup","_storage","createStorage","_breadcrumb","_state","payloadType","thisStorage","reRoot","rootNodeGroup","nodeGroup","_giveContainerGroup","renderResult","_doRender","_doAnimation","renderFinally","_resetController","_renderBreadcrumb","thisTree","oldTree","lastsForAnimation","oldStorage","willInvisibleEls","willDeleteEls","clearStorage","thisViewChildren","oldViewChildren","parentGroup","sameTree","isRemoved","thisNode","viewChildren","storage","store","storageName","delEls","__tmWillDelete","els","invisible","animationWrap","createWrap","__tmNodeWidth","__tmNodeHeight","targetX","targetY","old","fadein","_onPan","_onZoom","_clearController","rootRect","findTarget","isLeafRoot","_zoomToNode","bgEl","background","transformCoordToLocal","content","thisLayout","isInView","thisWidth","thisHeight","thisInvisible","thisRawIndex","oldRawIndex","upperHeight","isParent","itemStyleNormalModel","itemStyleEmphasisModel","giveGraphic","isAboveViewRoot","bg","renderBackground","renderContent","useUpperLabel","visualBorderColor","emphasisBorderColor","emphasisStyle","upperLabelWidth","prepareText","contentWidth","contentHeight","__tmWillVisible","upperLabelRect","nodeModel","iconChar","normalLabelModel","emphasisLabelModel","isShow","truncate","minChar","Ctor","lasts","prepareAnimationWhenHasOld","calculateZ","__tmDepth","__tmStorageName","prepareAnimationWhenNoOld","lastCfg","parentOldX","parentOldY","parentOldBg","zInLevel","zb","actionTypes","mathMax","mathMin","retrieveValue","PATH_BORDER_WIDTH","PATH_GAP_WIDTH","PATH_UPPER_LABEL_SHOW","PATH_UPPER_LABEL_HEIGHT","ecWidth","ecHeight","seriesOption","containerWidth","containerHeight","viewAbovePath","rootSize","estimateRootSize","clearLayouts","viewRootLayout","calculateRootPosition","prunning","hideChildren","halfGapWidth","upperLabelHeight","getUpperLabelHeight","layoutOffset","layoutOffsetUpper","totalArea","rowFixedLength","best","worst","orderBy","overLeafDepth","statistic","filterByThreshold","orderedChildren","deletePoint","areaMax","areaMin","squareArea","flush","idx0WhenH","idx1WhenH","rowOtherLength","rowLen","nodeLayout","wh1","modWH","wh0","currNode","defaultSize","viewArea","currNodeValue","defaultPosition","targetCenter","clipRect","nodeInViewAbovePath","childClipRect","zrColor","ITEM_STYLE_NORMAL","seriesItemStyleModel","levelItemStyles","levelModels","levelModel","travelTree","designatedVisual","viewRootAncestors","nodeItemStyleModel","levelItemStyle","visuals","buildVisuals","thisNodeColor","calculateColor","calculateBorderColor","buildVisualMapping","childVisual","visualName","getValueVisualDefine","modifyHSL","modifyAlpha","rangeVisual","getRangeVisual","__drColorMappingBy","childVisuals","mappingType","AxisView","elementList","getAxisLineShape","rExtent","coordToPoint","getRadiusIdx","axisPointerClass","angleAxisModel","ticksAngles","getTicksCoords","isBlank","_axisLine","_axisTick","tickAngle","mergePath","_axisLabel","categoryData","getCategories","getFormattedLabels","labelMargin","labelsAngles","getLabelsCoords","labelTextAlign","labelTextVerticalAlign","_splitLine","lineColors","splitLines","colorIndex","_splitArea","splitAreaModel","areaColors","splitAreas","prevAngle","formatUtil","isRadianAroundZero","remRadian","matrixUtil","_vector","v2ApplyTransform","makeAxisEventDataBase","AxisBuilder","nameDirection","tickDirection","labelDirection","dumbGroup","_transform","_dumbGroup","hasBuilder","builders","getGroup","subPixelOptimizeLine","anid","strokeContainThreshold","arrows","arrowSize","symbolWidth","symbolHeight","axisTickLabel","tickEls","buildAxisTick","labelEls","buildAxisLabel","fixMinMaxLabelShow","axisName","nameLocation","gapSignal","isNameLocationCenter","nameRotation","axisNameAvailableWidth","innerTextLayout","endTextLayout","truncateOpt","nameTruncateMaxWidth","truncatedText","truncateText","placeholder","tooltipOpt","formatterParams","__fullText","__truncatedText","isSilent","targetType","axisRotation","rotationDiff","textRotate","onLeft","showMinLabel","showMaxLabel","firstLabel","nextLabel","lastLabel","prevLabel","firstTick","nextTick","prevTick","ignoreEl","isTwoLabelOverlapped","firstRect","nextRect","mRotationBack","mul","getLocalTransform","ifIgnoreOnTick","ticksCnt","rawTick","getInterval","labelInterval","axisBuilder","ticksCoords","tickCoord","tickEl","axisLabelShow","triggerEvent","itemLabelModel","labelStr","axisPointerModelHelper","extendComponentView","_axisPointer","fixValue","updateAxisPointer","axisPointer","disposeAxisPointer","axisView","forceRender","Clazz","getAxisPointerClass","axisPointerModel","getAxisPointerModel","axisPointerClazz","registerAxisPointerClass","clazz","cartesianAxisHelper","axisBuilderAttrs","selfBuilderAttrs","CartesianAxisView","oldAxisGroup","_axisGroup","gridModel","getCoordSysModel","groupTransition","lineInterval","gridRect","prevX","prevY","areaInterval","areaStyle","BrushController","brushHelper","_brushController","_onBrush","fromAxisAreaSelect","coordSysModel","areaSelectStyle","getAreaSelectStyle","areaWidth","axisLayout","getAxisLayout","builderOpt","_refreshBrushController","extentLen","mount","enableGlobalPan","setPanels","panelId","makeRectPanelClipPath","isTargetByCursor","makeRectIsTargetByCursor","getLinearBrushOtherExtent","makeLinearBrushOtherExtent","enableBrush","brushStyle","removeOnClick","updateCovers","getCoverInfoList","coverInfoList","intervals","coverInfo","coordToData","realtime","isEnd","parallelAxisId","activeIntervals","radiusAxisModel","axisAngle","layoutAxis","prevRadius","singleAxisHelper","selfBuilderAttr","SingleAxisView","getLineDash","rawAxisPosition","axisPosition","rectBound","axisOffset","posBound","otherAxis","onZeroAxisIndex","onZeroCoord","dirMap","labelInside","getLabelInterval","parallelAxisModel","setActiveIntervals","setAxisExpand","positionMap","directionMap","axisTrigger","coordSysAxesInfo","collect","AxisPointerModel","extendComponentModel","triggerOn","snap","triggerTooltip","shadowStyle","icon","globalListener","AxisPointerView","globalAxisPointerModel","globalTooltipModel","currTrigger","clazzUtil","eventTool","throttleUtil","BaseAxisPointer","_group","_lastGraphicKey","_handle","_dragging","_lastValue","_lastStatus","_payloadInfo","animationThreshold","_axisModel","_axisPointerModel","_api","makeElOption","graphicKey","moveAnimation","_moveAnimation","determineAnimation","createPointerEl","createLabelEl","doUpdateProps","updatePointerEl","updateLabelEl","updateMandatoryProps","_renderHandle","isCategoryAxis","useSnap","seriesDataCount","getAxisInfo","axisExtent","pointerOption","pointerEl","labelEl","updateLabelShowHide","updateHandleTransform","handleModel","createIcon","onmousemove","onmousedown","_onHandleDragMove","ondragend","_onHandleDragEnd","includeStyles","_moveHandleToValue","getHandleTransProps","getHandleTransform","trans","lastProp","_doDispatchAxisPointer","payloadInfo","cursorPoint","tooltipOption","axesInfo","axisIndex","doClear","buildLabel","xDimIndex","propsEqual","lastProps","newProps","equals","enableClassExtend","viewHelper","CartesianAxisPointer","axisPointerType","otherExtent","getCartesian","pixelValue","buildElStyle","pointerShapeBuilder","buildCartesianSingleLabelElOption","getTransformedPosition","currPosition","cursorOtherValue","tooltipOptions","makeLineShape","getAxisDimIndex","shadow","makeRectShape","PolarAxisPointer","coordValue","capitalFirst","labelPos","getLabelPosition","buildLabelElOption","radian","makeSectorShape","WH","SingleAxisPointer","getPointDimIndex","modelHelper","findPointFromSeries","finder","illegalPoint","isIllegalPoint","inputAxesInfo","shouldHide","outputFinder","showValueMap","dataByCoordSys","updaters","showPointer","coordSysMap","coordSysKey","coordSysContainsPoint","axisInfo","inputAxisInfo","findInputAxisInfo","processOnAxis","linkTriggers","tarAxisInfo","tarKey","linkGroup","srcAxisInfo","srcKey","srcValItem","makeMapperParam","updateModelActually","dispatchTooltipActually","dispatchHighDownActually","newValue","dontSnap","containData","involveSeries","buildPayloadsBySeries","payloadBatch","snapToValue","dataDim","seriesNestestValue","indicesOfNearest","makeKey","coordSysItem","coordSysId","coordSysIndex","coordSysMainType","dataByAxis","axisId","valueLabelOpt","seriesDataIndices","outputAxesInfo","valItem","useHandle","escapeConnect","highDownKey","lastHighlights","newHighlights","batchItem","toHighlight","toDownplay","batch","getSeriesByIndex","env","records","initGlobalListeners","record","useHandler","doEnter","eventType","dis","makeDispatchAction","dispatchTooltipFinally","pendings","showLen","showTip","hideLen","hideTip","actuallyPayload","pendingList","seriesInvolved","collectAxesInfo","collectSeriesInfo","linksOption","linkGroups","axisPointerEnabled","axesInfoInCoordSys","baseTooltipModel","getAxes","saveTooltipAxisInfo","getTooltipAxes","triggerAxis","tooltipAxes","baseAxes","otherAxes","fromTooltip","axisPointerShow","isHandleTrigger","makeAxisPointerModel","getLinkGroupIndex","tooltipAxisPointerModel","volatileOption","labelOption","crossStyle","eachSeries","seriesTooltipTrigger","seriesTooltipShow","linkOption","checkPropInLink","linkPropValue","axisPropValue","axisHelper","styleModel","getValueLabel","paddings","normalizeCssArray","confineInContainer","bgColor","getAxisRawValue","seriesData","idxItem","dataParams","isString","isFunction","visualSolution","DEFAULT_OUT_OF_BRUSH_COLOR","BrushModel","toolbox","brushLink","brushMode","transformable","throttleType","throttleDelay","areas","brushOption","coordInfoList","thisOption","replaceVisualOption","inBrush","outOfBrush","setAreas","generateBrushOption","setBrushOption","brushModel","updateController","updateView","modelId","brushTargetManager","setOutputRanges","brushId","$from","makePanelOpts","DEFAULT_TOOLBOX_BTNS","isNew","brushComponents","brushComponentSpecifiedBtns","brushOpt","tbs","feature","toolboxFeature","toolboxBrush","brushTypes","removeDuplicate","flag","polygonContain","lineX","getLineSelectors","lineY","lineIntersectPolygon","xyIndex","inLineRange","layoutRange","lx","ly","l2x","l2y","lineIntersect","a1x","a1y","a2x","a2y","b1x","b1y","b2x","b2y","determinant","nearZero","namenda","miu","v4","BrushTargetManager","STATE_LIST","DISPATCH_METHOD","DISPATCH_FLAG","PRIORITY_BRUSH","VISUAL","BRUSH","setInputRanges","brushSelected","brushIndex","thisBrushSelected","brushName","linkedSeriesMap","selectedDataIndexForLink","rangeInfoBySeries","hasBrushExists","bindSelector","boundingRectBuilders","visualMappings","createVisualMappings","mappingOption","linkOthers","brushed","rangeInfoList","stepAParallel","stepAOthers","hasAxisBrushed","selectorsByBrushType","getSelectorsByBrushType","brushModelNotControll","controlSeries","checkInRange","seriesBrushSelected","getValueState","applyVisual","doDispatch","isDisposed","sels","selectorsByElementType","bSelector","sel","seriesIndices","selFn","elType","getBoundingRectFromMinMax","minMax","rg","MONTH_TEXT","EN","CN","WEEK_TEXT","_tlpoints","_blpoints","_firstDayOfMonth","_firstDayPoints","calendarModel","rangeData","getRangeInfo","getOrient","_renderDayRect","_renderLines","_renderYearText","_renderMonthText","_renderWeekText","itemRectStyleModel","getCellWidth","sh","getCellHeight","getNextNDay","firstDay","addPoints","formatedDate","getDateInfo","_getLinePointsOfOneWeek","_drawSplitline","_getEdgesPoints","rs","poyline","tmpD","_formatterLabel","formatTplSimple","_yearTextPositionControl","aligns","yearLabel","xc","yc","posPoints","yearText","_monthTextPositionControl","isCenter","vAlign","monthLabel","termPoints","firstDayPoints","yyyy","yy","MM","monthText","_weekTextPositionControl","cellSize","isStart","dayLabel","firstDayOfWeek","getFirstDayOfWeek","lweek","fweek","weekText","asc","AxisProxy","dataZoomModel","_dimName","_axisIndex","_valueWindow","_percentWindow","_dataExtent","_minMaxSpan","_dataZoomModel","hasSeriesStacked","hostedBy","getDataValueWindow","getDataPercentWindow","getTargetSeriesModels","isCoordSupported","getAxisModel","getOtherAxisModel","isCartesian","coordSysIndexName","foundOtherAxisModel","otherAxisModel","getMinMaxSpan","calculateDataWindow","rangePropMode","getRangePropMode","percentExtent","percentWindow","valueWindow","boundValue","boundPercent","calculateDataExtent","isStacked","dataWindow","setMinMaxSpan","setAxisModel","filterMode","leftOut","rightOut","thisHasValue","thisLeftOut","thisRightOut","isInWindow","selectRange","setApproximateExtent","axisProxy","seriesExtent","getApproximateExtent","fixExtentByAxis","axisDataLen","isRestore","getPixelPrecision","useOrigin","setRange","minMaxSpan","valueSpan","eachAxisDim","DataZoomModel","startValue","endValue","minSpan","maxSpan","minValueSpan","maxValueSpan","rangeMode","_dataIntervalByAxis","_dataInfo","_axisProxies","_autoThrottle","_rangePropMode","rawOption","retrieveRaw","doInit","canvasSupported","_setDefaultThrottle","updateRangeUse","_resetTarget","_giveAxisProxies","axisProxies","eachTargetAxis","dimNames","__dzAxisProxy","autoMode","_judgeAutoMode","axisIndexName","normalizeToArray","_autoSetAxisIndex","_autoSetOrient","hasIndexSpecified","autoAxisIndex","axisIndices","_isSeriesHasAllAxesTypeOf","is","seriesAxisIndex","globalOption","getFirstTargetAxisModel","firstAxisModel","getAxisProxy","setRawRange","ignoreUpdateRangeUsg","getPercentRange","findRepresentativeAxisProxy","getValueRange","axisDimName","ret","rangeModeInOption","percentSpecified","valueSpecified","ComponentView","getTargetCoordInfo","coordSysLists","coordModel","coordIndex","disabled","zoomLock","zoomOnMouseWheel","moveOnMouseMove","preventDefaultMouseMove","DataZoomView","sliderMove","roams","InsideZoomView","_range","shouldRecordRange","allCoordIds","coordInfo","generateCoordId","dataZoomOption","coordId","containsPoint","dataZoomId","throttleRate","panGetRange","zoomGetRange","roamControllerOpt","oldX","oldY","newX","newY","directionInfo","getDirectionInfo","percentDelta","signal","pixelLength","percentPoint","pixelStart","oldPoint","newPoint","pointToCoord","SliderZoomModel","dataBackground","fillerColor","handleIcon","handleStyle","labelPrecision","showDetail","showDataShadow","DEFAULT_LOCATION_EDGE_GAP","DEFAULT_FRAME_BORDER_WIDTH","DEFAULT_FILLER_SIZE","HORIZONTAL","VERTICAL","LABEL_GAP","SHOW_DATA_SHADOW_SERIES_TYPE","SliderZoomView","_displayables","_orient","_handleEnds","_size","_handleWidth","_handleHeight","_location","_dataShadowInfo","_buildView","_updateView","_resetLocation","_resetInterval","barGroup","_renderBackground","_renderDataShadow","_positionGroup","coordRect","_findCoordRect","positionInfo","layoutParams","getLayoutParams","layoutRect","targetAxisModel","otherAxisInverse","_getViewExtent","_onClickPanelClick","_prepareDataShadowInfo","otherDim","otherDataExtent","otherOffset","otherShadowExtent","thisShadowExtent","areaPoints","thisCoord","stride","lastIsEmpty","otherCoord","thisAxis","getOtherDim","thisDim","displaybles","handleLabels","getCursor","_onDragMove","ondragstart","_showDataInfo","_onDragEnd","onmouseover","onmouseout","subPixelOptimizeRect","handleIndex","bRect","handleColor","viewExtent","_updateInterval","handleEnds","viewExtend","nonRealtime","handleInterval","handleHeight","_updateDataInfo","labelTexts","dataInterval","_formatLabel","orderedHandleEnds","barTransform","getTransform","transformDirection","textPoint","valueStr","showOrHide","vertex","_dispatchZoomAction","localPoint","linkedNodesFinder","createLinkedNodesFinder","effectedModels","getTargetSeries","seriesModelMap","isOverallFilter","overallReset","percentRange","AXIS_DIMS","COORDS","coordType","createNameEach","capitalNames","capitalAttrs","nameObj","capital","forEachNode","forEachEdgeType","edgeIdGetter","sourceNode","edgeType","absorb","existsLink","processSingleNode","isNodeAbsorded","isLinked","hasLink","edgeId","ATTR","newSnapshot","giveStore","snapshot","dataZoomInfo","theDataZoomId","theCoordId","dataZoomInfos","cleanStore","createController","controllerParams","mergeControllerParams","controlType","newRecord","onPan","onZoom","wrapAndDispatch","getRange","typePriority","oneType","registerSubTypeDefaulter","_sourceHelper","detectSourceFormat","SERIES_LAYOUT_BY_COLUMN","DatasetModel","seriesLayoutBy","sourceHeader","makeAction","geoModel","regions","layoutUtil","graphicOption","GraphicModel","_elOptionsToUpdate","newList","existList","flattenedList","_flatten","mappingResult","mappingToExists","makeIdAndName","elOptionsToUpdate","resultItem","newElOption","setKeyInfoToNewElOption","mergeNewElOptionToExist","setLayoutInfoToExist","$action","optionList","parentOption","useElOptionsToUpdate","_elMap","_lastGraphicModel","graphicModel","_clear","_updateElements","_relocate","elMap","rootGroup","existEl","targetElParent","hv","elOptionCleaned","getCleanedElOption","removeEl","__ecGraphicWidth","__ecGraphicHeight","elOptions","parentEl","containerInfo","boundingMode","bounding","__ecGraphicId","existElParent","removeKey","LOCATION_PARAMS","isSetLoc","isSet","existElOption","exist","keyInfo","newElParentOption","newElOptCopy","mergeLayoutParam","ignoreSize","copyLayoutParams","existItem","Eventful","interactionMutex","mathPow","COVER_Z","UNSELECT_THRESHOLD","MIN_RESIZE_LINE_WIDTH","MUTEX_RESOURCE_KEY","DIRECTION_MAP","CURSOR_MAP","DEFAULT_BRUSH_OPT","baseUID","_zr","_brushType","_brushOption","_panels","_track","_covers","_creatingCover","_creatingPanel","_enableGlobalPan","_uid","_handlers","mouseHandlers","doDisableBrush","doEnableBrush","panelOpts","panels","eachCover","brushOptionList","tmpIdPrefix","oldCovers","newCovers","creatingCover","oldGetKey","addOrUpdate","cover","__brushOption","newBrushOption","endCreating","createCover","updateCoverAfterCreation","unmount","clearCovers","take","release","coverRenderers","updateZ","coverRenderer","getCoverRenderer","updateCoverShape","getPanelByPoint","localCursorPoint","panel","pn","getPanelByCover","covers","originalLength","shouldShowCover","track","getTrackEnds","createBaseRectCover","doDrift","edgeNames","makeStyle","updateBaseRect","localRange","x2a","y2a","widtha","heighta","updateRectShape","mainEl","globalDir","getGlobalDirection","pointsToRect","clipByPanel","formatRectRange","localDirection","inverseMap","driftRect","toRectRange","fromRectRange","rectRange","localDelta","toLocalDelta","namePart","ind","driftPolygon","localD","localZero","xmin","ymin","xmax","ymax","resetCursor","currPanel","setCursorStyle","rawE","mainShapeContain","updateCoverByMouse","thisBrushOption","eventParams","determineBrushType","coverBrushOption","getCreatingRange","defaultBrushType","mousedown","handleDragEnd","mousemove","mouseup","getLineRenderer","localTrack","COORD_CONVERTS","INCLUDE_FINDER_MAIN_TYPES","targetInfoList","_targetInfoList","foundCpts","parseFinder","targetInfoBuilders","builder","include","proto","matchOutputRanges","coordRange","coordRanges","coordConvert","__rangeOffset","diffProcessor","xyMinMax","findTargetInfo","coordSyses","rangeOffset","getScales","getDefaultBrushType","getPanelRect","areaPanelId","targetInfoMatchers","formatMinMax","includeMainTypes","xAxisModels","yAxisModels","gridModels","gridModelMap","xAxesHas","yAxesHas","cartesians","getCartesians","panelRectBuilder","xAxisDeclared","yAxisDeclared","geoModels","axisConvert","rangeOrCoordRange","xminymin","xmaxymax","axisNameIndex","toLocalCoord","axisDiffProcessor","refer","xyMinMaxCurr","xyMinMaxOrigin","sizeCurr","sizeOrigin","getFixedItemStyle","updateMapSelectHandler","mapOrGeoModel","fromView","_mouseDownFlag","__regions","action","updateMapSelected","otherRegionEl","_updateGroup","isGeo","itemStyleAccessPath","hoverItemStyleAccessPath","labelAccessPath","hoverLabelAccessPath","regionGroup","compoundPath","CompoundPath","paths","regionModel","dataIdx","geometries","geometry","exterior","interiors","isDataNaN","groupRegions","hoverSilentOnTouch","makeActionBase","getViewRectAfterRoam","pointerChecker","_opt","mousedownHandler","mousemoveHandler","mouseupHandler","mousewheelHandler","mousewheel","pinchHandler","pinch","isDragging","isPinching","_pinching","notLeftMouse","checkKeyBinding","gestureEvent","isTaken","wheelDelta","zoomDelta","pinchScale","pinchX","pinchY","zoomX","zoomY","roamController","setting","normalizeRect","localPoints","clipPointsByRect","specifiedXYIndex","brushWidth","targetModel","IRRELEVANT_EXCLUDES","targetCoordSysModel","getComponentByElement","topTarget","resourceKey","userKey","getStore","uKey","layoutBox","boxLayoutParams","viewportSize","makeBackground","newZoom","zoomScale","retrieveRawAttr","targetList","_targetList","ecList","_selectTargetMap","targetMap","unSelect","toggleSelected","restrict","extentSpan","originalDistSign","getSpanSign","extentMinSpan","realExtent","currDistSign","legendFilter","DEFAULT_COMPONENT_NAME","LegendModel","_updateData","hasSelected","potentialData","availableNames","eachRawSeries","potentialSeriesName","_availableNames","borderRadius","itemGap","inactiveColor","_listComponent","newlineDisabled","_contentGroup","_backgroundEl","getContentGroup","legendModel","resetInner","itemAlign","renderInner","mainRect","layoutInner","contentGroup","legendDrawnMap","selectMode","newline","getSeriesByName","legendSymbolType","_createItem","dispatchSelectAction","dispatchHighlightAction","dispatchDownplayAction","itemIcon","tooltipModel","legendGlobalTooltipModel","hitRect","legendIndex","__legendDataIndex","contentRect","dataName","getDisplayList","ScrollableLegendModel","setScrollDataIndex","scrollDataIndex","pageButtonItemGap","pageButtonGap","pageButtonPosition","pageFormatter","pageIcons","pageIconColor","pageIconInactiveColor","pageIconSize","pageTextStyle","extraOpt","inputPositionParams","mergeAndNormalizeLayoutParams","LegendView","ScrollableLegendView","_currentIndex","_controllerGroup","_showController","__rectSize","controllerGroup","createPageButton","pageTextStyleModel","iconIdx","pageDataIndexName","_pageGo","orientIdx","hw","yx","controllerRect","showController","contentPos","containerPos","controllerPos","pageInfo","_getPageInfo","pageIndex","contentPosition","_updatePageInfoView","legendId","canJump","pageText","pageCount","currDataIndex","containerRectSize","pagePrevDataIndex","pageNextDataIndex","targetItemGroup","itemRect","itemLoc","winRect","startIdx","getItemRect","startItem","startRect","legendSelectActionHandler","methodName","selectedMap","isToggleSelect","isItemSelected","filterSeries","markArea","markLine","markPoint","MarkerModel","colorUtil","markerHelper","MarkerView","markAreaTransform","maModel","lt","dataTransform","rb","ltCoord","rbCoord","isInifinity","ifMarkLineHasOnlyDim","fromCoord","toCoord","otherDimIndex","markAreaFilter","getSingleMarkerEndPoint","xPx","yPx","dimPermutations","markAreaModel","areaData","renderSeries","areaGroupMap","markerGroupMap","polygonGroup","__keep","createList","__data","dataModel","coordDimsInfos","optData","markLineTransform","mlModel","mlType","valueDataDim","numCalculate","valueIndex","mlFrom","mlTo","markLineFilter","updateSingleMarkerEndLayout","isFrom","markLineModel","mlData","fromData","__from","toData","__to","lineDrawMap","updateDataVisualAndLayout","updateMarkerLayout","mpData","markPointModel","mpModel","symbolDrawMap","isSysCoord","dataFormatMixin","fillLabel","createdBySelf","hostSeries","__hostSeries","newOpt","modelPropName","markerOpt","markerModel","markerModelKey","hasXOrY","hasXAndY","getPrecision","valueAxisDim","markerTypeCalculatorWithExtent","otherDataDim","targetDataDim","otherCoordIndex","targetCoordIndex","coordArr","markerTypeCalculator","baseDataDim","dataDimToCoordDim","dimItem","parallelPreprocessor","CLICK_THRESHOLD","handlers","_throttledDispatchExpand","_dispatchExpand","checkTrigger","_mouseDownPoint","mouseDownPoint","getSlidedAxisExpandWindow","behavior","axisExpandWindow","debounceNextCall","barPolar","radarModel","_buildAxes","_buildSplitLineAndArea","axisBuilders","indicatorAxis","showSplitLine","showSplitArea","splitLineColors","splitAreaColors","getColorIndex","areaOrLine","areaOrLineColorList","ticksRadius","Ring","realSplitNumber","axesTicksPoints","prevPoints","TimelineModel","SliderTimelineModel","checkpointStyle","controlStyle","showPlayBtn","showPrevBtn","showNextBtn","itemSize","playIcon","stopIcon","nextIcon","prevIcon","TimelineView","TimelineAxis","_axis","_viewRect","_timer","_currentPointer","_labelGroup","timelineModel","mainGroup","_createGroup","labelGroup","_createAxis","_renderAxisLabel","_position","_doPlayStop","_clearTimer","labelPosOpt","labelAlignMap","labelBaselineMap","rotationMap","mainLength","controlModel","showControl","controlSize","controlGap","sizePlusGap","playPosition","prevBtnPosition","nextBtnPosition","controlPosition","xRight","labelAlign","labelBaseline","rotateOriginX","rotateOriginY","viewBound","getBound","mainBound","labelBound","mainPosition","labelsPosition","mainBoundIdx","toBound","setOrigin","targetGroup","dimIdx","boundIdx","createScaleByModel","setExtent","_customizeScale","niceTicks","getTicksLabels","newGroup","_renderAxisLine","_renderAxisTick","hoverStyleModel","symbolOpt","_changeTimeline","giveSymbol","_renderControl","playState","getPlayState","makeBtn","_handlePlayClick","iconPath","willRotate","btn","makeIcon","_renderCurrentPointer","getCurrentIndex","onCreate","_handlePointerDrag","_handlePointerDragend","pointerMoveTo","onUpdate","nextState","_pointerChangeTimeline","mousePos","_toAxisCoord","targetDataIndex","_findNearestTick","handleFrame","axisCoord","nextIndex","objPath","noAnimation","dragging","Axis","coordExtent","_autoLabelInterval","getAxisLabelInterval","ComponentModel","autoPlay","rewind","playInterval","_initData","setCurrentIndex","isIndexMax","setPlayState","dataArr","idxArr","dimType","timelineOpt","compatibleEC2","ec2Types","transferItem","itemStyleEmphasis","labelNormal","excludeLabelAttr","resetOption","subtext","subtarget","subtextStyle","subtextStyleModel","disableBox","subText","subTextEl","sublink","groupRect","layoutOption","alignStyle","featureManager","ToolboxModel","featureOpt","featureName","Feature","showTitle","iconStyle","listComponentHelper","toolboxModel","featureOpts","_features","featureNames","_featureNames","processFeature","oldName","featureModel","isUserFeatureName","unusable","createIconPaths","setIconStatus","iconName","iconPaths","iconStatus","iconStyleModel","iconStyleEmphasisModel","icons","getIcons","titles","iconStr","__title","titleText","makeFont","needPutOnTop","topOffset","lang","brushLang","Brush","_brushMode","keep","isBrushed","availableIcons","command","dataViewLang","dataView","BLOCK_SPLITER","ITEM_SPLITER","groupSeries","seriesGroupByCategoryAxis","otherSeries","assembleSeriesWithCategoryAxis","tables","headers","assembleOtherSeries","argLen","getContentFromModel","isTSVFormat","block","firstLine","itemSplitRegex","parseTSVContents","tsv","tsvLines","header","parseListContents","hasName","parseContents","blockMetaList","blocks","blockMeta","axisKey","_dom","readOnly","optionToContent","contentToOption","textareaColor","textareaBorderColor","buttonColor","buttonTextColor","getDom","cssText","viewMain","textarea","htmlOrDom","getOption","isDom","buttonContainer","buttonStyle","closeButton","refreshButton","close","which","selectionStart","selectionEnd","tryMergeDataOption","newVal","newSeriesOptList","history","dataZoomLang","dataZoom","DATA_ZOOM_ID_BASE","DataZoom","_isZoomActive","back","updateZoomBtnStatus","updateBackBtnStatus","nextActive","dataZoomSelectActive","retrieveAxisSetting","setBatch","findDataZoom","dzModel","zoomActive","dataZoomOpts","toolboxOpt","dataZoomOpt","addForAxis","axisIndicesName","givenAxisIndices","forEachComponent","axisOpt","$fromToolbox","magicTypeLang","magicType","MagicType","tiled","seriesOptGenreator","radioTypes","generateNewSeriesTypes","newSeriesOpt","radio","currentType","restoreLang","Restore","saveAsImageLang","saveAsImage","SaveAsImage","excludeComponents","$a","download","getConnectedDataURL","href","browser","ie","msSaveOrOpenBlob","bstr","atob","u8arr","Uint8Array","blob","Blob","tab","write","eventUtil","toCamelCase","vendors","gCssText","assembleTransition","transitionCurve","transitionText","vendorPrefix","assembleFont","assembleCssText","transitionDuration","toHex","borderName","camelCase","TooltipContent","wxa","_show","_hideTimeout","onmouseenter","_enterable","_inContent","normalizeEvent","onmouseleave","hideLater","_hideDelay","stl","domStyle","setContent","setEnterable","enterable","viewportRootOffset","getViewportRootOffset","offsetTop","showContent","alwaysShowContent","displayMode","confine","showDelay","hideDelay","extraCssText","animationEasingUpdate","axisPointerViewHelper","proxyRect","tooltipContent","_tooltipContent","_tooltipModel","_lastDataByCoordSys","_alwaysShowContent","_initGlobalListener","_keepShow","_tryShow","_hide","_lastX","_lastY","_refreshUpdateTimeout","manuallyShowTip","_ticket","_manuallyAxisShowTip","pointInfo","findHover","manuallyHideTip","buildTooltipModel","_showAxisTooltip","_showSeriesItemTooltip","_showComponentItemTooltip","_showOrMove","_showTimout","singleDefaultHTML","singleParamsList","singleTooltipModel","itemCoordSys","axisValue","seriesDefaultHTML","valueLabel","axisValueLabel","positionExpr","_updateContentNotChangedOnAxis","_updatePosition","_showTooltipContent","tooltipTrigger","defaultHtml","asyncTicket","subTooltipModel","formatTpl","cbTicket","contentSize","viewSize","calcTooltipPosition","refixTooltipPosition","isCenterAlign","confineTooltipPosition","lastCoordSys","contentNotChanged","lastItemCoordSys","indexCoordSys","lastDataByAxis","thisItemCoordSys","thisDataByAxis","lastItem","indexAxis","thisItem","lastIndices","newIndices","lastIdxItem","newIdxItem","modelCascade","resultModel","gapH","gapV","getOuterSize","borderLeftWidth","borderRightWidth","borderTopWidth","borderBottomWidth","domWidth","domHeight","rectWidth","rectHeight","VisualMapModel","DEFAULT_BAR_BOUND","ContinuousModel","calculable","hoverLink","hoverLinkDataSize","hoverLinkOnHandle","resetExtent","resetVisual","_resetRange","resetItemSize","auto","completeVisualOption","stateList","setSelected","getSelected","findTargetDataIndices","getDataDimension","getVisualMeta","getColorVisual","oVals","getColorStopValues","iVals","setStop","valueState","iIdx","oIdx","iLen","oLen","stopsLen","stopValues","VisualMapView","HOVER_LINK_SIZE","HOVER_LINK_OUT","ContinuousView","_shapes","_dataInterval","_useHandle","_hoverLinkDataIndices","_hovering","doRender","_renderBar","dataRangeText","_renderEndsText","_enableHoverLinkToSeries","_enableHoverLinkFromSeries","positionGroup","endsIndex","textGap","_applyTransform","shapes","getItemAlign","_createBarGroup","createPolygon","_dragHandle","handleThumbs","handleLabelPoints","_createHandle","_createIndicator","onDrift","onDragEnd","handleThumb","createHandlePoints","handleLabel","handleLabelPoint","indicatorLabel","indicatorLabelPoint","visualMapId","_clearHoverLinkToSeries","useHoverLinkOnHandle","_doHoverLinkToSeries","forSketch","outOfRangeHandleEnds","inRangeHandleEnds","visualInRange","_createBarVisual","visualOutOfRange","barColor","barPoints","_updateHandle","forceState","convertOpacityToAlpha","_makeColorGradient","symbolSizes","getControllerVisual","_createBarPoints","handlesColor","sampleNumber","currValue","formatValueText","_showIndicator","cursorValue","rangeSymbol","halfHoverLinkSize","createIndicatorPoints","_hoverLinkFromSeriesMouseOver","_hideIndicator","_clearHoverLinkFromSeries","cursorPos","hoverOnBar","getHalfHoverLinkSize","hoverRange","oldBatch","newBatch","resultBatches","compressBatches","_dispatchHighDown","convertDataIndex","isTargetSeries","isRange","extentMax","visualDefault","reformIntervals","PiecewiseModel","minOpen","maxOpen","itemSymbol","_pieceList","_mode","_determineMode","resetMethods","_resetSelected","visualTypesInPieces","visualTypes","listVisualTypes","isCategory","pieces","exists","getSelectedMapKey","hasSel","findPieceIndex","pieceIndex","pIdx","getRepresentValue","representValue","pieceInterval","splitStep","cate","normalizeReverse","pieceListItem","closeList","infinityList","useMinMax","lg","retrieveVisuals","edgeSymbols","PiecewiseVisualMapView","_getItemAlign","viewData","_getViewData","endsText","viewPieceList","_onItemClick","_enableHoverLink","indexInModelPieceList","_createItemSymbol","visualState","onHoverLink","modelOption","shapeParam","newKey","eachVisual","replacableOptionKeys","dataBound","contentColor","controllerVisuals","supplementVisualOption","getTargetSeriesIndices","optionSeriesIndex","isMinMax","optDim","listDimensions","completeSingle","completeInactive","completeController","defa","stateExist","stateAbsent","optExist","optAbsent","visualData","isValidType","symbolExists","symbolSizeExists","autoPositionValues","targetValue","visualCluster","visualObj","setter","mappings","prepareVisualTypes","visualMapping","__alphaForOpacity","dependsOn","realIndex","paramsSet","reals","fakeValue","layoutInput","rParam","splitList","VISUAL_PRIORITY","COMPONENT","createOnAllSeries","resetDefines","incrementalApplyVisual","concreteDim","resultVisual","dev","fixExtentWithBands","nTick","normalizedExtent","_extent","_labelInterval","alignWithLabel","bands","getBands","getRotate","Transformable","TransformDummy","_roamTransformable","_rawTransformable","_center","_zoom","_rect","transformTo","rawTransform","calculateTransform","_updateTransform","centerCoord","_updateCenterAndZoom","getDefaultCenter","rawRect","rawTransformMatrix","defaultCenter","roamTransformable","rawTransformable","_rawTransform","invTransform","noRoam","convertToPixel","doConvert","convertFromPixel","nameRotate","nameTruncate","nameTextStyle","nameGap","splitArea","axisDefault","deduplication","timeAxis","logAxis","logBase","OrdinalScale","IntervalScale","calBarWidthAndOffset","getScaleExtent","fixMin","fixMax","originalExtent","setBlank","eqNaN","getNeedCrossZero","isBaseAxisAndHasBarSeries","getSeriesByType","adjustScaleForOverflow","barWidthAndOffset","baseAxisKey","barsOnCurrentAxis","minOverflow","maxOverflow","totalOverFlow","oldRange","oldRangePercentOfNew","overflowBuffer","niceScaleExtent","niceExtent","minInterval","maxInterval","getClass","ifAxisCrossZero","tickCoords","axisRotate","textSpaceTakenRect","autoLabelInterval","accumulatedLabelInterval","union","tpl","rangeStart","rangeEnd","resetRange","OrdinalMeta","AXIS_TYPES","BaseAxisModelClass","axisTypeDefaulter","extraDefaultOption","themeModel","getTheme","getDefaultOption","__ordinalMeta","createByAxisModel","PROXIMATE_ONE_DAY","Calendar","_rangeInfo","_sw","_sh","_firstDayOfWeek","parseDate","_lineWidth","_getRangeInfo","_initRangeOption","weeks","whNames","cellNumbers","cellSizeSpecified","whGlobal","calendarRect","dayInfo","nthWeek","pointToDate","nthX","nthY","_getDateByWeeksAndDay","allDay","startDateNum","endDateNum","rangeInfo","nthDay","calendarList","calendarSeries","sizeCalculable","CalendarModel","hvIdx","cellWidth","cellHeight","dayCount","Axis2D","axisModelCreator","axisModelCommonMixin","AxisModel","restoreData","gridIndex","gridId","getAxisType","extraOption","dimAxisMapper","_axes","Cartesian","_dimList","addAxis","_dataCoordConvert","dimList","Cartesian2D","axisX","axisY","reserved","xAxisExtent","yAxisExtent","isAxisUsedInTheGrid","rotateTextRect","rotateRadians","boundingBox","plain","beforeWidth","beforeHeight","afterWidth","afterHeight","rotatedRect","getLabelUnionRect","axisLabelModel","unrotatedSingleRect","singleRect","Grid","_coordsMap","_coordsList","_axesMap","_axesList","_initCartesian","gridProto","axesMap","_updateScale","fixAxisOnZero","canNotOnZeroToAxis","ignoreContainLabel","axesList","adjustAxes","labelUnionRect","updateAxisTransform","axesMapOnDim","coordList","_findConvertTarget","getReferringComponents","coordsList","axisPositionUsed","axesCount","createAxisCreator","isCartesian2D","axesModels","findAxesModels","unionExtent","unionExtentFromData","coordBase","axisExtentSum","axesTypes","grids","containLabel","dataToCoordSize","dataSize","halfSize","parseGeoJson","fixNanhai","fixTextCoord","fixGeoCoord","fixDiaoyuIsland","geoFixFuncs","Geo","geoJson","specialAreas","_nameCoordMap","loadGeoJson","containCoord","message","regionsMap","addGeoCoord","specialArea","_regionsMap","fixFunc","getRegionByCoord","geoCoord","getGeoCoord","regionRect","selectableMixin","geoCreator","GeoModel","getFilledRegions","_optionModelMap","optionModelMap","regionOpt","Region","properties","MAX_NUMBER","min2","max2","loopGeo","geoCoordMap","coordsOffsetMap","coordFix","resizeGeo","leftTop","rightBottom","boxLayoutOption","useCenterAndSize","setGeoCoords","geoList","mapData","mapModelGroupBySeries","nameMapList","singleMapSeries","originRegionArr","regionsArr","decode","json","UTF8Encoding","encodeScale","UTF8Scale","coordinates","encodeOffsets","coordinate","decodePolygon","featureObj","getActiveState","ParallelAxis","mathFloor","mathCeil","Parallel","_axesLayout","_init","parallelAxisIndex","_updateAxesFromSeries","_makeLayoutInfo","axisBase","layoutBase","pixelDimIndex","pAxis","pLayout","layoutLength","_layoutAxes","layoutExtent","axisCount","axisExpandWidth","axisExpandCount","axisExpandable","winSize","axisExpandCenter","axisCollapseWidth","winInnerIndices","axisExpandWindow0Pos","layoutAxisWithExpand","layoutAxisWithoutExpand","positionTable","rotationTable","axisCoordToPoint","dataDimensions","hasActiveSet","pointCoord","triggerArea","useJump","axisExpandRate","axisExpandDebounce","axisExpandSlideTriggerArea","axisExpandTriggerOn","parallelAxisDefault","_initDimensions","parallelAxis","coordSysList","createParallelIfNeeded","mergeAxisOptionFromParallel","parallel","hasParallelSeries","axisOption","parallelOption","AngleAxis","dataToAngle","angleToData","PolarAxisModel","polarId","polarAxisDefaultExtendedOption","RadiusAxis","Polar","_radiusAxis","_angleAxis","dataToRadius","radiusToData","maxAngle","findAxisModel","foundAxisModel","_axisHelper","resizePolar","polarModel","updatePolarScale","setAxis","polarCreator","polarList","IndicatorAxis","Radar","_indicatorAxes","getIndicatorModels","indicatorModel","indicatorIndex","minRadianDiff","closestAxis","closestAxisIdx","coodToData","radarSeries","increaseInterval","exp10","rawExtent","fixedMin","fixedMax","nicedSplitNumber","halfSplitNumber","radarList","valueAxisDefault","defaultsShow","RadarModel","showName","nameFormatter","indicatorModels","indicatorOpt","iNameTextStyle","indName","SingleAxis","Single","_adjustAxis","_updateAxisTransform","extentSum","singles","defaultKeyGetter","oldArr","newArr","oldKeyGetter","newKeyGetter","_old","_new","_oldKeyGetter","_newKeyGetter","_add","_remove","oldDataIndexMap","newDataIndexMap","oldDataKeyArr","newDataKeyArr","initIndexMap","keyArr","keyGetterName","existence","_clazz","enableClassCheck","generateNodeKey","_directed","_nodesMap","_edgesMap","graphProto","isDirected","nodesMap","hostGraph","rawIdx","edgesMap","Edge","getEdge","breadthFirstTraverse","startNode","__visited","currentNode","otherNode","degree","inDegree","outDegree","createGraphDataProxyMixin","hostName","ignoreParent","defaultDimValueGetters","DefaultDataProvider","summarizeDimensions","UNDEFINED","ID_PREFIX","dataCtors","Int32Array","getIndicesCtor","CtorUint32Array","CtorUint16Array","Uint16Array","_rawCount","cloneChunk","originalChunk","TRANSFERABLE_PROPERTIES","transferProperties","__wrappedMethods","dimensionInfos","dimensionName","dimensionInfo","_dimensionInfos","_indices","_count","_nameList","_idList","_optionModels","_visual","_itemVisuals","hasItemVisual","_itemLayouts","_graphicEls","_chunkSize","_chunkCount","_rawData","_rawExtent","_approximateExtent","_dimensionsSummary","listProto","getDimensionsOnCoord","dataDimsOnCoord","notProvider","isArrayLike","_nameRepeatCount","_dimValueGetter","_initDataFromProvider","getProvider","persistent","chunkSize","dimensionInfoMap","idList","nameRepeatCount","nameDimIdx","chunkCount","lastChunkIndex","_nameDimIdx","itemId","_idDimIdx","DataCtor","resizeChunkArray","newStore","getItem","chunkIndex","chunkOffset","dimStorage","_getNameFromStore","_getIdFromStore","idDimIdx","getIndices","chunkStore","stackedValue","_getFast","dimData","initialExtent","currEnd","cacheName","useRaw","dimExtent","indexOfRawIndex","rawDataIndex","maxDistance","nearestIndices","getRawIndexWithoutIndices","getRawIndexWithIndices","normalizeDimensions","validateDimensions","dimSize","dim0","originalCount","quickFinished","chunkStorage","dimStorage2","chunkStorage2","val2","dimk","cloneListForMapAndSample","excludeDimensions","allDimensions","originalStorage","cloneDimStore","originalDimStore","newDimStore","tmpRetValue","retValue","dimStore","downSample","rate","sampleValue","sampleIndex","targetStorage","frameValues","frameSize","originalChunkIndex","originalChunkOffset","sampleFrameIdx","sampleChunkIndex","sampleChunkOffset","otherList","thisList","clearItemLayouts","itemVisual","clearAllVisual","setItemDataAndSeriesIndex","dimensionInfoList","injectFunction","originalMethod","TRANSFERABLE_METHODS","CHANGABLE_METHODS","_needCollect","needCollect","_deduplication","_map","dedplication","getOrdinal","getOrCreateMap","parseAndCollect","isTypedArray","SOURCE_FORMAT_UNKNOWN","SOURCE_FORMAT_TYPED_ARRAY","SOURCE_FORMAT_KEYED_COLUMNS","fromDataset","dimensionsDetectCount","suppressVisitSub","updateDepthAndHeight","includeSelf","getLevelModel","leavesModel","getLeavesModel","levelOptions","leavesOption","_nodes","getNodeByName","dataRoot","treeOptions","listData","dimMax","buildHierarchy","addChild","guessOrdinal","OTHER_DIMENSIONS","completeDimensions","sysDims","dataDimNameMap","coordDimNameMap","dimCount","getDimCount","dimDefItem","userDimName","displayName","validDataDims","resultDimIdx","applyDim","availDimIdx","sysDimItem","sysDimIndex","sysDimItemDimsDef","sysDimItemOtherDims","genName","fromZero","assert","isDataItemOption","SOURCE_FORMAT_ARRAY_ROWS","SOURCE_FORMAT_OBJECT_ROWS","_source","_offset","_dimSize","methods","providerMethods","providerProto","appendDataSimply","countSimply","getItemSimply","col","newCol","oldCol","rawValueGetters","arrayRows","getRawValueSimply","objectRows","keyedColumns","typedArray","getDimValueSimply","converDataValue","summary","coordDimMap","defaultedLabel","coordDimArr","mayLabelDimType","otherDimArr","encodeLabel","defaultedTooltip","encodeTooltip","DATAS","MAIN_DATA","main","linkAll","transferInjection","cloneShallowInjection","changeInjection","isMainData","linkSingle","getLinkedData","SERIES_LAYOUT_BY_ROW","datasetModel","resetSourceDefaulter","datasetMap","prepareSource","getDatasetModel","datasetOption","completeResult","completeBySourceData","makeDefaultEncode","normalizeDimensionsDefine","findPotentialName","arrayRowsTravelFirst","objectRowsCollectDimensions","colArr","potentialNameDimIndex","maxLoop","firstIndex","encodeItemName","encodeSeriesName","nSeriesMap","cSeriesMap","datasetRecord","categoryWayDim","valueWayDim","firstNotOrdinal","doGuessOrdinal","nameDimIndex","thisData","detectValue","zrender","colorTool","timsort","GlobalModel","OptionManager","_throttle","aria","loadingDefault","Scheduler","lightTheme","darkTheme","parseClassType","version","TEST_FRAME_REMAIN_TIME","PRIORITY_PROCESSOR_FILTER","PRIORITY_PROCESSOR_STATISTIC","PRIORITY_VISUAL_LAYOUT","PRIORITY_VISUAL_GLOBAL","PRIORITY_VISUAL_CHART","PRIORITY_VISUAL_COMPONENT","PRIORITY_VISUAL_BRUSH","FILTER","LAYOUT","GLOBAL","CHART","IN_MAIN_PROCESS","HAS_GRADIENT_OR_PATTERN_BG","OPTION_UPDATED","ACTION_REG","createRegisterEventWithLowercaseName","MessageCenter","ECharts","dom","theme","themeStorage","defaultRenderer","_throttledZrFlush","_theme","_chartsViews","_chartsMap","_componentsViews","_componentsMap","_coordSysMgr","createExtensionAPI","_scheduler","_messageCenter","_pendingActions","prioritySortFunc","__prio","visualFuncs","dataProcessorFuncs","_onframe","setAsPrimitive","echartsProto","_disposed","scheduler","prepare","updateMethods","flushPendingActions","triggerUpdatedEvent","unfinished","remainTime","performSeriesTasks","performDataProcessorTasks","updateStreamModes","performVisualTasks","setOption","notMerge","lazyUpdate","optionManager","optionPreprocessorFuncs","setTheme","dpr","getRenderedCanvas","getSvgDataUrl","svgSupported","pathToSvg","getDataURL","excludesComponentViews","__viewId","groupId","connectedGroups","canvasList","targetCanvas","refreshImmediately","doConvertPixel","containPixel","defaultMainType","getViewOfComponentModel","getViewOfSeriesModel","prepareAndUpdate","coordSysMgr","stackSeriesData","clearColorPalette","isSingleCanvas","clearColor","colorArr","performPostUpdateFuncs","ecIns","componentDirtyList","componentView","__alive","seriesDirtyMap","chartView","setDirty","dirtyMap","markUpdateMethod","updateVisual","restorePipelines","prepareStageTasks","prepareView","updateDirectly","callView","condition","__model","_loadingFX","optionChanged","refresh","needPrepare","chartsMap","showLoading","hideLoading","loadingEffects","makeActionFromEvent","eventObj","eventActionMap","actions","doDispatchAction","weChat","actionWrap","cptType","payloads","batched","eventObjBatch","isHighDown","pendingActions","isComponent","viewMap","doPrepare","viewId","classType","__id","__ecComponentInfo","renderTask","stackedDataMap","previousStack","renderComponents","dirtyList","updatePayload","perform","getPerformArgs","updateBlend","updateHoverLayerStatus","postUpdateFuncs","MOUSE_EVENT_NAMES","eveName","actionType","DOM_ATTRIBUTE_KEY","elCount","blendMode","blend","eachPendingDisplayable","ecInstance","modelInfo","idBase","groupIdBase","mapDataStores","enableConnect","STATUS_PENDING","STATUS_UPDATING","STATUS_UPDATED","STATUS_KEY","updateConnectedChartsStatus","charts","otherChart","otherCharts","existInstance","getInstanceByDom","connect","disConnect","disconnect","getInstanceById","registerTheme","preprocessorFunc","processor","normalizeRegister","registerPostUpdate","postUpdateFunc","getCoordinateSystemDimensions","layoutTask","visualTask","defaultPriority","stageHandler","wrapStageHandler","__raw","registerLoading","loadingFx","setCanvasCreator","creator","$override","registerMap","dataTool","___ec_export","ecHelper","parseGeoJSON","_List","_Model","_Axis","_env","ecUtil","util","_completeDimensions","_createDimensions","createScale","mixinAxisModelCommonMethods","typeNames","effectScatter","boxplot","candlestick","heatmap","sankey","funnel","gauge","pictorialBar","themeRiver","sunburst","general","withTitle","withoutTitle","withName","withoutName","multiple","separator","allData","partialData","STACK_PREFIX","getSeriesStackId","getAxisKey","stackId","widthAndOffsets","doCalBarWidthAndOffset","barSeries","seriesInfoList","barCategoryGap","columnsMap","seriesInfo","columnsOnAxis","remainedWidth","autoWidthCount","categoryGap","barGapPercent","autoWidth","column","widthSum","lastColumn","lastStackCoords","lastStackCoordsOrigin","columnLayoutInfo","columnOffset","columnWidth","valueAxisStart","lastCoord","lastCoordOrigin","barLayoutPolar","calRadialBar","valueMax","valueMin","stackCoord","isLargeRender","dimLen","tmpIn","tmpOut","maskColor","mask","textDistance","animateShape","componentUtil","enableClassManagement","boxLayoutMixin","$constructor","getUID","newCptOption","optList","Class","superClass","registerWhenExtend","enableSubTypeDefaulter","enableTopologicalTravel","getDependencies","deps","getClassesByMainType","globalDefault","colorPaletteMixin","OPTION_INNER_KEY","_optionManager","baseOption","mountOption","initBase","timelineOption","getTimelineOption","mediaOptions","getMediaOption","mediaOption","componentsMap","newCptTypes","componentOption","hasClass","topologicalTravel","getAllClassMainTypes","visitComponent","newCptOptionList","mapResult","determineSubType","getComponentsByTypes","ComponentModelClass","createSeriesIndices","_seriesIndicesMap","_seriesIndices","isIdInner","cpts","isIdArray","cpt","isNameArray","filterBySubType","queryCond","getQueryCond","doFilter","indexAttr","idAttr","nameAttr","queryResult","oneSeries","getSeriesCount","assertSeriesInitialized","rawSeriesIndex","filteredSeries","componentTypes","isNotTargetSeries","seiresIndex","mergeTheme","themeItem","existComponent","lineStyleMixin","areaStyleMixin","textStyleMixin","itemStyleMixin","doGet","getParent","thisParentModel","setReadOnly","getParentMethod","pathArr","QUERY_REG","_timelineOptions","_mediaList","_mediaDefault","_currentMediaIndices","_optionBackup","_newBaseOption","oldOptionBackup","newParsedOption","parseRawOption","timelineOptions","mediaList","mediaDefault","isRecreate","optionBackup","applyMediaQuery","indicesEquals","media","singleMedia","preProcess","realMap","aspectratio","applicatable","matched","operator","realAttr","real","expect","indices1","indices2","oldOption","newCptOpt","oldCptOpt","formatTime","getTooltipMarker","_task","createTask","dataTask","dataTaskCount","dataTaskReset","wrapData","dataBeforeProcessed","autoSeriesName","themeSubType","newSeriesOption","task","getCurrentTask","setOutputEnd","outputData","formatArrayValue","vertially","tooltipDims","setEachItem","dimHead","valStr","formatSingleValue","tooltipDimLen","isValueArr","colorEl","animationEnabled","requestColorNum","coordDimToDataDim","pipeTask","getSeriesAutoName","nameArr","dataTaskProgress","onDataSelfChange","pipeline","getPipeline","currentTask","agentStubMap","gradientColor","useUTC","getNearestColorPalette","paletteNum","colorIdx","colorNameMap","scopeFields","defaultColorPalette","layeredColorPalette","colorPalette","DIMENSION_LABEL_REG","marker","labelProp","lineType","dotSize","dashSize","PATH_COLOR","isEmphasis","fetch","fetchers","compatStyle","overwrite","compatLayoutProperties","LAYOUT_PROPERTIES","COMPATITABLE_COMPONENTS","isTheme","clockWise","pointerColor","componentName","POSSIBLE_STYLES","compatEC2ItemStyle","itemStyleOpt","styleName","normalItemStyleOpt","emphasisItemStyleOpt","convertNormalEmphasis","optType","useExtend","normalOpt","emphasisOpt","removeEC3NormalStatus","compatTextStyle","labelOpt","TEXT_STYLE_OPTIONS","compatEC3CommonStyles","processSeries","toArr","toObj","parallelOpt","calendarOpt","radarOpt","geoOpt","regionObj","samplers","indexSampler","sampler","roundNumber","_interval","_intervalPrecision","thisExtent","_niceExtent","getIntervalPrecision","intervalScaleGetTicks","getPrecisionSafe","intervalScaleNiceTicks","intervalPrecision","niceTickExtent","scaleProto","intervalScaleProto","roundingErrorFix","mathLog","LogScale","_originalScale","originalScale","powVal","__fixMin","fixRoundingError","__fixMax","approxTickNum","quantity","err","originalVal","_ordinalMeta","rank","_setting","getSetting","_isBlank","scaleHelper","ONE_SECOND","ONE_MINUTE","ONE_HOUR","ONE_DAY","bisect","TimeScale","stepLvl","_stepLvl","approxInterval","scaleLevelsLen","scaleLevels","yearSpan","yearStep","timezoneOffset","fixExtent","safeLimit","_component","_stageTaskMap","isBlock","__pipeline","_pipelineMap","pCtx","progressiveEnabled","__idxInPipeline","bockIndex","pipelineId","dataLen","pipelineMap","stageHandlers","useClearVisual","stageTaskMap","createSeriesStageTask","createOverallStageTask","__block","performStageTasks","stageHandlerRecord","seriesTaskMap","overallTask","overallNeedDirty","needSetDirty","performArgs","performRawSeries","getUpstream","seriesTaskPlan","seriesTaskReset","seriesTaskCount","isVisual","isLayout","overallTaskReset","overallProgress","createStub","stubReset","onDirty","stubOnDirty","agent","upstreamContext","stubProgress","getDownstream","seriesTaskProgress","resetDefine","detectSeriseType","legacyFunc","ecModelMock","apiMock","mockMethods","cond","define","Task","_plan","_onDirty","_dirty","taskProto","upTask","_upstream","planResult","_dueEnd","_outputDueEnd","_progress","_dueIndex","outputDueEnd","_settedOutputEnd","taskIns","downstream","_downstream","downTask","contrastColor","axisCommon","colorAll","colorLayer","elExistsMap","doneCallback","keysFunction","sortKeysFunction","keyFunction","mapObject","valuesByKey","entriesMap","sortKeyFunction","TYPE_DELIMITER","IS_CONTAINER","checkClassType","RootClass","mandatoryMethods","ExtendedClass","classBase","classAttr","entity","registerClass","makeContainer","componentMainType","throwWhenNotFound","hasSubTypes","originalExtend","subTypeDefaulters","defaulter","componentTypeMain","dependencyGetter","targetNameList","fullNameList","makeDepndencyGraph","noEntryList","targetNameSet","currComponentType","currVertex","isInTargetNameSet","originalDeps","successor","removeEdgeAndAdd","removeEdge","succComponentType","entryCount","createDependencyGraphItem","availableDeps","getAvailableDependencies","dependentName","predecessor","thatItem","dep","upperCaseFirst","TPL_VAR_ALIAS","wrapVar","varName","seriesIdx","paramsList","seriesLen","alias","s2d","isUTC","utc","pathTool","ZImage","RadialGradient","EMPTY_OBJ","extendPath","extendFromString","createFromString","centerGraphic","resizePath","makeImage","imageUrl","onload","pathRect","originWidth","originHeight","positiveOrNegative","doubledPosition","hasFillOrStroke","fillOrStroke","liftColor","lift","cacheElementStl","__hoverStlDirty","__hoverStl","__normalStl","doSingleEnterHover","__isHover","__zr","addHover","insideRollbackOpt","rollbackInsideStyle","applyInsideStyle","insideOriginalTextPosition","doSingleLeaveHover","normalStl","removeHover","doEnterHover","doLeaveHover","setElementHoverStl","onElementMouseOver","__hoverSilentOnTouch","zrByTouch","__isEmphasis","onElementMouseOut","enterEmphasis","leaveEmphasis","normalModel","emphasisModel","normalSpecified","emphasisSpecified","showNormal","showEmphasis","baseText","normalStyleText","emphasisStyleText","specifiedTextStyle","setTextStyleCommon","setText","globalTextStyle","richItemNames","getRichItemNames","richResult","richTextStyle","setTokenTextStyle","rich","richItemNameMap","getAutoColor","textBorderColor","textStrokeWidth","textBorderWidth","originalTextPosition","insideRollback","textLineHeight","textTag","textBackgroundColor","textBorderRadius","textBoxShadowColor","textBoxShadowBlur","textBoxShadowOffsetX","textBoxShadowOffsetY","textShadowColor","textShadowBlur","textShadowOffsetX","textShadowOffsetY","gTextStyleModel","animateOrSetProps","postfix","animationDelay","mat","hBase","vBase","g1","g2","getElMap","getAnimatableProps","elMap1","oldEl","newProp","clipRectByRect","targetRect","HV_NAMES","boxLayout","currentLineMaxSize","nextChild","nextChildRect","nextX","nextY","moveX","moveY","vbox","hbox","containerRect","verticalMargin","horizontalMargin","needLocalTransform","elPos","targetOption","hResult","vResult","newParams","newValueCount","merged","mergedValueCount","enoughParamNumber","hasProp","subOpts","subOptName","newCptOptions","cptOption","idMap","existCpt","idNum","batchA","batchB","mapA","mapB","makeMap","sourceBatch","otherMap","otherDataIndices","isData","innerUniqueIndex","hostObj","parsedKey","queryType","queryParam","RADIAN_EPSILON","_trim","subDomain","subRange","returnStr","eIndex","dotIndex","pixelExtent","dataQuantity","sizeQuantity","acc","digits","votesPerQuota","targetSeats","seats","votes","currentSum","remainder","maxId","pi2","TIME_REG","quantityExponent","nf","littleThan","currClose","Triangle","Diamond","Pin","tanX","tanY","cpLen","cpLen2","Arrow","symbolCtors","roundRect","diamond","pin","arrow","triangle","symbolShapeMakers","symbolBuildProxies","beforeBrush","inBundle","proxySymbol","symbolPathSetColor","innerColor","symbolStyle","symbolShape","__isEmptyBrush","keepAspect","ORIGIN_METHOD","RATE","THROTTLE_TYPE","debounce","currCall","lastCall","lastExec","thisDelay","thisDebounce","debounceDelay","fnAttr","originFn","lastThrottleType","lastRate","renderPlanner","renderTaskPlan","renderTaskReset","toggleHighlight","chartProto","elSetState","childCount","renderTaskProgress","componentProto","CATEGORY_DEFAULT_VISUAL_INDEX","_normalizeData","normalizers","visualHandler","visualHandlers","_doMap","normalizeVisualRange","preprocessForPiecewise","preprocessForSpecifiedCategory","makeApplyVisual","isNormalized","doMapCategory","returnRGBArray","fastLerp","parsedVisual","getSpecifiedVisual","doMapFixed","colorHue","makePartialColorVisualHandler","colorLightness","makeDoMap","symbolCfg","doMapToArray","hasSpecialVisual","originIndex","categoryMap","visualArr","setVisualToOption","doNotNeedPair","applyValue","sourceExtent","addVisualHandler","isPrimary","newVisual","hasVisual","type1","type2","visualType1","visualType2","findClosestWhenOutside","possibleI","pieceValue","updatePossible","newAbs","ariaModel","seriesCnt","maxDataCnt","maxSeriesCnt","displaySeriesCnt","getConfig","seriesLabels","seriesLabel","seriesTpl","getSeriesTypeName","displayCnt","userConfig","seiresModelMap","__paletteScope","dataAll","filteredIdx","singleDataColor","Gradient","colorAccessPath","defaultSymbolType","hasCallback","itemSymbolType","itemSymbolSize","hasKeys","createMappings","__hidden","Creater","visualTypesMap","eachItem","valueOrIndex","rawDataItem","dest","F","lastId","stamp","_leaflet_id","lock","wrapperFn","wrapNum","includeMax","falseFn","formatNum","splitWords","setOptions","getParamString","existingUrl","uppercase","encodeURIComponent","templateRe","emptyImageUrl","getPrefixed","lastTime","timeoutDefer","timeToCall","requestFn","cancelFn","cancelAnimFrame","Util","NewClass","callInitHooks","parentProto","statics","checkDeprecatedMixinEvents","_initHooks","_initHooksCalled","mergeOptions","addInitHook","Mixin","Events","_on","_events","_off","typeListeners","newListener","_firingCount","fire","listens","sourceTarget","_propagateEvent","_eventParents","once","addEventParent","removeEventParent","propagatedFrom","clearAllEventListeners","addOneTimeEventListener","fireEvent","hasEventListeners","Evented","trunc","toPoint","subtract","_subtract","divideBy","_divideBy","multiplyBy","_multiplyBy","scaleBy","unscaleBy","_round","_floor","_ceil","_trunc","distanceTo","Bounds","getBottomLeft","getTopRight","getTopLeft","getBottomRight","toBounds","xIntersects","yIntersects","overlaps","xOverlaps","yOverlaps","LatLngBounds","corner1","corner2","latlngs","_southWest","_northEast","sw2","ne2","LatLng","toLatLng","toLatLngBounds","bufferRatio","heightBuffer","widthBuffer","getSouthWest","getNorthEast","getNorthWest","getNorth","getWest","getSouthEast","getSouth","getEast","latIntersects","lngIntersects","latOverlaps","lngOverlaps","toBBoxString","maxMargin","alt","Earth","wrapLatLng","sizeInMeters","latAccuracy","lngAccuracy","lon","CRS","latLngToPoint","latlng","projectedPoint","projection","project","transformation","pointToLatLng","untransformedPoint","unproject","getProjectedBounds","infinite","wrapLng","wrapLat","wrapLatLngBounds","newCenter","latShift","lngShift","newSw","newNe","R","latlng1","latlng2","lat1","lat2","sinDLat","sinDLon","earthRadius","SphericalMercator","MAX_LATITUDE","Transformation","_a","_b","_c","_d","toTransformation","EPSG3857","code","EPSG900913","svgCreate","pointsToPath","rings","closed","style$1","ielt9","webkit","userAgentContains","android","android23","webkitVer","androidStock","opera","chrome","gecko","safari","phantom","opera12","win","ie3d","webkit3d","WebKitCSSMatrix","gecko3d","any3d","L_DISABLE_3D","mobile","mobileWebkit","mobileWebkit3d","msPointer","PointerEvent","MSPointerEvent","L_NO_TOUCH","DocumentTouch","mobileOpera","mobileGecko","retina","screen","deviceXDPI","logicalXDPI","passiveEvents","supportsPassiveOption","createSVGRect","vml","div","adj","Browser","POINTER_DOWN","POINTER_MOVE","POINTER_UP","POINTER_CANCEL","TAG_WHITE_LIST","_pointers","_pointerDocListener","_pointersCount","addPointerListener","_addPointerStart","_addPointerMove","_addPointerEnd","removePointerListener","onDown","pointerType","MSPOINTER_TYPE_MOUSE","tagName","_handlePointer","_globalPointerDown","_globalPointerMove","_globalPointerUp","pointerId","onMove","buttons","onUp","_touchstart","_touchend","_pre","addDoubleTapListener","touch$$1","doubleTap","onTouchStart","onTouchEnd","cancelBubble","newTouch","removeDoubleTapListener","TRANSFORM","testProp","TRANSITION","TRANSITION_END","create$1","toFront","lastChild","toBack","classes","setClass","removeClass","correspondingElement","setOpacity","_setOpacityIE","filterName","filters","Enabled","Opacity","setPosition","_leaflet_pos","getPosition","disableTextSelection","enableTextSelection","_userSelect","userSelectProperty","disableImageDrag","enableImageDrag","_outlineElement","_outlineStyle","preventOutline","tabIndex","restoreOutline","outline","getSizedParentNode","boundingClientRect","DomUtil","addOne","eventsKey","removeOne","originalHandler","isExternalTarget","filterClick","attachEvent","detachEvent","_stopped","skipped","disableScrollPropagation","disableClickPropagation","fakeStop","returnValue","getMousePosition","wheelPxFactor","getWheelDelta","wheelDeltaY","deltaMode","deltaZ","skipEvents","lastClick","timeStamp","_simulatedClick","_simulated","DomEvent","PosAnimation","newPos","easeLinearity","_el","_inProgress","_duration","_easeOutPower","_startPos","_startTime","_animate","_complete","_animId","_runFrame","_easeOut","crs","zoomAnimation","zoomAnimationThreshold","fadeAnimation","markerZoomAnimation","transform3DLimit","zoomSnap","trackResize","_zoomBoundLayers","_sizeChanged","_initContainer","_initLayout","_onResize","_limitZoom","_zoomAnimated","_createAnimProxy","_proxy","_catchTransitionEnd","_addLayers","_limitCenter","_stop","_loaded","pan","_tryAnimatedZoom","_tryAnimatedPan","_sizeTimer","_resetView","zoomIn","zoomOut","setZoomAround","getZoomScale","viewHalf","containerPoint","latLngToContainerPoint","centerOffset","containerPointToLatLng","_getBoundsCenterZoom","getBounds","paddingTL","paddingTopLeft","paddingBR","paddingBottomRight","getBoundsZoom","paddingOffset","swPoint","nePoint","fitWorld","panBy","_panAnim","_onPanTransitionStep","_onPanTransitionEnd","noMoveStart","_mapPane","_getMapPanePos","_rawPanBy","flyTo","targetZoom","startZoom","u1","sq","easeOut","_flyToFrame","_move","getScaleZoom","_moveEnd","_moveStart","flyToBounds","_panInsideMaxBounds","oldZoom","panInsideBounds","_enforcingBounds","panInside","pixelCenter","pixelPoint","pixelBounds","getPixelBounds","halfPixelBounds","paddedBounds","oldSize","_lastCenter","oldCenter","debounceMoveend","locate","_locateOptions","watch","_handleGeolocationError","onResponse","_handleGeolocationResponse","onError","_locationWatchId","geolocation","watchPosition","getCurrentPosition","stopLocate","clearWatch","latitude","longitude","accuracy","addHandler","HandlerClass","_containerId","_clearControlPos","_resizeRequest","_clearHandlers","_panes","_renderer","createPane","pane","_checkIfLoaded","_moved","layerPointToLatLng","_getCenterLayerPoint","getMinZoom","_layersMinZoom","getMaxZoom","_layersMaxZoom","boundsSize","scalex","scaley","topLeftPoint","_getTopLeftPoint","getPixelOrigin","_pixelOrigin","getPixelWorldBounds","getPane","getPanes","getContainer","toZoom","fromZoom","latLngToLayerPoint","containerPointToLayerPoint","layerPointToContainerPoint","layerPoint","mouseEventToContainerPoint","mouseEventToLayerPoint","mouseEventToLatLng","_onScroll","_fadeAnimated","_initPanes","_initControlPos","panes","_paneRenderers","markerPane","shadowPane","loading","zoomChanged","_getNewPixelOrigin","_getZoomSpan","remove$$1","_targets","onOff","_handleDOMEvent","_onMoveEnd","_findEventTargets","targets","isHover","_draggableMoved","_fireDOMEvent","_mouseEvents","synth","isMarker","getLatLng","_radius","bubblingMouseEvents","boxZoom","whenReady","pixelOrigin","_latLngToNewLayerPoint","topLeft","_latLngBoundsToNewLayerBounds","_getCenterOffset","centerPoint","viewBounds","_getBoundsOffset","_limitOffset","newBounds","pxBounds","projectedMaxBounds","minOffset","maxOffset","_rebound","mapPane","_animatingZoom","_onZoomTransitionEnd","_animMoveEnd","_destroyAnimProxy","propertyName","_nothingToAnimate","getElementsByClassName","_animateZoom","startAnim","noUpdate","_animateToCenter","_animateToZoom","createMap","Control","removeControl","addControl","corner","_controlCorners","_refocusOnMap","screenX","screenY","control","corners","_controlContainer","createCorner","vSide","hSide","Layers","autoZIndex","hideSingleBase","sortLayers","sortFunction","layerA","layerB","nameA","nameB","_layerControlInputs","_lastZIndex","_handlingClick","_addLayer","_checkDisabledLayers","_onLayerChange","_expandIfNotCollapsed","_getLayer","_section","acceptableHeight","collapse","_layersLink","_baseLayersList","_separator","_overlaysList","setZIndex","baseLayersPresent","overlaysPresent","baseLayersCount","_addItem","_createRadioElement","checked","radioHtml","radioFragment","hasLayer","defaultChecked","layerId","_onInputClick","holder","addedLayers","removedLayers","_expand","_collapse","Zoom","zoomInText","zoomInTitle","zoomOutText","zoomOutTitle","zoomName","_zoomInButton","_createButton","_zoomIn","_zoomOutButton","_zoomOut","_updateDisabled","_disabled","zoomControl","metric","imperial","_addScales","updateWhenIdle","_mScale","_iScale","maxMeters","_updateScales","_updateMetric","_updateImperial","meters","_getRoundNum","maxFeet","maxMiles","miles","feet","Attribution","_attributions","attributionControl","getAttribution","addAttribution","setPrefix","removeAttribution","attribs","prefixAndAttribs","attribution","Handler","addHooks","removeHooks","START","END","MSPointerDown","MOVE","Draggable","clickTolerance","dragStartTarget","preventOutline$$1","_dragStartTarget","_preventOutline","_onDown","finishDrag","_moving","sizedParent","_startPoint","_parentScale","_onMove","_onUp","_lastTarget","SVGElementInstance","correspondingUseElement","_newPos","_animRequest","_lastEvent","simplify","tolerance","sqTolerance","_reducePoints","_simplifyDP","pointToSegmentDistance","_sqClosestPointOnSegment","closestPointOnSegment","ArrayConstructor","markers","_simplifyDPStep","maxSqDist","sqDist","reducedPoints","_sqDist","_lastCode","clipSegment","useLastCode","codeA","_getBitCode","codeB","codeOut","newCode","_getEdgeIntersection","dot","isFlat","_flat","LineUtil","clipPolygon","clippedPoints","_code","PolyUtil","LonLat","Mercator","R_MINOR","con","ts","dphi","EPSG3395","EPSG4326","Simple","Layer","removeFrom","_mapToAdd","addInteractiveTarget","targetEl","removeInteractiveTarget","_layerAdd","getEvents","beforeAdd","_addZoomLimit","_updateZoomLevels","_removeZoomLimit","oldZoomSpan","LayerGroup","getLayerId","clearLayers","invoke","getLayers","zIndex","FeatureGroup","bringToFront","bringToBack","featureGroup","Icon","popupAnchor","oldIcon","_createIcon","createShadow","_getIconUrl","_createImg","_setIconStyles","sizeOption","anchor","shadowAnchor","iconAnchor","marginLeft","marginTop","IconDefault","iconUrl","iconRetinaUrl","shadowUrl","iconSize","shadowSize","imagePath","_detectIconPath","MarkerDrag","_marker","_icon","_draggable","dragstart","_onDragStart","predrag","_onPreDrag","_onDrag","dragend","_adjustPan","speed","autoPanSpeed","autoPanPadding","iconPos","panBounds","movement","_panRequest","_oldLatLng","closePopup","autoPan","_shadow","_latlng","oldLatLng","Marker","interactive","keyboard","zIndexOffset","riseOnHover","riseOffset","_initIcon","_removeIcon","_removeShadow","viewreset","setLatLng","setZIndexOffset","getIcon","setIcon","_popup","bindPopup","getElement","_setPos","classToAdd","addIcon","_bringToFront","mouseout","_resetZIndex","newShadow","addShadow","_updateOpacity","_initInteraction","_zIndex","_updateZIndex","_getPopupAnchor","_getTooltipAnchor","dashArray","dashOffset","fillColor","fillOpacity","fillRule","getRenderer","_initPath","_addPath","_removePath","_updatePath","_updateStyle","_updateBounds","_bringToBack","_path","_project","_clickTolerance","CircleMarker","setRadius","_radiusY","_pxBounds","_updateCircle","_empty","_bounds","_containsPoint","circleMarker","legacyOptions","_mRadius","latR","lngR","smoothFactor","noClip","_setLatLngs","getLatLngs","_latlngs","setLatLngs","closestLayerPoint","minPoint","closest","jLen","_parts","halfDist","segDist","_rings","addLatLng","_defaultShape","_convertLatLngs","_projectLatlngs","_rawPxBounds","projectedBounds","ring","_clipPoints","parts","segment","_simplifyPoints","_updatePoly","part","clipped","GeoJSON","geojson","addData","geometryToLayer","asFeature","defaultOptions","resetStyle","onEachFeature","_setLayerStyle","pointToLayer","_coordsToLatLng","coordsToLatLng","_pointToLayer","coordsToLatLngs","pointToLayerFn","markersInheritOptions","levelsDeep","latLngToCoords","latLngsToCoords","getFeature","newGeometry","PointToGeoJSON","toGeoJSON","multi","holes","toMultiPoint","isGeometryCollection","jsons","geoJSON","ImageOverlay","crossOrigin","errorOverlayUrl","_url","_image","_initImage","styleOpts","setUrl","setBounds","zoomanim","wasElementSupplied","onselectstart","onerror","_overlayOnError","errorUrl","imageOverlay","VideoOverlay","autoplay","keepAspectRatio","vid","onloadeddata","sourceElements","getElementsByTagName","videoOverlay","video","SVGOverlay","svgOverlay","DivOverlay","_removeTimeout","getContent","_content","visibility","_updateContent","_updateLayout","isOpen","_prepareOpen","_contentNode","hasChildNodes","_getAnchor","_containerBottom","_containerLeft","_containerWidth","Popup","autoPanPaddingTopLeft","autoPanPaddingBottomRight","keepInView","autoClose","closeOnEscapeKey","openOn","openPopup","popup","closeOnClick","closePopupOnClick","preclick","_close","moveend","wrapper","_wrapper","_tipContainer","_tip","_closeButton","_onCloseButtonClick","whiteSpace","scrolledClass","marginBottom","layerPos","_popupHandlersAdded","_openPopup","keypress","_onKeyPress","_movePopup","unbindPopup","togglePopup","isPopupOpen","setPopupContent","getPopup","permanent","sticky","closeTooltip","_setPosition","tooltipWidth","tooltipHeight","openTooltip","bindTooltip","_tooltip","_initTooltipInteractions","unbindTooltip","_tooltipHandlersAdded","_moveTooltip","_openTooltip","toggleTooltip","isTooltipOpen","setTooltipContent","getTooltip","DivIcon","bgPos","backgroundPosition","divIcon","Default","GridLayer","tileSize","updateWhenZooming","updateInterval","maxNativeZoom","minNativeZoom","noWrap","keepBuffer","_levels","_tiles","_removeAllTiles","_tileZoom","_setAutoZIndex","isLoading","_loading","viewprereset","_invalidateAll","createTile","getTileSize","edgeZIndex","nextFrame","willPrune","loaded","fade","_onOpaqueTile","_noPrune","_pruneTiles","_fadeFrame","_updateLevels","_onUpdateLevel","_removeTilesAtZoom","_onRemoveLevel","_setZoomTransform","_onCreateLevel","_level","retain","_retainParent","_retainChildren","_removeTile","coords2","_tileCoordsToKey","_setView","_clampZoom","noPrune","tileZoom","tileZoomChanged","_abortLoading","_resetGrid","_setZoomTransforms","_tileSize","_globalTileRange","_pxBoundsToTileRange","_wrapX","_wrapY","_getTiledPixelBounds","mapZoom","tileRange","tileCenter","noPruneRange","_isValidTile","fragment","createDocumentFragment","_addTile","tileBounds","_tileCoordsToBounds","_keyToBounds","_keyToTileCoords","_tileCoordsToNwSe","nwPoint","sePoint","bp","_initTile","WebkitBackfaceVisibility","tilePos","_getTilePos","_wrapCoords","_tileReady","_noTilesToLoad","newCoords","gridLayer","TileLayer","subdomains","errorTileUrl","zoomOffset","tms","zoomReverse","detectRetina","_onTileRemove","noRedraw","_tileOnLoad","_tileOnError","getTileUrl","_getSubdomain","_getZoomForUrl","invertedY","tilePoint","complete","tileLayer","TileLayerWMS","defaultWmsParams","service","transparent","wmsParams","realRetina","_crs","_wmsVersion","projectionKey","setParams","tileLayerWMS","WMS","Renderer","_updatePaths","_destroyContainer","zoomend","_onZoomEnd","_onAnimZoom","currentCenterPoint","destCenterPoint","topLeftOffset","Canvas","_onViewPreReset","_postponeUpdatePaths","_onMouseMove","_onClick","_handleMouseOut","_ctx","_redrawRequest","_redrawBounds","_redraw","_updateDashArray","_order","_drawLast","_drawFirst","_requestRedraw","_extendRedrawBounds","dashValue","_dashArray","_drawing","_fillStroke","clickedLayer","_fireEvent","_handleMouseHover","_hoveredLayer","_mouseHoverThrottled","candidateHoveredLayer","canvas$1","vmlCreate","namespaces","vmlMixin","coordsize","_stroke","_fill","stroked","filled","dashStyle","endcap","joinstyle","_setPath","create$2","SVG","zoomstart","_onZoomStart","_rootGroup","_svgSize","svg$1","_getPaneRenderer","_createRenderer","preferCanvas","_boundsToLatLngs","BoxZoom","_pane","overlayPane","_resetStateTimeout","_destroy","_onMouseDown","_resetState","_clearDeferredResetState","contextmenu","_onMouseUp","keydown","_onKeyDown","_box","_finish","boxZoomBounds","doubleClickZoom","DoubleClickZoom","_onDoubleClick","inertia","inertiaDeceleration","inertiaMaxSpeed","worldCopyJump","maxBoundsViscosity","Drag","_onPreDragLimit","_onPreDragWrap","_positions","_times","_offsetLimit","_viscosity","_lastTime","_lastPos","_absPos","_prunePositions","pxCenter","pxWorldCenter","_initialWorldOffset","_worldWidth","_viscousLimit","limit","worldWidth","newX1","newX2","noInertia","speedVector","limitedSpeed","limitedSpeedVector","decelerationDuration","keyboardPanDelta","Keyboard","keyCodes","down","up","_setPanDelta","_setZoomDelta","_onFocus","blur","_onBlur","_addHooks","_removeHooks","_focused","docEl","scrollTo","panDelta","_panKeys","codes","_zoomKeys","scrollWheelZoom","wheelDebounceTime","wheelPxPerZoomLevel","ScrollWheelZoom","_onWheelScroll","_delta","_lastMousePos","_performZoom","d4","tap","tapTolerance","Tap","_fireClick","_holdTimeout","_isTapValid","_simulateEvent","simulatedEvent","initMouseEvent","touchZoom","bounceAtZoomLimits","TouchZoom","_onTouchStart","_zooming","_centerPoint","_startLatLng","_pinchStartLatLng","_startDist","_startZoom","_onTouchMove","_onTouchEnd","moveFn","Projection","latLng","oldL","noConflict","webpackContext","req","webpackContextResolve","__webpack_require__","webpackContextKeys","af","defineLocale","monthsShort","weekdays","weekdaysShort","weekdaysMin","meridiemParse","isPM","meridiem","isLower","longDateFormat","LT","LTS","LL","LLL","LLLL","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","relativeTime","future","past","ss","mm","hh","dayOfMonthOrdinalParse","doy","arDz","weekdaysParseExact","arKw","symbolMap","pluralForm","plurals","pluralize","withoutSuffix","isFuture","arLy","preparse","postformat","arMa","numberMap","arSa","arTn","ar","suffixes","az","plural","word","forms","relativeTimeWithPlural","be","standalone","isFormat","lastDigit","last2Digits","bn","meridiemHour","bo","relativeTimeWithMutation","mutation","specialMutationForYears","lastNumber","softMutation","mutationTable","monthsParseExact","ll","lll","llll","monthsParse","monthsRegex","monthsShortRegex","monthsStrictRegex","monthsShortStrictRegex","longMonthsParse","shortMonthsParse","cv","affix","processRelativeTime","deAt","deCh","de","dv","monthsNominativeEl","monthsGenitiveEl","momentToFormat","_monthsNominativeEl","_monthsGenitiveEl","calendarEl","mom","_calendarEl","enSG","enAu","enCa","enGb","enIe","enIl","enNz","eo","monthsShortDot","esDo","esUs","es","et","eu","numbersPast","numbersFuture","verbalNumber","fi","fo","frCa","frCh","fr","monthsShortWithDots","monthsShortWithoutDots","fy","ga","gd","gl","gomLatn","gu","he","weekEndings","hu","hyAm","itCh","it","ja","jv","kk","km","kn","ko","isUpper","ku","processFutureTime","eifelerRegelAppliesToNumber","processPastTime","firstDigit","lb","translateSeconds","translateSingular","special","relativeTimeWithSingular","relativeSeconds","lv","translator","words","correctGrammaticalCase","wordKey","lastWeekDays","mi","mk","ml","mn","relativeTimeMr","mr","msMy","ms","mt","my","nlBe","nl","nn","paIn","monthsNominative","monthsSubjective","pl","ptBr","ro","ru","srCyrl","sr","ta","te","tet","tg","th","tlPh","numbersNouns","translateFuture","translatePast","numberNoun","numberAsNoun","hundred","ten","tlh","tzl","tzmLatn","tzm","ugCn","hm","weekdaysCaseReplace","nounCase","processHoursFunction","uk","ur","uzLatn","uz","xPseudo","yo","zhCn","zhHk","zhTw","hookCallback","hooks","setHookCallback","isObjectEmpty","isUndefined","hasOwnProp","createUTC","strict","createLocalOrUTC","defaultParsingFlags","unusedTokens","unusedInput","overflow","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","rfc2822","weekdayMismatch","getParsingFlags","_pf","fun","_isValid","flags","parsedParts","isNowValid","invalidWeekday","_strict","bigHour","isFrozen","createInvalid","momentProperties","copyConfig","_isAMomentObject","_i","_f","_l","_tzm","_isUTC","_locale","updateInProgress","Moment","updateOffset","isMoment","absFloor","toInt","argumentForCoercion","coercedNumber","compareArrays","array1","array2","dontConvert","lengthDiff","diffs","msg","suppressDeprecationWarnings","deprecate","firstTime","deprecationHandler","arg","deprecations","deprecateSimple","_dayOfMonthOrdinalParseLenient","_dayOfMonthOrdinalParse","_ordinalParse","mergeConfigs","parentConfig","childConfig","Locale","defaultCalendar","_calendar","defaultLongDateFormat","_longDateFormat","formatUpper","defaultInvalidDate","invalidDate","_invalidDate","defaultOrdinal","defaultDayOfMonthOrdinalParse","_ordinal","defaultRelativeTime","_relativeTime","pastFuture","aliases","addUnitAlias","shorthand","lowerCase","normalizeUnits","normalizeObjectUnits","inputObject","normalizedInput","normalizedProp","priorities","addUnitPriority","getPrioritizedUnits","unitsObj","zeroFill","targetLength","forceSign","absNumber","zerosToFill","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","padded","localeData","removeFormattingTokens","makeFormatFunction","formatMoment","expandFormat","replaceLongDateFormatTokens","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchTimestamp","matchWord","regexes","addRegexToken","regex","strictRegex","isStrict","getParseRegexForToken","unescapeFormat","regexEscape","p4","tokens","addParseToken","addWeekParseToken","_w","addTimeToArrayFromToken","YEAR","MONTH","DATE","HOUR","MINUTE","SECOND","MILLISECOND","WEEK","WEEKDAY","parseTwoDigitYear","daysInYear","isLeapYear","getSetYear","makeGetSet","getIsLeapYear","keepTime","set$1","daysInMonth","stringGet","stringSet","prioritized","mod","modMonth","MONTHS_IN_FORMAT","defaultLocaleMonths","localeMonths","_months","defaultLocaleMonthsShort","localeMonthsShort","_monthsShort","handleStrictParse","monthName","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","localeMonthsParse","_monthsParseExact","dayOfMonth","getSetMonth","getDaysInMonth","defaultMonthsShortRegex","computeMonthsParse","_monthsShortStrictRegex","_monthsShortRegex","defaultMonthsRegex","_monthsStrictRegex","_monthsRegex","cmpLenRev","shortPieces","longPieces","mixedPieces","createDate","createUTCDate","firstWeekOffset","fwd","fwdlw","dayOfYearFromWeeks","localWeekday","weekOffset","dayOfYear","resYear","resDayOfYear","weekOfYear","resWeek","weeksInYear","weekOffsetNext","localeWeek","_week","defaultLocaleWeek","localeFirstDayOfWeek","localeFirstDayOfYear","getSetWeek","getSetISOWeek","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","weekdaysParse","parseIsoWeekday","shiftWeekdays","ws","defaultLocaleWeekdays","localeWeekdays","_weekdays","defaultLocaleWeekdaysShort","localeWeekdaysShort","_weekdaysShort","defaultLocaleWeekdaysMin","localeWeekdaysMin","_weekdaysMin","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","localeWeekdaysParse","_weekdaysParseExact","_fullWeekdaysParse","getSetDayOfWeek","getSetLocaleDayOfWeek","getSetISODayOfWeek","defaultWeekdaysRegex","computeWeekdaysParse","_weekdaysStrictRegex","_weekdaysRegex","defaultWeekdaysShortRegex","_weekdaysShortStrictRegex","_weekdaysShortRegex","defaultWeekdaysMinRegex","_weekdaysMinStrictRegex","_weekdaysMinRegex","minPieces","minp","shortp","longp","hFormat","kFormat","lowercase","matchMeridiem","_meridiemParse","kInput","_isPm","_meridiem","pos1","pos2","localeIsPM","defaultLocaleMeridiemParse","localeMeridiem","getSetHour","baseConfig","locales","localeFamilies","globalLocale","normalizeLocale","chooseLocale","loadLocale","oldLocale","_abbr","aliasedRequire","require","getSetGlobalLocale","getLocale","parentLocale","updateLocale","tmpLocale","listLocales","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","currentDateArray","nowValue","_useUTC","configFromArray","currentDate","expectedWeekday","yearToUse","dayOfYearFromWeekInfo","_dayOfYear","_nextDay","weekYear","weekdayOverflow","GG","createLocal","curWeek","gg","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","configFromISO","allowTime","dateFormat","tzFormat","configFromStringAndFormat","extractFromRFC2822Strings","yearStr","monthStr","dayStr","hourStr","minuteStr","secondStr","untruncateYear","preprocessRFC2822","checkWeekday","weekdayStr","parsedInput","weekdayProvided","weekdayActual","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","calculateOffset","obsOffset","militaryOffset","numOffset","configFromRFC2822","parsedArray","configFromString","createFromInputFallback","ISO_8601","RFC_2822","stringLength","totalParsedInputLength","meridiemFixWrap","isPm","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","configFromObject","createFromConfig","prepareConfig","configFromInput","prototypeMin","prototypeMax","pickBy","moments","ordering","isDurationValid","unitHasDecimal","isValid$1","createInvalid$1","createDuration","Duration","quarters","isoWeek","_milliseconds","_days","_bubble","isDuration","absRound","utcOffset","offsetFromString","matcher","cloneWithOffset","getDateOffset","getSetOffset","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","addSubtract","getSetZone","setOffsetToUTC","setOffsetToLocal","setOffsetToParsedOffset","tZone","hasAlignedHourOffset","isDaylightSavingTime","isDaylightSavingTimeShifted","_isDSTShifted","toArray","isLocal","isUtcOffset","isUtc","aspNetRegex","isoRegex","diffRes","momentsDifference","invalid","inp","positiveMomentsDifference","isAfter","isBefore","createAdder","dur","isAdding","getCalendarFormat","myMoment","calendar$1","sod","calendarFormat","localInput","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","asFloat","zoneDelta","monthDiff","wholeMonthDiff","anchor2","adjust","defaultFormat","defaultFormatUtc","keepOffset","toDate","inspect","inputString","humanize","fromNow","toNow","newLocaleData","MS_PER_SECOND","MS_PER_MINUTE","MS_PER_HOUR","MS_PER_400_YEARS","mod$1","dividend","divisor","localStartOfDate","utcStartOfDate","startOfDate","unix","toObject","isValid$2","parsingFlags","invalidAt","creationData","isoWeekYear","addWeekYearFormatToken","getSetWeekYear","getSetWeekYearHelper","getSetISOWeekYear","getISOWeeksInYear","getWeeksInYear","weekInfo","weeksTarget","setWeekAll","dayOfYearData","getSetQuarter","getSetDayOfMonth","getSetDayOfYear","getSetMinute","getSetSecond","parseMs","getSetMillisecond","getZoneAbbr","getZoneName","isoWeeks","isoWeeksInYear","isDST","zoneAbbr","zoneName","dates","isDSTShifted","createUnix","createInZone","preParsePostFormat","proto$1","firstDayOfYear","get$1","listMonthsImpl","listWeekdaysImpl","localeSorted","listMonths","listMonthsShort","listWeekdays","listWeekdaysShort","listWeekdaysMin","langData","addSubtract$1","add$1","subtract$1","absCeil","monthsFromDays","monthsToDays","daysToMonths","as","valueOf$1","makeAs","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","clone$1","get$2","makeGetter","substituteTimeAgo","relativeTime$1","posNegDuration","getSetRelativeTimeRounding","roundingFunction","getSetRelativeTimeThreshold","withSuffix","abs$1","toISOString$1","totalSign","ymSign","daysSign","hmsSign","proto$2","toIsoString","relativeTimeRounding","relativeTimeThreshold","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","TIME","TIME_SECONDS","TIME_MS","ChangeFilter","_changes","isFirstChange","NgxEchartsDirective","ngZone","autoResize","loadingType","detectEventChanges","chartInit","chartClick","createLazyEvent","chartDblClick","chartMouseDown","chartMouseMove","chartMouseUp","chartMouseOver","chartMouseOut","chartGlobalOut","chartContextMenu","chartLegendSelectChanged","chartLegendSelected","chartLegendUnselected","chartLegendScroll","chartDataZoom","chartDataRangeSelected","chartTimelineChanged","chartTimelinePlayChanged","chartRestore","chartDataViewChanged","chartMagicTypeChanged","chartPieSelectChanged","chartPieSelected","chartPieUnselected","chartMapSelectChanged","chartMapSelected","chartMapUnselected","chartAxisAreaSelected","chartFocusNodeAdjacency","chartUnfocusNodeAdjacency","chartBrush","chartBrushSelected","chartRendered","chartFinished","currentOffsetWidth","currentOffsetHeight","of","notFirstAndEmpty","onOptionsChange","toggleLoading","notFirst","refreshChart","resizeSub","currentWindowWidth","initChart","loadingOpts","initOpts","createChart","observer","NgxEchartsDirective_Factory","NgxEchartsModule","NgxEchartsModule_Factory","webpackPolyfill","guid","Animatable","attrKV","addSelfToZr","__clipTarget","removeSelfFromZr","addAnimator","removeAnimator","SILENT","makeEventPacket","eveType","zrX","zrY","zrDelta","EmptyProxy","handlerNames","painterRoot","_hovered","_lastTouchMoment","setHandlerProxy","lastHovered","lastHoveredTarget","hovered","hoveredTarget","setCursor","dispatchToElement","toElement","innerDom","nodeType","eventArgs","eventPacket","eachOtherLayer","exclude","hoverCheckResult","_downEl","_downPoint","_upEl","Style","Pattern","returnFalse","createDom","newDom","newDomStyle","domBack","ctxBack","__used","__drawIndex","__endIndex","getElementCount","initContext","createBackBuffer","clearAll","haveMotionBLur","globalCompositeOperation","clearColorGradientOrPattern","__canvasGradient","getCanvasPattern","HOVER_LAYER_ZLEVEL","CANVAS_ZLEVEL","EL_AFTER_INCREMENTAL_INC","INCREMENTAL_INC","parseInt10","isLayerValid","__builtin__","tmpRect","isDisplayableCulled","isClipPathChanged","clipPaths","prevClipPaths","doClip","createRoot","domRoot","Painter","singleCanvas","nodeName","_opts","_singleCanvas","rootStyle","zlevelList","_zlevelList","_layerConfig","_needsManuallyCompositing","_width","_getSize","_height","_domRoot","mainLayer","_hoverlayer","_hoverElements","getViewportRoot","viewportRoot","paintAll","_redrawId","_paintList","refreshHover","__hoverMir","elMirror","hoverElements","clearHover","hoverLayer","displayableSortFunc","originalEl","__clipPaths","_doPaintEl","getHoverLayer","redrawId","_updateLayerStatus","_doPaintList","_compositeManually","eachBuiltinLayer","virtual","layerList","zi","useTimer","firstEl","notClear","dTime","prevElClipPaths","currentLayer","forcePaint","prevEl","insertLayer","layersMap","prevLayer","prevDom","updatePrevLayer","incrementalLayerCount","layerConfig","_zlevel","delLayer","_progressiveLayers","clearLayer","imageLayer","renderToCanvas","displayList","whIdx","cwh","plt","prb","pathToImage","shadowBlurSize","hasStroke","leftMargin","rightMargin","topMargin","bottomMargin","pathTransform","ImageShape","imgShape","shapeCompareFunc","Storage","_roots","_displayList","_displayListLen","includeIgnore","updateDisplayList","roots","_updateAndAddDisplayable","userSetClipPath","currentClipPath","parentClipPath","addRoot","__storage","addChildrenToStorage","addToStorage","delRoot","delChildrenFromStorage","delFromStorage","_renderList","_event","Dispatcher","Animator","stage","onframe","_clips","_running","_pausedTime","_pauseStart","_paused","addClip","clips","getClips","removeClip","deferredEvents","deferredClips","_needsRemove","_startLoop","pause","resume","Clip","arraySlice","defaultGetter","defaultSetter","interpolateNumber","interpolateString","interpolateArray","arrDim","fillArr","arr0","arr1","arr0Len","arr1Len","isPreviousLarger","isArraySame","catmullRomInterpolateArray","catmullRomInterpolate","cloneValue","rgba2String","getArrayDim","keyframes","lastValue","createTrackClip","oneTrackDone","forceAnimate","_getter","_setter","useSpline","trackLen","firstVal","isValueArray","isValueColor","isValueString","trackMaxTime","kfPercents","kfValues","prevValue","isAllValueEqual","colorArray","_target","lastFramePercent","life","_delay","ondestroy","_tracks","_clipCount","_doneList","_onframeList","_clipList","tracks","isPaused","_doneCallback","doneList","clipCount","lastClip","oldOnFrame","forwardToLast","clipList","easingFuncs","_life","_initialized","onrestart","globalTime","deltaTime","easingFunc","quadraticIn","quadraticOut","quadraticInOut","quarticIn","quarticOut","quarticInOut","quinticIn","quinticOut","quinticInOut","sinusoidalIn","sinusoidalOut","sinusoidalInOut","exponentialIn","exponentialOut","exponentialInOut","circularIn","circularOut","circularInOut","debugMode","normalizeRadian","anticlockwise","cubicProjectPoint","_s","PathProxy","cubic","quadratic","windingLine","CMD","isAroundEqual","extrema","swapExtrema","windingCubic","nRoots","cubicRootAt","nExtrema","y0_","y1_","x_","cubicAt","cubicExtrema","windingQuadratic","quadraticRootAt","quadraticExtremum","y_","windingArc","containPath","isStroke","xi","yi","ry","theta","dTheta","psi","quadraticProjectPoint","imageHelper","textWidthCache","textWidthCacheCounter","TEXT_CACHE_MAX","STYLE_REG","DEFAULT_FONT","textLines","getRichTextRect","getPlainTextRect","contentBlock","parsePlainText","adjustTextX","adjustTextY","parseRichText","adjustTextPositionOnRect","prepareTruncateOptions","truncateSingleLine","maxIterations","cnCharWidth","ascCharWidth","ellipsisWidth","textLine","subLength","estimateLength","charCode","getLineHeight","truncOuterHeight","truncOuterWidth","matchedIndex","pushTokens","stlPadding","truncateWidth","truncateHeight","tokenStyle","tokenHeight","tokenWidth","tokenWidthNotSpecified","percentWidth","bgImg","findExistImage","isImageReady","paddingW","remianTruncWidth","isEmptyStr","strs","isLineHolder","tokensLen","_doAdd","addBefore","includeChildren","tmpMat","childRect","rt","sx","ax0","ax1","ay0","ay1","bx0","bx1","by0","by1","GestureMgr","recognize","_doTrack","_recognize","trackItem","clientToLocal","recognizers","gestureInfo","pointPair","pinchEnd","pinchPre","pinchCenter","LinkedList","_len","linkedListProto","Entry","insertEntry","LRU","_list","_maxSize","_lastRemovedEntry","LRUProto","put","removed","leastUsedEntry","mathSqrt","hasTypedArray","notSaveData","_saveData","_xi","_yi","_ux","_uy","_lineDash","_dashOffset","_dashIdx","_dashSum","setScale","exceedUnit","_needsDash","_dashedLineTo","_dashedBezierTo","_dashedQuadraticTo","toStatic","lineDashSum","setLineDashOffset","appendPath","appendSize","appendPathData","_expandData","_prevCmd","dashSum","dash","nDash","bezierLen","tmpLen","fromLine","fromCubic","fromQuadratic","fromArc","rebuildPath","ux","uy","fs","isEllipse","Diff","newLen","oldLen","editLength","maxEditLength","bestPath","oldPos","extractCommon","execEditLength","diagonalPath","basePath","addPath","removePath","canAdd","canRemove","clonePath","pushComponent","buildValues","added","commonCount","tokenize","componentPos","componentLen","arrayDiff","extremity","xDim","yDim","v2Create","EPSILON_NUMERIC","THREE_SQRT","ONE_THIRD","_v0","_v1","_v2","isAroundZero","isNotAroundZero","onet","cubicDerivativeAt","disc","discSqrt","Y1","Y2","ASqrt","cubicSubdivide","p01","p12","p23","p012","p123","p0123","divider","wx","os","touchEventsSupported","worker","detect","ua","firefox","SVGRect","pointerEventsSupported","isDomLevel2","MOUSE_EVENT_REG","calculate","defaultGetZrXY","layerX","layerY","isTouch","targetTouches","idStart","ArrayCtor","out0","out1","out2","out3","out4","out5","ac","atx","ad","aty","st","ct","vx","vy","det","DEFAULT_MIN_MERGE","DEFAULT_MIN_GALLOPING","DEFAULT_TMP_STORAGE_LENGTH","minRunLength","makeAscendingRun","runHi","reverseRun","binaryInsertionSort","gallopLeft","hint","lastOffset","gallopRight","TimSort","minGallop","tmpStorageLength","runStart","runLength","stackSize","pushRun","_runStart","_runLength","mergeRuns","mergeAt","forceMergeRuns","start1","length1","start2","mergeLow","mergeHigh","cursor1","cursor2","_minGallop","count1","count2","customCursor","customDest","minRun","BUILTIN_OBJECT","TYPED_ARRAY","objToString","arrayProto","nativeForEach","nativeFilter","nativeSlice","nativeMap","nativeReduce","typeStr","isPrimitive","targetProp","sourceProp","isBuiltInObject","targetAndSources","baseClazz","clazzPrototype","memo","primitiveKey","HashMap","isArr","thisMap","visit","newArray","lenSquare","lengthSquare","distanceSquare","TOUCH_CLICK_DELAY","mouseHandlerNames","touchHandlerNames","pointerEventNames","pointerHandlerNames","nm","eventNameFix","processGesture","gestureMgr","_gestureMgr","setTouchTimer","_touching","_touchTimer","domHandlers","isPointerFromTouch","initDomHandler","makeMouseHandler","HandlerDomProxy","mountHandlers","handlerDomProxyProto","_updatePathDirty","dirtyPath","__dirtyPath","getGlobalScale","createPathProxy","RectText","Displayable","inplace","rectContain","addColorStop","createOrUpdateImage","sWidth","sHeight","drawRectText","Displayble","IncrementalDisplayble","_temporaryDisplayables","_cursor","notPersistent","addDisplayables","displayables","localPos","globalCoord","pathContain","pathProxyForDraw","hasFill","hasFillGradient","hasStrokeGradient","hasFillPattern","hasStrokePattern","_fillGradient","_strokeGradient","ctxLineDash","shapeCfg","needsUpdateRect","rectWithStroke","_rectWithStroke","lineScale","Sub","defaultShape","thisShape","createPattern","fixShadow","STYLE_COMMON_PROPS","createLinearGradient","canvasGradient","createRadialGradient","transformText","prevStyle","firstDraw","otherStyle","newStyle","styleProto","textHelper","normalizeTextStyle","needDrawText","renderText","getStroke","shadowTemp","orignalBrush","modified","SHADOW_PROPS","globalImageCache","newImageOrSrc","cachedImgObj","hostEl","cbPayload","__zrImageSrc","pendingWrap","pending","imageOnLoad","__cachedImgObj","smoothSpline","smoothBezier","cp2","r4","v2Min","v2Max","v2Scale","v2Distance","v2Add","v2Clone","v2Sub","isLoop","constraint","cps","prevPoint","nextPoint","w3","roundRectHelper","VALID_TEXT_ALIGN","VALID_TEXT_VERTICAL_ALIGN","normalizeStyle","renderRichText","renderPlainText","setCtx","__textCotentBlock","boxPos","getBoxPosition","baseX","baseY","applyTextRotation","boxY","needDrawBg","needDrawBackground","boxX","getTextXForPadding","getFill","strokeText","drawRichText","lineTop","tokenCount","usedWidth","leftIndex","lineXLeft","lineXRight","rightIndex","placeToken","isPlainBg","onBgImageLoaded","blockHeiht","someVectorAt","isTangent","polyHelper","animatingShape","pathSplitted","_animateToShallow","objShallow","propertyCount","_dragStart","_drag","_dragEnd","draggingTarget","_draggingTarget","dropTarget","lastDropTarget","_dropTarget","arrySlice","_$handlers","_h","triggerWithContext","mIdentity","transformableProto","parentHasTransform","tmpTransform","transformCoordToGlobal","_core","zrLog","ZText","GradientManager","ClippathManager","ShadowManager","svgPath","svgImage","svgText","getSvgProxy","checkParentAvailable","insertAfter","prevSibling","prepend","getTextSvgElement","__textSvgEl","getSvgElement","__svgEl","SVGPainter","zrId","svgRoot","gradientManager","clipPathManager","shadowManager","viewport","_svgRoot","_viewport","_visibleList","markAllUnused","visibleList","listLen","newVisibleList","svgProxy","svgElement","prevSvgElement","textSvgElement","addWithoutUpdate","markUsed","removeUnused","_getDefs","isForceCreating","defs","viewportStyle","unescape","createMethodNotSupport","svgURI","arrayJoin","mathRound","round4","pathHasFill","isText","pathHasStroke","svgEl","attrXLink","bindStyle","strokeScale","miterLimit","pathDataToString","cmdStr","nData","dThetaPositive","isCircle","pathStr","svgTextDrawRectText","HTMLImageElement","dw","dh","__imageSrc","textSvgEl","getVerticalAlignForSvg","nTextLines","__text","__textFont","tspanList","__tspanList","tspan","Definable","updateDom","getDefs","clipPathEl","_zrId","pathEl","_textDom","MARK_UNUSED","MARK_USED","tagNames","markLabel","domName","_tagNames","_markLabel","_domName","addDom","removeDom","getDoms","doms","tags","hasShadow","_shadowDom","_shadowDomId","domChild","stdDx","stdDy","stdDeviation","_zrender","registerPainter","kCSSColorTable","clampCssByte","clampCssAngle","clampCssFloat","parseCssInt","parseCssFloat","cssHueToRgb","lerpNumber","setRgba","copyRgba","colorCache","lastRemovedArr","putToCache","colorStr","rgbaArr","iv","op","ep","fname","hsla2rgba","rgba2hsla","G","vMin","vMax","deltaR","deltaG","deltaB","normalizedValue","leftColor","rightColor","fastMapToColor","fullOutput","mapToColor","arrColor","transformPath","cc","vMag","vRatio","vAngle","processArc","psiDeg","xp","lambda","cxp","cyp","createPathProxyFromString","cpx","cpy","prevCmd","ctlPtx","ctlPty","createPathOptions","pathProxy","pathEls","pathList","pathBundle","mathAtan2","nPoint","vmlCore","VMLPainter","initVML","vmlViewport","vmlRoot","_vmlRoot","_vmlViewport","oldDelFromStorage","oldAddToStorage","_firstPaint","__alreadyNotVisible","brushVML","_getWidth","_getHeight","vmlViewportStyle","urn","vmlInited","doc","createNode","doCreateNode","zrvml","styleSheets","createStyleSheet","addRule","imageTransformPrefix","Z2","ZLEVEL_BASE","initRootElStyle","coordorigin","encodeHtmlAttribute","rgb2Str","getZIndex","setColorAndOpacity","getColorAndAlpha","updateFillNode","zrEl","gradientType","expansion","cs1","cs2","colorAndAlphaList","colorAndAlpha","opacity1","opacity2","focusposition","updateStrokeNode","dashstyle","updateFillAndStroke","vmlEl","isFill","_vmlEl","needTransform","strokeEl","removeRectText","appendRectText","isImage","ow","oh","_imageSrc","_imageWidth","_imageHeight","imageRuntimeStyle","runtimeStyle","oldRuntimeWidth","oldRuntimeHeight","hasCrop","vmlElStyle","hasRotation","transformFilter","imageEl","_imageEl","cropEl","_cropEl","imageELStyle","tmpImage","cropElStyle","filterStr","DEFAULT_STYLE_NORMAL","fontStyleCache","fontStyleCacheCount","MAX_FONT_CACHE_SIZE","fontEl","getFontStyle","variant","fontVariant","textMeasureEl","ex","fromTextEl","textVmlEl","_textVmlEl","textPathEl","skewEl","textpathok","textVmlElStyle","HandlerProxy","useVML","painterCtors","ZRender","getInstance","delInstance","rendererType","handerProxy","_needsRefresh","zLevel","_needsRefreshHover","refreshHoverImmediately","clearAnimation","ChartPanelHeaderComponent","themeService","breakpointService","alive","periodChange","breakpoint","getJsTheme","orderProfitLegend","variables","currentTheme","setLegendItems","breakpoints","getBreakpointsMap","onMediaQueryChange","oldValue","chartLegend","iconColor","firstItem","secondItem","thirdItem","changePeriod","styleUrls","templateUrl","ChartPanelSummaryComponent","ECommerceChartsPanelComponent","ordersProfitChartService","getOrderProfitChartSummary","chartPanelSummary","getOrdersChartData","getProfitChartData","selectedTab","tabTitle","profitChart","resizeChart","ordersChart","ordersChartData","profitChartData","changeTab","setPeriodAndGetChartData","OrdersChartComponent","onSafeChangeLayoutSize","updateOrdersChartOptions","eTheme","orders","tooltipLineColor","tooltipLineWidth","tooltipTextColor","tooltipFontSize","tooltipFontWeight","tooltipBg","tooltipBorderColor","tooltipExtraCss","axisTextColor","axisFontSize","axisLineColor","yAxisSplitLine","getFirstLine","getSecondLine","getThirdLine","firstAreaGradFrom","firstAreaGradTo","itemBorderColor","secondLineGradFrom","secondLineGradTo","secondAreaGradFrom","secondAreaGradTo","thirdLineGradFrom","thirdLineGradTo","thirdAreaGradFrom","thirdAreaGradTo","getNewSeries","linesData","getNewXAxis","chartLabel","echartsIntance","onChartInit","ProfitChartComponent","updateProfitChartOptions","profit","splitLineColor","firstLineGradFrom","firstLineGradTo","CountryOrdersChartComponent","echartsInstance","countriesTheme","countryOrders","chartAxisTextColor","chartAxisFontSize","chartAxisLineColor","chartAxisSplitLine","chartInnerLineColor","chartLineBottomShadowColor","chartGradientFrom","chartGradientTo","ec","CountryOrdersComponent","countryOrderService","countryName","countryData","getCountriesCategories","countriesCategories","getCountriesCategoriesData","selectCountryById","CountryOrdersMapComponent","ecMapService","getCords","cords","createGeoJsonLayer","selectFeature","findFeatureLayerByCountryId","countryId","countryBorderWidth","countryFillColor","countryBorderColor","highlightFeature","moveout","featureLayer","hoveredCountryBorderWidth","hoveredCountryFillColor","hoveredCountryBorderColor","selectedCountry","resetHighlight","geoJsonLayer","CountryOrdersMapService","http","TestStatsAreaChartComponent","trafficTheme","traffic","shadowLineDarkBg","itemColor","itemEmphasisBorderColor","lineBg","lineShadowBlur","gradFrom","gradTo","TestStatsCardBackComponent","statsBarData","getStatsBarData","chartData","PcrStatsBarAnimationChartComponent","secondLine","profitBarAnimationEchart","setChartOption","chartVariables","firstAnimationBarColor","secondAnimationBarColor","tooltipBorderWidth","splitLineStyleColor","splitLineStyleOpacity","splitLineStyleWidth","animationDelayUpdate","TestStatsCardFrontComponent","profitBarAnimationChartService","getChartData","TestCardComponent","flipped","toggleView","ECommerceComponent","ECommerceModule","EarningCardBackComponent","earningService","defaultSelectedCurrency","getEarningPieChartData","earningPieChartData","changeChartInfo","EarningPieChartComponent","selectPie","emitSelectPie","getOptions","defaultSelectedData","earningPie","fontSecondary","fgHeading","firstPieGradientLeft","firstPieGradientRight","firstPieShadowColor","secondPieGradientLeft","secondPieGradientRight","secondPieShadowColor","thirdPieGradientLeft","thirdPieGradientRight","thirdPieShadowColor","onChartClick","EarningCardComponent","EarningCardFrontComponent","selectedCurrency","currencies","getEarningCardData","earningLiveUpdateCardData","liveUpdateChartData","liveChart","startReceivingLiveData","intervalSubscription","getEarningLiveUpdateCardData","changeCurrency","EarningLiveUpdateChartComponent","updateChartOptions","earningLineTheme","earningLine","ECommerceLegendChartComponent","ECommerceProgressSectionComponent","statsProgressBarService","getProgressInfoData","progressInfoData","SlideOutComponent","showVisitorsStatistics","toggleStatistics","TrafficBackCardComponent","TrafficBarChartComponent","trafficBarEchart","gradientFrom","gradientTo","TrafficBarComponent","TrafficFrontCardComponent","TrafficCardsHeaderComponent","TrafficRevealCardComponent","trafficListService","trafficBarService","revealed","getTrafficFrontCardData","getTrafficBackCardData","getTrafficBarData","trafficBarData","getTrafficListData","trafficListData","setPeriodAngGetData","ECommerceUserActivityComponent","userActivityService","userActivity","getUserActivity","getUserActivityData","userActivityData","ECommerceVisitorsAnalyticsChartComponent","visitors","outerLine","getInnerLine","getOuterLine","lineGradFrom","lineGradTo","lineShadow","areaGradFrom","areaGradTo","innerLineWidth","innerLineStyle","innerAreaGradFrom","innerAreaGradTo","innerLine","ECommerceVisitorsAnalyticsComponent","visitorsAnalyticsChartService","visitorsLegend","getInnerLineChartData","getOutlineLineChartData","getPieChartData","pieChartValue","visitorsAnalyticsData","firstIcon","secondIcon","ECommerceVisitorsStatisticsComponent","visitorsPieLegend","firstSection","secondSection","visitorsPie","firstPieRadius","layoutBg","secondPieRadius","MiscellaneousRoutingModule","forChild","MiscellaneousComponent","MiscellaneousModule","MENU_ITEMS","home","canActivate","loadChildren","then","FormsModule","MapsModule","ChartsModule","GraphsModule","TablesModule","redirectTo","pathMatch","PagesRoutingModule","PagesComponent","menu","PagesModule","AuthGuard","router","authService","isAuthenticated","navigate","queryParams","returnUrl","providedIn"],"mappings":"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;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;A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;AACb,eAAOj9B,CAAP;AACD,OAFc;;;;;;;;;;;;;;;;;ACAf;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;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;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA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E,KAAjB;;;;;;;;;;;;;;;;ACdP;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;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","file":"pages-pages-module-es5.js","sourcesContent":["export { LeafletModule } from './leaflet/leaflet.module';\nexport { LeafletDirective } from './leaflet/core/leaflet.directive';\nexport { LeafletDirectiveWrapper } from './leaflet/core/leaflet.directive.wrapper';\nexport { LeafletUtil } from './leaflet/core/leaflet.util';\nexport { LeafletLayerDirective } from './leaflet/layers/leaflet-layer.directive';\nexport { LeafletLayersDirective } from './leaflet/layers/leaflet-layers.directive';\nexport { LeafletTileLayerDefinition } from './leaflet/layers/leaflet-tile-layer-definition.model';\nexport { LeafletBaseLayersDirective } from './leaflet/layers/base/leaflet-baselayers.directive';\nexport { LeafletLayersControlDirective } from './leaflet/layers/control/leaflet-control-layers.directive';\nexport { LeafletControlLayersWrapper } from './leaflet/layers/control/leaflet-control-layers.wrapper';\nexport { LeafletControlLayersConfig } from './leaflet/layers/control/leaflet-control-layers-config.model';\nexport { LeafletControlLayersChanges } from './leaflet/layers/control/leaflet-control-layers-changes.model';\n\n//# sourceMappingURL=index.js.map","import { __decorate, __metadata } from \"tslib\";\nimport { Directive, ElementRef, EventEmitter, HostListener, Input, NgZone, Output } from '@angular/core';\nimport { latLng, LatLng, LatLngBounds, map } from 'leaflet';\nimport { LeafletUtil } from './leaflet.util';\nimport * as ɵngcc0 from '@angular/core';\nvar LeafletDirective = /** @class */ (function () {\n    function LeafletDirective(element, zone) {\n        this.element = element;\n        this.zone = zone;\n        this.DEFAULT_ZOOM = 1;\n        this.DEFAULT_CENTER = latLng(38.907192, -77.036871);\n        this.DEFAULT_FPZ_OPTIONS = {};\n        this.fitBoundsOptions = this.DEFAULT_FPZ_OPTIONS;\n        this.panOptions = this.DEFAULT_FPZ_OPTIONS;\n        this.zoomOptions = this.DEFAULT_FPZ_OPTIONS;\n        this.zoomPanOptions = this.DEFAULT_FPZ_OPTIONS;\n        // Default configuration\n        this.options = {};\n        // Configure callback function for the map\n        this.mapReady = new EventEmitter();\n        this.zoomChange = new EventEmitter();\n        this.centerChange = new EventEmitter();\n        // Mouse Map Events\n        this.onClick = new EventEmitter();\n        this.onDoubleClick = new EventEmitter();\n        this.onMouseDown = new EventEmitter();\n        this.onMouseUp = new EventEmitter();\n        this.onMouseMove = new EventEmitter();\n        this.onMouseOver = new EventEmitter();\n        this.onMouseOut = new EventEmitter();\n        // Map Move Events\n        this.onMapMove = new EventEmitter();\n        this.onMapMoveStart = new EventEmitter();\n        this.onMapMoveEnd = new EventEmitter();\n        // Map Zoom Events\n        this.onMapZoom = new EventEmitter();\n        this.onMapZoomStart = new EventEmitter();\n        this.onMapZoomEnd = new EventEmitter();\n        // Nothing here\n    }\n    LeafletDirective.prototype.ngOnInit = function () {\n        var _this = this;\n        // Create the map outside of angular so the various map events don't trigger change detection\n        this.zone.runOutsideAngular(function () {\n            // Create the map with some reasonable defaults\n            _this.map = map(_this.element.nativeElement, _this.options);\n            _this.addMapEventListeners();\n        });\n        // Only setView if there is a center/zoom\n        if (null != this.center && null != this.zoom) {\n            this.setView(this.center, this.zoom);\n        }\n        // Set up all the initial settings\n        if (null != this.fitBounds) {\n            this.setFitBounds(this.fitBounds);\n        }\n        if (null != this.maxBounds) {\n            this.setMaxBounds(this.maxBounds);\n        }\n        if (null != this.minZoom) {\n            this.setMinZoom(this.minZoom);\n        }\n        if (null != this.maxZoom) {\n            this.setMaxZoom(this.maxZoom);\n        }\n        this.doResize();\n        // Fire map ready event\n        this.mapReady.emit(this.map);\n    };\n    LeafletDirective.prototype.ngOnChanges = function (changes) {\n        /*\n         * The following code is to address an issue with our (basic) implementation of\n         * zooming and panning. From our testing, it seems that a pan operation followed\n         * by a zoom operation in the same thread will interfere with eachother. The zoom\n         * operation interrupts/cancels the pan, resulting in a final center point that is\n         * inaccurate. The solution seems to be to either separate them with a timeout or\n          * to collapse them into a setView call.\n         */\n        // Zooming and Panning\n        if (changes['zoom'] && changes['center'] && null != this.zoom && null != this.center) {\n            this.setView(changes['center'].currentValue, changes['zoom'].currentValue);\n        }\n        // Set the zoom level\n        else if (changes['zoom']) {\n            this.setZoom(changes['zoom'].currentValue);\n        }\n        // Set the map center\n        else if (changes['center']) {\n            this.setCenter(changes['center'].currentValue);\n        }\n        // Other options\n        if (changes['fitBounds']) {\n            this.setFitBounds(changes['fitBounds'].currentValue);\n        }\n        if (changes['maxBounds']) {\n            this.setMaxBounds(changes['maxBounds'].currentValue);\n        }\n        if (changes['minZoom']) {\n            this.setMinZoom(changes['minZoom'].currentValue);\n        }\n        if (changes['maxZoom']) {\n            this.setMaxZoom(changes['maxZoom'].currentValue);\n        }\n    };\n    LeafletDirective.prototype.getMap = function () {\n        return this.map;\n    };\n    LeafletDirective.prototype.onResize = function () {\n        this.delayResize();\n    };\n    LeafletDirective.prototype.addMapEventListeners = function () {\n        var _this = this;\n        // Add all the pass-through mouse event handlers\n        this.map.on('click', function (e) { return LeafletUtil.handleEvent(_this.zone, _this.onClick, e); });\n        this.map.on('dblclick', function (e) { return LeafletUtil.handleEvent(_this.zone, _this.onDoubleClick, e); });\n        this.map.on('mousedown', function (e) { return LeafletUtil.handleEvent(_this.zone, _this.onMouseDown, e); });\n        this.map.on('mouseup', function (e) { return LeafletUtil.handleEvent(_this.zone, _this.onMouseUp, e); });\n        this.map.on('mouseover', function (e) { return LeafletUtil.handleEvent(_this.zone, _this.onMouseOver, e); });\n        this.map.on('mouseout', function (e) { return LeafletUtil.handleEvent(_this.zone, _this.onMouseOut, e); });\n        this.map.on('mousemove', function (e) { return LeafletUtil.handleEvent(_this.zone, _this.onMouseMove, e); });\n        this.map.on('zoomstart', function (e) { return LeafletUtil.handleEvent(_this.zone, _this.onMapZoomStart, e); });\n        this.map.on('zoom', function (e) { return LeafletUtil.handleEvent(_this.zone, _this.onMapZoom, e); });\n        this.map.on('zoomend', function (e) { return LeafletUtil.handleEvent(_this.zone, _this.onMapZoomEnd, e); });\n        this.map.on('movestart', function (e) { return LeafletUtil.handleEvent(_this.zone, _this.onMapMoveStart, e); });\n        this.map.on('move', function (e) { return LeafletUtil.handleEvent(_this.zone, _this.onMapMove, e); });\n        this.map.on('moveend', function (e) { return LeafletUtil.handleEvent(_this.zone, _this.onMapMoveEnd, e); });\n        // Update any things for which we provide output bindings\n        this.map.on('zoomend moveend', function () {\n            var zoom = _this.map.getZoom();\n            if (zoom !== _this.zoom) {\n                _this.zoom = zoom;\n                LeafletUtil.handleEvent(_this.zone, _this.zoomChange, zoom);\n            }\n            var center = _this.map.getCenter();\n            if (null != center || null != _this.center) {\n                if (((null == center || null == _this.center) && center !== _this.center)\n                    || (center.lat !== _this.center.lat || center.lng !== _this.center.lng)) {\n                    _this.center = center;\n                    LeafletUtil.handleEvent(_this.zone, _this.centerChange, center);\n                }\n            }\n        });\n    };\n    /**\n     * Resize the map to fit it's parent container\n     */\n    LeafletDirective.prototype.doResize = function () {\n        var _this = this;\n        // Run this outside of angular so the map events stay outside of angular\n        this.zone.runOutsideAngular(function () {\n            // Invalidate the map size to trigger it to update itself\n            _this.map.invalidateSize({});\n        });\n    };\n    /**\n     * Manage a delayed resize of the component\n     */\n    LeafletDirective.prototype.delayResize = function () {\n        if (null != this.resizeTimer) {\n            clearTimeout(this.resizeTimer);\n        }\n        this.resizeTimer = setTimeout(this.doResize.bind(this), 200);\n    };\n    /**\n     * Set the view (center/zoom) all at once\n     * @param center The new center\n     * @param zoom The new zoom level\n     */\n    LeafletDirective.prototype.setView = function (center, zoom) {\n        if (this.map && null != center && null != zoom) {\n            this.map.setView(center, zoom, this.zoomPanOptions);\n        }\n    };\n    /**\n     * Set the map zoom level\n     * @param zoom the new zoom level for the map\n     */\n    LeafletDirective.prototype.setZoom = function (zoom) {\n        if (this.map && null != zoom) {\n            this.map.setZoom(zoom, this.zoomOptions);\n        }\n    };\n    /**\n     * Set the center of the map\n     * @param center the center point\n     */\n    LeafletDirective.prototype.setCenter = function (center) {\n        if (this.map && null != center) {\n            this.map.panTo(center, this.panOptions);\n        }\n    };\n    /**\n     * Fit the map to the bounds\n     * @param latLngBounds the boundary to set\n     */\n    LeafletDirective.prototype.setFitBounds = function (latLngBounds) {\n        if (this.map && null != latLngBounds) {\n            this.map.fitBounds(latLngBounds, this.fitBoundsOptions);\n        }\n    };\n    /**\n     * Set the map's max bounds\n     * @param latLngBounds the boundary to set\n     */\n    LeafletDirective.prototype.setMaxBounds = function (latLngBounds) {\n        if (this.map && null != latLngBounds) {\n            this.map.setMaxBounds(latLngBounds);\n        }\n    };\n    /**\n     * Set the map's min zoom\n     * @param number the new min zoom\n     */\n    LeafletDirective.prototype.setMinZoom = function (zoom) {\n        if (this.map && null != zoom) {\n            this.map.setMinZoom(zoom);\n        }\n    };\n    /**\n     * Set the map's min zoom\n     * @param number the new min zoom\n     */\n    LeafletDirective.prototype.setMaxZoom = function (zoom) {\n        if (this.map && null != zoom) {\n            this.map.setMaxZoom(zoom);\n        }\n    };\n    __decorate([\n        Input('leafletFitBoundsOptions'),\n        __metadata(\"design:type\", Object)\n    ], LeafletDirective.prototype, \"fitBoundsOptions\", void 0);\n    __decorate([\n        Input('leafletPanOptions'),\n        __metadata(\"design:type\", Object)\n    ], LeafletDirective.prototype, \"panOptions\", void 0);\n    __decorate([\n        Input('leafletZoomOptions'),\n        __metadata(\"design:type\", Object)\n    ], LeafletDirective.prototype, \"zoomOptions\", void 0);\n    __decorate([\n        Input('leafletZoomPanOptions'),\n        __metadata(\"design:type\", Object)\n    ], LeafletDirective.prototype, \"zoomPanOptions\", void 0);\n    __decorate([\n        Input('leafletOptions'),\n        __metadata(\"design:type\", Object)\n    ], LeafletDirective.prototype, \"options\", void 0);\n    __decorate([\n        Output('leafletMapReady'),\n        __metadata(\"design:type\", Object)\n    ], LeafletDirective.prototype, \"mapReady\", void 0);\n    __decorate([\n        Input('leafletZoom'),\n        __metadata(\"design:type\", Number)\n    ], LeafletDirective.prototype, \"zoom\", void 0);\n    __decorate([\n        Output('leafletZoomChange'),\n        __metadata(\"design:type\", Object)\n    ], LeafletDirective.prototype, \"zoomChange\", void 0);\n    __decorate([\n        Input('leafletCenter'),\n        __metadata(\"design:type\", LatLng)\n    ], LeafletDirective.prototype, \"center\", void 0);\n    __decorate([\n        Output('leafletCenterChange'),\n        __metadata(\"design:type\", Object)\n    ], LeafletDirective.prototype, \"centerChange\", void 0);\n    __decorate([\n        Input('leafletFitBounds'),\n        __metadata(\"design:type\", LatLngBounds)\n    ], LeafletDirective.prototype, \"fitBounds\", void 0);\n    __decorate([\n        Input('leafletMaxBounds'),\n        __metadata(\"design:type\", LatLngBounds)\n    ], LeafletDirective.prototype, \"maxBounds\", void 0);\n    __decorate([\n        Input('leafletMinZoom'),\n        __metadata(\"design:type\", Number)\n    ], LeafletDirective.prototype, \"minZoom\", void 0);\n    __decorate([\n        Input('leafletMaxZoom'),\n        __metadata(\"design:type\", Number)\n    ], LeafletDirective.prototype, \"maxZoom\", void 0);\n    __decorate([\n        Output('leafletClick'),\n        __metadata(\"design:type\", Object)\n    ], LeafletDirective.prototype, \"onClick\", void 0);\n    __decorate([\n        Output('leafletDoubleClick'),\n        __metadata(\"design:type\", Object)\n    ], LeafletDirective.prototype, \"onDoubleClick\", void 0);\n    __decorate([\n        Output('leafletMouseDown'),\n        __metadata(\"design:type\", Object)\n    ], LeafletDirective.prototype, \"onMouseDown\", void 0);\n    __decorate([\n        Output('leafletMouseUp'),\n        __metadata(\"design:type\", Object)\n    ], LeafletDirective.prototype, \"onMouseUp\", void 0);\n    __decorate([\n        Output('leafletMouseMove'),\n        __metadata(\"design:type\", Object)\n    ], LeafletDirective.prototype, \"onMouseMove\", void 0);\n    __decorate([\n        Output('leafletMouseOver'),\n        __metadata(\"design:type\", Object)\n    ], LeafletDirective.prototype, \"onMouseOver\", void 0);\n    __decorate([\n        Output('leafletMouseOut'),\n        __metadata(\"design:type\", Object)\n    ], LeafletDirective.prototype, \"onMouseOut\", void 0);\n    __decorate([\n        Output('leafletMapMove'),\n        __metadata(\"design:type\", Object)\n    ], LeafletDirective.prototype, \"onMapMove\", void 0);\n    __decorate([\n        Output('leafletMapMoveStart'),\n        __metadata(\"design:type\", Object)\n    ], LeafletDirective.prototype, \"onMapMoveStart\", void 0);\n    __decorate([\n        Output('leafletMapMoveEnd'),\n        __metadata(\"design:type\", Object)\n    ], LeafletDirective.prototype, \"onMapMoveEnd\", void 0);\n    __decorate([\n        Output('leafletMapZoom'),\n        __metadata(\"design:type\", Object)\n    ], LeafletDirective.prototype, \"onMapZoom\", void 0);\n    __decorate([\n        Output('leafletMapZoomStart'),\n        __metadata(\"design:type\", Object)\n    ], LeafletDirective.prototype, \"onMapZoomStart\", void 0);\n    __decorate([\n        Output('leafletMapZoomEnd'),\n        __metadata(\"design:type\", Object)\n    ], LeafletDirective.prototype, \"onMapZoomEnd\", void 0);\n    __decorate([\n        HostListener('window:resize', []),\n        __metadata(\"design:type\", Function),\n        __metadata(\"design:paramtypes\", []),\n        __metadata(\"design:returntype\", void 0)\n    ], LeafletDirective.prototype, \"onResize\", null);\n    LeafletDirective = __decorate([ __metadata(\"design:paramtypes\", [ElementRef, NgZone])\n    ], LeafletDirective);\nLeafletDirective.ɵfac = function LeafletDirective_Factory(t) { return new (t || LeafletDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nLeafletDirective.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: LeafletDirective, selectors: [[\"\", \"leaflet\", \"\"]], hostBindings: function LeafletDirective_HostBindings(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵlistener(\"resize\", function LeafletDirective_resize_HostBindingHandler() { return ctx.onResize(); }, false, ɵngcc0.ɵɵresolveWindow);\n    } }, inputs: { fitBoundsOptions: [\"leafletFitBoundsOptions\", \"fitBoundsOptions\"], panOptions: [\"leafletPanOptions\", \"panOptions\"], zoomOptions: [\"leafletZoomOptions\", \"zoomOptions\"], zoomPanOptions: [\"leafletZoomPanOptions\", \"zoomPanOptions\"], options: [\"leafletOptions\", \"options\"], zoom: [\"leafletZoom\", \"zoom\"], center: [\"leafletCenter\", \"center\"], fitBounds: [\"leafletFitBounds\", \"fitBounds\"], maxBounds: [\"leafletMaxBounds\", \"maxBounds\"], minZoom: [\"leafletMinZoom\", \"minZoom\"], maxZoom: [\"leafletMaxZoom\", \"maxZoom\"] }, outputs: { mapReady: \"leafletMapReady\", zoomChange: \"leafletZoomChange\", centerChange: \"leafletCenterChange\", onClick: \"leafletClick\", onDoubleClick: \"leafletDoubleClick\", onMouseDown: \"leafletMouseDown\", onMouseUp: \"leafletMouseUp\", onMouseMove: \"leafletMouseMove\", onMouseOver: \"leafletMouseOver\", onMouseOut: \"leafletMouseOut\", onMapMove: \"leafletMapMove\", onMapMoveStart: \"leafletMapMoveStart\", onMapMoveEnd: \"leafletMapMoveEnd\", onMapZoom: \"leafletMapZoom\", onMapZoomStart: \"leafletMapZoomStart\", onMapZoomEnd: \"leafletMapZoomEnd\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature] });\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(LeafletDirective, [{\n        type: Directive,\n        args: [{\n                selector: '[leaflet]'\n            }]\n    }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.NgZone }]; }, { fitBoundsOptions: [{\n            type: Input,\n            args: ['leafletFitBoundsOptions']\n        }], panOptions: [{\n            type: Input,\n            args: ['leafletPanOptions']\n        }], zoomOptions: [{\n            type: Input,\n            args: ['leafletZoomOptions']\n        }], zoomPanOptions: [{\n            type: Input,\n            args: ['leafletZoomPanOptions']\n        }], options: [{\n            type: Input,\n            args: ['leafletOptions']\n        }], mapReady: [{\n            type: Output,\n            args: ['leafletMapReady']\n        }], zoomChange: [{\n            type: Output,\n            args: ['leafletZoomChange']\n        }], centerChange: [{\n            type: Output,\n            args: ['leafletCenterChange']\n        }], onClick: [{\n            type: Output,\n            args: ['leafletClick']\n        }], onDoubleClick: [{\n            type: Output,\n            args: ['leafletDoubleClick']\n        }], onMouseDown: [{\n            type: Output,\n            args: ['leafletMouseDown']\n        }], onMouseUp: [{\n            type: Output,\n            args: ['leafletMouseUp']\n        }], onMouseMove: [{\n            type: Output,\n            args: ['leafletMouseMove']\n        }], onMouseOver: [{\n            type: Output,\n            args: ['leafletMouseOver']\n        }], onMouseOut: [{\n            type: Output,\n            args: ['leafletMouseOut']\n        }], onMapMove: [{\n            type: Output,\n            args: ['leafletMapMove']\n        }], onMapMoveStart: [{\n            type: Output,\n            args: ['leafletMapMoveStart']\n        }], onMapMoveEnd: [{\n            type: Output,\n            args: ['leafletMapMoveEnd']\n        }], onMapZoom: [{\n            type: Output,\n            args: ['leafletMapZoom']\n        }], onMapZoomStart: [{\n            type: Output,\n            args: ['leafletMapZoomStart']\n        }], onMapZoomEnd: [{\n            type: Output,\n            args: ['leafletMapZoomEnd']\n        }], onResize: [{\n            type: HostListener,\n            args: ['window:resize', []]\n        }], zoom: [{\n            type: Input,\n            args: ['leafletZoom']\n        }], center: [{\n            type: Input,\n            args: ['leafletCenter']\n        }], fitBounds: [{\n            type: Input,\n            args: ['leafletFitBounds']\n        }], maxBounds: [{\n            type: Input,\n            args: ['leafletMaxBounds']\n        }], minZoom: [{\n            type: Input,\n            args: ['leafletMinZoom']\n        }], maxZoom: [{\n            type: Input,\n            args: ['leafletMaxZoom']\n        }] }); })();\n    return LeafletDirective;\n}());\nexport { LeafletDirective };\n\n//# sourceMappingURL=leaflet.directive.js.map","var LeafletDirectiveWrapper = /** @class */ (function () {\n    function LeafletDirectiveWrapper(leafletDirective) {\n        this.leafletDirective = leafletDirective;\n    }\n    LeafletDirectiveWrapper.prototype.init = function () {\n        // Nothing for now\n    };\n    LeafletDirectiveWrapper.prototype.getMap = function () {\n        return this.leafletDirective.getMap();\n    };\n    return LeafletDirectiveWrapper;\n}());\nexport { LeafletDirectiveWrapper };\n//# sourceMappingURL=leaflet.directive.wrapper.js.map","var LeafletUtil = /** @class */ (function () {\n    function LeafletUtil() {\n    }\n    LeafletUtil.mapToArray = function (map) {\n        var toReturn = [];\n        for (var k in map) {\n            if (map.hasOwnProperty(k)) {\n                toReturn.push(map[k]);\n            }\n        }\n        return toReturn;\n    };\n    LeafletUtil.handleEvent = function (zone, eventEmitter, event) {\n        // Don't want to emit if there are no observers\n        if (0 < eventEmitter.observers.length) {\n            zone.run(function () {\n                eventEmitter.emit(event);\n            });\n        }\n    };\n    return LeafletUtil;\n}());\nexport { LeafletUtil };\n//# sourceMappingURL=leaflet.util.js.map","import { __decorate, __metadata } from \"tslib\";\nimport { Directive, EventEmitter, Input, KeyValueDiffers, NgZone, Output } from '@angular/core';\nimport { Control } from 'leaflet';\nimport { LeafletUtil } from '../../core/leaflet.util';\nimport { LeafletDirective } from '../../core/leaflet.directive';\nimport { LeafletDirectiveWrapper } from '../../core/leaflet.directive.wrapper';\nimport { LeafletControlLayersWrapper } from '../control/leaflet-control-layers.wrapper';\n/**\n * Baselayers directive\n *\n * This directive is provided as a convenient way to add baselayers to the map. The input accepts\n * a key-value map of layer name -> layer. Mutable changed are detected. On changes, a differ is\n * used to determine what changed so that layers are appropriately added or removed. This directive\n * will also add the layers control so users can switch between available base layers.\n *\n * To specify which layer to show as the 'active' baselayer, you will want to add it to the map\n * using the layers directive. Otherwise, the plugin will use the last one it sees.\n */\nimport * as ɵngcc0 from '@angular/core';\nvar LeafletBaseLayersDirective = /** @class */ (function () {\n    function LeafletBaseLayersDirective(leafletDirective, differs, zone) {\n        this.differs = differs;\n        this.zone = zone;\n        // Output for once the layers control is ready\n        this.layersControlReady = new EventEmitter();\n        this.leafletDirective = new LeafletDirectiveWrapper(leafletDirective);\n        this.controlLayers = new LeafletControlLayersWrapper(this.zone, this.layersControlReady);\n        this.baseLayersDiffer = this.differs.find({}).create();\n    }\n    Object.defineProperty(LeafletBaseLayersDirective.prototype, \"baseLayers\", {\n        get: function () {\n            return this.baseLayersValue;\n        },\n        // Set/get baseLayers\n        set: function (v) {\n            this.baseLayersValue = v;\n            this.updateBaseLayers();\n        },\n        enumerable: true,\n        configurable: true\n    });\n    LeafletBaseLayersDirective.prototype.ngOnDestroy = function () {\n        this.baseLayers = {};\n        this.controlLayers.getLayersControl().remove();\n    };\n    LeafletBaseLayersDirective.prototype.ngOnInit = function () {\n        var _this = this;\n        // Init the map\n        this.leafletDirective.init();\n        // Create the control outside angular to prevent events from triggering chnage detection\n        this.zone.runOutsideAngular(function () {\n            // Initially configure the controlLayers\n            _this.controlLayers\n                .init({}, _this.layersControlOptions)\n                .addTo(_this.leafletDirective.getMap());\n        });\n        this.updateBaseLayers();\n    };\n    LeafletBaseLayersDirective.prototype.ngDoCheck = function () {\n        this.updateBaseLayers();\n    };\n    LeafletBaseLayersDirective.prototype.updateBaseLayers = function () {\n        var map = this.leafletDirective.getMap();\n        var layersControl = this.controlLayers.getLayersControl();\n        if (null != map && null != layersControl && null != this.baseLayersDiffer) {\n            var changes = this.baseLayersDiffer.diff(this.baseLayersValue);\n            var results = this.controlLayers.applyBaseLayerChanges(changes);\n            if (results.changed()) {\n                this.syncBaseLayer();\n            }\n        }\n    };\n    /**\n     * Check the current base layer and change it to the new one if necessary\n     */\n    LeafletBaseLayersDirective.prototype.syncBaseLayer = function () {\n        var _this = this;\n        var map = this.leafletDirective.getMap();\n        var layers = LeafletUtil.mapToArray(this.baseLayers);\n        var foundLayer;\n        // Search all the layers in the map to see if we can find them in the baselayer array\n        map.eachLayer(function (l) {\n            foundLayer = layers.find(function (bl) { return (l === bl); });\n        });\n        // Did we find the layer?\n        if (null != foundLayer) {\n            // Yes - set the baselayer to the one we found\n            this.baseLayer = foundLayer;\n        }\n        else {\n            // No - set the baselayer to the first in the array and add it to the map\n            if (layers.length > 0) {\n                this.baseLayer = layers[0];\n                // Add layers outside of angular to prevent events from triggering change detection\n                this.zone.runOutsideAngular(function () {\n                    _this.baseLayer.addTo(map);\n                });\n            }\n        }\n    };\n    __decorate([\n        Input('leafletBaseLayers'),\n        __metadata(\"design:type\", Object),\n        __metadata(\"design:paramtypes\", [Object])\n    ], LeafletBaseLayersDirective.prototype, \"baseLayers\", null);\n    __decorate([\n        Input('leafletLayersControlOptions'),\n        __metadata(\"design:type\", Object)\n    ], LeafletBaseLayersDirective.prototype, \"layersControlOptions\", void 0);\n    __decorate([\n        Output('leafletLayersControlReady'),\n        __metadata(\"design:type\", Object)\n    ], LeafletBaseLayersDirective.prototype, \"layersControlReady\", void 0);\n    LeafletBaseLayersDirective = __decorate([ __metadata(\"design:paramtypes\", [LeafletDirective, KeyValueDiffers, NgZone])\n    ], LeafletBaseLayersDirective);\nLeafletBaseLayersDirective.ɵfac = function LeafletBaseLayersDirective_Factory(t) { return new (t || LeafletBaseLayersDirective)(ɵngcc0.ɵɵdirectiveInject(LeafletDirective), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.KeyValueDiffers), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nLeafletBaseLayersDirective.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: LeafletBaseLayersDirective, selectors: [[\"\", \"leafletBaseLayers\", \"\"]], inputs: { baseLayers: [\"leafletBaseLayers\", \"baseLayers\"], layersControlOptions: [\"leafletLayersControlOptions\", \"layersControlOptions\"] }, outputs: { layersControlReady: \"leafletLayersControlReady\" } });\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(LeafletBaseLayersDirective, [{\n        type: Directive,\n        args: [{\n                selector: '[leafletBaseLayers]'\n            }]\n    }], function () { return [{ type: LeafletDirective }, { type: ɵngcc0.KeyValueDiffers }, { type: ɵngcc0.NgZone }]; }, { layersControlReady: [{\n            type: Output,\n            args: ['leafletLayersControlReady']\n        }], baseLayers: [{\n            type: Input,\n            args: ['leafletBaseLayers']\n        }], layersControlOptions: [{\n            type: Input,\n            args: ['leafletLayersControlOptions']\n        }] }); })();\n    return LeafletBaseLayersDirective;\n}());\nexport { LeafletBaseLayersDirective };\n\n//# sourceMappingURL=leaflet-baselayers.directive.js.map","var LeafletControlLayersChanges = /** @class */ (function () {\n    function LeafletControlLayersChanges() {\n        this.layersRemoved = 0;\n        this.layersChanged = 0;\n        this.layersAdded = 0;\n    }\n    LeafletControlLayersChanges.prototype.changed = function () {\n        return !(this.layersRemoved === 0 && this.layersChanged === 0 && this.layersAdded === 0);\n    };\n    return LeafletControlLayersChanges;\n}());\nexport { LeafletControlLayersChanges };\n//# sourceMappingURL=leaflet-control-layers-changes.model.js.map","var LeafletControlLayersConfig = /** @class */ (function () {\n    function LeafletControlLayersConfig() {\n        this.baseLayers = {};\n        this.overlays = {};\n    }\n    return LeafletControlLayersConfig;\n}());\nexport { LeafletControlLayersConfig };\n//# sourceMappingURL=leaflet-control-layers-config.model.js.map","import { __decorate, __metadata } from \"tslib\";\nimport { Directive, EventEmitter, Input, KeyValueDiffers, NgZone, Output } from '@angular/core';\nimport { LeafletDirective } from '../../core/leaflet.directive';\nimport { LeafletDirectiveWrapper } from '../../core/leaflet.directive.wrapper';\nimport { LeafletControlLayersWrapper } from './leaflet-control-layers.wrapper';\nimport { LeafletControlLayersConfig } from './leaflet-control-layers-config.model';\n/**\n * Layers Control\n *\n * This directive is used to configure the layers control. The input accepts an object with two\n * key-value maps of layer name -> layer. Mutable changes are detected. On changes, a differ is\n * used to determine what changed so that layers are appropriately added or removed.\n *\n * To specify which layer to show as the 'active' baselayer, you will want to add it to the map\n * using the layers directive. Otherwise, the last one it sees will be used.\n */\nimport * as ɵngcc0 from '@angular/core';\nvar LeafletLayersControlDirective = /** @class */ (function () {\n    function LeafletLayersControlDirective(leafletDirective, differs, zone) {\n        this.differs = differs;\n        this.zone = zone;\n        this.layersControlReady = new EventEmitter();\n        this.leafletDirective = new LeafletDirectiveWrapper(leafletDirective);\n        this.controlLayers = new LeafletControlLayersWrapper(this.zone, this.layersControlReady);\n        // Generate differs\n        this.baseLayersDiffer = this.differs.find({}).create();\n        this.overlaysDiffer = this.differs.find({}).create();\n    }\n    Object.defineProperty(LeafletLayersControlDirective.prototype, \"layersControlConfig\", {\n        get: function () {\n            return this.layersControlConfigValue;\n        },\n        set: function (v) {\n            // Validation/init stuff\n            if (null == v) {\n                v = new LeafletControlLayersConfig();\n            }\n            if (null == v.baseLayers) {\n                v.baseLayers = {};\n            }\n            if (null == v.overlays) {\n                v.overlays = {};\n            }\n            // Store the value\n            this.layersControlConfigValue = v;\n            // Update the map\n            this.updateLayers();\n        },\n        enumerable: true,\n        configurable: true\n    });\n    LeafletLayersControlDirective.prototype.ngOnInit = function () {\n        var _this = this;\n        // Init the map\n        this.leafletDirective.init();\n        // Set up control outside of angular to avoid change detection when using the control\n        this.zone.runOutsideAngular(function () {\n            // Set up all the initial settings\n            _this.controlLayers\n                .init({}, _this.layersControlOptions)\n                .addTo(_this.leafletDirective.getMap());\n        });\n        this.updateLayers();\n    };\n    LeafletLayersControlDirective.prototype.ngOnDestroy = function () {\n        this.layersControlConfig = { baseLayers: {}, overlays: {} };\n        this.controlLayers.getLayersControl().remove();\n    };\n    LeafletLayersControlDirective.prototype.ngDoCheck = function () {\n        this.updateLayers();\n    };\n    LeafletLayersControlDirective.prototype.updateLayers = function () {\n        var map = this.leafletDirective.getMap();\n        var layersControl = this.controlLayers.getLayersControl();\n        if (null != map && null != layersControl) {\n            // Run the baselayers differ\n            if (null != this.baseLayersDiffer && null != this.layersControlConfigValue.baseLayers) {\n                var changes = this.baseLayersDiffer.diff(this.layersControlConfigValue.baseLayers);\n                this.controlLayers.applyBaseLayerChanges(changes);\n            }\n            // Run the overlays differ\n            if (null != this.overlaysDiffer && null != this.layersControlConfigValue.overlays) {\n                var changes = this.overlaysDiffer.diff(this.layersControlConfigValue.overlays);\n                this.controlLayers.applyOverlayChanges(changes);\n            }\n        }\n    };\n    __decorate([\n        Input('leafletLayersControl'),\n        __metadata(\"design:type\", LeafletControlLayersConfig),\n        __metadata(\"design:paramtypes\", [LeafletControlLayersConfig])\n    ], LeafletLayersControlDirective.prototype, \"layersControlConfig\", null);\n    __decorate([\n        Input('leafletLayersControlOptions'),\n        __metadata(\"design:type\", Object)\n    ], LeafletLayersControlDirective.prototype, \"layersControlOptions\", void 0);\n    __decorate([\n        Output('leafletLayersControlReady'),\n        __metadata(\"design:type\", Object)\n    ], LeafletLayersControlDirective.prototype, \"layersControlReady\", void 0);\n    LeafletLayersControlDirective = __decorate([ __metadata(\"design:paramtypes\", [LeafletDirective, KeyValueDiffers, NgZone])\n    ], LeafletLayersControlDirective);\nLeafletLayersControlDirective.ɵfac = function LeafletLayersControlDirective_Factory(t) { return new (t || LeafletLayersControlDirective)(ɵngcc0.ɵɵdirectiveInject(LeafletDirective), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.KeyValueDiffers), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nLeafletLayersControlDirective.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: LeafletLayersControlDirective, selectors: [[\"\", \"leafletLayersControl\", \"\"]], inputs: { layersControlConfig: [\"leafletLayersControl\", \"layersControlConfig\"], layersControlOptions: [\"leafletLayersControlOptions\", \"layersControlOptions\"] }, outputs: { layersControlReady: \"leafletLayersControlReady\" } });\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(LeafletLayersControlDirective, [{\n        type: Directive,\n        args: [{\n                selector: '[leafletLayersControl]'\n            }]\n    }], function () { return [{ type: LeafletDirective }, { type: ɵngcc0.KeyValueDiffers }, { type: ɵngcc0.NgZone }]; }, { layersControlReady: [{\n            type: Output,\n            args: ['leafletLayersControlReady']\n        }], layersControlConfig: [{\n            type: Input,\n            args: ['leafletLayersControl']\n        }], layersControlOptions: [{\n            type: Input,\n            args: ['leafletLayersControlOptions']\n        }] }); })();\n    return LeafletLayersControlDirective;\n}());\nexport { LeafletLayersControlDirective };\n\n//# sourceMappingURL=leaflet-control-layers.directive.js.map","import { control } from 'leaflet';\nimport { LeafletControlLayersChanges } from './leaflet-control-layers-changes.model';\nvar LeafletControlLayersWrapper = /** @class */ (function () {\n    function LeafletControlLayersWrapper(zone, layersControlReady) {\n        this.zone = zone;\n        this.layersControlReady = layersControlReady;\n    }\n    LeafletControlLayersWrapper.prototype.getLayersControl = function () {\n        return this.layersControl;\n    };\n    LeafletControlLayersWrapper.prototype.init = function (controlConfig, controlOptions) {\n        var _this = this;\n        var baseLayers = controlConfig.baseLayers || {};\n        var overlays = controlConfig.overlays || {};\n        // Create the control outside of angular to ensure events don't trigger change detection\n        this.zone.runOutsideAngular(function () {\n            _this.layersControl = control.layers(baseLayers, overlays, controlOptions);\n        });\n        this.layersControlReady.emit(this.layersControl);\n        return this.layersControl;\n    };\n    LeafletControlLayersWrapper.prototype.applyBaseLayerChanges = function (changes) {\n        var results = new LeafletControlLayersChanges();\n        if (null != this.layersControl) {\n            results = this.applyChanges(changes, this.layersControl.addBaseLayer);\n        }\n        return results;\n    };\n    LeafletControlLayersWrapper.prototype.applyOverlayChanges = function (changes) {\n        var results = new LeafletControlLayersChanges();\n        if (null != this.layersControl) {\n            results = this.applyChanges(changes, this.layersControl.addOverlay);\n        }\n        return results;\n    };\n    LeafletControlLayersWrapper.prototype.applyChanges = function (changes, addFn) {\n        var _this = this;\n        var results = new LeafletControlLayersChanges();\n        if (null != changes) {\n            // All layer management is outside angular to avoid layer events from triggering change detection\n            this.zone.runOutsideAngular(function () {\n                changes.forEachChangedItem(function (c) {\n                    _this.layersControl.removeLayer(c.previousValue);\n                    addFn.call(_this.layersControl, c.currentValue, c.key);\n                    results.layersChanged++;\n                });\n                changes.forEachRemovedItem(function (c) {\n                    _this.layersControl.removeLayer(c.previousValue);\n                    results.layersRemoved++;\n                });\n                changes.forEachAddedItem(function (c) {\n                    addFn.call(_this.layersControl, c.currentValue, c.key);\n                    results.layersAdded++;\n                });\n            });\n        }\n        return results;\n    };\n    return LeafletControlLayersWrapper;\n}());\nexport { LeafletControlLayersWrapper };\n//# sourceMappingURL=leaflet-control-layers.wrapper.js.map","import { __decorate, __metadata } from \"tslib\";\nimport { Directive, EventEmitter, Input, NgZone, Output } from '@angular/core';\nimport { Layer } from 'leaflet';\nimport { LeafletDirective } from '../core/leaflet.directive';\nimport { LeafletDirectiveWrapper } from '../core/leaflet.directive.wrapper';\nimport { LeafletUtil } from '../core/leaflet.util';\n/**\n * Layer directive\n *\n * This directive is used to directly control a single map layer. The purpose of this directive is to\n * be used as part of a child structural directive of the map element.\n *\n */\nimport * as ɵngcc0 from '@angular/core';\nvar LeafletLayerDirective = /** @class */ (function () {\n    function LeafletLayerDirective(leafletDirective, zone) {\n        this.zone = zone;\n        // Layer Events\n        this.onAdd = new EventEmitter();\n        this.onRemove = new EventEmitter();\n        this.leafletDirective = new LeafletDirectiveWrapper(leafletDirective);\n    }\n    LeafletLayerDirective.prototype.ngOnInit = function () {\n        // Init the map\n        this.leafletDirective.init();\n    };\n    LeafletLayerDirective.prototype.ngOnDestroy = function () {\n        this.layer.remove();\n    };\n    LeafletLayerDirective.prototype.ngOnChanges = function (changes) {\n        var _this = this;\n        if (changes['layer']) {\n            // Update the layer\n            var p_1 = changes['layer'].previousValue;\n            var n_1 = changes['layer'].currentValue;\n            this.zone.runOutsideAngular(function () {\n                if (null != p_1) {\n                    p_1.remove();\n                }\n                if (null != n_1) {\n                    _this.addLayerEventListeners(n_1);\n                    _this.leafletDirective.getMap().addLayer(n_1);\n                }\n            });\n        }\n    };\n    LeafletLayerDirective.prototype.addLayerEventListeners = function (l) {\n        var _this = this;\n        l.on('add', function (e) { return LeafletUtil.handleEvent(_this.zone, _this.onAdd, e); });\n        l.on('remove', function (e) { return LeafletUtil.handleEvent(_this.zone, _this.onRemove, e); });\n    };\n    __decorate([\n        Input('leafletLayer'),\n        __metadata(\"design:type\", Layer)\n    ], LeafletLayerDirective.prototype, \"layer\", void 0);\n    __decorate([\n        Output('leafletLayerAdd'),\n        __metadata(\"design:type\", Object)\n    ], LeafletLayerDirective.prototype, \"onAdd\", void 0);\n    __decorate([\n        Output('leafletLayerRemove'),\n        __metadata(\"design:type\", Object)\n    ], LeafletLayerDirective.prototype, \"onRemove\", void 0);\n    LeafletLayerDirective = __decorate([ __metadata(\"design:paramtypes\", [LeafletDirective, NgZone])\n    ], LeafletLayerDirective);\nLeafletLayerDirective.ɵfac = function LeafletLayerDirective_Factory(t) { return new (t || LeafletLayerDirective)(ɵngcc0.ɵɵdirectiveInject(LeafletDirective), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nLeafletLayerDirective.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: LeafletLayerDirective, selectors: [[\"\", \"leafletLayer\", \"\"]], inputs: { layer: [\"leafletLayer\", \"layer\"] }, outputs: { onAdd: \"leafletLayerAdd\", onRemove: \"leafletLayerRemove\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature] });\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(LeafletLayerDirective, [{\n        type: Directive,\n        args: [{\n                selector: '[leafletLayer]'\n            }]\n    }], function () { return [{ type: LeafletDirective }, { type: ɵngcc0.NgZone }]; }, { onAdd: [{\n            type: Output,\n            args: ['leafletLayerAdd']\n        }], onRemove: [{\n            type: Output,\n            args: ['leafletLayerRemove']\n        }], layer: [{\n            type: Input,\n            args: ['leafletLayer']\n        }] }); })();\n    return LeafletLayerDirective;\n}());\nexport { LeafletLayerDirective };\n\n//# sourceMappingURL=leaflet-layer.directive.js.map","import { __decorate, __metadata } from \"tslib\";\nimport { Directive, Input, IterableDiffers, NgZone } from '@angular/core';\nimport { LeafletDirective } from '../core/leaflet.directive';\nimport { LeafletDirectiveWrapper } from '../core/leaflet.directive.wrapper';\n/**\n * Layers directive\n *\n * This directive is used to directly control map layers. As changes are made to the input array of\n * layers, the map is synched to the array. As layers are added or removed from the input array, they\n * are also added or removed from the map. The input array is treated as immutable. To detect changes,\n * you must change the array instance.\n *\n * Important Note: The input layers array is assumed to be immutable. This means you need to use an\n * immutable array implementation or create a new copy of your array when you make changes, otherwise\n * this directive won't detect the change. This is by design. It's for performance reasons. Change\n * detection of mutable arrays requires diffing the state of the array on every DoCheck cycle, which\n * is extremely expensive from a time complexity perspective.\n *\n */\nimport * as ɵngcc0 from '@angular/core';\nvar LeafletLayersDirective = /** @class */ (function () {\n    function LeafletLayersDirective(leafletDirective, differs, zone) {\n        this.differs = differs;\n        this.zone = zone;\n        this.leafletDirective = new LeafletDirectiveWrapper(leafletDirective);\n        this.layersDiffer = this.differs.find([]).create();\n    }\n    Object.defineProperty(LeafletLayersDirective.prototype, \"layers\", {\n        get: function () {\n            return this.layersValue;\n        },\n        // Set/get the layers\n        set: function (v) {\n            this.layersValue = v;\n            // Now that we have a differ, do an immediate layer update\n            this.updateLayers();\n        },\n        enumerable: true,\n        configurable: true\n    });\n    LeafletLayersDirective.prototype.ngDoCheck = function () {\n        this.updateLayers();\n    };\n    LeafletLayersDirective.prototype.ngOnInit = function () {\n        // Init the map\n        this.leafletDirective.init();\n        // Update layers once the map is ready\n        this.updateLayers();\n    };\n    LeafletLayersDirective.prototype.ngOnDestroy = function () {\n        this.layers = [];\n    };\n    /**\n     * Update the state of the layers.\n     * We use an iterable differ to synchronize the map layers with the state of the bound layers array.\n     * This is important because it allows us to react to changes to the contents of the array as well\n     * as changes to the actual array instance.\n     */\n    LeafletLayersDirective.prototype.updateLayers = function () {\n        var map = this.leafletDirective.getMap();\n        if (null != map && null != this.layersDiffer) {\n            var changes_1 = this.layersDiffer.diff(this.layersValue);\n            if (null != changes_1) {\n                // Run outside angular to ensure layer events don't trigger change detection\n                this.zone.runOutsideAngular(function () {\n                    changes_1.forEachRemovedItem(function (c) {\n                        map.removeLayer(c.item);\n                    });\n                    changes_1.forEachAddedItem(function (c) {\n                        map.addLayer(c.item);\n                    });\n                });\n            }\n        }\n    };\n    __decorate([\n        Input('leafletLayers'),\n        __metadata(\"design:type\", Array),\n        __metadata(\"design:paramtypes\", [Array])\n    ], LeafletLayersDirective.prototype, \"layers\", null);\n    LeafletLayersDirective = __decorate([ __metadata(\"design:paramtypes\", [LeafletDirective, IterableDiffers, NgZone])\n    ], LeafletLayersDirective);\nLeafletLayersDirective.ɵfac = function LeafletLayersDirective_Factory(t) { return new (t || LeafletLayersDirective)(ɵngcc0.ɵɵdirectiveInject(LeafletDirective), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.IterableDiffers), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nLeafletLayersDirective.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: LeafletLayersDirective, selectors: [[\"\", \"leafletLayers\", \"\"]], inputs: { layers: [\"leafletLayers\", \"layers\"] } });\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(LeafletLayersDirective, [{\n        type: Directive,\n        args: [{\n                selector: '[leafletLayers]'\n            }]\n    }], function () { return [{ type: LeafletDirective }, { type: ɵngcc0.IterableDiffers }, { type: ɵngcc0.NgZone }]; }, { layers: [{\n            type: Input,\n            args: ['leafletLayers']\n        }] }); })();\n    return LeafletLayersDirective;\n}());\nexport { LeafletLayersDirective };\n\n//# sourceMappingURL=leaflet-layers.directive.js.map","import { tileLayer } from 'leaflet';\nvar LeafletTileLayerDefinition = /** @class */ (function () {\n    function LeafletTileLayerDefinition(type, url, options) {\n        this.type = type;\n        this.url = url;\n        this.options = options;\n    }\n    /**\n     * Creates a TileLayer from the provided definition. This is a convenience function\n     * to help with generating layers from objects.\n     *\n     * @param layerDef The layer to create\n     * @returns {TileLayer} The TileLayer that has been created\n     */\n    LeafletTileLayerDefinition.createTileLayer = function (layerDef) {\n        var layer;\n        switch (layerDef.type) {\n            case 'xyz':\n                layer = tileLayer(layerDef.url, layerDef.options);\n                break;\n            case 'wms':\n            default:\n                layer = tileLayer.wms(layerDef.url, layerDef.options);\n                break;\n        }\n        return layer;\n    };\n    /**\n     * Creates a TileLayer for each key in the incoming map. This is a convenience function\n     * for generating an associative array of layers from an associative array of objects\n     *\n     * @param layerDefs A map of key to tile layer definition\n     * @returns {{[p: string]: TileLayer}} A new map of key to TileLayer\n     */\n    LeafletTileLayerDefinition.createTileLayers = function (layerDefs) {\n        var layers = {};\n        for (var k in layerDefs) {\n            if (layerDefs.hasOwnProperty(k)) {\n                layers[k] = (LeafletTileLayerDefinition.createTileLayer(layerDefs[k]));\n            }\n        }\n        return layers;\n    };\n    /**\n     * Create a Tile Layer from the current state of this object\n     *\n     * @returns {TileLayer} A new TileLayer\n     */\n    LeafletTileLayerDefinition.prototype.createTileLayer = function () {\n        return LeafletTileLayerDefinition.createTileLayer(this);\n    };\n    return LeafletTileLayerDefinition;\n}());\nexport { LeafletTileLayerDefinition };\n//# sourceMappingURL=leaflet-tile-layer-definition.model.js.map","import { __decorate } from \"tslib\";\nimport { NgModule } from '@angular/core';\nimport { LeafletDirective } from './core/leaflet.directive';\nimport { LeafletLayerDirective } from './layers/leaflet-layer.directive';\nimport { LeafletLayersDirective } from './layers/leaflet-layers.directive';\nimport { LeafletLayersControlDirective } from './layers/control/leaflet-control-layers.directive';\nimport { LeafletBaseLayersDirective } from './layers/base/leaflet-baselayers.directive';\nimport * as ɵngcc0 from '@angular/core';\nvar LeafletModule = /** @class */ (function () {\n    function LeafletModule() {\n    }\nLeafletModule.ɵmod = ɵngcc0.ɵɵdefineNgModule({ type: LeafletModule });\nLeafletModule.ɵinj = ɵngcc0.ɵɵdefineInjector({ factory: function LeafletModule_Factory(t) { return new (t || LeafletModule)(); } });\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(LeafletModule, { declarations: function () { return [LeafletDirective,\n        LeafletLayerDirective,\n        LeafletLayersDirective,\n        LeafletLayersControlDirective,\n        LeafletBaseLayersDirective]; }, exports: function () { return [LeafletDirective,\n        LeafletLayerDirective,\n        LeafletLayersDirective,\n        LeafletLayersControlDirective,\n        LeafletBaseLayersDirective]; } }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(LeafletModule, [{\n        type: NgModule,\n        args: [{\n                exports: [\n                    LeafletDirective,\n                    LeafletLayerDirective,\n                    LeafletLayersDirective,\n                    LeafletLayersControlDirective,\n                    LeafletBaseLayersDirective\n                ],\n                declarations: [\n                    LeafletDirective,\n                    LeafletLayerDirective,\n                    LeafletLayersDirective,\n                    LeafletLayersControlDirective,\n                    LeafletBaseLayersDirective\n                ]\n            }]\n    }], function () { return []; }, null); })();\n    return LeafletModule;\n}());\nexport { LeafletModule };\n\n//# sourceMappingURL=leaflet.module.js.map","import { __decorate } from 'tslib';\nimport { ApplicationRef, ComponentFactoryResolver, Injector, Injectable, ElementRef, Renderer2, Input, ViewChild, HostBinding, HostListener, Component, ViewEncapsulation, EventEmitter, Output, ChangeDetectionStrategy, NgZone, Directive, ChangeDetectorRef, NgModule, ViewContainerRef, ContentChild } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { trigger, transition, style, animate } from '@angular/animations';\nimport { DomPortalHost, ComponentPortal } from '@angular/cdk/portal';\nimport { fromEvent } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { select, event } from 'd3-selection';\nimport { brushX } from 'd3-brush';\nimport { scaleTime, scaleLinear, scalePoint, scaleQuantile, scaleOrdinal, scaleBand } from 'd3-scale';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { curveLinear, area, line, curveCardinalClosed, lineRadial, arc, pie } from 'd3-shape';\nimport { range, min, max } from 'd3-array';\nimport { interpolate } from 'd3-interpolate';\nimport { format } from 'd3-format';\nimport { rgb } from 'd3-color';\nimport { treemap, stratify } from 'd3-hierarchy';\nimport { timeFormat } from 'd3-time-format';\n\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/common';\nimport * as ɵngcc2 from '@angular/platform-browser';\n\nconst _c0 = [\"caretElm\"];\nfunction TooltipContentComponent_span_4_ng_template_1_Template(rf, ctx) { }\nconst _c1 = function (a0) { return { model: a0 }; };\nfunction TooltipContentComponent_span_4_Template(rf, ctx) { if (rf & 1) {\n    ɵngcc0.ɵɵelementStart(0, \"span\");\n    ɵngcc0.ɵɵtemplate(1, TooltipContentComponent_span_4_ng_template_1_Template, 0, 0, \"ng-template\", 5);\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const ctx_r1 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r1.template)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction1(2, _c1, ctx_r1.context));\n} }\nfunction TooltipContentComponent_span_5_Template(rf, ctx) { if (rf & 1) {\n    ɵngcc0.ɵɵelement(0, \"span\", 6);\n} if (rf & 2) {\n    const ctx_r2 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵproperty(\"innerHTML\", ctx_r2.title, ɵngcc0.ɵɵsanitizeHtml);\n} }\nfunction ChartComponent_ngx_charts_scale_legend_3_Template(rf, ctx) { if (rf & 1) {\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵnamespaceHTML();\n    ɵngcc0.ɵɵelement(0, \"ngx-charts-scale-legend\", 4);\n} if (rf & 2) {\n    const ctx_r0 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵproperty(\"horizontal\", ctx_r0.legendOptions && ctx_r0.legendOptions.position === \"below\")(\"valueRange\", ctx_r0.legendOptions.domain)(\"colors\", ctx_r0.legendOptions.colors)(\"height\", ctx_r0.view[1])(\"width\", ctx_r0.legendWidth);\n} }\nfunction ChartComponent_ngx_charts_legend_4_Template(rf, ctx) { if (rf & 1) {\n    const _r3 = ɵngcc0.ɵɵgetCurrentView();\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵnamespaceHTML();\n    ɵngcc0.ɵɵelementStart(0, \"ngx-charts-legend\", 5);\n    ɵngcc0.ɵɵlistener(\"labelClick\", function ChartComponent_ngx_charts_legend_4_Template_ngx_charts_legend_labelClick_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r3); const ctx_r2 = ɵngcc0.ɵɵnextContext(); return ctx_r2.legendLabelClick.emit($event); })(\"labelActivate\", function ChartComponent_ngx_charts_legend_4_Template_ngx_charts_legend_labelActivate_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r3); const ctx_r4 = ɵngcc0.ɵɵnextContext(); return ctx_r4.legendLabelActivate.emit($event); })(\"labelDeactivate\", function ChartComponent_ngx_charts_legend_4_Template_ngx_charts_legend_labelDeactivate_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r3); const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.legendLabelDeactivate.emit($event); });\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const ctx_r1 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵproperty(\"horizontal\", ctx_r1.legendOptions && ctx_r1.legendOptions.position === \"below\")(\"data\", ctx_r1.legendOptions.domain)(\"title\", ctx_r1.legendOptions.title)(\"colors\", ctx_r1.legendOptions.colors)(\"height\", ctx_r1.view[1])(\"width\", ctx_r1.legendWidth)(\"activeEntries\", ctx_r1.activeEntries);\n} }\nconst _c2 = [\"*\"];\nconst _c3 = [\"ngx-charts-axis-label\", \"\"];\nconst _c4 = [\"ticksel\"];\nconst _c5 = [\"ngx-charts-x-axis-ticks\", \"\"];\nfunction XAxisTicksComponent__svg_g_2_Template(rf, ctx) { if (rf & 1) {\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\", 3);\n    ɵngcc0.ɵɵelementStart(1, \"title\");\n    ɵngcc0.ɵɵtext(2);\n    ɵngcc0.ɵɵelementEnd();\n    ɵngcc0.ɵɵelementStart(3, \"text\", 4);\n    ɵngcc0.ɵɵtext(4);\n    ɵngcc0.ɵɵelementEnd();\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const tick_r3 = ctx.$implicit;\n    const ctx_r1 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵattribute(\"transform\", ctx_r1.tickTransform(tick_r3));\n    ɵngcc0.ɵɵadvance(2);\n    ɵngcc0.ɵɵtextInterpolate(ctx_r1.tickFormat(tick_r3));\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵstyleProp(\"font-size\", \"12px\");\n    ɵngcc0.ɵɵattribute(\"text-anchor\", ctx_r1.textAnchor)(\"transform\", ctx_r1.textTransform);\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r1.tickTrim(ctx_r1.tickFormat(tick_r3)), \" \");\n} }\nfunction XAxisTicksComponent__svg_g_3__svg_g_1_Template(rf, ctx) { if (rf & 1) {\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\");\n    ɵngcc0.ɵɵelement(1, \"line\", 6);\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const ctx_r5 = ɵngcc0.ɵɵnextContext(2);\n    ɵngcc0.ɵɵattribute(\"transform\", ctx_r5.gridLineTransform());\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵattribute(\"y1\", 0 - ctx_r5.gridLineHeight);\n} }\nfunction XAxisTicksComponent__svg_g_3_Template(rf, ctx) { if (rf & 1) {\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\");\n    ɵngcc0.ɵɵtemplate(1, XAxisTicksComponent__svg_g_3__svg_g_1_Template, 2, 2, \"g\", 5);\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const tick_r4 = ctx.$implicit;\n    const ctx_r2 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵattribute(\"transform\", ctx_r2.tickTransform(tick_r4));\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r2.showGridLines);\n} }\nconst _c6 = [\"ngx-charts-x-axis\", \"\"];\nfunction XAxisComponent__svg_g_1_Template(rf, ctx) { if (rf & 1) {\n    const _r3 = ɵngcc0.ɵɵgetCurrentView();\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\", 2);\n    ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function XAxisComponent__svg_g_1_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r3); const ctx_r2 = ɵngcc0.ɵɵnextContext(); return ctx_r2.emitTicksHeight($event); });\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const ctx_r0 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵproperty(\"trimTicks\", ctx_r0.trimTicks)(\"rotateTicks\", ctx_r0.rotateTicks)(\"maxTickLength\", ctx_r0.maxTickLength)(\"tickFormatting\", ctx_r0.tickFormatting)(\"tickArguments\", ctx_r0.tickArguments)(\"tickStroke\", ctx_r0.tickStroke)(\"scale\", ctx_r0.xScale)(\"orient\", ctx_r0.xOrient)(\"showGridLines\", ctx_r0.showGridLines)(\"gridLineHeight\", ctx_r0.dims.height)(\"width\", ctx_r0.dims.width)(\"tickValues\", ctx_r0.ticks);\n} }\nfunction XAxisComponent__svg_g_2_Template(rf, ctx) { if (rf & 1) {\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelement(0, \"g\", 3);\n} if (rf & 2) {\n    const ctx_r1 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵproperty(\"label\", ctx_r1.labelText)(\"offset\", ctx_r1.labelOffset)(\"orient\", \"bottom\")(\"height\", ctx_r1.dims.height)(\"width\", ctx_r1.dims.width);\n} }\nconst _c7 = [\"ngx-charts-y-axis-ticks\", \"\"];\nfunction YAxisTicksComponent__svg_g_2_Template(rf, ctx) { if (rf & 1) {\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\", 4);\n    ɵngcc0.ɵɵelementStart(1, \"title\");\n    ɵngcc0.ɵɵtext(2);\n    ɵngcc0.ɵɵelementEnd();\n    ɵngcc0.ɵɵelementStart(3, \"text\", 5);\n    ɵngcc0.ɵɵtext(4);\n    ɵngcc0.ɵɵelementEnd();\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const tick_r5 = ctx.$implicit;\n    const ctx_r1 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵattribute(\"transform\", ctx_r1.transform(tick_r5));\n    ɵngcc0.ɵɵadvance(2);\n    ɵngcc0.ɵɵtextInterpolate(ctx_r1.tickFormat(tick_r5));\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵstyleProp(\"font-size\", \"12px\");\n    ɵngcc0.ɵɵattribute(\"dy\", ctx_r1.dy)(\"x\", ctx_r1.x1)(\"y\", ctx_r1.y1)(\"text-anchor\", ctx_r1.textAnchor);\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r1.tickTrim(ctx_r1.tickFormat(tick_r5)), \" \");\n} }\nfunction YAxisTicksComponent__svg_path_3_Template(rf, ctx) { if (rf & 1) {\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelement(0, \"path\", 6);\n} if (rf & 2) {\n    const ctx_r2 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵattribute(\"d\", ctx_r2.referenceAreaPath)(\"transform\", ctx_r2.gridLineTransform());\n} }\nfunction YAxisTicksComponent__svg_g_4__svg_g_1__svg_line_1_Template(rf, ctx) { if (rf & 1) {\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelement(0, \"line\", 9);\n} if (rf & 2) {\n    const ctx_r8 = ɵngcc0.ɵɵnextContext(3);\n    ɵngcc0.ɵɵattribute(\"x2\", ctx_r8.gridLineWidth);\n} }\nfunction YAxisTicksComponent__svg_g_4__svg_g_1__svg_line_2_Template(rf, ctx) { if (rf & 1) {\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelement(0, \"line\", 9);\n} if (rf & 2) {\n    const ctx_r9 = ɵngcc0.ɵɵnextContext(3);\n    ɵngcc0.ɵɵattribute(\"x2\", 0 - ctx_r9.gridLineWidth);\n} }\nfunction YAxisTicksComponent__svg_g_4__svg_g_1_Template(rf, ctx) { if (rf & 1) {\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\");\n    ɵngcc0.ɵɵtemplate(1, YAxisTicksComponent__svg_g_4__svg_g_1__svg_line_1_Template, 1, 1, \"line\", 8);\n    ɵngcc0.ɵɵtemplate(2, YAxisTicksComponent__svg_g_4__svg_g_1__svg_line_2_Template, 1, 1, \"line\", 8);\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const ctx_r7 = ɵngcc0.ɵɵnextContext(2);\n    ɵngcc0.ɵɵattribute(\"transform\", ctx_r7.gridLineTransform());\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r7.orient === \"left\");\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r7.orient === \"right\");\n} }\nfunction YAxisTicksComponent__svg_g_4_Template(rf, ctx) { if (rf & 1) {\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\");\n    ɵngcc0.ɵɵtemplate(1, YAxisTicksComponent__svg_g_4__svg_g_1_Template, 3, 3, \"g\", 7);\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const tick_r6 = ctx.$implicit;\n    const ctx_r3 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵattribute(\"transform\", ctx_r3.transform(tick_r6));\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r3.showGridLines);\n} }\nfunction YAxisTicksComponent__svg_g_5__svg_g_1__svg_g_2_Template(rf, ctx) { if (rf & 1) {\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\");\n    ɵngcc0.ɵɵelementStart(1, \"title\");\n    ɵngcc0.ɵɵtext(2);\n    ɵngcc0.ɵɵelementEnd();\n    ɵngcc0.ɵɵelementStart(3, \"text\", 11);\n    ɵngcc0.ɵɵtext(4);\n    ɵngcc0.ɵɵelementEnd();\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const refLine_r10 = ɵngcc0.ɵɵnextContext(2).$implicit;\n    const ctx_r12 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵadvance(2);\n    ɵngcc0.ɵɵtextInterpolate(ctx_r12.tickTrim(ctx_r12.tickFormat(refLine_r10.value)));\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵattribute(\"dy\", ctx_r12.dy)(\"y\", 0 - 6)(\"x\", ctx_r12.gridLineWidth)(\"text-anchor\", ctx_r12.textAnchor);\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵtextInterpolate1(\" \", refLine_r10.name, \" \");\n} }\nfunction YAxisTicksComponent__svg_g_5__svg_g_1_Template(rf, ctx) { if (rf & 1) {\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\");\n    ɵngcc0.ɵɵelement(1, \"line\", 10);\n    ɵngcc0.ɵɵtemplate(2, YAxisTicksComponent__svg_g_5__svg_g_1__svg_g_2_Template, 5, 6, \"g\", 7);\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const refLine_r10 = ɵngcc0.ɵɵnextContext().$implicit;\n    const ctx_r11 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵattribute(\"transform\", ctx_r11.transform(refLine_r10.value));\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵattribute(\"x2\", ctx_r11.gridLineWidth)(\"transform\", ctx_r11.gridLineTransform());\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r11.showRefLabels);\n} }\nfunction YAxisTicksComponent__svg_g_5_Template(rf, ctx) { if (rf & 1) {\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\");\n    ɵngcc0.ɵɵtemplate(1, YAxisTicksComponent__svg_g_5__svg_g_1_Template, 3, 4, \"g\", 7);\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const ctx_r4 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r4.showRefLines);\n} }\nconst _c8 = [\"ngx-charts-y-axis\", \"\"];\nfunction YAxisComponent__svg_g_1_Template(rf, ctx) { if (rf & 1) {\n    const _r3 = ɵngcc0.ɵɵgetCurrentView();\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\", 2);\n    ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function YAxisComponent__svg_g_1_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r3); const ctx_r2 = ɵngcc0.ɵɵnextContext(); return ctx_r2.emitTicksWidth($event); });\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const ctx_r0 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵproperty(\"trimTicks\", ctx_r0.trimTicks)(\"maxTickLength\", ctx_r0.maxTickLength)(\"tickFormatting\", ctx_r0.tickFormatting)(\"tickArguments\", ctx_r0.tickArguments)(\"tickValues\", ctx_r0.ticks)(\"tickStroke\", ctx_r0.tickStroke)(\"scale\", ctx_r0.yScale)(\"orient\", ctx_r0.yOrient)(\"showGridLines\", ctx_r0.showGridLines)(\"gridLineWidth\", ctx_r0.dims.width)(\"referenceLines\", ctx_r0.referenceLines)(\"showRefLines\", ctx_r0.showRefLines)(\"showRefLabels\", ctx_r0.showRefLabels)(\"height\", ctx_r0.dims.height);\n} }\nfunction YAxisComponent__svg_g_2_Template(rf, ctx) { if (rf & 1) {\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelement(0, \"g\", 3);\n} if (rf & 2) {\n    const ctx_r1 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵproperty(\"label\", ctx_r1.labelText)(\"offset\", ctx_r1.labelOffset)(\"orient\", ctx_r1.yOrient)(\"height\", ctx_r1.dims.height)(\"width\", ctx_r1.dims.width);\n} }\nconst _c9 = [\"ngx-charts-circle-series\", \"\"];\nfunction CircleSeriesComponent__svg_g_0__svg_rect_3_Template(rf, ctx) { if (rf & 1) {\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelement(0, \"rect\", 4);\n} if (rf & 2) {\n    const ctx_r1 = ɵngcc0.ɵɵnextContext(2);\n    ɵngcc0.ɵɵproperty(\"@animationState\", \"active\");\n    ɵngcc0.ɵɵattribute(\"x\", ctx_r1.circle.cx - ctx_r1.circle.radius)(\"y\", ctx_r1.circle.cy)(\"width\", ctx_r1.circle.radius * 2)(\"height\", ctx_r1.circle.height)(\"fill\", ctx_r1.gradientFill);\n} }\nconst _c10 = function (a0) { return { name: a0 }; };\nfunction CircleSeriesComponent__svg_g_0_Template(rf, ctx) { if (rf & 1) {\n    const _r3 = ɵngcc0.ɵɵgetCurrentView();\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\");\n    ɵngcc0.ɵɵelementStart(1, \"defs\");\n    ɵngcc0.ɵɵelement(2, \"g\", 1);\n    ɵngcc0.ɵɵelementEnd();\n    ɵngcc0.ɵɵtemplate(3, CircleSeriesComponent__svg_g_0__svg_rect_3_Template, 1, 6, \"rect\", 2);\n    ɵngcc0.ɵɵelementStart(4, \"g\", 3);\n    ɵngcc0.ɵɵlistener(\"select\", function CircleSeriesComponent__svg_g_0_Template__svg_g_select_4_listener() { ɵngcc0.ɵɵrestoreView(_r3); const ctx_r2 = ɵngcc0.ɵɵnextContext(); return ctx_r2.onClick(ctx_r2.circle.data); })(\"activate\", function CircleSeriesComponent__svg_g_0_Template__svg_g_activate_4_listener() { ɵngcc0.ɵɵrestoreView(_r3); const ctx_r4 = ɵngcc0.ɵɵnextContext(); return ctx_r4.activateCircle(); })(\"deactivate\", function CircleSeriesComponent__svg_g_0_Template__svg_g_deactivate_4_listener() { ɵngcc0.ɵɵrestoreView(_r3); const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.deactivateCircle(); });\n    ɵngcc0.ɵɵelementEnd();\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const ctx_r0 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵadvance(2);\n    ɵngcc0.ɵɵproperty(\"name\", ctx_r0.gradientId)(\"stops\", ctx_r0.circle.gradientStops);\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r0.barVisible && ctx_r0.type === \"standard\");\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵclassProp(\"active\", ctx_r0.isActive(ɵngcc0.ɵɵpureFunction1(18, _c10, ctx_r0.circle.seriesName)));\n    ɵngcc0.ɵɵproperty(\"cx\", ctx_r0.circle.cx)(\"cy\", ctx_r0.circle.cy)(\"r\", ctx_r0.circle.radius)(\"fill\", ctx_r0.circle.color)(\"pointerEvents\", ctx_r0.circle.value === 0 ? \"none\" : \"all\")(\"data\", ctx_r0.circle.value)(\"classNames\", ctx_r0.circle.classNames)(\"tooltipDisabled\", ctx_r0.tooltipDisabled)(\"tooltipPlacement\", \"top\")(\"tooltipType\", \"tooltip\")(\"tooltipTitle\", ctx_r0.tooltipTemplate ? undefined : ctx_r0.getTooltipText(ctx_r0.circle))(\"tooltipTemplate\", ctx_r0.tooltipTemplate)(\"tooltipContext\", ctx_r0.circle.data);\n} }\nconst _c11 = [\"ngx-charts-circle\", \"\"];\nconst _c12 = [\"ngx-charts-grid-panel\", \"\"];\nconst _c13 = [\"ngx-charts-grid-panel-series\", \"\"];\nfunction GridPanelSeriesComponent__svg_g_0_Template(rf, ctx) { if (rf & 1) {\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelement(0, \"g\", 1);\n} if (rf & 2) {\n    const gridPanel_r1 = ctx.$implicit;\n    ɵngcc0.ɵɵclassProp(\"grid-panel\", true)(\"odd\", gridPanel_r1.class === \"odd\")(\"even\", gridPanel_r1.class === \"even\");\n    ɵngcc0.ɵɵproperty(\"height\", gridPanel_r1.height)(\"width\", gridPanel_r1.width)(\"x\", gridPanel_r1.x)(\"y\", gridPanel_r1.y);\n} }\nconst _c14 = [\"ngx-charts-svg-linear-gradient\", \"\"];\nfunction SvgLinearGradientComponent__svg_stop_1_Template(rf, ctx) { if (rf & 1) {\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelement(0, \"stop\");\n} if (rf & 2) {\n    const stop_r1 = ctx.$implicit;\n    ɵngcc0.ɵɵstyleProp(\"stop-color\", stop_r1.color)(\"stop-opacity\", stop_r1.opacity);\n    ɵngcc0.ɵɵattribute(\"offset\", stop_r1.offset + \"%\");\n} }\nconst _c15 = [\"ngx-charts-svg-radial-gradient\", \"\"];\nfunction SvgRadialGradientComponent__svg_stop_1_Template(rf, ctx) { if (rf & 1) {\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelement(0, \"stop\");\n} if (rf & 2) {\n    const stop_r1 = ctx.$implicit;\n    ɵngcc0.ɵɵstyleProp(\"stop-color\", stop_r1.color)(\"stop-opacity\", stop_r1.opacity);\n    ɵngcc0.ɵɵattribute(\"offset\", stop_r1.offset + \"%\");\n} }\nconst _c16 = [\"ngx-charts-area\", \"\"];\nfunction AreaComponent__svg_defs_0_Template(rf, ctx) { if (rf & 1) {\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"defs\");\n    ɵngcc0.ɵɵelement(1, \"g\", 2);\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const ctx_r0 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"name\", ctx_r0.gradientId)(\"stops\", ctx_r0.gradientStops);\n} }\nconst _c17 = [\"ngx-charts-count-up\", \"\"];\nconst _c18 = [\"tooltipAnchor\"];\nconst _c19 = [\"ngx-charts-tooltip-area\", \"\"];\nfunction TooltipArea__svg_ng_template_2__xhtml_div_1_Template(rf, ctx) { if (rf & 1) {\n    ɵngcc0.ɵɵelementStart(0, \"div\", 6);\n    ɵngcc0.ɵɵelement(1, \"span\", 7);\n    ɵngcc0.ɵɵtext(2);\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const tooltipItem_r5 = ctx.$implicit;\n    const ctx_r4 = ɵngcc0.ɵɵnextContext(2);\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵstyleProp(\"background-color\", tooltipItem_r5.color);\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r4.getToolTipText(tooltipItem_r5), \" \");\n} }\nfunction TooltipArea__svg_ng_template_2_Template(rf, ctx) { if (rf & 1) {\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵnamespaceHTML();\n    ɵngcc0.ɵɵelementStart(0, \"div\", 4);\n    ɵngcc0.ɵɵtemplate(1, TooltipArea__svg_ng_template_2__xhtml_div_1_Template, 3, 3, \"div\", 5);\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const model_r3 = ctx.model;\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"ngForOf\", model_r3);\n} }\nconst _c20 = [\"ngx-charts-timeline\", \"\"];\nfunction LegendComponent_header_1_Template(rf, ctx) { if (rf & 1) {\n    ɵngcc0.ɵɵelementStart(0, \"header\", 4);\n    ɵngcc0.ɵɵelementStart(1, \"span\", 5);\n    ɵngcc0.ɵɵtext(2);\n    ɵngcc0.ɵɵelementEnd();\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const ctx_r0 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵadvance(2);\n    ɵngcc0.ɵɵtextInterpolate(ctx_r0.title);\n} }\nfunction LegendComponent_li_4_Template(rf, ctx) { if (rf & 1) {\n    const _r4 = ɵngcc0.ɵɵgetCurrentView();\n    ɵngcc0.ɵɵelementStart(0, \"li\", 6);\n    ɵngcc0.ɵɵelementStart(1, \"ngx-charts-legend-entry\", 7);\n    ɵngcc0.ɵɵlistener(\"select\", function LegendComponent_li_4_Template_ngx_charts_legend_entry_select_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r4); const ctx_r3 = ɵngcc0.ɵɵnextContext(); return ctx_r3.labelClick.emit($event); })(\"activate\", function LegendComponent_li_4_Template_ngx_charts_legend_entry_activate_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r4); const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.activate($event); })(\"deactivate\", function LegendComponent_li_4_Template_ngx_charts_legend_entry_deactivate_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r4); const ctx_r6 = ɵngcc0.ɵɵnextContext(); return ctx_r6.deactivate($event); });\n    ɵngcc0.ɵɵelementEnd();\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const entry_r2 = ctx.$implicit;\n    const ctx_r1 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"label\", entry_r2.label)(\"formattedLabel\", entry_r2.formattedLabel)(\"color\", entry_r2.color)(\"isActive\", ctx_r1.isActive(entry_r2));\n} }\nfunction AdvancedLegendComponent_div_1_Template(rf, ctx) { if (rf & 1) {\n    ɵngcc0.ɵɵelement(0, \"div\", 7);\n} if (rf & 2) {\n    const ctx_r0 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵproperty(\"countTo\", ctx_r0.roundedTotal)(\"valueFormatting\", ctx_r0.valueFormatting);\n} }\nfunction AdvancedLegendComponent_div_2_Template(rf, ctx) { if (rf & 1) {\n    ɵngcc0.ɵɵelementStart(0, \"div\", 8);\n    ɵngcc0.ɵɵtext(1);\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const ctx_r1 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r1.valueFormatting ? ctx_r1.valueFormatting(ctx_r1.roundedTotal) : ctx_r1.defaultValueFormatting(ctx_r1.roundedTotal), \" \");\n} }\nfunction AdvancedLegendComponent_div_7_div_2_Template(rf, ctx) { if (rf & 1) {\n    ɵngcc0.ɵɵelement(0, \"div\", 16);\n} if (rf & 2) {\n    const legendItem_r3 = ɵngcc0.ɵɵnextContext().$implicit;\n    const ctx_r4 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵproperty(\"countTo\", legendItem_r3._value)(\"valueFormatting\", ctx_r4.valueFormatting);\n} }\nfunction AdvancedLegendComponent_div_7_div_3_Template(rf, ctx) { if (rf & 1) {\n    ɵngcc0.ɵɵelementStart(0, \"div\", 17);\n    ɵngcc0.ɵɵtext(1);\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const legendItem_r3 = ɵngcc0.ɵɵnextContext().$implicit;\n    const ctx_r5 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r5.valueFormatting ? ctx_r5.valueFormatting(legendItem_r3.value) : ctx_r5.defaultValueFormatting(legendItem_r3.value), \" \");\n} }\nfunction AdvancedLegendComponent_div_7_div_6_Template(rf, ctx) { if (rf & 1) {\n    ɵngcc0.ɵɵelement(0, \"div\", 18);\n} if (rf & 2) {\n    const legendItem_r3 = ɵngcc0.ɵɵnextContext().$implicit;\n    ɵngcc0.ɵɵproperty(\"countTo\", legendItem_r3.percentage)(\"countSuffix\", \"%\");\n} }\nfunction AdvancedLegendComponent_div_7_div_7_Template(rf, ctx) { if (rf & 1) {\n    ɵngcc0.ɵɵelementStart(0, \"div\", 19);\n    ɵngcc0.ɵɵtext(1);\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const legendItem_r3 = ɵngcc0.ɵɵnextContext().$implicit;\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵtextInterpolate1(\"\", legendItem_r3.percentage.toLocaleString(), \"%\");\n} }\nfunction AdvancedLegendComponent_div_7_Template(rf, ctx) { if (rf & 1) {\n    const _r13 = ɵngcc0.ɵɵgetCurrentView();\n    ɵngcc0.ɵɵelementStart(0, \"div\", 9);\n    ɵngcc0.ɵɵlistener(\"mouseenter\", function AdvancedLegendComponent_div_7_Template_div_mouseenter_0_listener() { ɵngcc0.ɵɵrestoreView(_r13); const legendItem_r3 = ctx.$implicit; const ctx_r12 = ɵngcc0.ɵɵnextContext(); return ctx_r12.activate.emit(legendItem_r3.data); })(\"mouseleave\", function AdvancedLegendComponent_div_7_Template_div_mouseleave_0_listener() { ɵngcc0.ɵɵrestoreView(_r13); const legendItem_r3 = ctx.$implicit; const ctx_r14 = ɵngcc0.ɵɵnextContext(); return ctx_r14.deactivate.emit(legendItem_r3.data); })(\"click\", function AdvancedLegendComponent_div_7_Template_div_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r13); const legendItem_r3 = ctx.$implicit; const ctx_r15 = ɵngcc0.ɵɵnextContext(); return ctx_r15.select.emit(legendItem_r3.data); });\n    ɵngcc0.ɵɵelement(1, \"div\", 10);\n    ɵngcc0.ɵɵtemplate(2, AdvancedLegendComponent_div_7_div_2_Template, 1, 2, \"div\", 11);\n    ɵngcc0.ɵɵtemplate(3, AdvancedLegendComponent_div_7_div_3_Template, 2, 1, \"div\", 12);\n    ɵngcc0.ɵɵelementStart(4, \"div\", 13);\n    ɵngcc0.ɵɵtext(5);\n    ɵngcc0.ɵɵelementEnd();\n    ɵngcc0.ɵɵtemplate(6, AdvancedLegendComponent_div_7_div_6_Template, 1, 2, \"div\", 14);\n    ɵngcc0.ɵɵtemplate(7, AdvancedLegendComponent_div_7_div_7_Template, 2, 1, \"div\", 15);\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const legendItem_r3 = ctx.$implicit;\n    const ctx_r2 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵstyleProp(\"border-left-color\", legendItem_r3.color);\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r2.animations);\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r2.animations);\n    ɵngcc0.ɵɵadvance(2);\n    ɵngcc0.ɵɵtextInterpolate(legendItem_r3.displayLabel);\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r2.animations);\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r2.animations);\n} }\nconst _c21 = [\"tooltipTemplate\"];\nconst _c22 = [\"seriesTooltipTemplate\"];\nfunction AreaChartComponent__svg_g_5_Template(rf, ctx) { if (rf & 1) {\n    const _r6 = ɵngcc0.ɵɵgetCurrentView();\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\", 7);\n    ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function AreaChartComponent__svg_g_5_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.updateXAxisHeight($event); });\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const ctx_r0 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵproperty(\"xScale\", ctx_r0.xScale)(\"dims\", ctx_r0.dims)(\"showGridLines\", ctx_r0.showGridLines)(\"showLabel\", ctx_r0.showXAxisLabel)(\"labelText\", ctx_r0.xAxisLabel)(\"trimTicks\", ctx_r0.trimXAxisTicks)(\"rotateTicks\", ctx_r0.rotateXAxisTicks)(\"maxTickLength\", ctx_r0.maxXAxisTickLength)(\"tickFormatting\", ctx_r0.xAxisTickFormatting)(\"ticks\", ctx_r0.xAxisTicks);\n} }\nfunction AreaChartComponent__svg_g_6_Template(rf, ctx) { if (rf & 1) {\n    const _r8 = ɵngcc0.ɵɵgetCurrentView();\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\", 8);\n    ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function AreaChartComponent__svg_g_6_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r8); const ctx_r7 = ɵngcc0.ɵɵnextContext(); return ctx_r7.updateYAxisWidth($event); });\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const ctx_r1 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵproperty(\"yScale\", ctx_r1.yScale)(\"dims\", ctx_r1.dims)(\"showGridLines\", ctx_r1.showGridLines)(\"showLabel\", ctx_r1.showYAxisLabel)(\"labelText\", ctx_r1.yAxisLabel)(\"trimTicks\", ctx_r1.trimYAxisTicks)(\"maxTickLength\", ctx_r1.maxYAxisTickLength)(\"tickFormatting\", ctx_r1.yAxisTickFormatting)(\"ticks\", ctx_r1.yAxisTicks);\n} }\nfunction AreaChartComponent__svg_g_8_Template(rf, ctx) { if (rf & 1) {\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\");\n    ɵngcc0.ɵɵelement(1, \"g\", 9);\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const series_r9 = ctx.$implicit;\n    const ctx_r2 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"xScale\", ctx_r2.xScale)(\"yScale\", ctx_r2.yScale)(\"baseValue\", ctx_r2.baseValue)(\"colors\", ctx_r2.colors)(\"data\", series_r9)(\"activeEntries\", ctx_r2.activeEntries)(\"scaleType\", ctx_r2.scaleType)(\"gradient\", ctx_r2.gradient)(\"curve\", ctx_r2.curve)(\"animations\", ctx_r2.animations);\n} }\nfunction AreaChartComponent__svg_g_9__svg_g_2_Template(rf, ctx) { if (rf & 1) {\n    const _r13 = ɵngcc0.ɵɵgetCurrentView();\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\");\n    ɵngcc0.ɵɵelementStart(1, \"g\", 13);\n    ɵngcc0.ɵɵlistener(\"select\", function AreaChartComponent__svg_g_9__svg_g_2_Template__svg_g_select_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r13); const series_r11 = ctx.$implicit; const ctx_r12 = ɵngcc0.ɵɵnextContext(2); return ctx_r12.onClick($event, series_r11); })(\"activate\", function AreaChartComponent__svg_g_9__svg_g_2_Template__svg_g_activate_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r13); const ctx_r14 = ɵngcc0.ɵɵnextContext(2); return ctx_r14.onActivate($event); })(\"deactivate\", function AreaChartComponent__svg_g_9__svg_g_2_Template__svg_g_deactivate_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r13); const ctx_r15 = ɵngcc0.ɵɵnextContext(2); return ctx_r15.onDeactivate($event); });\n    ɵngcc0.ɵɵelementEnd();\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const series_r11 = ctx.$implicit;\n    const ctx_r10 = ɵngcc0.ɵɵnextContext(2);\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"xScale\", ctx_r10.xScale)(\"yScale\", ctx_r10.yScale)(\"colors\", ctx_r10.colors)(\"activeEntries\", ctx_r10.activeEntries)(\"data\", series_r11)(\"scaleType\", ctx_r10.scaleType)(\"visibleValue\", ctx_r10.hoveredVertical)(\"tooltipDisabled\", ctx_r10.tooltipDisabled)(\"tooltipTemplate\", ctx_r10.tooltipTemplate);\n} }\nfunction AreaChartComponent__svg_g_9_Template(rf, ctx) { if (rf & 1) {\n    const _r17 = ɵngcc0.ɵɵgetCurrentView();\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\", 10);\n    ɵngcc0.ɵɵlistener(\"mouseleave\", function AreaChartComponent__svg_g_9_Template__svg_g_mouseleave_0_listener() { ɵngcc0.ɵɵrestoreView(_r17); const ctx_r16 = ɵngcc0.ɵɵnextContext(); return ctx_r16.hideCircles(); });\n    ɵngcc0.ɵɵelementStart(1, \"g\", 11);\n    ɵngcc0.ɵɵlistener(\"hover\", function AreaChartComponent__svg_g_9_Template__svg_g_hover_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r17); const ctx_r18 = ɵngcc0.ɵɵnextContext(); return ctx_r18.updateHoveredVertical($event); });\n    ɵngcc0.ɵɵelementEnd();\n    ɵngcc0.ɵɵtemplate(2, AreaChartComponent__svg_g_9__svg_g_2_Template, 2, 9, \"g\", 12);\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const ctx_r3 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"dims\", ctx_r3.dims)(\"xSet\", ctx_r3.xSet)(\"xScale\", ctx_r3.xScale)(\"yScale\", ctx_r3.yScale)(\"results\", ctx_r3.results)(\"colors\", ctx_r3.colors)(\"tooltipDisabled\", ctx_r3.tooltipDisabled)(\"tooltipTemplate\", ctx_r3.seriesTooltipTemplate);\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r3.results);\n} }\nfunction AreaChartComponent__svg_g_10__svg_g_1_Template(rf, ctx) { if (rf & 1) {\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\");\n    ɵngcc0.ɵɵelement(1, \"g\", 15);\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const series_r20 = ctx.$implicit;\n    const ctx_r19 = ɵngcc0.ɵɵnextContext(2);\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"xScale\", ctx_r19.timelineXScale)(\"yScale\", ctx_r19.timelineYScale)(\"baseValue\", ctx_r19.baseValue)(\"colors\", ctx_r19.colors)(\"data\", series_r20)(\"scaleType\", ctx_r19.scaleType)(\"gradient\", ctx_r19.gradient)(\"curve\", ctx_r19.curve)(\"animations\", ctx_r19.animations);\n} }\nconst _c23 = function (a0, a1) { return [a0, a1]; };\nfunction AreaChartComponent__svg_g_10_Template(rf, ctx) { if (rf & 1) {\n    const _r22 = ɵngcc0.ɵɵgetCurrentView();\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\", 14);\n    ɵngcc0.ɵɵlistener(\"onDomainChange\", function AreaChartComponent__svg_g_10_Template__svg_g_onDomainChange_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r22); const ctx_r21 = ɵngcc0.ɵɵnextContext(); return ctx_r21.updateDomain($event); });\n    ɵngcc0.ɵɵtemplate(1, AreaChartComponent__svg_g_10__svg_g_1_Template, 2, 9, \"g\", 4);\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const ctx_r4 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵproperty(\"results\", ctx_r4.results)(\"view\", ɵngcc0.ɵɵpureFunction2(10, _c23, ctx_r4.timelineWidth, ctx_r4.height))(\"height\", ctx_r4.timelineHeight)(\"scheme\", ctx_r4.scheme)(\"customColors\", ctx_r4.customColors)(\"legend\", ctx_r4.legend)(\"scaleType\", ctx_r4.scaleType);\n    ɵngcc0.ɵɵattribute(\"transform\", ctx_r4.timelineTransform);\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r4.results)(\"ngForTrackBy\", ctx_r4.trackBy);\n} }\nfunction AreaChartNormalizedComponent__svg_g_5_Template(rf, ctx) { if (rf & 1) {\n    const _r6 = ɵngcc0.ɵɵgetCurrentView();\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\", 7);\n    ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function AreaChartNormalizedComponent__svg_g_5_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.updateXAxisHeight($event); });\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const ctx_r0 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵproperty(\"xScale\", ctx_r0.xScale)(\"dims\", ctx_r0.dims)(\"showGridLines\", ctx_r0.showGridLines)(\"showLabel\", ctx_r0.showXAxisLabel)(\"labelText\", ctx_r0.xAxisLabel)(\"trimTicks\", ctx_r0.trimXAxisTicks)(\"rotateTicks\", ctx_r0.rotateXAxisTicks)(\"maxTickLength\", ctx_r0.maxXAxisTickLength)(\"tickFormatting\", ctx_r0.xAxisTickFormatting)(\"ticks\", ctx_r0.xAxisTicks);\n} }\nfunction AreaChartNormalizedComponent__svg_g_6_Template(rf, ctx) { if (rf & 1) {\n    const _r8 = ɵngcc0.ɵɵgetCurrentView();\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\", 8);\n    ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function AreaChartNormalizedComponent__svg_g_6_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r8); const ctx_r7 = ɵngcc0.ɵɵnextContext(); return ctx_r7.updateYAxisWidth($event); });\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const ctx_r1 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵproperty(\"yScale\", ctx_r1.yScale)(\"dims\", ctx_r1.dims)(\"showGridLines\", ctx_r1.showGridLines)(\"showLabel\", ctx_r1.showYAxisLabel)(\"labelText\", ctx_r1.yAxisLabel)(\"trimTicks\", ctx_r1.trimYAxisTicks)(\"maxTickLength\", ctx_r1.maxYAxisTickLength)(\"tickFormatting\", ctx_r1.yAxisTickFormatting)(\"ticks\", ctx_r1.yAxisTicks);\n} }\nfunction AreaChartNormalizedComponent__svg_g_8_Template(rf, ctx) { if (rf & 1) {\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\");\n    ɵngcc0.ɵɵelement(1, \"g\", 9);\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const series_r9 = ctx.$implicit;\n    const ctx_r2 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"xScale\", ctx_r2.xScale)(\"yScale\", ctx_r2.yScale)(\"colors\", ctx_r2.colors)(\"data\", series_r9)(\"scaleType\", ctx_r2.scaleType)(\"activeEntries\", ctx_r2.activeEntries)(\"gradient\", ctx_r2.gradient)(\"curve\", ctx_r2.curve)(\"animations\", ctx_r2.animations);\n} }\nfunction AreaChartNormalizedComponent__svg_g_9__svg_g_2_Template(rf, ctx) { if (rf & 1) {\n    const _r13 = ɵngcc0.ɵɵgetCurrentView();\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\");\n    ɵngcc0.ɵɵelementStart(1, \"g\", 13);\n    ɵngcc0.ɵɵlistener(\"select\", function AreaChartNormalizedComponent__svg_g_9__svg_g_2_Template__svg_g_select_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r13); const series_r11 = ctx.$implicit; const ctx_r12 = ɵngcc0.ɵɵnextContext(2); return ctx_r12.onClick($event, series_r11); })(\"activate\", function AreaChartNormalizedComponent__svg_g_9__svg_g_2_Template__svg_g_activate_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r13); const ctx_r14 = ɵngcc0.ɵɵnextContext(2); return ctx_r14.onActivate($event); })(\"deactivate\", function AreaChartNormalizedComponent__svg_g_9__svg_g_2_Template__svg_g_deactivate_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r13); const ctx_r15 = ɵngcc0.ɵɵnextContext(2); return ctx_r15.onDeactivate($event); });\n    ɵngcc0.ɵɵelementEnd();\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const series_r11 = ctx.$implicit;\n    const ctx_r10 = ɵngcc0.ɵɵnextContext(2);\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"xScale\", ctx_r10.xScale)(\"yScale\", ctx_r10.yScale)(\"colors\", ctx_r10.colors)(\"activeEntries\", ctx_r10.activeEntries)(\"data\", series_r11)(\"scaleType\", ctx_r10.scaleType)(\"visibleValue\", ctx_r10.hoveredVertical)(\"tooltipDisabled\", ctx_r10.tooltipDisabled)(\"tooltipTemplate\", ctx_r10.tooltipTemplate);\n} }\nfunction AreaChartNormalizedComponent__svg_g_9_Template(rf, ctx) { if (rf & 1) {\n    const _r17 = ɵngcc0.ɵɵgetCurrentView();\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\", 10);\n    ɵngcc0.ɵɵlistener(\"mouseleave\", function AreaChartNormalizedComponent__svg_g_9_Template__svg_g_mouseleave_0_listener() { ɵngcc0.ɵɵrestoreView(_r17); const ctx_r16 = ɵngcc0.ɵɵnextContext(); return ctx_r16.hideCircles(); });\n    ɵngcc0.ɵɵelementStart(1, \"g\", 11);\n    ɵngcc0.ɵɵlistener(\"hover\", function AreaChartNormalizedComponent__svg_g_9_Template__svg_g_hover_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r17); const ctx_r18 = ɵngcc0.ɵɵnextContext(); return ctx_r18.updateHoveredVertical($event); });\n    ɵngcc0.ɵɵelementEnd();\n    ɵngcc0.ɵɵtemplate(2, AreaChartNormalizedComponent__svg_g_9__svg_g_2_Template, 2, 9, \"g\", 12);\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const ctx_r3 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"dims\", ctx_r3.dims)(\"xSet\", ctx_r3.xSet)(\"xScale\", ctx_r3.xScale)(\"yScale\", ctx_r3.yScale)(\"results\", ctx_r3.results)(\"colors\", ctx_r3.colors)(\"showPercentage\", true)(\"tooltipDisabled\", ctx_r3.tooltipDisabled)(\"tooltipTemplate\", ctx_r3.seriesTooltipTemplate);\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r3.results);\n} }\nfunction AreaChartNormalizedComponent__svg_g_10__svg_g_1_Template(rf, ctx) { if (rf & 1) {\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\");\n    ɵngcc0.ɵɵelement(1, \"g\", 15);\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const series_r20 = ctx.$implicit;\n    const ctx_r19 = ɵngcc0.ɵɵnextContext(2);\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"xScale\", ctx_r19.timelineXScale)(\"yScale\", ctx_r19.timelineYScale)(\"colors\", ctx_r19.colors)(\"data\", series_r20)(\"scaleType\", ctx_r19.scaleType)(\"gradient\", ctx_r19.gradient)(\"curve\", ctx_r19.curve)(\"animations\", ctx_r19.animations);\n} }\nfunction AreaChartNormalizedComponent__svg_g_10_Template(rf, ctx) { if (rf & 1) {\n    const _r22 = ɵngcc0.ɵɵgetCurrentView();\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\", 14);\n    ɵngcc0.ɵɵlistener(\"onDomainChange\", function AreaChartNormalizedComponent__svg_g_10_Template__svg_g_onDomainChange_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r22); const ctx_r21 = ɵngcc0.ɵɵnextContext(); return ctx_r21.updateDomain($event); });\n    ɵngcc0.ɵɵtemplate(1, AreaChartNormalizedComponent__svg_g_10__svg_g_1_Template, 2, 8, \"g\", 4);\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const ctx_r4 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵproperty(\"results\", ctx_r4.results)(\"view\", ɵngcc0.ɵɵpureFunction2(10, _c23, ctx_r4.timelineWidth, ctx_r4.height))(\"height\", ctx_r4.timelineHeight)(\"scheme\", ctx_r4.scheme)(\"customColors\", ctx_r4.customColors)(\"legend\", ctx_r4.legend)(\"scaleType\", ctx_r4.scaleType);\n    ɵngcc0.ɵɵattribute(\"transform\", ctx_r4.timelineTransform);\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r4.results)(\"ngForTrackBy\", ctx_r4.trackBy);\n} }\nconst _c24 = \".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:0}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:0}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\";\nfunction AreaChartStackedComponent__svg_g_5_Template(rf, ctx) { if (rf & 1) {\n    const _r6 = ɵngcc0.ɵɵgetCurrentView();\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\", 7);\n    ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function AreaChartStackedComponent__svg_g_5_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.updateXAxisHeight($event); });\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const ctx_r0 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵproperty(\"xScale\", ctx_r0.xScale)(\"dims\", ctx_r0.dims)(\"showGridLines\", ctx_r0.showGridLines)(\"showLabel\", ctx_r0.showXAxisLabel)(\"labelText\", ctx_r0.xAxisLabel)(\"trimTicks\", ctx_r0.trimXAxisTicks)(\"rotateTicks\", ctx_r0.rotateXAxisTicks)(\"maxTickLength\", ctx_r0.maxXAxisTickLength)(\"tickFormatting\", ctx_r0.xAxisTickFormatting)(\"ticks\", ctx_r0.xAxisTicks);\n} }\nfunction AreaChartStackedComponent__svg_g_6_Template(rf, ctx) { if (rf & 1) {\n    const _r8 = ɵngcc0.ɵɵgetCurrentView();\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\", 8);\n    ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function AreaChartStackedComponent__svg_g_6_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r8); const ctx_r7 = ɵngcc0.ɵɵnextContext(); return ctx_r7.updateYAxisWidth($event); });\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const ctx_r1 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵproperty(\"yScale\", ctx_r1.yScale)(\"dims\", ctx_r1.dims)(\"showGridLines\", ctx_r1.showGridLines)(\"showLabel\", ctx_r1.showYAxisLabel)(\"labelText\", ctx_r1.yAxisLabel)(\"trimTicks\", ctx_r1.trimYAxisTicks)(\"maxTickLength\", ctx_r1.maxYAxisTickLength)(\"tickFormatting\", ctx_r1.yAxisTickFormatting)(\"ticks\", ctx_r1.yAxisTicks);\n} }\nfunction AreaChartStackedComponent__svg_g_8_Template(rf, ctx) { if (rf & 1) {\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\");\n    ɵngcc0.ɵɵelement(1, \"g\", 9);\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const series_r9 = ctx.$implicit;\n    const ctx_r2 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"xScale\", ctx_r2.xScale)(\"yScale\", ctx_r2.yScale)(\"colors\", ctx_r2.colors)(\"data\", series_r9)(\"scaleType\", ctx_r2.scaleType)(\"gradient\", ctx_r2.gradient)(\"activeEntries\", ctx_r2.activeEntries)(\"curve\", ctx_r2.curve)(\"animations\", ctx_r2.animations);\n} }\nfunction AreaChartStackedComponent__svg_g_9__svg_g_2_Template(rf, ctx) { if (rf & 1) {\n    const _r13 = ɵngcc0.ɵɵgetCurrentView();\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\");\n    ɵngcc0.ɵɵelementStart(1, \"g\", 12);\n    ɵngcc0.ɵɵlistener(\"select\", function AreaChartStackedComponent__svg_g_9__svg_g_2_Template__svg_g_select_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r13); const series_r11 = ctx.$implicit; const ctx_r12 = ɵngcc0.ɵɵnextContext(2); return ctx_r12.onClick($event, series_r11); })(\"activate\", function AreaChartStackedComponent__svg_g_9__svg_g_2_Template__svg_g_activate_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r13); const ctx_r14 = ɵngcc0.ɵɵnextContext(2); return ctx_r14.onActivate($event); })(\"deactivate\", function AreaChartStackedComponent__svg_g_9__svg_g_2_Template__svg_g_deactivate_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r13); const ctx_r15 = ɵngcc0.ɵɵnextContext(2); return ctx_r15.onDeactivate($event); });\n    ɵngcc0.ɵɵelementEnd();\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const series_r11 = ctx.$implicit;\n    const ctx_r10 = ɵngcc0.ɵɵnextContext(2);\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"xScale\", ctx_r10.xScale)(\"yScale\", ctx_r10.yScale)(\"colors\", ctx_r10.colors)(\"activeEntries\", ctx_r10.activeEntries)(\"data\", series_r11)(\"scaleType\", ctx_r10.scaleType)(\"visibleValue\", ctx_r10.hoveredVertical)(\"tooltipDisabled\", ctx_r10.tooltipDisabled)(\"tooltipTemplate\", ctx_r10.tooltipTemplate);\n} }\nfunction AreaChartStackedComponent__svg_g_9_Template(rf, ctx) { if (rf & 1) {\n    const _r17 = ɵngcc0.ɵɵgetCurrentView();\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\", 10);\n    ɵngcc0.ɵɵlistener(\"mouseleave\", function AreaChartStackedComponent__svg_g_9_Template__svg_g_mouseleave_0_listener() { ɵngcc0.ɵɵrestoreView(_r17); const ctx_r16 = ɵngcc0.ɵɵnextContext(); return ctx_r16.hideCircles(); });\n    ɵngcc0.ɵɵelementStart(1, \"g\", 11);\n    ɵngcc0.ɵɵlistener(\"hover\", function AreaChartStackedComponent__svg_g_9_Template__svg_g_hover_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r17); const ctx_r18 = ɵngcc0.ɵɵnextContext(); return ctx_r18.updateHoveredVertical($event); });\n    ɵngcc0.ɵɵelementEnd();\n    ɵngcc0.ɵɵtemplate(2, AreaChartStackedComponent__svg_g_9__svg_g_2_Template, 2, 9, \"g\", 4);\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const ctx_r3 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"dims\", ctx_r3.dims)(\"xSet\", ctx_r3.xSet)(\"xScale\", ctx_r3.xScale)(\"yScale\", ctx_r3.yScale)(\"results\", ctx_r3.results)(\"colors\", ctx_r3.colors)(\"tooltipDisabled\", ctx_r3.tooltipDisabled)(\"tooltipTemplate\", ctx_r3.seriesTooltipTemplate);\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r3.results)(\"ngForTrackBy\", ctx_r3.trackBy);\n} }\nfunction AreaChartStackedComponent__svg_g_10__svg_g_1_Template(rf, ctx) { if (rf & 1) {\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\");\n    ɵngcc0.ɵɵelement(1, \"g\", 14);\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const series_r20 = ctx.$implicit;\n    const ctx_r19 = ɵngcc0.ɵɵnextContext(2);\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"xScale\", ctx_r19.timelineXScale)(\"yScale\", ctx_r19.timelineYScale)(\"colors\", ctx_r19.colors)(\"data\", series_r20)(\"scaleType\", ctx_r19.scaleType)(\"gradient\", ctx_r19.gradient)(\"curve\", ctx_r19.curve)(\"animations\", ctx_r19.animations);\n} }\nfunction AreaChartStackedComponent__svg_g_10_Template(rf, ctx) { if (rf & 1) {\n    const _r22 = ɵngcc0.ɵɵgetCurrentView();\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\", 13);\n    ɵngcc0.ɵɵlistener(\"onDomainChange\", function AreaChartStackedComponent__svg_g_10_Template__svg_g_onDomainChange_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r22); const ctx_r21 = ɵngcc0.ɵɵnextContext(); return ctx_r21.updateDomain($event); });\n    ɵngcc0.ɵɵtemplate(1, AreaChartStackedComponent__svg_g_10__svg_g_1_Template, 2, 8, \"g\", 4);\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const ctx_r4 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵproperty(\"results\", ctx_r4.results)(\"view\", ɵngcc0.ɵɵpureFunction2(10, _c23, ctx_r4.timelineWidth, ctx_r4.height))(\"height\", ctx_r4.timelineHeight)(\"scheme\", ctx_r4.scheme)(\"customColors\", ctx_r4.customColors)(\"legend\", ctx_r4.legend)(\"scaleType\", ctx_r4.scaleType);\n    ɵngcc0.ɵɵattribute(\"transform\", ctx_r4.timelineTransform);\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r4.results)(\"ngForTrackBy\", ctx_r4.trackBy);\n} }\nconst _c25 = [\"ngx-charts-area-series\", \"\"];\nconst _c26 = [\"ngx-charts-bar\", \"\"];\nfunction BarComponent__svg_defs_0_Template(rf, ctx) { if (rf & 1) {\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"defs\");\n    ɵngcc0.ɵɵelement(1, \"g\", 2);\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const ctx_r0 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"orientation\", ctx_r0.orientation)(\"name\", ctx_r0.gradientId)(\"stops\", ctx_r0.gradientStops);\n} }\nfunction BarHorizontalComponent__svg_g_2_Template(rf, ctx) { if (rf & 1) {\n    const _r3 = ɵngcc0.ɵɵgetCurrentView();\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\", 5);\n    ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function BarHorizontalComponent__svg_g_2_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r3); const ctx_r2 = ɵngcc0.ɵɵnextContext(); return ctx_r2.updateXAxisHeight($event); });\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const ctx_r0 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵproperty(\"xScale\", ctx_r0.xScale)(\"dims\", ctx_r0.dims)(\"showGridLines\", ctx_r0.showGridLines)(\"showLabel\", ctx_r0.showXAxisLabel)(\"labelText\", ctx_r0.xAxisLabel)(\"trimTicks\", ctx_r0.trimXAxisTicks)(\"rotateTicks\", ctx_r0.rotateXAxisTicks)(\"maxTickLength\", ctx_r0.maxXAxisTickLength)(\"tickFormatting\", ctx_r0.xAxisTickFormatting)(\"ticks\", ctx_r0.xAxisTicks);\n} }\nfunction BarHorizontalComponent__svg_g_3_Template(rf, ctx) { if (rf & 1) {\n    const _r5 = ɵngcc0.ɵɵgetCurrentView();\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\", 6);\n    ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function BarHorizontalComponent__svg_g_3_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r5); const ctx_r4 = ɵngcc0.ɵɵnextContext(); return ctx_r4.updateYAxisWidth($event); });\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const ctx_r1 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵproperty(\"yScale\", ctx_r1.yScale)(\"dims\", ctx_r1.dims)(\"showLabel\", ctx_r1.showYAxisLabel)(\"labelText\", ctx_r1.yAxisLabel)(\"trimTicks\", ctx_r1.trimYAxisTicks)(\"maxTickLength\", ctx_r1.maxYAxisTickLength)(\"tickFormatting\", ctx_r1.yAxisTickFormatting)(\"ticks\", ctx_r1.yAxisTicks)(\"yAxisOffset\", ctx_r1.dataLabelMaxWidth.negative);\n} }\nfunction BarHorizontal2DComponent__svg_g_3_Template(rf, ctx) { if (rf & 1) {\n    const _r4 = ɵngcc0.ɵɵgetCurrentView();\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\", 6);\n    ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function BarHorizontal2DComponent__svg_g_3_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r4); const ctx_r3 = ɵngcc0.ɵɵnextContext(); return ctx_r3.updateXAxisHeight($event); });\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const ctx_r0 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵproperty(\"xScale\", ctx_r0.valueScale)(\"dims\", ctx_r0.dims)(\"showGridLines\", ctx_r0.showGridLines)(\"showLabel\", ctx_r0.showXAxisLabel)(\"labelText\", ctx_r0.xAxisLabel)(\"trimTicks\", ctx_r0.trimXAxisTicks)(\"rotateTicks\", ctx_r0.rotateXAxisTicks)(\"maxTickLength\", ctx_r0.maxXAxisTickLength)(\"tickFormatting\", ctx_r0.xAxisTickFormatting)(\"ticks\", ctx_r0.xAxisTicks);\n} }\nfunction BarHorizontal2DComponent__svg_g_4_Template(rf, ctx) { if (rf & 1) {\n    const _r6 = ɵngcc0.ɵɵgetCurrentView();\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\", 7);\n    ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function BarHorizontal2DComponent__svg_g_4_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.updateYAxisWidth($event); });\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const ctx_r1 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵproperty(\"yScale\", ctx_r1.groupScale)(\"dims\", ctx_r1.dims)(\"showLabel\", ctx_r1.showYAxisLabel)(\"labelText\", ctx_r1.yAxisLabel)(\"trimTicks\", ctx_r1.trimYAxisTicks)(\"maxTickLength\", ctx_r1.maxYAxisTickLength)(\"tickFormatting\", ctx_r1.yAxisTickFormatting)(\"ticks\", ctx_r1.yAxisTicks)(\"yAxisOffset\", ctx_r1.dataLabelMaxWidth.negative);\n} }\nfunction BarHorizontal2DComponent__svg_g_5_Template(rf, ctx) { if (rf & 1) {\n    const _r10 = ɵngcc0.ɵɵgetCurrentView();\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\");\n    ɵngcc0.ɵɵelementStart(1, \"g\", 8);\n    ɵngcc0.ɵɵlistener(\"select\", function BarHorizontal2DComponent__svg_g_5_Template__svg_g_select_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r10); const group_r7 = ctx.$implicit; const ctx_r9 = ɵngcc0.ɵɵnextContext(); return ctx_r9.onClick($event, group_r7); })(\"activate\", function BarHorizontal2DComponent__svg_g_5_Template__svg_g_activate_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r10); const group_r7 = ctx.$implicit; const ctx_r11 = ɵngcc0.ɵɵnextContext(); return ctx_r11.onActivate($event, group_r7); })(\"deactivate\", function BarHorizontal2DComponent__svg_g_5_Template__svg_g_deactivate_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r10); const group_r7 = ctx.$implicit; const ctx_r12 = ɵngcc0.ɵɵnextContext(); return ctx_r12.onDeactivate($event, group_r7); })(\"dataLabelWidthChanged\", function BarHorizontal2DComponent__svg_g_5_Template__svg_g_dataLabelWidthChanged_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r10); const index_r8 = ctx.index; const ctx_r13 = ɵngcc0.ɵɵnextContext(); return ctx_r13.onDataLabelMaxWidthChanged($event, index_r8); });\n    ɵngcc0.ɵɵelementEnd();\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const group_r7 = ctx.$implicit;\n    const ctx_r2 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵproperty(\"@animationState\", \"active\");\n    ɵngcc0.ɵɵattribute(\"transform\", ctx_r2.groupTransform(group_r7));\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"xScale\", ctx_r2.valueScale)(\"activeEntries\", ctx_r2.activeEntries)(\"yScale\", ctx_r2.innerScale)(\"colors\", ctx_r2.colors)(\"series\", group_r7.series)(\"dims\", ctx_r2.dims)(\"gradient\", ctx_r2.gradient)(\"tooltipDisabled\", ctx_r2.tooltipDisabled)(\"tooltipTemplate\", ctx_r2.tooltipTemplate)(\"seriesName\", group_r7.name)(\"roundEdges\", ctx_r2.roundEdges)(\"animations\", ctx_r2.animations)(\"showDataLabel\", ctx_r2.showDataLabel)(\"dataLabelFormatting\", ctx_r2.dataLabelFormatting)(\"noBarWhenZero\", ctx_r2.noBarWhenZero);\n} }\nfunction BarHorizontalNormalizedComponent__svg_g_2_Template(rf, ctx) { if (rf & 1) {\n    const _r4 = ɵngcc0.ɵɵgetCurrentView();\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\", 5);\n    ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function BarHorizontalNormalizedComponent__svg_g_2_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r4); const ctx_r3 = ɵngcc0.ɵɵnextContext(); return ctx_r3.updateXAxisHeight($event); });\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const ctx_r0 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵproperty(\"xScale\", ctx_r0.xScale)(\"dims\", ctx_r0.dims)(\"showGridLines\", ctx_r0.showGridLines)(\"showLabel\", ctx_r0.showXAxisLabel)(\"labelText\", ctx_r0.xAxisLabel)(\"trimTicks\", ctx_r0.trimXAxisTicks)(\"rotateTicks\", ctx_r0.rotateXAxisTicks)(\"maxTickLength\", ctx_r0.maxXAxisTickLength)(\"tickFormatting\", ctx_r0.xAxisTickFormatting)(\"ticks\", ctx_r0.xAxisTicks);\n} }\nfunction BarHorizontalNormalizedComponent__svg_g_3_Template(rf, ctx) { if (rf & 1) {\n    const _r6 = ɵngcc0.ɵɵgetCurrentView();\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\", 6);\n    ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function BarHorizontalNormalizedComponent__svg_g_3_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.updateYAxisWidth($event); });\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const ctx_r1 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵproperty(\"yScale\", ctx_r1.yScale)(\"dims\", ctx_r1.dims)(\"showLabel\", ctx_r1.showYAxisLabel)(\"labelText\", ctx_r1.yAxisLabel)(\"trimTicks\", ctx_r1.trimYAxisTicks)(\"maxTickLength\", ctx_r1.maxYAxisTickLength)(\"tickFormatting\", ctx_r1.yAxisTickFormatting)(\"ticks\", ctx_r1.yAxisTicks);\n} }\nfunction BarHorizontalNormalizedComponent__svg_g_4_Template(rf, ctx) { if (rf & 1) {\n    const _r9 = ɵngcc0.ɵɵgetCurrentView();\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\");\n    ɵngcc0.ɵɵelementStart(1, \"g\", 7);\n    ɵngcc0.ɵɵlistener(\"select\", function BarHorizontalNormalizedComponent__svg_g_4_Template__svg_g_select_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r9); const group_r7 = ctx.$implicit; const ctx_r8 = ɵngcc0.ɵɵnextContext(); return ctx_r8.onClick($event, group_r7); })(\"activate\", function BarHorizontalNormalizedComponent__svg_g_4_Template__svg_g_activate_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r9); const group_r7 = ctx.$implicit; const ctx_r10 = ɵngcc0.ɵɵnextContext(); return ctx_r10.onActivate($event, group_r7); })(\"deactivate\", function BarHorizontalNormalizedComponent__svg_g_4_Template__svg_g_deactivate_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r9); const group_r7 = ctx.$implicit; const ctx_r11 = ɵngcc0.ɵɵnextContext(); return ctx_r11.onDeactivate($event, group_r7); });\n    ɵngcc0.ɵɵelementEnd();\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const group_r7 = ctx.$implicit;\n    const ctx_r2 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵproperty(\"@animationState\", \"active\");\n    ɵngcc0.ɵɵattribute(\"transform\", ctx_r2.groupTransform(group_r7));\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"xScale\", ctx_r2.xScale)(\"yScale\", ctx_r2.yScale)(\"activeEntries\", ctx_r2.activeEntries)(\"colors\", ctx_r2.colors)(\"series\", group_r7.series)(\"dims\", ctx_r2.dims)(\"gradient\", ctx_r2.gradient)(\"tooltipDisabled\", ctx_r2.tooltipDisabled)(\"tooltipTemplate\", ctx_r2.tooltipTemplate)(\"seriesName\", group_r7.name)(\"animations\", ctx_r2.animations)(\"noBarWhenZero\", ctx_r2.noBarWhenZero);\n} }\nfunction BarHorizontalStackedComponent__svg_g_2_Template(rf, ctx) { if (rf & 1) {\n    const _r4 = ɵngcc0.ɵɵgetCurrentView();\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\", 5);\n    ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function BarHorizontalStackedComponent__svg_g_2_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r4); const ctx_r3 = ɵngcc0.ɵɵnextContext(); return ctx_r3.updateXAxisHeight($event); });\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const ctx_r0 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵproperty(\"xScale\", ctx_r0.xScale)(\"dims\", ctx_r0.dims)(\"showGridLines\", ctx_r0.showGridLines)(\"showLabel\", ctx_r0.showXAxisLabel)(\"labelText\", ctx_r0.xAxisLabel)(\"trimTicks\", ctx_r0.trimXAxisTicks)(\"rotateTicks\", ctx_r0.rotateXAxisTicks)(\"maxTickLength\", ctx_r0.maxXAxisTickLength)(\"tickFormatting\", ctx_r0.xAxisTickFormatting)(\"ticks\", ctx_r0.xAxisTicks);\n} }\nfunction BarHorizontalStackedComponent__svg_g_3_Template(rf, ctx) { if (rf & 1) {\n    const _r6 = ɵngcc0.ɵɵgetCurrentView();\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\", 6);\n    ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function BarHorizontalStackedComponent__svg_g_3_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.updateYAxisWidth($event); });\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const ctx_r1 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵproperty(\"yScale\", ctx_r1.yScale)(\"dims\", ctx_r1.dims)(\"showLabel\", ctx_r1.showYAxisLabel)(\"labelText\", ctx_r1.yAxisLabel)(\"trimTicks\", ctx_r1.trimYAxisTicks)(\"maxTickLength\", ctx_r1.maxYAxisTickLength)(\"tickFormatting\", ctx_r1.yAxisTickFormatting)(\"ticks\", ctx_r1.yAxisTicks)(\"yAxisOffset\", ctx_r1.dataLabelMaxWidth.negative);\n} }\nfunction BarHorizontalStackedComponent__svg_g_4_Template(rf, ctx) { if (rf & 1) {\n    const _r10 = ɵngcc0.ɵɵgetCurrentView();\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\");\n    ɵngcc0.ɵɵelementStart(1, \"g\", 7);\n    ɵngcc0.ɵɵlistener(\"select\", function BarHorizontalStackedComponent__svg_g_4_Template__svg_g_select_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r10); const group_r7 = ctx.$implicit; const ctx_r9 = ɵngcc0.ɵɵnextContext(); return ctx_r9.onClick($event, group_r7); })(\"activate\", function BarHorizontalStackedComponent__svg_g_4_Template__svg_g_activate_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r10); const group_r7 = ctx.$implicit; const ctx_r11 = ɵngcc0.ɵɵnextContext(); return ctx_r11.onActivate($event, group_r7); })(\"deactivate\", function BarHorizontalStackedComponent__svg_g_4_Template__svg_g_deactivate_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r10); const group_r7 = ctx.$implicit; const ctx_r12 = ɵngcc0.ɵɵnextContext(); return ctx_r12.onDeactivate($event, group_r7); })(\"dataLabelWidthChanged\", function BarHorizontalStackedComponent__svg_g_4_Template__svg_g_dataLabelWidthChanged_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r10); const index_r8 = ctx.index; const ctx_r13 = ɵngcc0.ɵɵnextContext(); return ctx_r13.onDataLabelMaxWidthChanged($event, index_r8); });\n    ɵngcc0.ɵɵelementEnd();\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const group_r7 = ctx.$implicit;\n    const ctx_r2 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵproperty(\"@animationState\", \"active\");\n    ɵngcc0.ɵɵattribute(\"transform\", ctx_r2.groupTransform(group_r7));\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"xScale\", ctx_r2.xScale)(\"yScale\", ctx_r2.yScale)(\"colors\", ctx_r2.colors)(\"series\", group_r7.series)(\"activeEntries\", ctx_r2.activeEntries)(\"dims\", ctx_r2.dims)(\"gradient\", ctx_r2.gradient)(\"tooltipDisabled\", ctx_r2.tooltipDisabled)(\"tooltipTemplate\", ctx_r2.tooltipTemplate)(\"seriesName\", group_r7.name)(\"animations\", ctx_r2.animations)(\"showDataLabel\", ctx_r2.showDataLabel)(\"dataLabelFormatting\", ctx_r2.dataLabelFormatting)(\"noBarWhenZero\", ctx_r2.noBarWhenZero);\n} }\nfunction BarVerticalComponent__svg_g_2_Template(rf, ctx) { if (rf & 1) {\n    const _r3 = ɵngcc0.ɵɵgetCurrentView();\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\", 5);\n    ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function BarVerticalComponent__svg_g_2_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r3); const ctx_r2 = ɵngcc0.ɵɵnextContext(); return ctx_r2.updateXAxisHeight($event); });\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const ctx_r0 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵproperty(\"xScale\", ctx_r0.xScale)(\"dims\", ctx_r0.dims)(\"showLabel\", ctx_r0.showXAxisLabel)(\"labelText\", ctx_r0.xAxisLabel)(\"trimTicks\", ctx_r0.trimXAxisTicks)(\"rotateTicks\", ctx_r0.rotateXAxisTicks)(\"maxTickLength\", ctx_r0.maxXAxisTickLength)(\"tickFormatting\", ctx_r0.xAxisTickFormatting)(\"ticks\", ctx_r0.xAxisTicks)(\"xAxisOffset\", ctx_r0.dataLabelMaxHeight.negative);\n} }\nfunction BarVerticalComponent__svg_g_3_Template(rf, ctx) { if (rf & 1) {\n    const _r5 = ɵngcc0.ɵɵgetCurrentView();\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\", 6);\n    ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function BarVerticalComponent__svg_g_3_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r5); const ctx_r4 = ɵngcc0.ɵɵnextContext(); return ctx_r4.updateYAxisWidth($event); });\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const ctx_r1 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵproperty(\"yScale\", ctx_r1.yScale)(\"dims\", ctx_r1.dims)(\"showGridLines\", ctx_r1.showGridLines)(\"showLabel\", ctx_r1.showYAxisLabel)(\"labelText\", ctx_r1.yAxisLabel)(\"trimTicks\", ctx_r1.trimYAxisTicks)(\"maxTickLength\", ctx_r1.maxYAxisTickLength)(\"tickFormatting\", ctx_r1.yAxisTickFormatting)(\"ticks\", ctx_r1.yAxisTicks);\n} }\nfunction BarVertical2DComponent__svg_g_3_Template(rf, ctx) { if (rf & 1) {\n    const _r4 = ɵngcc0.ɵɵgetCurrentView();\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\", 6);\n    ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function BarVertical2DComponent__svg_g_3_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r4); const ctx_r3 = ɵngcc0.ɵɵnextContext(); return ctx_r3.updateXAxisHeight($event); });\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const ctx_r0 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵproperty(\"xScale\", ctx_r0.groupScale)(\"dims\", ctx_r0.dims)(\"showLabel\", ctx_r0.showXAxisLabel)(\"labelText\", ctx_r0.xAxisLabel)(\"trimTicks\", ctx_r0.trimXAxisTicks)(\"rotateTicks\", ctx_r0.rotateXAxisTicks)(\"maxTickLength\", ctx_r0.maxXAxisTickLength)(\"tickFormatting\", ctx_r0.xAxisTickFormatting)(\"ticks\", ctx_r0.xAxisTicks)(\"xAxisOffset\", ctx_r0.dataLabelMaxHeight.negative);\n} }\nfunction BarVertical2DComponent__svg_g_4_Template(rf, ctx) { if (rf & 1) {\n    const _r6 = ɵngcc0.ɵɵgetCurrentView();\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\", 7);\n    ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function BarVertical2DComponent__svg_g_4_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.updateYAxisWidth($event); });\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const ctx_r1 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵproperty(\"yScale\", ctx_r1.valueScale)(\"dims\", ctx_r1.dims)(\"showGridLines\", ctx_r1.showGridLines)(\"showLabel\", ctx_r1.showYAxisLabel)(\"labelText\", ctx_r1.yAxisLabel)(\"trimTicks\", ctx_r1.trimYAxisTicks)(\"maxTickLength\", ctx_r1.maxYAxisTickLength)(\"tickFormatting\", ctx_r1.yAxisTickFormatting)(\"ticks\", ctx_r1.yAxisTicks);\n} }\nfunction BarVertical2DComponent__svg_g_5_Template(rf, ctx) { if (rf & 1) {\n    const _r10 = ɵngcc0.ɵɵgetCurrentView();\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\", 8);\n    ɵngcc0.ɵɵlistener(\"select\", function BarVertical2DComponent__svg_g_5_Template__svg_g_select_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r10); const group_r7 = ctx.$implicit; const ctx_r9 = ɵngcc0.ɵɵnextContext(); return ctx_r9.onClick($event, group_r7); })(\"activate\", function BarVertical2DComponent__svg_g_5_Template__svg_g_activate_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r10); const group_r7 = ctx.$implicit; const ctx_r11 = ɵngcc0.ɵɵnextContext(); return ctx_r11.onActivate($event, group_r7); })(\"deactivate\", function BarVertical2DComponent__svg_g_5_Template__svg_g_deactivate_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r10); const group_r7 = ctx.$implicit; const ctx_r12 = ɵngcc0.ɵɵnextContext(); return ctx_r12.onDeactivate($event, group_r7); })(\"dataLabelHeightChanged\", function BarVertical2DComponent__svg_g_5_Template__svg_g_dataLabelHeightChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r10); const index_r8 = ctx.index; const ctx_r13 = ɵngcc0.ɵɵnextContext(); return ctx_r13.onDataLabelMaxHeightChanged($event, index_r8); });\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const group_r7 = ctx.$implicit;\n    const ctx_r2 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵproperty(\"@animationState\", \"active\")(\"activeEntries\", ctx_r2.activeEntries)(\"xScale\", ctx_r2.innerScale)(\"yScale\", ctx_r2.valueScale)(\"colors\", ctx_r2.colors)(\"series\", group_r7.series)(\"dims\", ctx_r2.dims)(\"gradient\", ctx_r2.gradient)(\"tooltipDisabled\", ctx_r2.tooltipDisabled)(\"tooltipTemplate\", ctx_r2.tooltipTemplate)(\"showDataLabel\", ctx_r2.showDataLabel)(\"dataLabelFormatting\", ctx_r2.dataLabelFormatting)(\"seriesName\", group_r7.name)(\"roundEdges\", ctx_r2.roundEdges)(\"animations\", ctx_r2.animations)(\"noBarWhenZero\", ctx_r2.noBarWhenZero);\n    ɵngcc0.ɵɵattribute(\"transform\", ctx_r2.groupTransform(group_r7));\n} }\nfunction BarVerticalNormalizedComponent__svg_g_2_Template(rf, ctx) { if (rf & 1) {\n    const _r4 = ɵngcc0.ɵɵgetCurrentView();\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\", 5);\n    ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function BarVerticalNormalizedComponent__svg_g_2_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r4); const ctx_r3 = ɵngcc0.ɵɵnextContext(); return ctx_r3.updateXAxisHeight($event); });\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const ctx_r0 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵproperty(\"xScale\", ctx_r0.xScale)(\"dims\", ctx_r0.dims)(\"showLabel\", ctx_r0.showXAxisLabel)(\"labelText\", ctx_r0.xAxisLabel)(\"trimTicks\", ctx_r0.trimXAxisTicks)(\"rotateTicks\", ctx_r0.rotateXAxisTicks)(\"maxTickLength\", ctx_r0.maxXAxisTickLength)(\"tickFormatting\", ctx_r0.xAxisTickFormatting)(\"ticks\", ctx_r0.xAxisTicks);\n} }\nfunction BarVerticalNormalizedComponent__svg_g_3_Template(rf, ctx) { if (rf & 1) {\n    const _r6 = ɵngcc0.ɵɵgetCurrentView();\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\", 6);\n    ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function BarVerticalNormalizedComponent__svg_g_3_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.updateYAxisWidth($event); });\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const ctx_r1 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵproperty(\"yScale\", ctx_r1.yScale)(\"dims\", ctx_r1.dims)(\"showGridLines\", ctx_r1.showGridLines)(\"showLabel\", ctx_r1.showYAxisLabel)(\"labelText\", ctx_r1.yAxisLabel)(\"trimTicks\", ctx_r1.trimYAxisTicks)(\"maxTickLength\", ctx_r1.maxYAxisTickLength)(\"tickFormatting\", ctx_r1.yAxisTickFormatting)(\"ticks\", ctx_r1.yAxisTicks);\n} }\nfunction BarVerticalNormalizedComponent__svg_g_4_Template(rf, ctx) { if (rf & 1) {\n    const _r9 = ɵngcc0.ɵɵgetCurrentView();\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\");\n    ɵngcc0.ɵɵelementStart(1, \"g\", 7);\n    ɵngcc0.ɵɵlistener(\"select\", function BarVerticalNormalizedComponent__svg_g_4_Template__svg_g_select_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r9); const group_r7 = ctx.$implicit; const ctx_r8 = ɵngcc0.ɵɵnextContext(); return ctx_r8.onClick($event, group_r7); })(\"activate\", function BarVerticalNormalizedComponent__svg_g_4_Template__svg_g_activate_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r9); const group_r7 = ctx.$implicit; const ctx_r10 = ɵngcc0.ɵɵnextContext(); return ctx_r10.onActivate($event, group_r7); })(\"deactivate\", function BarVerticalNormalizedComponent__svg_g_4_Template__svg_g_deactivate_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r9); const group_r7 = ctx.$implicit; const ctx_r11 = ɵngcc0.ɵɵnextContext(); return ctx_r11.onDeactivate($event, group_r7); });\n    ɵngcc0.ɵɵelementEnd();\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const group_r7 = ctx.$implicit;\n    const ctx_r2 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵproperty(\"@animationState\", \"active\");\n    ɵngcc0.ɵɵattribute(\"transform\", ctx_r2.groupTransform(group_r7));\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"xScale\", ctx_r2.xScale)(\"yScale\", ctx_r2.yScale)(\"activeEntries\", ctx_r2.activeEntries)(\"colors\", ctx_r2.colors)(\"series\", group_r7.series)(\"dims\", ctx_r2.dims)(\"gradient\", ctx_r2.gradient)(\"tooltipDisabled\", ctx_r2.tooltipDisabled)(\"tooltipTemplate\", ctx_r2.tooltipTemplate)(\"seriesName\", group_r7.name)(\"animations\", ctx_r2.animations)(\"noBarWhenZero\", ctx_r2.noBarWhenZero);\n} }\nfunction BarVerticalStackedComponent__svg_g_2_Template(rf, ctx) { if (rf & 1) {\n    const _r4 = ɵngcc0.ɵɵgetCurrentView();\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\", 5);\n    ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function BarVerticalStackedComponent__svg_g_2_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r4); const ctx_r3 = ɵngcc0.ɵɵnextContext(); return ctx_r3.updateXAxisHeight($event); });\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const ctx_r0 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵproperty(\"xScale\", ctx_r0.xScale)(\"dims\", ctx_r0.dims)(\"showLabel\", ctx_r0.showXAxisLabel)(\"labelText\", ctx_r0.xAxisLabel)(\"trimTicks\", ctx_r0.trimXAxisTicks)(\"rotateTicks\", ctx_r0.rotateXAxisTicks)(\"maxTickLength\", ctx_r0.maxXAxisTickLength)(\"tickFormatting\", ctx_r0.xAxisTickFormatting)(\"ticks\", ctx_r0.xAxisTicks)(\"xAxisOffset\", ctx_r0.dataLabelMaxHeight.negative);\n} }\nfunction BarVerticalStackedComponent__svg_g_3_Template(rf, ctx) { if (rf & 1) {\n    const _r6 = ɵngcc0.ɵɵgetCurrentView();\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\", 6);\n    ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function BarVerticalStackedComponent__svg_g_3_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.updateYAxisWidth($event); });\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const ctx_r1 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵproperty(\"yScale\", ctx_r1.yScale)(\"dims\", ctx_r1.dims)(\"showGridLines\", ctx_r1.showGridLines)(\"showLabel\", ctx_r1.showYAxisLabel)(\"labelText\", ctx_r1.yAxisLabel)(\"trimTicks\", ctx_r1.trimYAxisTicks)(\"maxTickLength\", ctx_r1.maxYAxisTickLength)(\"tickFormatting\", ctx_r1.yAxisTickFormatting)(\"ticks\", ctx_r1.yAxisTicks);\n} }\nfunction BarVerticalStackedComponent__svg_g_4_Template(rf, ctx) { if (rf & 1) {\n    const _r10 = ɵngcc0.ɵɵgetCurrentView();\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\");\n    ɵngcc0.ɵɵelementStart(1, \"g\", 7);\n    ɵngcc0.ɵɵlistener(\"select\", function BarVerticalStackedComponent__svg_g_4_Template__svg_g_select_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r10); const group_r7 = ctx.$implicit; const ctx_r9 = ɵngcc0.ɵɵnextContext(); return ctx_r9.onClick($event, group_r7); })(\"activate\", function BarVerticalStackedComponent__svg_g_4_Template__svg_g_activate_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r10); const group_r7 = ctx.$implicit; const ctx_r11 = ɵngcc0.ɵɵnextContext(); return ctx_r11.onActivate($event, group_r7); })(\"deactivate\", function BarVerticalStackedComponent__svg_g_4_Template__svg_g_deactivate_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r10); const group_r7 = ctx.$implicit; const ctx_r12 = ɵngcc0.ɵɵnextContext(); return ctx_r12.onDeactivate($event, group_r7); })(\"dataLabelHeightChanged\", function BarVerticalStackedComponent__svg_g_4_Template__svg_g_dataLabelHeightChanged_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r10); const index_r8 = ctx.index; const ctx_r13 = ɵngcc0.ɵɵnextContext(); return ctx_r13.onDataLabelMaxHeightChanged($event, index_r8); });\n    ɵngcc0.ɵɵelementEnd();\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const group_r7 = ctx.$implicit;\n    const ctx_r2 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵproperty(\"@animationState\", \"active\");\n    ɵngcc0.ɵɵattribute(\"transform\", ctx_r2.groupTransform(group_r7));\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"xScale\", ctx_r2.xScale)(\"yScale\", ctx_r2.yScale)(\"activeEntries\", ctx_r2.activeEntries)(\"colors\", ctx_r2.colors)(\"series\", group_r7.series)(\"dims\", ctx_r2.dims)(\"gradient\", ctx_r2.gradient)(\"tooltipDisabled\", ctx_r2.tooltipDisabled)(\"tooltipTemplate\", ctx_r2.tooltipTemplate)(\"showDataLabel\", ctx_r2.showDataLabel)(\"dataLabelFormatting\", ctx_r2.dataLabelFormatting)(\"seriesName\", group_r7.name)(\"animations\", ctx_r2.animations)(\"noBarWhenZero\", ctx_r2.noBarWhenZero);\n} }\nconst _c27 = [\"ngx-charts-series-vertical\", \"\"];\nfunction SeriesVerticalComponent__svg_g_0_Template(rf, ctx) { if (rf & 1) {\n    const _r4 = ɵngcc0.ɵɵgetCurrentView();\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\", 2);\n    ɵngcc0.ɵɵlistener(\"select\", function SeriesVerticalComponent__svg_g_0_Template__svg_g_select_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r4); const ctx_r3 = ɵngcc0.ɵɵnextContext(); return ctx_r3.onClick($event); })(\"activate\", function SeriesVerticalComponent__svg_g_0_Template__svg_g_activate_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r4); const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.activate.emit($event); })(\"deactivate\", function SeriesVerticalComponent__svg_g_0_Template__svg_g_deactivate_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r4); const ctx_r6 = ɵngcc0.ɵɵnextContext(); return ctx_r6.deactivate.emit($event); });\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const bar_r2 = ctx.$implicit;\n    const ctx_r0 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵproperty(\"@animationState\", \"active\")(\"@.disabled\", !ctx_r0.animations)(\"width\", bar_r2.width)(\"height\", bar_r2.height)(\"x\", bar_r2.x)(\"y\", bar_r2.y)(\"fill\", bar_r2.color)(\"stops\", bar_r2.gradientStops)(\"data\", bar_r2.data)(\"orientation\", \"vertical\")(\"roundEdges\", bar_r2.roundEdges)(\"gradient\", ctx_r0.gradient)(\"ariaLabel\", bar_r2.ariaLabel)(\"isActive\", ctx_r0.isActive(bar_r2.data))(\"tooltipDisabled\", ctx_r0.tooltipDisabled)(\"tooltipPlacement\", ctx_r0.tooltipPlacement)(\"tooltipType\", ctx_r0.tooltipType)(\"tooltipTitle\", ctx_r0.tooltipTemplate ? undefined : bar_r2.tooltipText)(\"tooltipTemplate\", ctx_r0.tooltipTemplate)(\"tooltipContext\", bar_r2.data)(\"noBarWhenZero\", ctx_r0.noBarWhenZero)(\"animations\", ctx_r0.animations);\n} }\nfunction SeriesVerticalComponent__svg_g_1__svg_g_1_Template(rf, ctx) { if (rf & 1) {\n    const _r11 = ɵngcc0.ɵɵgetCurrentView();\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\", 4);\n    ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function SeriesVerticalComponent__svg_g_1__svg_g_1_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r11); const i_r9 = ctx.index; const ctx_r10 = ɵngcc0.ɵɵnextContext(2); return ctx_r10.dataLabelHeightChanged.emit({ size: $event, index: i_r9 }); });\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const b_r8 = ctx.$implicit;\n    const ctx_r7 = ɵngcc0.ɵɵnextContext(2);\n    ɵngcc0.ɵɵproperty(\"barX\", b_r8.x)(\"barY\", b_r8.y)(\"barWidth\", b_r8.width)(\"barHeight\", b_r8.height)(\"value\", b_r8.total)(\"valueFormatting\", ctx_r7.dataLabelFormatting)(\"orientation\", \"vertical\");\n} }\nfunction SeriesVerticalComponent__svg_g_1_Template(rf, ctx) { if (rf & 1) {\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\");\n    ɵngcc0.ɵɵtemplate(1, SeriesVerticalComponent__svg_g_1__svg_g_1_Template, 1, 7, \"g\", 3);\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const ctx_r1 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r1.barsForDataLabels)(\"ngForTrackBy\", ctx_r1.trackDataLabelBy);\n} }\nconst _c28 = [\"ngx-charts-series-horizontal\", \"\"];\nfunction SeriesHorizontal__svg_g_0_Template(rf, ctx) { if (rf & 1) {\n    const _r4 = ɵngcc0.ɵɵgetCurrentView();\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\", 2);\n    ɵngcc0.ɵɵlistener(\"select\", function SeriesHorizontal__svg_g_0_Template__svg_g_select_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r4); const ctx_r3 = ɵngcc0.ɵɵnextContext(); return ctx_r3.click($event); })(\"activate\", function SeriesHorizontal__svg_g_0_Template__svg_g_activate_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r4); const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.activate.emit($event); })(\"deactivate\", function SeriesHorizontal__svg_g_0_Template__svg_g_deactivate_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r4); const ctx_r6 = ɵngcc0.ɵɵnextContext(); return ctx_r6.deactivate.emit($event); });\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const bar_r2 = ctx.$implicit;\n    const ctx_r0 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵproperty(\"@animationState\", \"active\")(\"width\", bar_r2.width)(\"height\", bar_r2.height)(\"x\", bar_r2.x)(\"y\", bar_r2.y)(\"fill\", bar_r2.color)(\"stops\", bar_r2.gradientStops)(\"data\", bar_r2.data)(\"orientation\", \"horizontal\")(\"roundEdges\", bar_r2.roundEdges)(\"gradient\", ctx_r0.gradient)(\"isActive\", ctx_r0.isActive(bar_r2.data))(\"ariaLabel\", bar_r2.ariaLabel)(\"animations\", ctx_r0.animations)(\"tooltipDisabled\", ctx_r0.tooltipDisabled)(\"tooltipPlacement\", ctx_r0.tooltipPlacement)(\"tooltipType\", ctx_r0.tooltipType)(\"tooltipTitle\", ctx_r0.tooltipTemplate ? undefined : bar_r2.tooltipText)(\"tooltipTemplate\", ctx_r0.tooltipTemplate)(\"tooltipContext\", bar_r2.data)(\"noBarWhenZero\", ctx_r0.noBarWhenZero);\n} }\nfunction SeriesHorizontal__svg_g_1__svg_g_1_Template(rf, ctx) { if (rf & 1) {\n    const _r11 = ɵngcc0.ɵɵgetCurrentView();\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\", 4);\n    ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function SeriesHorizontal__svg_g_1__svg_g_1_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r11); const i_r9 = ctx.index; const ctx_r10 = ɵngcc0.ɵɵnextContext(2); return ctx_r10.dataLabelWidthChanged.emit({ size: $event, index: i_r9 }); });\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const b_r8 = ctx.$implicit;\n    const ctx_r7 = ɵngcc0.ɵɵnextContext(2);\n    ɵngcc0.ɵɵproperty(\"barX\", b_r8.x)(\"barY\", b_r8.y)(\"barWidth\", b_r8.width)(\"barHeight\", b_r8.height)(\"value\", b_r8.total)(\"valueFormatting\", ctx_r7.dataLabelFormatting)(\"orientation\", \"horizontal\");\n} }\nfunction SeriesHorizontal__svg_g_1_Template(rf, ctx) { if (rf & 1) {\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\");\n    ɵngcc0.ɵɵtemplate(1, SeriesHorizontal__svg_g_1__svg_g_1_Template, 1, 7, \"g\", 3);\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const ctx_r1 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r1.barsForDataLabels)(\"ngForTrackBy\", ctx_r1.trackDataLabelBy);\n} }\nconst _c29 = [\"ngx-charts-bar-label\", \"\"];\nfunction BubbleChartComponent__svg_g_5_Template(rf, ctx) { if (rf & 1) {\n    const _r4 = ɵngcc0.ɵɵgetCurrentView();\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\", 6);\n    ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function BubbleChartComponent__svg_g_5_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r4); const ctx_r3 = ɵngcc0.ɵɵnextContext(); return ctx_r3.updateXAxisHeight($event); });\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const ctx_r0 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵproperty(\"showGridLines\", ctx_r0.showGridLines)(\"dims\", ctx_r0.dims)(\"xScale\", ctx_r0.xScale)(\"showLabel\", ctx_r0.showXAxisLabel)(\"labelText\", ctx_r0.xAxisLabel)(\"trimTicks\", ctx_r0.trimXAxisTicks)(\"rotateTicks\", ctx_r0.rotateXAxisTicks)(\"maxTickLength\", ctx_r0.maxXAxisTickLength)(\"tickFormatting\", ctx_r0.xAxisTickFormatting)(\"ticks\", ctx_r0.xAxisTicks);\n} }\nfunction BubbleChartComponent__svg_g_6_Template(rf, ctx) { if (rf & 1) {\n    const _r6 = ɵngcc0.ɵɵgetCurrentView();\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\", 7);\n    ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function BubbleChartComponent__svg_g_6_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.updateYAxisWidth($event); });\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const ctx_r1 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵproperty(\"showGridLines\", ctx_r1.showGridLines)(\"yScale\", ctx_r1.yScale)(\"dims\", ctx_r1.dims)(\"showLabel\", ctx_r1.showYAxisLabel)(\"labelText\", ctx_r1.yAxisLabel)(\"trimTicks\", ctx_r1.trimYAxisTicks)(\"maxTickLength\", ctx_r1.maxYAxisTickLength)(\"tickFormatting\", ctx_r1.yAxisTickFormatting)(\"ticks\", ctx_r1.yAxisTicks);\n} }\nfunction BubbleChartComponent__svg_g_9_Template(rf, ctx) { if (rf & 1) {\n    const _r9 = ɵngcc0.ɵɵgetCurrentView();\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\");\n    ɵngcc0.ɵɵelementStart(1, \"g\", 8);\n    ɵngcc0.ɵɵlistener(\"select\", function BubbleChartComponent__svg_g_9_Template__svg_g_select_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r9); const series_r7 = ctx.$implicit; const ctx_r8 = ɵngcc0.ɵɵnextContext(); return ctx_r8.onClick($event, series_r7); })(\"activate\", function BubbleChartComponent__svg_g_9_Template__svg_g_activate_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r9); const ctx_r10 = ɵngcc0.ɵɵnextContext(); return ctx_r10.onActivate($event); })(\"deactivate\", function BubbleChartComponent__svg_g_9_Template__svg_g_deactivate_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r9); const ctx_r11 = ɵngcc0.ɵɵnextContext(); return ctx_r11.onDeactivate($event); });\n    ɵngcc0.ɵɵelementEnd();\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const series_r7 = ctx.$implicit;\n    const ctx_r2 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵproperty(\"@animationState\", \"active\");\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"xScale\", ctx_r2.xScale)(\"yScale\", ctx_r2.yScale)(\"rScale\", ctx_r2.rScale)(\"xScaleType\", ctx_r2.xScaleType)(\"yScaleType\", ctx_r2.yScaleType)(\"xAxisLabel\", ctx_r2.xAxisLabel)(\"yAxisLabel\", ctx_r2.yAxisLabel)(\"colors\", ctx_r2.colors)(\"data\", series_r7)(\"activeEntries\", ctx_r2.activeEntries)(\"tooltipDisabled\", ctx_r2.tooltipDisabled)(\"tooltipTemplate\", ctx_r2.tooltipTemplate);\n} }\nconst _c30 = [\"ngx-charts-bubble-series\", \"\"];\nfunction BubbleSeriesComponent__svg_g_0_Template(rf, ctx) { if (rf & 1) {\n    const _r3 = ɵngcc0.ɵɵgetCurrentView();\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\");\n    ɵngcc0.ɵɵelementStart(1, \"g\");\n    ɵngcc0.ɵɵelementStart(2, \"g\", 1);\n    ɵngcc0.ɵɵlistener(\"select\", function BubbleSeriesComponent__svg_g_0_Template__svg_g_select_2_listener() { ɵngcc0.ɵɵrestoreView(_r3); const circle_r1 = ctx.$implicit; const ctx_r2 = ɵngcc0.ɵɵnextContext(); return ctx_r2.onClick(circle_r1.data); })(\"activate\", function BubbleSeriesComponent__svg_g_0_Template__svg_g_activate_2_listener() { ɵngcc0.ɵɵrestoreView(_r3); const circle_r1 = ctx.$implicit; const ctx_r4 = ɵngcc0.ɵɵnextContext(); return ctx_r4.activateCircle(circle_r1); })(\"deactivate\", function BubbleSeriesComponent__svg_g_0_Template__svg_g_deactivate_2_listener() { ɵngcc0.ɵɵrestoreView(_r3); const circle_r1 = ctx.$implicit; const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.deactivateCircle(circle_r1); });\n    ɵngcc0.ɵɵelementEnd();\n    ɵngcc0.ɵɵelementEnd();\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const circle_r1 = ctx.$implicit;\n    const ctx_r0 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵattribute(\"transform\", circle_r1.transform);\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵstyleProp(\"opacity\", circle_r1.opacity);\n    ɵngcc0.ɵɵclassProp(\"active\", circle_r1.isActive);\n    ɵngcc0.ɵɵproperty(\"@animationState\", \"active\")(\"cx\", 0)(\"cy\", 0)(\"r\", circle_r1.radius)(\"fill\", circle_r1.color)(\"pointerEvents\", \"all\")(\"data\", circle_r1.value)(\"classNames\", circle_r1.classNames)(\"tooltipDisabled\", ctx_r0.tooltipDisabled)(\"tooltipPlacement\", \"top\")(\"tooltipType\", \"tooltip\")(\"tooltipTitle\", ctx_r0.tooltipTemplate ? undefined : ctx_r0.getTooltipText(circle_r1))(\"tooltipTemplate\", ctx_r0.tooltipTemplate)(\"tooltipContext\", circle_r1.data);\n} }\nconst _c31 = [\"ngx-charts-heat-map-cell\", \"\"];\nfunction HeatMapCellComponent__svg_defs_1_Template(rf, ctx) { if (rf & 1) {\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"defs\");\n    ɵngcc0.ɵɵelement(1, \"g\", 3);\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const ctx_r0 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"name\", ctx_r0.gradientId)(\"stops\", ctx_r0.gradientStops);\n} }\nconst _c32 = [\"ngx-charts-heat-map-cell-series\", \"\"];\nconst _c33 = function (a0, a1, a2) { return { series: a0, name: a1, value: a2 }; };\nfunction HeatCellSeriesComponent__svg_g_0_Template(rf, ctx) { if (rf & 1) {\n    const _r3 = ɵngcc0.ɵɵgetCurrentView();\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\", 1);\n    ɵngcc0.ɵɵlistener(\"select\", function HeatCellSeriesComponent__svg_g_0_Template__svg_g_select_0_listener() { ɵngcc0.ɵɵrestoreView(_r3); const c_r1 = ctx.$implicit; const ctx_r2 = ɵngcc0.ɵɵnextContext(); return ctx_r2.onClick(c_r1.cell); })(\"activate\", function HeatCellSeriesComponent__svg_g_0_Template__svg_g_activate_0_listener() { ɵngcc0.ɵɵrestoreView(_r3); const c_r1 = ctx.$implicit; const ctx_r4 = ɵngcc0.ɵɵnextContext(); return ctx_r4.activate.emit(c_r1.cell); })(\"deactivate\", function HeatCellSeriesComponent__svg_g_0_Template__svg_g_deactivate_0_listener() { ɵngcc0.ɵɵrestoreView(_r3); const c_r1 = ctx.$implicit; const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.deactivate.emit(c_r1.cell); });\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const c_r1 = ctx.$implicit;\n    const ctx_r0 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵproperty(\"x\", c_r1.x)(\"y\", c_r1.y)(\"width\", c_r1.width)(\"height\", c_r1.height)(\"fill\", c_r1.fill)(\"data\", c_r1.data)(\"gradient\", ctx_r0.gradient)(\"animations\", ctx_r0.animations)(\"tooltipDisabled\", ctx_r0.tooltipDisabled)(\"tooltipPlacement\", \"top\")(\"tooltipType\", \"tooltip\")(\"tooltipTitle\", ctx_r0.tooltipTemplate ? undefined : ctx_r0.tooltipText(c_r1))(\"tooltipTemplate\", ctx_r0.tooltipTemplate)(\"tooltipContext\", ɵngcc0.ɵɵpureFunction3(14, _c33, c_r1.series, c_r1.label, c_r1.data));\n} }\nfunction HeatMapComponent__svg_g_2_Template(rf, ctx) { if (rf & 1) {\n    const _r4 = ɵngcc0.ɵɵgetCurrentView();\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\", 6);\n    ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function HeatMapComponent__svg_g_2_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r4); const ctx_r3 = ɵngcc0.ɵɵnextContext(); return ctx_r3.updateXAxisHeight($event); });\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const ctx_r0 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵproperty(\"xScale\", ctx_r0.xScale)(\"dims\", ctx_r0.dims)(\"showLabel\", ctx_r0.showXAxisLabel)(\"labelText\", ctx_r0.xAxisLabel)(\"trimTicks\", ctx_r0.trimXAxisTicks)(\"rotateTicks\", ctx_r0.rotateXAxisTicks)(\"maxTickLength\", ctx_r0.maxXAxisTickLength)(\"tickFormatting\", ctx_r0.xAxisTickFormatting)(\"ticks\", ctx_r0.xAxisTicks);\n} }\nfunction HeatMapComponent__svg_g_3_Template(rf, ctx) { if (rf & 1) {\n    const _r6 = ɵngcc0.ɵɵgetCurrentView();\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\", 7);\n    ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function HeatMapComponent__svg_g_3_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.updateYAxisWidth($event); });\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const ctx_r1 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵproperty(\"yScale\", ctx_r1.yScale)(\"dims\", ctx_r1.dims)(\"showLabel\", ctx_r1.showYAxisLabel)(\"labelText\", ctx_r1.yAxisLabel)(\"trimTicks\", ctx_r1.trimYAxisTicks)(\"maxTickLength\", ctx_r1.maxYAxisTickLength)(\"tickFormatting\", ctx_r1.yAxisTickFormatting)(\"ticks\", ctx_r1.yAxisTicks);\n} }\nfunction HeatMapComponent__svg_rect_4_Template(rf, ctx) { if (rf & 1) {\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelement(0, \"rect\");\n} if (rf & 2) {\n    const rect_r7 = ctx.$implicit;\n    ɵngcc0.ɵɵattribute(\"x\", rect_r7.x)(\"y\", rect_r7.y)(\"rx\", rect_r7.rx)(\"width\", rect_r7.width)(\"height\", rect_r7.height)(\"fill\", rect_r7.fill);\n} }\nconst _c34 = [\"ngx-charts-line\", \"\"];\nfunction LineChartComponent__svg_g_5_Template(rf, ctx) { if (rf & 1) {\n    const _r6 = ɵngcc0.ɵɵgetCurrentView();\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\", 7);\n    ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function LineChartComponent__svg_g_5_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.updateXAxisHeight($event); });\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const ctx_r0 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵproperty(\"xScale\", ctx_r0.xScale)(\"dims\", ctx_r0.dims)(\"showGridLines\", ctx_r0.showGridLines)(\"showLabel\", ctx_r0.showXAxisLabel)(\"labelText\", ctx_r0.xAxisLabel)(\"trimTicks\", ctx_r0.trimXAxisTicks)(\"rotateTicks\", ctx_r0.rotateXAxisTicks)(\"maxTickLength\", ctx_r0.maxXAxisTickLength)(\"tickFormatting\", ctx_r0.xAxisTickFormatting)(\"ticks\", ctx_r0.xAxisTicks);\n} }\nfunction LineChartComponent__svg_g_6_Template(rf, ctx) { if (rf & 1) {\n    const _r8 = ɵngcc0.ɵɵgetCurrentView();\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\", 8);\n    ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function LineChartComponent__svg_g_6_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r8); const ctx_r7 = ɵngcc0.ɵɵnextContext(); return ctx_r7.updateYAxisWidth($event); });\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const ctx_r1 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵproperty(\"yScale\", ctx_r1.yScale)(\"dims\", ctx_r1.dims)(\"showGridLines\", ctx_r1.showGridLines)(\"showLabel\", ctx_r1.showYAxisLabel)(\"labelText\", ctx_r1.yAxisLabel)(\"trimTicks\", ctx_r1.trimYAxisTicks)(\"maxTickLength\", ctx_r1.maxYAxisTickLength)(\"tickFormatting\", ctx_r1.yAxisTickFormatting)(\"ticks\", ctx_r1.yAxisTicks)(\"referenceLines\", ctx_r1.referenceLines)(\"showRefLines\", ctx_r1.showRefLines)(\"showRefLabels\", ctx_r1.showRefLabels);\n} }\nfunction LineChartComponent__svg_g_8_Template(rf, ctx) { if (rf & 1) {\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\");\n    ɵngcc0.ɵɵelement(1, \"g\", 9);\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const series_r9 = ctx.$implicit;\n    const ctx_r2 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵproperty(\"@animationState\", \"active\");\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"xScale\", ctx_r2.xScale)(\"yScale\", ctx_r2.yScale)(\"colors\", ctx_r2.colors)(\"data\", series_r9)(\"activeEntries\", ctx_r2.activeEntries)(\"scaleType\", ctx_r2.scaleType)(\"curve\", ctx_r2.curve)(\"rangeFillOpacity\", ctx_r2.rangeFillOpacity)(\"hasRange\", ctx_r2.hasRange)(\"animations\", ctx_r2.animations);\n} }\nfunction LineChartComponent__svg_g_9__svg_g_2_Template(rf, ctx) { if (rf & 1) {\n    const _r13 = ɵngcc0.ɵɵgetCurrentView();\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\");\n    ɵngcc0.ɵɵelementStart(1, \"g\", 13);\n    ɵngcc0.ɵɵlistener(\"select\", function LineChartComponent__svg_g_9__svg_g_2_Template__svg_g_select_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r13); const ctx_r12 = ɵngcc0.ɵɵnextContext(2); return ctx_r12.onClick($event); })(\"activate\", function LineChartComponent__svg_g_9__svg_g_2_Template__svg_g_activate_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r13); const ctx_r14 = ɵngcc0.ɵɵnextContext(2); return ctx_r14.onActivate($event); })(\"deactivate\", function LineChartComponent__svg_g_9__svg_g_2_Template__svg_g_deactivate_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r13); const ctx_r15 = ɵngcc0.ɵɵnextContext(2); return ctx_r15.onDeactivate($event); });\n    ɵngcc0.ɵɵelementEnd();\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const series_r11 = ctx.$implicit;\n    const ctx_r10 = ɵngcc0.ɵɵnextContext(2);\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"xScale\", ctx_r10.xScale)(\"yScale\", ctx_r10.yScale)(\"colors\", ctx_r10.colors)(\"data\", series_r11)(\"scaleType\", ctx_r10.scaleType)(\"visibleValue\", ctx_r10.hoveredVertical)(\"activeEntries\", ctx_r10.activeEntries)(\"tooltipDisabled\", ctx_r10.tooltipDisabled)(\"tooltipTemplate\", ctx_r10.tooltipTemplate);\n} }\nfunction LineChartComponent__svg_g_9_Template(rf, ctx) { if (rf & 1) {\n    const _r17 = ɵngcc0.ɵɵgetCurrentView();\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\", 10);\n    ɵngcc0.ɵɵlistener(\"mouseleave\", function LineChartComponent__svg_g_9_Template__svg_g_mouseleave_0_listener() { ɵngcc0.ɵɵrestoreView(_r17); const ctx_r16 = ɵngcc0.ɵɵnextContext(); return ctx_r16.hideCircles(); });\n    ɵngcc0.ɵɵelementStart(1, \"g\", 11);\n    ɵngcc0.ɵɵlistener(\"hover\", function LineChartComponent__svg_g_9_Template__svg_g_hover_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r17); const ctx_r18 = ɵngcc0.ɵɵnextContext(); return ctx_r18.updateHoveredVertical($event); });\n    ɵngcc0.ɵɵelementEnd();\n    ɵngcc0.ɵɵtemplate(2, LineChartComponent__svg_g_9__svg_g_2_Template, 2, 9, \"g\", 12);\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const ctx_r3 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"dims\", ctx_r3.dims)(\"xSet\", ctx_r3.xSet)(\"xScale\", ctx_r3.xScale)(\"yScale\", ctx_r3.yScale)(\"results\", ctx_r3.results)(\"colors\", ctx_r3.colors)(\"tooltipDisabled\", ctx_r3.tooltipDisabled)(\"tooltipTemplate\", ctx_r3.seriesTooltipTemplate);\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r3.results);\n} }\nfunction LineChartComponent__svg_g_10__svg_g_1_Template(rf, ctx) { if (rf & 1) {\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\");\n    ɵngcc0.ɵɵelement(1, \"g\", 15);\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const series_r20 = ctx.$implicit;\n    const ctx_r19 = ɵngcc0.ɵɵnextContext(2);\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"xScale\", ctx_r19.timelineXScale)(\"yScale\", ctx_r19.timelineYScale)(\"colors\", ctx_r19.colors)(\"data\", series_r20)(\"scaleType\", ctx_r19.scaleType)(\"curve\", ctx_r19.curve)(\"hasRange\", ctx_r19.hasRange)(\"animations\", ctx_r19.animations);\n} }\nfunction LineChartComponent__svg_g_10_Template(rf, ctx) { if (rf & 1) {\n    const _r22 = ɵngcc0.ɵɵgetCurrentView();\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\", 14);\n    ɵngcc0.ɵɵlistener(\"onDomainChange\", function LineChartComponent__svg_g_10_Template__svg_g_onDomainChange_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r22); const ctx_r21 = ɵngcc0.ɵɵnextContext(); return ctx_r21.updateDomain($event); });\n    ɵngcc0.ɵɵtemplate(1, LineChartComponent__svg_g_10__svg_g_1_Template, 2, 8, \"g\", 4);\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const ctx_r4 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵproperty(\"results\", ctx_r4.results)(\"view\", ɵngcc0.ɵɵpureFunction2(10, _c23, ctx_r4.timelineWidth, ctx_r4.height))(\"height\", ctx_r4.timelineHeight)(\"scheme\", ctx_r4.scheme)(\"customColors\", ctx_r4.customColors)(\"scaleType\", ctx_r4.scaleType)(\"legend\", ctx_r4.legend);\n    ɵngcc0.ɵɵattribute(\"transform\", ctx_r4.timelineTransform);\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r4.results)(\"ngForTrackBy\", ctx_r4.trackBy);\n} }\nconst _c35 = [\"ngx-charts-line-series\", \"\"];\nfunction LineSeriesComponent__svg_g_2_Template(rf, ctx) { if (rf & 1) {\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelement(0, \"g\", 4);\n} if (rf & 2) {\n    const ctx_r0 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵproperty(\"name\", ctx_r0.gradientId)(\"stops\", ctx_r0.gradientStops);\n} }\nfunction LineSeriesComponent__svg_g_5_Template(rf, ctx) { if (rf & 1) {\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelement(0, \"g\", 5);\n} if (rf & 2) {\n    const ctx_r1 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵclassProp(\"active\", ctx_r1.isActive(ctx_r1.data))(\"inactive\", ctx_r1.isInactive(ctx_r1.data));\n    ɵngcc0.ɵɵproperty(\"data\", ctx_r1.data)(\"path\", ctx_r1.outerPath)(\"fill\", ctx_r1.hasGradient ? ctx_r1.gradientUrl : ctx_r1.colors.getColor(ctx_r1.data.name))(\"opacity\", ctx_r1.rangeFillOpacity)(\"animations\", ctx_r1.animations);\n} }\nfunction PolarChartComponent__svg_g_4__svg_circle_1_Template(rf, ctx) { if (rf & 1) {\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelement(0, \"circle\", 8);\n} if (rf & 2) {\n    const r_r6 = ctx.$implicit;\n    ɵngcc0.ɵɵattribute(\"r\", r_r6);\n} }\nfunction PolarChartComponent__svg_g_4_Template(rf, ctx) { if (rf & 1) {\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\");\n    ɵngcc0.ɵɵtemplate(1, PolarChartComponent__svg_g_4__svg_circle_1_Template, 1, 1, \"circle\", 7);\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const ctx_r0 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r0.radiusTicks);\n} }\nfunction PolarChartComponent__svg_g_5__svg_g_1_Template(rf, ctx) { if (rf & 1) {\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelement(0, \"g\", 10);\n} if (rf & 2) {\n    const tick_r8 = ctx.$implicit;\n    const ctx_r7 = ɵngcc0.ɵɵnextContext(2);\n    ɵngcc0.ɵɵproperty(\"data\", tick_r8)(\"radius\", ctx_r7.outerRadius)(\"label\", tick_r8.label)(\"max\", ctx_r7.outerRadius)(\"value\", ctx_r7.showGridLines ? 1 : ctx_r7.outerRadius)(\"explodeSlices\", true)(\"animations\", ctx_r7.animations)(\"labelTrim\", ctx_r7.labelTrim)(\"labelTrimSize\", ctx_r7.labelTrimSize);\n} }\nfunction PolarChartComponent__svg_g_5_Template(rf, ctx) { if (rf & 1) {\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\");\n    ɵngcc0.ɵɵtemplate(1, PolarChartComponent__svg_g_5__svg_g_1_Template, 1, 9, \"g\", 9);\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const ctx_r1 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r1.thetaTicks);\n} }\nfunction PolarChartComponent__svg_g_6_Template(rf, ctx) { if (rf & 1) {\n    const _r10 = ɵngcc0.ɵɵgetCurrentView();\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\", 11);\n    ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function PolarChartComponent__svg_g_6_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r10); const ctx_r9 = ɵngcc0.ɵɵnextContext(); return ctx_r9.updateYAxisWidth($event); });\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const ctx_r2 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵproperty(\"yScale\", ctx_r2.yAxisScale)(\"dims\", ctx_r2.yAxisDims)(\"showGridLines\", ctx_r2.showGridLines)(\"showLabel\", ctx_r2.showYAxisLabel)(\"labelText\", ctx_r2.yAxisLabel)(\"trimTicks\", ctx_r2.trimYAxisTicks)(\"maxTickLength\", ctx_r2.maxYAxisTickLength)(\"tickFormatting\", ctx_r2.yAxisTickFormatting);\n    ɵngcc0.ɵɵattribute(\"transform\", ctx_r2.transformYAxis);\n} }\nfunction PolarChartComponent__svg_g_7_Template(rf, ctx) { if (rf & 1) {\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelement(0, \"g\", 12);\n} if (rf & 2) {\n    const ctx_r3 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵproperty(\"label\", ctx_r3.xAxisLabel)(\"offset\", ctx_r3.labelOffset)(\"orient\", \"bottom\")(\"height\", ctx_r3.dims.height)(\"width\", ctx_r3.dims.width);\n} }\nfunction PolarChartComponent__svg_g_9_Template(rf, ctx) { if (rf & 1) {\n    const _r13 = ɵngcc0.ɵɵgetCurrentView();\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\");\n    ɵngcc0.ɵɵelementStart(1, \"g\", 13);\n    ɵngcc0.ɵɵlistener(\"select\", function PolarChartComponent__svg_g_9_Template__svg_g_select_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r13); const ctx_r12 = ɵngcc0.ɵɵnextContext(); return ctx_r12.onClick($event); })(\"activate\", function PolarChartComponent__svg_g_9_Template__svg_g_activate_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r13); const ctx_r14 = ɵngcc0.ɵɵnextContext(); return ctx_r14.onActivate($event); })(\"deactivate\", function PolarChartComponent__svg_g_9_Template__svg_g_deactivate_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r13); const ctx_r15 = ɵngcc0.ɵɵnextContext(); return ctx_r15.onDeactivate($event); });\n    ɵngcc0.ɵɵelementEnd();\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const series_r11 = ctx.$implicit;\n    const ctx_r4 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵproperty(\"@animationState\", \"active\");\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"gradient\", ctx_r4.gradient)(\"xScale\", ctx_r4.xScale)(\"yScale\", ctx_r4.yScale)(\"colors\", ctx_r4.colors)(\"data\", series_r11)(\"activeEntries\", ctx_r4.activeEntries)(\"scaleType\", ctx_r4.scaleType)(\"curve\", ctx_r4.curve)(\"rangeFillOpacity\", ctx_r4.rangeFillOpacity)(\"animations\", ctx_r4.animations)(\"tooltipDisabled\", ctx_r4.tooltipDisabled)(\"tooltipTemplate\", ctx_r4.tooltipTemplate);\n} }\nconst _c36 = [\"ngx-charts-polar-series\", \"\"];\nfunction PolarSeriesComponent__svg_g_2_Template(rf, ctx) { if (rf & 1) {\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelement(0, \"g\", 4);\n} if (rf & 2) {\n    const ctx_r0 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵproperty(\"color\", ctx_r0.seriesColor)(\"name\", ctx_r0.gradientId)(\"startOpacity\", 0.25)(\"endOpacity\", 1)(\"stops\", ctx_r0.gradientStops);\n} }\nfunction PolarSeriesComponent__svg_g_4_Template(rf, ctx) { if (rf & 1) {\n    const _r4 = ɵngcc0.ɵɵgetCurrentView();\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\", 5);\n    ɵngcc0.ɵɵlistener(\"select\", function PolarSeriesComponent__svg_g_4_Template__svg_g_select_0_listener() { ɵngcc0.ɵɵrestoreView(_r4); const circle_r2 = ctx.$implicit; const ctx_r3 = ɵngcc0.ɵɵnextContext(); return ctx_r3.select.emit(circle_r2.data); })(\"activate\", function PolarSeriesComponent__svg_g_4_Template__svg_g_activate_0_listener() { ɵngcc0.ɵɵrestoreView(_r4); const circle_r2 = ctx.$implicit; const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.activate.emit({ name: circle_r2.data.series }); })(\"deactivate\", function PolarSeriesComponent__svg_g_4_Template__svg_g_deactivate_0_listener() { ɵngcc0.ɵɵrestoreView(_r4); const circle_r2 = ctx.$implicit; const ctx_r6 = ɵngcc0.ɵɵnextContext(); return ctx_r6.deactivate.emit({ name: circle_r2.data.series }); });\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const circle_r2 = ctx.$implicit;\n    const ctx_r1 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵstyleProp(\"opacity\", ctx_r1.inactive ? 0.2 : 1);\n    ɵngcc0.ɵɵproperty(\"cx\", circle_r2.cx)(\"cy\", circle_r2.cy)(\"r\", ctx_r1.circleRadius)(\"fill\", circle_r2.color)(\"tooltipDisabled\", ctx_r1.tooltipDisabled)(\"tooltipPlacement\", \"top\")(\"tooltipTitle\", ctx_r1.tooltipTemplate ? undefined : ctx_r1.tooltipText(circle_r2))(\"tooltipTemplate\", ctx_r1.tooltipTemplate)(\"tooltipContext\", circle_r2.data);\n} }\nconst _c37 = [\"ngx-charts-pie-label\", \"\"];\nconst _c38 = [\"ngx-charts-pie-arc\", \"\"];\nfunction PieArcComponent__svg_defs_1_Template(rf, ctx) { if (rf & 1) {\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"defs\");\n    ɵngcc0.ɵɵelement(1, \"g\", 3);\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const ctx_r0 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"color\", ctx_r0.fill)(\"name\", ctx_r0.radialGradientId)(\"startOpacity\", ctx_r0.startOpacity);\n} }\nconst _c39 = \".pie-label{font-size:11px}.pie-label.animation{-webkit-animation:750ms ease-in fadeIn;animation:750ms ease-in fadeIn}@-webkit-keyframes fadeIn{from{opacity:0}to{opacity:1}}@keyframes fadeIn{from{opacity:0}to{opacity:1}}.pie-label-line{stroke-dasharray:100%}.pie-label-line.animation{-webkit-animation:3s linear drawOut;animation:3s linear drawOut;-webkit-transition:d 750ms;transition:d 750ms}@-webkit-keyframes drawOut{from{stroke-dashoffset:100%}to{stroke-dashoffset:0}}@keyframes drawOut{from{stroke-dashoffset:100%}to{stroke-dashoffset:0}}\";\nfunction PieGridComponent__svg_g_2__svg_text_2_Template(rf, ctx) { if (rf & 1) {\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelement(0, \"text\", 10);\n} if (rf & 2) {\n    const series_r1 = ɵngcc0.ɵɵnextContext().$implicit;\n    ɵngcc0.ɵɵproperty(\"countTo\", series_r1.percent)(\"countSuffix\", \"%\");\n} }\nfunction PieGridComponent__svg_g_2__svg_text_3_Template(rf, ctx) { if (rf & 1) {\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"text\", 11);\n    ɵngcc0.ɵɵtext(1);\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const series_r1 = ɵngcc0.ɵɵnextContext().$implicit;\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵtextInterpolate1(\" \", series_r1.percent.toLocaleString(), \" \");\n} }\nfunction PieGridComponent__svg_g_2__svg_text_6_Template(rf, ctx) { if (rf & 1) {\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelement(0, \"text\", 12);\n} if (rf & 2) {\n    const series_r1 = ɵngcc0.ɵɵnextContext().$implicit;\n    const ctx_r4 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵproperty(\"countTo\", series_r1.total)(\"countPrefix\", ctx_r4.label + \": \");\n    ɵngcc0.ɵɵattribute(\"y\", series_r1.outerRadius);\n} }\nfunction PieGridComponent__svg_g_2__svg_text_7_Template(rf, ctx) { if (rf & 1) {\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"text\", 13);\n    ɵngcc0.ɵɵtext(1);\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const series_r1 = ɵngcc0.ɵɵnextContext().$implicit;\n    const ctx_r5 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵattribute(\"y\", series_r1.outerRadius);\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵtextInterpolate2(\" \", ctx_r5.label, \": \", series_r1.total.toLocaleString(), \" \");\n} }\nconst _c40 = function (a0) { return { data: a0 }; };\nfunction PieGridComponent__svg_g_2_Template(rf, ctx) { if (rf & 1) {\n    const _r11 = ɵngcc0.ɵɵgetCurrentView();\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\", 3);\n    ɵngcc0.ɵɵelementStart(1, \"g\", 4);\n    ɵngcc0.ɵɵlistener(\"select\", function PieGridComponent__svg_g_2_Template__svg_g_select_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r11); const ctx_r10 = ɵngcc0.ɵɵnextContext(); return ctx_r10.onClick($event); })(\"activate\", function PieGridComponent__svg_g_2_Template__svg_g_activate_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r11); const ctx_r12 = ɵngcc0.ɵɵnextContext(); return ctx_r12.onActivate($event); })(\"deactivate\", function PieGridComponent__svg_g_2_Template__svg_g_deactivate_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r11); const ctx_r13 = ɵngcc0.ɵɵnextContext(); return ctx_r13.onDeactivate($event); });\n    ɵngcc0.ɵɵelementEnd();\n    ɵngcc0.ɵɵtemplate(2, PieGridComponent__svg_g_2__svg_text_2_Template, 1, 2, \"text\", 5);\n    ɵngcc0.ɵɵtemplate(3, PieGridComponent__svg_g_2__svg_text_3_Template, 2, 1, \"text\", 6);\n    ɵngcc0.ɵɵelementStart(4, \"text\", 7);\n    ɵngcc0.ɵɵtext(5);\n    ɵngcc0.ɵɵelementEnd();\n    ɵngcc0.ɵɵtemplate(6, PieGridComponent__svg_g_2__svg_text_6_Template, 1, 3, \"text\", 8);\n    ɵngcc0.ɵɵtemplate(7, PieGridComponent__svg_g_2__svg_text_7_Template, 2, 3, \"text\", 9);\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const series_r1 = ctx.$implicit;\n    const ctx_r0 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵattribute(\"transform\", series_r1.transform);\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"colors\", series_r1.colors)(\"data\", series_r1.data)(\"innerRadius\", series_r1.innerRadius)(\"outerRadius\", series_r1.outerRadius)(\"animations\", ctx_r0.animations)(\"tooltipDisabled\", ctx_r0.tooltipDisabled)(\"tooltipPlacement\", \"top\")(\"tooltipType\", \"tooltip\")(\"tooltipTitle\", ctx_r0.tooltipTemplate ? undefined : ctx_r0.tooltipText(ɵngcc0.ɵɵpureFunction1(17, _c40, series_r1)))(\"tooltipTemplate\", ctx_r0.tooltipTemplate)(\"tooltipContext\", series_r1.data[0].data);\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r0.animations);\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r0.animations);\n    ɵngcc0.ɵɵadvance(2);\n    ɵngcc0.ɵɵtextInterpolate1(\" \", series_r1.label, \" \");\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r0.animations);\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r0.animations);\n} }\nconst _c41 = [\"ngx-charts-pie-grid-series\", \"\"];\nfunction PieGridSeriesComponent__svg_g_1_Template(rf, ctx) { if (rf & 1) {\n    const _r3 = ɵngcc0.ɵɵgetCurrentView();\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\", 2);\n    ɵngcc0.ɵɵlistener(\"select\", function PieGridSeriesComponent__svg_g_1_Template__svg_g_select_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r3); const ctx_r2 = ɵngcc0.ɵɵnextContext(); return ctx_r2.onClick($event); })(\"activate\", function PieGridSeriesComponent__svg_g_1_Template__svg_g_activate_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r3); const ctx_r4 = ɵngcc0.ɵɵnextContext(); return ctx_r4.activate.emit($event); })(\"deactivate\", function PieGridSeriesComponent__svg_g_1_Template__svg_g_deactivate_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r3); const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.deactivate.emit($event); });\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const arc_r1 = ctx.$implicit;\n    const ctx_r0 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵproperty(\"startAngle\", arc_r1.startAngle)(\"endAngle\", arc_r1.endAngle)(\"innerRadius\", ctx_r0.innerRadius)(\"outerRadius\", ctx_r0.outerRadius)(\"fill\", ctx_r0.color(arc_r1))(\"value\", arc_r1.data.value)(\"data\", arc_r1.data)(\"gradient\", false)(\"pointerEvents\", arc_r1.pointerEvents)(\"animate\", arc_r1.animate);\n    ɵngcc0.ɵɵattribute(\"class\", arc_r1.class);\n} }\nconst _c42 = [\"ngx-charts-pie-series\", \"\"];\nfunction PieSeriesComponent__svg_g_0__svg_g_1_Template(rf, ctx) { if (rf & 1) {\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelement(0, \"g\", 3);\n} if (rf & 2) {\n    const arc_r1 = ɵngcc0.ɵɵnextContext().$implicit;\n    const ctx_r2 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵproperty(\"data\", arc_r1)(\"radius\", ctx_r2.outerRadius)(\"color\", ctx_r2.color(arc_r1))(\"label\", ctx_r2.labelText(arc_r1))(\"labelTrim\", ctx_r2.trimLabels)(\"labelTrimSize\", ctx_r2.maxLabelLength)(\"max\", ctx_r2.max)(\"value\", arc_r1.value)(\"explodeSlices\", ctx_r2.explodeSlices)(\"animations\", ctx_r2.animations);\n} }\nfunction PieSeriesComponent__svg_g_0_Template(rf, ctx) { if (rf & 1) {\n    const _r5 = ɵngcc0.ɵɵgetCurrentView();\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\");\n    ɵngcc0.ɵɵtemplate(1, PieSeriesComponent__svg_g_0__svg_g_1_Template, 1, 10, \"g\", 1);\n    ɵngcc0.ɵɵelementStart(2, \"g\", 2);\n    ɵngcc0.ɵɵlistener(\"select\", function PieSeriesComponent__svg_g_0_Template__svg_g_select_2_listener($event) { ɵngcc0.ɵɵrestoreView(_r5); const ctx_r4 = ɵngcc0.ɵɵnextContext(); return ctx_r4.onClick($event); })(\"activate\", function PieSeriesComponent__svg_g_0_Template__svg_g_activate_2_listener($event) { ɵngcc0.ɵɵrestoreView(_r5); const ctx_r6 = ɵngcc0.ɵɵnextContext(); return ctx_r6.activate.emit($event); })(\"deactivate\", function PieSeriesComponent__svg_g_0_Template__svg_g_deactivate_2_listener($event) { ɵngcc0.ɵɵrestoreView(_r5); const ctx_r7 = ɵngcc0.ɵɵnextContext(); return ctx_r7.deactivate.emit($event); })(\"dblclick\", function PieSeriesComponent__svg_g_0_Template__svg_g_dblclick_2_listener($event) { ɵngcc0.ɵɵrestoreView(_r5); const ctx_r8 = ɵngcc0.ɵɵnextContext(); return ctx_r8.dblclick.emit($event); });\n    ɵngcc0.ɵɵelementEnd();\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const arc_r1 = ctx.$implicit;\n    const ctx_r0 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r0.labelVisible(arc_r1));\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"startAngle\", arc_r1.startAngle)(\"endAngle\", arc_r1.endAngle)(\"innerRadius\", ctx_r0.innerRadius)(\"outerRadius\", ctx_r0.outerRadius)(\"fill\", ctx_r0.color(arc_r1))(\"value\", arc_r1.data.value)(\"gradient\", ctx_r0.gradient)(\"data\", arc_r1.data)(\"max\", ctx_r0.max)(\"explodeSlices\", ctx_r0.explodeSlices)(\"isActive\", ctx_r0.isActive(arc_r1.data))(\"animate\", ctx_r0.animations)(\"tooltipDisabled\", ctx_r0.tooltipDisabled)(\"tooltipPlacement\", \"top\")(\"tooltipType\", \"tooltip\")(\"tooltipTitle\", ctx_r0.getTooltipTitle(arc_r1))(\"tooltipTemplate\", ctx_r0.tooltipTemplate)(\"tooltipContext\", arc_r1.data);\n} }\nconst _c43 = [\"textEl\"];\nconst _c44 = [\"ngx-charts-card\", \"\"];\nfunction CardComponent__svg_path_2_Template(rf, ctx) { if (rf & 1) {\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelement(0, \"path\", 7);\n} if (rf & 2) {\n    const ctx_r0 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵattribute(\"fill\", ctx_r0.bandColor)(\"transform\", ctx_r0.transformBand)(\"d\", ctx_r0.bandPath);\n} }\nconst _c45 = [\"ngx-charts-card-series\", \"\"];\nfunction CardSeriesComponent__svg_rect_0_Template(rf, ctx) { if (rf & 1) {\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelement(0, \"rect\", 2);\n} if (rf & 2) {\n    const c_r2 = ctx.$implicit;\n    const ctx_r0 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵstyleProp(\"fill\", ctx_r0.emptyColor);\n    ɵngcc0.ɵɵattribute(\"x\", c_r2.x)(\"y\", c_r2.y)(\"width\", c_r2.width)(\"height\", c_r2.height);\n} }\nfunction CardSeriesComponent__svg_g_1_Template(rf, ctx) { if (rf & 1) {\n    const _r5 = ɵngcc0.ɵɵgetCurrentView();\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\", 3);\n    ɵngcc0.ɵɵlistener(\"select\", function CardSeriesComponent__svg_g_1_Template__svg_g_select_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r5); const ctx_r4 = ɵngcc0.ɵɵnextContext(); return ctx_r4.onClick($event); });\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const c_r3 = ctx.$implicit;\n    const ctx_r1 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵproperty(\"x\", c_r3.x)(\"y\", c_r3.y)(\"width\", c_r3.width)(\"height\", c_r3.height)(\"color\", c_r3.color)(\"bandColor\", c_r3.bandColor)(\"textColor\", c_r3.textColor)(\"data\", c_r3.data)(\"label\", c_r3.label)(\"medianSize\", ctx_r1.medianSize)(\"valueFormatting\", ctx_r1.valueFormatting)(\"labelFormatting\", ctx_r1.labelFormatting)(\"animations\", ctx_r1.animations);\n} }\nconst _c46 = [\"ngx-charts-tree-map-cell\", \"\"];\nfunction TreeMapCellComponent__svg_defs_1_Template(rf, ctx) { if (rf & 1) {\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"defs\");\n    ɵngcc0.ɵɵelement(1, \"g\", 3);\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const ctx_r0 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"name\", ctx_r0.gradientId)(\"stops\", ctx_r0.gradientStops);\n} }\nfunction TreeMapCellComponent__svg_foreignObject_3__xhtml_span_4_Template(rf, ctx) { if (rf & 1) {\n    ɵngcc0.ɵɵelement(0, \"span\", 8);\n} if (rf & 2) {\n    const ctx_r2 = ɵngcc0.ɵɵnextContext(2);\n    ɵngcc0.ɵɵproperty(\"countTo\", ctx_r2.value)(\"valueFormatting\", ctx_r2.valueFormatting);\n} }\nfunction TreeMapCellComponent__svg_foreignObject_3__xhtml_span_5_Template(rf, ctx) { if (rf & 1) {\n    ɵngcc0.ɵɵelementStart(0, \"span\", 9);\n    ɵngcc0.ɵɵtext(1);\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const ctx_r3 = ɵngcc0.ɵɵnextContext(2);\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r3.formattedValue, \" \");\n} }\nfunction TreeMapCellComponent__svg_foreignObject_3_Template(rf, ctx) { if (rf & 1) {\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"foreignObject\", 4);\n    ɵngcc0.ɵɵnamespaceHTML();\n    ɵngcc0.ɵɵelementStart(1, \"p\");\n    ɵngcc0.ɵɵelement(2, \"span\", 5);\n    ɵngcc0.ɵɵelement(3, \"br\");\n    ɵngcc0.ɵɵtemplate(4, TreeMapCellComponent__svg_foreignObject_3__xhtml_span_4_Template, 1, 2, \"span\", 6);\n    ɵngcc0.ɵɵtemplate(5, TreeMapCellComponent__svg_foreignObject_3__xhtml_span_5_Template, 2, 1, \"span\", 7);\n    ɵngcc0.ɵɵelementEnd();\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const ctx_r1 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵstyleProp(\"pointer-events\", \"none\");\n    ɵngcc0.ɵɵattribute(\"x\", ctx_r1.x)(\"y\", ctx_r1.y)(\"width\", ctx_r1.width)(\"height\", ctx_r1.height);\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵstyleProp(\"color\", ctx_r1.getTextColor())(\"height\", ctx_r1.height + \"px\")(\"width\", ctx_r1.width + \"px\");\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"innerHTML\", ctx_r1.formattedLabel, ɵngcc0.ɵɵsanitizeHtml);\n    ɵngcc0.ɵɵadvance(2);\n    ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r1.animations);\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r1.animations);\n} }\nconst _c47 = [\"ngx-charts-tree-map-cell-series\", \"\"];\nfunction TreeMapCellSeriesComponent__svg_g_0_Template(rf, ctx) { if (rf & 1) {\n    const _r3 = ɵngcc0.ɵɵgetCurrentView();\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\", 1);\n    ɵngcc0.ɵɵlistener(\"select\", function TreeMapCellSeriesComponent__svg_g_0_Template__svg_g_select_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r3); const ctx_r2 = ɵngcc0.ɵɵnextContext(); return ctx_r2.onClick($event); });\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const c_r1 = ctx.$implicit;\n    const ctx_r0 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵproperty(\"data\", c_r1.data)(\"x\", c_r1.x)(\"y\", c_r1.y)(\"width\", c_r1.width)(\"height\", c_r1.height)(\"fill\", c_r1.fill)(\"label\", c_r1.label)(\"value\", c_r1.value)(\"valueType\", c_r1.valueType)(\"valueFormatting\", ctx_r0.valueFormatting)(\"labelFormatting\", ctx_r0.labelFormatting)(\"gradient\", ctx_r0.gradient)(\"animations\", ctx_r0.animations)(\"tooltipDisabled\", ctx_r0.tooltipDisabled)(\"tooltipPlacement\", \"top\")(\"tooltipType\", \"tooltip\")(\"tooltipTitle\", ctx_r0.tooltipTemplate ? undefined : ctx_r0.getTooltipText(c_r1))(\"tooltipTemplate\", ctx_r0.tooltipTemplate)(\"tooltipContext\", c_r1.data);\n} }\nconst _c48 = [\"valueTextEl\"];\nconst _c49 = [\"unitsTextEl\"];\nfunction LinearGaugeComponent__svg_line_4_Template(rf, ctx) { if (rf & 1) {\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelement(0, \"line\", 10);\n} if (rf & 2) {\n    const ctx_r0 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵattribute(\"transform\", ctx_r0.transformLine)(\"stroke\", ctx_r0.colors.getColor(ctx_r0.units));\n} }\nfunction LinearGaugeComponent__svg_line_5_Template(rf, ctx) { if (rf & 1) {\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelement(0, \"line\", 11);\n} if (rf & 2) {\n    const ctx_r1 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵattribute(\"transform\", ctx_r1.transformLine)(\"stroke\", ctx_r1.colors.getColor(ctx_r1.units));\n} }\nconst _c50 = function () { return {}; };\nfunction GaugeComponent__svg_g_2_Template(rf, ctx) { if (rf & 1) {\n    const _r5 = ɵngcc0.ɵɵgetCurrentView();\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\");\n    ɵngcc0.ɵɵelementStart(1, \"g\", 5);\n    ɵngcc0.ɵɵlistener(\"select\", function GaugeComponent__svg_g_2_Template__svg_g_select_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r5); const ctx_r4 = ɵngcc0.ɵɵnextContext(); return ctx_r4.onClick($event); })(\"activate\", function GaugeComponent__svg_g_2_Template__svg_g_activate_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r5); const ctx_r6 = ɵngcc0.ɵɵnextContext(); return ctx_r6.onActivate($event); })(\"deactivate\", function GaugeComponent__svg_g_2_Template__svg_g_deactivate_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r5); const ctx_r7 = ɵngcc0.ɵɵnextContext(); return ctx_r7.onDeactivate($event); });\n    ɵngcc0.ɵɵelementEnd();\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const arc_r3 = ctx.$implicit;\n    const ctx_r0 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵattribute(\"transform\", ctx_r0.rotation);\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵproperty(\"backgroundArc\", arc_r3.backgroundArc)(\"valueArc\", arc_r3.valueArc)(\"cornerRadius\", ctx_r0.cornerRadius)(\"colors\", ctx_r0.colors)(\"isActive\", ctx_r0.isActive(arc_r3.valueArc.data))(\"tooltipDisabled\", ctx_r0.tooltipDisabled)(\"tooltipTemplate\", ctx_r0.tooltipTemplate)(\"valueFormatting\", ctx_r0.valueFormatting)(\"animations\", ctx_r0.animations);\n} }\nfunction GaugeComponent__svg_g_3_Template(rf, ctx) { if (rf & 1) {\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelement(0, \"g\", 6);\n} if (rf & 2) {\n    const ctx_r1 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵproperty(\"bigSegments\", ctx_r1.bigSegments)(\"smallSegments\", ctx_r1.smallSegments)(\"min\", ctx_r1.min)(\"max\", ctx_r1.max)(\"radius\", ctx_r1.outerRadius)(\"angleSpan\", ctx_r1.angleSpan)(\"valueScale\", ctx_r1.valueScale)(\"startAngle\", ctx_r1.startAngle)(\"tickFormatting\", ctx_r1.axisTickFormatting);\n} }\nfunction GaugeComponent__svg_text_4_Template(rf, ctx) { if (rf & 1) {\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"text\", 7, 8);\n    ɵngcc0.ɵɵelementStart(2, \"tspan\", 9);\n    ɵngcc0.ɵɵtext(3);\n    ɵngcc0.ɵɵelementEnd();\n    ɵngcc0.ɵɵelementStart(4, \"tspan\", 10);\n    ɵngcc0.ɵɵtext(5);\n    ɵngcc0.ɵɵelementEnd();\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const ctx_r2 = ɵngcc0.ɵɵnextContext();\n    ɵngcc0.ɵɵstyleProp(\"text-anchor\", \"middle\");\n    ɵngcc0.ɵɵattribute(\"transform\", ctx_r2.textTransform);\n    ɵngcc0.ɵɵadvance(3);\n    ɵngcc0.ɵɵtextInterpolate(ctx_r2.displayValue);\n    ɵngcc0.ɵɵadvance(2);\n    ɵngcc0.ɵɵtextInterpolate(ctx_r2.units);\n} }\nconst _c51 = [\"ngx-charts-gauge-arc\", \"\"];\nconst _c52 = [\"ngx-charts-gauge-axis\", \"\"];\nfunction GaugeAxisComponent__svg_g_1_Template(rf, ctx) { if (rf & 1) {\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\", 2);\n    ɵngcc0.ɵɵelement(1, \"path\");\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const tick_r3 = ctx.$implicit;\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵattribute(\"d\", tick_r3.line);\n} }\nfunction GaugeAxisComponent__svg_g_2_Template(rf, ctx) { if (rf & 1) {\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\", 2);\n    ɵngcc0.ɵɵelementStart(1, \"text\", 3);\n    ɵngcc0.ɵɵtext(2);\n    ɵngcc0.ɵɵelementEnd();\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const tick_r4 = ctx.$implicit;\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵstyleProp(\"text-anchor\", tick_r4.textAnchor);\n    ɵngcc0.ɵɵattribute(\"transform\", tick_r4.textTransform);\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵtextInterpolate1(\" \", tick_r4.text, \" \");\n} }\nfunction GaugeAxisComponent__svg_g_3_Template(rf, ctx) { if (rf & 1) {\n    ɵngcc0.ɵɵnamespaceSVG();\n    ɵngcc0.ɵɵelementStart(0, \"g\", 4);\n    ɵngcc0.ɵɵelement(1, \"path\");\n    ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n    const tick_r5 = ctx.$implicit;\n    ɵngcc0.ɵɵadvance(1);\n    ɵngcc0.ɵɵattribute(\"d\", tick_r5.line);\n} }\nvar InjectionService_1;\nfunction isViewContainerRef(x) {\n    return x.element;\n}\n/**\n * Injection service is a helper to append components\n * dynamically to a known location in the DOM, most\n * noteably for dialogs/tooltips appending to body.\n *\n * @export\n */\nlet InjectionService = InjectionService_1 = class InjectionService {\n    constructor(applicationRef, componentFactoryResolver, injector) {\n        this.applicationRef = applicationRef;\n        this.componentFactoryResolver = componentFactoryResolver;\n        this.injector = injector;\n    }\n    /**\n     * Sets a default global root view container. This is useful for\n     * things like ngUpgrade that doesn't have a ApplicationRef root.\n     *\n     * @param container\n     */\n    static setGlobalRootViewContainer(container) {\n        InjectionService_1.globalRootViewContainer = container;\n    }\n    /**\n     * Gets the root view container to inject the component to.\n     *\n     * @memberOf InjectionService\n     */\n    getRootViewContainer() {\n        if (this._container)\n            return this._container;\n        if (InjectionService_1.globalRootViewContainer)\n            return InjectionService_1.globalRootViewContainer;\n        if (this.applicationRef.components.length)\n            return this.applicationRef.components[0];\n        throw new Error('View Container not found! ngUpgrade needs to manually set this via setRootViewContainer or setGlobalRootViewContainer.');\n    }\n    /**\n     * Overrides the default root view container. This is useful for\n     * things like ngUpgrade that doesn't have a ApplicationRef root.\n     *\n     * @param container\n     *\n     * @memberOf InjectionService\n     */\n    setRootViewContainer(container) {\n        this._container = container;\n    }\n    /**\n     * Gets the html element for a component ref.\n     *\n     * @param componentRef\n     *\n     * @memberOf InjectionService\n     */\n    getComponentRootNode(component) {\n        if (isViewContainerRef(component)) {\n            return component.element.nativeElement;\n        }\n        if (component.hostView && component.hostView.rootNodes.length > 0) {\n            return component.hostView.rootNodes[0];\n        }\n        // the top most component root node has no `hostView`\n        return component.location.nativeElement;\n    }\n    /**\n     * Gets the root component container html element.\n     *\n     * @memberOf InjectionService\n     */\n    getRootViewContainerNode(component) {\n        return this.getComponentRootNode(component);\n    }\n    /**\n     * Projects the bindings onto the component\n     *\n     * @param component\n     * @param options\n     *\n     * @memberOf InjectionService\n     */\n    projectComponentBindings(component, bindings) {\n        if (bindings) {\n            if (bindings.inputs !== undefined) {\n                const bindingKeys = Object.getOwnPropertyNames(bindings.inputs);\n                for (const bindingName of bindingKeys) {\n                    component.instance[bindingName] = bindings.inputs[bindingName];\n                }\n            }\n            if (bindings.outputs !== undefined) {\n                const eventKeys = Object.getOwnPropertyNames(bindings.outputs);\n                for (const eventName of eventKeys) {\n                    component.instance[eventName] = bindings.outputs[eventName];\n                }\n            }\n        }\n        return component;\n    }\n    /**\n     * Appends a component to a adjacent location\n     *\n     * @param componentClass\n     * @param [options={}]\n     * @param [location]\n     *\n     * @memberOf InjectionService\n     */\n    appendComponent(componentClass, bindings = {}, location) {\n        if (!location)\n            location = this.getRootViewContainer();\n        const appendLocation = this.getComponentRootNode(location);\n        const portalHost = new DomPortalHost(appendLocation, this.componentFactoryResolver, this.applicationRef, this.injector);\n        const portal = new ComponentPortal(componentClass);\n        const componentRef = portalHost.attach(portal);\n        this.projectComponentBindings(componentRef, bindings);\n        return componentRef;\n    }\n};\nInjectionService.ɵfac = function InjectionService_Factory(t) { return new (t || InjectionService)(ɵngcc0.ɵɵinject(ɵngcc0.ApplicationRef), ɵngcc0.ɵɵinject(ɵngcc0.ComponentFactoryResolver), ɵngcc0.ɵɵinject(ɵngcc0.Injector)); };\nInjectionService.ɵprov = ɵngcc0.ɵɵdefineInjectable({ token: InjectionService, factory: function (t) { return InjectionService.ɵfac(t); } });\nInjectionService.globalRootViewContainer = null;\nInjectionService.ctorParameters = () => [\n    { type: ApplicationRef },\n    { type: ComponentFactoryResolver },\n    { type: Injector }\n];\n\n/**\n * Throttle a function\n *\n */\nfunction throttle(func, wait, options) {\n    options = options || {};\n    let context;\n    let args;\n    let result;\n    let timeout = null;\n    let previous = 0;\n    function later() {\n        previous = options.leading === false ? 0 : +new Date();\n        timeout = null;\n        result = func.apply(context, args);\n    }\n    return function () {\n        const now = +new Date();\n        if (!previous && options.leading === false) {\n            previous = now;\n        }\n        const remaining = wait - (now - previous);\n        context = this;\n        args = arguments;\n        if (remaining <= 0) {\n            clearTimeout(timeout);\n            timeout = null;\n            previous = now;\n            result = func.apply(context, args);\n        }\n        else if (!timeout && options.trailing !== false) {\n            timeout = setTimeout(later, remaining);\n        }\n        return result;\n    };\n}\n/**\n * Throttle decorator\n *\n *  class MyClass {\n *    throttleable(10)\n *    myFn() { ... }\n *  }\n */\nfunction throttleable(duration, options) {\n    return function innerDecorator(target, key, descriptor) {\n        return {\n            configurable: true,\n            enumerable: descriptor.enumerable,\n            get: function getter() {\n                Object.defineProperty(this, key, {\n                    configurable: true,\n                    enumerable: descriptor.enumerable,\n                    value: throttle(descriptor.value, duration, options)\n                });\n                return this[key];\n            }\n        };\n    };\n}\n\nvar PlacementTypes;\n(function (PlacementTypes) {\n    PlacementTypes[PlacementTypes[\"top\"] = 'top'] = \"top\";\n    PlacementTypes[PlacementTypes[\"bottom\"] = 'bottom'] = \"bottom\";\n    PlacementTypes[PlacementTypes[\"left\"] = 'left'] = \"left\";\n    PlacementTypes[PlacementTypes[\"right\"] = 'right'] = \"right\";\n})(PlacementTypes || (PlacementTypes = {}));\n\nconst caretOffset = 7;\nfunction verticalPosition(elDimensions, popoverDimensions, alignment) {\n    if (alignment === 'top') {\n        return elDimensions.top - caretOffset;\n    }\n    if (alignment === 'bottom') {\n        return elDimensions.top + elDimensions.height - popoverDimensions.height + caretOffset;\n    }\n    if (alignment === 'center') {\n        return elDimensions.top + elDimensions.height / 2 - popoverDimensions.height / 2;\n    }\n    return undefined;\n}\nfunction horizontalPosition(elDimensions, popoverDimensions, alignment) {\n    if (alignment === 'left') {\n        return elDimensions.left - caretOffset;\n    }\n    if (alignment === 'right') {\n        return elDimensions.left + elDimensions.width - popoverDimensions.width + caretOffset;\n    }\n    if (alignment === 'center') {\n        return elDimensions.left + elDimensions.width / 2 - popoverDimensions.width / 2;\n    }\n    return undefined;\n}\n/**\n * Position helper for the popover directive.\n *\n * @export\n */\nclass PositionHelper {\n    /**\n     * Calculate vertical alignment position\n     *\n     * @memberOf PositionHelper\n     */\n    static calculateVerticalAlignment(elDimensions, popoverDimensions, alignment) {\n        let result = verticalPosition(elDimensions, popoverDimensions, alignment);\n        if (result + popoverDimensions.height > window.innerHeight) {\n            result = window.innerHeight - popoverDimensions.height;\n        }\n        return result;\n    }\n    /**\n     * Calculate vertical caret position\n     *\n     * @memberOf PositionHelper\n     */\n    static calculateVerticalCaret(elDimensions, popoverDimensions, caretDimensions, alignment) {\n        let result;\n        if (alignment === 'top') {\n            result = elDimensions.height / 2 - caretDimensions.height / 2 + caretOffset;\n        }\n        if (alignment === 'bottom') {\n            result = popoverDimensions.height - elDimensions.height / 2 - caretDimensions.height / 2 - caretOffset;\n        }\n        if (alignment === 'center') {\n            result = popoverDimensions.height / 2 - caretDimensions.height / 2;\n        }\n        const popoverPosition = verticalPosition(elDimensions, popoverDimensions, alignment);\n        if (popoverPosition + popoverDimensions.height > window.innerHeight) {\n            result += popoverPosition + popoverDimensions.height - window.innerHeight;\n        }\n        return result;\n    }\n    /**\n     * Calculate horz alignment position\n     *\n     * @memberOf PositionHelper\n     */\n    static calculateHorizontalAlignment(elDimensions, popoverDimensions, alignment) {\n        let result = horizontalPosition(elDimensions, popoverDimensions, alignment);\n        if (result + popoverDimensions.width > window.innerWidth) {\n            result = window.innerWidth - popoverDimensions.width;\n        }\n        return result;\n    }\n    /**\n     * Calculate horz caret position\n     *\n     * @memberOf PositionHelper\n     */\n    static calculateHorizontalCaret(elDimensions, popoverDimensions, caretDimensions, alignment) {\n        let result;\n        if (alignment === 'left') {\n            result = elDimensions.width / 2 - caretDimensions.width / 2 + caretOffset;\n        }\n        if (alignment === 'right') {\n            result = popoverDimensions.width - elDimensions.width / 2 - caretDimensions.width / 2 - caretOffset;\n        }\n        if (alignment === 'center') {\n            result = popoverDimensions.width / 2 - caretDimensions.width / 2;\n        }\n        const popoverPosition = horizontalPosition(elDimensions, popoverDimensions, alignment);\n        if (popoverPosition + popoverDimensions.width > window.innerWidth) {\n            result += popoverPosition + popoverDimensions.width - window.innerWidth;\n        }\n        return result;\n    }\n    /**\n     * Checks if the element's position should be flipped\n     *\n     * @memberOf PositionHelper\n     */\n    static shouldFlip(elDimensions, popoverDimensions, placement, spacing) {\n        let flip = false;\n        if (placement === 'right') {\n            if (elDimensions.left + elDimensions.width + popoverDimensions.width + spacing > window.innerWidth) {\n                flip = true;\n            }\n        }\n        if (placement === 'left') {\n            if (elDimensions.left - popoverDimensions.width - spacing < 0) {\n                flip = true;\n            }\n        }\n        if (placement === 'top') {\n            if (elDimensions.top - popoverDimensions.height - spacing < 0) {\n                flip = true;\n            }\n        }\n        if (placement === 'bottom') {\n            if (elDimensions.top + elDimensions.height + popoverDimensions.height + spacing > window.innerHeight) {\n                flip = true;\n            }\n        }\n        return flip;\n    }\n    /**\n     * Position caret\n     *\n     * @memberOf PositionHelper\n     */\n    static positionCaret(placement, elmDim, hostDim, caretDimensions, alignment) {\n        let top = 0;\n        let left = 0;\n        if (placement === PlacementTypes.right) {\n            left = -7;\n            top = PositionHelper.calculateVerticalCaret(hostDim, elmDim, caretDimensions, alignment);\n        }\n        else if (placement === PlacementTypes.left) {\n            left = elmDim.width;\n            top = PositionHelper.calculateVerticalCaret(hostDim, elmDim, caretDimensions, alignment);\n        }\n        else if (placement === PlacementTypes.top) {\n            top = elmDim.height;\n            left = PositionHelper.calculateHorizontalCaret(hostDim, elmDim, caretDimensions, alignment);\n        }\n        else if (placement === PlacementTypes.bottom) {\n            top = -7;\n            left = PositionHelper.calculateHorizontalCaret(hostDim, elmDim, caretDimensions, alignment);\n        }\n        return { top, left };\n    }\n    /**\n     * Position content\n     *\n     * @memberOf PositionHelper\n     */\n    static positionContent(placement, elmDim, hostDim, spacing, alignment) {\n        let top = 0;\n        let left = 0;\n        if (placement === PlacementTypes.right) {\n            left = hostDim.left + hostDim.width + spacing;\n            top = PositionHelper.calculateVerticalAlignment(hostDim, elmDim, alignment);\n        }\n        else if (placement === PlacementTypes.left) {\n            left = hostDim.left - elmDim.width - spacing;\n            top = PositionHelper.calculateVerticalAlignment(hostDim, elmDim, alignment);\n        }\n        else if (placement === PlacementTypes.top) {\n            top = hostDim.top - elmDim.height - spacing;\n            left = PositionHelper.calculateHorizontalAlignment(hostDim, elmDim, alignment);\n        }\n        else if (placement === PlacementTypes.bottom) {\n            top = hostDim.top + hostDim.height + spacing;\n            left = PositionHelper.calculateHorizontalAlignment(hostDim, elmDim, alignment);\n        }\n        return { top, left };\n    }\n    /**\n     * Determine placement based on flip\n     *\n     * @memberOf PositionHelper\n     */\n    static determinePlacement(placement, elmDim, hostDim, spacing) {\n        const shouldFlip = PositionHelper.shouldFlip(hostDim, elmDim, placement, spacing);\n        if (shouldFlip) {\n            if (placement === PlacementTypes.right) {\n                return PlacementTypes.left;\n            }\n            else if (placement === PlacementTypes.left) {\n                return PlacementTypes.right;\n            }\n            else if (placement === PlacementTypes.top) {\n                return PlacementTypes.bottom;\n            }\n            else if (placement === PlacementTypes.bottom) {\n                return PlacementTypes.top;\n            }\n        }\n        return placement;\n    }\n}\n\nlet TooltipContentComponent = class TooltipContentComponent {\n    constructor(element, renderer) {\n        this.element = element;\n        this.renderer = renderer;\n    }\n    get cssClasses() {\n        let clz = 'ngx-charts-tooltip-content';\n        clz += ` position-${this.placement}`;\n        clz += ` type-${this.type}`;\n        clz += ` ${this.cssClass}`;\n        return clz;\n    }\n    ngAfterViewInit() {\n        setTimeout(this.position.bind(this));\n    }\n    position() {\n        const nativeElm = this.element.nativeElement;\n        const hostDim = this.host.nativeElement.getBoundingClientRect();\n        // if no dims were found, never show\n        if (!hostDim.height && !hostDim.width)\n            return;\n        const elmDim = nativeElm.getBoundingClientRect();\n        this.checkFlip(hostDim, elmDim);\n        this.positionContent(nativeElm, hostDim, elmDim);\n        if (this.showCaret) {\n            this.positionCaret(hostDim, elmDim);\n        }\n        // animate its entry\n        setTimeout(() => this.renderer.addClass(nativeElm, 'animate'), 1);\n    }\n    positionContent(nativeElm, hostDim, elmDim) {\n        const { top, left } = PositionHelper.positionContent(this.placement, elmDim, hostDim, this.spacing, this.alignment);\n        this.renderer.setStyle(nativeElm, 'top', `${top}px`);\n        this.renderer.setStyle(nativeElm, 'left', `${left}px`);\n    }\n    positionCaret(hostDim, elmDim) {\n        const caretElm = this.caretElm.nativeElement;\n        const caretDimensions = caretElm.getBoundingClientRect();\n        const { top, left } = PositionHelper.positionCaret(this.placement, elmDim, hostDim, caretDimensions, this.alignment);\n        this.renderer.setStyle(caretElm, 'top', `${top}px`);\n        this.renderer.setStyle(caretElm, 'left', `${left}px`);\n    }\n    checkFlip(hostDim, elmDim) {\n        this.placement = PositionHelper.determinePlacement(this.placement, elmDim, hostDim, this.spacing);\n    }\n    onWindowResize() {\n        this.position();\n    }\n};\nTooltipContentComponent.ɵfac = function TooltipContentComponent_Factory(t) { return new (t || TooltipContentComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2)); };\nTooltipContentComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: TooltipContentComponent, selectors: [[\"ngx-tooltip-content\"]], viewQuery: function TooltipContentComponent_Query(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵviewQuery(_c0, true);\n    } if (rf & 2) {\n        var _t;\n        ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.caretElm = _t.first);\n    } }, hostVars: 2, hostBindings: function TooltipContentComponent_HostBindings(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵlistener(\"resize\", function TooltipContentComponent_resize_HostBindingHandler() { return ctx.onWindowResize(); }, false, ɵngcc0.ɵɵresolveWindow);\n    } if (rf & 2) {\n        ɵngcc0.ɵɵclassMap(ctx.cssClasses);\n    } }, inputs: { placement: \"placement\", host: \"host\", showCaret: \"showCaret\", type: \"type\", alignment: \"alignment\", spacing: \"spacing\", cssClass: \"cssClass\", title: \"title\", template: \"template\", context: \"context\" }, decls: 6, vars: 6, consts: [[3, \"hidden\"], [\"caretElm\", \"\"], [1, \"tooltip-content\"], [4, \"ngIf\"], [3, \"innerHTML\", 4, \"ngIf\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [3, \"innerHTML\"]], template: function TooltipContentComponent_Template(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵelementStart(0, \"div\");\n        ɵngcc0.ɵɵelement(1, \"span\", 0, 1);\n        ɵngcc0.ɵɵelementStart(3, \"div\", 2);\n        ɵngcc0.ɵɵtemplate(4, TooltipContentComponent_span_4_Template, 2, 4, \"span\", 3);\n        ɵngcc0.ɵɵtemplate(5, TooltipContentComponent_span_5_Template, 1, 1, \"span\", 4);\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵelementEnd();\n    } if (rf & 2) {\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵclassMapInterpolate1(\"tooltip-caret position-\", ctx.placement, \"\");\n        ɵngcc0.ɵɵproperty(\"hidden\", !ctx.showCaret);\n        ɵngcc0.ɵɵadvance(3);\n        ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.title);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.title);\n    } }, directives: [ɵngcc1.NgIf, ɵngcc1.NgTemplateOutlet], styles: [\".ngx-charts-tooltip-content{position:fixed;border-radius:3px;z-index:5000;display:block;font-weight:400;opacity:0;pointer-events:none!important}.ngx-charts-tooltip-content.type-popover{background:#fff;color:#060709;border:1px solid #72809b;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);font-size:13px;padding:4px}.ngx-charts-tooltip-content.type-popover .tooltip-caret{position:absolute;z-index:5001;width:0;height:0}.ngx-charts-tooltip-content.type-popover .tooltip-caret.position-left{border-top:7px solid transparent;border-bottom:7px solid transparent;border-left:7px solid #fff}.ngx-charts-tooltip-content.type-popover .tooltip-caret.position-top{border-left:7px solid transparent;border-right:7px solid transparent;border-top:7px solid #fff}.ngx-charts-tooltip-content.type-popover .tooltip-caret.position-right{border-top:7px solid transparent;border-bottom:7px solid transparent;border-right:7px solid #fff}.ngx-charts-tooltip-content.type-popover .tooltip-caret.position-bottom{border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #fff}.ngx-charts-tooltip-content.type-tooltip{color:#fff;background:rgba(0,0,0,.75);font-size:12px;padding:0 10px;text-align:center;pointer-events:auto}.ngx-charts-tooltip-content.type-tooltip .tooltip-caret.position-left{border-top:7px solid transparent;border-bottom:7px solid transparent;border-left:7px solid rgba(0,0,0,.75)}.ngx-charts-tooltip-content.type-tooltip .tooltip-caret.position-top{border-left:7px solid transparent;border-right:7px solid transparent;border-top:7px solid rgba(0,0,0,.75)}.ngx-charts-tooltip-content.type-tooltip .tooltip-caret.position-right{border-top:7px solid transparent;border-bottom:7px solid transparent;border-right:7px solid rgba(0,0,0,.75)}.ngx-charts-tooltip-content.type-tooltip .tooltip-caret.position-bottom{border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid rgba(0,0,0,.75)}.ngx-charts-tooltip-content .tooltip-label{display:block;line-height:1em;padding:8px 5px 5px;font-size:1em}.ngx-charts-tooltip-content .tooltip-val{display:block;font-size:1.3em;line-height:1em;padding:0 5px 8px}.ngx-charts-tooltip-content .tooltip-caret{position:absolute;z-index:5001;width:0;height:0}.ngx-charts-tooltip-content.position-right{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}.ngx-charts-tooltip-content.position-left{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}.ngx-charts-tooltip-content.position-top{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}.ngx-charts-tooltip-content.position-bottom{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}.ngx-charts-tooltip-content.animate{opacity:1;-webkit-transition:opacity .3s,-webkit-transform .3s;transition:opacity .3s,transform .3s,-webkit-transform .3s;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);pointer-events:auto}.area-tooltip-container{padding:5px 0;pointer-events:none}.tooltip-item{text-align:left;line-height:1.2em;padding:5px 0}.tooltip-item .tooltip-item-color{display:inline-block;height:12px;width:12px;margin-right:5px;color:#5b646b;border-radius:3px}\"], encapsulation: 2 });\nTooltipContentComponent.ctorParameters = () => [\n    { type: ElementRef },\n    { type: Renderer2 }\n];\n__decorate([\n    Input()\n], TooltipContentComponent.prototype, \"host\", void 0);\n__decorate([\n    Input()\n], TooltipContentComponent.prototype, \"showCaret\", void 0);\n__decorate([\n    Input()\n], TooltipContentComponent.prototype, \"type\", void 0);\n__decorate([\n    Input()\n], TooltipContentComponent.prototype, \"placement\", void 0);\n__decorate([\n    Input()\n], TooltipContentComponent.prototype, \"alignment\", void 0);\n__decorate([\n    Input()\n], TooltipContentComponent.prototype, \"spacing\", void 0);\n__decorate([\n    Input()\n], TooltipContentComponent.prototype, \"cssClass\", void 0);\n__decorate([\n    Input()\n], TooltipContentComponent.prototype, \"title\", void 0);\n__decorate([\n    Input()\n], TooltipContentComponent.prototype, \"template\", void 0);\n__decorate([\n    Input()\n], TooltipContentComponent.prototype, \"context\", void 0);\n__decorate([\n    ViewChild('caretElm')\n], TooltipContentComponent.prototype, \"caretElm\", void 0);\n__decorate([\n    HostBinding('class')\n], TooltipContentComponent.prototype, \"cssClasses\", null);\n__decorate([\n    HostListener('window:resize'),\n    throttleable(100)\n], TooltipContentComponent.prototype, \"onWindowResize\", null);\n\nclass InjectionRegisteryService {\n    constructor(injectionService) {\n        this.injectionService = injectionService;\n        this.defaults = {};\n        this.components = new Map();\n    }\n    getByType(type = this.type) {\n        return this.components.get(type);\n    }\n    create(bindings) {\n        return this.createByType(this.type, bindings);\n    }\n    createByType(type, bindings) {\n        bindings = this.assignDefaults(bindings);\n        const component = this.injectComponent(type, bindings);\n        this.register(type, component);\n        return component;\n    }\n    destroy(instance) {\n        const compsByType = this.components.get(instance.componentType);\n        if (compsByType && compsByType.length) {\n            const idx = compsByType.indexOf(instance);\n            if (idx > -1) {\n                const component = compsByType[idx];\n                component.destroy();\n                compsByType.splice(idx, 1);\n            }\n        }\n    }\n    destroyAll() {\n        this.destroyByType(this.type);\n    }\n    destroyByType(type) {\n        const comps = this.components.get(type);\n        if (comps && comps.length) {\n            let i = comps.length - 1;\n            while (i >= 0) {\n                this.destroy(comps[i--]);\n            }\n        }\n    }\n    injectComponent(type, bindings) {\n        return this.injectionService.appendComponent(type, bindings);\n    }\n    assignDefaults(bindings) {\n        const inputs = Object.assign({}, this.defaults.inputs);\n        const outputs = Object.assign({}, this.defaults.outputs);\n        if (!bindings.inputs && !bindings.outputs) {\n            bindings = { inputs: bindings };\n        }\n        if (inputs) {\n            bindings.inputs = Object.assign(Object.assign({}, inputs), bindings.inputs);\n        }\n        if (outputs) {\n            bindings.outputs = Object.assign(Object.assign({}, outputs), bindings.outputs);\n        }\n        return bindings;\n    }\n    register(type, component) {\n        if (!this.components.has(type)) {\n            this.components.set(type, []);\n        }\n        const types = this.components.get(type);\n        types.push(component);\n    }\n}\n\nlet TooltipService = class TooltipService extends InjectionRegisteryService {\n    constructor(injectionService) {\n        super(injectionService);\n        this.type = TooltipContentComponent;\n    }\n};\nTooltipService.ɵfac = function TooltipService_Factory(t) { return new (t || TooltipService)(ɵngcc0.ɵɵinject(InjectionService)); };\nTooltipService.ɵprov = ɵngcc0.ɵɵdefineInjectable({ token: TooltipService, factory: function (t) { return TooltipService.ɵfac(t); } });\nTooltipService.ctorParameters = () => [\n    { type: InjectionService }\n];\n\nlet ChartComponent = class ChartComponent {\n    constructor() {\n        this.showLegend = false;\n        this.animations = true;\n        this.legendLabelClick = new EventEmitter();\n        this.legendLabelActivate = new EventEmitter();\n        this.legendLabelDeactivate = new EventEmitter();\n    }\n    ngOnChanges(changes) {\n        this.update();\n    }\n    update() {\n        let legendColumns = 0;\n        if (this.showLegend) {\n            this.legendType = this.getLegendType();\n            if (!this.legendOptions || this.legendOptions.position === 'right') {\n                if (this.legendType === 'scaleLegend') {\n                    legendColumns = 1;\n                }\n                else {\n                    legendColumns = 2;\n                }\n            }\n        }\n        const chartColumns = 12 - legendColumns;\n        this.chartWidth = Math.floor((this.view[0] * chartColumns) / 12.0);\n        this.legendWidth =\n            !this.legendOptions || this.legendOptions.position === 'right'\n                ? Math.floor((this.view[0] * legendColumns) / 12.0)\n                : this.chartWidth;\n    }\n    getLegendType() {\n        if (this.legendOptions.scaleType === 'linear') {\n            return 'scaleLegend';\n        }\n        else {\n            return 'legend';\n        }\n    }\n};\nChartComponent.ɵfac = function ChartComponent_Factory(t) { return new (t || ChartComponent)(); };\nChartComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: ChartComponent, selectors: [[\"ngx-charts-chart\"]], inputs: { showLegend: \"showLegend\", animations: \"animations\", legendType: \"legendType\", view: \"view\", legendOptions: \"legendOptions\", data: \"data\", legendData: \"legendData\", colors: \"colors\", activeEntries: \"activeEntries\" }, outputs: { legendLabelClick: \"legendLabelClick\", legendLabelActivate: \"legendLabelActivate\", legendLabelDeactivate: \"legendLabelDeactivate\" }, features: [ɵngcc0.ɵɵProvidersFeature([TooltipService]), ɵngcc0.ɵɵNgOnChangesFeature], ngContentSelectors: _c2, decls: 5, vars: 8, consts: [[1, \"ngx-charts-outer\"], [1, \"ngx-charts\"], [\"class\", \"chart-legend\", 3, \"horizontal\", \"valueRange\", \"colors\", \"height\", \"width\", 4, \"ngIf\"], [\"class\", \"chart-legend\", 3, \"horizontal\", \"data\", \"title\", \"colors\", \"height\", \"width\", \"activeEntries\", \"labelClick\", \"labelActivate\", \"labelDeactivate\", 4, \"ngIf\"], [1, \"chart-legend\", 3, \"horizontal\", \"valueRange\", \"colors\", \"height\", \"width\"], [1, \"chart-legend\", 3, \"horizontal\", \"data\", \"title\", \"colors\", \"height\", \"width\", \"activeEntries\", \"labelClick\", \"labelActivate\", \"labelDeactivate\"]], template: function ChartComponent_Template(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵprojectionDef();\n        ɵngcc0.ɵɵelementStart(0, \"div\", 0);\n        ɵngcc0.ɵɵnamespaceSVG();\n        ɵngcc0.ɵɵelementStart(1, \"svg\", 1);\n        ɵngcc0.ɵɵprojection(2);\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵtemplate(3, ChartComponent_ngx_charts_scale_legend_3_Template, 1, 5, \"ngx-charts-scale-legend\", 2);\n        ɵngcc0.ɵɵtemplate(4, ChartComponent_ngx_charts_legend_4_Template, 1, 7, \"ngx-charts-legend\", 3);\n        ɵngcc0.ɵɵelementEnd();\n    } if (rf & 2) {\n        ɵngcc0.ɵɵstyleProp(\"width\", ctx.view[0], \"px\");\n        ɵngcc0.ɵɵproperty(\"@animationState\", \"active\")(\"@.disabled\", !ctx.animations);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵattribute(\"width\", ctx.chartWidth)(\"height\", ctx.view[1]);\n        ɵngcc0.ɵɵadvance(2);\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showLegend && ctx.legendType === \"scaleLegend\");\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showLegend && ctx.legendType === \"legend\");\n    } }, directives: function () { return [ɵngcc1.NgIf, ScaleLegendComponent, LegendComponent]; }, encapsulation: 2, data: { animation: [\n            trigger('animationState', [\n                transition(':enter', [style({ opacity: 0 }), animate('500ms 100ms', style({ opacity: 1 }))])\n            ])\n        ] }, changeDetection: 0 });\n__decorate([\n    Input()\n], ChartComponent.prototype, \"view\", void 0);\n__decorate([\n    Input()\n], ChartComponent.prototype, \"showLegend\", void 0);\n__decorate([\n    Input()\n], ChartComponent.prototype, \"legendOptions\", void 0);\n__decorate([\n    Input()\n], ChartComponent.prototype, \"data\", void 0);\n__decorate([\n    Input()\n], ChartComponent.prototype, \"legendData\", void 0);\n__decorate([\n    Input()\n], ChartComponent.prototype, \"legendType\", void 0);\n__decorate([\n    Input()\n], ChartComponent.prototype, \"colors\", void 0);\n__decorate([\n    Input()\n], ChartComponent.prototype, \"activeEntries\", void 0);\n__decorate([\n    Input()\n], ChartComponent.prototype, \"animations\", void 0);\n__decorate([\n    Output()\n], ChartComponent.prototype, \"legendLabelClick\", void 0);\n__decorate([\n    Output()\n], ChartComponent.prototype, \"legendLabelActivate\", void 0);\n__decorate([\n    Output()\n], ChartComponent.prototype, \"legendLabelDeactivate\", void 0);\n\n/**\n * Visibility Observer\n */\nlet VisibilityObserver = class VisibilityObserver {\n    constructor(element, zone) {\n        this.element = element;\n        this.zone = zone;\n        this.visible = new EventEmitter();\n        this.isVisible = false;\n        this.runCheck();\n    }\n    destroy() {\n        clearTimeout(this.timeout);\n    }\n    onVisibilityChange() {\n        // trigger zone recalc for columns\n        this.zone.run(() => {\n            this.isVisible = true;\n            this.visible.emit(true);\n        });\n    }\n    runCheck() {\n        const check = () => {\n            if (!this.element) {\n                return;\n            }\n            // https://davidwalsh.name/offsetheight-visibility\n            const { offsetHeight, offsetWidth } = this.element.nativeElement;\n            if (offsetHeight && offsetWidth) {\n                clearTimeout(this.timeout);\n                this.onVisibilityChange();\n            }\n            else {\n                clearTimeout(this.timeout);\n                this.zone.runOutsideAngular(() => {\n                    this.timeout = setTimeout(() => check(), 100);\n                });\n            }\n        };\n        this.zone.runOutsideAngular(() => {\n            this.timeout = setTimeout(() => check());\n        });\n    }\n};\nVisibilityObserver.ɵfac = function VisibilityObserver_Factory(t) { return new (t || VisibilityObserver)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nVisibilityObserver.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: VisibilityObserver, selectors: [[\"visibility-observer\"]], outputs: { visible: \"visible\" } });\nVisibilityObserver.ctorParameters = () => [\n    { type: ElementRef },\n    { type: NgZone }\n];\n__decorate([\n    Output()\n], VisibilityObserver.prototype, \"visible\", void 0);\n\nlet BaseChartComponent = class BaseChartComponent {\n    constructor(chartElement, zone, cd) {\n        this.chartElement = chartElement;\n        this.zone = zone;\n        this.cd = cd;\n        this.scheme = 'cool';\n        this.schemeType = 'ordinal';\n        this.animations = true;\n        this.select = new EventEmitter();\n    }\n    ngAfterViewInit() {\n        this.bindWindowResizeEvent();\n        // listen for visibility of the element for hidden by default scenario\n        this.visibilityObserver = new VisibilityObserver(this.chartElement, this.zone);\n        this.visibilityObserver.visible.subscribe(this.update.bind(this));\n    }\n    ngOnDestroy() {\n        this.unbindEvents();\n        if (this.visibilityObserver) {\n            this.visibilityObserver.visible.unsubscribe();\n            this.visibilityObserver.destroy();\n        }\n    }\n    ngOnChanges(changes) {\n        this.update();\n    }\n    update() {\n        if (this.results) {\n            this.results = this.cloneData(this.results);\n        }\n        else {\n            this.results = [];\n        }\n        if (this.view) {\n            this.width = this.view[0];\n            this.height = this.view[1];\n        }\n        else {\n            const dims = this.getContainerDims();\n            if (dims) {\n                this.width = dims.width;\n                this.height = dims.height;\n            }\n        }\n        // default values if width or height are 0 or undefined\n        if (!this.width) {\n            this.width = 600;\n        }\n        if (!this.height) {\n            this.height = 400;\n        }\n        this.width = Math.floor(this.width);\n        this.height = Math.floor(this.height);\n        if (this.cd) {\n            this.cd.markForCheck();\n        }\n    }\n    getContainerDims() {\n        let width;\n        let height;\n        const hostElem = this.chartElement.nativeElement;\n        if (hostElem.parentNode !== null) {\n            // Get the container dimensions\n            const dims = hostElem.parentNode.getBoundingClientRect();\n            width = dims.width;\n            height = dims.height;\n        }\n        if (width && height) {\n            return { width, height };\n        }\n        return null;\n    }\n    /**\n     * Converts all date objects that appear as name\n     * into formatted date strings\n     */\n    formatDates() {\n        for (let i = 0; i < this.results.length; i++) {\n            const g = this.results[i];\n            g.label = g.name;\n            if (g.label instanceof Date) {\n                g.label = g.label.toLocaleDateString();\n            }\n            if (g.series) {\n                for (let j = 0; j < g.series.length; j++) {\n                    const d = g.series[j];\n                    d.label = d.name;\n                    if (d.label instanceof Date) {\n                        d.label = d.label.toLocaleDateString();\n                    }\n                }\n            }\n        }\n    }\n    unbindEvents() {\n        if (this.resizeSubscription) {\n            this.resizeSubscription.unsubscribe();\n        }\n    }\n    bindWindowResizeEvent() {\n        const source = fromEvent(window, 'resize');\n        const subscription = source.pipe(debounceTime(200)).subscribe(e => {\n            this.update();\n            if (this.cd) {\n                this.cd.markForCheck();\n            }\n        });\n        this.resizeSubscription = subscription;\n    }\n    /**\n     * Clones the data into a new object\n     *\n     * @memberOf BaseChart\n     */\n    cloneData(data) {\n        const results = [];\n        for (const item of data) {\n            const copy = {\n                name: item['name']\n            };\n            if (item['value'] !== undefined) {\n                copy['value'] = item['value'];\n            }\n            if (item['series'] !== undefined) {\n                copy['series'] = [];\n                for (const seriesItem of item['series']) {\n                    const seriesItemCopy = Object.assign({}, seriesItem);\n                    copy['series'].push(seriesItemCopy);\n                }\n            }\n            if (item['extra'] !== undefined) {\n                copy['extra'] = JSON.parse(JSON.stringify(item['extra']));\n            }\n            results.push(copy);\n        }\n        return results;\n    }\n};\nBaseChartComponent.ɵfac = function BaseChartComponent_Factory(t) { return new (t || BaseChartComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef)); };\nBaseChartComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: BaseChartComponent, selectors: [[\"base-chart\"]], inputs: { scheme: \"scheme\", schemeType: \"schemeType\", animations: \"animations\", results: \"results\", view: \"view\", customColors: \"customColors\" }, outputs: { select: \"select\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], decls: 1, vars: 0, template: function BaseChartComponent_Template(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵelement(0, \"div\");\n    } }, encapsulation: 2 });\nBaseChartComponent.ctorParameters = () => [\n    { type: ElementRef },\n    { type: NgZone },\n    { type: ChangeDetectorRef }\n];\n__decorate([\n    Input()\n], BaseChartComponent.prototype, \"results\", void 0);\n__decorate([\n    Input()\n], BaseChartComponent.prototype, \"view\", void 0);\n__decorate([\n    Input()\n], BaseChartComponent.prototype, \"scheme\", void 0);\n__decorate([\n    Input()\n], BaseChartComponent.prototype, \"schemeType\", void 0);\n__decorate([\n    Input()\n], BaseChartComponent.prototype, \"customColors\", void 0);\n__decorate([\n    Input()\n], BaseChartComponent.prototype, \"animations\", void 0);\n__decorate([\n    Output()\n], BaseChartComponent.prototype, \"select\", void 0);\n\nlet AxisLabelComponent = class AxisLabelComponent {\n    constructor(element) {\n        this.textHeight = 25;\n        this.margin = 5;\n        this.element = element.nativeElement;\n    }\n    ngOnChanges(changes) {\n        this.update();\n    }\n    update() {\n        this.strokeWidth = '0.01';\n        this.textAnchor = 'middle';\n        this.transform = '';\n        switch (this.orient) {\n            case 'top':\n                this.y = this.offset;\n                this.x = this.width / 2;\n                break;\n            case 'bottom':\n                this.y = this.offset;\n                this.x = this.width / 2;\n                break;\n            case 'left':\n                this.y = -(this.offset + this.textHeight + this.margin);\n                this.x = -this.height / 2;\n                this.transform = 'rotate(270)';\n                break;\n            case 'right':\n                this.y = this.offset + this.margin;\n                this.x = -this.height / 2;\n                this.transform = 'rotate(270)';\n                break;\n            default:\n        }\n    }\n};\nAxisLabelComponent.ɵfac = function AxisLabelComponent_Factory(t) { return new (t || AxisLabelComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nAxisLabelComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: AxisLabelComponent, selectors: [[\"g\", \"ngx-charts-axis-label\", \"\"]], inputs: { orient: \"orient\", label: \"label\", offset: \"offset\", width: \"width\", height: \"height\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c3, decls: 2, vars: 6, template: function AxisLabelComponent_Template(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵnamespaceSVG();\n        ɵngcc0.ɵɵelementStart(0, \"text\");\n        ɵngcc0.ɵɵtext(1);\n        ɵngcc0.ɵɵelementEnd();\n    } if (rf & 2) {\n        ɵngcc0.ɵɵattribute(\"stroke-width\", ctx.strokeWidth)(\"x\", ctx.x)(\"y\", ctx.y)(\"text-anchor\", ctx.textAnchor)(\"transform\", ctx.transform);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵtextInterpolate1(\" \", ctx.label, \" \");\n    } }, encapsulation: 2, changeDetection: 0 });\nAxisLabelComponent.ctorParameters = () => [\n    { type: ElementRef }\n];\n__decorate([\n    Input()\n], AxisLabelComponent.prototype, \"orient\", void 0);\n__decorate([\n    Input()\n], AxisLabelComponent.prototype, \"label\", void 0);\n__decorate([\n    Input()\n], AxisLabelComponent.prototype, \"offset\", void 0);\n__decorate([\n    Input()\n], AxisLabelComponent.prototype, \"width\", void 0);\n__decorate([\n    Input()\n], AxisLabelComponent.prototype, \"height\", void 0);\n\nfunction trimLabel(s, max = 16) {\n    if (typeof s !== 'string') {\n        if (typeof s === 'number') {\n            return s + '';\n        }\n        else {\n            return '';\n        }\n    }\n    s = s.trim();\n    if (s.length <= max) {\n        return s;\n    }\n    else {\n        return `${s.slice(0, max)}...`;\n    }\n}\n\nfunction reduceTicks(ticks, maxTicks) {\n    if (ticks.length > maxTicks) {\n        const reduced = [];\n        const modulus = Math.floor(ticks.length / maxTicks);\n        for (let i = 0; i < ticks.length; i++) {\n            if (i % modulus === 0) {\n                reduced.push(ticks[i]);\n            }\n        }\n        ticks = reduced;\n    }\n    return ticks;\n}\n\nlet XAxisTicksComponent = class XAxisTicksComponent {\n    constructor() {\n        this.tickArguments = [5];\n        this.tickStroke = '#ccc';\n        this.trimTicks = true;\n        this.maxTickLength = 16;\n        this.showGridLines = false;\n        this.rotateTicks = true;\n        this.dimensionsChanged = new EventEmitter();\n        this.verticalSpacing = 20;\n        this.rotateLabels = false;\n        this.innerTickSize = 6;\n        this.outerTickSize = 6;\n        this.tickPadding = 3;\n        this.textAnchor = 'middle';\n        this.maxTicksLength = 0;\n        this.maxAllowedLength = 16;\n        this.height = 0;\n    }\n    ngOnChanges(changes) {\n        this.update();\n    }\n    ngAfterViewInit() {\n        setTimeout(() => this.updateDims());\n    }\n    updateDims() {\n        const height = parseInt(this.ticksElement.nativeElement.getBoundingClientRect().height, 10);\n        if (height !== this.height) {\n            this.height = height;\n            this.dimensionsChanged.emit({ height });\n            setTimeout(() => this.updateDims());\n        }\n    }\n    update() {\n        const scale = this.scale;\n        this.ticks = this.getTicks();\n        if (this.tickFormatting) {\n            this.tickFormat = this.tickFormatting;\n        }\n        else if (scale.tickFormat) {\n            this.tickFormat = scale.tickFormat.apply(scale, this.tickArguments);\n        }\n        else {\n            this.tickFormat = function (d) {\n                if (d.constructor.name === 'Date') {\n                    return d.toLocaleDateString();\n                }\n                return d.toLocaleString();\n            };\n        }\n        const angle = this.rotateTicks ? this.getRotationAngle(this.ticks) : null;\n        this.adjustedScale = this.scale.bandwidth\n            ? function (d) {\n                return this.scale(d) + this.scale.bandwidth() * 0.5;\n            }\n            : this.scale;\n        this.textTransform = '';\n        if (angle && angle !== 0) {\n            this.textTransform = `rotate(${angle})`;\n            this.textAnchor = 'end';\n            this.verticalSpacing = 10;\n        }\n        else {\n            this.textAnchor = 'middle';\n        }\n        setTimeout(() => this.updateDims());\n    }\n    getRotationAngle(ticks) {\n        let angle = 0;\n        this.maxTicksLength = 0;\n        for (let i = 0; i < ticks.length; i++) {\n            const tick = this.tickFormat(ticks[i]).toString();\n            let tickLength = tick.length;\n            if (this.trimTicks) {\n                tickLength = this.tickTrim(tick).length;\n            }\n            if (tickLength > this.maxTicksLength) {\n                this.maxTicksLength = tickLength;\n            }\n        }\n        const len = Math.min(this.maxTicksLength, this.maxAllowedLength);\n        const charWidth = 8; // need to measure this\n        const wordWidth = len * charWidth;\n        let baseWidth = wordWidth;\n        const maxBaseWidth = Math.floor(this.width / ticks.length);\n        // calculate optimal angle\n        while (baseWidth > maxBaseWidth && angle > -90) {\n            angle -= 30;\n            baseWidth = Math.cos(angle * (Math.PI / 180)) * wordWidth;\n        }\n        return angle;\n    }\n    getTicks() {\n        let ticks;\n        const maxTicks = this.getMaxTicks(20);\n        const maxScaleTicks = this.getMaxTicks(100);\n        if (this.tickValues) {\n            ticks = this.tickValues;\n        }\n        else if (this.scale.ticks) {\n            ticks = this.scale.ticks.apply(this.scale, [maxScaleTicks]);\n        }\n        else {\n            ticks = this.scale.domain();\n            ticks = reduceTicks(ticks, maxTicks);\n        }\n        return ticks;\n    }\n    getMaxTicks(tickWidth) {\n        return Math.floor(this.width / tickWidth);\n    }\n    tickTransform(tick) {\n        return 'translate(' + this.adjustedScale(tick) + ',' + this.verticalSpacing + ')';\n    }\n    gridLineTransform() {\n        return `translate(0,${-this.verticalSpacing - 5})`;\n    }\n    tickTrim(label) {\n        return this.trimTicks ? trimLabel(label, this.maxTickLength) : label;\n    }\n};\nXAxisTicksComponent.ɵfac = function XAxisTicksComponent_Factory(t) { return new (t || XAxisTicksComponent)(); };\nXAxisTicksComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: XAxisTicksComponent, selectors: [[\"g\", \"ngx-charts-x-axis-ticks\", \"\"]], viewQuery: function XAxisTicksComponent_Query(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵviewQuery(_c4, true);\n    } if (rf & 2) {\n        var _t;\n        ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.ticksElement = _t.first);\n    } }, inputs: { tickArguments: \"tickArguments\", tickStroke: \"tickStroke\", trimTicks: \"trimTicks\", maxTickLength: \"maxTickLength\", showGridLines: \"showGridLines\", rotateTicks: \"rotateTicks\", scale: \"scale\", orient: \"orient\", tickValues: \"tickValues\", tickFormatting: \"tickFormatting\", gridLineHeight: \"gridLineHeight\", width: \"width\" }, outputs: { dimensionsChanged: \"dimensionsChanged\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c5, decls: 4, vars: 2, consts: [[\"ticksel\", \"\"], [\"class\", \"tick\", 4, \"ngFor\", \"ngForOf\"], [4, \"ngFor\", \"ngForOf\"], [1, \"tick\"], [\"stroke-width\", \"0.01\"], [4, \"ngIf\"], [\"y2\", \"0\", 1, \"gridline-path\", \"gridline-path-vertical\"]], template: function XAxisTicksComponent_Template(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵnamespaceSVG();\n        ɵngcc0.ɵɵelementStart(0, \"g\", null, 0);\n        ɵngcc0.ɵɵtemplate(2, XAxisTicksComponent__svg_g_2_Template, 5, 7, \"g\", 1);\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵtemplate(3, XAxisTicksComponent__svg_g_3_Template, 2, 2, \"g\", 2);\n    } if (rf & 2) {\n        ɵngcc0.ɵɵadvance(2);\n        ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.ticks);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.ticks);\n    } }, directives: [ɵngcc1.NgForOf, ɵngcc1.NgIf], encapsulation: 2, changeDetection: 0 });\n__decorate([\n    Input()\n], XAxisTicksComponent.prototype, \"scale\", void 0);\n__decorate([\n    Input()\n], XAxisTicksComponent.prototype, \"orient\", void 0);\n__decorate([\n    Input()\n], XAxisTicksComponent.prototype, \"tickArguments\", void 0);\n__decorate([\n    Input()\n], XAxisTicksComponent.prototype, \"tickValues\", void 0);\n__decorate([\n    Input()\n], XAxisTicksComponent.prototype, \"tickStroke\", void 0);\n__decorate([\n    Input()\n], XAxisTicksComponent.prototype, \"trimTicks\", void 0);\n__decorate([\n    Input()\n], XAxisTicksComponent.prototype, \"maxTickLength\", void 0);\n__decorate([\n    Input()\n], XAxisTicksComponent.prototype, \"tickFormatting\", void 0);\n__decorate([\n    Input()\n], XAxisTicksComponent.prototype, \"showGridLines\", void 0);\n__decorate([\n    Input()\n], XAxisTicksComponent.prototype, \"gridLineHeight\", void 0);\n__decorate([\n    Input()\n], XAxisTicksComponent.prototype, \"width\", void 0);\n__decorate([\n    Input()\n], XAxisTicksComponent.prototype, \"rotateTicks\", void 0);\n__decorate([\n    Output()\n], XAxisTicksComponent.prototype, \"dimensionsChanged\", void 0);\n__decorate([\n    ViewChild('ticksel')\n], XAxisTicksComponent.prototype, \"ticksElement\", void 0);\n\nlet XAxisComponent = class XAxisComponent {\n    constructor() {\n        this.rotateTicks = true;\n        this.showGridLines = false;\n        this.xOrient = 'bottom';\n        this.xAxisOffset = 0;\n        this.dimensionsChanged = new EventEmitter();\n        this.xAxisClassName = 'x axis';\n        this.labelOffset = 0;\n        this.fill = 'none';\n        this.stroke = 'stroke';\n        this.tickStroke = '#ccc';\n        this.strokeWidth = 'none';\n        this.padding = 5;\n    }\n    ngOnChanges(changes) {\n        this.update();\n    }\n    update() {\n        this.transform = `translate(0,${this.xAxisOffset + this.padding + this.dims.height})`;\n        if (typeof this.xAxisTickCount !== 'undefined') {\n            this.tickArguments = [this.xAxisTickCount];\n        }\n    }\n    emitTicksHeight({ height }) {\n        const newLabelOffset = height + 25 + 5;\n        if (newLabelOffset !== this.labelOffset) {\n            this.labelOffset = newLabelOffset;\n            setTimeout(() => {\n                this.dimensionsChanged.emit({ height });\n            }, 0);\n        }\n    }\n};\nXAxisComponent.ɵfac = function XAxisComponent_Factory(t) { return new (t || XAxisComponent)(); };\nXAxisComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: XAxisComponent, selectors: [[\"g\", \"ngx-charts-x-axis\", \"\"]], viewQuery: function XAxisComponent_Query(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵviewQuery(XAxisTicksComponent, true);\n    } if (rf & 2) {\n        var _t;\n        ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.ticksComponent = _t.first);\n    } }, inputs: { rotateTicks: \"rotateTicks\", showGridLines: \"showGridLines\", xOrient: \"xOrient\", xAxisOffset: \"xAxisOffset\", xScale: \"xScale\", dims: \"dims\", trimTicks: \"trimTicks\", maxTickLength: \"maxTickLength\", tickFormatting: \"tickFormatting\", showLabel: \"showLabel\", labelText: \"labelText\", ticks: \"ticks\", xAxisTickInterval: \"xAxisTickInterval\", xAxisTickCount: \"xAxisTickCount\" }, outputs: { dimensionsChanged: \"dimensionsChanged\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c6, decls: 3, vars: 4, consts: [[\"ngx-charts-x-axis-ticks\", \"\", 3, \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"tickArguments\", \"tickStroke\", \"scale\", \"orient\", \"showGridLines\", \"gridLineHeight\", \"width\", \"tickValues\", \"dimensionsChanged\", 4, \"ngIf\"], [\"ngx-charts-axis-label\", \"\", 3, \"label\", \"offset\", \"orient\", \"height\", \"width\", 4, \"ngIf\"], [\"ngx-charts-x-axis-ticks\", \"\", 3, \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"tickArguments\", \"tickStroke\", \"scale\", \"orient\", \"showGridLines\", \"gridLineHeight\", \"width\", \"tickValues\", \"dimensionsChanged\"], [\"ngx-charts-axis-label\", \"\", 3, \"label\", \"offset\", \"orient\", \"height\", \"width\"]], template: function XAxisComponent_Template(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵnamespaceSVG();\n        ɵngcc0.ɵɵelementStart(0, \"g\");\n        ɵngcc0.ɵɵtemplate(1, XAxisComponent__svg_g_1_Template, 1, 12, \"g\", 0);\n        ɵngcc0.ɵɵtemplate(2, XAxisComponent__svg_g_2_Template, 1, 5, \"g\", 1);\n        ɵngcc0.ɵɵelementEnd();\n    } if (rf & 2) {\n        ɵngcc0.ɵɵattribute(\"class\", ctx.xAxisClassName)(\"transform\", ctx.transform);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.xScale);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showLabel);\n    } }, directives: [ɵngcc1.NgIf, XAxisTicksComponent, AxisLabelComponent], encapsulation: 2, changeDetection: 0 });\n__decorate([\n    Input()\n], XAxisComponent.prototype, \"xScale\", void 0);\n__decorate([\n    Input()\n], XAxisComponent.prototype, \"dims\", void 0);\n__decorate([\n    Input()\n], XAxisComponent.prototype, \"trimTicks\", void 0);\n__decorate([\n    Input()\n], XAxisComponent.prototype, \"rotateTicks\", void 0);\n__decorate([\n    Input()\n], XAxisComponent.prototype, \"maxTickLength\", void 0);\n__decorate([\n    Input()\n], XAxisComponent.prototype, \"tickFormatting\", void 0);\n__decorate([\n    Input()\n], XAxisComponent.prototype, \"showGridLines\", void 0);\n__decorate([\n    Input()\n], XAxisComponent.prototype, \"showLabel\", void 0);\n__decorate([\n    Input()\n], XAxisComponent.prototype, \"labelText\", void 0);\n__decorate([\n    Input()\n], XAxisComponent.prototype, \"ticks\", void 0);\n__decorate([\n    Input()\n], XAxisComponent.prototype, \"xAxisTickInterval\", void 0);\n__decorate([\n    Input()\n], XAxisComponent.prototype, \"xAxisTickCount\", void 0);\n__decorate([\n    Input()\n], XAxisComponent.prototype, \"xOrient\", void 0);\n__decorate([\n    Input()\n], XAxisComponent.prototype, \"xAxisOffset\", void 0);\n__decorate([\n    Output()\n], XAxisComponent.prototype, \"dimensionsChanged\", void 0);\n__decorate([\n    ViewChild(XAxisTicksComponent)\n], XAxisComponent.prototype, \"ticksComponent\", void 0);\n\n/**\n * Generates a rounded rectanglar path\n *\n * @export\n * @param x, y, w, h, r, tl, tr, bl, br\n */\nfunction roundedRect(x, y, w, h, r, [tl, tr, bl, br]) {\n    let retval = '';\n    w = Math.floor(w);\n    h = Math.floor(h);\n    w = w === 0 ? 1 : w;\n    h = h === 0 ? 1 : h;\n    retval = `M${[x + r, y]}`;\n    retval += `h${w - 2 * r}`;\n    if (tr) {\n        retval += `a${[r, r]} 0 0 1 ${[r, r]}`;\n    }\n    else {\n        retval += `h${r}v${r}`;\n    }\n    retval += `v${h - 2 * r}`;\n    if (br) {\n        retval += `a${[r, r]} 0 0 1 ${[-r, r]}`;\n    }\n    else {\n        retval += `v${r}h${-r}`;\n    }\n    retval += `h${2 * r - w}`;\n    if (bl) {\n        retval += `a${[r, r]} 0 0 1 ${[-r, -r]}`;\n    }\n    else {\n        retval += `h${-r}v${-r}`;\n    }\n    retval += `v${2 * r - h}`;\n    if (tl) {\n        retval += `a${[r, r]} 0 0 1 ${[r, -r]}`;\n    }\n    else {\n        retval += `v${-r}h${r}`;\n    }\n    retval += `z`;\n    return retval;\n}\n\nlet YAxisTicksComponent = class YAxisTicksComponent {\n    constructor() {\n        this.tickArguments = [5];\n        this.tickStroke = '#ccc';\n        this.trimTicks = true;\n        this.maxTickLength = 16;\n        this.showGridLines = false;\n        this.showRefLabels = false;\n        this.showRefLines = false;\n        this.dimensionsChanged = new EventEmitter();\n        this.innerTickSize = 6;\n        this.tickPadding = 3;\n        this.verticalSpacing = 20;\n        this.textAnchor = 'middle';\n        this.width = 0;\n        this.outerTickSize = 6;\n        this.rotateLabels = false;\n        this.referenceLineLength = 0;\n    }\n    ngOnChanges(changes) {\n        this.update();\n    }\n    ngAfterViewInit() {\n        setTimeout(() => this.updateDims());\n    }\n    updateDims() {\n        const width = parseInt(this.ticksElement.nativeElement.getBoundingClientRect().width, 10);\n        if (width !== this.width) {\n            this.width = width;\n            this.dimensionsChanged.emit({ width });\n            setTimeout(() => this.updateDims());\n        }\n    }\n    update() {\n        let scale;\n        const sign = this.orient === 'top' || this.orient === 'right' ? -1 : 1;\n        this.tickSpacing = Math.max(this.innerTickSize, 0) + this.tickPadding;\n        scale = this.scale;\n        this.ticks = this.getTicks();\n        if (this.tickFormatting) {\n            this.tickFormat = this.tickFormatting;\n        }\n        else if (scale.tickFormat) {\n            this.tickFormat = scale.tickFormat.apply(scale, this.tickArguments);\n        }\n        else {\n            this.tickFormat = function (d) {\n                if (d.constructor.name === 'Date') {\n                    return d.toLocaleDateString();\n                }\n                return d.toLocaleString();\n            };\n        }\n        this.adjustedScale = scale.bandwidth\n            ? function (d) {\n                return scale(d) + scale.bandwidth() * 0.5;\n            }\n            : scale;\n        if (this.showRefLines && this.referenceLines) {\n            this.setReferencelines();\n        }\n        switch (this.orient) {\n            case 'top':\n                this.transform = function (tick) {\n                    return 'translate(' + this.adjustedScale(tick) + ',0)';\n                };\n                this.textAnchor = 'middle';\n                this.y2 = this.innerTickSize * sign;\n                this.y1 = this.tickSpacing * sign;\n                this.dy = sign < 0 ? '0em' : '.71em';\n                break;\n            case 'bottom':\n                this.transform = function (tick) {\n                    return 'translate(' + this.adjustedScale(tick) + ',0)';\n                };\n                this.textAnchor = 'middle';\n                this.y2 = this.innerTickSize * sign;\n                this.y1 = this.tickSpacing * sign;\n                this.dy = sign < 0 ? '0em' : '.71em';\n                break;\n            case 'left':\n                this.transform = function (tick) {\n                    return 'translate(0,' + this.adjustedScale(tick) + ')';\n                };\n                this.textAnchor = 'end';\n                this.x2 = this.innerTickSize * -sign;\n                this.x1 = this.tickSpacing * -sign;\n                this.dy = '.32em';\n                break;\n            case 'right':\n                this.transform = function (tick) {\n                    return 'translate(0,' + this.adjustedScale(tick) + ')';\n                };\n                this.textAnchor = 'start';\n                this.x2 = this.innerTickSize * -sign;\n                this.x1 = this.tickSpacing * -sign;\n                this.dy = '.32em';\n                break;\n            default:\n        }\n        setTimeout(() => this.updateDims());\n    }\n    setReferencelines() {\n        this.refMin = this.adjustedScale(Math.min.apply(null, this.referenceLines.map(item => item.value)));\n        this.refMax = this.adjustedScale(Math.max.apply(null, this.referenceLines.map(item => item.value)));\n        this.referenceLineLength = this.referenceLines.length;\n        this.referenceAreaPath = roundedRect(0, this.refMax, this.gridLineWidth, this.refMin - this.refMax, 0, [\n            false,\n            false,\n            false,\n            false\n        ]);\n    }\n    getTicks() {\n        let ticks;\n        const maxTicks = this.getMaxTicks(20);\n        const maxScaleTicks = this.getMaxTicks(50);\n        if (this.tickValues) {\n            ticks = this.tickValues;\n        }\n        else if (this.scale.ticks) {\n            ticks = this.scale.ticks.apply(this.scale, [maxScaleTicks]);\n        }\n        else {\n            ticks = this.scale.domain();\n            ticks = reduceTicks(ticks, maxTicks);\n        }\n        return ticks;\n    }\n    getMaxTicks(tickHeight) {\n        return Math.floor(this.height / tickHeight);\n    }\n    tickTransform(tick) {\n        return `translate(${this.adjustedScale(tick)},${this.verticalSpacing})`;\n    }\n    gridLineTransform() {\n        return `translate(5,0)`;\n    }\n    tickTrim(label) {\n        return this.trimTicks ? trimLabel(label, this.maxTickLength) : label;\n    }\n};\nYAxisTicksComponent.ɵfac = function YAxisTicksComponent_Factory(t) { return new (t || YAxisTicksComponent)(); };\nYAxisTicksComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: YAxisTicksComponent, selectors: [[\"g\", \"ngx-charts-y-axis-ticks\", \"\"]], viewQuery: function YAxisTicksComponent_Query(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵviewQuery(_c4, true);\n    } if (rf & 2) {\n        var _t;\n        ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.ticksElement = _t.first);\n    } }, inputs: { tickArguments: \"tickArguments\", tickStroke: \"tickStroke\", trimTicks: \"trimTicks\", maxTickLength: \"maxTickLength\", showGridLines: \"showGridLines\", showRefLabels: \"showRefLabels\", showRefLines: \"showRefLines\", scale: \"scale\", orient: \"orient\", tickValues: \"tickValues\", tickFormatting: \"tickFormatting\", gridLineWidth: \"gridLineWidth\", height: \"height\", referenceLines: \"referenceLines\" }, outputs: { dimensionsChanged: \"dimensionsChanged\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c7, decls: 6, vars: 4, consts: [[\"ticksel\", \"\"], [\"class\", \"tick\", 4, \"ngFor\", \"ngForOf\"], [\"class\", \"reference-area\", 4, \"ngIf\"], [4, \"ngFor\", \"ngForOf\"], [1, \"tick\"], [\"stroke-width\", \"0.01\"], [1, \"reference-area\"], [4, \"ngIf\"], [\"class\", \"gridline-path gridline-path-horizontal\", \"x1\", \"0\", 4, \"ngIf\"], [\"x1\", \"0\", 1, \"gridline-path\", \"gridline-path-horizontal\"], [\"x1\", \"0\", 1, \"refline-path\", \"gridline-path-horizontal\"], [1, \"refline-label\"]], template: function YAxisTicksComponent_Template(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵnamespaceSVG();\n        ɵngcc0.ɵɵelementStart(0, \"g\", null, 0);\n        ɵngcc0.ɵɵtemplate(2, YAxisTicksComponent__svg_g_2_Template, 5, 9, \"g\", 1);\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵtemplate(3, YAxisTicksComponent__svg_path_3_Template, 1, 2, \"path\", 2);\n        ɵngcc0.ɵɵtemplate(4, YAxisTicksComponent__svg_g_4_Template, 2, 2, \"g\", 3);\n        ɵngcc0.ɵɵtemplate(5, YAxisTicksComponent__svg_g_5_Template, 2, 1, \"g\", 3);\n    } if (rf & 2) {\n        ɵngcc0.ɵɵadvance(2);\n        ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.ticks);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.referenceLineLength > 1 && ctx.refMax && ctx.refMin && ctx.showRefLines);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.ticks);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.referenceLines);\n    } }, directives: [ɵngcc1.NgForOf, ɵngcc1.NgIf], encapsulation: 2, changeDetection: 0 });\n__decorate([\n    Input()\n], YAxisTicksComponent.prototype, \"scale\", void 0);\n__decorate([\n    Input()\n], YAxisTicksComponent.prototype, \"orient\", void 0);\n__decorate([\n    Input()\n], YAxisTicksComponent.prototype, \"tickArguments\", void 0);\n__decorate([\n    Input()\n], YAxisTicksComponent.prototype, \"tickValues\", void 0);\n__decorate([\n    Input()\n], YAxisTicksComponent.prototype, \"tickStroke\", void 0);\n__decorate([\n    Input()\n], YAxisTicksComponent.prototype, \"trimTicks\", void 0);\n__decorate([\n    Input()\n], YAxisTicksComponent.prototype, \"maxTickLength\", void 0);\n__decorate([\n    Input()\n], YAxisTicksComponent.prototype, \"tickFormatting\", void 0);\n__decorate([\n    Input()\n], YAxisTicksComponent.prototype, \"showGridLines\", void 0);\n__decorate([\n    Input()\n], YAxisTicksComponent.prototype, \"gridLineWidth\", void 0);\n__decorate([\n    Input()\n], YAxisTicksComponent.prototype, \"height\", void 0);\n__decorate([\n    Input()\n], YAxisTicksComponent.prototype, \"referenceLines\", void 0);\n__decorate([\n    Input()\n], YAxisTicksComponent.prototype, \"showRefLabels\", void 0);\n__decorate([\n    Input()\n], YAxisTicksComponent.prototype, \"showRefLines\", void 0);\n__decorate([\n    Output()\n], YAxisTicksComponent.prototype, \"dimensionsChanged\", void 0);\n__decorate([\n    ViewChild('ticksel')\n], YAxisTicksComponent.prototype, \"ticksElement\", void 0);\n\nlet YAxisComponent = class YAxisComponent {\n    constructor() {\n        this.showGridLines = false;\n        this.yOrient = 'left';\n        this.yAxisOffset = 0;\n        this.dimensionsChanged = new EventEmitter();\n        this.yAxisClassName = 'y axis';\n        this.labelOffset = 15;\n        this.fill = 'none';\n        this.stroke = '#CCC';\n        this.tickStroke = '#CCC';\n        this.strokeWidth = 1;\n        this.padding = 5;\n    }\n    ngOnChanges(changes) {\n        this.update();\n    }\n    update() {\n        this.offset = -(this.yAxisOffset + this.padding);\n        if (this.yOrient === 'right') {\n            this.labelOffset = 65;\n            this.transform = `translate(${this.offset + this.dims.width} , 0)`;\n        }\n        else {\n            this.offset = this.offset;\n            this.transform = `translate(${this.offset} , 0)`;\n        }\n        if (this.yAxisTickCount !== undefined) {\n            this.tickArguments = [this.yAxisTickCount];\n        }\n    }\n    emitTicksWidth({ width }) {\n        if (width !== this.labelOffset && this.yOrient === 'right') {\n            this.labelOffset = width + this.labelOffset;\n            setTimeout(() => {\n                this.dimensionsChanged.emit({ width });\n            }, 0);\n        }\n        else if (width !== this.labelOffset) {\n            this.labelOffset = width;\n            setTimeout(() => {\n                this.dimensionsChanged.emit({ width });\n            }, 0);\n        }\n    }\n};\nYAxisComponent.ɵfac = function YAxisComponent_Factory(t) { return new (t || YAxisComponent)(); };\nYAxisComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: YAxisComponent, selectors: [[\"g\", \"ngx-charts-y-axis\", \"\"]], viewQuery: function YAxisComponent_Query(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵviewQuery(YAxisTicksComponent, true);\n    } if (rf & 2) {\n        var _t;\n        ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.ticksComponent = _t.first);\n    } }, inputs: { showGridLines: \"showGridLines\", yOrient: \"yOrient\", yAxisOffset: \"yAxisOffset\", yScale: \"yScale\", dims: \"dims\", trimTicks: \"trimTicks\", maxTickLength: \"maxTickLength\", tickFormatting: \"tickFormatting\", ticks: \"ticks\", showLabel: \"showLabel\", labelText: \"labelText\", yAxisTickInterval: \"yAxisTickInterval\", yAxisTickCount: \"yAxisTickCount\", referenceLines: \"referenceLines\", showRefLines: \"showRefLines\", showRefLabels: \"showRefLabels\" }, outputs: { dimensionsChanged: \"dimensionsChanged\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c8, decls: 3, vars: 4, consts: [[\"ngx-charts-y-axis-ticks\", \"\", 3, \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"tickArguments\", \"tickValues\", \"tickStroke\", \"scale\", \"orient\", \"showGridLines\", \"gridLineWidth\", \"referenceLines\", \"showRefLines\", \"showRefLabels\", \"height\", \"dimensionsChanged\", 4, \"ngIf\"], [\"ngx-charts-axis-label\", \"\", 3, \"label\", \"offset\", \"orient\", \"height\", \"width\", 4, \"ngIf\"], [\"ngx-charts-y-axis-ticks\", \"\", 3, \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"tickArguments\", \"tickValues\", \"tickStroke\", \"scale\", \"orient\", \"showGridLines\", \"gridLineWidth\", \"referenceLines\", \"showRefLines\", \"showRefLabels\", \"height\", \"dimensionsChanged\"], [\"ngx-charts-axis-label\", \"\", 3, \"label\", \"offset\", \"orient\", \"height\", \"width\"]], template: function YAxisComponent_Template(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵnamespaceSVG();\n        ɵngcc0.ɵɵelementStart(0, \"g\");\n        ɵngcc0.ɵɵtemplate(1, YAxisComponent__svg_g_1_Template, 1, 14, \"g\", 0);\n        ɵngcc0.ɵɵtemplate(2, YAxisComponent__svg_g_2_Template, 1, 5, \"g\", 1);\n        ɵngcc0.ɵɵelementEnd();\n    } if (rf & 2) {\n        ɵngcc0.ɵɵattribute(\"class\", ctx.yAxisClassName)(\"transform\", ctx.transform);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.yScale);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showLabel);\n    } }, directives: [ɵngcc1.NgIf, YAxisTicksComponent, AxisLabelComponent], encapsulation: 2, changeDetection: 0 });\n__decorate([\n    Input()\n], YAxisComponent.prototype, \"yScale\", void 0);\n__decorate([\n    Input()\n], YAxisComponent.prototype, \"dims\", void 0);\n__decorate([\n    Input()\n], YAxisComponent.prototype, \"trimTicks\", void 0);\n__decorate([\n    Input()\n], YAxisComponent.prototype, \"maxTickLength\", void 0);\n__decorate([\n    Input()\n], YAxisComponent.prototype, \"tickFormatting\", void 0);\n__decorate([\n    Input()\n], YAxisComponent.prototype, \"ticks\", void 0);\n__decorate([\n    Input()\n], YAxisComponent.prototype, \"showGridLines\", void 0);\n__decorate([\n    Input()\n], YAxisComponent.prototype, \"showLabel\", void 0);\n__decorate([\n    Input()\n], YAxisComponent.prototype, \"labelText\", void 0);\n__decorate([\n    Input()\n], YAxisComponent.prototype, \"yAxisTickInterval\", void 0);\n__decorate([\n    Input()\n], YAxisComponent.prototype, \"yAxisTickCount\", void 0);\n__decorate([\n    Input()\n], YAxisComponent.prototype, \"yOrient\", void 0);\n__decorate([\n    Input()\n], YAxisComponent.prototype, \"referenceLines\", void 0);\n__decorate([\n    Input()\n], YAxisComponent.prototype, \"showRefLines\", void 0);\n__decorate([\n    Input()\n], YAxisComponent.prototype, \"showRefLabels\", void 0);\n__decorate([\n    Input()\n], YAxisComponent.prototype, \"yAxisOffset\", void 0);\n__decorate([\n    Output()\n], YAxisComponent.prototype, \"dimensionsChanged\", void 0);\n__decorate([\n    ViewChild(YAxisTicksComponent)\n], YAxisComponent.prototype, \"ticksComponent\", void 0);\n\nlet AxesModule = class AxesModule {\n};\nAxesModule.ɵmod = ɵngcc0.ɵɵdefineNgModule({ type: AxesModule });\nAxesModule.ɵinj = ɵngcc0.ɵɵdefineInjector({ factory: function AxesModule_Factory(t) { return new (t || AxesModule)(); }, imports: [[CommonModule]] });\n\nvar StyleTypes;\n(function (StyleTypes) {\n    StyleTypes[StyleTypes[\"popover\"] = 'popover'] = \"popover\";\n    StyleTypes[StyleTypes[\"tooltip\"] = 'tooltip'] = \"tooltip\";\n})(StyleTypes || (StyleTypes = {}));\n\nvar AlignmentTypes;\n(function (AlignmentTypes) {\n    AlignmentTypes[AlignmentTypes[\"left\"] = 'left'] = \"left\";\n    AlignmentTypes[AlignmentTypes[\"center\"] = 'center'] = \"center\";\n    AlignmentTypes[AlignmentTypes[\"right\"] = 'right'] = \"right\";\n})(AlignmentTypes || (AlignmentTypes = {}));\n\nvar ShowTypes;\n(function (ShowTypes) {\n    ShowTypes[ShowTypes[\"all\"] = 'all'] = \"all\";\n    ShowTypes[ShowTypes[\"focus\"] = 'focus'] = \"focus\";\n    ShowTypes[ShowTypes[\"mouseover\"] = 'mouseover'] = \"mouseover\";\n})(ShowTypes || (ShowTypes = {}));\n\nlet TooltipDirective = class TooltipDirective {\n    constructor(tooltipService, viewContainerRef, renderer) {\n        this.tooltipService = tooltipService;\n        this.viewContainerRef = viewContainerRef;\n        this.renderer = renderer;\n        this.tooltipCssClass = '';\n        this.tooltipTitle = '';\n        this.tooltipAppendToBody = true;\n        this.tooltipSpacing = 10;\n        this.tooltipDisabled = false;\n        this.tooltipShowCaret = true;\n        this.tooltipPlacement = PlacementTypes.top;\n        this.tooltipAlignment = AlignmentTypes.center;\n        this.tooltipType = StyleTypes.popover;\n        this.tooltipCloseOnClickOutside = true;\n        this.tooltipCloseOnMouseLeave = true;\n        this.tooltipHideTimeout = 300;\n        this.tooltipShowTimeout = 100;\n        this.tooltipShowEvent = ShowTypes.all;\n        this.tooltipImmediateExit = false;\n        this.show = new EventEmitter();\n        this.hide = new EventEmitter();\n    }\n    get listensForFocus() {\n        return this.tooltipShowEvent === ShowTypes.all || this.tooltipShowEvent === ShowTypes.focus;\n    }\n    get listensForHover() {\n        return this.tooltipShowEvent === ShowTypes.all || this.tooltipShowEvent === ShowTypes.mouseover;\n    }\n    ngOnDestroy() {\n        this.hideTooltip(true);\n    }\n    onFocus() {\n        if (this.listensForFocus) {\n            this.showTooltip();\n        }\n    }\n    onBlur() {\n        if (this.listensForFocus) {\n            this.hideTooltip(true);\n        }\n    }\n    onMouseEnter() {\n        if (this.listensForHover) {\n            this.showTooltip();\n        }\n    }\n    onMouseLeave(target) {\n        if (this.listensForHover && this.tooltipCloseOnMouseLeave) {\n            clearTimeout(this.timeout);\n            if (this.component) {\n                const contentDom = this.component.instance.element.nativeElement;\n                const contains = contentDom.contains(target);\n                if (contains)\n                    return;\n            }\n            this.hideTooltip(this.tooltipImmediateExit);\n        }\n    }\n    onMouseClick() {\n        if (this.listensForHover) {\n            this.hideTooltip(true);\n        }\n    }\n    showTooltip(immediate) {\n        if (this.component || this.tooltipDisabled)\n            return;\n        const time = immediate ? 0 : this.tooltipShowTimeout;\n        clearTimeout(this.timeout);\n        this.timeout = setTimeout(() => {\n            this.tooltipService.destroyAll();\n            const options = this.createBoundOptions();\n            this.component = this.tooltipService.create(options);\n            // add a tiny timeout to avoid event re-triggers\n            setTimeout(() => {\n                if (this.component) {\n                    this.addHideListeners(this.component.instance.element.nativeElement);\n                }\n            }, 10);\n            this.show.emit(true);\n        }, time);\n    }\n    addHideListeners(tooltip) {\n        // on mouse enter, cancel the hide triggered by the leave\n        this.mouseEnterContentEvent = this.renderer.listen(tooltip, 'mouseenter', () => {\n            clearTimeout(this.timeout);\n        });\n        // content mouse leave listener\n        if (this.tooltipCloseOnMouseLeave) {\n            this.mouseLeaveContentEvent = this.renderer.listen(tooltip, 'mouseleave', () => {\n                this.hideTooltip(this.tooltipImmediateExit);\n            });\n        }\n        // content close on click outside\n        if (this.tooltipCloseOnClickOutside) {\n            this.documentClickEvent = this.renderer.listen(document, 'click', event => {\n                const contains = tooltip.contains(event.target);\n                if (!contains)\n                    this.hideTooltip();\n            });\n        }\n    }\n    hideTooltip(immediate = false) {\n        if (!this.component)\n            return;\n        const destroyFn = () => {\n            // remove events\n            if (this.mouseLeaveContentEvent)\n                this.mouseLeaveContentEvent();\n            if (this.mouseEnterContentEvent)\n                this.mouseEnterContentEvent();\n            if (this.documentClickEvent)\n                this.documentClickEvent();\n            // emit events\n            this.hide.emit(true);\n            // destroy component\n            this.tooltipService.destroy(this.component);\n            this.component = undefined;\n        };\n        clearTimeout(this.timeout);\n        if (!immediate) {\n            this.timeout = setTimeout(destroyFn, this.tooltipHideTimeout);\n        }\n        else {\n            destroyFn();\n        }\n    }\n    createBoundOptions() {\n        return {\n            title: this.tooltipTitle,\n            template: this.tooltipTemplate,\n            host: this.viewContainerRef.element,\n            placement: this.tooltipPlacement,\n            alignment: this.tooltipAlignment,\n            type: this.tooltipType,\n            showCaret: this.tooltipShowCaret,\n            cssClass: this.tooltipCssClass,\n            spacing: this.tooltipSpacing,\n            context: this.tooltipContext\n        };\n    }\n};\nTooltipDirective.ɵfac = function TooltipDirective_Factory(t) { return new (t || TooltipDirective)(ɵngcc0.ɵɵdirectiveInject(TooltipService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2)); };\nTooltipDirective.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: TooltipDirective, selectors: [[\"\", \"ngx-tooltip\", \"\"]], hostBindings: function TooltipDirective_HostBindings(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵlistener(\"focusin\", function TooltipDirective_focusin_HostBindingHandler() { return ctx.onFocus(); })(\"blur\", function TooltipDirective_blur_HostBindingHandler() { return ctx.onBlur(); })(\"mouseenter\", function TooltipDirective_mouseenter_HostBindingHandler() { return ctx.onMouseEnter(); })(\"mouseleave\", function TooltipDirective_mouseleave_HostBindingHandler($event) { return ctx.onMouseLeave($event.target); })(\"click\", function TooltipDirective_click_HostBindingHandler() { return ctx.onMouseClick(); });\n    } }, inputs: { tooltipCssClass: \"tooltipCssClass\", tooltipTitle: \"tooltipTitle\", tooltipAppendToBody: \"tooltipAppendToBody\", tooltipSpacing: \"tooltipSpacing\", tooltipDisabled: \"tooltipDisabled\", tooltipShowCaret: \"tooltipShowCaret\", tooltipPlacement: \"tooltipPlacement\", tooltipAlignment: \"tooltipAlignment\", tooltipType: \"tooltipType\", tooltipCloseOnClickOutside: \"tooltipCloseOnClickOutside\", tooltipCloseOnMouseLeave: \"tooltipCloseOnMouseLeave\", tooltipHideTimeout: \"tooltipHideTimeout\", tooltipShowTimeout: \"tooltipShowTimeout\", tooltipShowEvent: \"tooltipShowEvent\", tooltipImmediateExit: \"tooltipImmediateExit\", tooltipTemplate: \"tooltipTemplate\", tooltipContext: \"tooltipContext\" }, outputs: { show: \"show\", hide: \"hide\" } });\nTooltipDirective.ctorParameters = () => [\n    { type: TooltipService },\n    { type: ViewContainerRef },\n    { type: Renderer2 }\n];\n__decorate([\n    Input()\n], TooltipDirective.prototype, \"tooltipCssClass\", void 0);\n__decorate([\n    Input()\n], TooltipDirective.prototype, \"tooltipTitle\", void 0);\n__decorate([\n    Input()\n], TooltipDirective.prototype, \"tooltipAppendToBody\", void 0);\n__decorate([\n    Input()\n], TooltipDirective.prototype, \"tooltipSpacing\", void 0);\n__decorate([\n    Input()\n], TooltipDirective.prototype, \"tooltipDisabled\", void 0);\n__decorate([\n    Input()\n], TooltipDirective.prototype, \"tooltipShowCaret\", void 0);\n__decorate([\n    Input()\n], TooltipDirective.prototype, \"tooltipPlacement\", void 0);\n__decorate([\n    Input()\n], TooltipDirective.prototype, \"tooltipAlignment\", void 0);\n__decorate([\n    Input()\n], TooltipDirective.prototype, \"tooltipType\", void 0);\n__decorate([\n    Input()\n], TooltipDirective.prototype, \"tooltipCloseOnClickOutside\", void 0);\n__decorate([\n    Input()\n], TooltipDirective.prototype, \"tooltipCloseOnMouseLeave\", void 0);\n__decorate([\n    Input()\n], TooltipDirective.prototype, \"tooltipHideTimeout\", void 0);\n__decorate([\n    Input()\n], TooltipDirective.prototype, \"tooltipShowTimeout\", void 0);\n__decorate([\n    Input()\n], TooltipDirective.prototype, \"tooltipTemplate\", void 0);\n__decorate([\n    Input()\n], TooltipDirective.prototype, \"tooltipShowEvent\", void 0);\n__decorate([\n    Input()\n], TooltipDirective.prototype, \"tooltipContext\", void 0);\n__decorate([\n    Input()\n], TooltipDirective.prototype, \"tooltipImmediateExit\", void 0);\n__decorate([\n    Output()\n], TooltipDirective.prototype, \"show\", void 0);\n__decorate([\n    Output()\n], TooltipDirective.prototype, \"hide\", void 0);\n__decorate([\n    HostListener('focusin')\n], TooltipDirective.prototype, \"onFocus\", null);\n__decorate([\n    HostListener('blur')\n], TooltipDirective.prototype, \"onBlur\", null);\n__decorate([\n    HostListener('mouseenter')\n], TooltipDirective.prototype, \"onMouseEnter\", null);\n__decorate([\n    HostListener('mouseleave', ['$event.target'])\n], TooltipDirective.prototype, \"onMouseLeave\", null);\n__decorate([\n    HostListener('click')\n], TooltipDirective.prototype, \"onMouseClick\", null);\n\nlet TooltipModule = class TooltipModule {\n};\nTooltipModule.ɵmod = ɵngcc0.ɵɵdefineNgModule({ type: TooltipModule });\nTooltipModule.ɵinj = ɵngcc0.ɵɵdefineInjector({ factory: function TooltipModule_Factory(t) { return new (t || TooltipModule)(); }, providers: [InjectionService, TooltipService], imports: [[CommonModule]] });\n\n/**\n * Formats a label given a date, number or string.\n *\n * @export\n */\nfunction formatLabel(label) {\n    if (label instanceof Date) {\n        label = label.toLocaleDateString();\n    }\n    else {\n        label = label.toLocaleString();\n    }\n    return label;\n}\n/**\n * Escapes a label.\n *\n * @export\n */\nfunction escapeLabel(label) {\n    return label.toLocaleString().replace(/[&'`\"<>]/g, match => {\n        return {\n            '&': '&amp;',\n            // tslint:disable-next-line: quotemark\n            \"'\": '&#x27;',\n            '`': '&#x60;',\n            '\"': '&quot;',\n            '<': '&lt;',\n            '>': '&gt;'\n        }[match];\n    });\n}\n\nconst cache = {};\n/**\n * Generates a short id.\n *\n * Description:\n *   A 4-character alphanumeric sequence (364 = 1.6 million)\n *   This should only be used for JavaScript specific models.\n *   http://stackoverflow.com/questions/6248666/how-to-generate-short-uid-like-ax4j9z-in-js\n *\n *   Example: `ebgf`\n */\nfunction id() {\n    let newId = ('0000' + ((Math.random() * Math.pow(36, 4)) << 0).toString(36)).slice(-4);\n    // append a 'a' because neo gets mad\n    newId = `a${newId}`;\n    // ensure not already used\n    if (!cache[newId]) {\n        cache[newId] = true;\n        return newId;\n    }\n    return id();\n}\n\nlet CircleSeriesComponent = class CircleSeriesComponent {\n    constructor() {\n        this.type = 'standard';\n        this.tooltipDisabled = false;\n        this.select = new EventEmitter();\n        this.activate = new EventEmitter();\n        this.deactivate = new EventEmitter();\n        this.barVisible = false;\n    }\n    ngOnInit() {\n        this.gradientId = 'grad' + id().toString();\n        this.gradientFill = `url(#${this.gradientId})`;\n    }\n    ngOnChanges(changes) {\n        this.update();\n    }\n    update() {\n        this.circle = this.getActiveCircle();\n    }\n    getActiveCircle() {\n        const indexActiveDataPoint = this.data.series.findIndex(d => {\n            const label = d.name;\n            return label && this.visibleValue && label.toString() === this.visibleValue.toString() && d.value !== undefined;\n        });\n        if (indexActiveDataPoint === -1) {\n            // No valid point is 'active/hovered over' at this moment.\n            return undefined;\n        }\n        return this.mapDataPointToCircle(this.data.series[indexActiveDataPoint], indexActiveDataPoint);\n    }\n    mapDataPointToCircle(d, i) {\n        const seriesName = this.data.name;\n        const value = d.value;\n        const label = d.name;\n        const tooltipLabel = formatLabel(label);\n        let cx;\n        if (this.scaleType === 'time') {\n            cx = this.xScale(label);\n        }\n        else if (this.scaleType === 'linear') {\n            cx = this.xScale(Number(label));\n        }\n        else {\n            cx = this.xScale(label);\n        }\n        const cy = this.yScale(this.type === 'standard' ? value : d.d1);\n        const radius = 5;\n        const height = this.yScale.range()[0] - cy;\n        const opacity = 1;\n        let color;\n        if (this.colors.scaleType === 'linear') {\n            if (this.type === 'standard') {\n                color = this.colors.getColor(value);\n            }\n            else {\n                color = this.colors.getColor(d.d1);\n            }\n        }\n        else {\n            color = this.colors.getColor(seriesName);\n        }\n        const data = Object.assign({}, d, {\n            series: seriesName,\n            value,\n            name: label\n        });\n        return {\n            classNames: [`circle-data-${i}`],\n            value,\n            label,\n            data,\n            cx,\n            cy,\n            radius,\n            height,\n            tooltipLabel,\n            color,\n            opacity,\n            seriesName,\n            gradientStops: this.getGradientStops(color),\n            min: d.min,\n            max: d.max\n        };\n    }\n    getTooltipText({ tooltipLabel, value, seriesName, min, max }) {\n        return `\n      <span class=\"tooltip-label\">${escapeLabel(seriesName)} • ${escapeLabel(tooltipLabel)}</span>\n      <span class=\"tooltip-val\">${value.toLocaleString()}${this.getTooltipMinMaxText(min, max)}</span>\n    `;\n    }\n    getTooltipMinMaxText(min, max) {\n        if (min !== undefined || max !== undefined) {\n            let result = ' (';\n            if (min !== undefined) {\n                if (max === undefined) {\n                    result += '≥';\n                }\n                result += min.toLocaleString();\n                if (max !== undefined) {\n                    result += ' - ';\n                }\n            }\n            else if (max !== undefined) {\n                result += '≤';\n            }\n            if (max !== undefined) {\n                result += max.toLocaleString();\n            }\n            result += ')';\n            return result;\n        }\n        else {\n            return '';\n        }\n    }\n    getGradientStops(color) {\n        return [\n            {\n                offset: 0,\n                color,\n                opacity: 0.2\n            },\n            {\n                offset: 100,\n                color,\n                opacity: 1\n            }\n        ];\n    }\n    onClick(data) {\n        this.select.emit(data);\n    }\n    isActive(entry) {\n        if (!this.activeEntries)\n            return false;\n        const item = this.activeEntries.find(d => {\n            return entry.name === d.name;\n        });\n        return item !== undefined;\n    }\n    activateCircle() {\n        this.barVisible = true;\n        this.activate.emit({ name: this.data.name });\n    }\n    deactivateCircle() {\n        this.barVisible = false;\n        this.circle.opacity = 0;\n        this.deactivate.emit({ name: this.data.name });\n    }\n};\nCircleSeriesComponent.ɵfac = function CircleSeriesComponent_Factory(t) { return new (t || CircleSeriesComponent)(); };\nCircleSeriesComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: CircleSeriesComponent, selectors: [[\"g\", \"ngx-charts-circle-series\", \"\"]], inputs: { type: \"type\", tooltipDisabled: \"tooltipDisabled\", data: \"data\", xScale: \"xScale\", yScale: \"yScale\", colors: \"colors\", scaleType: \"scaleType\", visibleValue: \"visibleValue\", activeEntries: \"activeEntries\", tooltipTemplate: \"tooltipTemplate\" }, outputs: { select: \"select\", activate: \"activate\", deactivate: \"deactivate\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c9, decls: 1, vars: 1, consts: [[4, \"ngIf\"], [\"ngx-charts-svg-linear-gradient\", \"\", \"orientation\", \"vertical\", 3, \"name\", \"stops\"], [\"class\", \"tooltip-bar\", 4, \"ngIf\"], [\"ngx-charts-circle\", \"\", \"ngx-tooltip\", \"\", 1, \"circle\", 3, \"cx\", \"cy\", \"r\", \"fill\", \"pointerEvents\", \"data\", \"classNames\", \"tooltipDisabled\", \"tooltipPlacement\", \"tooltipType\", \"tooltipTitle\", \"tooltipTemplate\", \"tooltipContext\", \"select\", \"activate\", \"deactivate\"], [1, \"tooltip-bar\"]], template: function CircleSeriesComponent_Template(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵtemplate(0, CircleSeriesComponent__svg_g_0_Template, 5, 20, \"g\", 0);\n    } if (rf & 2) {\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.circle);\n    } }, directives: function () { return [ɵngcc1.NgIf, SvgLinearGradientComponent, CircleComponent, TooltipDirective]; }, encapsulation: 2, data: { animation: [\n            trigger('animationState', [\n                transition(':enter', [\n                    style({\n                        opacity: 0\n                    }),\n                    animate(250, style({ opacity: 1 }))\n                ])\n            ])\n        ] }, changeDetection: 0 });\n__decorate([\n    Input()\n], CircleSeriesComponent.prototype, \"data\", void 0);\n__decorate([\n    Input()\n], CircleSeriesComponent.prototype, \"type\", void 0);\n__decorate([\n    Input()\n], CircleSeriesComponent.prototype, \"xScale\", void 0);\n__decorate([\n    Input()\n], CircleSeriesComponent.prototype, \"yScale\", void 0);\n__decorate([\n    Input()\n], CircleSeriesComponent.prototype, \"colors\", void 0);\n__decorate([\n    Input()\n], CircleSeriesComponent.prototype, \"scaleType\", void 0);\n__decorate([\n    Input()\n], CircleSeriesComponent.prototype, \"visibleValue\", void 0);\n__decorate([\n    Input()\n], CircleSeriesComponent.prototype, \"activeEntries\", void 0);\n__decorate([\n    Input()\n], CircleSeriesComponent.prototype, \"tooltipDisabled\", void 0);\n__decorate([\n    Input()\n], CircleSeriesComponent.prototype, \"tooltipTemplate\", void 0);\n__decorate([\n    Output()\n], CircleSeriesComponent.prototype, \"select\", void 0);\n__decorate([\n    Output()\n], CircleSeriesComponent.prototype, \"activate\", void 0);\n__decorate([\n    Output()\n], CircleSeriesComponent.prototype, \"deactivate\", void 0);\n\nlet CircleComponent = class CircleComponent {\n    constructor() {\n        this.select = new EventEmitter();\n        this.activate = new EventEmitter();\n        this.deactivate = new EventEmitter();\n    }\n    onClick() {\n        this.select.emit(this.data);\n    }\n    onMouseEnter() {\n        this.activate.emit(this.data);\n    }\n    onMouseLeave() {\n        this.deactivate.emit(this.data);\n    }\n    ngOnChanges(changes) {\n        this.classNames = Array.isArray(this.classNames) ? this.classNames.join(' ') : '';\n        this.classNames += 'circle';\n    }\n};\nCircleComponent.ɵfac = function CircleComponent_Factory(t) { return new (t || CircleComponent)(); };\nCircleComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: CircleComponent, selectors: [[\"g\", \"ngx-charts-circle\", \"\"]], hostBindings: function CircleComponent_HostBindings(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵlistener(\"click\", function CircleComponent_click_HostBindingHandler() { return ctx.onClick(); })(\"mouseenter\", function CircleComponent_mouseenter_HostBindingHandler() { return ctx.onMouseEnter(); })(\"mouseleave\", function CircleComponent_mouseleave_HostBindingHandler() { return ctx.onMouseLeave(); });\n    } }, inputs: { classNames: \"classNames\", cx: \"cx\", cy: \"cy\", r: \"r\", fill: \"fill\", stroke: \"stroke\", data: \"data\", circleOpacity: \"circleOpacity\", pointerEvents: \"pointerEvents\" }, outputs: { select: \"select\", activate: \"activate\", deactivate: \"deactivate\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c11, decls: 1, vars: 8, template: function CircleComponent_Template(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵnamespaceSVG();\n        ɵngcc0.ɵɵelement(0, \"circle\");\n    } if (rf & 2) {\n        ɵngcc0.ɵɵattribute(\"cx\", ctx.cx)(\"cy\", ctx.cy)(\"r\", ctx.r)(\"fill\", ctx.fill)(\"stroke\", ctx.stroke)(\"opacity\", ctx.circleOpacity)(\"class\", ctx.classNames)(\"pointer-events\", ctx.pointerEvents);\n    } }, encapsulation: 2, changeDetection: 0 });\n__decorate([\n    Input()\n], CircleComponent.prototype, \"cx\", void 0);\n__decorate([\n    Input()\n], CircleComponent.prototype, \"cy\", void 0);\n__decorate([\n    Input()\n], CircleComponent.prototype, \"r\", void 0);\n__decorate([\n    Input()\n], CircleComponent.prototype, \"fill\", void 0);\n__decorate([\n    Input()\n], CircleComponent.prototype, \"stroke\", void 0);\n__decorate([\n    Input()\n], CircleComponent.prototype, \"data\", void 0);\n__decorate([\n    Input()\n], CircleComponent.prototype, \"classNames\", void 0);\n__decorate([\n    Input()\n], CircleComponent.prototype, \"circleOpacity\", void 0);\n__decorate([\n    Input()\n], CircleComponent.prototype, \"pointerEvents\", void 0);\n__decorate([\n    Output()\n], CircleComponent.prototype, \"select\", void 0);\n__decorate([\n    Output()\n], CircleComponent.prototype, \"activate\", void 0);\n__decorate([\n    Output()\n], CircleComponent.prototype, \"deactivate\", void 0);\n__decorate([\n    HostListener('click')\n], CircleComponent.prototype, \"onClick\", null);\n__decorate([\n    HostListener('mouseenter')\n], CircleComponent.prototype, \"onMouseEnter\", null);\n__decorate([\n    HostListener('mouseleave')\n], CircleComponent.prototype, \"onMouseLeave\", null);\n\nlet GridPanelComponent = class GridPanelComponent {\n};\nGridPanelComponent.ɵfac = function GridPanelComponent_Factory(t) { return new (t || GridPanelComponent)(); };\nGridPanelComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: GridPanelComponent, selectors: [[\"g\", \"ngx-charts-grid-panel\", \"\"]], inputs: { path: \"path\", width: \"width\", height: \"height\", x: \"x\", y: \"y\" }, attrs: _c12, decls: 1, vars: 4, consts: [[\"stroke\", \"none\", 1, \"gridpanel\"]], template: function GridPanelComponent_Template(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵnamespaceSVG();\n        ɵngcc0.ɵɵelement(0, \"rect\", 0);\n    } if (rf & 2) {\n        ɵngcc0.ɵɵattribute(\"height\", ctx.height)(\"width\", ctx.width)(\"x\", ctx.x)(\"y\", ctx.y);\n    } }, encapsulation: 2, changeDetection: 0 });\n__decorate([\n    Input()\n], GridPanelComponent.prototype, \"path\", void 0);\n__decorate([\n    Input()\n], GridPanelComponent.prototype, \"width\", void 0);\n__decorate([\n    Input()\n], GridPanelComponent.prototype, \"height\", void 0);\n__decorate([\n    Input()\n], GridPanelComponent.prototype, \"x\", void 0);\n__decorate([\n    Input()\n], GridPanelComponent.prototype, \"y\", void 0);\n\nlet GridPanelSeriesComponent = class GridPanelSeriesComponent {\n    ngOnChanges(changes) {\n        this.update();\n    }\n    update() {\n        this.gridPanels = this.getGridPanels();\n    }\n    getGridPanels() {\n        return this.data.map(d => {\n            let offset;\n            let width;\n            let height;\n            let x;\n            let y;\n            let className = 'odd';\n            if (this.orient === 'vertical') {\n                const position = this.xScale(d.name);\n                const positionIndex = Number.parseInt((position / this.xScale.step()).toString(), 10);\n                if (positionIndex % 2 === 1) {\n                    className = 'even';\n                }\n                offset = this.xScale.bandwidth() * this.xScale.paddingInner();\n                width = this.xScale.bandwidth() + offset;\n                height = this.dims.height;\n                x = this.xScale(d.name) - offset / 2;\n                y = 0;\n            }\n            else if (this.orient === 'horizontal') {\n                const position = this.yScale(d.name);\n                const positionIndex = Number.parseInt((position / this.yScale.step()).toString(), 10);\n                if (positionIndex % 2 === 1) {\n                    className = 'even';\n                }\n                offset = this.yScale.bandwidth() * this.yScale.paddingInner();\n                width = this.dims.width;\n                height = this.yScale.bandwidth() + offset;\n                x = 0;\n                y = this.yScale(d.name) - offset / 2;\n            }\n            return {\n                name: d.name,\n                class: className,\n                height,\n                width,\n                x,\n                y\n            };\n        });\n    }\n};\nGridPanelSeriesComponent.ɵfac = function GridPanelSeriesComponent_Factory(t) { return new (t || GridPanelSeriesComponent)(); };\nGridPanelSeriesComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: GridPanelSeriesComponent, selectors: [[\"g\", \"ngx-charts-grid-panel-series\", \"\"]], inputs: { data: \"data\", dims: \"dims\", xScale: \"xScale\", yScale: \"yScale\", orient: \"orient\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c13, decls: 1, vars: 1, consts: [[\"ngx-charts-grid-panel\", \"\", 3, \"height\", \"width\", \"x\", \"y\", \"grid-panel\", \"odd\", \"even\", 4, \"ngFor\", \"ngForOf\"], [\"ngx-charts-grid-panel\", \"\", 3, \"height\", \"width\", \"x\", \"y\"]], template: function GridPanelSeriesComponent_Template(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵtemplate(0, GridPanelSeriesComponent__svg_g_0_Template, 1, 10, \"g\", 0);\n    } if (rf & 2) {\n        ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.gridPanels);\n    } }, directives: [ɵngcc1.NgForOf, GridPanelComponent], encapsulation: 2, changeDetection: 0 });\n__decorate([\n    Input()\n], GridPanelSeriesComponent.prototype, \"data\", void 0);\n__decorate([\n    Input()\n], GridPanelSeriesComponent.prototype, \"dims\", void 0);\n__decorate([\n    Input()\n], GridPanelSeriesComponent.prototype, \"xScale\", void 0);\n__decorate([\n    Input()\n], GridPanelSeriesComponent.prototype, \"yScale\", void 0);\n__decorate([\n    Input()\n], GridPanelSeriesComponent.prototype, \"orient\", void 0);\n\nlet SvgLinearGradientComponent = class SvgLinearGradientComponent {\n    constructor() {\n        this.orientation = 'vertical';\n    }\n    ngOnChanges(changes) {\n        this.x1 = '0%';\n        this.x2 = '0%';\n        this.y1 = '0%';\n        this.y2 = '0%';\n        if (this.orientation === 'horizontal') {\n            this.x2 = '100%';\n        }\n        else if (this.orientation === 'vertical') {\n            this.y1 = '100%';\n        }\n    }\n};\nSvgLinearGradientComponent.ɵfac = function SvgLinearGradientComponent_Factory(t) { return new (t || SvgLinearGradientComponent)(); };\nSvgLinearGradientComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: SvgLinearGradientComponent, selectors: [[\"g\", \"ngx-charts-svg-linear-gradient\", \"\"]], inputs: { orientation: \"orientation\", name: \"name\", stops: \"stops\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c14, decls: 2, vars: 6, consts: [[3, \"id\"], [3, \"stop-color\", \"stop-opacity\", 4, \"ngFor\", \"ngForOf\"]], template: function SvgLinearGradientComponent_Template(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵnamespaceSVG();\n        ɵngcc0.ɵɵelementStart(0, \"linearGradient\", 0);\n        ɵngcc0.ɵɵtemplate(1, SvgLinearGradientComponent__svg_stop_1_Template, 1, 5, \"stop\", 1);\n        ɵngcc0.ɵɵelementEnd();\n    } if (rf & 2) {\n        ɵngcc0.ɵɵproperty(\"id\", ctx.name);\n        ɵngcc0.ɵɵattribute(\"x1\", ctx.x1)(\"y1\", ctx.y1)(\"x2\", ctx.x2)(\"y2\", ctx.y2);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.stops);\n    } }, directives: [ɵngcc1.NgForOf], encapsulation: 2, changeDetection: 0 });\n__decorate([\n    Input()\n], SvgLinearGradientComponent.prototype, \"orientation\", void 0);\n__decorate([\n    Input()\n], SvgLinearGradientComponent.prototype, \"name\", void 0);\n__decorate([\n    Input()\n], SvgLinearGradientComponent.prototype, \"stops\", void 0);\n\nlet SvgRadialGradientComponent = class SvgRadialGradientComponent {\n    constructor() {\n        this.endOpacity = 1;\n        this.cx = 0;\n        this.cy = 0;\n    }\n    get stops() {\n        return this.stopsInput || this.stopsDefault;\n    }\n    set stops(value) {\n        this.stopsInput = value;\n    }\n    ngOnChanges(changes) {\n        this.r = '30%';\n        if ('color' in changes || 'startOpacity' in changes || 'endOpacity' in changes) {\n            this.stopsDefault = [\n                {\n                    offset: 0,\n                    color: this.color,\n                    opacity: this.startOpacity\n                },\n                {\n                    offset: 100,\n                    color: this.color,\n                    opacity: this.endOpacity\n                }\n            ];\n        }\n    }\n};\nSvgRadialGradientComponent.ɵfac = function SvgRadialGradientComponent_Factory(t) { return new (t || SvgRadialGradientComponent)(); };\nSvgRadialGradientComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: SvgRadialGradientComponent, selectors: [[\"g\", \"ngx-charts-svg-radial-gradient\", \"\"]], inputs: { endOpacity: \"endOpacity\", cx: \"cx\", cy: \"cy\", stops: \"stops\", color: \"color\", name: \"name\", startOpacity: \"startOpacity\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c15, decls: 2, vars: 5, consts: [[\"gradientUnits\", \"userSpaceOnUse\", 3, \"id\"], [3, \"stop-color\", \"stop-opacity\", 4, \"ngFor\", \"ngForOf\"]], template: function SvgRadialGradientComponent_Template(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵnamespaceSVG();\n        ɵngcc0.ɵɵelementStart(0, \"radialGradient\", 0);\n        ɵngcc0.ɵɵtemplate(1, SvgRadialGradientComponent__svg_stop_1_Template, 1, 5, \"stop\", 1);\n        ɵngcc0.ɵɵelementEnd();\n    } if (rf & 2) {\n        ɵngcc0.ɵɵproperty(\"id\", ctx.name);\n        ɵngcc0.ɵɵattribute(\"cx\", ctx.cx)(\"cy\", ctx.cy)(\"r\", ctx.r);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.stops);\n    } }, directives: [ɵngcc1.NgForOf], encapsulation: 2, changeDetection: 0 });\n__decorate([\n    Input()\n], SvgRadialGradientComponent.prototype, \"color\", void 0);\n__decorate([\n    Input()\n], SvgRadialGradientComponent.prototype, \"name\", void 0);\n__decorate([\n    Input()\n], SvgRadialGradientComponent.prototype, \"startOpacity\", void 0);\n__decorate([\n    Input()\n], SvgRadialGradientComponent.prototype, \"endOpacity\", void 0);\n__decorate([\n    Input()\n], SvgRadialGradientComponent.prototype, \"cx\", void 0);\n__decorate([\n    Input()\n], SvgRadialGradientComponent.prototype, \"cy\", void 0);\n__decorate([\n    Input()\n], SvgRadialGradientComponent.prototype, \"stops\", null);\n\nlet AreaComponent = class AreaComponent {\n    constructor(element) {\n        this.opacity = 1;\n        this.startOpacity = 0.5;\n        this.endOpacity = 1;\n        this.gradient = false;\n        this.animations = true;\n        this.select = new EventEmitter();\n        this.initialized = false;\n        this.hasGradient = false;\n        this.element = element.nativeElement;\n    }\n    ngOnChanges(changes) {\n        if (!this.initialized) {\n            this.loadAnimation();\n            this.initialized = true;\n        }\n        else {\n            this.update();\n        }\n    }\n    update() {\n        this.gradientId = 'grad' + id().toString();\n        this.gradientFill = `url(#${this.gradientId})`;\n        if (this.gradient || this.stops) {\n            this.gradientStops = this.getGradient();\n            this.hasGradient = true;\n        }\n        else {\n            this.hasGradient = false;\n        }\n        this.updatePathEl();\n    }\n    loadAnimation() {\n        this.areaPath = this.startingPath;\n        setTimeout(this.update.bind(this), 100);\n    }\n    updatePathEl() {\n        const node = select(this.element).select('.area');\n        if (this.animations) {\n            node\n                .transition()\n                .duration(750)\n                .attr('d', this.path);\n        }\n        else {\n            node.attr('d', this.path);\n        }\n    }\n    getGradient() {\n        if (this.stops) {\n            return this.stops;\n        }\n        return [\n            {\n                offset: 0,\n                color: this.fill,\n                opacity: this.startOpacity\n            },\n            {\n                offset: 100,\n                color: this.fill,\n                opacity: this.endOpacity\n            }\n        ];\n    }\n};\nAreaComponent.ɵfac = function AreaComponent_Factory(t) { return new (t || AreaComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nAreaComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: AreaComponent, selectors: [[\"g\", \"ngx-charts-area\", \"\"]], inputs: { opacity: \"opacity\", startOpacity: \"startOpacity\", endOpacity: \"endOpacity\", gradient: \"gradient\", animations: \"animations\", data: \"data\", path: \"path\", startingPath: \"startingPath\", fill: \"fill\", activeLabel: \"activeLabel\", stops: \"stops\" }, outputs: { select: \"select\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c16, decls: 2, vars: 5, consts: [[4, \"ngIf\"], [1, \"area\"], [\"ngx-charts-svg-linear-gradient\", \"\", \"orientation\", \"vertical\", 3, \"name\", \"stops\"]], template: function AreaComponent_Template(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵtemplate(0, AreaComponent__svg_defs_0_Template, 2, 2, \"defs\", 0);\n        ɵngcc0.ɵɵnamespaceSVG();\n        ɵngcc0.ɵɵelement(1, \"path\", 1);\n    } if (rf & 2) {\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.gradient);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵstyleProp(\"opacity\", ctx.opacity);\n        ɵngcc0.ɵɵattribute(\"d\", ctx.areaPath)(\"fill\", ctx.gradient ? ctx.gradientFill : ctx.fill);\n    } }, directives: [ɵngcc1.NgIf, SvgLinearGradientComponent], encapsulation: 2, changeDetection: 0 });\nAreaComponent.ctorParameters = () => [\n    { type: ElementRef }\n];\n__decorate([\n    Input()\n], AreaComponent.prototype, \"data\", void 0);\n__decorate([\n    Input()\n], AreaComponent.prototype, \"path\", void 0);\n__decorate([\n    Input()\n], AreaComponent.prototype, \"startingPath\", void 0);\n__decorate([\n    Input()\n], AreaComponent.prototype, \"fill\", void 0);\n__decorate([\n    Input()\n], AreaComponent.prototype, \"opacity\", void 0);\n__decorate([\n    Input()\n], AreaComponent.prototype, \"startOpacity\", void 0);\n__decorate([\n    Input()\n], AreaComponent.prototype, \"endOpacity\", void 0);\n__decorate([\n    Input()\n], AreaComponent.prototype, \"activeLabel\", void 0);\n__decorate([\n    Input()\n], AreaComponent.prototype, \"gradient\", void 0);\n__decorate([\n    Input()\n], AreaComponent.prototype, \"stops\", void 0);\n__decorate([\n    Input()\n], AreaComponent.prototype, \"animations\", void 0);\n__decorate([\n    Output()\n], AreaComponent.prototype, \"select\", void 0);\n\n// Robert Penner's easeOutExpo\nfunction easeOutExpo(t, b, c, d) {\n    return (c * (-Math.pow(2, (-10 * t) / d) + 1) * 1024) / 1023 + b;\n}\n/**\n * Counts from a number to the end incrementally.\n */\nfunction count(countFrom, countTo, countDecimals, countDuration, callback) {\n    const startVal = Number(countFrom);\n    const endVal = Number(countTo);\n    const countDown = startVal > endVal;\n    const decimals = Math.max(0, countDecimals);\n    const dec = Math.pow(10, decimals);\n    const duration = Number(countDuration) * 1000;\n    let startTime;\n    function runCount(timestamp) {\n        let frameVal;\n        const progress = timestamp - startTime;\n        if (countDown) {\n            frameVal = startVal - easeOutExpo(progress, 0, startVal - endVal, duration);\n        }\n        else {\n            frameVal = easeOutExpo(progress, startVal, endVal - startVal, duration);\n        }\n        if (countDown) {\n            frameVal = frameVal < endVal ? endVal : frameVal;\n        }\n        else {\n            frameVal = frameVal > endVal ? endVal : frameVal;\n        }\n        frameVal = Math.round(frameVal * dec) / dec;\n        const tick = progress < duration;\n        callback({\n            value: frameVal,\n            progress,\n            timestamp,\n            finished: !tick\n        });\n        if (tick) {\n            return requestAnimationFrame(val => runCount(val));\n        }\n    }\n    return requestAnimationFrame(timestamp => {\n        startTime = timestamp;\n        return runCount(timestamp);\n    });\n}\n/**\n * Determine decimals places\n *\n * @export\n */\nfunction decimalChecker(countTo) {\n    const endVal = Number(countTo);\n    if (endVal % 1 !== 0 && Math.abs(endVal) <= 10) {\n        return 2;\n    }\n    return 0;\n}\n\n/**\n * Count up component\n *\n * Loosely inspired by:\n *  - https://github.com/izupet/angular2-counto\n *  - https://inorganik.github.io/countUp.js/\n *\n * @export\n */\nlet CountUpDirective = class CountUpDirective {\n    constructor(cd, element) {\n        this.cd = cd;\n        this.countDuration = 1;\n        this.countPrefix = '';\n        this.countSuffix = '';\n        this.countChange = new EventEmitter();\n        this.countFinish = new EventEmitter();\n        this.value = '';\n        this._countDecimals = 0;\n        this._countTo = 0;\n        this._countFrom = 0;\n        this.nativeElement = element.nativeElement;\n    }\n    set countDecimals(val) {\n        this._countDecimals = val;\n    }\n    get countDecimals() {\n        if (this._countDecimals)\n            return this._countDecimals;\n        return decimalChecker(this.countTo);\n    }\n    set countTo(val) {\n        this._countTo = parseFloat(val);\n        this.start();\n    }\n    get countTo() {\n        return this._countTo;\n    }\n    set countFrom(val) {\n        this._countFrom = parseFloat(val);\n        this.start();\n    }\n    get countFrom() {\n        return this._countFrom;\n    }\n    ngOnDestroy() {\n        cancelAnimationFrame(this.animationReq);\n    }\n    start() {\n        cancelAnimationFrame(this.animationReq);\n        const valueFormatting = this.valueFormatting || (value => `${this.countPrefix}${value.toLocaleString()}${this.countSuffix}`);\n        const callback = ({ value, progress, finished }) => {\n            this.value = valueFormatting(value);\n            this.cd.markForCheck();\n            if (!finished)\n                this.countChange.emit({ value: this.value, progress });\n            if (finished)\n                this.countFinish.emit({ value: this.value, progress });\n        };\n        this.animationReq = count(this.countFrom, this.countTo, this.countDecimals, this.countDuration, callback);\n    }\n};\nCountUpDirective.ɵfac = function CountUpDirective_Factory(t) { return new (t || CountUpDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nCountUpDirective.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: CountUpDirective, selectors: [[\"\", \"ngx-charts-count-up\", \"\"]], inputs: { countDuration: \"countDuration\", countPrefix: \"countPrefix\", countSuffix: \"countSuffix\", countDecimals: \"countDecimals\", countTo: \"countTo\", countFrom: \"countFrom\", valueFormatting: \"valueFormatting\" }, outputs: { countChange: \"countChange\", countFinish: \"countFinish\" }, attrs: _c17, decls: 1, vars: 1, template: function CountUpDirective_Template(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵtext(0);\n    } if (rf & 2) {\n        ɵngcc0.ɵɵtextInterpolate1(\" \", ctx.value, \" \");\n    } }, encapsulation: 2 });\nCountUpDirective.ctorParameters = () => [\n    { type: ChangeDetectorRef },\n    { type: ElementRef }\n];\n__decorate([\n    Input()\n], CountUpDirective.prototype, \"countDuration\", void 0);\n__decorate([\n    Input()\n], CountUpDirective.prototype, \"countPrefix\", void 0);\n__decorate([\n    Input()\n], CountUpDirective.prototype, \"countSuffix\", void 0);\n__decorate([\n    Input()\n], CountUpDirective.prototype, \"valueFormatting\", void 0);\n__decorate([\n    Input()\n], CountUpDirective.prototype, \"countDecimals\", null);\n__decorate([\n    Input()\n], CountUpDirective.prototype, \"countTo\", null);\n__decorate([\n    Input()\n], CountUpDirective.prototype, \"countFrom\", null);\n__decorate([\n    Output()\n], CountUpDirective.prototype, \"countChange\", void 0);\n__decorate([\n    Output()\n], CountUpDirective.prototype, \"countFinish\", void 0);\n\n// If we don't check whether 'window' and 'global' variables are defined,\n// code will fail in browser/node with 'variable is undefined' error.\nlet root;\nif (typeof window !== 'undefined') {\n    root = window;\n}\nelse if (typeof global !== 'undefined') {\n    root = global;\n}\n// tslint:disable-next-line:variable-name\nconst MouseEvent = root.MouseEvent;\nfunction createMouseEvent(name, bubbles = false, cancelable = true) {\n    // Calling new of an event does not work correctly on IE. The following is a tested workaround\n    // See https://stackoverflow.com/questions/27176983/dispatchevent-not-working-in-ie11\n    if (typeof MouseEvent === 'function') {\n        // Sane browsers\n        return new MouseEvent(name, { bubbles, cancelable });\n    }\n    else {\n        // IE\n        const event = document.createEvent('MouseEvent');\n        event.initEvent(name, bubbles, cancelable);\n        return event;\n    }\n}\n\nlet TooltipArea = class TooltipArea {\n    constructor() {\n        this.anchorOpacity = 0;\n        this.anchorPos = -1;\n        this.anchorValues = [];\n        this.showPercentage = false;\n        this.tooltipDisabled = false;\n        this.hover = new EventEmitter();\n    }\n    getValues(xVal) {\n        const results = [];\n        for (const group of this.results) {\n            const item = group.series.find(d => d.name.toString() === xVal.toString());\n            let groupName = group.name;\n            if (groupName instanceof Date) {\n                groupName = groupName.toLocaleDateString();\n            }\n            if (item) {\n                const label = item.name;\n                let val = item.value;\n                if (this.showPercentage) {\n                    val = (item.d1 - item.d0).toFixed(2) + '%';\n                }\n                let color;\n                if (this.colors.scaleType === 'linear') {\n                    let v = val;\n                    if (item.d1) {\n                        v = item.d1;\n                    }\n                    color = this.colors.getColor(v);\n                }\n                else {\n                    color = this.colors.getColor(group.name);\n                }\n                const data = Object.assign({}, item, {\n                    value: val,\n                    name: label,\n                    series: groupName,\n                    min: item.min,\n                    max: item.max,\n                    color\n                });\n                results.push(data);\n            }\n        }\n        return results;\n    }\n    mouseMove(event) {\n        const xPos = event.pageX - event.target.getBoundingClientRect().left;\n        const closestIndex = this.findClosestPointIndex(xPos);\n        const closestPoint = this.xSet[closestIndex];\n        this.anchorPos = this.xScale(closestPoint);\n        this.anchorPos = Math.max(0, this.anchorPos);\n        this.anchorPos = Math.min(this.dims.width, this.anchorPos);\n        this.anchorValues = this.getValues(closestPoint);\n        if (this.anchorPos !== this.lastAnchorPos) {\n            const ev = createMouseEvent('mouseleave');\n            this.tooltipAnchor.nativeElement.dispatchEvent(ev);\n            this.anchorOpacity = 0.7;\n            this.hover.emit({\n                value: closestPoint\n            });\n            this.showTooltip();\n            this.lastAnchorPos = this.anchorPos;\n        }\n    }\n    findClosestPointIndex(xPos) {\n        let minIndex = 0;\n        let maxIndex = this.xSet.length - 1;\n        let minDiff = Number.MAX_VALUE;\n        let closestIndex = 0;\n        while (minIndex <= maxIndex) {\n            const currentIndex = ((minIndex + maxIndex) / 2) | 0;\n            const currentElement = this.xScale(this.xSet[currentIndex]);\n            const curDiff = Math.abs(currentElement - xPos);\n            if (curDiff < minDiff) {\n                minDiff = curDiff;\n                closestIndex = currentIndex;\n            }\n            if (currentElement < xPos) {\n                minIndex = currentIndex + 1;\n            }\n            else if (currentElement > xPos) {\n                maxIndex = currentIndex - 1;\n            }\n            else {\n                minDiff = 0;\n                closestIndex = currentIndex;\n                break;\n            }\n        }\n        return closestIndex;\n    }\n    showTooltip() {\n        const event = createMouseEvent('mouseenter');\n        this.tooltipAnchor.nativeElement.dispatchEvent(event);\n    }\n    hideTooltip() {\n        const event = createMouseEvent('mouseleave');\n        this.tooltipAnchor.nativeElement.dispatchEvent(event);\n        this.anchorOpacity = 0;\n        this.lastAnchorPos = -1;\n    }\n    getToolTipText(tooltipItem) {\n        let result = '';\n        if (tooltipItem.series !== undefined) {\n            result += tooltipItem.series;\n        }\n        else {\n            result += '???';\n        }\n        result += ': ';\n        if (tooltipItem.value !== undefined) {\n            result += tooltipItem.value.toLocaleString();\n        }\n        if (tooltipItem.min !== undefined || tooltipItem.max !== undefined) {\n            result += ' (';\n            if (tooltipItem.min !== undefined) {\n                if (tooltipItem.max === undefined) {\n                    result += '≥';\n                }\n                result += tooltipItem.min.toLocaleString();\n                if (tooltipItem.max !== undefined) {\n                    result += ' - ';\n                }\n            }\n            else if (tooltipItem.max !== undefined) {\n                result += '≤';\n            }\n            if (tooltipItem.max !== undefined) {\n                result += tooltipItem.max.toLocaleString();\n            }\n            result += ')';\n        }\n        return result;\n    }\n};\nTooltipArea.ɵfac = function TooltipArea_Factory(t) { return new (t || TooltipArea)(); };\nTooltipArea.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: TooltipArea, selectors: [[\"g\", \"ngx-charts-tooltip-area\", \"\"]], viewQuery: function TooltipArea_Query(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵviewQuery(_c18, true);\n    } if (rf & 2) {\n        var _t;\n        ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tooltipAnchor = _t.first);\n    } }, inputs: { showPercentage: \"showPercentage\", tooltipDisabled: \"tooltipDisabled\", dims: \"dims\", xSet: \"xSet\", xScale: \"xScale\", yScale: \"yScale\", results: \"results\", colors: \"colors\", tooltipTemplate: \"tooltipTemplate\" }, outputs: { hover: \"hover\" }, attrs: _c19, decls: 6, vars: 18, consts: [[\"y\", \"0\", 1, \"tooltip-area\", 2, \"opacity\", \"0\", \"cursor\", \"auto\", 3, \"mousemove\", \"mouseleave\"], [\"defaultTooltipTemplate\", \"\"], [\"y\", \"0\", \"ngx-tooltip\", \"\", 1, \"tooltip-anchor\", 3, \"tooltipDisabled\", \"tooltipPlacement\", \"tooltipType\", \"tooltipSpacing\", \"tooltipTemplate\", \"tooltipContext\", \"tooltipImmediateExit\"], [\"tooltipAnchor\", \"\"], [1, \"area-tooltip-container\"], [\"class\", \"tooltip-item\", 4, \"ngFor\", \"ngForOf\"], [1, \"tooltip-item\"], [1, \"tooltip-item-color\"]], template: function TooltipArea_Template(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵnamespaceSVG();\n        ɵngcc0.ɵɵelementStart(0, \"g\");\n        ɵngcc0.ɵɵelementStart(1, \"rect\", 0);\n        ɵngcc0.ɵɵlistener(\"mousemove\", function TooltipArea_Template__svg_rect_mousemove_1_listener($event) { return ctx.mouseMove($event); })(\"mouseleave\", function TooltipArea_Template__svg_rect_mouseleave_1_listener() { return ctx.hideTooltip(); });\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵtemplate(2, TooltipArea__svg_ng_template_2_Template, 2, 1, \"ng-template\", null, 1, ɵngcc0.ɵɵtemplateRefExtractor);\n        ɵngcc0.ɵɵelement(4, \"rect\", 2, 3);\n        ɵngcc0.ɵɵelementEnd();\n    } if (rf & 2) {\n        const _r0 = ɵngcc0.ɵɵreference(3);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵattribute(\"x\", 0)(\"width\", ctx.dims.width)(\"height\", ctx.dims.height);\n        ɵngcc0.ɵɵadvance(3);\n        ɵngcc0.ɵɵstyleProp(\"opacity\", ctx.anchorOpacity)(\"pointer-events\", \"none\");\n        ɵngcc0.ɵɵproperty(\"@animationState\", ctx.anchorOpacity !== 0 ? \"active\" : \"inactive\")(\"tooltipDisabled\", ctx.tooltipDisabled)(\"tooltipPlacement\", \"right\")(\"tooltipType\", \"tooltip\")(\"tooltipSpacing\", 15)(\"tooltipTemplate\", ctx.tooltipTemplate ? ctx.tooltipTemplate : _r0)(\"tooltipContext\", ctx.anchorValues)(\"tooltipImmediateExit\", true);\n        ɵngcc0.ɵɵattribute(\"x\", ctx.anchorPos)(\"width\", 1)(\"height\", ctx.dims.height);\n    } }, directives: [TooltipDirective, ɵngcc1.NgForOf], encapsulation: 2, data: { animation: [\n            trigger('animationState', [\n                transition('inactive => active', [\n                    style({\n                        opacity: 0\n                    }),\n                    animate(250, style({ opacity: 0.7 }))\n                ]),\n                transition('active => inactive', [\n                    style({\n                        opacity: 0.7\n                    }),\n                    animate(250, style({ opacity: 0 }))\n                ])\n            ])\n        ] }, changeDetection: 0 });\n__decorate([\n    Input()\n], TooltipArea.prototype, \"dims\", void 0);\n__decorate([\n    Input()\n], TooltipArea.prototype, \"xSet\", void 0);\n__decorate([\n    Input()\n], TooltipArea.prototype, \"xScale\", void 0);\n__decorate([\n    Input()\n], TooltipArea.prototype, \"yScale\", void 0);\n__decorate([\n    Input()\n], TooltipArea.prototype, \"results\", void 0);\n__decorate([\n    Input()\n], TooltipArea.prototype, \"colors\", void 0);\n__decorate([\n    Input()\n], TooltipArea.prototype, \"showPercentage\", void 0);\n__decorate([\n    Input()\n], TooltipArea.prototype, \"tooltipDisabled\", void 0);\n__decorate([\n    Input()\n], TooltipArea.prototype, \"tooltipTemplate\", void 0);\n__decorate([\n    Output()\n], TooltipArea.prototype, \"hover\", void 0);\n__decorate([\n    ViewChild('tooltipAnchor', { static: false })\n], TooltipArea.prototype, \"tooltipAnchor\", void 0);\n\nlet Timeline = class Timeline {\n    constructor(element, cd) {\n        this.cd = cd;\n        this.height = 50;\n        this.select = new EventEmitter();\n        this.onDomainChange = new EventEmitter();\n        this.initialized = false;\n        this.element = element.nativeElement;\n    }\n    ngOnChanges(changes) {\n        this.update();\n        if (!this.initialized) {\n            this.addBrush();\n            this.initialized = true;\n        }\n    }\n    update() {\n        this.dims = this.getDims();\n        this.height = this.dims.height;\n        const offsetY = this.view[1] - this.height;\n        this.xDomain = this.getXDomain();\n        this.xScale = this.getXScale();\n        if (this.brush) {\n            this.updateBrush();\n        }\n        this.transform = `translate(0 , ${offsetY})`;\n        this.filterId = 'filter' + id().toString();\n        this.filter = `url(#${this.filterId})`;\n        this.cd.markForCheck();\n    }\n    getXDomain() {\n        let values = [];\n        for (const results of this.results) {\n            for (const d of results.series) {\n                if (!values.includes(d.name)) {\n                    values.push(d.name);\n                }\n            }\n        }\n        let domain = [];\n        if (this.scaleType === 'time') {\n            const min = Math.min(...values);\n            const max = Math.max(...values);\n            domain = [min, max];\n        }\n        else if (this.scaleType === 'linear') {\n            values = values.map(v => Number(v));\n            const min = Math.min(...values);\n            const max = Math.max(...values);\n            domain = [min, max];\n        }\n        else {\n            domain = values;\n        }\n        return domain;\n    }\n    getXScale() {\n        let scale;\n        if (this.scaleType === 'time') {\n            scale = scaleTime()\n                .range([0, this.dims.width])\n                .domain(this.xDomain);\n        }\n        else if (this.scaleType === 'linear') {\n            scale = scaleLinear()\n                .range([0, this.dims.width])\n                .domain(this.xDomain);\n        }\n        else if (this.scaleType === 'ordinal') {\n            scale = scalePoint()\n                .range([0, this.dims.width])\n                .padding(0.1)\n                .domain(this.xDomain);\n        }\n        return scale;\n    }\n    addBrush() {\n        if (this.brush)\n            return;\n        const height = this.height;\n        const width = this.view[0];\n        this.brush = brushX()\n            .extent([\n            [0, 0],\n            [width, height]\n        ])\n            .on('brush end', () => {\n            const selection = event.selection || this.xScale.range();\n            const newDomain = selection.map(this.xScale.invert);\n            this.onDomainChange.emit(newDomain);\n            this.cd.markForCheck();\n        });\n        select(this.element)\n            .select('.brush')\n            .call(this.brush);\n    }\n    updateBrush() {\n        if (!this.brush)\n            return;\n        const height = this.height;\n        const width = this.view[0];\n        this.brush.extent([\n            [0, 0],\n            [width, height]\n        ]);\n        select(this.element)\n            .select('.brush')\n            .call(this.brush);\n        // clear hardcoded properties so they can be defined by CSS\n        select(this.element)\n            .select('.selection')\n            .attr('fill', undefined)\n            .attr('stroke', undefined)\n            .attr('fill-opacity', undefined);\n        this.cd.markForCheck();\n    }\n    getDims() {\n        const width = this.view[0];\n        const dims = {\n            width,\n            height: this.height\n        };\n        return dims;\n    }\n};\nTimeline.ɵfac = function Timeline_Factory(t) { return new (t || Timeline)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef)); };\nTimeline.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: Timeline, selectors: [[\"g\", \"ngx-charts-timeline\", \"\"]], inputs: { height: \"height\", view: \"view\", state: \"state\", results: \"results\", scheme: \"scheme\", customColors: \"customColors\", legend: \"legend\", miniChart: \"miniChart\", autoScale: \"autoScale\", scaleType: \"scaleType\" }, outputs: { select: \"select\", onDomainChange: \"onDomainChange\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c20, ngContentSelectors: _c2, decls: 7, vars: 4, consts: [[1, \"timeline\"], [\"in\", \"SourceGraphic\", \"type\", \"matrix\", \"values\", \"0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\"], [1, \"embedded-chart\"], [\"x\", \"0\", \"y\", \"0\", 1, \"brush-background\"], [1, \"brush\"]], template: function Timeline_Template(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵprojectionDef();\n        ɵngcc0.ɵɵnamespaceSVG();\n        ɵngcc0.ɵɵelementStart(0, \"g\", 0);\n        ɵngcc0.ɵɵelementStart(1, \"filter\");\n        ɵngcc0.ɵɵelement(2, \"feColorMatrix\", 1);\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵelementStart(3, \"g\", 2);\n        ɵngcc0.ɵɵprojection(4);\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵelement(5, \"rect\", 3);\n        ɵngcc0.ɵɵelement(6, \"g\", 4);\n        ɵngcc0.ɵɵelementEnd();\n    } if (rf & 2) {\n        ɵngcc0.ɵɵattribute(\"transform\", ctx.transform);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵattribute(\"id\", ctx.filterId);\n        ɵngcc0.ɵɵadvance(4);\n        ɵngcc0.ɵɵattribute(\"width\", ctx.view[0])(\"height\", ctx.height);\n    } }, styles: [\".timeline .brush-background{fill:rgba(0,0,0,.05)}.timeline .brush .selection{fill:rgba(0,0,0,.1);stroke-width:1px;stroke:#888}.timeline .brush .handle{fill-opacity:0}.timeline .embedded-chart{opacity:.6}\"], encapsulation: 2, changeDetection: 0 });\nTimeline.ctorParameters = () => [\n    { type: ElementRef },\n    { type: ChangeDetectorRef }\n];\n__decorate([\n    Input()\n], Timeline.prototype, \"view\", void 0);\n__decorate([\n    Input()\n], Timeline.prototype, \"state\", void 0);\n__decorate([\n    Input()\n], Timeline.prototype, \"results\", void 0);\n__decorate([\n    Input()\n], Timeline.prototype, \"scheme\", void 0);\n__decorate([\n    Input()\n], Timeline.prototype, \"customColors\", void 0);\n__decorate([\n    Input()\n], Timeline.prototype, \"legend\", void 0);\n__decorate([\n    Input()\n], Timeline.prototype, \"miniChart\", void 0);\n__decorate([\n    Input()\n], Timeline.prototype, \"autoScale\", void 0);\n__decorate([\n    Input()\n], Timeline.prototype, \"scaleType\", void 0);\n__decorate([\n    Input()\n], Timeline.prototype, \"height\", void 0);\n__decorate([\n    Output()\n], Timeline.prototype, \"select\", void 0);\n__decorate([\n    Output()\n], Timeline.prototype, \"onDomainChange\", void 0);\n\nlet LegendComponent = class LegendComponent {\n    constructor(cd) {\n        this.cd = cd;\n        this.horizontal = false;\n        this.labelClick = new EventEmitter();\n        this.labelActivate = new EventEmitter();\n        this.labelDeactivate = new EventEmitter();\n        this.legendEntries = [];\n    }\n    ngOnChanges(changes) {\n        this.update();\n    }\n    update() {\n        this.cd.markForCheck();\n        this.legendEntries = this.getLegendEntries();\n    }\n    getLegendEntries() {\n        const items = [];\n        for (const label of this.data) {\n            const formattedLabel = formatLabel(label);\n            const idx = items.findIndex(i => {\n                return i.label === formattedLabel;\n            });\n            if (idx === -1) {\n                items.push({\n                    label,\n                    formattedLabel,\n                    color: this.colors.getColor(label)\n                });\n            }\n        }\n        return items;\n    }\n    isActive(entry) {\n        if (!this.activeEntries)\n            return false;\n        const item = this.activeEntries.find(d => {\n            return entry.label === d.name;\n        });\n        return item !== undefined;\n    }\n    activate(item) {\n        this.labelActivate.emit(item);\n    }\n    deactivate(item) {\n        this.labelDeactivate.emit(item);\n    }\n    trackBy(index, item) {\n        return item.label;\n    }\n};\nLegendComponent.ɵfac = function LegendComponent_Factory(t) { return new (t || LegendComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef)); };\nLegendComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: LegendComponent, selectors: [[\"ngx-charts-legend\"]], inputs: { horizontal: \"horizontal\", data: \"data\", title: \"title\", colors: \"colors\", height: \"height\", width: \"width\", activeEntries: \"activeEntries\" }, outputs: { labelClick: \"labelClick\", labelActivate: \"labelActivate\", labelDeactivate: \"labelDeactivate\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], decls: 5, vars: 9, consts: [[\"class\", \"legend-title\", 4, \"ngIf\"], [1, \"legend-wrap\"], [1, \"legend-labels\"], [\"class\", \"legend-label\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [1, \"legend-title\"], [1, \"legend-title-text\"], [1, \"legend-label\"], [3, \"label\", \"formattedLabel\", \"color\", \"isActive\", \"select\", \"activate\", \"deactivate\"]], template: function LegendComponent_Template(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵelementStart(0, \"div\");\n        ɵngcc0.ɵɵtemplate(1, LegendComponent_header_1_Template, 3, 1, \"header\", 0);\n        ɵngcc0.ɵɵelementStart(2, \"div\", 1);\n        ɵngcc0.ɵɵelementStart(3, \"ul\", 2);\n        ɵngcc0.ɵɵtemplate(4, LegendComponent_li_4_Template, 2, 4, \"li\", 3);\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵelementEnd();\n    } if (rf & 2) {\n        ɵngcc0.ɵɵstyleProp(\"width\", ctx.width, \"px\");\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngIf\", (ctx.title == null ? null : ctx.title.length) > 0);\n        ɵngcc0.ɵɵadvance(2);\n        ɵngcc0.ɵɵstyleProp(\"max-height\", ctx.height - 45, \"px\");\n        ɵngcc0.ɵɵclassProp(\"horizontal-legend\", ctx.horizontal);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.legendEntries)(\"ngForTrackBy\", ctx.trackBy);\n    } }, directives: function () { return [ɵngcc1.NgIf, ɵngcc1.NgForOf, LegendEntryComponent]; }, styles: [\".chart-legend{display:inline-block;padding:0;width:auto!important}.chart-legend .legend-title{white-space:nowrap;overflow:hidden;margin-left:10px;margin-bottom:5px;font-size:14px;font-weight:700}.chart-legend li,.chart-legend ul{padding:0;margin:0;list-style:none}.chart-legend .horizontal-legend li{display:inline-block}.chart-legend .legend-wrap{width:calc(100% - 10px)}.chart-legend .legend-labels{line-height:85%;list-style:none;text-align:left;float:left;width:100%;border-radius:3px;overflow-y:auto;overflow-x:hidden;white-space:nowrap;background:rgba(0,0,0,.05)}.chart-legend .legend-label{cursor:pointer;font-size:90%;margin:8px;color:#afb7c8}.chart-legend .legend-label:hover{color:#000;-webkit-transition:.2s;transition:.2s}.chart-legend .legend-label .active .legend-label-text{color:#000}.chart-legend .legend-label-color{display:inline-block;height:15px;width:15px;margin-right:5px;color:#5b646b;border-radius:3px}.chart-legend .legend-label-text{display:inline-block;vertical-align:top;line-height:15px;font-size:12px;width:calc(100% - 20px);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.chart-legend .legend-title-text{vertical-align:bottom;display:inline-block;line-height:16px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}\"], encapsulation: 2, changeDetection: 0 });\nLegendComponent.ctorParameters = () => [\n    { type: ChangeDetectorRef }\n];\n__decorate([\n    Input()\n], LegendComponent.prototype, \"data\", void 0);\n__decorate([\n    Input()\n], LegendComponent.prototype, \"title\", void 0);\n__decorate([\n    Input()\n], LegendComponent.prototype, \"colors\", void 0);\n__decorate([\n    Input()\n], LegendComponent.prototype, \"height\", void 0);\n__decorate([\n    Input()\n], LegendComponent.prototype, \"width\", void 0);\n__decorate([\n    Input()\n], LegendComponent.prototype, \"activeEntries\", void 0);\n__decorate([\n    Input()\n], LegendComponent.prototype, \"horizontal\", void 0);\n__decorate([\n    Output()\n], LegendComponent.prototype, \"labelClick\", void 0);\n__decorate([\n    Output()\n], LegendComponent.prototype, \"labelActivate\", void 0);\n__decorate([\n    Output()\n], LegendComponent.prototype, \"labelDeactivate\", void 0);\n\nlet LegendEntryComponent = class LegendEntryComponent {\n    constructor() {\n        this.isActive = false;\n        this.select = new EventEmitter();\n        this.activate = new EventEmitter();\n        this.deactivate = new EventEmitter();\n        this.toggle = new EventEmitter();\n    }\n    get trimmedLabel() {\n        return this.formattedLabel || '(empty)';\n    }\n    onMouseEnter() {\n        this.activate.emit({ name: this.label });\n    }\n    onMouseLeave() {\n        this.deactivate.emit({ name: this.label });\n    }\n};\nLegendEntryComponent.ɵfac = function LegendEntryComponent_Factory(t) { return new (t || LegendEntryComponent)(); };\nLegendEntryComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: LegendEntryComponent, selectors: [[\"ngx-charts-legend-entry\"]], hostBindings: function LegendEntryComponent_HostBindings(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵlistener(\"mouseenter\", function LegendEntryComponent_mouseenter_HostBindingHandler() { return ctx.onMouseEnter(); })(\"mouseleave\", function LegendEntryComponent_mouseleave_HostBindingHandler() { return ctx.onMouseLeave(); });\n    } }, inputs: { isActive: \"isActive\", color: \"color\", label: \"label\", formattedLabel: \"formattedLabel\" }, outputs: { select: \"select\", activate: \"activate\", deactivate: \"deactivate\", toggle: \"toggle\" }, decls: 4, vars: 6, consts: [[\"tabindex\", \"-1\", 3, \"title\", \"click\"], [1, \"legend-label-color\", 3, \"click\"], [1, \"legend-label-text\"]], template: function LegendEntryComponent_Template(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵelementStart(0, \"span\", 0);\n        ɵngcc0.ɵɵlistener(\"click\", function LegendEntryComponent_Template_span_click_0_listener() { return ctx.select.emit(ctx.formattedLabel); });\n        ɵngcc0.ɵɵelementStart(1, \"span\", 1);\n        ɵngcc0.ɵɵlistener(\"click\", function LegendEntryComponent_Template_span_click_1_listener() { return ctx.toggle.emit(ctx.formattedLabel); });\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵelementStart(2, \"span\", 2);\n        ɵngcc0.ɵɵtext(3);\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵelementEnd();\n    } if (rf & 2) {\n        ɵngcc0.ɵɵclassProp(\"active\", ctx.isActive);\n        ɵngcc0.ɵɵproperty(\"title\", ctx.formattedLabel);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵstyleProp(\"background-color\", ctx.color);\n        ɵngcc0.ɵɵadvance(2);\n        ɵngcc0.ɵɵtextInterpolate1(\" \", ctx.trimmedLabel, \" \");\n    } }, encapsulation: 2, changeDetection: 0 });\n__decorate([\n    Input()\n], LegendEntryComponent.prototype, \"color\", void 0);\n__decorate([\n    Input()\n], LegendEntryComponent.prototype, \"label\", void 0);\n__decorate([\n    Input()\n], LegendEntryComponent.prototype, \"formattedLabel\", void 0);\n__decorate([\n    Input()\n], LegendEntryComponent.prototype, \"isActive\", void 0);\n__decorate([\n    Output()\n], LegendEntryComponent.prototype, \"select\", void 0);\n__decorate([\n    Output()\n], LegendEntryComponent.prototype, \"activate\", void 0);\n__decorate([\n    Output()\n], LegendEntryComponent.prototype, \"deactivate\", void 0);\n__decorate([\n    Output()\n], LegendEntryComponent.prototype, \"toggle\", void 0);\n__decorate([\n    HostListener('mouseenter')\n], LegendEntryComponent.prototype, \"onMouseEnter\", null);\n__decorate([\n    HostListener('mouseleave')\n], LegendEntryComponent.prototype, \"onMouseLeave\", null);\n\nlet ScaleLegendComponent = class ScaleLegendComponent {\n    constructor(sanitizer) {\n        this.sanitizer = sanitizer;\n        this.horizontal = false;\n    }\n    ngOnChanges(changes) {\n        const gradientValues = this.gradientString(this.colors.range(), this.colors.domain());\n        const direction = this.horizontal ? 'right' : 'bottom';\n        this.gradient = this.sanitizer.bypassSecurityTrustStyle(`linear-gradient(to ${direction}, ${gradientValues})`);\n    }\n    /**\n     * Generates the string used in the gradient stylesheet properties\n     * @param colors array of colors\n     * @param splits array of splits on a scale of (0, 1)\n     */\n    gradientString(colors, splits) {\n        // add the 100%\n        splits.push(1);\n        const pairs = [];\n        colors.reverse().forEach((c, i) => {\n            pairs.push(`${c} ${Math.round(splits[i] * 100)}%`);\n        });\n        return pairs.join(', ');\n    }\n};\nScaleLegendComponent.ɵfac = function ScaleLegendComponent_Factory(t) { return new (t || ScaleLegendComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc2.DomSanitizer)); };\nScaleLegendComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: ScaleLegendComponent, selectors: [[\"ngx-charts-scale-legend\"]], inputs: { horizontal: \"horizontal\", valueRange: \"valueRange\", colors: \"colors\", height: \"height\", width: \"width\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], decls: 8, vars: 10, consts: [[1, \"scale-legend\"], [1, \"scale-legend-label\"], [1, \"scale-legend-wrap\"]], template: function ScaleLegendComponent_Template(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵelementStart(0, \"div\", 0);\n        ɵngcc0.ɵɵelementStart(1, \"div\", 1);\n        ɵngcc0.ɵɵelementStart(2, \"span\");\n        ɵngcc0.ɵɵtext(3);\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵelement(4, \"div\", 2);\n        ɵngcc0.ɵɵelementStart(5, \"div\", 1);\n        ɵngcc0.ɵɵelementStart(6, \"span\");\n        ɵngcc0.ɵɵtext(7);\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵelementEnd();\n    } if (rf & 2) {\n        ɵngcc0.ɵɵstyleProp(\"height\", ctx.horizontal ? undefined : ctx.height, \"px\")(\"width\", ctx.width, \"px\");\n        ɵngcc0.ɵɵclassProp(\"horizontal-legend\", ctx.horizontal);\n        ɵngcc0.ɵɵadvance(3);\n        ɵngcc0.ɵɵtextInterpolate(ctx.valueRange[1].toLocaleString());\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵstyleProp(\"background\", ctx.gradient);\n        ɵngcc0.ɵɵadvance(3);\n        ɵngcc0.ɵɵtextInterpolate(ctx.valueRange[0].toLocaleString());\n    } }, styles: [\".chart-legend{display:inline-block;padding:0;width:auto!important}.chart-legend .scale-legend{text-align:center;display:-webkit-box;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column}.chart-legend .scale-legend-wrap{display:inline-block;-webkit-box-flex:1;flex:1;width:30px;border-radius:5px;margin:0 auto}.chart-legend .scale-legend-label{font-size:12px}.chart-legend .horizontal-legend.scale-legend{-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-direction:row}.chart-legend .horizontal-legend .scale-legend-wrap{width:auto;height:30px;margin:0 16px}\"], encapsulation: 2, changeDetection: 0 });\nScaleLegendComponent.ctorParameters = () => [\n    { type: DomSanitizer }\n];\n__decorate([\n    Input()\n], ScaleLegendComponent.prototype, \"valueRange\", void 0);\n__decorate([\n    Input()\n], ScaleLegendComponent.prototype, \"colors\", void 0);\n__decorate([\n    Input()\n], ScaleLegendComponent.prototype, \"height\", void 0);\n__decorate([\n    Input()\n], ScaleLegendComponent.prototype, \"width\", void 0);\n__decorate([\n    Input()\n], ScaleLegendComponent.prototype, \"horizontal\", void 0);\n\nlet AdvancedLegendComponent = class AdvancedLegendComponent {\n    constructor() {\n        this.label = 'Total';\n        this.animations = true;\n        this.select = new EventEmitter();\n        this.activate = new EventEmitter();\n        this.deactivate = new EventEmitter();\n        this.legendItems = [];\n        this.labelFormatting = label => label;\n        this.percentageFormatting = percentage => percentage;\n        this.defaultValueFormatting = value => value.toLocaleString();\n    }\n    ngOnChanges(changes) {\n        this.update();\n    }\n    getTotal() {\n        return this.data.map(d => d.value).reduce((sum, d) => sum + d, 0);\n    }\n    update() {\n        this.total = this.getTotal();\n        this.roundedTotal = this.total;\n        this.legendItems = this.getLegendItems();\n    }\n    getLegendItems() {\n        return this.data.map(d => {\n            const label = formatLabel(d.name);\n            const value = d.value;\n            const color = this.colors.getColor(label);\n            const percentage = this.total > 0 ? (value / this.total) * 100 : 0;\n            const formattedLabel = typeof this.labelFormatting === 'function' ? this.labelFormatting(label) : label;\n            return {\n                _value: value,\n                data: d,\n                value,\n                color,\n                label: formattedLabel,\n                displayLabel: trimLabel(formattedLabel, 20),\n                origialLabel: d.name,\n                percentage: this.percentageFormatting ? this.percentageFormatting(percentage) : percentage.toLocaleString()\n            };\n        });\n    }\n    trackBy(item) {\n        return item.formattedLabel;\n    }\n};\nAdvancedLegendComponent.ɵfac = function AdvancedLegendComponent_Factory(t) { return new (t || AdvancedLegendComponent)(); };\nAdvancedLegendComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: AdvancedLegendComponent, selectors: [[\"ngx-charts-advanced-legend\"]], inputs: { label: \"label\", animations: \"animations\", labelFormatting: \"labelFormatting\", percentageFormatting: \"percentageFormatting\", width: \"width\", data: \"data\", colors: \"colors\", valueFormatting: \"valueFormatting\" }, outputs: { select: \"select\", activate: \"activate\", deactivate: \"deactivate\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], decls: 8, vars: 7, consts: [[1, \"advanced-pie-legend\"], [\"class\", \"total-value\", \"ngx-charts-count-up\", \"\", 3, \"countTo\", \"valueFormatting\", 4, \"ngIf\"], [\"class\", \"total-value\", 4, \"ngIf\"], [1, \"total-label\"], [1, \"legend-items-container\"], [1, \"legend-items\"], [\"tabindex\", \"-1\", \"class\", \"legend-item\", 3, \"mouseenter\", \"mouseleave\", \"click\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"ngx-charts-count-up\", \"\", 1, \"total-value\", 3, \"countTo\", \"valueFormatting\"], [1, \"total-value\"], [\"tabindex\", \"-1\", 1, \"legend-item\", 3, \"mouseenter\", \"mouseleave\", \"click\"], [1, \"item-color\"], [\"class\", \"item-value\", \"ngx-charts-count-up\", \"\", 3, \"countTo\", \"valueFormatting\", 4, \"ngIf\"], [\"class\", \"item-value\", 4, \"ngIf\"], [1, \"item-label\"], [\"class\", \"item-percent\", \"ngx-charts-count-up\", \"\", 3, \"countTo\", \"countSuffix\", 4, \"ngIf\"], [\"class\", \"item-percent\", 4, \"ngIf\"], [\"ngx-charts-count-up\", \"\", 1, \"item-value\", 3, \"countTo\", \"valueFormatting\"], [1, \"item-value\"], [\"ngx-charts-count-up\", \"\", 1, \"item-percent\", 3, \"countTo\", \"countSuffix\"], [1, \"item-percent\"]], template: function AdvancedLegendComponent_Template(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵelementStart(0, \"div\", 0);\n        ɵngcc0.ɵɵtemplate(1, AdvancedLegendComponent_div_1_Template, 1, 2, \"div\", 1);\n        ɵngcc0.ɵɵtemplate(2, AdvancedLegendComponent_div_2_Template, 2, 1, \"div\", 2);\n        ɵngcc0.ɵɵelementStart(3, \"div\", 3);\n        ɵngcc0.ɵɵtext(4);\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵelementStart(5, \"div\", 4);\n        ɵngcc0.ɵɵelementStart(6, \"div\", 5);\n        ɵngcc0.ɵɵtemplate(7, AdvancedLegendComponent_div_7_Template, 8, 7, \"div\", 6);\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵelementEnd();\n    } if (rf & 2) {\n        ɵngcc0.ɵɵstyleProp(\"width\", ctx.width, \"px\");\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.animations);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.animations);\n        ɵngcc0.ɵɵadvance(2);\n        ɵngcc0.ɵɵtextInterpolate1(\" \", ctx.label, \" \");\n        ɵngcc0.ɵɵadvance(3);\n        ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.legendItems)(\"ngForTrackBy\", ctx.trackBy);\n    } }, directives: [ɵngcc1.NgIf, ɵngcc1.NgForOf, CountUpDirective], styles: [\".advanced-pie-legend{float:left;position:relative;top:50%;-webkit-transform:translate(0,-50%);transform:translate(0,-50%)}.advanced-pie-legend .total-value{font-size:36px}.advanced-pie-legend .total-label{font-size:24px;margin-bottom:19px}.advanced-pie-legend .legend-items-container{width:100%}.advanced-pie-legend .legend-items-container .legend-items{white-space:nowrap;overflow:auto}.advanced-pie-legend .legend-items-container .legend-items .legend-item{margin-right:20px;display:inline-block;cursor:pointer}.advanced-pie-legend .legend-items-container .legend-items .legend-item:focus{outline:0}.advanced-pie-legend .legend-items-container .legend-items .legend-item:hover{color:#000;-webkit-transition:.2s;transition:.2s}.advanced-pie-legend .legend-items-container .legend-items .legend-item .item-value{font-size:24px;margin-top:-6px;margin-left:11px}.advanced-pie-legend .legend-items-container .legend-items .legend-item .item-label{font-size:14px;opacity:.7;margin-left:11px;margin-top:-6px}.advanced-pie-legend .legend-items-container .legend-items .legend-item .item-percent{font-size:24px;opacity:.7;margin-left:11px}.advanced-pie-legend .legend-items-container .legend-items .legend-item .item-color{border-left:4px solid;width:4px;height:42px;float:left;margin-right:7px}\"], encapsulation: 2, changeDetection: 0 });\n__decorate([\n    Input()\n], AdvancedLegendComponent.prototype, \"width\", void 0);\n__decorate([\n    Input()\n], AdvancedLegendComponent.prototype, \"data\", void 0);\n__decorate([\n    Input()\n], AdvancedLegendComponent.prototype, \"colors\", void 0);\n__decorate([\n    Input()\n], AdvancedLegendComponent.prototype, \"label\", void 0);\n__decorate([\n    Input()\n], AdvancedLegendComponent.prototype, \"animations\", void 0);\n__decorate([\n    Output()\n], AdvancedLegendComponent.prototype, \"select\", void 0);\n__decorate([\n    Output()\n], AdvancedLegendComponent.prototype, \"activate\", void 0);\n__decorate([\n    Output()\n], AdvancedLegendComponent.prototype, \"deactivate\", void 0);\n__decorate([\n    Input()\n], AdvancedLegendComponent.prototype, \"valueFormatting\", void 0);\n__decorate([\n    Input()\n], AdvancedLegendComponent.prototype, \"labelFormatting\", void 0);\n__decorate([\n    Input()\n], AdvancedLegendComponent.prototype, \"percentageFormatting\", void 0);\n\nconst COMPONENTS = [\n    AreaComponent,\n    BaseChartComponent,\n    CountUpDirective,\n    TooltipArea,\n    ChartComponent,\n    LegendComponent,\n    LegendEntryComponent,\n    ScaleLegendComponent,\n    CircleComponent,\n    CircleSeriesComponent,\n    GridPanelComponent,\n    GridPanelSeriesComponent,\n    SvgLinearGradientComponent,\n    SvgRadialGradientComponent,\n    Timeline,\n    AdvancedLegendComponent\n];\nlet ChartCommonModule = class ChartCommonModule {\n};\nChartCommonModule.ɵmod = ɵngcc0.ɵɵdefineNgModule({ type: ChartCommonModule });\nChartCommonModule.ɵinj = ɵngcc0.ɵɵdefineInjector({ factory: function ChartCommonModule_Factory(t) { return new (t || ChartCommonModule)(); }, imports: [[CommonModule, AxesModule, TooltipModule], CommonModule, AxesModule, TooltipModule] });\n\nfunction calculateViewDimensions({ width, height, margins, showXAxis = false, showYAxis = false, xAxisHeight = 0, yAxisWidth = 0, showXLabel = false, showYLabel = false, showLegend = false, legendType = 'ordinal', legendPosition = 'right', columns = 12 }) {\n    let xOffset = margins[3];\n    let chartWidth = width;\n    let chartHeight = height - margins[0] - margins[2];\n    if (showLegend && legendPosition === 'right') {\n        if (legendType === 'ordinal') {\n            columns -= 2;\n        }\n        else {\n            columns -= 1;\n        }\n    }\n    chartWidth = (chartWidth * columns) / 12;\n    chartWidth = chartWidth - margins[1] - margins[3];\n    if (showXAxis) {\n        chartHeight -= 5;\n        chartHeight -= xAxisHeight;\n        if (showXLabel) {\n            // text height + spacing between axis label and tick labels\n            const offset = 25 + 5;\n            chartHeight -= offset;\n        }\n    }\n    if (showYAxis) {\n        chartWidth -= 5;\n        chartWidth -= yAxisWidth;\n        xOffset += yAxisWidth;\n        xOffset += 10;\n        if (showYLabel) {\n            // text height + spacing between axis label and tick labels\n            const offset = 25 + 5;\n            chartWidth -= offset;\n            xOffset += offset;\n        }\n    }\n    chartWidth = Math.max(0, chartWidth);\n    chartHeight = Math.max(0, chartHeight);\n    return {\n        width: Math.floor(chartWidth),\n        height: Math.floor(chartHeight),\n        xOffset: Math.floor(xOffset)\n    };\n}\n\nlet colorSets = [\n    {\n        name: 'vivid',\n        selectable: true,\n        group: 'Ordinal',\n        domain: [\n            '#647c8a',\n            '#3f51b5',\n            '#2196f3',\n            '#00b862',\n            '#afdf0a',\n            '#a7b61a',\n            '#f3e562',\n            '#ff9800',\n            '#ff5722',\n            '#ff4514'\n        ]\n    },\n    {\n        name: 'natural',\n        selectable: true,\n        group: 'Ordinal',\n        domain: [\n            '#bf9d76',\n            '#e99450',\n            '#d89f59',\n            '#f2dfa7',\n            '#a5d7c6',\n            '#7794b1',\n            '#afafaf',\n            '#707160',\n            '#ba9383',\n            '#d9d5c3'\n        ]\n    },\n    {\n        name: 'cool',\n        selectable: true,\n        group: 'Ordinal',\n        domain: [\n            '#a8385d',\n            '#7aa3e5',\n            '#a27ea8',\n            '#aae3f5',\n            '#adcded',\n            '#a95963',\n            '#8796c0',\n            '#7ed3ed',\n            '#50abcc',\n            '#ad6886'\n        ]\n    },\n    {\n        name: 'fire',\n        selectable: true,\n        group: 'Ordinal',\n        domain: ['#ff3d00', '#bf360c', '#ff8f00', '#ff6f00', '#ff5722', '#e65100', '#ffca28', '#ffab00']\n    },\n    {\n        name: 'solar',\n        selectable: true,\n        group: 'Continuous',\n        domain: [\n            '#fff8e1',\n            '#ffecb3',\n            '#ffe082',\n            '#ffd54f',\n            '#ffca28',\n            '#ffc107',\n            '#ffb300',\n            '#ffa000',\n            '#ff8f00',\n            '#ff6f00'\n        ]\n    },\n    {\n        name: 'air',\n        selectable: true,\n        group: 'Continuous',\n        domain: [\n            '#e1f5fe',\n            '#b3e5fc',\n            '#81d4fa',\n            '#4fc3f7',\n            '#29b6f6',\n            '#03a9f4',\n            '#039be5',\n            '#0288d1',\n            '#0277bd',\n            '#01579b'\n        ]\n    },\n    {\n        name: 'aqua',\n        selectable: true,\n        group: 'Continuous',\n        domain: [\n            '#e0f7fa',\n            '#b2ebf2',\n            '#80deea',\n            '#4dd0e1',\n            '#26c6da',\n            '#00bcd4',\n            '#00acc1',\n            '#0097a7',\n            '#00838f',\n            '#006064'\n        ]\n    },\n    {\n        name: 'flame',\n        selectable: false,\n        group: 'Ordinal',\n        domain: [\n            '#A10A28',\n            '#D3342D',\n            '#EF6D49',\n            '#FAAD67',\n            '#FDDE90',\n            '#DBED91',\n            '#A9D770',\n            '#6CBA67',\n            '#2C9653',\n            '#146738'\n        ]\n    },\n    {\n        name: 'ocean',\n        selectable: false,\n        group: 'Ordinal',\n        domain: [\n            '#1D68FB',\n            '#33C0FC',\n            '#4AFFFE',\n            '#AFFFFF',\n            '#FFFC63',\n            '#FDBD2D',\n            '#FC8A25',\n            '#FA4F1E',\n            '#FA141B',\n            '#BA38D1'\n        ]\n    },\n    {\n        name: 'forest',\n        selectable: false,\n        group: 'Ordinal',\n        domain: [\n            '#55C22D',\n            '#C1F33D',\n            '#3CC099',\n            '#AFFFFF',\n            '#8CFC9D',\n            '#76CFFA',\n            '#BA60FB',\n            '#EE6490',\n            '#C42A1C',\n            '#FC9F32'\n        ]\n    },\n    {\n        name: 'horizon',\n        selectable: false,\n        group: 'Ordinal',\n        domain: [\n            '#2597FB',\n            '#65EBFD',\n            '#99FDD0',\n            '#FCEE4B',\n            '#FEFCFA',\n            '#FDD6E3',\n            '#FCB1A8',\n            '#EF6F7B',\n            '#CB96E8',\n            '#EFDEE0'\n        ]\n    },\n    {\n        name: 'neons',\n        selectable: false,\n        group: 'Ordinal',\n        domain: [\n            '#FF3333',\n            '#FF33FF',\n            '#CC33FF',\n            '#0000FF',\n            '#33CCFF',\n            '#33FFFF',\n            '#33FF66',\n            '#CCFF33',\n            '#FFCC00',\n            '#FF6600'\n        ]\n    },\n    {\n        name: 'picnic',\n        selectable: false,\n        group: 'Ordinal',\n        domain: [\n            '#FAC51D',\n            '#66BD6D',\n            '#FAA026',\n            '#29BB9C',\n            '#E96B56',\n            '#55ACD2',\n            '#B7332F',\n            '#2C83C9',\n            '#9166B8',\n            '#92E7E8'\n        ]\n    },\n    {\n        name: 'night',\n        selectable: false,\n        group: 'Ordinal',\n        domain: [\n            '#2B1B5A',\n            '#501356',\n            '#183356',\n            '#28203F',\n            '#391B3C',\n            '#1E2B3C',\n            '#120634',\n            '#2D0432',\n            '#051932',\n            '#453080',\n            '#75267D',\n            '#2C507D',\n            '#4B3880',\n            '#752F7D',\n            '#35547D'\n        ]\n    },\n    {\n        name: 'nightLights',\n        selectable: false,\n        group: 'Ordinal',\n        domain: [\n            '#4e31a5',\n            '#9c25a7',\n            '#3065ab',\n            '#57468b',\n            '#904497',\n            '#46648b',\n            '#32118d',\n            '#a00fb3',\n            '#1052a2',\n            '#6e51bd',\n            '#b63cc3',\n            '#6c97cb',\n            '#8671c1',\n            '#b455be',\n            '#7496c3'\n        ]\n    }\n];\n\nclass ColorHelper {\n    constructor(scheme, type, domain, customColors) {\n        if (typeof scheme === 'string') {\n            scheme = colorSets.find(cs => {\n                return cs.name === scheme;\n            });\n        }\n        this.colorDomain = scheme.domain;\n        this.scaleType = type;\n        this.domain = domain;\n        this.customColors = customColors;\n        this.scale = this.generateColorScheme(scheme, type, this.domain);\n    }\n    generateColorScheme(scheme, type, domain) {\n        if (typeof scheme === 'string') {\n            scheme = colorSets.find(cs => {\n                return cs.name === scheme;\n            });\n        }\n        let colorScale;\n        if (type === 'quantile') {\n            colorScale = scaleQuantile()\n                .range(scheme.domain)\n                .domain(domain);\n        }\n        else if (type === 'ordinal') {\n            colorScale = scaleOrdinal()\n                .range(scheme.domain)\n                .domain(domain);\n        }\n        else if (type === 'linear') {\n            // linear schemes must have at least 2 colors\n            const colorDomain = [...scheme.domain];\n            if (colorDomain.length === 1) {\n                colorDomain.push(colorDomain[0]);\n                this.colorDomain = colorDomain;\n            }\n            const points = range(0, 1, 1.0 / colorDomain.length);\n            colorScale = scaleLinear()\n                .domain(points)\n                .range(colorDomain);\n        }\n        return colorScale;\n    }\n    getColor(value) {\n        if (value === undefined || value === null) {\n            throw new Error('Value can not be null');\n        }\n        if (this.scaleType === 'linear') {\n            const valueScale = scaleLinear()\n                .domain(this.domain)\n                .range([0, 1]);\n            return this.scale(valueScale(value));\n        }\n        else {\n            if (typeof this.customColors === 'function') {\n                return this.customColors(value);\n            }\n            const formattedValue = value.toString();\n            let found; // todo type customColors\n            if (this.customColors && this.customColors.length > 0) {\n                found = this.customColors.find(mapping => {\n                    return mapping.name.toLowerCase() === formattedValue.toLowerCase();\n                });\n            }\n            if (found) {\n                return found.value;\n            }\n            else {\n                return this.scale(value);\n            }\n        }\n    }\n    getLinearGradientStops(value, start) {\n        if (start === undefined) {\n            start = this.domain[0];\n        }\n        const valueScale = scaleLinear()\n            .domain(this.domain)\n            .range([0, 1]);\n        const colorValueScale = scaleBand()\n            .domain(this.colorDomain)\n            .range([0, 1]);\n        const endColor = this.getColor(value);\n        // generate the stops\n        const startVal = valueScale(start);\n        const startColor = this.getColor(start);\n        const endVal = valueScale(value);\n        let i = 1;\n        let currentVal = startVal;\n        const stops = [];\n        stops.push({\n            color: startColor,\n            offset: startVal,\n            originalOffset: startVal,\n            opacity: 1\n        });\n        while (currentVal < endVal && i < this.colorDomain.length) {\n            const color = this.colorDomain[i];\n            const offset = colorValueScale(color);\n            if (offset <= startVal) {\n                i++;\n                continue;\n            }\n            if (offset.toFixed(4) >= (endVal - colorValueScale.bandwidth()).toFixed(4)) {\n                break;\n            }\n            stops.push({\n                color,\n                offset,\n                opacity: 1\n            });\n            currentVal = offset;\n            i++;\n        }\n        if (stops[stops.length - 1].offset < 100) {\n            stops.push({\n                color: endColor,\n                offset: endVal,\n                opacity: 1\n            });\n        }\n        if (endVal === startVal) {\n            stops[0].offset = 0;\n            stops[1].offset = 100;\n        }\n        else {\n            // normalize the offsets into percentages\n            if (stops[stops.length - 1].offset !== 100) {\n                for (const s of stops) {\n                    s.offset = ((s.offset - startVal) / (endVal - startVal)) * 100;\n                }\n            }\n        }\n        return stops;\n    }\n}\n\n/**\n * Based on the data, return an array with unique values.\n *\n * @export\n * @returns array\n */\nfunction getUniqueXDomainValues(results) {\n    const valueSet = new Set();\n    for (const result of results) {\n        for (const d of result.series) {\n            valueSet.add(d.name);\n        }\n    }\n    return Array.from(valueSet);\n}\n/**\n * Get the scaleType of enumerable of values.\n * @returns  'time', 'linear' or 'ordinal'\n */\nfunction getScaleType(values, checkDateType = true) {\n    if (checkDateType) {\n        const allDates = values.every(value => value instanceof Date);\n        if (allDates) {\n            return 'time';\n        }\n    }\n    const allNumbers = values.every(value => typeof value === 'number');\n    if (allNumbers) {\n        return 'linear';\n    }\n    return 'ordinal';\n}\n\nlet AreaChartComponent = class AreaChartComponent extends BaseChartComponent {\n    constructor() {\n        super(...arguments);\n        this.legendTitle = 'Legend';\n        this.legendPosition = 'right';\n        this.baseValue = 'auto';\n        this.showGridLines = true;\n        this.curve = curveLinear;\n        this.activeEntries = [];\n        this.trimXAxisTicks = true;\n        this.trimYAxisTicks = true;\n        this.rotateXAxisTicks = true;\n        this.maxXAxisTickLength = 16;\n        this.maxYAxisTickLength = 16;\n        this.roundDomains = false;\n        this.tooltipDisabled = false;\n        this.activate = new EventEmitter();\n        this.deactivate = new EventEmitter();\n        this.margin = [10, 20, 10, 20];\n        this.xAxisHeight = 0;\n        this.yAxisWidth = 0;\n        this.timelineHeight = 50;\n        this.timelinePadding = 10;\n    }\n    update() {\n        super.update();\n        this.dims = calculateViewDimensions({\n            width: this.width,\n            height: this.height,\n            margins: this.margin,\n            showXAxis: this.xAxis,\n            showYAxis: this.yAxis,\n            xAxisHeight: this.xAxisHeight,\n            yAxisWidth: this.yAxisWidth,\n            showXLabel: this.showXAxisLabel,\n            showYLabel: this.showYAxisLabel,\n            showLegend: this.legend,\n            legendType: this.schemeType,\n            legendPosition: this.legendPosition\n        });\n        if (this.timeline) {\n            this.dims.height -= this.timelineHeight + this.margin[2] + this.timelinePadding;\n        }\n        this.xDomain = this.getXDomain();\n        if (this.filteredDomain) {\n            this.xDomain = this.filteredDomain;\n        }\n        this.yDomain = this.getYDomain();\n        this.seriesDomain = this.getSeriesDomain();\n        this.xScale = this.getXScale(this.xDomain, this.dims.width);\n        this.yScale = this.getYScale(this.yDomain, this.dims.height);\n        this.updateTimeline();\n        this.setColors();\n        this.legendOptions = this.getLegendOptions();\n        this.transform = `translate(${this.dims.xOffset}, ${this.margin[0]})`;\n        this.clipPathId = 'clip' + id().toString();\n        this.clipPath = `url(#${this.clipPathId})`;\n    }\n    updateTimeline() {\n        if (this.timeline) {\n            this.timelineWidth = this.dims.width;\n            this.timelineXDomain = this.getXDomain();\n            this.timelineXScale = this.getXScale(this.timelineXDomain, this.timelineWidth);\n            this.timelineYScale = this.getYScale(this.yDomain, this.timelineHeight);\n            this.timelineTransform = `translate(${this.dims.xOffset}, ${-this.margin[2]})`;\n        }\n    }\n    getXDomain() {\n        let values = getUniqueXDomainValues(this.results);\n        this.scaleType = getScaleType(values);\n        let domain = [];\n        if (this.scaleType === 'linear') {\n            values = values.map(v => Number(v));\n        }\n        let min;\n        let max;\n        if (this.scaleType === 'time' || this.scaleType === 'linear') {\n            min = this.xScaleMin ? this.xScaleMin : Math.min(...values);\n            max = this.xScaleMax ? this.xScaleMax : Math.max(...values);\n        }\n        if (this.scaleType === 'time') {\n            domain = [new Date(min), new Date(max)];\n            this.xSet = [...values].sort((a, b) => {\n                const aDate = a.getTime();\n                const bDate = b.getTime();\n                if (aDate > bDate)\n                    return 1;\n                if (bDate > aDate)\n                    return -1;\n                return 0;\n            });\n        }\n        else if (this.scaleType === 'linear') {\n            domain = [min, max];\n            // Use compare function to sort numbers numerically\n            this.xSet = [...values].sort((a, b) => a - b);\n        }\n        else {\n            domain = values;\n            this.xSet = values;\n        }\n        return domain;\n    }\n    getYDomain() {\n        const domain = [];\n        for (const results of this.results) {\n            for (const d of results.series) {\n                if (!domain.includes(d.value)) {\n                    domain.push(d.value);\n                }\n            }\n        }\n        const values = [...domain];\n        if (!this.autoScale) {\n            values.push(0);\n        }\n        if (this.baseValue !== 'auto') {\n            values.push(this.baseValue);\n        }\n        const min = this.yScaleMin ? this.yScaleMin : Math.min(...values);\n        const max = this.yScaleMax ? this.yScaleMax : Math.max(...values);\n        return [min, max];\n    }\n    getSeriesDomain() {\n        return this.results.map(d => d.name);\n    }\n    getXScale(domain, width) {\n        let scale;\n        if (this.scaleType === 'time') {\n            scale = scaleTime();\n        }\n        else if (this.scaleType === 'linear') {\n            scale = scaleLinear();\n        }\n        else if (this.scaleType === 'ordinal') {\n            scale = scalePoint().padding(0.1);\n        }\n        scale.range([0, width]).domain(domain);\n        return this.roundDomains ? scale.nice() : scale;\n    }\n    getYScale(domain, height) {\n        const scale = scaleLinear()\n            .range([height, 0])\n            .domain(domain);\n        return this.roundDomains ? scale.nice() : scale;\n    }\n    getScaleType(values) {\n        let date = true;\n        let num = true;\n        for (const value of values) {\n            if (!this.isDate(value)) {\n                date = false;\n            }\n            if (typeof value !== 'number') {\n                num = false;\n            }\n        }\n        if (date) {\n            return 'time';\n        }\n        if (num) {\n            return 'linear';\n        }\n        return 'ordinal';\n    }\n    isDate(value) {\n        if (value instanceof Date) {\n            return true;\n        }\n        return false;\n    }\n    updateDomain(domain) {\n        this.filteredDomain = domain;\n        this.xDomain = this.filteredDomain;\n        this.xScale = this.getXScale(this.xDomain, this.dims.width);\n    }\n    updateHoveredVertical(item) {\n        this.hoveredVertical = item.value;\n        this.deactivateAll();\n    }\n    hideCircles() {\n        this.hoveredVertical = null;\n        this.deactivateAll();\n    }\n    onClick(data, series) {\n        if (series) {\n            data.series = series.name;\n        }\n        this.select.emit(data);\n    }\n    trackBy(index, item) {\n        return item.name;\n    }\n    setColors() {\n        let domain;\n        if (this.schemeType === 'ordinal') {\n            domain = this.seriesDomain;\n        }\n        else {\n            domain = this.yDomain;\n        }\n        this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n    }\n    getLegendOptions() {\n        const opts = {\n            scaleType: this.schemeType,\n            colors: undefined,\n            domain: [],\n            title: undefined,\n            position: this.legendPosition\n        };\n        if (opts.scaleType === 'ordinal') {\n            opts.domain = this.seriesDomain;\n            opts.colors = this.colors;\n            opts.title = this.legendTitle;\n        }\n        else {\n            opts.domain = this.yDomain;\n            opts.colors = this.colors.scale;\n        }\n        return opts;\n    }\n    updateYAxisWidth({ width }) {\n        this.yAxisWidth = width;\n        this.update();\n    }\n    updateXAxisHeight({ height }) {\n        this.xAxisHeight = height;\n        this.update();\n    }\n    onActivate(item) {\n        const idx = this.activeEntries.findIndex(d => {\n            return d.name === item.name && d.value === item.value;\n        });\n        if (idx > -1) {\n            return;\n        }\n        this.activeEntries = [item, ...this.activeEntries];\n        this.activate.emit({ value: item, entries: this.activeEntries });\n    }\n    onDeactivate(item) {\n        const idx = this.activeEntries.findIndex(d => {\n            return d.name === item.name && d.value === item.value;\n        });\n        this.activeEntries.splice(idx, 1);\n        this.activeEntries = [...this.activeEntries];\n        this.deactivate.emit({ value: item, entries: this.activeEntries });\n    }\n    deactivateAll() {\n        this.activeEntries = [...this.activeEntries];\n        for (const entry of this.activeEntries) {\n            this.deactivate.emit({ value: entry, entries: [] });\n        }\n        this.activeEntries = [];\n    }\n};\nAreaChartComponent.ɵfac = function AreaChartComponent_Factory(t) { return ɵAreaChartComponent_BaseFactory(t || AreaChartComponent); };\nAreaChartComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: AreaChartComponent, selectors: [[\"ngx-charts-area-chart\"]], contentQueries: function AreaChartComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n        ɵngcc0.ɵɵcontentQuery(dirIndex, _c21, true);\n        ɵngcc0.ɵɵcontentQuery(dirIndex, _c22, true);\n    } if (rf & 2) {\n        var _t;\n        ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tooltipTemplate = _t.first);\n        ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.seriesTooltipTemplate = _t.first);\n    } }, hostBindings: function AreaChartComponent_HostBindings(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵlistener(\"mouseleave\", function AreaChartComponent_mouseleave_HostBindingHandler() { return ctx.hideCircles(); });\n    } }, inputs: { legendTitle: \"legendTitle\", legendPosition: \"legendPosition\", baseValue: \"baseValue\", showGridLines: \"showGridLines\", curve: \"curve\", activeEntries: \"activeEntries\", trimXAxisTicks: \"trimXAxisTicks\", trimYAxisTicks: \"trimYAxisTicks\", rotateXAxisTicks: \"rotateXAxisTicks\", maxXAxisTickLength: \"maxXAxisTickLength\", maxYAxisTickLength: \"maxYAxisTickLength\", roundDomains: \"roundDomains\", tooltipDisabled: \"tooltipDisabled\", legend: \"legend\", state: \"state\", xAxis: \"xAxis\", yAxis: \"yAxis\", autoScale: \"autoScale\", showXAxisLabel: \"showXAxisLabel\", showYAxisLabel: \"showYAxisLabel\", xAxisLabel: \"xAxisLabel\", yAxisLabel: \"yAxisLabel\", timeline: \"timeline\", gradient: \"gradient\", schemeType: \"schemeType\", xAxisTickFormatting: \"xAxisTickFormatting\", yAxisTickFormatting: \"yAxisTickFormatting\", xAxisTicks: \"xAxisTicks\", yAxisTicks: \"yAxisTicks\", xScaleMin: \"xScaleMin\", xScaleMax: \"xScaleMax\", yScaleMin: \"yScaleMin\", yScaleMax: \"yScaleMax\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 11, vars: 20, consts: [[3, \"view\", \"showLegend\", \"legendOptions\", \"activeEntries\", \"animations\", \"legendLabelClick\", \"legendLabelActivate\", \"legendLabelDeactivate\"], [1, \"area-chart\", \"chart\"], [\"ngx-charts-x-axis\", \"\", 3, \"xScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\", 4, \"ngIf\"], [\"ngx-charts-y-axis\", \"\", 3, \"yScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\", 4, \"ngIf\"], [4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [3, \"mouseleave\", 4, \"ngIf\"], [\"ngx-charts-timeline\", \"\", 3, \"results\", \"view\", \"height\", \"scheme\", \"customColors\", \"legend\", \"scaleType\", \"onDomainChange\", 4, \"ngIf\"], [\"ngx-charts-x-axis\", \"\", 3, \"xScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\"], [\"ngx-charts-y-axis\", \"\", 3, \"yScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\"], [\"ngx-charts-area-series\", \"\", 3, \"xScale\", \"yScale\", \"baseValue\", \"colors\", \"data\", \"activeEntries\", \"scaleType\", \"gradient\", \"curve\", \"animations\"], [3, \"mouseleave\"], [\"ngx-charts-tooltip-area\", \"\", 3, \"dims\", \"xSet\", \"xScale\", \"yScale\", \"results\", \"colors\", \"tooltipDisabled\", \"tooltipTemplate\", \"hover\"], [4, \"ngFor\", \"ngForOf\"], [\"ngx-charts-circle-series\", \"\", 3, \"xScale\", \"yScale\", \"colors\", \"activeEntries\", \"data\", \"scaleType\", \"visibleValue\", \"tooltipDisabled\", \"tooltipTemplate\", \"select\", \"activate\", \"deactivate\"], [\"ngx-charts-timeline\", \"\", 3, \"results\", \"view\", \"height\", \"scheme\", \"customColors\", \"legend\", \"scaleType\", \"onDomainChange\"], [\"ngx-charts-area-series\", \"\", 3, \"xScale\", \"yScale\", \"baseValue\", \"colors\", \"data\", \"scaleType\", \"gradient\", \"curve\", \"animations\"]], template: function AreaChartComponent_Template(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵelementStart(0, \"ngx-charts-chart\", 0);\n        ɵngcc0.ɵɵlistener(\"legendLabelClick\", function AreaChartComponent_Template_ngx_charts_chart_legendLabelClick_0_listener($event) { return ctx.onClick($event); })(\"legendLabelActivate\", function AreaChartComponent_Template_ngx_charts_chart_legendLabelActivate_0_listener($event) { return ctx.onActivate($event); })(\"legendLabelDeactivate\", function AreaChartComponent_Template_ngx_charts_chart_legendLabelDeactivate_0_listener($event) { return ctx.onDeactivate($event); });\n        ɵngcc0.ɵɵnamespaceSVG();\n        ɵngcc0.ɵɵelementStart(1, \"defs\");\n        ɵngcc0.ɵɵelementStart(2, \"clipPath\");\n        ɵngcc0.ɵɵelement(3, \"rect\");\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵelementStart(4, \"g\", 1);\n        ɵngcc0.ɵɵtemplate(5, AreaChartComponent__svg_g_5_Template, 1, 10, \"g\", 2);\n        ɵngcc0.ɵɵtemplate(6, AreaChartComponent__svg_g_6_Template, 1, 9, \"g\", 3);\n        ɵngcc0.ɵɵelementStart(7, \"g\");\n        ɵngcc0.ɵɵtemplate(8, AreaChartComponent__svg_g_8_Template, 2, 10, \"g\", 4);\n        ɵngcc0.ɵɵtemplate(9, AreaChartComponent__svg_g_9_Template, 3, 9, \"g\", 5);\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵtemplate(10, AreaChartComponent__svg_g_10_Template, 2, 13, \"g\", 6);\n        ɵngcc0.ɵɵelementEnd();\n    } if (rf & 2) {\n        ɵngcc0.ɵɵproperty(\"view\", ɵngcc0.ɵɵpureFunction2(17, _c23, ctx.width, ctx.height))(\"showLegend\", ctx.legend)(\"legendOptions\", ctx.legendOptions)(\"activeEntries\", ctx.activeEntries)(\"animations\", ctx.animations);\n        ɵngcc0.ɵɵadvance(2);\n        ɵngcc0.ɵɵattribute(\"id\", ctx.clipPathId);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵattribute(\"width\", ctx.dims.width + 10)(\"height\", ctx.dims.height + 10)(\"transform\", \"translate(-5, -5)\");\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵattribute(\"transform\", ctx.transform);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.xAxis);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.yAxis);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵattribute(\"clip-path\", ctx.clipPath);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.results)(\"ngForTrackBy\", ctx.trackBy);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.tooltipDisabled);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.timeline && ctx.scaleType != \"ordinal\");\n    } }, directives: function () { return [ChartComponent, ɵngcc1.NgIf, ɵngcc1.NgForOf, XAxisComponent, YAxisComponent, AreaSeriesComponent, TooltipArea, CircleSeriesComponent, Timeline]; }, styles: [_c24], encapsulation: 2, changeDetection: 0 });\n__decorate([\n    Input()\n], AreaChartComponent.prototype, \"legend\", void 0);\n__decorate([\n    Input()\n], AreaChartComponent.prototype, \"legendTitle\", void 0);\n__decorate([\n    Input()\n], AreaChartComponent.prototype, \"legendPosition\", void 0);\n__decorate([\n    Input()\n], AreaChartComponent.prototype, \"state\", void 0);\n__decorate([\n    Input()\n], AreaChartComponent.prototype, \"xAxis\", void 0);\n__decorate([\n    Input()\n], AreaChartComponent.prototype, \"yAxis\", void 0);\n__decorate([\n    Input()\n], AreaChartComponent.prototype, \"baseValue\", void 0);\n__decorate([\n    Input()\n], AreaChartComponent.prototype, \"autoScale\", void 0);\n__decorate([\n    Input()\n], AreaChartComponent.prototype, \"showXAxisLabel\", void 0);\n__decorate([\n    Input()\n], AreaChartComponent.prototype, \"showYAxisLabel\", void 0);\n__decorate([\n    Input()\n], AreaChartComponent.prototype, \"xAxisLabel\", void 0);\n__decorate([\n    Input()\n], AreaChartComponent.prototype, \"yAxisLabel\", void 0);\n__decorate([\n    Input()\n], AreaChartComponent.prototype, \"timeline\", void 0);\n__decorate([\n    Input()\n], AreaChartComponent.prototype, \"gradient\", void 0);\n__decorate([\n    Input()\n], AreaChartComponent.prototype, \"showGridLines\", void 0);\n__decorate([\n    Input()\n], AreaChartComponent.prototype, \"curve\", void 0);\n__decorate([\n    Input()\n], AreaChartComponent.prototype, \"activeEntries\", void 0);\n__decorate([\n    Input()\n], AreaChartComponent.prototype, \"schemeType\", void 0);\n__decorate([\n    Input()\n], AreaChartComponent.prototype, \"trimXAxisTicks\", void 0);\n__decorate([\n    Input()\n], AreaChartComponent.prototype, \"trimYAxisTicks\", void 0);\n__decorate([\n    Input()\n], AreaChartComponent.prototype, \"rotateXAxisTicks\", void 0);\n__decorate([\n    Input()\n], AreaChartComponent.prototype, \"maxXAxisTickLength\", void 0);\n__decorate([\n    Input()\n], AreaChartComponent.prototype, \"maxYAxisTickLength\", void 0);\n__decorate([\n    Input()\n], AreaChartComponent.prototype, \"xAxisTickFormatting\", void 0);\n__decorate([\n    Input()\n], AreaChartComponent.prototype, \"yAxisTickFormatting\", void 0);\n__decorate([\n    Input()\n], AreaChartComponent.prototype, \"xAxisTicks\", void 0);\n__decorate([\n    Input()\n], AreaChartComponent.prototype, \"yAxisTicks\", void 0);\n__decorate([\n    Input()\n], AreaChartComponent.prototype, \"roundDomains\", void 0);\n__decorate([\n    Input()\n], AreaChartComponent.prototype, \"tooltipDisabled\", void 0);\n__decorate([\n    Input()\n], AreaChartComponent.prototype, \"xScaleMin\", void 0);\n__decorate([\n    Input()\n], AreaChartComponent.prototype, \"xScaleMax\", void 0);\n__decorate([\n    Input()\n], AreaChartComponent.prototype, \"yScaleMin\", void 0);\n__decorate([\n    Input()\n], AreaChartComponent.prototype, \"yScaleMax\", void 0);\n__decorate([\n    Output()\n], AreaChartComponent.prototype, \"activate\", void 0);\n__decorate([\n    Output()\n], AreaChartComponent.prototype, \"deactivate\", void 0);\n__decorate([\n    ContentChild('tooltipTemplate')\n], AreaChartComponent.prototype, \"tooltipTemplate\", void 0);\n__decorate([\n    ContentChild('seriesTooltipTemplate')\n], AreaChartComponent.prototype, \"seriesTooltipTemplate\", void 0);\n__decorate([\n    HostListener('mouseleave')\n], AreaChartComponent.prototype, \"hideCircles\", null);\n\nlet AreaChartNormalizedComponent = class AreaChartNormalizedComponent extends BaseChartComponent {\n    constructor() {\n        super(...arguments);\n        this.legend = false;\n        this.legendTitle = 'Legend';\n        this.legendPosition = 'right';\n        this.showGridLines = true;\n        this.curve = curveLinear;\n        this.activeEntries = [];\n        this.trimXAxisTicks = true;\n        this.trimYAxisTicks = true;\n        this.rotateXAxisTicks = true;\n        this.maxXAxisTickLength = 16;\n        this.maxYAxisTickLength = 16;\n        this.roundDomains = false;\n        this.tooltipDisabled = false;\n        this.activate = new EventEmitter();\n        this.deactivate = new EventEmitter();\n        this.margin = [10, 20, 10, 20];\n        this.xAxisHeight = 0;\n        this.yAxisWidth = 0;\n        this.timelineHeight = 50;\n        this.timelinePadding = 10;\n    }\n    update() {\n        super.update();\n        this.dims = calculateViewDimensions({\n            width: this.width,\n            height: this.height,\n            margins: this.margin,\n            showXAxis: this.xAxis,\n            showYAxis: this.yAxis,\n            xAxisHeight: this.xAxisHeight,\n            yAxisWidth: this.yAxisWidth,\n            showXLabel: this.showXAxisLabel,\n            showYLabel: this.showYAxisLabel,\n            showLegend: this.legend,\n            legendType: this.schemeType,\n            legendPosition: this.legendPosition\n        });\n        if (this.timeline) {\n            this.dims.height -= this.timelineHeight + this.margin[2] + this.timelinePadding;\n        }\n        this.xDomain = this.getXDomain();\n        if (this.filteredDomain) {\n            this.xDomain = this.filteredDomain;\n        }\n        this.yDomain = this.getYDomain();\n        this.seriesDomain = this.getSeriesDomain();\n        this.xScale = this.getXScale(this.xDomain, this.dims.width);\n        this.yScale = this.getYScale(this.yDomain, this.dims.height);\n        for (let i = 0; i < this.xSet.length; i++) {\n            const val = this.xSet[i];\n            let d0 = 0;\n            let total = 0;\n            for (const group of this.results) {\n                const d = group.series.find(item => {\n                    let a = item.name;\n                    let b = val;\n                    if (this.scaleType === 'time') {\n                        a = a.valueOf();\n                        b = b.valueOf();\n                    }\n                    return a === b;\n                });\n                if (d) {\n                    total += d.value;\n                }\n            }\n            for (const group of this.results) {\n                let d = group.series.find(item => {\n                    let a = item.name;\n                    let b = val;\n                    if (this.scaleType === 'time') {\n                        a = a.valueOf();\n                        b = b.valueOf();\n                    }\n                    return a === b;\n                });\n                if (d) {\n                    d.d0 = d0;\n                    d.d1 = d0 + d.value;\n                    d0 += d.value;\n                }\n                else {\n                    d = {\n                        name: val,\n                        value: 0,\n                        d0,\n                        d1: d0\n                    };\n                    group.series.push(d);\n                }\n                if (total > 0) {\n                    d.d0 = (d.d0 * 100) / total;\n                    d.d1 = (d.d1 * 100) / total;\n                }\n                else {\n                    d.d0 = 0;\n                    d.d1 = 0;\n                }\n            }\n        }\n        this.updateTimeline();\n        this.setColors();\n        this.legendOptions = this.getLegendOptions();\n        this.transform = `translate(${this.dims.xOffset} , ${this.margin[0]})`;\n        this.clipPathId = 'clip' + id().toString();\n        this.clipPath = `url(#${this.clipPathId})`;\n    }\n    updateTimeline() {\n        if (this.timeline) {\n            this.timelineWidth = this.dims.width;\n            this.timelineXDomain = this.getXDomain();\n            this.timelineXScale = this.getXScale(this.timelineXDomain, this.timelineWidth);\n            this.timelineYScale = this.getYScale(this.yDomain, this.timelineHeight);\n            this.timelineTransform = `translate(${this.dims.xOffset}, ${-this.margin[2]})`;\n        }\n    }\n    getXDomain() {\n        let values = getUniqueXDomainValues(this.results);\n        this.scaleType = getScaleType(values);\n        let domain = [];\n        if (this.scaleType === 'time') {\n            const min = Math.min(...values);\n            const max = Math.max(...values);\n            domain = [new Date(min), new Date(max)];\n            this.xSet = [...values].sort((a, b) => {\n                const aDate = a.getTime();\n                const bDate = b.getTime();\n                if (aDate > bDate)\n                    return 1;\n                if (bDate > aDate)\n                    return -1;\n                return 0;\n            });\n        }\n        else if (this.scaleType === 'linear') {\n            values = values.map(v => Number(v));\n            const min = Math.min(...values);\n            const max = Math.max(...values);\n            domain = [min, max];\n            // Use compare function to sort numbers numerically\n            this.xSet = [...values].sort((a, b) => a - b);\n        }\n        else {\n            domain = values;\n            this.xSet = values;\n        }\n        return domain;\n    }\n    getYDomain() {\n        return [0, 100];\n    }\n    getSeriesDomain() {\n        return this.results.map(d => d.name);\n    }\n    getXScale(domain, width) {\n        let scale;\n        if (this.scaleType === 'time') {\n            scale = scaleTime();\n        }\n        else if (this.scaleType === 'linear') {\n            scale = scaleLinear();\n        }\n        else if (this.scaleType === 'ordinal') {\n            scale = scalePoint().padding(0.1);\n        }\n        scale.range([0, width]).domain(domain);\n        return this.roundDomains ? scale.nice() : scale;\n    }\n    getYScale(domain, height) {\n        const scale = scaleLinear()\n            .range([height, 0])\n            .domain(domain);\n        return this.roundDomains ? scale.nice() : scale;\n    }\n    updateDomain(domain) {\n        this.filteredDomain = domain;\n        this.xDomain = this.filteredDomain;\n        this.xScale = this.getXScale(this.xDomain, this.dims.width);\n    }\n    updateHoveredVertical(item) {\n        this.hoveredVertical = item.value;\n        this.deactivateAll();\n    }\n    hideCircles() {\n        this.hoveredVertical = null;\n        this.deactivateAll();\n    }\n    onClick(data, series) {\n        if (series) {\n            data.series = series.name;\n        }\n        this.select.emit(data);\n    }\n    trackBy(index, item) {\n        return item.name;\n    }\n    setColors() {\n        let domain;\n        if (this.schemeType === 'ordinal') {\n            domain = this.seriesDomain;\n        }\n        else {\n            domain = this.yDomain;\n        }\n        this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n    }\n    getLegendOptions() {\n        const opts = {\n            scaleType: this.schemeType,\n            colors: undefined,\n            domain: [],\n            title: undefined,\n            position: this.legendPosition\n        };\n        if (opts.scaleType === 'ordinal') {\n            opts.domain = this.seriesDomain;\n            opts.colors = this.colors;\n            opts.title = this.legendTitle;\n        }\n        else {\n            opts.domain = this.yDomain;\n            opts.colors = this.colors.scale;\n        }\n        return opts;\n    }\n    updateYAxisWidth({ width }) {\n        this.yAxisWidth = width;\n        this.update();\n    }\n    updateXAxisHeight({ height }) {\n        this.xAxisHeight = height;\n        this.update();\n    }\n    onActivate(item) {\n        const idx = this.activeEntries.findIndex(d => {\n            return d.name === item.name && d.value === item.value;\n        });\n        if (idx > -1) {\n            return;\n        }\n        this.activeEntries = [item, ...this.activeEntries];\n        this.activate.emit({ value: item, entries: this.activeEntries });\n    }\n    onDeactivate(item) {\n        const idx = this.activeEntries.findIndex(d => {\n            return d.name === item.name && d.value === item.value;\n        });\n        this.activeEntries.splice(idx, 1);\n        this.activeEntries = [...this.activeEntries];\n        this.deactivate.emit({ value: item, entries: this.activeEntries });\n    }\n    deactivateAll() {\n        this.activeEntries = [...this.activeEntries];\n        for (const entry of this.activeEntries) {\n            this.deactivate.emit({ value: entry, entries: [] });\n        }\n        this.activeEntries = [];\n    }\n};\nAreaChartNormalizedComponent.ɵfac = function AreaChartNormalizedComponent_Factory(t) { return ɵAreaChartNormalizedComponent_BaseFactory(t || AreaChartNormalizedComponent); };\nAreaChartNormalizedComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: AreaChartNormalizedComponent, selectors: [[\"ngx-charts-area-chart-normalized\"]], contentQueries: function AreaChartNormalizedComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n        ɵngcc0.ɵɵcontentQuery(dirIndex, _c21, true);\n        ɵngcc0.ɵɵcontentQuery(dirIndex, _c22, true);\n    } if (rf & 2) {\n        var _t;\n        ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tooltipTemplate = _t.first);\n        ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.seriesTooltipTemplate = _t.first);\n    } }, hostBindings: function AreaChartNormalizedComponent_HostBindings(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵlistener(\"mouseleave\", function AreaChartNormalizedComponent_mouseleave_HostBindingHandler() { return ctx.hideCircles(); });\n    } }, inputs: { legend: \"legend\", legendTitle: \"legendTitle\", legendPosition: \"legendPosition\", showGridLines: \"showGridLines\", curve: \"curve\", activeEntries: \"activeEntries\", trimXAxisTicks: \"trimXAxisTicks\", trimYAxisTicks: \"trimYAxisTicks\", rotateXAxisTicks: \"rotateXAxisTicks\", maxXAxisTickLength: \"maxXAxisTickLength\", maxYAxisTickLength: \"maxYAxisTickLength\", roundDomains: \"roundDomains\", tooltipDisabled: \"tooltipDisabled\", xAxis: \"xAxis\", yAxis: \"yAxis\", showXAxisLabel: \"showXAxisLabel\", showYAxisLabel: \"showYAxisLabel\", xAxisLabel: \"xAxisLabel\", yAxisLabel: \"yAxisLabel\", timeline: \"timeline\", gradient: \"gradient\", schemeType: \"schemeType\", xAxisTickFormatting: \"xAxisTickFormatting\", yAxisTickFormatting: \"yAxisTickFormatting\", xAxisTicks: \"xAxisTicks\", yAxisTicks: \"yAxisTicks\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 11, vars: 20, consts: [[3, \"view\", \"showLegend\", \"legendOptions\", \"activeEntries\", \"animations\", \"legendLabelClick\", \"legendLabelActivate\", \"legendLabelDeactivate\"], [1, \"area-chart\", \"chart\"], [\"ngx-charts-x-axis\", \"\", 3, \"xScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\", 4, \"ngIf\"], [\"ngx-charts-y-axis\", \"\", 3, \"yScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\", 4, \"ngIf\"], [4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [3, \"mouseleave\", 4, \"ngIf\"], [\"ngx-charts-timeline\", \"\", 3, \"results\", \"view\", \"height\", \"scheme\", \"customColors\", \"legend\", \"scaleType\", \"onDomainChange\", 4, \"ngIf\"], [\"ngx-charts-x-axis\", \"\", 3, \"xScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\"], [\"ngx-charts-y-axis\", \"\", 3, \"yScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\"], [\"ngx-charts-area-series\", \"\", \"normalized\", \"true\", 3, \"xScale\", \"yScale\", \"colors\", \"data\", \"scaleType\", \"activeEntries\", \"gradient\", \"curve\", \"animations\"], [3, \"mouseleave\"], [\"ngx-charts-tooltip-area\", \"\", 3, \"dims\", \"xSet\", \"xScale\", \"yScale\", \"results\", \"colors\", \"showPercentage\", \"tooltipDisabled\", \"tooltipTemplate\", \"hover\"], [4, \"ngFor\", \"ngForOf\"], [\"ngx-charts-circle-series\", \"\", \"type\", \"stacked\", 3, \"xScale\", \"yScale\", \"colors\", \"activeEntries\", \"data\", \"scaleType\", \"visibleValue\", \"tooltipDisabled\", \"tooltipTemplate\", \"select\", \"activate\", \"deactivate\"], [\"ngx-charts-timeline\", \"\", 3, \"results\", \"view\", \"height\", \"scheme\", \"customColors\", \"legend\", \"scaleType\", \"onDomainChange\"], [\"ngx-charts-area-series\", \"\", \"normalized\", \"true\", 3, \"xScale\", \"yScale\", \"colors\", \"data\", \"scaleType\", \"gradient\", \"curve\", \"animations\"]], template: function AreaChartNormalizedComponent_Template(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵelementStart(0, \"ngx-charts-chart\", 0);\n        ɵngcc0.ɵɵlistener(\"legendLabelClick\", function AreaChartNormalizedComponent_Template_ngx_charts_chart_legendLabelClick_0_listener($event) { return ctx.onClick($event); })(\"legendLabelActivate\", function AreaChartNormalizedComponent_Template_ngx_charts_chart_legendLabelActivate_0_listener($event) { return ctx.onActivate($event); })(\"legendLabelDeactivate\", function AreaChartNormalizedComponent_Template_ngx_charts_chart_legendLabelDeactivate_0_listener($event) { return ctx.onDeactivate($event); });\n        ɵngcc0.ɵɵnamespaceSVG();\n        ɵngcc0.ɵɵelementStart(1, \"defs\");\n        ɵngcc0.ɵɵelementStart(2, \"clipPath\");\n        ɵngcc0.ɵɵelement(3, \"rect\");\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵelementStart(4, \"g\", 1);\n        ɵngcc0.ɵɵtemplate(5, AreaChartNormalizedComponent__svg_g_5_Template, 1, 10, \"g\", 2);\n        ɵngcc0.ɵɵtemplate(6, AreaChartNormalizedComponent__svg_g_6_Template, 1, 9, \"g\", 3);\n        ɵngcc0.ɵɵelementStart(7, \"g\");\n        ɵngcc0.ɵɵtemplate(8, AreaChartNormalizedComponent__svg_g_8_Template, 2, 9, \"g\", 4);\n        ɵngcc0.ɵɵtemplate(9, AreaChartNormalizedComponent__svg_g_9_Template, 3, 10, \"g\", 5);\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵtemplate(10, AreaChartNormalizedComponent__svg_g_10_Template, 2, 13, \"g\", 6);\n        ɵngcc0.ɵɵelementEnd();\n    } if (rf & 2) {\n        ɵngcc0.ɵɵproperty(\"view\", ɵngcc0.ɵɵpureFunction2(17, _c23, ctx.width, ctx.height))(\"showLegend\", ctx.legend)(\"legendOptions\", ctx.legendOptions)(\"activeEntries\", ctx.activeEntries)(\"animations\", ctx.animations);\n        ɵngcc0.ɵɵadvance(2);\n        ɵngcc0.ɵɵattribute(\"id\", ctx.clipPathId);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵattribute(\"width\", ctx.dims.width + 10)(\"height\", ctx.dims.height + 10)(\"transform\", \"translate(-5, -5)\");\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵattribute(\"transform\", ctx.transform);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.xAxis);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.yAxis);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵattribute(\"clip-path\", ctx.clipPath);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.results)(\"ngForTrackBy\", ctx.trackBy);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.tooltipDisabled);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.timeline && ctx.scaleType != \"ordinal\");\n    } }, directives: function () { return [ChartComponent, ɵngcc1.NgIf, ɵngcc1.NgForOf, XAxisComponent, YAxisComponent, AreaSeriesComponent, TooltipArea, CircleSeriesComponent, Timeline]; }, styles: [_c24], encapsulation: 2, changeDetection: 0 });\n__decorate([\n    Input()\n], AreaChartNormalizedComponent.prototype, \"legend\", void 0);\n__decorate([\n    Input()\n], AreaChartNormalizedComponent.prototype, \"legendTitle\", void 0);\n__decorate([\n    Input()\n], AreaChartNormalizedComponent.prototype, \"legendPosition\", void 0);\n__decorate([\n    Input()\n], AreaChartNormalizedComponent.prototype, \"xAxis\", void 0);\n__decorate([\n    Input()\n], AreaChartNormalizedComponent.prototype, \"yAxis\", void 0);\n__decorate([\n    Input()\n], AreaChartNormalizedComponent.prototype, \"showXAxisLabel\", void 0);\n__decorate([\n    Input()\n], AreaChartNormalizedComponent.prototype, \"showYAxisLabel\", void 0);\n__decorate([\n    Input()\n], AreaChartNormalizedComponent.prototype, \"xAxisLabel\", void 0);\n__decorate([\n    Input()\n], AreaChartNormalizedComponent.prototype, \"yAxisLabel\", void 0);\n__decorate([\n    Input()\n], AreaChartNormalizedComponent.prototype, \"timeline\", void 0);\n__decorate([\n    Input()\n], AreaChartNormalizedComponent.prototype, \"gradient\", void 0);\n__decorate([\n    Input()\n], AreaChartNormalizedComponent.prototype, \"showGridLines\", void 0);\n__decorate([\n    Input()\n], AreaChartNormalizedComponent.prototype, \"curve\", void 0);\n__decorate([\n    Input()\n], AreaChartNormalizedComponent.prototype, \"activeEntries\", void 0);\n__decorate([\n    Input()\n], AreaChartNormalizedComponent.prototype, \"schemeType\", void 0);\n__decorate([\n    Input()\n], AreaChartNormalizedComponent.prototype, \"trimXAxisTicks\", void 0);\n__decorate([\n    Input()\n], AreaChartNormalizedComponent.prototype, \"trimYAxisTicks\", void 0);\n__decorate([\n    Input()\n], AreaChartNormalizedComponent.prototype, \"rotateXAxisTicks\", void 0);\n__decorate([\n    Input()\n], AreaChartNormalizedComponent.prototype, \"maxXAxisTickLength\", void 0);\n__decorate([\n    Input()\n], AreaChartNormalizedComponent.prototype, \"maxYAxisTickLength\", void 0);\n__decorate([\n    Input()\n], AreaChartNormalizedComponent.prototype, \"xAxisTickFormatting\", void 0);\n__decorate([\n    Input()\n], AreaChartNormalizedComponent.prototype, \"yAxisTickFormatting\", void 0);\n__decorate([\n    Input()\n], AreaChartNormalizedComponent.prototype, \"xAxisTicks\", void 0);\n__decorate([\n    Input()\n], AreaChartNormalizedComponent.prototype, \"yAxisTicks\", void 0);\n__decorate([\n    Input()\n], AreaChartNormalizedComponent.prototype, \"roundDomains\", void 0);\n__decorate([\n    Input()\n], AreaChartNormalizedComponent.prototype, \"tooltipDisabled\", void 0);\n__decorate([\n    Output()\n], AreaChartNormalizedComponent.prototype, \"activate\", void 0);\n__decorate([\n    Output()\n], AreaChartNormalizedComponent.prototype, \"deactivate\", void 0);\n__decorate([\n    ContentChild('tooltipTemplate')\n], AreaChartNormalizedComponent.prototype, \"tooltipTemplate\", void 0);\n__decorate([\n    ContentChild('seriesTooltipTemplate')\n], AreaChartNormalizedComponent.prototype, \"seriesTooltipTemplate\", void 0);\n__decorate([\n    HostListener('mouseleave')\n], AreaChartNormalizedComponent.prototype, \"hideCircles\", null);\n\nlet AreaChartStackedComponent = class AreaChartStackedComponent extends BaseChartComponent {\n    constructor() {\n        super(...arguments);\n        this.legend = false;\n        this.legendTitle = 'Legend';\n        this.legendPosition = 'right';\n        this.showGridLines = true;\n        this.curve = curveLinear;\n        this.activeEntries = [];\n        this.trimXAxisTicks = true;\n        this.trimYAxisTicks = true;\n        this.rotateXAxisTicks = true;\n        this.maxXAxisTickLength = 16;\n        this.maxYAxisTickLength = 16;\n        this.roundDomains = false;\n        this.tooltipDisabled = false;\n        this.activate = new EventEmitter();\n        this.deactivate = new EventEmitter();\n        this.margin = [10, 20, 10, 20];\n        this.xAxisHeight = 0;\n        this.yAxisWidth = 0;\n        this.timelineHeight = 50;\n        this.timelinePadding = 10;\n    }\n    update() {\n        super.update();\n        this.dims = calculateViewDimensions({\n            width: this.width,\n            height: this.height,\n            margins: this.margin,\n            showXAxis: this.xAxis,\n            showYAxis: this.yAxis,\n            xAxisHeight: this.xAxisHeight,\n            yAxisWidth: this.yAxisWidth,\n            showXLabel: this.showXAxisLabel,\n            showYLabel: this.showYAxisLabel,\n            showLegend: this.legend,\n            legendType: this.schemeType,\n            legendPosition: this.legendPosition\n        });\n        if (this.timeline) {\n            this.dims.height -= this.timelineHeight + this.margin[2] + this.timelinePadding;\n        }\n        this.xDomain = this.getXDomain();\n        if (this.filteredDomain) {\n            this.xDomain = this.filteredDomain;\n        }\n        this.yDomain = this.getYDomain();\n        this.seriesDomain = this.getSeriesDomain();\n        this.xScale = this.getXScale(this.xDomain, this.dims.width);\n        this.yScale = this.getYScale(this.yDomain, this.dims.height);\n        for (let i = 0; i < this.xSet.length; i++) {\n            const val = this.xSet[i];\n            let d0 = 0;\n            for (const group of this.results) {\n                let d = group.series.find(item => {\n                    let a = item.name;\n                    let b = val;\n                    if (this.scaleType === 'time') {\n                        a = a.valueOf();\n                        b = b.valueOf();\n                    }\n                    return a === b;\n                });\n                if (d) {\n                    d.d0 = d0;\n                    d.d1 = d0 + d.value;\n                    d0 += d.value;\n                }\n                else {\n                    d = {\n                        name: val,\n                        value: 0,\n                        d0,\n                        d1: d0\n                    };\n                    group.series.push(d);\n                }\n            }\n        }\n        this.updateTimeline();\n        this.setColors();\n        this.legendOptions = this.getLegendOptions();\n        this.transform = `translate(${this.dims.xOffset} , ${this.margin[0]})`;\n        this.clipPathId = 'clip' + id().toString();\n        this.clipPath = `url(#${this.clipPathId})`;\n    }\n    updateTimeline() {\n        if (this.timeline) {\n            this.timelineWidth = this.dims.width;\n            this.timelineXDomain = this.getXDomain();\n            this.timelineXScale = this.getXScale(this.timelineXDomain, this.timelineWidth);\n            this.timelineYScale = this.getYScale(this.yDomain, this.timelineHeight);\n            this.timelineTransform = `translate(${this.dims.xOffset}, ${-this.margin[2]})`;\n        }\n    }\n    getXDomain() {\n        let values = getUniqueXDomainValues(this.results);\n        this.scaleType = getScaleType(values);\n        let domain = [];\n        if (this.scaleType === 'linear') {\n            values = values.map(v => Number(v));\n        }\n        let min;\n        let max;\n        if (this.scaleType === 'time' || this.scaleType === 'linear') {\n            min = this.xScaleMin ? this.xScaleMin : Math.min(...values);\n            max = this.xScaleMax ? this.xScaleMax : Math.max(...values);\n        }\n        if (this.scaleType === 'time') {\n            domain = [new Date(min), new Date(max)];\n            this.xSet = [...values].sort((a, b) => {\n                const aDate = a.getTime();\n                const bDate = b.getTime();\n                if (aDate > bDate)\n                    return 1;\n                if (bDate > aDate)\n                    return -1;\n                return 0;\n            });\n        }\n        else if (this.scaleType === 'linear') {\n            domain = [min, max];\n            // Use compare function to sort numbers numerically\n            this.xSet = [...values].sort((a, b) => a - b);\n        }\n        else {\n            domain = values;\n            this.xSet = values;\n        }\n        return domain;\n    }\n    getYDomain() {\n        const domain = [];\n        for (let i = 0; i < this.xSet.length; i++) {\n            const val = this.xSet[i];\n            let sum = 0;\n            for (const group of this.results) {\n                const d = group.series.find(item => {\n                    let a = item.name;\n                    let b = val;\n                    if (this.scaleType === 'time') {\n                        a = a.valueOf();\n                        b = b.valueOf();\n                    }\n                    return a === b;\n                });\n                if (d) {\n                    sum += d.value;\n                }\n            }\n            domain.push(sum);\n        }\n        const min = this.yScaleMin ? this.yScaleMin : Math.min(0, ...domain);\n        const max = this.yScaleMax ? this.yScaleMax : Math.max(...domain);\n        return [min, max];\n    }\n    getSeriesDomain() {\n        return this.results.map(d => d.name);\n    }\n    getXScale(domain, width) {\n        let scale;\n        if (this.scaleType === 'time') {\n            scale = scaleTime();\n        }\n        else if (this.scaleType === 'linear') {\n            scale = scaleLinear();\n        }\n        else if (this.scaleType === 'ordinal') {\n            scale = scalePoint().padding(0.1);\n        }\n        scale.range([0, width]).domain(domain);\n        return this.roundDomains ? scale.nice() : scale;\n    }\n    getYScale(domain, height) {\n        const scale = scaleLinear()\n            .range([height, 0])\n            .domain(domain);\n        return this.roundDomains ? scale.nice() : scale;\n    }\n    updateDomain(domain) {\n        this.filteredDomain = domain;\n        this.xDomain = this.filteredDomain;\n        this.xScale = this.getXScale(this.xDomain, this.dims.width);\n    }\n    updateHoveredVertical(item) {\n        this.hoveredVertical = item.value;\n        this.deactivateAll();\n    }\n    hideCircles() {\n        this.hoveredVertical = null;\n        this.deactivateAll();\n    }\n    onClick(data, series) {\n        if (series) {\n            data.series = series.name;\n        }\n        this.select.emit(data);\n    }\n    trackBy(index, item) {\n        return item.name;\n    }\n    setColors() {\n        let domain;\n        if (this.schemeType === 'ordinal') {\n            domain = this.seriesDomain;\n        }\n        else {\n            domain = this.yDomain;\n        }\n        this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n    }\n    getLegendOptions() {\n        const opts = {\n            scaleType: this.schemeType,\n            colors: undefined,\n            domain: [],\n            title: undefined,\n            position: this.legendPosition\n        };\n        if (opts.scaleType === 'ordinal') {\n            opts.domain = this.seriesDomain;\n            opts.colors = this.colors;\n            opts.title = this.legendTitle;\n        }\n        else {\n            opts.domain = this.yDomain;\n            opts.colors = this.colors.scale;\n        }\n        return opts;\n    }\n    updateYAxisWidth({ width }) {\n        this.yAxisWidth = width;\n        this.update();\n    }\n    updateXAxisHeight({ height }) {\n        this.xAxisHeight = height;\n        this.update();\n    }\n    onActivate(item) {\n        const idx = this.activeEntries.findIndex(d => {\n            return d.name === item.name && d.value === item.value;\n        });\n        if (idx > -1) {\n            return;\n        }\n        this.activeEntries = [item, ...this.activeEntries];\n        this.activate.emit({ value: item, entries: this.activeEntries });\n    }\n    onDeactivate(item) {\n        const idx = this.activeEntries.findIndex(d => {\n            return d.name === item.name && d.value === item.value;\n        });\n        this.activeEntries.splice(idx, 1);\n        this.activeEntries = [...this.activeEntries];\n        this.deactivate.emit({ value: item, entries: this.activeEntries });\n    }\n    deactivateAll() {\n        this.activeEntries = [...this.activeEntries];\n        for (const entry of this.activeEntries) {\n            this.deactivate.emit({ value: entry, entries: [] });\n        }\n        this.activeEntries = [];\n    }\n};\nAreaChartStackedComponent.ɵfac = function AreaChartStackedComponent_Factory(t) { return ɵAreaChartStackedComponent_BaseFactory(t || AreaChartStackedComponent); };\nAreaChartStackedComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: AreaChartStackedComponent, selectors: [[\"ngx-charts-area-chart-stacked\"]], contentQueries: function AreaChartStackedComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n        ɵngcc0.ɵɵcontentQuery(dirIndex, _c21, true);\n        ɵngcc0.ɵɵcontentQuery(dirIndex, _c22, true);\n    } if (rf & 2) {\n        var _t;\n        ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tooltipTemplate = _t.first);\n        ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.seriesTooltipTemplate = _t.first);\n    } }, hostBindings: function AreaChartStackedComponent_HostBindings(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵlistener(\"mouseleave\", function AreaChartStackedComponent_mouseleave_HostBindingHandler() { return ctx.hideCircles(); });\n    } }, inputs: { legend: \"legend\", legendTitle: \"legendTitle\", legendPosition: \"legendPosition\", showGridLines: \"showGridLines\", curve: \"curve\", activeEntries: \"activeEntries\", trimXAxisTicks: \"trimXAxisTicks\", trimYAxisTicks: \"trimYAxisTicks\", rotateXAxisTicks: \"rotateXAxisTicks\", maxXAxisTickLength: \"maxXAxisTickLength\", maxYAxisTickLength: \"maxYAxisTickLength\", roundDomains: \"roundDomains\", tooltipDisabled: \"tooltipDisabled\", xAxis: \"xAxis\", yAxis: \"yAxis\", showXAxisLabel: \"showXAxisLabel\", showYAxisLabel: \"showYAxisLabel\", xAxisLabel: \"xAxisLabel\", yAxisLabel: \"yAxisLabel\", timeline: \"timeline\", gradient: \"gradient\", schemeType: \"schemeType\", xAxisTickFormatting: \"xAxisTickFormatting\", yAxisTickFormatting: \"yAxisTickFormatting\", xAxisTicks: \"xAxisTicks\", yAxisTicks: \"yAxisTicks\", xScaleMin: \"xScaleMin\", xScaleMax: \"xScaleMax\", yScaleMin: \"yScaleMin\", yScaleMax: \"yScaleMax\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 11, vars: 20, consts: [[3, \"view\", \"showLegend\", \"legendOptions\", \"activeEntries\", \"animations\", \"legendLabelClick\", \"legendLabelActivate\", \"legendLabelDeactivate\"], [1, \"area-chart\", \"chart\"], [\"ngx-charts-x-axis\", \"\", 3, \"xScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\", 4, \"ngIf\"], [\"ngx-charts-y-axis\", \"\", 3, \"yScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\", 4, \"ngIf\"], [4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [3, \"mouseleave\", 4, \"ngIf\"], [\"ngx-charts-timeline\", \"\", 3, \"results\", \"view\", \"height\", \"scheme\", \"customColors\", \"legend\", \"scaleType\", \"onDomainChange\", 4, \"ngIf\"], [\"ngx-charts-x-axis\", \"\", 3, \"xScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\"], [\"ngx-charts-y-axis\", \"\", 3, \"yScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\"], [\"ngx-charts-area-series\", \"\", \"stacked\", \"true\", 3, \"xScale\", \"yScale\", \"colors\", \"data\", \"scaleType\", \"gradient\", \"activeEntries\", \"curve\", \"animations\"], [3, \"mouseleave\"], [\"ngx-charts-tooltip-area\", \"\", 3, \"dims\", \"xSet\", \"xScale\", \"yScale\", \"results\", \"colors\", \"tooltipDisabled\", \"tooltipTemplate\", \"hover\"], [\"ngx-charts-circle-series\", \"\", \"type\", \"stacked\", 3, \"xScale\", \"yScale\", \"colors\", \"activeEntries\", \"data\", \"scaleType\", \"visibleValue\", \"tooltipDisabled\", \"tooltipTemplate\", \"select\", \"activate\", \"deactivate\"], [\"ngx-charts-timeline\", \"\", 3, \"results\", \"view\", \"height\", \"scheme\", \"customColors\", \"legend\", \"scaleType\", \"onDomainChange\"], [\"ngx-charts-area-series\", \"\", \"stacked\", \"true\", 3, \"xScale\", \"yScale\", \"colors\", \"data\", \"scaleType\", \"gradient\", \"curve\", \"animations\"]], template: function AreaChartStackedComponent_Template(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵelementStart(0, \"ngx-charts-chart\", 0);\n        ɵngcc0.ɵɵlistener(\"legendLabelClick\", function AreaChartStackedComponent_Template_ngx_charts_chart_legendLabelClick_0_listener($event) { return ctx.onClick($event); })(\"legendLabelActivate\", function AreaChartStackedComponent_Template_ngx_charts_chart_legendLabelActivate_0_listener($event) { return ctx.onActivate($event); })(\"legendLabelDeactivate\", function AreaChartStackedComponent_Template_ngx_charts_chart_legendLabelDeactivate_0_listener($event) { return ctx.onDeactivate($event); });\n        ɵngcc0.ɵɵnamespaceSVG();\n        ɵngcc0.ɵɵelementStart(1, \"defs\");\n        ɵngcc0.ɵɵelementStart(2, \"clipPath\");\n        ɵngcc0.ɵɵelement(3, \"rect\");\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵelementStart(4, \"g\", 1);\n        ɵngcc0.ɵɵtemplate(5, AreaChartStackedComponent__svg_g_5_Template, 1, 10, \"g\", 2);\n        ɵngcc0.ɵɵtemplate(6, AreaChartStackedComponent__svg_g_6_Template, 1, 9, \"g\", 3);\n        ɵngcc0.ɵɵelementStart(7, \"g\");\n        ɵngcc0.ɵɵtemplate(8, AreaChartStackedComponent__svg_g_8_Template, 2, 9, \"g\", 4);\n        ɵngcc0.ɵɵtemplate(9, AreaChartStackedComponent__svg_g_9_Template, 3, 10, \"g\", 5);\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵtemplate(10, AreaChartStackedComponent__svg_g_10_Template, 2, 13, \"g\", 6);\n        ɵngcc0.ɵɵelementEnd();\n    } if (rf & 2) {\n        ɵngcc0.ɵɵproperty(\"view\", ɵngcc0.ɵɵpureFunction2(17, _c23, ctx.width, ctx.height))(\"showLegend\", ctx.legend)(\"legendOptions\", ctx.legendOptions)(\"activeEntries\", ctx.activeEntries)(\"animations\", ctx.animations);\n        ɵngcc0.ɵɵadvance(2);\n        ɵngcc0.ɵɵattribute(\"id\", ctx.clipPathId);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵattribute(\"width\", ctx.dims.width + 10)(\"height\", ctx.dims.height + 10)(\"transform\", \"translate(-5, -5)\");\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵattribute(\"transform\", ctx.transform);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.xAxis);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.yAxis);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵattribute(\"clip-path\", ctx.clipPath);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.results)(\"ngForTrackBy\", ctx.trackBy);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.tooltipDisabled);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.timeline && ctx.scaleType != \"ordinal\");\n    } }, directives: function () { return [ChartComponent, ɵngcc1.NgIf, ɵngcc1.NgForOf, XAxisComponent, YAxisComponent, AreaSeriesComponent, TooltipArea, CircleSeriesComponent, Timeline]; }, styles: [_c24], encapsulation: 2, changeDetection: 0 });\n__decorate([\n    Input()\n], AreaChartStackedComponent.prototype, \"legend\", void 0);\n__decorate([\n    Input()\n], AreaChartStackedComponent.prototype, \"legendTitle\", void 0);\n__decorate([\n    Input()\n], AreaChartStackedComponent.prototype, \"legendPosition\", void 0);\n__decorate([\n    Input()\n], AreaChartStackedComponent.prototype, \"xAxis\", void 0);\n__decorate([\n    Input()\n], AreaChartStackedComponent.prototype, \"yAxis\", void 0);\n__decorate([\n    Input()\n], AreaChartStackedComponent.prototype, \"showXAxisLabel\", void 0);\n__decorate([\n    Input()\n], AreaChartStackedComponent.prototype, \"showYAxisLabel\", void 0);\n__decorate([\n    Input()\n], AreaChartStackedComponent.prototype, \"xAxisLabel\", void 0);\n__decorate([\n    Input()\n], AreaChartStackedComponent.prototype, \"yAxisLabel\", void 0);\n__decorate([\n    Input()\n], AreaChartStackedComponent.prototype, \"timeline\", void 0);\n__decorate([\n    Input()\n], AreaChartStackedComponent.prototype, \"gradient\", void 0);\n__decorate([\n    Input()\n], AreaChartStackedComponent.prototype, \"showGridLines\", void 0);\n__decorate([\n    Input()\n], AreaChartStackedComponent.prototype, \"curve\", void 0);\n__decorate([\n    Input()\n], AreaChartStackedComponent.prototype, \"activeEntries\", void 0);\n__decorate([\n    Input()\n], AreaChartStackedComponent.prototype, \"schemeType\", void 0);\n__decorate([\n    Input()\n], AreaChartStackedComponent.prototype, \"trimXAxisTicks\", void 0);\n__decorate([\n    Input()\n], AreaChartStackedComponent.prototype, \"trimYAxisTicks\", void 0);\n__decorate([\n    Input()\n], AreaChartStackedComponent.prototype, \"rotateXAxisTicks\", void 0);\n__decorate([\n    Input()\n], AreaChartStackedComponent.prototype, \"maxXAxisTickLength\", void 0);\n__decorate([\n    Input()\n], AreaChartStackedComponent.prototype, \"maxYAxisTickLength\", void 0);\n__decorate([\n    Input()\n], AreaChartStackedComponent.prototype, \"xAxisTickFormatting\", void 0);\n__decorate([\n    Input()\n], AreaChartStackedComponent.prototype, \"yAxisTickFormatting\", void 0);\n__decorate([\n    Input()\n], AreaChartStackedComponent.prototype, \"xAxisTicks\", void 0);\n__decorate([\n    Input()\n], AreaChartStackedComponent.prototype, \"yAxisTicks\", void 0);\n__decorate([\n    Input()\n], AreaChartStackedComponent.prototype, \"roundDomains\", void 0);\n__decorate([\n    Input()\n], AreaChartStackedComponent.prototype, \"tooltipDisabled\", void 0);\n__decorate([\n    Input()\n], AreaChartStackedComponent.prototype, \"xScaleMin\", void 0);\n__decorate([\n    Input()\n], AreaChartStackedComponent.prototype, \"xScaleMax\", void 0);\n__decorate([\n    Input()\n], AreaChartStackedComponent.prototype, \"yScaleMin\", void 0);\n__decorate([\n    Input()\n], AreaChartStackedComponent.prototype, \"yScaleMax\", void 0);\n__decorate([\n    Output()\n], AreaChartStackedComponent.prototype, \"activate\", void 0);\n__decorate([\n    Output()\n], AreaChartStackedComponent.prototype, \"deactivate\", void 0);\n__decorate([\n    ContentChild('tooltipTemplate')\n], AreaChartStackedComponent.prototype, \"tooltipTemplate\", void 0);\n__decorate([\n    ContentChild('seriesTooltipTemplate')\n], AreaChartStackedComponent.prototype, \"seriesTooltipTemplate\", void 0);\n__decorate([\n    HostListener('mouseleave')\n], AreaChartStackedComponent.prototype, \"hideCircles\", null);\n\nfunction sortLinear(data, property, direction = 'asc') {\n    return data.sort((a, b) => {\n        if (direction === 'asc') {\n            return a[property] - b[property];\n        }\n        else {\n            return b[property] - a[property];\n        }\n    });\n}\nfunction sortByDomain(data, property, direction = 'asc', domain) {\n    return data.sort((a, b) => {\n        const aVal = a[property];\n        const bVal = b[property];\n        const aIdx = domain.indexOf(aVal);\n        const bIdx = domain.indexOf(bVal);\n        if (direction === 'asc') {\n            return aIdx - bIdx;\n        }\n        else {\n            return bIdx - aIdx;\n        }\n    });\n}\nfunction sortByTime(data, property, direction = 'asc') {\n    return data.sort((a, b) => {\n        const aDate = a[property].getTime();\n        const bDate = b[property].getTime();\n        if (direction === 'asc') {\n            if (aDate > bDate)\n                return 1;\n            if (bDate > aDate)\n                return -1;\n            return 0;\n        }\n        else {\n            if (aDate > bDate)\n                return -1;\n            if (bDate > aDate)\n                return 1;\n            return 0;\n        }\n    });\n}\n\nlet AreaSeriesComponent = class AreaSeriesComponent {\n    constructor() {\n        this.baseValue = 'auto';\n        this.stacked = false;\n        this.normalized = false;\n        this.animations = true;\n        this.select = new EventEmitter();\n    }\n    ngOnChanges(changes) {\n        this.update();\n    }\n    update() {\n        this.updateGradient();\n        let currentArea;\n        let startingArea;\n        const xProperty = d => {\n            const label = d.name;\n            return this.xScale(label);\n        };\n        if (this.stacked || this.normalized) {\n            currentArea = area()\n                .x(xProperty)\n                .y0((d, i) => this.yScale(d.d0))\n                .y1((d, i) => this.yScale(d.d1));\n            startingArea = area()\n                .x(xProperty)\n                .y0(d => this.yScale.range()[0])\n                .y1(d => this.yScale.range()[0]);\n        }\n        else {\n            currentArea = area()\n                .x(xProperty)\n                .y0(() => (this.baseValue === 'auto' ? this.yScale.range()[0] : this.yScale(this.baseValue)))\n                .y1(d => this.yScale(d.value));\n            startingArea = area()\n                .x(xProperty)\n                .y0(d => (this.baseValue === 'auto' ? this.yScale.range()[0] : this.yScale(this.baseValue)))\n                .y1(d => (this.baseValue === 'auto' ? this.yScale.range()[0] : this.yScale(this.baseValue)));\n        }\n        currentArea.curve(this.curve);\n        startingArea.curve(this.curve);\n        this.opacity = 0.8;\n        let data = this.data.series;\n        if (this.scaleType === 'linear') {\n            data = sortLinear(data, 'name');\n        }\n        else if (this.scaleType === 'time') {\n            data = sortByTime(data, 'name');\n        }\n        else {\n            data = sortByDomain(data, 'name', 'asc', this.xScale.domain());\n        }\n        this.path = currentArea(data);\n        this.startingPath = startingArea(data);\n    }\n    updateGradient() {\n        if (this.colors.scaleType === 'linear') {\n            this.hasGradient = true;\n            if (this.stacked || this.normalized) {\n                const d0values = this.data.series.map(d => d.d0);\n                const d1values = this.data.series.map(d => d.d1);\n                const max = Math.max(...d1values);\n                const min = Math.min(...d0values);\n                this.gradientStops = this.colors.getLinearGradientStops(max, min);\n            }\n            else {\n                const values = this.data.series.map(d => d.value);\n                const max = Math.max(...values);\n                this.gradientStops = this.colors.getLinearGradientStops(max);\n            }\n        }\n        else {\n            this.hasGradient = false;\n            this.gradientStops = undefined;\n        }\n    }\n    isActive(entry) {\n        if (!this.activeEntries)\n            return false;\n        const item = this.activeEntries.find(d => {\n            return entry.name === d.name;\n        });\n        return item !== undefined;\n    }\n    isInactive(entry) {\n        if (!this.activeEntries || this.activeEntries.length === 0)\n            return false;\n        const item = this.activeEntries.find(d => {\n            return entry.name === d.name;\n        });\n        return item === undefined;\n    }\n};\nAreaSeriesComponent.ɵfac = function AreaSeriesComponent_Factory(t) { return new (t || AreaSeriesComponent)(); };\nAreaSeriesComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: AreaSeriesComponent, selectors: [[\"g\", \"ngx-charts-area-series\", \"\"]], inputs: { baseValue: \"baseValue\", stacked: \"stacked\", normalized: \"normalized\", animations: \"animations\", data: \"data\", xScale: \"xScale\", yScale: \"yScale\", colors: \"colors\", scaleType: \"scaleType\", gradient: \"gradient\", curve: \"curve\", activeEntries: \"activeEntries\" }, outputs: { select: \"select\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c25, decls: 1, vars: 12, consts: [[\"ngx-charts-area\", \"\", 1, \"area-series\", 3, \"data\", \"path\", \"fill\", \"stops\", \"startingPath\", \"opacity\", \"gradient\", \"animations\"]], template: function AreaSeriesComponent_Template(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵnamespaceSVG();\n        ɵngcc0.ɵɵelement(0, \"g\", 0);\n    } if (rf & 2) {\n        ɵngcc0.ɵɵclassProp(\"active\", ctx.isActive(ctx.data))(\"inactive\", ctx.isInactive(ctx.data));\n        ɵngcc0.ɵɵproperty(\"data\", ctx.data)(\"path\", ctx.path)(\"fill\", ctx.colors.getColor(ctx.data.name))(\"stops\", ctx.gradientStops)(\"startingPath\", ctx.startingPath)(\"opacity\", ctx.opacity)(\"gradient\", ctx.gradient || ctx.hasGradient)(\"animations\", ctx.animations);\n    } }, directives: [AreaComponent], encapsulation: 2, changeDetection: 0 });\n__decorate([\n    Input()\n], AreaSeriesComponent.prototype, \"data\", void 0);\n__decorate([\n    Input()\n], AreaSeriesComponent.prototype, \"xScale\", void 0);\n__decorate([\n    Input()\n], AreaSeriesComponent.prototype, \"yScale\", void 0);\n__decorate([\n    Input()\n], AreaSeriesComponent.prototype, \"baseValue\", void 0);\n__decorate([\n    Input()\n], AreaSeriesComponent.prototype, \"colors\", void 0);\n__decorate([\n    Input()\n], AreaSeriesComponent.prototype, \"scaleType\", void 0);\n__decorate([\n    Input()\n], AreaSeriesComponent.prototype, \"stacked\", void 0);\n__decorate([\n    Input()\n], AreaSeriesComponent.prototype, \"normalized\", void 0);\n__decorate([\n    Input()\n], AreaSeriesComponent.prototype, \"gradient\", void 0);\n__decorate([\n    Input()\n], AreaSeriesComponent.prototype, \"curve\", void 0);\n__decorate([\n    Input()\n], AreaSeriesComponent.prototype, \"activeEntries\", void 0);\n__decorate([\n    Input()\n], AreaSeriesComponent.prototype, \"animations\", void 0);\n__decorate([\n    Output()\n], AreaSeriesComponent.prototype, \"select\", void 0);\n\nlet AreaChartModule = class AreaChartModule {\n};\nAreaChartModule.ɵmod = ɵngcc0.ɵɵdefineNgModule({ type: AreaChartModule });\nAreaChartModule.ɵinj = ɵngcc0.ɵɵdefineInjector({ factory: function AreaChartModule_Factory(t) { return new (t || AreaChartModule)(); }, imports: [[ChartCommonModule]] });\n\nlet BarComponent = class BarComponent {\n    constructor(element) {\n        this.roundEdges = true;\n        this.gradient = false;\n        this.offset = 0;\n        this.isActive = false;\n        this.animations = true;\n        this.noBarWhenZero = true;\n        this.select = new EventEmitter();\n        this.activate = new EventEmitter();\n        this.deactivate = new EventEmitter();\n        this.hasGradient = false;\n        this.hideBar = false;\n        this.element = element.nativeElement;\n    }\n    ngOnChanges(changes) {\n        if (changes.roundEdges) {\n            this.loadAnimation();\n        }\n        this.update();\n    }\n    update() {\n        this.gradientId = 'grad' + id().toString();\n        this.gradientFill = `url(#${this.gradientId})`;\n        if (this.gradient || this.stops) {\n            this.gradientStops = this.getGradient();\n            this.hasGradient = true;\n        }\n        else {\n            this.hasGradient = false;\n        }\n        this.updatePathEl();\n        this.checkToHideBar();\n    }\n    loadAnimation() {\n        this.path = this.getStartingPath();\n        setTimeout(this.update.bind(this), 100);\n    }\n    updatePathEl() {\n        const node = select(this.element).select('.bar');\n        const path = this.getPath();\n        if (this.animations) {\n            node\n                .transition()\n                .duration(500)\n                .attr('d', path);\n        }\n        else {\n            node.attr('d', path);\n        }\n    }\n    getGradient() {\n        if (this.stops) {\n            return this.stops;\n        }\n        return [\n            {\n                offset: 0,\n                color: this.fill,\n                opacity: this.getStartOpacity()\n            },\n            {\n                offset: 100,\n                color: this.fill,\n                opacity: 1\n            }\n        ];\n    }\n    getStartingPath() {\n        if (!this.animations) {\n            return this.getPath();\n        }\n        let radius = this.getRadius();\n        let path;\n        if (this.roundEdges) {\n            if (this.orientation === 'vertical') {\n                radius = Math.min(this.height, radius);\n                path = roundedRect(this.x, this.y + this.height, this.width, 1, 0, this.edges);\n            }\n            else if (this.orientation === 'horizontal') {\n                radius = Math.min(this.width, radius);\n                path = roundedRect(this.x, this.y, 1, this.height, 0, this.edges);\n            }\n        }\n        else {\n            if (this.orientation === 'vertical') {\n                path = roundedRect(this.x, this.y + this.height, this.width, 1, 0, this.edges);\n            }\n            else if (this.orientation === 'horizontal') {\n                path = roundedRect(this.x, this.y, 1, this.height, 0, this.edges);\n            }\n        }\n        return path;\n    }\n    getPath() {\n        let radius = this.getRadius();\n        let path;\n        if (this.roundEdges) {\n            if (this.orientation === 'vertical') {\n                radius = Math.min(this.height, radius);\n                path = roundedRect(this.x, this.y, this.width, this.height, radius, this.edges);\n            }\n            else if (this.orientation === 'horizontal') {\n                radius = Math.min(this.width, radius);\n                path = roundedRect(this.x, this.y, this.width, this.height, radius, this.edges);\n            }\n        }\n        else {\n            path = roundedRect(this.x, this.y, this.width, this.height, radius, this.edges);\n        }\n        return path;\n    }\n    getRadius() {\n        let radius = 0;\n        if (this.roundEdges && this.height > 5 && this.width > 5) {\n            radius = Math.floor(Math.min(5, this.height / 2, this.width / 2));\n        }\n        return radius;\n    }\n    getStartOpacity() {\n        if (this.roundEdges) {\n            return 0.2;\n        }\n        else {\n            return 0.5;\n        }\n    }\n    get edges() {\n        let edges = [false, false, false, false];\n        if (this.roundEdges) {\n            if (this.orientation === 'vertical') {\n                if (this.data.value > 0) {\n                    edges = [true, true, false, false];\n                }\n                else {\n                    edges = [false, false, true, true];\n                }\n            }\n            else if (this.orientation === 'horizontal') {\n                if (this.data.value > 0) {\n                    edges = [false, true, false, true];\n                }\n                else {\n                    edges = [true, false, true, false];\n                }\n            }\n        }\n        return edges;\n    }\n    onMouseEnter() {\n        this.activate.emit(this.data);\n    }\n    onMouseLeave() {\n        this.deactivate.emit(this.data);\n    }\n    checkToHideBar() {\n        this.hideBar =\n            this.noBarWhenZero &&\n                ((this.orientation === 'vertical' && this.height === 0) ||\n                    (this.orientation === 'horizontal' && this.width === 0));\n    }\n};\nBarComponent.ɵfac = function BarComponent_Factory(t) { return new (t || BarComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nBarComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: BarComponent, selectors: [[\"g\", \"ngx-charts-bar\", \"\"]], hostBindings: function BarComponent_HostBindings(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵlistener(\"mouseenter\", function BarComponent_mouseenter_HostBindingHandler() { return ctx.onMouseEnter(); })(\"mouseleave\", function BarComponent_mouseleave_HostBindingHandler() { return ctx.onMouseLeave(); });\n    } }, inputs: { roundEdges: \"roundEdges\", gradient: \"gradient\", offset: \"offset\", isActive: \"isActive\", animations: \"animations\", noBarWhenZero: \"noBarWhenZero\", fill: \"fill\", data: \"data\", width: \"width\", height: \"height\", x: \"x\", y: \"y\", orientation: \"orientation\", stops: \"stops\", ariaLabel: \"ariaLabel\" }, outputs: { select: \"select\", activate: \"activate\", deactivate: \"deactivate\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c26, decls: 2, vars: 8, consts: [[4, \"ngIf\"], [\"stroke\", \"none\", \"role\", \"img\", \"tabIndex\", \"-1\", 1, \"bar\", 3, \"click\"], [\"ngx-charts-svg-linear-gradient\", \"\", 3, \"orientation\", \"name\", \"stops\"]], template: function BarComponent_Template(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵtemplate(0, BarComponent__svg_defs_0_Template, 2, 3, \"defs\", 0);\n        ɵngcc0.ɵɵnamespaceSVG();\n        ɵngcc0.ɵɵelementStart(1, \"path\", 1);\n        ɵngcc0.ɵɵlistener(\"click\", function BarComponent_Template__svg_path_click_1_listener() { return ctx.select.emit(ctx.data); });\n        ɵngcc0.ɵɵelementEnd();\n    } if (rf & 2) {\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.hasGradient);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵclassProp(\"active\", ctx.isActive)(\"hidden\", ctx.hideBar);\n        ɵngcc0.ɵɵattribute(\"d\", ctx.path)(\"aria-label\", ctx.ariaLabel)(\"fill\", ctx.hasGradient ? ctx.gradientFill : ctx.fill);\n    } }, directives: [ɵngcc1.NgIf, SvgLinearGradientComponent], encapsulation: 2, changeDetection: 0 });\nBarComponent.ctorParameters = () => [\n    { type: ElementRef }\n];\n__decorate([\n    Input()\n], BarComponent.prototype, \"fill\", void 0);\n__decorate([\n    Input()\n], BarComponent.prototype, \"data\", void 0);\n__decorate([\n    Input()\n], BarComponent.prototype, \"width\", void 0);\n__decorate([\n    Input()\n], BarComponent.prototype, \"height\", void 0);\n__decorate([\n    Input()\n], BarComponent.prototype, \"x\", void 0);\n__decorate([\n    Input()\n], BarComponent.prototype, \"y\", void 0);\n__decorate([\n    Input()\n], BarComponent.prototype, \"orientation\", void 0);\n__decorate([\n    Input()\n], BarComponent.prototype, \"roundEdges\", void 0);\n__decorate([\n    Input()\n], BarComponent.prototype, \"gradient\", void 0);\n__decorate([\n    Input()\n], BarComponent.prototype, \"offset\", void 0);\n__decorate([\n    Input()\n], BarComponent.prototype, \"isActive\", void 0);\n__decorate([\n    Input()\n], BarComponent.prototype, \"stops\", void 0);\n__decorate([\n    Input()\n], BarComponent.prototype, \"animations\", void 0);\n__decorate([\n    Input()\n], BarComponent.prototype, \"ariaLabel\", void 0);\n__decorate([\n    Input()\n], BarComponent.prototype, \"noBarWhenZero\", void 0);\n__decorate([\n    Output()\n], BarComponent.prototype, \"select\", void 0);\n__decorate([\n    Output()\n], BarComponent.prototype, \"activate\", void 0);\n__decorate([\n    Output()\n], BarComponent.prototype, \"deactivate\", void 0);\n__decorate([\n    HostListener('mouseenter')\n], BarComponent.prototype, \"onMouseEnter\", null);\n__decorate([\n    HostListener('mouseleave')\n], BarComponent.prototype, \"onMouseLeave\", null);\n\nlet BarHorizontalComponent = class BarHorizontalComponent extends BaseChartComponent {\n    constructor() {\n        super(...arguments);\n        this.legend = false;\n        this.legendTitle = 'Legend';\n        this.legendPosition = 'right';\n        this.tooltipDisabled = false;\n        this.showGridLines = true;\n        this.activeEntries = [];\n        this.trimXAxisTicks = true;\n        this.trimYAxisTicks = true;\n        this.rotateXAxisTicks = true;\n        this.maxXAxisTickLength = 16;\n        this.maxYAxisTickLength = 16;\n        this.barPadding = 8;\n        this.roundDomains = false;\n        this.roundEdges = true;\n        this.showDataLabel = false;\n        this.noBarWhenZero = true;\n        this.activate = new EventEmitter();\n        this.deactivate = new EventEmitter();\n        this.margin = [10, 20, 10, 20];\n        this.xAxisHeight = 0;\n        this.yAxisWidth = 0;\n        this.dataLabelMaxWidth = { negative: 0, positive: 0 };\n    }\n    update() {\n        super.update();\n        if (!this.showDataLabel) {\n            this.dataLabelMaxWidth = { negative: 0, positive: 0 };\n        }\n        this.margin = [10, 20 + this.dataLabelMaxWidth.positive, 10, 20 + this.dataLabelMaxWidth.negative];\n        this.dims = calculateViewDimensions({\n            width: this.width,\n            height: this.height,\n            margins: this.margin,\n            showXAxis: this.xAxis,\n            showYAxis: this.yAxis,\n            xAxisHeight: this.xAxisHeight,\n            yAxisWidth: this.yAxisWidth,\n            showXLabel: this.showXAxisLabel,\n            showYLabel: this.showYAxisLabel,\n            showLegend: this.legend,\n            legendType: this.schemeType,\n            legendPosition: this.legendPosition\n        });\n        this.formatDates();\n        this.xScale = this.getXScale();\n        this.yScale = this.getYScale();\n        this.setColors();\n        this.legendOptions = this.getLegendOptions();\n        this.transform = `translate(${this.dims.xOffset} , ${this.margin[0]})`;\n    }\n    getXScale() {\n        this.xDomain = this.getXDomain();\n        const scale = scaleLinear()\n            .range([0, this.dims.width])\n            .domain(this.xDomain);\n        return this.roundDomains ? scale.nice() : scale;\n    }\n    getYScale() {\n        this.yDomain = this.getYDomain();\n        const spacing = this.yDomain.length / (this.dims.height / this.barPadding + 1);\n        return scaleBand()\n            .rangeRound([0, this.dims.height])\n            .paddingInner(spacing)\n            .domain(this.yDomain);\n    }\n    getXDomain() {\n        const values = this.results.map(d => d.value);\n        const min = this.xScaleMin ? Math.min(this.xScaleMin, ...values) : Math.min(0, ...values);\n        const max = this.xScaleMax ? Math.max(this.xScaleMax, ...values) : Math.max(0, ...values);\n        return [min, max];\n    }\n    getYDomain() {\n        return this.results.map(d => d.label);\n    }\n    onClick(data) {\n        this.select.emit(data);\n    }\n    setColors() {\n        let domain;\n        if (this.schemeType === 'ordinal') {\n            domain = this.yDomain;\n        }\n        else {\n            domain = this.xDomain;\n        }\n        this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n    }\n    getLegendOptions() {\n        const opts = {\n            scaleType: this.schemeType,\n            colors: undefined,\n            domain: [],\n            title: undefined,\n            position: this.legendPosition\n        };\n        if (opts.scaleType === 'ordinal') {\n            opts.domain = this.yDomain;\n            opts.colors = this.colors;\n            opts.title = this.legendTitle;\n        }\n        else {\n            opts.domain = this.xDomain;\n            opts.colors = this.colors.scale;\n        }\n        return opts;\n    }\n    updateYAxisWidth({ width }) {\n        this.yAxisWidth = width;\n        this.update();\n    }\n    updateXAxisHeight({ height }) {\n        this.xAxisHeight = height;\n        this.update();\n    }\n    onDataLabelMaxWidthChanged(event) {\n        if (event.size.negative) {\n            this.dataLabelMaxWidth.negative = Math.max(this.dataLabelMaxWidth.negative, event.size.width);\n        }\n        else {\n            this.dataLabelMaxWidth.positive = Math.max(this.dataLabelMaxWidth.positive, event.size.width);\n        }\n        if (event.index === this.results.length - 1) {\n            setTimeout(() => this.update());\n        }\n    }\n    onActivate(item, fromLegend = false) {\n        item = this.results.find(d => {\n            if (fromLegend) {\n                return d.label === item.name;\n            }\n            else {\n                return d.name === item.name;\n            }\n        });\n        const idx = this.activeEntries.findIndex(d => {\n            return d.name === item.name && d.value === item.value && d.series === item.series;\n        });\n        if (idx > -1) {\n            return;\n        }\n        this.activeEntries = [item, ...this.activeEntries];\n        this.activate.emit({ value: item, entries: this.activeEntries });\n    }\n    onDeactivate(item, fromLegend = false) {\n        item = this.results.find(d => {\n            if (fromLegend) {\n                return d.label === item.name;\n            }\n            else {\n                return d.name === item.name;\n            }\n        });\n        const idx = this.activeEntries.findIndex(d => {\n            return d.name === item.name && d.value === item.value && d.series === item.series;\n        });\n        this.activeEntries.splice(idx, 1);\n        this.activeEntries = [...this.activeEntries];\n        this.deactivate.emit({ value: item, entries: this.activeEntries });\n    }\n};\nBarHorizontalComponent.ɵfac = function BarHorizontalComponent_Factory(t) { return ɵBarHorizontalComponent_BaseFactory(t || BarHorizontalComponent); };\nBarHorizontalComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: BarHorizontalComponent, selectors: [[\"ngx-charts-bar-horizontal\"]], contentQueries: function BarHorizontalComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n        ɵngcc0.ɵɵcontentQuery(dirIndex, _c21, true);\n    } if (rf & 2) {\n        var _t;\n        ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tooltipTemplate = _t.first);\n    } }, inputs: { legend: \"legend\", legendTitle: \"legendTitle\", legendPosition: \"legendPosition\", tooltipDisabled: \"tooltipDisabled\", showGridLines: \"showGridLines\", activeEntries: \"activeEntries\", trimXAxisTicks: \"trimXAxisTicks\", trimYAxisTicks: \"trimYAxisTicks\", rotateXAxisTicks: \"rotateXAxisTicks\", maxXAxisTickLength: \"maxXAxisTickLength\", maxYAxisTickLength: \"maxYAxisTickLength\", barPadding: \"barPadding\", roundDomains: \"roundDomains\", roundEdges: \"roundEdges\", showDataLabel: \"showDataLabel\", noBarWhenZero: \"noBarWhenZero\", xAxis: \"xAxis\", yAxis: \"yAxis\", showXAxisLabel: \"showXAxisLabel\", showYAxisLabel: \"showYAxisLabel\", xAxisLabel: \"xAxisLabel\", yAxisLabel: \"yAxisLabel\", gradient: \"gradient\", schemeType: \"schemeType\", xAxisTickFormatting: \"xAxisTickFormatting\", yAxisTickFormatting: \"yAxisTickFormatting\", xAxisTicks: \"xAxisTicks\", yAxisTicks: \"yAxisTicks\", xScaleMax: \"xScaleMax\", xScaleMin: \"xScaleMin\", dataLabelFormatting: \"dataLabelFormatting\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 5, vars: 25, consts: [[3, \"view\", \"showLegend\", \"legendOptions\", \"activeEntries\", \"animations\", \"legendLabelClick\", \"legendLabelActivate\", \"legendLabelDeactivate\"], [1, \"bar-chart\", \"chart\"], [\"ngx-charts-x-axis\", \"\", 3, \"xScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\", 4, \"ngIf\"], [\"ngx-charts-y-axis\", \"\", 3, \"yScale\", \"dims\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"yAxisOffset\", \"dimensionsChanged\", 4, \"ngIf\"], [\"ngx-charts-series-horizontal\", \"\", 3, \"xScale\", \"yScale\", \"colors\", \"series\", \"dims\", \"gradient\", \"tooltipDisabled\", \"tooltipTemplate\", \"activeEntries\", \"roundEdges\", \"animations\", \"showDataLabel\", \"dataLabelFormatting\", \"noBarWhenZero\", \"select\", \"activate\", \"deactivate\", \"dataLabelWidthChanged\"], [\"ngx-charts-x-axis\", \"\", 3, \"xScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\"], [\"ngx-charts-y-axis\", \"\", 3, \"yScale\", \"dims\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"yAxisOffset\", \"dimensionsChanged\"]], template: function BarHorizontalComponent_Template(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵelementStart(0, \"ngx-charts-chart\", 0);\n        ɵngcc0.ɵɵlistener(\"legendLabelClick\", function BarHorizontalComponent_Template_ngx_charts_chart_legendLabelClick_0_listener($event) { return ctx.onClick($event); })(\"legendLabelActivate\", function BarHorizontalComponent_Template_ngx_charts_chart_legendLabelActivate_0_listener($event) { return ctx.onActivate($event, true); })(\"legendLabelDeactivate\", function BarHorizontalComponent_Template_ngx_charts_chart_legendLabelDeactivate_0_listener($event) { return ctx.onDeactivate($event, true); });\n        ɵngcc0.ɵɵnamespaceSVG();\n        ɵngcc0.ɵɵelementStart(1, \"g\", 1);\n        ɵngcc0.ɵɵtemplate(2, BarHorizontalComponent__svg_g_2_Template, 1, 10, \"g\", 2);\n        ɵngcc0.ɵɵtemplate(3, BarHorizontalComponent__svg_g_3_Template, 1, 9, \"g\", 3);\n        ɵngcc0.ɵɵelementStart(4, \"g\", 4);\n        ɵngcc0.ɵɵlistener(\"select\", function BarHorizontalComponent_Template__svg_g_select_4_listener($event) { return ctx.onClick($event); })(\"activate\", function BarHorizontalComponent_Template__svg_g_activate_4_listener($event) { return ctx.onActivate($event); })(\"deactivate\", function BarHorizontalComponent_Template__svg_g_deactivate_4_listener($event) { return ctx.onDeactivate($event); })(\"dataLabelWidthChanged\", function BarHorizontalComponent_Template__svg_g_dataLabelWidthChanged_4_listener($event) { return ctx.onDataLabelMaxWidthChanged($event); });\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵelementEnd();\n    } if (rf & 2) {\n        ɵngcc0.ɵɵproperty(\"view\", ɵngcc0.ɵɵpureFunction2(22, _c23, ctx.width, ctx.height))(\"showLegend\", ctx.legend)(\"legendOptions\", ctx.legendOptions)(\"activeEntries\", ctx.activeEntries)(\"animations\", ctx.animations);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵattribute(\"transform\", ctx.transform);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.xAxis);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.yAxis);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"xScale\", ctx.xScale)(\"yScale\", ctx.yScale)(\"colors\", ctx.colors)(\"series\", ctx.results)(\"dims\", ctx.dims)(\"gradient\", ctx.gradient)(\"tooltipDisabled\", ctx.tooltipDisabled)(\"tooltipTemplate\", ctx.tooltipTemplate)(\"activeEntries\", ctx.activeEntries)(\"roundEdges\", ctx.roundEdges)(\"animations\", ctx.animations)(\"showDataLabel\", ctx.showDataLabel)(\"dataLabelFormatting\", ctx.dataLabelFormatting)(\"noBarWhenZero\", ctx.noBarWhenZero);\n    } }, directives: function () { return [ChartComponent, ɵngcc1.NgIf, SeriesHorizontal, XAxisComponent, YAxisComponent]; }, styles: [_c24], encapsulation: 2, changeDetection: 0 });\n__decorate([\n    Input()\n], BarHorizontalComponent.prototype, \"legend\", void 0);\n__decorate([\n    Input()\n], BarHorizontalComponent.prototype, \"legendTitle\", void 0);\n__decorate([\n    Input()\n], BarHorizontalComponent.prototype, \"legendPosition\", void 0);\n__decorate([\n    Input()\n], BarHorizontalComponent.prototype, \"xAxis\", void 0);\n__decorate([\n    Input()\n], BarHorizontalComponent.prototype, \"yAxis\", void 0);\n__decorate([\n    Input()\n], BarHorizontalComponent.prototype, \"showXAxisLabel\", void 0);\n__decorate([\n    Input()\n], BarHorizontalComponent.prototype, \"showYAxisLabel\", void 0);\n__decorate([\n    Input()\n], BarHorizontalComponent.prototype, \"xAxisLabel\", void 0);\n__decorate([\n    Input()\n], BarHorizontalComponent.prototype, \"yAxisLabel\", void 0);\n__decorate([\n    Input()\n], BarHorizontalComponent.prototype, \"tooltipDisabled\", void 0);\n__decorate([\n    Input()\n], BarHorizontalComponent.prototype, \"gradient\", void 0);\n__decorate([\n    Input()\n], BarHorizontalComponent.prototype, \"showGridLines\", void 0);\n__decorate([\n    Input()\n], BarHorizontalComponent.prototype, \"activeEntries\", void 0);\n__decorate([\n    Input()\n], BarHorizontalComponent.prototype, \"schemeType\", void 0);\n__decorate([\n    Input()\n], BarHorizontalComponent.prototype, \"trimXAxisTicks\", void 0);\n__decorate([\n    Input()\n], BarHorizontalComponent.prototype, \"trimYAxisTicks\", void 0);\n__decorate([\n    Input()\n], BarHorizontalComponent.prototype, \"rotateXAxisTicks\", void 0);\n__decorate([\n    Input()\n], BarHorizontalComponent.prototype, \"maxXAxisTickLength\", void 0);\n__decorate([\n    Input()\n], BarHorizontalComponent.prototype, \"maxYAxisTickLength\", void 0);\n__decorate([\n    Input()\n], BarHorizontalComponent.prototype, \"xAxisTickFormatting\", void 0);\n__decorate([\n    Input()\n], BarHorizontalComponent.prototype, \"yAxisTickFormatting\", void 0);\n__decorate([\n    Input()\n], BarHorizontalComponent.prototype, \"xAxisTicks\", void 0);\n__decorate([\n    Input()\n], BarHorizontalComponent.prototype, \"yAxisTicks\", void 0);\n__decorate([\n    Input()\n], BarHorizontalComponent.prototype, \"barPadding\", void 0);\n__decorate([\n    Input()\n], BarHorizontalComponent.prototype, \"roundDomains\", void 0);\n__decorate([\n    Input()\n], BarHorizontalComponent.prototype, \"roundEdges\", void 0);\n__decorate([\n    Input()\n], BarHorizontalComponent.prototype, \"xScaleMax\", void 0);\n__decorate([\n    Input()\n], BarHorizontalComponent.prototype, \"xScaleMin\", void 0);\n__decorate([\n    Input()\n], BarHorizontalComponent.prototype, \"showDataLabel\", void 0);\n__decorate([\n    Input()\n], BarHorizontalComponent.prototype, \"dataLabelFormatting\", void 0);\n__decorate([\n    Input()\n], BarHorizontalComponent.prototype, \"noBarWhenZero\", void 0);\n__decorate([\n    Output()\n], BarHorizontalComponent.prototype, \"activate\", void 0);\n__decorate([\n    Output()\n], BarHorizontalComponent.prototype, \"deactivate\", void 0);\n__decorate([\n    ContentChild('tooltipTemplate')\n], BarHorizontalComponent.prototype, \"tooltipTemplate\", void 0);\n\nlet BarHorizontal2DComponent = class BarHorizontal2DComponent extends BaseChartComponent {\n    constructor() {\n        super(...arguments);\n        this.legend = false;\n        this.legendTitle = 'Legend';\n        this.legendPosition = 'right';\n        this.tooltipDisabled = false;\n        this.showGridLines = true;\n        this.activeEntries = [];\n        this.trimXAxisTicks = true;\n        this.trimYAxisTicks = true;\n        this.rotateXAxisTicks = true;\n        this.maxXAxisTickLength = 16;\n        this.maxYAxisTickLength = 16;\n        this.groupPadding = 16;\n        this.barPadding = 8;\n        this.roundDomains = false;\n        this.roundEdges = true;\n        this.showDataLabel = false;\n        this.noBarWhenZero = true;\n        this.activate = new EventEmitter();\n        this.deactivate = new EventEmitter();\n        this.margin = [10, 20, 10, 20];\n        this.xAxisHeight = 0;\n        this.yAxisWidth = 0;\n        this.dataLabelMaxWidth = { negative: 0, positive: 0 };\n    }\n    update() {\n        super.update();\n        if (!this.showDataLabel) {\n            this.dataLabelMaxWidth = { negative: 0, positive: 0 };\n        }\n        this.margin = [10, 20 + this.dataLabelMaxWidth.positive, 10, 20 + this.dataLabelMaxWidth.negative];\n        this.dims = calculateViewDimensions({\n            width: this.width,\n            height: this.height,\n            margins: this.margin,\n            showXAxis: this.xAxis,\n            showYAxis: this.yAxis,\n            xAxisHeight: this.xAxisHeight,\n            yAxisWidth: this.yAxisWidth,\n            showXLabel: this.showXAxisLabel,\n            showYLabel: this.showYAxisLabel,\n            showLegend: this.legend,\n            legendType: this.schemeType,\n            legendPosition: this.legendPosition\n        });\n        this.formatDates();\n        this.groupDomain = this.getGroupDomain();\n        this.innerDomain = this.getInnerDomain();\n        this.valuesDomain = this.getValueDomain();\n        this.groupScale = this.getGroupScale();\n        this.innerScale = this.getInnerScale();\n        this.valueScale = this.getValueScale();\n        this.setColors();\n        this.legendOptions = this.getLegendOptions();\n        this.transform = `translate(${this.dims.xOffset} , ${this.margin[0]})`;\n    }\n    getGroupScale() {\n        const spacing = this.groupDomain.length / (this.dims.height / this.groupPadding + 1);\n        return scaleBand()\n            .rangeRound([0, this.dims.height])\n            .paddingInner(spacing)\n            .paddingOuter(spacing / 2)\n            .domain(this.groupDomain);\n    }\n    getInnerScale() {\n        const height = this.groupScale.bandwidth();\n        const spacing = this.innerDomain.length / (height / this.barPadding + 1);\n        return scaleBand()\n            .rangeRound([0, height])\n            .paddingInner(spacing)\n            .domain(this.innerDomain);\n    }\n    getValueScale() {\n        const scale = scaleLinear()\n            .range([0, this.dims.width])\n            .domain(this.valuesDomain);\n        return this.roundDomains ? scale.nice() : scale;\n    }\n    getGroupDomain() {\n        const domain = [];\n        for (const group of this.results) {\n            if (!domain.includes(group.label)) {\n                domain.push(group.label);\n            }\n        }\n        return domain;\n    }\n    getInnerDomain() {\n        const domain = [];\n        for (const group of this.results) {\n            for (const d of group.series) {\n                if (!domain.includes(d.label)) {\n                    domain.push(d.label);\n                }\n            }\n        }\n        return domain;\n    }\n    getValueDomain() {\n        const domain = [];\n        for (const group of this.results) {\n            for (const d of group.series) {\n                if (!domain.includes(d.value)) {\n                    domain.push(d.value);\n                }\n            }\n        }\n        const min = Math.min(0, ...domain);\n        const max = this.xScaleMax ? Math.max(this.xScaleMax, ...domain) : Math.max(0, ...domain);\n        return [min, max];\n    }\n    groupTransform(group) {\n        return `translate(0, ${this.groupScale(group.label)})`;\n    }\n    onClick(data, group) {\n        if (group) {\n            data.series = group.name;\n        }\n        this.select.emit(data);\n    }\n    trackBy(index, item) {\n        return item.name;\n    }\n    setColors() {\n        let domain;\n        if (this.schemeType === 'ordinal') {\n            domain = this.innerDomain;\n        }\n        else {\n            domain = this.valuesDomain;\n        }\n        this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n    }\n    getLegendOptions() {\n        const opts = {\n            scaleType: this.schemeType,\n            colors: undefined,\n            domain: [],\n            title: undefined,\n            position: this.legendPosition\n        };\n        if (opts.scaleType === 'ordinal') {\n            opts.domain = this.innerDomain;\n            opts.colors = this.colors;\n            opts.title = this.legendTitle;\n        }\n        else {\n            opts.domain = this.valuesDomain;\n            opts.colors = this.colors.scale;\n        }\n        return opts;\n    }\n    updateYAxisWidth({ width }) {\n        this.yAxisWidth = width;\n        this.update();\n    }\n    updateXAxisHeight({ height }) {\n        this.xAxisHeight = height;\n        this.update();\n    }\n    onDataLabelMaxWidthChanged(event, groupIndex) {\n        if (event.size.negative) {\n            this.dataLabelMaxWidth.negative = Math.max(this.dataLabelMaxWidth.negative, event.size.width);\n        }\n        else {\n            this.dataLabelMaxWidth.positive = Math.max(this.dataLabelMaxWidth.positive, event.size.width);\n        }\n        if (groupIndex === this.results.length - 1) {\n            setTimeout(() => this.update());\n        }\n    }\n    onActivate(event, group, fromLegend = false) {\n        const item = Object.assign({}, event);\n        if (group) {\n            item.series = group.name;\n        }\n        const items = this.results\n            .map(g => g.series)\n            .flat()\n            .filter(i => {\n            if (fromLegend) {\n                return i.label === item.name;\n            }\n            else {\n                return i.name === item.name && i.series === item.series;\n            }\n        });\n        this.activeEntries = [...items];\n        this.activate.emit({ value: item, entries: this.activeEntries });\n    }\n    onDeactivate(event, group, fromLegend = false) {\n        const item = Object.assign({}, event);\n        if (group) {\n            item.series = group.name;\n        }\n        this.activeEntries = this.activeEntries.filter(i => {\n            if (fromLegend) {\n                return i.label !== item.name;\n            }\n            else {\n                return !(i.name === item.name && i.series === item.series);\n            }\n        });\n        this.deactivate.emit({ value: item, entries: this.activeEntries });\n    }\n};\nBarHorizontal2DComponent.ɵfac = function BarHorizontal2DComponent_Factory(t) { return ɵBarHorizontal2DComponent_BaseFactory(t || BarHorizontal2DComponent); };\nBarHorizontal2DComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: BarHorizontal2DComponent, selectors: [[\"ngx-charts-bar-horizontal-2d\"]], contentQueries: function BarHorizontal2DComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n        ɵngcc0.ɵɵcontentQuery(dirIndex, _c21, true);\n    } if (rf & 2) {\n        var _t;\n        ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tooltipTemplate = _t.first);\n    } }, inputs: { legend: \"legend\", legendTitle: \"legendTitle\", legendPosition: \"legendPosition\", tooltipDisabled: \"tooltipDisabled\", showGridLines: \"showGridLines\", activeEntries: \"activeEntries\", trimXAxisTicks: \"trimXAxisTicks\", trimYAxisTicks: \"trimYAxisTicks\", rotateXAxisTicks: \"rotateXAxisTicks\", maxXAxisTickLength: \"maxXAxisTickLength\", maxYAxisTickLength: \"maxYAxisTickLength\", groupPadding: \"groupPadding\", barPadding: \"barPadding\", roundDomains: \"roundDomains\", roundEdges: \"roundEdges\", showDataLabel: \"showDataLabel\", noBarWhenZero: \"noBarWhenZero\", xAxis: \"xAxis\", yAxis: \"yAxis\", showXAxisLabel: \"showXAxisLabel\", showYAxisLabel: \"showYAxisLabel\", xAxisLabel: \"xAxisLabel\", yAxisLabel: \"yAxisLabel\", gradient: \"gradient\", schemeType: \"schemeType\", xAxisTickFormatting: \"xAxisTickFormatting\", yAxisTickFormatting: \"yAxisTickFormatting\", xAxisTicks: \"xAxisTicks\", yAxisTicks: \"yAxisTicks\", xScaleMax: \"xScaleMax\", dataLabelFormatting: \"dataLabelFormatting\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 6, vars: 17, consts: [[3, \"view\", \"showLegend\", \"legendOptions\", \"activeEntries\", \"animations\", \"legendLabelActivate\", \"legendLabelDeactivate\", \"legendLabelClick\"], [1, \"bar-chart\", \"chart\"], [\"ngx-charts-grid-panel-series\", \"\", \"orient\", \"horizontal\", 3, \"xScale\", \"yScale\", \"data\", \"dims\"], [\"ngx-charts-x-axis\", \"\", 3, \"xScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\", 4, \"ngIf\"], [\"ngx-charts-y-axis\", \"\", 3, \"yScale\", \"dims\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"yAxisOffset\", \"dimensionsChanged\", 4, \"ngIf\"], [4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"ngx-charts-x-axis\", \"\", 3, \"xScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\"], [\"ngx-charts-y-axis\", \"\", 3, \"yScale\", \"dims\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"yAxisOffset\", \"dimensionsChanged\"], [\"ngx-charts-series-horizontal\", \"\", 3, \"xScale\", \"activeEntries\", \"yScale\", \"colors\", \"series\", \"dims\", \"gradient\", \"tooltipDisabled\", \"tooltipTemplate\", \"seriesName\", \"roundEdges\", \"animations\", \"showDataLabel\", \"dataLabelFormatting\", \"noBarWhenZero\", \"select\", \"activate\", \"deactivate\", \"dataLabelWidthChanged\"]], template: function BarHorizontal2DComponent_Template(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵelementStart(0, \"ngx-charts-chart\", 0);\n        ɵngcc0.ɵɵlistener(\"legendLabelActivate\", function BarHorizontal2DComponent_Template_ngx_charts_chart_legendLabelActivate_0_listener($event) { return ctx.onActivate($event, undefined, true); })(\"legendLabelDeactivate\", function BarHorizontal2DComponent_Template_ngx_charts_chart_legendLabelDeactivate_0_listener($event) { return ctx.onDeactivate($event, undefined, true); })(\"legendLabelClick\", function BarHorizontal2DComponent_Template_ngx_charts_chart_legendLabelClick_0_listener($event) { return ctx.onClick($event); });\n        ɵngcc0.ɵɵnamespaceSVG();\n        ɵngcc0.ɵɵelementStart(1, \"g\", 1);\n        ɵngcc0.ɵɵelement(2, \"g\", 2);\n        ɵngcc0.ɵɵtemplate(3, BarHorizontal2DComponent__svg_g_3_Template, 1, 10, \"g\", 3);\n        ɵngcc0.ɵɵtemplate(4, BarHorizontal2DComponent__svg_g_4_Template, 1, 9, \"g\", 4);\n        ɵngcc0.ɵɵtemplate(5, BarHorizontal2DComponent__svg_g_5_Template, 2, 17, \"g\", 5);\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵelementEnd();\n    } if (rf & 2) {\n        ɵngcc0.ɵɵproperty(\"view\", ɵngcc0.ɵɵpureFunction2(14, _c23, ctx.width, ctx.height))(\"showLegend\", ctx.legend)(\"legendOptions\", ctx.legendOptions)(\"activeEntries\", ctx.activeEntries)(\"animations\", ctx.animations);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵattribute(\"transform\", ctx.transform);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"xScale\", ctx.valueScale)(\"yScale\", ctx.groupScale)(\"data\", ctx.results)(\"dims\", ctx.dims);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.xAxis);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.yAxis);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.results)(\"ngForTrackBy\", ctx.trackBy);\n    } }, directives: function () { return [ChartComponent, GridPanelSeriesComponent, ɵngcc1.NgIf, ɵngcc1.NgForOf, XAxisComponent, YAxisComponent, SeriesHorizontal]; }, styles: [_c24], encapsulation: 2, data: { animation: [\n            trigger('animationState', [\n                transition(':leave', [\n                    style({\n                        opacity: 1,\n                        transform: '*'\n                    }),\n                    animate(500, style({ opacity: 0, transform: 'scale(0)' }))\n                ])\n            ])\n        ] }, changeDetection: 0 });\n__decorate([\n    Input()\n], BarHorizontal2DComponent.prototype, \"legend\", void 0);\n__decorate([\n    Input()\n], BarHorizontal2DComponent.prototype, \"legendTitle\", void 0);\n__decorate([\n    Input()\n], BarHorizontal2DComponent.prototype, \"legendPosition\", void 0);\n__decorate([\n    Input()\n], BarHorizontal2DComponent.prototype, \"xAxis\", void 0);\n__decorate([\n    Input()\n], BarHorizontal2DComponent.prototype, \"yAxis\", void 0);\n__decorate([\n    Input()\n], BarHorizontal2DComponent.prototype, \"showXAxisLabel\", void 0);\n__decorate([\n    Input()\n], BarHorizontal2DComponent.prototype, \"showYAxisLabel\", void 0);\n__decorate([\n    Input()\n], BarHorizontal2DComponent.prototype, \"xAxisLabel\", void 0);\n__decorate([\n    Input()\n], BarHorizontal2DComponent.prototype, \"yAxisLabel\", void 0);\n__decorate([\n    Input()\n], BarHorizontal2DComponent.prototype, \"tooltipDisabled\", void 0);\n__decorate([\n    Input()\n], BarHorizontal2DComponent.prototype, \"gradient\", void 0);\n__decorate([\n    Input()\n], BarHorizontal2DComponent.prototype, \"showGridLines\", void 0);\n__decorate([\n    Input()\n], BarHorizontal2DComponent.prototype, \"activeEntries\", void 0);\n__decorate([\n    Input()\n], BarHorizontal2DComponent.prototype, \"schemeType\", void 0);\n__decorate([\n    Input()\n], BarHorizontal2DComponent.prototype, \"trimXAxisTicks\", void 0);\n__decorate([\n    Input()\n], BarHorizontal2DComponent.prototype, \"trimYAxisTicks\", void 0);\n__decorate([\n    Input()\n], BarHorizontal2DComponent.prototype, \"rotateXAxisTicks\", void 0);\n__decorate([\n    Input()\n], BarHorizontal2DComponent.prototype, \"maxXAxisTickLength\", void 0);\n__decorate([\n    Input()\n], BarHorizontal2DComponent.prototype, \"maxYAxisTickLength\", void 0);\n__decorate([\n    Input()\n], BarHorizontal2DComponent.prototype, \"xAxisTickFormatting\", void 0);\n__decorate([\n    Input()\n], BarHorizontal2DComponent.prototype, \"yAxisTickFormatting\", void 0);\n__decorate([\n    Input()\n], BarHorizontal2DComponent.prototype, \"xAxisTicks\", void 0);\n__decorate([\n    Input()\n], BarHorizontal2DComponent.prototype, \"yAxisTicks\", void 0);\n__decorate([\n    Input()\n], BarHorizontal2DComponent.prototype, \"groupPadding\", void 0);\n__decorate([\n    Input()\n], BarHorizontal2DComponent.prototype, \"barPadding\", void 0);\n__decorate([\n    Input()\n], BarHorizontal2DComponent.prototype, \"roundDomains\", void 0);\n__decorate([\n    Input()\n], BarHorizontal2DComponent.prototype, \"roundEdges\", void 0);\n__decorate([\n    Input()\n], BarHorizontal2DComponent.prototype, \"xScaleMax\", void 0);\n__decorate([\n    Input()\n], BarHorizontal2DComponent.prototype, \"showDataLabel\", void 0);\n__decorate([\n    Input()\n], BarHorizontal2DComponent.prototype, \"dataLabelFormatting\", void 0);\n__decorate([\n    Input()\n], BarHorizontal2DComponent.prototype, \"noBarWhenZero\", void 0);\n__decorate([\n    Output()\n], BarHorizontal2DComponent.prototype, \"activate\", void 0);\n__decorate([\n    Output()\n], BarHorizontal2DComponent.prototype, \"deactivate\", void 0);\n__decorate([\n    ContentChild('tooltipTemplate')\n], BarHorizontal2DComponent.prototype, \"tooltipTemplate\", void 0);\n\nlet BarHorizontalNormalizedComponent = class BarHorizontalNormalizedComponent extends BaseChartComponent {\n    constructor() {\n        super(...arguments);\n        this.legend = false;\n        this.legendTitle = 'Legend';\n        this.legendPosition = 'right';\n        this.tooltipDisabled = false;\n        this.showGridLines = true;\n        this.activeEntries = [];\n        this.trimXAxisTicks = true;\n        this.trimYAxisTicks = true;\n        this.rotateXAxisTicks = true;\n        this.maxXAxisTickLength = 16;\n        this.maxYAxisTickLength = 16;\n        this.barPadding = 8;\n        this.roundDomains = false;\n        this.noBarWhenZero = true;\n        this.activate = new EventEmitter();\n        this.deactivate = new EventEmitter();\n        this.margin = [10, 20, 10, 20];\n        this.xAxisHeight = 0;\n        this.yAxisWidth = 0;\n    }\n    update() {\n        super.update();\n        this.dims = calculateViewDimensions({\n            width: this.width,\n            height: this.height,\n            margins: this.margin,\n            showXAxis: this.xAxis,\n            showYAxis: this.yAxis,\n            xAxisHeight: this.xAxisHeight,\n            yAxisWidth: this.yAxisWidth,\n            showXLabel: this.showXAxisLabel,\n            showYLabel: this.showYAxisLabel,\n            showLegend: this.legend,\n            legendType: this.schemeType,\n            legendPosition: this.legendPosition\n        });\n        this.formatDates();\n        this.groupDomain = this.getGroupDomain();\n        this.innerDomain = this.getInnerDomain();\n        this.valueDomain = this.getValueDomain();\n        this.xScale = this.getXScale();\n        this.yScale = this.getYScale();\n        this.setColors();\n        this.legendOptions = this.getLegendOptions();\n        this.transform = `translate(${this.dims.xOffset} , ${this.margin[0]})`;\n    }\n    getGroupDomain() {\n        const domain = [];\n        for (const group of this.results) {\n            if (!domain.includes(group.label)) {\n                domain.push(group.label);\n            }\n        }\n        return domain;\n    }\n    getInnerDomain() {\n        const domain = [];\n        for (const group of this.results) {\n            for (const d of group.series) {\n                if (!domain.includes(d.label)) {\n                    domain.push(d.label);\n                }\n            }\n        }\n        return domain;\n    }\n    getValueDomain() {\n        return [0, 100];\n    }\n    getYScale() {\n        const spacing = this.groupDomain.length / (this.dims.height / this.barPadding + 1);\n        return scaleBand()\n            .rangeRound([0, this.dims.height])\n            .paddingInner(spacing)\n            .domain(this.groupDomain);\n    }\n    getXScale() {\n        const scale = scaleLinear()\n            .range([0, this.dims.width])\n            .domain(this.valueDomain);\n        return this.roundDomains ? scale.nice() : scale;\n    }\n    groupTransform(group) {\n        return `translate(0, ${this.yScale(group.name)})`;\n    }\n    onClick(data, group) {\n        if (group) {\n            data.series = group.name;\n        }\n        this.select.emit(data);\n    }\n    trackBy(index, item) {\n        return item.name;\n    }\n    setColors() {\n        let domain;\n        if (this.schemeType === 'ordinal') {\n            domain = this.innerDomain;\n        }\n        else {\n            domain = this.valueDomain;\n        }\n        this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n    }\n    getLegendOptions() {\n        const opts = {\n            scaleType: this.schemeType,\n            colors: undefined,\n            domain: [],\n            title: undefined,\n            position: this.legendPosition\n        };\n        if (opts.scaleType === 'ordinal') {\n            opts.domain = this.innerDomain;\n            opts.colors = this.colors;\n            opts.title = this.legendTitle;\n        }\n        else {\n            opts.domain = this.valueDomain;\n            opts.colors = this.colors.scale;\n        }\n        return opts;\n    }\n    updateYAxisWidth({ width }) {\n        this.yAxisWidth = width;\n        this.update();\n    }\n    updateXAxisHeight({ height }) {\n        this.xAxisHeight = height;\n        this.update();\n    }\n    onActivate(event, group, fromLegend = false) {\n        const item = Object.assign({}, event);\n        if (group) {\n            item.series = group.name;\n        }\n        const items = this.results\n            .map(g => g.series)\n            .flat()\n            .filter(i => {\n            if (fromLegend) {\n                return i.label === item.name;\n            }\n            else {\n                return i.name === item.name && i.series === item.series;\n            }\n        });\n        this.activeEntries = [...items];\n        this.activate.emit({ value: item, entries: this.activeEntries });\n    }\n    onDeactivate(event, group, fromLegend = false) {\n        const item = Object.assign({}, event);\n        if (group) {\n            item.series = group.name;\n        }\n        this.activeEntries = this.activeEntries.filter(i => {\n            if (fromLegend) {\n                return i.label !== item.name;\n            }\n            else {\n                return !(i.name === item.name && i.series === item.series);\n            }\n        });\n        this.deactivate.emit({ value: item, entries: this.activeEntries });\n    }\n};\nBarHorizontalNormalizedComponent.ɵfac = function BarHorizontalNormalizedComponent_Factory(t) { return ɵBarHorizontalNormalizedComponent_BaseFactory(t || BarHorizontalNormalizedComponent); };\nBarHorizontalNormalizedComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: BarHorizontalNormalizedComponent, selectors: [[\"ngx-charts-bar-horizontal-normalized\"]], contentQueries: function BarHorizontalNormalizedComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n        ɵngcc0.ɵɵcontentQuery(dirIndex, _c21, true);\n    } if (rf & 2) {\n        var _t;\n        ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tooltipTemplate = _t.first);\n    } }, inputs: { legend: \"legend\", legendTitle: \"legendTitle\", legendPosition: \"legendPosition\", tooltipDisabled: \"tooltipDisabled\", showGridLines: \"showGridLines\", activeEntries: \"activeEntries\", trimXAxisTicks: \"trimXAxisTicks\", trimYAxisTicks: \"trimYAxisTicks\", rotateXAxisTicks: \"rotateXAxisTicks\", maxXAxisTickLength: \"maxXAxisTickLength\", maxYAxisTickLength: \"maxYAxisTickLength\", barPadding: \"barPadding\", roundDomains: \"roundDomains\", noBarWhenZero: \"noBarWhenZero\", xAxis: \"xAxis\", yAxis: \"yAxis\", showXAxisLabel: \"showXAxisLabel\", showYAxisLabel: \"showYAxisLabel\", xAxisLabel: \"xAxisLabel\", yAxisLabel: \"yAxisLabel\", gradient: \"gradient\", schemeType: \"schemeType\", xAxisTickFormatting: \"xAxisTickFormatting\", yAxisTickFormatting: \"yAxisTickFormatting\", xAxisTicks: \"xAxisTicks\", yAxisTicks: \"yAxisTicks\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 5, vars: 13, consts: [[3, \"view\", \"showLegend\", \"legendOptions\", \"activeEntries\", \"animations\", \"legendLabelActivate\", \"legendLabelDeactivate\", \"legendLabelClick\"], [1, \"bar-chart\", \"chart\"], [\"ngx-charts-x-axis\", \"\", 3, \"xScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\", 4, \"ngIf\"], [\"ngx-charts-y-axis\", \"\", 3, \"yScale\", \"dims\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\", 4, \"ngIf\"], [4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"ngx-charts-x-axis\", \"\", 3, \"xScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\"], [\"ngx-charts-y-axis\", \"\", 3, \"yScale\", \"dims\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\"], [\"ngx-charts-series-horizontal\", \"\", \"type\", \"normalized\", 3, \"xScale\", \"yScale\", \"activeEntries\", \"colors\", \"series\", \"dims\", \"gradient\", \"tooltipDisabled\", \"tooltipTemplate\", \"seriesName\", \"animations\", \"noBarWhenZero\", \"select\", \"activate\", \"deactivate\"]], template: function BarHorizontalNormalizedComponent_Template(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵelementStart(0, \"ngx-charts-chart\", 0);\n        ɵngcc0.ɵɵlistener(\"legendLabelActivate\", function BarHorizontalNormalizedComponent_Template_ngx_charts_chart_legendLabelActivate_0_listener($event) { return ctx.onActivate($event, undefined, true); })(\"legendLabelDeactivate\", function BarHorizontalNormalizedComponent_Template_ngx_charts_chart_legendLabelDeactivate_0_listener($event) { return ctx.onDeactivate($event, undefined, true); })(\"legendLabelClick\", function BarHorizontalNormalizedComponent_Template_ngx_charts_chart_legendLabelClick_0_listener($event) { return ctx.onClick($event); });\n        ɵngcc0.ɵɵnamespaceSVG();\n        ɵngcc0.ɵɵelementStart(1, \"g\", 1);\n        ɵngcc0.ɵɵtemplate(2, BarHorizontalNormalizedComponent__svg_g_2_Template, 1, 10, \"g\", 2);\n        ɵngcc0.ɵɵtemplate(3, BarHorizontalNormalizedComponent__svg_g_3_Template, 1, 8, \"g\", 3);\n        ɵngcc0.ɵɵtemplate(4, BarHorizontalNormalizedComponent__svg_g_4_Template, 2, 14, \"g\", 4);\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵelementEnd();\n    } if (rf & 2) {\n        ɵngcc0.ɵɵproperty(\"view\", ɵngcc0.ɵɵpureFunction2(10, _c23, ctx.width, ctx.height))(\"showLegend\", ctx.legend)(\"legendOptions\", ctx.legendOptions)(\"activeEntries\", ctx.activeEntries)(\"animations\", ctx.animations);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵattribute(\"transform\", ctx.transform);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.xAxis);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.yAxis);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.results)(\"ngForTrackBy\", ctx.trackBy);\n    } }, directives: function () { return [ChartComponent, ɵngcc1.NgIf, ɵngcc1.NgForOf, XAxisComponent, YAxisComponent, SeriesHorizontal]; }, styles: [_c24], encapsulation: 2, data: { animation: [\n            trigger('animationState', [\n                transition(':leave', [\n                    style({\n                        opacity: 1,\n                        transform: '*'\n                    }),\n                    animate(500, style({ opacity: 0, transform: 'scale(0)' }))\n                ])\n            ])\n        ] }, changeDetection: 0 });\n__decorate([\n    Input()\n], BarHorizontalNormalizedComponent.prototype, \"legend\", void 0);\n__decorate([\n    Input()\n], BarHorizontalNormalizedComponent.prototype, \"legendTitle\", void 0);\n__decorate([\n    Input()\n], BarHorizontalNormalizedComponent.prototype, \"legendPosition\", void 0);\n__decorate([\n    Input()\n], BarHorizontalNormalizedComponent.prototype, \"xAxis\", void 0);\n__decorate([\n    Input()\n], BarHorizontalNormalizedComponent.prototype, \"yAxis\", void 0);\n__decorate([\n    Input()\n], BarHorizontalNormalizedComponent.prototype, \"showXAxisLabel\", void 0);\n__decorate([\n    Input()\n], BarHorizontalNormalizedComponent.prototype, \"showYAxisLabel\", void 0);\n__decorate([\n    Input()\n], BarHorizontalNormalizedComponent.prototype, \"xAxisLabel\", void 0);\n__decorate([\n    Input()\n], BarHorizontalNormalizedComponent.prototype, \"yAxisLabel\", void 0);\n__decorate([\n    Input()\n], BarHorizontalNormalizedComponent.prototype, \"tooltipDisabled\", void 0);\n__decorate([\n    Input()\n], BarHorizontalNormalizedComponent.prototype, \"gradient\", void 0);\n__decorate([\n    Input()\n], BarHorizontalNormalizedComponent.prototype, \"showGridLines\", void 0);\n__decorate([\n    Input()\n], BarHorizontalNormalizedComponent.prototype, \"activeEntries\", void 0);\n__decorate([\n    Input()\n], BarHorizontalNormalizedComponent.prototype, \"schemeType\", void 0);\n__decorate([\n    Input()\n], BarHorizontalNormalizedComponent.prototype, \"trimXAxisTicks\", void 0);\n__decorate([\n    Input()\n], BarHorizontalNormalizedComponent.prototype, \"trimYAxisTicks\", void 0);\n__decorate([\n    Input()\n], BarHorizontalNormalizedComponent.prototype, \"rotateXAxisTicks\", void 0);\n__decorate([\n    Input()\n], BarHorizontalNormalizedComponent.prototype, \"maxXAxisTickLength\", void 0);\n__decorate([\n    Input()\n], BarHorizontalNormalizedComponent.prototype, \"maxYAxisTickLength\", void 0);\n__decorate([\n    Input()\n], BarHorizontalNormalizedComponent.prototype, \"xAxisTickFormatting\", void 0);\n__decorate([\n    Input()\n], BarHorizontalNormalizedComponent.prototype, \"yAxisTickFormatting\", void 0);\n__decorate([\n    Input()\n], BarHorizontalNormalizedComponent.prototype, \"xAxisTicks\", void 0);\n__decorate([\n    Input()\n], BarHorizontalNormalizedComponent.prototype, \"yAxisTicks\", void 0);\n__decorate([\n    Input()\n], BarHorizontalNormalizedComponent.prototype, \"barPadding\", void 0);\n__decorate([\n    Input()\n], BarHorizontalNormalizedComponent.prototype, \"roundDomains\", void 0);\n__decorate([\n    Input()\n], BarHorizontalNormalizedComponent.prototype, \"noBarWhenZero\", void 0);\n__decorate([\n    Output()\n], BarHorizontalNormalizedComponent.prototype, \"activate\", void 0);\n__decorate([\n    Output()\n], BarHorizontalNormalizedComponent.prototype, \"deactivate\", void 0);\n__decorate([\n    ContentChild('tooltipTemplate')\n], BarHorizontalNormalizedComponent.prototype, \"tooltipTemplate\", void 0);\n\nlet BarHorizontalStackedComponent = class BarHorizontalStackedComponent extends BaseChartComponent {\n    constructor() {\n        super(...arguments);\n        this.legend = false;\n        this.legendTitle = 'Legend';\n        this.legendPosition = 'right';\n        this.tooltipDisabled = false;\n        this.showGridLines = true;\n        this.activeEntries = [];\n        this.trimXAxisTicks = true;\n        this.trimYAxisTicks = true;\n        this.rotateXAxisTicks = true;\n        this.maxXAxisTickLength = 16;\n        this.maxYAxisTickLength = 16;\n        this.barPadding = 8;\n        this.roundDomains = false;\n        this.showDataLabel = false;\n        this.noBarWhenZero = true;\n        this.activate = new EventEmitter();\n        this.deactivate = new EventEmitter();\n        this.margin = [10, 20, 10, 20];\n        this.xAxisHeight = 0;\n        this.yAxisWidth = 0;\n        this.dataLabelMaxWidth = { negative: 0, positive: 0 };\n    }\n    update() {\n        super.update();\n        if (!this.showDataLabel) {\n            this.dataLabelMaxWidth = { negative: 0, positive: 0 };\n        }\n        this.margin = [10, 20 + this.dataLabelMaxWidth.positive, 10, 20 + this.dataLabelMaxWidth.negative];\n        this.dims = calculateViewDimensions({\n            width: this.width,\n            height: this.height,\n            margins: this.margin,\n            showXAxis: this.xAxis,\n            showYAxis: this.yAxis,\n            xAxisHeight: this.xAxisHeight,\n            yAxisWidth: this.yAxisWidth,\n            showXLabel: this.showXAxisLabel,\n            showYLabel: this.showYAxisLabel,\n            showLegend: this.legend,\n            legendType: this.schemeType,\n            legendPosition: this.legendPosition\n        });\n        this.formatDates();\n        this.groupDomain = this.getGroupDomain();\n        this.innerDomain = this.getInnerDomain();\n        this.valueDomain = this.getValueDomain();\n        this.xScale = this.getXScale();\n        this.yScale = this.getYScale();\n        this.setColors();\n        this.legendOptions = this.getLegendOptions();\n        this.transform = `translate(${this.dims.xOffset} , ${this.margin[0]})`;\n    }\n    getGroupDomain() {\n        const domain = [];\n        for (const group of this.results) {\n            if (!domain.includes(group.label)) {\n                domain.push(group.label);\n            }\n        }\n        return domain;\n    }\n    getInnerDomain() {\n        const domain = [];\n        for (const group of this.results) {\n            for (const d of group.series) {\n                if (!domain.includes(d.label)) {\n                    domain.push(d.label);\n                }\n            }\n        }\n        return domain;\n    }\n    getValueDomain() {\n        const domain = [];\n        let smallest = 0;\n        let biggest = 0;\n        for (const group of this.results) {\n            let smallestSum = 0;\n            let biggestSum = 0;\n            for (const d of group.series) {\n                if (d.value < 0) {\n                    smallestSum += d.value;\n                }\n                else {\n                    biggestSum += d.value;\n                }\n                smallest = d.value < smallest ? d.value : smallest;\n                biggest = d.value > biggest ? d.value : biggest;\n            }\n            domain.push(smallestSum);\n            domain.push(biggestSum);\n        }\n        domain.push(smallest);\n        domain.push(biggest);\n        const min = Math.min(0, ...domain);\n        const max = this.xScaleMax ? Math.max(this.xScaleMax, ...domain) : Math.max(...domain);\n        return [min, max];\n    }\n    getYScale() {\n        const spacing = this.groupDomain.length / (this.dims.height / this.barPadding + 1);\n        return scaleBand()\n            .rangeRound([0, this.dims.height])\n            .paddingInner(spacing)\n            .domain(this.groupDomain);\n    }\n    getXScale() {\n        const scale = scaleLinear()\n            .range([0, this.dims.width])\n            .domain(this.valueDomain);\n        return this.roundDomains ? scale.nice() : scale;\n    }\n    groupTransform(group) {\n        return `translate(0, ${this.yScale(group.name)})`;\n    }\n    onClick(data, group) {\n        if (group) {\n            data.series = group.name;\n        }\n        this.select.emit(data);\n    }\n    trackBy(index, item) {\n        return item.name;\n    }\n    setColors() {\n        let domain;\n        if (this.schemeType === 'ordinal') {\n            domain = this.innerDomain;\n        }\n        else {\n            domain = this.valueDomain;\n        }\n        this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n    }\n    getLegendOptions() {\n        const opts = {\n            scaleType: this.schemeType,\n            colors: undefined,\n            domain: [],\n            title: undefined,\n            position: this.legendPosition\n        };\n        if (opts.scaleType === 'ordinal') {\n            opts.domain = this.innerDomain;\n            opts.colors = this.colors;\n            opts.title = this.legendTitle;\n        }\n        else {\n            opts.domain = this.valueDomain;\n            opts.colors = this.colors.scale;\n        }\n        return opts;\n    }\n    updateYAxisWidth({ width }) {\n        this.yAxisWidth = width;\n        this.update();\n    }\n    updateXAxisHeight({ height }) {\n        this.xAxisHeight = height;\n        this.update();\n    }\n    onDataLabelMaxWidthChanged(event, groupIndex) {\n        if (event.size.negative) {\n            this.dataLabelMaxWidth.negative = Math.max(this.dataLabelMaxWidth.negative, event.size.width);\n        }\n        else {\n            this.dataLabelMaxWidth.positive = Math.max(this.dataLabelMaxWidth.positive, event.size.width);\n        }\n        if (groupIndex === this.results.length - 1) {\n            setTimeout(() => this.update());\n        }\n    }\n    onActivate(event, group, fromLegend = false) {\n        const item = Object.assign({}, event);\n        if (group) {\n            item.series = group.name;\n        }\n        const items = this.results\n            .map(g => g.series)\n            .flat()\n            .filter(i => {\n            if (fromLegend) {\n                return i.label === item.name;\n            }\n            else {\n                return i.name === item.name && i.series === item.series;\n            }\n        });\n        this.activeEntries = [...items];\n        this.activate.emit({ value: item, entries: this.activeEntries });\n    }\n    onDeactivate(event, group, fromLegend = false) {\n        const item = Object.assign({}, event);\n        if (group) {\n            item.series = group.name;\n        }\n        this.activeEntries = this.activeEntries.filter(i => {\n            if (fromLegend) {\n                return i.label !== item.name;\n            }\n            else {\n                return !(i.name === item.name && i.series === item.series);\n            }\n        });\n        this.deactivate.emit({ value: item, entries: this.activeEntries });\n    }\n};\nBarHorizontalStackedComponent.ɵfac = function BarHorizontalStackedComponent_Factory(t) { return ɵBarHorizontalStackedComponent_BaseFactory(t || BarHorizontalStackedComponent); };\nBarHorizontalStackedComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: BarHorizontalStackedComponent, selectors: [[\"ngx-charts-bar-horizontal-stacked\"]], contentQueries: function BarHorizontalStackedComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n        ɵngcc0.ɵɵcontentQuery(dirIndex, _c21, true);\n    } if (rf & 2) {\n        var _t;\n        ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tooltipTemplate = _t.first);\n    } }, inputs: { legend: \"legend\", legendTitle: \"legendTitle\", legendPosition: \"legendPosition\", tooltipDisabled: \"tooltipDisabled\", showGridLines: \"showGridLines\", activeEntries: \"activeEntries\", trimXAxisTicks: \"trimXAxisTicks\", trimYAxisTicks: \"trimYAxisTicks\", rotateXAxisTicks: \"rotateXAxisTicks\", maxXAxisTickLength: \"maxXAxisTickLength\", maxYAxisTickLength: \"maxYAxisTickLength\", barPadding: \"barPadding\", roundDomains: \"roundDomains\", showDataLabel: \"showDataLabel\", noBarWhenZero: \"noBarWhenZero\", xAxis: \"xAxis\", yAxis: \"yAxis\", showXAxisLabel: \"showXAxisLabel\", showYAxisLabel: \"showYAxisLabel\", xAxisLabel: \"xAxisLabel\", yAxisLabel: \"yAxisLabel\", gradient: \"gradient\", schemeType: \"schemeType\", xAxisTickFormatting: \"xAxisTickFormatting\", yAxisTickFormatting: \"yAxisTickFormatting\", xAxisTicks: \"xAxisTicks\", yAxisTicks: \"yAxisTicks\", xScaleMax: \"xScaleMax\", dataLabelFormatting: \"dataLabelFormatting\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 5, vars: 13, consts: [[3, \"view\", \"showLegend\", \"legendOptions\", \"activeEntries\", \"animations\", \"legendLabelActivate\", \"legendLabelDeactivate\", \"legendLabelClick\"], [1, \"bar-chart\", \"chart\"], [\"ngx-charts-x-axis\", \"\", 3, \"xScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\", 4, \"ngIf\"], [\"ngx-charts-y-axis\", \"\", 3, \"yScale\", \"dims\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"yAxisOffset\", \"dimensionsChanged\", 4, \"ngIf\"], [4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"ngx-charts-x-axis\", \"\", 3, \"xScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\"], [\"ngx-charts-y-axis\", \"\", 3, \"yScale\", \"dims\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"yAxisOffset\", \"dimensionsChanged\"], [\"ngx-charts-series-horizontal\", \"\", \"type\", \"stacked\", 3, \"xScale\", \"yScale\", \"colors\", \"series\", \"activeEntries\", \"dims\", \"gradient\", \"tooltipDisabled\", \"tooltipTemplate\", \"seriesName\", \"animations\", \"showDataLabel\", \"dataLabelFormatting\", \"noBarWhenZero\", \"select\", \"activate\", \"deactivate\", \"dataLabelWidthChanged\"]], template: function BarHorizontalStackedComponent_Template(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵelementStart(0, \"ngx-charts-chart\", 0);\n        ɵngcc0.ɵɵlistener(\"legendLabelActivate\", function BarHorizontalStackedComponent_Template_ngx_charts_chart_legendLabelActivate_0_listener($event) { return ctx.onActivate($event, undefined, true); })(\"legendLabelDeactivate\", function BarHorizontalStackedComponent_Template_ngx_charts_chart_legendLabelDeactivate_0_listener($event) { return ctx.onDeactivate($event, undefined, true); })(\"legendLabelClick\", function BarHorizontalStackedComponent_Template_ngx_charts_chart_legendLabelClick_0_listener($event) { return ctx.onClick($event); });\n        ɵngcc0.ɵɵnamespaceSVG();\n        ɵngcc0.ɵɵelementStart(1, \"g\", 1);\n        ɵngcc0.ɵɵtemplate(2, BarHorizontalStackedComponent__svg_g_2_Template, 1, 10, \"g\", 2);\n        ɵngcc0.ɵɵtemplate(3, BarHorizontalStackedComponent__svg_g_3_Template, 1, 9, \"g\", 3);\n        ɵngcc0.ɵɵtemplate(4, BarHorizontalStackedComponent__svg_g_4_Template, 2, 16, \"g\", 4);\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵelementEnd();\n    } if (rf & 2) {\n        ɵngcc0.ɵɵproperty(\"view\", ɵngcc0.ɵɵpureFunction2(10, _c23, ctx.width, ctx.height))(\"showLegend\", ctx.legend)(\"legendOptions\", ctx.legendOptions)(\"activeEntries\", ctx.activeEntries)(\"animations\", ctx.animations);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵattribute(\"transform\", ctx.transform);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.xAxis);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.yAxis);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.results)(\"ngForTrackBy\", ctx.trackBy);\n    } }, directives: function () { return [ChartComponent, ɵngcc1.NgIf, ɵngcc1.NgForOf, XAxisComponent, YAxisComponent, SeriesHorizontal]; }, styles: [_c24], encapsulation: 2, data: { animation: [\n            trigger('animationState', [\n                transition(':leave', [\n                    style({\n                        opacity: 1,\n                        transform: '*'\n                    }),\n                    animate(500, style({ opacity: 0, transform: 'scale(0)' }))\n                ])\n            ])\n        ] }, changeDetection: 0 });\n__decorate([\n    Input()\n], BarHorizontalStackedComponent.prototype, \"legend\", void 0);\n__decorate([\n    Input()\n], BarHorizontalStackedComponent.prototype, \"legendTitle\", void 0);\n__decorate([\n    Input()\n], BarHorizontalStackedComponent.prototype, \"legendPosition\", void 0);\n__decorate([\n    Input()\n], BarHorizontalStackedComponent.prototype, \"xAxis\", void 0);\n__decorate([\n    Input()\n], BarHorizontalStackedComponent.prototype, \"yAxis\", void 0);\n__decorate([\n    Input()\n], BarHorizontalStackedComponent.prototype, \"showXAxisLabel\", void 0);\n__decorate([\n    Input()\n], BarHorizontalStackedComponent.prototype, \"showYAxisLabel\", void 0);\n__decorate([\n    Input()\n], BarHorizontalStackedComponent.prototype, \"xAxisLabel\", void 0);\n__decorate([\n    Input()\n], BarHorizontalStackedComponent.prototype, \"yAxisLabel\", void 0);\n__decorate([\n    Input()\n], BarHorizontalStackedComponent.prototype, \"tooltipDisabled\", void 0);\n__decorate([\n    Input()\n], BarHorizontalStackedComponent.prototype, \"gradient\", void 0);\n__decorate([\n    Input()\n], BarHorizontalStackedComponent.prototype, \"showGridLines\", void 0);\n__decorate([\n    Input()\n], BarHorizontalStackedComponent.prototype, \"activeEntries\", void 0);\n__decorate([\n    Input()\n], BarHorizontalStackedComponent.prototype, \"schemeType\", void 0);\n__decorate([\n    Input()\n], BarHorizontalStackedComponent.prototype, \"trimXAxisTicks\", void 0);\n__decorate([\n    Input()\n], BarHorizontalStackedComponent.prototype, \"trimYAxisTicks\", void 0);\n__decorate([\n    Input()\n], BarHorizontalStackedComponent.prototype, \"rotateXAxisTicks\", void 0);\n__decorate([\n    Input()\n], BarHorizontalStackedComponent.prototype, \"maxXAxisTickLength\", void 0);\n__decorate([\n    Input()\n], BarHorizontalStackedComponent.prototype, \"maxYAxisTickLength\", void 0);\n__decorate([\n    Input()\n], BarHorizontalStackedComponent.prototype, \"xAxisTickFormatting\", void 0);\n__decorate([\n    Input()\n], BarHorizontalStackedComponent.prototype, \"yAxisTickFormatting\", void 0);\n__decorate([\n    Input()\n], BarHorizontalStackedComponent.prototype, \"xAxisTicks\", void 0);\n__decorate([\n    Input()\n], BarHorizontalStackedComponent.prototype, \"yAxisTicks\", void 0);\n__decorate([\n    Input()\n], BarHorizontalStackedComponent.prototype, \"barPadding\", void 0);\n__decorate([\n    Input()\n], BarHorizontalStackedComponent.prototype, \"roundDomains\", void 0);\n__decorate([\n    Input()\n], BarHorizontalStackedComponent.prototype, \"xScaleMax\", void 0);\n__decorate([\n    Input()\n], BarHorizontalStackedComponent.prototype, \"showDataLabel\", void 0);\n__decorate([\n    Input()\n], BarHorizontalStackedComponent.prototype, \"dataLabelFormatting\", void 0);\n__decorate([\n    Input()\n], BarHorizontalStackedComponent.prototype, \"noBarWhenZero\", void 0);\n__decorate([\n    Output()\n], BarHorizontalStackedComponent.prototype, \"activate\", void 0);\n__decorate([\n    Output()\n], BarHorizontalStackedComponent.prototype, \"deactivate\", void 0);\n__decorate([\n    ContentChild('tooltipTemplate')\n], BarHorizontalStackedComponent.prototype, \"tooltipTemplate\", void 0);\n\nlet BarVerticalComponent = class BarVerticalComponent extends BaseChartComponent {\n    constructor() {\n        super(...arguments);\n        this.legend = false;\n        this.legendTitle = 'Legend';\n        this.legendPosition = 'right';\n        this.tooltipDisabled = false;\n        this.showGridLines = true;\n        this.activeEntries = [];\n        this.trimXAxisTicks = true;\n        this.trimYAxisTicks = true;\n        this.rotateXAxisTicks = true;\n        this.maxXAxisTickLength = 16;\n        this.maxYAxisTickLength = 16;\n        this.barPadding = 8;\n        this.roundDomains = false;\n        this.roundEdges = true;\n        this.showDataLabel = false;\n        this.noBarWhenZero = true;\n        this.activate = new EventEmitter();\n        this.deactivate = new EventEmitter();\n        this.margin = [10, 20, 10, 20];\n        this.xAxisHeight = 0;\n        this.yAxisWidth = 0;\n        this.dataLabelMaxHeight = { negative: 0, positive: 0 };\n    }\n    update() {\n        super.update();\n        if (!this.showDataLabel) {\n            this.dataLabelMaxHeight = { negative: 0, positive: 0 };\n        }\n        this.margin = [10 + this.dataLabelMaxHeight.positive, 20, 10 + this.dataLabelMaxHeight.negative, 20];\n        this.dims = calculateViewDimensions({\n            width: this.width,\n            height: this.height,\n            margins: this.margin,\n            showXAxis: this.xAxis,\n            showYAxis: this.yAxis,\n            xAxisHeight: this.xAxisHeight,\n            yAxisWidth: this.yAxisWidth,\n            showXLabel: this.showXAxisLabel,\n            showYLabel: this.showYAxisLabel,\n            showLegend: this.legend,\n            legendType: this.schemeType,\n            legendPosition: this.legendPosition\n        });\n        this.formatDates();\n        if (this.showDataLabel) {\n            this.dims.height -= this.dataLabelMaxHeight.negative;\n        }\n        this.xScale = this.getXScale();\n        this.yScale = this.getYScale();\n        this.setColors();\n        this.legendOptions = this.getLegendOptions();\n        this.transform = `translate(${this.dims.xOffset} , ${this.margin[0] + this.dataLabelMaxHeight.negative})`;\n    }\n    getXScale() {\n        this.xDomain = this.getXDomain();\n        const spacing = this.xDomain.length / (this.dims.width / this.barPadding + 1);\n        return scaleBand()\n            .range([0, this.dims.width])\n            .paddingInner(spacing)\n            .domain(this.xDomain);\n    }\n    getYScale() {\n        this.yDomain = this.getYDomain();\n        const scale = scaleLinear()\n            .range([this.dims.height, 0])\n            .domain(this.yDomain);\n        return this.roundDomains ? scale.nice() : scale;\n    }\n    getXDomain() {\n        return this.results.map(d => d.label);\n    }\n    getYDomain() {\n        const values = this.results.map(d => d.value);\n        let min = this.yScaleMin ? Math.min(this.yScaleMin, ...values) : Math.min(0, ...values);\n        if (this.yAxisTicks && !this.yAxisTicks.some(isNaN)) {\n            min = Math.min(min, ...this.yAxisTicks);\n        }\n        let max = this.yScaleMax ? Math.max(this.yScaleMax, ...values) : Math.max(0, ...values);\n        if (this.yAxisTicks && !this.yAxisTicks.some(isNaN)) {\n            max = Math.max(max, ...this.yAxisTicks);\n        }\n        return [min, max];\n    }\n    onClick(data) {\n        this.select.emit(data);\n    }\n    setColors() {\n        let domain;\n        if (this.schemeType === 'ordinal') {\n            domain = this.xDomain;\n        }\n        else {\n            domain = this.yDomain;\n        }\n        this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n    }\n    getLegendOptions() {\n        const opts = {\n            scaleType: this.schemeType,\n            colors: undefined,\n            domain: [],\n            title: undefined,\n            position: this.legendPosition\n        };\n        if (opts.scaleType === 'ordinal') {\n            opts.domain = this.xDomain;\n            opts.colors = this.colors;\n            opts.title = this.legendTitle;\n        }\n        else {\n            opts.domain = this.yDomain;\n            opts.colors = this.colors.scale;\n        }\n        return opts;\n    }\n    updateYAxisWidth({ width }) {\n        this.yAxisWidth = width;\n        this.update();\n    }\n    updateXAxisHeight({ height }) {\n        this.xAxisHeight = height;\n        this.update();\n    }\n    onDataLabelMaxHeightChanged(event) {\n        if (event.size.negative) {\n            this.dataLabelMaxHeight.negative = Math.max(this.dataLabelMaxHeight.negative, event.size.height);\n        }\n        else {\n            this.dataLabelMaxHeight.positive = Math.max(this.dataLabelMaxHeight.positive, event.size.height);\n        }\n        if (event.index === this.results.length - 1) {\n            setTimeout(() => this.update());\n        }\n    }\n    onActivate(item, fromLegend = false) {\n        item = this.results.find(d => {\n            if (fromLegend) {\n                return d.label === item.name;\n            }\n            else {\n                return d.name === item.name;\n            }\n        });\n        const idx = this.activeEntries.findIndex(d => {\n            return d.name === item.name && d.value === item.value && d.series === item.series;\n        });\n        if (idx > -1) {\n            return;\n        }\n        this.activeEntries = [item, ...this.activeEntries];\n        this.activate.emit({ value: item, entries: this.activeEntries });\n    }\n    onDeactivate(item, fromLegend = false) {\n        item = this.results.find(d => {\n            if (fromLegend) {\n                return d.label === item.name;\n            }\n            else {\n                return d.name === item.name;\n            }\n        });\n        const idx = this.activeEntries.findIndex(d => {\n            return d.name === item.name && d.value === item.value && d.series === item.series;\n        });\n        this.activeEntries.splice(idx, 1);\n        this.activeEntries = [...this.activeEntries];\n        this.deactivate.emit({ value: item, entries: this.activeEntries });\n    }\n};\nBarVerticalComponent.ɵfac = function BarVerticalComponent_Factory(t) { return ɵBarVerticalComponent_BaseFactory(t || BarVerticalComponent); };\nBarVerticalComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: BarVerticalComponent, selectors: [[\"ngx-charts-bar-vertical\"]], contentQueries: function BarVerticalComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n        ɵngcc0.ɵɵcontentQuery(dirIndex, _c21, true);\n    } if (rf & 2) {\n        var _t;\n        ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tooltipTemplate = _t.first);\n    } }, inputs: { legend: \"legend\", legendTitle: \"legendTitle\", legendPosition: \"legendPosition\", tooltipDisabled: \"tooltipDisabled\", showGridLines: \"showGridLines\", activeEntries: \"activeEntries\", trimXAxisTicks: \"trimXAxisTicks\", trimYAxisTicks: \"trimYAxisTicks\", rotateXAxisTicks: \"rotateXAxisTicks\", maxXAxisTickLength: \"maxXAxisTickLength\", maxYAxisTickLength: \"maxYAxisTickLength\", barPadding: \"barPadding\", roundDomains: \"roundDomains\", roundEdges: \"roundEdges\", showDataLabel: \"showDataLabel\", noBarWhenZero: \"noBarWhenZero\", xAxis: \"xAxis\", yAxis: \"yAxis\", showXAxisLabel: \"showXAxisLabel\", showYAxisLabel: \"showYAxisLabel\", xAxisLabel: \"xAxisLabel\", yAxisLabel: \"yAxisLabel\", gradient: \"gradient\", schemeType: \"schemeType\", xAxisTickFormatting: \"xAxisTickFormatting\", yAxisTickFormatting: \"yAxisTickFormatting\", xAxisTicks: \"xAxisTicks\", yAxisTicks: \"yAxisTicks\", yScaleMax: \"yScaleMax\", yScaleMin: \"yScaleMin\", dataLabelFormatting: \"dataLabelFormatting\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 5, vars: 25, consts: [[3, \"view\", \"showLegend\", \"legendOptions\", \"activeEntries\", \"animations\", \"legendLabelClick\", \"legendLabelActivate\", \"legendLabelDeactivate\"], [1, \"bar-chart\", \"chart\"], [\"ngx-charts-x-axis\", \"\", 3, \"xScale\", \"dims\", \"showLabel\", \"labelText\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"xAxisOffset\", \"dimensionsChanged\", 4, \"ngIf\"], [\"ngx-charts-y-axis\", \"\", 3, \"yScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\", 4, \"ngIf\"], [\"ngx-charts-series-vertical\", \"\", 3, \"xScale\", \"yScale\", \"colors\", \"series\", \"dims\", \"gradient\", \"tooltipDisabled\", \"tooltipTemplate\", \"showDataLabel\", \"dataLabelFormatting\", \"activeEntries\", \"roundEdges\", \"animations\", \"noBarWhenZero\", \"activate\", \"deactivate\", \"select\", \"dataLabelHeightChanged\"], [\"ngx-charts-x-axis\", \"\", 3, \"xScale\", \"dims\", \"showLabel\", \"labelText\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"xAxisOffset\", \"dimensionsChanged\"], [\"ngx-charts-y-axis\", \"\", 3, \"yScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\"]], template: function BarVerticalComponent_Template(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵelementStart(0, \"ngx-charts-chart\", 0);\n        ɵngcc0.ɵɵlistener(\"legendLabelClick\", function BarVerticalComponent_Template_ngx_charts_chart_legendLabelClick_0_listener($event) { return ctx.onClick($event); })(\"legendLabelActivate\", function BarVerticalComponent_Template_ngx_charts_chart_legendLabelActivate_0_listener($event) { return ctx.onActivate($event, true); })(\"legendLabelDeactivate\", function BarVerticalComponent_Template_ngx_charts_chart_legendLabelDeactivate_0_listener($event) { return ctx.onDeactivate($event, true); });\n        ɵngcc0.ɵɵnamespaceSVG();\n        ɵngcc0.ɵɵelementStart(1, \"g\", 1);\n        ɵngcc0.ɵɵtemplate(2, BarVerticalComponent__svg_g_2_Template, 1, 10, \"g\", 2);\n        ɵngcc0.ɵɵtemplate(3, BarVerticalComponent__svg_g_3_Template, 1, 9, \"g\", 3);\n        ɵngcc0.ɵɵelementStart(4, \"g\", 4);\n        ɵngcc0.ɵɵlistener(\"activate\", function BarVerticalComponent_Template__svg_g_activate_4_listener($event) { return ctx.onActivate($event); })(\"deactivate\", function BarVerticalComponent_Template__svg_g_deactivate_4_listener($event) { return ctx.onDeactivate($event); })(\"select\", function BarVerticalComponent_Template__svg_g_select_4_listener($event) { return ctx.onClick($event); })(\"dataLabelHeightChanged\", function BarVerticalComponent_Template__svg_g_dataLabelHeightChanged_4_listener($event) { return ctx.onDataLabelMaxHeightChanged($event); });\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵelementEnd();\n    } if (rf & 2) {\n        ɵngcc0.ɵɵproperty(\"view\", ɵngcc0.ɵɵpureFunction2(22, _c23, ctx.width, ctx.height))(\"showLegend\", ctx.legend)(\"legendOptions\", ctx.legendOptions)(\"activeEntries\", ctx.activeEntries)(\"animations\", ctx.animations);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵattribute(\"transform\", ctx.transform);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.xAxis);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.yAxis);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"xScale\", ctx.xScale)(\"yScale\", ctx.yScale)(\"colors\", ctx.colors)(\"series\", ctx.results)(\"dims\", ctx.dims)(\"gradient\", ctx.gradient)(\"tooltipDisabled\", ctx.tooltipDisabled)(\"tooltipTemplate\", ctx.tooltipTemplate)(\"showDataLabel\", ctx.showDataLabel)(\"dataLabelFormatting\", ctx.dataLabelFormatting)(\"activeEntries\", ctx.activeEntries)(\"roundEdges\", ctx.roundEdges)(\"animations\", ctx.animations)(\"noBarWhenZero\", ctx.noBarWhenZero);\n    } }, directives: function () { return [ChartComponent, ɵngcc1.NgIf, SeriesVerticalComponent, XAxisComponent, YAxisComponent]; }, styles: [_c24], encapsulation: 2, changeDetection: 0 });\n__decorate([\n    Input()\n], BarVerticalComponent.prototype, \"legend\", void 0);\n__decorate([\n    Input()\n], BarVerticalComponent.prototype, \"legendTitle\", void 0);\n__decorate([\n    Input()\n], BarVerticalComponent.prototype, \"legendPosition\", void 0);\n__decorate([\n    Input()\n], BarVerticalComponent.prototype, \"xAxis\", void 0);\n__decorate([\n    Input()\n], BarVerticalComponent.prototype, \"yAxis\", void 0);\n__decorate([\n    Input()\n], BarVerticalComponent.prototype, \"showXAxisLabel\", void 0);\n__decorate([\n    Input()\n], BarVerticalComponent.prototype, \"showYAxisLabel\", void 0);\n__decorate([\n    Input()\n], BarVerticalComponent.prototype, \"xAxisLabel\", void 0);\n__decorate([\n    Input()\n], BarVerticalComponent.prototype, \"yAxisLabel\", void 0);\n__decorate([\n    Input()\n], BarVerticalComponent.prototype, \"tooltipDisabled\", void 0);\n__decorate([\n    Input()\n], BarVerticalComponent.prototype, \"gradient\", void 0);\n__decorate([\n    Input()\n], BarVerticalComponent.prototype, \"showGridLines\", void 0);\n__decorate([\n    Input()\n], BarVerticalComponent.prototype, \"activeEntries\", void 0);\n__decorate([\n    Input()\n], BarVerticalComponent.prototype, \"schemeType\", void 0);\n__decorate([\n    Input()\n], BarVerticalComponent.prototype, \"trimXAxisTicks\", void 0);\n__decorate([\n    Input()\n], BarVerticalComponent.prototype, \"trimYAxisTicks\", void 0);\n__decorate([\n    Input()\n], BarVerticalComponent.prototype, \"rotateXAxisTicks\", void 0);\n__decorate([\n    Input()\n], BarVerticalComponent.prototype, \"maxXAxisTickLength\", void 0);\n__decorate([\n    Input()\n], BarVerticalComponent.prototype, \"maxYAxisTickLength\", void 0);\n__decorate([\n    Input()\n], BarVerticalComponent.prototype, \"xAxisTickFormatting\", void 0);\n__decorate([\n    Input()\n], BarVerticalComponent.prototype, \"yAxisTickFormatting\", void 0);\n__decorate([\n    Input()\n], BarVerticalComponent.prototype, \"xAxisTicks\", void 0);\n__decorate([\n    Input()\n], BarVerticalComponent.prototype, \"yAxisTicks\", void 0);\n__decorate([\n    Input()\n], BarVerticalComponent.prototype, \"barPadding\", void 0);\n__decorate([\n    Input()\n], BarVerticalComponent.prototype, \"roundDomains\", void 0);\n__decorate([\n    Input()\n], BarVerticalComponent.prototype, \"roundEdges\", void 0);\n__decorate([\n    Input()\n], BarVerticalComponent.prototype, \"yScaleMax\", void 0);\n__decorate([\n    Input()\n], BarVerticalComponent.prototype, \"yScaleMin\", void 0);\n__decorate([\n    Input()\n], BarVerticalComponent.prototype, \"showDataLabel\", void 0);\n__decorate([\n    Input()\n], BarVerticalComponent.prototype, \"dataLabelFormatting\", void 0);\n__decorate([\n    Input()\n], BarVerticalComponent.prototype, \"noBarWhenZero\", void 0);\n__decorate([\n    Output()\n], BarVerticalComponent.prototype, \"activate\", void 0);\n__decorate([\n    Output()\n], BarVerticalComponent.prototype, \"deactivate\", void 0);\n__decorate([\n    ContentChild('tooltipTemplate')\n], BarVerticalComponent.prototype, \"tooltipTemplate\", void 0);\n\nlet BarVertical2DComponent = class BarVertical2DComponent extends BaseChartComponent {\n    constructor() {\n        super(...arguments);\n        this.legend = false;\n        this.legendTitle = 'Legend';\n        this.legendPosition = 'right';\n        this.tooltipDisabled = false;\n        this.scaleType = 'ordinal';\n        this.showGridLines = true;\n        this.activeEntries = [];\n        this.trimXAxisTicks = true;\n        this.trimYAxisTicks = true;\n        this.rotateXAxisTicks = true;\n        this.maxXAxisTickLength = 16;\n        this.maxYAxisTickLength = 16;\n        this.groupPadding = 16;\n        this.barPadding = 8;\n        this.roundDomains = false;\n        this.roundEdges = true;\n        this.showDataLabel = false;\n        this.noBarWhenZero = true;\n        this.activate = new EventEmitter();\n        this.deactivate = new EventEmitter();\n        this.margin = [10, 20, 10, 20];\n        this.xAxisHeight = 0;\n        this.yAxisWidth = 0;\n        this.dataLabelMaxHeight = { negative: 0, positive: 0 };\n    }\n    update() {\n        super.update();\n        if (!this.showDataLabel) {\n            this.dataLabelMaxHeight = { negative: 0, positive: 0 };\n        }\n        this.margin = [10 + this.dataLabelMaxHeight.positive, 20, 10 + this.dataLabelMaxHeight.negative, 20];\n        this.dims = calculateViewDimensions({\n            width: this.width,\n            height: this.height,\n            margins: this.margin,\n            showXAxis: this.xAxis,\n            showYAxis: this.yAxis,\n            xAxisHeight: this.xAxisHeight,\n            yAxisWidth: this.yAxisWidth,\n            showXLabel: this.showXAxisLabel,\n            showYLabel: this.showYAxisLabel,\n            showLegend: this.legend,\n            legendType: this.schemeType,\n            legendPosition: this.legendPosition\n        });\n        if (this.showDataLabel) {\n            this.dims.height -= this.dataLabelMaxHeight.negative;\n        }\n        this.formatDates();\n        this.groupDomain = this.getGroupDomain();\n        this.innerDomain = this.getInnerDomain();\n        this.valuesDomain = this.getValueDomain();\n        this.groupScale = this.getGroupScale();\n        this.innerScale = this.getInnerScale();\n        this.valueScale = this.getValueScale();\n        this.setColors();\n        this.legendOptions = this.getLegendOptions();\n        this.transform = `translate(${this.dims.xOffset} , ${this.margin[0] + this.dataLabelMaxHeight.negative})`;\n    }\n    onDataLabelMaxHeightChanged(event, groupIndex) {\n        if (event.size.negative) {\n            this.dataLabelMaxHeight.negative = Math.max(this.dataLabelMaxHeight.negative, event.size.height);\n        }\n        else {\n            this.dataLabelMaxHeight.positive = Math.max(this.dataLabelMaxHeight.positive, event.size.height);\n        }\n        if (groupIndex === this.results.length - 1) {\n            setTimeout(() => this.update());\n        }\n    }\n    getGroupScale() {\n        const spacing = this.groupDomain.length / (this.dims.height / this.groupPadding + 1);\n        return scaleBand()\n            .rangeRound([0, this.dims.width])\n            .paddingInner(spacing)\n            .paddingOuter(spacing / 2)\n            .domain(this.groupDomain);\n    }\n    getInnerScale() {\n        const width = this.groupScale.bandwidth();\n        const spacing = this.innerDomain.length / (width / this.barPadding + 1);\n        return scaleBand()\n            .rangeRound([0, width])\n            .paddingInner(spacing)\n            .domain(this.innerDomain);\n    }\n    getValueScale() {\n        const scale = scaleLinear()\n            .range([this.dims.height, 0])\n            .domain(this.valuesDomain);\n        return this.roundDomains ? scale.nice() : scale;\n    }\n    getGroupDomain() {\n        const domain = [];\n        for (const group of this.results) {\n            if (!domain.includes(group.label)) {\n                domain.push(group.label);\n            }\n        }\n        return domain;\n    }\n    getInnerDomain() {\n        const domain = [];\n        for (const group of this.results) {\n            for (const d of group.series) {\n                if (!domain.includes(d.label)) {\n                    domain.push(d.label);\n                }\n            }\n        }\n        return domain;\n    }\n    getValueDomain() {\n        const domain = [];\n        for (const group of this.results) {\n            for (const d of group.series) {\n                if (!domain.includes(d.value)) {\n                    domain.push(d.value);\n                }\n            }\n        }\n        const min = Math.min(0, ...domain);\n        const max = this.yScaleMax ? Math.max(this.yScaleMax, ...domain) : Math.max(0, ...domain);\n        return [min, max];\n    }\n    groupTransform(group) {\n        return `translate(${this.groupScale(group.label)}, 0)`;\n    }\n    onClick(data, group) {\n        if (group) {\n            data.series = group.name;\n        }\n        this.select.emit(data);\n    }\n    trackBy(index, item) {\n        return item.name;\n    }\n    setColors() {\n        let domain;\n        if (this.schemeType === 'ordinal') {\n            domain = this.innerDomain;\n        }\n        else {\n            domain = this.valuesDomain;\n        }\n        this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n    }\n    getLegendOptions() {\n        const opts = {\n            scaleType: this.schemeType,\n            colors: undefined,\n            domain: [],\n            title: undefined,\n            position: this.legendPosition\n        };\n        if (opts.scaleType === 'ordinal') {\n            opts.domain = this.innerDomain;\n            opts.colors = this.colors;\n            opts.title = this.legendTitle;\n        }\n        else {\n            opts.domain = this.valuesDomain;\n            opts.colors = this.colors.scale;\n        }\n        return opts;\n    }\n    updateYAxisWidth({ width }) {\n        this.yAxisWidth = width;\n        this.update();\n    }\n    updateXAxisHeight({ height }) {\n        this.xAxisHeight = height;\n        this.update();\n    }\n    onActivate(event, group, fromLegend = false) {\n        const item = Object.assign({}, event);\n        if (group) {\n            item.series = group.name;\n        }\n        const items = this.results\n            .map(g => g.series)\n            .flat()\n            .filter(i => {\n            if (fromLegend) {\n                return i.label === item.name;\n            }\n            else {\n                return i.name === item.name && i.series === item.series;\n            }\n        });\n        this.activeEntries = [...items];\n        this.activate.emit({ value: item, entries: this.activeEntries });\n    }\n    onDeactivate(event, group, fromLegend = false) {\n        const item = Object.assign({}, event);\n        if (group) {\n            item.series = group.name;\n        }\n        this.activeEntries = this.activeEntries.filter(i => {\n            if (fromLegend) {\n                return i.label !== item.name;\n            }\n            else {\n                return !(i.name === item.name && i.series === item.series);\n            }\n        });\n        this.deactivate.emit({ value: item, entries: this.activeEntries });\n    }\n};\nBarVertical2DComponent.ɵfac = function BarVertical2DComponent_Factory(t) { return ɵBarVertical2DComponent_BaseFactory(t || BarVertical2DComponent); };\nBarVertical2DComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: BarVertical2DComponent, selectors: [[\"ngx-charts-bar-vertical-2d\"]], contentQueries: function BarVertical2DComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n        ɵngcc0.ɵɵcontentQuery(dirIndex, _c21, true);\n    } if (rf & 2) {\n        var _t;\n        ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tooltipTemplate = _t.first);\n    } }, inputs: { legend: \"legend\", legendTitle: \"legendTitle\", legendPosition: \"legendPosition\", tooltipDisabled: \"tooltipDisabled\", scaleType: \"scaleType\", showGridLines: \"showGridLines\", activeEntries: \"activeEntries\", trimXAxisTicks: \"trimXAxisTicks\", trimYAxisTicks: \"trimYAxisTicks\", rotateXAxisTicks: \"rotateXAxisTicks\", maxXAxisTickLength: \"maxXAxisTickLength\", maxYAxisTickLength: \"maxYAxisTickLength\", groupPadding: \"groupPadding\", barPadding: \"barPadding\", roundDomains: \"roundDomains\", roundEdges: \"roundEdges\", showDataLabel: \"showDataLabel\", noBarWhenZero: \"noBarWhenZero\", xAxis: \"xAxis\", yAxis: \"yAxis\", showXAxisLabel: \"showXAxisLabel\", showYAxisLabel: \"showYAxisLabel\", xAxisLabel: \"xAxisLabel\", yAxisLabel: \"yAxisLabel\", gradient: \"gradient\", schemeType: \"schemeType\", xAxisTickFormatting: \"xAxisTickFormatting\", yAxisTickFormatting: \"yAxisTickFormatting\", xAxisTicks: \"xAxisTicks\", yAxisTicks: \"yAxisTicks\", yScaleMax: \"yScaleMax\", dataLabelFormatting: \"dataLabelFormatting\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 6, vars: 17, consts: [[3, \"view\", \"showLegend\", \"legendOptions\", \"activeEntries\", \"animations\", \"legendLabelActivate\", \"legendLabelDeactivate\", \"legendLabelClick\"], [1, \"bar-chart\", \"chart\"], [\"ngx-charts-grid-panel-series\", \"\", \"orient\", \"vertical\", 3, \"xScale\", \"yScale\", \"data\", \"dims\"], [\"ngx-charts-x-axis\", \"\", 3, \"xScale\", \"dims\", \"showLabel\", \"labelText\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"xAxisOffset\", \"dimensionsChanged\", 4, \"ngIf\"], [\"ngx-charts-y-axis\", \"\", 3, \"yScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\", 4, \"ngIf\"], [\"ngx-charts-series-vertical\", \"\", 3, \"activeEntries\", \"xScale\", \"yScale\", \"colors\", \"series\", \"dims\", \"gradient\", \"tooltipDisabled\", \"tooltipTemplate\", \"showDataLabel\", \"dataLabelFormatting\", \"seriesName\", \"roundEdges\", \"animations\", \"noBarWhenZero\", \"select\", \"activate\", \"deactivate\", \"dataLabelHeightChanged\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"ngx-charts-x-axis\", \"\", 3, \"xScale\", \"dims\", \"showLabel\", \"labelText\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"xAxisOffset\", \"dimensionsChanged\"], [\"ngx-charts-y-axis\", \"\", 3, \"yScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\"], [\"ngx-charts-series-vertical\", \"\", 3, \"activeEntries\", \"xScale\", \"yScale\", \"colors\", \"series\", \"dims\", \"gradient\", \"tooltipDisabled\", \"tooltipTemplate\", \"showDataLabel\", \"dataLabelFormatting\", \"seriesName\", \"roundEdges\", \"animations\", \"noBarWhenZero\", \"select\", \"activate\", \"deactivate\", \"dataLabelHeightChanged\"]], template: function BarVertical2DComponent_Template(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵelementStart(0, \"ngx-charts-chart\", 0);\n        ɵngcc0.ɵɵlistener(\"legendLabelActivate\", function BarVertical2DComponent_Template_ngx_charts_chart_legendLabelActivate_0_listener($event) { return ctx.onActivate($event, undefined, true); })(\"legendLabelDeactivate\", function BarVertical2DComponent_Template_ngx_charts_chart_legendLabelDeactivate_0_listener($event) { return ctx.onDeactivate($event, undefined, true); })(\"legendLabelClick\", function BarVertical2DComponent_Template_ngx_charts_chart_legendLabelClick_0_listener($event) { return ctx.onClick($event); });\n        ɵngcc0.ɵɵnamespaceSVG();\n        ɵngcc0.ɵɵelementStart(1, \"g\", 1);\n        ɵngcc0.ɵɵelement(2, \"g\", 2);\n        ɵngcc0.ɵɵtemplate(3, BarVertical2DComponent__svg_g_3_Template, 1, 10, \"g\", 3);\n        ɵngcc0.ɵɵtemplate(4, BarVertical2DComponent__svg_g_4_Template, 1, 9, \"g\", 4);\n        ɵngcc0.ɵɵtemplate(5, BarVertical2DComponent__svg_g_5_Template, 1, 17, \"g\", 5);\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵelementEnd();\n    } if (rf & 2) {\n        ɵngcc0.ɵɵproperty(\"view\", ɵngcc0.ɵɵpureFunction2(14, _c23, ctx.width, ctx.height))(\"showLegend\", ctx.legend)(\"legendOptions\", ctx.legendOptions)(\"activeEntries\", ctx.activeEntries)(\"animations\", ctx.animations);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵattribute(\"transform\", ctx.transform);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"xScale\", ctx.groupScale)(\"yScale\", ctx.valueScale)(\"data\", ctx.results)(\"dims\", ctx.dims);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.xAxis);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.yAxis);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.results)(\"ngForTrackBy\", ctx.trackBy);\n    } }, directives: function () { return [ChartComponent, GridPanelSeriesComponent, ɵngcc1.NgIf, ɵngcc1.NgForOf, XAxisComponent, YAxisComponent, SeriesVerticalComponent]; }, styles: [_c24], encapsulation: 2, data: { animation: [\n            trigger('animationState', [\n                transition(':leave', [\n                    style({\n                        opacity: 1,\n                        transform: '*'\n                    }),\n                    animate(500, style({ opacity: 0, transform: 'scale(0)' }))\n                ])\n            ])\n        ] }, changeDetection: 0 });\n__decorate([\n    Input()\n], BarVertical2DComponent.prototype, \"legend\", void 0);\n__decorate([\n    Input()\n], BarVertical2DComponent.prototype, \"legendTitle\", void 0);\n__decorate([\n    Input()\n], BarVertical2DComponent.prototype, \"legendPosition\", void 0);\n__decorate([\n    Input()\n], BarVertical2DComponent.prototype, \"xAxis\", void 0);\n__decorate([\n    Input()\n], BarVertical2DComponent.prototype, \"yAxis\", void 0);\n__decorate([\n    Input()\n], BarVertical2DComponent.prototype, \"showXAxisLabel\", void 0);\n__decorate([\n    Input()\n], BarVertical2DComponent.prototype, \"showYAxisLabel\", void 0);\n__decorate([\n    Input()\n], BarVertical2DComponent.prototype, \"xAxisLabel\", void 0);\n__decorate([\n    Input()\n], BarVertical2DComponent.prototype, \"yAxisLabel\", void 0);\n__decorate([\n    Input()\n], BarVertical2DComponent.prototype, \"tooltipDisabled\", void 0);\n__decorate([\n    Input()\n], BarVertical2DComponent.prototype, \"scaleType\", void 0);\n__decorate([\n    Input()\n], BarVertical2DComponent.prototype, \"gradient\", void 0);\n__decorate([\n    Input()\n], BarVertical2DComponent.prototype, \"showGridLines\", void 0);\n__decorate([\n    Input()\n], BarVertical2DComponent.prototype, \"activeEntries\", void 0);\n__decorate([\n    Input()\n], BarVertical2DComponent.prototype, \"schemeType\", void 0);\n__decorate([\n    Input()\n], BarVertical2DComponent.prototype, \"trimXAxisTicks\", void 0);\n__decorate([\n    Input()\n], BarVertical2DComponent.prototype, \"trimYAxisTicks\", void 0);\n__decorate([\n    Input()\n], BarVertical2DComponent.prototype, \"rotateXAxisTicks\", void 0);\n__decorate([\n    Input()\n], BarVertical2DComponent.prototype, \"maxXAxisTickLength\", void 0);\n__decorate([\n    Input()\n], BarVertical2DComponent.prototype, \"maxYAxisTickLength\", void 0);\n__decorate([\n    Input()\n], BarVertical2DComponent.prototype, \"xAxisTickFormatting\", void 0);\n__decorate([\n    Input()\n], BarVertical2DComponent.prototype, \"yAxisTickFormatting\", void 0);\n__decorate([\n    Input()\n], BarVertical2DComponent.prototype, \"xAxisTicks\", void 0);\n__decorate([\n    Input()\n], BarVertical2DComponent.prototype, \"yAxisTicks\", void 0);\n__decorate([\n    Input()\n], BarVertical2DComponent.prototype, \"groupPadding\", void 0);\n__decorate([\n    Input()\n], BarVertical2DComponent.prototype, \"barPadding\", void 0);\n__decorate([\n    Input()\n], BarVertical2DComponent.prototype, \"roundDomains\", void 0);\n__decorate([\n    Input()\n], BarVertical2DComponent.prototype, \"roundEdges\", void 0);\n__decorate([\n    Input()\n], BarVertical2DComponent.prototype, \"yScaleMax\", void 0);\n__decorate([\n    Input()\n], BarVertical2DComponent.prototype, \"showDataLabel\", void 0);\n__decorate([\n    Input()\n], BarVertical2DComponent.prototype, \"dataLabelFormatting\", void 0);\n__decorate([\n    Input()\n], BarVertical2DComponent.prototype, \"noBarWhenZero\", void 0);\n__decorate([\n    Output()\n], BarVertical2DComponent.prototype, \"activate\", void 0);\n__decorate([\n    Output()\n], BarVertical2DComponent.prototype, \"deactivate\", void 0);\n__decorate([\n    ContentChild('tooltipTemplate')\n], BarVertical2DComponent.prototype, \"tooltipTemplate\", void 0);\n\nlet BarVerticalNormalizedComponent = class BarVerticalNormalizedComponent extends BaseChartComponent {\n    constructor() {\n        super(...arguments);\n        this.legend = false;\n        this.legendTitle = 'Legend';\n        this.legendPosition = 'right';\n        this.tooltipDisabled = false;\n        this.showGridLines = true;\n        this.activeEntries = [];\n        this.trimXAxisTicks = true;\n        this.trimYAxisTicks = true;\n        this.rotateXAxisTicks = true;\n        this.maxXAxisTickLength = 16;\n        this.maxYAxisTickLength = 16;\n        this.barPadding = 8;\n        this.roundDomains = false;\n        this.noBarWhenZero = true;\n        this.activate = new EventEmitter();\n        this.deactivate = new EventEmitter();\n        this.margin = [10, 20, 10, 20];\n        this.xAxisHeight = 0;\n        this.yAxisWidth = 0;\n    }\n    update() {\n        super.update();\n        this.dims = calculateViewDimensions({\n            width: this.width,\n            height: this.height,\n            margins: this.margin,\n            showXAxis: this.xAxis,\n            showYAxis: this.yAxis,\n            xAxisHeight: this.xAxisHeight,\n            yAxisWidth: this.yAxisWidth,\n            showXLabel: this.showXAxisLabel,\n            showYLabel: this.showYAxisLabel,\n            showLegend: this.legend,\n            legendType: this.schemeType,\n            legendPosition: this.legendPosition\n        });\n        this.formatDates();\n        this.groupDomain = this.getGroupDomain();\n        this.innerDomain = this.getInnerDomain();\n        this.valueDomain = this.getValueDomain();\n        this.xScale = this.getXScale();\n        this.yScale = this.getYScale();\n        this.setColors();\n        this.legendOptions = this.getLegendOptions();\n        this.transform = `translate(${this.dims.xOffset} , ${this.margin[0]})`;\n    }\n    getGroupDomain() {\n        const domain = [];\n        for (const group of this.results) {\n            if (!domain.includes(group.label)) {\n                domain.push(group.label);\n            }\n        }\n        return domain;\n    }\n    getInnerDomain() {\n        const domain = [];\n        for (const group of this.results) {\n            for (const d of group.series) {\n                if (!domain.includes(d.label)) {\n                    domain.push(d.label);\n                }\n            }\n        }\n        return domain;\n    }\n    getValueDomain() {\n        return [0, 100];\n    }\n    getXScale() {\n        const spacing = this.groupDomain.length / (this.dims.width / this.barPadding + 1);\n        return scaleBand()\n            .rangeRound([0, this.dims.width])\n            .paddingInner(spacing)\n            .domain(this.groupDomain);\n    }\n    getYScale() {\n        const scale = scaleLinear()\n            .range([this.dims.height, 0])\n            .domain(this.valueDomain);\n        return this.roundDomains ? scale.nice() : scale;\n    }\n    groupTransform(group) {\n        return `translate(${this.xScale(group.name)}, 0)`;\n    }\n    onClick(data, group) {\n        if (group) {\n            data.series = group.name;\n        }\n        this.select.emit(data);\n    }\n    trackBy(index, item) {\n        return item.name;\n    }\n    setColors() {\n        let domain;\n        if (this.schemeType === 'ordinal') {\n            domain = this.innerDomain;\n        }\n        else {\n            domain = this.valueDomain;\n        }\n        this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n    }\n    getLegendOptions() {\n        const opts = {\n            scaleType: this.schemeType,\n            colors: undefined,\n            domain: [],\n            title: undefined,\n            position: this.legendPosition\n        };\n        if (opts.scaleType === 'ordinal') {\n            opts.domain = this.innerDomain;\n            opts.colors = this.colors;\n            opts.title = this.legendTitle;\n        }\n        else {\n            opts.domain = this.valueDomain;\n            opts.colors = this.colors.scale;\n        }\n        return opts;\n    }\n    updateYAxisWidth({ width }) {\n        this.yAxisWidth = width;\n        this.update();\n    }\n    updateXAxisHeight({ height }) {\n        this.xAxisHeight = height;\n        this.update();\n    }\n    onActivate(event, group, fromLegend = false) {\n        const item = Object.assign({}, event);\n        if (group) {\n            item.series = group.name;\n        }\n        const items = this.results\n            .map(g => g.series)\n            .flat()\n            .filter(i => {\n            if (fromLegend) {\n                return i.label === item.name;\n            }\n            else {\n                return i.name === item.name && i.series === item.series;\n            }\n        });\n        this.activeEntries = [...items];\n        this.activate.emit({ value: item, entries: this.activeEntries });\n    }\n    onDeactivate(event, group, fromLegend = false) {\n        const item = Object.assign({}, event);\n        if (group) {\n            item.series = group.name;\n        }\n        this.activeEntries = this.activeEntries.filter(i => {\n            if (fromLegend) {\n                return i.label !== item.name;\n            }\n            else {\n                return !(i.name === item.name && i.series === item.series);\n            }\n        });\n        this.deactivate.emit({ value: item, entries: this.activeEntries });\n    }\n};\nBarVerticalNormalizedComponent.ɵfac = function BarVerticalNormalizedComponent_Factory(t) { return ɵBarVerticalNormalizedComponent_BaseFactory(t || BarVerticalNormalizedComponent); };\nBarVerticalNormalizedComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: BarVerticalNormalizedComponent, selectors: [[\"ngx-charts-bar-vertical-normalized\"]], contentQueries: function BarVerticalNormalizedComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n        ɵngcc0.ɵɵcontentQuery(dirIndex, _c21, true);\n    } if (rf & 2) {\n        var _t;\n        ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tooltipTemplate = _t.first);\n    } }, inputs: { legend: \"legend\", legendTitle: \"legendTitle\", legendPosition: \"legendPosition\", tooltipDisabled: \"tooltipDisabled\", showGridLines: \"showGridLines\", activeEntries: \"activeEntries\", trimXAxisTicks: \"trimXAxisTicks\", trimYAxisTicks: \"trimYAxisTicks\", rotateXAxisTicks: \"rotateXAxisTicks\", maxXAxisTickLength: \"maxXAxisTickLength\", maxYAxisTickLength: \"maxYAxisTickLength\", barPadding: \"barPadding\", roundDomains: \"roundDomains\", noBarWhenZero: \"noBarWhenZero\", xAxis: \"xAxis\", yAxis: \"yAxis\", showXAxisLabel: \"showXAxisLabel\", showYAxisLabel: \"showYAxisLabel\", xAxisLabel: \"xAxisLabel\", yAxisLabel: \"yAxisLabel\", gradient: \"gradient\", schemeType: \"schemeType\", xAxisTickFormatting: \"xAxisTickFormatting\", yAxisTickFormatting: \"yAxisTickFormatting\", xAxisTicks: \"xAxisTicks\", yAxisTicks: \"yAxisTicks\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 5, vars: 13, consts: [[3, \"view\", \"showLegend\", \"legendOptions\", \"activeEntries\", \"animations\", \"legendLabelActivate\", \"legendLabelDeactivate\", \"legendLabelClick\"], [1, \"bar-chart\", \"chart\"], [\"ngx-charts-x-axis\", \"\", 3, \"xScale\", \"dims\", \"showLabel\", \"labelText\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\", 4, \"ngIf\"], [\"ngx-charts-y-axis\", \"\", 3, \"yScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\", 4, \"ngIf\"], [4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"ngx-charts-x-axis\", \"\", 3, \"xScale\", \"dims\", \"showLabel\", \"labelText\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\"], [\"ngx-charts-y-axis\", \"\", 3, \"yScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\"], [\"ngx-charts-series-vertical\", \"\", \"type\", \"normalized\", 3, \"xScale\", \"yScale\", \"activeEntries\", \"colors\", \"series\", \"dims\", \"gradient\", \"tooltipDisabled\", \"tooltipTemplate\", \"seriesName\", \"animations\", \"noBarWhenZero\", \"select\", \"activate\", \"deactivate\"]], template: function BarVerticalNormalizedComponent_Template(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵelementStart(0, \"ngx-charts-chart\", 0);\n        ɵngcc0.ɵɵlistener(\"legendLabelActivate\", function BarVerticalNormalizedComponent_Template_ngx_charts_chart_legendLabelActivate_0_listener($event) { return ctx.onActivate($event, undefined, true); })(\"legendLabelDeactivate\", function BarVerticalNormalizedComponent_Template_ngx_charts_chart_legendLabelDeactivate_0_listener($event) { return ctx.onDeactivate($event, undefined, true); })(\"legendLabelClick\", function BarVerticalNormalizedComponent_Template_ngx_charts_chart_legendLabelClick_0_listener($event) { return ctx.onClick($event); });\n        ɵngcc0.ɵɵnamespaceSVG();\n        ɵngcc0.ɵɵelementStart(1, \"g\", 1);\n        ɵngcc0.ɵɵtemplate(2, BarVerticalNormalizedComponent__svg_g_2_Template, 1, 9, \"g\", 2);\n        ɵngcc0.ɵɵtemplate(3, BarVerticalNormalizedComponent__svg_g_3_Template, 1, 9, \"g\", 3);\n        ɵngcc0.ɵɵtemplate(4, BarVerticalNormalizedComponent__svg_g_4_Template, 2, 14, \"g\", 4);\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵelementEnd();\n    } if (rf & 2) {\n        ɵngcc0.ɵɵproperty(\"view\", ɵngcc0.ɵɵpureFunction2(10, _c23, ctx.width, ctx.height))(\"showLegend\", ctx.legend)(\"legendOptions\", ctx.legendOptions)(\"activeEntries\", ctx.activeEntries)(\"animations\", ctx.animations);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵattribute(\"transform\", ctx.transform);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.xAxis);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.yAxis);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.results)(\"ngForTrackBy\", ctx.trackBy);\n    } }, directives: function () { return [ChartComponent, ɵngcc1.NgIf, ɵngcc1.NgForOf, XAxisComponent, YAxisComponent, SeriesVerticalComponent]; }, styles: [_c24], encapsulation: 2, data: { animation: [\n            trigger('animationState', [\n                transition(':leave', [\n                    style({\n                        opacity: 1,\n                        transform: '*'\n                    }),\n                    animate(500, style({ opacity: 0, transform: 'scale(0)' }))\n                ])\n            ])\n        ] }, changeDetection: 0 });\n__decorate([\n    Input()\n], BarVerticalNormalizedComponent.prototype, \"legend\", void 0);\n__decorate([\n    Input()\n], BarVerticalNormalizedComponent.prototype, \"legendTitle\", void 0);\n__decorate([\n    Input()\n], BarVerticalNormalizedComponent.prototype, \"legendPosition\", void 0);\n__decorate([\n    Input()\n], BarVerticalNormalizedComponent.prototype, \"xAxis\", void 0);\n__decorate([\n    Input()\n], BarVerticalNormalizedComponent.prototype, \"yAxis\", void 0);\n__decorate([\n    Input()\n], BarVerticalNormalizedComponent.prototype, \"showXAxisLabel\", void 0);\n__decorate([\n    Input()\n], BarVerticalNormalizedComponent.prototype, \"showYAxisLabel\", void 0);\n__decorate([\n    Input()\n], BarVerticalNormalizedComponent.prototype, \"xAxisLabel\", void 0);\n__decorate([\n    Input()\n], BarVerticalNormalizedComponent.prototype, \"yAxisLabel\", void 0);\n__decorate([\n    Input()\n], BarVerticalNormalizedComponent.prototype, \"tooltipDisabled\", void 0);\n__decorate([\n    Input()\n], BarVerticalNormalizedComponent.prototype, \"gradient\", void 0);\n__decorate([\n    Input()\n], BarVerticalNormalizedComponent.prototype, \"showGridLines\", void 0);\n__decorate([\n    Input()\n], BarVerticalNormalizedComponent.prototype, \"activeEntries\", void 0);\n__decorate([\n    Input()\n], BarVerticalNormalizedComponent.prototype, \"schemeType\", void 0);\n__decorate([\n    Input()\n], BarVerticalNormalizedComponent.prototype, \"trimXAxisTicks\", void 0);\n__decorate([\n    Input()\n], BarVerticalNormalizedComponent.prototype, \"trimYAxisTicks\", void 0);\n__decorate([\n    Input()\n], BarVerticalNormalizedComponent.prototype, \"rotateXAxisTicks\", void 0);\n__decorate([\n    Input()\n], BarVerticalNormalizedComponent.prototype, \"maxXAxisTickLength\", void 0);\n__decorate([\n    Input()\n], BarVerticalNormalizedComponent.prototype, \"maxYAxisTickLength\", void 0);\n__decorate([\n    Input()\n], BarVerticalNormalizedComponent.prototype, \"xAxisTickFormatting\", void 0);\n__decorate([\n    Input()\n], BarVerticalNormalizedComponent.prototype, \"yAxisTickFormatting\", void 0);\n__decorate([\n    Input()\n], BarVerticalNormalizedComponent.prototype, \"xAxisTicks\", void 0);\n__decorate([\n    Input()\n], BarVerticalNormalizedComponent.prototype, \"yAxisTicks\", void 0);\n__decorate([\n    Input()\n], BarVerticalNormalizedComponent.prototype, \"barPadding\", void 0);\n__decorate([\n    Input()\n], BarVerticalNormalizedComponent.prototype, \"roundDomains\", void 0);\n__decorate([\n    Input()\n], BarVerticalNormalizedComponent.prototype, \"noBarWhenZero\", void 0);\n__decorate([\n    Output()\n], BarVerticalNormalizedComponent.prototype, \"activate\", void 0);\n__decorate([\n    Output()\n], BarVerticalNormalizedComponent.prototype, \"deactivate\", void 0);\n__decorate([\n    ContentChild('tooltipTemplate')\n], BarVerticalNormalizedComponent.prototype, \"tooltipTemplate\", void 0);\n\nlet BarVerticalStackedComponent = class BarVerticalStackedComponent extends BaseChartComponent {\n    constructor() {\n        super(...arguments);\n        this.legend = false;\n        this.legendTitle = 'Legend';\n        this.legendPosition = 'right';\n        this.tooltipDisabled = false;\n        this.showGridLines = true;\n        this.activeEntries = [];\n        this.trimXAxisTicks = true;\n        this.trimYAxisTicks = true;\n        this.rotateXAxisTicks = true;\n        this.maxXAxisTickLength = 16;\n        this.maxYAxisTickLength = 16;\n        this.barPadding = 8;\n        this.roundDomains = false;\n        this.showDataLabel = false;\n        this.noBarWhenZero = true;\n        this.activate = new EventEmitter();\n        this.deactivate = new EventEmitter();\n        this.margin = [10, 20, 10, 20];\n        this.xAxisHeight = 0;\n        this.yAxisWidth = 0;\n        this.dataLabelMaxHeight = { negative: 0, positive: 0 };\n    }\n    update() {\n        super.update();\n        if (!this.showDataLabel) {\n            this.dataLabelMaxHeight = { negative: 0, positive: 0 };\n        }\n        this.margin = [10 + this.dataLabelMaxHeight.positive, 20, 10 + this.dataLabelMaxHeight.negative, 20];\n        this.dims = calculateViewDimensions({\n            width: this.width,\n            height: this.height,\n            margins: this.margin,\n            showXAxis: this.xAxis,\n            showYAxis: this.yAxis,\n            xAxisHeight: this.xAxisHeight,\n            yAxisWidth: this.yAxisWidth,\n            showXLabel: this.showXAxisLabel,\n            showYLabel: this.showYAxisLabel,\n            showLegend: this.legend,\n            legendType: this.schemeType,\n            legendPosition: this.legendPosition\n        });\n        if (this.showDataLabel) {\n            this.dims.height -= this.dataLabelMaxHeight.negative;\n        }\n        this.formatDates();\n        this.groupDomain = this.getGroupDomain();\n        this.innerDomain = this.getInnerDomain();\n        this.valueDomain = this.getValueDomain();\n        this.xScale = this.getXScale();\n        this.yScale = this.getYScale();\n        this.setColors();\n        this.legendOptions = this.getLegendOptions();\n        this.transform = `translate(${this.dims.xOffset} , ${this.margin[0] + this.dataLabelMaxHeight.negative})`;\n    }\n    getGroupDomain() {\n        const domain = [];\n        for (const group of this.results) {\n            if (!domain.includes(group.label)) {\n                domain.push(group.label);\n            }\n        }\n        return domain;\n    }\n    getInnerDomain() {\n        const domain = [];\n        for (const group of this.results) {\n            for (const d of group.series) {\n                if (!domain.includes(d.label)) {\n                    domain.push(d.label);\n                }\n            }\n        }\n        return domain;\n    }\n    getValueDomain() {\n        const domain = [];\n        let smallest = 0;\n        let biggest = 0;\n        for (const group of this.results) {\n            let smallestSum = 0;\n            let biggestSum = 0;\n            for (const d of group.series) {\n                if (d.value < 0) {\n                    smallestSum += d.value;\n                }\n                else {\n                    biggestSum += d.value;\n                }\n                smallest = d.value < smallest ? d.value : smallest;\n                biggest = d.value > biggest ? d.value : biggest;\n            }\n            domain.push(smallestSum);\n            domain.push(biggestSum);\n        }\n        domain.push(smallest);\n        domain.push(biggest);\n        const min = Math.min(0, ...domain);\n        const max = this.yScaleMax ? Math.max(this.yScaleMax, ...domain) : Math.max(...domain);\n        return [min, max];\n    }\n    getXScale() {\n        const spacing = this.groupDomain.length / (this.dims.width / this.barPadding + 1);\n        return scaleBand()\n            .rangeRound([0, this.dims.width])\n            .paddingInner(spacing)\n            .domain(this.groupDomain);\n    }\n    getYScale() {\n        const scale = scaleLinear()\n            .range([this.dims.height, 0])\n            .domain(this.valueDomain);\n        return this.roundDomains ? scale.nice() : scale;\n    }\n    onDataLabelMaxHeightChanged(event, groupIndex) {\n        if (event.size.negative) {\n            this.dataLabelMaxHeight.negative = Math.max(this.dataLabelMaxHeight.negative, event.size.height);\n        }\n        else {\n            this.dataLabelMaxHeight.positive = Math.max(this.dataLabelMaxHeight.positive, event.size.height);\n        }\n        if (groupIndex === this.results.length - 1) {\n            setTimeout(() => this.update());\n        }\n    }\n    groupTransform(group) {\n        return `translate(${this.xScale(group.name) || 0}, 0)`;\n    }\n    onClick(data, group) {\n        if (group) {\n            data.series = group.name;\n        }\n        this.select.emit(data);\n    }\n    trackBy(index, item) {\n        return item.name;\n    }\n    setColors() {\n        let domain;\n        if (this.schemeType === 'ordinal') {\n            domain = this.innerDomain;\n        }\n        else {\n            domain = this.valueDomain;\n        }\n        this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n    }\n    getLegendOptions() {\n        const opts = {\n            scaleType: this.schemeType,\n            colors: undefined,\n            domain: [],\n            title: undefined,\n            position: this.legendPosition\n        };\n        if (opts.scaleType === 'ordinal') {\n            opts.domain = this.innerDomain;\n            opts.colors = this.colors;\n            opts.title = this.legendTitle;\n        }\n        else {\n            opts.domain = this.valueDomain;\n            opts.colors = this.colors.scale;\n        }\n        return opts;\n    }\n    updateYAxisWidth({ width }) {\n        this.yAxisWidth = width;\n        this.update();\n    }\n    updateXAxisHeight({ height }) {\n        this.xAxisHeight = height;\n        this.update();\n    }\n    onActivate(event, group, fromLegend = false) {\n        const item = Object.assign({}, event);\n        if (group) {\n            item.series = group.name;\n        }\n        const items = this.results\n            .map(g => g.series)\n            .flat()\n            .filter(i => {\n            if (fromLegend) {\n                return i.label === item.name;\n            }\n            else {\n                return i.name === item.name && i.series === item.series;\n            }\n        });\n        this.activeEntries = [...items];\n        this.activate.emit({ value: item, entries: this.activeEntries });\n    }\n    onDeactivate(event, group, fromLegend = false) {\n        const item = Object.assign({}, event);\n        if (group) {\n            item.series = group.name;\n        }\n        this.activeEntries = this.activeEntries.filter(i => {\n            if (fromLegend) {\n                return i.label !== item.name;\n            }\n            else {\n                return !(i.name === item.name && i.series === item.series);\n            }\n        });\n        this.deactivate.emit({ value: item, entries: this.activeEntries });\n    }\n};\nBarVerticalStackedComponent.ɵfac = function BarVerticalStackedComponent_Factory(t) { return ɵBarVerticalStackedComponent_BaseFactory(t || BarVerticalStackedComponent); };\nBarVerticalStackedComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: BarVerticalStackedComponent, selectors: [[\"ngx-charts-bar-vertical-stacked\"]], contentQueries: function BarVerticalStackedComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n        ɵngcc0.ɵɵcontentQuery(dirIndex, _c21, true);\n    } if (rf & 2) {\n        var _t;\n        ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tooltipTemplate = _t.first);\n    } }, inputs: { legend: \"legend\", legendTitle: \"legendTitle\", legendPosition: \"legendPosition\", tooltipDisabled: \"tooltipDisabled\", showGridLines: \"showGridLines\", activeEntries: \"activeEntries\", trimXAxisTicks: \"trimXAxisTicks\", trimYAxisTicks: \"trimYAxisTicks\", rotateXAxisTicks: \"rotateXAxisTicks\", maxXAxisTickLength: \"maxXAxisTickLength\", maxYAxisTickLength: \"maxYAxisTickLength\", barPadding: \"barPadding\", roundDomains: \"roundDomains\", showDataLabel: \"showDataLabel\", noBarWhenZero: \"noBarWhenZero\", xAxis: \"xAxis\", yAxis: \"yAxis\", showXAxisLabel: \"showXAxisLabel\", showYAxisLabel: \"showYAxisLabel\", xAxisLabel: \"xAxisLabel\", yAxisLabel: \"yAxisLabel\", gradient: \"gradient\", schemeType: \"schemeType\", xAxisTickFormatting: \"xAxisTickFormatting\", yAxisTickFormatting: \"yAxisTickFormatting\", xAxisTicks: \"xAxisTicks\", yAxisTicks: \"yAxisTicks\", yScaleMax: \"yScaleMax\", dataLabelFormatting: \"dataLabelFormatting\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 5, vars: 13, consts: [[3, \"view\", \"showLegend\", \"legendOptions\", \"activeEntries\", \"animations\", \"legendLabelActivate\", \"legendLabelDeactivate\", \"legendLabelClick\"], [1, \"bar-chart\", \"chart\"], [\"ngx-charts-x-axis\", \"\", 3, \"xScale\", \"dims\", \"showLabel\", \"labelText\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"xAxisOffset\", \"dimensionsChanged\", 4, \"ngIf\"], [\"ngx-charts-y-axis\", \"\", 3, \"yScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\", 4, \"ngIf\"], [4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"ngx-charts-x-axis\", \"\", 3, \"xScale\", \"dims\", \"showLabel\", \"labelText\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"xAxisOffset\", \"dimensionsChanged\"], [\"ngx-charts-y-axis\", \"\", 3, \"yScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\"], [\"ngx-charts-series-vertical\", \"\", \"type\", \"stacked\", 3, \"xScale\", \"yScale\", \"activeEntries\", \"colors\", \"series\", \"dims\", \"gradient\", \"tooltipDisabled\", \"tooltipTemplate\", \"showDataLabel\", \"dataLabelFormatting\", \"seriesName\", \"animations\", \"noBarWhenZero\", \"select\", \"activate\", \"deactivate\", \"dataLabelHeightChanged\"]], template: function BarVerticalStackedComponent_Template(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵelementStart(0, \"ngx-charts-chart\", 0);\n        ɵngcc0.ɵɵlistener(\"legendLabelActivate\", function BarVerticalStackedComponent_Template_ngx_charts_chart_legendLabelActivate_0_listener($event) { return ctx.onActivate($event, undefined, true); })(\"legendLabelDeactivate\", function BarVerticalStackedComponent_Template_ngx_charts_chart_legendLabelDeactivate_0_listener($event) { return ctx.onDeactivate($event, undefined, true); })(\"legendLabelClick\", function BarVerticalStackedComponent_Template_ngx_charts_chart_legendLabelClick_0_listener($event) { return ctx.onClick($event); });\n        ɵngcc0.ɵɵnamespaceSVG();\n        ɵngcc0.ɵɵelementStart(1, \"g\", 1);\n        ɵngcc0.ɵɵtemplate(2, BarVerticalStackedComponent__svg_g_2_Template, 1, 10, \"g\", 2);\n        ɵngcc0.ɵɵtemplate(3, BarVerticalStackedComponent__svg_g_3_Template, 1, 9, \"g\", 3);\n        ɵngcc0.ɵɵtemplate(4, BarVerticalStackedComponent__svg_g_4_Template, 2, 16, \"g\", 4);\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵelementEnd();\n    } if (rf & 2) {\n        ɵngcc0.ɵɵproperty(\"view\", ɵngcc0.ɵɵpureFunction2(10, _c23, ctx.width, ctx.height))(\"showLegend\", ctx.legend)(\"legendOptions\", ctx.legendOptions)(\"activeEntries\", ctx.activeEntries)(\"animations\", ctx.animations);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵattribute(\"transform\", ctx.transform);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.xAxis);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.yAxis);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.results)(\"ngForTrackBy\", ctx.trackBy);\n    } }, directives: function () { return [ChartComponent, ɵngcc1.NgIf, ɵngcc1.NgForOf, XAxisComponent, YAxisComponent, SeriesVerticalComponent]; }, styles: [_c24], encapsulation: 2, data: { animation: [\n            trigger('animationState', [\n                transition(':leave', [\n                    style({\n                        opacity: 1,\n                        transform: '*'\n                    }),\n                    animate(500, style({ opacity: 0, transform: 'scale(0)' }))\n                ])\n            ])\n        ] }, changeDetection: 0 });\n__decorate([\n    Input()\n], BarVerticalStackedComponent.prototype, \"legend\", void 0);\n__decorate([\n    Input()\n], BarVerticalStackedComponent.prototype, \"legendTitle\", void 0);\n__decorate([\n    Input()\n], BarVerticalStackedComponent.prototype, \"legendPosition\", void 0);\n__decorate([\n    Input()\n], BarVerticalStackedComponent.prototype, \"xAxis\", void 0);\n__decorate([\n    Input()\n], BarVerticalStackedComponent.prototype, \"yAxis\", void 0);\n__decorate([\n    Input()\n], BarVerticalStackedComponent.prototype, \"showXAxisLabel\", void 0);\n__decorate([\n    Input()\n], BarVerticalStackedComponent.prototype, \"showYAxisLabel\", void 0);\n__decorate([\n    Input()\n], BarVerticalStackedComponent.prototype, \"xAxisLabel\", void 0);\n__decorate([\n    Input()\n], BarVerticalStackedComponent.prototype, \"yAxisLabel\", void 0);\n__decorate([\n    Input()\n], BarVerticalStackedComponent.prototype, \"tooltipDisabled\", void 0);\n__decorate([\n    Input()\n], BarVerticalStackedComponent.prototype, \"gradient\", void 0);\n__decorate([\n    Input()\n], BarVerticalStackedComponent.prototype, \"showGridLines\", void 0);\n__decorate([\n    Input()\n], BarVerticalStackedComponent.prototype, \"activeEntries\", void 0);\n__decorate([\n    Input()\n], BarVerticalStackedComponent.prototype, \"schemeType\", void 0);\n__decorate([\n    Input()\n], BarVerticalStackedComponent.prototype, \"trimXAxisTicks\", void 0);\n__decorate([\n    Input()\n], BarVerticalStackedComponent.prototype, \"trimYAxisTicks\", void 0);\n__decorate([\n    Input()\n], BarVerticalStackedComponent.prototype, \"rotateXAxisTicks\", void 0);\n__decorate([\n    Input()\n], BarVerticalStackedComponent.prototype, \"maxXAxisTickLength\", void 0);\n__decorate([\n    Input()\n], BarVerticalStackedComponent.prototype, \"maxYAxisTickLength\", void 0);\n__decorate([\n    Input()\n], BarVerticalStackedComponent.prototype, \"xAxisTickFormatting\", void 0);\n__decorate([\n    Input()\n], BarVerticalStackedComponent.prototype, \"yAxisTickFormatting\", void 0);\n__decorate([\n    Input()\n], BarVerticalStackedComponent.prototype, \"xAxisTicks\", void 0);\n__decorate([\n    Input()\n], BarVerticalStackedComponent.prototype, \"yAxisTicks\", void 0);\n__decorate([\n    Input()\n], BarVerticalStackedComponent.prototype, \"barPadding\", void 0);\n__decorate([\n    Input()\n], BarVerticalStackedComponent.prototype, \"roundDomains\", void 0);\n__decorate([\n    Input()\n], BarVerticalStackedComponent.prototype, \"yScaleMax\", void 0);\n__decorate([\n    Input()\n], BarVerticalStackedComponent.prototype, \"showDataLabel\", void 0);\n__decorate([\n    Input()\n], BarVerticalStackedComponent.prototype, \"dataLabelFormatting\", void 0);\n__decorate([\n    Input()\n], BarVerticalStackedComponent.prototype, \"noBarWhenZero\", void 0);\n__decorate([\n    Output()\n], BarVerticalStackedComponent.prototype, \"activate\", void 0);\n__decorate([\n    Output()\n], BarVerticalStackedComponent.prototype, \"deactivate\", void 0);\n__decorate([\n    ContentChild('tooltipTemplate')\n], BarVerticalStackedComponent.prototype, \"tooltipTemplate\", void 0);\n\nvar D0Types;\n(function (D0Types) {\n    D0Types[\"positive\"] = \"positive\";\n    D0Types[\"negative\"] = \"negative\";\n})(D0Types || (D0Types = {}));\nlet SeriesVerticalComponent = class SeriesVerticalComponent {\n    constructor() {\n        this.type = 'standard';\n        this.tooltipDisabled = false;\n        this.animations = true;\n        this.showDataLabel = false;\n        this.noBarWhenZero = true;\n        this.select = new EventEmitter();\n        this.activate = new EventEmitter();\n        this.deactivate = new EventEmitter();\n        this.dataLabelHeightChanged = new EventEmitter();\n        this.barsForDataLabels = [];\n    }\n    ngOnChanges(changes) {\n        this.update();\n    }\n    update() {\n        this.updateTooltipSettings();\n        let width;\n        if (this.series.length) {\n            width = this.xScale.bandwidth();\n        }\n        width = Math.round(width);\n        const yScaleMin = Math.max(this.yScale.domain()[0], 0);\n        const d0 = {\n            [D0Types.positive]: 0,\n            [D0Types.negative]: 0\n        };\n        let d0Type = D0Types.positive;\n        let total;\n        if (this.type === 'normalized') {\n            total = this.series.map(d => d.value).reduce((sum, d) => sum + d, 0);\n        }\n        this.bars = this.series.map((d, index) => {\n            let value = d.value;\n            const label = this.getLabel(d);\n            const formattedLabel = formatLabel(label);\n            const roundEdges = this.roundEdges;\n            d0Type = value > 0 ? D0Types.positive : D0Types.negative;\n            const bar = {\n                value,\n                label,\n                roundEdges,\n                data: d,\n                width,\n                formattedLabel,\n                height: 0,\n                x: 0,\n                y: 0\n            };\n            if (this.type === 'standard') {\n                bar.height = Math.abs(this.yScale(value) - this.yScale(yScaleMin));\n                bar.x = this.xScale(label);\n                if (value < 0) {\n                    bar.y = this.yScale(0);\n                }\n                else {\n                    bar.y = this.yScale(value);\n                }\n            }\n            else if (this.type === 'stacked') {\n                const offset0 = d0[d0Type];\n                const offset1 = offset0 + value;\n                d0[d0Type] += value;\n                bar.height = this.yScale(offset0) - this.yScale(offset1);\n                bar.x = 0;\n                bar.y = this.yScale(offset1);\n                bar.offset0 = offset0;\n                bar.offset1 = offset1;\n            }\n            else if (this.type === 'normalized') {\n                let offset0 = d0[d0Type];\n                let offset1 = offset0 + value;\n                d0[d0Type] += value;\n                if (total > 0) {\n                    offset0 = (offset0 * 100) / total;\n                    offset1 = (offset1 * 100) / total;\n                }\n                else {\n                    offset0 = 0;\n                    offset1 = 0;\n                }\n                bar.height = this.yScale(offset0) - this.yScale(offset1);\n                bar.x = 0;\n                bar.y = this.yScale(offset1);\n                bar.offset0 = offset0;\n                bar.offset1 = offset1;\n                value = (offset1 - offset0).toFixed(2) + '%';\n            }\n            if (this.colors.scaleType === 'ordinal') {\n                bar.color = this.colors.getColor(label);\n            }\n            else {\n                if (this.type === 'standard') {\n                    bar.color = this.colors.getColor(value);\n                    bar.gradientStops = this.colors.getLinearGradientStops(value);\n                }\n                else {\n                    bar.color = this.colors.getColor(bar.offset1);\n                    bar.gradientStops = this.colors.getLinearGradientStops(bar.offset1, bar.offset0);\n                }\n            }\n            let tooltipLabel = formattedLabel;\n            bar.ariaLabel = formattedLabel + ' ' + value.toLocaleString();\n            if (this.seriesName) {\n                tooltipLabel = `${this.seriesName} • ${formattedLabel}`;\n                bar.data.series = this.seriesName;\n                bar.ariaLabel = this.seriesName + ' ' + bar.ariaLabel;\n            }\n            bar.tooltipText = this.tooltipDisabled\n                ? undefined\n                : `\n        <span class=\"tooltip-label\">${escapeLabel(tooltipLabel)}</span>\n        <span class=\"tooltip-val\">${value.toLocaleString()}</span>\n      `;\n            return bar;\n        });\n        this.updateDataLabels();\n    }\n    updateDataLabels() {\n        if (this.type === 'stacked') {\n            this.barsForDataLabels = [];\n            const section = {};\n            section.series = this.seriesName;\n            const totalPositive = this.series.map(d => d.value).reduce((sum, d) => (d > 0 ? sum + d : sum), 0);\n            const totalNegative = this.series.map(d => d.value).reduce((sum, d) => (d < 0 ? sum + d : sum), 0);\n            section.total = totalPositive + totalNegative;\n            section.x = 0;\n            section.y = 0;\n            if (section.total > 0) {\n                section.height = this.yScale(totalPositive);\n            }\n            else {\n                section.height = this.yScale(totalNegative);\n            }\n            section.width = this.xScale.bandwidth();\n            this.barsForDataLabels.push(section);\n        }\n        else {\n            this.barsForDataLabels = this.series.map(d => {\n                const section = {};\n                section.series = this.seriesName ? this.seriesName : d.label;\n                section.total = d.value;\n                section.x = this.xScale(d.label);\n                section.y = this.yScale(0);\n                section.height = this.yScale(section.total) - this.yScale(0);\n                section.width = this.xScale.bandwidth();\n                return section;\n            });\n        }\n    }\n    updateTooltipSettings() {\n        this.tooltipPlacement = this.tooltipDisabled ? undefined : 'top';\n        this.tooltipType = this.tooltipDisabled ? undefined : 'tooltip';\n    }\n    isActive(entry) {\n        if (!this.activeEntries)\n            return false;\n        const item = this.activeEntries.find(d => {\n            return entry.name === d.name && entry.series === d.series;\n        });\n        return item !== undefined;\n    }\n    onClick(data) {\n        this.select.emit(data);\n    }\n    getLabel(dataItem) {\n        if (dataItem.label) {\n            return dataItem.label;\n        }\n        return dataItem.name;\n    }\n    trackBy(index, bar) {\n        return bar.label;\n    }\n    trackDataLabelBy(index, barLabel) {\n        return index + '#' + barLabel.series + '#' + barLabel.total;\n    }\n};\nSeriesVerticalComponent.ɵfac = function SeriesVerticalComponent_Factory(t) { return new (t || SeriesVerticalComponent)(); };\nSeriesVerticalComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: SeriesVerticalComponent, selectors: [[\"g\", \"ngx-charts-series-vertical\", \"\"]], inputs: { type: \"type\", tooltipDisabled: \"tooltipDisabled\", animations: \"animations\", showDataLabel: \"showDataLabel\", noBarWhenZero: \"noBarWhenZero\", dims: \"dims\", series: \"series\", xScale: \"xScale\", yScale: \"yScale\", colors: \"colors\", gradient: \"gradient\", activeEntries: \"activeEntries\", seriesName: \"seriesName\", tooltipTemplate: \"tooltipTemplate\", roundEdges: \"roundEdges\", dataLabelFormatting: \"dataLabelFormatting\" }, outputs: { select: \"select\", activate: \"activate\", deactivate: \"deactivate\", dataLabelHeightChanged: \"dataLabelHeightChanged\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c27, decls: 2, vars: 3, consts: [[\"ngx-charts-bar\", \"\", \"ngx-tooltip\", \"\", 3, \"width\", \"height\", \"x\", \"y\", \"fill\", \"stops\", \"data\", \"orientation\", \"roundEdges\", \"gradient\", \"ariaLabel\", \"isActive\", \"tooltipDisabled\", \"tooltipPlacement\", \"tooltipType\", \"tooltipTitle\", \"tooltipTemplate\", \"tooltipContext\", \"noBarWhenZero\", \"animations\", \"select\", \"activate\", \"deactivate\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [4, \"ngIf\"], [\"ngx-charts-bar\", \"\", \"ngx-tooltip\", \"\", 3, \"width\", \"height\", \"x\", \"y\", \"fill\", \"stops\", \"data\", \"orientation\", \"roundEdges\", \"gradient\", \"ariaLabel\", \"isActive\", \"tooltipDisabled\", \"tooltipPlacement\", \"tooltipType\", \"tooltipTitle\", \"tooltipTemplate\", \"tooltipContext\", \"noBarWhenZero\", \"animations\", \"select\", \"activate\", \"deactivate\"], [\"ngx-charts-bar-label\", \"\", 3, \"barX\", \"barY\", \"barWidth\", \"barHeight\", \"value\", \"valueFormatting\", \"orientation\", \"dimensionsChanged\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"ngx-charts-bar-label\", \"\", 3, \"barX\", \"barY\", \"barWidth\", \"barHeight\", \"value\", \"valueFormatting\", \"orientation\", \"dimensionsChanged\"]], template: function SeriesVerticalComponent_Template(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵtemplate(0, SeriesVerticalComponent__svg_g_0_Template, 1, 22, \"g\", 0);\n        ɵngcc0.ɵɵtemplate(1, SeriesVerticalComponent__svg_g_1_Template, 2, 2, \"g\", 1);\n    } if (rf & 2) {\n        ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.bars)(\"ngForTrackBy\", ctx.trackBy);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showDataLabel);\n    } }, directives: function () { return [ɵngcc1.NgForOf, ɵngcc1.NgIf, BarComponent, TooltipDirective, BarLabelComponent]; }, encapsulation: 2, data: { animation: [\n            trigger('animationState', [\n                transition(':leave', [\n                    style({\n                        opacity: 1\n                    }),\n                    animate(500, style({ opacity: 0 }))\n                ])\n            ])\n        ] }, changeDetection: 0 });\n__decorate([\n    Input()\n], SeriesVerticalComponent.prototype, \"dims\", void 0);\n__decorate([\n    Input()\n], SeriesVerticalComponent.prototype, \"type\", void 0);\n__decorate([\n    Input()\n], SeriesVerticalComponent.prototype, \"series\", void 0);\n__decorate([\n    Input()\n], SeriesVerticalComponent.prototype, \"xScale\", void 0);\n__decorate([\n    Input()\n], SeriesVerticalComponent.prototype, \"yScale\", void 0);\n__decorate([\n    Input()\n], SeriesVerticalComponent.prototype, \"colors\", void 0);\n__decorate([\n    Input()\n], SeriesVerticalComponent.prototype, \"gradient\", void 0);\n__decorate([\n    Input()\n], SeriesVerticalComponent.prototype, \"activeEntries\", void 0);\n__decorate([\n    Input()\n], SeriesVerticalComponent.prototype, \"seriesName\", void 0);\n__decorate([\n    Input()\n], SeriesVerticalComponent.prototype, \"tooltipDisabled\", void 0);\n__decorate([\n    Input()\n], SeriesVerticalComponent.prototype, \"tooltipTemplate\", void 0);\n__decorate([\n    Input()\n], SeriesVerticalComponent.prototype, \"roundEdges\", void 0);\n__decorate([\n    Input()\n], SeriesVerticalComponent.prototype, \"animations\", void 0);\n__decorate([\n    Input()\n], SeriesVerticalComponent.prototype, \"showDataLabel\", void 0);\n__decorate([\n    Input()\n], SeriesVerticalComponent.prototype, \"dataLabelFormatting\", void 0);\n__decorate([\n    Input()\n], SeriesVerticalComponent.prototype, \"noBarWhenZero\", void 0);\n__decorate([\n    Output()\n], SeriesVerticalComponent.prototype, \"select\", void 0);\n__decorate([\n    Output()\n], SeriesVerticalComponent.prototype, \"activate\", void 0);\n__decorate([\n    Output()\n], SeriesVerticalComponent.prototype, \"deactivate\", void 0);\n__decorate([\n    Output()\n], SeriesVerticalComponent.prototype, \"dataLabelHeightChanged\", void 0);\n\nlet SeriesHorizontal = class SeriesHorizontal {\n    constructor() {\n        this.barsForDataLabels = [];\n        this.type = 'standard';\n        this.tooltipDisabled = false;\n        this.animations = true;\n        this.showDataLabel = false;\n        this.noBarWhenZero = true;\n        this.select = new EventEmitter();\n        this.activate = new EventEmitter();\n        this.deactivate = new EventEmitter();\n        this.dataLabelWidthChanged = new EventEmitter();\n    }\n    ngOnChanges(changes) {\n        this.update();\n    }\n    update() {\n        this.updateTooltipSettings();\n        const d0 = {\n            [D0Types.positive]: 0,\n            [D0Types.negative]: 0\n        };\n        let d0Type;\n        d0Type = D0Types.positive;\n        let total;\n        if (this.type === 'normalized') {\n            total = this.series.map(d => d.value).reduce((sum, d) => sum + d, 0);\n        }\n        const xScaleMin = Math.max(this.xScale.domain()[0], 0);\n        this.bars = this.series.map((d, index) => {\n            let value = d.value;\n            const label = this.getLabel(d);\n            const formattedLabel = formatLabel(label);\n            const roundEdges = this.roundEdges;\n            d0Type = value > 0 ? D0Types.positive : D0Types.negative;\n            const bar = {\n                value,\n                label,\n                roundEdges,\n                data: d,\n                formattedLabel\n            };\n            bar.height = this.yScale.bandwidth();\n            if (this.type === 'standard') {\n                bar.width = Math.abs(this.xScale(value) - this.xScale(xScaleMin));\n                if (value < 0) {\n                    bar.x = this.xScale(value);\n                }\n                else {\n                    bar.x = this.xScale(xScaleMin);\n                }\n                bar.y = this.yScale(label);\n            }\n            else if (this.type === 'stacked') {\n                const offset0 = d0[d0Type];\n                const offset1 = offset0 + value;\n                d0[d0Type] += value;\n                bar.width = this.xScale(offset1) - this.xScale(offset0);\n                bar.x = this.xScale(offset0);\n                bar.y = 0;\n                bar.offset0 = offset0;\n                bar.offset1 = offset1;\n            }\n            else if (this.type === 'normalized') {\n                let offset0 = d0[d0Type];\n                let offset1 = offset0 + value;\n                d0[d0Type] += value;\n                if (total > 0) {\n                    offset0 = (offset0 * 100) / total;\n                    offset1 = (offset1 * 100) / total;\n                }\n                else {\n                    offset0 = 0;\n                    offset1 = 0;\n                }\n                bar.width = this.xScale(offset1) - this.xScale(offset0);\n                bar.x = this.xScale(offset0);\n                bar.y = 0;\n                bar.offset0 = offset0;\n                bar.offset1 = offset1;\n                value = (offset1 - offset0).toFixed(2) + '%';\n            }\n            if (this.colors.scaleType === 'ordinal') {\n                bar.color = this.colors.getColor(label);\n            }\n            else {\n                if (this.type === 'standard') {\n                    bar.color = this.colors.getColor(value);\n                    bar.gradientStops = this.colors.getLinearGradientStops(value);\n                }\n                else {\n                    bar.color = this.colors.getColor(bar.offset1);\n                    bar.gradientStops = this.colors.getLinearGradientStops(bar.offset1, bar.offset0);\n                }\n            }\n            let tooltipLabel = formattedLabel;\n            bar.ariaLabel = formattedLabel + ' ' + value.toLocaleString();\n            if (this.seriesName) {\n                tooltipLabel = `${this.seriesName} • ${formattedLabel}`;\n                bar.data.series = this.seriesName;\n                bar.ariaLabel = this.seriesName + ' ' + bar.ariaLabel;\n            }\n            bar.tooltipText = this.tooltipDisabled\n                ? undefined\n                : `\n        <span class=\"tooltip-label\">${escapeLabel(tooltipLabel)}</span>\n        <span class=\"tooltip-val\">${value.toLocaleString()}</span>\n      `;\n            return bar;\n        });\n        this.updateDataLabels();\n    }\n    updateDataLabels() {\n        if (this.type === 'stacked') {\n            this.barsForDataLabels = [];\n            const section = {};\n            section.series = this.seriesName;\n            const totalPositive = this.series.map(d => d.value).reduce((sum, d) => (d > 0 ? sum + d : sum), 0);\n            const totalNegative = this.series.map(d => d.value).reduce((sum, d) => (d < 0 ? sum + d : sum), 0);\n            section.total = totalPositive + totalNegative;\n            section.x = 0;\n            section.y = 0;\n            // if total is positive then we show it on the right, otherwise on the left\n            if (section.total > 0) {\n                section.width = this.xScale(totalPositive);\n            }\n            else {\n                section.width = this.xScale(totalNegative);\n            }\n            section.height = this.yScale.bandwidth();\n            this.barsForDataLabels.push(section);\n        }\n        else {\n            this.barsForDataLabels = this.series.map(d => {\n                const section = {};\n                section.series = this.seriesName ? this.seriesName : d.label;\n                section.total = d.value;\n                section.x = this.xScale(0);\n                section.y = this.yScale(d.label);\n                section.width = this.xScale(section.total) - this.xScale(0);\n                section.height = this.yScale.bandwidth();\n                return section;\n            });\n        }\n    }\n    updateTooltipSettings() {\n        this.tooltipPlacement = this.tooltipDisabled ? undefined : 'top';\n        this.tooltipType = this.tooltipDisabled ? undefined : 'tooltip';\n    }\n    isActive(entry) {\n        if (!this.activeEntries)\n            return false;\n        const item = this.activeEntries.find(d => {\n            return entry.name === d.name && entry.series === d.series;\n        });\n        return item !== undefined;\n    }\n    getLabel(dataItem) {\n        if (dataItem.label) {\n            return dataItem.label;\n        }\n        return dataItem.name;\n    }\n    trackBy(index, bar) {\n        return bar.label;\n    }\n    trackDataLabelBy(index, barLabel) {\n        return index + '#' + barLabel.series + '#' + barLabel.total;\n    }\n    click(data) {\n        this.select.emit(data);\n    }\n};\nSeriesHorizontal.ɵfac = function SeriesHorizontal_Factory(t) { return new (t || SeriesHorizontal)(); };\nSeriesHorizontal.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: SeriesHorizontal, selectors: [[\"g\", \"ngx-charts-series-horizontal\", \"\"]], inputs: { type: \"type\", tooltipDisabled: \"tooltipDisabled\", animations: \"animations\", showDataLabel: \"showDataLabel\", noBarWhenZero: \"noBarWhenZero\", dims: \"dims\", series: \"series\", xScale: \"xScale\", yScale: \"yScale\", colors: \"colors\", gradient: \"gradient\", activeEntries: \"activeEntries\", seriesName: \"seriesName\", tooltipTemplate: \"tooltipTemplate\", roundEdges: \"roundEdges\", dataLabelFormatting: \"dataLabelFormatting\" }, outputs: { select: \"select\", activate: \"activate\", deactivate: \"deactivate\", dataLabelWidthChanged: \"dataLabelWidthChanged\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c28, decls: 2, vars: 3, consts: [[\"ngx-charts-bar\", \"\", \"ngx-tooltip\", \"\", 3, \"width\", \"height\", \"x\", \"y\", \"fill\", \"stops\", \"data\", \"orientation\", \"roundEdges\", \"gradient\", \"isActive\", \"ariaLabel\", \"animations\", \"tooltipDisabled\", \"tooltipPlacement\", \"tooltipType\", \"tooltipTitle\", \"tooltipTemplate\", \"tooltipContext\", \"noBarWhenZero\", \"select\", \"activate\", \"deactivate\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [4, \"ngIf\"], [\"ngx-charts-bar\", \"\", \"ngx-tooltip\", \"\", 3, \"width\", \"height\", \"x\", \"y\", \"fill\", \"stops\", \"data\", \"orientation\", \"roundEdges\", \"gradient\", \"isActive\", \"ariaLabel\", \"animations\", \"tooltipDisabled\", \"tooltipPlacement\", \"tooltipType\", \"tooltipTitle\", \"tooltipTemplate\", \"tooltipContext\", \"noBarWhenZero\", \"select\", \"activate\", \"deactivate\"], [\"ngx-charts-bar-label\", \"\", 3, \"barX\", \"barY\", \"barWidth\", \"barHeight\", \"value\", \"valueFormatting\", \"orientation\", \"dimensionsChanged\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"ngx-charts-bar-label\", \"\", 3, \"barX\", \"barY\", \"barWidth\", \"barHeight\", \"value\", \"valueFormatting\", \"orientation\", \"dimensionsChanged\"]], template: function SeriesHorizontal_Template(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵtemplate(0, SeriesHorizontal__svg_g_0_Template, 1, 21, \"g\", 0);\n        ɵngcc0.ɵɵtemplate(1, SeriesHorizontal__svg_g_1_Template, 2, 2, \"g\", 1);\n    } if (rf & 2) {\n        ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.bars)(\"ngForTrackBy\", ctx.trackBy);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showDataLabel);\n    } }, directives: function () { return [ɵngcc1.NgForOf, ɵngcc1.NgIf, BarComponent, TooltipDirective, BarLabelComponent]; }, encapsulation: 2, data: { animation: [\n            trigger('animationState', [\n                transition(':leave', [\n                    style({\n                        opacity: 1\n                    }),\n                    animate(500, style({ opacity: 0 }))\n                ])\n            ])\n        ] }, changeDetection: 0 });\n__decorate([\n    Input()\n], SeriesHorizontal.prototype, \"dims\", void 0);\n__decorate([\n    Input()\n], SeriesHorizontal.prototype, \"type\", void 0);\n__decorate([\n    Input()\n], SeriesHorizontal.prototype, \"series\", void 0);\n__decorate([\n    Input()\n], SeriesHorizontal.prototype, \"xScale\", void 0);\n__decorate([\n    Input()\n], SeriesHorizontal.prototype, \"yScale\", void 0);\n__decorate([\n    Input()\n], SeriesHorizontal.prototype, \"colors\", void 0);\n__decorate([\n    Input()\n], SeriesHorizontal.prototype, \"tooltipDisabled\", void 0);\n__decorate([\n    Input()\n], SeriesHorizontal.prototype, \"gradient\", void 0);\n__decorate([\n    Input()\n], SeriesHorizontal.prototype, \"activeEntries\", void 0);\n__decorate([\n    Input()\n], SeriesHorizontal.prototype, \"seriesName\", void 0);\n__decorate([\n    Input()\n], SeriesHorizontal.prototype, \"tooltipTemplate\", void 0);\n__decorate([\n    Input()\n], SeriesHorizontal.prototype, \"roundEdges\", void 0);\n__decorate([\n    Input()\n], SeriesHorizontal.prototype, \"animations\", void 0);\n__decorate([\n    Input()\n], SeriesHorizontal.prototype, \"showDataLabel\", void 0);\n__decorate([\n    Input()\n], SeriesHorizontal.prototype, \"dataLabelFormatting\", void 0);\n__decorate([\n    Input()\n], SeriesHorizontal.prototype, \"noBarWhenZero\", void 0);\n__decorate([\n    Output()\n], SeriesHorizontal.prototype, \"select\", void 0);\n__decorate([\n    Output()\n], SeriesHorizontal.prototype, \"activate\", void 0);\n__decorate([\n    Output()\n], SeriesHorizontal.prototype, \"deactivate\", void 0);\n__decorate([\n    Output()\n], SeriesHorizontal.prototype, \"dataLabelWidthChanged\", void 0);\n\nlet BarLabelComponent = class BarLabelComponent {\n    constructor(element) {\n        this.dimensionsChanged = new EventEmitter();\n        this.horizontalPadding = 2;\n        this.verticalPadding = 5;\n        this.element = element.nativeElement;\n    }\n    ngOnChanges(changes) {\n        this.update();\n    }\n    getSize() {\n        const h = this.element.getBoundingClientRect().height;\n        const w = this.element.getBoundingClientRect().width;\n        return { height: h, width: w, negative: this.value < 0 };\n    }\n    ngAfterViewInit() {\n        this.dimensionsChanged.emit(this.getSize());\n    }\n    update() {\n        if (this.valueFormatting) {\n            this.formatedValue = this.valueFormatting(this.value);\n        }\n        else {\n            this.formatedValue = formatLabel(this.value);\n        }\n        if (this.orientation === 'horizontal') {\n            this.x = this.barX + this.barWidth;\n            // if the value is negative then it's on the left of the x0.\n            // we need to put the data label in front of the bar\n            if (this.value < 0) {\n                this.x = this.x - this.horizontalPadding;\n                this.textAnchor = 'end';\n            }\n            else {\n                this.x = this.x + this.horizontalPadding;\n                this.textAnchor = 'start';\n            }\n            this.y = this.barY + this.barHeight / 2;\n        }\n        else {\n            // orientation must be \"vertical\"\n            this.x = this.barX + this.barWidth / 2;\n            this.y = this.barY + this.barHeight;\n            if (this.value < 0) {\n                this.y = this.y + this.verticalPadding;\n                this.textAnchor = 'end';\n            }\n            else {\n                this.y = this.y - this.verticalPadding;\n                this.textAnchor = 'start';\n            }\n            this.transform = `rotate(-45, ${this.x} , ${this.y})`;\n        }\n    }\n};\nBarLabelComponent.ɵfac = function BarLabelComponent_Factory(t) { return new (t || BarLabelComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nBarLabelComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: BarLabelComponent, selectors: [[\"g\", \"ngx-charts-bar-label\", \"\"]], inputs: { value: \"value\", valueFormatting: \"valueFormatting\", barX: \"barX\", barY: \"barY\", barWidth: \"barWidth\", barHeight: \"barHeight\", orientation: \"orientation\" }, outputs: { dimensionsChanged: \"dimensionsChanged\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c29, decls: 2, vars: 5, consts: [[\"alignment-baseline\", \"middle\", 1, \"textDataLabel\"]], template: function BarLabelComponent_Template(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵnamespaceSVG();\n        ɵngcc0.ɵɵelementStart(0, \"text\", 0);\n        ɵngcc0.ɵɵtext(1);\n        ɵngcc0.ɵɵelementEnd();\n    } if (rf & 2) {\n        ɵngcc0.ɵɵattribute(\"text-anchor\", ctx.textAnchor)(\"transform\", ctx.transform)(\"x\", ctx.x)(\"y\", ctx.y);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵtextInterpolate1(\" \", ctx.formatedValue, \" \");\n    } }, styles: [\".textDataLabel[_ngcontent-%COMP%]{font-size:11px}\"], changeDetection: 0 });\nBarLabelComponent.ctorParameters = () => [\n    { type: ElementRef }\n];\n__decorate([\n    Input()\n], BarLabelComponent.prototype, \"value\", void 0);\n__decorate([\n    Input()\n], BarLabelComponent.prototype, \"valueFormatting\", void 0);\n__decorate([\n    Input()\n], BarLabelComponent.prototype, \"barX\", void 0);\n__decorate([\n    Input()\n], BarLabelComponent.prototype, \"barY\", void 0);\n__decorate([\n    Input()\n], BarLabelComponent.prototype, \"barWidth\", void 0);\n__decorate([\n    Input()\n], BarLabelComponent.prototype, \"barHeight\", void 0);\n__decorate([\n    Input()\n], BarLabelComponent.prototype, \"orientation\", void 0);\n__decorate([\n    Output()\n], BarLabelComponent.prototype, \"dimensionsChanged\", void 0);\n\nlet BarChartModule = class BarChartModule {\n};\nBarChartModule.ɵmod = ɵngcc0.ɵɵdefineNgModule({ type: BarChartModule });\nBarChartModule.ɵinj = ɵngcc0.ɵɵdefineInjector({ factory: function BarChartModule_Factory(t) { return new (t || BarChartModule)(); }, imports: [[ChartCommonModule]] });\n\nfunction getDomain(values, scaleType, autoScale, minVal, maxVal) {\n    let domain = [];\n    if (scaleType === 'linear') {\n        values = values.map(v => Number(v));\n        if (!autoScale) {\n            values.push(0);\n        }\n    }\n    if (scaleType === 'time' || scaleType === 'linear') {\n        const min = minVal ? minVal : Math.min(...values);\n        const max = maxVal ? maxVal : Math.max(...values);\n        domain = [min, max];\n    }\n    else {\n        domain = values;\n    }\n    return domain;\n}\nfunction getScale(domain, range, scaleType, roundDomains) {\n    let scale;\n    if (scaleType === 'time') {\n        scale = scaleTime()\n            .range(range)\n            .domain(domain);\n    }\n    else if (scaleType === 'linear') {\n        scale = scaleLinear()\n            .range(range)\n            .domain(domain);\n        if (roundDomains) {\n            scale = scale.nice();\n        }\n    }\n    else if (scaleType === 'ordinal') {\n        scale = scalePoint()\n            .range([range[0], range[1]])\n            .domain(domain);\n    }\n    return scale;\n}\n\nlet BubbleChartComponent = class BubbleChartComponent extends BaseChartComponent {\n    constructor() {\n        super(...arguments);\n        this.showGridLines = true;\n        this.legend = false;\n        this.legendTitle = 'Legend';\n        this.legendPosition = 'right';\n        this.xAxis = true;\n        this.yAxis = true;\n        this.trimXAxisTicks = true;\n        this.trimYAxisTicks = true;\n        this.rotateXAxisTicks = true;\n        this.maxXAxisTickLength = 16;\n        this.maxYAxisTickLength = 16;\n        this.roundDomains = false;\n        this.maxRadius = 10;\n        this.minRadius = 3;\n        this.schemeType = 'ordinal';\n        this.tooltipDisabled = false;\n        this.activate = new EventEmitter();\n        this.deactivate = new EventEmitter();\n        this.scaleType = 'linear';\n        this.margin = [10, 20, 10, 20];\n        this.bubblePadding = [0, 0, 0, 0];\n        this.xAxisHeight = 0;\n        this.yAxisWidth = 0;\n        this.activeEntries = [];\n    }\n    update() {\n        super.update();\n        this.dims = calculateViewDimensions({\n            width: this.width,\n            height: this.height,\n            margins: this.margin,\n            showXAxis: this.xAxis,\n            showYAxis: this.yAxis,\n            xAxisHeight: this.xAxisHeight,\n            yAxisWidth: this.yAxisWidth,\n            showXLabel: this.showXAxisLabel,\n            showYLabel: this.showYAxisLabel,\n            showLegend: this.legend,\n            legendType: this.schemeType,\n            legendPosition: this.legendPosition\n        });\n        this.seriesDomain = this.results.map(d => d.name);\n        this.rDomain = this.getRDomain();\n        this.xDomain = this.getXDomain();\n        this.yDomain = this.getYDomain();\n        this.transform = `translate(${this.dims.xOffset},${this.margin[0]})`;\n        const colorDomain = this.schemeType === 'ordinal' ? this.seriesDomain : this.rDomain;\n        this.colors = new ColorHelper(this.scheme, this.schemeType, colorDomain, this.customColors);\n        this.data = this.results;\n        this.minRadius = Math.max(this.minRadius, 1);\n        this.maxRadius = Math.max(this.maxRadius, 1);\n        this.rScale = this.getRScale(this.rDomain, [this.minRadius, this.maxRadius]);\n        this.bubblePadding = [0, 0, 0, 0];\n        this.setScales();\n        this.bubblePadding = this.getBubblePadding();\n        this.setScales();\n        this.legendOptions = this.getLegendOptions();\n        this.clipPathId = 'clip' + id().toString();\n        this.clipPath = `url(#${this.clipPathId})`;\n    }\n    hideCircles() {\n        this.deactivateAll();\n    }\n    onClick(data, series) {\n        if (series) {\n            data.series = series.name;\n        }\n        this.select.emit(data);\n    }\n    getBubblePadding() {\n        let yMin = 0;\n        let xMin = 0;\n        let yMax = this.dims.height;\n        let xMax = this.dims.width;\n        for (const s of this.data) {\n            for (const d of s.series) {\n                const r = this.rScale(d.r);\n                const cx = this.xScaleType === 'linear' ? this.xScale(Number(d.x)) : this.xScale(d.x);\n                const cy = this.yScaleType === 'linear' ? this.yScale(Number(d.y)) : this.yScale(d.y);\n                xMin = Math.max(r - cx, xMin);\n                yMin = Math.max(r - cy, yMin);\n                yMax = Math.max(cy + r, yMax);\n                xMax = Math.max(cx + r, xMax);\n            }\n        }\n        xMax = Math.max(xMax - this.dims.width, 0);\n        yMax = Math.max(yMax - this.dims.height, 0);\n        return [yMin, xMax, yMax, xMin];\n    }\n    setScales() {\n        let width = this.dims.width;\n        if (this.xScaleMin === undefined && this.xScaleMax === undefined) {\n            width = width - this.bubblePadding[1];\n        }\n        let height = this.dims.height;\n        if (this.yScaleMin === undefined && this.yScaleMax === undefined) {\n            height = height - this.bubblePadding[2];\n        }\n        this.xScale = this.getXScale(this.xDomain, width);\n        this.yScale = this.getYScale(this.yDomain, height);\n    }\n    getYScale(domain, height) {\n        return getScale(domain, [height, this.bubblePadding[0]], this.yScaleType, this.roundDomains);\n    }\n    getXScale(domain, width) {\n        return getScale(domain, [this.bubblePadding[3], width], this.xScaleType, this.roundDomains);\n    }\n    getRScale(domain, range) {\n        const scale = scaleLinear()\n            .range(range)\n            .domain(domain);\n        return this.roundDomains ? scale.nice() : scale;\n    }\n    getLegendOptions() {\n        const opts = {\n            scaleType: this.schemeType,\n            colors: undefined,\n            domain: [],\n            position: this.legendPosition,\n            title: undefined\n        };\n        if (opts.scaleType === 'ordinal') {\n            opts.domain = this.seriesDomain;\n            opts.colors = this.colors;\n            opts.title = this.legendTitle;\n        }\n        else {\n            opts.domain = this.rDomain;\n            opts.colors = this.colors.scale;\n        }\n        return opts;\n    }\n    getXDomain() {\n        const values = [];\n        for (const results of this.results) {\n            for (const d of results.series) {\n                if (!values.includes(d.x)) {\n                    values.push(d.x);\n                }\n            }\n        }\n        this.xScaleType = getScaleType(values);\n        return getDomain(values, this.xScaleType, this.autoScale, this.xScaleMin, this.xScaleMax);\n    }\n    getYDomain() {\n        const values = [];\n        for (const results of this.results) {\n            for (const d of results.series) {\n                if (!values.includes(d.y)) {\n                    values.push(d.y);\n                }\n            }\n        }\n        this.yScaleType = getScaleType(values);\n        return getDomain(values, this.yScaleType, this.autoScale, this.yScaleMin, this.yScaleMax);\n    }\n    getRDomain() {\n        let min = Infinity;\n        let max = -Infinity;\n        for (const results of this.results) {\n            for (const d of results.series) {\n                const value = Number(d.r) || 1;\n                min = Math.min(min, value);\n                max = Math.max(max, value);\n            }\n        }\n        return [min, max];\n    }\n    updateYAxisWidth({ width }) {\n        this.yAxisWidth = width;\n        this.update();\n    }\n    updateXAxisHeight({ height }) {\n        this.xAxisHeight = height;\n        this.update();\n    }\n    onActivate(item) {\n        const idx = this.activeEntries.findIndex(d => {\n            return d.name === item.name;\n        });\n        if (idx > -1) {\n            return;\n        }\n        this.activeEntries = [item, ...this.activeEntries];\n        this.activate.emit({ value: item, entries: this.activeEntries });\n    }\n    onDeactivate(item) {\n        const idx = this.activeEntries.findIndex(d => {\n            return d.name === item.name;\n        });\n        this.activeEntries.splice(idx, 1);\n        this.activeEntries = [...this.activeEntries];\n        this.deactivate.emit({ value: item, entries: this.activeEntries });\n    }\n    deactivateAll() {\n        this.activeEntries = [...this.activeEntries];\n        for (const entry of this.activeEntries) {\n            this.deactivate.emit({ value: entry, entries: [] });\n        }\n        this.activeEntries = [];\n    }\n    trackBy(index, item) {\n        return item.name;\n    }\n};\nBubbleChartComponent.ɵfac = function BubbleChartComponent_Factory(t) { return ɵBubbleChartComponent_BaseFactory(t || BubbleChartComponent); };\nBubbleChartComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: BubbleChartComponent, selectors: [[\"ngx-charts-bubble-chart\"]], contentQueries: function BubbleChartComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n        ɵngcc0.ɵɵcontentQuery(dirIndex, _c21, true);\n    } if (rf & 2) {\n        var _t;\n        ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tooltipTemplate = _t.first);\n    } }, hostBindings: function BubbleChartComponent_HostBindings(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵlistener(\"mouseleave\", function BubbleChartComponent_mouseleave_HostBindingHandler() { return ctx.hideCircles(); });\n    } }, inputs: { showGridLines: \"showGridLines\", legend: \"legend\", legendTitle: \"legendTitle\", legendPosition: \"legendPosition\", xAxis: \"xAxis\", yAxis: \"yAxis\", trimXAxisTicks: \"trimXAxisTicks\", trimYAxisTicks: \"trimYAxisTicks\", rotateXAxisTicks: \"rotateXAxisTicks\", maxXAxisTickLength: \"maxXAxisTickLength\", maxYAxisTickLength: \"maxYAxisTickLength\", roundDomains: \"roundDomains\", maxRadius: \"maxRadius\", minRadius: \"minRadius\", schemeType: \"schemeType\", tooltipDisabled: \"tooltipDisabled\", showXAxisLabel: \"showXAxisLabel\", showYAxisLabel: \"showYAxisLabel\", xAxisLabel: \"xAxisLabel\", yAxisLabel: \"yAxisLabel\", xAxisTickFormatting: \"xAxisTickFormatting\", yAxisTickFormatting: \"yAxisTickFormatting\", xAxisTicks: \"xAxisTicks\", yAxisTicks: \"yAxisTicks\", autoScale: \"autoScale\", xScaleMin: \"xScaleMin\", xScaleMax: \"xScaleMax\", yScaleMin: \"yScaleMin\", yScaleMax: \"yScaleMax\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 10, vars: 20, consts: [[3, \"view\", \"showLegend\", \"activeEntries\", \"legendOptions\", \"animations\", \"legendLabelClick\", \"legendLabelActivate\", \"legendLabelDeactivate\"], [1, \"bubble-chart\", \"chart\"], [\"ngx-charts-x-axis\", \"\", 3, \"showGridLines\", \"dims\", \"xScale\", \"showLabel\", \"labelText\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\", 4, \"ngIf\"], [\"ngx-charts-y-axis\", \"\", 3, \"showGridLines\", \"yScale\", \"dims\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\", 4, \"ngIf\"], [\"x\", \"0\", \"y\", \"0\", 1, \"bubble-chart-area\", 2, \"fill\", \"rgb(255, 0, 0)\", \"opacity\", \"0\", \"cursor\", \"auto\", 3, \"mouseenter\"], [4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"ngx-charts-x-axis\", \"\", 3, \"showGridLines\", \"dims\", \"xScale\", \"showLabel\", \"labelText\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\"], [\"ngx-charts-y-axis\", \"\", 3, \"showGridLines\", \"yScale\", \"dims\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\"], [\"ngx-charts-bubble-series\", \"\", 3, \"xScale\", \"yScale\", \"rScale\", \"xScaleType\", \"yScaleType\", \"xAxisLabel\", \"yAxisLabel\", \"colors\", \"data\", \"activeEntries\", \"tooltipDisabled\", \"tooltipTemplate\", \"select\", \"activate\", \"deactivate\"]], template: function BubbleChartComponent_Template(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵelementStart(0, \"ngx-charts-chart\", 0);\n        ɵngcc0.ɵɵlistener(\"legendLabelClick\", function BubbleChartComponent_Template_ngx_charts_chart_legendLabelClick_0_listener($event) { return ctx.onClick($event); })(\"legendLabelActivate\", function BubbleChartComponent_Template_ngx_charts_chart_legendLabelActivate_0_listener($event) { return ctx.onActivate($event); })(\"legendLabelDeactivate\", function BubbleChartComponent_Template_ngx_charts_chart_legendLabelDeactivate_0_listener($event) { return ctx.onDeactivate($event); });\n        ɵngcc0.ɵɵnamespaceSVG();\n        ɵngcc0.ɵɵelementStart(1, \"defs\");\n        ɵngcc0.ɵɵelementStart(2, \"clipPath\");\n        ɵngcc0.ɵɵelement(3, \"rect\");\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵelementStart(4, \"g\", 1);\n        ɵngcc0.ɵɵtemplate(5, BubbleChartComponent__svg_g_5_Template, 1, 10, \"g\", 2);\n        ɵngcc0.ɵɵtemplate(6, BubbleChartComponent__svg_g_6_Template, 1, 9, \"g\", 3);\n        ɵngcc0.ɵɵelementStart(7, \"rect\", 4);\n        ɵngcc0.ɵɵlistener(\"mouseenter\", function BubbleChartComponent_Template__svg_rect_mouseenter_7_listener() { return ctx.deactivateAll(); });\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵelementStart(8, \"g\");\n        ɵngcc0.ɵɵtemplate(9, BubbleChartComponent__svg_g_9_Template, 2, 13, \"g\", 5);\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵelementEnd();\n    } if (rf & 2) {\n        ɵngcc0.ɵɵproperty(\"view\", ɵngcc0.ɵɵpureFunction2(17, _c23, ctx.width, ctx.height))(\"showLegend\", ctx.legend)(\"activeEntries\", ctx.activeEntries)(\"legendOptions\", ctx.legendOptions)(\"animations\", ctx.animations);\n        ɵngcc0.ɵɵadvance(2);\n        ɵngcc0.ɵɵattribute(\"id\", ctx.clipPathId);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵattribute(\"width\", ctx.dims.width + 10)(\"height\", ctx.dims.height + 10)(\"transform\", \"translate(-5, -5)\");\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵattribute(\"transform\", ctx.transform);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.xAxis);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.yAxis);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵattribute(\"width\", ctx.dims.width)(\"height\", ctx.dims.height);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵattribute(\"clip-path\", ctx.clipPath);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.data)(\"ngForTrackBy\", ctx.trackBy);\n    } }, directives: function () { return [ChartComponent, ɵngcc1.NgIf, ɵngcc1.NgForOf, XAxisComponent, YAxisComponent, BubbleSeriesComponent]; }, styles: [_c24], encapsulation: 2, data: { animation: [\n            trigger('animationState', [\n                transition(':leave', [\n                    style({\n                        opacity: 1\n                    }),\n                    animate(500, style({\n                        opacity: 0\n                    }))\n                ])\n            ])\n        ] }, changeDetection: 0 });\n__decorate([\n    Input()\n], BubbleChartComponent.prototype, \"showGridLines\", void 0);\n__decorate([\n    Input()\n], BubbleChartComponent.prototype, \"legend\", void 0);\n__decorate([\n    Input()\n], BubbleChartComponent.prototype, \"legendTitle\", void 0);\n__decorate([\n    Input()\n], BubbleChartComponent.prototype, \"legendPosition\", void 0);\n__decorate([\n    Input()\n], BubbleChartComponent.prototype, \"xAxis\", void 0);\n__decorate([\n    Input()\n], BubbleChartComponent.prototype, \"yAxis\", void 0);\n__decorate([\n    Input()\n], BubbleChartComponent.prototype, \"showXAxisLabel\", void 0);\n__decorate([\n    Input()\n], BubbleChartComponent.prototype, \"showYAxisLabel\", void 0);\n__decorate([\n    Input()\n], BubbleChartComponent.prototype, \"xAxisLabel\", void 0);\n__decorate([\n    Input()\n], BubbleChartComponent.prototype, \"yAxisLabel\", void 0);\n__decorate([\n    Input()\n], BubbleChartComponent.prototype, \"trimXAxisTicks\", void 0);\n__decorate([\n    Input()\n], BubbleChartComponent.prototype, \"trimYAxisTicks\", void 0);\n__decorate([\n    Input()\n], BubbleChartComponent.prototype, \"rotateXAxisTicks\", void 0);\n__decorate([\n    Input()\n], BubbleChartComponent.prototype, \"maxXAxisTickLength\", void 0);\n__decorate([\n    Input()\n], BubbleChartComponent.prototype, \"maxYAxisTickLength\", void 0);\n__decorate([\n    Input()\n], BubbleChartComponent.prototype, \"xAxisTickFormatting\", void 0);\n__decorate([\n    Input()\n], BubbleChartComponent.prototype, \"yAxisTickFormatting\", void 0);\n__decorate([\n    Input()\n], BubbleChartComponent.prototype, \"xAxisTicks\", void 0);\n__decorate([\n    Input()\n], BubbleChartComponent.prototype, \"yAxisTicks\", void 0);\n__decorate([\n    Input()\n], BubbleChartComponent.prototype, \"roundDomains\", void 0);\n__decorate([\n    Input()\n], BubbleChartComponent.prototype, \"maxRadius\", void 0);\n__decorate([\n    Input()\n], BubbleChartComponent.prototype, \"minRadius\", void 0);\n__decorate([\n    Input()\n], BubbleChartComponent.prototype, \"autoScale\", void 0);\n__decorate([\n    Input()\n], BubbleChartComponent.prototype, \"schemeType\", void 0);\n__decorate([\n    Input()\n], BubbleChartComponent.prototype, \"tooltipDisabled\", void 0);\n__decorate([\n    Input()\n], BubbleChartComponent.prototype, \"xScaleMin\", void 0);\n__decorate([\n    Input()\n], BubbleChartComponent.prototype, \"xScaleMax\", void 0);\n__decorate([\n    Input()\n], BubbleChartComponent.prototype, \"yScaleMin\", void 0);\n__decorate([\n    Input()\n], BubbleChartComponent.prototype, \"yScaleMax\", void 0);\n__decorate([\n    Output()\n], BubbleChartComponent.prototype, \"activate\", void 0);\n__decorate([\n    Output()\n], BubbleChartComponent.prototype, \"deactivate\", void 0);\n__decorate([\n    ContentChild('tooltipTemplate')\n], BubbleChartComponent.prototype, \"tooltipTemplate\", void 0);\n__decorate([\n    HostListener('mouseleave')\n], BubbleChartComponent.prototype, \"hideCircles\", null);\n\nlet BubbleSeriesComponent = class BubbleSeriesComponent {\n    constructor() {\n        this.tooltipDisabled = false;\n        this.select = new EventEmitter();\n        this.activate = new EventEmitter();\n        this.deactivate = new EventEmitter();\n    }\n    ngOnChanges(changes) {\n        this.update();\n    }\n    update() {\n        this.circles = this.getCircles();\n    }\n    getCircles() {\n        const seriesName = this.data.name;\n        return this.data.series\n            .map((d, i) => {\n            if (typeof d.y !== 'undefined' && typeof d.x !== 'undefined') {\n                const y = d.y;\n                const x = d.x;\n                const r = d.r;\n                const radius = this.rScale(r || 1);\n                const tooltipLabel = formatLabel(d.name);\n                const cx = this.xScaleType === 'linear' ? this.xScale(Number(x)) : this.xScale(x);\n                const cy = this.yScaleType === 'linear' ? this.yScale(Number(y)) : this.yScale(y);\n                const color = this.colors.scaleType === 'linear' ? this.colors.getColor(r) : this.colors.getColor(seriesName);\n                const isActive = !this.activeEntries.length ? true : this.isActive({ name: seriesName });\n                const opacity = isActive ? 1 : 0.3;\n                const data = Object.assign({}, d, {\n                    series: seriesName,\n                    name: d.name,\n                    value: d.y,\n                    x: d.x,\n                    radius: d.r\n                });\n                return {\n                    data,\n                    x,\n                    y,\n                    r,\n                    classNames: [`circle-data-${i}`],\n                    value: y,\n                    label: x,\n                    cx,\n                    cy,\n                    radius,\n                    tooltipLabel,\n                    color,\n                    opacity,\n                    seriesName,\n                    isActive,\n                    transform: `translate(${cx},${cy})`\n                };\n            }\n        })\n            .filter(circle => circle !== undefined);\n    }\n    getTooltipText(circle) {\n        const hasRadius = typeof circle.r !== 'undefined';\n        const hasTooltipLabel = circle.tooltipLabel && circle.tooltipLabel.length;\n        const hasSeriesName = circle.seriesName && circle.seriesName.length;\n        const radiusValue = hasRadius ? formatLabel(circle.r) : '';\n        const xAxisLabel = this.xAxisLabel && this.xAxisLabel !== '' ? `${this.xAxisLabel}:` : '';\n        const yAxisLabel = this.yAxisLabel && this.yAxisLabel !== '' ? `${this.yAxisLabel}:` : '';\n        const x = formatLabel(circle.x);\n        const y = formatLabel(circle.y);\n        const name = hasSeriesName && hasTooltipLabel\n            ? `${circle.seriesName} • ${circle.tooltipLabel}`\n            : circle.seriesName + circle.tooltipLabel;\n        const tooltipTitle = hasSeriesName || hasTooltipLabel ? `<span class=\"tooltip-label\">${escapeLabel(name)}</span>` : '';\n        return `\n      ${tooltipTitle}\n      <span class=\"tooltip-label\">\n        <label>${escapeLabel(xAxisLabel)}</label> ${escapeLabel(x)}<br />\n        <label>${escapeLabel(yAxisLabel)}</label> ${escapeLabel(y)}\n      </span>\n      <span class=\"tooltip-val\">\n        ${escapeLabel(radiusValue)}\n      </span>\n    `;\n    }\n    onClick(data) {\n        this.select.emit(data);\n    }\n    isActive(entry) {\n        if (!this.activeEntries)\n            return false;\n        const item = this.activeEntries.find(d => {\n            return entry.name === d.name;\n        });\n        return item !== undefined;\n    }\n    isVisible(circle) {\n        if (this.activeEntries.length > 0) {\n            return this.isActive({ name: circle.seriesName });\n        }\n        return circle.opacity !== 0;\n    }\n    activateCircle(circle) {\n        circle.barVisible = true;\n        this.activate.emit({ name: this.data.name });\n    }\n    deactivateCircle(circle) {\n        circle.barVisible = false;\n        this.deactivate.emit({ name: this.data.name });\n    }\n    trackBy(index, circle) {\n        return `${circle.data.series} ${circle.data.name}`;\n    }\n};\nBubbleSeriesComponent.ɵfac = function BubbleSeriesComponent_Factory(t) { return new (t || BubbleSeriesComponent)(); };\nBubbleSeriesComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: BubbleSeriesComponent, selectors: [[\"g\", \"ngx-charts-bubble-series\", \"\"]], inputs: { tooltipDisabled: \"tooltipDisabled\", data: \"data\", xScale: \"xScale\", yScale: \"yScale\", rScale: \"rScale\", xScaleType: \"xScaleType\", yScaleType: \"yScaleType\", colors: \"colors\", visibleValue: \"visibleValue\", activeEntries: \"activeEntries\", xAxisLabel: \"xAxisLabel\", yAxisLabel: \"yAxisLabel\", tooltipTemplate: \"tooltipTemplate\" }, outputs: { select: \"select\", activate: \"activate\", deactivate: \"deactivate\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c30, decls: 1, vars: 2, consts: [[4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"ngx-charts-circle\", \"\", \"ngx-tooltip\", \"\", 1, \"circle\", 3, \"cx\", \"cy\", \"r\", \"fill\", \"pointerEvents\", \"data\", \"classNames\", \"tooltipDisabled\", \"tooltipPlacement\", \"tooltipType\", \"tooltipTitle\", \"tooltipTemplate\", \"tooltipContext\", \"select\", \"activate\", \"deactivate\"]], template: function BubbleSeriesComponent_Template(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵtemplate(0, BubbleSeriesComponent__svg_g_0_Template, 3, 19, \"g\", 0);\n    } if (rf & 2) {\n        ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.circles)(\"ngForTrackBy\", ctx.trackBy);\n    } }, directives: [ɵngcc1.NgForOf, CircleComponent, TooltipDirective], encapsulation: 2, data: { animation: [\n            trigger('animationState', [\n                transition(':enter', [\n                    style({\n                        opacity: 0,\n                        transform: 'scale(0)'\n                    }),\n                    animate(250, style({ opacity: 1, transform: 'scale(1)' }))\n                ])\n            ])\n        ] }, changeDetection: 0 });\n__decorate([\n    Input()\n], BubbleSeriesComponent.prototype, \"data\", void 0);\n__decorate([\n    Input()\n], BubbleSeriesComponent.prototype, \"xScale\", void 0);\n__decorate([\n    Input()\n], BubbleSeriesComponent.prototype, \"yScale\", void 0);\n__decorate([\n    Input()\n], BubbleSeriesComponent.prototype, \"rScale\", void 0);\n__decorate([\n    Input()\n], BubbleSeriesComponent.prototype, \"xScaleType\", void 0);\n__decorate([\n    Input()\n], BubbleSeriesComponent.prototype, \"yScaleType\", void 0);\n__decorate([\n    Input()\n], BubbleSeriesComponent.prototype, \"colors\", void 0);\n__decorate([\n    Input()\n], BubbleSeriesComponent.prototype, \"visibleValue\", void 0);\n__decorate([\n    Input()\n], BubbleSeriesComponent.prototype, \"activeEntries\", void 0);\n__decorate([\n    Input()\n], BubbleSeriesComponent.prototype, \"xAxisLabel\", void 0);\n__decorate([\n    Input()\n], BubbleSeriesComponent.prototype, \"yAxisLabel\", void 0);\n__decorate([\n    Input()\n], BubbleSeriesComponent.prototype, \"tooltipDisabled\", void 0);\n__decorate([\n    Input()\n], BubbleSeriesComponent.prototype, \"tooltipTemplate\", void 0);\n__decorate([\n    Output()\n], BubbleSeriesComponent.prototype, \"select\", void 0);\n__decorate([\n    Output()\n], BubbleSeriesComponent.prototype, \"activate\", void 0);\n__decorate([\n    Output()\n], BubbleSeriesComponent.prototype, \"deactivate\", void 0);\n\nlet BubbleChartModule = class BubbleChartModule {\n};\nBubbleChartModule.ɵmod = ɵngcc0.ɵɵdefineNgModule({ type: BubbleChartModule });\nBubbleChartModule.ɵinj = ɵngcc0.ɵɵdefineInjector({ factory: function BubbleChartModule_Factory(t) { return new (t || BubbleChartModule)(); }, imports: [[ChartCommonModule]] });\n\nlet HeatMapCellComponent = class HeatMapCellComponent {\n    constructor(element) {\n        this.gradient = false;\n        this.animations = true;\n        this.select = new EventEmitter();\n        this.activate = new EventEmitter();\n        this.deactivate = new EventEmitter();\n        this.element = element.nativeElement;\n    }\n    ngOnChanges(changes) {\n        this.transform = `translate(${this.x} , ${this.y})`;\n        this.startOpacity = 0.3;\n        this.gradientId = 'grad' + id().toString();\n        this.gradientUrl = `url(#${this.gradientId})`;\n        this.gradientStops = this.getGradientStops();\n        if (this.animations) {\n            this.loadAnimation();\n        }\n    }\n    getGradientStops() {\n        return [\n            {\n                offset: 0,\n                color: this.fill,\n                opacity: this.startOpacity\n            },\n            {\n                offset: 100,\n                color: this.fill,\n                opacity: 1\n            }\n        ];\n    }\n    loadAnimation() {\n        const node = select(this.element).select('.cell');\n        node.attr('opacity', 0);\n        this.animateToCurrentForm();\n    }\n    animateToCurrentForm() {\n        const node = select(this.element).select('.cell');\n        node\n            .transition()\n            .duration(750)\n            .attr('opacity', 1);\n    }\n    onClick() {\n        this.select.emit(this.data);\n    }\n    onMouseEnter() {\n        this.activate.emit(this.data);\n    }\n    onMouseLeave() {\n        this.deactivate.emit(this.data);\n    }\n};\nHeatMapCellComponent.ɵfac = function HeatMapCellComponent_Factory(t) { return new (t || HeatMapCellComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nHeatMapCellComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: HeatMapCellComponent, selectors: [[\"g\", \"ngx-charts-heat-map-cell\", \"\"]], hostBindings: function HeatMapCellComponent_HostBindings(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵlistener(\"mouseenter\", function HeatMapCellComponent_mouseenter_HostBindingHandler() { return ctx.onMouseEnter(); })(\"mouseleave\", function HeatMapCellComponent_mouseleave_HostBindingHandler() { return ctx.onMouseLeave(); });\n    } }, inputs: { gradient: \"gradient\", animations: \"animations\", fill: \"fill\", x: \"x\", y: \"y\", width: \"width\", height: \"height\", data: \"data\", label: \"label\" }, outputs: { select: \"select\", activate: \"activate\", deactivate: \"deactivate\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c31, decls: 3, vars: 5, consts: [[1, \"cell\"], [4, \"ngIf\"], [\"rx\", \"3\", 1, \"cell\", 2, \"cursor\", \"pointer\", 3, \"click\"], [\"ngx-charts-svg-linear-gradient\", \"\", \"orientation\", \"vertical\", 3, \"name\", \"stops\"]], template: function HeatMapCellComponent_Template(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵnamespaceSVG();\n        ɵngcc0.ɵɵelementStart(0, \"g\", 0);\n        ɵngcc0.ɵɵtemplate(1, HeatMapCellComponent__svg_defs_1_Template, 2, 2, \"defs\", 1);\n        ɵngcc0.ɵɵelementStart(2, \"rect\", 2);\n        ɵngcc0.ɵɵlistener(\"click\", function HeatMapCellComponent_Template__svg_rect_click_2_listener() { return ctx.onClick(); });\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵelementEnd();\n    } if (rf & 2) {\n        ɵngcc0.ɵɵattribute(\"transform\", ctx.transform);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.gradient);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵattribute(\"fill\", ctx.gradient ? ctx.gradientUrl : ctx.fill)(\"width\", ctx.width)(\"height\", ctx.height);\n    } }, directives: [ɵngcc1.NgIf, SvgLinearGradientComponent], encapsulation: 2, changeDetection: 0 });\nHeatMapCellComponent.ctorParameters = () => [\n    { type: ElementRef }\n];\n__decorate([\n    Input()\n], HeatMapCellComponent.prototype, \"fill\", void 0);\n__decorate([\n    Input()\n], HeatMapCellComponent.prototype, \"x\", void 0);\n__decorate([\n    Input()\n], HeatMapCellComponent.prototype, \"y\", void 0);\n__decorate([\n    Input()\n], HeatMapCellComponent.prototype, \"width\", void 0);\n__decorate([\n    Input()\n], HeatMapCellComponent.prototype, \"height\", void 0);\n__decorate([\n    Input()\n], HeatMapCellComponent.prototype, \"data\", void 0);\n__decorate([\n    Input()\n], HeatMapCellComponent.prototype, \"label\", void 0);\n__decorate([\n    Input()\n], HeatMapCellComponent.prototype, \"gradient\", void 0);\n__decorate([\n    Input()\n], HeatMapCellComponent.prototype, \"animations\", void 0);\n__decorate([\n    Output()\n], HeatMapCellComponent.prototype, \"select\", void 0);\n__decorate([\n    Output()\n], HeatMapCellComponent.prototype, \"activate\", void 0);\n__decorate([\n    Output()\n], HeatMapCellComponent.prototype, \"deactivate\", void 0);\n__decorate([\n    HostListener('mouseenter')\n], HeatMapCellComponent.prototype, \"onMouseEnter\", null);\n__decorate([\n    HostListener('mouseleave')\n], HeatMapCellComponent.prototype, \"onMouseLeave\", null);\n\nlet HeatCellSeriesComponent = class HeatCellSeriesComponent {\n    constructor() {\n        this.tooltipDisabled = false;\n        this.animations = true;\n        this.select = new EventEmitter();\n        this.activate = new EventEmitter();\n        this.deactivate = new EventEmitter();\n    }\n    ngOnInit() {\n        if (!this.tooltipText) {\n            this.tooltipText = this.getTooltipText;\n        }\n    }\n    ngOnChanges(changes) {\n        this.update();\n    }\n    update() {\n        this.cells = this.getCells();\n    }\n    getCells() {\n        const cells = [];\n        this.data.map(row => {\n            row.series.map(cell => {\n                const value = cell.value;\n                cell.series = row.name;\n                cells.push({\n                    row,\n                    cell,\n                    x: this.xScale(row.name),\n                    y: this.yScale(cell.name),\n                    width: this.xScale.bandwidth(),\n                    height: this.yScale.bandwidth(),\n                    fill: this.colors.getColor(value),\n                    data: value,\n                    label: formatLabel(cell.name),\n                    series: row.name\n                });\n            });\n        });\n        return cells;\n    }\n    getTooltipText({ label, data, series }) {\n        return `\n      <span class=\"tooltip-label\">${escapeLabel(series)} • ${escapeLabel(label)}</span>\n      <span class=\"tooltip-val\">${data.toLocaleString()}</span>\n    `;\n    }\n    trackBy(index, item) {\n        return item.tooltipText;\n    }\n    onClick(data) {\n        this.select.emit(data);\n    }\n};\nHeatCellSeriesComponent.ɵfac = function HeatCellSeriesComponent_Factory(t) { return new (t || HeatCellSeriesComponent)(); };\nHeatCellSeriesComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: HeatCellSeriesComponent, selectors: [[\"g\", \"ngx-charts-heat-map-cell-series\", \"\"]], inputs: { tooltipDisabled: \"tooltipDisabled\", animations: \"animations\", tooltipText: \"tooltipText\", data: \"data\", colors: \"colors\", xScale: \"xScale\", yScale: \"yScale\", gradient: \"gradient\", tooltipTemplate: \"tooltipTemplate\" }, outputs: { select: \"select\", activate: \"activate\", deactivate: \"deactivate\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c32, decls: 1, vars: 2, consts: [[\"ngx-charts-heat-map-cell\", \"\", \"ngx-tooltip\", \"\", 3, \"x\", \"y\", \"width\", \"height\", \"fill\", \"data\", \"gradient\", \"animations\", \"tooltipDisabled\", \"tooltipPlacement\", \"tooltipType\", \"tooltipTitle\", \"tooltipTemplate\", \"tooltipContext\", \"select\", \"activate\", \"deactivate\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"ngx-charts-heat-map-cell\", \"\", \"ngx-tooltip\", \"\", 3, \"x\", \"y\", \"width\", \"height\", \"fill\", \"data\", \"gradient\", \"animations\", \"tooltipDisabled\", \"tooltipPlacement\", \"tooltipType\", \"tooltipTitle\", \"tooltipTemplate\", \"tooltipContext\", \"select\", \"activate\", \"deactivate\"]], template: function HeatCellSeriesComponent_Template(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵtemplate(0, HeatCellSeriesComponent__svg_g_0_Template, 1, 18, \"g\", 0);\n    } if (rf & 2) {\n        ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.cells)(\"ngForTrackBy\", ctx.trackBy);\n    } }, directives: [ɵngcc1.NgForOf, HeatMapCellComponent, TooltipDirective], encapsulation: 2, changeDetection: 0 });\n__decorate([\n    Input()\n], HeatCellSeriesComponent.prototype, \"data\", void 0);\n__decorate([\n    Input()\n], HeatCellSeriesComponent.prototype, \"colors\", void 0);\n__decorate([\n    Input()\n], HeatCellSeriesComponent.prototype, \"xScale\", void 0);\n__decorate([\n    Input()\n], HeatCellSeriesComponent.prototype, \"yScale\", void 0);\n__decorate([\n    Input()\n], HeatCellSeriesComponent.prototype, \"gradient\", void 0);\n__decorate([\n    Input()\n], HeatCellSeriesComponent.prototype, \"tooltipDisabled\", void 0);\n__decorate([\n    Input()\n], HeatCellSeriesComponent.prototype, \"tooltipText\", void 0);\n__decorate([\n    Input()\n], HeatCellSeriesComponent.prototype, \"tooltipTemplate\", void 0);\n__decorate([\n    Input()\n], HeatCellSeriesComponent.prototype, \"animations\", void 0);\n__decorate([\n    Output()\n], HeatCellSeriesComponent.prototype, \"select\", void 0);\n__decorate([\n    Output()\n], HeatCellSeriesComponent.prototype, \"activate\", void 0);\n__decorate([\n    Output()\n], HeatCellSeriesComponent.prototype, \"deactivate\", void 0);\n\nlet HeatMapComponent = class HeatMapComponent extends BaseChartComponent {\n    constructor() {\n        super(...arguments);\n        this.legendTitle = 'Legend';\n        this.legendPosition = 'right';\n        this.innerPadding = 8;\n        this.trimXAxisTicks = true;\n        this.trimYAxisTicks = true;\n        this.rotateXAxisTicks = true;\n        this.maxXAxisTickLength = 16;\n        this.maxYAxisTickLength = 16;\n        this.tooltipDisabled = false;\n        this.activeEntries = [];\n        this.activate = new EventEmitter();\n        this.deactivate = new EventEmitter();\n        this.margin = [10, 20, 10, 20];\n        this.xAxisHeight = 0;\n        this.yAxisWidth = 0;\n        this.scaleType = 'linear';\n    }\n    update() {\n        super.update();\n        this.formatDates();\n        this.xDomain = this.getXDomain();\n        this.yDomain = this.getYDomain();\n        this.valueDomain = this.getValueDomain();\n        this.scaleType = getScaleType(this.valueDomain, false);\n        this.dims = calculateViewDimensions({\n            width: this.width,\n            height: this.height,\n            margins: this.margin,\n            showXAxis: this.xAxis,\n            showYAxis: this.yAxis,\n            xAxisHeight: this.xAxisHeight,\n            yAxisWidth: this.yAxisWidth,\n            showXLabel: this.showXAxisLabel,\n            showYLabel: this.showYAxisLabel,\n            showLegend: this.legend,\n            legendType: this.scaleType,\n            legendPosition: this.legendPosition\n        });\n        if (this.scaleType === 'linear') {\n            let min = this.min;\n            let max = this.max;\n            if (!this.min) {\n                min = Math.min(0, ...this.valueDomain);\n            }\n            if (!this.max) {\n                max = Math.max(...this.valueDomain);\n            }\n            this.valueDomain = [min, max];\n        }\n        this.xScale = this.getXScale();\n        this.yScale = this.getYScale();\n        this.setColors();\n        this.legendOptions = this.getLegendOptions();\n        this.transform = `translate(${this.dims.xOffset} , ${this.margin[0]})`;\n        this.rects = this.getRects();\n    }\n    getXDomain() {\n        const domain = [];\n        for (const group of this.results) {\n            if (!domain.includes(group.name)) {\n                domain.push(group.name);\n            }\n        }\n        return domain;\n    }\n    getYDomain() {\n        const domain = [];\n        for (const group of this.results) {\n            for (const d of group.series) {\n                if (!domain.includes(d.name)) {\n                    domain.push(d.name);\n                }\n            }\n        }\n        return domain;\n    }\n    getValueDomain() {\n        const domain = [];\n        for (const group of this.results) {\n            for (const d of group.series) {\n                if (!domain.includes(d.value)) {\n                    domain.push(d.value);\n                }\n            }\n        }\n        return domain;\n    }\n    /**\n     * Converts the input to gap paddingInner in fraction\n     * Supports the following inputs:\n     *    Numbers: 8\n     *    Strings: \"8\", \"8px\", \"8%\"\n     *    Arrays: [8,2], \"8,2\", \"[8,2]\"\n     *    Mixed: [8,\"2%\"], [\"8px\",\"2%\"], \"8,2%\", \"[8,2%]\"\n     *\n     * @memberOf HeatMapComponent\n     */\n    getDimension(value, index = 0, N, L) {\n        if (typeof value === 'string') {\n            value = value\n                .replace('[', '')\n                .replace(']', '')\n                .replace('px', '')\n                // tslint:disable-next-line: quotemark\n                .replace(\"'\", '');\n            if (value.includes(',')) {\n                value = value.split(',');\n            }\n        }\n        if (Array.isArray(value) && typeof index === 'number') {\n            return this.getDimension(value[index], null, N, L);\n        }\n        if (typeof value === 'string' && value.includes('%')) {\n            return +value.replace('%', '') / 100;\n        }\n        return N / (L / +value + 1);\n    }\n    getXScale() {\n        const f = this.getDimension(this.innerPadding, 0, this.xDomain.length, this.dims.width);\n        return scaleBand()\n            .rangeRound([0, this.dims.width])\n            .domain(this.xDomain)\n            .paddingInner(f);\n    }\n    getYScale() {\n        const f = this.getDimension(this.innerPadding, 1, this.yDomain.length, this.dims.height);\n        return scaleBand()\n            .rangeRound([this.dims.height, 0])\n            .domain(this.yDomain)\n            .paddingInner(f);\n    }\n    getRects() {\n        const rects = [];\n        this.xDomain.map(xVal => {\n            this.yDomain.map(yVal => {\n                rects.push({\n                    x: this.xScale(xVal),\n                    y: this.yScale(yVal),\n                    rx: 3,\n                    width: this.xScale.bandwidth(),\n                    height: this.yScale.bandwidth(),\n                    fill: 'rgba(200,200,200,0.03)'\n                });\n            });\n        });\n        return rects;\n    }\n    onClick(data) {\n        this.select.emit(data);\n    }\n    setColors() {\n        this.colors = new ColorHelper(this.scheme, this.scaleType, this.valueDomain);\n    }\n    getLegendOptions() {\n        return {\n            scaleType: this.scaleType,\n            domain: this.valueDomain,\n            colors: this.scaleType === 'ordinal' ? this.colors : this.colors.scale,\n            title: this.scaleType === 'ordinal' ? this.legendTitle : undefined,\n            position: this.legendPosition\n        };\n    }\n    updateYAxisWidth({ width }) {\n        this.yAxisWidth = width;\n        this.update();\n    }\n    updateXAxisHeight({ height }) {\n        this.xAxisHeight = height;\n        this.update();\n    }\n    onActivate(event, group, fromLegend = false) {\n        const item = Object.assign({}, event);\n        if (group) {\n            item.series = group.name;\n        }\n        const items = this.results\n            .map(g => g.series)\n            .flat()\n            .filter(i => {\n            if (fromLegend) {\n                return i.label === item.name;\n            }\n            else {\n                return i.name === item.name && i.series === item.series;\n            }\n        });\n        this.activeEntries = [...items];\n        this.activate.emit({ value: item, entries: this.activeEntries });\n    }\n    onDeactivate(event, group, fromLegend = false) {\n        const item = Object.assign({}, event);\n        if (group) {\n            item.series = group.name;\n        }\n        this.activeEntries = this.activeEntries.filter(i => {\n            if (fromLegend) {\n                return i.label !== item.name;\n            }\n            else {\n                return !(i.name === item.name && i.series === item.series);\n            }\n        });\n        this.deactivate.emit({ value: item, entries: this.activeEntries });\n    }\n};\nHeatMapComponent.ɵfac = function HeatMapComponent_Factory(t) { return ɵHeatMapComponent_BaseFactory(t || HeatMapComponent); };\nHeatMapComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: HeatMapComponent, selectors: [[\"ngx-charts-heat-map\"]], contentQueries: function HeatMapComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n        ɵngcc0.ɵɵcontentQuery(dirIndex, _c21, true);\n    } if (rf & 2) {\n        var _t;\n        ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tooltipTemplate = _t.first);\n    } }, inputs: { legendTitle: \"legendTitle\", legendPosition: \"legendPosition\", innerPadding: \"innerPadding\", trimXAxisTicks: \"trimXAxisTicks\", trimYAxisTicks: \"trimYAxisTicks\", rotateXAxisTicks: \"rotateXAxisTicks\", maxXAxisTickLength: \"maxXAxisTickLength\", maxYAxisTickLength: \"maxYAxisTickLength\", tooltipDisabled: \"tooltipDisabled\", activeEntries: \"activeEntries\", legend: \"legend\", xAxis: \"xAxis\", yAxis: \"yAxis\", showXAxisLabel: \"showXAxisLabel\", showYAxisLabel: \"showYAxisLabel\", xAxisLabel: \"xAxisLabel\", yAxisLabel: \"yAxisLabel\", gradient: \"gradient\", xAxisTickFormatting: \"xAxisTickFormatting\", yAxisTickFormatting: \"yAxisTickFormatting\", xAxisTicks: \"xAxisTicks\", yAxisTicks: \"yAxisTicks\", tooltipText: \"tooltipText\", min: \"min\", max: \"max\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 6, vars: 20, consts: [[3, \"view\", \"showLegend\", \"animations\", \"legendOptions\", \"legendLabelClick\"], [1, \"heat-map\", \"chart\"], [\"ngx-charts-x-axis\", \"\", 3, \"xScale\", \"dims\", \"showLabel\", \"labelText\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\", 4, \"ngIf\"], [\"ngx-charts-y-axis\", \"\", 3, \"yScale\", \"dims\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\", 4, \"ngIf\"], [4, \"ngFor\", \"ngForOf\"], [\"ngx-charts-heat-map-cell-series\", \"\", 3, \"xScale\", \"yScale\", \"colors\", \"data\", \"gradient\", \"animations\", \"tooltipDisabled\", \"tooltipTemplate\", \"tooltipText\", \"select\", \"activate\", \"deactivate\"], [\"ngx-charts-x-axis\", \"\", 3, \"xScale\", \"dims\", \"showLabel\", \"labelText\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\"], [\"ngx-charts-y-axis\", \"\", 3, \"yScale\", \"dims\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\"]], template: function HeatMapComponent_Template(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵelementStart(0, \"ngx-charts-chart\", 0);\n        ɵngcc0.ɵɵlistener(\"legendLabelClick\", function HeatMapComponent_Template_ngx_charts_chart_legendLabelClick_0_listener($event) { return ctx.onClick($event); });\n        ɵngcc0.ɵɵnamespaceSVG();\n        ɵngcc0.ɵɵelementStart(1, \"g\", 1);\n        ɵngcc0.ɵɵtemplate(2, HeatMapComponent__svg_g_2_Template, 1, 9, \"g\", 2);\n        ɵngcc0.ɵɵtemplate(3, HeatMapComponent__svg_g_3_Template, 1, 8, \"g\", 3);\n        ɵngcc0.ɵɵtemplate(4, HeatMapComponent__svg_rect_4_Template, 1, 6, \"rect\", 4);\n        ɵngcc0.ɵɵelementStart(5, \"g\", 5);\n        ɵngcc0.ɵɵlistener(\"select\", function HeatMapComponent_Template__svg_g_select_5_listener($event) { return ctx.onClick($event); })(\"activate\", function HeatMapComponent_Template__svg_g_activate_5_listener($event) { return ctx.onActivate($event, undefined); })(\"deactivate\", function HeatMapComponent_Template__svg_g_deactivate_5_listener($event) { return ctx.onDeactivate($event, undefined); });\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵelementEnd();\n    } if (rf & 2) {\n        ɵngcc0.ɵɵproperty(\"view\", ɵngcc0.ɵɵpureFunction2(17, _c23, ctx.width, ctx.height))(\"showLegend\", ctx.legend)(\"animations\", ctx.animations)(\"legendOptions\", ctx.legendOptions);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵattribute(\"transform\", ctx.transform);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.xAxis);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.yAxis);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.rects);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"xScale\", ctx.xScale)(\"yScale\", ctx.yScale)(\"colors\", ctx.colors)(\"data\", ctx.results)(\"gradient\", ctx.gradient)(\"animations\", ctx.animations)(\"tooltipDisabled\", ctx.tooltipDisabled)(\"tooltipTemplate\", ctx.tooltipTemplate)(\"tooltipText\", ctx.tooltipText);\n    } }, directives: [ChartComponent, ɵngcc1.NgIf, ɵngcc1.NgForOf, HeatCellSeriesComponent, XAxisComponent, YAxisComponent], styles: [_c24], encapsulation: 2, changeDetection: 0 });\n__decorate([\n    Input()\n], HeatMapComponent.prototype, \"legend\", void 0);\n__decorate([\n    Input()\n], HeatMapComponent.prototype, \"legendTitle\", void 0);\n__decorate([\n    Input()\n], HeatMapComponent.prototype, \"legendPosition\", void 0);\n__decorate([\n    Input()\n], HeatMapComponent.prototype, \"xAxis\", void 0);\n__decorate([\n    Input()\n], HeatMapComponent.prototype, \"yAxis\", void 0);\n__decorate([\n    Input()\n], HeatMapComponent.prototype, \"showXAxisLabel\", void 0);\n__decorate([\n    Input()\n], HeatMapComponent.prototype, \"showYAxisLabel\", void 0);\n__decorate([\n    Input()\n], HeatMapComponent.prototype, \"xAxisLabel\", void 0);\n__decorate([\n    Input()\n], HeatMapComponent.prototype, \"yAxisLabel\", void 0);\n__decorate([\n    Input()\n], HeatMapComponent.prototype, \"gradient\", void 0);\n__decorate([\n    Input()\n], HeatMapComponent.prototype, \"innerPadding\", void 0);\n__decorate([\n    Input()\n], HeatMapComponent.prototype, \"trimXAxisTicks\", void 0);\n__decorate([\n    Input()\n], HeatMapComponent.prototype, \"trimYAxisTicks\", void 0);\n__decorate([\n    Input()\n], HeatMapComponent.prototype, \"rotateXAxisTicks\", void 0);\n__decorate([\n    Input()\n], HeatMapComponent.prototype, \"maxXAxisTickLength\", void 0);\n__decorate([\n    Input()\n], HeatMapComponent.prototype, \"maxYAxisTickLength\", void 0);\n__decorate([\n    Input()\n], HeatMapComponent.prototype, \"xAxisTickFormatting\", void 0);\n__decorate([\n    Input()\n], HeatMapComponent.prototype, \"yAxisTickFormatting\", void 0);\n__decorate([\n    Input()\n], HeatMapComponent.prototype, \"xAxisTicks\", void 0);\n__decorate([\n    Input()\n], HeatMapComponent.prototype, \"yAxisTicks\", void 0);\n__decorate([\n    Input()\n], HeatMapComponent.prototype, \"tooltipDisabled\", void 0);\n__decorate([\n    Input()\n], HeatMapComponent.prototype, \"tooltipText\", void 0);\n__decorate([\n    Input()\n], HeatMapComponent.prototype, \"min\", void 0);\n__decorate([\n    Input()\n], HeatMapComponent.prototype, \"max\", void 0);\n__decorate([\n    Input()\n], HeatMapComponent.prototype, \"activeEntries\", void 0);\n__decorate([\n    Output()\n], HeatMapComponent.prototype, \"activate\", void 0);\n__decorate([\n    Output()\n], HeatMapComponent.prototype, \"deactivate\", void 0);\n__decorate([\n    ContentChild('tooltipTemplate')\n], HeatMapComponent.prototype, \"tooltipTemplate\", void 0);\n\nlet HeatMapModule = class HeatMapModule {\n};\nHeatMapModule.ɵmod = ɵngcc0.ɵɵdefineNgModule({ type: HeatMapModule });\nHeatMapModule.ɵinj = ɵngcc0.ɵɵdefineInjector({ factory: function HeatMapModule_Factory(t) { return new (t || HeatMapModule)(); }, imports: [[ChartCommonModule]] });\n\nlet LineComponent = class LineComponent {\n    constructor(element) {\n        this.element = element;\n        this.fill = 'none';\n        this.animations = true;\n        this.select = new EventEmitter();\n        this.initialized = false;\n    }\n    ngOnChanges(changes) {\n        if (!this.initialized) {\n            this.initialized = true;\n            this.initialPath = this.path;\n        }\n        else {\n            this.updatePathEl();\n        }\n    }\n    updatePathEl() {\n        const node = select(this.element.nativeElement).select('.line');\n        if (this.animations) {\n            node\n                .transition()\n                .duration(750)\n                .attr('d', this.path);\n        }\n        else {\n            node.attr('d', this.path);\n        }\n    }\n};\nLineComponent.ɵfac = function LineComponent_Factory(t) { return new (t || LineComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nLineComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: LineComponent, selectors: [[\"g\", \"ngx-charts-line\", \"\"]], inputs: { fill: \"fill\", animations: \"animations\", path: \"path\", stroke: \"stroke\", data: \"data\" }, outputs: { select: \"select\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c34, decls: 1, vars: 4, consts: [[\"stroke-width\", \"1.5px\", 1, \"line\"]], template: function LineComponent_Template(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵnamespaceSVG();\n        ɵngcc0.ɵɵelement(0, \"path\", 0);\n    } if (rf & 2) {\n        ɵngcc0.ɵɵproperty(\"@animationState\", \"active\");\n        ɵngcc0.ɵɵattribute(\"d\", ctx.initialPath)(\"fill\", ctx.fill)(\"stroke\", ctx.stroke);\n    } }, encapsulation: 2, data: { animation: [\n            trigger('animationState', [\n                transition(':enter', [\n                    style({\n                        strokeDasharray: 2000,\n                        strokeDashoffset: 2000\n                    }),\n                    animate(1000, style({\n                        strokeDashoffset: 0\n                    }))\n                ])\n            ])\n        ] }, changeDetection: 0 });\nLineComponent.ctorParameters = () => [\n    { type: ElementRef }\n];\n__decorate([\n    Input()\n], LineComponent.prototype, \"path\", void 0);\n__decorate([\n    Input()\n], LineComponent.prototype, \"stroke\", void 0);\n__decorate([\n    Input()\n], LineComponent.prototype, \"data\", void 0);\n__decorate([\n    Input()\n], LineComponent.prototype, \"fill\", void 0);\n__decorate([\n    Input()\n], LineComponent.prototype, \"animations\", void 0);\n__decorate([\n    Output()\n], LineComponent.prototype, \"select\", void 0);\n\nlet LineChartComponent = class LineChartComponent extends BaseChartComponent {\n    constructor() {\n        super(...arguments);\n        this.legendTitle = 'Legend';\n        this.legendPosition = 'right';\n        this.showGridLines = true;\n        this.curve = curveLinear;\n        this.activeEntries = [];\n        this.trimXAxisTicks = true;\n        this.trimYAxisTicks = true;\n        this.rotateXAxisTicks = true;\n        this.maxXAxisTickLength = 16;\n        this.maxYAxisTickLength = 16;\n        this.roundDomains = false;\n        this.tooltipDisabled = false;\n        this.showRefLines = false;\n        this.showRefLabels = true;\n        this.activate = new EventEmitter();\n        this.deactivate = new EventEmitter();\n        this.margin = [10, 20, 10, 20];\n        this.xAxisHeight = 0;\n        this.yAxisWidth = 0;\n        this.timelineHeight = 50;\n        this.timelinePadding = 10;\n    }\n    update() {\n        super.update();\n        this.dims = calculateViewDimensions({\n            width: this.width,\n            height: this.height,\n            margins: this.margin,\n            showXAxis: this.xAxis,\n            showYAxis: this.yAxis,\n            xAxisHeight: this.xAxisHeight,\n            yAxisWidth: this.yAxisWidth,\n            showXLabel: this.showXAxisLabel,\n            showYLabel: this.showYAxisLabel,\n            showLegend: this.legend,\n            legendType: this.schemeType,\n            legendPosition: this.legendPosition\n        });\n        if (this.timeline) {\n            this.dims.height -= this.timelineHeight + this.margin[2] + this.timelinePadding;\n        }\n        this.xDomain = this.getXDomain();\n        if (this.filteredDomain) {\n            this.xDomain = this.filteredDomain;\n        }\n        this.yDomain = this.getYDomain();\n        this.seriesDomain = this.getSeriesDomain();\n        this.xScale = this.getXScale(this.xDomain, this.dims.width);\n        this.yScale = this.getYScale(this.yDomain, this.dims.height);\n        this.updateTimeline();\n        this.setColors();\n        this.legendOptions = this.getLegendOptions();\n        this.transform = `translate(${this.dims.xOffset} , ${this.margin[0]})`;\n        this.clipPathId = 'clip' + id().toString();\n        this.clipPath = `url(#${this.clipPathId})`;\n    }\n    updateTimeline() {\n        if (this.timeline) {\n            this.timelineWidth = this.dims.width;\n            this.timelineXDomain = this.getXDomain();\n            this.timelineXScale = this.getXScale(this.timelineXDomain, this.timelineWidth);\n            this.timelineYScale = this.getYScale(this.yDomain, this.timelineHeight);\n            this.timelineTransform = `translate(${this.dims.xOffset}, ${-this.margin[2]})`;\n        }\n    }\n    getXDomain() {\n        let values = getUniqueXDomainValues(this.results);\n        this.scaleType = getScaleType(values);\n        let domain = [];\n        if (this.scaleType === 'linear') {\n            values = values.map(v => Number(v));\n        }\n        let min;\n        let max;\n        if (this.scaleType === 'time' || this.scaleType === 'linear') {\n            min = this.xScaleMin ? this.xScaleMin : Math.min(...values);\n            max = this.xScaleMax ? this.xScaleMax : Math.max(...values);\n        }\n        if (this.scaleType === 'time') {\n            domain = [new Date(min), new Date(max)];\n            this.xSet = [...values].sort((a, b) => {\n                const aDate = a.getTime();\n                const bDate = b.getTime();\n                if (aDate > bDate)\n                    return 1;\n                if (bDate > aDate)\n                    return -1;\n                return 0;\n            });\n        }\n        else if (this.scaleType === 'linear') {\n            domain = [min, max];\n            // Use compare function to sort numbers numerically\n            this.xSet = [...values].sort((a, b) => a - b);\n        }\n        else {\n            domain = values;\n            this.xSet = values;\n        }\n        return domain;\n    }\n    getYDomain() {\n        const domain = [];\n        for (const results of this.results) {\n            for (const d of results.series) {\n                if (domain.indexOf(d.value) < 0) {\n                    domain.push(d.value);\n                }\n                if (d.min !== undefined) {\n                    this.hasRange = true;\n                    if (domain.indexOf(d.min) < 0) {\n                        domain.push(d.min);\n                    }\n                }\n                if (d.max !== undefined) {\n                    this.hasRange = true;\n                    if (domain.indexOf(d.max) < 0) {\n                        domain.push(d.max);\n                    }\n                }\n            }\n        }\n        const values = [...domain];\n        if (!this.autoScale) {\n            values.push(0);\n        }\n        const min = this.yScaleMin ? this.yScaleMin : Math.min(...values);\n        const max = this.yScaleMax ? this.yScaleMax : Math.max(...values);\n        return [min, max];\n    }\n    getSeriesDomain() {\n        return this.results.map(d => d.name);\n    }\n    getXScale(domain, width) {\n        let scale;\n        if (this.scaleType === 'time') {\n            scale = scaleTime()\n                .range([0, width])\n                .domain(domain);\n        }\n        else if (this.scaleType === 'linear') {\n            scale = scaleLinear()\n                .range([0, width])\n                .domain(domain);\n            if (this.roundDomains) {\n                scale = scale.nice();\n            }\n        }\n        else if (this.scaleType === 'ordinal') {\n            scale = scalePoint()\n                .range([0, width])\n                .padding(0.1)\n                .domain(domain);\n        }\n        return scale;\n    }\n    getYScale(domain, height) {\n        const scale = scaleLinear()\n            .range([height, 0])\n            .domain(domain);\n        return this.roundDomains ? scale.nice() : scale;\n    }\n    updateDomain(domain) {\n        this.filteredDomain = domain;\n        this.xDomain = this.filteredDomain;\n        this.xScale = this.getXScale(this.xDomain, this.dims.width);\n    }\n    updateHoveredVertical(item) {\n        this.hoveredVertical = item.value;\n        this.deactivateAll();\n    }\n    hideCircles() {\n        this.hoveredVertical = null;\n        this.deactivateAll();\n    }\n    onClick(data) {\n        this.select.emit(data);\n    }\n    trackBy(index, item) {\n        return item.name;\n    }\n    setColors() {\n        let domain;\n        if (this.schemeType === 'ordinal') {\n            domain = this.seriesDomain;\n        }\n        else {\n            domain = this.yDomain;\n        }\n        this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n    }\n    getLegendOptions() {\n        const opts = {\n            scaleType: this.schemeType,\n            colors: undefined,\n            domain: [],\n            title: undefined,\n            position: this.legendPosition\n        };\n        if (opts.scaleType === 'ordinal') {\n            opts.domain = this.seriesDomain;\n            opts.colors = this.colors;\n            opts.title = this.legendTitle;\n        }\n        else {\n            opts.domain = this.yDomain;\n            opts.colors = this.colors.scale;\n        }\n        return opts;\n    }\n    updateYAxisWidth({ width }) {\n        this.yAxisWidth = width;\n        this.update();\n    }\n    updateXAxisHeight({ height }) {\n        this.xAxisHeight = height;\n        this.update();\n    }\n    onActivate(item) {\n        this.deactivateAll();\n        const idx = this.activeEntries.findIndex(d => {\n            return d.name === item.name && d.value === item.value;\n        });\n        if (idx > -1) {\n            return;\n        }\n        this.activeEntries = [item];\n        this.activate.emit({ value: item, entries: this.activeEntries });\n    }\n    onDeactivate(item) {\n        const idx = this.activeEntries.findIndex(d => {\n            return d.name === item.name && d.value === item.value;\n        });\n        this.activeEntries.splice(idx, 1);\n        this.activeEntries = [...this.activeEntries];\n        this.deactivate.emit({ value: item, entries: this.activeEntries });\n    }\n    deactivateAll() {\n        this.activeEntries = [...this.activeEntries];\n        for (const entry of this.activeEntries) {\n            this.deactivate.emit({ value: entry, entries: [] });\n        }\n        this.activeEntries = [];\n    }\n};\nLineChartComponent.ɵfac = function LineChartComponent_Factory(t) { return ɵLineChartComponent_BaseFactory(t || LineChartComponent); };\nLineChartComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: LineChartComponent, selectors: [[\"ngx-charts-line-chart\"]], contentQueries: function LineChartComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n        ɵngcc0.ɵɵcontentQuery(dirIndex, _c21, true);\n        ɵngcc0.ɵɵcontentQuery(dirIndex, _c22, true);\n    } if (rf & 2) {\n        var _t;\n        ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tooltipTemplate = _t.first);\n        ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.seriesTooltipTemplate = _t.first);\n    } }, hostBindings: function LineChartComponent_HostBindings(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵlistener(\"mouseleave\", function LineChartComponent_mouseleave_HostBindingHandler() { return ctx.hideCircles(); });\n    } }, inputs: { legendTitle: \"legendTitle\", legendPosition: \"legendPosition\", showGridLines: \"showGridLines\", curve: \"curve\", activeEntries: \"activeEntries\", trimXAxisTicks: \"trimXAxisTicks\", trimYAxisTicks: \"trimYAxisTicks\", rotateXAxisTicks: \"rotateXAxisTicks\", maxXAxisTickLength: \"maxXAxisTickLength\", maxYAxisTickLength: \"maxYAxisTickLength\", roundDomains: \"roundDomains\", tooltipDisabled: \"tooltipDisabled\", showRefLines: \"showRefLines\", showRefLabels: \"showRefLabels\", legend: \"legend\", xAxis: \"xAxis\", yAxis: \"yAxis\", showXAxisLabel: \"showXAxisLabel\", showYAxisLabel: \"showYAxisLabel\", xAxisLabel: \"xAxisLabel\", yAxisLabel: \"yAxisLabel\", autoScale: \"autoScale\", timeline: \"timeline\", gradient: \"gradient\", schemeType: \"schemeType\", rangeFillOpacity: \"rangeFillOpacity\", xAxisTickFormatting: \"xAxisTickFormatting\", yAxisTickFormatting: \"yAxisTickFormatting\", xAxisTicks: \"xAxisTicks\", yAxisTicks: \"yAxisTicks\", referenceLines: \"referenceLines\", xScaleMin: \"xScaleMin\", xScaleMax: \"xScaleMax\", yScaleMin: \"yScaleMin\", yScaleMax: \"yScaleMax\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 11, vars: 20, consts: [[3, \"view\", \"showLegend\", \"legendOptions\", \"activeEntries\", \"animations\", \"legendLabelClick\", \"legendLabelActivate\", \"legendLabelDeactivate\"], [1, \"line-chart\", \"chart\"], [\"ngx-charts-x-axis\", \"\", 3, \"xScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\", 4, \"ngIf\"], [\"ngx-charts-y-axis\", \"\", 3, \"yScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"referenceLines\", \"showRefLines\", \"showRefLabels\", \"dimensionsChanged\", 4, \"ngIf\"], [4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [3, \"mouseleave\", 4, \"ngIf\"], [\"ngx-charts-timeline\", \"\", 3, \"results\", \"view\", \"height\", \"scheme\", \"customColors\", \"scaleType\", \"legend\", \"onDomainChange\", 4, \"ngIf\"], [\"ngx-charts-x-axis\", \"\", 3, \"xScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\"], [\"ngx-charts-y-axis\", \"\", 3, \"yScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"referenceLines\", \"showRefLines\", \"showRefLabels\", \"dimensionsChanged\"], [\"ngx-charts-line-series\", \"\", 3, \"xScale\", \"yScale\", \"colors\", \"data\", \"activeEntries\", \"scaleType\", \"curve\", \"rangeFillOpacity\", \"hasRange\", \"animations\"], [3, \"mouseleave\"], [\"ngx-charts-tooltip-area\", \"\", 3, \"dims\", \"xSet\", \"xScale\", \"yScale\", \"results\", \"colors\", \"tooltipDisabled\", \"tooltipTemplate\", \"hover\"], [4, \"ngFor\", \"ngForOf\"], [\"ngx-charts-circle-series\", \"\", 3, \"xScale\", \"yScale\", \"colors\", \"data\", \"scaleType\", \"visibleValue\", \"activeEntries\", \"tooltipDisabled\", \"tooltipTemplate\", \"select\", \"activate\", \"deactivate\"], [\"ngx-charts-timeline\", \"\", 3, \"results\", \"view\", \"height\", \"scheme\", \"customColors\", \"scaleType\", \"legend\", \"onDomainChange\"], [\"ngx-charts-line-series\", \"\", 3, \"xScale\", \"yScale\", \"colors\", \"data\", \"scaleType\", \"curve\", \"hasRange\", \"animations\"]], template: function LineChartComponent_Template(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵelementStart(0, \"ngx-charts-chart\", 0);\n        ɵngcc0.ɵɵlistener(\"legendLabelClick\", function LineChartComponent_Template_ngx_charts_chart_legendLabelClick_0_listener($event) { return ctx.onClick($event); })(\"legendLabelActivate\", function LineChartComponent_Template_ngx_charts_chart_legendLabelActivate_0_listener($event) { return ctx.onActivate($event); })(\"legendLabelDeactivate\", function LineChartComponent_Template_ngx_charts_chart_legendLabelDeactivate_0_listener($event) { return ctx.onDeactivate($event); });\n        ɵngcc0.ɵɵnamespaceSVG();\n        ɵngcc0.ɵɵelementStart(1, \"defs\");\n        ɵngcc0.ɵɵelementStart(2, \"clipPath\");\n        ɵngcc0.ɵɵelement(3, \"rect\");\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵelementStart(4, \"g\", 1);\n        ɵngcc0.ɵɵtemplate(5, LineChartComponent__svg_g_5_Template, 1, 10, \"g\", 2);\n        ɵngcc0.ɵɵtemplate(6, LineChartComponent__svg_g_6_Template, 1, 12, \"g\", 3);\n        ɵngcc0.ɵɵelementStart(7, \"g\");\n        ɵngcc0.ɵɵtemplate(8, LineChartComponent__svg_g_8_Template, 2, 11, \"g\", 4);\n        ɵngcc0.ɵɵtemplate(9, LineChartComponent__svg_g_9_Template, 3, 9, \"g\", 5);\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵtemplate(10, LineChartComponent__svg_g_10_Template, 2, 13, \"g\", 6);\n        ɵngcc0.ɵɵelementEnd();\n    } if (rf & 2) {\n        ɵngcc0.ɵɵproperty(\"view\", ɵngcc0.ɵɵpureFunction2(17, _c23, ctx.width, ctx.height))(\"showLegend\", ctx.legend)(\"legendOptions\", ctx.legendOptions)(\"activeEntries\", ctx.activeEntries)(\"animations\", ctx.animations);\n        ɵngcc0.ɵɵadvance(2);\n        ɵngcc0.ɵɵattribute(\"id\", ctx.clipPathId);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵattribute(\"width\", ctx.dims.width + 10)(\"height\", ctx.dims.height + 10)(\"transform\", \"translate(-5, -5)\");\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵattribute(\"transform\", ctx.transform);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.xAxis);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.yAxis);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵattribute(\"clip-path\", ctx.clipPath);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.results)(\"ngForTrackBy\", ctx.trackBy);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.tooltipDisabled);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.timeline && ctx.scaleType != \"ordinal\");\n    } }, directives: function () { return [ChartComponent, ɵngcc1.NgIf, ɵngcc1.NgForOf, XAxisComponent, YAxisComponent, LineSeriesComponent, TooltipArea, CircleSeriesComponent, Timeline]; }, styles: [_c24], encapsulation: 2, data: { animation: [\n            trigger('animationState', [\n                transition(':leave', [\n                    style({\n                        opacity: 1\n                    }),\n                    animate(500, style({\n                        opacity: 0\n                    }))\n                ])\n            ])\n        ] }, changeDetection: 0 });\n__decorate([\n    Input()\n], LineChartComponent.prototype, \"legend\", void 0);\n__decorate([\n    Input()\n], LineChartComponent.prototype, \"legendTitle\", void 0);\n__decorate([\n    Input()\n], LineChartComponent.prototype, \"legendPosition\", void 0);\n__decorate([\n    Input()\n], LineChartComponent.prototype, \"xAxis\", void 0);\n__decorate([\n    Input()\n], LineChartComponent.prototype, \"yAxis\", void 0);\n__decorate([\n    Input()\n], LineChartComponent.prototype, \"showXAxisLabel\", void 0);\n__decorate([\n    Input()\n], LineChartComponent.prototype, \"showYAxisLabel\", void 0);\n__decorate([\n    Input()\n], LineChartComponent.prototype, \"xAxisLabel\", void 0);\n__decorate([\n    Input()\n], LineChartComponent.prototype, \"yAxisLabel\", void 0);\n__decorate([\n    Input()\n], LineChartComponent.prototype, \"autoScale\", void 0);\n__decorate([\n    Input()\n], LineChartComponent.prototype, \"timeline\", void 0);\n__decorate([\n    Input()\n], LineChartComponent.prototype, \"gradient\", void 0);\n__decorate([\n    Input()\n], LineChartComponent.prototype, \"showGridLines\", void 0);\n__decorate([\n    Input()\n], LineChartComponent.prototype, \"curve\", void 0);\n__decorate([\n    Input()\n], LineChartComponent.prototype, \"activeEntries\", void 0);\n__decorate([\n    Input()\n], LineChartComponent.prototype, \"schemeType\", void 0);\n__decorate([\n    Input()\n], LineChartComponent.prototype, \"rangeFillOpacity\", void 0);\n__decorate([\n    Input()\n], LineChartComponent.prototype, \"trimXAxisTicks\", void 0);\n__decorate([\n    Input()\n], LineChartComponent.prototype, \"trimYAxisTicks\", void 0);\n__decorate([\n    Input()\n], LineChartComponent.prototype, \"rotateXAxisTicks\", void 0);\n__decorate([\n    Input()\n], LineChartComponent.prototype, \"maxXAxisTickLength\", void 0);\n__decorate([\n    Input()\n], LineChartComponent.prototype, \"maxYAxisTickLength\", void 0);\n__decorate([\n    Input()\n], LineChartComponent.prototype, \"xAxisTickFormatting\", void 0);\n__decorate([\n    Input()\n], LineChartComponent.prototype, \"yAxisTickFormatting\", void 0);\n__decorate([\n    Input()\n], LineChartComponent.prototype, \"xAxisTicks\", void 0);\n__decorate([\n    Input()\n], LineChartComponent.prototype, \"yAxisTicks\", void 0);\n__decorate([\n    Input()\n], LineChartComponent.prototype, \"roundDomains\", void 0);\n__decorate([\n    Input()\n], LineChartComponent.prototype, \"tooltipDisabled\", void 0);\n__decorate([\n    Input()\n], LineChartComponent.prototype, \"showRefLines\", void 0);\n__decorate([\n    Input()\n], LineChartComponent.prototype, \"referenceLines\", void 0);\n__decorate([\n    Input()\n], LineChartComponent.prototype, \"showRefLabels\", void 0);\n__decorate([\n    Input()\n], LineChartComponent.prototype, \"xScaleMin\", void 0);\n__decorate([\n    Input()\n], LineChartComponent.prototype, \"xScaleMax\", void 0);\n__decorate([\n    Input()\n], LineChartComponent.prototype, \"yScaleMin\", void 0);\n__decorate([\n    Input()\n], LineChartComponent.prototype, \"yScaleMax\", void 0);\n__decorate([\n    Output()\n], LineChartComponent.prototype, \"activate\", void 0);\n__decorate([\n    Output()\n], LineChartComponent.prototype, \"deactivate\", void 0);\n__decorate([\n    ContentChild('tooltipTemplate')\n], LineChartComponent.prototype, \"tooltipTemplate\", void 0);\n__decorate([\n    ContentChild('seriesTooltipTemplate')\n], LineChartComponent.prototype, \"seriesTooltipTemplate\", void 0);\n__decorate([\n    HostListener('mouseleave')\n], LineChartComponent.prototype, \"hideCircles\", null);\n\nlet LineSeriesComponent = class LineSeriesComponent {\n    constructor() {\n        this.animations = true;\n    }\n    ngOnChanges(changes) {\n        this.update();\n    }\n    update() {\n        this.updateGradients();\n        const data = this.sortData(this.data.series);\n        const lineGen = this.getLineGenerator();\n        this.path = lineGen(data) || '';\n        const areaGen = this.getAreaGenerator();\n        this.areaPath = areaGen(data) || '';\n        if (this.hasRange) {\n            const range = this.getRangeGenerator();\n            this.outerPath = range(data) || '';\n        }\n        if (this.hasGradient) {\n            this.stroke = this.gradientUrl;\n            const values = this.data.series.map(d => d.value);\n            const max = Math.max(...values);\n            const min = Math.min(...values);\n            if (max === min) {\n                this.stroke = this.colors.getColor(max);\n            }\n        }\n        else {\n            this.stroke = this.colors.getColor(this.data.name);\n        }\n    }\n    getLineGenerator() {\n        return line()\n            .x(d => {\n            const label = d.name;\n            let value;\n            if (this.scaleType === 'time') {\n                value = this.xScale(label);\n            }\n            else if (this.scaleType === 'linear') {\n                value = this.xScale(Number(label));\n            }\n            else {\n                value = this.xScale(label);\n            }\n            return value;\n        })\n            .y(d => this.yScale(d.value))\n            .curve(this.curve);\n    }\n    getRangeGenerator() {\n        return area()\n            .x(d => {\n            const label = d.name;\n            let value;\n            if (this.scaleType === 'time') {\n                value = this.xScale(label);\n            }\n            else if (this.scaleType === 'linear') {\n                value = this.xScale(Number(label));\n            }\n            else {\n                value = this.xScale(label);\n            }\n            return value;\n        })\n            .y0(d => this.yScale(typeof d.min === 'number' ? d.min : d.value))\n            .y1(d => this.yScale(typeof d.max === 'number' ? d.max : d.value))\n            .curve(this.curve);\n    }\n    getAreaGenerator() {\n        const xProperty = d => {\n            const label = d.name;\n            return this.xScale(label);\n        };\n        return area()\n            .x(xProperty)\n            .y0(() => this.yScale.range()[0])\n            .y1(d => this.yScale(d.value))\n            .curve(this.curve);\n    }\n    sortData(data) {\n        if (this.scaleType === 'linear') {\n            data = sortLinear(data, 'name');\n        }\n        else if (this.scaleType === 'time') {\n            data = sortByTime(data, 'name');\n        }\n        else {\n            data = sortByDomain(data, 'name', 'asc', this.xScale.domain());\n        }\n        return data;\n    }\n    updateGradients() {\n        if (this.colors.scaleType === 'linear') {\n            this.hasGradient = true;\n            this.gradientId = 'grad' + id().toString();\n            this.gradientUrl = `url(#${this.gradientId})`;\n            const values = this.data.series.map(d => d.value);\n            const max = Math.max(...values);\n            const min = Math.min(...values);\n            this.gradientStops = this.colors.getLinearGradientStops(max, min);\n            this.areaGradientStops = this.colors.getLinearGradientStops(max);\n        }\n        else {\n            this.hasGradient = false;\n            this.gradientStops = undefined;\n            this.areaGradientStops = undefined;\n        }\n    }\n    isActive(entry) {\n        if (!this.activeEntries)\n            return false;\n        const item = this.activeEntries.find(d => {\n            return entry.name === d.name;\n        });\n        return item !== undefined;\n    }\n    isInactive(entry) {\n        if (!this.activeEntries || this.activeEntries.length === 0)\n            return false;\n        const item = this.activeEntries.find(d => {\n            return entry.name === d.name;\n        });\n        return item === undefined;\n    }\n};\nLineSeriesComponent.ɵfac = function LineSeriesComponent_Factory(t) { return new (t || LineSeriesComponent)(); };\nLineSeriesComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: LineSeriesComponent, selectors: [[\"g\", \"ngx-charts-line-series\", \"\"]], inputs: { animations: \"animations\", data: \"data\", xScale: \"xScale\", yScale: \"yScale\", colors: \"colors\", scaleType: \"scaleType\", curve: \"curve\", activeEntries: \"activeEntries\", rangeFillOpacity: \"rangeFillOpacity\", hasRange: \"hasRange\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c35, decls: 6, vars: 22, consts: [[\"ngx-charts-svg-linear-gradient\", \"\", \"orientation\", \"vertical\", 3, \"name\", \"stops\", 4, \"ngIf\"], [\"ngx-charts-area\", \"\", 1, \"line-highlight\", 3, \"data\", \"path\", \"fill\", \"opacity\", \"startOpacity\", \"gradient\", \"stops\", \"animations\"], [\"ngx-charts-line\", \"\", 1, \"line-series\", 3, \"data\", \"path\", \"stroke\", \"animations\"], [\"ngx-charts-area\", \"\", \"class\", \"line-series-range\", 3, \"data\", \"path\", \"fill\", \"active\", \"inactive\", \"opacity\", \"animations\", 4, \"ngIf\"], [\"ngx-charts-svg-linear-gradient\", \"\", \"orientation\", \"vertical\", 3, \"name\", \"stops\"], [\"ngx-charts-area\", \"\", 1, \"line-series-range\", 3, \"data\", \"path\", \"fill\", \"opacity\", \"animations\"]], template: function LineSeriesComponent_Template(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵnamespaceSVG();\n        ɵngcc0.ɵɵelementStart(0, \"g\");\n        ɵngcc0.ɵɵelementStart(1, \"defs\");\n        ɵngcc0.ɵɵtemplate(2, LineSeriesComponent__svg_g_2_Template, 1, 2, \"g\", 0);\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵelement(3, \"g\", 1);\n        ɵngcc0.ɵɵelement(4, \"g\", 2);\n        ɵngcc0.ɵɵtemplate(5, LineSeriesComponent__svg_g_5_Template, 1, 9, \"g\", 3);\n        ɵngcc0.ɵɵelementEnd();\n    } if (rf & 2) {\n        ɵngcc0.ɵɵadvance(2);\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.hasGradient);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵclassProp(\"active\", ctx.isActive(ctx.data))(\"inactive\", ctx.isInactive(ctx.data));\n        ɵngcc0.ɵɵproperty(\"data\", ctx.data)(\"path\", ctx.areaPath)(\"fill\", ctx.hasGradient ? ctx.gradientUrl : ctx.colors.getColor(ctx.data.name))(\"opacity\", 0.25)(\"startOpacity\", 0)(\"gradient\", true)(\"stops\", ctx.areaGradientStops)(\"animations\", ctx.animations);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵclassProp(\"active\", ctx.isActive(ctx.data))(\"inactive\", ctx.isInactive(ctx.data));\n        ɵngcc0.ɵɵproperty(\"data\", ctx.data)(\"path\", ctx.path)(\"stroke\", ctx.stroke)(\"animations\", ctx.animations);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.hasRange);\n    } }, directives: [ɵngcc1.NgIf, AreaComponent, LineComponent, SvgLinearGradientComponent], encapsulation: 2, changeDetection: 0 });\n__decorate([\n    Input()\n], LineSeriesComponent.prototype, \"data\", void 0);\n__decorate([\n    Input()\n], LineSeriesComponent.prototype, \"xScale\", void 0);\n__decorate([\n    Input()\n], LineSeriesComponent.prototype, \"yScale\", void 0);\n__decorate([\n    Input()\n], LineSeriesComponent.prototype, \"colors\", void 0);\n__decorate([\n    Input()\n], LineSeriesComponent.prototype, \"scaleType\", void 0);\n__decorate([\n    Input()\n], LineSeriesComponent.prototype, \"curve\", void 0);\n__decorate([\n    Input()\n], LineSeriesComponent.prototype, \"activeEntries\", void 0);\n__decorate([\n    Input()\n], LineSeriesComponent.prototype, \"rangeFillOpacity\", void 0);\n__decorate([\n    Input()\n], LineSeriesComponent.prototype, \"hasRange\", void 0);\n__decorate([\n    Input()\n], LineSeriesComponent.prototype, \"animations\", void 0);\n\nlet LineChartModule = class LineChartModule {\n};\nLineChartModule.ɵmod = ɵngcc0.ɵɵdefineNgModule({ type: LineChartModule });\nLineChartModule.ɵinj = ɵngcc0.ɵɵdefineInjector({ factory: function LineChartModule_Factory(t) { return new (t || LineChartModule)(); }, imports: [[ChartCommonModule]] });\n\nfunction isDate(value) {\n    return toString.call(value) === '[object Date]';\n}\nfunction isNumber(value) {\n    return typeof value === 'number';\n}\n\nconst twoPI = 2 * Math.PI;\nlet PolarChartComponent = class PolarChartComponent extends BaseChartComponent {\n    constructor() {\n        super(...arguments);\n        this.legendTitle = 'Legend';\n        this.legendPosition = 'right';\n        this.showGridLines = true;\n        this.curve = curveCardinalClosed;\n        this.activeEntries = [];\n        this.rangeFillOpacity = 0.15;\n        this.trimYAxisTicks = true;\n        this.maxYAxisTickLength = 16;\n        this.roundDomains = false;\n        this.tooltipDisabled = false;\n        this.showSeriesOnHover = true;\n        this.gradient = false;\n        this.yAxisMinScale = 0;\n        this.labelTrim = true;\n        this.labelTrimSize = 10;\n        this.activate = new EventEmitter();\n        this.deactivate = new EventEmitter();\n        this.margin = [10, 20, 10, 20];\n        this.xAxisHeight = 0;\n        this.yAxisWidth = 0;\n    }\n    update() {\n        super.update();\n        this.setDims();\n        this.setScales();\n        this.setColors();\n        this.legendOptions = this.getLegendOptions();\n        this.setTicks();\n    }\n    setDims() {\n        this.dims = calculateViewDimensions({\n            width: this.width,\n            height: this.height,\n            margins: this.margin,\n            showXAxis: this.xAxis,\n            showYAxis: this.yAxis,\n            xAxisHeight: this.xAxisHeight,\n            yAxisWidth: this.yAxisWidth,\n            showXLabel: this.showXAxisLabel,\n            showYLabel: this.showYAxisLabel,\n            showLegend: this.legend,\n            legendType: this.schemeType,\n            legendPosition: this.legendPosition\n        });\n        const halfWidth = Math.floor(this.dims.width / 2);\n        const halfHeight = Math.floor(this.dims.height / 2);\n        const outerRadius = (this.outerRadius = Math.min(halfHeight / 1.5, halfWidth / 1.5));\n        const yOffset = Math.max(0, halfHeight - outerRadius);\n        this.yAxisDims = Object.assign(Object.assign({}, this.dims), { width: halfWidth });\n        this.transform = `translate(${this.dims.xOffset}, ${this.margin[0]})`;\n        this.transformYAxis = `translate(0, ${yOffset})`;\n        this.labelOffset = this.dims.height + 40;\n        this.transformPlot = `translate(${halfWidth}, ${halfHeight})`;\n    }\n    setScales() {\n        const xValues = this.getXValues();\n        this.scaleType = getScaleType(xValues);\n        this.xDomain = this.filteredDomain || this.getXDomain(xValues);\n        this.yDomain = this.getYDomain();\n        this.seriesDomain = this.getSeriesDomain();\n        this.xScale = this.getXScale(this.xDomain, twoPI);\n        this.yScale = this.getYScale(this.yDomain, this.outerRadius);\n        this.yAxisScale = this.getYScale(this.yDomain.reverse(), this.outerRadius);\n    }\n    setTicks() {\n        let tickFormat;\n        if (this.xAxisTickFormatting) {\n            tickFormat = this.xAxisTickFormatting;\n        }\n        else if (this.xScale.tickFormat) {\n            tickFormat = this.xScale.tickFormat.apply(this.xScale, [5]);\n        }\n        else {\n            tickFormat = d => {\n                if (isDate(d)) {\n                    return d.toLocaleDateString();\n                }\n                return d.toLocaleString();\n            };\n        }\n        const outerRadius = this.outerRadius;\n        const s = 1.1;\n        this.thetaTicks = this.xDomain.map(d => {\n            const startAngle = this.xScale(d);\n            const dd = s * outerRadius * (startAngle > Math.PI ? -1 : 1);\n            const label = tickFormat(d);\n            const startPos = [outerRadius * Math.sin(startAngle), -outerRadius * Math.cos(startAngle)];\n            const pos = [dd, s * startPos[1]];\n            return {\n                innerRadius: 0,\n                outerRadius,\n                startAngle,\n                endAngle: startAngle,\n                value: outerRadius,\n                label,\n                startPos,\n                pos\n            };\n        });\n        const minDistance = 10;\n        /* from pie chart, abstract out -*/\n        for (let i = 0; i < this.thetaTicks.length - 1; i++) {\n            const a = this.thetaTicks[i];\n            for (let j = i + 1; j < this.thetaTicks.length; j++) {\n                const b = this.thetaTicks[j];\n                // if they're on the same side\n                if (b.pos[0] * a.pos[0] > 0) {\n                    // if they're overlapping\n                    const o = minDistance - Math.abs(b.pos[1] - a.pos[1]);\n                    if (o > 0) {\n                        // push the second up or down\n                        b.pos[1] += Math.sign(b.pos[0]) * o;\n                    }\n                }\n            }\n        }\n        this.radiusTicks = this.yAxisScale.ticks(Math.floor(this.dims.height / 50)).map(d => this.yScale(d));\n    }\n    getXValues() {\n        const values = [];\n        for (const results of this.results) {\n            for (const d of results.series) {\n                if (!values.includes(d.name)) {\n                    values.push(d.name);\n                }\n            }\n        }\n        return values;\n    }\n    getXDomain(values = this.getXValues()) {\n        if (this.scaleType === 'time') {\n            const min = Math.min(...values);\n            const max = Math.max(...values);\n            return [min, max];\n        }\n        else if (this.scaleType === 'linear') {\n            values = values.map(v => Number(v));\n            const min = Math.min(...values);\n            const max = Math.max(...values);\n            return [min, max];\n        }\n        return values;\n    }\n    getYValues() {\n        const domain = [];\n        for (const results of this.results) {\n            for (const d of results.series) {\n                if (domain.indexOf(d.value) < 0) {\n                    domain.push(d.value);\n                }\n                if (d.min !== undefined) {\n                    if (domain.indexOf(d.min) < 0) {\n                        domain.push(d.min);\n                    }\n                }\n                if (d.max !== undefined) {\n                    if (domain.indexOf(d.max) < 0) {\n                        domain.push(d.max);\n                    }\n                }\n            }\n        }\n        return domain;\n    }\n    getYDomain(domain = this.getYValues()) {\n        let min = Math.min(...domain);\n        const max = Math.max(this.yAxisMinScale, ...domain);\n        min = Math.max(0, min);\n        if (!this.autoScale) {\n            min = Math.min(0, min);\n        }\n        return [min, max];\n    }\n    getSeriesDomain() {\n        return this.results.map(d => d.name);\n    }\n    getXScale(domain, width) {\n        switch (this.scaleType) {\n            case 'time':\n                return scaleTime()\n                    .range([0, width])\n                    .domain(domain);\n            case 'linear':\n                const scale = scaleLinear()\n                    .range([0, width])\n                    .domain(domain);\n                return this.roundDomains ? scale.nice() : scale;\n            default:\n                return scalePoint()\n                    .range([0, width - twoPI / domain.length])\n                    .padding(0)\n                    .domain(domain);\n        }\n    }\n    getYScale(domain, height) {\n        const scale = scaleLinear()\n            .range([0, height])\n            .domain(domain);\n        return this.roundDomains ? scale.nice() : scale;\n    }\n    onClick(data, series) {\n        if (series) {\n            data.series = series.name;\n        }\n        this.select.emit(data);\n    }\n    setColors() {\n        const domain = this.schemeType === 'ordinal' ? this.seriesDomain : this.yDomain.reverse();\n        this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n    }\n    getLegendOptions() {\n        if (this.schemeType === 'ordinal') {\n            return {\n                scaleType: this.schemeType,\n                colors: this.colors,\n                domain: this.seriesDomain,\n                title: this.legendTitle,\n                position: this.legendPosition\n            };\n        }\n        return {\n            scaleType: this.schemeType,\n            colors: this.colors.scale,\n            domain: this.yDomain,\n            title: undefined,\n            position: this.legendPosition\n        };\n    }\n    updateYAxisWidth({ width }) {\n        this.yAxisWidth = width;\n        this.update();\n    }\n    updateXAxisHeight({ height }) {\n        this.xAxisHeight = height;\n        this.update();\n    }\n    onActivate(item) {\n        const idx = this.activeEntries.findIndex(d => {\n            return d.name === item.name && d.value === item.value;\n        });\n        if (idx > -1) {\n            return;\n        }\n        this.activeEntries = this.showSeriesOnHover ? [item, ...this.activeEntries] : this.activeEntries;\n        this.activate.emit({ value: item, entries: this.activeEntries });\n    }\n    onDeactivate(item) {\n        const idx = this.activeEntries.findIndex(d => {\n            return d.name === item.name && d.value === item.value;\n        });\n        this.activeEntries.splice(idx, 1);\n        this.activeEntries = [...this.activeEntries];\n        this.deactivate.emit({ value: item, entries: this.activeEntries });\n    }\n    deactivateAll() {\n        this.activeEntries = [...this.activeEntries];\n        for (const entry of this.activeEntries) {\n            this.deactivate.emit({ value: entry, entries: [] });\n        }\n        this.activeEntries = [];\n    }\n    trackBy(index, item) {\n        return item.name;\n    }\n};\nPolarChartComponent.ɵfac = function PolarChartComponent_Factory(t) { return ɵPolarChartComponent_BaseFactory(t || PolarChartComponent); };\nPolarChartComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: PolarChartComponent, selectors: [[\"ngx-charts-polar-chart\"]], contentQueries: function PolarChartComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n        ɵngcc0.ɵɵcontentQuery(dirIndex, _c21, true);\n    } if (rf & 2) {\n        var _t;\n        ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tooltipTemplate = _t.first);\n    } }, inputs: { legendTitle: \"legendTitle\", legendPosition: \"legendPosition\", showGridLines: \"showGridLines\", curve: \"curve\", activeEntries: \"activeEntries\", rangeFillOpacity: \"rangeFillOpacity\", trimYAxisTicks: \"trimYAxisTicks\", maxYAxisTickLength: \"maxYAxisTickLength\", roundDomains: \"roundDomains\", tooltipDisabled: \"tooltipDisabled\", showSeriesOnHover: \"showSeriesOnHover\", gradient: \"gradient\", yAxisMinScale: \"yAxisMinScale\", labelTrim: \"labelTrim\", labelTrimSize: \"labelTrimSize\", legend: \"legend\", xAxis: \"xAxis\", yAxis: \"yAxis\", showXAxisLabel: \"showXAxisLabel\", showYAxisLabel: \"showYAxisLabel\", xAxisLabel: \"xAxisLabel\", yAxisLabel: \"yAxisLabel\", autoScale: \"autoScale\", schemeType: \"schemeType\", xAxisTickFormatting: \"xAxisTickFormatting\", yAxisTickFormatting: \"yAxisTickFormatting\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 10, vars: 18, consts: [[3, \"view\", \"showLegend\", \"legendOptions\", \"activeEntries\", \"animations\", \"legendLabelClick\", \"legendLabelActivate\", \"legendLabelDeactivate\"], [1, \"polar-chart\", \"chart\"], [\"cx\", \"0\", \"cy\", \"0\", 1, \"polar-chart-background\"], [4, \"ngIf\"], [\"ngx-charts-y-axis\", \"\", 3, \"yScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"dimensionsChanged\", 4, \"ngIf\"], [\"ngx-charts-axis-label\", \"\", 3, \"label\", \"offset\", \"orient\", \"height\", \"width\", 4, \"ngIf\"], [4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"class\", \"gridline-path radial-gridline-path\", \"cx\", \"0\", \"cy\", \"0\", 4, \"ngFor\", \"ngForOf\"], [\"cx\", \"0\", \"cy\", \"0\", 1, \"gridline-path\", \"radial-gridline-path\"], [\"ngx-charts-pie-label\", \"\", 3, \"data\", \"radius\", \"label\", \"max\", \"value\", \"explodeSlices\", \"animations\", \"labelTrim\", \"labelTrimSize\", 4, \"ngFor\", \"ngForOf\"], [\"ngx-charts-pie-label\", \"\", 3, \"data\", \"radius\", \"label\", \"max\", \"value\", \"explodeSlices\", \"animations\", \"labelTrim\", \"labelTrimSize\"], [\"ngx-charts-y-axis\", \"\", 3, \"yScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"dimensionsChanged\"], [\"ngx-charts-axis-label\", \"\", 3, \"label\", \"offset\", \"orient\", \"height\", \"width\"], [\"ngx-charts-polar-series\", \"\", 3, \"gradient\", \"xScale\", \"yScale\", \"colors\", \"data\", \"activeEntries\", \"scaleType\", \"curve\", \"rangeFillOpacity\", \"animations\", \"tooltipDisabled\", \"tooltipTemplate\", \"select\", \"activate\", \"deactivate\"]], template: function PolarChartComponent_Template(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵelementStart(0, \"ngx-charts-chart\", 0);\n        ɵngcc0.ɵɵlistener(\"legendLabelClick\", function PolarChartComponent_Template_ngx_charts_chart_legendLabelClick_0_listener($event) { return ctx.onClick($event); })(\"legendLabelActivate\", function PolarChartComponent_Template_ngx_charts_chart_legendLabelActivate_0_listener($event) { return ctx.onActivate($event); })(\"legendLabelDeactivate\", function PolarChartComponent_Template_ngx_charts_chart_legendLabelDeactivate_0_listener($event) { return ctx.onDeactivate($event); });\n        ɵngcc0.ɵɵnamespaceSVG();\n        ɵngcc0.ɵɵelementStart(1, \"g\", 1);\n        ɵngcc0.ɵɵelementStart(2, \"g\");\n        ɵngcc0.ɵɵelement(3, \"circle\", 2);\n        ɵngcc0.ɵɵtemplate(4, PolarChartComponent__svg_g_4_Template, 2, 1, \"g\", 3);\n        ɵngcc0.ɵɵtemplate(5, PolarChartComponent__svg_g_5_Template, 2, 1, \"g\", 3);\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵtemplate(6, PolarChartComponent__svg_g_6_Template, 1, 9, \"g\", 4);\n        ɵngcc0.ɵɵtemplate(7, PolarChartComponent__svg_g_7_Template, 1, 5, \"g\", 5);\n        ɵngcc0.ɵɵelementStart(8, \"g\");\n        ɵngcc0.ɵɵtemplate(9, PolarChartComponent__svg_g_9_Template, 2, 13, \"g\", 6);\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵelementEnd();\n    } if (rf & 2) {\n        ɵngcc0.ɵɵproperty(\"view\", ɵngcc0.ɵɵpureFunction2(15, _c23, ctx.width, ctx.height))(\"showLegend\", ctx.legend)(\"legendOptions\", ctx.legendOptions)(\"activeEntries\", ctx.activeEntries)(\"animations\", ctx.animations);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵattribute(\"transform\", ctx.transform);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵattribute(\"transform\", ctx.transformPlot);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵattribute(\"r\", ctx.outerRadius);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showGridLines);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.xAxis);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.yAxis);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.xAxis && ctx.showXAxisLabel);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵattribute(\"transform\", ctx.transformPlot);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.results)(\"ngForTrackBy\", ctx.trackBy);\n    } }, directives: function () { return [ChartComponent, ɵngcc1.NgIf, ɵngcc1.NgForOf, PieLabelComponent, YAxisComponent, AxisLabelComponent, PolarSeriesComponent]; }, styles: [_c24, _c39, \".polar-chart .polar-chart-background{fill:none}.polar-chart .radial-gridline-path{stroke-dasharray:10 10;fill:none}.polar-chart .pie-label-line{stroke:#2f3646}.polar-charts-series .polar-series-area,.polar-series-path{pointer-events:none}\"], encapsulation: 2, data: { animation: [\n            trigger('animationState', [\n                transition(':leave', [\n                    style({\n                        opacity: 1\n                    }),\n                    animate(500, style({\n                        opacity: 0\n                    }))\n                ])\n            ])\n        ] }, changeDetection: 0 });\n__decorate([\n    Input()\n], PolarChartComponent.prototype, \"legend\", void 0);\n__decorate([\n    Input()\n], PolarChartComponent.prototype, \"legendTitle\", void 0);\n__decorate([\n    Input()\n], PolarChartComponent.prototype, \"legendPosition\", void 0);\n__decorate([\n    Input()\n], PolarChartComponent.prototype, \"xAxis\", void 0);\n__decorate([\n    Input()\n], PolarChartComponent.prototype, \"yAxis\", void 0);\n__decorate([\n    Input()\n], PolarChartComponent.prototype, \"showXAxisLabel\", void 0);\n__decorate([\n    Input()\n], PolarChartComponent.prototype, \"showYAxisLabel\", void 0);\n__decorate([\n    Input()\n], PolarChartComponent.prototype, \"xAxisLabel\", void 0);\n__decorate([\n    Input()\n], PolarChartComponent.prototype, \"yAxisLabel\", void 0);\n__decorate([\n    Input()\n], PolarChartComponent.prototype, \"autoScale\", void 0);\n__decorate([\n    Input()\n], PolarChartComponent.prototype, \"showGridLines\", void 0);\n__decorate([\n    Input()\n], PolarChartComponent.prototype, \"curve\", void 0);\n__decorate([\n    Input()\n], PolarChartComponent.prototype, \"activeEntries\", void 0);\n__decorate([\n    Input()\n], PolarChartComponent.prototype, \"schemeType\", void 0);\n__decorate([\n    Input()\n], PolarChartComponent.prototype, \"rangeFillOpacity\", void 0);\n__decorate([\n    Input()\n], PolarChartComponent.prototype, \"trimYAxisTicks\", void 0);\n__decorate([\n    Input()\n], PolarChartComponent.prototype, \"maxYAxisTickLength\", void 0);\n__decorate([\n    Input()\n], PolarChartComponent.prototype, \"xAxisTickFormatting\", void 0);\n__decorate([\n    Input()\n], PolarChartComponent.prototype, \"yAxisTickFormatting\", void 0);\n__decorate([\n    Input()\n], PolarChartComponent.prototype, \"roundDomains\", void 0);\n__decorate([\n    Input()\n], PolarChartComponent.prototype, \"tooltipDisabled\", void 0);\n__decorate([\n    Input()\n], PolarChartComponent.prototype, \"showSeriesOnHover\", void 0);\n__decorate([\n    Input()\n], PolarChartComponent.prototype, \"gradient\", void 0);\n__decorate([\n    Input()\n], PolarChartComponent.prototype, \"yAxisMinScale\", void 0);\n__decorate([\n    Input()\n], PolarChartComponent.prototype, \"labelTrim\", void 0);\n__decorate([\n    Input()\n], PolarChartComponent.prototype, \"labelTrimSize\", void 0);\n__decorate([\n    Output()\n], PolarChartComponent.prototype, \"activate\", void 0);\n__decorate([\n    Output()\n], PolarChartComponent.prototype, \"deactivate\", void 0);\n__decorate([\n    ContentChild('tooltipTemplate')\n], PolarChartComponent.prototype, \"tooltipTemplate\", void 0);\n\nlet PolarSeriesComponent = class PolarSeriesComponent {\n    constructor() {\n        this.tooltipDisabled = false;\n        this.gradient = false;\n        this.animations = true;\n        this.select = new EventEmitter();\n        this.activate = new EventEmitter();\n        this.deactivate = new EventEmitter();\n        this.circleRadius = 3;\n    }\n    ngOnChanges(changes) {\n        this.update();\n    }\n    update() {\n        this.updateGradients();\n        const line = this.getLineGenerator();\n        const data = this.sortData(this.data.series);\n        const seriesName = this.data.name;\n        const linearScaleType = this.colors.scaleType === 'linear';\n        const min = this.yScale.domain()[0];\n        this.seriesColor = this.colors.getColor(linearScaleType ? min : seriesName);\n        this.path = line(data) || '';\n        this.circles = data.map(d => {\n            const a = this.getAngle(d);\n            const r = this.getRadius(d);\n            const value = d.value;\n            const color = this.colors.getColor(linearScaleType ? Math.abs(value) : seriesName);\n            const cData = Object.assign({}, d, {\n                series: seriesName,\n                value,\n                name: d.name\n            });\n            return {\n                data: cData,\n                cx: r * Math.sin(a),\n                cy: -r * Math.cos(a),\n                value,\n                color,\n                label: d.name\n            };\n        });\n        this.active = this.isActive(this.data);\n        this.inactive = this.isInactive(this.data);\n        this.tooltipText = this.tooltipText || (c => this.defaultTooltipText(c));\n    }\n    getAngle(d) {\n        const label = d.name;\n        if (this.scaleType === 'time') {\n            return this.xScale(label);\n        }\n        else if (this.scaleType === 'linear') {\n            return this.xScale(Number(label));\n        }\n        return this.xScale(label);\n    }\n    getRadius(d) {\n        return this.yScale(d.value);\n    }\n    getLineGenerator() {\n        return lineRadial()\n            .angle(d => this.getAngle(d))\n            .radius(d => this.getRadius(d))\n            .curve(this.curve);\n    }\n    sortData(data) {\n        if (this.scaleType === 'linear') {\n            return sortLinear(data, 'name');\n        }\n        else if (this.scaleType === 'time') {\n            return sortByTime(data, 'name');\n        }\n        return sortByDomain(data, 'name', 'asc', this.xScale.domain());\n    }\n    isActive(entry) {\n        if (!this.activeEntries)\n            return false;\n        const item = this.activeEntries.find(d => {\n            return entry.name === d.name;\n        });\n        return item !== undefined;\n    }\n    isInactive(entry) {\n        if (!this.activeEntries || this.activeEntries.length === 0)\n            return false;\n        const item = this.activeEntries.find(d => {\n            return entry.name === d.name;\n        });\n        return item === undefined;\n    }\n    defaultTooltipText({ label, value }) {\n        return `\n      <span class=\"tooltip-label\">${escapeLabel(this.data.name)} • ${escapeLabel(label)}</span>\n      <span class=\"tooltip-val\">${value.toLocaleString()}</span>\n    `;\n    }\n    updateGradients() {\n        this.hasGradient = this.gradient || this.colors.scaleType === 'linear';\n        if (!this.hasGradient) {\n            return;\n        }\n        this.gradientId = 'grad' + id().toString();\n        this.gradientUrl = `url(#${this.gradientId})`;\n        if (this.colors.scaleType === 'linear') {\n            const values = this.data.series.map(d => d.value);\n            const max = Math.max(...values);\n            const min = Math.min(...values);\n            this.gradientStops = this.colors.getLinearGradientStops(max, min);\n        }\n        else {\n            this.gradientStops = undefined;\n        }\n    }\n};\nPolarSeriesComponent.ɵfac = function PolarSeriesComponent_Factory(t) { return new (t || PolarSeriesComponent)(); };\nPolarSeriesComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: PolarSeriesComponent, selectors: [[\"g\", \"ngx-charts-polar-series\", \"\"]], inputs: { tooltipDisabled: \"tooltipDisabled\", gradient: \"gradient\", animations: \"animations\", tooltipText: \"tooltipText\", name: \"name\", data: \"data\", xScale: \"xScale\", yScale: \"yScale\", colors: \"colors\", scaleType: \"scaleType\", curve: \"curve\", activeEntries: \"activeEntries\", rangeFillOpacity: \"rangeFillOpacity\", tooltipTemplate: \"tooltipTemplate\" }, outputs: { select: \"select\", activate: \"activate\", deactivate: \"deactivate\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c36, decls: 5, vars: 11, consts: [[1, \"polar-charts-series\"], [\"ngx-charts-svg-radial-gradient\", \"\", \"orientation\", \"vertical\", 3, \"color\", \"name\", \"startOpacity\", \"endOpacity\", \"stops\", 4, \"ngIf\"], [\"ngx-charts-line\", \"\", 1, \"polar-series-path\", 3, \"path\", \"stroke\", \"fill\", \"animations\"], [\"ngx-charts-circle\", \"\", \"class\", \"circle\", \"ngx-tooltip\", \"\", \"tooltipType\", \"tooltip\", 3, \"cx\", \"cy\", \"r\", \"fill\", \"opacity\", \"tooltipDisabled\", \"tooltipPlacement\", \"tooltipTitle\", \"tooltipTemplate\", \"tooltipContext\", \"select\", \"activate\", \"deactivate\", 4, \"ngFor\", \"ngForOf\"], [\"ngx-charts-svg-radial-gradient\", \"\", \"orientation\", \"vertical\", 3, \"color\", \"name\", \"startOpacity\", \"endOpacity\", \"stops\"], [\"ngx-charts-circle\", \"\", \"ngx-tooltip\", \"\", \"tooltipType\", \"tooltip\", 1, \"circle\", 3, \"cx\", \"cy\", \"r\", \"fill\", \"tooltipDisabled\", \"tooltipPlacement\", \"tooltipTitle\", \"tooltipTemplate\", \"tooltipContext\", \"select\", \"activate\", \"deactivate\"]], template: function PolarSeriesComponent_Template(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵnamespaceSVG();\n        ɵngcc0.ɵɵelementStart(0, \"g\", 0);\n        ɵngcc0.ɵɵelementStart(1, \"defs\");\n        ɵngcc0.ɵɵtemplate(2, PolarSeriesComponent__svg_g_2_Template, 1, 5, \"g\", 1);\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵelement(3, \"g\", 2);\n        ɵngcc0.ɵɵtemplate(4, PolarSeriesComponent__svg_g_4_Template, 1, 11, \"g\", 3);\n        ɵngcc0.ɵɵelementEnd();\n    } if (rf & 2) {\n        ɵngcc0.ɵɵadvance(2);\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.hasGradient);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵclassProp(\"active\", ctx.active)(\"inactive\", ctx.inactive);\n        ɵngcc0.ɵɵproperty(\"path\", ctx.path)(\"stroke\", ctx.hasGradient ? ctx.gradientUrl : ctx.seriesColor)(\"fill\", ctx.hasGradient ? ctx.gradientUrl : ctx.seriesColor)(\"animations\", ctx.animations);\n        ɵngcc0.ɵɵattribute(\"fill-opacity\", ctx.rangeFillOpacity);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.circles);\n    } }, directives: [ɵngcc1.NgIf, LineComponent, ɵngcc1.NgForOf, SvgRadialGradientComponent, CircleComponent, TooltipDirective], encapsulation: 2, changeDetection: 0 });\n__decorate([\n    Input()\n], PolarSeriesComponent.prototype, \"name\", void 0);\n__decorate([\n    Input()\n], PolarSeriesComponent.prototype, \"data\", void 0);\n__decorate([\n    Input()\n], PolarSeriesComponent.prototype, \"xScale\", void 0);\n__decorate([\n    Input()\n], PolarSeriesComponent.prototype, \"yScale\", void 0);\n__decorate([\n    Input()\n], PolarSeriesComponent.prototype, \"colors\", void 0);\n__decorate([\n    Input()\n], PolarSeriesComponent.prototype, \"scaleType\", void 0);\n__decorate([\n    Input()\n], PolarSeriesComponent.prototype, \"curve\", void 0);\n__decorate([\n    Input()\n], PolarSeriesComponent.prototype, \"activeEntries\", void 0);\n__decorate([\n    Input()\n], PolarSeriesComponent.prototype, \"rangeFillOpacity\", void 0);\n__decorate([\n    Input()\n], PolarSeriesComponent.prototype, \"tooltipDisabled\", void 0);\n__decorate([\n    Input()\n], PolarSeriesComponent.prototype, \"tooltipText\", void 0);\n__decorate([\n    Input()\n], PolarSeriesComponent.prototype, \"gradient\", void 0);\n__decorate([\n    Input()\n], PolarSeriesComponent.prototype, \"tooltipTemplate\", void 0);\n__decorate([\n    Input()\n], PolarSeriesComponent.prototype, \"animations\", void 0);\n__decorate([\n    Output()\n], PolarSeriesComponent.prototype, \"select\", void 0);\n__decorate([\n    Output()\n], PolarSeriesComponent.prototype, \"activate\", void 0);\n__decorate([\n    Output()\n], PolarSeriesComponent.prototype, \"deactivate\", void 0);\n\nlet AdvancedPieChartComponent = class AdvancedPieChartComponent extends BaseChartComponent {\n    constructor() {\n        super(...arguments);\n        this.activeEntries = [];\n        this.tooltipDisabled = false;\n        this.label = 'Total';\n        this.activate = new EventEmitter();\n        this.deactivate = new EventEmitter();\n        this.margin = [20, 20, 20, 20];\n    }\n    update() {\n        super.update();\n        this.dims = calculateViewDimensions({\n            width: (this.width * 4) / 12.0,\n            height: this.height,\n            margins: this.margin\n        });\n        this.formatDates();\n        this.domain = this.getDomain();\n        this.setColors();\n        const xOffset = this.dims.width / 2;\n        const yOffset = this.margin[0] + this.dims.height / 2;\n        this.legendWidth = this.width - this.dims.width - this.margin[1];\n        this.outerRadius = Math.min(this.dims.width, this.dims.height) / 2.5;\n        this.innerRadius = this.outerRadius * 0.75;\n        this.transform = `translate(${xOffset} , ${yOffset})`;\n    }\n    getDomain() {\n        return this.results.map(d => d.label);\n    }\n    onClick(data) {\n        this.select.emit(data);\n    }\n    setColors() {\n        this.colors = new ColorHelper(this.scheme, 'ordinal', this.domain, this.customColors);\n    }\n    onActivate(item, fromLegend = false) {\n        item = this.results.find(d => {\n            if (fromLegend) {\n                return d.label === item.name;\n            }\n            else {\n                return d.name === item.name;\n            }\n        });\n        const idx = this.activeEntries.findIndex(d => {\n            return d.name === item.name && d.value === item.value && d.series === item.series;\n        });\n        if (idx > -1) {\n            return;\n        }\n        this.activeEntries = [item, ...this.activeEntries];\n        this.activate.emit({ value: item, entries: this.activeEntries });\n    }\n    onDeactivate(item, fromLegend = false) {\n        item = this.results.find(d => {\n            if (fromLegend) {\n                return d.label === item.name;\n            }\n            else {\n                return d.name === item.name;\n            }\n        });\n        const idx = this.activeEntries.findIndex(d => {\n            return d.name === item.name && d.value === item.value && d.series === item.series;\n        });\n        this.activeEntries.splice(idx, 1);\n        this.activeEntries = [...this.activeEntries];\n        this.deactivate.emit({ value: item, entries: this.activeEntries });\n    }\n};\nAdvancedPieChartComponent.ɵfac = function AdvancedPieChartComponent_Factory(t) { return ɵAdvancedPieChartComponent_BaseFactory(t || AdvancedPieChartComponent); };\nAdvancedPieChartComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: AdvancedPieChartComponent, selectors: [[\"ngx-charts-advanced-pie-chart\"]], contentQueries: function AdvancedPieChartComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n        ɵngcc0.ɵɵcontentQuery(dirIndex, _c21, true);\n    } if (rf & 2) {\n        var _t;\n        ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tooltipTemplate = _t.first);\n    } }, inputs: { activeEntries: \"activeEntries\", tooltipDisabled: \"tooltipDisabled\", label: \"label\", gradient: \"gradient\", tooltipText: \"tooltipText\", valueFormatting: \"valueFormatting\", nameFormatting: \"nameFormatting\", percentageFormatting: \"percentageFormatting\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 7, vars: 37, consts: [[1, \"advanced-pie\", \"chart\"], [3, \"view\", \"showLegend\", \"animations\"], [1, \"pie\", \"chart\"], [\"ngx-charts-pie-series\", \"\", 3, \"colors\", \"series\", \"innerRadius\", \"activeEntries\", \"outerRadius\", \"gradient\", \"tooltipDisabled\", \"tooltipTemplate\", \"tooltipText\", \"animations\", \"select\", \"activate\", \"deactivate\"], [1, \"advanced-pie-legend-wrapper\"], [3, \"data\", \"colors\", \"width\", \"label\", \"animations\", \"valueFormatting\", \"labelFormatting\", \"percentageFormatting\", \"select\", \"activate\", \"deactivate\"]], template: function AdvancedPieChartComponent_Template(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵelementStart(0, \"div\");\n        ɵngcc0.ɵɵelementStart(1, \"div\", 0);\n        ɵngcc0.ɵɵelementStart(2, \"ngx-charts-chart\", 1);\n        ɵngcc0.ɵɵnamespaceSVG();\n        ɵngcc0.ɵɵelementStart(3, \"g\", 2);\n        ɵngcc0.ɵɵelementStart(4, \"g\", 3);\n        ɵngcc0.ɵɵlistener(\"select\", function AdvancedPieChartComponent_Template__svg_g_select_4_listener($event) { return ctx.onClick($event); })(\"activate\", function AdvancedPieChartComponent_Template__svg_g_activate_4_listener($event) { return ctx.onActivate($event); })(\"deactivate\", function AdvancedPieChartComponent_Template__svg_g_deactivate_4_listener($event) { return ctx.onDeactivate($event); });\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵnamespaceHTML();\n        ɵngcc0.ɵɵelementStart(5, \"div\", 4);\n        ɵngcc0.ɵɵelementStart(6, \"ngx-charts-advanced-legend\", 5);\n        ɵngcc0.ɵɵlistener(\"select\", function AdvancedPieChartComponent_Template_ngx_charts_advanced_legend_select_6_listener($event) { return ctx.onClick($event); })(\"activate\", function AdvancedPieChartComponent_Template_ngx_charts_advanced_legend_activate_6_listener($event) { return ctx.onActivate($event, true); })(\"deactivate\", function AdvancedPieChartComponent_Template_ngx_charts_advanced_legend_deactivate_6_listener($event) { return ctx.onDeactivate($event, true); });\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵelementEnd();\n    } if (rf & 2) {\n        ɵngcc0.ɵɵstyleProp(\"width\", ctx.width, \"px\")(\"height\", ctx.height, \"px\");\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵstyleProp(\"width\", ctx.dims.width, \"px\")(\"height\", ctx.dims.height, \"px\");\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"view\", ɵngcc0.ɵɵpureFunction2(34, _c23, ctx.width, ctx.height))(\"showLegend\", false)(\"animations\", ctx.animations);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵattribute(\"transform\", ctx.transform);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"colors\", ctx.colors)(\"series\", ctx.results)(\"innerRadius\", ctx.innerRadius)(\"activeEntries\", ctx.activeEntries)(\"outerRadius\", ctx.outerRadius)(\"gradient\", ctx.gradient)(\"tooltipDisabled\", ctx.tooltipDisabled)(\"tooltipTemplate\", ctx.tooltipTemplate)(\"tooltipText\", ctx.tooltipText)(\"animations\", ctx.animations);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵstyleProp(\"width\", ctx.width - ctx.dims.width, \"px\")(\"height\", ctx.height, \"px\");\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"data\", ctx.results)(\"colors\", ctx.colors)(\"width\", ctx.width - ctx.dims.width - ctx.margin[1])(\"label\", ctx.label)(\"animations\", ctx.animations)(\"valueFormatting\", ctx.valueFormatting)(\"labelFormatting\", ctx.nameFormatting)(\"percentageFormatting\", ctx.percentageFormatting);\n    } }, directives: function () { return [ChartComponent, PieSeriesComponent, AdvancedLegendComponent]; }, styles: [_c24, \".advanced-pie{display:inline-block;float:left}.advanced-pie-legend-wrapper{display:inline-block}\"], encapsulation: 2, changeDetection: 0 });\n__decorate([\n    Input()\n], AdvancedPieChartComponent.prototype, \"gradient\", void 0);\n__decorate([\n    Input()\n], AdvancedPieChartComponent.prototype, \"activeEntries\", void 0);\n__decorate([\n    Input()\n], AdvancedPieChartComponent.prototype, \"tooltipDisabled\", void 0);\n__decorate([\n    Input()\n], AdvancedPieChartComponent.prototype, \"tooltipText\", void 0);\n__decorate([\n    Input()\n], AdvancedPieChartComponent.prototype, \"label\", void 0);\n__decorate([\n    Output()\n], AdvancedPieChartComponent.prototype, \"activate\", void 0);\n__decorate([\n    Output()\n], AdvancedPieChartComponent.prototype, \"deactivate\", void 0);\n__decorate([\n    ContentChild('tooltipTemplate')\n], AdvancedPieChartComponent.prototype, \"tooltipTemplate\", void 0);\n__decorate([\n    Input()\n], AdvancedPieChartComponent.prototype, \"valueFormatting\", void 0);\n__decorate([\n    Input()\n], AdvancedPieChartComponent.prototype, \"nameFormatting\", void 0);\n__decorate([\n    Input()\n], AdvancedPieChartComponent.prototype, \"percentageFormatting\", void 0);\n\nlet PieLabelComponent = class PieLabelComponent {\n    constructor() {\n        this.animations = true;\n        this.labelTrim = true;\n        this.labelTrimSize = 10;\n        this.isIE = /(edge|msie|trident)/i.test(navigator.userAgent);\n        this.trimLabel = trimLabel;\n    }\n    ngOnChanges(changes) {\n        this.update();\n    }\n    update() {\n        let startRadius = this.radius;\n        if (this.explodeSlices) {\n            startRadius = (this.radius * this.value) / this.max;\n        }\n        const innerArc = arc()\n            .innerRadius(startRadius)\n            .outerRadius(startRadius);\n        // Calculate innerPos then scale outer position to match label position\n        const innerPos = innerArc.centroid(this.data);\n        let scale = this.data.pos[1] / innerPos[1];\n        if (this.data.pos[1] === 0 || innerPos[1] === 0) {\n            scale = 1;\n        }\n        const outerPos = [scale * innerPos[0], scale * innerPos[1]];\n        this.line = `M${innerPos}L${outerPos}L${this.data.pos}`;\n    }\n    get textX() {\n        return this.data.pos[0];\n    }\n    get textY() {\n        return this.data.pos[1];\n    }\n    get styleTransform() {\n        return this.isIE ? null : `translate3d(${this.textX}px,${this.textY}px, 0)`;\n    }\n    get attrTransform() {\n        return !this.isIE ? null : `translate(${this.textX},${this.textY})`;\n    }\n    get textTransition() {\n        return this.isIE || !this.animations ? null : 'transform 0.75s';\n    }\n    textAnchor() {\n        return this.midAngle(this.data) < Math.PI ? 'start' : 'end';\n    }\n    midAngle(d) {\n        return d.startAngle + (d.endAngle - d.startAngle) / 2;\n    }\n};\nPieLabelComponent.ɵfac = function PieLabelComponent_Factory(t) { return new (t || PieLabelComponent)(); };\nPieLabelComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: PieLabelComponent, selectors: [[\"g\", \"ngx-charts-pie-label\", \"\"]], inputs: { animations: \"animations\", labelTrim: \"labelTrim\", labelTrimSize: \"labelTrimSize\", data: \"data\", radius: \"radius\", label: \"label\", color: \"color\", max: \"max\", value: \"value\", explodeSlices: \"explodeSlices\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c37, decls: 6, vars: 17, consts: [[\"dy\", \".35em\", 1, \"pie-label\"], [\"fill\", \"none\", 1, \"pie-label-line\", \"line\"]], template: function PieLabelComponent_Template(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵelementStart(0, \"title\");\n        ɵngcc0.ɵɵtext(1);\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵnamespaceSVG();\n        ɵngcc0.ɵɵelementStart(2, \"g\");\n        ɵngcc0.ɵɵelementStart(3, \"text\", 0);\n        ɵngcc0.ɵɵtext(4);\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵelement(5, \"path\", 1);\n    } if (rf & 2) {\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵtextInterpolate(ctx.label);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵstyleProp(\"transform\", ctx.styleTransform)(\"transition\", ctx.textTransition);\n        ɵngcc0.ɵɵattribute(\"transform\", ctx.attrTransform);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵstyleProp(\"text-anchor\", ctx.textAnchor())(\"shape-rendering\", \"crispEdges\");\n        ɵngcc0.ɵɵclassProp(\"animation\", ctx.animations);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵtextInterpolate1(\" \", ctx.labelTrim ? ctx.trimLabel(ctx.label, ctx.labelTrimSize) : ctx.label, \" \");\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵclassProp(\"animation\", ctx.animations);\n        ɵngcc0.ɵɵattribute(\"d\", ctx.line)(\"stroke\", ctx.color);\n    } }, encapsulation: 2, changeDetection: 0 });\n__decorate([\n    Input()\n], PieLabelComponent.prototype, \"data\", void 0);\n__decorate([\n    Input()\n], PieLabelComponent.prototype, \"radius\", void 0);\n__decorate([\n    Input()\n], PieLabelComponent.prototype, \"label\", void 0);\n__decorate([\n    Input()\n], PieLabelComponent.prototype, \"color\", void 0);\n__decorate([\n    Input()\n], PieLabelComponent.prototype, \"max\", void 0);\n__decorate([\n    Input()\n], PieLabelComponent.prototype, \"value\", void 0);\n__decorate([\n    Input()\n], PieLabelComponent.prototype, \"explodeSlices\", void 0);\n__decorate([\n    Input()\n], PieLabelComponent.prototype, \"animations\", void 0);\n__decorate([\n    Input()\n], PieLabelComponent.prototype, \"labelTrim\", void 0);\n__decorate([\n    Input()\n], PieLabelComponent.prototype, \"labelTrimSize\", void 0);\n\nlet PieArcComponent = class PieArcComponent {\n    constructor(element) {\n        this.startAngle = 0;\n        this.endAngle = Math.PI * 2;\n        this.cornerRadius = 0;\n        this.explodeSlices = false;\n        this.gradient = false;\n        this.animate = true;\n        this.pointerEvents = true;\n        this.isActive = false;\n        this.select = new EventEmitter();\n        this.activate = new EventEmitter();\n        this.deactivate = new EventEmitter();\n        this.dblclick = new EventEmitter();\n        this.initialized = false;\n        this.element = element.nativeElement;\n    }\n    ngOnChanges(changes) {\n        this.update();\n    }\n    getGradient() {\n        return this.gradient ? this.gradientFill : this.fill;\n    }\n    getPointerEvents() {\n        return this.pointerEvents ? 'auto' : 'none';\n    }\n    update() {\n        const calc = this.calculateArc();\n        this.startOpacity = 0.5;\n        this.radialGradientId = 'linearGrad' + id().toString();\n        this.gradientFill = `url(#${this.radialGradientId})`;\n        if (this.animate) {\n            if (this.initialized) {\n                this.updateAnimation();\n            }\n            else {\n                this.loadAnimation();\n                this.initialized = true;\n            }\n        }\n        else {\n            this.path = calc.startAngle(this.startAngle).endAngle(this.endAngle)();\n        }\n    }\n    calculateArc() {\n        let outerRadius = this.outerRadius;\n        if (this.explodeSlices && this.innerRadius === 0) {\n            outerRadius = (this.outerRadius * this.value) / this.max;\n        }\n        return arc()\n            .innerRadius(this.innerRadius)\n            .outerRadius(outerRadius)\n            .cornerRadius(this.cornerRadius);\n    }\n    loadAnimation() {\n        const node = select(this.element)\n            .selectAll('.arc')\n            .data([{ startAngle: this.startAngle, endAngle: this.endAngle }]);\n        const calc = this.calculateArc();\n        node\n            .transition()\n            .attrTween('d', function (d) {\n            this._current = this._current || d;\n            const copyOfD = Object.assign({}, d);\n            copyOfD.endAngle = copyOfD.startAngle;\n            const interpolater = interpolate(copyOfD, copyOfD);\n            this._current = interpolater(0);\n            return function (t) {\n                return calc(interpolater(t));\n            };\n        })\n            .transition()\n            .duration(750)\n            .attrTween('d', function (d) {\n            this._current = this._current || d;\n            const interpolater = interpolate(this._current, d);\n            this._current = interpolater(0);\n            return function (t) {\n                return calc(interpolater(t));\n            };\n        });\n    }\n    updateAnimation() {\n        const node = select(this.element)\n            .selectAll('.arc')\n            .data([{ startAngle: this.startAngle, endAngle: this.endAngle }]);\n        const calc = this.calculateArc();\n        node\n            .transition()\n            .duration(750)\n            .attrTween('d', function (d) {\n            this._current = this._current || d;\n            const interpolater = interpolate(this._current, d);\n            this._current = interpolater(0);\n            return function (t) {\n                return calc(interpolater(t));\n            };\n        });\n    }\n    onClick() {\n        clearTimeout(this._timeout);\n        this._timeout = setTimeout(() => this.select.emit(this.data), 200);\n    }\n    onDblClick(event) {\n        event.preventDefault();\n        event.stopPropagation();\n        clearTimeout(this._timeout);\n        this.dblclick.emit({\n            data: this.data,\n            nativeEvent: event\n        });\n    }\n};\nPieArcComponent.ɵfac = function PieArcComponent_Factory(t) { return new (t || PieArcComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nPieArcComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: PieArcComponent, selectors: [[\"g\", \"ngx-charts-pie-arc\", \"\"]], inputs: { startAngle: \"startAngle\", endAngle: \"endAngle\", cornerRadius: \"cornerRadius\", explodeSlices: \"explodeSlices\", gradient: \"gradient\", animate: \"animate\", pointerEvents: \"pointerEvents\", isActive: \"isActive\", fill: \"fill\", innerRadius: \"innerRadius\", outerRadius: \"outerRadius\", value: \"value\", max: \"max\", data: \"data\" }, outputs: { select: \"select\", activate: \"activate\", deactivate: \"deactivate\", dblclick: \"dblclick\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c38, decls: 3, vars: 7, consts: [[1, \"arc-group\"], [4, \"ngIf\"], [1, \"arc\", 3, \"click\", \"dblclick\", \"mouseenter\", \"mouseleave\"], [\"ngx-charts-svg-radial-gradient\", \"\", \"orientation\", \"vertical\", 3, \"color\", \"name\", \"startOpacity\"]], template: function PieArcComponent_Template(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵnamespaceSVG();\n        ɵngcc0.ɵɵelementStart(0, \"g\", 0);\n        ɵngcc0.ɵɵtemplate(1, PieArcComponent__svg_defs_1_Template, 2, 3, \"defs\", 1);\n        ɵngcc0.ɵɵelementStart(2, \"path\", 2);\n        ɵngcc0.ɵɵlistener(\"click\", function PieArcComponent_Template__svg_path_click_2_listener() { return ctx.onClick(); })(\"dblclick\", function PieArcComponent_Template__svg_path_dblclick_2_listener($event) { return ctx.onDblClick($event); })(\"mouseenter\", function PieArcComponent_Template__svg_path_mouseenter_2_listener() { return ctx.activate.emit(ctx.data); })(\"mouseleave\", function PieArcComponent_Template__svg_path_mouseleave_2_listener() { return ctx.deactivate.emit(ctx.data); });\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵelementEnd();\n    } if (rf & 2) {\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.gradient);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵstyleProp(\"pointer-events\", ctx.getPointerEvents());\n        ɵngcc0.ɵɵclassProp(\"active\", ctx.isActive);\n        ɵngcc0.ɵɵattribute(\"d\", ctx.path)(\"fill\", ctx.getGradient());\n    } }, directives: [ɵngcc1.NgIf, SvgRadialGradientComponent], encapsulation: 2, changeDetection: 0 });\nPieArcComponent.ctorParameters = () => [\n    { type: ElementRef }\n];\n__decorate([\n    Input()\n], PieArcComponent.prototype, \"fill\", void 0);\n__decorate([\n    Input()\n], PieArcComponent.prototype, \"startAngle\", void 0);\n__decorate([\n    Input()\n], PieArcComponent.prototype, \"endAngle\", void 0);\n__decorate([\n    Input()\n], PieArcComponent.prototype, \"innerRadius\", void 0);\n__decorate([\n    Input()\n], PieArcComponent.prototype, \"outerRadius\", void 0);\n__decorate([\n    Input()\n], PieArcComponent.prototype, \"cornerRadius\", void 0);\n__decorate([\n    Input()\n], PieArcComponent.prototype, \"value\", void 0);\n__decorate([\n    Input()\n], PieArcComponent.prototype, \"max\", void 0);\n__decorate([\n    Input()\n], PieArcComponent.prototype, \"data\", void 0);\n__decorate([\n    Input()\n], PieArcComponent.prototype, \"explodeSlices\", void 0);\n__decorate([\n    Input()\n], PieArcComponent.prototype, \"gradient\", void 0);\n__decorate([\n    Input()\n], PieArcComponent.prototype, \"animate\", void 0);\n__decorate([\n    Input()\n], PieArcComponent.prototype, \"pointerEvents\", void 0);\n__decorate([\n    Input()\n], PieArcComponent.prototype, \"isActive\", void 0);\n__decorate([\n    Output()\n], PieArcComponent.prototype, \"select\", void 0);\n__decorate([\n    Output()\n], PieArcComponent.prototype, \"activate\", void 0);\n__decorate([\n    Output()\n], PieArcComponent.prototype, \"deactivate\", void 0);\n__decorate([\n    Output()\n], PieArcComponent.prototype, \"dblclick\", void 0);\n\nlet PieChartComponent = class PieChartComponent extends BaseChartComponent {\n    constructor() {\n        super(...arguments);\n        this.labels = false;\n        this.legend = false;\n        this.legendTitle = 'Legend';\n        this.legendPosition = 'right';\n        this.explodeSlices = false;\n        this.doughnut = false;\n        this.arcWidth = 0.25;\n        this.activeEntries = [];\n        this.tooltipDisabled = false;\n        this.trimLabels = true;\n        this.maxLabelLength = 10;\n        this.dblclick = new EventEmitter();\n        this.select = new EventEmitter();\n        this.activate = new EventEmitter();\n        this.deactivate = new EventEmitter();\n    }\n    update() {\n        super.update();\n        if (this.labels && this.hasNoOptionalMarginsSet()) {\n            this.margins = [30, 80, 30, 80];\n        }\n        else if (!this.labels && this.hasNoOptionalMarginsSet()) {\n            // default value for margins\n            this.margins = [20, 20, 20, 20];\n        }\n        this.dims = calculateViewDimensions({\n            width: this.width,\n            height: this.height,\n            margins: this.margins,\n            showLegend: this.legend,\n            legendPosition: this.legendPosition\n        });\n        this.formatDates();\n        const xOffset = this.margins[3] + this.dims.width / 2;\n        const yOffset = this.margins[0] + this.dims.height / 2;\n        this.translation = `translate(${xOffset}, ${yOffset})`;\n        this.outerRadius = Math.min(this.dims.width, this.dims.height);\n        if (this.labels) {\n            // make room for labels\n            this.outerRadius /= 3;\n        }\n        else {\n            this.outerRadius /= 2;\n        }\n        this.innerRadius = 0;\n        if (this.doughnut) {\n            this.innerRadius = this.outerRadius * (1 - this.arcWidth);\n        }\n        this.domain = this.getDomain();\n        // sort data according to domain\n        this.data = this.results.sort((a, b) => {\n            return this.domain.indexOf(a.name) - this.domain.indexOf(b.name);\n        });\n        this.setColors();\n        this.legendOptions = this.getLegendOptions();\n    }\n    getDomain() {\n        return this.results.map(d => d.label);\n    }\n    onClick(data) {\n        this.select.emit(data);\n    }\n    setColors() {\n        this.colors = new ColorHelper(this.scheme, 'ordinal', this.domain, this.customColors);\n    }\n    getLegendOptions() {\n        return {\n            scaleType: 'ordinal',\n            domain: this.domain,\n            colors: this.colors,\n            title: this.legendTitle,\n            position: this.legendPosition\n        };\n    }\n    onActivate(item, fromLegend = false) {\n        item = this.results.find(d => {\n            if (fromLegend) {\n                return d.label === item.name;\n            }\n            else {\n                return d.name === item.name;\n            }\n        });\n        const idx = this.activeEntries.findIndex(d => {\n            return d.name === item.name && d.value === item.value && d.series === item.series;\n        });\n        if (idx > -1) {\n            return;\n        }\n        this.activeEntries = [item, ...this.activeEntries];\n        this.activate.emit({ value: item, entries: this.activeEntries });\n    }\n    onDeactivate(item, fromLegend = false) {\n        item = this.results.find(d => {\n            if (fromLegend) {\n                return d.label === item.name;\n            }\n            else {\n                return d.name === item.name;\n            }\n        });\n        const idx = this.activeEntries.findIndex(d => {\n            return d.name === item.name && d.value === item.value && d.series === item.series;\n        });\n        this.activeEntries.splice(idx, 1);\n        this.activeEntries = [...this.activeEntries];\n        this.deactivate.emit({ value: item, entries: this.activeEntries });\n    }\n    hasNoOptionalMarginsSet() {\n        return !this.margins || this.margins.length <= 0;\n    }\n};\nPieChartComponent.ɵfac = function PieChartComponent_Factory(t) { return ɵPieChartComponent_BaseFactory(t || PieChartComponent); };\nPieChartComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: PieChartComponent, selectors: [[\"ngx-charts-pie-chart\"]], contentQueries: function PieChartComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n        ɵngcc0.ɵɵcontentQuery(dirIndex, _c21, true);\n    } if (rf & 2) {\n        var _t;\n        ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tooltipTemplate = _t.first);\n    } }, inputs: { labels: \"labels\", legend: \"legend\", legendTitle: \"legendTitle\", legendPosition: \"legendPosition\", explodeSlices: \"explodeSlices\", doughnut: \"doughnut\", arcWidth: \"arcWidth\", activeEntries: \"activeEntries\", tooltipDisabled: \"tooltipDisabled\", trimLabels: \"trimLabels\", maxLabelLength: \"maxLabelLength\", margins: \"margins\", gradient: \"gradient\", labelFormatting: \"labelFormatting\", tooltipText: \"tooltipText\" }, outputs: { dblclick: \"dblclick\", select: \"select\", activate: \"activate\", deactivate: \"deactivate\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 3, vars: 24, consts: [[3, \"view\", \"showLegend\", \"legendOptions\", \"activeEntries\", \"animations\", \"legendLabelActivate\", \"legendLabelDeactivate\", \"legendLabelClick\"], [1, \"pie-chart\", \"chart\"], [\"ngx-charts-pie-series\", \"\", 3, \"colors\", \"series\", \"showLabels\", \"labelFormatting\", \"trimLabels\", \"maxLabelLength\", \"activeEntries\", \"innerRadius\", \"outerRadius\", \"explodeSlices\", \"gradient\", \"animations\", \"tooltipDisabled\", \"tooltipTemplate\", \"tooltipText\", \"dblclick\", \"select\", \"activate\", \"deactivate\"]], template: function PieChartComponent_Template(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵelementStart(0, \"ngx-charts-chart\", 0);\n        ɵngcc0.ɵɵlistener(\"legendLabelActivate\", function PieChartComponent_Template_ngx_charts_chart_legendLabelActivate_0_listener($event) { return ctx.onActivate($event, true); })(\"legendLabelDeactivate\", function PieChartComponent_Template_ngx_charts_chart_legendLabelDeactivate_0_listener($event) { return ctx.onDeactivate($event, true); })(\"legendLabelClick\", function PieChartComponent_Template_ngx_charts_chart_legendLabelClick_0_listener($event) { return ctx.onClick($event); });\n        ɵngcc0.ɵɵnamespaceSVG();\n        ɵngcc0.ɵɵelementStart(1, \"g\", 1);\n        ɵngcc0.ɵɵelementStart(2, \"g\", 2);\n        ɵngcc0.ɵɵlistener(\"dblclick\", function PieChartComponent_Template__svg_g_dblclick_2_listener($event) { return ctx.dblclick.emit($event); })(\"select\", function PieChartComponent_Template__svg_g_select_2_listener($event) { return ctx.onClick($event); })(\"activate\", function PieChartComponent_Template__svg_g_activate_2_listener($event) { return ctx.onActivate($event); })(\"deactivate\", function PieChartComponent_Template__svg_g_deactivate_2_listener($event) { return ctx.onDeactivate($event); });\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵelementEnd();\n    } if (rf & 2) {\n        ɵngcc0.ɵɵproperty(\"view\", ɵngcc0.ɵɵpureFunction2(21, _c23, ctx.width, ctx.height))(\"showLegend\", ctx.legend)(\"legendOptions\", ctx.legendOptions)(\"activeEntries\", ctx.activeEntries)(\"animations\", ctx.animations);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵattribute(\"transform\", ctx.translation);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"colors\", ctx.colors)(\"series\", ctx.data)(\"showLabels\", ctx.labels)(\"labelFormatting\", ctx.labelFormatting)(\"trimLabels\", ctx.trimLabels)(\"maxLabelLength\", ctx.maxLabelLength)(\"activeEntries\", ctx.activeEntries)(\"innerRadius\", ctx.innerRadius)(\"outerRadius\", ctx.outerRadius)(\"explodeSlices\", ctx.explodeSlices)(\"gradient\", ctx.gradient)(\"animations\", ctx.animations)(\"tooltipDisabled\", ctx.tooltipDisabled)(\"tooltipTemplate\", ctx.tooltipTemplate)(\"tooltipText\", ctx.tooltipText);\n    } }, directives: function () { return [ChartComponent, PieSeriesComponent]; }, styles: [_c24, _c39], encapsulation: 2, changeDetection: 0 });\n__decorate([\n    Input()\n], PieChartComponent.prototype, \"labels\", void 0);\n__decorate([\n    Input()\n], PieChartComponent.prototype, \"legend\", void 0);\n__decorate([\n    Input()\n], PieChartComponent.prototype, \"legendTitle\", void 0);\n__decorate([\n    Input()\n], PieChartComponent.prototype, \"legendPosition\", void 0);\n__decorate([\n    Input()\n], PieChartComponent.prototype, \"explodeSlices\", void 0);\n__decorate([\n    Input()\n], PieChartComponent.prototype, \"doughnut\", void 0);\n__decorate([\n    Input()\n], PieChartComponent.prototype, \"arcWidth\", void 0);\n__decorate([\n    Input()\n], PieChartComponent.prototype, \"gradient\", void 0);\n__decorate([\n    Input()\n], PieChartComponent.prototype, \"activeEntries\", void 0);\n__decorate([\n    Input()\n], PieChartComponent.prototype, \"tooltipDisabled\", void 0);\n__decorate([\n    Input()\n], PieChartComponent.prototype, \"labelFormatting\", void 0);\n__decorate([\n    Input()\n], PieChartComponent.prototype, \"trimLabels\", void 0);\n__decorate([\n    Input()\n], PieChartComponent.prototype, \"maxLabelLength\", void 0);\n__decorate([\n    Input()\n], PieChartComponent.prototype, \"tooltipText\", void 0);\n__decorate([\n    Output()\n], PieChartComponent.prototype, \"dblclick\", void 0);\n__decorate([\n    Input()\n], PieChartComponent.prototype, \"margins\", void 0);\n__decorate([\n    Output()\n], PieChartComponent.prototype, \"select\", void 0);\n__decorate([\n    Output()\n], PieChartComponent.prototype, \"activate\", void 0);\n__decorate([\n    Output()\n], PieChartComponent.prototype, \"deactivate\", void 0);\n__decorate([\n    ContentChild('tooltipTemplate')\n], PieChartComponent.prototype, \"tooltipTemplate\", void 0);\n\nfunction gridSize(dims, len, minWidth) {\n    let rows = 1;\n    let cols = len;\n    const width = dims.width;\n    if (width > minWidth) {\n        while (width / cols < minWidth) {\n            rows += 1;\n            cols = Math.ceil(len / rows);\n        }\n    }\n    return [cols, rows];\n}\nfunction gridLayout(dims, data, minWidth, designatedTotal) {\n    const xScale = scaleBand();\n    const yScale = scaleBand();\n    const width = dims.width;\n    const height = dims.height;\n    const [columns, rows] = gridSize(dims, data.length, minWidth);\n    const xDomain = [];\n    const yDomain = [];\n    for (let i = 0; i < rows; i++) {\n        yDomain.push(i);\n    }\n    for (let i = 0; i < columns; i++) {\n        xDomain.push(i);\n    }\n    xScale.domain(xDomain);\n    yScale.domain(yDomain);\n    xScale.rangeRound([0, width], 0.1);\n    yScale.rangeRound([0, height], 0.1);\n    const res = [];\n    const total = designatedTotal ? designatedTotal : getTotal(data);\n    const cardWidth = xScale.bandwidth();\n    const cardHeight = yScale.bandwidth();\n    for (let i = 0; i < data.length; i++) {\n        res[i] = {};\n        res[i].data = {\n            name: data[i] ? data[i].name : '',\n            value: data[i] ? data[i].value : undefined,\n            extra: data[i] ? data[i].extra : undefined,\n            label: data[i] ? data[i].label : ''\n        };\n        res[i].x = xScale(i % columns);\n        res[i].y = yScale(Math.floor(i / columns));\n        res[i].width = cardWidth;\n        res[i].height = cardHeight;\n        res[i].data.percent = total > 0 ? res[i].data.value / total : 0;\n        res[i].data.total = total;\n    }\n    return res;\n}\nfunction getTotal(results) {\n    return results.map(d => (d ? d.value : 0)).reduce((sum, val) => sum + val, 0);\n}\n\nlet PieGridComponent = class PieGridComponent extends BaseChartComponent {\n    constructor() {\n        super(...arguments);\n        this.tooltipDisabled = false;\n        this.label = 'Total';\n        this.minWidth = 150;\n        this.activeEntries = [];\n        this.activate = new EventEmitter();\n        this.deactivate = new EventEmitter();\n        this.margin = [20, 20, 20, 20];\n    }\n    update() {\n        super.update();\n        this.dims = calculateViewDimensions({\n            width: this.width,\n            height: this.height,\n            margins: this.margin\n        });\n        this.formatDates();\n        this.domain = this.getDomain();\n        this.data = gridLayout(this.dims, this.results, this.minWidth, this.designatedTotal);\n        this.transform = `translate(${this.margin[3]} , ${this.margin[0]})`;\n        this.series = this.getSeries();\n        this.setColors();\n        this.tooltipText = this.tooltipText || this.defaultTooltipText;\n    }\n    defaultTooltipText({ data }) {\n        const label = trimLabel(formatLabel(data.name));\n        const val = data.value.toLocaleString();\n        return `\n      <span class=\"tooltip-label\">${label}</span>\n      <span class=\"tooltip-val\">${val}</span>\n    `;\n    }\n    getDomain() {\n        return this.results.map(d => d.label);\n    }\n    getSeries() {\n        const total = this.designatedTotal ? this.designatedTotal : this.getTotal();\n        return this.data.map(d => {\n            const baselineLabelHeight = 20;\n            const padding = 10;\n            const name = d.data.name;\n            const label = formatLabel(name);\n            const value = d.data.value;\n            const radius = min([d.width - padding, d.height - baselineLabelHeight]) / 2 - 5;\n            const innerRadius = radius * 0.9;\n            let count = 0;\n            const colors = () => {\n                count += 1;\n                if (count === 1) {\n                    return 'rgba(100,100,100,0.3)';\n                }\n                else {\n                    return this.colorScale.getColor(label);\n                }\n            };\n            const xPos = d.x + (d.width - padding) / 2;\n            const yPos = d.y + (d.height - baselineLabelHeight) / 2;\n            return {\n                transform: `translate(${xPos}, ${yPos})`,\n                colors,\n                innerRadius,\n                outerRadius: radius,\n                name,\n                label: trimLabel(label),\n                total: value,\n                value,\n                percent: format('.1%')(d.data.percent),\n                data: [\n                    d,\n                    {\n                        data: {\n                            other: true,\n                            value: total - value,\n                            name: d.data.name\n                        }\n                    }\n                ]\n            };\n        });\n    }\n    getTotal() {\n        return this.results.map(d => d.value).reduce((sum, d) => sum + d, 0);\n    }\n    onClick(data) {\n        this.select.emit(data);\n    }\n    setColors() {\n        this.colorScale = new ColorHelper(this.scheme, 'ordinal', this.domain, this.customColors);\n    }\n    onActivate(item, fromLegend = false) {\n        item = this.results.find(d => {\n            if (fromLegend) {\n                return d.label === item.name;\n            }\n            else {\n                return d.name === item.name;\n            }\n        });\n        const idx = this.activeEntries.findIndex(d => {\n            return d.name === item.name && d.value === item.value && d.series === item.series;\n        });\n        if (idx > -1) {\n            return;\n        }\n        this.activeEntries = [item, ...this.activeEntries];\n        this.activate.emit({ value: item, entries: this.activeEntries });\n    }\n    onDeactivate(item, fromLegend = false) {\n        item = this.results.find(d => {\n            if (fromLegend) {\n                return d.label === item.name;\n            }\n            else {\n                return d.name === item.name;\n            }\n        });\n        const idx = this.activeEntries.findIndex(d => {\n            return d.name === item.name && d.value === item.value && d.series === item.series;\n        });\n        this.activeEntries.splice(idx, 1);\n        this.activeEntries = [...this.activeEntries];\n        this.deactivate.emit({ value: item, entries: this.activeEntries });\n    }\n};\nPieGridComponent.ɵfac = function PieGridComponent_Factory(t) { return ɵPieGridComponent_BaseFactory(t || PieGridComponent); };\nPieGridComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: PieGridComponent, selectors: [[\"ngx-charts-pie-grid\"]], contentQueries: function PieGridComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n        ɵngcc0.ɵɵcontentQuery(dirIndex, _c21, true);\n    } if (rf & 2) {\n        var _t;\n        ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tooltipTemplate = _t.first);\n    } }, inputs: { tooltipDisabled: \"tooltipDisabled\", label: \"label\", minWidth: \"minWidth\", activeEntries: \"activeEntries\", tooltipText: \"tooltipText\", designatedTotal: \"designatedTotal\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 3, vars: 8, consts: [[3, \"view\", \"showLegend\", \"animations\"], [1, \"pie-grid\", \"chart\"], [\"class\", \"pie-grid-item\", 4, \"ngFor\", \"ngForOf\"], [1, \"pie-grid-item\"], [\"ngx-charts-pie-grid-series\", \"\", \"ngx-tooltip\", \"\", 3, \"colors\", \"data\", \"innerRadius\", \"outerRadius\", \"animations\", \"tooltipDisabled\", \"tooltipPlacement\", \"tooltipType\", \"tooltipTitle\", \"tooltipTemplate\", \"tooltipContext\", \"select\", \"activate\", \"deactivate\"], [\"class\", \"label percent-label\", \"dy\", \"-0.5em\", \"x\", \"0\", \"y\", \"5\", \"ngx-charts-count-up\", \"\", \"text-anchor\", \"middle\", 3, \"countTo\", \"countSuffix\", 4, \"ngIf\"], [\"class\", \"label percent-label\", \"dy\", \"-0.5em\", \"x\", \"0\", \"y\", \"5\", \"text-anchor\", \"middle\", 4, \"ngIf\"], [\"dy\", \"0.5em\", \"x\", \"0\", \"y\", \"5\", \"text-anchor\", \"middle\", 1, \"label\"], [\"class\", \"label\", \"dy\", \"1.23em\", \"x\", \"0\", \"text-anchor\", \"middle\", \"ngx-charts-count-up\", \"\", 3, \"countTo\", \"countPrefix\", 4, \"ngIf\"], [\"class\", \"label\", \"dy\", \"1.23em\", \"x\", \"0\", \"text-anchor\", \"middle\", 4, \"ngIf\"], [\"dy\", \"-0.5em\", \"x\", \"0\", \"y\", \"5\", \"ngx-charts-count-up\", \"\", \"text-anchor\", \"middle\", 1, \"label\", \"percent-label\", 3, \"countTo\", \"countSuffix\"], [\"dy\", \"-0.5em\", \"x\", \"0\", \"y\", \"5\", \"text-anchor\", \"middle\", 1, \"label\", \"percent-label\"], [\"dy\", \"1.23em\", \"x\", \"0\", \"text-anchor\", \"middle\", \"ngx-charts-count-up\", \"\", 1, \"label\", 3, \"countTo\", \"countPrefix\"], [\"dy\", \"1.23em\", \"x\", \"0\", \"text-anchor\", \"middle\", 1, \"label\"]], template: function PieGridComponent_Template(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵelementStart(0, \"ngx-charts-chart\", 0);\n        ɵngcc0.ɵɵnamespaceSVG();\n        ɵngcc0.ɵɵelementStart(1, \"g\", 1);\n        ɵngcc0.ɵɵtemplate(2, PieGridComponent__svg_g_2_Template, 8, 19, \"g\", 2);\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵelementEnd();\n    } if (rf & 2) {\n        ɵngcc0.ɵɵproperty(\"view\", ɵngcc0.ɵɵpureFunction2(5, _c23, ctx.width, ctx.height))(\"showLegend\", false)(\"animations\", ctx.animations);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵattribute(\"transform\", ctx.transform);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.series);\n    } }, directives: function () { return [ChartComponent, ɵngcc1.NgForOf, PieGridSeriesComponent, TooltipDirective, ɵngcc1.NgIf, CountUpDirective]; }, styles: [_c24, \".pie-grid .arc1{opacity:.4}.pie-grid .percent-label{font-size:16px;font-weight:400}\"], encapsulation: 2, changeDetection: 0 });\n__decorate([\n    Input()\n], PieGridComponent.prototype, \"designatedTotal\", void 0);\n__decorate([\n    Input()\n], PieGridComponent.prototype, \"tooltipDisabled\", void 0);\n__decorate([\n    Input()\n], PieGridComponent.prototype, \"tooltipText\", void 0);\n__decorate([\n    Input()\n], PieGridComponent.prototype, \"label\", void 0);\n__decorate([\n    Input()\n], PieGridComponent.prototype, \"minWidth\", void 0);\n__decorate([\n    Input()\n], PieGridComponent.prototype, \"activeEntries\", void 0);\n__decorate([\n    Output()\n], PieGridComponent.prototype, \"activate\", void 0);\n__decorate([\n    Output()\n], PieGridComponent.prototype, \"deactivate\", void 0);\n__decorate([\n    ContentChild('tooltipTemplate')\n], PieGridComponent.prototype, \"tooltipTemplate\", void 0);\n\nlet PieGridSeriesComponent = class PieGridSeriesComponent {\n    constructor(element) {\n        this.innerRadius = 70;\n        this.outerRadius = 80;\n        this.animations = true;\n        this.select = new EventEmitter();\n        this.activate = new EventEmitter();\n        this.deactivate = new EventEmitter();\n        this.element = element.nativeElement;\n    }\n    ngOnChanges(changes) {\n        this.update();\n    }\n    update() {\n        this.layout = pie()\n            .value(d => d.data.value)\n            .sort(null);\n        this.arcs = this.getArcs();\n    }\n    getArcs() {\n        return this.layout(this.data).map((arc, index) => {\n            const label = arc.data.data.name;\n            const other = arc.data.data.other;\n            if (index === 0) {\n                arc.startAngle = 0;\n            }\n            const color = this.colors(label);\n            return {\n                data: arc.data.data,\n                class: 'arc ' + 'arc' + index,\n                fill: color,\n                startAngle: other ? 0 : arc.startAngle,\n                endAngle: arc.endAngle,\n                animate: this.animations && !other,\n                pointerEvents: !other\n            };\n        });\n    }\n    onClick(data) {\n        this.select.emit(this.data[0].data);\n    }\n    trackBy(index, item) {\n        return item.data.name;\n    }\n    label(arc) {\n        return arc.data.name;\n    }\n    color(arc) {\n        return this.colors(this.label(arc));\n    }\n};\nPieGridSeriesComponent.ɵfac = function PieGridSeriesComponent_Factory(t) { return new (t || PieGridSeriesComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nPieGridSeriesComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: PieGridSeriesComponent, selectors: [[\"g\", \"ngx-charts-pie-grid-series\", \"\"]], inputs: { innerRadius: \"innerRadius\", outerRadius: \"outerRadius\", animations: \"animations\", colors: \"colors\", data: \"data\" }, outputs: { select: \"select\", activate: \"activate\", deactivate: \"deactivate\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c41, decls: 2, vars: 2, consts: [[1, \"pie-grid-arcs\"], [\"ngx-charts-pie-arc\", \"\", 3, \"startAngle\", \"endAngle\", \"innerRadius\", \"outerRadius\", \"fill\", \"value\", \"data\", \"gradient\", \"pointerEvents\", \"animate\", \"select\", \"activate\", \"deactivate\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"ngx-charts-pie-arc\", \"\", 3, \"startAngle\", \"endAngle\", \"innerRadius\", \"outerRadius\", \"fill\", \"value\", \"data\", \"gradient\", \"pointerEvents\", \"animate\", \"select\", \"activate\", \"deactivate\"]], template: function PieGridSeriesComponent_Template(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵnamespaceSVG();\n        ɵngcc0.ɵɵelementStart(0, \"g\", 0);\n        ɵngcc0.ɵɵtemplate(1, PieGridSeriesComponent__svg_g_1_Template, 1, 11, \"g\", 1);\n        ɵngcc0.ɵɵelementEnd();\n    } if (rf & 2) {\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.arcs)(\"ngForTrackBy\", ctx.trackBy);\n    } }, directives: [ɵngcc1.NgForOf, PieArcComponent], encapsulation: 2, changeDetection: 0 });\nPieGridSeriesComponent.ctorParameters = () => [\n    { type: ElementRef }\n];\n__decorate([\n    Input()\n], PieGridSeriesComponent.prototype, \"colors\", void 0);\n__decorate([\n    Input()\n], PieGridSeriesComponent.prototype, \"data\", void 0);\n__decorate([\n    Input()\n], PieGridSeriesComponent.prototype, \"innerRadius\", void 0);\n__decorate([\n    Input()\n], PieGridSeriesComponent.prototype, \"outerRadius\", void 0);\n__decorate([\n    Input()\n], PieGridSeriesComponent.prototype, \"animations\", void 0);\n__decorate([\n    Output()\n], PieGridSeriesComponent.prototype, \"select\", void 0);\n__decorate([\n    Output()\n], PieGridSeriesComponent.prototype, \"activate\", void 0);\n__decorate([\n    Output()\n], PieGridSeriesComponent.prototype, \"deactivate\", void 0);\n\nlet PieSeriesComponent = class PieSeriesComponent {\n    constructor() {\n        this.series = [];\n        this.innerRadius = 60;\n        this.outerRadius = 80;\n        this.trimLabels = true;\n        this.maxLabelLength = 10;\n        this.tooltipDisabled = false;\n        this.animations = true;\n        this.select = new EventEmitter();\n        this.activate = new EventEmitter();\n        this.deactivate = new EventEmitter();\n        this.dblclick = new EventEmitter();\n    }\n    ngOnChanges(changes) {\n        this.update();\n    }\n    update() {\n        const pieGenerator = pie()\n            .value(d => d.value)\n            .sort(null);\n        const arcData = pieGenerator(this.series);\n        this.max = max(arcData, d => {\n            return d.value;\n        });\n        this.data = this.calculateLabelPositions(arcData);\n        this.tooltipText = this.tooltipText || this.defaultTooltipText;\n    }\n    midAngle(d) {\n        return d.startAngle + (d.endAngle - d.startAngle) / 2;\n    }\n    outerArc() {\n        const factor = 1.5;\n        return arc()\n            .innerRadius(this.outerRadius * factor)\n            .outerRadius(this.outerRadius * factor);\n    }\n    calculateLabelPositions(pieData) {\n        const factor = 1.5;\n        const minDistance = 10;\n        const labelPositions = pieData;\n        labelPositions.forEach(d => {\n            d.pos = this.outerArc().centroid(d);\n            d.pos[0] = factor * this.outerRadius * (this.midAngle(d) < Math.PI ? 1 : -1);\n        });\n        for (let i = 0; i < labelPositions.length - 1; i++) {\n            const a = labelPositions[i];\n            if (!this.labelVisible(a)) {\n                continue;\n            }\n            for (let j = i + 1; j < labelPositions.length; j++) {\n                const b = labelPositions[j];\n                if (!this.labelVisible(b)) {\n                    continue;\n                }\n                // if they're on the same side\n                if (b.pos[0] * a.pos[0] > 0) {\n                    // if they're overlapping\n                    const o = minDistance - Math.abs(b.pos[1] - a.pos[1]);\n                    if (o > 0) {\n                        // push the second up or down\n                        b.pos[1] += Math.sign(b.pos[0]) * o;\n                    }\n                }\n            }\n        }\n        return labelPositions;\n    }\n    labelVisible(myArc) {\n        return this.showLabels && myArc.endAngle - myArc.startAngle > Math.PI / 30;\n    }\n    getTooltipTitle(a) {\n        return this.tooltipTemplate ? undefined : this.tooltipText(a);\n    }\n    labelText(myArc) {\n        if (this.labelFormatting) {\n            return this.labelFormatting(myArc.data.name);\n        }\n        return this.label(myArc);\n    }\n    label(myArc) {\n        return formatLabel(myArc.data.name);\n    }\n    defaultTooltipText(myArc) {\n        const label = this.label(myArc);\n        const val = formatLabel(myArc.data.value);\n        return `\n      <span class=\"tooltip-label\">${escapeLabel(label)}</span>\n      <span class=\"tooltip-val\">${val}</span>\n    `;\n    }\n    color(myArc) {\n        return this.colors.getColor(this.label(myArc));\n    }\n    trackBy(index, item) {\n        return item.data.name;\n    }\n    onClick(data) {\n        this.select.emit(data);\n    }\n    isActive(entry) {\n        if (!this.activeEntries)\n            return false;\n        const item = this.activeEntries.find(d => {\n            return entry.name === d.name && entry.series === d.series;\n        });\n        return item !== undefined;\n    }\n};\nPieSeriesComponent.ɵfac = function PieSeriesComponent_Factory(t) { return new (t || PieSeriesComponent)(); };\nPieSeriesComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: PieSeriesComponent, selectors: [[\"g\", \"ngx-charts-pie-series\", \"\"]], inputs: { series: \"series\", innerRadius: \"innerRadius\", outerRadius: \"outerRadius\", trimLabels: \"trimLabels\", maxLabelLength: \"maxLabelLength\", tooltipDisabled: \"tooltipDisabled\", animations: \"animations\", tooltipText: \"tooltipText\", colors: \"colors\", dims: \"dims\", explodeSlices: \"explodeSlices\", showLabels: \"showLabels\", gradient: \"gradient\", activeEntries: \"activeEntries\", labelFormatting: \"labelFormatting\", tooltipTemplate: \"tooltipTemplate\" }, outputs: { select: \"select\", activate: \"activate\", deactivate: \"deactivate\", dblclick: \"dblclick\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c42, decls: 1, vars: 2, consts: [[4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"ngx-charts-pie-label\", \"\", 3, \"data\", \"radius\", \"color\", \"label\", \"labelTrim\", \"labelTrimSize\", \"max\", \"value\", \"explodeSlices\", \"animations\", 4, \"ngIf\"], [\"ngx-charts-pie-arc\", \"\", \"ngx-tooltip\", \"\", 3, \"startAngle\", \"endAngle\", \"innerRadius\", \"outerRadius\", \"fill\", \"value\", \"gradient\", \"data\", \"max\", \"explodeSlices\", \"isActive\", \"animate\", \"tooltipDisabled\", \"tooltipPlacement\", \"tooltipType\", \"tooltipTitle\", \"tooltipTemplate\", \"tooltipContext\", \"select\", \"activate\", \"deactivate\", \"dblclick\"], [\"ngx-charts-pie-label\", \"\", 3, \"data\", \"radius\", \"color\", \"label\", \"labelTrim\", \"labelTrimSize\", \"max\", \"value\", \"explodeSlices\", \"animations\"]], template: function PieSeriesComponent_Template(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵtemplate(0, PieSeriesComponent__svg_g_0_Template, 3, 19, \"g\", 0);\n    } if (rf & 2) {\n        ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.data)(\"ngForTrackBy\", ctx.trackBy);\n    } }, directives: [ɵngcc1.NgForOf, ɵngcc1.NgIf, PieArcComponent, TooltipDirective, PieLabelComponent], encapsulation: 2, changeDetection: 0 });\n__decorate([\n    Input()\n], PieSeriesComponent.prototype, \"colors\", void 0);\n__decorate([\n    Input()\n], PieSeriesComponent.prototype, \"series\", void 0);\n__decorate([\n    Input()\n], PieSeriesComponent.prototype, \"dims\", void 0);\n__decorate([\n    Input()\n], PieSeriesComponent.prototype, \"innerRadius\", void 0);\n__decorate([\n    Input()\n], PieSeriesComponent.prototype, \"outerRadius\", void 0);\n__decorate([\n    Input()\n], PieSeriesComponent.prototype, \"explodeSlices\", void 0);\n__decorate([\n    Input()\n], PieSeriesComponent.prototype, \"showLabels\", void 0);\n__decorate([\n    Input()\n], PieSeriesComponent.prototype, \"gradient\", void 0);\n__decorate([\n    Input()\n], PieSeriesComponent.prototype, \"activeEntries\", void 0);\n__decorate([\n    Input()\n], PieSeriesComponent.prototype, \"labelFormatting\", void 0);\n__decorate([\n    Input()\n], PieSeriesComponent.prototype, \"trimLabels\", void 0);\n__decorate([\n    Input()\n], PieSeriesComponent.prototype, \"maxLabelLength\", void 0);\n__decorate([\n    Input()\n], PieSeriesComponent.prototype, \"tooltipText\", void 0);\n__decorate([\n    Input()\n], PieSeriesComponent.prototype, \"tooltipDisabled\", void 0);\n__decorate([\n    Input()\n], PieSeriesComponent.prototype, \"tooltipTemplate\", void 0);\n__decorate([\n    Input()\n], PieSeriesComponent.prototype, \"animations\", void 0);\n__decorate([\n    Output()\n], PieSeriesComponent.prototype, \"select\", void 0);\n__decorate([\n    Output()\n], PieSeriesComponent.prototype, \"activate\", void 0);\n__decorate([\n    Output()\n], PieSeriesComponent.prototype, \"deactivate\", void 0);\n__decorate([\n    Output()\n], PieSeriesComponent.prototype, \"dblclick\", void 0);\n\nlet PieChartModule = class PieChartModule {\n};\nPieChartModule.ɵmod = ɵngcc0.ɵɵdefineNgModule({ type: PieChartModule });\nPieChartModule.ɵinj = ɵngcc0.ɵɵdefineInjector({ factory: function PieChartModule_Factory(t) { return new (t || PieChartModule)(); }, imports: [[ChartCommonModule]] });\n\nlet PolarChartModule = class PolarChartModule {\n};\nPolarChartModule.ɵmod = ɵngcc0.ɵɵdefineNgModule({ type: PolarChartModule });\nPolarChartModule.ɵinj = ɵngcc0.ɵɵdefineInjector({ factory: function PolarChartModule_Factory(t) { return new (t || PolarChartModule)(); }, imports: [[ChartCommonModule, PieChartModule, LineChartModule]] });\n\nlet CardComponent = class CardComponent {\n    constructor(element, cd, zone) {\n        this.cd = cd;\n        this.zone = zone;\n        this.animations = true;\n        this.select = new EventEmitter();\n        this.value = '';\n        this.textFontSize = 12;\n        this.textTransform = '';\n        this.initialized = false;\n        this.bandHeight = 10;\n        this.textPadding = [10, 20, 5, 20];\n        this.labelFontSize = 15;\n        this.element = element.nativeElement;\n    }\n    ngOnChanges(changes) {\n        this.update();\n    }\n    ngOnDestroy() {\n        cancelAnimationFrame(this.animationReq);\n    }\n    update() {\n        this.zone.run(() => {\n            const hasValue = this.data && typeof this.data.value !== 'undefined';\n            const valueFormatting = this.valueFormatting || (card => card.value.toLocaleString());\n            const labelFormatting = this.labelFormatting || (card => escapeLabel(trimLabel(card.label, 55)));\n            this.transform = `translate(${this.x} , ${this.y})`;\n            this.textWidth = Math.max(0, this.width) - this.textPadding[1] - this.textPadding[3];\n            this.cardWidth = Math.max(0, this.width);\n            this.cardHeight = Math.max(0, this.height);\n            this.label = this.label ? this.label : this.data.name;\n            const cardData = {\n                label: this.label,\n                data: this.data,\n                value: this.data.value\n            };\n            this.formattedLabel = labelFormatting(cardData);\n            this.transformBand = `translate(0 , ${this.cardHeight - this.bandHeight})`;\n            const value = hasValue ? valueFormatting(cardData) : '';\n            this.value = this.paddedValue(value);\n            this.setPadding();\n            this.bandPath = roundedRect(0, 0, this.cardWidth, this.bandHeight, 3, [false, false, true, true]);\n            setTimeout(() => {\n                this.scaleText();\n                this.value = value;\n                if (hasValue && !this.initialized) {\n                    setTimeout(() => this.startCount(), 20);\n                }\n            }, 8);\n        });\n    }\n    paddedValue(value) {\n        if (this.medianSize && this.medianSize > value.length) {\n            value += '\\u2007'.repeat(this.medianSize - value.length);\n        }\n        return value;\n    }\n    startCount() {\n        if (!this.initialized && this.animations) {\n            cancelAnimationFrame(this.animationReq);\n            const val = this.data.value;\n            const decs = decimalChecker(val);\n            const valueFormatting = this.valueFormatting || (card => card.value.toLocaleString());\n            const callback = ({ value, finished }) => {\n                this.zone.run(() => {\n                    value = finished ? val : value;\n                    this.value = valueFormatting({ label: this.label, data: this.data, value });\n                    if (!finished) {\n                        this.value = this.paddedValue(this.value);\n                    }\n                    this.cd.markForCheck();\n                });\n            };\n            this.animationReq = count(0, val, decs, 1, callback);\n            this.initialized = true;\n        }\n    }\n    scaleText() {\n        this.zone.run(() => {\n            const { width, height } = this.textEl.nativeElement.getBoundingClientRect();\n            if (width === 0 || height === 0) {\n                return;\n            }\n            const textPadding = (this.textPadding[1] = this.textPadding[3] = this.cardWidth / 8);\n            const availableWidth = this.cardWidth - 2 * textPadding;\n            const availableHeight = this.cardHeight / 3;\n            const resizeScale = Math.min(availableWidth / width, availableHeight / height);\n            this.textFontSize = Math.floor(this.textFontSize * resizeScale);\n            this.labelFontSize = Math.min(this.textFontSize, 15);\n            this.setPadding();\n            this.cd.markForCheck();\n        });\n    }\n    setPadding() {\n        this.textPadding[1] = this.textPadding[3] = this.cardWidth / 8;\n        const padding = this.cardHeight / 2;\n        this.textPadding[0] = padding - this.textFontSize - this.labelFontSize / 2;\n        this.textPadding[2] = padding - this.labelFontSize;\n    }\n    onClick() {\n        this.select.emit(this.data);\n    }\n};\nCardComponent.ɵfac = function CardComponent_Factory(t) { return new (t || CardComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nCardComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: CardComponent, selectors: [[\"g\", \"ngx-charts-card\", \"\"]], viewQuery: function CardComponent_Query(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵviewQuery(_c43, true);\n    } if (rf & 2) {\n        var _t;\n        ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.textEl = _t.first);\n    } }, inputs: { animations: \"animations\", label: \"label\", color: \"color\", bandColor: \"bandColor\", textColor: \"textColor\", x: \"x\", y: \"y\", width: \"width\", height: \"height\", data: \"data\", medianSize: \"medianSize\", valueFormatting: \"valueFormatting\", labelFormatting: \"labelFormatting\" }, outputs: { select: \"select\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c44, decls: 10, vars: 25, consts: [[1, \"cell\", 3, \"click\"], [\"rx\", \"3\", \"ry\", \"3\", 1, \"card\"], [\"class\", \"card-band\", \"stroke\", \"none\", 4, \"ngIf\"], [\"x\", \"5\", \"alignment-baseline\", \"hanging\", 1, \"trimmed-label\"], [3, \"innerHTML\"], [\"text-anchor\", \"start\", \"alignment-baseline\", \"hanging\", 1, \"value-text\"], [\"textEl\", \"\"], [\"stroke\", \"none\", 1, \"card-band\"]], template: function CardComponent_Template(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵnamespaceSVG();\n        ɵngcc0.ɵɵelementStart(0, \"g\", 0);\n        ɵngcc0.ɵɵlistener(\"click\", function CardComponent_Template__svg_g_click_0_listener() { return ctx.onClick(); });\n        ɵngcc0.ɵɵelement(1, \"rect\", 1);\n        ɵngcc0.ɵɵtemplate(2, CardComponent__svg_path_2_Template, 1, 3, \"path\", 2);\n        ɵngcc0.ɵɵelementStart(3, \"title\");\n        ɵngcc0.ɵɵtext(4);\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵelementStart(5, \"foreignObject\", 3);\n        ɵngcc0.ɵɵnamespaceHTML();\n        ɵngcc0.ɵɵelement(6, \"p\", 4);\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵnamespaceSVG();\n        ɵngcc0.ɵɵelementStart(7, \"text\", 5, 6);\n        ɵngcc0.ɵɵtext(9);\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵelementEnd();\n    } if (rf & 2) {\n        ɵngcc0.ɵɵattribute(\"transform\", ctx.transform);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵstyleProp(\"fill\", ctx.color);\n        ɵngcc0.ɵɵattribute(\"width\", ctx.cardWidth)(\"height\", ctx.cardHeight);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.bandColor && ctx.bandColor !== ctx.color);\n        ɵngcc0.ɵɵadvance(2);\n        ɵngcc0.ɵɵtextInterpolate(ctx.label);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵattribute(\"x\", ctx.textPadding[3])(\"y\", ctx.cardHeight - ctx.textPadding[2])(\"width\", ctx.textWidth)(\"height\", ctx.labelFontSize + ctx.textPadding[2]);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵstyleProp(\"color\", ctx.textColor)(\"font-size\", ctx.labelFontSize, \"px\")(\"line-height\", ctx.labelFontSize, \"px\");\n        ɵngcc0.ɵɵproperty(\"innerHTML\", ctx.formattedLabel, ɵngcc0.ɵɵsanitizeHtml);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵstyleProp(\"fill\", ctx.textColor)(\"font-size\", ctx.textFontSize, \"pt\");\n        ɵngcc0.ɵɵattribute(\"x\", ctx.textPadding[3])(\"y\", ctx.textPadding[0]);\n        ɵngcc0.ɵɵadvance(2);\n        ɵngcc0.ɵɵtextInterpolate1(\" \", ctx.value, \" \");\n    } }, directives: [ɵngcc1.NgIf], encapsulation: 2, changeDetection: 0 });\nCardComponent.ctorParameters = () => [\n    { type: ElementRef },\n    { type: ChangeDetectorRef },\n    { type: NgZone }\n];\n__decorate([\n    Input()\n], CardComponent.prototype, \"color\", void 0);\n__decorate([\n    Input()\n], CardComponent.prototype, \"bandColor\", void 0);\n__decorate([\n    Input()\n], CardComponent.prototype, \"textColor\", void 0);\n__decorate([\n    Input()\n], CardComponent.prototype, \"x\", void 0);\n__decorate([\n    Input()\n], CardComponent.prototype, \"y\", void 0);\n__decorate([\n    Input()\n], CardComponent.prototype, \"width\", void 0);\n__decorate([\n    Input()\n], CardComponent.prototype, \"height\", void 0);\n__decorate([\n    Input()\n], CardComponent.prototype, \"label\", void 0);\n__decorate([\n    Input()\n], CardComponent.prototype, \"data\", void 0);\n__decorate([\n    Input()\n], CardComponent.prototype, \"medianSize\", void 0);\n__decorate([\n    Input()\n], CardComponent.prototype, \"valueFormatting\", void 0);\n__decorate([\n    Input()\n], CardComponent.prototype, \"labelFormatting\", void 0);\n__decorate([\n    Input()\n], CardComponent.prototype, \"animations\", void 0);\n__decorate([\n    Output()\n], CardComponent.prototype, \"select\", void 0);\n__decorate([\n    ViewChild('textEl', { static: false })\n], CardComponent.prototype, \"textEl\", void 0);\n\n/**\n * Converts a hex to RGB\n *\n * @export\n */\nfunction hexToRgb(value) {\n    // deprecated, use d3.color()\n    return rgb(value);\n}\n/**\n * Accepts a color (string) and returns a inverted hex color (string)\n * http://stackoverflow.com/questions/9600295/automatically-change-text-color-to-assure-readability\n *\n * @export\n */\nfunction invertColor(value) {\n    const color = rgb(value);\n    const { r, g, b, opacity } = color;\n    if (opacity === 0) {\n        return color.toString();\n    }\n    const yiq = (r * 299 + g * 587 + b * 114) / 1000;\n    const depth = yiq >= 128 ? -0.8 : 0.8;\n    return shadeRGBColor(color, depth);\n}\n/**\n * Given a rgb, it will darken/lighten\n * http://stackoverflow.com/questions/5560248/programmatically-lighten-or-darken-a-hex-color-or-rgb-and-blend-colors\n *\n * @export\n * @param \\{ r, g, b }\n */\nfunction shadeRGBColor({ r, g, b }, percent) {\n    const t = percent < 0 ? 0 : 255;\n    const p = percent < 0 ? percent * -1 : percent;\n    r = Math.round((t - r) * p) + r;\n    g = Math.round((t - g) * p) + g;\n    b = Math.round((t - b) * p) + b;\n    return `rgb(${r}, ${g}, ${b})`;\n}\n\nlet CardSeriesComponent = class CardSeriesComponent {\n    constructor() {\n        this.innerPadding = 15;\n        this.emptyColor = 'rgba(0, 0, 0, 0)';\n        this.animations = true;\n        this.select = new EventEmitter();\n    }\n    ngOnChanges(changes) {\n        this.update();\n    }\n    update() {\n        if (this.data.length > 2) {\n            const valueFormatting = this.valueFormatting || (card => card.value.toLocaleString());\n            const sortedLengths = this.data\n                .map(d => {\n                const hasValue = d && d.data && typeof d.data.value !== 'undefined' && d.data.value !== null;\n                return hasValue\n                    ? valueFormatting({\n                        data: d.data,\n                        label: d ? d.data.name : '',\n                        value: d && d.data ? d.data.value : ''\n                    }).length\n                    : 0;\n            })\n                .sort((a, b) => b - a);\n            const idx = Math.ceil(this.data.length / 2);\n            this.medianSize = sortedLengths[idx];\n        }\n        const cards = this.getCards();\n        this.cards = cards.filter(d => d.data.value !== null);\n        this.emptySlots = cards.filter(d => d.data.value === null);\n    }\n    getCards() {\n        const yPadding = typeof this.innerPadding === 'number' ? this.innerPadding : this.innerPadding[0] + this.innerPadding[2];\n        const xPadding = typeof this.innerPadding === 'number' ? this.innerPadding : this.innerPadding[1] + this.innerPadding[3];\n        return this.data.map((d, index) => {\n            let label = d.data.name;\n            if (label && label.constructor.name === 'Date') {\n                label = label.toLocaleDateString();\n            }\n            else {\n                label = label ? label.toLocaleString() : label;\n            }\n            const value = d.data.value;\n            const valueColor = label ? this.colors.getColor(label) : this.emptyColor;\n            const color = this.cardColor || valueColor || '#000';\n            return {\n                x: d.x,\n                y: d.y,\n                width: d.width - xPadding,\n                height: d.height - yPadding,\n                color,\n                bandColor: this.bandColor || valueColor,\n                textColor: this.textColor || invertColor(color),\n                label,\n                data: d.data,\n                tooltipText: `${label}: ${value}`\n            };\n        });\n    }\n    trackBy(index, card) {\n        return card.label;\n    }\n    onClick(data) {\n        this.select.emit(data);\n    }\n};\nCardSeriesComponent.ɵfac = function CardSeriesComponent_Factory(t) { return new (t || CardSeriesComponent)(); };\nCardSeriesComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: CardSeriesComponent, selectors: [[\"g\", \"ngx-charts-card-series\", \"\"]], inputs: { innerPadding: \"innerPadding\", emptyColor: \"emptyColor\", animations: \"animations\", data: \"data\", slots: \"slots\", dims: \"dims\", colors: \"colors\", cardColor: \"cardColor\", bandColor: \"bandColor\", textColor: \"textColor\", valueFormatting: \"valueFormatting\", labelFormatting: \"labelFormatting\" }, outputs: { select: \"select\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c45, decls: 2, vars: 4, consts: [[\"class\", \"card-empty\", \"rx\", \"3\", \"ry\", \"3\", 3, \"fill\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"ngx-charts-card\", \"\", 3, \"x\", \"y\", \"width\", \"height\", \"color\", \"bandColor\", \"textColor\", \"data\", \"label\", \"medianSize\", \"valueFormatting\", \"labelFormatting\", \"animations\", \"select\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"rx\", \"3\", \"ry\", \"3\", 1, \"card-empty\"], [\"ngx-charts-card\", \"\", 3, \"x\", \"y\", \"width\", \"height\", \"color\", \"bandColor\", \"textColor\", \"data\", \"label\", \"medianSize\", \"valueFormatting\", \"labelFormatting\", \"animations\", \"select\"]], template: function CardSeriesComponent_Template(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵtemplate(0, CardSeriesComponent__svg_rect_0_Template, 1, 6, \"rect\", 0);\n        ɵngcc0.ɵɵtemplate(1, CardSeriesComponent__svg_g_1_Template, 1, 13, \"g\", 1);\n    } if (rf & 2) {\n        ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.emptySlots)(\"ngForTrackBy\", ctx.trackBy);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.cards)(\"ngForTrackBy\", ctx.trackBy);\n    } }, directives: [ɵngcc1.NgForOf, CardComponent], encapsulation: 2, changeDetection: 0 });\n__decorate([\n    Input()\n], CardSeriesComponent.prototype, \"data\", void 0);\n__decorate([\n    Input()\n], CardSeriesComponent.prototype, \"slots\", void 0);\n__decorate([\n    Input()\n], CardSeriesComponent.prototype, \"dims\", void 0);\n__decorate([\n    Input()\n], CardSeriesComponent.prototype, \"colors\", void 0);\n__decorate([\n    Input()\n], CardSeriesComponent.prototype, \"innerPadding\", void 0);\n__decorate([\n    Input()\n], CardSeriesComponent.prototype, \"cardColor\", void 0);\n__decorate([\n    Input()\n], CardSeriesComponent.prototype, \"bandColor\", void 0);\n__decorate([\n    Input()\n], CardSeriesComponent.prototype, \"emptyColor\", void 0);\n__decorate([\n    Input()\n], CardSeriesComponent.prototype, \"textColor\", void 0);\n__decorate([\n    Input()\n], CardSeriesComponent.prototype, \"valueFormatting\", void 0);\n__decorate([\n    Input()\n], CardSeriesComponent.prototype, \"labelFormatting\", void 0);\n__decorate([\n    Input()\n], CardSeriesComponent.prototype, \"animations\", void 0);\n__decorate([\n    Output()\n], CardSeriesComponent.prototype, \"select\", void 0);\n\nlet NumberCardComponent = class NumberCardComponent extends BaseChartComponent {\n    constructor() {\n        super(...arguments);\n        this.emptyColor = 'rgba(0, 0, 0, 0)';\n        this.innerPadding = 15;\n        this.margin = [10, 10, 10, 10];\n    }\n    get clickable() {\n        return !!this.select.observers.length;\n    }\n    update() {\n        super.update();\n        this.dims = calculateViewDimensions({\n            width: this.width,\n            height: this.height,\n            margins: this.margin\n        });\n        this.formatDates();\n        this.domain = this.getDomain();\n        this.setColors();\n        this.transform = `translate(${this.dims.xOffset} , ${this.margin[0]})`;\n        const size = gridSize(this.dims, this.results.length, 150);\n        const N = size[0] * size[1];\n        const data = this.results.slice();\n        while (data.length < N) {\n            data.push({ value: null });\n        }\n        this.data = gridLayout(this.dims, data, 150, this.designatedTotal);\n    }\n    getDomain() {\n        return this.results.map(d => d.label);\n    }\n    onClick(data) {\n        this.select.emit(data);\n    }\n    setColors() {\n        this.colors = new ColorHelper(this.scheme, 'ordinal', this.domain, this.customColors);\n    }\n};\nNumberCardComponent.ɵfac = function NumberCardComponent_Factory(t) { return ɵNumberCardComponent_BaseFactory(t || NumberCardComponent); };\nNumberCardComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: NumberCardComponent, selectors: [[\"ngx-charts-number-card\"]], inputs: { emptyColor: \"emptyColor\", innerPadding: \"innerPadding\", cardColor: \"cardColor\", bandColor: \"bandColor\", textColor: \"textColor\", valueFormatting: \"valueFormatting\", labelFormatting: \"labelFormatting\", designatedTotal: \"designatedTotal\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 3, vars: 20, consts: [[3, \"view\", \"showLegend\", \"animations\"], [1, \"number-card\", \"chart\"], [\"ngx-charts-card-series\", \"\", 3, \"colors\", \"cardColor\", \"bandColor\", \"textColor\", \"emptyColor\", \"data\", \"dims\", \"innerPadding\", \"valueFormatting\", \"labelFormatting\", \"animations\", \"select\"]], template: function NumberCardComponent_Template(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵelementStart(0, \"ngx-charts-chart\", 0);\n        ɵngcc0.ɵɵnamespaceSVG();\n        ɵngcc0.ɵɵelementStart(1, \"g\", 1);\n        ɵngcc0.ɵɵelementStart(2, \"g\", 2);\n        ɵngcc0.ɵɵlistener(\"select\", function NumberCardComponent_Template__svg_g_select_2_listener($event) { return ctx.onClick($event); });\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵelementEnd();\n    } if (rf & 2) {\n        ɵngcc0.ɵɵproperty(\"view\", ɵngcc0.ɵɵpureFunction2(17, _c23, ctx.width, ctx.height))(\"showLegend\", false)(\"animations\", ctx.animations);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵclassProp(\"clickable\", ctx.clickable);\n        ɵngcc0.ɵɵattribute(\"transform\", ctx.transform);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"colors\", ctx.colors)(\"cardColor\", ctx.cardColor)(\"bandColor\", ctx.bandColor)(\"textColor\", ctx.textColor)(\"emptyColor\", ctx.emptyColor)(\"data\", ctx.data)(\"dims\", ctx.dims)(\"innerPadding\", ctx.innerPadding)(\"valueFormatting\", ctx.valueFormatting)(\"labelFormatting\", ctx.labelFormatting)(\"animations\", ctx.animations);\n    } }, directives: [ChartComponent, CardSeriesComponent], styles: [_c24, \"ngx-charts-number-card .cell .trimmed-label{font-size:12px;pointer-events:none;overflow:hidden;text-align:left;line-height:1em}ngx-charts-number-card .cell .trimmed-label p{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;width:100%;padding:0;margin:0}ngx-charts-number-card .cell .value-text{pointer-events:none}ngx-charts-number-card .number-card.clickable .cell .card,ngx-charts-number-card .number-card.clickable .cell .card-band{cursor:pointer}\"], encapsulation: 2, changeDetection: 0 });\n__decorate([\n    Input()\n], NumberCardComponent.prototype, \"cardColor\", void 0);\n__decorate([\n    Input()\n], NumberCardComponent.prototype, \"bandColor\", void 0);\n__decorate([\n    Input()\n], NumberCardComponent.prototype, \"emptyColor\", void 0);\n__decorate([\n    Input()\n], NumberCardComponent.prototype, \"innerPadding\", void 0);\n__decorate([\n    Input()\n], NumberCardComponent.prototype, \"textColor\", void 0);\n__decorate([\n    Input()\n], NumberCardComponent.prototype, \"valueFormatting\", void 0);\n__decorate([\n    Input()\n], NumberCardComponent.prototype, \"labelFormatting\", void 0);\n__decorate([\n    Input()\n], NumberCardComponent.prototype, \"designatedTotal\", void 0);\n\nlet NumberCardModule = class NumberCardModule {\n};\nNumberCardModule.ɵmod = ɵngcc0.ɵɵdefineNgModule({ type: NumberCardModule });\nNumberCardModule.ɵinj = ɵngcc0.ɵɵdefineInjector({ factory: function NumberCardModule_Factory(t) { return new (t || NumberCardModule)(); }, imports: [[ChartCommonModule]] });\n\nlet TreeMapCellComponent = class TreeMapCellComponent {\n    constructor(element) {\n        this.gradient = false;\n        this.animations = true;\n        this.select = new EventEmitter();\n        this.initialized = false;\n        this.element = element.nativeElement;\n    }\n    ngOnChanges() {\n        this.update();\n        this.valueFormatting = this.valueFormatting || (value => value.toLocaleString());\n        const labelFormatting = this.labelFormatting || (cell => escapeLabel(trimLabel(cell.label, 55)));\n        const cellData = {\n            data: this.data,\n            label: this.label,\n            value: this.value\n        };\n        this.formattedValue = this.valueFormatting(cellData.value);\n        this.formattedLabel = labelFormatting(cellData);\n        this.gradientId = 'grad' + id().toString();\n        this.gradientUrl = `url(#${this.gradientId})`;\n        this.gradientStops = this.getGradientStops();\n    }\n    update() {\n        if (this.initialized) {\n            this.animateToCurrentForm();\n        }\n        else {\n            if (this.animations) {\n                this.loadAnimation();\n            }\n            this.initialized = true;\n        }\n    }\n    loadAnimation() {\n        const node = select(this.element).select('.cell');\n        node\n            .attr('opacity', 0)\n            .attr('x', this.x)\n            .attr('y', this.y);\n        this.animateToCurrentForm();\n    }\n    getTextColor() {\n        return invertColor(this.fill);\n    }\n    animateToCurrentForm() {\n        const node = select(this.element).select('.cell');\n        if (this.animations) {\n            node\n                .transition()\n                .duration(750)\n                .attr('opacity', 1)\n                .attr('x', this.x)\n                .attr('y', this.y)\n                .attr('width', this.width)\n                .attr('height', this.height);\n        }\n        else {\n            node\n                .attr('opacity', 1)\n                .attr('x', this.x)\n                .attr('y', this.y)\n                .attr('width', this.width)\n                .attr('height', this.height);\n        }\n    }\n    onClick() {\n        this.select.emit(this.data);\n    }\n    getGradientStops() {\n        return [\n            {\n                offset: 0,\n                color: this.fill,\n                opacity: 0.3\n            },\n            {\n                offset: 100,\n                color: this.fill,\n                opacity: 1\n            }\n        ];\n    }\n};\nTreeMapCellComponent.ɵfac = function TreeMapCellComponent_Factory(t) { return new (t || TreeMapCellComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nTreeMapCellComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: TreeMapCellComponent, selectors: [[\"g\", \"ngx-charts-tree-map-cell\", \"\"]], inputs: { gradient: \"gradient\", animations: \"animations\", valueFormatting: \"valueFormatting\", data: \"data\", fill: \"fill\", x: \"x\", y: \"y\", width: \"width\", height: \"height\", label: \"label\", value: \"value\", valueType: \"valueType\", labelFormatting: \"labelFormatting\" }, outputs: { select: \"select\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c46, decls: 4, vars: 9, consts: [[4, \"ngIf\"], [1, \"cell\", 3, \"click\"], [\"class\", \"treemap-label\", 3, \"pointer-events\", 4, \"ngIf\"], [\"ngx-charts-svg-linear-gradient\", \"\", \"orientation\", \"vertical\", 3, \"name\", \"stops\"], [1, \"treemap-label\"], [1, \"treemap-label\", 3, \"innerHTML\"], [\"class\", \"treemap-val\", \"ngx-charts-count-up\", \"\", 3, \"countTo\", \"valueFormatting\", 4, \"ngIf\"], [\"class\", \"treemap-val\", 4, \"ngIf\"], [\"ngx-charts-count-up\", \"\", 1, \"treemap-val\", 3, \"countTo\", \"valueFormatting\"], [1, \"treemap-val\"]], template: function TreeMapCellComponent_Template(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵnamespaceSVG();\n        ɵngcc0.ɵɵelementStart(0, \"g\");\n        ɵngcc0.ɵɵtemplate(1, TreeMapCellComponent__svg_defs_1_Template, 2, 2, \"defs\", 0);\n        ɵngcc0.ɵɵelementStart(2, \"rect\", 1);\n        ɵngcc0.ɵɵlistener(\"click\", function TreeMapCellComponent_Template__svg_rect_click_2_listener() { return ctx.onClick(); });\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵtemplate(3, TreeMapCellComponent__svg_foreignObject_3_Template, 6, 15, \"foreignObject\", 2);\n        ɵngcc0.ɵɵelementEnd();\n    } if (rf & 2) {\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.gradient);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵstyleProp(\"cursor\", \"pointer\");\n        ɵngcc0.ɵɵattribute(\"fill\", ctx.gradient ? ctx.gradientUrl : ctx.fill)(\"width\", ctx.width)(\"height\", ctx.height)(\"x\", ctx.x)(\"y\", ctx.y);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.width >= 70 && ctx.height >= 35);\n    } }, directives: [ɵngcc1.NgIf, SvgLinearGradientComponent, CountUpDirective], encapsulation: 2, changeDetection: 0 });\nTreeMapCellComponent.ctorParameters = () => [\n    { type: ElementRef }\n];\n__decorate([\n    Input()\n], TreeMapCellComponent.prototype, \"data\", void 0);\n__decorate([\n    Input()\n], TreeMapCellComponent.prototype, \"fill\", void 0);\n__decorate([\n    Input()\n], TreeMapCellComponent.prototype, \"x\", void 0);\n__decorate([\n    Input()\n], TreeMapCellComponent.prototype, \"y\", void 0);\n__decorate([\n    Input()\n], TreeMapCellComponent.prototype, \"width\", void 0);\n__decorate([\n    Input()\n], TreeMapCellComponent.prototype, \"height\", void 0);\n__decorate([\n    Input()\n], TreeMapCellComponent.prototype, \"label\", void 0);\n__decorate([\n    Input()\n], TreeMapCellComponent.prototype, \"value\", void 0);\n__decorate([\n    Input()\n], TreeMapCellComponent.prototype, \"valueType\", void 0);\n__decorate([\n    Input()\n], TreeMapCellComponent.prototype, \"valueFormatting\", void 0);\n__decorate([\n    Input()\n], TreeMapCellComponent.prototype, \"labelFormatting\", void 0);\n__decorate([\n    Input()\n], TreeMapCellComponent.prototype, \"gradient\", void 0);\n__decorate([\n    Input()\n], TreeMapCellComponent.prototype, \"animations\", void 0);\n__decorate([\n    Output()\n], TreeMapCellComponent.prototype, \"select\", void 0);\n\nlet TreeMapCellSeriesComponent = class TreeMapCellSeriesComponent {\n    constructor() {\n        this.gradient = false;\n        this.tooltipDisabled = false;\n        this.animations = true;\n        this.select = new EventEmitter();\n    }\n    ngOnChanges(changes) {\n        this.cells = this.getCells();\n    }\n    getCells() {\n        return this.data.children\n            .filter(d => {\n            return d.depth === 1;\n        })\n            .map((d, index) => {\n            const label = d.id;\n            return {\n                data: d.data,\n                x: d.x0,\n                y: d.y0,\n                width: d.x1 - d.x0,\n                height: d.y1 - d.y0,\n                fill: this.colors.getColor(label),\n                label,\n                value: d.value,\n                valueType: d.valueType\n            };\n        });\n    }\n    getTooltipText({ label, value }) {\n        return `\n      <span class=\"tooltip-label\">${escapeLabel(label)}</span>\n      <span class=\"tooltip-val\">${value.toLocaleString()}</span>\n    `;\n    }\n    onClick(data) {\n        this.select.emit(data);\n    }\n    trackBy(index, item) {\n        return item.label;\n    }\n};\nTreeMapCellSeriesComponent.ɵfac = function TreeMapCellSeriesComponent_Factory(t) { return new (t || TreeMapCellSeriesComponent)(); };\nTreeMapCellSeriesComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: TreeMapCellSeriesComponent, selectors: [[\"g\", \"ngx-charts-tree-map-cell-series\", \"\"]], inputs: { gradient: \"gradient\", tooltipDisabled: \"tooltipDisabled\", animations: \"animations\", data: \"data\", dims: \"dims\", colors: \"colors\", valueFormatting: \"valueFormatting\", labelFormatting: \"labelFormatting\", tooltipTemplate: \"tooltipTemplate\" }, outputs: { select: \"select\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c47, decls: 1, vars: 2, consts: [[\"ngx-charts-tree-map-cell\", \"\", \"ngx-tooltip\", \"\", 3, \"data\", \"x\", \"y\", \"width\", \"height\", \"fill\", \"label\", \"value\", \"valueType\", \"valueFormatting\", \"labelFormatting\", \"gradient\", \"animations\", \"tooltipDisabled\", \"tooltipPlacement\", \"tooltipType\", \"tooltipTitle\", \"tooltipTemplate\", \"tooltipContext\", \"select\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"ngx-charts-tree-map-cell\", \"\", \"ngx-tooltip\", \"\", 3, \"data\", \"x\", \"y\", \"width\", \"height\", \"fill\", \"label\", \"value\", \"valueType\", \"valueFormatting\", \"labelFormatting\", \"gradient\", \"animations\", \"tooltipDisabled\", \"tooltipPlacement\", \"tooltipType\", \"tooltipTitle\", \"tooltipTemplate\", \"tooltipContext\", \"select\"]], template: function TreeMapCellSeriesComponent_Template(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵtemplate(0, TreeMapCellSeriesComponent__svg_g_0_Template, 1, 19, \"g\", 0);\n    } if (rf & 2) {\n        ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.cells)(\"ngForTrackBy\", ctx.trackBy);\n    } }, directives: [ɵngcc1.NgForOf, TreeMapCellComponent, TooltipDirective], encapsulation: 2, changeDetection: 0 });\n__decorate([\n    Input()\n], TreeMapCellSeriesComponent.prototype, \"data\", void 0);\n__decorate([\n    Input()\n], TreeMapCellSeriesComponent.prototype, \"dims\", void 0);\n__decorate([\n    Input()\n], TreeMapCellSeriesComponent.prototype, \"colors\", void 0);\n__decorate([\n    Input()\n], TreeMapCellSeriesComponent.prototype, \"valueFormatting\", void 0);\n__decorate([\n    Input()\n], TreeMapCellSeriesComponent.prototype, \"labelFormatting\", void 0);\n__decorate([\n    Input()\n], TreeMapCellSeriesComponent.prototype, \"gradient\", void 0);\n__decorate([\n    Input()\n], TreeMapCellSeriesComponent.prototype, \"tooltipDisabled\", void 0);\n__decorate([\n    Input()\n], TreeMapCellSeriesComponent.prototype, \"tooltipTemplate\", void 0);\n__decorate([\n    Input()\n], TreeMapCellSeriesComponent.prototype, \"animations\", void 0);\n__decorate([\n    Output()\n], TreeMapCellSeriesComponent.prototype, \"select\", void 0);\n\nlet TreeMapComponent = class TreeMapComponent extends BaseChartComponent {\n    constructor() {\n        super(...arguments);\n        this.tooltipDisabled = false;\n        this.gradient = false;\n        this.select = new EventEmitter();\n        this.margin = [10, 10, 10, 10];\n    }\n    update() {\n        super.update();\n        this.dims = calculateViewDimensions({\n            width: this.width,\n            height: this.height,\n            margins: this.margin\n        });\n        this.domain = this.getDomain();\n        this.treemap = treemap().size([this.dims.width, this.dims.height]);\n        const rootNode = {\n            name: 'root',\n            value: 0,\n            isRoot: true\n        };\n        const root = stratify()\n            .id(d => {\n            let label = d.name;\n            if (label.constructor.name === 'Date') {\n                label = label.toLocaleDateString();\n            }\n            else {\n                label = label.toLocaleString();\n            }\n            return label;\n        })\n            .parentId(d => (d.isRoot ? null : 'root'))([rootNode, ...this.results])\n            .sum(d => d.value);\n        this.data = this.treemap(root);\n        this.setColors();\n        this.transform = `translate(${this.dims.xOffset} , ${this.margin[0]})`;\n    }\n    getDomain() {\n        return this.results.map(d => d.name);\n    }\n    onClick(data) {\n        this.select.emit(data);\n    }\n    setColors() {\n        this.colors = new ColorHelper(this.scheme, 'ordinal', this.domain, this.customColors);\n    }\n};\nTreeMapComponent.ɵfac = function TreeMapComponent_Factory(t) { return ɵTreeMapComponent_BaseFactory(t || TreeMapComponent); };\nTreeMapComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: TreeMapComponent, selectors: [[\"ngx-charts-tree-map\"]], contentQueries: function TreeMapComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n        ɵngcc0.ɵɵcontentQuery(dirIndex, _c21, true);\n    } if (rf & 2) {\n        var _t;\n        ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tooltipTemplate = _t.first);\n    } }, inputs: { tooltipDisabled: \"tooltipDisabled\", gradient: \"gradient\", results: \"results\", valueFormatting: \"valueFormatting\", labelFormatting: \"labelFormatting\" }, outputs: { select: \"select\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 3, vars: 16, consts: [[3, \"view\", \"showLegend\", \"animations\"], [1, \"tree-map\", \"chart\"], [\"ngx-charts-tree-map-cell-series\", \"\", 3, \"colors\", \"data\", \"dims\", \"tooltipDisabled\", \"tooltipTemplate\", \"valueFormatting\", \"labelFormatting\", \"gradient\", \"animations\", \"select\"]], template: function TreeMapComponent_Template(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵelementStart(0, \"ngx-charts-chart\", 0);\n        ɵngcc0.ɵɵnamespaceSVG();\n        ɵngcc0.ɵɵelementStart(1, \"g\", 1);\n        ɵngcc0.ɵɵelementStart(2, \"g\", 2);\n        ɵngcc0.ɵɵlistener(\"select\", function TreeMapComponent_Template__svg_g_select_2_listener($event) { return ctx.onClick($event); });\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵelementEnd();\n    } if (rf & 2) {\n        ɵngcc0.ɵɵproperty(\"view\", ɵngcc0.ɵɵpureFunction2(13, _c23, ctx.width, ctx.height))(\"showLegend\", false)(\"animations\", ctx.animations);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵattribute(\"transform\", ctx.transform);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"colors\", ctx.colors)(\"data\", ctx.data)(\"dims\", ctx.dims)(\"tooltipDisabled\", ctx.tooltipDisabled)(\"tooltipTemplate\", ctx.tooltipTemplate)(\"valueFormatting\", ctx.valueFormatting)(\"labelFormatting\", ctx.labelFormatting)(\"gradient\", ctx.gradient)(\"animations\", ctx.animations);\n    } }, directives: [ChartComponent, TreeMapCellSeriesComponent], styles: [\".tree-map .treemap-val{font-size:1.3em;padding-top:5px;display:inline-block}.tree-map .treemap-label p{display:table-cell;text-align:center;line-height:1.2em;vertical-align:middle}\"], encapsulation: 2, changeDetection: 0 });\n__decorate([\n    Input()\n], TreeMapComponent.prototype, \"results\", void 0);\n__decorate([\n    Input()\n], TreeMapComponent.prototype, \"tooltipDisabled\", void 0);\n__decorate([\n    Input()\n], TreeMapComponent.prototype, \"valueFormatting\", void 0);\n__decorate([\n    Input()\n], TreeMapComponent.prototype, \"labelFormatting\", void 0);\n__decorate([\n    Input()\n], TreeMapComponent.prototype, \"gradient\", void 0);\n__decorate([\n    Output()\n], TreeMapComponent.prototype, \"select\", void 0);\n__decorate([\n    ContentChild('tooltipTemplate')\n], TreeMapComponent.prototype, \"tooltipTemplate\", void 0);\n\nlet TreeMapModule = class TreeMapModule {\n};\nTreeMapModule.ɵmod = ɵngcc0.ɵɵdefineNgModule({ type: TreeMapModule });\nTreeMapModule.ɵinj = ɵngcc0.ɵɵdefineInjector({ factory: function TreeMapModule_Factory(t) { return new (t || TreeMapModule)(); }, imports: [[ChartCommonModule]] });\n\nlet LinearGaugeComponent = class LinearGaugeComponent extends BaseChartComponent {\n    constructor() {\n        super(...arguments);\n        this.min = 0;\n        this.max = 100;\n        this.value = 0;\n        this.margin = [10, 20, 10, 20];\n        this.valueResizeScale = 1;\n        this.unitsResizeScale = 1;\n        this.valueTextTransform = '';\n        this.valueTranslate = '';\n        this.unitsTextTransform = '';\n        this.unitsTranslate = '';\n    }\n    ngAfterViewInit() {\n        super.ngAfterViewInit();\n        setTimeout(() => {\n            this.scaleText('value');\n            this.scaleText('units');\n        });\n    }\n    update() {\n        super.update();\n        this.hasPreviousValue = this.previousValue !== undefined;\n        this.max = Math.max(this.max, this.value);\n        this.min = Math.min(this.min, this.value);\n        if (this.hasPreviousValue) {\n            this.max = Math.max(this.max, this.previousValue);\n            this.min = Math.min(this.min, this.previousValue);\n        }\n        this.dims = calculateViewDimensions({\n            width: this.width,\n            height: this.height,\n            margins: this.margin\n        });\n        this.valueDomain = this.getValueDomain();\n        this.valueScale = this.getValueScale();\n        this.displayValue = this.getDisplayValue();\n        this.setColors();\n        const xOffset = this.margin[3] + this.dims.width / 2;\n        const yOffset = this.margin[0] + this.dims.height / 2;\n        this.transform = `translate(${xOffset}, ${yOffset})`;\n        this.transformLine = `translate(${this.margin[3] + this.valueScale(this.previousValue)}, ${yOffset})`;\n        this.valueTranslate = `translate(0, -15)`;\n        this.unitsTranslate = `translate(0, 15)`;\n        setTimeout(() => this.scaleText('value'), 50);\n        setTimeout(() => this.scaleText('units'), 50);\n    }\n    getValueDomain() {\n        return [this.min, this.max];\n    }\n    getValueScale() {\n        return scaleLinear()\n            .range([0, this.dims.width])\n            .domain(this.valueDomain);\n    }\n    getDisplayValue() {\n        if (this.valueFormatting) {\n            return this.valueFormatting(this.value);\n        }\n        return this.value.toLocaleString();\n    }\n    scaleText(element, repeat = true) {\n        let el;\n        let resizeScale;\n        if (element === 'value') {\n            el = this.valueTextEl;\n            resizeScale = this.valueResizeScale;\n        }\n        else {\n            el = this.unitsTextEl;\n            resizeScale = this.unitsResizeScale;\n        }\n        const { width, height } = el.nativeElement.getBoundingClientRect();\n        if (width === 0 || height === 0)\n            return;\n        const oldScale = resizeScale;\n        const availableWidth = this.dims.width;\n        const availableHeight = Math.max(this.dims.height / 2 - 15, 0);\n        const resizeScaleWidth = Math.floor((availableWidth / (width / resizeScale)) * 100) / 100;\n        const resizeScaleHeight = Math.floor((availableHeight / (height / resizeScale)) * 100) / 100;\n        resizeScale = Math.min(resizeScaleHeight, resizeScaleWidth);\n        if (resizeScale !== oldScale) {\n            if (element === 'value') {\n                this.valueResizeScale = resizeScale;\n                this.valueTextTransform = `scale(${resizeScale}, ${resizeScale})`;\n            }\n            else {\n                this.unitsResizeScale = resizeScale;\n                this.unitsTextTransform = `scale(${resizeScale}, ${resizeScale})`;\n            }\n            this.cd.markForCheck();\n            if (repeat) {\n                setTimeout(() => {\n                    this.scaleText(element, false);\n                }, 50);\n            }\n        }\n    }\n    onClick() {\n        this.select.emit({\n            name: 'Value',\n            value: this.value\n        });\n    }\n    setColors() {\n        this.colors = new ColorHelper(this.scheme, 'ordinal', [this.value], this.customColors);\n    }\n};\nLinearGaugeComponent.ɵfac = function LinearGaugeComponent_Factory(t) { return ɵLinearGaugeComponent_BaseFactory(t || LinearGaugeComponent); };\nLinearGaugeComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: LinearGaugeComponent, selectors: [[\"ngx-charts-linear-gauge\"]], viewQuery: function LinearGaugeComponent_Query(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵviewQuery(_c48, true);\n        ɵngcc0.ɵɵviewQuery(_c49, true);\n    } if (rf & 2) {\n        var _t;\n        ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.valueTextEl = _t.first);\n        ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.unitsTextEl = _t.first);\n    } }, inputs: { min: \"min\", max: \"max\", value: \"value\", units: \"units\", previousValue: \"previousValue\", valueFormatting: \"valueFormatting\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 15, vars: 38, consts: [[3, \"view\", \"showLegend\", \"animations\", \"click\"], [1, \"linear-gauge\", \"chart\"], [\"ngx-charts-bar\", \"\", 1, \"background-bar\", 3, \"width\", \"height\", \"x\", \"y\", \"data\", \"orientation\", \"roundEdges\", \"animations\"], [\"ngx-charts-bar\", \"\", 3, \"width\", \"height\", \"x\", \"y\", \"fill\", \"data\", \"orientation\", \"roundEdges\", \"animations\"], [\"x1\", \"0\", \"y1\", \"5\", \"x2\", \"0\", \"y2\", \"15\", 4, \"ngIf\"], [\"x1\", \"0\", \"y1\", \"-5\", \"x2\", \"0\", \"y2\", \"-15\", 4, \"ngIf\"], [\"alignment-baseline\", \"after-edge\", 1, \"value\"], [\"valueTextEl\", \"\"], [\"alignment-baseline\", \"before-edge\", 1, \"units\"], [\"unitsTextEl\", \"\"], [\"x1\", \"0\", \"y1\", \"5\", \"x2\", \"0\", \"y2\", \"15\"], [\"x1\", \"0\", \"y1\", \"-5\", \"x2\", \"0\", \"y2\", \"-15\"]], template: function LinearGaugeComponent_Template(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵelementStart(0, \"ngx-charts-chart\", 0);\n        ɵngcc0.ɵɵlistener(\"click\", function LinearGaugeComponent_Template_ngx_charts_chart_click_0_listener() { return ctx.onClick(); });\n        ɵngcc0.ɵɵnamespaceSVG();\n        ɵngcc0.ɵɵelementStart(1, \"g\", 1);\n        ɵngcc0.ɵɵelement(2, \"g\", 2);\n        ɵngcc0.ɵɵelement(3, \"g\", 3);\n        ɵngcc0.ɵɵtemplate(4, LinearGaugeComponent__svg_line_4_Template, 1, 2, \"line\", 4);\n        ɵngcc0.ɵɵtemplate(5, LinearGaugeComponent__svg_line_5_Template, 1, 2, \"line\", 5);\n        ɵngcc0.ɵɵelementStart(6, \"g\");\n        ɵngcc0.ɵɵelementStart(7, \"g\");\n        ɵngcc0.ɵɵelementStart(8, \"text\", 6, 7);\n        ɵngcc0.ɵɵtext(10);\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵelementStart(11, \"g\");\n        ɵngcc0.ɵɵelementStart(12, \"text\", 8, 9);\n        ɵngcc0.ɵɵtext(14);\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵelementEnd();\n    } if (rf & 2) {\n        ɵngcc0.ɵɵproperty(\"view\", ɵngcc0.ɵɵpureFunction2(33, _c23, ctx.width, ctx.height))(\"showLegend\", false)(\"animations\", ctx.animations);\n        ɵngcc0.ɵɵadvance(2);\n        ɵngcc0.ɵɵproperty(\"width\", ctx.dims.width)(\"height\", 3)(\"x\", ctx.margin[3])(\"y\", ctx.dims.height / 2 + ctx.margin[0] - 2)(\"data\", ɵngcc0.ɵɵpureFunction0(36, _c50))(\"orientation\", \"horizontal\")(\"roundEdges\", true)(\"animations\", ctx.animations);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"width\", ctx.valueScale(ctx.value))(\"height\", 3)(\"x\", ctx.margin[3])(\"y\", ctx.dims.height / 2 + ctx.margin[0] - 2)(\"fill\", ctx.colors.getColor(ctx.units))(\"data\", ɵngcc0.ɵɵpureFunction0(37, _c50))(\"orientation\", \"horizontal\")(\"roundEdges\", true)(\"animations\", ctx.animations);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.hasPreviousValue);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.hasPreviousValue);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵattribute(\"transform\", ctx.transform);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵattribute(\"transform\", ctx.valueTranslate);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵstyleProp(\"text-anchor\", \"middle\");\n        ɵngcc0.ɵɵattribute(\"transform\", ctx.valueTextTransform);\n        ɵngcc0.ɵɵadvance(2);\n        ɵngcc0.ɵɵtextInterpolate1(\" \", ctx.displayValue, \" \");\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵattribute(\"transform\", ctx.unitsTranslate);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵstyleProp(\"text-anchor\", \"middle\");\n        ɵngcc0.ɵɵattribute(\"transform\", ctx.unitsTextTransform);\n        ɵngcc0.ɵɵadvance(2);\n        ɵngcc0.ɵɵtextInterpolate1(\" \", ctx.units, \" \");\n    } }, directives: [ChartComponent, BarComponent, ɵngcc1.NgIf], styles: [_c24, \".linear-gauge{cursor:pointer}.linear-gauge .background-bar path{fill:rgba(0,0,0,.05)}.linear-gauge .units{fill:#666}\"], encapsulation: 2, changeDetection: 0 });\n__decorate([\n    Input()\n], LinearGaugeComponent.prototype, \"min\", void 0);\n__decorate([\n    Input()\n], LinearGaugeComponent.prototype, \"max\", void 0);\n__decorate([\n    Input()\n], LinearGaugeComponent.prototype, \"value\", void 0);\n__decorate([\n    Input()\n], LinearGaugeComponent.prototype, \"units\", void 0);\n__decorate([\n    Input()\n], LinearGaugeComponent.prototype, \"previousValue\", void 0);\n__decorate([\n    Input()\n], LinearGaugeComponent.prototype, \"valueFormatting\", void 0);\n__decorate([\n    ViewChild('valueTextEl')\n], LinearGaugeComponent.prototype, \"valueTextEl\", void 0);\n__decorate([\n    ViewChild('unitsTextEl')\n], LinearGaugeComponent.prototype, \"unitsTextEl\", void 0);\n\nlet GaugeComponent = class GaugeComponent extends BaseChartComponent {\n    constructor() {\n        super(...arguments);\n        this.legend = false;\n        this.legendTitle = 'Legend';\n        this.legendPosition = 'right';\n        this.min = 0;\n        this.max = 100;\n        this.bigSegments = 10;\n        this.smallSegments = 5;\n        this.showAxis = true;\n        this.startAngle = -120;\n        this.angleSpan = 240;\n        this.activeEntries = [];\n        this.tooltipDisabled = false;\n        this.showText = true;\n        this.activate = new EventEmitter();\n        this.deactivate = new EventEmitter();\n        this.resizeScale = 1;\n        this.rotation = '';\n        this.textTransform = 'scale(1, 1)';\n        this.cornerRadius = 10;\n    }\n    ngAfterViewInit() {\n        super.ngAfterViewInit();\n        setTimeout(() => this.scaleText());\n    }\n    update() {\n        super.update();\n        if (!this.showAxis) {\n            if (!this.margin) {\n                this.margin = [10, 20, 10, 20];\n            }\n        }\n        else {\n            if (!this.margin) {\n                this.margin = [60, 100, 60, 100];\n            }\n        }\n        // make the starting angle positive\n        if (this.startAngle < 0) {\n            this.startAngle = (this.startAngle % 360) + 360;\n        }\n        this.angleSpan = Math.min(this.angleSpan, 360);\n        this.dims = calculateViewDimensions({\n            width: this.width,\n            height: this.height,\n            margins: this.margin,\n            showLegend: this.legend,\n            legendPosition: this.legendPosition\n        });\n        this.domain = this.getDomain();\n        this.valueDomain = this.getValueDomain();\n        this.valueScale = this.getValueScale();\n        this.displayValue = this.getDisplayValue();\n        this.outerRadius = Math.min(this.dims.width, this.dims.height) / 2;\n        this.arcs = this.getArcs();\n        this.setColors();\n        this.legendOptions = this.getLegendOptions();\n        const xOffset = this.margin[3] + this.dims.width / 2;\n        const yOffset = this.margin[0] + this.dims.height / 2;\n        this.transform = `translate(${xOffset}, ${yOffset})`;\n        this.rotation = `rotate(${this.startAngle})`;\n        setTimeout(() => this.scaleText(), 50);\n    }\n    getArcs() {\n        const arcs = [];\n        const availableRadius = this.outerRadius * 0.7;\n        const radiusPerArc = Math.min(availableRadius / this.results.length, 10);\n        const arcWidth = radiusPerArc * 0.7;\n        this.textRadius = this.outerRadius - this.results.length * radiusPerArc;\n        this.cornerRadius = Math.floor(arcWidth / 2);\n        let i = 0;\n        for (const d of this.results) {\n            const outerRadius = this.outerRadius - i * radiusPerArc;\n            const innerRadius = outerRadius - arcWidth;\n            const backgroundArc = {\n                endAngle: (this.angleSpan * Math.PI) / 180,\n                innerRadius,\n                outerRadius,\n                data: {\n                    value: this.max,\n                    name: d.name\n                }\n            };\n            const valueArc = {\n                endAngle: (Math.min(this.valueScale(d.value), this.angleSpan) * Math.PI) / 180,\n                innerRadius,\n                outerRadius,\n                data: {\n                    value: d.value,\n                    name: d.name\n                }\n            };\n            const arc = {\n                backgroundArc,\n                valueArc\n            };\n            arcs.push(arc);\n            i++;\n        }\n        return arcs;\n    }\n    getDomain() {\n        return this.results.map(d => d.name);\n    }\n    getValueDomain() {\n        const values = this.results.map(d => d.value);\n        const dataMin = Math.min(...values);\n        const dataMax = Math.max(...values);\n        if (this.min !== undefined) {\n            this.min = Math.min(this.min, dataMin);\n        }\n        else {\n            this.min = dataMin;\n        }\n        if (this.max !== undefined) {\n            this.max = Math.max(this.max, dataMax);\n        }\n        else {\n            this.max = dataMax;\n        }\n        return [this.min, this.max];\n    }\n    getValueScale() {\n        return scaleLinear()\n            .range([0, this.angleSpan])\n            .nice()\n            .domain(this.valueDomain);\n    }\n    getDisplayValue() {\n        const value = this.results.map(d => d.value).reduce((a, b) => a + b, 0);\n        if (this.textValue && 0 !== this.textValue.length) {\n            return this.textValue.toLocaleString();\n        }\n        if (this.valueFormatting) {\n            return this.valueFormatting(value);\n        }\n        return value.toLocaleString();\n    }\n    scaleText(repeat = true) {\n        if (!this.showText) {\n            return;\n        }\n        const { width } = this.textEl.nativeElement.getBoundingClientRect();\n        const oldScale = this.resizeScale;\n        if (width === 0) {\n            this.resizeScale = 1;\n        }\n        else {\n            const availableSpace = this.textRadius;\n            this.resizeScale = Math.floor((availableSpace / (width / this.resizeScale)) * 100) / 100;\n        }\n        if (this.resizeScale !== oldScale) {\n            this.textTransform = `scale(${this.resizeScale}, ${this.resizeScale})`;\n            this.cd.markForCheck();\n            if (repeat) {\n                setTimeout(() => this.scaleText(false), 50);\n            }\n        }\n    }\n    onClick(data) {\n        this.select.emit(data);\n    }\n    getLegendOptions() {\n        return {\n            scaleType: 'ordinal',\n            colors: this.colors,\n            domain: this.domain,\n            title: this.legendTitle,\n            position: this.legendPosition\n        };\n    }\n    setColors() {\n        this.colors = new ColorHelper(this.scheme, 'ordinal', this.domain, this.customColors);\n    }\n    onActivate(item) {\n        const idx = this.activeEntries.findIndex(d => {\n            return d.name === item.name && d.value === item.value;\n        });\n        if (idx > -1) {\n            return;\n        }\n        this.activeEntries = [item, ...this.activeEntries];\n        this.activate.emit({ value: item, entries: this.activeEntries });\n    }\n    onDeactivate(item) {\n        const idx = this.activeEntries.findIndex(d => {\n            return d.name === item.name && d.value === item.value;\n        });\n        this.activeEntries.splice(idx, 1);\n        this.activeEntries = [...this.activeEntries];\n        this.deactivate.emit({ value: item, entries: this.activeEntries });\n    }\n    isActive(entry) {\n        if (!this.activeEntries)\n            return false;\n        const item = this.activeEntries.find(d => {\n            return entry.name === d.name && entry.series === d.series;\n        });\n        return item !== undefined;\n    }\n    trackBy(index, item) {\n        return item.valueArc.data.name;\n    }\n};\nGaugeComponent.ɵfac = function GaugeComponent_Factory(t) { return ɵGaugeComponent_BaseFactory(t || GaugeComponent); };\nGaugeComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: GaugeComponent, selectors: [[\"ngx-charts-gauge\"]], contentQueries: function GaugeComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n        ɵngcc0.ɵɵcontentQuery(dirIndex, _c21, true);\n    } if (rf & 2) {\n        var _t;\n        ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tooltipTemplate = _t.first);\n    } }, viewQuery: function GaugeComponent_Query(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵviewQuery(_c43, true);\n    } if (rf & 2) {\n        var _t;\n        ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.textEl = _t.first);\n    } }, inputs: { legend: \"legend\", legendTitle: \"legendTitle\", legendPosition: \"legendPosition\", min: \"min\", max: \"max\", bigSegments: \"bigSegments\", smallSegments: \"smallSegments\", showAxis: \"showAxis\", startAngle: \"startAngle\", angleSpan: \"angleSpan\", activeEntries: \"activeEntries\", tooltipDisabled: \"tooltipDisabled\", showText: \"showText\", margin: \"margin\", textValue: \"textValue\", units: \"units\", results: \"results\", axisTickFormatting: \"axisTickFormatting\", valueFormatting: \"valueFormatting\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 5, vars: 13, consts: [[3, \"view\", \"showLegend\", \"legendOptions\", \"activeEntries\", \"animations\", \"legendLabelClick\", \"legendLabelActivate\", \"legendLabelDeactivate\"], [1, \"gauge\", \"chart\"], [4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"ngx-charts-gauge-axis\", \"\", 3, \"bigSegments\", \"smallSegments\", \"min\", \"max\", \"radius\", \"angleSpan\", \"valueScale\", \"startAngle\", \"tickFormatting\", 4, \"ngIf\"], [\"alignment-baseline\", \"central\", 3, \"textAnchor\", 4, \"ngIf\"], [\"ngx-charts-gauge-arc\", \"\", 3, \"backgroundArc\", \"valueArc\", \"cornerRadius\", \"colors\", \"isActive\", \"tooltipDisabled\", \"tooltipTemplate\", \"valueFormatting\", \"animations\", \"select\", \"activate\", \"deactivate\"], [\"ngx-charts-gauge-axis\", \"\", 3, \"bigSegments\", \"smallSegments\", \"min\", \"max\", \"radius\", \"angleSpan\", \"valueScale\", \"startAngle\", \"tickFormatting\"], [\"alignment-baseline\", \"central\"], [\"textEl\", \"\"], [\"x\", \"0\", \"dy\", \"0\"], [\"x\", \"0\", \"dy\", \"1.2em\"]], template: function GaugeComponent_Template(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵelementStart(0, \"ngx-charts-chart\", 0);\n        ɵngcc0.ɵɵlistener(\"legendLabelClick\", function GaugeComponent_Template_ngx_charts_chart_legendLabelClick_0_listener($event) { return ctx.onClick($event); })(\"legendLabelActivate\", function GaugeComponent_Template_ngx_charts_chart_legendLabelActivate_0_listener($event) { return ctx.onActivate($event); })(\"legendLabelDeactivate\", function GaugeComponent_Template_ngx_charts_chart_legendLabelDeactivate_0_listener($event) { return ctx.onDeactivate($event); });\n        ɵngcc0.ɵɵnamespaceSVG();\n        ɵngcc0.ɵɵelementStart(1, \"g\", 1);\n        ɵngcc0.ɵɵtemplate(2, GaugeComponent__svg_g_2_Template, 2, 10, \"g\", 2);\n        ɵngcc0.ɵɵtemplate(3, GaugeComponent__svg_g_3_Template, 1, 9, \"g\", 3);\n        ɵngcc0.ɵɵtemplate(4, GaugeComponent__svg_text_4_Template, 6, 5, \"text\", 4);\n        ɵngcc0.ɵɵelementEnd();\n        ɵngcc0.ɵɵelementEnd();\n    } if (rf & 2) {\n        ɵngcc0.ɵɵproperty(\"view\", ɵngcc0.ɵɵpureFunction2(10, _c23, ctx.width, ctx.height))(\"showLegend\", ctx.legend)(\"legendOptions\", ctx.legendOptions)(\"activeEntries\", ctx.activeEntries)(\"animations\", ctx.animations);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵattribute(\"transform\", ctx.transform);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.arcs)(\"ngForTrackBy\", ctx.trackBy);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showAxis);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showText);\n    } }, directives: function () { return [ChartComponent, ɵngcc1.NgForOf, ɵngcc1.NgIf, GaugeArcComponent, GaugeAxisComponent]; }, styles: [_c24, \".gauge .background-arc path{fill:rgba(0,0,0,.05)}.gauge .gauge-tick path{stroke:#666}.gauge .gauge-tick text{font-size:12px;fill:#666;font-weight:700}.gauge .gauge-tick-large path{stroke-width:2px}.gauge .gauge-tick-small path{stroke-width:1px}\"], encapsulation: 2, changeDetection: 0 });\n__decorate([\n    Input()\n], GaugeComponent.prototype, \"legend\", void 0);\n__decorate([\n    Input()\n], GaugeComponent.prototype, \"legendTitle\", void 0);\n__decorate([\n    Input()\n], GaugeComponent.prototype, \"legendPosition\", void 0);\n__decorate([\n    Input()\n], GaugeComponent.prototype, \"min\", void 0);\n__decorate([\n    Input()\n], GaugeComponent.prototype, \"max\", void 0);\n__decorate([\n    Input()\n], GaugeComponent.prototype, \"textValue\", void 0);\n__decorate([\n    Input()\n], GaugeComponent.prototype, \"units\", void 0);\n__decorate([\n    Input()\n], GaugeComponent.prototype, \"bigSegments\", void 0);\n__decorate([\n    Input()\n], GaugeComponent.prototype, \"smallSegments\", void 0);\n__decorate([\n    Input()\n], GaugeComponent.prototype, \"results\", void 0);\n__decorate([\n    Input()\n], GaugeComponent.prototype, \"showAxis\", void 0);\n__decorate([\n    Input()\n], GaugeComponent.prototype, \"startAngle\", void 0);\n__decorate([\n    Input()\n], GaugeComponent.prototype, \"angleSpan\", void 0);\n__decorate([\n    Input()\n], GaugeComponent.prototype, \"activeEntries\", void 0);\n__decorate([\n    Input()\n], GaugeComponent.prototype, \"axisTickFormatting\", void 0);\n__decorate([\n    Input()\n], GaugeComponent.prototype, \"tooltipDisabled\", void 0);\n__decorate([\n    Input()\n], GaugeComponent.prototype, \"valueFormatting\", void 0);\n__decorate([\n    Input()\n], GaugeComponent.prototype, \"showText\", void 0);\n__decorate([\n    Input()\n], GaugeComponent.prototype, \"margin\", void 0);\n__decorate([\n    Output()\n], GaugeComponent.prototype, \"activate\", void 0);\n__decorate([\n    Output()\n], GaugeComponent.prototype, \"deactivate\", void 0);\n__decorate([\n    ContentChild('tooltipTemplate')\n], GaugeComponent.prototype, \"tooltipTemplate\", void 0);\n__decorate([\n    ViewChild('textEl')\n], GaugeComponent.prototype, \"textEl\", void 0);\n\nlet GaugeArcComponent = class GaugeArcComponent {\n    constructor() {\n        this.isActive = false;\n        this.tooltipDisabled = false;\n        this.animations = true;\n        this.select = new EventEmitter();\n        this.activate = new EventEmitter();\n        this.deactivate = new EventEmitter();\n    }\n    tooltipText(arc) {\n        const label = formatLabel(arc.data.name);\n        let val;\n        if (this.valueFormatting) {\n            val = this.valueFormatting(arc.data.value);\n        }\n        else {\n            val = formatLabel(arc.data.value);\n        }\n        return `\n      <span class=\"tooltip-label\">${escapeLabel(label)}</span>\n      <span class=\"tooltip-val\">${val}</span>\n    `;\n    }\n};\nGaugeArcComponent.ɵfac = function GaugeArcComponent_Factory(t) { return new (t || GaugeArcComponent)(); };\nGaugeArcComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: GaugeArcComponent, selectors: [[\"g\", \"ngx-charts-gauge-arc\", \"\"]], inputs: { isActive: \"isActive\", tooltipDisabled: \"tooltipDisabled\", animations: \"animations\", backgroundArc: \"backgroundArc\", valueArc: \"valueArc\", cornerRadius: \"cornerRadius\", colors: \"colors\", valueFormatting: \"valueFormatting\", tooltipTemplate: \"tooltipTemplate\" }, outputs: { select: \"select\", activate: \"activate\", deactivate: \"deactivate\" }, attrs: _c51, decls: 2, vars: 23, consts: [[\"ngx-charts-pie-arc\", \"\", 1, \"background-arc\", 3, \"startAngle\", \"endAngle\", \"innerRadius\", \"outerRadius\", \"cornerRadius\", \"data\", \"animate\", \"pointerEvents\"], [\"ngx-charts-pie-arc\", \"\", \"ngx-tooltip\", \"\", 3, \"startAngle\", \"endAngle\", \"innerRadius\", \"outerRadius\", \"cornerRadius\", \"fill\", \"data\", \"animate\", \"isActive\", \"tooltipDisabled\", \"tooltipPlacement\", \"tooltipType\", \"tooltipTitle\", \"tooltipTemplate\", \"tooltipContext\", \"select\", \"activate\", \"deactivate\"]], template: function GaugeArcComponent_Template(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵnamespaceSVG();\n        ɵngcc0.ɵɵelement(0, \"g\", 0);\n        ɵngcc0.ɵɵelementStart(1, \"g\", 1);\n        ɵngcc0.ɵɵlistener(\"select\", function GaugeArcComponent_Template__svg_g_select_1_listener($event) { return ctx.select.emit($event); })(\"activate\", function GaugeArcComponent_Template__svg_g_activate_1_listener($event) { return ctx.activate.emit($event); })(\"deactivate\", function GaugeArcComponent_Template__svg_g_deactivate_1_listener($event) { return ctx.deactivate.emit($event); });\n        ɵngcc0.ɵɵelementEnd();\n    } if (rf & 2) {\n        ɵngcc0.ɵɵproperty(\"startAngle\", 0)(\"endAngle\", ctx.backgroundArc.endAngle)(\"innerRadius\", ctx.backgroundArc.innerRadius)(\"outerRadius\", ctx.backgroundArc.outerRadius)(\"cornerRadius\", ctx.cornerRadius)(\"data\", ctx.backgroundArc.data)(\"animate\", false)(\"pointerEvents\", false);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"startAngle\", 0)(\"endAngle\", ctx.valueArc.endAngle)(\"innerRadius\", ctx.valueArc.innerRadius)(\"outerRadius\", ctx.valueArc.outerRadius)(\"cornerRadius\", ctx.cornerRadius)(\"fill\", ctx.colors.getColor(ctx.valueArc.data.name))(\"data\", ctx.valueArc.data)(\"animate\", ctx.animations)(\"isActive\", ctx.isActive)(\"tooltipDisabled\", ctx.tooltipDisabled)(\"tooltipPlacement\", \"top\")(\"tooltipType\", \"tooltip\")(\"tooltipTitle\", ctx.tooltipTemplate ? undefined : ctx.tooltipText(ctx.valueArc))(\"tooltipTemplate\", ctx.tooltipTemplate)(\"tooltipContext\", ctx.valueArc.data);\n    } }, directives: [PieArcComponent, TooltipDirective], encapsulation: 2, changeDetection: 0 });\n__decorate([\n    Input()\n], GaugeArcComponent.prototype, \"backgroundArc\", void 0);\n__decorate([\n    Input()\n], GaugeArcComponent.prototype, \"valueArc\", void 0);\n__decorate([\n    Input()\n], GaugeArcComponent.prototype, \"cornerRadius\", void 0);\n__decorate([\n    Input()\n], GaugeArcComponent.prototype, \"colors\", void 0);\n__decorate([\n    Input()\n], GaugeArcComponent.prototype, \"isActive\", void 0);\n__decorate([\n    Input()\n], GaugeArcComponent.prototype, \"tooltipDisabled\", void 0);\n__decorate([\n    Input()\n], GaugeArcComponent.prototype, \"valueFormatting\", void 0);\n__decorate([\n    Input()\n], GaugeArcComponent.prototype, \"tooltipTemplate\", void 0);\n__decorate([\n    Input()\n], GaugeArcComponent.prototype, \"animations\", void 0);\n__decorate([\n    Output()\n], GaugeArcComponent.prototype, \"select\", void 0);\n__decorate([\n    Output()\n], GaugeArcComponent.prototype, \"activate\", void 0);\n__decorate([\n    Output()\n], GaugeArcComponent.prototype, \"deactivate\", void 0);\n\nlet GaugeAxisComponent = class GaugeAxisComponent {\n    constructor() {\n        this.rotate = '';\n    }\n    ngOnChanges(changes) {\n        this.update();\n    }\n    update() {\n        this.rotationAngle = -90 + this.startAngle;\n        this.rotate = `rotate(${this.rotationAngle})`;\n        this.ticks = this.getTicks();\n    }\n    getTicks() {\n        const bigTickSegment = this.angleSpan / this.bigSegments;\n        const smallTickSegment = bigTickSegment / this.smallSegments;\n        const tickLength = 20;\n        const ticks = {\n            big: [],\n            small: []\n        };\n        const startDistance = this.radius + 10;\n        const textDist = startDistance + tickLength + 10;\n        for (let i = 0; i <= this.bigSegments; i++) {\n            const angleDeg = i * bigTickSegment;\n            const angle = (angleDeg * Math.PI) / 180;\n            const textAnchor = this.getTextAnchor(angleDeg);\n            let skip = false;\n            if (i === 0 && this.angleSpan === 360) {\n                skip = true;\n            }\n            if (!skip) {\n                let text = Number.parseFloat(this.valueScale.invert(angleDeg).toString()).toLocaleString();\n                if (this.tickFormatting) {\n                    text = this.tickFormatting(text);\n                }\n                ticks.big.push({\n                    line: this.getTickPath(startDistance, tickLength, angle),\n                    textAnchor,\n                    text,\n                    textTransform: `\n            translate(${textDist * Math.cos(angle)}, ${textDist * Math.sin(angle)}) rotate(${-this.rotationAngle})\n          `\n                });\n            }\n            if (i === this.bigSegments) {\n                continue;\n            }\n            for (let j = 1; j <= this.smallSegments; j++) {\n                const smallAngleDeg = angleDeg + j * smallTickSegment;\n                const smallAngle = (smallAngleDeg * Math.PI) / 180;\n                ticks.small.push({\n                    line: this.getTickPath(startDistance, tickLength / 2, smallAngle)\n                });\n            }\n        }\n        return ticks;\n    }\n    getTextAnchor(angle) {\n        // [0, 45] = 'middle';\n        // [46, 135] = 'start';\n        // [136, 225] = 'middle';\n        // [226, 315] = 'end';\n        angle = (this.startAngle + angle) % 360;\n        let textAnchor = 'middle';\n        if (angle > 45 && angle <= 135) {\n            textAnchor = 'start';\n        }\n        else if (angle > 225 && angle <= 315) {\n            textAnchor = 'end';\n        }\n        return textAnchor;\n    }\n    getTickPath(startDistance, tickLength, angle) {\n        const y1 = startDistance * Math.sin(angle);\n        const y2 = (startDistance + tickLength) * Math.sin(angle);\n        const x1 = startDistance * Math.cos(angle);\n        const x2 = (startDistance + tickLength) * Math.cos(angle);\n        const points = [\n            { x: x1, y: y1 },\n            { x: x2, y: y2 }\n        ];\n        const lineGenerator = line()\n            .x(d => d.x)\n            .y(d => d.y);\n        return lineGenerator(points);\n    }\n};\nGaugeAxisComponent.ɵfac = function GaugeAxisComponent_Factory(t) { return new (t || GaugeAxisComponent)(); };\nGaugeAxisComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: GaugeAxisComponent, selectors: [[\"g\", \"ngx-charts-gauge-axis\", \"\"]], inputs: { bigSegments: \"bigSegments\", smallSegments: \"smallSegments\", min: \"min\", max: \"max\", angleSpan: \"angleSpan\", startAngle: \"startAngle\", radius: \"radius\", valueScale: \"valueScale\", tickFormatting: \"tickFormatting\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c52, decls: 4, vars: 4, consts: [[\"class\", \"gauge-tick gauge-tick-large\", 4, \"ngFor\", \"ngForOf\"], [\"class\", \"gauge-tick gauge-tick-small\", 4, \"ngFor\", \"ngForOf\"], [1, \"gauge-tick\", \"gauge-tick-large\"], [\"alignment-baseline\", \"central\"], [1, \"gauge-tick\", \"gauge-tick-small\"]], template: function GaugeAxisComponent_Template(rf, ctx) { if (rf & 1) {\n        ɵngcc0.ɵɵnamespaceSVG();\n        ɵngcc0.ɵɵelementStart(0, \"g\");\n        ɵngcc0.ɵɵtemplate(1, GaugeAxisComponent__svg_g_1_Template, 2, 1, \"g\", 0);\n        ɵngcc0.ɵɵtemplate(2, GaugeAxisComponent__svg_g_2_Template, 3, 4, \"g\", 0);\n        ɵngcc0.ɵɵtemplate(3, GaugeAxisComponent__svg_g_3_Template, 2, 1, \"g\", 1);\n        ɵngcc0.ɵɵelementEnd();\n    } if (rf & 2) {\n        ɵngcc0.ɵɵattribute(\"transform\", ctx.rotate);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.ticks.big);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.ticks.big);\n        ɵngcc0.ɵɵadvance(1);\n        ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.ticks.small);\n    } }, directives: [ɵngcc1.NgForOf], encapsulation: 2, changeDetection: 0 });\n__decorate([\n    Input()\n], GaugeAxisComponent.prototype, \"bigSegments\", void 0);\n__decorate([\n    Input()\n], GaugeAxisComponent.prototype, \"smallSegments\", void 0);\n__decorate([\n    Input()\n], GaugeAxisComponent.prototype, \"min\", void 0);\n__decorate([\n    Input()\n], GaugeAxisComponent.prototype, \"max\", void 0);\n__decorate([\n    Input()\n], GaugeAxisComponent.prototype, \"angleSpan\", void 0);\n__decorate([\n    Input()\n], GaugeAxisComponent.prototype, \"startAngle\", void 0);\n__decorate([\n    Input()\n], GaugeAxisComponent.prototype, \"radius\", void 0);\n__decorate([\n    Input()\n], GaugeAxisComponent.prototype, \"valueScale\", void 0);\n__decorate([\n    Input()\n], GaugeAxisComponent.prototype, \"tickFormatting\", void 0);\n\nlet GaugeModule = class GaugeModule {\n};\nGaugeModule.ɵmod = ɵngcc0.ɵɵdefineNgModule({ type: GaugeModule });\nGaugeModule.ɵinj = ɵngcc0.ɵɵdefineInjector({ factory: function GaugeModule_Factory(t) { return new (t || GaugeModule)(); }, imports: [[ChartCommonModule, PieChartModule, BarChartModule]] });\n\n// The export is needed here to generate a valid polyfills.metadata.json file\nfunction ngxChartsPolyfills() {\n    // IE11 fix\n    // Ref: https://github.com/swimlane/ngx-charts/issues/386\n    if (typeof SVGElement !== 'undefined' && typeof SVGElement.prototype.contains === 'undefined') {\n        SVGElement.prototype.contains = HTMLDivElement.prototype.contains;\n    }\n}\n\nlet NgxChartsModule = class NgxChartsModule {\n    constructor() {\n        ngxChartsPolyfills();\n    }\n};\nNgxChartsModule.ɵmod = ɵngcc0.ɵɵdefineNgModule({ type: NgxChartsModule });\nNgxChartsModule.ɵinj = ɵngcc0.ɵɵdefineInjector({ factory: function NgxChartsModule_Factory(t) { return new (t || NgxChartsModule)(); }, imports: [ChartCommonModule, AreaChartModule, BarChartModule, BubbleChartModule, HeatMapModule, LineChartModule, PolarChartModule, NumberCardModule, PieChartModule, TreeMapModule, GaugeModule] });\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(InjectionService, [{\n        type: Injectable\n    }], function () { return [{ type: ɵngcc0.ApplicationRef }, { type: ɵngcc0.ComponentFactoryResolver }, { type: ɵngcc0.Injector }]; }, null); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(TooltipContentComponent, [{\n        type: Component,\n        args: [{\n                selector: 'ngx-tooltip-content',\n                template: `\n    <div>\n      <span #caretElm [hidden]=\"!showCaret\" class=\"tooltip-caret position-{{ this.placement }}\"> </span>\n      <div class=\"tooltip-content\">\n        <span *ngIf=\"!title\">\n          <ng-template [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"{ model: context }\"> </ng-template>\n        </span>\n        <span *ngIf=\"title\" [innerHTML]=\"title\"> </span>\n      </div>\n    </div>\n  `,\n                encapsulation: ViewEncapsulation.None,\n                styles: [\".ngx-charts-tooltip-content{position:fixed;border-radius:3px;z-index:5000;display:block;font-weight:400;opacity:0;pointer-events:none!important}.ngx-charts-tooltip-content.type-popover{background:#fff;color:#060709;border:1px solid #72809b;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);font-size:13px;padding:4px}.ngx-charts-tooltip-content.type-popover .tooltip-caret{position:absolute;z-index:5001;width:0;height:0}.ngx-charts-tooltip-content.type-popover .tooltip-caret.position-left{border-top:7px solid transparent;border-bottom:7px solid transparent;border-left:7px solid #fff}.ngx-charts-tooltip-content.type-popover .tooltip-caret.position-top{border-left:7px solid transparent;border-right:7px solid transparent;border-top:7px solid #fff}.ngx-charts-tooltip-content.type-popover .tooltip-caret.position-right{border-top:7px solid transparent;border-bottom:7px solid transparent;border-right:7px solid #fff}.ngx-charts-tooltip-content.type-popover .tooltip-caret.position-bottom{border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #fff}.ngx-charts-tooltip-content.type-tooltip{color:#fff;background:rgba(0,0,0,.75);font-size:12px;padding:0 10px;text-align:center;pointer-events:auto}.ngx-charts-tooltip-content.type-tooltip .tooltip-caret.position-left{border-top:7px solid transparent;border-bottom:7px solid transparent;border-left:7px solid rgba(0,0,0,.75)}.ngx-charts-tooltip-content.type-tooltip .tooltip-caret.position-top{border-left:7px solid transparent;border-right:7px solid transparent;border-top:7px solid rgba(0,0,0,.75)}.ngx-charts-tooltip-content.type-tooltip .tooltip-caret.position-right{border-top:7px solid transparent;border-bottom:7px solid transparent;border-right:7px solid rgba(0,0,0,.75)}.ngx-charts-tooltip-content.type-tooltip .tooltip-caret.position-bottom{border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid rgba(0,0,0,.75)}.ngx-charts-tooltip-content .tooltip-label{display:block;line-height:1em;padding:8px 5px 5px;font-size:1em}.ngx-charts-tooltip-content .tooltip-val{display:block;font-size:1.3em;line-height:1em;padding:0 5px 8px}.ngx-charts-tooltip-content .tooltip-caret{position:absolute;z-index:5001;width:0;height:0}.ngx-charts-tooltip-content.position-right{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}.ngx-charts-tooltip-content.position-left{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}.ngx-charts-tooltip-content.position-top{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}.ngx-charts-tooltip-content.position-bottom{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}.ngx-charts-tooltip-content.animate{opacity:1;-webkit-transition:opacity .3s,-webkit-transform .3s;transition:opacity .3s,transform .3s,-webkit-transform .3s;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);pointer-events:auto}.area-tooltip-container{padding:5px 0;pointer-events:none}.tooltip-item{text-align:left;line-height:1.2em;padding:5px 0}.tooltip-item .tooltip-item-color{display:inline-block;height:12px;width:12px;margin-right:5px;color:#5b646b;border-radius:3px}\"]\n            }]\n    }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }]; }, { cssClasses: [{\n            type: HostBinding,\n            args: ['class']\n        }], placement: [{\n            type: Input\n        }], onWindowResize: [{\n            type: HostListener,\n            args: ['window:resize']\n        }], host: [{\n            type: Input\n        }], showCaret: [{\n            type: Input\n        }], type: [{\n            type: Input\n        }], alignment: [{\n            type: Input\n        }], spacing: [{\n            type: Input\n        }], cssClass: [{\n            type: Input\n        }], title: [{\n            type: Input\n        }], template: [{\n            type: Input\n        }], context: [{\n            type: Input\n        }], caretElm: [{\n            type: ViewChild,\n            args: ['caretElm']\n        }] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(TooltipService, [{\n        type: Injectable\n    }], function () { return [{ type: InjectionService }]; }, null); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(ChartComponent, [{\n        type: Component,\n        args: [{\n                providers: [TooltipService],\n                selector: 'ngx-charts-chart',\n                template: `\n    <div class=\"ngx-charts-outer\" [style.width.px]=\"view[0]\" [@animationState]=\"'active'\" [@.disabled]=\"!animations\">\n      <svg class=\"ngx-charts\" [attr.width]=\"chartWidth\" [attr.height]=\"view[1]\">\n        <ng-content></ng-content>\n      </svg>\n      <ngx-charts-scale-legend\n        *ngIf=\"showLegend && legendType === 'scaleLegend'\"\n        class=\"chart-legend\"\n        [horizontal]=\"legendOptions && legendOptions.position === 'below'\"\n        [valueRange]=\"legendOptions.domain\"\n        [colors]=\"legendOptions.colors\"\n        [height]=\"view[1]\"\n        [width]=\"legendWidth\"\n      >\n      </ngx-charts-scale-legend>\n      <ngx-charts-legend\n        *ngIf=\"showLegend && legendType === 'legend'\"\n        class=\"chart-legend\"\n        [horizontal]=\"legendOptions && legendOptions.position === 'below'\"\n        [data]=\"legendOptions.domain\"\n        [title]=\"legendOptions.title\"\n        [colors]=\"legendOptions.colors\"\n        [height]=\"view[1]\"\n        [width]=\"legendWidth\"\n        [activeEntries]=\"activeEntries\"\n        (labelClick)=\"legendLabelClick.emit($event)\"\n        (labelActivate)=\"legendLabelActivate.emit($event)\"\n        (labelDeactivate)=\"legendLabelDeactivate.emit($event)\"\n      >\n      </ngx-charts-legend>\n    </div>\n  `,\n                changeDetection: ChangeDetectionStrategy.OnPush,\n                animations: [\n                    trigger('animationState', [\n                        transition(':enter', [style({ opacity: 0 }), animate('500ms 100ms', style({ opacity: 1 }))])\n                    ])\n                ]\n            }]\n    }], function () { return []; }, { showLegend: [{\n            type: Input\n        }], animations: [{\n            type: Input\n        }], legendLabelClick: [{\n            type: Output\n        }], legendLabelActivate: [{\n            type: Output\n        }], legendLabelDeactivate: [{\n            type: Output\n        }], legendType: [{\n            type: Input\n        }], view: [{\n            type: Input\n        }], legendOptions: [{\n            type: Input\n        }], data: [{\n            type: Input\n        }], legendData: [{\n            type: Input\n        }], colors: [{\n            type: Input\n        }], activeEntries: [{\n            type: Input\n        }] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(VisibilityObserver, [{\n        type: Directive,\n        args: [{\n                selector: 'visibility-observer'\n            }]\n    }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.NgZone }]; }, { visible: [{\n            type: Output\n        }] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(BaseChartComponent, [{\n        type: Component,\n        args: [{\n                selector: 'base-chart',\n                template: `\n    <div></div>\n  `\n            }]\n    }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.ChangeDetectorRef }]; }, { scheme: [{\n            type: Input\n        }], schemeType: [{\n            type: Input\n        }], animations: [{\n            type: Input\n        }], select: [{\n            type: Output\n        }], results: [{\n            type: Input\n        }], view: [{\n            type: Input\n        }], customColors: [{\n            type: Input\n        }] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(AxisLabelComponent, [{\n        type: Component,\n        args: [{\n                selector: 'g[ngx-charts-axis-label]',\n                template: `\n    <svg:text\n      [attr.stroke-width]=\"strokeWidth\"\n      [attr.x]=\"x\"\n      [attr.y]=\"y\"\n      [attr.text-anchor]=\"textAnchor\"\n      [attr.transform]=\"transform\"\n    >\n      {{ label }}\n    </svg:text>\n  `,\n                changeDetection: ChangeDetectionStrategy.OnPush\n            }]\n    }], function () { return [{ type: ɵngcc0.ElementRef }]; }, { orient: [{\n            type: Input\n        }], label: [{\n            type: Input\n        }], offset: [{\n            type: Input\n        }], width: [{\n            type: Input\n        }], height: [{\n            type: Input\n        }] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(XAxisTicksComponent, [{\n        type: Component,\n        args: [{\n                selector: 'g[ngx-charts-x-axis-ticks]',\n                template: `\n    <svg:g #ticksel>\n      <svg:g *ngFor=\"let tick of ticks\" class=\"tick\" [attr.transform]=\"tickTransform(tick)\">\n        <title>{{ tickFormat(tick) }}</title>\n        <svg:text\n          stroke-width=\"0.01\"\n          [attr.text-anchor]=\"textAnchor\"\n          [attr.transform]=\"textTransform\"\n          [style.font-size]=\"'12px'\"\n        >\n          {{ tickTrim(tickFormat(tick)) }}\n        </svg:text>\n      </svg:g>\n    </svg:g>\n\n    <svg:g *ngFor=\"let tick of ticks\" [attr.transform]=\"tickTransform(tick)\">\n      <svg:g *ngIf=\"showGridLines\" [attr.transform]=\"gridLineTransform()\">\n        <svg:line class=\"gridline-path gridline-path-vertical\" [attr.y1]=\"-gridLineHeight\" y2=\"0\" />\n      </svg:g>\n    </svg:g>\n  `,\n                changeDetection: ChangeDetectionStrategy.OnPush\n            }]\n    }], function () { return []; }, { tickArguments: [{\n            type: Input\n        }], tickStroke: [{\n            type: Input\n        }], trimTicks: [{\n            type: Input\n        }], maxTickLength: [{\n            type: Input\n        }], showGridLines: [{\n            type: Input\n        }], rotateTicks: [{\n            type: Input\n        }], dimensionsChanged: [{\n            type: Output\n        }], scale: [{\n            type: Input\n        }], orient: [{\n            type: Input\n        }], tickValues: [{\n            type: Input\n        }], tickFormatting: [{\n            type: Input\n        }], gridLineHeight: [{\n            type: Input\n        }], width: [{\n            type: Input\n        }], ticksElement: [{\n            type: ViewChild,\n            args: ['ticksel']\n        }] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(XAxisComponent, [{\n        type: Component,\n        args: [{\n                selector: 'g[ngx-charts-x-axis]',\n                template: `\n    <svg:g [attr.class]=\"xAxisClassName\" [attr.transform]=\"transform\">\n      <svg:g\n        ngx-charts-x-axis-ticks\n        *ngIf=\"xScale\"\n        [trimTicks]=\"trimTicks\"\n        [rotateTicks]=\"rotateTicks\"\n        [maxTickLength]=\"maxTickLength\"\n        [tickFormatting]=\"tickFormatting\"\n        [tickArguments]=\"tickArguments\"\n        [tickStroke]=\"tickStroke\"\n        [scale]=\"xScale\"\n        [orient]=\"xOrient\"\n        [showGridLines]=\"showGridLines\"\n        [gridLineHeight]=\"dims.height\"\n        [width]=\"dims.width\"\n        [tickValues]=\"ticks\"\n        (dimensionsChanged)=\"emitTicksHeight($event)\"\n      />\n      <svg:g\n        ngx-charts-axis-label\n        *ngIf=\"showLabel\"\n        [label]=\"labelText\"\n        [offset]=\"labelOffset\"\n        [orient]=\"'bottom'\"\n        [height]=\"dims.height\"\n        [width]=\"dims.width\"\n      ></svg:g>\n    </svg:g>\n  `,\n                changeDetection: ChangeDetectionStrategy.OnPush\n            }]\n    }], function () { return []; }, { rotateTicks: [{\n            type: Input\n        }], showGridLines: [{\n            type: Input\n        }], xOrient: [{\n            type: Input\n        }], xAxisOffset: [{\n            type: Input\n        }], dimensionsChanged: [{\n            type: Output\n        }], xScale: [{\n            type: Input\n        }], dims: [{\n            type: Input\n        }], trimTicks: [{\n            type: Input\n        }], maxTickLength: [{\n            type: Input\n        }], tickFormatting: [{\n            type: Input\n        }], showLabel: [{\n            type: Input\n        }], labelText: [{\n            type: Input\n        }], ticks: [{\n            type: Input\n        }], xAxisTickInterval: [{\n            type: Input\n        }], xAxisTickCount: [{\n            type: Input\n        }], ticksComponent: [{\n            type: ViewChild,\n            args: [XAxisTicksComponent]\n        }] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(YAxisTicksComponent, [{\n        type: Component,\n        args: [{\n                selector: 'g[ngx-charts-y-axis-ticks]',\n                template: `\n    <svg:g #ticksel>\n      <svg:g *ngFor=\"let tick of ticks\" class=\"tick\" [attr.transform]=\"transform(tick)\">\n        <title>{{ tickFormat(tick) }}</title>\n        <svg:text\n          stroke-width=\"0.01\"\n          [attr.dy]=\"dy\"\n          [attr.x]=\"x1\"\n          [attr.y]=\"y1\"\n          [attr.text-anchor]=\"textAnchor\"\n          [style.font-size]=\"'12px'\"\n        >\n          {{ tickTrim(tickFormat(tick)) }}\n        </svg:text>\n      </svg:g>\n    </svg:g>\n\n    <svg:path\n      *ngIf=\"referenceLineLength > 1 && refMax && refMin && showRefLines\"\n      class=\"reference-area\"\n      [attr.d]=\"referenceAreaPath\"\n      [attr.transform]=\"gridLineTransform()\"\n    />\n    <svg:g *ngFor=\"let tick of ticks\" [attr.transform]=\"transform(tick)\">\n      <svg:g *ngIf=\"showGridLines\" [attr.transform]=\"gridLineTransform()\">\n        <svg:line\n          *ngIf=\"orient === 'left'\"\n          class=\"gridline-path gridline-path-horizontal\"\n          x1=\"0\"\n          [attr.x2]=\"gridLineWidth\"\n        />\n        <svg:line\n          *ngIf=\"orient === 'right'\"\n          class=\"gridline-path gridline-path-horizontal\"\n          x1=\"0\"\n          [attr.x2]=\"-gridLineWidth\"\n        />\n      </svg:g>\n    </svg:g>\n\n    <svg:g *ngFor=\"let refLine of referenceLines\">\n      <svg:g *ngIf=\"showRefLines\" [attr.transform]=\"transform(refLine.value)\">\n        <svg:line\n          class=\"refline-path gridline-path-horizontal\"\n          x1=\"0\"\n          [attr.x2]=\"gridLineWidth\"\n          [attr.transform]=\"gridLineTransform()\"\n        />\n        <svg:g *ngIf=\"showRefLabels\">\n          <title>{{ tickTrim(tickFormat(refLine.value)) }}</title>\n          <svg:text\n            class=\"refline-label\"\n            [attr.dy]=\"dy\"\n            [attr.y]=\"-6\"\n            [attr.x]=\"gridLineWidth\"\n            [attr.text-anchor]=\"textAnchor\"\n          >\n            {{ refLine.name }}\n          </svg:text>\n        </svg:g>\n      </svg:g>\n    </svg:g>\n  `,\n                changeDetection: ChangeDetectionStrategy.OnPush\n            }]\n    }], function () { return []; }, { tickArguments: [{\n            type: Input\n        }], tickStroke: [{\n            type: Input\n        }], trimTicks: [{\n            type: Input\n        }], maxTickLength: [{\n            type: Input\n        }], showGridLines: [{\n            type: Input\n        }], showRefLabels: [{\n            type: Input\n        }], showRefLines: [{\n            type: Input\n        }], dimensionsChanged: [{\n            type: Output\n        }], scale: [{\n            type: Input\n        }], orient: [{\n            type: Input\n        }], tickValues: [{\n            type: Input\n        }], tickFormatting: [{\n            type: Input\n        }], gridLineWidth: [{\n            type: Input\n        }], height: [{\n            type: Input\n        }], referenceLines: [{\n            type: Input\n        }], ticksElement: [{\n            type: ViewChild,\n            args: ['ticksel']\n        }] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(YAxisComponent, [{\n        type: Component,\n        args: [{\n                selector: 'g[ngx-charts-y-axis]',\n                template: `\n    <svg:g [attr.class]=\"yAxisClassName\" [attr.transform]=\"transform\">\n      <svg:g\n        ngx-charts-y-axis-ticks\n        *ngIf=\"yScale\"\n        [trimTicks]=\"trimTicks\"\n        [maxTickLength]=\"maxTickLength\"\n        [tickFormatting]=\"tickFormatting\"\n        [tickArguments]=\"tickArguments\"\n        [tickValues]=\"ticks\"\n        [tickStroke]=\"tickStroke\"\n        [scale]=\"yScale\"\n        [orient]=\"yOrient\"\n        [showGridLines]=\"showGridLines\"\n        [gridLineWidth]=\"dims.width\"\n        [referenceLines]=\"referenceLines\"\n        [showRefLines]=\"showRefLines\"\n        [showRefLabels]=\"showRefLabels\"\n        [height]=\"dims.height\"\n        (dimensionsChanged)=\"emitTicksWidth($event)\"\n      />\n\n      <svg:g\n        ngx-charts-axis-label\n        *ngIf=\"showLabel\"\n        [label]=\"labelText\"\n        [offset]=\"labelOffset\"\n        [orient]=\"yOrient\"\n        [height]=\"dims.height\"\n        [width]=\"dims.width\"\n      ></svg:g>\n    </svg:g>\n  `,\n                changeDetection: ChangeDetectionStrategy.OnPush\n            }]\n    }], function () { return []; }, { showGridLines: [{\n            type: Input\n        }], yOrient: [{\n            type: Input\n        }], yAxisOffset: [{\n            type: Input\n        }], dimensionsChanged: [{\n            type: Output\n        }], yScale: [{\n            type: Input\n        }], dims: [{\n            type: Input\n        }], trimTicks: [{\n            type: Input\n        }], maxTickLength: [{\n            type: Input\n        }], tickFormatting: [{\n            type: Input\n        }], ticks: [{\n            type: Input\n        }], showLabel: [{\n            type: Input\n        }], labelText: [{\n            type: Input\n        }], yAxisTickInterval: [{\n            type: Input\n        }], yAxisTickCount: [{\n            type: Input\n        }], referenceLines: [{\n            type: Input\n        }], showRefLines: [{\n            type: Input\n        }], showRefLabels: [{\n            type: Input\n        }], ticksComponent: [{\n            type: ViewChild,\n            args: [YAxisTicksComponent]\n        }] }); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(AxesModule, { declarations: function () { return [AxisLabelComponent, XAxisComponent, XAxisTicksComponent, YAxisComponent, YAxisTicksComponent]; }, imports: function () { return [CommonModule]; }, exports: function () { return [AxisLabelComponent, XAxisComponent, XAxisTicksComponent, YAxisComponent, YAxisTicksComponent]; } }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(AxesModule, [{\n        type: NgModule,\n        args: [{\n                imports: [CommonModule],\n                declarations: [AxisLabelComponent, XAxisComponent, XAxisTicksComponent, YAxisComponent, YAxisTicksComponent],\n                exports: [AxisLabelComponent, XAxisComponent, XAxisTicksComponent, YAxisComponent, YAxisTicksComponent]\n            }]\n    }], null, null); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(TooltipDirective, [{\n        type: Directive,\n        args: [{ selector: '[ngx-tooltip]' }]\n    }], function () { return [{ type: TooltipService }, { type: ɵngcc0.ViewContainerRef }, { type: ɵngcc0.Renderer2 }]; }, { tooltipCssClass: [{\n            type: Input\n        }], tooltipTitle: [{\n            type: Input\n        }], tooltipAppendToBody: [{\n            type: Input\n        }], tooltipSpacing: [{\n            type: Input\n        }], tooltipDisabled: [{\n            type: Input\n        }], tooltipShowCaret: [{\n            type: Input\n        }], tooltipPlacement: [{\n            type: Input\n        }], tooltipAlignment: [{\n            type: Input\n        }], tooltipType: [{\n            type: Input\n        }], tooltipCloseOnClickOutside: [{\n            type: Input\n        }], tooltipCloseOnMouseLeave: [{\n            type: Input\n        }], tooltipHideTimeout: [{\n            type: Input\n        }], tooltipShowTimeout: [{\n            type: Input\n        }], tooltipShowEvent: [{\n            type: Input\n        }], tooltipImmediateExit: [{\n            type: Input\n        }], show: [{\n            type: Output\n        }], hide: [{\n            type: Output\n        }], onFocus: [{\n            type: HostListener,\n            args: ['focusin']\n        }], onBlur: [{\n            type: HostListener,\n            args: ['blur']\n        }], onMouseEnter: [{\n            type: HostListener,\n            args: ['mouseenter']\n        }], onMouseLeave: [{\n            type: HostListener,\n            args: ['mouseleave', ['$event.target']]\n        }], onMouseClick: [{\n            type: HostListener,\n            args: ['click']\n        }], tooltipTemplate: [{\n            type: Input\n        }], tooltipContext: [{\n            type: Input\n        }] }); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(TooltipModule, { declarations: function () { return [TooltipContentComponent, TooltipDirective]; }, imports: function () { return [CommonModule]; }, exports: function () { return [TooltipContentComponent, TooltipDirective]; } }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(TooltipModule, [{\n        type: NgModule,\n        args: [{\n                declarations: [TooltipContentComponent, TooltipDirective],\n                providers: [InjectionService, TooltipService],\n                exports: [TooltipContentComponent, TooltipDirective],\n                imports: [CommonModule],\n                entryComponents: [TooltipContentComponent]\n            }]\n    }], null, null); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(CircleSeriesComponent, [{\n        type: Component,\n        args: [{\n                selector: 'g[ngx-charts-circle-series]',\n                template: `\n    <svg:g *ngIf=\"circle\">\n      <defs>\n        <svg:g\n          ngx-charts-svg-linear-gradient\n          orientation=\"vertical\"\n          [name]=\"gradientId\"\n          [stops]=\"circle.gradientStops\"\n        />\n      </defs>\n      <svg:rect\n        *ngIf=\"barVisible && type === 'standard'\"\n        [@animationState]=\"'active'\"\n        [attr.x]=\"circle.cx - circle.radius\"\n        [attr.y]=\"circle.cy\"\n        [attr.width]=\"circle.radius * 2\"\n        [attr.height]=\"circle.height\"\n        [attr.fill]=\"gradientFill\"\n        class=\"tooltip-bar\"\n      />\n      <svg:g\n        ngx-charts-circle\n        class=\"circle\"\n        [cx]=\"circle.cx\"\n        [cy]=\"circle.cy\"\n        [r]=\"circle.radius\"\n        [fill]=\"circle.color\"\n        [class.active]=\"isActive({ name: circle.seriesName })\"\n        [pointerEvents]=\"circle.value === 0 ? 'none' : 'all'\"\n        [data]=\"circle.value\"\n        [classNames]=\"circle.classNames\"\n        (select)=\"onClick(circle.data)\"\n        (activate)=\"activateCircle()\"\n        (deactivate)=\"deactivateCircle()\"\n        ngx-tooltip\n        [tooltipDisabled]=\"tooltipDisabled\"\n        [tooltipPlacement]=\"'top'\"\n        [tooltipType]=\"'tooltip'\"\n        [tooltipTitle]=\"tooltipTemplate ? undefined : getTooltipText(circle)\"\n        [tooltipTemplate]=\"tooltipTemplate\"\n        [tooltipContext]=\"circle.data\"\n      />\n    </svg:g>\n  `,\n                changeDetection: ChangeDetectionStrategy.OnPush,\n                animations: [\n                    trigger('animationState', [\n                        transition(':enter', [\n                            style({\n                                opacity: 0\n                            }),\n                            animate(250, style({ opacity: 1 }))\n                        ])\n                    ])\n                ]\n            }]\n    }], function () { return []; }, { type: [{\n            type: Input\n        }], tooltipDisabled: [{\n            type: Input\n        }], select: [{\n            type: Output\n        }], activate: [{\n            type: Output\n        }], deactivate: [{\n            type: Output\n        }], data: [{\n            type: Input\n        }], xScale: [{\n            type: Input\n        }], yScale: [{\n            type: Input\n        }], colors: [{\n            type: Input\n        }], scaleType: [{\n            type: Input\n        }], visibleValue: [{\n            type: Input\n        }], activeEntries: [{\n            type: Input\n        }], tooltipTemplate: [{\n            type: Input\n        }] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(CircleComponent, [{\n        type: Component,\n        args: [{\n                selector: 'g[ngx-charts-circle]',\n                template: `\n    <svg:circle\n      [attr.cx]=\"cx\"\n      [attr.cy]=\"cy\"\n      [attr.r]=\"r\"\n      [attr.fill]=\"fill\"\n      [attr.stroke]=\"stroke\"\n      [attr.opacity]=\"circleOpacity\"\n      [attr.class]=\"classNames\"\n      [attr.pointer-events]=\"pointerEvents\"\n    />\n  `,\n                changeDetection: ChangeDetectionStrategy.OnPush\n            }]\n    }], function () { return []; }, { select: [{\n            type: Output\n        }], activate: [{\n            type: Output\n        }], deactivate: [{\n            type: Output\n        }], onClick: [{\n            type: HostListener,\n            args: ['click']\n        }], onMouseEnter: [{\n            type: HostListener,\n            args: ['mouseenter']\n        }], onMouseLeave: [{\n            type: HostListener,\n            args: ['mouseleave']\n        }], classNames: [{\n            type: Input\n        }], cx: [{\n            type: Input\n        }], cy: [{\n            type: Input\n        }], r: [{\n            type: Input\n        }], fill: [{\n            type: Input\n        }], stroke: [{\n            type: Input\n        }], data: [{\n            type: Input\n        }], circleOpacity: [{\n            type: Input\n        }], pointerEvents: [{\n            type: Input\n        }] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(GridPanelComponent, [{\n        type: Component,\n        args: [{\n                selector: 'g[ngx-charts-grid-panel]',\n                template: `\n    <svg:rect [attr.height]=\"height\" [attr.width]=\"width\" [attr.x]=\"x\" [attr.y]=\"y\" stroke=\"none\" class=\"gridpanel\" />\n  `,\n                changeDetection: ChangeDetectionStrategy.OnPush\n            }]\n    }], null, { path: [{\n            type: Input\n        }], width: [{\n            type: Input\n        }], height: [{\n            type: Input\n        }], x: [{\n            type: Input\n        }], y: [{\n            type: Input\n        }] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(GridPanelSeriesComponent, [{\n        type: Component,\n        args: [{\n                selector: 'g[ngx-charts-grid-panel-series]',\n                template: `\n    <svg:g\n      ngx-charts-grid-panel\n      *ngFor=\"let gridPanel of gridPanels\"\n      [height]=\"gridPanel.height\"\n      [width]=\"gridPanel.width\"\n      [x]=\"gridPanel.x\"\n      [y]=\"gridPanel.y\"\n      [class.grid-panel]=\"true\"\n      [class.odd]=\"gridPanel.class === 'odd'\"\n      [class.even]=\"gridPanel.class === 'even'\"\n    ></svg:g>\n  `,\n                changeDetection: ChangeDetectionStrategy.OnPush\n            }]\n    }], null, { data: [{\n            type: Input\n        }], dims: [{\n            type: Input\n        }], xScale: [{\n            type: Input\n        }], yScale: [{\n            type: Input\n        }], orient: [{\n            type: Input\n        }] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(SvgLinearGradientComponent, [{\n        type: Component,\n        args: [{\n                selector: 'g[ngx-charts-svg-linear-gradient]',\n                template: `\n    <svg:linearGradient [id]=\"name\" [attr.x1]=\"x1\" [attr.y1]=\"y1\" [attr.x2]=\"x2\" [attr.y2]=\"y2\">\n      <svg:stop\n        *ngFor=\"let stop of stops\"\n        [attr.offset]=\"stop.offset + '%'\"\n        [style.stop-color]=\"stop.color\"\n        [style.stop-opacity]=\"stop.opacity\"\n      />\n    </svg:linearGradient>\n  `,\n                changeDetection: ChangeDetectionStrategy.OnPush\n            }]\n    }], function () { return []; }, { orientation: [{\n            type: Input\n        }], name: [{\n            type: Input\n        }], stops: [{\n            type: Input\n        }] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(SvgRadialGradientComponent, [{\n        type: Component,\n        args: [{\n                selector: 'g[ngx-charts-svg-radial-gradient]',\n                template: `\n    <svg:radialGradient [id]=\"name\" [attr.cx]=\"cx\" [attr.cy]=\"cy\" [attr.r]=\"r\" gradientUnits=\"userSpaceOnUse\">\n      <svg:stop\n        *ngFor=\"let stop of stops\"\n        [attr.offset]=\"stop.offset + '%'\"\n        [style.stop-color]=\"stop.color\"\n        [style.stop-opacity]=\"stop.opacity\"\n      />\n    </svg:radialGradient>\n  `,\n                changeDetection: ChangeDetectionStrategy.OnPush\n            }]\n    }], function () { return []; }, { endOpacity: [{\n            type: Input\n        }], cx: [{\n            type: Input\n        }], cy: [{\n            type: Input\n        }], stops: [{\n            type: Input\n        }], color: [{\n            type: Input\n        }], name: [{\n            type: Input\n        }], startOpacity: [{\n            type: Input\n        }] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(AreaComponent, [{\n        type: Component,\n        args: [{\n                selector: 'g[ngx-charts-area]',\n                template: `\n    <svg:defs *ngIf=\"gradient\">\n      <svg:g ngx-charts-svg-linear-gradient orientation=\"vertical\" [name]=\"gradientId\" [stops]=\"gradientStops\" />\n    </svg:defs>\n    <svg:path class=\"area\" [attr.d]=\"areaPath\" [attr.fill]=\"gradient ? gradientFill : fill\" [style.opacity]=\"opacity\" />\n  `,\n                changeDetection: ChangeDetectionStrategy.OnPush\n            }]\n    }], function () { return [{ type: ɵngcc0.ElementRef }]; }, { opacity: [{\n            type: Input\n        }], startOpacity: [{\n            type: Input\n        }], endOpacity: [{\n            type: Input\n        }], gradient: [{\n            type: Input\n        }], animations: [{\n            type: Input\n        }], select: [{\n            type: Output\n        }], data: [{\n            type: Input\n        }], path: [{\n            type: Input\n        }], startingPath: [{\n            type: Input\n        }], fill: [{\n            type: Input\n        }], activeLabel: [{\n            type: Input\n        }], stops: [{\n            type: Input\n        }] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(CountUpDirective, [{\n        type: Component,\n        args: [{\n                selector: '[ngx-charts-count-up]',\n                template: `\n    {{ value }}\n  `\n            }]\n    }], function () { return [{ type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.ElementRef }]; }, { countDuration: [{\n            type: Input\n        }], countPrefix: [{\n            type: Input\n        }], countSuffix: [{\n            type: Input\n        }], countChange: [{\n            type: Output\n        }], countFinish: [{\n            type: Output\n        }], countDecimals: [{\n            type: Input\n        }], countTo: [{\n            type: Input\n        }], countFrom: [{\n            type: Input\n        }], valueFormatting: [{\n            type: Input\n        }] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(TooltipArea, [{\n        type: Component,\n        args: [{\n                selector: 'g[ngx-charts-tooltip-area]',\n                template: `\n    <svg:g>\n      <svg:rect\n        class=\"tooltip-area\"\n        [attr.x]=\"0\"\n        y=\"0\"\n        [attr.width]=\"dims.width\"\n        [attr.height]=\"dims.height\"\n        style=\"opacity: 0; cursor: 'auto';\"\n        (mousemove)=\"mouseMove($event)\"\n        (mouseleave)=\"hideTooltip()\"\n      />\n      <ng-template #defaultTooltipTemplate let-model=\"model\">\n        <xhtml:div class=\"area-tooltip-container\">\n          <xhtml:div *ngFor=\"let tooltipItem of model\" class=\"tooltip-item\">\n            <xhtml:span class=\"tooltip-item-color\" [style.background-color]=\"tooltipItem.color\"></xhtml:span>\n            {{ getToolTipText(tooltipItem) }}\n          </xhtml:div>\n        </xhtml:div>\n      </ng-template>\n      <svg:rect\n        #tooltipAnchor\n        [@animationState]=\"anchorOpacity !== 0 ? 'active' : 'inactive'\"\n        class=\"tooltip-anchor\"\n        [attr.x]=\"anchorPos\"\n        y=\"0\"\n        [attr.width]=\"1\"\n        [attr.height]=\"dims.height\"\n        [style.opacity]=\"anchorOpacity\"\n        [style.pointer-events]=\"'none'\"\n        ngx-tooltip\n        [tooltipDisabled]=\"tooltipDisabled\"\n        [tooltipPlacement]=\"'right'\"\n        [tooltipType]=\"'tooltip'\"\n        [tooltipSpacing]=\"15\"\n        [tooltipTemplate]=\"tooltipTemplate ? tooltipTemplate : defaultTooltipTemplate\"\n        [tooltipContext]=\"anchorValues\"\n        [tooltipImmediateExit]=\"true\"\n      />\n    </svg:g>\n  `,\n                changeDetection: ChangeDetectionStrategy.OnPush,\n                animations: [\n                    trigger('animationState', [\n                        transition('inactive => active', [\n                            style({\n                                opacity: 0\n                            }),\n                            animate(250, style({ opacity: 0.7 }))\n                        ]),\n                        transition('active => inactive', [\n                            style({\n                                opacity: 0.7\n                            }),\n                            animate(250, style({ opacity: 0 }))\n                        ])\n                    ])\n                ]\n            }]\n    }], function () { return []; }, { showPercentage: [{\n            type: Input\n        }], tooltipDisabled: [{\n            type: Input\n        }], hover: [{\n            type: Output\n        }], dims: [{\n            type: Input\n        }], xSet: [{\n            type: Input\n        }], xScale: [{\n            type: Input\n        }], yScale: [{\n            type: Input\n        }], results: [{\n            type: Input\n        }], colors: [{\n            type: Input\n        }], tooltipTemplate: [{\n            type: Input\n        }], tooltipAnchor: [{\n            type: ViewChild,\n            args: ['tooltipAnchor', { static: false }]\n        }] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(Timeline, [{\n        type: Component,\n        args: [{\n                selector: 'g[ngx-charts-timeline]',\n                template: `\n    <svg:g class=\"timeline\" [attr.transform]=\"transform\">\n      <svg:filter [attr.id]=\"filterId\">\n        <svg:feColorMatrix\n          in=\"SourceGraphic\"\n          type=\"matrix\"\n          values=\"0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\"\n        />\n      </svg:filter>\n      <svg:g class=\"embedded-chart\">\n        <ng-content></ng-content>\n      </svg:g>\n      <svg:rect x=\"0\" [attr.width]=\"view[0]\" y=\"0\" [attr.height]=\"height\" class=\"brush-background\" />\n      <svg:g class=\"brush\"></svg:g>\n    </svg:g>\n  `,\n                encapsulation: ViewEncapsulation.None,\n                changeDetection: ChangeDetectionStrategy.OnPush,\n                styles: [\".timeline .brush-background{fill:rgba(0,0,0,.05)}.timeline .brush .selection{fill:rgba(0,0,0,.1);stroke-width:1px;stroke:#888}.timeline .brush .handle{fill-opacity:0}.timeline .embedded-chart{opacity:.6}\"]\n            }]\n    }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.ChangeDetectorRef }]; }, { height: [{\n            type: Input\n        }], select: [{\n            type: Output\n        }], onDomainChange: [{\n            type: Output\n        }], view: [{\n            type: Input\n        }], state: [{\n            type: Input\n        }], results: [{\n            type: Input\n        }], scheme: [{\n            type: Input\n        }], customColors: [{\n            type: Input\n        }], legend: [{\n            type: Input\n        }], miniChart: [{\n            type: Input\n        }], autoScale: [{\n            type: Input\n        }], scaleType: [{\n            type: Input\n        }] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(LegendComponent, [{\n        type: Component,\n        args: [{\n                selector: 'ngx-charts-legend',\n                template: `\n    <div [style.width.px]=\"width\">\n      <header class=\"legend-title\" *ngIf=\"title?.length > 0\">\n        <span class=\"legend-title-text\">{{ title }}</span>\n      </header>\n      <div class=\"legend-wrap\">\n        <ul class=\"legend-labels\" [class.horizontal-legend]=\"horizontal\" [style.max-height.px]=\"height - 45\">\n          <li *ngFor=\"let entry of legendEntries; trackBy: trackBy\" class=\"legend-label\">\n            <ngx-charts-legend-entry\n              [label]=\"entry.label\"\n              [formattedLabel]=\"entry.formattedLabel\"\n              [color]=\"entry.color\"\n              [isActive]=\"isActive(entry)\"\n              (select)=\"labelClick.emit($event)\"\n              (activate)=\"activate($event)\"\n              (deactivate)=\"deactivate($event)\"\n            >\n            </ngx-charts-legend-entry>\n          </li>\n        </ul>\n      </div>\n    </div>\n  `,\n                encapsulation: ViewEncapsulation.None,\n                changeDetection: ChangeDetectionStrategy.OnPush,\n                styles: [\".chart-legend{display:inline-block;padding:0;width:auto!important}.chart-legend .legend-title{white-space:nowrap;overflow:hidden;margin-left:10px;margin-bottom:5px;font-size:14px;font-weight:700}.chart-legend li,.chart-legend ul{padding:0;margin:0;list-style:none}.chart-legend .horizontal-legend li{display:inline-block}.chart-legend .legend-wrap{width:calc(100% - 10px)}.chart-legend .legend-labels{line-height:85%;list-style:none;text-align:left;float:left;width:100%;border-radius:3px;overflow-y:auto;overflow-x:hidden;white-space:nowrap;background:rgba(0,0,0,.05)}.chart-legend .legend-label{cursor:pointer;font-size:90%;margin:8px;color:#afb7c8}.chart-legend .legend-label:hover{color:#000;-webkit-transition:.2s;transition:.2s}.chart-legend .legend-label .active .legend-label-text{color:#000}.chart-legend .legend-label-color{display:inline-block;height:15px;width:15px;margin-right:5px;color:#5b646b;border-radius:3px}.chart-legend .legend-label-text{display:inline-block;vertical-align:top;line-height:15px;font-size:12px;width:calc(100% - 20px);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.chart-legend .legend-title-text{vertical-align:bottom;display:inline-block;line-height:16px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}\"]\n            }]\n    }], function () { return [{ type: ɵngcc0.ChangeDetectorRef }]; }, { horizontal: [{\n            type: Input\n        }], labelClick: [{\n            type: Output\n        }], labelActivate: [{\n            type: Output\n        }], labelDeactivate: [{\n            type: Output\n        }], data: [{\n            type: Input\n        }], title: [{\n            type: Input\n        }], colors: [{\n            type: Input\n        }], height: [{\n            type: Input\n        }], width: [{\n            type: Input\n        }], activeEntries: [{\n            type: Input\n        }] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(LegendEntryComponent, [{\n        type: Component,\n        args: [{\n                selector: 'ngx-charts-legend-entry',\n                template: `\n    <span [title]=\"formattedLabel\" tabindex=\"-1\" [class.active]=\"isActive\" (click)=\"select.emit(formattedLabel)\">\n      <span class=\"legend-label-color\" [style.background-color]=\"color\" (click)=\"toggle.emit(formattedLabel)\"> </span>\n      <span class=\"legend-label-text\">\n        {{ trimmedLabel }}\n      </span>\n    </span>\n  `,\n                changeDetection: ChangeDetectionStrategy.OnPush\n            }]\n    }], function () { return []; }, { isActive: [{\n            type: Input\n        }], select: [{\n            type: Output\n        }], activate: [{\n            type: Output\n        }], deactivate: [{\n            type: Output\n        }], toggle: [{\n            type: Output\n        }], onMouseEnter: [{\n            type: HostListener,\n            args: ['mouseenter']\n        }], onMouseLeave: [{\n            type: HostListener,\n            args: ['mouseleave']\n        }], color: [{\n            type: Input\n        }], label: [{\n            type: Input\n        }], formattedLabel: [{\n            type: Input\n        }] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(ScaleLegendComponent, [{\n        type: Component,\n        args: [{\n                selector: 'ngx-charts-scale-legend',\n                template: `\n    <div\n      class=\"scale-legend\"\n      [class.horizontal-legend]=\"horizontal\"\n      [style.height.px]=\"horizontal ? undefined : height\"\n      [style.width.px]=\"width\"\n    >\n      <div class=\"scale-legend-label\">\n        <span>{{ valueRange[1].toLocaleString() }}</span>\n      </div>\n      <div class=\"scale-legend-wrap\" [style.background]=\"gradient\"></div>\n      <div class=\"scale-legend-label\">\n        <span>{{ valueRange[0].toLocaleString() }}</span>\n      </div>\n    </div>\n  `,\n                encapsulation: ViewEncapsulation.None,\n                changeDetection: ChangeDetectionStrategy.OnPush,\n                styles: [\".chart-legend{display:inline-block;padding:0;width:auto!important}.chart-legend .scale-legend{text-align:center;display:-webkit-box;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column}.chart-legend .scale-legend-wrap{display:inline-block;-webkit-box-flex:1;flex:1;width:30px;border-radius:5px;margin:0 auto}.chart-legend .scale-legend-label{font-size:12px}.chart-legend .horizontal-legend.scale-legend{-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-direction:row}.chart-legend .horizontal-legend .scale-legend-wrap{width:auto;height:30px;margin:0 16px}\"]\n            }]\n    }], function () { return [{ type: ɵngcc2.DomSanitizer }]; }, { horizontal: [{\n            type: Input\n        }], valueRange: [{\n            type: Input\n        }], colors: [{\n            type: Input\n        }], height: [{\n            type: Input\n        }], width: [{\n            type: Input\n        }] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(AdvancedLegendComponent, [{\n        type: Component,\n        args: [{\n                selector: 'ngx-charts-advanced-legend',\n                template: `\n    <div class=\"advanced-pie-legend\" [style.width.px]=\"width\">\n      <div\n        *ngIf=\"animations\"\n        class=\"total-value\"\n        ngx-charts-count-up\n        [countTo]=\"roundedTotal\"\n        [valueFormatting]=\"valueFormatting\"\n      ></div>\n      <div class=\"total-value\" *ngIf=\"!animations\">\n        {{ valueFormatting ? valueFormatting(roundedTotal) : defaultValueFormatting(roundedTotal) }}\n      </div>\n      <div class=\"total-label\">\n        {{ label }}\n      </div>\n      <div class=\"legend-items-container\">\n        <div class=\"legend-items\">\n          <div\n            *ngFor=\"let legendItem of legendItems; trackBy: trackBy\"\n            tabindex=\"-1\"\n            class=\"legend-item\"\n            (mouseenter)=\"activate.emit(legendItem.data)\"\n            (mouseleave)=\"deactivate.emit(legendItem.data)\"\n            (click)=\"select.emit(legendItem.data)\"\n          >\n            <div class=\"item-color\" [style.border-left-color]=\"legendItem.color\"></div>\n            <div\n              *ngIf=\"animations\"\n              class=\"item-value\"\n              ngx-charts-count-up\n              [countTo]=\"legendItem._value\"\n              [valueFormatting]=\"valueFormatting\"\n            ></div>\n            <div *ngIf=\"!animations\" class=\"item-value\">\n              {{ valueFormatting ? valueFormatting(legendItem.value) : defaultValueFormatting(legendItem.value) }}\n            </div>\n            <div class=\"item-label\">{{ legendItem.displayLabel }}</div>\n            <div\n              *ngIf=\"animations\"\n              class=\"item-percent\"\n              ngx-charts-count-up\n              [countTo]=\"legendItem.percentage\"\n              [countSuffix]=\"'%'\"\n            ></div>\n            <div *ngIf=\"!animations\" class=\"item-percent\">{{ legendItem.percentage.toLocaleString() }}%</div>\n          </div>\n        </div>\n      </div>\n    </div>\n  `,\n                encapsulation: ViewEncapsulation.None,\n                changeDetection: ChangeDetectionStrategy.OnPush,\n                styles: [\".advanced-pie-legend{float:left;position:relative;top:50%;-webkit-transform:translate(0,-50%);transform:translate(0,-50%)}.advanced-pie-legend .total-value{font-size:36px}.advanced-pie-legend .total-label{font-size:24px;margin-bottom:19px}.advanced-pie-legend .legend-items-container{width:100%}.advanced-pie-legend .legend-items-container .legend-items{white-space:nowrap;overflow:auto}.advanced-pie-legend .legend-items-container .legend-items .legend-item{margin-right:20px;display:inline-block;cursor:pointer}.advanced-pie-legend .legend-items-container .legend-items .legend-item:focus{outline:0}.advanced-pie-legend .legend-items-container .legend-items .legend-item:hover{color:#000;-webkit-transition:.2s;transition:.2s}.advanced-pie-legend .legend-items-container .legend-items .legend-item .item-value{font-size:24px;margin-top:-6px;margin-left:11px}.advanced-pie-legend .legend-items-container .legend-items .legend-item .item-label{font-size:14px;opacity:.7;margin-left:11px;margin-top:-6px}.advanced-pie-legend .legend-items-container .legend-items .legend-item .item-percent{font-size:24px;opacity:.7;margin-left:11px}.advanced-pie-legend .legend-items-container .legend-items .legend-item .item-color{border-left:4px solid;width:4px;height:42px;float:left;margin-right:7px}\"]\n            }]\n    }], function () { return []; }, { label: [{\n            type: Input\n        }], animations: [{\n            type: Input\n        }], select: [{\n            type: Output\n        }], activate: [{\n            type: Output\n        }], deactivate: [{\n            type: Output\n        }], labelFormatting: [{\n            type: Input\n        }], percentageFormatting: [{\n            type: Input\n        }], width: [{\n            type: Input\n        }], data: [{\n            type: Input\n        }], colors: [{\n            type: Input\n        }], valueFormatting: [{\n            type: Input\n        }] }); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(ChartCommonModule, { declarations: function () { return [AreaComponent, BaseChartComponent, CountUpDirective, TooltipArea, ChartComponent, LegendComponent, LegendEntryComponent, ScaleLegendComponent, CircleComponent, CircleSeriesComponent, GridPanelComponent, GridPanelSeriesComponent, SvgLinearGradientComponent, SvgRadialGradientComponent, Timeline, AdvancedLegendComponent, VisibilityObserver]; }, imports: function () { return [CommonModule, AxesModule, TooltipModule]; }, exports: function () { return [CommonModule, AxesModule, TooltipModule, AreaComponent, BaseChartComponent, CountUpDirective, TooltipArea, ChartComponent, LegendComponent, LegendEntryComponent, ScaleLegendComponent, CircleComponent, CircleSeriesComponent, GridPanelComponent, GridPanelSeriesComponent, SvgLinearGradientComponent, SvgRadialGradientComponent, Timeline, AdvancedLegendComponent, VisibilityObserver]; } }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(ChartCommonModule, [{\n        type: NgModule,\n        args: [{\n                imports: [CommonModule, AxesModule, TooltipModule],\n                declarations: [...COMPONENTS, VisibilityObserver],\n                exports: [CommonModule, AxesModule, TooltipModule, ...COMPONENTS, VisibilityObserver]\n            }]\n    }], null, null); })();\nconst ɵAreaChartComponent_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(AreaChartComponent);\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(AreaChartComponent, [{\n        type: Component,\n        args: [{\n                selector: 'ngx-charts-area-chart',\n                template: `\n    <ngx-charts-chart\n      [view]=\"[width, height]\"\n      [showLegend]=\"legend\"\n      [legendOptions]=\"legendOptions\"\n      [activeEntries]=\"activeEntries\"\n      [animations]=\"animations\"\n      (legendLabelClick)=\"onClick($event)\"\n      (legendLabelActivate)=\"onActivate($event)\"\n      (legendLabelDeactivate)=\"onDeactivate($event)\"\n    >\n      <svg:defs>\n        <svg:clipPath [attr.id]=\"clipPathId\">\n          <svg:rect\n            [attr.width]=\"dims.width + 10\"\n            [attr.height]=\"dims.height + 10\"\n            [attr.transform]=\"'translate(-5, -5)'\"\n          />\n        </svg:clipPath>\n      </svg:defs>\n      <svg:g [attr.transform]=\"transform\" class=\"area-chart chart\">\n        <svg:g\n          ngx-charts-x-axis\n          *ngIf=\"xAxis\"\n          [xScale]=\"xScale\"\n          [dims]=\"dims\"\n          [showGridLines]=\"showGridLines\"\n          [showLabel]=\"showXAxisLabel\"\n          [labelText]=\"xAxisLabel\"\n          [trimTicks]=\"trimXAxisTicks\"\n          [rotateTicks]=\"rotateXAxisTicks\"\n          [maxTickLength]=\"maxXAxisTickLength\"\n          [tickFormatting]=\"xAxisTickFormatting\"\n          [ticks]=\"xAxisTicks\"\n          (dimensionsChanged)=\"updateXAxisHeight($event)\"\n        ></svg:g>\n        <svg:g\n          ngx-charts-y-axis\n          *ngIf=\"yAxis\"\n          [yScale]=\"yScale\"\n          [dims]=\"dims\"\n          [showGridLines]=\"showGridLines\"\n          [showLabel]=\"showYAxisLabel\"\n          [labelText]=\"yAxisLabel\"\n          [trimTicks]=\"trimYAxisTicks\"\n          [maxTickLength]=\"maxYAxisTickLength\"\n          [tickFormatting]=\"yAxisTickFormatting\"\n          [ticks]=\"yAxisTicks\"\n          (dimensionsChanged)=\"updateYAxisWidth($event)\"\n        ></svg:g>\n        <svg:g [attr.clip-path]=\"clipPath\">\n          <svg:g *ngFor=\"let series of results; trackBy: trackBy\">\n            <svg:g\n              ngx-charts-area-series\n              [xScale]=\"xScale\"\n              [yScale]=\"yScale\"\n              [baseValue]=\"baseValue\"\n              [colors]=\"colors\"\n              [data]=\"series\"\n              [activeEntries]=\"activeEntries\"\n              [scaleType]=\"scaleType\"\n              [gradient]=\"gradient\"\n              [curve]=\"curve\"\n              [animations]=\"animations\"\n            />\n          </svg:g>\n\n          <svg:g *ngIf=\"!tooltipDisabled\" (mouseleave)=\"hideCircles()\">\n            <svg:g\n              ngx-charts-tooltip-area\n              [dims]=\"dims\"\n              [xSet]=\"xSet\"\n              [xScale]=\"xScale\"\n              [yScale]=\"yScale\"\n              [results]=\"results\"\n              [colors]=\"colors\"\n              [tooltipDisabled]=\"tooltipDisabled\"\n              [tooltipTemplate]=\"seriesTooltipTemplate\"\n              (hover)=\"updateHoveredVertical($event)\"\n            />\n\n            <svg:g *ngFor=\"let series of results\">\n              <svg:g\n                ngx-charts-circle-series\n                [xScale]=\"xScale\"\n                [yScale]=\"yScale\"\n                [colors]=\"colors\"\n                [activeEntries]=\"activeEntries\"\n                [data]=\"series\"\n                [scaleType]=\"scaleType\"\n                [visibleValue]=\"hoveredVertical\"\n                [tooltipDisabled]=\"tooltipDisabled\"\n                [tooltipTemplate]=\"tooltipTemplate\"\n                (select)=\"onClick($event, series)\"\n                (activate)=\"onActivate($event)\"\n                (deactivate)=\"onDeactivate($event)\"\n              />\n            </svg:g>\n          </svg:g>\n        </svg:g>\n      </svg:g>\n      <svg:g\n        ngx-charts-timeline\n        *ngIf=\"timeline && scaleType != 'ordinal'\"\n        [attr.transform]=\"timelineTransform\"\n        [results]=\"results\"\n        [view]=\"[timelineWidth, height]\"\n        [height]=\"timelineHeight\"\n        [scheme]=\"scheme\"\n        [customColors]=\"customColors\"\n        [legend]=\"legend\"\n        [scaleType]=\"scaleType\"\n        (onDomainChange)=\"updateDomain($event)\"\n      >\n        <svg:g *ngFor=\"let series of results; trackBy: trackBy\">\n          <svg:g\n            ngx-charts-area-series\n            [xScale]=\"timelineXScale\"\n            [yScale]=\"timelineYScale\"\n            [baseValue]=\"baseValue\"\n            [colors]=\"colors\"\n            [data]=\"series\"\n            [scaleType]=\"scaleType\"\n            [gradient]=\"gradient\"\n            [curve]=\"curve\"\n            [animations]=\"animations\"\n          />\n        </svg:g>\n      </svg:g>\n    </ngx-charts-chart>\n  `,\n                changeDetection: ChangeDetectionStrategy.OnPush,\n                encapsulation: ViewEncapsulation.None,\n                styles: [\".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:0}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:0}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\"]\n            }]\n    }], null, { legendTitle: [{\n            type: Input\n        }], legendPosition: [{\n            type: Input\n        }], baseValue: [{\n            type: Input\n        }], showGridLines: [{\n            type: Input\n        }], curve: [{\n            type: Input\n        }], activeEntries: [{\n            type: Input\n        }], trimXAxisTicks: [{\n            type: Input\n        }], trimYAxisTicks: [{\n            type: Input\n        }], rotateXAxisTicks: [{\n            type: Input\n        }], maxXAxisTickLength: [{\n            type: Input\n        }], maxYAxisTickLength: [{\n            type: Input\n        }], roundDomains: [{\n            type: Input\n        }], tooltipDisabled: [{\n            type: Input\n        }], activate: [{\n            type: Output\n        }], deactivate: [{\n            type: Output\n        }], hideCircles: [{\n            type: HostListener,\n            args: ['mouseleave']\n        }], legend: [{\n            type: Input\n        }], state: [{\n            type: Input\n        }], xAxis: [{\n            type: Input\n        }], yAxis: [{\n            type: Input\n        }], autoScale: [{\n            type: Input\n        }], showXAxisLabel: [{\n            type: Input\n        }], showYAxisLabel: [{\n            type: Input\n        }], xAxisLabel: [{\n            type: Input\n        }], yAxisLabel: [{\n            type: Input\n        }], timeline: [{\n            type: Input\n        }], gradient: [{\n            type: Input\n        }], schemeType: [{\n            type: Input\n        }], xAxisTickFormatting: [{\n            type: Input\n        }], yAxisTickFormatting: [{\n            type: Input\n        }], xAxisTicks: [{\n            type: Input\n        }], yAxisTicks: [{\n            type: Input\n        }], xScaleMin: [{\n            type: Input\n        }], xScaleMax: [{\n            type: Input\n        }], yScaleMin: [{\n            type: Input\n        }], yScaleMax: [{\n            type: Input\n        }], tooltipTemplate: [{\n            type: ContentChild,\n            args: ['tooltipTemplate']\n        }], seriesTooltipTemplate: [{\n            type: ContentChild,\n            args: ['seriesTooltipTemplate']\n        }] }); })();\nconst ɵAreaChartNormalizedComponent_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(AreaChartNormalizedComponent);\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(AreaChartNormalizedComponent, [{\n        type: Component,\n        args: [{\n                selector: 'ngx-charts-area-chart-normalized',\n                template: `\n    <ngx-charts-chart\n      [view]=\"[width, height]\"\n      [showLegend]=\"legend\"\n      [legendOptions]=\"legendOptions\"\n      [activeEntries]=\"activeEntries\"\n      [animations]=\"animations\"\n      (legendLabelClick)=\"onClick($event)\"\n      (legendLabelActivate)=\"onActivate($event)\"\n      (legendLabelDeactivate)=\"onDeactivate($event)\"\n    >\n      <svg:defs>\n        <svg:clipPath [attr.id]=\"clipPathId\">\n          <svg:rect\n            [attr.width]=\"dims.width + 10\"\n            [attr.height]=\"dims.height + 10\"\n            [attr.transform]=\"'translate(-5, -5)'\"\n          />\n        </svg:clipPath>\n      </svg:defs>\n      <svg:g [attr.transform]=\"transform\" class=\"area-chart chart\">\n        <svg:g\n          ngx-charts-x-axis\n          *ngIf=\"xAxis\"\n          [xScale]=\"xScale\"\n          [dims]=\"dims\"\n          [showGridLines]=\"showGridLines\"\n          [showLabel]=\"showXAxisLabel\"\n          [labelText]=\"xAxisLabel\"\n          [trimTicks]=\"trimXAxisTicks\"\n          [rotateTicks]=\"rotateXAxisTicks\"\n          [maxTickLength]=\"maxXAxisTickLength\"\n          [tickFormatting]=\"xAxisTickFormatting\"\n          [ticks]=\"xAxisTicks\"\n          (dimensionsChanged)=\"updateXAxisHeight($event)\"\n        ></svg:g>\n        <svg:g\n          ngx-charts-y-axis\n          *ngIf=\"yAxis\"\n          [yScale]=\"yScale\"\n          [dims]=\"dims\"\n          [showGridLines]=\"showGridLines\"\n          [showLabel]=\"showYAxisLabel\"\n          [labelText]=\"yAxisLabel\"\n          [trimTicks]=\"trimYAxisTicks\"\n          [maxTickLength]=\"maxYAxisTickLength\"\n          [tickFormatting]=\"yAxisTickFormatting\"\n          [ticks]=\"yAxisTicks\"\n          (dimensionsChanged)=\"updateYAxisWidth($event)\"\n        ></svg:g>\n        <svg:g [attr.clip-path]=\"clipPath\">\n          <svg:g *ngFor=\"let series of results; trackBy: trackBy\">\n            <svg:g\n              ngx-charts-area-series\n              [xScale]=\"xScale\"\n              [yScale]=\"yScale\"\n              [colors]=\"colors\"\n              [data]=\"series\"\n              [scaleType]=\"scaleType\"\n              [activeEntries]=\"activeEntries\"\n              [gradient]=\"gradient\"\n              normalized=\"true\"\n              [curve]=\"curve\"\n              [animations]=\"animations\"\n            />\n          </svg:g>\n\n          <svg:g *ngIf=\"!tooltipDisabled\" (mouseleave)=\"hideCircles()\">\n            <svg:g\n              ngx-charts-tooltip-area\n              [dims]=\"dims\"\n              [xSet]=\"xSet\"\n              [xScale]=\"xScale\"\n              [yScale]=\"yScale\"\n              [results]=\"results\"\n              [colors]=\"colors\"\n              [showPercentage]=\"true\"\n              [tooltipDisabled]=\"tooltipDisabled\"\n              [tooltipTemplate]=\"seriesTooltipTemplate\"\n              (hover)=\"updateHoveredVertical($event)\"\n            />\n\n            <svg:g *ngFor=\"let series of results\">\n              <svg:g\n                ngx-charts-circle-series\n                type=\"stacked\"\n                [xScale]=\"xScale\"\n                [yScale]=\"yScale\"\n                [colors]=\"colors\"\n                [activeEntries]=\"activeEntries\"\n                [data]=\"series\"\n                [scaleType]=\"scaleType\"\n                [visibleValue]=\"hoveredVertical\"\n                [tooltipDisabled]=\"tooltipDisabled\"\n                [tooltipTemplate]=\"tooltipTemplate\"\n                (select)=\"onClick($event, series)\"\n                (activate)=\"onActivate($event)\"\n                (deactivate)=\"onDeactivate($event)\"\n              />\n            </svg:g>\n          </svg:g>\n        </svg:g>\n      </svg:g>\n      <svg:g\n        ngx-charts-timeline\n        *ngIf=\"timeline && scaleType != 'ordinal'\"\n        [attr.transform]=\"timelineTransform\"\n        [results]=\"results\"\n        [view]=\"[timelineWidth, height]\"\n        [height]=\"timelineHeight\"\n        [scheme]=\"scheme\"\n        [customColors]=\"customColors\"\n        [legend]=\"legend\"\n        [scaleType]=\"scaleType\"\n        (onDomainChange)=\"updateDomain($event)\"\n      >\n        <svg:g *ngFor=\"let series of results; trackBy: trackBy\">\n          <svg:g\n            ngx-charts-area-series\n            [xScale]=\"timelineXScale\"\n            [yScale]=\"timelineYScale\"\n            [colors]=\"colors\"\n            [data]=\"series\"\n            [scaleType]=\"scaleType\"\n            [gradient]=\"gradient\"\n            normalized=\"true\"\n            [curve]=\"curve\"\n            [animations]=\"animations\"\n          />\n        </svg:g>\n      </svg:g>\n    </ngx-charts-chart>\n  `,\n                changeDetection: ChangeDetectionStrategy.OnPush,\n                encapsulation: ViewEncapsulation.None,\n                styles: [\".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:0}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:0}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\"]\n            }]\n    }], null, { legend: [{\n            type: Input\n        }], legendTitle: [{\n            type: Input\n        }], legendPosition: [{\n            type: Input\n        }], showGridLines: [{\n            type: Input\n        }], curve: [{\n            type: Input\n        }], activeEntries: [{\n            type: Input\n        }], trimXAxisTicks: [{\n            type: Input\n        }], trimYAxisTicks: [{\n            type: Input\n        }], rotateXAxisTicks: [{\n            type: Input\n        }], maxXAxisTickLength: [{\n            type: Input\n        }], maxYAxisTickLength: [{\n            type: Input\n        }], roundDomains: [{\n            type: Input\n        }], tooltipDisabled: [{\n            type: Input\n        }], activate: [{\n            type: Output\n        }], deactivate: [{\n            type: Output\n        }], hideCircles: [{\n            type: HostListener,\n            args: ['mouseleave']\n        }], xAxis: [{\n            type: Input\n        }], yAxis: [{\n            type: Input\n        }], showXAxisLabel: [{\n            type: Input\n        }], showYAxisLabel: [{\n            type: Input\n        }], xAxisLabel: [{\n            type: Input\n        }], yAxisLabel: [{\n            type: Input\n        }], timeline: [{\n            type: Input\n        }], gradient: [{\n            type: Input\n        }], schemeType: [{\n            type: Input\n        }], xAxisTickFormatting: [{\n            type: Input\n        }], yAxisTickFormatting: [{\n            type: Input\n        }], xAxisTicks: [{\n            type: Input\n        }], yAxisTicks: [{\n            type: Input\n        }], tooltipTemplate: [{\n            type: ContentChild,\n            args: ['tooltipTemplate']\n        }], seriesTooltipTemplate: [{\n            type: ContentChild,\n            args: ['seriesTooltipTemplate']\n        }] }); })();\nconst ɵAreaChartStackedComponent_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(AreaChartStackedComponent);\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(AreaChartStackedComponent, [{\n        type: Component,\n        args: [{\n                selector: 'ngx-charts-area-chart-stacked',\n                template: `\n    <ngx-charts-chart\n      [view]=\"[width, height]\"\n      [showLegend]=\"legend\"\n      [legendOptions]=\"legendOptions\"\n      [activeEntries]=\"activeEntries\"\n      [animations]=\"animations\"\n      (legendLabelClick)=\"onClick($event)\"\n      (legendLabelActivate)=\"onActivate($event)\"\n      (legendLabelDeactivate)=\"onDeactivate($event)\"\n    >\n      <svg:defs>\n        <svg:clipPath [attr.id]=\"clipPathId\">\n          <svg:rect\n            [attr.width]=\"dims.width + 10\"\n            [attr.height]=\"dims.height + 10\"\n            [attr.transform]=\"'translate(-5, -5)'\"\n          />\n        </svg:clipPath>\n      </svg:defs>\n      <svg:g [attr.transform]=\"transform\" class=\"area-chart chart\">\n        <svg:g\n          ngx-charts-x-axis\n          *ngIf=\"xAxis\"\n          [xScale]=\"xScale\"\n          [dims]=\"dims\"\n          [showGridLines]=\"showGridLines\"\n          [showLabel]=\"showXAxisLabel\"\n          [labelText]=\"xAxisLabel\"\n          [trimTicks]=\"trimXAxisTicks\"\n          [rotateTicks]=\"rotateXAxisTicks\"\n          [maxTickLength]=\"maxXAxisTickLength\"\n          [tickFormatting]=\"xAxisTickFormatting\"\n          [ticks]=\"xAxisTicks\"\n          (dimensionsChanged)=\"updateXAxisHeight($event)\"\n        ></svg:g>\n        <svg:g\n          ngx-charts-y-axis\n          *ngIf=\"yAxis\"\n          [yScale]=\"yScale\"\n          [dims]=\"dims\"\n          [showGridLines]=\"showGridLines\"\n          [showLabel]=\"showYAxisLabel\"\n          [labelText]=\"yAxisLabel\"\n          [trimTicks]=\"trimYAxisTicks\"\n          [maxTickLength]=\"maxYAxisTickLength\"\n          [tickFormatting]=\"yAxisTickFormatting\"\n          [ticks]=\"yAxisTicks\"\n          (dimensionsChanged)=\"updateYAxisWidth($event)\"\n        ></svg:g>\n        <svg:g [attr.clip-path]=\"clipPath\">\n          <svg:g *ngFor=\"let series of results; trackBy: trackBy\">\n            <svg:g\n              ngx-charts-area-series\n              [xScale]=\"xScale\"\n              [yScale]=\"yScale\"\n              [colors]=\"colors\"\n              [data]=\"series\"\n              [scaleType]=\"scaleType\"\n              [gradient]=\"gradient\"\n              [activeEntries]=\"activeEntries\"\n              stacked=\"true\"\n              [curve]=\"curve\"\n              [animations]=\"animations\"\n            />\n          </svg:g>\n\n          <svg:g *ngIf=\"!tooltipDisabled\" (mouseleave)=\"hideCircles()\">\n            <svg:g\n              ngx-charts-tooltip-area\n              [dims]=\"dims\"\n              [xSet]=\"xSet\"\n              [xScale]=\"xScale\"\n              [yScale]=\"yScale\"\n              [results]=\"results\"\n              [colors]=\"colors\"\n              [tooltipDisabled]=\"tooltipDisabled\"\n              [tooltipTemplate]=\"seriesTooltipTemplate\"\n              (hover)=\"updateHoveredVertical($event)\"\n            />\n\n            <svg:g *ngFor=\"let series of results; trackBy: trackBy\">\n              <svg:g\n                ngx-charts-circle-series\n                type=\"stacked\"\n                [xScale]=\"xScale\"\n                [yScale]=\"yScale\"\n                [colors]=\"colors\"\n                [activeEntries]=\"activeEntries\"\n                [data]=\"series\"\n                [scaleType]=\"scaleType\"\n                [visibleValue]=\"hoveredVertical\"\n                [tooltipDisabled]=\"tooltipDisabled\"\n                [tooltipTemplate]=\"tooltipTemplate\"\n                (select)=\"onClick($event, series)\"\n                (activate)=\"onActivate($event)\"\n                (deactivate)=\"onDeactivate($event)\"\n              />\n            </svg:g>\n          </svg:g>\n        </svg:g>\n      </svg:g>\n      <svg:g\n        ngx-charts-timeline\n        *ngIf=\"timeline && scaleType != 'ordinal'\"\n        [attr.transform]=\"timelineTransform\"\n        [results]=\"results\"\n        [view]=\"[timelineWidth, height]\"\n        [height]=\"timelineHeight\"\n        [scheme]=\"scheme\"\n        [customColors]=\"customColors\"\n        [legend]=\"legend\"\n        [scaleType]=\"scaleType\"\n        (onDomainChange)=\"updateDomain($event)\"\n      >\n        <svg:g *ngFor=\"let series of results; trackBy: trackBy\">\n          <svg:g\n            ngx-charts-area-series\n            [xScale]=\"timelineXScale\"\n            [yScale]=\"timelineYScale\"\n            [colors]=\"colors\"\n            [data]=\"series\"\n            [scaleType]=\"scaleType\"\n            [gradient]=\"gradient\"\n            stacked=\"true\"\n            [curve]=\"curve\"\n            [animations]=\"animations\"\n          />\n        </svg:g>\n      </svg:g>\n    </ngx-charts-chart>\n  `,\n                changeDetection: ChangeDetectionStrategy.OnPush,\n                encapsulation: ViewEncapsulation.None,\n                styles: [\".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:0}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:0}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\"]\n            }]\n    }], null, { legend: [{\n            type: Input\n        }], legendTitle: [{\n            type: Input\n        }], legendPosition: [{\n            type: Input\n        }], showGridLines: [{\n            type: Input\n        }], curve: [{\n            type: Input\n        }], activeEntries: [{\n            type: Input\n        }], trimXAxisTicks: [{\n            type: Input\n        }], trimYAxisTicks: [{\n            type: Input\n        }], rotateXAxisTicks: [{\n            type: Input\n        }], maxXAxisTickLength: [{\n            type: Input\n        }], maxYAxisTickLength: [{\n            type: Input\n        }], roundDomains: [{\n            type: Input\n        }], tooltipDisabled: [{\n            type: Input\n        }], activate: [{\n            type: Output\n        }], deactivate: [{\n            type: Output\n        }], hideCircles: [{\n            type: HostListener,\n            args: ['mouseleave']\n        }], xAxis: [{\n            type: Input\n        }], yAxis: [{\n            type: Input\n        }], showXAxisLabel: [{\n            type: Input\n        }], showYAxisLabel: [{\n            type: Input\n        }], xAxisLabel: [{\n            type: Input\n        }], yAxisLabel: [{\n            type: Input\n        }], timeline: [{\n            type: Input\n        }], gradient: [{\n            type: Input\n        }], schemeType: [{\n            type: Input\n        }], xAxisTickFormatting: [{\n            type: Input\n        }], yAxisTickFormatting: [{\n            type: Input\n        }], xAxisTicks: [{\n            type: Input\n        }], yAxisTicks: [{\n            type: Input\n        }], xScaleMin: [{\n            type: Input\n        }], xScaleMax: [{\n            type: Input\n        }], yScaleMin: [{\n            type: Input\n        }], yScaleMax: [{\n            type: Input\n        }], tooltipTemplate: [{\n            type: ContentChild,\n            args: ['tooltipTemplate']\n        }], seriesTooltipTemplate: [{\n            type: ContentChild,\n            args: ['seriesTooltipTemplate']\n        }] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(AreaSeriesComponent, [{\n        type: Component,\n        args: [{\n                selector: 'g[ngx-charts-area-series]',\n                template: `\n    <svg:g\n      ngx-charts-area\n      class=\"area-series\"\n      [data]=\"data\"\n      [path]=\"path\"\n      [fill]=\"colors.getColor(data.name)\"\n      [stops]=\"gradientStops\"\n      [startingPath]=\"startingPath\"\n      [opacity]=\"opacity\"\n      [gradient]=\"gradient || hasGradient\"\n      [animations]=\"animations\"\n      [class.active]=\"isActive(data)\"\n      [class.inactive]=\"isInactive(data)\"\n    />\n  `,\n                changeDetection: ChangeDetectionStrategy.OnPush\n            }]\n    }], function () { return []; }, { baseValue: [{\n            type: Input\n        }], stacked: [{\n            type: Input\n        }], normalized: [{\n            type: Input\n        }], animations: [{\n            type: Input\n        }], select: [{\n            type: Output\n        }], data: [{\n            type: Input\n        }], xScale: [{\n            type: Input\n        }], yScale: [{\n            type: Input\n        }], colors: [{\n            type: Input\n        }], scaleType: [{\n            type: Input\n        }], gradient: [{\n            type: Input\n        }], curve: [{\n            type: Input\n        }], activeEntries: [{\n            type: Input\n        }] }); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(AreaChartModule, { declarations: [AreaChartComponent, AreaChartNormalizedComponent, AreaChartStackedComponent, AreaSeriesComponent], imports: [ChartCommonModule], exports: [AreaChartComponent, AreaChartNormalizedComponent, AreaChartStackedComponent, AreaSeriesComponent] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(AreaChartModule, [{\n        type: NgModule,\n        args: [{\n                imports: [ChartCommonModule],\n                declarations: [AreaChartComponent, AreaChartNormalizedComponent, AreaChartStackedComponent, AreaSeriesComponent],\n                exports: [AreaChartComponent, AreaChartNormalizedComponent, AreaChartStackedComponent, AreaSeriesComponent]\n            }]\n    }], null, null); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(BarComponent, [{\n        type: Component,\n        args: [{\n                selector: 'g[ngx-charts-bar]',\n                template: `\n    <svg:defs *ngIf=\"hasGradient\">\n      <svg:g ngx-charts-svg-linear-gradient [orientation]=\"orientation\" [name]=\"gradientId\" [stops]=\"gradientStops\" />\n    </svg:defs>\n    <svg:path\n      class=\"bar\"\n      stroke=\"none\"\n      role=\"img\"\n      tabIndex=\"-1\"\n      [class.active]=\"isActive\"\n      [class.hidden]=\"hideBar\"\n      [attr.d]=\"path\"\n      [attr.aria-label]=\"ariaLabel\"\n      [attr.fill]=\"hasGradient ? gradientFill : fill\"\n      (click)=\"select.emit(data)\"\n    />\n  `,\n                changeDetection: ChangeDetectionStrategy.OnPush\n            }]\n    }], function () { return [{ type: ɵngcc0.ElementRef }]; }, { roundEdges: [{\n            type: Input\n        }], gradient: [{\n            type: Input\n        }], offset: [{\n            type: Input\n        }], isActive: [{\n            type: Input\n        }], animations: [{\n            type: Input\n        }], noBarWhenZero: [{\n            type: Input\n        }], select: [{\n            type: Output\n        }], activate: [{\n            type: Output\n        }], deactivate: [{\n            type: Output\n        }], onMouseEnter: [{\n            type: HostListener,\n            args: ['mouseenter']\n        }], onMouseLeave: [{\n            type: HostListener,\n            args: ['mouseleave']\n        }], fill: [{\n            type: Input\n        }], data: [{\n            type: Input\n        }], width: [{\n            type: Input\n        }], height: [{\n            type: Input\n        }], x: [{\n            type: Input\n        }], y: [{\n            type: Input\n        }], orientation: [{\n            type: Input\n        }], stops: [{\n            type: Input\n        }], ariaLabel: [{\n            type: Input\n        }] }); })();\nconst ɵBarHorizontalComponent_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(BarHorizontalComponent);\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(BarHorizontalComponent, [{\n        type: Component,\n        args: [{\n                selector: 'ngx-charts-bar-horizontal',\n                template: `\n    <ngx-charts-chart\n      [view]=\"[width, height]\"\n      [showLegend]=\"legend\"\n      [legendOptions]=\"legendOptions\"\n      [activeEntries]=\"activeEntries\"\n      [animations]=\"animations\"\n      (legendLabelClick)=\"onClick($event)\"\n      (legendLabelActivate)=\"onActivate($event, true)\"\n      (legendLabelDeactivate)=\"onDeactivate($event, true)\"\n    >\n      <svg:g [attr.transform]=\"transform\" class=\"bar-chart chart\">\n        <svg:g\n          ngx-charts-x-axis\n          *ngIf=\"xAxis\"\n          [xScale]=\"xScale\"\n          [dims]=\"dims\"\n          [showGridLines]=\"showGridLines\"\n          [showLabel]=\"showXAxisLabel\"\n          [labelText]=\"xAxisLabel\"\n          [trimTicks]=\"trimXAxisTicks\"\n          [rotateTicks]=\"rotateXAxisTicks\"\n          [maxTickLength]=\"maxXAxisTickLength\"\n          [tickFormatting]=\"xAxisTickFormatting\"\n          [ticks]=\"xAxisTicks\"\n          (dimensionsChanged)=\"updateXAxisHeight($event)\"\n        ></svg:g>\n        <svg:g\n          ngx-charts-y-axis\n          *ngIf=\"yAxis\"\n          [yScale]=\"yScale\"\n          [dims]=\"dims\"\n          [showLabel]=\"showYAxisLabel\"\n          [labelText]=\"yAxisLabel\"\n          [trimTicks]=\"trimYAxisTicks\"\n          [maxTickLength]=\"maxYAxisTickLength\"\n          [tickFormatting]=\"yAxisTickFormatting\"\n          [ticks]=\"yAxisTicks\"\n          [yAxisOffset]=\"dataLabelMaxWidth.negative\"\n          (dimensionsChanged)=\"updateYAxisWidth($event)\"\n        ></svg:g>\n        <svg:g\n          ngx-charts-series-horizontal\n          [xScale]=\"xScale\"\n          [yScale]=\"yScale\"\n          [colors]=\"colors\"\n          [series]=\"results\"\n          [dims]=\"dims\"\n          [gradient]=\"gradient\"\n          [tooltipDisabled]=\"tooltipDisabled\"\n          [tooltipTemplate]=\"tooltipTemplate\"\n          [activeEntries]=\"activeEntries\"\n          [roundEdges]=\"roundEdges\"\n          [animations]=\"animations\"\n          [showDataLabel]=\"showDataLabel\"\n          [dataLabelFormatting]=\"dataLabelFormatting\"\n          [noBarWhenZero]=\"noBarWhenZero\"\n          (select)=\"onClick($event)\"\n          (activate)=\"onActivate($event)\"\n          (deactivate)=\"onDeactivate($event)\"\n          (dataLabelWidthChanged)=\"onDataLabelMaxWidthChanged($event)\"\n        ></svg:g>\n      </svg:g>\n    </ngx-charts-chart>\n  `,\n                changeDetection: ChangeDetectionStrategy.OnPush,\n                encapsulation: ViewEncapsulation.None,\n                styles: [\".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:0}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:0}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\"]\n            }]\n    }], null, { legend: [{\n            type: Input\n        }], legendTitle: [{\n            type: Input\n        }], legendPosition: [{\n            type: Input\n        }], tooltipDisabled: [{\n            type: Input\n        }], showGridLines: [{\n            type: Input\n        }], activeEntries: [{\n            type: Input\n        }], trimXAxisTicks: [{\n            type: Input\n        }], trimYAxisTicks: [{\n            type: Input\n        }], rotateXAxisTicks: [{\n            type: Input\n        }], maxXAxisTickLength: [{\n            type: Input\n        }], maxYAxisTickLength: [{\n            type: Input\n        }], barPadding: [{\n            type: Input\n        }], roundDomains: [{\n            type: Input\n        }], roundEdges: [{\n            type: Input\n        }], showDataLabel: [{\n            type: Input\n        }], noBarWhenZero: [{\n            type: Input\n        }], activate: [{\n            type: Output\n        }], deactivate: [{\n            type: Output\n        }], xAxis: [{\n            type: Input\n        }], yAxis: [{\n            type: Input\n        }], showXAxisLabel: [{\n            type: Input\n        }], showYAxisLabel: [{\n            type: Input\n        }], xAxisLabel: [{\n            type: Input\n        }], yAxisLabel: [{\n            type: Input\n        }], gradient: [{\n            type: Input\n        }], schemeType: [{\n            type: Input\n        }], xAxisTickFormatting: [{\n            type: Input\n        }], yAxisTickFormatting: [{\n            type: Input\n        }], xAxisTicks: [{\n            type: Input\n        }], yAxisTicks: [{\n            type: Input\n        }], xScaleMax: [{\n            type: Input\n        }], xScaleMin: [{\n            type: Input\n        }], dataLabelFormatting: [{\n            type: Input\n        }], tooltipTemplate: [{\n            type: ContentChild,\n            args: ['tooltipTemplate']\n        }] }); })();\nconst ɵBarHorizontal2DComponent_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(BarHorizontal2DComponent);\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(BarHorizontal2DComponent, [{\n        type: Component,\n        args: [{\n                selector: 'ngx-charts-bar-horizontal-2d',\n                template: `\n    <ngx-charts-chart\n      [view]=\"[width, height]\"\n      [showLegend]=\"legend\"\n      [legendOptions]=\"legendOptions\"\n      [activeEntries]=\"activeEntries\"\n      [animations]=\"animations\"\n      (legendLabelActivate)=\"onActivate($event, undefined, true)\"\n      (legendLabelDeactivate)=\"onDeactivate($event, undefined, true)\"\n      (legendLabelClick)=\"onClick($event)\"\n    >\n      <svg:g [attr.transform]=\"transform\" class=\"bar-chart chart\">\n        <svg:g\n          ngx-charts-grid-panel-series\n          [xScale]=\"valueScale\"\n          [yScale]=\"groupScale\"\n          [data]=\"results\"\n          [dims]=\"dims\"\n          orient=\"horizontal\"\n        ></svg:g>\n        <svg:g\n          ngx-charts-x-axis\n          *ngIf=\"xAxis\"\n          [xScale]=\"valueScale\"\n          [dims]=\"dims\"\n          [showGridLines]=\"showGridLines\"\n          [showLabel]=\"showXAxisLabel\"\n          [labelText]=\"xAxisLabel\"\n          [trimTicks]=\"trimXAxisTicks\"\n          [rotateTicks]=\"rotateXAxisTicks\"\n          [maxTickLength]=\"maxXAxisTickLength\"\n          [tickFormatting]=\"xAxisTickFormatting\"\n          [ticks]=\"xAxisTicks\"\n          (dimensionsChanged)=\"updateXAxisHeight($event)\"\n        ></svg:g>\n        <svg:g\n          ngx-charts-y-axis\n          *ngIf=\"yAxis\"\n          [yScale]=\"groupScale\"\n          [dims]=\"dims\"\n          [showLabel]=\"showYAxisLabel\"\n          [labelText]=\"yAxisLabel\"\n          [trimTicks]=\"trimYAxisTicks\"\n          [maxTickLength]=\"maxYAxisTickLength\"\n          [tickFormatting]=\"yAxisTickFormatting\"\n          [ticks]=\"yAxisTicks\"\n          [yAxisOffset]=\"dataLabelMaxWidth.negative\"\n          (dimensionsChanged)=\"updateYAxisWidth($event)\"\n        ></svg:g>\n        <svg:g\n          *ngFor=\"let group of results; let index = index; trackBy: trackBy\"\n          [@animationState]=\"'active'\"\n          [attr.transform]=\"groupTransform(group)\"\n        >\n          <svg:g\n            ngx-charts-series-horizontal\n            [xScale]=\"valueScale\"\n            [activeEntries]=\"activeEntries\"\n            [yScale]=\"innerScale\"\n            [colors]=\"colors\"\n            [series]=\"group.series\"\n            [dims]=\"dims\"\n            [gradient]=\"gradient\"\n            [tooltipDisabled]=\"tooltipDisabled\"\n            [tooltipTemplate]=\"tooltipTemplate\"\n            [seriesName]=\"group.name\"\n            [roundEdges]=\"roundEdges\"\n            [animations]=\"animations\"\n            [showDataLabel]=\"showDataLabel\"\n            [dataLabelFormatting]=\"dataLabelFormatting\"\n            [noBarWhenZero]=\"noBarWhenZero\"\n            (select)=\"onClick($event, group)\"\n            (activate)=\"onActivate($event, group)\"\n            (deactivate)=\"onDeactivate($event, group)\"\n            (dataLabelWidthChanged)=\"onDataLabelMaxWidthChanged($event, index)\"\n          />\n        </svg:g>\n      </svg:g>\n    </ngx-charts-chart>\n  `,\n                changeDetection: ChangeDetectionStrategy.OnPush,\n                encapsulation: ViewEncapsulation.None,\n                animations: [\n                    trigger('animationState', [\n                        transition(':leave', [\n                            style({\n                                opacity: 1,\n                                transform: '*'\n                            }),\n                            animate(500, style({ opacity: 0, transform: 'scale(0)' }))\n                        ])\n                    ])\n                ],\n                styles: [\".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:0}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:0}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\"]\n            }]\n    }], null, { legend: [{\n            type: Input\n        }], legendTitle: [{\n            type: Input\n        }], legendPosition: [{\n            type: Input\n        }], tooltipDisabled: [{\n            type: Input\n        }], showGridLines: [{\n            type: Input\n        }], activeEntries: [{\n            type: Input\n        }], trimXAxisTicks: [{\n            type: Input\n        }], trimYAxisTicks: [{\n            type: Input\n        }], rotateXAxisTicks: [{\n            type: Input\n        }], maxXAxisTickLength: [{\n            type: Input\n        }], maxYAxisTickLength: [{\n            type: Input\n        }], groupPadding: [{\n            type: Input\n        }], barPadding: [{\n            type: Input\n        }], roundDomains: [{\n            type: Input\n        }], roundEdges: [{\n            type: Input\n        }], showDataLabel: [{\n            type: Input\n        }], noBarWhenZero: [{\n            type: Input\n        }], activate: [{\n            type: Output\n        }], deactivate: [{\n            type: Output\n        }], xAxis: [{\n            type: Input\n        }], yAxis: [{\n            type: Input\n        }], showXAxisLabel: [{\n            type: Input\n        }], showYAxisLabel: [{\n            type: Input\n        }], xAxisLabel: [{\n            type: Input\n        }], yAxisLabel: [{\n            type: Input\n        }], gradient: [{\n            type: Input\n        }], schemeType: [{\n            type: Input\n        }], xAxisTickFormatting: [{\n            type: Input\n        }], yAxisTickFormatting: [{\n            type: Input\n        }], xAxisTicks: [{\n            type: Input\n        }], yAxisTicks: [{\n            type: Input\n        }], xScaleMax: [{\n            type: Input\n        }], dataLabelFormatting: [{\n            type: Input\n        }], tooltipTemplate: [{\n            type: ContentChild,\n            args: ['tooltipTemplate']\n        }] }); })();\nconst ɵBarHorizontalNormalizedComponent_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(BarHorizontalNormalizedComponent);\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(BarHorizontalNormalizedComponent, [{\n        type: Component,\n        args: [{\n                selector: 'ngx-charts-bar-horizontal-normalized',\n                template: `\n    <ngx-charts-chart\n      [view]=\"[width, height]\"\n      [showLegend]=\"legend\"\n      [legendOptions]=\"legendOptions\"\n      [activeEntries]=\"activeEntries\"\n      [animations]=\"animations\"\n      (legendLabelActivate)=\"onActivate($event, undefined, true)\"\n      (legendLabelDeactivate)=\"onDeactivate($event, undefined, true)\"\n      (legendLabelClick)=\"onClick($event)\"\n    >\n      <svg:g [attr.transform]=\"transform\" class=\"bar-chart chart\">\n        <svg:g\n          ngx-charts-x-axis\n          *ngIf=\"xAxis\"\n          [xScale]=\"xScale\"\n          [dims]=\"dims\"\n          [showGridLines]=\"showGridLines\"\n          [showLabel]=\"showXAxisLabel\"\n          [labelText]=\"xAxisLabel\"\n          [trimTicks]=\"trimXAxisTicks\"\n          [rotateTicks]=\"rotateXAxisTicks\"\n          [maxTickLength]=\"maxXAxisTickLength\"\n          [tickFormatting]=\"xAxisTickFormatting\"\n          [ticks]=\"xAxisTicks\"\n          (dimensionsChanged)=\"updateXAxisHeight($event)\"\n        ></svg:g>\n        <svg:g\n          ngx-charts-y-axis\n          *ngIf=\"yAxis\"\n          [yScale]=\"yScale\"\n          [dims]=\"dims\"\n          [showLabel]=\"showYAxisLabel\"\n          [labelText]=\"yAxisLabel\"\n          [trimTicks]=\"trimYAxisTicks\"\n          [maxTickLength]=\"maxYAxisTickLength\"\n          [tickFormatting]=\"yAxisTickFormatting\"\n          [ticks]=\"yAxisTicks\"\n          (dimensionsChanged)=\"updateYAxisWidth($event)\"\n        ></svg:g>\n        <svg:g\n          *ngFor=\"let group of results; trackBy: trackBy\"\n          [@animationState]=\"'active'\"\n          [attr.transform]=\"groupTransform(group)\"\n        >\n          <svg:g\n            ngx-charts-series-horizontal\n            type=\"normalized\"\n            [xScale]=\"xScale\"\n            [yScale]=\"yScale\"\n            [activeEntries]=\"activeEntries\"\n            [colors]=\"colors\"\n            [series]=\"group.series\"\n            [dims]=\"dims\"\n            [gradient]=\"gradient\"\n            [tooltipDisabled]=\"tooltipDisabled\"\n            [tooltipTemplate]=\"tooltipTemplate\"\n            [seriesName]=\"group.name\"\n            [animations]=\"animations\"\n            (select)=\"onClick($event, group)\"\n            (activate)=\"onActivate($event, group)\"\n            (deactivate)=\"onDeactivate($event, group)\"\n            [noBarWhenZero]=\"noBarWhenZero\"\n          />\n        </svg:g>\n      </svg:g>\n    </ngx-charts-chart>\n  `,\n                changeDetection: ChangeDetectionStrategy.OnPush,\n                encapsulation: ViewEncapsulation.None,\n                animations: [\n                    trigger('animationState', [\n                        transition(':leave', [\n                            style({\n                                opacity: 1,\n                                transform: '*'\n                            }),\n                            animate(500, style({ opacity: 0, transform: 'scale(0)' }))\n                        ])\n                    ])\n                ],\n                styles: [\".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:0}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:0}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\"]\n            }]\n    }], null, { legend: [{\n            type: Input\n        }], legendTitle: [{\n            type: Input\n        }], legendPosition: [{\n            type: Input\n        }], tooltipDisabled: [{\n            type: Input\n        }], showGridLines: [{\n            type: Input\n        }], activeEntries: [{\n            type: Input\n        }], trimXAxisTicks: [{\n            type: Input\n        }], trimYAxisTicks: [{\n            type: Input\n        }], rotateXAxisTicks: [{\n            type: Input\n        }], maxXAxisTickLength: [{\n            type: Input\n        }], maxYAxisTickLength: [{\n            type: Input\n        }], barPadding: [{\n            type: Input\n        }], roundDomains: [{\n            type: Input\n        }], noBarWhenZero: [{\n            type: Input\n        }], activate: [{\n            type: Output\n        }], deactivate: [{\n            type: Output\n        }], xAxis: [{\n            type: Input\n        }], yAxis: [{\n            type: Input\n        }], showXAxisLabel: [{\n            type: Input\n        }], showYAxisLabel: [{\n            type: Input\n        }], xAxisLabel: [{\n            type: Input\n        }], yAxisLabel: [{\n            type: Input\n        }], gradient: [{\n            type: Input\n        }], schemeType: [{\n            type: Input\n        }], xAxisTickFormatting: [{\n            type: Input\n        }], yAxisTickFormatting: [{\n            type: Input\n        }], xAxisTicks: [{\n            type: Input\n        }], yAxisTicks: [{\n            type: Input\n        }], tooltipTemplate: [{\n            type: ContentChild,\n            args: ['tooltipTemplate']\n        }] }); })();\nconst ɵBarHorizontalStackedComponent_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(BarHorizontalStackedComponent);\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(BarHorizontalStackedComponent, [{\n        type: Component,\n        args: [{\n                selector: 'ngx-charts-bar-horizontal-stacked',\n                template: `\n    <ngx-charts-chart\n      [view]=\"[width, height]\"\n      [showLegend]=\"legend\"\n      [legendOptions]=\"legendOptions\"\n      [activeEntries]=\"activeEntries\"\n      [animations]=\"animations\"\n      (legendLabelActivate)=\"onActivate($event, undefined, true)\"\n      (legendLabelDeactivate)=\"onDeactivate($event, undefined, true)\"\n      (legendLabelClick)=\"onClick($event)\"\n    >\n      <svg:g [attr.transform]=\"transform\" class=\"bar-chart chart\">\n        <svg:g\n          ngx-charts-x-axis\n          *ngIf=\"xAxis\"\n          [xScale]=\"xScale\"\n          [dims]=\"dims\"\n          [showGridLines]=\"showGridLines\"\n          [showLabel]=\"showXAxisLabel\"\n          [labelText]=\"xAxisLabel\"\n          [trimTicks]=\"trimXAxisTicks\"\n          [rotateTicks]=\"rotateXAxisTicks\"\n          [maxTickLength]=\"maxXAxisTickLength\"\n          [tickFormatting]=\"xAxisTickFormatting\"\n          [ticks]=\"xAxisTicks\"\n          (dimensionsChanged)=\"updateXAxisHeight($event)\"\n        ></svg:g>\n        <svg:g\n          ngx-charts-y-axis\n          *ngIf=\"yAxis\"\n          [yScale]=\"yScale\"\n          [dims]=\"dims\"\n          [showLabel]=\"showYAxisLabel\"\n          [labelText]=\"yAxisLabel\"\n          [trimTicks]=\"trimYAxisTicks\"\n          [maxTickLength]=\"maxYAxisTickLength\"\n          [tickFormatting]=\"yAxisTickFormatting\"\n          [ticks]=\"yAxisTicks\"\n          [yAxisOffset]=\"dataLabelMaxWidth.negative\"\n          (dimensionsChanged)=\"updateYAxisWidth($event)\"\n        ></svg:g>\n        <svg:g\n          *ngFor=\"let group of results; let index = index; trackBy: trackBy\"\n          [@animationState]=\"'active'\"\n          [attr.transform]=\"groupTransform(group)\"\n        >\n          <svg:g\n            ngx-charts-series-horizontal\n            type=\"stacked\"\n            [xScale]=\"xScale\"\n            [yScale]=\"yScale\"\n            [colors]=\"colors\"\n            [series]=\"group.series\"\n            [activeEntries]=\"activeEntries\"\n            [dims]=\"dims\"\n            [gradient]=\"gradient\"\n            [tooltipDisabled]=\"tooltipDisabled\"\n            [tooltipTemplate]=\"tooltipTemplate\"\n            [seriesName]=\"group.name\"\n            [animations]=\"animations\"\n            [showDataLabel]=\"showDataLabel\"\n            [dataLabelFormatting]=\"dataLabelFormatting\"\n            [noBarWhenZero]=\"noBarWhenZero\"\n            (select)=\"onClick($event, group)\"\n            (activate)=\"onActivate($event, group)\"\n            (deactivate)=\"onDeactivate($event, group)\"\n            (dataLabelWidthChanged)=\"onDataLabelMaxWidthChanged($event, index)\"\n          />\n        </svg:g>\n      </svg:g>\n    </ngx-charts-chart>\n  `,\n                changeDetection: ChangeDetectionStrategy.OnPush,\n                encapsulation: ViewEncapsulation.None,\n                animations: [\n                    trigger('animationState', [\n                        transition(':leave', [\n                            style({\n                                opacity: 1,\n                                transform: '*'\n                            }),\n                            animate(500, style({ opacity: 0, transform: 'scale(0)' }))\n                        ])\n                    ])\n                ],\n                styles: [\".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:0}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:0}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\"]\n            }]\n    }], null, { legend: [{\n            type: Input\n        }], legendTitle: [{\n            type: Input\n        }], legendPosition: [{\n            type: Input\n        }], tooltipDisabled: [{\n            type: Input\n        }], showGridLines: [{\n            type: Input\n        }], activeEntries: [{\n            type: Input\n        }], trimXAxisTicks: [{\n            type: Input\n        }], trimYAxisTicks: [{\n            type: Input\n        }], rotateXAxisTicks: [{\n            type: Input\n        }], maxXAxisTickLength: [{\n            type: Input\n        }], maxYAxisTickLength: [{\n            type: Input\n        }], barPadding: [{\n            type: Input\n        }], roundDomains: [{\n            type: Input\n        }], showDataLabel: [{\n            type: Input\n        }], noBarWhenZero: [{\n            type: Input\n        }], activate: [{\n            type: Output\n        }], deactivate: [{\n            type: Output\n        }], xAxis: [{\n            type: Input\n        }], yAxis: [{\n            type: Input\n        }], showXAxisLabel: [{\n            type: Input\n        }], showYAxisLabel: [{\n            type: Input\n        }], xAxisLabel: [{\n            type: Input\n        }], yAxisLabel: [{\n            type: Input\n        }], gradient: [{\n            type: Input\n        }], schemeType: [{\n            type: Input\n        }], xAxisTickFormatting: [{\n            type: Input\n        }], yAxisTickFormatting: [{\n            type: Input\n        }], xAxisTicks: [{\n            type: Input\n        }], yAxisTicks: [{\n            type: Input\n        }], xScaleMax: [{\n            type: Input\n        }], dataLabelFormatting: [{\n            type: Input\n        }], tooltipTemplate: [{\n            type: ContentChild,\n            args: ['tooltipTemplate']\n        }] }); })();\nconst ɵBarVerticalComponent_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(BarVerticalComponent);\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(BarVerticalComponent, [{\n        type: Component,\n        args: [{\n                selector: 'ngx-charts-bar-vertical',\n                template: `\n    <ngx-charts-chart\n      [view]=\"[width, height]\"\n      [showLegend]=\"legend\"\n      [legendOptions]=\"legendOptions\"\n      [activeEntries]=\"activeEntries\"\n      [animations]=\"animations\"\n      (legendLabelClick)=\"onClick($event)\"\n      (legendLabelActivate)=\"onActivate($event, true)\"\n      (legendLabelDeactivate)=\"onDeactivate($event, true)\"\n    >\n      <svg:g [attr.transform]=\"transform\" class=\"bar-chart chart\">\n        <svg:g\n          ngx-charts-x-axis\n          *ngIf=\"xAxis\"\n          [xScale]=\"xScale\"\n          [dims]=\"dims\"\n          [showLabel]=\"showXAxisLabel\"\n          [labelText]=\"xAxisLabel\"\n          [trimTicks]=\"trimXAxisTicks\"\n          [rotateTicks]=\"rotateXAxisTicks\"\n          [maxTickLength]=\"maxXAxisTickLength\"\n          [tickFormatting]=\"xAxisTickFormatting\"\n          [ticks]=\"xAxisTicks\"\n          [xAxisOffset]=\"dataLabelMaxHeight.negative\"\n          (dimensionsChanged)=\"updateXAxisHeight($event)\"\n        ></svg:g>\n        <svg:g\n          ngx-charts-y-axis\n          *ngIf=\"yAxis\"\n          [yScale]=\"yScale\"\n          [dims]=\"dims\"\n          [showGridLines]=\"showGridLines\"\n          [showLabel]=\"showYAxisLabel\"\n          [labelText]=\"yAxisLabel\"\n          [trimTicks]=\"trimYAxisTicks\"\n          [maxTickLength]=\"maxYAxisTickLength\"\n          [tickFormatting]=\"yAxisTickFormatting\"\n          [ticks]=\"yAxisTicks\"\n          (dimensionsChanged)=\"updateYAxisWidth($event)\"\n        ></svg:g>\n        <svg:g\n          ngx-charts-series-vertical\n          [xScale]=\"xScale\"\n          [yScale]=\"yScale\"\n          [colors]=\"colors\"\n          [series]=\"results\"\n          [dims]=\"dims\"\n          [gradient]=\"gradient\"\n          [tooltipDisabled]=\"tooltipDisabled\"\n          [tooltipTemplate]=\"tooltipTemplate\"\n          [showDataLabel]=\"showDataLabel\"\n          [dataLabelFormatting]=\"dataLabelFormatting\"\n          [activeEntries]=\"activeEntries\"\n          [roundEdges]=\"roundEdges\"\n          [animations]=\"animations\"\n          [noBarWhenZero]=\"noBarWhenZero\"\n          (activate)=\"onActivate($event)\"\n          (deactivate)=\"onDeactivate($event)\"\n          (select)=\"onClick($event)\"\n          (dataLabelHeightChanged)=\"onDataLabelMaxHeightChanged($event)\"\n        ></svg:g>\n      </svg:g>\n    </ngx-charts-chart>\n  `,\n                changeDetection: ChangeDetectionStrategy.OnPush,\n                encapsulation: ViewEncapsulation.None,\n                styles: [\".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:0}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:0}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\"]\n            }]\n    }], null, { legend: [{\n            type: Input\n        }], legendTitle: [{\n            type: Input\n        }], legendPosition: [{\n            type: Input\n        }], tooltipDisabled: [{\n            type: Input\n        }], showGridLines: [{\n            type: Input\n        }], activeEntries: [{\n            type: Input\n        }], trimXAxisTicks: [{\n            type: Input\n        }], trimYAxisTicks: [{\n            type: Input\n        }], rotateXAxisTicks: [{\n            type: Input\n        }], maxXAxisTickLength: [{\n            type: Input\n        }], maxYAxisTickLength: [{\n            type: Input\n        }], barPadding: [{\n            type: Input\n        }], roundDomains: [{\n            type: Input\n        }], roundEdges: [{\n            type: Input\n        }], showDataLabel: [{\n            type: Input\n        }], noBarWhenZero: [{\n            type: Input\n        }], activate: [{\n            type: Output\n        }], deactivate: [{\n            type: Output\n        }], xAxis: [{\n            type: Input\n        }], yAxis: [{\n            type: Input\n        }], showXAxisLabel: [{\n            type: Input\n        }], showYAxisLabel: [{\n            type: Input\n        }], xAxisLabel: [{\n            type: Input\n        }], yAxisLabel: [{\n            type: Input\n        }], gradient: [{\n            type: Input\n        }], schemeType: [{\n            type: Input\n        }], xAxisTickFormatting: [{\n            type: Input\n        }], yAxisTickFormatting: [{\n            type: Input\n        }], xAxisTicks: [{\n            type: Input\n        }], yAxisTicks: [{\n            type: Input\n        }], yScaleMax: [{\n            type: Input\n        }], yScaleMin: [{\n            type: Input\n        }], dataLabelFormatting: [{\n            type: Input\n        }], tooltipTemplate: [{\n            type: ContentChild,\n            args: ['tooltipTemplate']\n        }] }); })();\nconst ɵBarVertical2DComponent_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(BarVertical2DComponent);\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(BarVertical2DComponent, [{\n        type: Component,\n        args: [{\n                selector: 'ngx-charts-bar-vertical-2d',\n                template: `\n    <ngx-charts-chart\n      [view]=\"[width, height]\"\n      [showLegend]=\"legend\"\n      [legendOptions]=\"legendOptions\"\n      [activeEntries]=\"activeEntries\"\n      [animations]=\"animations\"\n      (legendLabelActivate)=\"onActivate($event, undefined, true)\"\n      (legendLabelDeactivate)=\"onDeactivate($event, undefined, true)\"\n      (legendLabelClick)=\"onClick($event)\"\n    >\n      <svg:g [attr.transform]=\"transform\" class=\"bar-chart chart\">\n        <svg:g\n          ngx-charts-grid-panel-series\n          [xScale]=\"groupScale\"\n          [yScale]=\"valueScale\"\n          [data]=\"results\"\n          [dims]=\"dims\"\n          orient=\"vertical\"\n        ></svg:g>\n        <svg:g\n          ngx-charts-x-axis\n          *ngIf=\"xAxis\"\n          [xScale]=\"groupScale\"\n          [dims]=\"dims\"\n          [showLabel]=\"showXAxisLabel\"\n          [labelText]=\"xAxisLabel\"\n          [trimTicks]=\"trimXAxisTicks\"\n          [rotateTicks]=\"rotateXAxisTicks\"\n          [maxTickLength]=\"maxXAxisTickLength\"\n          [tickFormatting]=\"xAxisTickFormatting\"\n          [ticks]=\"xAxisTicks\"\n          [xAxisOffset]=\"dataLabelMaxHeight.negative\"\n          (dimensionsChanged)=\"updateXAxisHeight($event)\"\n        ></svg:g>\n        <svg:g\n          ngx-charts-y-axis\n          *ngIf=\"yAxis\"\n          [yScale]=\"valueScale\"\n          [dims]=\"dims\"\n          [showGridLines]=\"showGridLines\"\n          [showLabel]=\"showYAxisLabel\"\n          [labelText]=\"yAxisLabel\"\n          [trimTicks]=\"trimYAxisTicks\"\n          [maxTickLength]=\"maxYAxisTickLength\"\n          [tickFormatting]=\"yAxisTickFormatting\"\n          [ticks]=\"yAxisTicks\"\n          (dimensionsChanged)=\"updateYAxisWidth($event)\"\n        ></svg:g>\n        <svg:g\n          ngx-charts-series-vertical\n          *ngFor=\"let group of results; let index = index; trackBy: trackBy\"\n          [@animationState]=\"'active'\"\n          [attr.transform]=\"groupTransform(group)\"\n          [activeEntries]=\"activeEntries\"\n          [xScale]=\"innerScale\"\n          [yScale]=\"valueScale\"\n          [colors]=\"colors\"\n          [series]=\"group.series\"\n          [dims]=\"dims\"\n          [gradient]=\"gradient\"\n          [tooltipDisabled]=\"tooltipDisabled\"\n          [tooltipTemplate]=\"tooltipTemplate\"\n          [showDataLabel]=\"showDataLabel\"\n          [dataLabelFormatting]=\"dataLabelFormatting\"\n          [seriesName]=\"group.name\"\n          [roundEdges]=\"roundEdges\"\n          [animations]=\"animations\"\n          [noBarWhenZero]=\"noBarWhenZero\"\n          (select)=\"onClick($event, group)\"\n          (activate)=\"onActivate($event, group)\"\n          (deactivate)=\"onDeactivate($event, group)\"\n          (dataLabelHeightChanged)=\"onDataLabelMaxHeightChanged($event, index)\"\n        />\n      </svg:g>\n    </ngx-charts-chart>\n  `,\n                encapsulation: ViewEncapsulation.None,\n                changeDetection: ChangeDetectionStrategy.OnPush,\n                animations: [\n                    trigger('animationState', [\n                        transition(':leave', [\n                            style({\n                                opacity: 1,\n                                transform: '*'\n                            }),\n                            animate(500, style({ opacity: 0, transform: 'scale(0)' }))\n                        ])\n                    ])\n                ],\n                styles: [\".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:0}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:0}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\"]\n            }]\n    }], null, { legend: [{\n            type: Input\n        }], legendTitle: [{\n            type: Input\n        }], legendPosition: [{\n            type: Input\n        }], tooltipDisabled: [{\n            type: Input\n        }], scaleType: [{\n            type: Input\n        }], showGridLines: [{\n            type: Input\n        }], activeEntries: [{\n            type: Input\n        }], trimXAxisTicks: [{\n            type: Input\n        }], trimYAxisTicks: [{\n            type: Input\n        }], rotateXAxisTicks: [{\n            type: Input\n        }], maxXAxisTickLength: [{\n            type: Input\n        }], maxYAxisTickLength: [{\n            type: Input\n        }], groupPadding: [{\n            type: Input\n        }], barPadding: [{\n            type: Input\n        }], roundDomains: [{\n            type: Input\n        }], roundEdges: [{\n            type: Input\n        }], showDataLabel: [{\n            type: Input\n        }], noBarWhenZero: [{\n            type: Input\n        }], activate: [{\n            type: Output\n        }], deactivate: [{\n            type: Output\n        }], xAxis: [{\n            type: Input\n        }], yAxis: [{\n            type: Input\n        }], showXAxisLabel: [{\n            type: Input\n        }], showYAxisLabel: [{\n            type: Input\n        }], xAxisLabel: [{\n            type: Input\n        }], yAxisLabel: [{\n            type: Input\n        }], gradient: [{\n            type: Input\n        }], schemeType: [{\n            type: Input\n        }], xAxisTickFormatting: [{\n            type: Input\n        }], yAxisTickFormatting: [{\n            type: Input\n        }], xAxisTicks: [{\n            type: Input\n        }], yAxisTicks: [{\n            type: Input\n        }], yScaleMax: [{\n            type: Input\n        }], dataLabelFormatting: [{\n            type: Input\n        }], tooltipTemplate: [{\n            type: ContentChild,\n            args: ['tooltipTemplate']\n        }] }); })();\nconst ɵBarVerticalNormalizedComponent_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(BarVerticalNormalizedComponent);\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(BarVerticalNormalizedComponent, [{\n        type: Component,\n        args: [{\n                selector: 'ngx-charts-bar-vertical-normalized',\n                template: `\n    <ngx-charts-chart\n      [view]=\"[width, height]\"\n      [showLegend]=\"legend\"\n      [legendOptions]=\"legendOptions\"\n      [activeEntries]=\"activeEntries\"\n      [animations]=\"animations\"\n      (legendLabelActivate)=\"onActivate($event, undefined, true)\"\n      (legendLabelDeactivate)=\"onDeactivate($event, undefined, true)\"\n      (legendLabelClick)=\"onClick($event)\"\n    >\n      <svg:g [attr.transform]=\"transform\" class=\"bar-chart chart\">\n        <svg:g\n          ngx-charts-x-axis\n          *ngIf=\"xAxis\"\n          [xScale]=\"xScale\"\n          [dims]=\"dims\"\n          [showLabel]=\"showXAxisLabel\"\n          [labelText]=\"xAxisLabel\"\n          [trimTicks]=\"trimXAxisTicks\"\n          [rotateTicks]=\"rotateXAxisTicks\"\n          [maxTickLength]=\"maxXAxisTickLength\"\n          [tickFormatting]=\"xAxisTickFormatting\"\n          [ticks]=\"xAxisTicks\"\n          (dimensionsChanged)=\"updateXAxisHeight($event)\"\n        ></svg:g>\n        <svg:g\n          ngx-charts-y-axis\n          *ngIf=\"yAxis\"\n          [yScale]=\"yScale\"\n          [dims]=\"dims\"\n          [showGridLines]=\"showGridLines\"\n          [showLabel]=\"showYAxisLabel\"\n          [labelText]=\"yAxisLabel\"\n          [trimTicks]=\"trimYAxisTicks\"\n          [maxTickLength]=\"maxYAxisTickLength\"\n          [tickFormatting]=\"yAxisTickFormatting\"\n          [ticks]=\"yAxisTicks\"\n          (dimensionsChanged)=\"updateYAxisWidth($event)\"\n        ></svg:g>\n        <svg:g\n          *ngFor=\"let group of results; trackBy: trackBy\"\n          [@animationState]=\"'active'\"\n          [attr.transform]=\"groupTransform(group)\"\n        >\n          <svg:g\n            ngx-charts-series-vertical\n            type=\"normalized\"\n            [xScale]=\"xScale\"\n            [yScale]=\"yScale\"\n            [activeEntries]=\"activeEntries\"\n            [colors]=\"colors\"\n            [series]=\"group.series\"\n            [dims]=\"dims\"\n            [gradient]=\"gradient\"\n            [tooltipDisabled]=\"tooltipDisabled\"\n            [tooltipTemplate]=\"tooltipTemplate\"\n            [seriesName]=\"group.name\"\n            [animations]=\"animations\"\n            [noBarWhenZero]=\"noBarWhenZero\"\n            (select)=\"onClick($event, group)\"\n            (activate)=\"onActivate($event, group)\"\n            (deactivate)=\"onDeactivate($event, group)\"\n          />\n        </svg:g>\n      </svg:g>\n    </ngx-charts-chart>\n  `,\n                encapsulation: ViewEncapsulation.None,\n                changeDetection: ChangeDetectionStrategy.OnPush,\n                animations: [\n                    trigger('animationState', [\n                        transition(':leave', [\n                            style({\n                                opacity: 1,\n                                transform: '*'\n                            }),\n                            animate(500, style({ opacity: 0, transform: 'scale(0)' }))\n                        ])\n                    ])\n                ],\n                styles: [\".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:0}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:0}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\"]\n            }]\n    }], null, { legend: [{\n            type: Input\n        }], legendTitle: [{\n            type: Input\n        }], legendPosition: [{\n            type: Input\n        }], tooltipDisabled: [{\n            type: Input\n        }], showGridLines: [{\n            type: Input\n        }], activeEntries: [{\n            type: Input\n        }], trimXAxisTicks: [{\n            type: Input\n        }], trimYAxisTicks: [{\n            type: Input\n        }], rotateXAxisTicks: [{\n            type: Input\n        }], maxXAxisTickLength: [{\n            type: Input\n        }], maxYAxisTickLength: [{\n            type: Input\n        }], barPadding: [{\n            type: Input\n        }], roundDomains: [{\n            type: Input\n        }], noBarWhenZero: [{\n            type: Input\n        }], activate: [{\n            type: Output\n        }], deactivate: [{\n            type: Output\n        }], xAxis: [{\n            type: Input\n        }], yAxis: [{\n            type: Input\n        }], showXAxisLabel: [{\n            type: Input\n        }], showYAxisLabel: [{\n            type: Input\n        }], xAxisLabel: [{\n            type: Input\n        }], yAxisLabel: [{\n            type: Input\n        }], gradient: [{\n            type: Input\n        }], schemeType: [{\n            type: Input\n        }], xAxisTickFormatting: [{\n            type: Input\n        }], yAxisTickFormatting: [{\n            type: Input\n        }], xAxisTicks: [{\n            type: Input\n        }], yAxisTicks: [{\n            type: Input\n        }], tooltipTemplate: [{\n            type: ContentChild,\n            args: ['tooltipTemplate']\n        }] }); })();\nconst ɵBarVerticalStackedComponent_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(BarVerticalStackedComponent);\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(BarVerticalStackedComponent, [{\n        type: Component,\n        args: [{\n                selector: 'ngx-charts-bar-vertical-stacked',\n                template: `\n    <ngx-charts-chart\n      [view]=\"[width, height]\"\n      [showLegend]=\"legend\"\n      [legendOptions]=\"legendOptions\"\n      [activeEntries]=\"activeEntries\"\n      [animations]=\"animations\"\n      (legendLabelActivate)=\"onActivate($event, undefined, true)\"\n      (legendLabelDeactivate)=\"onDeactivate($event, undefined, true)\"\n      (legendLabelClick)=\"onClick($event)\"\n    >\n      <svg:g [attr.transform]=\"transform\" class=\"bar-chart chart\">\n        <svg:g\n          ngx-charts-x-axis\n          *ngIf=\"xAxis\"\n          [xScale]=\"xScale\"\n          [dims]=\"dims\"\n          [showLabel]=\"showXAxisLabel\"\n          [labelText]=\"xAxisLabel\"\n          [trimTicks]=\"trimXAxisTicks\"\n          [rotateTicks]=\"rotateXAxisTicks\"\n          [maxTickLength]=\"maxXAxisTickLength\"\n          [tickFormatting]=\"xAxisTickFormatting\"\n          [ticks]=\"xAxisTicks\"\n          [xAxisOffset]=\"dataLabelMaxHeight.negative\"\n          (dimensionsChanged)=\"updateXAxisHeight($event)\"\n        ></svg:g>\n        <svg:g\n          ngx-charts-y-axis\n          *ngIf=\"yAxis\"\n          [yScale]=\"yScale\"\n          [dims]=\"dims\"\n          [showGridLines]=\"showGridLines\"\n          [showLabel]=\"showYAxisLabel\"\n          [labelText]=\"yAxisLabel\"\n          [trimTicks]=\"trimYAxisTicks\"\n          [maxTickLength]=\"maxYAxisTickLength\"\n          [tickFormatting]=\"yAxisTickFormatting\"\n          [ticks]=\"yAxisTicks\"\n          (dimensionsChanged)=\"updateYAxisWidth($event)\"\n        ></svg:g>\n        <svg:g\n          *ngFor=\"let group of results; let index = index; trackBy: trackBy\"\n          [@animationState]=\"'active'\"\n          [attr.transform]=\"groupTransform(group)\"\n        >\n          <svg:g\n            ngx-charts-series-vertical\n            type=\"stacked\"\n            [xScale]=\"xScale\"\n            [yScale]=\"yScale\"\n            [activeEntries]=\"activeEntries\"\n            [colors]=\"colors\"\n            [series]=\"group.series\"\n            [dims]=\"dims\"\n            [gradient]=\"gradient\"\n            [tooltipDisabled]=\"tooltipDisabled\"\n            [tooltipTemplate]=\"tooltipTemplate\"\n            [showDataLabel]=\"showDataLabel\"\n            [dataLabelFormatting]=\"dataLabelFormatting\"\n            [seriesName]=\"group.name\"\n            [animations]=\"animations\"\n            [noBarWhenZero]=\"noBarWhenZero\"\n            (select)=\"onClick($event, group)\"\n            (activate)=\"onActivate($event, group)\"\n            (deactivate)=\"onDeactivate($event, group)\"\n            (dataLabelHeightChanged)=\"onDataLabelMaxHeightChanged($event, index)\"\n          />\n        </svg:g>\n      </svg:g>\n    </ngx-charts-chart>\n  `,\n                encapsulation: ViewEncapsulation.None,\n                changeDetection: ChangeDetectionStrategy.OnPush,\n                animations: [\n                    trigger('animationState', [\n                        transition(':leave', [\n                            style({\n                                opacity: 1,\n                                transform: '*'\n                            }),\n                            animate(500, style({ opacity: 0, transform: 'scale(0)' }))\n                        ])\n                    ])\n                ],\n                styles: [\".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:0}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:0}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\"]\n            }]\n    }], null, { legend: [{\n            type: Input\n        }], legendTitle: [{\n            type: Input\n        }], legendPosition: [{\n            type: Input\n        }], tooltipDisabled: [{\n            type: Input\n        }], showGridLines: [{\n            type: Input\n        }], activeEntries: [{\n            type: Input\n        }], trimXAxisTicks: [{\n            type: Input\n        }], trimYAxisTicks: [{\n            type: Input\n        }], rotateXAxisTicks: [{\n            type: Input\n        }], maxXAxisTickLength: [{\n            type: Input\n        }], maxYAxisTickLength: [{\n            type: Input\n        }], barPadding: [{\n            type: Input\n        }], roundDomains: [{\n            type: Input\n        }], showDataLabel: [{\n            type: Input\n        }], noBarWhenZero: [{\n            type: Input\n        }], activate: [{\n            type: Output\n        }], deactivate: [{\n            type: Output\n        }], xAxis: [{\n            type: Input\n        }], yAxis: [{\n            type: Input\n        }], showXAxisLabel: [{\n            type: Input\n        }], showYAxisLabel: [{\n            type: Input\n        }], xAxisLabel: [{\n            type: Input\n        }], yAxisLabel: [{\n            type: Input\n        }], gradient: [{\n            type: Input\n        }], schemeType: [{\n            type: Input\n        }], xAxisTickFormatting: [{\n            type: Input\n        }], yAxisTickFormatting: [{\n            type: Input\n        }], xAxisTicks: [{\n            type: Input\n        }], yAxisTicks: [{\n            type: Input\n        }], yScaleMax: [{\n            type: Input\n        }], dataLabelFormatting: [{\n            type: Input\n        }], tooltipTemplate: [{\n            type: ContentChild,\n            args: ['tooltipTemplate']\n        }] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(SeriesVerticalComponent, [{\n        type: Component,\n        args: [{\n                selector: 'g[ngx-charts-series-vertical]',\n                template: `\n    <svg:g\n      ngx-charts-bar\n      *ngFor=\"let bar of bars; trackBy: trackBy\"\n      [@animationState]=\"'active'\"\n      [@.disabled]=\"!animations\"\n      [width]=\"bar.width\"\n      [height]=\"bar.height\"\n      [x]=\"bar.x\"\n      [y]=\"bar.y\"\n      [fill]=\"bar.color\"\n      [stops]=\"bar.gradientStops\"\n      [data]=\"bar.data\"\n      [orientation]=\"'vertical'\"\n      [roundEdges]=\"bar.roundEdges\"\n      [gradient]=\"gradient\"\n      [ariaLabel]=\"bar.ariaLabel\"\n      [isActive]=\"isActive(bar.data)\"\n      (select)=\"onClick($event)\"\n      (activate)=\"activate.emit($event)\"\n      (deactivate)=\"deactivate.emit($event)\"\n      ngx-tooltip\n      [tooltipDisabled]=\"tooltipDisabled\"\n      [tooltipPlacement]=\"tooltipPlacement\"\n      [tooltipType]=\"tooltipType\"\n      [tooltipTitle]=\"tooltipTemplate ? undefined : bar.tooltipText\"\n      [tooltipTemplate]=\"tooltipTemplate\"\n      [tooltipContext]=\"bar.data\"\n      [noBarWhenZero]=\"noBarWhenZero\"\n      [animations]=\"animations\"\n    ></svg:g>\n    <svg:g *ngIf=\"showDataLabel\">\n      <svg:g\n        ngx-charts-bar-label\n        *ngFor=\"let b of barsForDataLabels; let i = index; trackBy: trackDataLabelBy\"\n        [barX]=\"b.x\"\n        [barY]=\"b.y\"\n        [barWidth]=\"b.width\"\n        [barHeight]=\"b.height\"\n        [value]=\"b.total\"\n        [valueFormatting]=\"dataLabelFormatting\"\n        [orientation]=\"'vertical'\"\n        (dimensionsChanged)=\"dataLabelHeightChanged.emit({ size: $event, index: i })\"\n      />\n    </svg:g>\n  `,\n                changeDetection: ChangeDetectionStrategy.OnPush,\n                animations: [\n                    trigger('animationState', [\n                        transition(':leave', [\n                            style({\n                                opacity: 1\n                            }),\n                            animate(500, style({ opacity: 0 }))\n                        ])\n                    ])\n                ]\n            }]\n    }], function () { return []; }, { type: [{\n            type: Input\n        }], tooltipDisabled: [{\n            type: Input\n        }], animations: [{\n            type: Input\n        }], showDataLabel: [{\n            type: Input\n        }], noBarWhenZero: [{\n            type: Input\n        }], select: [{\n            type: Output\n        }], activate: [{\n            type: Output\n        }], deactivate: [{\n            type: Output\n        }], dataLabelHeightChanged: [{\n            type: Output\n        }], dims: [{\n            type: Input\n        }], series: [{\n            type: Input\n        }], xScale: [{\n            type: Input\n        }], yScale: [{\n            type: Input\n        }], colors: [{\n            type: Input\n        }], gradient: [{\n            type: Input\n        }], activeEntries: [{\n            type: Input\n        }], seriesName: [{\n            type: Input\n        }], tooltipTemplate: [{\n            type: Input\n        }], roundEdges: [{\n            type: Input\n        }], dataLabelFormatting: [{\n            type: Input\n        }] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(SeriesHorizontal, [{\n        type: Component,\n        args: [{\n                selector: 'g[ngx-charts-series-horizontal]',\n                template: `\n    <svg:g\n      ngx-charts-bar\n      *ngFor=\"let bar of bars; trackBy: trackBy\"\n      [@animationState]=\"'active'\"\n      [width]=\"bar.width\"\n      [height]=\"bar.height\"\n      [x]=\"bar.x\"\n      [y]=\"bar.y\"\n      [fill]=\"bar.color\"\n      [stops]=\"bar.gradientStops\"\n      [data]=\"bar.data\"\n      [orientation]=\"'horizontal'\"\n      [roundEdges]=\"bar.roundEdges\"\n      (select)=\"click($event)\"\n      [gradient]=\"gradient\"\n      [isActive]=\"isActive(bar.data)\"\n      [ariaLabel]=\"bar.ariaLabel\"\n      [animations]=\"animations\"\n      (activate)=\"activate.emit($event)\"\n      (deactivate)=\"deactivate.emit($event)\"\n      ngx-tooltip\n      [tooltipDisabled]=\"tooltipDisabled\"\n      [tooltipPlacement]=\"tooltipPlacement\"\n      [tooltipType]=\"tooltipType\"\n      [tooltipTitle]=\"tooltipTemplate ? undefined : bar.tooltipText\"\n      [tooltipTemplate]=\"tooltipTemplate\"\n      [tooltipContext]=\"bar.data\"\n      [noBarWhenZero]=\"noBarWhenZero\"\n    ></svg:g>\n    <svg:g *ngIf=\"showDataLabel\">\n      <svg:g\n        ngx-charts-bar-label\n        *ngFor=\"let b of barsForDataLabels; let i = index; trackBy: trackDataLabelBy\"\n        [barX]=\"b.x\"\n        [barY]=\"b.y\"\n        [barWidth]=\"b.width\"\n        [barHeight]=\"b.height\"\n        [value]=\"b.total\"\n        [valueFormatting]=\"dataLabelFormatting\"\n        [orientation]=\"'horizontal'\"\n        (dimensionsChanged)=\"dataLabelWidthChanged.emit({ size: $event, index: i })\"\n      />\n    </svg:g>\n  `,\n                changeDetection: ChangeDetectionStrategy.OnPush,\n                animations: [\n                    trigger('animationState', [\n                        transition(':leave', [\n                            style({\n                                opacity: 1\n                            }),\n                            animate(500, style({ opacity: 0 }))\n                        ])\n                    ])\n                ]\n            }]\n    }], function () { return []; }, { type: [{\n            type: Input\n        }], tooltipDisabled: [{\n            type: Input\n        }], animations: [{\n            type: Input\n        }], showDataLabel: [{\n            type: Input\n        }], noBarWhenZero: [{\n            type: Input\n        }], select: [{\n            type: Output\n        }], activate: [{\n            type: Output\n        }], deactivate: [{\n            type: Output\n        }], dataLabelWidthChanged: [{\n            type: Output\n        }], dims: [{\n            type: Input\n        }], series: [{\n            type: Input\n        }], xScale: [{\n            type: Input\n        }], yScale: [{\n            type: Input\n        }], colors: [{\n            type: Input\n        }], gradient: [{\n            type: Input\n        }], activeEntries: [{\n            type: Input\n        }], seriesName: [{\n            type: Input\n        }], tooltipTemplate: [{\n            type: Input\n        }], roundEdges: [{\n            type: Input\n        }], dataLabelFormatting: [{\n            type: Input\n        }] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(BarLabelComponent, [{\n        type: Component,\n        args: [{\n                selector: 'g[ngx-charts-bar-label]',\n                template: `\n    <svg:text\n      class=\"textDataLabel\"\n      alignment-baseline=\"middle\"\n      [attr.text-anchor]=\"textAnchor\"\n      [attr.transform]=\"transform\"\n      [attr.x]=\"x\"\n      [attr.y]=\"y\"\n    >\n      {{ formatedValue }}\n    </svg:text>\n  `,\n                changeDetection: ChangeDetectionStrategy.OnPush,\n                styles: [\".textDataLabel{font-size:11px}\"]\n            }]\n    }], function () { return [{ type: ɵngcc0.ElementRef }]; }, { dimensionsChanged: [{\n            type: Output\n        }], value: [{\n            type: Input\n        }], valueFormatting: [{\n            type: Input\n        }], barX: [{\n            type: Input\n        }], barY: [{\n            type: Input\n        }], barWidth: [{\n            type: Input\n        }], barHeight: [{\n            type: Input\n        }], orientation: [{\n            type: Input\n        }] }); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(BarChartModule, { declarations: [BarComponent, BarHorizontalComponent, BarHorizontal2DComponent, BarHorizontalNormalizedComponent, BarHorizontalStackedComponent, BarVerticalComponent, BarVertical2DComponent, BarVerticalNormalizedComponent, BarVerticalStackedComponent, BarLabelComponent, SeriesHorizontal, SeriesVerticalComponent], imports: [ChartCommonModule], exports: [BarComponent, BarHorizontalComponent, BarHorizontal2DComponent, BarHorizontalNormalizedComponent, BarHorizontalStackedComponent, BarVerticalComponent, BarVertical2DComponent, BarVerticalNormalizedComponent, BarVerticalStackedComponent, BarLabelComponent, SeriesHorizontal, SeriesVerticalComponent] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(BarChartModule, [{\n        type: NgModule,\n        args: [{\n                imports: [ChartCommonModule],\n                declarations: [\n                    BarComponent,\n                    BarHorizontalComponent,\n                    BarHorizontal2DComponent,\n                    BarHorizontalNormalizedComponent,\n                    BarHorizontalStackedComponent,\n                    BarVerticalComponent,\n                    BarVertical2DComponent,\n                    BarVerticalNormalizedComponent,\n                    BarVerticalStackedComponent,\n                    BarLabelComponent,\n                    SeriesHorizontal,\n                    SeriesVerticalComponent\n                ],\n                exports: [\n                    BarComponent,\n                    BarHorizontalComponent,\n                    BarHorizontal2DComponent,\n                    BarHorizontalNormalizedComponent,\n                    BarHorizontalStackedComponent,\n                    BarVerticalComponent,\n                    BarVertical2DComponent,\n                    BarVerticalNormalizedComponent,\n                    BarVerticalStackedComponent,\n                    BarLabelComponent,\n                    SeriesHorizontal,\n                    SeriesVerticalComponent\n                ]\n            }]\n    }], null, null); })();\nconst ɵBubbleChartComponent_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(BubbleChartComponent);\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(BubbleChartComponent, [{\n        type: Component,\n        args: [{\n                selector: 'ngx-charts-bubble-chart',\n                template: `\n    <ngx-charts-chart\n      [view]=\"[width, height]\"\n      [showLegend]=\"legend\"\n      [activeEntries]=\"activeEntries\"\n      [legendOptions]=\"legendOptions\"\n      [animations]=\"animations\"\n      (legendLabelClick)=\"onClick($event)\"\n      (legendLabelActivate)=\"onActivate($event)\"\n      (legendLabelDeactivate)=\"onDeactivate($event)\"\n    >\n      <svg:defs>\n        <svg:clipPath [attr.id]=\"clipPathId\">\n          <svg:rect\n            [attr.width]=\"dims.width + 10\"\n            [attr.height]=\"dims.height + 10\"\n            [attr.transform]=\"'translate(-5, -5)'\"\n          />\n        </svg:clipPath>\n      </svg:defs>\n      <svg:g [attr.transform]=\"transform\" class=\"bubble-chart chart\">\n        <svg:g\n          ngx-charts-x-axis\n          *ngIf=\"xAxis\"\n          [showGridLines]=\"showGridLines\"\n          [dims]=\"dims\"\n          [xScale]=\"xScale\"\n          [showLabel]=\"showXAxisLabel\"\n          [labelText]=\"xAxisLabel\"\n          [trimTicks]=\"trimXAxisTicks\"\n          [rotateTicks]=\"rotateXAxisTicks\"\n          [maxTickLength]=\"maxXAxisTickLength\"\n          [tickFormatting]=\"xAxisTickFormatting\"\n          [ticks]=\"xAxisTicks\"\n          (dimensionsChanged)=\"updateXAxisHeight($event)\"\n        />\n        <svg:g\n          ngx-charts-y-axis\n          *ngIf=\"yAxis\"\n          [showGridLines]=\"showGridLines\"\n          [yScale]=\"yScale\"\n          [dims]=\"dims\"\n          [showLabel]=\"showYAxisLabel\"\n          [labelText]=\"yAxisLabel\"\n          [trimTicks]=\"trimYAxisTicks\"\n          [maxTickLength]=\"maxYAxisTickLength\"\n          [tickFormatting]=\"yAxisTickFormatting\"\n          [ticks]=\"yAxisTicks\"\n          (dimensionsChanged)=\"updateYAxisWidth($event)\"\n        />\n        <svg:rect\n          class=\"bubble-chart-area\"\n          x=\"0\"\n          y=\"0\"\n          [attr.width]=\"dims.width\"\n          [attr.height]=\"dims.height\"\n          style=\"fill: rgb(255, 0, 0); opacity: 0; cursor: 'auto';\"\n          (mouseenter)=\"deactivateAll()\"\n        />\n        <svg:g [attr.clip-path]=\"clipPath\">\n          <svg:g *ngFor=\"let series of data; trackBy: trackBy\" [@animationState]=\"'active'\">\n            <svg:g\n              ngx-charts-bubble-series\n              [xScale]=\"xScale\"\n              [yScale]=\"yScale\"\n              [rScale]=\"rScale\"\n              [xScaleType]=\"xScaleType\"\n              [yScaleType]=\"yScaleType\"\n              [xAxisLabel]=\"xAxisLabel\"\n              [yAxisLabel]=\"yAxisLabel\"\n              [colors]=\"colors\"\n              [data]=\"series\"\n              [activeEntries]=\"activeEntries\"\n              [tooltipDisabled]=\"tooltipDisabled\"\n              [tooltipTemplate]=\"tooltipTemplate\"\n              (select)=\"onClick($event, series)\"\n              (activate)=\"onActivate($event)\"\n              (deactivate)=\"onDeactivate($event)\"\n            />\n          </svg:g>\n        </svg:g>\n      </svg:g>\n    </ngx-charts-chart>\n  `,\n                changeDetection: ChangeDetectionStrategy.OnPush,\n                encapsulation: ViewEncapsulation.None,\n                animations: [\n                    trigger('animationState', [\n                        transition(':leave', [\n                            style({\n                                opacity: 1\n                            }),\n                            animate(500, style({\n                                opacity: 0\n                            }))\n                        ])\n                    ])\n                ],\n                styles: [\".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:0}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:0}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\"]\n            }]\n    }], null, { showGridLines: [{\n            type: Input\n        }], legend: [{\n            type: Input\n        }], legendTitle: [{\n            type: Input\n        }], legendPosition: [{\n            type: Input\n        }], xAxis: [{\n            type: Input\n        }], yAxis: [{\n            type: Input\n        }], trimXAxisTicks: [{\n            type: Input\n        }], trimYAxisTicks: [{\n            type: Input\n        }], rotateXAxisTicks: [{\n            type: Input\n        }], maxXAxisTickLength: [{\n            type: Input\n        }], maxYAxisTickLength: [{\n            type: Input\n        }], roundDomains: [{\n            type: Input\n        }], maxRadius: [{\n            type: Input\n        }], minRadius: [{\n            type: Input\n        }], schemeType: [{\n            type: Input\n        }], tooltipDisabled: [{\n            type: Input\n        }], activate: [{\n            type: Output\n        }], deactivate: [{\n            type: Output\n        }], hideCircles: [{\n            type: HostListener,\n            args: ['mouseleave']\n        }], showXAxisLabel: [{\n            type: Input\n        }], showYAxisLabel: [{\n            type: Input\n        }], xAxisLabel: [{\n            type: Input\n        }], yAxisLabel: [{\n            type: Input\n        }], xAxisTickFormatting: [{\n            type: Input\n        }], yAxisTickFormatting: [{\n            type: Input\n        }], xAxisTicks: [{\n            type: Input\n        }], yAxisTicks: [{\n            type: Input\n        }], autoScale: [{\n            type: Input\n        }], xScaleMin: [{\n            type: Input\n        }], xScaleMax: [{\n            type: Input\n        }], yScaleMin: [{\n            type: Input\n        }], yScaleMax: [{\n            type: Input\n        }], tooltipTemplate: [{\n            type: ContentChild,\n            args: ['tooltipTemplate']\n        }] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(BubbleSeriesComponent, [{\n        type: Component,\n        args: [{\n                selector: 'g[ngx-charts-bubble-series]',\n                template: `\n    <svg:g *ngFor=\"let circle of circles; trackBy: trackBy\">\n      <svg:g [attr.transform]=\"circle.transform\">\n        <svg:g\n          ngx-charts-circle\n          [@animationState]=\"'active'\"\n          class=\"circle\"\n          [cx]=\"0\"\n          [cy]=\"0\"\n          [r]=\"circle.radius\"\n          [fill]=\"circle.color\"\n          [style.opacity]=\"circle.opacity\"\n          [class.active]=\"circle.isActive\"\n          [pointerEvents]=\"'all'\"\n          [data]=\"circle.value\"\n          [classNames]=\"circle.classNames\"\n          (select)=\"onClick(circle.data)\"\n          (activate)=\"activateCircle(circle)\"\n          (deactivate)=\"deactivateCircle(circle)\"\n          ngx-tooltip\n          [tooltipDisabled]=\"tooltipDisabled\"\n          [tooltipPlacement]=\"'top'\"\n          [tooltipType]=\"'tooltip'\"\n          [tooltipTitle]=\"tooltipTemplate ? undefined : getTooltipText(circle)\"\n          [tooltipTemplate]=\"tooltipTemplate\"\n          [tooltipContext]=\"circle.data\"\n        />\n      </svg:g>\n    </svg:g>\n  `,\n                changeDetection: ChangeDetectionStrategy.OnPush,\n                animations: [\n                    trigger('animationState', [\n                        transition(':enter', [\n                            style({\n                                opacity: 0,\n                                transform: 'scale(0)'\n                            }),\n                            animate(250, style({ opacity: 1, transform: 'scale(1)' }))\n                        ])\n                    ])\n                ]\n            }]\n    }], function () { return []; }, { tooltipDisabled: [{\n            type: Input\n        }], select: [{\n            type: Output\n        }], activate: [{\n            type: Output\n        }], deactivate: [{\n            type: Output\n        }], data: [{\n            type: Input\n        }], xScale: [{\n            type: Input\n        }], yScale: [{\n            type: Input\n        }], rScale: [{\n            type: Input\n        }], xScaleType: [{\n            type: Input\n        }], yScaleType: [{\n            type: Input\n        }], colors: [{\n            type: Input\n        }], visibleValue: [{\n            type: Input\n        }], activeEntries: [{\n            type: Input\n        }], xAxisLabel: [{\n            type: Input\n        }], yAxisLabel: [{\n            type: Input\n        }], tooltipTemplate: [{\n            type: Input\n        }] }); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(BubbleChartModule, { declarations: [BubbleChartComponent, BubbleSeriesComponent], imports: [ChartCommonModule], exports: [BubbleChartComponent, BubbleSeriesComponent] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(BubbleChartModule, [{\n        type: NgModule,\n        args: [{\n                imports: [ChartCommonModule],\n                declarations: [BubbleChartComponent, BubbleSeriesComponent],\n                exports: [BubbleChartComponent, BubbleSeriesComponent]\n            }]\n    }], null, null); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(HeatMapCellComponent, [{\n        type: Component,\n        args: [{\n                selector: 'g[ngx-charts-heat-map-cell]',\n                template: `\n    <svg:g [attr.transform]=\"transform\" class=\"cell\">\n      <defs *ngIf=\"gradient\">\n        <svg:g ngx-charts-svg-linear-gradient orientation=\"vertical\" [name]=\"gradientId\" [stops]=\"gradientStops\" />\n      </defs>\n      <svg:rect\n        [attr.fill]=\"gradient ? gradientUrl : fill\"\n        rx=\"3\"\n        [attr.width]=\"width\"\n        [attr.height]=\"height\"\n        class=\"cell\"\n        style=\"cursor: pointer\"\n        (click)=\"onClick()\"\n      />\n    </svg:g>\n  `,\n                changeDetection: ChangeDetectionStrategy.OnPush\n            }]\n    }], function () { return [{ type: ɵngcc0.ElementRef }]; }, { gradient: [{\n            type: Input\n        }], animations: [{\n            type: Input\n        }], select: [{\n            type: Output\n        }], activate: [{\n            type: Output\n        }], deactivate: [{\n            type: Output\n        }], onMouseEnter: [{\n            type: HostListener,\n            args: ['mouseenter']\n        }], onMouseLeave: [{\n            type: HostListener,\n            args: ['mouseleave']\n        }], fill: [{\n            type: Input\n        }], x: [{\n            type: Input\n        }], y: [{\n            type: Input\n        }], width: [{\n            type: Input\n        }], height: [{\n            type: Input\n        }], data: [{\n            type: Input\n        }], label: [{\n            type: Input\n        }] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(HeatCellSeriesComponent, [{\n        type: Component,\n        args: [{\n                selector: 'g[ngx-charts-heat-map-cell-series]',\n                template: `\n    <svg:g\n      ngx-charts-heat-map-cell\n      *ngFor=\"let c of cells; trackBy: trackBy\"\n      [x]=\"c.x\"\n      [y]=\"c.y\"\n      [width]=\"c.width\"\n      [height]=\"c.height\"\n      [fill]=\"c.fill\"\n      [data]=\"c.data\"\n      (select)=\"onClick(c.cell)\"\n      (activate)=\"activate.emit(c.cell)\"\n      (deactivate)=\"deactivate.emit(c.cell)\"\n      [gradient]=\"gradient\"\n      [animations]=\"animations\"\n      ngx-tooltip\n      [tooltipDisabled]=\"tooltipDisabled\"\n      [tooltipPlacement]=\"'top'\"\n      [tooltipType]=\"'tooltip'\"\n      [tooltipTitle]=\"tooltipTemplate ? undefined : tooltipText(c)\"\n      [tooltipTemplate]=\"tooltipTemplate\"\n      [tooltipContext]=\"{ series: c.series, name: c.label, value: c.data }\"\n    ></svg:g>\n  `,\n                changeDetection: ChangeDetectionStrategy.OnPush\n            }]\n    }], function () { return []; }, { tooltipDisabled: [{\n            type: Input\n        }], animations: [{\n            type: Input\n        }], select: [{\n            type: Output\n        }], activate: [{\n            type: Output\n        }], deactivate: [{\n            type: Output\n        }], tooltipText: [{\n            type: Input\n        }], data: [{\n            type: Input\n        }], colors: [{\n            type: Input\n        }], xScale: [{\n            type: Input\n        }], yScale: [{\n            type: Input\n        }], gradient: [{\n            type: Input\n        }], tooltipTemplate: [{\n            type: Input\n        }] }); })();\nconst ɵHeatMapComponent_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(HeatMapComponent);\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(HeatMapComponent, [{\n        type: Component,\n        args: [{\n                selector: 'ngx-charts-heat-map',\n                template: `\n    <ngx-charts-chart\n      [view]=\"[width, height]\"\n      [showLegend]=\"legend\"\n      [animations]=\"animations\"\n      [legendOptions]=\"legendOptions\"\n      (legendLabelClick)=\"onClick($event)\"\n    >\n      <svg:g [attr.transform]=\"transform\" class=\"heat-map chart\">\n        <svg:g\n          ngx-charts-x-axis\n          *ngIf=\"xAxis\"\n          [xScale]=\"xScale\"\n          [dims]=\"dims\"\n          [showLabel]=\"showXAxisLabel\"\n          [labelText]=\"xAxisLabel\"\n          [trimTicks]=\"trimXAxisTicks\"\n          [rotateTicks]=\"rotateXAxisTicks\"\n          [maxTickLength]=\"maxXAxisTickLength\"\n          [tickFormatting]=\"xAxisTickFormatting\"\n          [ticks]=\"xAxisTicks\"\n          (dimensionsChanged)=\"updateXAxisHeight($event)\"\n        ></svg:g>\n        <svg:g\n          ngx-charts-y-axis\n          *ngIf=\"yAxis\"\n          [yScale]=\"yScale\"\n          [dims]=\"dims\"\n          [showLabel]=\"showYAxisLabel\"\n          [labelText]=\"yAxisLabel\"\n          [trimTicks]=\"trimYAxisTicks\"\n          [maxTickLength]=\"maxYAxisTickLength\"\n          [tickFormatting]=\"yAxisTickFormatting\"\n          [ticks]=\"yAxisTicks\"\n          (dimensionsChanged)=\"updateYAxisWidth($event)\"\n        ></svg:g>\n        <svg:rect\n          *ngFor=\"let rect of rects\"\n          [attr.x]=\"rect.x\"\n          [attr.y]=\"rect.y\"\n          [attr.rx]=\"rect.rx\"\n          [attr.width]=\"rect.width\"\n          [attr.height]=\"rect.height\"\n          [attr.fill]=\"rect.fill\"\n        />\n        <svg:g\n          ngx-charts-heat-map-cell-series\n          [xScale]=\"xScale\"\n          [yScale]=\"yScale\"\n          [colors]=\"colors\"\n          [data]=\"results\"\n          [gradient]=\"gradient\"\n          [animations]=\"animations\"\n          [tooltipDisabled]=\"tooltipDisabled\"\n          [tooltipTemplate]=\"tooltipTemplate\"\n          [tooltipText]=\"tooltipText\"\n          (select)=\"onClick($event)\"\n          (activate)=\"onActivate($event, undefined)\"\n          (deactivate)=\"onDeactivate($event, undefined)\"\n        />\n      </svg:g>\n    </ngx-charts-chart>\n  `,\n                changeDetection: ChangeDetectionStrategy.OnPush,\n                encapsulation: ViewEncapsulation.None,\n                styles: [\".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:0}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:0}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\"]\n            }]\n    }], null, { legendTitle: [{\n            type: Input\n        }], legendPosition: [{\n            type: Input\n        }], innerPadding: [{\n            type: Input\n        }], trimXAxisTicks: [{\n            type: Input\n        }], trimYAxisTicks: [{\n            type: Input\n        }], rotateXAxisTicks: [{\n            type: Input\n        }], maxXAxisTickLength: [{\n            type: Input\n        }], maxYAxisTickLength: [{\n            type: Input\n        }], tooltipDisabled: [{\n            type: Input\n        }], activeEntries: [{\n            type: Input\n        }], activate: [{\n            type: Output\n        }], deactivate: [{\n            type: Output\n        }], legend: [{\n            type: Input\n        }], xAxis: [{\n            type: Input\n        }], yAxis: [{\n            type: Input\n        }], showXAxisLabel: [{\n            type: Input\n        }], showYAxisLabel: [{\n            type: Input\n        }], xAxisLabel: [{\n            type: Input\n        }], yAxisLabel: [{\n            type: Input\n        }], gradient: [{\n            type: Input\n        }], xAxisTickFormatting: [{\n            type: Input\n        }], yAxisTickFormatting: [{\n            type: Input\n        }], xAxisTicks: [{\n            type: Input\n        }], yAxisTicks: [{\n            type: Input\n        }], tooltipText: [{\n            type: Input\n        }], min: [{\n            type: Input\n        }], max: [{\n            type: Input\n        }], tooltipTemplate: [{\n            type: ContentChild,\n            args: ['tooltipTemplate']\n        }] }); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(HeatMapModule, { declarations: [HeatMapCellComponent, HeatCellSeriesComponent, HeatMapComponent], imports: [ChartCommonModule], exports: [HeatMapCellComponent, HeatCellSeriesComponent, HeatMapComponent] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(HeatMapModule, [{\n        type: NgModule,\n        args: [{\n                imports: [ChartCommonModule],\n                declarations: [HeatMapCellComponent, HeatCellSeriesComponent, HeatMapComponent],\n                exports: [HeatMapCellComponent, HeatCellSeriesComponent, HeatMapComponent]\n            }]\n    }], null, null); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(LineComponent, [{\n        type: Component,\n        args: [{\n                selector: 'g[ngx-charts-line]',\n                template: `\n    <svg:path\n      [@animationState]=\"'active'\"\n      class=\"line\"\n      [attr.d]=\"initialPath\"\n      [attr.fill]=\"fill\"\n      [attr.stroke]=\"stroke\"\n      stroke-width=\"1.5px\"\n    />\n  `,\n                changeDetection: ChangeDetectionStrategy.OnPush,\n                animations: [\n                    trigger('animationState', [\n                        transition(':enter', [\n                            style({\n                                strokeDasharray: 2000,\n                                strokeDashoffset: 2000\n                            }),\n                            animate(1000, style({\n                                strokeDashoffset: 0\n                            }))\n                        ])\n                    ])\n                ]\n            }]\n    }], function () { return [{ type: ɵngcc0.ElementRef }]; }, { fill: [{\n            type: Input\n        }], animations: [{\n            type: Input\n        }], select: [{\n            type: Output\n        }], path: [{\n            type: Input\n        }], stroke: [{\n            type: Input\n        }], data: [{\n            type: Input\n        }] }); })();\nconst ɵLineChartComponent_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(LineChartComponent);\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(LineChartComponent, [{\n        type: Component,\n        args: [{\n                selector: 'ngx-charts-line-chart',\n                template: `\n    <ngx-charts-chart\n      [view]=\"[width, height]\"\n      [showLegend]=\"legend\"\n      [legendOptions]=\"legendOptions\"\n      [activeEntries]=\"activeEntries\"\n      [animations]=\"animations\"\n      (legendLabelClick)=\"onClick($event)\"\n      (legendLabelActivate)=\"onActivate($event)\"\n      (legendLabelDeactivate)=\"onDeactivate($event)\"\n    >\n      <svg:defs>\n        <svg:clipPath [attr.id]=\"clipPathId\">\n          <svg:rect\n            [attr.width]=\"dims.width + 10\"\n            [attr.height]=\"dims.height + 10\"\n            [attr.transform]=\"'translate(-5, -5)'\"\n          />\n        </svg:clipPath>\n      </svg:defs>\n      <svg:g [attr.transform]=\"transform\" class=\"line-chart chart\">\n        <svg:g\n          ngx-charts-x-axis\n          *ngIf=\"xAxis\"\n          [xScale]=\"xScale\"\n          [dims]=\"dims\"\n          [showGridLines]=\"showGridLines\"\n          [showLabel]=\"showXAxisLabel\"\n          [labelText]=\"xAxisLabel\"\n          [trimTicks]=\"trimXAxisTicks\"\n          [rotateTicks]=\"rotateXAxisTicks\"\n          [maxTickLength]=\"maxXAxisTickLength\"\n          [tickFormatting]=\"xAxisTickFormatting\"\n          [ticks]=\"xAxisTicks\"\n          (dimensionsChanged)=\"updateXAxisHeight($event)\"\n        ></svg:g>\n        <svg:g\n          ngx-charts-y-axis\n          *ngIf=\"yAxis\"\n          [yScale]=\"yScale\"\n          [dims]=\"dims\"\n          [showGridLines]=\"showGridLines\"\n          [showLabel]=\"showYAxisLabel\"\n          [labelText]=\"yAxisLabel\"\n          [trimTicks]=\"trimYAxisTicks\"\n          [maxTickLength]=\"maxYAxisTickLength\"\n          [tickFormatting]=\"yAxisTickFormatting\"\n          [ticks]=\"yAxisTicks\"\n          [referenceLines]=\"referenceLines\"\n          [showRefLines]=\"showRefLines\"\n          [showRefLabels]=\"showRefLabels\"\n          (dimensionsChanged)=\"updateYAxisWidth($event)\"\n        ></svg:g>\n        <svg:g [attr.clip-path]=\"clipPath\">\n          <svg:g *ngFor=\"let series of results; trackBy: trackBy\" [@animationState]=\"'active'\">\n            <svg:g\n              ngx-charts-line-series\n              [xScale]=\"xScale\"\n              [yScale]=\"yScale\"\n              [colors]=\"colors\"\n              [data]=\"series\"\n              [activeEntries]=\"activeEntries\"\n              [scaleType]=\"scaleType\"\n              [curve]=\"curve\"\n              [rangeFillOpacity]=\"rangeFillOpacity\"\n              [hasRange]=\"hasRange\"\n              [animations]=\"animations\"\n            />\n          </svg:g>\n\n          <svg:g *ngIf=\"!tooltipDisabled\" (mouseleave)=\"hideCircles()\">\n            <svg:g\n              ngx-charts-tooltip-area\n              [dims]=\"dims\"\n              [xSet]=\"xSet\"\n              [xScale]=\"xScale\"\n              [yScale]=\"yScale\"\n              [results]=\"results\"\n              [colors]=\"colors\"\n              [tooltipDisabled]=\"tooltipDisabled\"\n              [tooltipTemplate]=\"seriesTooltipTemplate\"\n              (hover)=\"updateHoveredVertical($event)\"\n            />\n\n            <svg:g *ngFor=\"let series of results\">\n              <svg:g\n                ngx-charts-circle-series\n                [xScale]=\"xScale\"\n                [yScale]=\"yScale\"\n                [colors]=\"colors\"\n                [data]=\"series\"\n                [scaleType]=\"scaleType\"\n                [visibleValue]=\"hoveredVertical\"\n                [activeEntries]=\"activeEntries\"\n                [tooltipDisabled]=\"tooltipDisabled\"\n                [tooltipTemplate]=\"tooltipTemplate\"\n                (select)=\"onClick($event)\"\n                (activate)=\"onActivate($event)\"\n                (deactivate)=\"onDeactivate($event)\"\n              />\n            </svg:g>\n          </svg:g>\n        </svg:g>\n      </svg:g>\n      <svg:g\n        ngx-charts-timeline\n        *ngIf=\"timeline && scaleType != 'ordinal'\"\n        [attr.transform]=\"timelineTransform\"\n        [results]=\"results\"\n        [view]=\"[timelineWidth, height]\"\n        [height]=\"timelineHeight\"\n        [scheme]=\"scheme\"\n        [customColors]=\"customColors\"\n        [scaleType]=\"scaleType\"\n        [legend]=\"legend\"\n        (onDomainChange)=\"updateDomain($event)\"\n      >\n        <svg:g *ngFor=\"let series of results; trackBy: trackBy\">\n          <svg:g\n            ngx-charts-line-series\n            [xScale]=\"timelineXScale\"\n            [yScale]=\"timelineYScale\"\n            [colors]=\"colors\"\n            [data]=\"series\"\n            [scaleType]=\"scaleType\"\n            [curve]=\"curve\"\n            [hasRange]=\"hasRange\"\n            [animations]=\"animations\"\n          />\n        </svg:g>\n      </svg:g>\n    </ngx-charts-chart>\n  `,\n                encapsulation: ViewEncapsulation.None,\n                changeDetection: ChangeDetectionStrategy.OnPush,\n                animations: [\n                    trigger('animationState', [\n                        transition(':leave', [\n                            style({\n                                opacity: 1\n                            }),\n                            animate(500, style({\n                                opacity: 0\n                            }))\n                        ])\n                    ])\n                ],\n                styles: [\".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:0}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:0}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\"]\n            }]\n    }], null, { legendTitle: [{\n            type: Input\n        }], legendPosition: [{\n            type: Input\n        }], showGridLines: [{\n            type: Input\n        }], curve: [{\n            type: Input\n        }], activeEntries: [{\n            type: Input\n        }], trimXAxisTicks: [{\n            type: Input\n        }], trimYAxisTicks: [{\n            type: Input\n        }], rotateXAxisTicks: [{\n            type: Input\n        }], maxXAxisTickLength: [{\n            type: Input\n        }], maxYAxisTickLength: [{\n            type: Input\n        }], roundDomains: [{\n            type: Input\n        }], tooltipDisabled: [{\n            type: Input\n        }], showRefLines: [{\n            type: Input\n        }], showRefLabels: [{\n            type: Input\n        }], activate: [{\n            type: Output\n        }], deactivate: [{\n            type: Output\n        }], hideCircles: [{\n            type: HostListener,\n            args: ['mouseleave']\n        }], legend: [{\n            type: Input\n        }], xAxis: [{\n            type: Input\n        }], yAxis: [{\n            type: Input\n        }], showXAxisLabel: [{\n            type: Input\n        }], showYAxisLabel: [{\n            type: Input\n        }], xAxisLabel: [{\n            type: Input\n        }], yAxisLabel: [{\n            type: Input\n        }], autoScale: [{\n            type: Input\n        }], timeline: [{\n            type: Input\n        }], gradient: [{\n            type: Input\n        }], schemeType: [{\n            type: Input\n        }], rangeFillOpacity: [{\n            type: Input\n        }], xAxisTickFormatting: [{\n            type: Input\n        }], yAxisTickFormatting: [{\n            type: Input\n        }], xAxisTicks: [{\n            type: Input\n        }], yAxisTicks: [{\n            type: Input\n        }], referenceLines: [{\n            type: Input\n        }], xScaleMin: [{\n            type: Input\n        }], xScaleMax: [{\n            type: Input\n        }], yScaleMin: [{\n            type: Input\n        }], yScaleMax: [{\n            type: Input\n        }], tooltipTemplate: [{\n            type: ContentChild,\n            args: ['tooltipTemplate']\n        }], seriesTooltipTemplate: [{\n            type: ContentChild,\n            args: ['seriesTooltipTemplate']\n        }] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(LineSeriesComponent, [{\n        type: Component,\n        args: [{\n                selector: 'g[ngx-charts-line-series]',\n                template: `\n    <svg:g>\n      <defs>\n        <svg:g\n          ngx-charts-svg-linear-gradient\n          *ngIf=\"hasGradient\"\n          orientation=\"vertical\"\n          [name]=\"gradientId\"\n          [stops]=\"gradientStops\"\n        />\n      </defs>\n      <svg:g\n        ngx-charts-area\n        class=\"line-highlight\"\n        [data]=\"data\"\n        [path]=\"areaPath\"\n        [fill]=\"hasGradient ? gradientUrl : colors.getColor(data.name)\"\n        [opacity]=\"0.25\"\n        [startOpacity]=\"0\"\n        [gradient]=\"true\"\n        [stops]=\"areaGradientStops\"\n        [class.active]=\"isActive(data)\"\n        [class.inactive]=\"isInactive(data)\"\n        [animations]=\"animations\"\n      />\n      <svg:g\n        ngx-charts-line\n        class=\"line-series\"\n        [data]=\"data\"\n        [path]=\"path\"\n        [stroke]=\"stroke\"\n        [animations]=\"animations\"\n        [class.active]=\"isActive(data)\"\n        [class.inactive]=\"isInactive(data)\"\n      />\n      <svg:g\n        ngx-charts-area\n        *ngIf=\"hasRange\"\n        class=\"line-series-range\"\n        [data]=\"data\"\n        [path]=\"outerPath\"\n        [fill]=\"hasGradient ? gradientUrl : colors.getColor(data.name)\"\n        [class.active]=\"isActive(data)\"\n        [class.inactive]=\"isInactive(data)\"\n        [opacity]=\"rangeFillOpacity\"\n        [animations]=\"animations\"\n      />\n    </svg:g>\n  `,\n                changeDetection: ChangeDetectionStrategy.OnPush\n            }]\n    }], function () { return []; }, { animations: [{\n            type: Input\n        }], data: [{\n            type: Input\n        }], xScale: [{\n            type: Input\n        }], yScale: [{\n            type: Input\n        }], colors: [{\n            type: Input\n        }], scaleType: [{\n            type: Input\n        }], curve: [{\n            type: Input\n        }], activeEntries: [{\n            type: Input\n        }], rangeFillOpacity: [{\n            type: Input\n        }], hasRange: [{\n            type: Input\n        }] }); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(LineChartModule, { declarations: [LineComponent, LineChartComponent, LineSeriesComponent], imports: [ChartCommonModule], exports: [LineComponent, LineChartComponent, LineSeriesComponent] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(LineChartModule, [{\n        type: NgModule,\n        args: [{\n                imports: [ChartCommonModule],\n                declarations: [LineComponent, LineChartComponent, LineSeriesComponent],\n                exports: [LineComponent, LineChartComponent, LineSeriesComponent]\n            }]\n    }], null, null); })();\nconst ɵPolarChartComponent_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(PolarChartComponent);\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(PolarChartComponent, [{\n        type: Component,\n        args: [{\n                selector: 'ngx-charts-polar-chart',\n                template: `\n    <ngx-charts-chart\n      [view]=\"[width, height]\"\n      [showLegend]=\"legend\"\n      [legendOptions]=\"legendOptions\"\n      [activeEntries]=\"activeEntries\"\n      [animations]=\"animations\"\n      (legendLabelClick)=\"onClick($event)\"\n      (legendLabelActivate)=\"onActivate($event)\"\n      (legendLabelDeactivate)=\"onDeactivate($event)\"\n    >\n      <svg:g class=\"polar-chart chart\" [attr.transform]=\"transform\">\n        <svg:g [attr.transform]=\"transformPlot\">\n          <svg:circle class=\"polar-chart-background\" cx=\"0\" cy=\"0\" [attr.r]=\"this.outerRadius\" />\n          <svg:g *ngIf=\"showGridLines\">\n            <svg:circle\n              *ngFor=\"let r of radiusTicks\"\n              class=\"gridline-path radial-gridline-path\"\n              cx=\"0\"\n              cy=\"0\"\n              [attr.r]=\"r\"\n            />\n          </svg:g>\n          <svg:g *ngIf=\"xAxis\">\n            <svg:g\n              ngx-charts-pie-label\n              *ngFor=\"let tick of thetaTicks\"\n              [data]=\"tick\"\n              [radius]=\"outerRadius\"\n              [label]=\"tick.label\"\n              [max]=\"outerRadius\"\n              [value]=\"showGridLines ? 1 : outerRadius\"\n              [explodeSlices]=\"true\"\n              [animations]=\"animations\"\n              [labelTrim]=\"labelTrim\"\n              [labelTrimSize]=\"labelTrimSize\"\n            ></svg:g>\n          </svg:g>\n        </svg:g>\n        <svg:g\n          ngx-charts-y-axis\n          [attr.transform]=\"transformYAxis\"\n          *ngIf=\"yAxis\"\n          [yScale]=\"yAxisScale\"\n          [dims]=\"yAxisDims\"\n          [showGridLines]=\"showGridLines\"\n          [showLabel]=\"showYAxisLabel\"\n          [labelText]=\"yAxisLabel\"\n          [trimTicks]=\"trimYAxisTicks\"\n          [maxTickLength]=\"maxYAxisTickLength\"\n          [tickFormatting]=\"yAxisTickFormatting\"\n          (dimensionsChanged)=\"updateYAxisWidth($event)\"\n        ></svg:g>\n        <svg:g\n          ngx-charts-axis-label\n          *ngIf=\"xAxis && showXAxisLabel\"\n          [label]=\"xAxisLabel\"\n          [offset]=\"labelOffset\"\n          [orient]=\"'bottom'\"\n          [height]=\"dims.height\"\n          [width]=\"dims.width\"\n        ></svg:g>\n        <svg:g [attr.transform]=\"transformPlot\">\n          <svg:g *ngFor=\"let series of results; trackBy: trackBy\" [@animationState]=\"'active'\">\n            <svg:g\n              ngx-charts-polar-series\n              [gradient]=\"gradient\"\n              [xScale]=\"xScale\"\n              [yScale]=\"yScale\"\n              [colors]=\"colors\"\n              [data]=\"series\"\n              [activeEntries]=\"activeEntries\"\n              [scaleType]=\"scaleType\"\n              [curve]=\"curve\"\n              [rangeFillOpacity]=\"rangeFillOpacity\"\n              [animations]=\"animations\"\n              [tooltipDisabled]=\"tooltipDisabled\"\n              [tooltipTemplate]=\"tooltipTemplate\"\n              (select)=\"onClick($event)\"\n              (activate)=\"onActivate($event)\"\n              (deactivate)=\"onDeactivate($event)\"\n            />\n          </svg:g>\n        </svg:g>\n      </svg:g>\n    </ngx-charts-chart>\n  `,\n                encapsulation: ViewEncapsulation.None,\n                changeDetection: ChangeDetectionStrategy.OnPush,\n                animations: [\n                    trigger('animationState', [\n                        transition(':leave', [\n                            style({\n                                opacity: 1\n                            }),\n                            animate(500, style({\n                                opacity: 0\n                            }))\n                        ])\n                    ])\n                ],\n                styles: [\".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:0}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:0}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\", \".pie-label{font-size:11px}.pie-label.animation{-webkit-animation:750ms ease-in fadeIn;animation:750ms ease-in fadeIn}@-webkit-keyframes fadeIn{from{opacity:0}to{opacity:1}}@keyframes fadeIn{from{opacity:0}to{opacity:1}}.pie-label-line{stroke-dasharray:100%}.pie-label-line.animation{-webkit-animation:3s linear drawOut;animation:3s linear drawOut;-webkit-transition:d 750ms;transition:d 750ms}@-webkit-keyframes drawOut{from{stroke-dashoffset:100%}to{stroke-dashoffset:0}}@keyframes drawOut{from{stroke-dashoffset:100%}to{stroke-dashoffset:0}}\", \".polar-chart .polar-chart-background{fill:none}.polar-chart .radial-gridline-path{stroke-dasharray:10 10;fill:none}.polar-chart .pie-label-line{stroke:#2f3646}.polar-charts-series .polar-series-area,.polar-series-path{pointer-events:none}\"]\n            }]\n    }], null, { legendTitle: [{\n            type: Input\n        }], legendPosition: [{\n            type: Input\n        }], showGridLines: [{\n            type: Input\n        }], curve: [{\n            type: Input\n        }], activeEntries: [{\n            type: Input\n        }], rangeFillOpacity: [{\n            type: Input\n        }], trimYAxisTicks: [{\n            type: Input\n        }], maxYAxisTickLength: [{\n            type: Input\n        }], roundDomains: [{\n            type: Input\n        }], tooltipDisabled: [{\n            type: Input\n        }], showSeriesOnHover: [{\n            type: Input\n        }], gradient: [{\n            type: Input\n        }], yAxisMinScale: [{\n            type: Input\n        }], labelTrim: [{\n            type: Input\n        }], labelTrimSize: [{\n            type: Input\n        }], activate: [{\n            type: Output\n        }], deactivate: [{\n            type: Output\n        }], legend: [{\n            type: Input\n        }], xAxis: [{\n            type: Input\n        }], yAxis: [{\n            type: Input\n        }], showXAxisLabel: [{\n            type: Input\n        }], showYAxisLabel: [{\n            type: Input\n        }], xAxisLabel: [{\n            type: Input\n        }], yAxisLabel: [{\n            type: Input\n        }], autoScale: [{\n            type: Input\n        }], schemeType: [{\n            type: Input\n        }], xAxisTickFormatting: [{\n            type: Input\n        }], yAxisTickFormatting: [{\n            type: Input\n        }], tooltipTemplate: [{\n            type: ContentChild,\n            args: ['tooltipTemplate']\n        }] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(PolarSeriesComponent, [{\n        type: Component,\n        args: [{\n                selector: 'g[ngx-charts-polar-series]',\n                template: `\n    <svg:g class=\"polar-charts-series\">\n      <defs>\n        <svg:g\n          ngx-charts-svg-radial-gradient\n          *ngIf=\"hasGradient\"\n          orientation=\"vertical\"\n          [color]=\"seriesColor\"\n          [name]=\"gradientId\"\n          [startOpacity]=\"0.25\"\n          [endOpacity]=\"1\"\n          [stops]=\"gradientStops\"\n        />\n      </defs>\n      <svg:g\n        ngx-charts-line\n        class=\"polar-series-path\"\n        [path]=\"path\"\n        [stroke]=\"hasGradient ? gradientUrl : seriesColor\"\n        [class.active]=\"active\"\n        [class.inactive]=\"inactive\"\n        [attr.fill-opacity]=\"rangeFillOpacity\"\n        [fill]=\"hasGradient ? gradientUrl : seriesColor\"\n        [animations]=\"animations\"\n      />\n      <svg:g\n        ngx-charts-circle\n        *ngFor=\"let circle of circles\"\n        class=\"circle\"\n        [cx]=\"circle.cx\"\n        [cy]=\"circle.cy\"\n        [r]=\"circleRadius\"\n        [fill]=\"circle.color\"\n        [style.opacity]=\"inactive ? 0.2 : 1\"\n        ngx-tooltip\n        [tooltipDisabled]=\"tooltipDisabled\"\n        [tooltipPlacement]=\"'top'\"\n        tooltipType=\"tooltip\"\n        [tooltipTitle]=\"tooltipTemplate ? undefined : tooltipText(circle)\"\n        [tooltipTemplate]=\"tooltipTemplate\"\n        [tooltipContext]=\"circle.data\"\n        (select)=\"select.emit(circle.data)\"\n        (activate)=\"activate.emit({ name: circle.data.series })\"\n        (deactivate)=\"deactivate.emit({ name: circle.data.series })\"\n      ></svg:g>\n    </svg:g>\n  `,\n                changeDetection: ChangeDetectionStrategy.OnPush\n            }]\n    }], function () { return []; }, { tooltipDisabled: [{\n            type: Input\n        }], gradient: [{\n            type: Input\n        }], animations: [{\n            type: Input\n        }], select: [{\n            type: Output\n        }], activate: [{\n            type: Output\n        }], deactivate: [{\n            type: Output\n        }], tooltipText: [{\n            type: Input\n        }], name: [{\n            type: Input\n        }], data: [{\n            type: Input\n        }], xScale: [{\n            type: Input\n        }], yScale: [{\n            type: Input\n        }], colors: [{\n            type: Input\n        }], scaleType: [{\n            type: Input\n        }], curve: [{\n            type: Input\n        }], activeEntries: [{\n            type: Input\n        }], rangeFillOpacity: [{\n            type: Input\n        }], tooltipTemplate: [{\n            type: Input\n        }] }); })();\nconst ɵAdvancedPieChartComponent_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(AdvancedPieChartComponent);\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(AdvancedPieChartComponent, [{\n        type: Component,\n        args: [{\n                selector: 'ngx-charts-advanced-pie-chart',\n                template: `\n    <div [style.width.px]=\"width\" [style.height.px]=\"height\">\n      <div class=\"advanced-pie chart\" [style.width.px]=\"dims.width\" [style.height.px]=\"dims.height\">\n        <ngx-charts-chart [view]=\"[width, height]\" [showLegend]=\"false\" [animations]=\"animations\">\n          <svg:g [attr.transform]=\"transform\" class=\"pie chart\">\n            <svg:g\n              ngx-charts-pie-series\n              [colors]=\"colors\"\n              [series]=\"results\"\n              [innerRadius]=\"innerRadius\"\n              [activeEntries]=\"activeEntries\"\n              [outerRadius]=\"outerRadius\"\n              [gradient]=\"gradient\"\n              [tooltipDisabled]=\"tooltipDisabled\"\n              [tooltipTemplate]=\"tooltipTemplate\"\n              [tooltipText]=\"tooltipText\"\n              (select)=\"onClick($event)\"\n              (activate)=\"onActivate($event)\"\n              (deactivate)=\"onDeactivate($event)\"\n              [animations]=\"animations\"\n            ></svg:g>\n          </svg:g>\n        </ngx-charts-chart>\n      </div>\n      <div class=\"advanced-pie-legend-wrapper\" [style.width.px]=\"width - dims.width\" [style.height.px]=\"height\">\n        <ngx-charts-advanced-legend\n          [data]=\"results\"\n          [colors]=\"colors\"\n          [width]=\"width - dims.width - margin[1]\"\n          [label]=\"label\"\n          [animations]=\"animations\"\n          [valueFormatting]=\"valueFormatting\"\n          [labelFormatting]=\"nameFormatting\"\n          [percentageFormatting]=\"percentageFormatting\"\n          (select)=\"onClick($event)\"\n          (activate)=\"onActivate($event, true)\"\n          (deactivate)=\"onDeactivate($event, true)\"\n        >\n        </ngx-charts-advanced-legend>\n      </div>\n    </div>\n  `,\n                encapsulation: ViewEncapsulation.None,\n                changeDetection: ChangeDetectionStrategy.OnPush,\n                styles: [\".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:0}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:0}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\", \".advanced-pie{display:inline-block;float:left}.advanced-pie-legend-wrapper{display:inline-block}\"]\n            }]\n    }], null, { activeEntries: [{\n            type: Input\n        }], tooltipDisabled: [{\n            type: Input\n        }], label: [{\n            type: Input\n        }], activate: [{\n            type: Output\n        }], deactivate: [{\n            type: Output\n        }], gradient: [{\n            type: Input\n        }], tooltipText: [{\n            type: Input\n        }], tooltipTemplate: [{\n            type: ContentChild,\n            args: ['tooltipTemplate']\n        }], valueFormatting: [{\n            type: Input\n        }], nameFormatting: [{\n            type: Input\n        }], percentageFormatting: [{\n            type: Input\n        }] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(PieLabelComponent, [{\n        type: Component,\n        args: [{\n                selector: 'g[ngx-charts-pie-label]',\n                template: `\n    <title>{{ label }}</title>\n    <svg:g [attr.transform]=\"attrTransform\" [style.transform]=\"styleTransform\" [style.transition]=\"textTransition\">\n      <svg:text\n        class=\"pie-label\"\n        [class.animation]=\"animations\"\n        dy=\".35em\"\n        [style.textAnchor]=\"textAnchor()\"\n        [style.shapeRendering]=\"'crispEdges'\"\n      >\n        {{ labelTrim ? trimLabel(label, labelTrimSize) : label }}\n      </svg:text>\n    </svg:g>\n    <svg:path\n      [attr.d]=\"line\"\n      [attr.stroke]=\"color\"\n      fill=\"none\"\n      class=\"pie-label-line line\"\n      [class.animation]=\"animations\"\n    ></svg:path>\n  `,\n                changeDetection: ChangeDetectionStrategy.OnPush\n            }]\n    }], function () { return []; }, { animations: [{\n            type: Input\n        }], labelTrim: [{\n            type: Input\n        }], labelTrimSize: [{\n            type: Input\n        }], data: [{\n            type: Input\n        }], radius: [{\n            type: Input\n        }], label: [{\n            type: Input\n        }], color: [{\n            type: Input\n        }], max: [{\n            type: Input\n        }], value: [{\n            type: Input\n        }], explodeSlices: [{\n            type: Input\n        }] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(PieArcComponent, [{\n        type: Component,\n        args: [{\n                selector: 'g[ngx-charts-pie-arc]',\n                template: `\n    <svg:g class=\"arc-group\">\n      <svg:defs *ngIf=\"gradient\">\n        <svg:g\n          ngx-charts-svg-radial-gradient\n          [color]=\"fill\"\n          orientation=\"vertical\"\n          [name]=\"radialGradientId\"\n          [startOpacity]=\"startOpacity\"\n        />\n      </svg:defs>\n      <svg:path\n        [attr.d]=\"path\"\n        class=\"arc\"\n        [class.active]=\"isActive\"\n        [attr.fill]=\"getGradient()\"\n        (click)=\"onClick()\"\n        (dblclick)=\"onDblClick($event)\"\n        (mouseenter)=\"activate.emit(data)\"\n        (mouseleave)=\"deactivate.emit(data)\"\n        [style.pointer-events]=\"getPointerEvents()\"\n      />\n    </svg:g>\n  `,\n                changeDetection: ChangeDetectionStrategy.OnPush\n            }]\n    }], function () { return [{ type: ɵngcc0.ElementRef }]; }, { startAngle: [{\n            type: Input\n        }], endAngle: [{\n            type: Input\n        }], cornerRadius: [{\n            type: Input\n        }], explodeSlices: [{\n            type: Input\n        }], gradient: [{\n            type: Input\n        }], animate: [{\n            type: Input\n        }], pointerEvents: [{\n            type: Input\n        }], isActive: [{\n            type: Input\n        }], select: [{\n            type: Output\n        }], activate: [{\n            type: Output\n        }], deactivate: [{\n            type: Output\n        }], dblclick: [{\n            type: Output\n        }], fill: [{\n            type: Input\n        }], innerRadius: [{\n            type: Input\n        }], outerRadius: [{\n            type: Input\n        }], value: [{\n            type: Input\n        }], max: [{\n            type: Input\n        }], data: [{\n            type: Input\n        }] }); })();\nconst ɵPieChartComponent_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(PieChartComponent);\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(PieChartComponent, [{\n        type: Component,\n        args: [{\n                selector: 'ngx-charts-pie-chart',\n                template: `\n    <ngx-charts-chart\n      [view]=\"[width, height]\"\n      [showLegend]=\"legend\"\n      [legendOptions]=\"legendOptions\"\n      [activeEntries]=\"activeEntries\"\n      [animations]=\"animations\"\n      (legendLabelActivate)=\"onActivate($event, true)\"\n      (legendLabelDeactivate)=\"onDeactivate($event, true)\"\n      (legendLabelClick)=\"onClick($event)\"\n    >\n      <svg:g [attr.transform]=\"translation\" class=\"pie-chart chart\">\n        <svg:g\n          ngx-charts-pie-series\n          [colors]=\"colors\"\n          [series]=\"data\"\n          [showLabels]=\"labels\"\n          [labelFormatting]=\"labelFormatting\"\n          [trimLabels]=\"trimLabels\"\n          [maxLabelLength]=\"maxLabelLength\"\n          [activeEntries]=\"activeEntries\"\n          [innerRadius]=\"innerRadius\"\n          [outerRadius]=\"outerRadius\"\n          [explodeSlices]=\"explodeSlices\"\n          [gradient]=\"gradient\"\n          [animations]=\"animations\"\n          [tooltipDisabled]=\"tooltipDisabled\"\n          [tooltipTemplate]=\"tooltipTemplate\"\n          [tooltipText]=\"tooltipText\"\n          (dblclick)=\"dblclick.emit($event)\"\n          (select)=\"onClick($event)\"\n          (activate)=\"onActivate($event)\"\n          (deactivate)=\"onDeactivate($event)\"\n        />\n      </svg:g>\n    </ngx-charts-chart>\n  `,\n                encapsulation: ViewEncapsulation.None,\n                changeDetection: ChangeDetectionStrategy.OnPush,\n                styles: [\".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:0}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:0}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\", \".pie-label{font-size:11px}.pie-label.animation{-webkit-animation:750ms ease-in fadeIn;animation:750ms ease-in fadeIn}@-webkit-keyframes fadeIn{from{opacity:0}to{opacity:1}}@keyframes fadeIn{from{opacity:0}to{opacity:1}}.pie-label-line{stroke-dasharray:100%}.pie-label-line.animation{-webkit-animation:3s linear drawOut;animation:3s linear drawOut;-webkit-transition:d 750ms;transition:d 750ms}@-webkit-keyframes drawOut{from{stroke-dashoffset:100%}to{stroke-dashoffset:0}}@keyframes drawOut{from{stroke-dashoffset:100%}to{stroke-dashoffset:0}}\"]\n            }]\n    }], null, { labels: [{\n            type: Input\n        }], legend: [{\n            type: Input\n        }], legendTitle: [{\n            type: Input\n        }], legendPosition: [{\n            type: Input\n        }], explodeSlices: [{\n            type: Input\n        }], doughnut: [{\n            type: Input\n        }], arcWidth: [{\n            type: Input\n        }], activeEntries: [{\n            type: Input\n        }], tooltipDisabled: [{\n            type: Input\n        }], trimLabels: [{\n            type: Input\n        }], maxLabelLength: [{\n            type: Input\n        }], dblclick: [{\n            type: Output\n        }], select: [{\n            type: Output\n        }], activate: [{\n            type: Output\n        }], deactivate: [{\n            type: Output\n        }], margins: [{\n            type: Input\n        }], gradient: [{\n            type: Input\n        }], labelFormatting: [{\n            type: Input\n        }], tooltipText: [{\n            type: Input\n        }], tooltipTemplate: [{\n            type: ContentChild,\n            args: ['tooltipTemplate']\n        }] }); })();\nconst ɵPieGridComponent_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(PieGridComponent);\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(PieGridComponent, [{\n        type: Component,\n        args: [{\n                selector: 'ngx-charts-pie-grid',\n                template: `\n    <ngx-charts-chart [view]=\"[width, height]\" [showLegend]=\"false\" [animations]=\"animations\">\n      <svg:g [attr.transform]=\"transform\" class=\"pie-grid chart\">\n        <svg:g *ngFor=\"let series of series\" class=\"pie-grid-item\" [attr.transform]=\"series.transform\">\n          <svg:g\n            ngx-charts-pie-grid-series\n            [colors]=\"series.colors\"\n            [data]=\"series.data\"\n            [innerRadius]=\"series.innerRadius\"\n            [outerRadius]=\"series.outerRadius\"\n            [animations]=\"animations\"\n            (select)=\"onClick($event)\"\n            ngx-tooltip\n            [tooltipDisabled]=\"tooltipDisabled\"\n            [tooltipPlacement]=\"'top'\"\n            [tooltipType]=\"'tooltip'\"\n            [tooltipTitle]=\"tooltipTemplate ? undefined : tooltipText({ data: series })\"\n            [tooltipTemplate]=\"tooltipTemplate\"\n            [tooltipContext]=\"series.data[0].data\"\n            (activate)=\"onActivate($event)\"\n            (deactivate)=\"onDeactivate($event)\"\n          />\n          <svg:text\n            *ngIf=\"animations\"\n            class=\"label percent-label\"\n            dy=\"-0.5em\"\n            x=\"0\"\n            y=\"5\"\n            ngx-charts-count-up\n            [countTo]=\"series.percent\"\n            [countSuffix]=\"'%'\"\n            text-anchor=\"middle\"\n          ></svg:text>\n          <svg:text *ngIf=\"!animations\" class=\"label percent-label\" dy=\"-0.5em\" x=\"0\" y=\"5\" text-anchor=\"middle\">\n            {{ series.percent.toLocaleString() }}\n          </svg:text>\n          <svg:text class=\"label\" dy=\"0.5em\" x=\"0\" y=\"5\" text-anchor=\"middle\">\n            {{ series.label }}\n          </svg:text>\n          <svg:text\n            *ngIf=\"animations\"\n            class=\"label\"\n            dy=\"1.23em\"\n            x=\"0\"\n            [attr.y]=\"series.outerRadius\"\n            text-anchor=\"middle\"\n            ngx-charts-count-up\n            [countTo]=\"series.total\"\n            [countPrefix]=\"label + ': '\"\n          ></svg:text>\n          <svg:text\n            *ngIf=\"!animations\"\n            class=\"label\"\n            dy=\"1.23em\"\n            x=\"0\"\n            [attr.y]=\"series.outerRadius\"\n            text-anchor=\"middle\"\n          >\n            {{ label }}: {{ series.total.toLocaleString() }}\n          </svg:text>\n        </svg:g>\n      </svg:g>\n    </ngx-charts-chart>\n  `,\n                encapsulation: ViewEncapsulation.None,\n                changeDetection: ChangeDetectionStrategy.OnPush,\n                styles: [\".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:0}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:0}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\", \".pie-grid .arc1{opacity:.4}.pie-grid .percent-label{font-size:16px;font-weight:400}\"]\n            }]\n    }], null, { tooltipDisabled: [{\n            type: Input\n        }], label: [{\n            type: Input\n        }], minWidth: [{\n            type: Input\n        }], activeEntries: [{\n            type: Input\n        }], activate: [{\n            type: Output\n        }], deactivate: [{\n            type: Output\n        }], tooltipText: [{\n            type: Input\n        }], designatedTotal: [{\n            type: Input\n        }], tooltipTemplate: [{\n            type: ContentChild,\n            args: ['tooltipTemplate']\n        }] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(PieGridSeriesComponent, [{\n        type: Component,\n        args: [{\n                selector: 'g[ngx-charts-pie-grid-series]',\n                template: `\n    <svg:g class=\"pie-grid-arcs\">\n      <svg:g\n        ngx-charts-pie-arc\n        *ngFor=\"let arc of arcs; trackBy: trackBy\"\n        [attr.class]=\"arc.class\"\n        [startAngle]=\"arc.startAngle\"\n        [endAngle]=\"arc.endAngle\"\n        [innerRadius]=\"innerRadius\"\n        [outerRadius]=\"outerRadius\"\n        [fill]=\"color(arc)\"\n        [value]=\"arc.data.value\"\n        [data]=\"arc.data\"\n        [gradient]=\"false\"\n        [pointerEvents]=\"arc.pointerEvents\"\n        [animate]=\"arc.animate\"\n        (select)=\"onClick($event)\"\n        (activate)=\"activate.emit($event)\"\n        (deactivate)=\"deactivate.emit($event)\"\n      ></svg:g>\n    </svg:g>\n  `,\n                changeDetection: ChangeDetectionStrategy.OnPush\n            }]\n    }], function () { return [{ type: ɵngcc0.ElementRef }]; }, { innerRadius: [{\n            type: Input\n        }], outerRadius: [{\n            type: Input\n        }], animations: [{\n            type: Input\n        }], select: [{\n            type: Output\n        }], activate: [{\n            type: Output\n        }], deactivate: [{\n            type: Output\n        }], colors: [{\n            type: Input\n        }], data: [{\n            type: Input\n        }] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(PieSeriesComponent, [{\n        type: Component,\n        args: [{\n                selector: 'g[ngx-charts-pie-series]',\n                template: `\n    <svg:g *ngFor=\"let arc of data; trackBy: trackBy\">\n      <svg:g\n        ngx-charts-pie-label\n        *ngIf=\"labelVisible(arc)\"\n        [data]=\"arc\"\n        [radius]=\"outerRadius\"\n        [color]=\"color(arc)\"\n        [label]=\"labelText(arc)\"\n        [labelTrim]=\"trimLabels\"\n        [labelTrimSize]=\"maxLabelLength\"\n        [max]=\"max\"\n        [value]=\"arc.value\"\n        [explodeSlices]=\"explodeSlices\"\n        [animations]=\"animations\"\n      ></svg:g>\n      <svg:g\n        ngx-charts-pie-arc\n        [startAngle]=\"arc.startAngle\"\n        [endAngle]=\"arc.endAngle\"\n        [innerRadius]=\"innerRadius\"\n        [outerRadius]=\"outerRadius\"\n        [fill]=\"color(arc)\"\n        [value]=\"arc.data.value\"\n        [gradient]=\"gradient\"\n        [data]=\"arc.data\"\n        [max]=\"max\"\n        [explodeSlices]=\"explodeSlices\"\n        [isActive]=\"isActive(arc.data)\"\n        [animate]=\"animations\"\n        (select)=\"onClick($event)\"\n        (activate)=\"activate.emit($event)\"\n        (deactivate)=\"deactivate.emit($event)\"\n        (dblclick)=\"dblclick.emit($event)\"\n        ngx-tooltip\n        [tooltipDisabled]=\"tooltipDisabled\"\n        [tooltipPlacement]=\"'top'\"\n        [tooltipType]=\"'tooltip'\"\n        [tooltipTitle]=\"getTooltipTitle(arc)\"\n        [tooltipTemplate]=\"tooltipTemplate\"\n        [tooltipContext]=\"arc.data\"\n      ></svg:g>\n    </svg:g>\n  `,\n                changeDetection: ChangeDetectionStrategy.OnPush\n            }]\n    }], function () { return []; }, { series: [{\n            type: Input\n        }], innerRadius: [{\n            type: Input\n        }], outerRadius: [{\n            type: Input\n        }], trimLabels: [{\n            type: Input\n        }], maxLabelLength: [{\n            type: Input\n        }], tooltipDisabled: [{\n            type: Input\n        }], animations: [{\n            type: Input\n        }], select: [{\n            type: Output\n        }], activate: [{\n            type: Output\n        }], deactivate: [{\n            type: Output\n        }], dblclick: [{\n            type: Output\n        }], tooltipText: [{\n            type: Input\n        }], colors: [{\n            type: Input\n        }], dims: [{\n            type: Input\n        }], explodeSlices: [{\n            type: Input\n        }], showLabels: [{\n            type: Input\n        }], gradient: [{\n            type: Input\n        }], activeEntries: [{\n            type: Input\n        }], labelFormatting: [{\n            type: Input\n        }], tooltipTemplate: [{\n            type: Input\n        }] }); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(PieChartModule, { declarations: [AdvancedPieChartComponent, PieLabelComponent, PieArcComponent, PieChartComponent, PieGridComponent, PieGridSeriesComponent, PieSeriesComponent], imports: [ChartCommonModule], exports: [AdvancedPieChartComponent, PieLabelComponent, PieArcComponent, PieChartComponent, PieGridComponent, PieGridSeriesComponent, PieSeriesComponent] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(PieChartModule, [{\n        type: NgModule,\n        args: [{\n                imports: [ChartCommonModule],\n                declarations: [\n                    AdvancedPieChartComponent,\n                    PieLabelComponent,\n                    PieArcComponent,\n                    PieChartComponent,\n                    PieGridComponent,\n                    PieGridSeriesComponent,\n                    PieSeriesComponent\n                ],\n                exports: [\n                    AdvancedPieChartComponent,\n                    PieLabelComponent,\n                    PieArcComponent,\n                    PieChartComponent,\n                    PieGridComponent,\n                    PieGridSeriesComponent,\n                    PieSeriesComponent\n                ]\n            }]\n    }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(PolarChartModule, { declarations: [PolarChartComponent, PolarSeriesComponent], imports: [ChartCommonModule, PieChartModule, LineChartModule], exports: [PolarChartComponent, PolarSeriesComponent] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(PolarChartModule, [{\n        type: NgModule,\n        args: [{\n                imports: [ChartCommonModule, PieChartModule, LineChartModule],\n                declarations: [PolarChartComponent, PolarSeriesComponent],\n                exports: [PolarChartComponent, PolarSeriesComponent]\n            }]\n    }], null, null); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(CardComponent, [{\n        type: Component,\n        args: [{\n                selector: 'g[ngx-charts-card]',\n                template: `\n    <svg:g [attr.transform]=\"transform\" class=\"cell\" (click)=\"onClick()\">\n      <svg:rect class=\"card\" [style.fill]=\"color\" [attr.width]=\"cardWidth\" [attr.height]=\"cardHeight\" rx=\"3\" ry=\"3\" />\n      <svg:path\n        *ngIf=\"bandColor && bandColor !== color\"\n        class=\"card-band\"\n        [attr.fill]=\"bandColor\"\n        [attr.transform]=\"transformBand\"\n        stroke=\"none\"\n        [attr.d]=\"bandPath\"\n      />\n      <title>{{ label }}</title>\n      <svg:foreignObject\n        class=\"trimmed-label\"\n        x=\"5\"\n        [attr.x]=\"textPadding[3]\"\n        [attr.y]=\"cardHeight - textPadding[2]\"\n        [attr.width]=\"textWidth\"\n        [attr.height]=\"labelFontSize + textPadding[2]\"\n        alignment-baseline=\"hanging\"\n      >\n        <xhtml:p\n          [style.color]=\"textColor\"\n          [style.fontSize.px]=\"labelFontSize\"\n          [style.lineHeight.px]=\"labelFontSize\"\n          [innerHTML]=\"formattedLabel\"\n        >\n        </xhtml:p>\n      </svg:foreignObject>\n      <svg:text\n        #textEl\n        class=\"value-text\"\n        [attr.x]=\"textPadding[3]\"\n        [attr.y]=\"textPadding[0]\"\n        [style.fill]=\"textColor\"\n        text-anchor=\"start\"\n        alignment-baseline=\"hanging\"\n        [style.font-size.pt]=\"textFontSize\"\n      >\n        {{ value }}\n      </svg:text>\n    </svg:g>\n  `,\n                changeDetection: ChangeDetectionStrategy.OnPush\n            }]\n    }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.NgZone }]; }, { animations: [{\n            type: Input\n        }], select: [{\n            type: Output\n        }], label: [{\n            type: Input\n        }], color: [{\n            type: Input\n        }], bandColor: [{\n            type: Input\n        }], textColor: [{\n            type: Input\n        }], x: [{\n            type: Input\n        }], y: [{\n            type: Input\n        }], width: [{\n            type: Input\n        }], height: [{\n            type: Input\n        }], data: [{\n            type: Input\n        }], medianSize: [{\n            type: Input\n        }], valueFormatting: [{\n            type: Input\n        }], labelFormatting: [{\n            type: Input\n        }], textEl: [{\n            type: ViewChild,\n            args: ['textEl', { static: false }]\n        }] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(CardSeriesComponent, [{\n        type: Component,\n        args: [{\n                selector: 'g[ngx-charts-card-series]',\n                template: `\n    <svg:rect\n      *ngFor=\"let c of emptySlots; trackBy: trackBy\"\n      class=\"card-empty\"\n      [attr.x]=\"c.x\"\n      [attr.y]=\"c.y\"\n      [style.fill]=\"emptyColor\"\n      [attr.width]=\"c.width\"\n      [attr.height]=\"c.height\"\n      rx=\"3\"\n      ry=\"3\"\n    />\n    <svg:g\n      ngx-charts-card\n      *ngFor=\"let c of cards; trackBy: trackBy\"\n      [x]=\"c.x\"\n      [y]=\"c.y\"\n      [width]=\"c.width\"\n      [height]=\"c.height\"\n      [color]=\"c.color\"\n      [bandColor]=\"c.bandColor\"\n      [textColor]=\"c.textColor\"\n      [data]=\"c.data\"\n      [label]=\"c.label\"\n      [medianSize]=\"medianSize\"\n      [valueFormatting]=\"valueFormatting\"\n      [labelFormatting]=\"labelFormatting\"\n      [animations]=\"animations\"\n      (select)=\"onClick($event)\"\n    />\n  `,\n                changeDetection: ChangeDetectionStrategy.OnPush\n            }]\n    }], function () { return []; }, { innerPadding: [{\n            type: Input\n        }], emptyColor: [{\n            type: Input\n        }], animations: [{\n            type: Input\n        }], select: [{\n            type: Output\n        }], data: [{\n            type: Input\n        }], slots: [{\n            type: Input\n        }], dims: [{\n            type: Input\n        }], colors: [{\n            type: Input\n        }], cardColor: [{\n            type: Input\n        }], bandColor: [{\n            type: Input\n        }], textColor: [{\n            type: Input\n        }], valueFormatting: [{\n            type: Input\n        }], labelFormatting: [{\n            type: Input\n        }] }); })();\nconst ɵNumberCardComponent_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(NumberCardComponent);\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(NumberCardComponent, [{\n        type: Component,\n        args: [{\n                selector: 'ngx-charts-number-card',\n                template: `\n    <ngx-charts-chart [view]=\"[width, height]\" [showLegend]=\"false\" [animations]=\"animations\">\n      <svg:g [attr.transform]=\"transform\" class=\"number-card chart\" [class.clickable]=\"clickable\">\n        <svg:g\n          ngx-charts-card-series\n          [colors]=\"colors\"\n          [cardColor]=\"cardColor\"\n          [bandColor]=\"bandColor\"\n          [textColor]=\"textColor\"\n          [emptyColor]=\"emptyColor\"\n          [data]=\"data\"\n          [dims]=\"dims\"\n          [innerPadding]=\"innerPadding\"\n          [valueFormatting]=\"valueFormatting\"\n          [labelFormatting]=\"labelFormatting\"\n          [animations]=\"animations\"\n          (select)=\"onClick($event)\"\n        />\n      </svg:g>\n    </ngx-charts-chart>\n  `,\n                encapsulation: ViewEncapsulation.None,\n                changeDetection: ChangeDetectionStrategy.OnPush,\n                styles: [\".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:0}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:0}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\", \"ngx-charts-number-card .cell .trimmed-label{font-size:12px;pointer-events:none;overflow:hidden;text-align:left;line-height:1em}ngx-charts-number-card .cell .trimmed-label p{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;width:100%;padding:0;margin:0}ngx-charts-number-card .cell .value-text{pointer-events:none}ngx-charts-number-card .number-card.clickable .cell .card,ngx-charts-number-card .number-card.clickable .cell .card-band{cursor:pointer}\"]\n            }]\n    }], null, { emptyColor: [{\n            type: Input\n        }], innerPadding: [{\n            type: Input\n        }], cardColor: [{\n            type: Input\n        }], bandColor: [{\n            type: Input\n        }], textColor: [{\n            type: Input\n        }], valueFormatting: [{\n            type: Input\n        }], labelFormatting: [{\n            type: Input\n        }], designatedTotal: [{\n            type: Input\n        }] }); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NumberCardModule, { declarations: [CardComponent, CardSeriesComponent, NumberCardComponent], imports: [ChartCommonModule], exports: [CardComponent, CardSeriesComponent, NumberCardComponent] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(NumberCardModule, [{\n        type: NgModule,\n        args: [{\n                imports: [ChartCommonModule],\n                declarations: [CardComponent, CardSeriesComponent, NumberCardComponent],\n                exports: [CardComponent, CardSeriesComponent, NumberCardComponent]\n            }]\n    }], null, null); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(TreeMapCellComponent, [{\n        type: Component,\n        args: [{\n                selector: 'g[ngx-charts-tree-map-cell]',\n                template: `\n    <svg:g>\n      <defs *ngIf=\"gradient\">\n        <svg:g ngx-charts-svg-linear-gradient orientation=\"vertical\" [name]=\"gradientId\" [stops]=\"gradientStops\" />\n      </defs>\n      <svg:rect\n        [attr.fill]=\"gradient ? gradientUrl : fill\"\n        [attr.width]=\"width\"\n        [attr.height]=\"height\"\n        [attr.x]=\"x\"\n        [attr.y]=\"y\"\n        [style.cursor]=\"'pointer'\"\n        class=\"cell\"\n        (click)=\"onClick()\"\n      />\n      <svg:foreignObject\n        *ngIf=\"width >= 70 && height >= 35\"\n        [attr.x]=\"x\"\n        [attr.y]=\"y\"\n        [attr.width]=\"width\"\n        [attr.height]=\"height\"\n        class=\"treemap-label\"\n        [style.pointer-events]=\"'none'\"\n      >\n        <xhtml:p [style.color]=\"getTextColor()\" [style.height]=\"height + 'px'\" [style.width]=\"width + 'px'\">\n          <xhtml:span class=\"treemap-label\" [innerHTML]=\"formattedLabel\"> </xhtml:span>\n          <xhtml:br />\n          <xhtml:span\n            *ngIf=\"animations\"\n            class=\"treemap-val\"\n            ngx-charts-count-up\n            [countTo]=\"value\"\n            [valueFormatting]=\"valueFormatting\"\n          >\n          </xhtml:span>\n          <xhtml:span *ngIf=\"!animations\" class=\"treemap-val\">\n            {{ formattedValue }}\n          </xhtml:span>\n        </xhtml:p>\n      </svg:foreignObject>\n    </svg:g>\n  `,\n                changeDetection: ChangeDetectionStrategy.OnPush\n            }]\n    }], function () { return [{ type: ɵngcc0.ElementRef }]; }, { gradient: [{\n            type: Input\n        }], animations: [{\n            type: Input\n        }], select: [{\n            type: Output\n        }], valueFormatting: [{\n            type: Input\n        }], data: [{\n            type: Input\n        }], fill: [{\n            type: Input\n        }], x: [{\n            type: Input\n        }], y: [{\n            type: Input\n        }], width: [{\n            type: Input\n        }], height: [{\n            type: Input\n        }], label: [{\n            type: Input\n        }], value: [{\n            type: Input\n        }], valueType: [{\n            type: Input\n        }], labelFormatting: [{\n            type: Input\n        }] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(TreeMapCellSeriesComponent, [{\n        type: Component,\n        args: [{\n                selector: 'g[ngx-charts-tree-map-cell-series]',\n                template: `\n    <svg:g\n      ngx-charts-tree-map-cell\n      *ngFor=\"let c of cells; trackBy: trackBy\"\n      [data]=\"c.data\"\n      [x]=\"c.x\"\n      [y]=\"c.y\"\n      [width]=\"c.width\"\n      [height]=\"c.height\"\n      [fill]=\"c.fill\"\n      [label]=\"c.label\"\n      [value]=\"c.value\"\n      [valueType]=\"c.valueType\"\n      [valueFormatting]=\"valueFormatting\"\n      [labelFormatting]=\"labelFormatting\"\n      [gradient]=\"gradient\"\n      [animations]=\"animations\"\n      (select)=\"onClick($event)\"\n      ngx-tooltip\n      [tooltipDisabled]=\"tooltipDisabled\"\n      [tooltipPlacement]=\"'top'\"\n      [tooltipType]=\"'tooltip'\"\n      [tooltipTitle]=\"tooltipTemplate ? undefined : getTooltipText(c)\"\n      [tooltipTemplate]=\"tooltipTemplate\"\n      [tooltipContext]=\"c.data\"\n    ></svg:g>\n  `,\n                changeDetection: ChangeDetectionStrategy.OnPush\n            }]\n    }], function () { return []; }, { gradient: [{\n            type: Input\n        }], tooltipDisabled: [{\n            type: Input\n        }], animations: [{\n            type: Input\n        }], select: [{\n            type: Output\n        }], data: [{\n            type: Input\n        }], dims: [{\n            type: Input\n        }], colors: [{\n            type: Input\n        }], valueFormatting: [{\n            type: Input\n        }], labelFormatting: [{\n            type: Input\n        }], tooltipTemplate: [{\n            type: Input\n        }] }); })();\nconst ɵTreeMapComponent_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(TreeMapComponent);\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(TreeMapComponent, [{\n        type: Component,\n        args: [{\n                selector: 'ngx-charts-tree-map',\n                template: `\n    <ngx-charts-chart [view]=\"[width, height]\" [showLegend]=\"false\" [animations]=\"animations\">\n      <svg:g [attr.transform]=\"transform\" class=\"tree-map chart\">\n        <svg:g\n          ngx-charts-tree-map-cell-series\n          [colors]=\"colors\"\n          [data]=\"data\"\n          [dims]=\"dims\"\n          [tooltipDisabled]=\"tooltipDisabled\"\n          [tooltipTemplate]=\"tooltipTemplate\"\n          [valueFormatting]=\"valueFormatting\"\n          [labelFormatting]=\"labelFormatting\"\n          [gradient]=\"gradient\"\n          [animations]=\"animations\"\n          (select)=\"onClick($event)\"\n        />\n      </svg:g>\n    </ngx-charts-chart>\n  `,\n                encapsulation: ViewEncapsulation.None,\n                changeDetection: ChangeDetectionStrategy.OnPush,\n                styles: [\".tree-map .treemap-val{font-size:1.3em;padding-top:5px;display:inline-block}.tree-map .treemap-label p{display:table-cell;text-align:center;line-height:1.2em;vertical-align:middle}\"]\n            }]\n    }], null, { tooltipDisabled: [{\n            type: Input\n        }], gradient: [{\n            type: Input\n        }], select: [{\n            type: Output\n        }], results: [{\n            type: Input\n        }], valueFormatting: [{\n            type: Input\n        }], labelFormatting: [{\n            type: Input\n        }], tooltipTemplate: [{\n            type: ContentChild,\n            args: ['tooltipTemplate']\n        }] }); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(TreeMapModule, { declarations: [TreeMapCellComponent, TreeMapCellSeriesComponent, TreeMapComponent], imports: [ChartCommonModule], exports: [TreeMapCellComponent, TreeMapCellSeriesComponent, TreeMapComponent] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(TreeMapModule, [{\n        type: NgModule,\n        args: [{\n                imports: [ChartCommonModule],\n                declarations: [TreeMapCellComponent, TreeMapCellSeriesComponent, TreeMapComponent],\n                exports: [TreeMapCellComponent, TreeMapCellSeriesComponent, TreeMapComponent]\n            }]\n    }], null, null); })();\nconst ɵLinearGaugeComponent_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(LinearGaugeComponent);\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(LinearGaugeComponent, [{\n        type: Component,\n        args: [{\n                selector: 'ngx-charts-linear-gauge',\n                template: `\n    <ngx-charts-chart [view]=\"[width, height]\" [showLegend]=\"false\" [animations]=\"animations\" (click)=\"onClick()\">\n      <svg:g class=\"linear-gauge chart\">\n        <svg:g\n          ngx-charts-bar\n          class=\"background-bar\"\n          [width]=\"dims.width\"\n          [height]=\"3\"\n          [x]=\"margin[3]\"\n          [y]=\"dims.height / 2 + margin[0] - 2\"\n          [data]=\"{}\"\n          [orientation]=\"'horizontal'\"\n          [roundEdges]=\"true\"\n          [animations]=\"animations\"\n        ></svg:g>\n        <svg:g\n          ngx-charts-bar\n          [width]=\"valueScale(value)\"\n          [height]=\"3\"\n          [x]=\"margin[3]\"\n          [y]=\"dims.height / 2 + margin[0] - 2\"\n          [fill]=\"colors.getColor(units)\"\n          [data]=\"{}\"\n          [orientation]=\"'horizontal'\"\n          [roundEdges]=\"true\"\n          [animations]=\"animations\"\n        ></svg:g>\n\n        <svg:line\n          *ngIf=\"hasPreviousValue\"\n          [attr.transform]=\"transformLine\"\n          x1=\"0\"\n          y1=\"5\"\n          x2=\"0\"\n          y2=\"15\"\n          [attr.stroke]=\"colors.getColor(units)\"\n        />\n\n        <svg:line\n          *ngIf=\"hasPreviousValue\"\n          [attr.transform]=\"transformLine\"\n          x1=\"0\"\n          y1=\"-5\"\n          x2=\"0\"\n          y2=\"-15\"\n          [attr.stroke]=\"colors.getColor(units)\"\n        />\n\n        <svg:g [attr.transform]=\"transform\">\n          <svg:g [attr.transform]=\"valueTranslate\">\n            <svg:text\n              #valueTextEl\n              class=\"value\"\n              [style.textAnchor]=\"'middle'\"\n              [attr.transform]=\"valueTextTransform\"\n              alignment-baseline=\"after-edge\"\n            >\n              {{ displayValue }}\n            </svg:text>\n          </svg:g>\n\n          <svg:g [attr.transform]=\"unitsTranslate\">\n            <svg:text\n              #unitsTextEl\n              class=\"units\"\n              [style.textAnchor]=\"'middle'\"\n              [attr.transform]=\"unitsTextTransform\"\n              alignment-baseline=\"before-edge\"\n            >\n              {{ units }}\n            </svg:text>\n          </svg:g>\n        </svg:g>\n      </svg:g>\n    </ngx-charts-chart>\n  `,\n                encapsulation: ViewEncapsulation.None,\n                changeDetection: ChangeDetectionStrategy.OnPush,\n                styles: [\".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:0}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:0}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\", \".linear-gauge{cursor:pointer}.linear-gauge .background-bar path{fill:rgba(0,0,0,.05)}.linear-gauge .units{fill:#666}\"]\n            }]\n    }], null, { min: [{\n            type: Input\n        }], max: [{\n            type: Input\n        }], value: [{\n            type: Input\n        }], units: [{\n            type: Input\n        }], previousValue: [{\n            type: Input\n        }], valueFormatting: [{\n            type: Input\n        }], valueTextEl: [{\n            type: ViewChild,\n            args: ['valueTextEl']\n        }], unitsTextEl: [{\n            type: ViewChild,\n            args: ['unitsTextEl']\n        }] }); })();\nconst ɵGaugeComponent_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(GaugeComponent);\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(GaugeComponent, [{\n        type: Component,\n        args: [{\n                selector: 'ngx-charts-gauge',\n                template: `\n    <ngx-charts-chart\n      [view]=\"[width, height]\"\n      [showLegend]=\"legend\"\n      [legendOptions]=\"legendOptions\"\n      [activeEntries]=\"activeEntries\"\n      [animations]=\"animations\"\n      (legendLabelClick)=\"onClick($event)\"\n      (legendLabelActivate)=\"onActivate($event)\"\n      (legendLabelDeactivate)=\"onDeactivate($event)\"\n    >\n      <svg:g [attr.transform]=\"transform\" class=\"gauge chart\">\n        <svg:g *ngFor=\"let arc of arcs; trackBy: trackBy\" [attr.transform]=\"rotation\">\n          <svg:g\n            ngx-charts-gauge-arc\n            [backgroundArc]=\"arc.backgroundArc\"\n            [valueArc]=\"arc.valueArc\"\n            [cornerRadius]=\"cornerRadius\"\n            [colors]=\"colors\"\n            [isActive]=\"isActive(arc.valueArc.data)\"\n            [tooltipDisabled]=\"tooltipDisabled\"\n            [tooltipTemplate]=\"tooltipTemplate\"\n            [valueFormatting]=\"valueFormatting\"\n            [animations]=\"animations\"\n            (select)=\"onClick($event)\"\n            (activate)=\"onActivate($event)\"\n            (deactivate)=\"onDeactivate($event)\"\n          ></svg:g>\n        </svg:g>\n\n        <svg:g\n          ngx-charts-gauge-axis\n          *ngIf=\"showAxis\"\n          [bigSegments]=\"bigSegments\"\n          [smallSegments]=\"smallSegments\"\n          [min]=\"min\"\n          [max]=\"max\"\n          [radius]=\"outerRadius\"\n          [angleSpan]=\"angleSpan\"\n          [valueScale]=\"valueScale\"\n          [startAngle]=\"startAngle\"\n          [tickFormatting]=\"axisTickFormatting\"\n        ></svg:g>\n\n        <svg:text\n          #textEl\n          *ngIf=\"showText\"\n          [style.textAnchor]=\"'middle'\"\n          [attr.transform]=\"textTransform\"\n          alignment-baseline=\"central\"\n        >\n          <tspan x=\"0\" dy=\"0\">{{ displayValue }}</tspan>\n          <tspan x=\"0\" dy=\"1.2em\">{{ units }}</tspan>\n        </svg:text>\n      </svg:g>\n    </ngx-charts-chart>\n  `,\n                encapsulation: ViewEncapsulation.None,\n                changeDetection: ChangeDetectionStrategy.OnPush,\n                styles: [\".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:0}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:0}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\", \".gauge .background-arc path{fill:rgba(0,0,0,.05)}.gauge .gauge-tick path{stroke:#666}.gauge .gauge-tick text{font-size:12px;fill:#666;font-weight:700}.gauge .gauge-tick-large path{stroke-width:2px}.gauge .gauge-tick-small path{stroke-width:1px}\"]\n            }]\n    }], null, { legend: [{\n            type: Input\n        }], legendTitle: [{\n            type: Input\n        }], legendPosition: [{\n            type: Input\n        }], min: [{\n            type: Input\n        }], max: [{\n            type: Input\n        }], bigSegments: [{\n            type: Input\n        }], smallSegments: [{\n            type: Input\n        }], showAxis: [{\n            type: Input\n        }], startAngle: [{\n            type: Input\n        }], angleSpan: [{\n            type: Input\n        }], activeEntries: [{\n            type: Input\n        }], tooltipDisabled: [{\n            type: Input\n        }], showText: [{\n            type: Input\n        }], activate: [{\n            type: Output\n        }], deactivate: [{\n            type: Output\n        }], margin: [{\n            type: Input\n        }], textValue: [{\n            type: Input\n        }], units: [{\n            type: Input\n        }], results: [{\n            type: Input\n        }], axisTickFormatting: [{\n            type: Input\n        }], valueFormatting: [{\n            type: Input\n        }], tooltipTemplate: [{\n            type: ContentChild,\n            args: ['tooltipTemplate']\n        }], textEl: [{\n            type: ViewChild,\n            args: ['textEl']\n        }] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(GaugeArcComponent, [{\n        type: Component,\n        args: [{\n                selector: 'g[ngx-charts-gauge-arc]',\n                template: `\n    <svg:g\n      ngx-charts-pie-arc\n      class=\"background-arc\"\n      [startAngle]=\"0\"\n      [endAngle]=\"backgroundArc.endAngle\"\n      [innerRadius]=\"backgroundArc.innerRadius\"\n      [outerRadius]=\"backgroundArc.outerRadius\"\n      [cornerRadius]=\"cornerRadius\"\n      [data]=\"backgroundArc.data\"\n      [animate]=\"false\"\n      [pointerEvents]=\"false\"\n    ></svg:g>\n    <svg:g\n      ngx-charts-pie-arc\n      [startAngle]=\"0\"\n      [endAngle]=\"valueArc.endAngle\"\n      [innerRadius]=\"valueArc.innerRadius\"\n      [outerRadius]=\"valueArc.outerRadius\"\n      [cornerRadius]=\"cornerRadius\"\n      [fill]=\"colors.getColor(valueArc.data.name)\"\n      [data]=\"valueArc.data\"\n      [animate]=\"animations\"\n      [isActive]=\"isActive\"\n      (select)=\"select.emit($event)\"\n      (activate)=\"activate.emit($event)\"\n      (deactivate)=\"deactivate.emit($event)\"\n      ngx-tooltip\n      [tooltipDisabled]=\"tooltipDisabled\"\n      [tooltipPlacement]=\"'top'\"\n      [tooltipType]=\"'tooltip'\"\n      [tooltipTitle]=\"tooltipTemplate ? undefined : tooltipText(valueArc)\"\n      [tooltipTemplate]=\"tooltipTemplate\"\n      [tooltipContext]=\"valueArc.data\"\n    ></svg:g>\n  `,\n                changeDetection: ChangeDetectionStrategy.OnPush\n            }]\n    }], function () { return []; }, { isActive: [{\n            type: Input\n        }], tooltipDisabled: [{\n            type: Input\n        }], animations: [{\n            type: Input\n        }], select: [{\n            type: Output\n        }], activate: [{\n            type: Output\n        }], deactivate: [{\n            type: Output\n        }], backgroundArc: [{\n            type: Input\n        }], valueArc: [{\n            type: Input\n        }], cornerRadius: [{\n            type: Input\n        }], colors: [{\n            type: Input\n        }], valueFormatting: [{\n            type: Input\n        }], tooltipTemplate: [{\n            type: Input\n        }] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(GaugeAxisComponent, [{\n        type: Component,\n        args: [{\n                selector: 'g[ngx-charts-gauge-axis]',\n                template: `\n    <svg:g [attr.transform]=\"rotate\">\n      <svg:g *ngFor=\"let tick of ticks.big\" class=\"gauge-tick gauge-tick-large\">\n        <svg:path [attr.d]=\"tick.line\" />\n      </svg:g>\n      <svg:g *ngFor=\"let tick of ticks.big\" class=\"gauge-tick gauge-tick-large\">\n        <svg:text\n          [style.textAnchor]=\"tick.textAnchor\"\n          [attr.transform]=\"tick.textTransform\"\n          alignment-baseline=\"central\"\n        >\n          {{ tick.text }}\n        </svg:text>\n      </svg:g>\n      <svg:g *ngFor=\"let tick of ticks.small\" class=\"gauge-tick gauge-tick-small\">\n        <svg:path [attr.d]=\"tick.line\" />\n      </svg:g>\n    </svg:g>\n  `,\n                changeDetection: ChangeDetectionStrategy.OnPush\n            }]\n    }], function () { return []; }, { bigSegments: [{\n            type: Input\n        }], smallSegments: [{\n            type: Input\n        }], min: [{\n            type: Input\n        }], max: [{\n            type: Input\n        }], angleSpan: [{\n            type: Input\n        }], startAngle: [{\n            type: Input\n        }], radius: [{\n            type: Input\n        }], valueScale: [{\n            type: Input\n        }], tickFormatting: [{\n            type: Input\n        }] }); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(GaugeModule, { declarations: [LinearGaugeComponent, GaugeComponent, GaugeArcComponent, GaugeAxisComponent], imports: [ChartCommonModule, PieChartModule, BarChartModule], exports: [LinearGaugeComponent, GaugeComponent, GaugeArcComponent, GaugeAxisComponent] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(GaugeModule, [{\n        type: NgModule,\n        args: [{\n                imports: [ChartCommonModule, PieChartModule, BarChartModule],\n                declarations: [LinearGaugeComponent, GaugeComponent, GaugeArcComponent, GaugeAxisComponent],\n                exports: [LinearGaugeComponent, GaugeComponent, GaugeArcComponent, GaugeAxisComponent]\n            }]\n    }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgxChartsModule, { exports: [ChartCommonModule, AreaChartModule, BarChartModule, BubbleChartModule, HeatMapModule, LineChartModule, PolarChartModule, NumberCardModule, PieChartModule, TreeMapModule, GaugeModule] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(NgxChartsModule, [{\n        type: NgModule,\n        args: [{\n                exports: [\n                    ChartCommonModule,\n                    AreaChartModule,\n                    BarChartModule,\n                    BubbleChartModule,\n                    HeatMapModule,\n                    LineChartModule,\n                    PolarChartModule,\n                    NumberCardModule,\n                    PieChartModule,\n                    TreeMapModule,\n                    GaugeModule\n                ]\n            }]\n    }], function () { return []; }, null); })();\n\nfunction tickFormat(fieldType, groupByType) {\n    return function (label) {\n        if (label === 'No Value' || label === 'Other') {\n            return label;\n        }\n        if (fieldType === 'date' && groupByType === 'groupBy') {\n            const formatter = timeFormat('MM/DD/YYYY');\n            return formatter(label);\n        }\n        return label.toString();\n    };\n}\n\n/*\n * Public API Surface of ngx-charts\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AdvancedLegendComponent, AdvancedPieChartComponent, AlignmentTypes, AreaChartComponent, AreaChartModule, AreaChartNormalizedComponent, AreaChartStackedComponent, AreaComponent, AreaSeriesComponent, AxesModule, AxisLabelComponent, BarChartModule, BarComponent, BarHorizontal2DComponent, BarHorizontalComponent, BarHorizontalNormalizedComponent, BarHorizontalStackedComponent, BarLabelComponent, BarVertical2DComponent, BarVerticalComponent, BarVerticalNormalizedComponent, BarVerticalStackedComponent, BaseChartComponent, BubbleChartComponent, BubbleChartModule, BubbleSeriesComponent, CardComponent, CardSeriesComponent, ChartCommonModule, ChartComponent, CircleComponent, CircleSeriesComponent, ColorHelper, CountUpDirective, D0Types, GaugeArcComponent, GaugeAxisComponent, GaugeComponent, GaugeModule, GridPanelComponent, GridPanelSeriesComponent, HeatCellSeriesComponent, HeatMapCellComponent, HeatMapComponent, HeatMapModule, LegendComponent, LegendEntryComponent, LineChartComponent, LineChartModule, LineComponent, LineSeriesComponent, LinearGaugeComponent, NgxChartsModule, NumberCardComponent, NumberCardModule, PieArcComponent, PieChartComponent, PieChartModule, PieGridComponent, PieGridSeriesComponent, PieLabelComponent, PieSeriesComponent, PolarChartComponent, PolarChartModule, PolarSeriesComponent, ScaleLegendComponent, SeriesHorizontal, SeriesVerticalComponent, ShowTypes, StyleTypes, SvgLinearGradientComponent, SvgRadialGradientComponent, Timeline, TooltipArea, TooltipContentComponent, TooltipDirective, TooltipModule, TooltipService, TreeMapCellComponent, TreeMapCellSeriesComponent, TreeMapComponent, TreeMapModule, VisibilityObserver, XAxisComponent, XAxisTicksComponent, YAxisComponent, YAxisTicksComponent, calculateViewDimensions, colorSets, count, decimalChecker, escapeLabel, formatLabel, getDomain, getScale, getScaleType, getUniqueXDomainValues, gridLayout, gridSize, hexToRgb, id, invertColor, reduceTicks, shadeRGBColor, sortByDomain, sortByTime, sortLinear, throttle, throttleable, tickFormat, trimLabel, InjectionRegisteryService as ɵa, InjectionService as ɵb };\n\n//# sourceMappingURL=swimlane-ngx-charts.js.map","\"use strict\";\nvar core_1 = require('@angular/core');\nvar ɵngcc0 = require('@angular/core');\nvar ChartComponent = (function () {\n    function ChartComponent(elementRef) {\n        this.elementRef = elementRef;\n    }\n    ChartComponent.prototype.ngOnInit = function () {\n        this.create();\n    };\n    ChartComponent.prototype.ngOnChanges = function (changes) {\n        var _this = this;\n        if (this.chart) {\n            if (changes['type'] || changes['options']) {\n                this.create();\n            }\n            else if (changes['data']) {\n                var currentValue_1 = changes['data'].currentValue;\n                ['datasets', 'labels', 'xLabels', 'yLabels'].forEach(function (property) {\n                    _this.chart.data[property] = currentValue_1[property];\n                });\n                this.chart.update();\n            }\n        }\n    };\n    ChartComponent.prototype.create = function () {\n        if (this.canvas) {\n            this.elementRef.nativeElement.removeChild(this.canvas);\n        }\n        this.canvas = document.createElement('canvas');\n        this.elementRef.nativeElement.appendChild(this.canvas);\n        this.chart = new Chart(this.canvas, {\n            type: this.type,\n            data: this.data,\n            options: this.options\n        });\n    };\n    ChartComponent.ctorParameters = function () { return [\n        { type: core_1.ElementRef, },\n    ]; };\n    ChartComponent.propDecorators = {\n        'type': [{ type: core_1.Input },],\n        'data': [{ type: core_1.Input },],\n        'options': [{ type: core_1.Input },],\n    };\nChartComponent.ɵfac = function ChartComponent_Factory(t) { return new (t || ChartComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nChartComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: ChartComponent, selectors: [[\"chart\"]], inputs: { type: \"type\", data: \"data\", options: \"options\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], decls: 0, vars: 0, template: function ChartComponent_Template(rf, ctx) { }, styles: [\"[_nghost-%COMP%] { display: block; }\"] });\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(ChartComponent, [{\n        type: core_1.Component,\n        args: [{\n                selector: 'chart',\n                template: '',\n                styles: [':host { display: block; }']\n            }]\n    }], function () { return [{ type: ɵngcc0.ElementRef }]; }, { type: [{\n            type: core_1.Input\n        }], data: [{\n            type: core_1.Input\n        }], options: [{\n            type: core_1.Input\n        }] }); })();\n    return ChartComponent;\n}());\nexports.ChartComponent = ChartComponent;\n\n//# sourceMappingURL=chart.component.js.map","\"use strict\";\nif (typeof window === 'object') {\n    require('chart.js');\n}\nvar core_1 = require('@angular/core');\nvar chart_component_1 = require('./chart.component');\nvar ɵngcc0 = require('@angular/core');\nvar ɵngcc1 = require('./chart.component');\nvar ChartModule = (function () {\n    function ChartModule() {\n    }\n    ChartModule.ctorParameters = function () { return []; };\nChartModule.ɵmod = ɵngcc0.ɵɵdefineNgModule({ type: ChartModule });\nChartModule.ɵinj = ɵngcc0.ɵɵdefineInjector({ factory: function ChartModule_Factory(t) { return new (t || ChartModule)(); } });\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(ChartModule, { declarations: [ɵngcc1.ChartComponent], exports: [ɵngcc1.ChartComponent] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(ChartModule, [{\n        type: core_1.NgModule,\n        args: [{\n                declarations: [chart_component_1.ChartComponent],\n                exports: [chart_component_1.ChartComponent]\n            }]\n    }], function () { return []; }, null); })();\n    return ChartModule;\n}());\nexports.ChartModule = ChartModule;\n\n//# sourceMappingURL=chart.module.js.map","\"use strict\";\nfunction __export(m) {\n    for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\n__export(require('./chart.component'));\n__export(require('./chart.module'));\n\n//# sourceMappingURL=index.js.map","/*!\n * Chart.js v2.9.3\n * https://www.chartjs.org\n * (c) 2019 Chart.js Contributors\n * Released under the MIT License\n */\n(function (global, factory) {\ntypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(function() { try { return require('moment'); } catch(e) { } }()) :\ntypeof define === 'function' && define.amd ? define(['require'], function(require) { return factory(function() { try { return require('moment'); } catch(e) { } }()); }) :\n(global = global || self, global.Chart = factory(global.moment));\n}(this, (function (moment) { 'use strict';\n\nmoment = moment && moment.hasOwnProperty('default') ? moment['default'] : moment;\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\nfunction getCjsExportFromNamespace (n) {\n\treturn n && n['default'] || n;\n}\n\nvar colorName = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\n\nvar conversions = createCommonjsModule(function (module) {\n/* MIT license */\n\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n//       values that give correct `typeof` results).\n//       do not use box values types (i.e. Number(), String(), etc.)\n\nvar reverseKeywords = {};\nfor (var key in colorName) {\n\tif (colorName.hasOwnProperty(key)) {\n\t\treverseKeywords[colorName[key]] = key;\n\t}\n}\n\nvar convert = module.exports = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\n// hide .channels and .labels properties\nfor (var model in convert) {\n\tif (convert.hasOwnProperty(model)) {\n\t\tif (!('channels' in convert[model])) {\n\t\t\tthrow new Error('missing channels property: ' + model);\n\t\t}\n\n\t\tif (!('labels' in convert[model])) {\n\t\t\tthrow new Error('missing channel labels property: ' + model);\n\t\t}\n\n\t\tif (convert[model].labels.length !== convert[model].channels) {\n\t\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t\t}\n\n\t\tvar channels = convert[model].channels;\n\t\tvar labels = convert[model].labels;\n\t\tdelete convert[model].channels;\n\t\tdelete convert[model].labels;\n\t\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\t\tObject.defineProperty(convert[model], 'labels', {value: labels});\n\t}\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar min = Math.min(r, g, b);\n\tvar max = Math.max(r, g, b);\n\tvar delta = max - min;\n\tvar h;\n\tvar s;\n\tvar l;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tl = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tvar rdif;\n\tvar gdif;\n\tvar bdif;\n\tvar h;\n\tvar s;\n\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar v = Math.max(r, g, b);\n\tvar diff = v - Math.min(r, g, b);\n\tvar diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = s = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tvar r = rgb[0];\n\tvar g = rgb[1];\n\tvar b = rgb[2];\n\tvar h = convert.rgb.hsl(rgb)[0];\n\tvar w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar c;\n\tvar m;\n\tvar y;\n\tvar k;\n\n\tk = Math.min(1 - r, 1 - g, 1 - b);\n\tc = (1 - r - k) / (1 - k) || 0;\n\tm = (1 - g - k) / (1 - k) || 0;\n\ty = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\n/**\n * See https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n * */\nfunction comparativeDistance(x, y) {\n\treturn (\n\t\tMath.pow(x[0] - y[0], 2) +\n\t\tMath.pow(x[1] - y[1], 2) +\n\t\tMath.pow(x[2] - y[2], 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tvar reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tvar currentClosestDistance = Infinity;\n\tvar currentClosestKeyword;\n\n\tfor (var keyword in colorName) {\n\t\tif (colorName.hasOwnProperty(keyword)) {\n\t\t\tvar value = colorName[keyword];\n\n\t\t\t// Compute comparative distance\n\t\t\tvar distance = comparativeDistance(rgb, value);\n\n\t\t\t// Check if its less, if so set as closest\n\t\t\tif (distance < currentClosestDistance) {\n\t\t\t\tcurrentClosestDistance = distance;\n\t\t\t\tcurrentClosestKeyword = keyword;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn colorName[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\n\t// assume sRGB\n\tr = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92);\n\n\tvar x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tvar y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tvar z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tvar xyz = convert.rgb.xyz(rgb);\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tvar h = hsl[0] / 360;\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar t1;\n\tvar t2;\n\tvar t3;\n\tvar rgb;\n\tvar val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tt1 = 2 * l - t2;\n\n\trgb = [0, 0, 0];\n\tfor (var i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tvar h = hsl[0];\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar smin = s;\n\tvar lmin = Math.max(l, 0.01);\n\tvar sv;\n\tvar v;\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tv = (l + s) / 2;\n\tsv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tvar h = hsv[0] / 60;\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar hi = Math.floor(h) % 6;\n\n\tvar f = h - Math.floor(h);\n\tvar p = 255 * v * (1 - s);\n\tvar q = 255 * v * (1 - (s * f));\n\tvar t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tvar h = hsv[0];\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar vmin = Math.max(v, 0.01);\n\tvar lmin;\n\tvar sl;\n\tvar l;\n\n\tl = (2 - s) * v;\n\tlmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tvar h = hwb[0] / 360;\n\tvar wh = hwb[1] / 100;\n\tvar bl = hwb[2] / 100;\n\tvar ratio = wh + bl;\n\tvar i;\n\tvar v;\n\tvar f;\n\tvar n;\n\n\t// wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\ti = Math.floor(6 * h);\n\tv = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tn = wh + f * (v - wh); // linear interpolation\n\n\tvar r;\n\tvar g;\n\tvar b;\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v; g = n; b = wh; break;\n\t\tcase 1: r = n; g = v; b = wh; break;\n\t\tcase 2: r = wh; g = v; b = n; break;\n\t\tcase 3: r = wh; g = n; b = v; break;\n\t\tcase 4: r = n; g = wh; b = v; break;\n\t\tcase 5: r = v; g = wh; b = n; break;\n\t}\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tvar c = cmyk[0] / 100;\n\tvar m = cmyk[1] / 100;\n\tvar y = cmyk[2] / 100;\n\tvar k = cmyk[3] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = 1 - Math.min(1, c * (1 - k) + k);\n\tg = 1 - Math.min(1, m * (1 - k) + k);\n\tb = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tvar x = xyz[0] / 100;\n\tvar y = xyz[1] / 100;\n\tvar z = xyz[2] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar x;\n\tvar y;\n\tvar z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tvar y2 = Math.pow(y, 3);\n\tvar x2 = Math.pow(x, 3);\n\tvar z2 = Math.pow(z, 3);\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar hr;\n\tvar h;\n\tvar c;\n\n\thr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tc = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tvar l = lch[0];\n\tvar c = lch[1];\n\tvar h = lch[2];\n\tvar a;\n\tvar b;\n\tvar hr;\n\n\thr = h / 360 * 2 * Math.PI;\n\ta = c * Math.cos(hr);\n\tb = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\tvar value = 1 in arguments ? arguments[1] : convert.rgb.hsv(args)[2]; // hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tvar ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\n\t// we use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tvar ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tvar color = args % 10;\n\n\t// handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tvar mult = (~~(args > 50) + 1) * 0.5;\n\tvar r = ((color & 1) * mult) * 255;\n\tvar g = (((color >> 1) & 1) * mult) * 255;\n\tvar b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// handle greyscale\n\tif (args >= 232) {\n\t\tvar c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tvar rem;\n\tvar r = Math.floor(args / 36) / 5 * 255;\n\tvar g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tvar b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tvar integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tvar match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tvar colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(function (char) {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tvar integer = parseInt(colorString, 16);\n\tvar r = (integer >> 16) & 0xFF;\n\tvar g = (integer >> 8) & 0xFF;\n\tvar b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar max = Math.max(Math.max(r, g), b);\n\tvar min = Math.min(Math.min(r, g), b);\n\tvar chroma = (max - min);\n\tvar grayscale;\n\tvar hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma + 4;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar c = 1;\n\tvar f = 0;\n\n\tif (l < 0.5) {\n\t\tc = 2.0 * s * l;\n\t} else {\n\t\tc = 2.0 * s * (1.0 - l);\n\t}\n\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\n\tvar c = s * v;\n\tvar f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tvar h = hcg[0] / 360;\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tvar pure = [0, 0, 0];\n\tvar hi = (h % 1) * 6;\n\tvar v = hi % 1;\n\tvar w = 1 - v;\n\tvar mg = 0;\n\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar v = c + g * (1.0 - c);\n\tvar f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar l = g * (1.0 - c) + 0.5 * c;\n\tvar s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\tvar v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tvar w = hwb[1] / 100;\n\tvar b = hwb[2] / 100;\n\tvar v = 1 - b;\n\tvar c = v - w;\n\tvar g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = convert.gray.hsv = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tvar val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tvar integer = (val << 16) + (val << 8) + val;\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tvar val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n});\nvar conversions_1 = conversions.rgb;\nvar conversions_2 = conversions.hsl;\nvar conversions_3 = conversions.hsv;\nvar conversions_4 = conversions.hwb;\nvar conversions_5 = conversions.cmyk;\nvar conversions_6 = conversions.xyz;\nvar conversions_7 = conversions.lab;\nvar conversions_8 = conversions.lch;\nvar conversions_9 = conversions.hex;\nvar conversions_10 = conversions.keyword;\nvar conversions_11 = conversions.ansi16;\nvar conversions_12 = conversions.ansi256;\nvar conversions_13 = conversions.hcg;\nvar conversions_14 = conversions.apple;\nvar conversions_15 = conversions.gray;\n\n/*\n\tthis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tvar graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tvar models = Object.keys(conversions);\n\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tvar graph = buildGraph();\n\tvar queue = [fromModel]; // unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tvar current = queue.pop();\n\t\tvar adjacents = Object.keys(conversions[current]);\n\n\t\tfor (var len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tvar adjacent = adjacents[i];\n\t\t\tvar node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tvar path = [graph[toModel].parent, toModel];\n\tvar fn = conversions[graph[toModel].parent][toModel];\n\n\tvar cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nvar route = function (fromModel) {\n\tvar graph = deriveBFS(fromModel);\n\tvar conversion = {};\n\n\tvar models = Object.keys(graph);\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tvar toModel = models[i];\n\t\tvar node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// no possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\nvar convert = {};\n\nvar models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\tvar result = fn(args);\n\n\t\t// we're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (var len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(function (fromModel) {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tvar routes = route(fromModel);\n\tvar routeModels = Object.keys(routes);\n\n\trouteModels.forEach(function (toModel) {\n\t\tvar fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nvar colorConvert = convert;\n\nvar colorName$1 = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\n\n/* MIT license */\n\n\nvar colorString = {\n   getRgba: getRgba,\n   getHsla: getHsla,\n   getRgb: getRgb,\n   getHsl: getHsl,\n   getHwb: getHwb,\n   getAlpha: getAlpha,\n\n   hexString: hexString,\n   rgbString: rgbString,\n   rgbaString: rgbaString,\n   percentString: percentString,\n   percentaString: percentaString,\n   hslString: hslString,\n   hslaString: hslaString,\n   hwbString: hwbString,\n   keyword: keyword\n};\n\nfunction getRgba(string) {\n   if (!string) {\n      return;\n   }\n   var abbr =  /^#([a-fA-F0-9]{3,4})$/i,\n       hex =  /^#([a-fA-F0-9]{6}([a-fA-F0-9]{2})?)$/i,\n       rgba = /^rgba?\\(\\s*([+-]?\\d+)\\s*,\\s*([+-]?\\d+)\\s*,\\s*([+-]?\\d+)\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/i,\n       per = /^rgba?\\(\\s*([+-]?[\\d\\.]+)\\%\\s*,\\s*([+-]?[\\d\\.]+)\\%\\s*,\\s*([+-]?[\\d\\.]+)\\%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/i,\n       keyword = /(\\w+)/;\n\n   var rgb = [0, 0, 0],\n       a = 1,\n       match = string.match(abbr),\n       hexAlpha = \"\";\n   if (match) {\n      match = match[1];\n      hexAlpha = match[3];\n      for (var i = 0; i < rgb.length; i++) {\n         rgb[i] = parseInt(match[i] + match[i], 16);\n      }\n      if (hexAlpha) {\n         a = Math.round((parseInt(hexAlpha + hexAlpha, 16) / 255) * 100) / 100;\n      }\n   }\n   else if (match = string.match(hex)) {\n      hexAlpha = match[2];\n      match = match[1];\n      for (var i = 0; i < rgb.length; i++) {\n         rgb[i] = parseInt(match.slice(i * 2, i * 2 + 2), 16);\n      }\n      if (hexAlpha) {\n         a = Math.round((parseInt(hexAlpha, 16) / 255) * 100) / 100;\n      }\n   }\n   else if (match = string.match(rgba)) {\n      for (var i = 0; i < rgb.length; i++) {\n         rgb[i] = parseInt(match[i + 1]);\n      }\n      a = parseFloat(match[4]);\n   }\n   else if (match = string.match(per)) {\n      for (var i = 0; i < rgb.length; i++) {\n         rgb[i] = Math.round(parseFloat(match[i + 1]) * 2.55);\n      }\n      a = parseFloat(match[4]);\n   }\n   else if (match = string.match(keyword)) {\n      if (match[1] == \"transparent\") {\n         return [0, 0, 0, 0];\n      }\n      rgb = colorName$1[match[1]];\n      if (!rgb) {\n         return;\n      }\n   }\n\n   for (var i = 0; i < rgb.length; i++) {\n      rgb[i] = scale(rgb[i], 0, 255);\n   }\n   if (!a && a != 0) {\n      a = 1;\n   }\n   else {\n      a = scale(a, 0, 1);\n   }\n   rgb[3] = a;\n   return rgb;\n}\n\nfunction getHsla(string) {\n   if (!string) {\n      return;\n   }\n   var hsl = /^hsla?\\(\\s*([+-]?\\d+)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)/;\n   var match = string.match(hsl);\n   if (match) {\n      var alpha = parseFloat(match[4]);\n      var h = scale(parseInt(match[1]), 0, 360),\n          s = scale(parseFloat(match[2]), 0, 100),\n          l = scale(parseFloat(match[3]), 0, 100),\n          a = scale(isNaN(alpha) ? 1 : alpha, 0, 1);\n      return [h, s, l, a];\n   }\n}\n\nfunction getHwb(string) {\n   if (!string) {\n      return;\n   }\n   var hwb = /^hwb\\(\\s*([+-]?\\d+)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)/;\n   var match = string.match(hwb);\n   if (match) {\n    var alpha = parseFloat(match[4]);\n      var h = scale(parseInt(match[1]), 0, 360),\n          w = scale(parseFloat(match[2]), 0, 100),\n          b = scale(parseFloat(match[3]), 0, 100),\n          a = scale(isNaN(alpha) ? 1 : alpha, 0, 1);\n      return [h, w, b, a];\n   }\n}\n\nfunction getRgb(string) {\n   var rgba = getRgba(string);\n   return rgba && rgba.slice(0, 3);\n}\n\nfunction getHsl(string) {\n  var hsla = getHsla(string);\n  return hsla && hsla.slice(0, 3);\n}\n\nfunction getAlpha(string) {\n   var vals = getRgba(string);\n   if (vals) {\n      return vals[3];\n   }\n   else if (vals = getHsla(string)) {\n      return vals[3];\n   }\n   else if (vals = getHwb(string)) {\n      return vals[3];\n   }\n}\n\n// generators\nfunction hexString(rgba, a) {\n   var a = (a !== undefined && rgba.length === 3) ? a : rgba[3];\n   return \"#\" + hexDouble(rgba[0]) \n              + hexDouble(rgba[1])\n              + hexDouble(rgba[2])\n              + (\n                 (a >= 0 && a < 1)\n                 ? hexDouble(Math.round(a * 255))\n                 : \"\"\n              );\n}\n\nfunction rgbString(rgba, alpha) {\n   if (alpha < 1 || (rgba[3] && rgba[3] < 1)) {\n      return rgbaString(rgba, alpha);\n   }\n   return \"rgb(\" + rgba[0] + \", \" + rgba[1] + \", \" + rgba[2] + \")\";\n}\n\nfunction rgbaString(rgba, alpha) {\n   if (alpha === undefined) {\n      alpha = (rgba[3] !== undefined ? rgba[3] : 1);\n   }\n   return \"rgba(\" + rgba[0] + \", \" + rgba[1] + \", \" + rgba[2]\n           + \", \" + alpha + \")\";\n}\n\nfunction percentString(rgba, alpha) {\n   if (alpha < 1 || (rgba[3] && rgba[3] < 1)) {\n      return percentaString(rgba, alpha);\n   }\n   var r = Math.round(rgba[0]/255 * 100),\n       g = Math.round(rgba[1]/255 * 100),\n       b = Math.round(rgba[2]/255 * 100);\n\n   return \"rgb(\" + r + \"%, \" + g + \"%, \" + b + \"%)\";\n}\n\nfunction percentaString(rgba, alpha) {\n   var r = Math.round(rgba[0]/255 * 100),\n       g = Math.round(rgba[1]/255 * 100),\n       b = Math.round(rgba[2]/255 * 100);\n   return \"rgba(\" + r + \"%, \" + g + \"%, \" + b + \"%, \" + (alpha || rgba[3] || 1) + \")\";\n}\n\nfunction hslString(hsla, alpha) {\n   if (alpha < 1 || (hsla[3] && hsla[3] < 1)) {\n      return hslaString(hsla, alpha);\n   }\n   return \"hsl(\" + hsla[0] + \", \" + hsla[1] + \"%, \" + hsla[2] + \"%)\";\n}\n\nfunction hslaString(hsla, alpha) {\n   if (alpha === undefined) {\n      alpha = (hsla[3] !== undefined ? hsla[3] : 1);\n   }\n   return \"hsla(\" + hsla[0] + \", \" + hsla[1] + \"%, \" + hsla[2] + \"%, \"\n           + alpha + \")\";\n}\n\n// hwb is a bit different than rgb(a) & hsl(a) since there is no alpha specific syntax\n// (hwb have alpha optional & 1 is default value)\nfunction hwbString(hwb, alpha) {\n   if (alpha === undefined) {\n      alpha = (hwb[3] !== undefined ? hwb[3] : 1);\n   }\n   return \"hwb(\" + hwb[0] + \", \" + hwb[1] + \"%, \" + hwb[2] + \"%\"\n           + (alpha !== undefined && alpha !== 1 ? \", \" + alpha : \"\") + \")\";\n}\n\nfunction keyword(rgb) {\n  return reverseNames[rgb.slice(0, 3)];\n}\n\n// helpers\nfunction scale(num, min, max) {\n   return Math.min(Math.max(min, num), max);\n}\n\nfunction hexDouble(num) {\n  var str = num.toString(16).toUpperCase();\n  return (str.length < 2) ? \"0\" + str : str;\n}\n\n\n//create a list of reverse color names\nvar reverseNames = {};\nfor (var name in colorName$1) {\n   reverseNames[colorName$1[name]] = name;\n}\n\n/* MIT license */\n\n\n\nvar Color = function (obj) {\n\tif (obj instanceof Color) {\n\t\treturn obj;\n\t}\n\tif (!(this instanceof Color)) {\n\t\treturn new Color(obj);\n\t}\n\n\tthis.valid = false;\n\tthis.values = {\n\t\trgb: [0, 0, 0],\n\t\thsl: [0, 0, 0],\n\t\thsv: [0, 0, 0],\n\t\thwb: [0, 0, 0],\n\t\tcmyk: [0, 0, 0, 0],\n\t\talpha: 1\n\t};\n\n\t// parse Color() argument\n\tvar vals;\n\tif (typeof obj === 'string') {\n\t\tvals = colorString.getRgba(obj);\n\t\tif (vals) {\n\t\t\tthis.setValues('rgb', vals);\n\t\t} else if (vals = colorString.getHsla(obj)) {\n\t\t\tthis.setValues('hsl', vals);\n\t\t} else if (vals = colorString.getHwb(obj)) {\n\t\t\tthis.setValues('hwb', vals);\n\t\t}\n\t} else if (typeof obj === 'object') {\n\t\tvals = obj;\n\t\tif (vals.r !== undefined || vals.red !== undefined) {\n\t\t\tthis.setValues('rgb', vals);\n\t\t} else if (vals.l !== undefined || vals.lightness !== undefined) {\n\t\t\tthis.setValues('hsl', vals);\n\t\t} else if (vals.v !== undefined || vals.value !== undefined) {\n\t\t\tthis.setValues('hsv', vals);\n\t\t} else if (vals.w !== undefined || vals.whiteness !== undefined) {\n\t\t\tthis.setValues('hwb', vals);\n\t\t} else if (vals.c !== undefined || vals.cyan !== undefined) {\n\t\t\tthis.setValues('cmyk', vals);\n\t\t}\n\t}\n};\n\nColor.prototype = {\n\tisValid: function () {\n\t\treturn this.valid;\n\t},\n\trgb: function () {\n\t\treturn this.setSpace('rgb', arguments);\n\t},\n\thsl: function () {\n\t\treturn this.setSpace('hsl', arguments);\n\t},\n\thsv: function () {\n\t\treturn this.setSpace('hsv', arguments);\n\t},\n\thwb: function () {\n\t\treturn this.setSpace('hwb', arguments);\n\t},\n\tcmyk: function () {\n\t\treturn this.setSpace('cmyk', arguments);\n\t},\n\n\trgbArray: function () {\n\t\treturn this.values.rgb;\n\t},\n\thslArray: function () {\n\t\treturn this.values.hsl;\n\t},\n\thsvArray: function () {\n\t\treturn this.values.hsv;\n\t},\n\thwbArray: function () {\n\t\tvar values = this.values;\n\t\tif (values.alpha !== 1) {\n\t\t\treturn values.hwb.concat([values.alpha]);\n\t\t}\n\t\treturn values.hwb;\n\t},\n\tcmykArray: function () {\n\t\treturn this.values.cmyk;\n\t},\n\trgbaArray: function () {\n\t\tvar values = this.values;\n\t\treturn values.rgb.concat([values.alpha]);\n\t},\n\thslaArray: function () {\n\t\tvar values = this.values;\n\t\treturn values.hsl.concat([values.alpha]);\n\t},\n\talpha: function (val) {\n\t\tif (val === undefined) {\n\t\t\treturn this.values.alpha;\n\t\t}\n\t\tthis.setValues('alpha', val);\n\t\treturn this;\n\t},\n\n\tred: function (val) {\n\t\treturn this.setChannel('rgb', 0, val);\n\t},\n\tgreen: function (val) {\n\t\treturn this.setChannel('rgb', 1, val);\n\t},\n\tblue: function (val) {\n\t\treturn this.setChannel('rgb', 2, val);\n\t},\n\thue: function (val) {\n\t\tif (val) {\n\t\t\tval %= 360;\n\t\t\tval = val < 0 ? 360 + val : val;\n\t\t}\n\t\treturn this.setChannel('hsl', 0, val);\n\t},\n\tsaturation: function (val) {\n\t\treturn this.setChannel('hsl', 1, val);\n\t},\n\tlightness: function (val) {\n\t\treturn this.setChannel('hsl', 2, val);\n\t},\n\tsaturationv: function (val) {\n\t\treturn this.setChannel('hsv', 1, val);\n\t},\n\twhiteness: function (val) {\n\t\treturn this.setChannel('hwb', 1, val);\n\t},\n\tblackness: function (val) {\n\t\treturn this.setChannel('hwb', 2, val);\n\t},\n\tvalue: function (val) {\n\t\treturn this.setChannel('hsv', 2, val);\n\t},\n\tcyan: function (val) {\n\t\treturn this.setChannel('cmyk', 0, val);\n\t},\n\tmagenta: function (val) {\n\t\treturn this.setChannel('cmyk', 1, val);\n\t},\n\tyellow: function (val) {\n\t\treturn this.setChannel('cmyk', 2, val);\n\t},\n\tblack: function (val) {\n\t\treturn this.setChannel('cmyk', 3, val);\n\t},\n\n\thexString: function () {\n\t\treturn colorString.hexString(this.values.rgb);\n\t},\n\trgbString: function () {\n\t\treturn colorString.rgbString(this.values.rgb, this.values.alpha);\n\t},\n\trgbaString: function () {\n\t\treturn colorString.rgbaString(this.values.rgb, this.values.alpha);\n\t},\n\tpercentString: function () {\n\t\treturn colorString.percentString(this.values.rgb, this.values.alpha);\n\t},\n\thslString: function () {\n\t\treturn colorString.hslString(this.values.hsl, this.values.alpha);\n\t},\n\thslaString: function () {\n\t\treturn colorString.hslaString(this.values.hsl, this.values.alpha);\n\t},\n\thwbString: function () {\n\t\treturn colorString.hwbString(this.values.hwb, this.values.alpha);\n\t},\n\tkeyword: function () {\n\t\treturn colorString.keyword(this.values.rgb, this.values.alpha);\n\t},\n\n\trgbNumber: function () {\n\t\tvar rgb = this.values.rgb;\n\t\treturn (rgb[0] << 16) | (rgb[1] << 8) | rgb[2];\n\t},\n\n\tluminosity: function () {\n\t\t// http://www.w3.org/TR/WCAG20/#relativeluminancedef\n\t\tvar rgb = this.values.rgb;\n\t\tvar lum = [];\n\t\tfor (var i = 0; i < rgb.length; i++) {\n\t\t\tvar chan = rgb[i] / 255;\n\t\t\tlum[i] = (chan <= 0.03928) ? chan / 12.92 : Math.pow(((chan + 0.055) / 1.055), 2.4);\n\t\t}\n\t\treturn 0.2126 * lum[0] + 0.7152 * lum[1] + 0.0722 * lum[2];\n\t},\n\n\tcontrast: function (color2) {\n\t\t// http://www.w3.org/TR/WCAG20/#contrast-ratiodef\n\t\tvar lum1 = this.luminosity();\n\t\tvar lum2 = color2.luminosity();\n\t\tif (lum1 > lum2) {\n\t\t\treturn (lum1 + 0.05) / (lum2 + 0.05);\n\t\t}\n\t\treturn (lum2 + 0.05) / (lum1 + 0.05);\n\t},\n\n\tlevel: function (color2) {\n\t\tvar contrastRatio = this.contrast(color2);\n\t\tif (contrastRatio >= 7.1) {\n\t\t\treturn 'AAA';\n\t\t}\n\n\t\treturn (contrastRatio >= 4.5) ? 'AA' : '';\n\t},\n\n\tdark: function () {\n\t\t// YIQ equation from http://24ways.org/2010/calculating-color-contrast\n\t\tvar rgb = this.values.rgb;\n\t\tvar yiq = (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000;\n\t\treturn yiq < 128;\n\t},\n\n\tlight: function () {\n\t\treturn !this.dark();\n\t},\n\n\tnegate: function () {\n\t\tvar rgb = [];\n\t\tfor (var i = 0; i < 3; i++) {\n\t\t\trgb[i] = 255 - this.values.rgb[i];\n\t\t}\n\t\tthis.setValues('rgb', rgb);\n\t\treturn this;\n\t},\n\n\tlighten: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[2] += hsl[2] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\tdarken: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[2] -= hsl[2] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\tsaturate: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[1] += hsl[1] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\tdesaturate: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[1] -= hsl[1] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\twhiten: function (ratio) {\n\t\tvar hwb = this.values.hwb;\n\t\thwb[1] += hwb[1] * ratio;\n\t\tthis.setValues('hwb', hwb);\n\t\treturn this;\n\t},\n\n\tblacken: function (ratio) {\n\t\tvar hwb = this.values.hwb;\n\t\thwb[2] += hwb[2] * ratio;\n\t\tthis.setValues('hwb', hwb);\n\t\treturn this;\n\t},\n\n\tgreyscale: function () {\n\t\tvar rgb = this.values.rgb;\n\t\t// http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale\n\t\tvar val = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11;\n\t\tthis.setValues('rgb', [val, val, val]);\n\t\treturn this;\n\t},\n\n\tclearer: function (ratio) {\n\t\tvar alpha = this.values.alpha;\n\t\tthis.setValues('alpha', alpha - (alpha * ratio));\n\t\treturn this;\n\t},\n\n\topaquer: function (ratio) {\n\t\tvar alpha = this.values.alpha;\n\t\tthis.setValues('alpha', alpha + (alpha * ratio));\n\t\treturn this;\n\t},\n\n\trotate: function (degrees) {\n\t\tvar hsl = this.values.hsl;\n\t\tvar hue = (hsl[0] + degrees) % 360;\n\t\thsl[0] = hue < 0 ? 360 + hue : hue;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\t/**\n\t * Ported from sass implementation in C\n\t * https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209\n\t */\n\tmix: function (mixinColor, weight) {\n\t\tvar color1 = this;\n\t\tvar color2 = mixinColor;\n\t\tvar p = weight === undefined ? 0.5 : weight;\n\n\t\tvar w = 2 * p - 1;\n\t\tvar a = color1.alpha() - color2.alpha();\n\n\t\tvar w1 = (((w * a === -1) ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n\t\tvar w2 = 1 - w1;\n\n\t\treturn this\n\t\t\t.rgb(\n\t\t\t\tw1 * color1.red() + w2 * color2.red(),\n\t\t\t\tw1 * color1.green() + w2 * color2.green(),\n\t\t\t\tw1 * color1.blue() + w2 * color2.blue()\n\t\t\t)\n\t\t\t.alpha(color1.alpha() * p + color2.alpha() * (1 - p));\n\t},\n\n\ttoJSON: function () {\n\t\treturn this.rgb();\n\t},\n\n\tclone: function () {\n\t\t// NOTE(SB): using node-clone creates a dependency to Buffer when using browserify,\n\t\t// making the final build way to big to embed in Chart.js. So let's do it manually,\n\t\t// assuming that values to clone are 1 dimension arrays containing only numbers,\n\t\t// except 'alpha' which is a number.\n\t\tvar result = new Color();\n\t\tvar source = this.values;\n\t\tvar target = result.values;\n\t\tvar value, type;\n\n\t\tfor (var prop in source) {\n\t\t\tif (source.hasOwnProperty(prop)) {\n\t\t\t\tvalue = source[prop];\n\t\t\t\ttype = ({}).toString.call(value);\n\t\t\t\tif (type === '[object Array]') {\n\t\t\t\t\ttarget[prop] = value.slice(0);\n\t\t\t\t} else if (type === '[object Number]') {\n\t\t\t\t\ttarget[prop] = value;\n\t\t\t\t} else {\n\t\t\t\t\tconsole.error('unexpected color value:', value);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t}\n};\n\nColor.prototype.spaces = {\n\trgb: ['red', 'green', 'blue'],\n\thsl: ['hue', 'saturation', 'lightness'],\n\thsv: ['hue', 'saturation', 'value'],\n\thwb: ['hue', 'whiteness', 'blackness'],\n\tcmyk: ['cyan', 'magenta', 'yellow', 'black']\n};\n\nColor.prototype.maxes = {\n\trgb: [255, 255, 255],\n\thsl: [360, 100, 100],\n\thsv: [360, 100, 100],\n\thwb: [360, 100, 100],\n\tcmyk: [100, 100, 100, 100]\n};\n\nColor.prototype.getValues = function (space) {\n\tvar values = this.values;\n\tvar vals = {};\n\n\tfor (var i = 0; i < space.length; i++) {\n\t\tvals[space.charAt(i)] = values[space][i];\n\t}\n\n\tif (values.alpha !== 1) {\n\t\tvals.a = values.alpha;\n\t}\n\n\t// {r: 255, g: 255, b: 255, a: 0.4}\n\treturn vals;\n};\n\nColor.prototype.setValues = function (space, vals) {\n\tvar values = this.values;\n\tvar spaces = this.spaces;\n\tvar maxes = this.maxes;\n\tvar alpha = 1;\n\tvar i;\n\n\tthis.valid = true;\n\n\tif (space === 'alpha') {\n\t\talpha = vals;\n\t} else if (vals.length) {\n\t\t// [10, 10, 10]\n\t\tvalues[space] = vals.slice(0, space.length);\n\t\talpha = vals[space.length];\n\t} else if (vals[space.charAt(0)] !== undefined) {\n\t\t// {r: 10, g: 10, b: 10}\n\t\tfor (i = 0; i < space.length; i++) {\n\t\t\tvalues[space][i] = vals[space.charAt(i)];\n\t\t}\n\n\t\talpha = vals.a;\n\t} else if (vals[spaces[space][0]] !== undefined) {\n\t\t// {red: 10, green: 10, blue: 10}\n\t\tvar chans = spaces[space];\n\n\t\tfor (i = 0; i < space.length; i++) {\n\t\t\tvalues[space][i] = vals[chans[i]];\n\t\t}\n\n\t\talpha = vals.alpha;\n\t}\n\n\tvalues.alpha = Math.max(0, Math.min(1, (alpha === undefined ? values.alpha : alpha)));\n\n\tif (space === 'alpha') {\n\t\treturn false;\n\t}\n\n\tvar capped;\n\n\t// cap values of the space prior converting all values\n\tfor (i = 0; i < space.length; i++) {\n\t\tcapped = Math.max(0, Math.min(maxes[space][i], values[space][i]));\n\t\tvalues[space][i] = Math.round(capped);\n\t}\n\n\t// convert to all the other color spaces\n\tfor (var sname in spaces) {\n\t\tif (sname !== space) {\n\t\t\tvalues[sname] = colorConvert[space][sname](values[space]);\n\t\t}\n\t}\n\n\treturn true;\n};\n\nColor.prototype.setSpace = function (space, args) {\n\tvar vals = args[0];\n\n\tif (vals === undefined) {\n\t\t// color.rgb()\n\t\treturn this.getValues(space);\n\t}\n\n\t// color.rgb(10, 10, 10)\n\tif (typeof vals === 'number') {\n\t\tvals = Array.prototype.slice.call(args);\n\t}\n\n\tthis.setValues(space, vals);\n\treturn this;\n};\n\nColor.prototype.setChannel = function (space, index, val) {\n\tvar svalues = this.values[space];\n\tif (val === undefined) {\n\t\t// color.red()\n\t\treturn svalues[index];\n\t} else if (val === svalues[index]) {\n\t\t// color.red(color.red())\n\t\treturn this;\n\t}\n\n\t// color.red(100)\n\tsvalues[index] = val;\n\tthis.setValues(space, svalues);\n\n\treturn this;\n};\n\nif (typeof window !== 'undefined') {\n\twindow.Color = Color;\n}\n\nvar chartjsColor = Color;\n\n/**\n * @namespace Chart.helpers\n */\nvar helpers = {\n\t/**\n\t * An empty function that can be used, for example, for optional callback.\n\t */\n\tnoop: function() {},\n\n\t/**\n\t * Returns a unique id, sequentially generated from a global variable.\n\t * @returns {number}\n\t * @function\n\t */\n\tuid: (function() {\n\t\tvar id = 0;\n\t\treturn function() {\n\t\t\treturn id++;\n\t\t};\n\t}()),\n\n\t/**\n\t * Returns true if `value` is neither null nor undefined, else returns false.\n\t * @param {*} value - The value to test.\n\t * @returns {boolean}\n\t * @since 2.7.0\n\t */\n\tisNullOrUndef: function(value) {\n\t\treturn value === null || typeof value === 'undefined';\n\t},\n\n\t/**\n\t * Returns true if `value` is an array (including typed arrays), else returns false.\n\t * @param {*} value - The value to test.\n\t * @returns {boolean}\n\t * @function\n\t */\n\tisArray: function(value) {\n\t\tif (Array.isArray && Array.isArray(value)) {\n\t\t\treturn true;\n\t\t}\n\t\tvar type = Object.prototype.toString.call(value);\n\t\tif (type.substr(0, 7) === '[object' && type.substr(-6) === 'Array]') {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t},\n\n\t/**\n\t * Returns true if `value` is an object (excluding null), else returns false.\n\t * @param {*} value - The value to test.\n\t * @returns {boolean}\n\t * @since 2.7.0\n\t */\n\tisObject: function(value) {\n\t\treturn value !== null && Object.prototype.toString.call(value) === '[object Object]';\n\t},\n\n\t/**\n\t * Returns true if `value` is a finite number, else returns false\n\t * @param {*} value  - The value to test.\n\t * @returns {boolean}\n\t */\n\tisFinite: function(value) {\n\t\treturn (typeof value === 'number' || value instanceof Number) && isFinite(value);\n\t},\n\n\t/**\n\t * Returns `value` if defined, else returns `defaultValue`.\n\t * @param {*} value - The value to return if defined.\n\t * @param {*} defaultValue - The value to return if `value` is undefined.\n\t * @returns {*}\n\t */\n\tvalueOrDefault: function(value, defaultValue) {\n\t\treturn typeof value === 'undefined' ? defaultValue : value;\n\t},\n\n\t/**\n\t * Returns value at the given `index` in array if defined, else returns `defaultValue`.\n\t * @param {Array} value - The array to lookup for value at `index`.\n\t * @param {number} index - The index in `value` to lookup for value.\n\t * @param {*} defaultValue - The value to return if `value[index]` is undefined.\n\t * @returns {*}\n\t */\n\tvalueAtIndexOrDefault: function(value, index, defaultValue) {\n\t\treturn helpers.valueOrDefault(helpers.isArray(value) ? value[index] : value, defaultValue);\n\t},\n\n\t/**\n\t * Calls `fn` with the given `args` in the scope defined by `thisArg` and returns the\n\t * value returned by `fn`. If `fn` is not a function, this method returns undefined.\n\t * @param {function} fn - The function to call.\n\t * @param {Array|undefined|null} args - The arguments with which `fn` should be called.\n\t * @param {object} [thisArg] - The value of `this` provided for the call to `fn`.\n\t * @returns {*}\n\t */\n\tcallback: function(fn, args, thisArg) {\n\t\tif (fn && typeof fn.call === 'function') {\n\t\t\treturn fn.apply(thisArg, args);\n\t\t}\n\t},\n\n\t/**\n\t * Note(SB) for performance sake, this method should only be used when loopable type\n\t * is unknown or in none intensive code (not called often and small loopable). Else\n\t * it's preferable to use a regular for() loop and save extra function calls.\n\t * @param {object|Array} loopable - The object or array to be iterated.\n\t * @param {function} fn - The function to call for each item.\n\t * @param {object} [thisArg] - The value of `this` provided for the call to `fn`.\n\t * @param {boolean} [reverse] - If true, iterates backward on the loopable.\n\t */\n\teach: function(loopable, fn, thisArg, reverse) {\n\t\tvar i, len, keys;\n\t\tif (helpers.isArray(loopable)) {\n\t\t\tlen = loopable.length;\n\t\t\tif (reverse) {\n\t\t\t\tfor (i = len - 1; i >= 0; i--) {\n\t\t\t\t\tfn.call(thisArg, loopable[i], i);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor (i = 0; i < len; i++) {\n\t\t\t\t\tfn.call(thisArg, loopable[i], i);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (helpers.isObject(loopable)) {\n\t\t\tkeys = Object.keys(loopable);\n\t\t\tlen = keys.length;\n\t\t\tfor (i = 0; i < len; i++) {\n\t\t\t\tfn.call(thisArg, loopable[keys[i]], keys[i]);\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Returns true if the `a0` and `a1` arrays have the same content, else returns false.\n\t * @see https://stackoverflow.com/a/14853974\n\t * @param {Array} a0 - The array to compare\n\t * @param {Array} a1 - The array to compare\n\t * @returns {boolean}\n\t */\n\tarrayEquals: function(a0, a1) {\n\t\tvar i, ilen, v0, v1;\n\n\t\tif (!a0 || !a1 || a0.length !== a1.length) {\n\t\t\treturn false;\n\t\t}\n\n\t\tfor (i = 0, ilen = a0.length; i < ilen; ++i) {\n\t\t\tv0 = a0[i];\n\t\t\tv1 = a1[i];\n\n\t\t\tif (v0 instanceof Array && v1 instanceof Array) {\n\t\t\t\tif (!helpers.arrayEquals(v0, v1)) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t} else if (v0 !== v1) {\n\t\t\t\t// NOTE: two different object instances will never be equal: {x:20} != {x:20}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t},\n\n\t/**\n\t * Returns a deep copy of `source` without keeping references on objects and arrays.\n\t * @param {*} source - The value to clone.\n\t * @returns {*}\n\t */\n\tclone: function(source) {\n\t\tif (helpers.isArray(source)) {\n\t\t\treturn source.map(helpers.clone);\n\t\t}\n\n\t\tif (helpers.isObject(source)) {\n\t\t\tvar target = {};\n\t\t\tvar keys = Object.keys(source);\n\t\t\tvar klen = keys.length;\n\t\t\tvar k = 0;\n\n\t\t\tfor (; k < klen; ++k) {\n\t\t\t\ttarget[keys[k]] = helpers.clone(source[keys[k]]);\n\t\t\t}\n\n\t\t\treturn target;\n\t\t}\n\n\t\treturn source;\n\t},\n\n\t/**\n\t * The default merger when Chart.helpers.merge is called without merger option.\n\t * Note(SB): also used by mergeConfig and mergeScaleConfig as fallback.\n\t * @private\n\t */\n\t_merger: function(key, target, source, options) {\n\t\tvar tval = target[key];\n\t\tvar sval = source[key];\n\n\t\tif (helpers.isObject(tval) && helpers.isObject(sval)) {\n\t\t\thelpers.merge(tval, sval, options);\n\t\t} else {\n\t\t\ttarget[key] = helpers.clone(sval);\n\t\t}\n\t},\n\n\t/**\n\t * Merges source[key] in target[key] only if target[key] is undefined.\n\t * @private\n\t */\n\t_mergerIf: function(key, target, source) {\n\t\tvar tval = target[key];\n\t\tvar sval = source[key];\n\n\t\tif (helpers.isObject(tval) && helpers.isObject(sval)) {\n\t\t\thelpers.mergeIf(tval, sval);\n\t\t} else if (!target.hasOwnProperty(key)) {\n\t\t\ttarget[key] = helpers.clone(sval);\n\t\t}\n\t},\n\n\t/**\n\t * Recursively deep copies `source` properties into `target` with the given `options`.\n\t * IMPORTANT: `target` is not cloned and will be updated with `source` properties.\n\t * @param {object} target - The target object in which all sources are merged into.\n\t * @param {object|object[]} source - Object(s) to merge into `target`.\n\t * @param {object} [options] - Merging options:\n\t * @param {function} [options.merger] - The merge method (key, target, source, options)\n\t * @returns {object} The `target` object.\n\t */\n\tmerge: function(target, source, options) {\n\t\tvar sources = helpers.isArray(source) ? source : [source];\n\t\tvar ilen = sources.length;\n\t\tvar merge, i, keys, klen, k;\n\n\t\tif (!helpers.isObject(target)) {\n\t\t\treturn target;\n\t\t}\n\n\t\toptions = options || {};\n\t\tmerge = options.merger || helpers._merger;\n\n\t\tfor (i = 0; i < ilen; ++i) {\n\t\t\tsource = sources[i];\n\t\t\tif (!helpers.isObject(source)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tkeys = Object.keys(source);\n\t\t\tfor (k = 0, klen = keys.length; k < klen; ++k) {\n\t\t\t\tmerge(keys[k], target, source, options);\n\t\t\t}\n\t\t}\n\n\t\treturn target;\n\t},\n\n\t/**\n\t * Recursively deep copies `source` properties into `target` *only* if not defined in target.\n\t * IMPORTANT: `target` is not cloned and will be updated with `source` properties.\n\t * @param {object} target - The target object in which all sources are merged into.\n\t * @param {object|object[]} source - Object(s) to merge into `target`.\n\t * @returns {object} The `target` object.\n\t */\n\tmergeIf: function(target, source) {\n\t\treturn helpers.merge(target, source, {merger: helpers._mergerIf});\n\t},\n\n\t/**\n\t * Applies the contents of two or more objects together into the first object.\n\t * @param {object} target - The target object in which all objects are merged into.\n\t * @param {object} arg1 - Object containing additional properties to merge in target.\n\t * @param {object} argN - Additional objects containing properties to merge in target.\n\t * @returns {object} The `target` object.\n\t */\n\textend: Object.assign || function(target) {\n\t\treturn helpers.merge(target, [].slice.call(arguments, 1), {\n\t\t\tmerger: function(key, dst, src) {\n\t\t\t\tdst[key] = src[key];\n\t\t\t}\n\t\t});\n\t},\n\n\t/**\n\t * Basic javascript inheritance based on the model created in Backbone.js\n\t */\n\tinherits: function(extensions) {\n\t\tvar me = this;\n\t\tvar ChartElement = (extensions && extensions.hasOwnProperty('constructor')) ? extensions.constructor : function() {\n\t\t\treturn me.apply(this, arguments);\n\t\t};\n\n\t\tvar Surrogate = function() {\n\t\t\tthis.constructor = ChartElement;\n\t\t};\n\n\t\tSurrogate.prototype = me.prototype;\n\t\tChartElement.prototype = new Surrogate();\n\t\tChartElement.extend = helpers.inherits;\n\n\t\tif (extensions) {\n\t\t\thelpers.extend(ChartElement.prototype, extensions);\n\t\t}\n\n\t\tChartElement.__super__ = me.prototype;\n\t\treturn ChartElement;\n\t},\n\n\t_deprecated: function(scope, value, previous, current) {\n\t\tif (value !== undefined) {\n\t\t\tconsole.warn(scope + ': \"' + previous +\n\t\t\t\t'\" is deprecated. Please use \"' + current + '\" instead');\n\t\t}\n\t}\n};\n\nvar helpers_core = helpers;\n\n// DEPRECATIONS\n\n/**\n * Provided for backward compatibility, use Chart.helpers.callback instead.\n * @function Chart.helpers.callCallback\n * @deprecated since version 2.6.0\n * @todo remove at version 3\n * @private\n */\nhelpers.callCallback = helpers.callback;\n\n/**\n * Provided for backward compatibility, use Array.prototype.indexOf instead.\n * Array.prototype.indexOf compatibility: Chrome, Opera, Safari, FF1.5+, IE9+\n * @function Chart.helpers.indexOf\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers.indexOf = function(array, item, fromIndex) {\n\treturn Array.prototype.indexOf.call(array, item, fromIndex);\n};\n\n/**\n * Provided for backward compatibility, use Chart.helpers.valueOrDefault instead.\n * @function Chart.helpers.getValueOrDefault\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers.getValueOrDefault = helpers.valueOrDefault;\n\n/**\n * Provided for backward compatibility, use Chart.helpers.valueAtIndexOrDefault instead.\n * @function Chart.helpers.getValueAtIndexOrDefault\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers.getValueAtIndexOrDefault = helpers.valueAtIndexOrDefault;\n\n/**\n * Easing functions adapted from Robert Penner's easing equations.\n * @namespace Chart.helpers.easingEffects\n * @see http://www.robertpenner.com/easing/\n */\nvar effects = {\n\tlinear: function(t) {\n\t\treturn t;\n\t},\n\n\teaseInQuad: function(t) {\n\t\treturn t * t;\n\t},\n\n\teaseOutQuad: function(t) {\n\t\treturn -t * (t - 2);\n\t},\n\n\teaseInOutQuad: function(t) {\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn 0.5 * t * t;\n\t\t}\n\t\treturn -0.5 * ((--t) * (t - 2) - 1);\n\t},\n\n\teaseInCubic: function(t) {\n\t\treturn t * t * t;\n\t},\n\n\teaseOutCubic: function(t) {\n\t\treturn (t = t - 1) * t * t + 1;\n\t},\n\n\teaseInOutCubic: function(t) {\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn 0.5 * t * t * t;\n\t\t}\n\t\treturn 0.5 * ((t -= 2) * t * t + 2);\n\t},\n\n\teaseInQuart: function(t) {\n\t\treturn t * t * t * t;\n\t},\n\n\teaseOutQuart: function(t) {\n\t\treturn -((t = t - 1) * t * t * t - 1);\n\t},\n\n\teaseInOutQuart: function(t) {\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn 0.5 * t * t * t * t;\n\t\t}\n\t\treturn -0.5 * ((t -= 2) * t * t * t - 2);\n\t},\n\n\teaseInQuint: function(t) {\n\t\treturn t * t * t * t * t;\n\t},\n\n\teaseOutQuint: function(t) {\n\t\treturn (t = t - 1) * t * t * t * t + 1;\n\t},\n\n\teaseInOutQuint: function(t) {\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn 0.5 * t * t * t * t * t;\n\t\t}\n\t\treturn 0.5 * ((t -= 2) * t * t * t * t + 2);\n\t},\n\n\teaseInSine: function(t) {\n\t\treturn -Math.cos(t * (Math.PI / 2)) + 1;\n\t},\n\n\teaseOutSine: function(t) {\n\t\treturn Math.sin(t * (Math.PI / 2));\n\t},\n\n\teaseInOutSine: function(t) {\n\t\treturn -0.5 * (Math.cos(Math.PI * t) - 1);\n\t},\n\n\teaseInExpo: function(t) {\n\t\treturn (t === 0) ? 0 : Math.pow(2, 10 * (t - 1));\n\t},\n\n\teaseOutExpo: function(t) {\n\t\treturn (t === 1) ? 1 : -Math.pow(2, -10 * t) + 1;\n\t},\n\n\teaseInOutExpo: function(t) {\n\t\tif (t === 0) {\n\t\t\treturn 0;\n\t\t}\n\t\tif (t === 1) {\n\t\t\treturn 1;\n\t\t}\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn 0.5 * Math.pow(2, 10 * (t - 1));\n\t\t}\n\t\treturn 0.5 * (-Math.pow(2, -10 * --t) + 2);\n\t},\n\n\teaseInCirc: function(t) {\n\t\tif (t >= 1) {\n\t\t\treturn t;\n\t\t}\n\t\treturn -(Math.sqrt(1 - t * t) - 1);\n\t},\n\n\teaseOutCirc: function(t) {\n\t\treturn Math.sqrt(1 - (t = t - 1) * t);\n\t},\n\n\teaseInOutCirc: function(t) {\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn -0.5 * (Math.sqrt(1 - t * t) - 1);\n\t\t}\n\t\treturn 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1);\n\t},\n\n\teaseInElastic: function(t) {\n\t\tvar s = 1.70158;\n\t\tvar p = 0;\n\t\tvar a = 1;\n\t\tif (t === 0) {\n\t\t\treturn 0;\n\t\t}\n\t\tif (t === 1) {\n\t\t\treturn 1;\n\t\t}\n\t\tif (!p) {\n\t\t\tp = 0.3;\n\t\t}\n\t\tif (a < 1) {\n\t\t\ta = 1;\n\t\t\ts = p / 4;\n\t\t} else {\n\t\t\ts = p / (2 * Math.PI) * Math.asin(1 / a);\n\t\t}\n\t\treturn -(a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p));\n\t},\n\n\teaseOutElastic: function(t) {\n\t\tvar s = 1.70158;\n\t\tvar p = 0;\n\t\tvar a = 1;\n\t\tif (t === 0) {\n\t\t\treturn 0;\n\t\t}\n\t\tif (t === 1) {\n\t\t\treturn 1;\n\t\t}\n\t\tif (!p) {\n\t\t\tp = 0.3;\n\t\t}\n\t\tif (a < 1) {\n\t\t\ta = 1;\n\t\t\ts = p / 4;\n\t\t} else {\n\t\t\ts = p / (2 * Math.PI) * Math.asin(1 / a);\n\t\t}\n\t\treturn a * Math.pow(2, -10 * t) * Math.sin((t - s) * (2 * Math.PI) / p) + 1;\n\t},\n\n\teaseInOutElastic: function(t) {\n\t\tvar s = 1.70158;\n\t\tvar p = 0;\n\t\tvar a = 1;\n\t\tif (t === 0) {\n\t\t\treturn 0;\n\t\t}\n\t\tif ((t /= 0.5) === 2) {\n\t\t\treturn 1;\n\t\t}\n\t\tif (!p) {\n\t\t\tp = 0.45;\n\t\t}\n\t\tif (a < 1) {\n\t\t\ta = 1;\n\t\t\ts = p / 4;\n\t\t} else {\n\t\t\ts = p / (2 * Math.PI) * Math.asin(1 / a);\n\t\t}\n\t\tif (t < 1) {\n\t\t\treturn -0.5 * (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p));\n\t\t}\n\t\treturn a * Math.pow(2, -10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p) * 0.5 + 1;\n\t},\n\teaseInBack: function(t) {\n\t\tvar s = 1.70158;\n\t\treturn t * t * ((s + 1) * t - s);\n\t},\n\n\teaseOutBack: function(t) {\n\t\tvar s = 1.70158;\n\t\treturn (t = t - 1) * t * ((s + 1) * t + s) + 1;\n\t},\n\n\teaseInOutBack: function(t) {\n\t\tvar s = 1.70158;\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn 0.5 * (t * t * (((s *= (1.525)) + 1) * t - s));\n\t\t}\n\t\treturn 0.5 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2);\n\t},\n\n\teaseInBounce: function(t) {\n\t\treturn 1 - effects.easeOutBounce(1 - t);\n\t},\n\n\teaseOutBounce: function(t) {\n\t\tif (t < (1 / 2.75)) {\n\t\t\treturn 7.5625 * t * t;\n\t\t}\n\t\tif (t < (2 / 2.75)) {\n\t\t\treturn 7.5625 * (t -= (1.5 / 2.75)) * t + 0.75;\n\t\t}\n\t\tif (t < (2.5 / 2.75)) {\n\t\t\treturn 7.5625 * (t -= (2.25 / 2.75)) * t + 0.9375;\n\t\t}\n\t\treturn 7.5625 * (t -= (2.625 / 2.75)) * t + 0.984375;\n\t},\n\n\teaseInOutBounce: function(t) {\n\t\tif (t < 0.5) {\n\t\t\treturn effects.easeInBounce(t * 2) * 0.5;\n\t\t}\n\t\treturn effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5;\n\t}\n};\n\nvar helpers_easing = {\n\teffects: effects\n};\n\n// DEPRECATIONS\n\n/**\n * Provided for backward compatibility, use Chart.helpers.easing.effects instead.\n * @function Chart.helpers.easingEffects\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers_core.easingEffects = effects;\n\nvar PI = Math.PI;\nvar RAD_PER_DEG = PI / 180;\nvar DOUBLE_PI = PI * 2;\nvar HALF_PI = PI / 2;\nvar QUARTER_PI = PI / 4;\nvar TWO_THIRDS_PI = PI * 2 / 3;\n\n/**\n * @namespace Chart.helpers.canvas\n */\nvar exports$1 = {\n\t/**\n\t * Clears the entire canvas associated to the given `chart`.\n\t * @param {Chart} chart - The chart for which to clear the canvas.\n\t */\n\tclear: function(chart) {\n\t\tchart.ctx.clearRect(0, 0, chart.width, chart.height);\n\t},\n\n\t/**\n\t * Creates a \"path\" for a rectangle with rounded corners at position (x, y) with a\n\t * given size (width, height) and the same `radius` for all corners.\n\t * @param {CanvasRenderingContext2D} ctx - The canvas 2D Context.\n\t * @param {number} x - The x axis of the coordinate for the rectangle starting point.\n\t * @param {number} y - The y axis of the coordinate for the rectangle starting point.\n\t * @param {number} width - The rectangle's width.\n\t * @param {number} height - The rectangle's height.\n\t * @param {number} radius - The rounded amount (in pixels) for the four corners.\n\t * @todo handle `radius` as top-left, top-right, bottom-right, bottom-left array/object?\n\t */\n\troundedRect: function(ctx, x, y, width, height, radius) {\n\t\tif (radius) {\n\t\t\tvar r = Math.min(radius, height / 2, width / 2);\n\t\t\tvar left = x + r;\n\t\t\tvar top = y + r;\n\t\t\tvar right = x + width - r;\n\t\t\tvar bottom = y + height - r;\n\n\t\t\tctx.moveTo(x, top);\n\t\t\tif (left < right && top < bottom) {\n\t\t\t\tctx.arc(left, top, r, -PI, -HALF_PI);\n\t\t\t\tctx.arc(right, top, r, -HALF_PI, 0);\n\t\t\t\tctx.arc(right, bottom, r, 0, HALF_PI);\n\t\t\t\tctx.arc(left, bottom, r, HALF_PI, PI);\n\t\t\t} else if (left < right) {\n\t\t\t\tctx.moveTo(left, y);\n\t\t\t\tctx.arc(right, top, r, -HALF_PI, HALF_PI);\n\t\t\t\tctx.arc(left, top, r, HALF_PI, PI + HALF_PI);\n\t\t\t} else if (top < bottom) {\n\t\t\t\tctx.arc(left, top, r, -PI, 0);\n\t\t\t\tctx.arc(left, bottom, r, 0, PI);\n\t\t\t} else {\n\t\t\t\tctx.arc(left, top, r, -PI, PI);\n\t\t\t}\n\t\t\tctx.closePath();\n\t\t\tctx.moveTo(x, y);\n\t\t} else {\n\t\t\tctx.rect(x, y, width, height);\n\t\t}\n\t},\n\n\tdrawPoint: function(ctx, style, radius, x, y, rotation) {\n\t\tvar type, xOffset, yOffset, size, cornerRadius;\n\t\tvar rad = (rotation || 0) * RAD_PER_DEG;\n\n\t\tif (style && typeof style === 'object') {\n\t\t\ttype = style.toString();\n\t\t\tif (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\n\t\t\t\tctx.save();\n\t\t\t\tctx.translate(x, y);\n\t\t\t\tctx.rotate(rad);\n\t\t\t\tctx.drawImage(style, -style.width / 2, -style.height / 2, style.width, style.height);\n\t\t\t\tctx.restore();\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tif (isNaN(radius) || radius <= 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tctx.beginPath();\n\n\t\tswitch (style) {\n\t\t// Default includes circle\n\t\tdefault:\n\t\t\tctx.arc(x, y, radius, 0, DOUBLE_PI);\n\t\t\tctx.closePath();\n\t\t\tbreak;\n\t\tcase 'triangle':\n\t\t\tctx.moveTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n\t\t\trad += TWO_THIRDS_PI;\n\t\t\tctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n\t\t\trad += TWO_THIRDS_PI;\n\t\t\tctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n\t\t\tctx.closePath();\n\t\t\tbreak;\n\t\tcase 'rectRounded':\n\t\t\t// NOTE: the rounded rect implementation changed to use `arc` instead of\n\t\t\t// `quadraticCurveTo` since it generates better results when rect is\n\t\t\t// almost a circle. 0.516 (instead of 0.5) produces results with visually\n\t\t\t// closer proportion to the previous impl and it is inscribed in the\n\t\t\t// circle with `radius`. For more details, see the following PRs:\n\t\t\t// https://github.com/chartjs/Chart.js/issues/5597\n\t\t\t// https://github.com/chartjs/Chart.js/issues/5858\n\t\t\tcornerRadius = radius * 0.516;\n\t\t\tsize = radius - cornerRadius;\n\t\t\txOffset = Math.cos(rad + QUARTER_PI) * size;\n\t\t\tyOffset = Math.sin(rad + QUARTER_PI) * size;\n\t\t\tctx.arc(x - xOffset, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI);\n\t\t\tctx.arc(x + yOffset, y - xOffset, cornerRadius, rad - HALF_PI, rad);\n\t\t\tctx.arc(x + xOffset, y + yOffset, cornerRadius, rad, rad + HALF_PI);\n\t\t\tctx.arc(x - yOffset, y + xOffset, cornerRadius, rad + HALF_PI, rad + PI);\n\t\t\tctx.closePath();\n\t\t\tbreak;\n\t\tcase 'rect':\n\t\t\tif (!rotation) {\n\t\t\t\tsize = Math.SQRT1_2 * radius;\n\t\t\t\tctx.rect(x - size, y - size, 2 * size, 2 * size);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\trad += QUARTER_PI;\n\t\t\t/* falls through */\n\t\tcase 'rectRot':\n\t\t\txOffset = Math.cos(rad) * radius;\n\t\t\tyOffset = Math.sin(rad) * radius;\n\t\t\tctx.moveTo(x - xOffset, y - yOffset);\n\t\t\tctx.lineTo(x + yOffset, y - xOffset);\n\t\t\tctx.lineTo(x + xOffset, y + yOffset);\n\t\t\tctx.lineTo(x - yOffset, y + xOffset);\n\t\t\tctx.closePath();\n\t\t\tbreak;\n\t\tcase 'crossRot':\n\t\t\trad += QUARTER_PI;\n\t\t\t/* falls through */\n\t\tcase 'cross':\n\t\t\txOffset = Math.cos(rad) * radius;\n\t\t\tyOffset = Math.sin(rad) * radius;\n\t\t\tctx.moveTo(x - xOffset, y - yOffset);\n\t\t\tctx.lineTo(x + xOffset, y + yOffset);\n\t\t\tctx.moveTo(x + yOffset, y - xOffset);\n\t\t\tctx.lineTo(x - yOffset, y + xOffset);\n\t\t\tbreak;\n\t\tcase 'star':\n\t\t\txOffset = Math.cos(rad) * radius;\n\t\t\tyOffset = Math.sin(rad) * radius;\n\t\t\tctx.moveTo(x - xOffset, y - yOffset);\n\t\t\tctx.lineTo(x + xOffset, y + yOffset);\n\t\t\tctx.moveTo(x + yOffset, y - xOffset);\n\t\t\tctx.lineTo(x - yOffset, y + xOffset);\n\t\t\trad += QUARTER_PI;\n\t\t\txOffset = Math.cos(rad) * radius;\n\t\t\tyOffset = Math.sin(rad) * radius;\n\t\t\tctx.moveTo(x - xOffset, y - yOffset);\n\t\t\tctx.lineTo(x + xOffset, y + yOffset);\n\t\t\tctx.moveTo(x + yOffset, y - xOffset);\n\t\t\tctx.lineTo(x - yOffset, y + xOffset);\n\t\t\tbreak;\n\t\tcase 'line':\n\t\t\txOffset = Math.cos(rad) * radius;\n\t\t\tyOffset = Math.sin(rad) * radius;\n\t\t\tctx.moveTo(x - xOffset, y - yOffset);\n\t\t\tctx.lineTo(x + xOffset, y + yOffset);\n\t\t\tbreak;\n\t\tcase 'dash':\n\t\t\tctx.moveTo(x, y);\n\t\t\tctx.lineTo(x + Math.cos(rad) * radius, y + Math.sin(rad) * radius);\n\t\t\tbreak;\n\t\t}\n\n\t\tctx.fill();\n\t\tctx.stroke();\n\t},\n\n\t/**\n\t * Returns true if the point is inside the rectangle\n\t * @param {object} point - The point to test\n\t * @param {object} area - The rectangle\n\t * @returns {boolean}\n\t * @private\n\t */\n\t_isPointInArea: function(point, area) {\n\t\tvar epsilon = 1e-6; // 1e-6 is margin in pixels for accumulated error.\n\n\t\treturn point.x > area.left - epsilon && point.x < area.right + epsilon &&\n\t\t\tpoint.y > area.top - epsilon && point.y < area.bottom + epsilon;\n\t},\n\n\tclipArea: function(ctx, area) {\n\t\tctx.save();\n\t\tctx.beginPath();\n\t\tctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top);\n\t\tctx.clip();\n\t},\n\n\tunclipArea: function(ctx) {\n\t\tctx.restore();\n\t},\n\n\tlineTo: function(ctx, previous, target, flip) {\n\t\tvar stepped = target.steppedLine;\n\t\tif (stepped) {\n\t\t\tif (stepped === 'middle') {\n\t\t\t\tvar midpoint = (previous.x + target.x) / 2.0;\n\t\t\t\tctx.lineTo(midpoint, flip ? target.y : previous.y);\n\t\t\t\tctx.lineTo(midpoint, flip ? previous.y : target.y);\n\t\t\t} else if ((stepped === 'after' && !flip) || (stepped !== 'after' && flip)) {\n\t\t\t\tctx.lineTo(previous.x, target.y);\n\t\t\t} else {\n\t\t\t\tctx.lineTo(target.x, previous.y);\n\t\t\t}\n\t\t\tctx.lineTo(target.x, target.y);\n\t\t\treturn;\n\t\t}\n\n\t\tif (!target.tension) {\n\t\t\tctx.lineTo(target.x, target.y);\n\t\t\treturn;\n\t\t}\n\n\t\tctx.bezierCurveTo(\n\t\t\tflip ? previous.controlPointPreviousX : previous.controlPointNextX,\n\t\t\tflip ? previous.controlPointPreviousY : previous.controlPointNextY,\n\t\t\tflip ? target.controlPointNextX : target.controlPointPreviousX,\n\t\t\tflip ? target.controlPointNextY : target.controlPointPreviousY,\n\t\t\ttarget.x,\n\t\t\ttarget.y);\n\t}\n};\n\nvar helpers_canvas = exports$1;\n\n// DEPRECATIONS\n\n/**\n * Provided for backward compatibility, use Chart.helpers.canvas.clear instead.\n * @namespace Chart.helpers.clear\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers_core.clear = exports$1.clear;\n\n/**\n * Provided for backward compatibility, use Chart.helpers.canvas.roundedRect instead.\n * @namespace Chart.helpers.drawRoundedRectangle\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers_core.drawRoundedRectangle = function(ctx) {\n\tctx.beginPath();\n\texports$1.roundedRect.apply(exports$1, arguments);\n};\n\nvar defaults = {\n\t/**\n\t * @private\n\t */\n\t_set: function(scope, values) {\n\t\treturn helpers_core.merge(this[scope] || (this[scope] = {}), values);\n\t}\n};\n\n// TODO(v3): remove 'global' from namespace.  all default are global and\n// there's inconsistency around which options are under 'global'\ndefaults._set('global', {\n\tdefaultColor: 'rgba(0,0,0,0.1)',\n\tdefaultFontColor: '#666',\n\tdefaultFontFamily: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",\n\tdefaultFontSize: 12,\n\tdefaultFontStyle: 'normal',\n\tdefaultLineHeight: 1.2,\n\tshowLines: true\n});\n\nvar core_defaults = defaults;\n\nvar valueOrDefault = helpers_core.valueOrDefault;\n\n/**\n * Converts the given font object into a CSS font string.\n * @param {object} font - A font object.\n * @return {string} The CSS font string. See https://developer.mozilla.org/en-US/docs/Web/CSS/font\n * @private\n */\nfunction toFontString(font) {\n\tif (!font || helpers_core.isNullOrUndef(font.size) || helpers_core.isNullOrUndef(font.family)) {\n\t\treturn null;\n\t}\n\n\treturn (font.style ? font.style + ' ' : '')\n\t\t+ (font.weight ? font.weight + ' ' : '')\n\t\t+ font.size + 'px '\n\t\t+ font.family;\n}\n\n/**\n * @alias Chart.helpers.options\n * @namespace\n */\nvar helpers_options = {\n\t/**\n\t * Converts the given line height `value` in pixels for a specific font `size`.\n\t * @param {number|string} value - The lineHeight to parse (eg. 1.6, '14px', '75%', '1.6em').\n\t * @param {number} size - The font size (in pixels) used to resolve relative `value`.\n\t * @returns {number} The effective line height in pixels (size * 1.2 if value is invalid).\n\t * @see https://developer.mozilla.org/en-US/docs/Web/CSS/line-height\n\t * @since 2.7.0\n\t */\n\ttoLineHeight: function(value, size) {\n\t\tvar matches = ('' + value).match(/^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/);\n\t\tif (!matches || matches[1] === 'normal') {\n\t\t\treturn size * 1.2;\n\t\t}\n\n\t\tvalue = +matches[2];\n\n\t\tswitch (matches[3]) {\n\t\tcase 'px':\n\t\t\treturn value;\n\t\tcase '%':\n\t\t\tvalue /= 100;\n\t\t\tbreak;\n\t\t}\n\n\t\treturn size * value;\n\t},\n\n\t/**\n\t * Converts the given value into a padding object with pre-computed width/height.\n\t * @param {number|object} value - If a number, set the value to all TRBL component,\n\t *  else, if and object, use defined properties and sets undefined ones to 0.\n\t * @returns {object} The padding values (top, right, bottom, left, width, height)\n\t * @since 2.7.0\n\t */\n\ttoPadding: function(value) {\n\t\tvar t, r, b, l;\n\n\t\tif (helpers_core.isObject(value)) {\n\t\t\tt = +value.top || 0;\n\t\t\tr = +value.right || 0;\n\t\t\tb = +value.bottom || 0;\n\t\t\tl = +value.left || 0;\n\t\t} else {\n\t\t\tt = r = b = l = +value || 0;\n\t\t}\n\n\t\treturn {\n\t\t\ttop: t,\n\t\t\tright: r,\n\t\t\tbottom: b,\n\t\t\tleft: l,\n\t\t\theight: t + b,\n\t\t\twidth: l + r\n\t\t};\n\t},\n\n\t/**\n\t * Parses font options and returns the font object.\n\t * @param {object} options - A object that contains font options to be parsed.\n\t * @return {object} The font object.\n\t * @todo Support font.* options and renamed to toFont().\n\t * @private\n\t */\n\t_parseFont: function(options) {\n\t\tvar globalDefaults = core_defaults.global;\n\t\tvar size = valueOrDefault(options.fontSize, globalDefaults.defaultFontSize);\n\t\tvar font = {\n\t\t\tfamily: valueOrDefault(options.fontFamily, globalDefaults.defaultFontFamily),\n\t\t\tlineHeight: helpers_core.options.toLineHeight(valueOrDefault(options.lineHeight, globalDefaults.defaultLineHeight), size),\n\t\t\tsize: size,\n\t\t\tstyle: valueOrDefault(options.fontStyle, globalDefaults.defaultFontStyle),\n\t\t\tweight: null,\n\t\t\tstring: ''\n\t\t};\n\n\t\tfont.string = toFontString(font);\n\t\treturn font;\n\t},\n\n\t/**\n\t * Evaluates the given `inputs` sequentially and returns the first defined value.\n\t * @param {Array} inputs - An array of values, falling back to the last value.\n\t * @param {object} [context] - If defined and the current value is a function, the value\n\t * is called with `context` as first argument and the result becomes the new input.\n\t * @param {number} [index] - If defined and the current value is an array, the value\n\t * at `index` become the new input.\n\t * @param {object} [info] - object to return information about resolution in\n\t * @param {boolean} [info.cacheable] - Will be set to `false` if option is not cacheable.\n\t * @since 2.7.0\n\t */\n\tresolve: function(inputs, context, index, info) {\n\t\tvar cacheable = true;\n\t\tvar i, ilen, value;\n\n\t\tfor (i = 0, ilen = inputs.length; i < ilen; ++i) {\n\t\t\tvalue = inputs[i];\n\t\t\tif (value === undefined) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (context !== undefined && typeof value === 'function') {\n\t\t\t\tvalue = value(context);\n\t\t\t\tcacheable = false;\n\t\t\t}\n\t\t\tif (index !== undefined && helpers_core.isArray(value)) {\n\t\t\t\tvalue = value[index];\n\t\t\t\tcacheable = false;\n\t\t\t}\n\t\t\tif (value !== undefined) {\n\t\t\t\tif (info && !cacheable) {\n\t\t\t\t\tinfo.cacheable = false;\n\t\t\t\t}\n\t\t\t\treturn value;\n\t\t\t}\n\t\t}\n\t}\n};\n\n/**\n * @alias Chart.helpers.math\n * @namespace\n */\nvar exports$2 = {\n\t/**\n\t * Returns an array of factors sorted from 1 to sqrt(value)\n\t * @private\n\t */\n\t_factorize: function(value) {\n\t\tvar result = [];\n\t\tvar sqrt = Math.sqrt(value);\n\t\tvar i;\n\n\t\tfor (i = 1; i < sqrt; i++) {\n\t\t\tif (value % i === 0) {\n\t\t\t\tresult.push(i);\n\t\t\t\tresult.push(value / i);\n\t\t\t}\n\t\t}\n\t\tif (sqrt === (sqrt | 0)) { // if value is a square number\n\t\t\tresult.push(sqrt);\n\t\t}\n\n\t\tresult.sort(function(a, b) {\n\t\t\treturn a - b;\n\t\t}).pop();\n\t\treturn result;\n\t},\n\n\tlog10: Math.log10 || function(x) {\n\t\tvar exponent = Math.log(x) * Math.LOG10E; // Math.LOG10E = 1 / Math.LN10.\n\t\t// Check for whole powers of 10,\n\t\t// which due to floating point rounding error should be corrected.\n\t\tvar powerOf10 = Math.round(exponent);\n\t\tvar isPowerOf10 = x === Math.pow(10, powerOf10);\n\n\t\treturn isPowerOf10 ? powerOf10 : exponent;\n\t}\n};\n\nvar helpers_math = exports$2;\n\n// DEPRECATIONS\n\n/**\n * Provided for backward compatibility, use Chart.helpers.math.log10 instead.\n * @namespace Chart.helpers.log10\n * @deprecated since version 2.9.0\n * @todo remove at version 3\n * @private\n */\nhelpers_core.log10 = exports$2.log10;\n\nvar getRtlAdapter = function(rectX, width) {\n\treturn {\n\t\tx: function(x) {\n\t\t\treturn rectX + rectX + width - x;\n\t\t},\n\t\tsetWidth: function(w) {\n\t\t\twidth = w;\n\t\t},\n\t\ttextAlign: function(align) {\n\t\t\tif (align === 'center') {\n\t\t\t\treturn align;\n\t\t\t}\n\t\t\treturn align === 'right' ? 'left' : 'right';\n\t\t},\n\t\txPlus: function(x, value) {\n\t\t\treturn x - value;\n\t\t},\n\t\tleftForLtr: function(x, itemWidth) {\n\t\t\treturn x - itemWidth;\n\t\t},\n\t};\n};\n\nvar getLtrAdapter = function() {\n\treturn {\n\t\tx: function(x) {\n\t\t\treturn x;\n\t\t},\n\t\tsetWidth: function(w) { // eslint-disable-line no-unused-vars\n\t\t},\n\t\ttextAlign: function(align) {\n\t\t\treturn align;\n\t\t},\n\t\txPlus: function(x, value) {\n\t\t\treturn x + value;\n\t\t},\n\t\tleftForLtr: function(x, _itemWidth) { // eslint-disable-line no-unused-vars\n\t\t\treturn x;\n\t\t},\n\t};\n};\n\nvar getAdapter = function(rtl, rectX, width) {\n\treturn rtl ? getRtlAdapter(rectX, width) : getLtrAdapter();\n};\n\nvar overrideTextDirection = function(ctx, direction) {\n\tvar style, original;\n\tif (direction === 'ltr' || direction === 'rtl') {\n\t\tstyle = ctx.canvas.style;\n\t\toriginal = [\n\t\t\tstyle.getPropertyValue('direction'),\n\t\t\tstyle.getPropertyPriority('direction'),\n\t\t];\n\n\t\tstyle.setProperty('direction', direction, 'important');\n\t\tctx.prevTextDirection = original;\n\t}\n};\n\nvar restoreTextDirection = function(ctx) {\n\tvar original = ctx.prevTextDirection;\n\tif (original !== undefined) {\n\t\tdelete ctx.prevTextDirection;\n\t\tctx.canvas.style.setProperty('direction', original[0], original[1]);\n\t}\n};\n\nvar helpers_rtl = {\n\tgetRtlAdapter: getAdapter,\n\toverrideTextDirection: overrideTextDirection,\n\trestoreTextDirection: restoreTextDirection,\n};\n\nvar helpers$1 = helpers_core;\nvar easing = helpers_easing;\nvar canvas = helpers_canvas;\nvar options = helpers_options;\nvar math = helpers_math;\nvar rtl = helpers_rtl;\nhelpers$1.easing = easing;\nhelpers$1.canvas = canvas;\nhelpers$1.options = options;\nhelpers$1.math = math;\nhelpers$1.rtl = rtl;\n\nfunction interpolate(start, view, model, ease) {\n\tvar keys = Object.keys(model);\n\tvar i, ilen, key, actual, origin, target, type, c0, c1;\n\n\tfor (i = 0, ilen = keys.length; i < ilen; ++i) {\n\t\tkey = keys[i];\n\n\t\ttarget = model[key];\n\n\t\t// if a value is added to the model after pivot() has been called, the view\n\t\t// doesn't contain it, so let's initialize the view to the target value.\n\t\tif (!view.hasOwnProperty(key)) {\n\t\t\tview[key] = target;\n\t\t}\n\n\t\tactual = view[key];\n\n\t\tif (actual === target || key[0] === '_') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (!start.hasOwnProperty(key)) {\n\t\t\tstart[key] = actual;\n\t\t}\n\n\t\torigin = start[key];\n\n\t\ttype = typeof target;\n\n\t\tif (type === typeof origin) {\n\t\t\tif (type === 'string') {\n\t\t\t\tc0 = chartjsColor(origin);\n\t\t\t\tif (c0.valid) {\n\t\t\t\t\tc1 = chartjsColor(target);\n\t\t\t\t\tif (c1.valid) {\n\t\t\t\t\t\tview[key] = c1.mix(c0, ease).rgbString();\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (helpers$1.isFinite(origin) && helpers$1.isFinite(target)) {\n\t\t\t\tview[key] = origin + (target - origin) * ease;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\n\t\tview[key] = target;\n\t}\n}\n\nvar Element = function(configuration) {\n\thelpers$1.extend(this, configuration);\n\tthis.initialize.apply(this, arguments);\n};\n\nhelpers$1.extend(Element.prototype, {\n\t_type: undefined,\n\n\tinitialize: function() {\n\t\tthis.hidden = false;\n\t},\n\n\tpivot: function() {\n\t\tvar me = this;\n\t\tif (!me._view) {\n\t\t\tme._view = helpers$1.extend({}, me._model);\n\t\t}\n\t\tme._start = {};\n\t\treturn me;\n\t},\n\n\ttransition: function(ease) {\n\t\tvar me = this;\n\t\tvar model = me._model;\n\t\tvar start = me._start;\n\t\tvar view = me._view;\n\n\t\t// No animation -> No Transition\n\t\tif (!model || ease === 1) {\n\t\t\tme._view = helpers$1.extend({}, model);\n\t\t\tme._start = null;\n\t\t\treturn me;\n\t\t}\n\n\t\tif (!view) {\n\t\t\tview = me._view = {};\n\t\t}\n\n\t\tif (!start) {\n\t\t\tstart = me._start = {};\n\t\t}\n\n\t\tinterpolate(start, view, model, ease);\n\n\t\treturn me;\n\t},\n\n\ttooltipPosition: function() {\n\t\treturn {\n\t\t\tx: this._model.x,\n\t\t\ty: this._model.y\n\t\t};\n\t},\n\n\thasValue: function() {\n\t\treturn helpers$1.isNumber(this._model.x) && helpers$1.isNumber(this._model.y);\n\t}\n});\n\nElement.extend = helpers$1.inherits;\n\nvar core_element = Element;\n\nvar exports$3 = core_element.extend({\n\tchart: null, // the animation associated chart instance\n\tcurrentStep: 0, // the current animation step\n\tnumSteps: 60, // default number of steps\n\teasing: '', // the easing to use for this animation\n\trender: null, // render function used by the animation service\n\n\tonAnimationProgress: null, // user specified callback to fire on each step of the animation\n\tonAnimationComplete: null, // user specified callback to fire when the animation finishes\n});\n\nvar core_animation = exports$3;\n\n// DEPRECATIONS\n\n/**\n * Provided for backward compatibility, use Chart.Animation instead\n * @prop Chart.Animation#animationObject\n * @deprecated since version 2.6.0\n * @todo remove at version 3\n */\nObject.defineProperty(exports$3.prototype, 'animationObject', {\n\tget: function() {\n\t\treturn this;\n\t}\n});\n\n/**\n * Provided for backward compatibility, use Chart.Animation#chart instead\n * @prop Chart.Animation#chartInstance\n * @deprecated since version 2.6.0\n * @todo remove at version 3\n */\nObject.defineProperty(exports$3.prototype, 'chartInstance', {\n\tget: function() {\n\t\treturn this.chart;\n\t},\n\tset: function(value) {\n\t\tthis.chart = value;\n\t}\n});\n\ncore_defaults._set('global', {\n\tanimation: {\n\t\tduration: 1000,\n\t\teasing: 'easeOutQuart',\n\t\tonProgress: helpers$1.noop,\n\t\tonComplete: helpers$1.noop\n\t}\n});\n\nvar core_animations = {\n\tanimations: [],\n\trequest: null,\n\n\t/**\n\t * @param {Chart} chart - The chart to animate.\n\t * @param {Chart.Animation} animation - The animation that we will animate.\n\t * @param {number} duration - The animation duration in ms.\n\t * @param {boolean} lazy - if true, the chart is not marked as animating to enable more responsive interactions\n\t */\n\taddAnimation: function(chart, animation, duration, lazy) {\n\t\tvar animations = this.animations;\n\t\tvar i, ilen;\n\n\t\tanimation.chart = chart;\n\t\tanimation.startTime = Date.now();\n\t\tanimation.duration = duration;\n\n\t\tif (!lazy) {\n\t\t\tchart.animating = true;\n\t\t}\n\n\t\tfor (i = 0, ilen = animations.length; i < ilen; ++i) {\n\t\t\tif (animations[i].chart === chart) {\n\t\t\t\tanimations[i] = animation;\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tanimations.push(animation);\n\n\t\t// If there are no animations queued, manually kickstart a digest, for lack of a better word\n\t\tif (animations.length === 1) {\n\t\t\tthis.requestAnimationFrame();\n\t\t}\n\t},\n\n\tcancelAnimation: function(chart) {\n\t\tvar index = helpers$1.findIndex(this.animations, function(animation) {\n\t\t\treturn animation.chart === chart;\n\t\t});\n\n\t\tif (index !== -1) {\n\t\t\tthis.animations.splice(index, 1);\n\t\t\tchart.animating = false;\n\t\t}\n\t},\n\n\trequestAnimationFrame: function() {\n\t\tvar me = this;\n\t\tif (me.request === null) {\n\t\t\t// Skip animation frame requests until the active one is executed.\n\t\t\t// This can happen when processing mouse events, e.g. 'mousemove'\n\t\t\t// and 'mouseout' events will trigger multiple renders.\n\t\t\tme.request = helpers$1.requestAnimFrame.call(window, function() {\n\t\t\t\tme.request = null;\n\t\t\t\tme.startDigest();\n\t\t\t});\n\t\t}\n\t},\n\n\t/**\n\t * @private\n\t */\n\tstartDigest: function() {\n\t\tvar me = this;\n\n\t\tme.advance();\n\n\t\t// Do we have more stuff to animate?\n\t\tif (me.animations.length > 0) {\n\t\t\tme.requestAnimationFrame();\n\t\t}\n\t},\n\n\t/**\n\t * @private\n\t */\n\tadvance: function() {\n\t\tvar animations = this.animations;\n\t\tvar animation, chart, numSteps, nextStep;\n\t\tvar i = 0;\n\n\t\t// 1 animation per chart, so we are looping charts here\n\t\twhile (i < animations.length) {\n\t\t\tanimation = animations[i];\n\t\t\tchart = animation.chart;\n\t\t\tnumSteps = animation.numSteps;\n\n\t\t\t// Make sure that currentStep starts at 1\n\t\t\t// https://github.com/chartjs/Chart.js/issues/6104\n\t\t\tnextStep = Math.floor((Date.now() - animation.startTime) / animation.duration * numSteps) + 1;\n\t\t\tanimation.currentStep = Math.min(nextStep, numSteps);\n\n\t\t\thelpers$1.callback(animation.render, [chart, animation], chart);\n\t\t\thelpers$1.callback(animation.onAnimationProgress, [animation], chart);\n\n\t\t\tif (animation.currentStep >= numSteps) {\n\t\t\t\thelpers$1.callback(animation.onAnimationComplete, [animation], chart);\n\t\t\t\tchart.animating = false;\n\t\t\t\tanimations.splice(i, 1);\n\t\t\t} else {\n\t\t\t\t++i;\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar resolve = helpers$1.options.resolve;\n\nvar arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift'];\n\n/**\n * Hooks the array methods that add or remove values ('push', pop', 'shift', 'splice',\n * 'unshift') and notify the listener AFTER the array has been altered. Listeners are\n * called on the 'onData*' callbacks (e.g. onDataPush, etc.) with same arguments.\n */\nfunction listenArrayEvents(array, listener) {\n\tif (array._chartjs) {\n\t\tarray._chartjs.listeners.push(listener);\n\t\treturn;\n\t}\n\n\tObject.defineProperty(array, '_chartjs', {\n\t\tconfigurable: true,\n\t\tenumerable: false,\n\t\tvalue: {\n\t\t\tlisteners: [listener]\n\t\t}\n\t});\n\n\tarrayEvents.forEach(function(key) {\n\t\tvar method = 'onData' + key.charAt(0).toUpperCase() + key.slice(1);\n\t\tvar base = array[key];\n\n\t\tObject.defineProperty(array, key, {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tvalue: function() {\n\t\t\t\tvar args = Array.prototype.slice.call(arguments);\n\t\t\t\tvar res = base.apply(this, args);\n\n\t\t\t\thelpers$1.each(array._chartjs.listeners, function(object) {\n\t\t\t\t\tif (typeof object[method] === 'function') {\n\t\t\t\t\t\tobject[method].apply(object, args);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\treturn res;\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Removes the given array event listener and cleanup extra attached properties (such as\n * the _chartjs stub and overridden methods) if array doesn't have any more listeners.\n */\nfunction unlistenArrayEvents(array, listener) {\n\tvar stub = array._chartjs;\n\tif (!stub) {\n\t\treturn;\n\t}\n\n\tvar listeners = stub.listeners;\n\tvar index = listeners.indexOf(listener);\n\tif (index !== -1) {\n\t\tlisteners.splice(index, 1);\n\t}\n\n\tif (listeners.length > 0) {\n\t\treturn;\n\t}\n\n\tarrayEvents.forEach(function(key) {\n\t\tdelete array[key];\n\t});\n\n\tdelete array._chartjs;\n}\n\n// Base class for all dataset controllers (line, bar, etc)\nvar DatasetController = function(chart, datasetIndex) {\n\tthis.initialize(chart, datasetIndex);\n};\n\nhelpers$1.extend(DatasetController.prototype, {\n\n\t/**\n\t * Element type used to generate a meta dataset (e.g. Chart.element.Line).\n\t * @type {Chart.core.element}\n\t */\n\tdatasetElementType: null,\n\n\t/**\n\t * Element type used to generate a meta data (e.g. Chart.element.Point).\n\t * @type {Chart.core.element}\n\t */\n\tdataElementType: null,\n\n\t/**\n\t * Dataset element option keys to be resolved in _resolveDatasetElementOptions.\n\t * A derived controller may override this to resolve controller-specific options.\n\t * The keys defined here are for backward compatibility for legend styles.\n\t * @private\n\t */\n\t_datasetElementOptions: [\n\t\t'backgroundColor',\n\t\t'borderCapStyle',\n\t\t'borderColor',\n\t\t'borderDash',\n\t\t'borderDashOffset',\n\t\t'borderJoinStyle',\n\t\t'borderWidth'\n\t],\n\n\t/**\n\t * Data element option keys to be resolved in _resolveDataElementOptions.\n\t * A derived controller may override this to resolve controller-specific options.\n\t * The keys defined here are for backward compatibility for legend styles.\n\t * @private\n\t */\n\t_dataElementOptions: [\n\t\t'backgroundColor',\n\t\t'borderColor',\n\t\t'borderWidth',\n\t\t'pointStyle'\n\t],\n\n\tinitialize: function(chart, datasetIndex) {\n\t\tvar me = this;\n\t\tme.chart = chart;\n\t\tme.index = datasetIndex;\n\t\tme.linkScales();\n\t\tme.addElements();\n\t\tme._type = me.getMeta().type;\n\t},\n\n\tupdateIndex: function(datasetIndex) {\n\t\tthis.index = datasetIndex;\n\t},\n\n\tlinkScales: function() {\n\t\tvar me = this;\n\t\tvar meta = me.getMeta();\n\t\tvar chart = me.chart;\n\t\tvar scales = chart.scales;\n\t\tvar dataset = me.getDataset();\n\t\tvar scalesOpts = chart.options.scales;\n\n\t\tif (meta.xAxisID === null || !(meta.xAxisID in scales) || dataset.xAxisID) {\n\t\t\tmeta.xAxisID = dataset.xAxisID || scalesOpts.xAxes[0].id;\n\t\t}\n\t\tif (meta.yAxisID === null || !(meta.yAxisID in scales) || dataset.yAxisID) {\n\t\t\tmeta.yAxisID = dataset.yAxisID || scalesOpts.yAxes[0].id;\n\t\t}\n\t},\n\n\tgetDataset: function() {\n\t\treturn this.chart.data.datasets[this.index];\n\t},\n\n\tgetMeta: function() {\n\t\treturn this.chart.getDatasetMeta(this.index);\n\t},\n\n\tgetScaleForId: function(scaleID) {\n\t\treturn this.chart.scales[scaleID];\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_getValueScaleId: function() {\n\t\treturn this.getMeta().yAxisID;\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_getIndexScaleId: function() {\n\t\treturn this.getMeta().xAxisID;\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_getValueScale: function() {\n\t\treturn this.getScaleForId(this._getValueScaleId());\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_getIndexScale: function() {\n\t\treturn this.getScaleForId(this._getIndexScaleId());\n\t},\n\n\treset: function() {\n\t\tthis._update(true);\n\t},\n\n\t/**\n\t * @private\n\t */\n\tdestroy: function() {\n\t\tif (this._data) {\n\t\t\tunlistenArrayEvents(this._data, this);\n\t\t}\n\t},\n\n\tcreateMetaDataset: function() {\n\t\tvar me = this;\n\t\tvar type = me.datasetElementType;\n\t\treturn type && new type({\n\t\t\t_chart: me.chart,\n\t\t\t_datasetIndex: me.index\n\t\t});\n\t},\n\n\tcreateMetaData: function(index) {\n\t\tvar me = this;\n\t\tvar type = me.dataElementType;\n\t\treturn type && new type({\n\t\t\t_chart: me.chart,\n\t\t\t_datasetIndex: me.index,\n\t\t\t_index: index\n\t\t});\n\t},\n\n\taddElements: function() {\n\t\tvar me = this;\n\t\tvar meta = me.getMeta();\n\t\tvar data = me.getDataset().data || [];\n\t\tvar metaData = meta.data;\n\t\tvar i, ilen;\n\n\t\tfor (i = 0, ilen = data.length; i < ilen; ++i) {\n\t\t\tmetaData[i] = metaData[i] || me.createMetaData(i);\n\t\t}\n\n\t\tmeta.dataset = meta.dataset || me.createMetaDataset();\n\t},\n\n\taddElementAndReset: function(index) {\n\t\tvar element = this.createMetaData(index);\n\t\tthis.getMeta().data.splice(index, 0, element);\n\t\tthis.updateElement(element, index, true);\n\t},\n\n\tbuildOrUpdateElements: function() {\n\t\tvar me = this;\n\t\tvar dataset = me.getDataset();\n\t\tvar data = dataset.data || (dataset.data = []);\n\n\t\t// In order to correctly handle data addition/deletion animation (an thus simulate\n\t\t// real-time charts), we need to monitor these data modifications and synchronize\n\t\t// the internal meta data accordingly.\n\t\tif (me._data !== data) {\n\t\t\tif (me._data) {\n\t\t\t\t// This case happens when the user replaced the data array instance.\n\t\t\t\tunlistenArrayEvents(me._data, me);\n\t\t\t}\n\n\t\t\tif (data && Object.isExtensible(data)) {\n\t\t\t\tlistenArrayEvents(data, me);\n\t\t\t}\n\t\t\tme._data = data;\n\t\t}\n\n\t\t// Re-sync meta data in case the user replaced the data array or if we missed\n\t\t// any updates and so make sure that we handle number of datapoints changing.\n\t\tme.resyncElements();\n\t},\n\n\t/**\n\t * Returns the merged user-supplied and default dataset-level options\n\t * @private\n\t */\n\t_configure: function() {\n\t\tvar me = this;\n\t\tme._config = helpers$1.merge({}, [\n\t\t\tme.chart.options.datasets[me._type],\n\t\t\tme.getDataset(),\n\t\t], {\n\t\t\tmerger: function(key, target, source) {\n\t\t\t\tif (key !== '_meta' && key !== 'data') {\n\t\t\t\t\thelpers$1._merger(key, target, source);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t},\n\n\t_update: function(reset) {\n\t\tvar me = this;\n\t\tme._configure();\n\t\tme._cachedDataOpts = null;\n\t\tme.update(reset);\n\t},\n\n\tupdate: helpers$1.noop,\n\n\ttransition: function(easingValue) {\n\t\tvar meta = this.getMeta();\n\t\tvar elements = meta.data || [];\n\t\tvar ilen = elements.length;\n\t\tvar i = 0;\n\n\t\tfor (; i < ilen; ++i) {\n\t\t\telements[i].transition(easingValue);\n\t\t}\n\n\t\tif (meta.dataset) {\n\t\t\tmeta.dataset.transition(easingValue);\n\t\t}\n\t},\n\n\tdraw: function() {\n\t\tvar meta = this.getMeta();\n\t\tvar elements = meta.data || [];\n\t\tvar ilen = elements.length;\n\t\tvar i = 0;\n\n\t\tif (meta.dataset) {\n\t\t\tmeta.dataset.draw();\n\t\t}\n\n\t\tfor (; i < ilen; ++i) {\n\t\t\telements[i].draw();\n\t\t}\n\t},\n\n\t/**\n\t * Returns a set of predefined style properties that should be used to represent the dataset\n\t * or the data if the index is specified\n\t * @param {number} index - data index\n\t * @return {IStyleInterface} style object\n\t */\n\tgetStyle: function(index) {\n\t\tvar me = this;\n\t\tvar meta = me.getMeta();\n\t\tvar dataset = meta.dataset;\n\t\tvar style;\n\n\t\tme._configure();\n\t\tif (dataset && index === undefined) {\n\t\t\tstyle = me._resolveDatasetElementOptions(dataset || {});\n\t\t} else {\n\t\t\tindex = index || 0;\n\t\t\tstyle = me._resolveDataElementOptions(meta.data[index] || {}, index);\n\t\t}\n\n\t\tif (style.fill === false || style.fill === null) {\n\t\t\tstyle.backgroundColor = style.borderColor;\n\t\t}\n\n\t\treturn style;\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_resolveDatasetElementOptions: function(element, hover) {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar datasetOpts = me._config;\n\t\tvar custom = element.custom || {};\n\t\tvar options = chart.options.elements[me.datasetElementType.prototype._type] || {};\n\t\tvar elementOptions = me._datasetElementOptions;\n\t\tvar values = {};\n\t\tvar i, ilen, key, readKey;\n\n\t\t// Scriptable options\n\t\tvar context = {\n\t\t\tchart: chart,\n\t\t\tdataset: me.getDataset(),\n\t\t\tdatasetIndex: me.index,\n\t\t\thover: hover\n\t\t};\n\n\t\tfor (i = 0, ilen = elementOptions.length; i < ilen; ++i) {\n\t\t\tkey = elementOptions[i];\n\t\t\treadKey = hover ? 'hover' + key.charAt(0).toUpperCase() + key.slice(1) : key;\n\t\t\tvalues[key] = resolve([\n\t\t\t\tcustom[readKey],\n\t\t\t\tdatasetOpts[readKey],\n\t\t\t\toptions[readKey]\n\t\t\t], context);\n\t\t}\n\n\t\treturn values;\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_resolveDataElementOptions: function(element, index) {\n\t\tvar me = this;\n\t\tvar custom = element && element.custom;\n\t\tvar cached = me._cachedDataOpts;\n\t\tif (cached && !custom) {\n\t\t\treturn cached;\n\t\t}\n\t\tvar chart = me.chart;\n\t\tvar datasetOpts = me._config;\n\t\tvar options = chart.options.elements[me.dataElementType.prototype._type] || {};\n\t\tvar elementOptions = me._dataElementOptions;\n\t\tvar values = {};\n\n\t\t// Scriptable options\n\t\tvar context = {\n\t\t\tchart: chart,\n\t\t\tdataIndex: index,\n\t\t\tdataset: me.getDataset(),\n\t\t\tdatasetIndex: me.index\n\t\t};\n\n\t\t// `resolve` sets cacheable to `false` if any option is indexed or scripted\n\t\tvar info = {cacheable: !custom};\n\n\t\tvar keys, i, ilen, key;\n\n\t\tcustom = custom || {};\n\n\t\tif (helpers$1.isArray(elementOptions)) {\n\t\t\tfor (i = 0, ilen = elementOptions.length; i < ilen; ++i) {\n\t\t\t\tkey = elementOptions[i];\n\t\t\t\tvalues[key] = resolve([\n\t\t\t\t\tcustom[key],\n\t\t\t\t\tdatasetOpts[key],\n\t\t\t\t\toptions[key]\n\t\t\t\t], context, index, info);\n\t\t\t}\n\t\t} else {\n\t\t\tkeys = Object.keys(elementOptions);\n\t\t\tfor (i = 0, ilen = keys.length; i < ilen; ++i) {\n\t\t\t\tkey = keys[i];\n\t\t\t\tvalues[key] = resolve([\n\t\t\t\t\tcustom[key],\n\t\t\t\t\tdatasetOpts[elementOptions[key]],\n\t\t\t\t\tdatasetOpts[key],\n\t\t\t\t\toptions[key]\n\t\t\t\t], context, index, info);\n\t\t\t}\n\t\t}\n\n\t\tif (info.cacheable) {\n\t\t\tme._cachedDataOpts = Object.freeze(values);\n\t\t}\n\n\t\treturn values;\n\t},\n\n\tremoveHoverStyle: function(element) {\n\t\thelpers$1.merge(element._model, element.$previousStyle || {});\n\t\tdelete element.$previousStyle;\n\t},\n\n\tsetHoverStyle: function(element) {\n\t\tvar dataset = this.chart.data.datasets[element._datasetIndex];\n\t\tvar index = element._index;\n\t\tvar custom = element.custom || {};\n\t\tvar model = element._model;\n\t\tvar getHoverColor = helpers$1.getHoverColor;\n\n\t\telement.$previousStyle = {\n\t\t\tbackgroundColor: model.backgroundColor,\n\t\t\tborderColor: model.borderColor,\n\t\t\tborderWidth: model.borderWidth\n\t\t};\n\n\t\tmodel.backgroundColor = resolve([custom.hoverBackgroundColor, dataset.hoverBackgroundColor, getHoverColor(model.backgroundColor)], undefined, index);\n\t\tmodel.borderColor = resolve([custom.hoverBorderColor, dataset.hoverBorderColor, getHoverColor(model.borderColor)], undefined, index);\n\t\tmodel.borderWidth = resolve([custom.hoverBorderWidth, dataset.hoverBorderWidth, model.borderWidth], undefined, index);\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_removeDatasetHoverStyle: function() {\n\t\tvar element = this.getMeta().dataset;\n\n\t\tif (element) {\n\t\t\tthis.removeHoverStyle(element);\n\t\t}\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_setDatasetHoverStyle: function() {\n\t\tvar element = this.getMeta().dataset;\n\t\tvar prev = {};\n\t\tvar i, ilen, key, keys, hoverOptions, model;\n\n\t\tif (!element) {\n\t\t\treturn;\n\t\t}\n\n\t\tmodel = element._model;\n\t\thoverOptions = this._resolveDatasetElementOptions(element, true);\n\n\t\tkeys = Object.keys(hoverOptions);\n\t\tfor (i = 0, ilen = keys.length; i < ilen; ++i) {\n\t\t\tkey = keys[i];\n\t\t\tprev[key] = model[key];\n\t\t\tmodel[key] = hoverOptions[key];\n\t\t}\n\n\t\telement.$previousStyle = prev;\n\t},\n\n\t/**\n\t * @private\n\t */\n\tresyncElements: function() {\n\t\tvar me = this;\n\t\tvar meta = me.getMeta();\n\t\tvar data = me.getDataset().data;\n\t\tvar numMeta = meta.data.length;\n\t\tvar numData = data.length;\n\n\t\tif (numData < numMeta) {\n\t\t\tmeta.data.splice(numData, numMeta - numData);\n\t\t} else if (numData > numMeta) {\n\t\t\tme.insertElements(numMeta, numData - numMeta);\n\t\t}\n\t},\n\n\t/**\n\t * @private\n\t */\n\tinsertElements: function(start, count) {\n\t\tfor (var i = 0; i < count; ++i) {\n\t\t\tthis.addElementAndReset(start + i);\n\t\t}\n\t},\n\n\t/**\n\t * @private\n\t */\n\tonDataPush: function() {\n\t\tvar count = arguments.length;\n\t\tthis.insertElements(this.getDataset().data.length - count, count);\n\t},\n\n\t/**\n\t * @private\n\t */\n\tonDataPop: function() {\n\t\tthis.getMeta().data.pop();\n\t},\n\n\t/**\n\t * @private\n\t */\n\tonDataShift: function() {\n\t\tthis.getMeta().data.shift();\n\t},\n\n\t/**\n\t * @private\n\t */\n\tonDataSplice: function(start, count) {\n\t\tthis.getMeta().data.splice(start, count);\n\t\tthis.insertElements(start, arguments.length - 2);\n\t},\n\n\t/**\n\t * @private\n\t */\n\tonDataUnshift: function() {\n\t\tthis.insertElements(0, arguments.length);\n\t}\n});\n\nDatasetController.extend = helpers$1.inherits;\n\nvar core_datasetController = DatasetController;\n\nvar TAU = Math.PI * 2;\n\ncore_defaults._set('global', {\n\telements: {\n\t\tarc: {\n\t\t\tbackgroundColor: core_defaults.global.defaultColor,\n\t\t\tborderColor: '#fff',\n\t\t\tborderWidth: 2,\n\t\t\tborderAlign: 'center'\n\t\t}\n\t}\n});\n\nfunction clipArc(ctx, arc) {\n\tvar startAngle = arc.startAngle;\n\tvar endAngle = arc.endAngle;\n\tvar pixelMargin = arc.pixelMargin;\n\tvar angleMargin = pixelMargin / arc.outerRadius;\n\tvar x = arc.x;\n\tvar y = arc.y;\n\n\t// Draw an inner border by cliping the arc and drawing a double-width border\n\t// Enlarge the clipping arc by 0.33 pixels to eliminate glitches between borders\n\tctx.beginPath();\n\tctx.arc(x, y, arc.outerRadius, startAngle - angleMargin, endAngle + angleMargin);\n\tif (arc.innerRadius > pixelMargin) {\n\t\tangleMargin = pixelMargin / arc.innerRadius;\n\t\tctx.arc(x, y, arc.innerRadius - pixelMargin, endAngle + angleMargin, startAngle - angleMargin, true);\n\t} else {\n\t\tctx.arc(x, y, pixelMargin, endAngle + Math.PI / 2, startAngle - Math.PI / 2);\n\t}\n\tctx.closePath();\n\tctx.clip();\n}\n\nfunction drawFullCircleBorders(ctx, vm, arc, inner) {\n\tvar endAngle = arc.endAngle;\n\tvar i;\n\n\tif (inner) {\n\t\tarc.endAngle = arc.startAngle + TAU;\n\t\tclipArc(ctx, arc);\n\t\tarc.endAngle = endAngle;\n\t\tif (arc.endAngle === arc.startAngle && arc.fullCircles) {\n\t\t\tarc.endAngle += TAU;\n\t\t\tarc.fullCircles--;\n\t\t}\n\t}\n\n\tctx.beginPath();\n\tctx.arc(arc.x, arc.y, arc.innerRadius, arc.startAngle + TAU, arc.startAngle, true);\n\tfor (i = 0; i < arc.fullCircles; ++i) {\n\t\tctx.stroke();\n\t}\n\n\tctx.beginPath();\n\tctx.arc(arc.x, arc.y, vm.outerRadius, arc.startAngle, arc.startAngle + TAU);\n\tfor (i = 0; i < arc.fullCircles; ++i) {\n\t\tctx.stroke();\n\t}\n}\n\nfunction drawBorder(ctx, vm, arc) {\n\tvar inner = vm.borderAlign === 'inner';\n\n\tif (inner) {\n\t\tctx.lineWidth = vm.borderWidth * 2;\n\t\tctx.lineJoin = 'round';\n\t} else {\n\t\tctx.lineWidth = vm.borderWidth;\n\t\tctx.lineJoin = 'bevel';\n\t}\n\n\tif (arc.fullCircles) {\n\t\tdrawFullCircleBorders(ctx, vm, arc, inner);\n\t}\n\n\tif (inner) {\n\t\tclipArc(ctx, arc);\n\t}\n\n\tctx.beginPath();\n\tctx.arc(arc.x, arc.y, vm.outerRadius, arc.startAngle, arc.endAngle);\n\tctx.arc(arc.x, arc.y, arc.innerRadius, arc.endAngle, arc.startAngle, true);\n\tctx.closePath();\n\tctx.stroke();\n}\n\nvar element_arc = core_element.extend({\n\t_type: 'arc',\n\n\tinLabelRange: function(mouseX) {\n\t\tvar vm = this._view;\n\n\t\tif (vm) {\n\t\t\treturn (Math.pow(mouseX - vm.x, 2) < Math.pow(vm.radius + vm.hoverRadius, 2));\n\t\t}\n\t\treturn false;\n\t},\n\n\tinRange: function(chartX, chartY) {\n\t\tvar vm = this._view;\n\n\t\tif (vm) {\n\t\t\tvar pointRelativePosition = helpers$1.getAngleFromPoint(vm, {x: chartX, y: chartY});\n\t\t\tvar angle = pointRelativePosition.angle;\n\t\t\tvar distance = pointRelativePosition.distance;\n\n\t\t\t// Sanitise angle range\n\t\t\tvar startAngle = vm.startAngle;\n\t\t\tvar endAngle = vm.endAngle;\n\t\t\twhile (endAngle < startAngle) {\n\t\t\t\tendAngle += TAU;\n\t\t\t}\n\t\t\twhile (angle > endAngle) {\n\t\t\t\tangle -= TAU;\n\t\t\t}\n\t\t\twhile (angle < startAngle) {\n\t\t\t\tangle += TAU;\n\t\t\t}\n\n\t\t\t// Check if within the range of the open/close angle\n\t\t\tvar betweenAngles = (angle >= startAngle && angle <= endAngle);\n\t\t\tvar withinRadius = (distance >= vm.innerRadius && distance <= vm.outerRadius);\n\n\t\t\treturn (betweenAngles && withinRadius);\n\t\t}\n\t\treturn false;\n\t},\n\n\tgetCenterPoint: function() {\n\t\tvar vm = this._view;\n\t\tvar halfAngle = (vm.startAngle + vm.endAngle) / 2;\n\t\tvar halfRadius = (vm.innerRadius + vm.outerRadius) / 2;\n\t\treturn {\n\t\t\tx: vm.x + Math.cos(halfAngle) * halfRadius,\n\t\t\ty: vm.y + Math.sin(halfAngle) * halfRadius\n\t\t};\n\t},\n\n\tgetArea: function() {\n\t\tvar vm = this._view;\n\t\treturn Math.PI * ((vm.endAngle - vm.startAngle) / (2 * Math.PI)) * (Math.pow(vm.outerRadius, 2) - Math.pow(vm.innerRadius, 2));\n\t},\n\n\ttooltipPosition: function() {\n\t\tvar vm = this._view;\n\t\tvar centreAngle = vm.startAngle + ((vm.endAngle - vm.startAngle) / 2);\n\t\tvar rangeFromCentre = (vm.outerRadius - vm.innerRadius) / 2 + vm.innerRadius;\n\n\t\treturn {\n\t\t\tx: vm.x + (Math.cos(centreAngle) * rangeFromCentre),\n\t\t\ty: vm.y + (Math.sin(centreAngle) * rangeFromCentre)\n\t\t};\n\t},\n\n\tdraw: function() {\n\t\tvar ctx = this._chart.ctx;\n\t\tvar vm = this._view;\n\t\tvar pixelMargin = (vm.borderAlign === 'inner') ? 0.33 : 0;\n\t\tvar arc = {\n\t\t\tx: vm.x,\n\t\t\ty: vm.y,\n\t\t\tinnerRadius: vm.innerRadius,\n\t\t\touterRadius: Math.max(vm.outerRadius - pixelMargin, 0),\n\t\t\tpixelMargin: pixelMargin,\n\t\t\tstartAngle: vm.startAngle,\n\t\t\tendAngle: vm.endAngle,\n\t\t\tfullCircles: Math.floor(vm.circumference / TAU)\n\t\t};\n\t\tvar i;\n\n\t\tctx.save();\n\n\t\tctx.fillStyle = vm.backgroundColor;\n\t\tctx.strokeStyle = vm.borderColor;\n\n\t\tif (arc.fullCircles) {\n\t\t\tarc.endAngle = arc.startAngle + TAU;\n\t\t\tctx.beginPath();\n\t\t\tctx.arc(arc.x, arc.y, arc.outerRadius, arc.startAngle, arc.endAngle);\n\t\t\tctx.arc(arc.x, arc.y, arc.innerRadius, arc.endAngle, arc.startAngle, true);\n\t\t\tctx.closePath();\n\t\t\tfor (i = 0; i < arc.fullCircles; ++i) {\n\t\t\t\tctx.fill();\n\t\t\t}\n\t\t\tarc.endAngle = arc.startAngle + vm.circumference % TAU;\n\t\t}\n\n\t\tctx.beginPath();\n\t\tctx.arc(arc.x, arc.y, arc.outerRadius, arc.startAngle, arc.endAngle);\n\t\tctx.arc(arc.x, arc.y, arc.innerRadius, arc.endAngle, arc.startAngle, true);\n\t\tctx.closePath();\n\t\tctx.fill();\n\n\t\tif (vm.borderWidth) {\n\t\t\tdrawBorder(ctx, vm, arc);\n\t\t}\n\n\t\tctx.restore();\n\t}\n});\n\nvar valueOrDefault$1 = helpers$1.valueOrDefault;\n\nvar defaultColor = core_defaults.global.defaultColor;\n\ncore_defaults._set('global', {\n\telements: {\n\t\tline: {\n\t\t\ttension: 0.4,\n\t\t\tbackgroundColor: defaultColor,\n\t\t\tborderWidth: 3,\n\t\t\tborderColor: defaultColor,\n\t\t\tborderCapStyle: 'butt',\n\t\t\tborderDash: [],\n\t\t\tborderDashOffset: 0.0,\n\t\t\tborderJoinStyle: 'miter',\n\t\t\tcapBezierPoints: true,\n\t\t\tfill: true, // do we fill in the area between the line and its base axis\n\t\t}\n\t}\n});\n\nvar element_line = core_element.extend({\n\t_type: 'line',\n\n\tdraw: function() {\n\t\tvar me = this;\n\t\tvar vm = me._view;\n\t\tvar ctx = me._chart.ctx;\n\t\tvar spanGaps = vm.spanGaps;\n\t\tvar points = me._children.slice(); // clone array\n\t\tvar globalDefaults = core_defaults.global;\n\t\tvar globalOptionLineElements = globalDefaults.elements.line;\n\t\tvar lastDrawnIndex = -1;\n\t\tvar closePath = me._loop;\n\t\tvar index, previous, currentVM;\n\n\t\tif (!points.length) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (me._loop) {\n\t\t\tfor (index = 0; index < points.length; ++index) {\n\t\t\t\tprevious = helpers$1.previousItem(points, index);\n\t\t\t\t// If the line has an open path, shift the point array\n\t\t\t\tif (!points[index]._view.skip && previous._view.skip) {\n\t\t\t\t\tpoints = points.slice(index).concat(points.slice(0, index));\n\t\t\t\t\tclosePath = spanGaps;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// If the line has a close path, add the first point again\n\t\t\tif (closePath) {\n\t\t\t\tpoints.push(points[0]);\n\t\t\t}\n\t\t}\n\n\t\tctx.save();\n\n\t\t// Stroke Line Options\n\t\tctx.lineCap = vm.borderCapStyle || globalOptionLineElements.borderCapStyle;\n\n\t\t// IE 9 and 10 do not support line dash\n\t\tif (ctx.setLineDash) {\n\t\t\tctx.setLineDash(vm.borderDash || globalOptionLineElements.borderDash);\n\t\t}\n\n\t\tctx.lineDashOffset = valueOrDefault$1(vm.borderDashOffset, globalOptionLineElements.borderDashOffset);\n\t\tctx.lineJoin = vm.borderJoinStyle || globalOptionLineElements.borderJoinStyle;\n\t\tctx.lineWidth = valueOrDefault$1(vm.borderWidth, globalOptionLineElements.borderWidth);\n\t\tctx.strokeStyle = vm.borderColor || globalDefaults.defaultColor;\n\n\t\t// Stroke Line\n\t\tctx.beginPath();\n\n\t\t// First point moves to it's starting position no matter what\n\t\tcurrentVM = points[0]._view;\n\t\tif (!currentVM.skip) {\n\t\t\tctx.moveTo(currentVM.x, currentVM.y);\n\t\t\tlastDrawnIndex = 0;\n\t\t}\n\n\t\tfor (index = 1; index < points.length; ++index) {\n\t\t\tcurrentVM = points[index]._view;\n\t\t\tprevious = lastDrawnIndex === -1 ? helpers$1.previousItem(points, index) : points[lastDrawnIndex];\n\n\t\t\tif (!currentVM.skip) {\n\t\t\t\tif ((lastDrawnIndex !== (index - 1) && !spanGaps) || lastDrawnIndex === -1) {\n\t\t\t\t\t// There was a gap and this is the first point after the gap\n\t\t\t\t\tctx.moveTo(currentVM.x, currentVM.y);\n\t\t\t\t} else {\n\t\t\t\t\t// Line to next point\n\t\t\t\t\thelpers$1.canvas.lineTo(ctx, previous._view, currentVM);\n\t\t\t\t}\n\t\t\t\tlastDrawnIndex = index;\n\t\t\t}\n\t\t}\n\n\t\tif (closePath) {\n\t\t\tctx.closePath();\n\t\t}\n\n\t\tctx.stroke();\n\t\tctx.restore();\n\t}\n});\n\nvar valueOrDefault$2 = helpers$1.valueOrDefault;\n\nvar defaultColor$1 = core_defaults.global.defaultColor;\n\ncore_defaults._set('global', {\n\telements: {\n\t\tpoint: {\n\t\t\tradius: 3,\n\t\t\tpointStyle: 'circle',\n\t\t\tbackgroundColor: defaultColor$1,\n\t\t\tborderColor: defaultColor$1,\n\t\t\tborderWidth: 1,\n\t\t\t// Hover\n\t\t\thitRadius: 1,\n\t\t\thoverRadius: 4,\n\t\t\thoverBorderWidth: 1\n\t\t}\n\t}\n});\n\nfunction xRange(mouseX) {\n\tvar vm = this._view;\n\treturn vm ? (Math.abs(mouseX - vm.x) < vm.radius + vm.hitRadius) : false;\n}\n\nfunction yRange(mouseY) {\n\tvar vm = this._view;\n\treturn vm ? (Math.abs(mouseY - vm.y) < vm.radius + vm.hitRadius) : false;\n}\n\nvar element_point = core_element.extend({\n\t_type: 'point',\n\n\tinRange: function(mouseX, mouseY) {\n\t\tvar vm = this._view;\n\t\treturn vm ? ((Math.pow(mouseX - vm.x, 2) + Math.pow(mouseY - vm.y, 2)) < Math.pow(vm.hitRadius + vm.radius, 2)) : false;\n\t},\n\n\tinLabelRange: xRange,\n\tinXRange: xRange,\n\tinYRange: yRange,\n\n\tgetCenterPoint: function() {\n\t\tvar vm = this._view;\n\t\treturn {\n\t\t\tx: vm.x,\n\t\t\ty: vm.y\n\t\t};\n\t},\n\n\tgetArea: function() {\n\t\treturn Math.PI * Math.pow(this._view.radius, 2);\n\t},\n\n\ttooltipPosition: function() {\n\t\tvar vm = this._view;\n\t\treturn {\n\t\t\tx: vm.x,\n\t\t\ty: vm.y,\n\t\t\tpadding: vm.radius + vm.borderWidth\n\t\t};\n\t},\n\n\tdraw: function(chartArea) {\n\t\tvar vm = this._view;\n\t\tvar ctx = this._chart.ctx;\n\t\tvar pointStyle = vm.pointStyle;\n\t\tvar rotation = vm.rotation;\n\t\tvar radius = vm.radius;\n\t\tvar x = vm.x;\n\t\tvar y = vm.y;\n\t\tvar globalDefaults = core_defaults.global;\n\t\tvar defaultColor = globalDefaults.defaultColor; // eslint-disable-line no-shadow\n\n\t\tif (vm.skip) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Clipping for Points.\n\t\tif (chartArea === undefined || helpers$1.canvas._isPointInArea(vm, chartArea)) {\n\t\t\tctx.strokeStyle = vm.borderColor || defaultColor;\n\t\t\tctx.lineWidth = valueOrDefault$2(vm.borderWidth, globalDefaults.elements.point.borderWidth);\n\t\t\tctx.fillStyle = vm.backgroundColor || defaultColor;\n\t\t\thelpers$1.canvas.drawPoint(ctx, pointStyle, radius, x, y, rotation);\n\t\t}\n\t}\n});\n\nvar defaultColor$2 = core_defaults.global.defaultColor;\n\ncore_defaults._set('global', {\n\telements: {\n\t\trectangle: {\n\t\t\tbackgroundColor: defaultColor$2,\n\t\t\tborderColor: defaultColor$2,\n\t\t\tborderSkipped: 'bottom',\n\t\t\tborderWidth: 0\n\t\t}\n\t}\n});\n\nfunction isVertical(vm) {\n\treturn vm && vm.width !== undefined;\n}\n\n/**\n * Helper function to get the bounds of the bar regardless of the orientation\n * @param bar {Chart.Element.Rectangle} the bar\n * @return {Bounds} bounds of the bar\n * @private\n */\nfunction getBarBounds(vm) {\n\tvar x1, x2, y1, y2, half;\n\n\tif (isVertical(vm)) {\n\t\thalf = vm.width / 2;\n\t\tx1 = vm.x - half;\n\t\tx2 = vm.x + half;\n\t\ty1 = Math.min(vm.y, vm.base);\n\t\ty2 = Math.max(vm.y, vm.base);\n\t} else {\n\t\thalf = vm.height / 2;\n\t\tx1 = Math.min(vm.x, vm.base);\n\t\tx2 = Math.max(vm.x, vm.base);\n\t\ty1 = vm.y - half;\n\t\ty2 = vm.y + half;\n\t}\n\n\treturn {\n\t\tleft: x1,\n\t\ttop: y1,\n\t\tright: x2,\n\t\tbottom: y2\n\t};\n}\n\nfunction swap(orig, v1, v2) {\n\treturn orig === v1 ? v2 : orig === v2 ? v1 : orig;\n}\n\nfunction parseBorderSkipped(vm) {\n\tvar edge = vm.borderSkipped;\n\tvar res = {};\n\n\tif (!edge) {\n\t\treturn res;\n\t}\n\n\tif (vm.horizontal) {\n\t\tif (vm.base > vm.x) {\n\t\t\tedge = swap(edge, 'left', 'right');\n\t\t}\n\t} else if (vm.base < vm.y) {\n\t\tedge = swap(edge, 'bottom', 'top');\n\t}\n\n\tres[edge] = true;\n\treturn res;\n}\n\nfunction parseBorderWidth(vm, maxW, maxH) {\n\tvar value = vm.borderWidth;\n\tvar skip = parseBorderSkipped(vm);\n\tvar t, r, b, l;\n\n\tif (helpers$1.isObject(value)) {\n\t\tt = +value.top || 0;\n\t\tr = +value.right || 0;\n\t\tb = +value.bottom || 0;\n\t\tl = +value.left || 0;\n\t} else {\n\t\tt = r = b = l = +value || 0;\n\t}\n\n\treturn {\n\t\tt: skip.top || (t < 0) ? 0 : t > maxH ? maxH : t,\n\t\tr: skip.right || (r < 0) ? 0 : r > maxW ? maxW : r,\n\t\tb: skip.bottom || (b < 0) ? 0 : b > maxH ? maxH : b,\n\t\tl: skip.left || (l < 0) ? 0 : l > maxW ? maxW : l\n\t};\n}\n\nfunction boundingRects(vm) {\n\tvar bounds = getBarBounds(vm);\n\tvar width = bounds.right - bounds.left;\n\tvar height = bounds.bottom - bounds.top;\n\tvar border = parseBorderWidth(vm, width / 2, height / 2);\n\n\treturn {\n\t\touter: {\n\t\t\tx: bounds.left,\n\t\t\ty: bounds.top,\n\t\t\tw: width,\n\t\t\th: height\n\t\t},\n\t\tinner: {\n\t\t\tx: bounds.left + border.l,\n\t\t\ty: bounds.top + border.t,\n\t\t\tw: width - border.l - border.r,\n\t\t\th: height - border.t - border.b\n\t\t}\n\t};\n}\n\nfunction inRange(vm, x, y) {\n\tvar skipX = x === null;\n\tvar skipY = y === null;\n\tvar bounds = !vm || (skipX && skipY) ? false : getBarBounds(vm);\n\n\treturn bounds\n\t\t&& (skipX || x >= bounds.left && x <= bounds.right)\n\t\t&& (skipY || y >= bounds.top && y <= bounds.bottom);\n}\n\nvar element_rectangle = core_element.extend({\n\t_type: 'rectangle',\n\n\tdraw: function() {\n\t\tvar ctx = this._chart.ctx;\n\t\tvar vm = this._view;\n\t\tvar rects = boundingRects(vm);\n\t\tvar outer = rects.outer;\n\t\tvar inner = rects.inner;\n\n\t\tctx.fillStyle = vm.backgroundColor;\n\t\tctx.fillRect(outer.x, outer.y, outer.w, outer.h);\n\n\t\tif (outer.w === inner.w && outer.h === inner.h) {\n\t\t\treturn;\n\t\t}\n\n\t\tctx.save();\n\t\tctx.beginPath();\n\t\tctx.rect(outer.x, outer.y, outer.w, outer.h);\n\t\tctx.clip();\n\t\tctx.fillStyle = vm.borderColor;\n\t\tctx.rect(inner.x, inner.y, inner.w, inner.h);\n\t\tctx.fill('evenodd');\n\t\tctx.restore();\n\t},\n\n\theight: function() {\n\t\tvar vm = this._view;\n\t\treturn vm.base - vm.y;\n\t},\n\n\tinRange: function(mouseX, mouseY) {\n\t\treturn inRange(this._view, mouseX, mouseY);\n\t},\n\n\tinLabelRange: function(mouseX, mouseY) {\n\t\tvar vm = this._view;\n\t\treturn isVertical(vm)\n\t\t\t? inRange(vm, mouseX, null)\n\t\t\t: inRange(vm, null, mouseY);\n\t},\n\n\tinXRange: function(mouseX) {\n\t\treturn inRange(this._view, mouseX, null);\n\t},\n\n\tinYRange: function(mouseY) {\n\t\treturn inRange(this._view, null, mouseY);\n\t},\n\n\tgetCenterPoint: function() {\n\t\tvar vm = this._view;\n\t\tvar x, y;\n\t\tif (isVertical(vm)) {\n\t\t\tx = vm.x;\n\t\t\ty = (vm.y + vm.base) / 2;\n\t\t} else {\n\t\t\tx = (vm.x + vm.base) / 2;\n\t\t\ty = vm.y;\n\t\t}\n\n\t\treturn {x: x, y: y};\n\t},\n\n\tgetArea: function() {\n\t\tvar vm = this._view;\n\n\t\treturn isVertical(vm)\n\t\t\t? vm.width * Math.abs(vm.y - vm.base)\n\t\t\t: vm.height * Math.abs(vm.x - vm.base);\n\t},\n\n\ttooltipPosition: function() {\n\t\tvar vm = this._view;\n\t\treturn {\n\t\t\tx: vm.x,\n\t\t\ty: vm.y\n\t\t};\n\t}\n});\n\nvar elements = {};\nvar Arc = element_arc;\nvar Line = element_line;\nvar Point = element_point;\nvar Rectangle = element_rectangle;\nelements.Arc = Arc;\nelements.Line = Line;\nelements.Point = Point;\nelements.Rectangle = Rectangle;\n\nvar deprecated = helpers$1._deprecated;\nvar valueOrDefault$3 = helpers$1.valueOrDefault;\n\ncore_defaults._set('bar', {\n\thover: {\n\t\tmode: 'label'\n\t},\n\n\tscales: {\n\t\txAxes: [{\n\t\t\ttype: 'category',\n\t\t\toffset: true,\n\t\t\tgridLines: {\n\t\t\t\toffsetGridLines: true\n\t\t\t}\n\t\t}],\n\n\t\tyAxes: [{\n\t\t\ttype: 'linear'\n\t\t}]\n\t}\n});\n\ncore_defaults._set('global', {\n\tdatasets: {\n\t\tbar: {\n\t\t\tcategoryPercentage: 0.8,\n\t\t\tbarPercentage: 0.9\n\t\t}\n\t}\n});\n\n/**\n * Computes the \"optimal\" sample size to maintain bars equally sized while preventing overlap.\n * @private\n */\nfunction computeMinSampleSize(scale, pixels) {\n\tvar min = scale._length;\n\tvar prev, curr, i, ilen;\n\n\tfor (i = 1, ilen = pixels.length; i < ilen; ++i) {\n\t\tmin = Math.min(min, Math.abs(pixels[i] - pixels[i - 1]));\n\t}\n\n\tfor (i = 0, ilen = scale.getTicks().length; i < ilen; ++i) {\n\t\tcurr = scale.getPixelForTick(i);\n\t\tmin = i > 0 ? Math.min(min, Math.abs(curr - prev)) : min;\n\t\tprev = curr;\n\t}\n\n\treturn min;\n}\n\n/**\n * Computes an \"ideal\" category based on the absolute bar thickness or, if undefined or null,\n * uses the smallest interval (see computeMinSampleSize) that prevents bar overlapping. This\n * mode currently always generates bars equally sized (until we introduce scriptable options?).\n * @private\n */\nfunction computeFitCategoryTraits(index, ruler, options) {\n\tvar thickness = options.barThickness;\n\tvar count = ruler.stackCount;\n\tvar curr = ruler.pixels[index];\n\tvar min = helpers$1.isNullOrUndef(thickness)\n\t\t? computeMinSampleSize(ruler.scale, ruler.pixels)\n\t\t: -1;\n\tvar size, ratio;\n\n\tif (helpers$1.isNullOrUndef(thickness)) {\n\t\tsize = min * options.categoryPercentage;\n\t\tratio = options.barPercentage;\n\t} else {\n\t\t// When bar thickness is enforced, category and bar percentages are ignored.\n\t\t// Note(SB): we could add support for relative bar thickness (e.g. barThickness: '50%')\n\t\t// and deprecate barPercentage since this value is ignored when thickness is absolute.\n\t\tsize = thickness * count;\n\t\tratio = 1;\n\t}\n\n\treturn {\n\t\tchunk: size / count,\n\t\tratio: ratio,\n\t\tstart: curr - (size / 2)\n\t};\n}\n\n/**\n * Computes an \"optimal\" category that globally arranges bars side by side (no gap when\n * percentage options are 1), based on the previous and following categories. This mode\n * generates bars with different widths when data are not evenly spaced.\n * @private\n */\nfunction computeFlexCategoryTraits(index, ruler, options) {\n\tvar pixels = ruler.pixels;\n\tvar curr = pixels[index];\n\tvar prev = index > 0 ? pixels[index - 1] : null;\n\tvar next = index < pixels.length - 1 ? pixels[index + 1] : null;\n\tvar percent = options.categoryPercentage;\n\tvar start, size;\n\n\tif (prev === null) {\n\t\t// first data: its size is double based on the next point or,\n\t\t// if it's also the last data, we use the scale size.\n\t\tprev = curr - (next === null ? ruler.end - ruler.start : next - curr);\n\t}\n\n\tif (next === null) {\n\t\t// last data: its size is also double based on the previous point.\n\t\tnext = curr + curr - prev;\n\t}\n\n\tstart = curr - (curr - Math.min(prev, next)) / 2 * percent;\n\tsize = Math.abs(next - prev) / 2 * percent;\n\n\treturn {\n\t\tchunk: size / ruler.stackCount,\n\t\tratio: options.barPercentage,\n\t\tstart: start\n\t};\n}\n\nvar controller_bar = core_datasetController.extend({\n\n\tdataElementType: elements.Rectangle,\n\n\t/**\n\t * @private\n\t */\n\t_dataElementOptions: [\n\t\t'backgroundColor',\n\t\t'borderColor',\n\t\t'borderSkipped',\n\t\t'borderWidth',\n\t\t'barPercentage',\n\t\t'barThickness',\n\t\t'categoryPercentage',\n\t\t'maxBarThickness',\n\t\t'minBarLength'\n\t],\n\n\tinitialize: function() {\n\t\tvar me = this;\n\t\tvar meta, scaleOpts;\n\n\t\tcore_datasetController.prototype.initialize.apply(me, arguments);\n\n\t\tmeta = me.getMeta();\n\t\tmeta.stack = me.getDataset().stack;\n\t\tmeta.bar = true;\n\n\t\tscaleOpts = me._getIndexScale().options;\n\t\tdeprecated('bar chart', scaleOpts.barPercentage, 'scales.[x/y]Axes.barPercentage', 'dataset.barPercentage');\n\t\tdeprecated('bar chart', scaleOpts.barThickness, 'scales.[x/y]Axes.barThickness', 'dataset.barThickness');\n\t\tdeprecated('bar chart', scaleOpts.categoryPercentage, 'scales.[x/y]Axes.categoryPercentage', 'dataset.categoryPercentage');\n\t\tdeprecated('bar chart', me._getValueScale().options.minBarLength, 'scales.[x/y]Axes.minBarLength', 'dataset.minBarLength');\n\t\tdeprecated('bar chart', scaleOpts.maxBarThickness, 'scales.[x/y]Axes.maxBarThickness', 'dataset.maxBarThickness');\n\t},\n\n\tupdate: function(reset) {\n\t\tvar me = this;\n\t\tvar rects = me.getMeta().data;\n\t\tvar i, ilen;\n\n\t\tme._ruler = me.getRuler();\n\n\t\tfor (i = 0, ilen = rects.length; i < ilen; ++i) {\n\t\t\tme.updateElement(rects[i], i, reset);\n\t\t}\n\t},\n\n\tupdateElement: function(rectangle, index, reset) {\n\t\tvar me = this;\n\t\tvar meta = me.getMeta();\n\t\tvar dataset = me.getDataset();\n\t\tvar options = me._resolveDataElementOptions(rectangle, index);\n\n\t\trectangle._xScale = me.getScaleForId(meta.xAxisID);\n\t\trectangle._yScale = me.getScaleForId(meta.yAxisID);\n\t\trectangle._datasetIndex = me.index;\n\t\trectangle._index = index;\n\t\trectangle._model = {\n\t\t\tbackgroundColor: options.backgroundColor,\n\t\t\tborderColor: options.borderColor,\n\t\t\tborderSkipped: options.borderSkipped,\n\t\t\tborderWidth: options.borderWidth,\n\t\t\tdatasetLabel: dataset.label,\n\t\t\tlabel: me.chart.data.labels[index]\n\t\t};\n\n\t\tif (helpers$1.isArray(dataset.data[index])) {\n\t\t\trectangle._model.borderSkipped = null;\n\t\t}\n\n\t\tme._updateElementGeometry(rectangle, index, reset, options);\n\n\t\trectangle.pivot();\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_updateElementGeometry: function(rectangle, index, reset, options) {\n\t\tvar me = this;\n\t\tvar model = rectangle._model;\n\t\tvar vscale = me._getValueScale();\n\t\tvar base = vscale.getBasePixel();\n\t\tvar horizontal = vscale.isHorizontal();\n\t\tvar ruler = me._ruler || me.getRuler();\n\t\tvar vpixels = me.calculateBarValuePixels(me.index, index, options);\n\t\tvar ipixels = me.calculateBarIndexPixels(me.index, index, ruler, options);\n\n\t\tmodel.horizontal = horizontal;\n\t\tmodel.base = reset ? base : vpixels.base;\n\t\tmodel.x = horizontal ? reset ? base : vpixels.head : ipixels.center;\n\t\tmodel.y = horizontal ? ipixels.center : reset ? base : vpixels.head;\n\t\tmodel.height = horizontal ? ipixels.size : undefined;\n\t\tmodel.width = horizontal ? undefined : ipixels.size;\n\t},\n\n\t/**\n\t * Returns the stacks based on groups and bar visibility.\n\t * @param {number} [last] - The dataset index\n\t * @returns {string[]} The list of stack IDs\n\t * @private\n\t */\n\t_getStacks: function(last) {\n\t\tvar me = this;\n\t\tvar scale = me._getIndexScale();\n\t\tvar metasets = scale._getMatchingVisibleMetas(me._type);\n\t\tvar stacked = scale.options.stacked;\n\t\tvar ilen = metasets.length;\n\t\tvar stacks = [];\n\t\tvar i, meta;\n\n\t\tfor (i = 0; i < ilen; ++i) {\n\t\t\tmeta = metasets[i];\n\t\t\t// stacked   | meta.stack\n\t\t\t//           | found | not found | undefined\n\t\t\t// false     |   x   |     x     |     x\n\t\t\t// true      |       |     x     |\n\t\t\t// undefined |       |     x     |     x\n\t\t\tif (stacked === false || stacks.indexOf(meta.stack) === -1 ||\n\t\t\t\t(stacked === undefined && meta.stack === undefined)) {\n\t\t\t\tstacks.push(meta.stack);\n\t\t\t}\n\t\t\tif (meta.index === last) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn stacks;\n\t},\n\n\t/**\n\t * Returns the effective number of stacks based on groups and bar visibility.\n\t * @private\n\t */\n\tgetStackCount: function() {\n\t\treturn this._getStacks().length;\n\t},\n\n\t/**\n\t * Returns the stack index for the given dataset based on groups and bar visibility.\n\t * @param {number} [datasetIndex] - The dataset index\n\t * @param {string} [name] - The stack name to find\n\t * @returns {number} The stack index\n\t * @private\n\t */\n\tgetStackIndex: function(datasetIndex, name) {\n\t\tvar stacks = this._getStacks(datasetIndex);\n\t\tvar index = (name !== undefined)\n\t\t\t? stacks.indexOf(name)\n\t\t\t: -1; // indexOf returns -1 if element is not present\n\n\t\treturn (index === -1)\n\t\t\t? stacks.length - 1\n\t\t\t: index;\n\t},\n\n\t/**\n\t * @private\n\t */\n\tgetRuler: function() {\n\t\tvar me = this;\n\t\tvar scale = me._getIndexScale();\n\t\tvar pixels = [];\n\t\tvar i, ilen;\n\n\t\tfor (i = 0, ilen = me.getMeta().data.length; i < ilen; ++i) {\n\t\t\tpixels.push(scale.getPixelForValue(null, i, me.index));\n\t\t}\n\n\t\treturn {\n\t\t\tpixels: pixels,\n\t\t\tstart: scale._startPixel,\n\t\t\tend: scale._endPixel,\n\t\t\tstackCount: me.getStackCount(),\n\t\t\tscale: scale\n\t\t};\n\t},\n\n\t/**\n\t * Note: pixel values are not clamped to the scale area.\n\t * @private\n\t */\n\tcalculateBarValuePixels: function(datasetIndex, index, options) {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar scale = me._getValueScale();\n\t\tvar isHorizontal = scale.isHorizontal();\n\t\tvar datasets = chart.data.datasets;\n\t\tvar metasets = scale._getMatchingVisibleMetas(me._type);\n\t\tvar value = scale._parseValue(datasets[datasetIndex].data[index]);\n\t\tvar minBarLength = options.minBarLength;\n\t\tvar stacked = scale.options.stacked;\n\t\tvar stack = me.getMeta().stack;\n\t\tvar start = value.start === undefined ? 0 : value.max >= 0 && value.min >= 0 ? value.min : value.max;\n\t\tvar length = value.start === undefined ? value.end : value.max >= 0 && value.min >= 0 ? value.max - value.min : value.min - value.max;\n\t\tvar ilen = metasets.length;\n\t\tvar i, imeta, ivalue, base, head, size, stackLength;\n\n\t\tif (stacked || (stacked === undefined && stack !== undefined)) {\n\t\t\tfor (i = 0; i < ilen; ++i) {\n\t\t\t\timeta = metasets[i];\n\n\t\t\t\tif (imeta.index === datasetIndex) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif (imeta.stack === stack) {\n\t\t\t\t\tstackLength = scale._parseValue(datasets[imeta.index].data[index]);\n\t\t\t\t\tivalue = stackLength.start === undefined ? stackLength.end : stackLength.min >= 0 && stackLength.max >= 0 ? stackLength.max : stackLength.min;\n\n\t\t\t\t\tif ((value.min < 0 && ivalue < 0) || (value.max >= 0 && ivalue > 0)) {\n\t\t\t\t\t\tstart += ivalue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tbase = scale.getPixelForValue(start);\n\t\thead = scale.getPixelForValue(start + length);\n\t\tsize = head - base;\n\n\t\tif (minBarLength !== undefined && Math.abs(size) < minBarLength) {\n\t\t\tsize = minBarLength;\n\t\t\tif (length >= 0 && !isHorizontal || length < 0 && isHorizontal) {\n\t\t\t\thead = base - minBarLength;\n\t\t\t} else {\n\t\t\t\thead = base + minBarLength;\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tsize: size,\n\t\t\tbase: base,\n\t\t\thead: head,\n\t\t\tcenter: head + size / 2\n\t\t};\n\t},\n\n\t/**\n\t * @private\n\t */\n\tcalculateBarIndexPixels: function(datasetIndex, index, ruler, options) {\n\t\tvar me = this;\n\t\tvar range = options.barThickness === 'flex'\n\t\t\t? computeFlexCategoryTraits(index, ruler, options)\n\t\t\t: computeFitCategoryTraits(index, ruler, options);\n\n\t\tvar stackIndex = me.getStackIndex(datasetIndex, me.getMeta().stack);\n\t\tvar center = range.start + (range.chunk * stackIndex) + (range.chunk / 2);\n\t\tvar size = Math.min(\n\t\t\tvalueOrDefault$3(options.maxBarThickness, Infinity),\n\t\t\trange.chunk * range.ratio);\n\n\t\treturn {\n\t\t\tbase: center - size / 2,\n\t\t\thead: center + size / 2,\n\t\t\tcenter: center,\n\t\t\tsize: size\n\t\t};\n\t},\n\n\tdraw: function() {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar scale = me._getValueScale();\n\t\tvar rects = me.getMeta().data;\n\t\tvar dataset = me.getDataset();\n\t\tvar ilen = rects.length;\n\t\tvar i = 0;\n\n\t\thelpers$1.canvas.clipArea(chart.ctx, chart.chartArea);\n\n\t\tfor (; i < ilen; ++i) {\n\t\t\tvar val = scale._parseValue(dataset.data[i]);\n\t\t\tif (!isNaN(val.min) && !isNaN(val.max)) {\n\t\t\t\trects[i].draw();\n\t\t\t}\n\t\t}\n\n\t\thelpers$1.canvas.unclipArea(chart.ctx);\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_resolveDataElementOptions: function() {\n\t\tvar me = this;\n\t\tvar values = helpers$1.extend({}, core_datasetController.prototype._resolveDataElementOptions.apply(me, arguments));\n\t\tvar indexOpts = me._getIndexScale().options;\n\t\tvar valueOpts = me._getValueScale().options;\n\n\t\tvalues.barPercentage = valueOrDefault$3(indexOpts.barPercentage, values.barPercentage);\n\t\tvalues.barThickness = valueOrDefault$3(indexOpts.barThickness, values.barThickness);\n\t\tvalues.categoryPercentage = valueOrDefault$3(indexOpts.categoryPercentage, values.categoryPercentage);\n\t\tvalues.maxBarThickness = valueOrDefault$3(indexOpts.maxBarThickness, values.maxBarThickness);\n\t\tvalues.minBarLength = valueOrDefault$3(valueOpts.minBarLength, values.minBarLength);\n\n\t\treturn values;\n\t}\n\n});\n\nvar valueOrDefault$4 = helpers$1.valueOrDefault;\nvar resolve$1 = helpers$1.options.resolve;\n\ncore_defaults._set('bubble', {\n\thover: {\n\t\tmode: 'single'\n\t},\n\n\tscales: {\n\t\txAxes: [{\n\t\t\ttype: 'linear', // bubble should probably use a linear scale by default\n\t\t\tposition: 'bottom',\n\t\t\tid: 'x-axis-0' // need an ID so datasets can reference the scale\n\t\t}],\n\t\tyAxes: [{\n\t\t\ttype: 'linear',\n\t\t\tposition: 'left',\n\t\t\tid: 'y-axis-0'\n\t\t}]\n\t},\n\n\ttooltips: {\n\t\tcallbacks: {\n\t\t\ttitle: function() {\n\t\t\t\t// Title doesn't make sense for scatter since we format the data as a point\n\t\t\t\treturn '';\n\t\t\t},\n\t\t\tlabel: function(item, data) {\n\t\t\t\tvar datasetLabel = data.datasets[item.datasetIndex].label || '';\n\t\t\t\tvar dataPoint = data.datasets[item.datasetIndex].data[item.index];\n\t\t\t\treturn datasetLabel + ': (' + item.xLabel + ', ' + item.yLabel + ', ' + dataPoint.r + ')';\n\t\t\t}\n\t\t}\n\t}\n});\n\nvar controller_bubble = core_datasetController.extend({\n\t/**\n\t * @protected\n\t */\n\tdataElementType: elements.Point,\n\n\t/**\n\t * @private\n\t */\n\t_dataElementOptions: [\n\t\t'backgroundColor',\n\t\t'borderColor',\n\t\t'borderWidth',\n\t\t'hoverBackgroundColor',\n\t\t'hoverBorderColor',\n\t\t'hoverBorderWidth',\n\t\t'hoverRadius',\n\t\t'hitRadius',\n\t\t'pointStyle',\n\t\t'rotation'\n\t],\n\n\t/**\n\t * @protected\n\t */\n\tupdate: function(reset) {\n\t\tvar me = this;\n\t\tvar meta = me.getMeta();\n\t\tvar points = meta.data;\n\n\t\t// Update Points\n\t\thelpers$1.each(points, function(point, index) {\n\t\t\tme.updateElement(point, index, reset);\n\t\t});\n\t},\n\n\t/**\n\t * @protected\n\t */\n\tupdateElement: function(point, index, reset) {\n\t\tvar me = this;\n\t\tvar meta = me.getMeta();\n\t\tvar custom = point.custom || {};\n\t\tvar xScale = me.getScaleForId(meta.xAxisID);\n\t\tvar yScale = me.getScaleForId(meta.yAxisID);\n\t\tvar options = me._resolveDataElementOptions(point, index);\n\t\tvar data = me.getDataset().data[index];\n\t\tvar dsIndex = me.index;\n\n\t\tvar x = reset ? xScale.getPixelForDecimal(0.5) : xScale.getPixelForValue(typeof data === 'object' ? data : NaN, index, dsIndex);\n\t\tvar y = reset ? yScale.getBasePixel() : yScale.getPixelForValue(data, index, dsIndex);\n\n\t\tpoint._xScale = xScale;\n\t\tpoint._yScale = yScale;\n\t\tpoint._options = options;\n\t\tpoint._datasetIndex = dsIndex;\n\t\tpoint._index = index;\n\t\tpoint._model = {\n\t\t\tbackgroundColor: options.backgroundColor,\n\t\t\tborderColor: options.borderColor,\n\t\t\tborderWidth: options.borderWidth,\n\t\t\thitRadius: options.hitRadius,\n\t\t\tpointStyle: options.pointStyle,\n\t\t\trotation: options.rotation,\n\t\t\tradius: reset ? 0 : options.radius,\n\t\t\tskip: custom.skip || isNaN(x) || isNaN(y),\n\t\t\tx: x,\n\t\t\ty: y,\n\t\t};\n\n\t\tpoint.pivot();\n\t},\n\n\t/**\n\t * @protected\n\t */\n\tsetHoverStyle: function(point) {\n\t\tvar model = point._model;\n\t\tvar options = point._options;\n\t\tvar getHoverColor = helpers$1.getHoverColor;\n\n\t\tpoint.$previousStyle = {\n\t\t\tbackgroundColor: model.backgroundColor,\n\t\t\tborderColor: model.borderColor,\n\t\t\tborderWidth: model.borderWidth,\n\t\t\tradius: model.radius\n\t\t};\n\n\t\tmodel.backgroundColor = valueOrDefault$4(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\n\t\tmodel.borderColor = valueOrDefault$4(options.hoverBorderColor, getHoverColor(options.borderColor));\n\t\tmodel.borderWidth = valueOrDefault$4(options.hoverBorderWidth, options.borderWidth);\n\t\tmodel.radius = options.radius + options.hoverRadius;\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_resolveDataElementOptions: function(point, index) {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar dataset = me.getDataset();\n\t\tvar custom = point.custom || {};\n\t\tvar data = dataset.data[index] || {};\n\t\tvar values = core_datasetController.prototype._resolveDataElementOptions.apply(me, arguments);\n\n\t\t// Scriptable options\n\t\tvar context = {\n\t\t\tchart: chart,\n\t\t\tdataIndex: index,\n\t\t\tdataset: dataset,\n\t\t\tdatasetIndex: me.index\n\t\t};\n\n\t\t// In case values were cached (and thus frozen), we need to clone the values\n\t\tif (me._cachedDataOpts === values) {\n\t\t\tvalues = helpers$1.extend({}, values);\n\t\t}\n\n\t\t// Custom radius resolution\n\t\tvalues.radius = resolve$1([\n\t\t\tcustom.radius,\n\t\t\tdata.r,\n\t\t\tme._config.radius,\n\t\t\tchart.options.elements.point.radius\n\t\t], context, index);\n\n\t\treturn values;\n\t}\n});\n\nvar valueOrDefault$5 = helpers$1.valueOrDefault;\n\nvar PI$1 = Math.PI;\nvar DOUBLE_PI$1 = PI$1 * 2;\nvar HALF_PI$1 = PI$1 / 2;\n\ncore_defaults._set('doughnut', {\n\tanimation: {\n\t\t// Boolean - Whether we animate the rotation of the Doughnut\n\t\tanimateRotate: true,\n\t\t// Boolean - Whether we animate scaling the Doughnut from the centre\n\t\tanimateScale: false\n\t},\n\thover: {\n\t\tmode: 'single'\n\t},\n\tlegendCallback: function(chart) {\n\t\tvar list = document.createElement('ul');\n\t\tvar data = chart.data;\n\t\tvar datasets = data.datasets;\n\t\tvar labels = data.labels;\n\t\tvar i, ilen, listItem, listItemSpan;\n\n\t\tlist.setAttribute('class', chart.id + '-legend');\n\t\tif (datasets.length) {\n\t\t\tfor (i = 0, ilen = datasets[0].data.length; i < ilen; ++i) {\n\t\t\t\tlistItem = list.appendChild(document.createElement('li'));\n\t\t\t\tlistItemSpan = listItem.appendChild(document.createElement('span'));\n\t\t\t\tlistItemSpan.style.backgroundColor = datasets[0].backgroundColor[i];\n\t\t\t\tif (labels[i]) {\n\t\t\t\t\tlistItem.appendChild(document.createTextNode(labels[i]));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn list.outerHTML;\n\t},\n\tlegend: {\n\t\tlabels: {\n\t\t\tgenerateLabels: function(chart) {\n\t\t\t\tvar data = chart.data;\n\t\t\t\tif (data.labels.length && data.datasets.length) {\n\t\t\t\t\treturn data.labels.map(function(label, i) {\n\t\t\t\t\t\tvar meta = chart.getDatasetMeta(0);\n\t\t\t\t\t\tvar style = meta.controller.getStyle(i);\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttext: label,\n\t\t\t\t\t\t\tfillStyle: style.backgroundColor,\n\t\t\t\t\t\t\tstrokeStyle: style.borderColor,\n\t\t\t\t\t\t\tlineWidth: style.borderWidth,\n\t\t\t\t\t\t\thidden: isNaN(data.datasets[0].data[i]) || meta.data[i].hidden,\n\n\t\t\t\t\t\t\t// Extra data used for toggling the correct item\n\t\t\t\t\t\t\tindex: i\n\t\t\t\t\t\t};\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn [];\n\t\t\t}\n\t\t},\n\n\t\tonClick: function(e, legendItem) {\n\t\t\tvar index = legendItem.index;\n\t\t\tvar chart = this.chart;\n\t\t\tvar i, ilen, meta;\n\n\t\t\tfor (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\n\t\t\t\tmeta = chart.getDatasetMeta(i);\n\t\t\t\t// toggle visibility of index if exists\n\t\t\t\tif (meta.data[index]) {\n\t\t\t\t\tmeta.data[index].hidden = !meta.data[index].hidden;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tchart.update();\n\t\t}\n\t},\n\n\t// The percentage of the chart that we cut out of the middle.\n\tcutoutPercentage: 50,\n\n\t// The rotation of the chart, where the first data arc begins.\n\trotation: -HALF_PI$1,\n\n\t// The total circumference of the chart.\n\tcircumference: DOUBLE_PI$1,\n\n\t// Need to override these to give a nice default\n\ttooltips: {\n\t\tcallbacks: {\n\t\t\ttitle: function() {\n\t\t\t\treturn '';\n\t\t\t},\n\t\t\tlabel: function(tooltipItem, data) {\n\t\t\t\tvar dataLabel = data.labels[tooltipItem.index];\n\t\t\t\tvar value = ': ' + data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index];\n\n\t\t\t\tif (helpers$1.isArray(dataLabel)) {\n\t\t\t\t\t// show value on first line of multiline label\n\t\t\t\t\t// need to clone because we are changing the value\n\t\t\t\t\tdataLabel = dataLabel.slice();\n\t\t\t\t\tdataLabel[0] += value;\n\t\t\t\t} else {\n\t\t\t\t\tdataLabel += value;\n\t\t\t\t}\n\n\t\t\t\treturn dataLabel;\n\t\t\t}\n\t\t}\n\t}\n});\n\nvar controller_doughnut = core_datasetController.extend({\n\n\tdataElementType: elements.Arc,\n\n\tlinkScales: helpers$1.noop,\n\n\t/**\n\t * @private\n\t */\n\t_dataElementOptions: [\n\t\t'backgroundColor',\n\t\t'borderColor',\n\t\t'borderWidth',\n\t\t'borderAlign',\n\t\t'hoverBackgroundColor',\n\t\t'hoverBorderColor',\n\t\t'hoverBorderWidth',\n\t],\n\n\t// Get index of the dataset in relation to the visible datasets. This allows determining the inner and outer radius correctly\n\tgetRingIndex: function(datasetIndex) {\n\t\tvar ringIndex = 0;\n\n\t\tfor (var j = 0; j < datasetIndex; ++j) {\n\t\t\tif (this.chart.isDatasetVisible(j)) {\n\t\t\t\t++ringIndex;\n\t\t\t}\n\t\t}\n\n\t\treturn ringIndex;\n\t},\n\n\tupdate: function(reset) {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar chartArea = chart.chartArea;\n\t\tvar opts = chart.options;\n\t\tvar ratioX = 1;\n\t\tvar ratioY = 1;\n\t\tvar offsetX = 0;\n\t\tvar offsetY = 0;\n\t\tvar meta = me.getMeta();\n\t\tvar arcs = meta.data;\n\t\tvar cutout = opts.cutoutPercentage / 100 || 0;\n\t\tvar circumference = opts.circumference;\n\t\tvar chartWeight = me._getRingWeight(me.index);\n\t\tvar maxWidth, maxHeight, i, ilen;\n\n\t\t// If the chart's circumference isn't a full circle, calculate size as a ratio of the width/height of the arc\n\t\tif (circumference < DOUBLE_PI$1) {\n\t\t\tvar startAngle = opts.rotation % DOUBLE_PI$1;\n\t\t\tstartAngle += startAngle >= PI$1 ? -DOUBLE_PI$1 : startAngle < -PI$1 ? DOUBLE_PI$1 : 0;\n\t\t\tvar endAngle = startAngle + circumference;\n\t\t\tvar startX = Math.cos(startAngle);\n\t\t\tvar startY = Math.sin(startAngle);\n\t\t\tvar endX = Math.cos(endAngle);\n\t\t\tvar endY = Math.sin(endAngle);\n\t\t\tvar contains0 = (startAngle <= 0 && endAngle >= 0) || endAngle >= DOUBLE_PI$1;\n\t\t\tvar contains90 = (startAngle <= HALF_PI$1 && endAngle >= HALF_PI$1) || endAngle >= DOUBLE_PI$1 + HALF_PI$1;\n\t\t\tvar contains180 = startAngle === -PI$1 || endAngle >= PI$1;\n\t\t\tvar contains270 = (startAngle <= -HALF_PI$1 && endAngle >= -HALF_PI$1) || endAngle >= PI$1 + HALF_PI$1;\n\t\t\tvar minX = contains180 ? -1 : Math.min(startX, startX * cutout, endX, endX * cutout);\n\t\t\tvar minY = contains270 ? -1 : Math.min(startY, startY * cutout, endY, endY * cutout);\n\t\t\tvar maxX = contains0 ? 1 : Math.max(startX, startX * cutout, endX, endX * cutout);\n\t\t\tvar maxY = contains90 ? 1 : Math.max(startY, startY * cutout, endY, endY * cutout);\n\t\t\tratioX = (maxX - minX) / 2;\n\t\t\tratioY = (maxY - minY) / 2;\n\t\t\toffsetX = -(maxX + minX) / 2;\n\t\t\toffsetY = -(maxY + minY) / 2;\n\t\t}\n\n\t\tfor (i = 0, ilen = arcs.length; i < ilen; ++i) {\n\t\t\tarcs[i]._options = me._resolveDataElementOptions(arcs[i], i);\n\t\t}\n\n\t\tchart.borderWidth = me.getMaxBorderWidth();\n\t\tmaxWidth = (chartArea.right - chartArea.left - chart.borderWidth) / ratioX;\n\t\tmaxHeight = (chartArea.bottom - chartArea.top - chart.borderWidth) / ratioY;\n\t\tchart.outerRadius = Math.max(Math.min(maxWidth, maxHeight) / 2, 0);\n\t\tchart.innerRadius = Math.max(chart.outerRadius * cutout, 0);\n\t\tchart.radiusLength = (chart.outerRadius - chart.innerRadius) / (me._getVisibleDatasetWeightTotal() || 1);\n\t\tchart.offsetX = offsetX * chart.outerRadius;\n\t\tchart.offsetY = offsetY * chart.outerRadius;\n\n\t\tmeta.total = me.calculateTotal();\n\n\t\tme.outerRadius = chart.outerRadius - chart.radiusLength * me._getRingWeightOffset(me.index);\n\t\tme.innerRadius = Math.max(me.outerRadius - chart.radiusLength * chartWeight, 0);\n\n\t\tfor (i = 0, ilen = arcs.length; i < ilen; ++i) {\n\t\t\tme.updateElement(arcs[i], i, reset);\n\t\t}\n\t},\n\n\tupdateElement: function(arc, index, reset) {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar chartArea = chart.chartArea;\n\t\tvar opts = chart.options;\n\t\tvar animationOpts = opts.animation;\n\t\tvar centerX = (chartArea.left + chartArea.right) / 2;\n\t\tvar centerY = (chartArea.top + chartArea.bottom) / 2;\n\t\tvar startAngle = opts.rotation; // non reset case handled later\n\t\tvar endAngle = opts.rotation; // non reset case handled later\n\t\tvar dataset = me.getDataset();\n\t\tvar circumference = reset && animationOpts.animateRotate ? 0 : arc.hidden ? 0 : me.calculateCircumference(dataset.data[index]) * (opts.circumference / DOUBLE_PI$1);\n\t\tvar innerRadius = reset && animationOpts.animateScale ? 0 : me.innerRadius;\n\t\tvar outerRadius = reset && animationOpts.animateScale ? 0 : me.outerRadius;\n\t\tvar options = arc._options || {};\n\n\t\thelpers$1.extend(arc, {\n\t\t\t// Utility\n\t\t\t_datasetIndex: me.index,\n\t\t\t_index: index,\n\n\t\t\t// Desired view properties\n\t\t\t_model: {\n\t\t\t\tbackgroundColor: options.backgroundColor,\n\t\t\t\tborderColor: options.borderColor,\n\t\t\t\tborderWidth: options.borderWidth,\n\t\t\t\tborderAlign: options.borderAlign,\n\t\t\t\tx: centerX + chart.offsetX,\n\t\t\t\ty: centerY + chart.offsetY,\n\t\t\t\tstartAngle: startAngle,\n\t\t\t\tendAngle: endAngle,\n\t\t\t\tcircumference: circumference,\n\t\t\t\touterRadius: outerRadius,\n\t\t\t\tinnerRadius: innerRadius,\n\t\t\t\tlabel: helpers$1.valueAtIndexOrDefault(dataset.label, index, chart.data.labels[index])\n\t\t\t}\n\t\t});\n\n\t\tvar model = arc._model;\n\n\t\t// Set correct angles if not resetting\n\t\tif (!reset || !animationOpts.animateRotate) {\n\t\t\tif (index === 0) {\n\t\t\t\tmodel.startAngle = opts.rotation;\n\t\t\t} else {\n\t\t\t\tmodel.startAngle = me.getMeta().data[index - 1]._model.endAngle;\n\t\t\t}\n\n\t\t\tmodel.endAngle = model.startAngle + model.circumference;\n\t\t}\n\n\t\tarc.pivot();\n\t},\n\n\tcalculateTotal: function() {\n\t\tvar dataset = this.getDataset();\n\t\tvar meta = this.getMeta();\n\t\tvar total = 0;\n\t\tvar value;\n\n\t\thelpers$1.each(meta.data, function(element, index) {\n\t\t\tvalue = dataset.data[index];\n\t\t\tif (!isNaN(value) && !element.hidden) {\n\t\t\t\ttotal += Math.abs(value);\n\t\t\t}\n\t\t});\n\n\t\t/* if (total === 0) {\n\t\t\ttotal = NaN;\n\t\t}*/\n\n\t\treturn total;\n\t},\n\n\tcalculateCircumference: function(value) {\n\t\tvar total = this.getMeta().total;\n\t\tif (total > 0 && !isNaN(value)) {\n\t\t\treturn DOUBLE_PI$1 * (Math.abs(value) / total);\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// gets the max border or hover width to properly scale pie charts\n\tgetMaxBorderWidth: function(arcs) {\n\t\tvar me = this;\n\t\tvar max = 0;\n\t\tvar chart = me.chart;\n\t\tvar i, ilen, meta, arc, controller, options, borderWidth, hoverWidth;\n\n\t\tif (!arcs) {\n\t\t\t// Find the outmost visible dataset\n\t\t\tfor (i = 0, ilen = chart.data.datasets.length; i < ilen; ++i) {\n\t\t\t\tif (chart.isDatasetVisible(i)) {\n\t\t\t\t\tmeta = chart.getDatasetMeta(i);\n\t\t\t\t\tarcs = meta.data;\n\t\t\t\t\tif (i !== me.index) {\n\t\t\t\t\t\tcontroller = meta.controller;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (!arcs) {\n\t\t\treturn 0;\n\t\t}\n\n\t\tfor (i = 0, ilen = arcs.length; i < ilen; ++i) {\n\t\t\tarc = arcs[i];\n\t\t\tif (controller) {\n\t\t\t\tcontroller._configure();\n\t\t\t\toptions = controller._resolveDataElementOptions(arc, i);\n\t\t\t} else {\n\t\t\t\toptions = arc._options;\n\t\t\t}\n\t\t\tif (options.borderAlign !== 'inner') {\n\t\t\t\tborderWidth = options.borderWidth;\n\t\t\t\thoverWidth = options.hoverBorderWidth;\n\n\t\t\t\tmax = borderWidth > max ? borderWidth : max;\n\t\t\t\tmax = hoverWidth > max ? hoverWidth : max;\n\t\t\t}\n\t\t}\n\t\treturn max;\n\t},\n\n\t/**\n\t * @protected\n\t */\n\tsetHoverStyle: function(arc) {\n\t\tvar model = arc._model;\n\t\tvar options = arc._options;\n\t\tvar getHoverColor = helpers$1.getHoverColor;\n\n\t\tarc.$previousStyle = {\n\t\t\tbackgroundColor: model.backgroundColor,\n\t\t\tborderColor: model.borderColor,\n\t\t\tborderWidth: model.borderWidth,\n\t\t};\n\n\t\tmodel.backgroundColor = valueOrDefault$5(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\n\t\tmodel.borderColor = valueOrDefault$5(options.hoverBorderColor, getHoverColor(options.borderColor));\n\t\tmodel.borderWidth = valueOrDefault$5(options.hoverBorderWidth, options.borderWidth);\n\t},\n\n\t/**\n\t * Get radius length offset of the dataset in relation to the visible datasets weights. This allows determining the inner and outer radius correctly\n\t * @private\n\t */\n\t_getRingWeightOffset: function(datasetIndex) {\n\t\tvar ringWeightOffset = 0;\n\n\t\tfor (var i = 0; i < datasetIndex; ++i) {\n\t\t\tif (this.chart.isDatasetVisible(i)) {\n\t\t\t\tringWeightOffset += this._getRingWeight(i);\n\t\t\t}\n\t\t}\n\n\t\treturn ringWeightOffset;\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_getRingWeight: function(dataSetIndex) {\n\t\treturn Math.max(valueOrDefault$5(this.chart.data.datasets[dataSetIndex].weight, 1), 0);\n\t},\n\n\t/**\n\t * Returns the sum of all visibile data set weights.  This value can be 0.\n\t * @private\n\t */\n\t_getVisibleDatasetWeightTotal: function() {\n\t\treturn this._getRingWeightOffset(this.chart.data.datasets.length);\n\t}\n});\n\ncore_defaults._set('horizontalBar', {\n\thover: {\n\t\tmode: 'index',\n\t\taxis: 'y'\n\t},\n\n\tscales: {\n\t\txAxes: [{\n\t\t\ttype: 'linear',\n\t\t\tposition: 'bottom'\n\t\t}],\n\n\t\tyAxes: [{\n\t\t\ttype: 'category',\n\t\t\tposition: 'left',\n\t\t\toffset: true,\n\t\t\tgridLines: {\n\t\t\t\toffsetGridLines: true\n\t\t\t}\n\t\t}]\n\t},\n\n\telements: {\n\t\trectangle: {\n\t\t\tborderSkipped: 'left'\n\t\t}\n\t},\n\n\ttooltips: {\n\t\tmode: 'index',\n\t\taxis: 'y'\n\t}\n});\n\ncore_defaults._set('global', {\n\tdatasets: {\n\t\thorizontalBar: {\n\t\t\tcategoryPercentage: 0.8,\n\t\t\tbarPercentage: 0.9\n\t\t}\n\t}\n});\n\nvar controller_horizontalBar = controller_bar.extend({\n\t/**\n\t * @private\n\t */\n\t_getValueScaleId: function() {\n\t\treturn this.getMeta().xAxisID;\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_getIndexScaleId: function() {\n\t\treturn this.getMeta().yAxisID;\n\t}\n});\n\nvar valueOrDefault$6 = helpers$1.valueOrDefault;\nvar resolve$2 = helpers$1.options.resolve;\nvar isPointInArea = helpers$1.canvas._isPointInArea;\n\ncore_defaults._set('line', {\n\tshowLines: true,\n\tspanGaps: false,\n\n\thover: {\n\t\tmode: 'label'\n\t},\n\n\tscales: {\n\t\txAxes: [{\n\t\t\ttype: 'category',\n\t\t\tid: 'x-axis-0'\n\t\t}],\n\t\tyAxes: [{\n\t\t\ttype: 'linear',\n\t\t\tid: 'y-axis-0'\n\t\t}]\n\t}\n});\n\nfunction scaleClip(scale, halfBorderWidth) {\n\tvar tickOpts = scale && scale.options.ticks || {};\n\tvar reverse = tickOpts.reverse;\n\tvar min = tickOpts.min === undefined ? halfBorderWidth : 0;\n\tvar max = tickOpts.max === undefined ? halfBorderWidth : 0;\n\treturn {\n\t\tstart: reverse ? max : min,\n\t\tend: reverse ? min : max\n\t};\n}\n\nfunction defaultClip(xScale, yScale, borderWidth) {\n\tvar halfBorderWidth = borderWidth / 2;\n\tvar x = scaleClip(xScale, halfBorderWidth);\n\tvar y = scaleClip(yScale, halfBorderWidth);\n\n\treturn {\n\t\ttop: y.end,\n\t\tright: x.end,\n\t\tbottom: y.start,\n\t\tleft: x.start\n\t};\n}\n\nfunction toClip(value) {\n\tvar t, r, b, l;\n\n\tif (helpers$1.isObject(value)) {\n\t\tt = value.top;\n\t\tr = value.right;\n\t\tb = value.bottom;\n\t\tl = value.left;\n\t} else {\n\t\tt = r = b = l = value;\n\t}\n\n\treturn {\n\t\ttop: t,\n\t\tright: r,\n\t\tbottom: b,\n\t\tleft: l\n\t};\n}\n\n\nvar controller_line = core_datasetController.extend({\n\n\tdatasetElementType: elements.Line,\n\n\tdataElementType: elements.Point,\n\n\t/**\n\t * @private\n\t */\n\t_datasetElementOptions: [\n\t\t'backgroundColor',\n\t\t'borderCapStyle',\n\t\t'borderColor',\n\t\t'borderDash',\n\t\t'borderDashOffset',\n\t\t'borderJoinStyle',\n\t\t'borderWidth',\n\t\t'cubicInterpolationMode',\n\t\t'fill'\n\t],\n\n\t/**\n\t * @private\n\t */\n\t_dataElementOptions: {\n\t\tbackgroundColor: 'pointBackgroundColor',\n\t\tborderColor: 'pointBorderColor',\n\t\tborderWidth: 'pointBorderWidth',\n\t\thitRadius: 'pointHitRadius',\n\t\thoverBackgroundColor: 'pointHoverBackgroundColor',\n\t\thoverBorderColor: 'pointHoverBorderColor',\n\t\thoverBorderWidth: 'pointHoverBorderWidth',\n\t\thoverRadius: 'pointHoverRadius',\n\t\tpointStyle: 'pointStyle',\n\t\tradius: 'pointRadius',\n\t\trotation: 'pointRotation'\n\t},\n\n\tupdate: function(reset) {\n\t\tvar me = this;\n\t\tvar meta = me.getMeta();\n\t\tvar line = meta.dataset;\n\t\tvar points = meta.data || [];\n\t\tvar options = me.chart.options;\n\t\tvar config = me._config;\n\t\tvar showLine = me._showLine = valueOrDefault$6(config.showLine, options.showLines);\n\t\tvar i, ilen;\n\n\t\tme._xScale = me.getScaleForId(meta.xAxisID);\n\t\tme._yScale = me.getScaleForId(meta.yAxisID);\n\n\t\t// Update Line\n\t\tif (showLine) {\n\t\t\t// Compatibility: If the properties are defined with only the old name, use those values\n\t\t\tif (config.tension !== undefined && config.lineTension === undefined) {\n\t\t\t\tconfig.lineTension = config.tension;\n\t\t\t}\n\n\t\t\t// Utility\n\t\t\tline._scale = me._yScale;\n\t\t\tline._datasetIndex = me.index;\n\t\t\t// Data\n\t\t\tline._children = points;\n\t\t\t// Model\n\t\t\tline._model = me._resolveDatasetElementOptions(line);\n\n\t\t\tline.pivot();\n\t\t}\n\n\t\t// Update Points\n\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\n\t\t\tme.updateElement(points[i], i, reset);\n\t\t}\n\n\t\tif (showLine && line._model.tension !== 0) {\n\t\t\tme.updateBezierControlPoints();\n\t\t}\n\n\t\t// Now pivot the point for animation\n\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\n\t\t\tpoints[i].pivot();\n\t\t}\n\t},\n\n\tupdateElement: function(point, index, reset) {\n\t\tvar me = this;\n\t\tvar meta = me.getMeta();\n\t\tvar custom = point.custom || {};\n\t\tvar dataset = me.getDataset();\n\t\tvar datasetIndex = me.index;\n\t\tvar value = dataset.data[index];\n\t\tvar xScale = me._xScale;\n\t\tvar yScale = me._yScale;\n\t\tvar lineModel = meta.dataset._model;\n\t\tvar x, y;\n\n\t\tvar options = me._resolveDataElementOptions(point, index);\n\n\t\tx = xScale.getPixelForValue(typeof value === 'object' ? value : NaN, index, datasetIndex);\n\t\ty = reset ? yScale.getBasePixel() : me.calculatePointY(value, index, datasetIndex);\n\n\t\t// Utility\n\t\tpoint._xScale = xScale;\n\t\tpoint._yScale = yScale;\n\t\tpoint._options = options;\n\t\tpoint._datasetIndex = datasetIndex;\n\t\tpoint._index = index;\n\n\t\t// Desired view properties\n\t\tpoint._model = {\n\t\t\tx: x,\n\t\t\ty: y,\n\t\t\tskip: custom.skip || isNaN(x) || isNaN(y),\n\t\t\t// Appearance\n\t\t\tradius: options.radius,\n\t\t\tpointStyle: options.pointStyle,\n\t\t\trotation: options.rotation,\n\t\t\tbackgroundColor: options.backgroundColor,\n\t\t\tborderColor: options.borderColor,\n\t\t\tborderWidth: options.borderWidth,\n\t\t\ttension: valueOrDefault$6(custom.tension, lineModel ? lineModel.tension : 0),\n\t\t\tsteppedLine: lineModel ? lineModel.steppedLine : false,\n\t\t\t// Tooltip\n\t\t\thitRadius: options.hitRadius\n\t\t};\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_resolveDatasetElementOptions: function(element) {\n\t\tvar me = this;\n\t\tvar config = me._config;\n\t\tvar custom = element.custom || {};\n\t\tvar options = me.chart.options;\n\t\tvar lineOptions = options.elements.line;\n\t\tvar values = core_datasetController.prototype._resolveDatasetElementOptions.apply(me, arguments);\n\n\t\t// The default behavior of lines is to break at null values, according\n\t\t// to https://github.com/chartjs/Chart.js/issues/2435#issuecomment-216718158\n\t\t// This option gives lines the ability to span gaps\n\t\tvalues.spanGaps = valueOrDefault$6(config.spanGaps, options.spanGaps);\n\t\tvalues.tension = valueOrDefault$6(config.lineTension, lineOptions.tension);\n\t\tvalues.steppedLine = resolve$2([custom.steppedLine, config.steppedLine, lineOptions.stepped]);\n\t\tvalues.clip = toClip(valueOrDefault$6(config.clip, defaultClip(me._xScale, me._yScale, values.borderWidth)));\n\n\t\treturn values;\n\t},\n\n\tcalculatePointY: function(value, index, datasetIndex) {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar yScale = me._yScale;\n\t\tvar sumPos = 0;\n\t\tvar sumNeg = 0;\n\t\tvar i, ds, dsMeta, stackedRightValue, rightValue, metasets, ilen;\n\n\t\tif (yScale.options.stacked) {\n\t\t\trightValue = +yScale.getRightValue(value);\n\t\t\tmetasets = chart._getSortedVisibleDatasetMetas();\n\t\t\tilen = metasets.length;\n\n\t\t\tfor (i = 0; i < ilen; ++i) {\n\t\t\t\tdsMeta = metasets[i];\n\t\t\t\tif (dsMeta.index === datasetIndex) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tds = chart.data.datasets[dsMeta.index];\n\t\t\t\tif (dsMeta.type === 'line' && dsMeta.yAxisID === yScale.id) {\n\t\t\t\t\tstackedRightValue = +yScale.getRightValue(ds.data[index]);\n\t\t\t\t\tif (stackedRightValue < 0) {\n\t\t\t\t\t\tsumNeg += stackedRightValue || 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsumPos += stackedRightValue || 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (rightValue < 0) {\n\t\t\t\treturn yScale.getPixelForValue(sumNeg + rightValue);\n\t\t\t}\n\t\t\treturn yScale.getPixelForValue(sumPos + rightValue);\n\t\t}\n\t\treturn yScale.getPixelForValue(value);\n\t},\n\n\tupdateBezierControlPoints: function() {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar meta = me.getMeta();\n\t\tvar lineModel = meta.dataset._model;\n\t\tvar area = chart.chartArea;\n\t\tvar points = meta.data || [];\n\t\tvar i, ilen, model, controlPoints;\n\n\t\t// Only consider points that are drawn in case the spanGaps option is used\n\t\tif (lineModel.spanGaps) {\n\t\t\tpoints = points.filter(function(pt) {\n\t\t\t\treturn !pt._model.skip;\n\t\t\t});\n\t\t}\n\n\t\tfunction capControlPoint(pt, min, max) {\n\t\t\treturn Math.max(Math.min(pt, max), min);\n\t\t}\n\n\t\tif (lineModel.cubicInterpolationMode === 'monotone') {\n\t\t\thelpers$1.splineCurveMonotone(points);\n\t\t} else {\n\t\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\n\t\t\t\tmodel = points[i]._model;\n\t\t\t\tcontrolPoints = helpers$1.splineCurve(\n\t\t\t\t\thelpers$1.previousItem(points, i)._model,\n\t\t\t\t\tmodel,\n\t\t\t\t\thelpers$1.nextItem(points, i)._model,\n\t\t\t\t\tlineModel.tension\n\t\t\t\t);\n\t\t\t\tmodel.controlPointPreviousX = controlPoints.previous.x;\n\t\t\t\tmodel.controlPointPreviousY = controlPoints.previous.y;\n\t\t\t\tmodel.controlPointNextX = controlPoints.next.x;\n\t\t\t\tmodel.controlPointNextY = controlPoints.next.y;\n\t\t\t}\n\t\t}\n\n\t\tif (chart.options.elements.line.capBezierPoints) {\n\t\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\n\t\t\t\tmodel = points[i]._model;\n\t\t\t\tif (isPointInArea(model, area)) {\n\t\t\t\t\tif (i > 0 && isPointInArea(points[i - 1]._model, area)) {\n\t\t\t\t\t\tmodel.controlPointPreviousX = capControlPoint(model.controlPointPreviousX, area.left, area.right);\n\t\t\t\t\t\tmodel.controlPointPreviousY = capControlPoint(model.controlPointPreviousY, area.top, area.bottom);\n\t\t\t\t\t}\n\t\t\t\t\tif (i < points.length - 1 && isPointInArea(points[i + 1]._model, area)) {\n\t\t\t\t\t\tmodel.controlPointNextX = capControlPoint(model.controlPointNextX, area.left, area.right);\n\t\t\t\t\t\tmodel.controlPointNextY = capControlPoint(model.controlPointNextY, area.top, area.bottom);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tdraw: function() {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar meta = me.getMeta();\n\t\tvar points = meta.data || [];\n\t\tvar area = chart.chartArea;\n\t\tvar canvas = chart.canvas;\n\t\tvar i = 0;\n\t\tvar ilen = points.length;\n\t\tvar clip;\n\n\t\tif (me._showLine) {\n\t\t\tclip = meta.dataset._model.clip;\n\n\t\t\thelpers$1.canvas.clipArea(chart.ctx, {\n\t\t\t\tleft: clip.left === false ? 0 : area.left - clip.left,\n\t\t\t\tright: clip.right === false ? canvas.width : area.right + clip.right,\n\t\t\t\ttop: clip.top === false ? 0 : area.top - clip.top,\n\t\t\t\tbottom: clip.bottom === false ? canvas.height : area.bottom + clip.bottom\n\t\t\t});\n\n\t\t\tmeta.dataset.draw();\n\n\t\t\thelpers$1.canvas.unclipArea(chart.ctx);\n\t\t}\n\n\t\t// Draw the points\n\t\tfor (; i < ilen; ++i) {\n\t\t\tpoints[i].draw(area);\n\t\t}\n\t},\n\n\t/**\n\t * @protected\n\t */\n\tsetHoverStyle: function(point) {\n\t\tvar model = point._model;\n\t\tvar options = point._options;\n\t\tvar getHoverColor = helpers$1.getHoverColor;\n\n\t\tpoint.$previousStyle = {\n\t\t\tbackgroundColor: model.backgroundColor,\n\t\t\tborderColor: model.borderColor,\n\t\t\tborderWidth: model.borderWidth,\n\t\t\tradius: model.radius\n\t\t};\n\n\t\tmodel.backgroundColor = valueOrDefault$6(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\n\t\tmodel.borderColor = valueOrDefault$6(options.hoverBorderColor, getHoverColor(options.borderColor));\n\t\tmodel.borderWidth = valueOrDefault$6(options.hoverBorderWidth, options.borderWidth);\n\t\tmodel.radius = valueOrDefault$6(options.hoverRadius, options.radius);\n\t},\n});\n\nvar resolve$3 = helpers$1.options.resolve;\n\ncore_defaults._set('polarArea', {\n\tscale: {\n\t\ttype: 'radialLinear',\n\t\tangleLines: {\n\t\t\tdisplay: false\n\t\t},\n\t\tgridLines: {\n\t\t\tcircular: true\n\t\t},\n\t\tpointLabels: {\n\t\t\tdisplay: false\n\t\t},\n\t\tticks: {\n\t\t\tbeginAtZero: true\n\t\t}\n\t},\n\n\t// Boolean - Whether to animate the rotation of the chart\n\tanimation: {\n\t\tanimateRotate: true,\n\t\tanimateScale: true\n\t},\n\n\tstartAngle: -0.5 * Math.PI,\n\tlegendCallback: function(chart) {\n\t\tvar list = document.createElement('ul');\n\t\tvar data = chart.data;\n\t\tvar datasets = data.datasets;\n\t\tvar labels = data.labels;\n\t\tvar i, ilen, listItem, listItemSpan;\n\n\t\tlist.setAttribute('class', chart.id + '-legend');\n\t\tif (datasets.length) {\n\t\t\tfor (i = 0, ilen = datasets[0].data.length; i < ilen; ++i) {\n\t\t\t\tlistItem = list.appendChild(document.createElement('li'));\n\t\t\t\tlistItemSpan = listItem.appendChild(document.createElement('span'));\n\t\t\t\tlistItemSpan.style.backgroundColor = datasets[0].backgroundColor[i];\n\t\t\t\tif (labels[i]) {\n\t\t\t\t\tlistItem.appendChild(document.createTextNode(labels[i]));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn list.outerHTML;\n\t},\n\tlegend: {\n\t\tlabels: {\n\t\t\tgenerateLabels: function(chart) {\n\t\t\t\tvar data = chart.data;\n\t\t\t\tif (data.labels.length && data.datasets.length) {\n\t\t\t\t\treturn data.labels.map(function(label, i) {\n\t\t\t\t\t\tvar meta = chart.getDatasetMeta(0);\n\t\t\t\t\t\tvar style = meta.controller.getStyle(i);\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttext: label,\n\t\t\t\t\t\t\tfillStyle: style.backgroundColor,\n\t\t\t\t\t\t\tstrokeStyle: style.borderColor,\n\t\t\t\t\t\t\tlineWidth: style.borderWidth,\n\t\t\t\t\t\t\thidden: isNaN(data.datasets[0].data[i]) || meta.data[i].hidden,\n\n\t\t\t\t\t\t\t// Extra data used for toggling the correct item\n\t\t\t\t\t\t\tindex: i\n\t\t\t\t\t\t};\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn [];\n\t\t\t}\n\t\t},\n\n\t\tonClick: function(e, legendItem) {\n\t\t\tvar index = legendItem.index;\n\t\t\tvar chart = this.chart;\n\t\t\tvar i, ilen, meta;\n\n\t\t\tfor (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\n\t\t\t\tmeta = chart.getDatasetMeta(i);\n\t\t\t\tmeta.data[index].hidden = !meta.data[index].hidden;\n\t\t\t}\n\n\t\t\tchart.update();\n\t\t}\n\t},\n\n\t// Need to override these to give a nice default\n\ttooltips: {\n\t\tcallbacks: {\n\t\t\ttitle: function() {\n\t\t\t\treturn '';\n\t\t\t},\n\t\t\tlabel: function(item, data) {\n\t\t\t\treturn data.labels[item.index] + ': ' + item.yLabel;\n\t\t\t}\n\t\t}\n\t}\n});\n\nvar controller_polarArea = core_datasetController.extend({\n\n\tdataElementType: elements.Arc,\n\n\tlinkScales: helpers$1.noop,\n\n\t/**\n\t * @private\n\t */\n\t_dataElementOptions: [\n\t\t'backgroundColor',\n\t\t'borderColor',\n\t\t'borderWidth',\n\t\t'borderAlign',\n\t\t'hoverBackgroundColor',\n\t\t'hoverBorderColor',\n\t\t'hoverBorderWidth',\n\t],\n\n\t/**\n\t * @private\n\t */\n\t_getIndexScaleId: function() {\n\t\treturn this.chart.scale.id;\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_getValueScaleId: function() {\n\t\treturn this.chart.scale.id;\n\t},\n\n\tupdate: function(reset) {\n\t\tvar me = this;\n\t\tvar dataset = me.getDataset();\n\t\tvar meta = me.getMeta();\n\t\tvar start = me.chart.options.startAngle || 0;\n\t\tvar starts = me._starts = [];\n\t\tvar angles = me._angles = [];\n\t\tvar arcs = meta.data;\n\t\tvar i, ilen, angle;\n\n\t\tme._updateRadius();\n\n\t\tmeta.count = me.countVisibleElements();\n\n\t\tfor (i = 0, ilen = dataset.data.length; i < ilen; i++) {\n\t\t\tstarts[i] = start;\n\t\t\tangle = me._computeAngle(i);\n\t\t\tangles[i] = angle;\n\t\t\tstart += angle;\n\t\t}\n\n\t\tfor (i = 0, ilen = arcs.length; i < ilen; ++i) {\n\t\t\tarcs[i]._options = me._resolveDataElementOptions(arcs[i], i);\n\t\t\tme.updateElement(arcs[i], i, reset);\n\t\t}\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_updateRadius: function() {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar chartArea = chart.chartArea;\n\t\tvar opts = chart.options;\n\t\tvar minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\n\n\t\tchart.outerRadius = Math.max(minSize / 2, 0);\n\t\tchart.innerRadius = Math.max(opts.cutoutPercentage ? (chart.outerRadius / 100) * (opts.cutoutPercentage) : 1, 0);\n\t\tchart.radiusLength = (chart.outerRadius - chart.innerRadius) / chart.getVisibleDatasetCount();\n\n\t\tme.outerRadius = chart.outerRadius - (chart.radiusLength * me.index);\n\t\tme.innerRadius = me.outerRadius - chart.radiusLength;\n\t},\n\n\tupdateElement: function(arc, index, reset) {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar dataset = me.getDataset();\n\t\tvar opts = chart.options;\n\t\tvar animationOpts = opts.animation;\n\t\tvar scale = chart.scale;\n\t\tvar labels = chart.data.labels;\n\n\t\tvar centerX = scale.xCenter;\n\t\tvar centerY = scale.yCenter;\n\n\t\t// var negHalfPI = -0.5 * Math.PI;\n\t\tvar datasetStartAngle = opts.startAngle;\n\t\tvar distance = arc.hidden ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]);\n\t\tvar startAngle = me._starts[index];\n\t\tvar endAngle = startAngle + (arc.hidden ? 0 : me._angles[index]);\n\n\t\tvar resetRadius = animationOpts.animateScale ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]);\n\t\tvar options = arc._options || {};\n\n\t\thelpers$1.extend(arc, {\n\t\t\t// Utility\n\t\t\t_datasetIndex: me.index,\n\t\t\t_index: index,\n\t\t\t_scale: scale,\n\n\t\t\t// Desired view properties\n\t\t\t_model: {\n\t\t\t\tbackgroundColor: options.backgroundColor,\n\t\t\t\tborderColor: options.borderColor,\n\t\t\t\tborderWidth: options.borderWidth,\n\t\t\t\tborderAlign: options.borderAlign,\n\t\t\t\tx: centerX,\n\t\t\t\ty: centerY,\n\t\t\t\tinnerRadius: 0,\n\t\t\t\touterRadius: reset ? resetRadius : distance,\n\t\t\t\tstartAngle: reset && animationOpts.animateRotate ? datasetStartAngle : startAngle,\n\t\t\t\tendAngle: reset && animationOpts.animateRotate ? datasetStartAngle : endAngle,\n\t\t\t\tlabel: helpers$1.valueAtIndexOrDefault(labels, index, labels[index])\n\t\t\t}\n\t\t});\n\n\t\tarc.pivot();\n\t},\n\n\tcountVisibleElements: function() {\n\t\tvar dataset = this.getDataset();\n\t\tvar meta = this.getMeta();\n\t\tvar count = 0;\n\n\t\thelpers$1.each(meta.data, function(element, index) {\n\t\t\tif (!isNaN(dataset.data[index]) && !element.hidden) {\n\t\t\t\tcount++;\n\t\t\t}\n\t\t});\n\n\t\treturn count;\n\t},\n\n\t/**\n\t * @protected\n\t */\n\tsetHoverStyle: function(arc) {\n\t\tvar model = arc._model;\n\t\tvar options = arc._options;\n\t\tvar getHoverColor = helpers$1.getHoverColor;\n\t\tvar valueOrDefault = helpers$1.valueOrDefault;\n\n\t\tarc.$previousStyle = {\n\t\t\tbackgroundColor: model.backgroundColor,\n\t\t\tborderColor: model.borderColor,\n\t\t\tborderWidth: model.borderWidth,\n\t\t};\n\n\t\tmodel.backgroundColor = valueOrDefault(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\n\t\tmodel.borderColor = valueOrDefault(options.hoverBorderColor, getHoverColor(options.borderColor));\n\t\tmodel.borderWidth = valueOrDefault(options.hoverBorderWidth, options.borderWidth);\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_computeAngle: function(index) {\n\t\tvar me = this;\n\t\tvar count = this.getMeta().count;\n\t\tvar dataset = me.getDataset();\n\t\tvar meta = me.getMeta();\n\n\t\tif (isNaN(dataset.data[index]) || meta.data[index].hidden) {\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Scriptable options\n\t\tvar context = {\n\t\t\tchart: me.chart,\n\t\t\tdataIndex: index,\n\t\t\tdataset: dataset,\n\t\t\tdatasetIndex: me.index\n\t\t};\n\n\t\treturn resolve$3([\n\t\t\tme.chart.options.elements.arc.angle,\n\t\t\t(2 * Math.PI) / count\n\t\t], context, index);\n\t}\n});\n\ncore_defaults._set('pie', helpers$1.clone(core_defaults.doughnut));\ncore_defaults._set('pie', {\n\tcutoutPercentage: 0\n});\n\n// Pie charts are Doughnut chart with different defaults\nvar controller_pie = controller_doughnut;\n\nvar valueOrDefault$7 = helpers$1.valueOrDefault;\n\ncore_defaults._set('radar', {\n\tspanGaps: false,\n\tscale: {\n\t\ttype: 'radialLinear'\n\t},\n\telements: {\n\t\tline: {\n\t\t\tfill: 'start',\n\t\t\ttension: 0 // no bezier in radar\n\t\t}\n\t}\n});\n\nvar controller_radar = core_datasetController.extend({\n\tdatasetElementType: elements.Line,\n\n\tdataElementType: elements.Point,\n\n\tlinkScales: helpers$1.noop,\n\n\t/**\n\t * @private\n\t */\n\t_datasetElementOptions: [\n\t\t'backgroundColor',\n\t\t'borderWidth',\n\t\t'borderColor',\n\t\t'borderCapStyle',\n\t\t'borderDash',\n\t\t'borderDashOffset',\n\t\t'borderJoinStyle',\n\t\t'fill'\n\t],\n\n\t/**\n\t * @private\n\t */\n\t_dataElementOptions: {\n\t\tbackgroundColor: 'pointBackgroundColor',\n\t\tborderColor: 'pointBorderColor',\n\t\tborderWidth: 'pointBorderWidth',\n\t\thitRadius: 'pointHitRadius',\n\t\thoverBackgroundColor: 'pointHoverBackgroundColor',\n\t\thoverBorderColor: 'pointHoverBorderColor',\n\t\thoverBorderWidth: 'pointHoverBorderWidth',\n\t\thoverRadius: 'pointHoverRadius',\n\t\tpointStyle: 'pointStyle',\n\t\tradius: 'pointRadius',\n\t\trotation: 'pointRotation'\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_getIndexScaleId: function() {\n\t\treturn this.chart.scale.id;\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_getValueScaleId: function() {\n\t\treturn this.chart.scale.id;\n\t},\n\n\tupdate: function(reset) {\n\t\tvar me = this;\n\t\tvar meta = me.getMeta();\n\t\tvar line = meta.dataset;\n\t\tvar points = meta.data || [];\n\t\tvar scale = me.chart.scale;\n\t\tvar config = me._config;\n\t\tvar i, ilen;\n\n\t\t// Compatibility: If the properties are defined with only the old name, use those values\n\t\tif (config.tension !== undefined && config.lineTension === undefined) {\n\t\t\tconfig.lineTension = config.tension;\n\t\t}\n\n\t\t// Utility\n\t\tline._scale = scale;\n\t\tline._datasetIndex = me.index;\n\t\t// Data\n\t\tline._children = points;\n\t\tline._loop = true;\n\t\t// Model\n\t\tline._model = me._resolveDatasetElementOptions(line);\n\n\t\tline.pivot();\n\n\t\t// Update Points\n\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\n\t\t\tme.updateElement(points[i], i, reset);\n\t\t}\n\n\t\t// Update bezier control points\n\t\tme.updateBezierControlPoints();\n\n\t\t// Now pivot the point for animation\n\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\n\t\t\tpoints[i].pivot();\n\t\t}\n\t},\n\n\tupdateElement: function(point, index, reset) {\n\t\tvar me = this;\n\t\tvar custom = point.custom || {};\n\t\tvar dataset = me.getDataset();\n\t\tvar scale = me.chart.scale;\n\t\tvar pointPosition = scale.getPointPositionForValue(index, dataset.data[index]);\n\t\tvar options = me._resolveDataElementOptions(point, index);\n\t\tvar lineModel = me.getMeta().dataset._model;\n\t\tvar x = reset ? scale.xCenter : pointPosition.x;\n\t\tvar y = reset ? scale.yCenter : pointPosition.y;\n\n\t\t// Utility\n\t\tpoint._scale = scale;\n\t\tpoint._options = options;\n\t\tpoint._datasetIndex = me.index;\n\t\tpoint._index = index;\n\n\t\t// Desired view properties\n\t\tpoint._model = {\n\t\t\tx: x, // value not used in dataset scale, but we want a consistent API between scales\n\t\t\ty: y,\n\t\t\tskip: custom.skip || isNaN(x) || isNaN(y),\n\t\t\t// Appearance\n\t\t\tradius: options.radius,\n\t\t\tpointStyle: options.pointStyle,\n\t\t\trotation: options.rotation,\n\t\t\tbackgroundColor: options.backgroundColor,\n\t\t\tborderColor: options.borderColor,\n\t\t\tborderWidth: options.borderWidth,\n\t\t\ttension: valueOrDefault$7(custom.tension, lineModel ? lineModel.tension : 0),\n\n\t\t\t// Tooltip\n\t\t\thitRadius: options.hitRadius\n\t\t};\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_resolveDatasetElementOptions: function() {\n\t\tvar me = this;\n\t\tvar config = me._config;\n\t\tvar options = me.chart.options;\n\t\tvar values = core_datasetController.prototype._resolveDatasetElementOptions.apply(me, arguments);\n\n\t\tvalues.spanGaps = valueOrDefault$7(config.spanGaps, options.spanGaps);\n\t\tvalues.tension = valueOrDefault$7(config.lineTension, options.elements.line.tension);\n\n\t\treturn values;\n\t},\n\n\tupdateBezierControlPoints: function() {\n\t\tvar me = this;\n\t\tvar meta = me.getMeta();\n\t\tvar area = me.chart.chartArea;\n\t\tvar points = meta.data || [];\n\t\tvar i, ilen, model, controlPoints;\n\n\t\t// Only consider points that are drawn in case the spanGaps option is used\n\t\tif (meta.dataset._model.spanGaps) {\n\t\t\tpoints = points.filter(function(pt) {\n\t\t\t\treturn !pt._model.skip;\n\t\t\t});\n\t\t}\n\n\t\tfunction capControlPoint(pt, min, max) {\n\t\t\treturn Math.max(Math.min(pt, max), min);\n\t\t}\n\n\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\n\t\t\tmodel = points[i]._model;\n\t\t\tcontrolPoints = helpers$1.splineCurve(\n\t\t\t\thelpers$1.previousItem(points, i, true)._model,\n\t\t\t\tmodel,\n\t\t\t\thelpers$1.nextItem(points, i, true)._model,\n\t\t\t\tmodel.tension\n\t\t\t);\n\n\t\t\t// Prevent the bezier going outside of the bounds of the graph\n\t\t\tmodel.controlPointPreviousX = capControlPoint(controlPoints.previous.x, area.left, area.right);\n\t\t\tmodel.controlPointPreviousY = capControlPoint(controlPoints.previous.y, area.top, area.bottom);\n\t\t\tmodel.controlPointNextX = capControlPoint(controlPoints.next.x, area.left, area.right);\n\t\t\tmodel.controlPointNextY = capControlPoint(controlPoints.next.y, area.top, area.bottom);\n\t\t}\n\t},\n\n\tsetHoverStyle: function(point) {\n\t\tvar model = point._model;\n\t\tvar options = point._options;\n\t\tvar getHoverColor = helpers$1.getHoverColor;\n\n\t\tpoint.$previousStyle = {\n\t\t\tbackgroundColor: model.backgroundColor,\n\t\t\tborderColor: model.borderColor,\n\t\t\tborderWidth: model.borderWidth,\n\t\t\tradius: model.radius\n\t\t};\n\n\t\tmodel.backgroundColor = valueOrDefault$7(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\n\t\tmodel.borderColor = valueOrDefault$7(options.hoverBorderColor, getHoverColor(options.borderColor));\n\t\tmodel.borderWidth = valueOrDefault$7(options.hoverBorderWidth, options.borderWidth);\n\t\tmodel.radius = valueOrDefault$7(options.hoverRadius, options.radius);\n\t}\n});\n\ncore_defaults._set('scatter', {\n\thover: {\n\t\tmode: 'single'\n\t},\n\n\tscales: {\n\t\txAxes: [{\n\t\t\tid: 'x-axis-1',    // need an ID so datasets can reference the scale\n\t\t\ttype: 'linear',    // scatter should not use a category axis\n\t\t\tposition: 'bottom'\n\t\t}],\n\t\tyAxes: [{\n\t\t\tid: 'y-axis-1',\n\t\t\ttype: 'linear',\n\t\t\tposition: 'left'\n\t\t}]\n\t},\n\n\ttooltips: {\n\t\tcallbacks: {\n\t\t\ttitle: function() {\n\t\t\t\treturn '';     // doesn't make sense for scatter since data are formatted as a point\n\t\t\t},\n\t\t\tlabel: function(item) {\n\t\t\t\treturn '(' + item.xLabel + ', ' + item.yLabel + ')';\n\t\t\t}\n\t\t}\n\t}\n});\n\ncore_defaults._set('global', {\n\tdatasets: {\n\t\tscatter: {\n\t\t\tshowLine: false\n\t\t}\n\t}\n});\n\n// Scatter charts use line controllers\nvar controller_scatter = controller_line;\n\n// NOTE export a map in which the key represents the controller type, not\n// the class, and so must be CamelCase in order to be correctly retrieved\n// by the controller in core.controller.js (`controllers[meta.type]`).\n\nvar controllers = {\n\tbar: controller_bar,\n\tbubble: controller_bubble,\n\tdoughnut: controller_doughnut,\n\thorizontalBar: controller_horizontalBar,\n\tline: controller_line,\n\tpolarArea: controller_polarArea,\n\tpie: controller_pie,\n\tradar: controller_radar,\n\tscatter: controller_scatter\n};\n\n/**\n * Helper function to get relative position for an event\n * @param {Event|IEvent} event - The event to get the position for\n * @param {Chart} chart - The chart\n * @returns {object} the event position\n */\nfunction getRelativePosition(e, chart) {\n\tif (e.native) {\n\t\treturn {\n\t\t\tx: e.x,\n\t\t\ty: e.y\n\t\t};\n\t}\n\n\treturn helpers$1.getRelativePosition(e, chart);\n}\n\n/**\n * Helper function to traverse all of the visible elements in the chart\n * @param {Chart} chart - the chart\n * @param {function} handler - the callback to execute for each visible item\n */\nfunction parseVisibleItems(chart, handler) {\n\tvar metasets = chart._getSortedVisibleDatasetMetas();\n\tvar metadata, i, j, ilen, jlen, element;\n\n\tfor (i = 0, ilen = metasets.length; i < ilen; ++i) {\n\t\tmetadata = metasets[i].data;\n\t\tfor (j = 0, jlen = metadata.length; j < jlen; ++j) {\n\t\t\telement = metadata[j];\n\t\t\tif (!element._view.skip) {\n\t\t\t\thandler(element);\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * Helper function to get the items that intersect the event position\n * @param {ChartElement[]} items - elements to filter\n * @param {object} position - the point to be nearest to\n * @return {ChartElement[]} the nearest items\n */\nfunction getIntersectItems(chart, position) {\n\tvar elements = [];\n\n\tparseVisibleItems(chart, function(element) {\n\t\tif (element.inRange(position.x, position.y)) {\n\t\t\telements.push(element);\n\t\t}\n\t});\n\n\treturn elements;\n}\n\n/**\n * Helper function to get the items nearest to the event position considering all visible items in teh chart\n * @param {Chart} chart - the chart to look at elements from\n * @param {object} position - the point to be nearest to\n * @param {boolean} intersect - if true, only consider items that intersect the position\n * @param {function} distanceMetric - function to provide the distance between points\n * @return {ChartElement[]} the nearest items\n */\nfunction getNearestItems(chart, position, intersect, distanceMetric) {\n\tvar minDistance = Number.POSITIVE_INFINITY;\n\tvar nearestItems = [];\n\n\tparseVisibleItems(chart, function(element) {\n\t\tif (intersect && !element.inRange(position.x, position.y)) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar center = element.getCenterPoint();\n\t\tvar distance = distanceMetric(position, center);\n\t\tif (distance < minDistance) {\n\t\t\tnearestItems = [element];\n\t\t\tminDistance = distance;\n\t\t} else if (distance === minDistance) {\n\t\t\t// Can have multiple items at the same distance in which case we sort by size\n\t\t\tnearestItems.push(element);\n\t\t}\n\t});\n\n\treturn nearestItems;\n}\n\n/**\n * Get a distance metric function for two points based on the\n * axis mode setting\n * @param {string} axis - the axis mode. x|y|xy\n */\nfunction getDistanceMetricForAxis(axis) {\n\tvar useX = axis.indexOf('x') !== -1;\n\tvar useY = axis.indexOf('y') !== -1;\n\n\treturn function(pt1, pt2) {\n\t\tvar deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0;\n\t\tvar deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0;\n\t\treturn Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));\n\t};\n}\n\nfunction indexMode(chart, e, options) {\n\tvar position = getRelativePosition(e, chart);\n\t// Default axis for index mode is 'x' to match old behaviour\n\toptions.axis = options.axis || 'x';\n\tvar distanceMetric = getDistanceMetricForAxis(options.axis);\n\tvar items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false, distanceMetric);\n\tvar elements = [];\n\n\tif (!items.length) {\n\t\treturn [];\n\t}\n\n\tchart._getSortedVisibleDatasetMetas().forEach(function(meta) {\n\t\tvar element = meta.data[items[0]._index];\n\n\t\t// don't count items that are skipped (null data)\n\t\tif (element && !element._view.skip) {\n\t\t\telements.push(element);\n\t\t}\n\t});\n\n\treturn elements;\n}\n\n/**\n * @interface IInteractionOptions\n */\n/**\n * If true, only consider items that intersect the point\n * @name IInterfaceOptions#boolean\n * @type Boolean\n */\n\n/**\n * Contains interaction related functions\n * @namespace Chart.Interaction\n */\nvar core_interaction = {\n\t// Helper function for different modes\n\tmodes: {\n\t\tsingle: function(chart, e) {\n\t\t\tvar position = getRelativePosition(e, chart);\n\t\t\tvar elements = [];\n\n\t\t\tparseVisibleItems(chart, function(element) {\n\t\t\t\tif (element.inRange(position.x, position.y)) {\n\t\t\t\t\telements.push(element);\n\t\t\t\t\treturn elements;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn elements.slice(0, 1);\n\t\t},\n\n\t\t/**\n\t\t * @function Chart.Interaction.modes.label\n\t\t * @deprecated since version 2.4.0\n\t\t * @todo remove at version 3\n\t\t * @private\n\t\t */\n\t\tlabel: indexMode,\n\n\t\t/**\n\t\t * Returns items at the same index. If the options.intersect parameter is true, we only return items if we intersect something\n\t\t * If the options.intersect mode is false, we find the nearest item and return the items at the same index as that item\n\t\t * @function Chart.Interaction.modes.index\n\t\t * @since v2.4.0\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {IInteractionOptions} options - options to use during interaction\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n\t\t */\n\t\tindex: indexMode,\n\n\t\t/**\n\t\t * Returns items in the same dataset. If the options.intersect parameter is true, we only return items if we intersect something\n\t\t * If the options.intersect is false, we find the nearest item and return the items in that dataset\n\t\t * @function Chart.Interaction.modes.dataset\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {IInteractionOptions} options - options to use during interaction\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n\t\t */\n\t\tdataset: function(chart, e, options) {\n\t\t\tvar position = getRelativePosition(e, chart);\n\t\t\toptions.axis = options.axis || 'xy';\n\t\t\tvar distanceMetric = getDistanceMetricForAxis(options.axis);\n\t\t\tvar items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false, distanceMetric);\n\n\t\t\tif (items.length > 0) {\n\t\t\t\titems = chart.getDatasetMeta(items[0]._datasetIndex).data;\n\t\t\t}\n\n\t\t\treturn items;\n\t\t},\n\n\t\t/**\n\t\t * @function Chart.Interaction.modes.x-axis\n\t\t * @deprecated since version 2.4.0. Use index mode and intersect == true\n\t\t * @todo remove at version 3\n\t\t * @private\n\t\t */\n\t\t'x-axis': function(chart, e) {\n\t\t\treturn indexMode(chart, e, {intersect: false});\n\t\t},\n\n\t\t/**\n\t\t * Point mode returns all elements that hit test based on the event position\n\t\t * of the event\n\t\t * @function Chart.Interaction.modes.intersect\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n\t\t */\n\t\tpoint: function(chart, e) {\n\t\t\tvar position = getRelativePosition(e, chart);\n\t\t\treturn getIntersectItems(chart, position);\n\t\t},\n\n\t\t/**\n\t\t * nearest mode returns the element closest to the point\n\t\t * @function Chart.Interaction.modes.intersect\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {IInteractionOptions} options - options to use\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n\t\t */\n\t\tnearest: function(chart, e, options) {\n\t\t\tvar position = getRelativePosition(e, chart);\n\t\t\toptions.axis = options.axis || 'xy';\n\t\t\tvar distanceMetric = getDistanceMetricForAxis(options.axis);\n\t\t\treturn getNearestItems(chart, position, options.intersect, distanceMetric);\n\t\t},\n\n\t\t/**\n\t\t * x mode returns the elements that hit-test at the current x coordinate\n\t\t * @function Chart.Interaction.modes.x\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {IInteractionOptions} options - options to use\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n\t\t */\n\t\tx: function(chart, e, options) {\n\t\t\tvar position = getRelativePosition(e, chart);\n\t\t\tvar items = [];\n\t\t\tvar intersectsItem = false;\n\n\t\t\tparseVisibleItems(chart, function(element) {\n\t\t\t\tif (element.inXRange(position.x)) {\n\t\t\t\t\titems.push(element);\n\t\t\t\t}\n\n\t\t\t\tif (element.inRange(position.x, position.y)) {\n\t\t\t\t\tintersectsItem = true;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// If we want to trigger on an intersect and we don't have any items\n\t\t\t// that intersect the position, return nothing\n\t\t\tif (options.intersect && !intersectsItem) {\n\t\t\t\titems = [];\n\t\t\t}\n\t\t\treturn items;\n\t\t},\n\n\t\t/**\n\t\t * y mode returns the elements that hit-test at the current y coordinate\n\t\t * @function Chart.Interaction.modes.y\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {IInteractionOptions} options - options to use\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n\t\t */\n\t\ty: function(chart, e, options) {\n\t\t\tvar position = getRelativePosition(e, chart);\n\t\t\tvar items = [];\n\t\t\tvar intersectsItem = false;\n\n\t\t\tparseVisibleItems(chart, function(element) {\n\t\t\t\tif (element.inYRange(position.y)) {\n\t\t\t\t\titems.push(element);\n\t\t\t\t}\n\n\t\t\t\tif (element.inRange(position.x, position.y)) {\n\t\t\t\t\tintersectsItem = true;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// If we want to trigger on an intersect and we don't have any items\n\t\t\t// that intersect the position, return nothing\n\t\t\tif (options.intersect && !intersectsItem) {\n\t\t\t\titems = [];\n\t\t\t}\n\t\t\treturn items;\n\t\t}\n\t}\n};\n\nvar extend = helpers$1.extend;\n\nfunction filterByPosition(array, position) {\n\treturn helpers$1.where(array, function(v) {\n\t\treturn v.pos === position;\n\t});\n}\n\nfunction sortByWeight(array, reverse) {\n\treturn array.sort(function(a, b) {\n\t\tvar v0 = reverse ? b : a;\n\t\tvar v1 = reverse ? a : b;\n\t\treturn v0.weight === v1.weight ?\n\t\t\tv0.index - v1.index :\n\t\t\tv0.weight - v1.weight;\n\t});\n}\n\nfunction wrapBoxes(boxes) {\n\tvar layoutBoxes = [];\n\tvar i, ilen, box;\n\n\tfor (i = 0, ilen = (boxes || []).length; i < ilen; ++i) {\n\t\tbox = boxes[i];\n\t\tlayoutBoxes.push({\n\t\t\tindex: i,\n\t\t\tbox: box,\n\t\t\tpos: box.position,\n\t\t\thorizontal: box.isHorizontal(),\n\t\t\tweight: box.weight\n\t\t});\n\t}\n\treturn layoutBoxes;\n}\n\nfunction setLayoutDims(layouts, params) {\n\tvar i, ilen, layout;\n\tfor (i = 0, ilen = layouts.length; i < ilen; ++i) {\n\t\tlayout = layouts[i];\n\t\t// store width used instead of chartArea.w in fitBoxes\n\t\tlayout.width = layout.horizontal\n\t\t\t? layout.box.fullWidth && params.availableWidth\n\t\t\t: params.vBoxMaxWidth;\n\t\t// store height used instead of chartArea.h in fitBoxes\n\t\tlayout.height = layout.horizontal && params.hBoxMaxHeight;\n\t}\n}\n\nfunction buildLayoutBoxes(boxes) {\n\tvar layoutBoxes = wrapBoxes(boxes);\n\tvar left = sortByWeight(filterByPosition(layoutBoxes, 'left'), true);\n\tvar right = sortByWeight(filterByPosition(layoutBoxes, 'right'));\n\tvar top = sortByWeight(filterByPosition(layoutBoxes, 'top'), true);\n\tvar bottom = sortByWeight(filterByPosition(layoutBoxes, 'bottom'));\n\n\treturn {\n\t\tleftAndTop: left.concat(top),\n\t\trightAndBottom: right.concat(bottom),\n\t\tchartArea: filterByPosition(layoutBoxes, 'chartArea'),\n\t\tvertical: left.concat(right),\n\t\thorizontal: top.concat(bottom)\n\t};\n}\n\nfunction getCombinedMax(maxPadding, chartArea, a, b) {\n\treturn Math.max(maxPadding[a], chartArea[a]) + Math.max(maxPadding[b], chartArea[b]);\n}\n\nfunction updateDims(chartArea, params, layout) {\n\tvar box = layout.box;\n\tvar maxPadding = chartArea.maxPadding;\n\tvar newWidth, newHeight;\n\n\tif (layout.size) {\n\t\t// this layout was already counted for, lets first reduce old size\n\t\tchartArea[layout.pos] -= layout.size;\n\t}\n\tlayout.size = layout.horizontal ? box.height : box.width;\n\tchartArea[layout.pos] += layout.size;\n\n\tif (box.getPadding) {\n\t\tvar boxPadding = box.getPadding();\n\t\tmaxPadding.top = Math.max(maxPadding.top, boxPadding.top);\n\t\tmaxPadding.left = Math.max(maxPadding.left, boxPadding.left);\n\t\tmaxPadding.bottom = Math.max(maxPadding.bottom, boxPadding.bottom);\n\t\tmaxPadding.right = Math.max(maxPadding.right, boxPadding.right);\n\t}\n\n\tnewWidth = params.outerWidth - getCombinedMax(maxPadding, chartArea, 'left', 'right');\n\tnewHeight = params.outerHeight - getCombinedMax(maxPadding, chartArea, 'top', 'bottom');\n\n\tif (newWidth !== chartArea.w || newHeight !== chartArea.h) {\n\t\tchartArea.w = newWidth;\n\t\tchartArea.h = newHeight;\n\n\t\t// return true if chart area changed in layout's direction\n\t\treturn layout.horizontal ? newWidth !== chartArea.w : newHeight !== chartArea.h;\n\t}\n}\n\nfunction handleMaxPadding(chartArea) {\n\tvar maxPadding = chartArea.maxPadding;\n\n\tfunction updatePos(pos) {\n\t\tvar change = Math.max(maxPadding[pos] - chartArea[pos], 0);\n\t\tchartArea[pos] += change;\n\t\treturn change;\n\t}\n\tchartArea.y += updatePos('top');\n\tchartArea.x += updatePos('left');\n\tupdatePos('right');\n\tupdatePos('bottom');\n}\n\nfunction getMargins(horizontal, chartArea) {\n\tvar maxPadding = chartArea.maxPadding;\n\n\tfunction marginForPositions(positions) {\n\t\tvar margin = {left: 0, top: 0, right: 0, bottom: 0};\n\t\tpositions.forEach(function(pos) {\n\t\t\tmargin[pos] = Math.max(chartArea[pos], maxPadding[pos]);\n\t\t});\n\t\treturn margin;\n\t}\n\n\treturn horizontal\n\t\t? marginForPositions(['left', 'right'])\n\t\t: marginForPositions(['top', 'bottom']);\n}\n\nfunction fitBoxes(boxes, chartArea, params) {\n\tvar refitBoxes = [];\n\tvar i, ilen, layout, box, refit, changed;\n\n\tfor (i = 0, ilen = boxes.length; i < ilen; ++i) {\n\t\tlayout = boxes[i];\n\t\tbox = layout.box;\n\n\t\tbox.update(\n\t\t\tlayout.width || chartArea.w,\n\t\t\tlayout.height || chartArea.h,\n\t\t\tgetMargins(layout.horizontal, chartArea)\n\t\t);\n\t\tif (updateDims(chartArea, params, layout)) {\n\t\t\tchanged = true;\n\t\t\tif (refitBoxes.length) {\n\t\t\t\t// Dimensions changed and there were non full width boxes before this\n\t\t\t\t// -> we have to refit those\n\t\t\t\trefit = true;\n\t\t\t}\n\t\t}\n\t\tif (!box.fullWidth) { // fullWidth boxes don't need to be re-fitted in any case\n\t\t\trefitBoxes.push(layout);\n\t\t}\n\t}\n\n\treturn refit ? fitBoxes(refitBoxes, chartArea, params) || changed : changed;\n}\n\nfunction placeBoxes(boxes, chartArea, params) {\n\tvar userPadding = params.padding;\n\tvar x = chartArea.x;\n\tvar y = chartArea.y;\n\tvar i, ilen, layout, box;\n\n\tfor (i = 0, ilen = boxes.length; i < ilen; ++i) {\n\t\tlayout = boxes[i];\n\t\tbox = layout.box;\n\t\tif (layout.horizontal) {\n\t\t\tbox.left = box.fullWidth ? userPadding.left : chartArea.left;\n\t\t\tbox.right = box.fullWidth ? params.outerWidth - userPadding.right : chartArea.left + chartArea.w;\n\t\t\tbox.top = y;\n\t\t\tbox.bottom = y + box.height;\n\t\t\tbox.width = box.right - box.left;\n\t\t\ty = box.bottom;\n\t\t} else {\n\t\t\tbox.left = x;\n\t\t\tbox.right = x + box.width;\n\t\t\tbox.top = chartArea.top;\n\t\t\tbox.bottom = chartArea.top + chartArea.h;\n\t\t\tbox.height = box.bottom - box.top;\n\t\t\tx = box.right;\n\t\t}\n\t}\n\n\tchartArea.x = x;\n\tchartArea.y = y;\n}\n\ncore_defaults._set('global', {\n\tlayout: {\n\t\tpadding: {\n\t\t\ttop: 0,\n\t\t\tright: 0,\n\t\t\tbottom: 0,\n\t\t\tleft: 0\n\t\t}\n\t}\n});\n\n/**\n * @interface ILayoutItem\n * @prop {string} position - The position of the item in the chart layout. Possible values are\n * 'left', 'top', 'right', 'bottom', and 'chartArea'\n * @prop {number} weight - The weight used to sort the item. Higher weights are further away from the chart area\n * @prop {boolean} fullWidth - if true, and the item is horizontal, then push vertical boxes down\n * @prop {function} isHorizontal - returns true if the layout item is horizontal (ie. top or bottom)\n * @prop {function} update - Takes two parameters: width and height. Returns size of item\n * @prop {function} getPadding -  Returns an object with padding on the edges\n * @prop {number} width - Width of item. Must be valid after update()\n * @prop {number} height - Height of item. Must be valid after update()\n * @prop {number} left - Left edge of the item. Set by layout system and cannot be used in update\n * @prop {number} top - Top edge of the item. Set by layout system and cannot be used in update\n * @prop {number} right - Right edge of the item. Set by layout system and cannot be used in update\n * @prop {number} bottom - Bottom edge of the item. Set by layout system and cannot be used in update\n */\n\n// The layout service is very self explanatory.  It's responsible for the layout within a chart.\n// Scales, Legends and Plugins all rely on the layout service and can easily register to be placed anywhere they need\n// It is this service's responsibility of carrying out that layout.\nvar core_layouts = {\n\tdefaults: {},\n\n\t/**\n\t * Register a box to a chart.\n\t * A box is simply a reference to an object that requires layout. eg. Scales, Legend, Title.\n\t * @param {Chart} chart - the chart to use\n\t * @param {ILayoutItem} item - the item to add to be layed out\n\t */\n\taddBox: function(chart, item) {\n\t\tif (!chart.boxes) {\n\t\t\tchart.boxes = [];\n\t\t}\n\n\t\t// initialize item with default values\n\t\titem.fullWidth = item.fullWidth || false;\n\t\titem.position = item.position || 'top';\n\t\titem.weight = item.weight || 0;\n\t\titem._layers = item._layers || function() {\n\t\t\treturn [{\n\t\t\t\tz: 0,\n\t\t\t\tdraw: function() {\n\t\t\t\t\titem.draw.apply(item, arguments);\n\t\t\t\t}\n\t\t\t}];\n\t\t};\n\n\t\tchart.boxes.push(item);\n\t},\n\n\t/**\n\t * Remove a layoutItem from a chart\n\t * @param {Chart} chart - the chart to remove the box from\n\t * @param {ILayoutItem} layoutItem - the item to remove from the layout\n\t */\n\tremoveBox: function(chart, layoutItem) {\n\t\tvar index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;\n\t\tif (index !== -1) {\n\t\t\tchart.boxes.splice(index, 1);\n\t\t}\n\t},\n\n\t/**\n\t * Sets (or updates) options on the given `item`.\n\t * @param {Chart} chart - the chart in which the item lives (or will be added to)\n\t * @param {ILayoutItem} item - the item to configure with the given options\n\t * @param {object} options - the new item options.\n\t */\n\tconfigure: function(chart, item, options) {\n\t\tvar props = ['fullWidth', 'position', 'weight'];\n\t\tvar ilen = props.length;\n\t\tvar i = 0;\n\t\tvar prop;\n\n\t\tfor (; i < ilen; ++i) {\n\t\t\tprop = props[i];\n\t\t\tif (options.hasOwnProperty(prop)) {\n\t\t\t\titem[prop] = options[prop];\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Fits boxes of the given chart into the given size by having each box measure itself\n\t * then running a fitting algorithm\n\t * @param {Chart} chart - the chart\n\t * @param {number} width - the width to fit into\n\t * @param {number} height - the height to fit into\n\t */\n\tupdate: function(chart, width, height) {\n\t\tif (!chart) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar layoutOptions = chart.options.layout || {};\n\t\tvar padding = helpers$1.options.toPadding(layoutOptions.padding);\n\n\t\tvar availableWidth = width - padding.width;\n\t\tvar availableHeight = height - padding.height;\n\t\tvar boxes = buildLayoutBoxes(chart.boxes);\n\t\tvar verticalBoxes = boxes.vertical;\n\t\tvar horizontalBoxes = boxes.horizontal;\n\n\t\t// Essentially we now have any number of boxes on each of the 4 sides.\n\t\t// Our canvas looks like the following.\n\t\t// The areas L1 and L2 are the left axes. R1 is the right axis, T1 is the top axis and\n\t\t// B1 is the bottom axis\n\t\t// There are also 4 quadrant-like locations (left to right instead of clockwise) reserved for chart overlays\n\t\t// These locations are single-box locations only, when trying to register a chartArea location that is already taken,\n\t\t// an error will be thrown.\n\t\t//\n\t\t// |----------------------------------------------------|\n\t\t// |                  T1 (Full Width)                   |\n\t\t// |----------------------------------------------------|\n\t\t// |    |    |                 T2                  |    |\n\t\t// |    |----|-------------------------------------|----|\n\t\t// |    |    | C1 |                           | C2 |    |\n\t\t// |    |    |----|                           |----|    |\n\t\t// |    |    |                                     |    |\n\t\t// | L1 | L2 |           ChartArea (C0)            | R1 |\n\t\t// |    |    |                                     |    |\n\t\t// |    |    |----|                           |----|    |\n\t\t// |    |    | C3 |                           | C4 |    |\n\t\t// |    |----|-------------------------------------|----|\n\t\t// |    |    |                 B1                  |    |\n\t\t// |----------------------------------------------------|\n\t\t// |                  B2 (Full Width)                   |\n\t\t// |----------------------------------------------------|\n\t\t//\n\n\t\tvar params = Object.freeze({\n\t\t\touterWidth: width,\n\t\t\touterHeight: height,\n\t\t\tpadding: padding,\n\t\t\tavailableWidth: availableWidth,\n\t\t\tvBoxMaxWidth: availableWidth / 2 / verticalBoxes.length,\n\t\t\thBoxMaxHeight: availableHeight / 2\n\t\t});\n\t\tvar chartArea = extend({\n\t\t\tmaxPadding: extend({}, padding),\n\t\t\tw: availableWidth,\n\t\t\th: availableHeight,\n\t\t\tx: padding.left,\n\t\t\ty: padding.top\n\t\t}, padding);\n\n\t\tsetLayoutDims(verticalBoxes.concat(horizontalBoxes), params);\n\n\t\t// First fit vertical boxes\n\t\tfitBoxes(verticalBoxes, chartArea, params);\n\n\t\t// Then fit horizontal boxes\n\t\tif (fitBoxes(horizontalBoxes, chartArea, params)) {\n\t\t\t// if the area changed, re-fit vertical boxes\n\t\t\tfitBoxes(verticalBoxes, chartArea, params);\n\t\t}\n\n\t\thandleMaxPadding(chartArea);\n\n\t\t// Finally place the boxes to correct coordinates\n\t\tplaceBoxes(boxes.leftAndTop, chartArea, params);\n\n\t\t// Move to opposite side of chart\n\t\tchartArea.x += chartArea.w;\n\t\tchartArea.y += chartArea.h;\n\n\t\tplaceBoxes(boxes.rightAndBottom, chartArea, params);\n\n\t\tchart.chartArea = {\n\t\t\tleft: chartArea.left,\n\t\t\ttop: chartArea.top,\n\t\t\tright: chartArea.left + chartArea.w,\n\t\t\tbottom: chartArea.top + chartArea.h\n\t\t};\n\n\t\t// Finally update boxes in chartArea (radial scale for example)\n\t\thelpers$1.each(boxes.chartArea, function(layout) {\n\t\t\tvar box = layout.box;\n\t\t\textend(box, chart.chartArea);\n\t\t\tbox.update(chartArea.w, chartArea.h);\n\t\t});\n\t}\n};\n\n/**\n * Platform fallback implementation (minimal).\n * @see https://github.com/chartjs/Chart.js/pull/4591#issuecomment-319575939\n */\n\nvar platform_basic = {\n\tacquireContext: function(item) {\n\t\tif (item && item.canvas) {\n\t\t\t// Support for any object associated to a canvas (including a context2d)\n\t\t\titem = item.canvas;\n\t\t}\n\n\t\treturn item && item.getContext('2d') || null;\n\t}\n};\n\nvar platform_dom = \"/*\\n * DOM element rendering detection\\n * https://davidwalsh.name/detect-node-insertion\\n */\\n@keyframes chartjs-render-animation {\\n\\tfrom { opacity: 0.99; }\\n\\tto { opacity: 1; }\\n}\\n\\n.chartjs-render-monitor {\\n\\tanimation: chartjs-render-animation 0.001s;\\n}\\n\\n/*\\n * DOM element resizing detection\\n * https://github.com/marcj/css-element-queries\\n */\\n.chartjs-size-monitor,\\n.chartjs-size-monitor-expand,\\n.chartjs-size-monitor-shrink {\\n\\tposition: absolute;\\n\\tdirection: ltr;\\n\\tleft: 0;\\n\\ttop: 0;\\n\\tright: 0;\\n\\tbottom: 0;\\n\\toverflow: hidden;\\n\\tpointer-events: none;\\n\\tvisibility: hidden;\\n\\tz-index: -1;\\n}\\n\\n.chartjs-size-monitor-expand > div {\\n\\tposition: absolute;\\n\\twidth: 1000000px;\\n\\theight: 1000000px;\\n\\tleft: 0;\\n\\ttop: 0;\\n}\\n\\n.chartjs-size-monitor-shrink > div {\\n\\tposition: absolute;\\n\\twidth: 200%;\\n\\theight: 200%;\\n\\tleft: 0;\\n\\ttop: 0;\\n}\\n\";\n\nvar platform_dom$1 = /*#__PURE__*/Object.freeze({\n__proto__: null,\n'default': platform_dom\n});\n\nvar stylesheet = getCjsExportFromNamespace(platform_dom$1);\n\nvar EXPANDO_KEY = '$chartjs';\nvar CSS_PREFIX = 'chartjs-';\nvar CSS_SIZE_MONITOR = CSS_PREFIX + 'size-monitor';\nvar CSS_RENDER_MONITOR = CSS_PREFIX + 'render-monitor';\nvar CSS_RENDER_ANIMATION = CSS_PREFIX + 'render-animation';\nvar ANIMATION_START_EVENTS = ['animationstart', 'webkitAnimationStart'];\n\n/**\n * DOM event types -> Chart.js event types.\n * Note: only events with different types are mapped.\n * @see https://developer.mozilla.org/en-US/docs/Web/Events\n */\nvar EVENT_TYPES = {\n\ttouchstart: 'mousedown',\n\ttouchmove: 'mousemove',\n\ttouchend: 'mouseup',\n\tpointerenter: 'mouseenter',\n\tpointerdown: 'mousedown',\n\tpointermove: 'mousemove',\n\tpointerup: 'mouseup',\n\tpointerleave: 'mouseout',\n\tpointerout: 'mouseout'\n};\n\n/**\n * The \"used\" size is the final value of a dimension property after all calculations have\n * been performed. This method uses the computed style of `element` but returns undefined\n * if the computed style is not expressed in pixels. That can happen in some cases where\n * `element` has a size relative to its parent and this last one is not yet displayed,\n * for example because of `display: none` on a parent node.\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/used_value\n * @returns {number} Size in pixels or undefined if unknown.\n */\nfunction readUsedSize(element, property) {\n\tvar value = helpers$1.getStyle(element, property);\n\tvar matches = value && value.match(/^(\\d+)(\\.\\d+)?px$/);\n\treturn matches ? Number(matches[1]) : undefined;\n}\n\n/**\n * Initializes the canvas style and render size without modifying the canvas display size,\n * since responsiveness is handled by the controller.resize() method. The config is used\n * to determine the aspect ratio to apply in case no explicit height has been specified.\n */\nfunction initCanvas(canvas, config) {\n\tvar style = canvas.style;\n\n\t// NOTE(SB) canvas.getAttribute('width') !== canvas.width: in the first case it\n\t// returns null or '' if no explicit value has been set to the canvas attribute.\n\tvar renderHeight = canvas.getAttribute('height');\n\tvar renderWidth = canvas.getAttribute('width');\n\n\t// Chart.js modifies some canvas values that we want to restore on destroy\n\tcanvas[EXPANDO_KEY] = {\n\t\tinitial: {\n\t\t\theight: renderHeight,\n\t\t\twidth: renderWidth,\n\t\t\tstyle: {\n\t\t\t\tdisplay: style.display,\n\t\t\t\theight: style.height,\n\t\t\t\twidth: style.width\n\t\t\t}\n\t\t}\n\t};\n\n\t// Force canvas to display as block to avoid extra space caused by inline\n\t// elements, which would interfere with the responsive resize process.\n\t// https://github.com/chartjs/Chart.js/issues/2538\n\tstyle.display = style.display || 'block';\n\n\tif (renderWidth === null || renderWidth === '') {\n\t\tvar displayWidth = readUsedSize(canvas, 'width');\n\t\tif (displayWidth !== undefined) {\n\t\t\tcanvas.width = displayWidth;\n\t\t}\n\t}\n\n\tif (renderHeight === null || renderHeight === '') {\n\t\tif (canvas.style.height === '') {\n\t\t\t// If no explicit render height and style height, let's apply the aspect ratio,\n\t\t\t// which one can be specified by the user but also by charts as default option\n\t\t\t// (i.e. options.aspectRatio). If not specified, use canvas aspect ratio of 2.\n\t\t\tcanvas.height = canvas.width / (config.options.aspectRatio || 2);\n\t\t} else {\n\t\t\tvar displayHeight = readUsedSize(canvas, 'height');\n\t\t\tif (displayWidth !== undefined) {\n\t\t\t\tcanvas.height = displayHeight;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn canvas;\n}\n\n/**\n * Detects support for options object argument in addEventListener.\n * https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Safely_detecting_option_support\n * @private\n */\nvar supportsEventListenerOptions = (function() {\n\tvar supports = false;\n\ttry {\n\t\tvar options = Object.defineProperty({}, 'passive', {\n\t\t\t// eslint-disable-next-line getter-return\n\t\t\tget: function() {\n\t\t\t\tsupports = true;\n\t\t\t}\n\t\t});\n\t\twindow.addEventListener('e', null, options);\n\t} catch (e) {\n\t\t// continue regardless of error\n\t}\n\treturn supports;\n}());\n\n// Default passive to true as expected by Chrome for 'touchstart' and 'touchend' events.\n// https://github.com/chartjs/Chart.js/issues/4287\nvar eventListenerOptions = supportsEventListenerOptions ? {passive: true} : false;\n\nfunction addListener(node, type, listener) {\n\tnode.addEventListener(type, listener, eventListenerOptions);\n}\n\nfunction removeListener(node, type, listener) {\n\tnode.removeEventListener(type, listener, eventListenerOptions);\n}\n\nfunction createEvent(type, chart, x, y, nativeEvent) {\n\treturn {\n\t\ttype: type,\n\t\tchart: chart,\n\t\tnative: nativeEvent || null,\n\t\tx: x !== undefined ? x : null,\n\t\ty: y !== undefined ? y : null,\n\t};\n}\n\nfunction fromNativeEvent(event, chart) {\n\tvar type = EVENT_TYPES[event.type] || event.type;\n\tvar pos = helpers$1.getRelativePosition(event, chart);\n\treturn createEvent(type, chart, pos.x, pos.y, event);\n}\n\nfunction throttled(fn, thisArg) {\n\tvar ticking = false;\n\tvar args = [];\n\n\treturn function() {\n\t\targs = Array.prototype.slice.call(arguments);\n\t\tthisArg = thisArg || this;\n\n\t\tif (!ticking) {\n\t\t\tticking = true;\n\t\t\thelpers$1.requestAnimFrame.call(window, function() {\n\t\t\t\tticking = false;\n\t\t\t\tfn.apply(thisArg, args);\n\t\t\t});\n\t\t}\n\t};\n}\n\nfunction createDiv(cls) {\n\tvar el = document.createElement('div');\n\tel.className = cls || '';\n\treturn el;\n}\n\n// Implementation based on https://github.com/marcj/css-element-queries\nfunction createResizer(handler) {\n\tvar maxSize = 1000000;\n\n\t// NOTE(SB) Don't use innerHTML because it could be considered unsafe.\n\t// https://github.com/chartjs/Chart.js/issues/5902\n\tvar resizer = createDiv(CSS_SIZE_MONITOR);\n\tvar expand = createDiv(CSS_SIZE_MONITOR + '-expand');\n\tvar shrink = createDiv(CSS_SIZE_MONITOR + '-shrink');\n\n\texpand.appendChild(createDiv());\n\tshrink.appendChild(createDiv());\n\n\tresizer.appendChild(expand);\n\tresizer.appendChild(shrink);\n\tresizer._reset = function() {\n\t\texpand.scrollLeft = maxSize;\n\t\texpand.scrollTop = maxSize;\n\t\tshrink.scrollLeft = maxSize;\n\t\tshrink.scrollTop = maxSize;\n\t};\n\n\tvar onScroll = function() {\n\t\tresizer._reset();\n\t\thandler();\n\t};\n\n\taddListener(expand, 'scroll', onScroll.bind(expand, 'expand'));\n\taddListener(shrink, 'scroll', onScroll.bind(shrink, 'shrink'));\n\n\treturn resizer;\n}\n\n// https://davidwalsh.name/detect-node-insertion\nfunction watchForRender(node, handler) {\n\tvar expando = node[EXPANDO_KEY] || (node[EXPANDO_KEY] = {});\n\tvar proxy = expando.renderProxy = function(e) {\n\t\tif (e.animationName === CSS_RENDER_ANIMATION) {\n\t\t\thandler();\n\t\t}\n\t};\n\n\thelpers$1.each(ANIMATION_START_EVENTS, function(type) {\n\t\taddListener(node, type, proxy);\n\t});\n\n\t// #4737: Chrome might skip the CSS animation when the CSS_RENDER_MONITOR class\n\t// is removed then added back immediately (same animation frame?). Accessing the\n\t// `offsetParent` property will force a reflow and re-evaluate the CSS animation.\n\t// https://gist.github.com/paulirish/5d52fb081b3570c81e3a#box-metrics\n\t// https://github.com/chartjs/Chart.js/issues/4737\n\texpando.reflow = !!node.offsetParent;\n\n\tnode.classList.add(CSS_RENDER_MONITOR);\n}\n\nfunction unwatchForRender(node) {\n\tvar expando = node[EXPANDO_KEY] || {};\n\tvar proxy = expando.renderProxy;\n\n\tif (proxy) {\n\t\thelpers$1.each(ANIMATION_START_EVENTS, function(type) {\n\t\t\tremoveListener(node, type, proxy);\n\t\t});\n\n\t\tdelete expando.renderProxy;\n\t}\n\n\tnode.classList.remove(CSS_RENDER_MONITOR);\n}\n\nfunction addResizeListener(node, listener, chart) {\n\tvar expando = node[EXPANDO_KEY] || (node[EXPANDO_KEY] = {});\n\n\t// Let's keep track of this added resizer and thus avoid DOM query when removing it.\n\tvar resizer = expando.resizer = createResizer(throttled(function() {\n\t\tif (expando.resizer) {\n\t\t\tvar container = chart.options.maintainAspectRatio && node.parentNode;\n\t\t\tvar w = container ? container.clientWidth : 0;\n\t\t\tlistener(createEvent('resize', chart));\n\t\t\tif (container && container.clientWidth < w && chart.canvas) {\n\t\t\t\t// If the container size shrank during chart resize, let's assume\n\t\t\t\t// scrollbar appeared. So we resize again with the scrollbar visible -\n\t\t\t\t// effectively making chart smaller and the scrollbar hidden again.\n\t\t\t\t// Because we are inside `throttled`, and currently `ticking`, scroll\n\t\t\t\t// events are ignored during this whole 2 resize process.\n\t\t\t\t// If we assumed wrong and something else happened, we are resizing\n\t\t\t\t// twice in a frame (potential performance issue)\n\t\t\t\tlistener(createEvent('resize', chart));\n\t\t\t}\n\t\t}\n\t}));\n\n\t// The resizer needs to be attached to the node parent, so we first need to be\n\t// sure that `node` is attached to the DOM before injecting the resizer element.\n\twatchForRender(node, function() {\n\t\tif (expando.resizer) {\n\t\t\tvar container = node.parentNode;\n\t\t\tif (container && container !== resizer.parentNode) {\n\t\t\t\tcontainer.insertBefore(resizer, container.firstChild);\n\t\t\t}\n\n\t\t\t// The container size might have changed, let's reset the resizer state.\n\t\t\tresizer._reset();\n\t\t}\n\t});\n}\n\nfunction removeResizeListener(node) {\n\tvar expando = node[EXPANDO_KEY] || {};\n\tvar resizer = expando.resizer;\n\n\tdelete expando.resizer;\n\tunwatchForRender(node);\n\n\tif (resizer && resizer.parentNode) {\n\t\tresizer.parentNode.removeChild(resizer);\n\t}\n}\n\n/**\n * Injects CSS styles inline if the styles are not already present.\n * @param {HTMLDocument|ShadowRoot} rootNode - the node to contain the <style>.\n * @param {string} css - the CSS to be injected.\n */\nfunction injectCSS(rootNode, css) {\n\t// https://stackoverflow.com/q/3922139\n\tvar expando = rootNode[EXPANDO_KEY] || (rootNode[EXPANDO_KEY] = {});\n\tif (!expando.containsStyles) {\n\t\texpando.containsStyles = true;\n\t\tcss = '/* Chart.js */\\n' + css;\n\t\tvar style = document.createElement('style');\n\t\tstyle.setAttribute('type', 'text/css');\n\t\tstyle.appendChild(document.createTextNode(css));\n\t\trootNode.appendChild(style);\n\t}\n}\n\nvar platform_dom$2 = {\n\t/**\n\t * When `true`, prevents the automatic injection of the stylesheet required to\n\t * correctly detect when the chart is added to the DOM and then resized. This\n\t * switch has been added to allow external stylesheet (`dist/Chart(.min)?.js`)\n\t * to be manually imported to make this library compatible with any CSP.\n\t * See https://github.com/chartjs/Chart.js/issues/5208\n\t */\n\tdisableCSSInjection: false,\n\n\t/**\n\t * This property holds whether this platform is enabled for the current environment.\n\t * Currently used by platform.js to select the proper implementation.\n\t * @private\n\t */\n\t_enabled: typeof window !== 'undefined' && typeof document !== 'undefined',\n\n\t/**\n\t * Initializes resources that depend on platform options.\n\t * @param {HTMLCanvasElement} canvas - The Canvas element.\n\t * @private\n\t */\n\t_ensureLoaded: function(canvas) {\n\t\tif (!this.disableCSSInjection) {\n\t\t\t// If the canvas is in a shadow DOM, then the styles must also be inserted\n\t\t\t// into the same shadow DOM.\n\t\t\t// https://github.com/chartjs/Chart.js/issues/5763\n\t\t\tvar root = canvas.getRootNode ? canvas.getRootNode() : document;\n\t\t\tvar targetNode = root.host ? root : document.head;\n\t\t\tinjectCSS(targetNode, stylesheet);\n\t\t}\n\t},\n\n\tacquireContext: function(item, config) {\n\t\tif (typeof item === 'string') {\n\t\t\titem = document.getElementById(item);\n\t\t} else if (item.length) {\n\t\t\t// Support for array based queries (such as jQuery)\n\t\t\titem = item[0];\n\t\t}\n\n\t\tif (item && item.canvas) {\n\t\t\t// Support for any object associated to a canvas (including a context2d)\n\t\t\titem = item.canvas;\n\t\t}\n\n\t\t// To prevent canvas fingerprinting, some add-ons undefine the getContext\n\t\t// method, for example: https://github.com/kkapsner/CanvasBlocker\n\t\t// https://github.com/chartjs/Chart.js/issues/2807\n\t\tvar context = item && item.getContext && item.getContext('2d');\n\n\t\t// `instanceof HTMLCanvasElement/CanvasRenderingContext2D` fails when the item is\n\t\t// inside an iframe or when running in a protected environment. We could guess the\n\t\t// types from their toString() value but let's keep things flexible and assume it's\n\t\t// a sufficient condition if the item has a context2D which has item as `canvas`.\n\t\t// https://github.com/chartjs/Chart.js/issues/3887\n\t\t// https://github.com/chartjs/Chart.js/issues/4102\n\t\t// https://github.com/chartjs/Chart.js/issues/4152\n\t\tif (context && context.canvas === item) {\n\t\t\t// Load platform resources on first chart creation, to make it possible to\n\t\t\t// import the library before setting platform options.\n\t\t\tthis._ensureLoaded(item);\n\t\t\tinitCanvas(item, config);\n\t\t\treturn context;\n\t\t}\n\n\t\treturn null;\n\t},\n\n\treleaseContext: function(context) {\n\t\tvar canvas = context.canvas;\n\t\tif (!canvas[EXPANDO_KEY]) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar initial = canvas[EXPANDO_KEY].initial;\n\t\t['height', 'width'].forEach(function(prop) {\n\t\t\tvar value = initial[prop];\n\t\t\tif (helpers$1.isNullOrUndef(value)) {\n\t\t\t\tcanvas.removeAttribute(prop);\n\t\t\t} else {\n\t\t\t\tcanvas.setAttribute(prop, value);\n\t\t\t}\n\t\t});\n\n\t\thelpers$1.each(initial.style || {}, function(value, key) {\n\t\t\tcanvas.style[key] = value;\n\t\t});\n\n\t\t// The canvas render size might have been changed (and thus the state stack discarded),\n\t\t// we can't use save() and restore() to restore the initial state. So make sure that at\n\t\t// least the canvas context is reset to the default state by setting the canvas width.\n\t\t// https://www.w3.org/TR/2011/WD-html5-20110525/the-canvas-element.html\n\t\t// eslint-disable-next-line no-self-assign\n\t\tcanvas.width = canvas.width;\n\n\t\tdelete canvas[EXPANDO_KEY];\n\t},\n\n\taddEventListener: function(chart, type, listener) {\n\t\tvar canvas = chart.canvas;\n\t\tif (type === 'resize') {\n\t\t\t// Note: the resize event is not supported on all browsers.\n\t\t\taddResizeListener(canvas, listener, chart);\n\t\t\treturn;\n\t\t}\n\n\t\tvar expando = listener[EXPANDO_KEY] || (listener[EXPANDO_KEY] = {});\n\t\tvar proxies = expando.proxies || (expando.proxies = {});\n\t\tvar proxy = proxies[chart.id + '_' + type] = function(event) {\n\t\t\tlistener(fromNativeEvent(event, chart));\n\t\t};\n\n\t\taddListener(canvas, type, proxy);\n\t},\n\n\tremoveEventListener: function(chart, type, listener) {\n\t\tvar canvas = chart.canvas;\n\t\tif (type === 'resize') {\n\t\t\t// Note: the resize event is not supported on all browsers.\n\t\t\tremoveResizeListener(canvas);\n\t\t\treturn;\n\t\t}\n\n\t\tvar expando = listener[EXPANDO_KEY] || {};\n\t\tvar proxies = expando.proxies || {};\n\t\tvar proxy = proxies[chart.id + '_' + type];\n\t\tif (!proxy) {\n\t\t\treturn;\n\t\t}\n\n\t\tremoveListener(canvas, type, proxy);\n\t}\n};\n\n// DEPRECATIONS\n\n/**\n * Provided for backward compatibility, use EventTarget.addEventListener instead.\n * EventTarget.addEventListener compatibility: Chrome, Opera 7, Safari, FF1.5+, IE9+\n * @see https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener\n * @function Chart.helpers.addEvent\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers$1.addEvent = addListener;\n\n/**\n * Provided for backward compatibility, use EventTarget.removeEventListener instead.\n * EventTarget.removeEventListener compatibility: Chrome, Opera 7, Safari, FF1.5+, IE9+\n * @see https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/removeEventListener\n * @function Chart.helpers.removeEvent\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers$1.removeEvent = removeListener;\n\n// @TODO Make possible to select another platform at build time.\nvar implementation = platform_dom$2._enabled ? platform_dom$2 : platform_basic;\n\n/**\n * @namespace Chart.platform\n * @see https://chartjs.gitbooks.io/proposals/content/Platform.html\n * @since 2.4.0\n */\nvar platform = helpers$1.extend({\n\t/**\n\t * @since 2.7.0\n\t */\n\tinitialize: function() {},\n\n\t/**\n\t * Called at chart construction time, returns a context2d instance implementing\n\t * the [W3C Canvas 2D Context API standard]{@link https://www.w3.org/TR/2dcontext/}.\n\t * @param {*} item - The native item from which to acquire context (platform specific)\n\t * @param {object} options - The chart options\n\t * @returns {CanvasRenderingContext2D} context2d instance\n\t */\n\tacquireContext: function() {},\n\n\t/**\n\t * Called at chart destruction time, releases any resources associated to the context\n\t * previously returned by the acquireContext() method.\n\t * @param {CanvasRenderingContext2D} context - The context2d instance\n\t * @returns {boolean} true if the method succeeded, else false\n\t */\n\treleaseContext: function() {},\n\n\t/**\n\t * Registers the specified listener on the given chart.\n\t * @param {Chart} chart - Chart from which to listen for event\n\t * @param {string} type - The ({@link IEvent}) type to listen for\n\t * @param {function} listener - Receives a notification (an object that implements\n\t * the {@link IEvent} interface) when an event of the specified type occurs.\n\t */\n\taddEventListener: function() {},\n\n\t/**\n\t * Removes the specified listener previously registered with addEventListener.\n\t * @param {Chart} chart - Chart from which to remove the listener\n\t * @param {string} type - The ({@link IEvent}) type to remove\n\t * @param {function} listener - The listener function to remove from the event target.\n\t */\n\tremoveEventListener: function() {}\n\n}, implementation);\n\ncore_defaults._set('global', {\n\tplugins: {}\n});\n\n/**\n * The plugin service singleton\n * @namespace Chart.plugins\n * @since 2.1.0\n */\nvar core_plugins = {\n\t/**\n\t * Globally registered plugins.\n\t * @private\n\t */\n\t_plugins: [],\n\n\t/**\n\t * This identifier is used to invalidate the descriptors cache attached to each chart\n\t * when a global plugin is registered or unregistered. In this case, the cache ID is\n\t * incremented and descriptors are regenerated during following API calls.\n\t * @private\n\t */\n\t_cacheId: 0,\n\n\t/**\n\t * Registers the given plugin(s) if not already registered.\n\t * @param {IPlugin[]|IPlugin} plugins plugin instance(s).\n\t */\n\tregister: function(plugins) {\n\t\tvar p = this._plugins;\n\t\t([]).concat(plugins).forEach(function(plugin) {\n\t\t\tif (p.indexOf(plugin) === -1) {\n\t\t\t\tp.push(plugin);\n\t\t\t}\n\t\t});\n\n\t\tthis._cacheId++;\n\t},\n\n\t/**\n\t * Unregisters the given plugin(s) only if registered.\n\t * @param {IPlugin[]|IPlugin} plugins plugin instance(s).\n\t */\n\tunregister: function(plugins) {\n\t\tvar p = this._plugins;\n\t\t([]).concat(plugins).forEach(function(plugin) {\n\t\t\tvar idx = p.indexOf(plugin);\n\t\t\tif (idx !== -1) {\n\t\t\t\tp.splice(idx, 1);\n\t\t\t}\n\t\t});\n\n\t\tthis._cacheId++;\n\t},\n\n\t/**\n\t * Remove all registered plugins.\n\t * @since 2.1.5\n\t */\n\tclear: function() {\n\t\tthis._plugins = [];\n\t\tthis._cacheId++;\n\t},\n\n\t/**\n\t * Returns the number of registered plugins?\n\t * @returns {number}\n\t * @since 2.1.5\n\t */\n\tcount: function() {\n\t\treturn this._plugins.length;\n\t},\n\n\t/**\n\t * Returns all registered plugin instances.\n\t * @returns {IPlugin[]} array of plugin objects.\n\t * @since 2.1.5\n\t */\n\tgetAll: function() {\n\t\treturn this._plugins;\n\t},\n\n\t/**\n\t * Calls enabled plugins for `chart` on the specified hook and with the given args.\n\t * This method immediately returns as soon as a plugin explicitly returns false. The\n\t * returned value can be used, for instance, to interrupt the current action.\n\t * @param {Chart} chart - The chart instance for which plugins should be called.\n\t * @param {string} hook - The name of the plugin method to call (e.g. 'beforeUpdate').\n\t * @param {Array} [args] - Extra arguments to apply to the hook call.\n\t * @returns {boolean} false if any of the plugins return false, else returns true.\n\t */\n\tnotify: function(chart, hook, args) {\n\t\tvar descriptors = this.descriptors(chart);\n\t\tvar ilen = descriptors.length;\n\t\tvar i, descriptor, plugin, params, method;\n\n\t\tfor (i = 0; i < ilen; ++i) {\n\t\t\tdescriptor = descriptors[i];\n\t\t\tplugin = descriptor.plugin;\n\t\t\tmethod = plugin[hook];\n\t\t\tif (typeof method === 'function') {\n\t\t\t\tparams = [chart].concat(args || []);\n\t\t\t\tparams.push(descriptor.options);\n\t\t\t\tif (method.apply(plugin, params) === false) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t},\n\n\t/**\n\t * Returns descriptors of enabled plugins for the given chart.\n\t * @returns {object[]} [{ plugin, options }]\n\t * @private\n\t */\n\tdescriptors: function(chart) {\n\t\tvar cache = chart.$plugins || (chart.$plugins = {});\n\t\tif (cache.id === this._cacheId) {\n\t\t\treturn cache.descriptors;\n\t\t}\n\n\t\tvar plugins = [];\n\t\tvar descriptors = [];\n\t\tvar config = (chart && chart.config) || {};\n\t\tvar options = (config.options && config.options.plugins) || {};\n\n\t\tthis._plugins.concat(config.plugins || []).forEach(function(plugin) {\n\t\t\tvar idx = plugins.indexOf(plugin);\n\t\t\tif (idx !== -1) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar id = plugin.id;\n\t\t\tvar opts = options[id];\n\t\t\tif (opts === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (opts === true) {\n\t\t\t\topts = helpers$1.clone(core_defaults.global.plugins[id]);\n\t\t\t}\n\n\t\t\tplugins.push(plugin);\n\t\t\tdescriptors.push({\n\t\t\t\tplugin: plugin,\n\t\t\t\toptions: opts || {}\n\t\t\t});\n\t\t});\n\n\t\tcache.descriptors = descriptors;\n\t\tcache.id = this._cacheId;\n\t\treturn descriptors;\n\t},\n\n\t/**\n\t * Invalidates cache for the given chart: descriptors hold a reference on plugin option,\n\t * but in some cases, this reference can be changed by the user when updating options.\n\t * https://github.com/chartjs/Chart.js/issues/5111#issuecomment-355934167\n\t * @private\n\t */\n\t_invalidate: function(chart) {\n\t\tdelete chart.$plugins;\n\t}\n};\n\nvar core_scaleService = {\n\t// Scale registration object. Extensions can register new scale types (such as log or DB scales) and then\n\t// use the new chart options to grab the correct scale\n\tconstructors: {},\n\t// Use a registration function so that we can move to an ES6 map when we no longer need to support\n\t// old browsers\n\n\t// Scale config defaults\n\tdefaults: {},\n\tregisterScaleType: function(type, scaleConstructor, scaleDefaults) {\n\t\tthis.constructors[type] = scaleConstructor;\n\t\tthis.defaults[type] = helpers$1.clone(scaleDefaults);\n\t},\n\tgetScaleConstructor: function(type) {\n\t\treturn this.constructors.hasOwnProperty(type) ? this.constructors[type] : undefined;\n\t},\n\tgetScaleDefaults: function(type) {\n\t\t// Return the scale defaults merged with the global settings so that we always use the latest ones\n\t\treturn this.defaults.hasOwnProperty(type) ? helpers$1.merge({}, [core_defaults.scale, this.defaults[type]]) : {};\n\t},\n\tupdateScaleDefaults: function(type, additions) {\n\t\tvar me = this;\n\t\tif (me.defaults.hasOwnProperty(type)) {\n\t\t\tme.defaults[type] = helpers$1.extend(me.defaults[type], additions);\n\t\t}\n\t},\n\taddScalesToLayout: function(chart) {\n\t\t// Adds each scale to the chart.boxes array to be sized accordingly\n\t\thelpers$1.each(chart.scales, function(scale) {\n\t\t\t// Set ILayoutItem parameters for backwards compatibility\n\t\t\tscale.fullWidth = scale.options.fullWidth;\n\t\t\tscale.position = scale.options.position;\n\t\t\tscale.weight = scale.options.weight;\n\t\t\tcore_layouts.addBox(chart, scale);\n\t\t});\n\t}\n};\n\nvar valueOrDefault$8 = helpers$1.valueOrDefault;\nvar getRtlHelper = helpers$1.rtl.getRtlAdapter;\n\ncore_defaults._set('global', {\n\ttooltips: {\n\t\tenabled: true,\n\t\tcustom: null,\n\t\tmode: 'nearest',\n\t\tposition: 'average',\n\t\tintersect: true,\n\t\tbackgroundColor: 'rgba(0,0,0,0.8)',\n\t\ttitleFontStyle: 'bold',\n\t\ttitleSpacing: 2,\n\t\ttitleMarginBottom: 6,\n\t\ttitleFontColor: '#fff',\n\t\ttitleAlign: 'left',\n\t\tbodySpacing: 2,\n\t\tbodyFontColor: '#fff',\n\t\tbodyAlign: 'left',\n\t\tfooterFontStyle: 'bold',\n\t\tfooterSpacing: 2,\n\t\tfooterMarginTop: 6,\n\t\tfooterFontColor: '#fff',\n\t\tfooterAlign: 'left',\n\t\tyPadding: 6,\n\t\txPadding: 6,\n\t\tcaretPadding: 2,\n\t\tcaretSize: 5,\n\t\tcornerRadius: 6,\n\t\tmultiKeyBackground: '#fff',\n\t\tdisplayColors: true,\n\t\tborderColor: 'rgba(0,0,0,0)',\n\t\tborderWidth: 0,\n\t\tcallbacks: {\n\t\t\t// Args are: (tooltipItems, data)\n\t\t\tbeforeTitle: helpers$1.noop,\n\t\t\ttitle: function(tooltipItems, data) {\n\t\t\t\tvar title = '';\n\t\t\t\tvar labels = data.labels;\n\t\t\t\tvar labelCount = labels ? labels.length : 0;\n\n\t\t\t\tif (tooltipItems.length > 0) {\n\t\t\t\t\tvar item = tooltipItems[0];\n\t\t\t\t\tif (item.label) {\n\t\t\t\t\t\ttitle = item.label;\n\t\t\t\t\t} else if (item.xLabel) {\n\t\t\t\t\t\ttitle = item.xLabel;\n\t\t\t\t\t} else if (labelCount > 0 && item.index < labelCount) {\n\t\t\t\t\t\ttitle = labels[item.index];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn title;\n\t\t\t},\n\t\t\tafterTitle: helpers$1.noop,\n\n\t\t\t// Args are: (tooltipItems, data)\n\t\t\tbeforeBody: helpers$1.noop,\n\n\t\t\t// Args are: (tooltipItem, data)\n\t\t\tbeforeLabel: helpers$1.noop,\n\t\t\tlabel: function(tooltipItem, data) {\n\t\t\t\tvar label = data.datasets[tooltipItem.datasetIndex].label || '';\n\n\t\t\t\tif (label) {\n\t\t\t\t\tlabel += ': ';\n\t\t\t\t}\n\t\t\t\tif (!helpers$1.isNullOrUndef(tooltipItem.value)) {\n\t\t\t\t\tlabel += tooltipItem.value;\n\t\t\t\t} else {\n\t\t\t\t\tlabel += tooltipItem.yLabel;\n\t\t\t\t}\n\t\t\t\treturn label;\n\t\t\t},\n\t\t\tlabelColor: function(tooltipItem, chart) {\n\t\t\t\tvar meta = chart.getDatasetMeta(tooltipItem.datasetIndex);\n\t\t\t\tvar activeElement = meta.data[tooltipItem.index];\n\t\t\t\tvar view = activeElement._view;\n\t\t\t\treturn {\n\t\t\t\t\tborderColor: view.borderColor,\n\t\t\t\t\tbackgroundColor: view.backgroundColor\n\t\t\t\t};\n\t\t\t},\n\t\t\tlabelTextColor: function() {\n\t\t\t\treturn this._options.bodyFontColor;\n\t\t\t},\n\t\t\tafterLabel: helpers$1.noop,\n\n\t\t\t// Args are: (tooltipItems, data)\n\t\t\tafterBody: helpers$1.noop,\n\n\t\t\t// Args are: (tooltipItems, data)\n\t\t\tbeforeFooter: helpers$1.noop,\n\t\t\tfooter: helpers$1.noop,\n\t\t\tafterFooter: helpers$1.noop\n\t\t}\n\t}\n});\n\nvar positioners = {\n\t/**\n\t * Average mode places the tooltip at the average position of the elements shown\n\t * @function Chart.Tooltip.positioners.average\n\t * @param elements {ChartElement[]} the elements being displayed in the tooltip\n\t * @returns {object} tooltip position\n\t */\n\taverage: function(elements) {\n\t\tif (!elements.length) {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar i, len;\n\t\tvar x = 0;\n\t\tvar y = 0;\n\t\tvar count = 0;\n\n\t\tfor (i = 0, len = elements.length; i < len; ++i) {\n\t\t\tvar el = elements[i];\n\t\t\tif (el && el.hasValue()) {\n\t\t\t\tvar pos = el.tooltipPosition();\n\t\t\t\tx += pos.x;\n\t\t\t\ty += pos.y;\n\t\t\t\t++count;\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tx: x / count,\n\t\t\ty: y / count\n\t\t};\n\t},\n\n\t/**\n\t * Gets the tooltip position nearest of the item nearest to the event position\n\t * @function Chart.Tooltip.positioners.nearest\n\t * @param elements {Chart.Element[]} the tooltip elements\n\t * @param eventPosition {object} the position of the event in canvas coordinates\n\t * @returns {object} the tooltip position\n\t */\n\tnearest: function(elements, eventPosition) {\n\t\tvar x = eventPosition.x;\n\t\tvar y = eventPosition.y;\n\t\tvar minDistance = Number.POSITIVE_INFINITY;\n\t\tvar i, len, nearestElement;\n\n\t\tfor (i = 0, len = elements.length; i < len; ++i) {\n\t\t\tvar el = elements[i];\n\t\t\tif (el && el.hasValue()) {\n\t\t\t\tvar center = el.getCenterPoint();\n\t\t\t\tvar d = helpers$1.distanceBetweenPoints(eventPosition, center);\n\n\t\t\t\tif (d < minDistance) {\n\t\t\t\t\tminDistance = d;\n\t\t\t\t\tnearestElement = el;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (nearestElement) {\n\t\t\tvar tp = nearestElement.tooltipPosition();\n\t\t\tx = tp.x;\n\t\t\ty = tp.y;\n\t\t}\n\n\t\treturn {\n\t\t\tx: x,\n\t\t\ty: y\n\t\t};\n\t}\n};\n\n// Helper to push or concat based on if the 2nd parameter is an array or not\nfunction pushOrConcat(base, toPush) {\n\tif (toPush) {\n\t\tif (helpers$1.isArray(toPush)) {\n\t\t\t// base = base.concat(toPush);\n\t\t\tArray.prototype.push.apply(base, toPush);\n\t\t} else {\n\t\t\tbase.push(toPush);\n\t\t}\n\t}\n\n\treturn base;\n}\n\n/**\n * Returns array of strings split by newline\n * @param {string} value - The value to split by newline.\n * @returns {string[]} value if newline present - Returned from String split() method\n * @function\n */\nfunction splitNewlines(str) {\n\tif ((typeof str === 'string' || str instanceof String) && str.indexOf('\\n') > -1) {\n\t\treturn str.split('\\n');\n\t}\n\treturn str;\n}\n\n\n/**\n * Private helper to create a tooltip item model\n * @param element - the chart element (point, arc, bar) to create the tooltip item for\n * @return new tooltip item\n */\nfunction createTooltipItem(element) {\n\tvar xScale = element._xScale;\n\tvar yScale = element._yScale || element._scale; // handle radar || polarArea charts\n\tvar index = element._index;\n\tvar datasetIndex = element._datasetIndex;\n\tvar controller = element._chart.getDatasetMeta(datasetIndex).controller;\n\tvar indexScale = controller._getIndexScale();\n\tvar valueScale = controller._getValueScale();\n\n\treturn {\n\t\txLabel: xScale ? xScale.getLabelForIndex(index, datasetIndex) : '',\n\t\tyLabel: yScale ? yScale.getLabelForIndex(index, datasetIndex) : '',\n\t\tlabel: indexScale ? '' + indexScale.getLabelForIndex(index, datasetIndex) : '',\n\t\tvalue: valueScale ? '' + valueScale.getLabelForIndex(index, datasetIndex) : '',\n\t\tindex: index,\n\t\tdatasetIndex: datasetIndex,\n\t\tx: element._model.x,\n\t\ty: element._model.y\n\t};\n}\n\n/**\n * Helper to get the reset model for the tooltip\n * @param tooltipOpts {object} the tooltip options\n */\nfunction getBaseModel(tooltipOpts) {\n\tvar globalDefaults = core_defaults.global;\n\n\treturn {\n\t\t// Positioning\n\t\txPadding: tooltipOpts.xPadding,\n\t\tyPadding: tooltipOpts.yPadding,\n\t\txAlign: tooltipOpts.xAlign,\n\t\tyAlign: tooltipOpts.yAlign,\n\n\t\t// Drawing direction and text direction\n\t\trtl: tooltipOpts.rtl,\n\t\ttextDirection: tooltipOpts.textDirection,\n\n\t\t// Body\n\t\tbodyFontColor: tooltipOpts.bodyFontColor,\n\t\t_bodyFontFamily: valueOrDefault$8(tooltipOpts.bodyFontFamily, globalDefaults.defaultFontFamily),\n\t\t_bodyFontStyle: valueOrDefault$8(tooltipOpts.bodyFontStyle, globalDefaults.defaultFontStyle),\n\t\t_bodyAlign: tooltipOpts.bodyAlign,\n\t\tbodyFontSize: valueOrDefault$8(tooltipOpts.bodyFontSize, globalDefaults.defaultFontSize),\n\t\tbodySpacing: tooltipOpts.bodySpacing,\n\n\t\t// Title\n\t\ttitleFontColor: tooltipOpts.titleFontColor,\n\t\t_titleFontFamily: valueOrDefault$8(tooltipOpts.titleFontFamily, globalDefaults.defaultFontFamily),\n\t\t_titleFontStyle: valueOrDefault$8(tooltipOpts.titleFontStyle, globalDefaults.defaultFontStyle),\n\t\ttitleFontSize: valueOrDefault$8(tooltipOpts.titleFontSize, globalDefaults.defaultFontSize),\n\t\t_titleAlign: tooltipOpts.titleAlign,\n\t\ttitleSpacing: tooltipOpts.titleSpacing,\n\t\ttitleMarginBottom: tooltipOpts.titleMarginBottom,\n\n\t\t// Footer\n\t\tfooterFontColor: tooltipOpts.footerFontColor,\n\t\t_footerFontFamily: valueOrDefault$8(tooltipOpts.footerFontFamily, globalDefaults.defaultFontFamily),\n\t\t_footerFontStyle: valueOrDefault$8(tooltipOpts.footerFontStyle, globalDefaults.defaultFontStyle),\n\t\tfooterFontSize: valueOrDefault$8(tooltipOpts.footerFontSize, globalDefaults.defaultFontSize),\n\t\t_footerAlign: tooltipOpts.footerAlign,\n\t\tfooterSpacing: tooltipOpts.footerSpacing,\n\t\tfooterMarginTop: tooltipOpts.footerMarginTop,\n\n\t\t// Appearance\n\t\tcaretSize: tooltipOpts.caretSize,\n\t\tcornerRadius: tooltipOpts.cornerRadius,\n\t\tbackgroundColor: tooltipOpts.backgroundColor,\n\t\topacity: 0,\n\t\tlegendColorBackground: tooltipOpts.multiKeyBackground,\n\t\tdisplayColors: tooltipOpts.displayColors,\n\t\tborderColor: tooltipOpts.borderColor,\n\t\tborderWidth: tooltipOpts.borderWidth\n\t};\n}\n\n/**\n * Get the size of the tooltip\n */\nfunction getTooltipSize(tooltip, model) {\n\tvar ctx = tooltip._chart.ctx;\n\n\tvar height = model.yPadding * 2; // Tooltip Padding\n\tvar width = 0;\n\n\t// Count of all lines in the body\n\tvar body = model.body;\n\tvar combinedBodyLength = body.reduce(function(count, bodyItem) {\n\t\treturn count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length;\n\t}, 0);\n\tcombinedBodyLength += model.beforeBody.length + model.afterBody.length;\n\n\tvar titleLineCount = model.title.length;\n\tvar footerLineCount = model.footer.length;\n\tvar titleFontSize = model.titleFontSize;\n\tvar bodyFontSize = model.bodyFontSize;\n\tvar footerFontSize = model.footerFontSize;\n\n\theight += titleLineCount * titleFontSize; // Title Lines\n\theight += titleLineCount ? (titleLineCount - 1) * model.titleSpacing : 0; // Title Line Spacing\n\theight += titleLineCount ? model.titleMarginBottom : 0; // Title's bottom Margin\n\theight += combinedBodyLength * bodyFontSize; // Body Lines\n\theight += combinedBodyLength ? (combinedBodyLength - 1) * model.bodySpacing : 0; // Body Line Spacing\n\theight += footerLineCount ? model.footerMarginTop : 0; // Footer Margin\n\theight += footerLineCount * (footerFontSize); // Footer Lines\n\theight += footerLineCount ? (footerLineCount - 1) * model.footerSpacing : 0; // Footer Line Spacing\n\n\t// Title width\n\tvar widthPadding = 0;\n\tvar maxLineWidth = function(line) {\n\t\twidth = Math.max(width, ctx.measureText(line).width + widthPadding);\n\t};\n\n\tctx.font = helpers$1.fontString(titleFontSize, model._titleFontStyle, model._titleFontFamily);\n\thelpers$1.each(model.title, maxLineWidth);\n\n\t// Body width\n\tctx.font = helpers$1.fontString(bodyFontSize, model._bodyFontStyle, model._bodyFontFamily);\n\thelpers$1.each(model.beforeBody.concat(model.afterBody), maxLineWidth);\n\n\t// Body lines may include some extra width due to the color box\n\twidthPadding = model.displayColors ? (bodyFontSize + 2) : 0;\n\thelpers$1.each(body, function(bodyItem) {\n\t\thelpers$1.each(bodyItem.before, maxLineWidth);\n\t\thelpers$1.each(bodyItem.lines, maxLineWidth);\n\t\thelpers$1.each(bodyItem.after, maxLineWidth);\n\t});\n\n\t// Reset back to 0\n\twidthPadding = 0;\n\n\t// Footer width\n\tctx.font = helpers$1.fontString(footerFontSize, model._footerFontStyle, model._footerFontFamily);\n\thelpers$1.each(model.footer, maxLineWidth);\n\n\t// Add padding\n\twidth += 2 * model.xPadding;\n\n\treturn {\n\t\twidth: width,\n\t\theight: height\n\t};\n}\n\n/**\n * Helper to get the alignment of a tooltip given the size\n */\nfunction determineAlignment(tooltip, size) {\n\tvar model = tooltip._model;\n\tvar chart = tooltip._chart;\n\tvar chartArea = tooltip._chart.chartArea;\n\tvar xAlign = 'center';\n\tvar yAlign = 'center';\n\n\tif (model.y < size.height) {\n\t\tyAlign = 'top';\n\t} else if (model.y > (chart.height - size.height)) {\n\t\tyAlign = 'bottom';\n\t}\n\n\tvar lf, rf; // functions to determine left, right alignment\n\tvar olf, orf; // functions to determine if left/right alignment causes tooltip to go outside chart\n\tvar yf; // function to get the y alignment if the tooltip goes outside of the left or right edges\n\tvar midX = (chartArea.left + chartArea.right) / 2;\n\tvar midY = (chartArea.top + chartArea.bottom) / 2;\n\n\tif (yAlign === 'center') {\n\t\tlf = function(x) {\n\t\t\treturn x <= midX;\n\t\t};\n\t\trf = function(x) {\n\t\t\treturn x > midX;\n\t\t};\n\t} else {\n\t\tlf = function(x) {\n\t\t\treturn x <= (size.width / 2);\n\t\t};\n\t\trf = function(x) {\n\t\t\treturn x >= (chart.width - (size.width / 2));\n\t\t};\n\t}\n\n\tolf = function(x) {\n\t\treturn x + size.width + model.caretSize + model.caretPadding > chart.width;\n\t};\n\torf = function(x) {\n\t\treturn x - size.width - model.caretSize - model.caretPadding < 0;\n\t};\n\tyf = function(y) {\n\t\treturn y <= midY ? 'top' : 'bottom';\n\t};\n\n\tif (lf(model.x)) {\n\t\txAlign = 'left';\n\n\t\t// Is tooltip too wide and goes over the right side of the chart.?\n\t\tif (olf(model.x)) {\n\t\t\txAlign = 'center';\n\t\t\tyAlign = yf(model.y);\n\t\t}\n\t} else if (rf(model.x)) {\n\t\txAlign = 'right';\n\n\t\t// Is tooltip too wide and goes outside left edge of canvas?\n\t\tif (orf(model.x)) {\n\t\t\txAlign = 'center';\n\t\t\tyAlign = yf(model.y);\n\t\t}\n\t}\n\n\tvar opts = tooltip._options;\n\treturn {\n\t\txAlign: opts.xAlign ? opts.xAlign : xAlign,\n\t\tyAlign: opts.yAlign ? opts.yAlign : yAlign\n\t};\n}\n\n/**\n * Helper to get the location a tooltip needs to be placed at given the initial position (via the vm) and the size and alignment\n */\nfunction getBackgroundPoint(vm, size, alignment, chart) {\n\t// Background Position\n\tvar x = vm.x;\n\tvar y = vm.y;\n\n\tvar caretSize = vm.caretSize;\n\tvar caretPadding = vm.caretPadding;\n\tvar cornerRadius = vm.cornerRadius;\n\tvar xAlign = alignment.xAlign;\n\tvar yAlign = alignment.yAlign;\n\tvar paddingAndSize = caretSize + caretPadding;\n\tvar radiusAndPadding = cornerRadius + caretPadding;\n\n\tif (xAlign === 'right') {\n\t\tx -= size.width;\n\t} else if (xAlign === 'center') {\n\t\tx -= (size.width / 2);\n\t\tif (x + size.width > chart.width) {\n\t\t\tx = chart.width - size.width;\n\t\t}\n\t\tif (x < 0) {\n\t\t\tx = 0;\n\t\t}\n\t}\n\n\tif (yAlign === 'top') {\n\t\ty += paddingAndSize;\n\t} else if (yAlign === 'bottom') {\n\t\ty -= size.height + paddingAndSize;\n\t} else {\n\t\ty -= (size.height / 2);\n\t}\n\n\tif (yAlign === 'center') {\n\t\tif (xAlign === 'left') {\n\t\t\tx += paddingAndSize;\n\t\t} else if (xAlign === 'right') {\n\t\t\tx -= paddingAndSize;\n\t\t}\n\t} else if (xAlign === 'left') {\n\t\tx -= radiusAndPadding;\n\t} else if (xAlign === 'right') {\n\t\tx += radiusAndPadding;\n\t}\n\n\treturn {\n\t\tx: x,\n\t\ty: y\n\t};\n}\n\nfunction getAlignedX(vm, align) {\n\treturn align === 'center'\n\t\t? vm.x + vm.width / 2\n\t\t: align === 'right'\n\t\t\t? vm.x + vm.width - vm.xPadding\n\t\t\t: vm.x + vm.xPadding;\n}\n\n/**\n * Helper to build before and after body lines\n */\nfunction getBeforeAfterBodyLines(callback) {\n\treturn pushOrConcat([], splitNewlines(callback));\n}\n\nvar exports$4 = core_element.extend({\n\tinitialize: function() {\n\t\tthis._model = getBaseModel(this._options);\n\t\tthis._lastActive = [];\n\t},\n\n\t// Get the title\n\t// Args are: (tooltipItem, data)\n\tgetTitle: function() {\n\t\tvar me = this;\n\t\tvar opts = me._options;\n\t\tvar callbacks = opts.callbacks;\n\n\t\tvar beforeTitle = callbacks.beforeTitle.apply(me, arguments);\n\t\tvar title = callbacks.title.apply(me, arguments);\n\t\tvar afterTitle = callbacks.afterTitle.apply(me, arguments);\n\n\t\tvar lines = [];\n\t\tlines = pushOrConcat(lines, splitNewlines(beforeTitle));\n\t\tlines = pushOrConcat(lines, splitNewlines(title));\n\t\tlines = pushOrConcat(lines, splitNewlines(afterTitle));\n\n\t\treturn lines;\n\t},\n\n\t// Args are: (tooltipItem, data)\n\tgetBeforeBody: function() {\n\t\treturn getBeforeAfterBodyLines(this._options.callbacks.beforeBody.apply(this, arguments));\n\t},\n\n\t// Args are: (tooltipItem, data)\n\tgetBody: function(tooltipItems, data) {\n\t\tvar me = this;\n\t\tvar callbacks = me._options.callbacks;\n\t\tvar bodyItems = [];\n\n\t\thelpers$1.each(tooltipItems, function(tooltipItem) {\n\t\t\tvar bodyItem = {\n\t\t\t\tbefore: [],\n\t\t\t\tlines: [],\n\t\t\t\tafter: []\n\t\t\t};\n\t\t\tpushOrConcat(bodyItem.before, splitNewlines(callbacks.beforeLabel.call(me, tooltipItem, data)));\n\t\t\tpushOrConcat(bodyItem.lines, callbacks.label.call(me, tooltipItem, data));\n\t\t\tpushOrConcat(bodyItem.after, splitNewlines(callbacks.afterLabel.call(me, tooltipItem, data)));\n\n\t\t\tbodyItems.push(bodyItem);\n\t\t});\n\n\t\treturn bodyItems;\n\t},\n\n\t// Args are: (tooltipItem, data)\n\tgetAfterBody: function() {\n\t\treturn getBeforeAfterBodyLines(this._options.callbacks.afterBody.apply(this, arguments));\n\t},\n\n\t// Get the footer and beforeFooter and afterFooter lines\n\t// Args are: (tooltipItem, data)\n\tgetFooter: function() {\n\t\tvar me = this;\n\t\tvar callbacks = me._options.callbacks;\n\n\t\tvar beforeFooter = callbacks.beforeFooter.apply(me, arguments);\n\t\tvar footer = callbacks.footer.apply(me, arguments);\n\t\tvar afterFooter = callbacks.afterFooter.apply(me, arguments);\n\n\t\tvar lines = [];\n\t\tlines = pushOrConcat(lines, splitNewlines(beforeFooter));\n\t\tlines = pushOrConcat(lines, splitNewlines(footer));\n\t\tlines = pushOrConcat(lines, splitNewlines(afterFooter));\n\n\t\treturn lines;\n\t},\n\n\tupdate: function(changed) {\n\t\tvar me = this;\n\t\tvar opts = me._options;\n\n\t\t// Need to regenerate the model because its faster than using extend and it is necessary due to the optimization in Chart.Element.transition\n\t\t// that does _view = _model if ease === 1. This causes the 2nd tooltip update to set properties in both the view and model at the same time\n\t\t// which breaks any animations.\n\t\tvar existingModel = me._model;\n\t\tvar model = me._model = getBaseModel(opts);\n\t\tvar active = me._active;\n\n\t\tvar data = me._data;\n\n\t\t// In the case where active.length === 0 we need to keep these at existing values for good animations\n\t\tvar alignment = {\n\t\t\txAlign: existingModel.xAlign,\n\t\t\tyAlign: existingModel.yAlign\n\t\t};\n\t\tvar backgroundPoint = {\n\t\t\tx: existingModel.x,\n\t\t\ty: existingModel.y\n\t\t};\n\t\tvar tooltipSize = {\n\t\t\twidth: existingModel.width,\n\t\t\theight: existingModel.height\n\t\t};\n\t\tvar tooltipPosition = {\n\t\t\tx: existingModel.caretX,\n\t\t\ty: existingModel.caretY\n\t\t};\n\n\t\tvar i, len;\n\n\t\tif (active.length) {\n\t\t\tmodel.opacity = 1;\n\n\t\t\tvar labelColors = [];\n\t\t\tvar labelTextColors = [];\n\t\t\ttooltipPosition = positioners[opts.position].call(me, active, me._eventPosition);\n\n\t\t\tvar tooltipItems = [];\n\t\t\tfor (i = 0, len = active.length; i < len; ++i) {\n\t\t\t\ttooltipItems.push(createTooltipItem(active[i]));\n\t\t\t}\n\n\t\t\t// If the user provided a filter function, use it to modify the tooltip items\n\t\t\tif (opts.filter) {\n\t\t\t\ttooltipItems = tooltipItems.filter(function(a) {\n\t\t\t\t\treturn opts.filter(a, data);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// If the user provided a sorting function, use it to modify the tooltip items\n\t\t\tif (opts.itemSort) {\n\t\t\t\ttooltipItems = tooltipItems.sort(function(a, b) {\n\t\t\t\t\treturn opts.itemSort(a, b, data);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Determine colors for boxes\n\t\t\thelpers$1.each(tooltipItems, function(tooltipItem) {\n\t\t\t\tlabelColors.push(opts.callbacks.labelColor.call(me, tooltipItem, me._chart));\n\t\t\t\tlabelTextColors.push(opts.callbacks.labelTextColor.call(me, tooltipItem, me._chart));\n\t\t\t});\n\n\n\t\t\t// Build the Text Lines\n\t\t\tmodel.title = me.getTitle(tooltipItems, data);\n\t\t\tmodel.beforeBody = me.getBeforeBody(tooltipItems, data);\n\t\t\tmodel.body = me.getBody(tooltipItems, data);\n\t\t\tmodel.afterBody = me.getAfterBody(tooltipItems, data);\n\t\t\tmodel.footer = me.getFooter(tooltipItems, data);\n\n\t\t\t// Initial positioning and colors\n\t\t\tmodel.x = tooltipPosition.x;\n\t\t\tmodel.y = tooltipPosition.y;\n\t\t\tmodel.caretPadding = opts.caretPadding;\n\t\t\tmodel.labelColors = labelColors;\n\t\t\tmodel.labelTextColors = labelTextColors;\n\n\t\t\t// data points\n\t\t\tmodel.dataPoints = tooltipItems;\n\n\t\t\t// We need to determine alignment of the tooltip\n\t\t\ttooltipSize = getTooltipSize(this, model);\n\t\t\talignment = determineAlignment(this, tooltipSize);\n\t\t\t// Final Size and Position\n\t\t\tbackgroundPoint = getBackgroundPoint(model, tooltipSize, alignment, me._chart);\n\t\t} else {\n\t\t\tmodel.opacity = 0;\n\t\t}\n\n\t\tmodel.xAlign = alignment.xAlign;\n\t\tmodel.yAlign = alignment.yAlign;\n\t\tmodel.x = backgroundPoint.x;\n\t\tmodel.y = backgroundPoint.y;\n\t\tmodel.width = tooltipSize.width;\n\t\tmodel.height = tooltipSize.height;\n\n\t\t// Point where the caret on the tooltip points to\n\t\tmodel.caretX = tooltipPosition.x;\n\t\tmodel.caretY = tooltipPosition.y;\n\n\t\tme._model = model;\n\n\t\tif (changed && opts.custom) {\n\t\t\topts.custom.call(me, model);\n\t\t}\n\n\t\treturn me;\n\t},\n\n\tdrawCaret: function(tooltipPoint, size) {\n\t\tvar ctx = this._chart.ctx;\n\t\tvar vm = this._view;\n\t\tvar caretPosition = this.getCaretPosition(tooltipPoint, size, vm);\n\n\t\tctx.lineTo(caretPosition.x1, caretPosition.y1);\n\t\tctx.lineTo(caretPosition.x2, caretPosition.y2);\n\t\tctx.lineTo(caretPosition.x3, caretPosition.y3);\n\t},\n\tgetCaretPosition: function(tooltipPoint, size, vm) {\n\t\tvar x1, x2, x3, y1, y2, y3;\n\t\tvar caretSize = vm.caretSize;\n\t\tvar cornerRadius = vm.cornerRadius;\n\t\tvar xAlign = vm.xAlign;\n\t\tvar yAlign = vm.yAlign;\n\t\tvar ptX = tooltipPoint.x;\n\t\tvar ptY = tooltipPoint.y;\n\t\tvar width = size.width;\n\t\tvar height = size.height;\n\n\t\tif (yAlign === 'center') {\n\t\t\ty2 = ptY + (height / 2);\n\n\t\t\tif (xAlign === 'left') {\n\t\t\t\tx1 = ptX;\n\t\t\t\tx2 = x1 - caretSize;\n\t\t\t\tx3 = x1;\n\n\t\t\t\ty1 = y2 + caretSize;\n\t\t\t\ty3 = y2 - caretSize;\n\t\t\t} else {\n\t\t\t\tx1 = ptX + width;\n\t\t\t\tx2 = x1 + caretSize;\n\t\t\t\tx3 = x1;\n\n\t\t\t\ty1 = y2 - caretSize;\n\t\t\t\ty3 = y2 + caretSize;\n\t\t\t}\n\t\t} else {\n\t\t\tif (xAlign === 'left') {\n\t\t\t\tx2 = ptX + cornerRadius + (caretSize);\n\t\t\t\tx1 = x2 - caretSize;\n\t\t\t\tx3 = x2 + caretSize;\n\t\t\t} else if (xAlign === 'right') {\n\t\t\t\tx2 = ptX + width - cornerRadius - caretSize;\n\t\t\t\tx1 = x2 - caretSize;\n\t\t\t\tx3 = x2 + caretSize;\n\t\t\t} else {\n\t\t\t\tx2 = vm.caretX;\n\t\t\t\tx1 = x2 - caretSize;\n\t\t\t\tx3 = x2 + caretSize;\n\t\t\t}\n\t\t\tif (yAlign === 'top') {\n\t\t\t\ty1 = ptY;\n\t\t\t\ty2 = y1 - caretSize;\n\t\t\t\ty3 = y1;\n\t\t\t} else {\n\t\t\t\ty1 = ptY + height;\n\t\t\t\ty2 = y1 + caretSize;\n\t\t\t\ty3 = y1;\n\t\t\t\t// invert drawing order\n\t\t\t\tvar tmp = x3;\n\t\t\t\tx3 = x1;\n\t\t\t\tx1 = tmp;\n\t\t\t}\n\t\t}\n\t\treturn {x1: x1, x2: x2, x3: x3, y1: y1, y2: y2, y3: y3};\n\t},\n\n\tdrawTitle: function(pt, vm, ctx) {\n\t\tvar title = vm.title;\n\t\tvar length = title.length;\n\t\tvar titleFontSize, titleSpacing, i;\n\n\t\tif (length) {\n\t\t\tvar rtlHelper = getRtlHelper(vm.rtl, vm.x, vm.width);\n\n\t\t\tpt.x = getAlignedX(vm, vm._titleAlign);\n\n\t\t\tctx.textAlign = rtlHelper.textAlign(vm._titleAlign);\n\t\t\tctx.textBaseline = 'middle';\n\n\t\t\ttitleFontSize = vm.titleFontSize;\n\t\t\ttitleSpacing = vm.titleSpacing;\n\n\t\t\tctx.fillStyle = vm.titleFontColor;\n\t\t\tctx.font = helpers$1.fontString(titleFontSize, vm._titleFontStyle, vm._titleFontFamily);\n\n\t\t\tfor (i = 0; i < length; ++i) {\n\t\t\t\tctx.fillText(title[i], rtlHelper.x(pt.x), pt.y + titleFontSize / 2);\n\t\t\t\tpt.y += titleFontSize + titleSpacing; // Line Height and spacing\n\n\t\t\t\tif (i + 1 === length) {\n\t\t\t\t\tpt.y += vm.titleMarginBottom - titleSpacing; // If Last, add margin, remove spacing\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tdrawBody: function(pt, vm, ctx) {\n\t\tvar bodyFontSize = vm.bodyFontSize;\n\t\tvar bodySpacing = vm.bodySpacing;\n\t\tvar bodyAlign = vm._bodyAlign;\n\t\tvar body = vm.body;\n\t\tvar drawColorBoxes = vm.displayColors;\n\t\tvar xLinePadding = 0;\n\t\tvar colorX = drawColorBoxes ? getAlignedX(vm, 'left') : 0;\n\n\t\tvar rtlHelper = getRtlHelper(vm.rtl, vm.x, vm.width);\n\n\t\tvar fillLineOfText = function(line) {\n\t\t\tctx.fillText(line, rtlHelper.x(pt.x + xLinePadding), pt.y + bodyFontSize / 2);\n\t\t\tpt.y += bodyFontSize + bodySpacing;\n\t\t};\n\n\t\tvar bodyItem, textColor, labelColors, lines, i, j, ilen, jlen;\n\t\tvar bodyAlignForCalculation = rtlHelper.textAlign(bodyAlign);\n\n\t\tctx.textAlign = bodyAlign;\n\t\tctx.textBaseline = 'middle';\n\t\tctx.font = helpers$1.fontString(bodyFontSize, vm._bodyFontStyle, vm._bodyFontFamily);\n\n\t\tpt.x = getAlignedX(vm, bodyAlignForCalculation);\n\n\t\t// Before body lines\n\t\tctx.fillStyle = vm.bodyFontColor;\n\t\thelpers$1.each(vm.beforeBody, fillLineOfText);\n\n\t\txLinePadding = drawColorBoxes && bodyAlignForCalculation !== 'right'\n\t\t\t? bodyAlign === 'center' ? (bodyFontSize / 2 + 1) : (bodyFontSize + 2)\n\t\t\t: 0;\n\n\t\t// Draw body lines now\n\t\tfor (i = 0, ilen = body.length; i < ilen; ++i) {\n\t\t\tbodyItem = body[i];\n\t\t\ttextColor = vm.labelTextColors[i];\n\t\t\tlabelColors = vm.labelColors[i];\n\n\t\t\tctx.fillStyle = textColor;\n\t\t\thelpers$1.each(bodyItem.before, fillLineOfText);\n\n\t\t\tlines = bodyItem.lines;\n\t\t\tfor (j = 0, jlen = lines.length; j < jlen; ++j) {\n\t\t\t\t// Draw Legend-like boxes if needed\n\t\t\t\tif (drawColorBoxes) {\n\t\t\t\t\tvar rtlColorX = rtlHelper.x(colorX);\n\n\t\t\t\t\t// Fill a white rect so that colours merge nicely if the opacity is < 1\n\t\t\t\t\tctx.fillStyle = vm.legendColorBackground;\n\t\t\t\t\tctx.fillRect(rtlHelper.leftForLtr(rtlColorX, bodyFontSize), pt.y, bodyFontSize, bodyFontSize);\n\n\t\t\t\t\t// Border\n\t\t\t\t\tctx.lineWidth = 1;\n\t\t\t\t\tctx.strokeStyle = labelColors.borderColor;\n\t\t\t\t\tctx.strokeRect(rtlHelper.leftForLtr(rtlColorX, bodyFontSize), pt.y, bodyFontSize, bodyFontSize);\n\n\t\t\t\t\t// Inner square\n\t\t\t\t\tctx.fillStyle = labelColors.backgroundColor;\n\t\t\t\t\tctx.fillRect(rtlHelper.leftForLtr(rtlHelper.xPlus(rtlColorX, 1), bodyFontSize - 2), pt.y + 1, bodyFontSize - 2, bodyFontSize - 2);\n\t\t\t\t\tctx.fillStyle = textColor;\n\t\t\t\t}\n\n\t\t\t\tfillLineOfText(lines[j]);\n\t\t\t}\n\n\t\t\thelpers$1.each(bodyItem.after, fillLineOfText);\n\t\t}\n\n\t\t// Reset back to 0 for after body\n\t\txLinePadding = 0;\n\n\t\t// After body lines\n\t\thelpers$1.each(vm.afterBody, fillLineOfText);\n\t\tpt.y -= bodySpacing; // Remove last body spacing\n\t},\n\n\tdrawFooter: function(pt, vm, ctx) {\n\t\tvar footer = vm.footer;\n\t\tvar length = footer.length;\n\t\tvar footerFontSize, i;\n\n\t\tif (length) {\n\t\t\tvar rtlHelper = getRtlHelper(vm.rtl, vm.x, vm.width);\n\n\t\t\tpt.x = getAlignedX(vm, vm._footerAlign);\n\t\t\tpt.y += vm.footerMarginTop;\n\n\t\t\tctx.textAlign = rtlHelper.textAlign(vm._footerAlign);\n\t\t\tctx.textBaseline = 'middle';\n\n\t\t\tfooterFontSize = vm.footerFontSize;\n\n\t\t\tctx.fillStyle = vm.footerFontColor;\n\t\t\tctx.font = helpers$1.fontString(footerFontSize, vm._footerFontStyle, vm._footerFontFamily);\n\n\t\t\tfor (i = 0; i < length; ++i) {\n\t\t\t\tctx.fillText(footer[i], rtlHelper.x(pt.x), pt.y + footerFontSize / 2);\n\t\t\t\tpt.y += footerFontSize + vm.footerSpacing;\n\t\t\t}\n\t\t}\n\t},\n\n\tdrawBackground: function(pt, vm, ctx, tooltipSize) {\n\t\tctx.fillStyle = vm.backgroundColor;\n\t\tctx.strokeStyle = vm.borderColor;\n\t\tctx.lineWidth = vm.borderWidth;\n\t\tvar xAlign = vm.xAlign;\n\t\tvar yAlign = vm.yAlign;\n\t\tvar x = pt.x;\n\t\tvar y = pt.y;\n\t\tvar width = tooltipSize.width;\n\t\tvar height = tooltipSize.height;\n\t\tvar radius = vm.cornerRadius;\n\n\t\tctx.beginPath();\n\t\tctx.moveTo(x + radius, y);\n\t\tif (yAlign === 'top') {\n\t\t\tthis.drawCaret(pt, tooltipSize);\n\t\t}\n\t\tctx.lineTo(x + width - radius, y);\n\t\tctx.quadraticCurveTo(x + width, y, x + width, y + radius);\n\t\tif (yAlign === 'center' && xAlign === 'right') {\n\t\t\tthis.drawCaret(pt, tooltipSize);\n\t\t}\n\t\tctx.lineTo(x + width, y + height - radius);\n\t\tctx.quadraticCurveTo(x + width, y + height, x + width - radius, y + height);\n\t\tif (yAlign === 'bottom') {\n\t\t\tthis.drawCaret(pt, tooltipSize);\n\t\t}\n\t\tctx.lineTo(x + radius, y + height);\n\t\tctx.quadraticCurveTo(x, y + height, x, y + height - radius);\n\t\tif (yAlign === 'center' && xAlign === 'left') {\n\t\t\tthis.drawCaret(pt, tooltipSize);\n\t\t}\n\t\tctx.lineTo(x, y + radius);\n\t\tctx.quadraticCurveTo(x, y, x + radius, y);\n\t\tctx.closePath();\n\n\t\tctx.fill();\n\n\t\tif (vm.borderWidth > 0) {\n\t\t\tctx.stroke();\n\t\t}\n\t},\n\n\tdraw: function() {\n\t\tvar ctx = this._chart.ctx;\n\t\tvar vm = this._view;\n\n\t\tif (vm.opacity === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar tooltipSize = {\n\t\t\twidth: vm.width,\n\t\t\theight: vm.height\n\t\t};\n\t\tvar pt = {\n\t\t\tx: vm.x,\n\t\t\ty: vm.y\n\t\t};\n\n\t\t// IE11/Edge does not like very small opacities, so snap to 0\n\t\tvar opacity = Math.abs(vm.opacity < 1e-3) ? 0 : vm.opacity;\n\n\t\t// Truthy/falsey value for empty tooltip\n\t\tvar hasTooltipContent = vm.title.length || vm.beforeBody.length || vm.body.length || vm.afterBody.length || vm.footer.length;\n\n\t\tif (this._options.enabled && hasTooltipContent) {\n\t\t\tctx.save();\n\t\t\tctx.globalAlpha = opacity;\n\n\t\t\t// Draw Background\n\t\t\tthis.drawBackground(pt, vm, ctx, tooltipSize);\n\n\t\t\t// Draw Title, Body, and Footer\n\t\t\tpt.y += vm.yPadding;\n\n\t\t\thelpers$1.rtl.overrideTextDirection(ctx, vm.textDirection);\n\n\t\t\t// Titles\n\t\t\tthis.drawTitle(pt, vm, ctx);\n\n\t\t\t// Body\n\t\t\tthis.drawBody(pt, vm, ctx);\n\n\t\t\t// Footer\n\t\t\tthis.drawFooter(pt, vm, ctx);\n\n\t\t\thelpers$1.rtl.restoreTextDirection(ctx, vm.textDirection);\n\n\t\t\tctx.restore();\n\t\t}\n\t},\n\n\t/**\n\t * Handle an event\n\t * @private\n\t * @param {IEvent} event - The event to handle\n\t * @returns {boolean} true if the tooltip changed\n\t */\n\thandleEvent: function(e) {\n\t\tvar me = this;\n\t\tvar options = me._options;\n\t\tvar changed = false;\n\n\t\tme._lastActive = me._lastActive || [];\n\n\t\t// Find Active Elements for tooltips\n\t\tif (e.type === 'mouseout') {\n\t\t\tme._active = [];\n\t\t} else {\n\t\t\tme._active = me._chart.getElementsAtEventForMode(e, options.mode, options);\n\t\t\tif (options.reverse) {\n\t\t\t\tme._active.reverse();\n\t\t\t}\n\t\t}\n\n\t\t// Remember Last Actives\n\t\tchanged = !helpers$1.arrayEquals(me._active, me._lastActive);\n\n\t\t// Only handle target event on tooltip change\n\t\tif (changed) {\n\t\t\tme._lastActive = me._active;\n\n\t\t\tif (options.enabled || options.custom) {\n\t\t\t\tme._eventPosition = {\n\t\t\t\t\tx: e.x,\n\t\t\t\t\ty: e.y\n\t\t\t\t};\n\n\t\t\t\tme.update(true);\n\t\t\t\tme.pivot();\n\t\t\t}\n\t\t}\n\n\t\treturn changed;\n\t}\n});\n\n/**\n * @namespace Chart.Tooltip.positioners\n */\nvar positioners_1 = positioners;\n\nvar core_tooltip = exports$4;\ncore_tooltip.positioners = positioners_1;\n\nvar valueOrDefault$9 = helpers$1.valueOrDefault;\n\ncore_defaults._set('global', {\n\telements: {},\n\tevents: [\n\t\t'mousemove',\n\t\t'mouseout',\n\t\t'click',\n\t\t'touchstart',\n\t\t'touchmove'\n\t],\n\thover: {\n\t\tonHover: null,\n\t\tmode: 'nearest',\n\t\tintersect: true,\n\t\tanimationDuration: 400\n\t},\n\tonClick: null,\n\tmaintainAspectRatio: true,\n\tresponsive: true,\n\tresponsiveAnimationDuration: 0\n});\n\n/**\n * Recursively merge the given config objects representing the `scales` option\n * by incorporating scale defaults in `xAxes` and `yAxes` array items, then\n * returns a deep copy of the result, thus doesn't alter inputs.\n */\nfunction mergeScaleConfig(/* config objects ... */) {\n\treturn helpers$1.merge({}, [].slice.call(arguments), {\n\t\tmerger: function(key, target, source, options) {\n\t\t\tif (key === 'xAxes' || key === 'yAxes') {\n\t\t\t\tvar slen = source[key].length;\n\t\t\t\tvar i, type, scale;\n\n\t\t\t\tif (!target[key]) {\n\t\t\t\t\ttarget[key] = [];\n\t\t\t\t}\n\n\t\t\t\tfor (i = 0; i < slen; ++i) {\n\t\t\t\t\tscale = source[key][i];\n\t\t\t\t\ttype = valueOrDefault$9(scale.type, key === 'xAxes' ? 'category' : 'linear');\n\n\t\t\t\t\tif (i >= target[key].length) {\n\t\t\t\t\t\ttarget[key].push({});\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!target[key][i].type || (scale.type && scale.type !== target[key][i].type)) {\n\t\t\t\t\t\t// new/untyped scale or type changed: let's apply the new defaults\n\t\t\t\t\t\t// then merge source scale to correctly overwrite the defaults.\n\t\t\t\t\t\thelpers$1.merge(target[key][i], [core_scaleService.getScaleDefaults(type), scale]);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// scales type are the same\n\t\t\t\t\t\thelpers$1.merge(target[key][i], scale);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\thelpers$1._merger(key, target, source, options);\n\t\t\t}\n\t\t}\n\t});\n}\n\n/**\n * Recursively merge the given config objects as the root options by handling\n * default scale options for the `scales` and `scale` properties, then returns\n * a deep copy of the result, thus doesn't alter inputs.\n */\nfunction mergeConfig(/* config objects ... */) {\n\treturn helpers$1.merge({}, [].slice.call(arguments), {\n\t\tmerger: function(key, target, source, options) {\n\t\t\tvar tval = target[key] || {};\n\t\t\tvar sval = source[key];\n\n\t\t\tif (key === 'scales') {\n\t\t\t\t// scale config merging is complex. Add our own function here for that\n\t\t\t\ttarget[key] = mergeScaleConfig(tval, sval);\n\t\t\t} else if (key === 'scale') {\n\t\t\t\t// used in polar area & radar charts since there is only one scale\n\t\t\t\ttarget[key] = helpers$1.merge(tval, [core_scaleService.getScaleDefaults(sval.type), sval]);\n\t\t\t} else {\n\t\t\t\thelpers$1._merger(key, target, source, options);\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction initConfig(config) {\n\tconfig = config || {};\n\n\t// Do NOT use mergeConfig for the data object because this method merges arrays\n\t// and so would change references to labels and datasets, preventing data updates.\n\tvar data = config.data = config.data || {};\n\tdata.datasets = data.datasets || [];\n\tdata.labels = data.labels || [];\n\n\tconfig.options = mergeConfig(\n\t\tcore_defaults.global,\n\t\tcore_defaults[config.type],\n\t\tconfig.options || {});\n\n\treturn config;\n}\n\nfunction updateConfig(chart) {\n\tvar newOptions = chart.options;\n\n\thelpers$1.each(chart.scales, function(scale) {\n\t\tcore_layouts.removeBox(chart, scale);\n\t});\n\n\tnewOptions = mergeConfig(\n\t\tcore_defaults.global,\n\t\tcore_defaults[chart.config.type],\n\t\tnewOptions);\n\n\tchart.options = chart.config.options = newOptions;\n\tchart.ensureScalesHaveIDs();\n\tchart.buildOrUpdateScales();\n\n\t// Tooltip\n\tchart.tooltip._options = newOptions.tooltips;\n\tchart.tooltip.initialize();\n}\n\nfunction nextAvailableScaleId(axesOpts, prefix, index) {\n\tvar id;\n\tvar hasId = function(obj) {\n\t\treturn obj.id === id;\n\t};\n\n\tdo {\n\t\tid = prefix + index++;\n\t} while (helpers$1.findIndex(axesOpts, hasId) >= 0);\n\n\treturn id;\n}\n\nfunction positionIsHorizontal(position) {\n\treturn position === 'top' || position === 'bottom';\n}\n\nfunction compare2Level(l1, l2) {\n\treturn function(a, b) {\n\t\treturn a[l1] === b[l1]\n\t\t\t? a[l2] - b[l2]\n\t\t\t: a[l1] - b[l1];\n\t};\n}\n\nvar Chart = function(item, config) {\n\tthis.construct(item, config);\n\treturn this;\n};\n\nhelpers$1.extend(Chart.prototype, /** @lends Chart */ {\n\t/**\n\t * @private\n\t */\n\tconstruct: function(item, config) {\n\t\tvar me = this;\n\n\t\tconfig = initConfig(config);\n\n\t\tvar context = platform.acquireContext(item, config);\n\t\tvar canvas = context && context.canvas;\n\t\tvar height = canvas && canvas.height;\n\t\tvar width = canvas && canvas.width;\n\n\t\tme.id = helpers$1.uid();\n\t\tme.ctx = context;\n\t\tme.canvas = canvas;\n\t\tme.config = config;\n\t\tme.width = width;\n\t\tme.height = height;\n\t\tme.aspectRatio = height ? width / height : null;\n\t\tme.options = config.options;\n\t\tme._bufferedRender = false;\n\t\tme._layers = [];\n\n\t\t/**\n\t\t * Provided for backward compatibility, Chart and Chart.Controller have been merged,\n\t\t * the \"instance\" still need to be defined since it might be called from plugins.\n\t\t * @prop Chart#chart\n\t\t * @deprecated since version 2.6.0\n\t\t * @todo remove at version 3\n\t\t * @private\n\t\t */\n\t\tme.chart = me;\n\t\tme.controller = me; // chart.chart.controller #inception\n\n\t\t// Add the chart instance to the global namespace\n\t\tChart.instances[me.id] = me;\n\n\t\t// Define alias to the config data: `chart.data === chart.config.data`\n\t\tObject.defineProperty(me, 'data', {\n\t\t\tget: function() {\n\t\t\t\treturn me.config.data;\n\t\t\t},\n\t\t\tset: function(value) {\n\t\t\t\tme.config.data = value;\n\t\t\t}\n\t\t});\n\n\t\tif (!context || !canvas) {\n\t\t\t// The given item is not a compatible context2d element, let's return before finalizing\n\t\t\t// the chart initialization but after setting basic chart / controller properties that\n\t\t\t// can help to figure out that the chart is not valid (e.g chart.canvas !== null);\n\t\t\t// https://github.com/chartjs/Chart.js/issues/2807\n\t\t\tconsole.error(\"Failed to create chart: can't acquire context from the given item\");\n\t\t\treturn;\n\t\t}\n\n\t\tme.initialize();\n\t\tme.update();\n\t},\n\n\t/**\n\t * @private\n\t */\n\tinitialize: function() {\n\t\tvar me = this;\n\n\t\t// Before init plugin notification\n\t\tcore_plugins.notify(me, 'beforeInit');\n\n\t\thelpers$1.retinaScale(me, me.options.devicePixelRatio);\n\n\t\tme.bindEvents();\n\n\t\tif (me.options.responsive) {\n\t\t\t// Initial resize before chart draws (must be silent to preserve initial animations).\n\t\t\tme.resize(true);\n\t\t}\n\n\t\tme.initToolTip();\n\n\t\t// After init plugin notification\n\t\tcore_plugins.notify(me, 'afterInit');\n\n\t\treturn me;\n\t},\n\n\tclear: function() {\n\t\thelpers$1.canvas.clear(this);\n\t\treturn this;\n\t},\n\n\tstop: function() {\n\t\t// Stops any current animation loop occurring\n\t\tcore_animations.cancelAnimation(this);\n\t\treturn this;\n\t},\n\n\tresize: function(silent) {\n\t\tvar me = this;\n\t\tvar options = me.options;\n\t\tvar canvas = me.canvas;\n\t\tvar aspectRatio = (options.maintainAspectRatio && me.aspectRatio) || null;\n\n\t\t// the canvas render width and height will be casted to integers so make sure that\n\t\t// the canvas display style uses the same integer values to avoid blurring effect.\n\n\t\t// Set to 0 instead of canvas.size because the size defaults to 300x150 if the element is collapsed\n\t\tvar newWidth = Math.max(0, Math.floor(helpers$1.getMaximumWidth(canvas)));\n\t\tvar newHeight = Math.max(0, Math.floor(aspectRatio ? newWidth / aspectRatio : helpers$1.getMaximumHeight(canvas)));\n\n\t\tif (me.width === newWidth && me.height === newHeight) {\n\t\t\treturn;\n\t\t}\n\n\t\tcanvas.width = me.width = newWidth;\n\t\tcanvas.height = me.height = newHeight;\n\t\tcanvas.style.width = newWidth + 'px';\n\t\tcanvas.style.height = newHeight + 'px';\n\n\t\thelpers$1.retinaScale(me, options.devicePixelRatio);\n\n\t\tif (!silent) {\n\t\t\t// Notify any plugins about the resize\n\t\t\tvar newSize = {width: newWidth, height: newHeight};\n\t\t\tcore_plugins.notify(me, 'resize', [newSize]);\n\n\t\t\t// Notify of resize\n\t\t\tif (options.onResize) {\n\t\t\t\toptions.onResize(me, newSize);\n\t\t\t}\n\n\t\t\tme.stop();\n\t\t\tme.update({\n\t\t\t\tduration: options.responsiveAnimationDuration\n\t\t\t});\n\t\t}\n\t},\n\n\tensureScalesHaveIDs: function() {\n\t\tvar options = this.options;\n\t\tvar scalesOptions = options.scales || {};\n\t\tvar scaleOptions = options.scale;\n\n\t\thelpers$1.each(scalesOptions.xAxes, function(xAxisOptions, index) {\n\t\t\tif (!xAxisOptions.id) {\n\t\t\t\txAxisOptions.id = nextAvailableScaleId(scalesOptions.xAxes, 'x-axis-', index);\n\t\t\t}\n\t\t});\n\n\t\thelpers$1.each(scalesOptions.yAxes, function(yAxisOptions, index) {\n\t\t\tif (!yAxisOptions.id) {\n\t\t\t\tyAxisOptions.id = nextAvailableScaleId(scalesOptions.yAxes, 'y-axis-', index);\n\t\t\t}\n\t\t});\n\n\t\tif (scaleOptions) {\n\t\t\tscaleOptions.id = scaleOptions.id || 'scale';\n\t\t}\n\t},\n\n\t/**\n\t * Builds a map of scale ID to scale object for future lookup.\n\t */\n\tbuildOrUpdateScales: function() {\n\t\tvar me = this;\n\t\tvar options = me.options;\n\t\tvar scales = me.scales || {};\n\t\tvar items = [];\n\t\tvar updated = Object.keys(scales).reduce(function(obj, id) {\n\t\t\tobj[id] = false;\n\t\t\treturn obj;\n\t\t}, {});\n\n\t\tif (options.scales) {\n\t\t\titems = items.concat(\n\t\t\t\t(options.scales.xAxes || []).map(function(xAxisOptions) {\n\t\t\t\t\treturn {options: xAxisOptions, dtype: 'category', dposition: 'bottom'};\n\t\t\t\t}),\n\t\t\t\t(options.scales.yAxes || []).map(function(yAxisOptions) {\n\t\t\t\t\treturn {options: yAxisOptions, dtype: 'linear', dposition: 'left'};\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\n\t\tif (options.scale) {\n\t\t\titems.push({\n\t\t\t\toptions: options.scale,\n\t\t\t\tdtype: 'radialLinear',\n\t\t\t\tisDefault: true,\n\t\t\t\tdposition: 'chartArea'\n\t\t\t});\n\t\t}\n\n\t\thelpers$1.each(items, function(item) {\n\t\t\tvar scaleOptions = item.options;\n\t\t\tvar id = scaleOptions.id;\n\t\t\tvar scaleType = valueOrDefault$9(scaleOptions.type, item.dtype);\n\n\t\t\tif (positionIsHorizontal(scaleOptions.position) !== positionIsHorizontal(item.dposition)) {\n\t\t\t\tscaleOptions.position = item.dposition;\n\t\t\t}\n\n\t\t\tupdated[id] = true;\n\t\t\tvar scale = null;\n\t\t\tif (id in scales && scales[id].type === scaleType) {\n\t\t\t\tscale = scales[id];\n\t\t\t\tscale.options = scaleOptions;\n\t\t\t\tscale.ctx = me.ctx;\n\t\t\t\tscale.chart = me;\n\t\t\t} else {\n\t\t\t\tvar scaleClass = core_scaleService.getScaleConstructor(scaleType);\n\t\t\t\tif (!scaleClass) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tscale = new scaleClass({\n\t\t\t\t\tid: id,\n\t\t\t\t\ttype: scaleType,\n\t\t\t\t\toptions: scaleOptions,\n\t\t\t\t\tctx: me.ctx,\n\t\t\t\t\tchart: me\n\t\t\t\t});\n\t\t\t\tscales[scale.id] = scale;\n\t\t\t}\n\n\t\t\tscale.mergeTicksOptions();\n\n\t\t\t// TODO(SB): I think we should be able to remove this custom case (options.scale)\n\t\t\t// and consider it as a regular scale part of the \"scales\"\" map only! This would\n\t\t\t// make the logic easier and remove some useless? custom code.\n\t\t\tif (item.isDefault) {\n\t\t\t\tme.scale = scale;\n\t\t\t}\n\t\t});\n\t\t// clear up discarded scales\n\t\thelpers$1.each(updated, function(hasUpdated, id) {\n\t\t\tif (!hasUpdated) {\n\t\t\t\tdelete scales[id];\n\t\t\t}\n\t\t});\n\n\t\tme.scales = scales;\n\n\t\tcore_scaleService.addScalesToLayout(this);\n\t},\n\n\tbuildOrUpdateControllers: function() {\n\t\tvar me = this;\n\t\tvar newControllers = [];\n\t\tvar datasets = me.data.datasets;\n\t\tvar i, ilen;\n\n\t\tfor (i = 0, ilen = datasets.length; i < ilen; i++) {\n\t\t\tvar dataset = datasets[i];\n\t\t\tvar meta = me.getDatasetMeta(i);\n\t\t\tvar type = dataset.type || me.config.type;\n\n\t\t\tif (meta.type && meta.type !== type) {\n\t\t\t\tme.destroyDatasetMeta(i);\n\t\t\t\tmeta = me.getDatasetMeta(i);\n\t\t\t}\n\t\t\tmeta.type = type;\n\t\t\tmeta.order = dataset.order || 0;\n\t\t\tmeta.index = i;\n\n\t\t\tif (meta.controller) {\n\t\t\t\tmeta.controller.updateIndex(i);\n\t\t\t\tmeta.controller.linkScales();\n\t\t\t} else {\n\t\t\t\tvar ControllerClass = controllers[meta.type];\n\t\t\t\tif (ControllerClass === undefined) {\n\t\t\t\t\tthrow new Error('\"' + meta.type + '\" is not a chart type.');\n\t\t\t\t}\n\n\t\t\t\tmeta.controller = new ControllerClass(me, i);\n\t\t\t\tnewControllers.push(meta.controller);\n\t\t\t}\n\t\t}\n\n\t\treturn newControllers;\n\t},\n\n\t/**\n\t * Reset the elements of all datasets\n\t * @private\n\t */\n\tresetElements: function() {\n\t\tvar me = this;\n\t\thelpers$1.each(me.data.datasets, function(dataset, datasetIndex) {\n\t\t\tme.getDatasetMeta(datasetIndex).controller.reset();\n\t\t}, me);\n\t},\n\n\t/**\n\t* Resets the chart back to it's state before the initial animation\n\t*/\n\treset: function() {\n\t\tthis.resetElements();\n\t\tthis.tooltip.initialize();\n\t},\n\n\tupdate: function(config) {\n\t\tvar me = this;\n\t\tvar i, ilen;\n\n\t\tif (!config || typeof config !== 'object') {\n\t\t\t// backwards compatibility\n\t\t\tconfig = {\n\t\t\t\tduration: config,\n\t\t\t\tlazy: arguments[1]\n\t\t\t};\n\t\t}\n\n\t\tupdateConfig(me);\n\n\t\t// plugins options references might have change, let's invalidate the cache\n\t\t// https://github.com/chartjs/Chart.js/issues/5111#issuecomment-355934167\n\t\tcore_plugins._invalidate(me);\n\n\t\tif (core_plugins.notify(me, 'beforeUpdate') === false) {\n\t\t\treturn;\n\t\t}\n\n\t\t// In case the entire data object changed\n\t\tme.tooltip._data = me.data;\n\n\t\t// Make sure dataset controllers are updated and new controllers are reset\n\t\tvar newControllers = me.buildOrUpdateControllers();\n\n\t\t// Make sure all dataset controllers have correct meta data counts\n\t\tfor (i = 0, ilen = me.data.datasets.length; i < ilen; i++) {\n\t\t\tme.getDatasetMeta(i).controller.buildOrUpdateElements();\n\t\t}\n\n\t\tme.updateLayout();\n\n\t\t// Can only reset the new controllers after the scales have been updated\n\t\tif (me.options.animation && me.options.animation.duration) {\n\t\t\thelpers$1.each(newControllers, function(controller) {\n\t\t\t\tcontroller.reset();\n\t\t\t});\n\t\t}\n\n\t\tme.updateDatasets();\n\n\t\t// Need to reset tooltip in case it is displayed with elements that are removed\n\t\t// after update.\n\t\tme.tooltip.initialize();\n\n\t\t// Last active contains items that were previously in the tooltip.\n\t\t// When we reset the tooltip, we need to clear it\n\t\tme.lastActive = [];\n\n\t\t// Do this before render so that any plugins that need final scale updates can use it\n\t\tcore_plugins.notify(me, 'afterUpdate');\n\n\t\tme._layers.sort(compare2Level('z', '_idx'));\n\n\t\tif (me._bufferedRender) {\n\t\t\tme._bufferedRequest = {\n\t\t\t\tduration: config.duration,\n\t\t\t\teasing: config.easing,\n\t\t\t\tlazy: config.lazy\n\t\t\t};\n\t\t} else {\n\t\t\tme.render(config);\n\t\t}\n\t},\n\n\t/**\n\t * Updates the chart layout unless a plugin returns `false` to the `beforeLayout`\n\t * hook, in which case, plugins will not be called on `afterLayout`.\n\t * @private\n\t */\n\tupdateLayout: function() {\n\t\tvar me = this;\n\n\t\tif (core_plugins.notify(me, 'beforeLayout') === false) {\n\t\t\treturn;\n\t\t}\n\n\t\tcore_layouts.update(this, this.width, this.height);\n\n\t\tme._layers = [];\n\t\thelpers$1.each(me.boxes, function(box) {\n\t\t\t// _configure is called twice, once in core.scale.update and once here.\n\t\t\t// Here the boxes are fully updated and at their final positions.\n\t\t\tif (box._configure) {\n\t\t\t\tbox._configure();\n\t\t\t}\n\t\t\tme._layers.push.apply(me._layers, box._layers());\n\t\t}, me);\n\n\t\tme._layers.forEach(function(item, index) {\n\t\t\titem._idx = index;\n\t\t});\n\n\t\t/**\n\t\t * Provided for backward compatibility, use `afterLayout` instead.\n\t\t * @method IPlugin#afterScaleUpdate\n\t\t * @deprecated since version 2.5.0\n\t\t * @todo remove at version 3\n\t\t * @private\n\t\t */\n\t\tcore_plugins.notify(me, 'afterScaleUpdate');\n\t\tcore_plugins.notify(me, 'afterLayout');\n\t},\n\n\t/**\n\t * Updates all datasets unless a plugin returns `false` to the `beforeDatasetsUpdate`\n\t * hook, in which case, plugins will not be called on `afterDatasetsUpdate`.\n\t * @private\n\t */\n\tupdateDatasets: function() {\n\t\tvar me = this;\n\n\t\tif (core_plugins.notify(me, 'beforeDatasetsUpdate') === false) {\n\t\t\treturn;\n\t\t}\n\n\t\tfor (var i = 0, ilen = me.data.datasets.length; i < ilen; ++i) {\n\t\t\tme.updateDataset(i);\n\t\t}\n\n\t\tcore_plugins.notify(me, 'afterDatasetsUpdate');\n\t},\n\n\t/**\n\t * Updates dataset at index unless a plugin returns `false` to the `beforeDatasetUpdate`\n\t * hook, in which case, plugins will not be called on `afterDatasetUpdate`.\n\t * @private\n\t */\n\tupdateDataset: function(index) {\n\t\tvar me = this;\n\t\tvar meta = me.getDatasetMeta(index);\n\t\tvar args = {\n\t\t\tmeta: meta,\n\t\t\tindex: index\n\t\t};\n\n\t\tif (core_plugins.notify(me, 'beforeDatasetUpdate', [args]) === false) {\n\t\t\treturn;\n\t\t}\n\n\t\tmeta.controller._update();\n\n\t\tcore_plugins.notify(me, 'afterDatasetUpdate', [args]);\n\t},\n\n\trender: function(config) {\n\t\tvar me = this;\n\n\t\tif (!config || typeof config !== 'object') {\n\t\t\t// backwards compatibility\n\t\t\tconfig = {\n\t\t\t\tduration: config,\n\t\t\t\tlazy: arguments[1]\n\t\t\t};\n\t\t}\n\n\t\tvar animationOptions = me.options.animation;\n\t\tvar duration = valueOrDefault$9(config.duration, animationOptions && animationOptions.duration);\n\t\tvar lazy = config.lazy;\n\n\t\tif (core_plugins.notify(me, 'beforeRender') === false) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar onComplete = function(animation) {\n\t\t\tcore_plugins.notify(me, 'afterRender');\n\t\t\thelpers$1.callback(animationOptions && animationOptions.onComplete, [animation], me);\n\t\t};\n\n\t\tif (animationOptions && duration) {\n\t\t\tvar animation = new core_animation({\n\t\t\t\tnumSteps: duration / 16.66, // 60 fps\n\t\t\t\teasing: config.easing || animationOptions.easing,\n\n\t\t\t\trender: function(chart, animationObject) {\n\t\t\t\t\tvar easingFunction = helpers$1.easing.effects[animationObject.easing];\n\t\t\t\t\tvar currentStep = animationObject.currentStep;\n\t\t\t\t\tvar stepDecimal = currentStep / animationObject.numSteps;\n\n\t\t\t\t\tchart.draw(easingFunction(stepDecimal), stepDecimal, currentStep);\n\t\t\t\t},\n\n\t\t\t\tonAnimationProgress: animationOptions.onProgress,\n\t\t\t\tonAnimationComplete: onComplete\n\t\t\t});\n\n\t\t\tcore_animations.addAnimation(me, animation, duration, lazy);\n\t\t} else {\n\t\t\tme.draw();\n\n\t\t\t// See https://github.com/chartjs/Chart.js/issues/3781\n\t\t\tonComplete(new core_animation({numSteps: 0, chart: me}));\n\t\t}\n\n\t\treturn me;\n\t},\n\n\tdraw: function(easingValue) {\n\t\tvar me = this;\n\t\tvar i, layers;\n\n\t\tme.clear();\n\n\t\tif (helpers$1.isNullOrUndef(easingValue)) {\n\t\t\teasingValue = 1;\n\t\t}\n\n\t\tme.transition(easingValue);\n\n\t\tif (me.width <= 0 || me.height <= 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (core_plugins.notify(me, 'beforeDraw', [easingValue]) === false) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Because of plugin hooks (before/afterDatasetsDraw), datasets can't\n\t\t// currently be part of layers. Instead, we draw\n\t\t// layers <= 0 before(default, backward compat), and the rest after\n\t\tlayers = me._layers;\n\t\tfor (i = 0; i < layers.length && layers[i].z <= 0; ++i) {\n\t\t\tlayers[i].draw(me.chartArea);\n\t\t}\n\n\t\tme.drawDatasets(easingValue);\n\n\t\t// Rest of layers\n\t\tfor (; i < layers.length; ++i) {\n\t\t\tlayers[i].draw(me.chartArea);\n\t\t}\n\n\t\tme._drawTooltip(easingValue);\n\n\t\tcore_plugins.notify(me, 'afterDraw', [easingValue]);\n\t},\n\n\t/**\n\t * @private\n\t */\n\ttransition: function(easingValue) {\n\t\tvar me = this;\n\n\t\tfor (var i = 0, ilen = (me.data.datasets || []).length; i < ilen; ++i) {\n\t\t\tif (me.isDatasetVisible(i)) {\n\t\t\t\tme.getDatasetMeta(i).controller.transition(easingValue);\n\t\t\t}\n\t\t}\n\n\t\tme.tooltip.transition(easingValue);\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_getSortedDatasetMetas: function(filterVisible) {\n\t\tvar me = this;\n\t\tvar datasets = me.data.datasets || [];\n\t\tvar result = [];\n\t\tvar i, ilen;\n\n\t\tfor (i = 0, ilen = datasets.length; i < ilen; ++i) {\n\t\t\tif (!filterVisible || me.isDatasetVisible(i)) {\n\t\t\t\tresult.push(me.getDatasetMeta(i));\n\t\t\t}\n\t\t}\n\n\t\tresult.sort(compare2Level('order', 'index'));\n\n\t\treturn result;\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_getSortedVisibleDatasetMetas: function() {\n\t\treturn this._getSortedDatasetMetas(true);\n\t},\n\n\t/**\n\t * Draws all datasets unless a plugin returns `false` to the `beforeDatasetsDraw`\n\t * hook, in which case, plugins will not be called on `afterDatasetsDraw`.\n\t * @private\n\t */\n\tdrawDatasets: function(easingValue) {\n\t\tvar me = this;\n\t\tvar metasets, i;\n\n\t\tif (core_plugins.notify(me, 'beforeDatasetsDraw', [easingValue]) === false) {\n\t\t\treturn;\n\t\t}\n\n\t\tmetasets = me._getSortedVisibleDatasetMetas();\n\t\tfor (i = metasets.length - 1; i >= 0; --i) {\n\t\t\tme.drawDataset(metasets[i], easingValue);\n\t\t}\n\n\t\tcore_plugins.notify(me, 'afterDatasetsDraw', [easingValue]);\n\t},\n\n\t/**\n\t * Draws dataset at index unless a plugin returns `false` to the `beforeDatasetDraw`\n\t * hook, in which case, plugins will not be called on `afterDatasetDraw`.\n\t * @private\n\t */\n\tdrawDataset: function(meta, easingValue) {\n\t\tvar me = this;\n\t\tvar args = {\n\t\t\tmeta: meta,\n\t\t\tindex: meta.index,\n\t\t\teasingValue: easingValue\n\t\t};\n\n\t\tif (core_plugins.notify(me, 'beforeDatasetDraw', [args]) === false) {\n\t\t\treturn;\n\t\t}\n\n\t\tmeta.controller.draw(easingValue);\n\n\t\tcore_plugins.notify(me, 'afterDatasetDraw', [args]);\n\t},\n\n\t/**\n\t * Draws tooltip unless a plugin returns `false` to the `beforeTooltipDraw`\n\t * hook, in which case, plugins will not be called on `afterTooltipDraw`.\n\t * @private\n\t */\n\t_drawTooltip: function(easingValue) {\n\t\tvar me = this;\n\t\tvar tooltip = me.tooltip;\n\t\tvar args = {\n\t\t\ttooltip: tooltip,\n\t\t\teasingValue: easingValue\n\t\t};\n\n\t\tif (core_plugins.notify(me, 'beforeTooltipDraw', [args]) === false) {\n\t\t\treturn;\n\t\t}\n\n\t\ttooltip.draw();\n\n\t\tcore_plugins.notify(me, 'afterTooltipDraw', [args]);\n\t},\n\n\t/**\n\t * Get the single element that was clicked on\n\t * @return An object containing the dataset index and element index of the matching element. Also contains the rectangle that was draw\n\t */\n\tgetElementAtEvent: function(e) {\n\t\treturn core_interaction.modes.single(this, e);\n\t},\n\n\tgetElementsAtEvent: function(e) {\n\t\treturn core_interaction.modes.label(this, e, {intersect: true});\n\t},\n\n\tgetElementsAtXAxis: function(e) {\n\t\treturn core_interaction.modes['x-axis'](this, e, {intersect: true});\n\t},\n\n\tgetElementsAtEventForMode: function(e, mode, options) {\n\t\tvar method = core_interaction.modes[mode];\n\t\tif (typeof method === 'function') {\n\t\t\treturn method(this, e, options);\n\t\t}\n\n\t\treturn [];\n\t},\n\n\tgetDatasetAtEvent: function(e) {\n\t\treturn core_interaction.modes.dataset(this, e, {intersect: true});\n\t},\n\n\tgetDatasetMeta: function(datasetIndex) {\n\t\tvar me = this;\n\t\tvar dataset = me.data.datasets[datasetIndex];\n\t\tif (!dataset._meta) {\n\t\t\tdataset._meta = {};\n\t\t}\n\n\t\tvar meta = dataset._meta[me.id];\n\t\tif (!meta) {\n\t\t\tmeta = dataset._meta[me.id] = {\n\t\t\t\ttype: null,\n\t\t\t\tdata: [],\n\t\t\t\tdataset: null,\n\t\t\t\tcontroller: null,\n\t\t\t\thidden: null,\t\t\t// See isDatasetVisible() comment\n\t\t\t\txAxisID: null,\n\t\t\t\tyAxisID: null,\n\t\t\t\torder: dataset.order || 0,\n\t\t\t\tindex: datasetIndex\n\t\t\t};\n\t\t}\n\n\t\treturn meta;\n\t},\n\n\tgetVisibleDatasetCount: function() {\n\t\tvar count = 0;\n\t\tfor (var i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n\t\t\tif (this.isDatasetVisible(i)) {\n\t\t\t\tcount++;\n\t\t\t}\n\t\t}\n\t\treturn count;\n\t},\n\n\tisDatasetVisible: function(datasetIndex) {\n\t\tvar meta = this.getDatasetMeta(datasetIndex);\n\n\t\t// meta.hidden is a per chart dataset hidden flag override with 3 states: if true or false,\n\t\t// the dataset.hidden value is ignored, else if null, the dataset hidden state is returned.\n\t\treturn typeof meta.hidden === 'boolean' ? !meta.hidden : !this.data.datasets[datasetIndex].hidden;\n\t},\n\n\tgenerateLegend: function() {\n\t\treturn this.options.legendCallback(this);\n\t},\n\n\t/**\n\t * @private\n\t */\n\tdestroyDatasetMeta: function(datasetIndex) {\n\t\tvar id = this.id;\n\t\tvar dataset = this.data.datasets[datasetIndex];\n\t\tvar meta = dataset._meta && dataset._meta[id];\n\n\t\tif (meta) {\n\t\t\tmeta.controller.destroy();\n\t\t\tdelete dataset._meta[id];\n\t\t}\n\t},\n\n\tdestroy: function() {\n\t\tvar me = this;\n\t\tvar canvas = me.canvas;\n\t\tvar i, ilen;\n\n\t\tme.stop();\n\n\t\t// dataset controllers need to cleanup associated data\n\t\tfor (i = 0, ilen = me.data.datasets.length; i < ilen; ++i) {\n\t\t\tme.destroyDatasetMeta(i);\n\t\t}\n\n\t\tif (canvas) {\n\t\t\tme.unbindEvents();\n\t\t\thelpers$1.canvas.clear(me);\n\t\t\tplatform.releaseContext(me.ctx);\n\t\t\tme.canvas = null;\n\t\t\tme.ctx = null;\n\t\t}\n\n\t\tcore_plugins.notify(me, 'destroy');\n\n\t\tdelete Chart.instances[me.id];\n\t},\n\n\ttoBase64Image: function() {\n\t\treturn this.canvas.toDataURL.apply(this.canvas, arguments);\n\t},\n\n\tinitToolTip: function() {\n\t\tvar me = this;\n\t\tme.tooltip = new core_tooltip({\n\t\t\t_chart: me,\n\t\t\t_chartInstance: me, // deprecated, backward compatibility\n\t\t\t_data: me.data,\n\t\t\t_options: me.options.tooltips\n\t\t}, me);\n\t},\n\n\t/**\n\t * @private\n\t */\n\tbindEvents: function() {\n\t\tvar me = this;\n\t\tvar listeners = me._listeners = {};\n\t\tvar listener = function() {\n\t\t\tme.eventHandler.apply(me, arguments);\n\t\t};\n\n\t\thelpers$1.each(me.options.events, function(type) {\n\t\t\tplatform.addEventListener(me, type, listener);\n\t\t\tlisteners[type] = listener;\n\t\t});\n\n\t\t// Elements used to detect size change should not be injected for non responsive charts.\n\t\t// See https://github.com/chartjs/Chart.js/issues/2210\n\t\tif (me.options.responsive) {\n\t\t\tlistener = function() {\n\t\t\t\tme.resize();\n\t\t\t};\n\n\t\t\tplatform.addEventListener(me, 'resize', listener);\n\t\t\tlisteners.resize = listener;\n\t\t}\n\t},\n\n\t/**\n\t * @private\n\t */\n\tunbindEvents: function() {\n\t\tvar me = this;\n\t\tvar listeners = me._listeners;\n\t\tif (!listeners) {\n\t\t\treturn;\n\t\t}\n\n\t\tdelete me._listeners;\n\t\thelpers$1.each(listeners, function(listener, type) {\n\t\t\tplatform.removeEventListener(me, type, listener);\n\t\t});\n\t},\n\n\tupdateHoverStyle: function(elements, mode, enabled) {\n\t\tvar prefix = enabled ? 'set' : 'remove';\n\t\tvar element, i, ilen;\n\n\t\tfor (i = 0, ilen = elements.length; i < ilen; ++i) {\n\t\t\telement = elements[i];\n\t\t\tif (element) {\n\t\t\t\tthis.getDatasetMeta(element._datasetIndex).controller[prefix + 'HoverStyle'](element);\n\t\t\t}\n\t\t}\n\n\t\tif (mode === 'dataset') {\n\t\t\tthis.getDatasetMeta(elements[0]._datasetIndex).controller['_' + prefix + 'DatasetHoverStyle']();\n\t\t}\n\t},\n\n\t/**\n\t * @private\n\t */\n\teventHandler: function(e) {\n\t\tvar me = this;\n\t\tvar tooltip = me.tooltip;\n\n\t\tif (core_plugins.notify(me, 'beforeEvent', [e]) === false) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Buffer any update calls so that renders do not occur\n\t\tme._bufferedRender = true;\n\t\tme._bufferedRequest = null;\n\n\t\tvar changed = me.handleEvent(e);\n\t\t// for smooth tooltip animations issue #4989\n\t\t// the tooltip should be the source of change\n\t\t// Animation check workaround:\n\t\t// tooltip._start will be null when tooltip isn't animating\n\t\tif (tooltip) {\n\t\t\tchanged = tooltip._start\n\t\t\t\t? tooltip.handleEvent(e)\n\t\t\t\t: changed | tooltip.handleEvent(e);\n\t\t}\n\n\t\tcore_plugins.notify(me, 'afterEvent', [e]);\n\n\t\tvar bufferedRequest = me._bufferedRequest;\n\t\tif (bufferedRequest) {\n\t\t\t// If we have an update that was triggered, we need to do a normal render\n\t\t\tme.render(bufferedRequest);\n\t\t} else if (changed && !me.animating) {\n\t\t\t// If entering, leaving, or changing elements, animate the change via pivot\n\t\t\tme.stop();\n\n\t\t\t// We only need to render at this point. Updating will cause scales to be\n\t\t\t// recomputed generating flicker & using more memory than necessary.\n\t\t\tme.render({\n\t\t\t\tduration: me.options.hover.animationDuration,\n\t\t\t\tlazy: true\n\t\t\t});\n\t\t}\n\n\t\tme._bufferedRender = false;\n\t\tme._bufferedRequest = null;\n\n\t\treturn me;\n\t},\n\n\t/**\n\t * Handle an event\n\t * @private\n\t * @param {IEvent} event the event to handle\n\t * @return {boolean} true if the chart needs to re-render\n\t */\n\thandleEvent: function(e) {\n\t\tvar me = this;\n\t\tvar options = me.options || {};\n\t\tvar hoverOptions = options.hover;\n\t\tvar changed = false;\n\n\t\tme.lastActive = me.lastActive || [];\n\n\t\t// Find Active Elements for hover and tooltips\n\t\tif (e.type === 'mouseout') {\n\t\t\tme.active = [];\n\t\t} else {\n\t\t\tme.active = me.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions);\n\t\t}\n\n\t\t// Invoke onHover hook\n\t\t// Need to call with native event here to not break backwards compatibility\n\t\thelpers$1.callback(options.onHover || options.hover.onHover, [e.native, me.active], me);\n\n\t\tif (e.type === 'mouseup' || e.type === 'click') {\n\t\t\tif (options.onClick) {\n\t\t\t\t// Use e.native here for backwards compatibility\n\t\t\t\toptions.onClick.call(me, e.native, me.active);\n\t\t\t}\n\t\t}\n\n\t\t// Remove styling for last active (even if it may still be active)\n\t\tif (me.lastActive.length) {\n\t\t\tme.updateHoverStyle(me.lastActive, hoverOptions.mode, false);\n\t\t}\n\n\t\t// Built in hover styling\n\t\tif (me.active.length && hoverOptions.mode) {\n\t\t\tme.updateHoverStyle(me.active, hoverOptions.mode, true);\n\t\t}\n\n\t\tchanged = !helpers$1.arrayEquals(me.active, me.lastActive);\n\n\t\t// Remember Last Actives\n\t\tme.lastActive = me.active;\n\n\t\treturn changed;\n\t}\n});\n\n/**\n * NOTE(SB) We actually don't use this container anymore but we need to keep it\n * for backward compatibility. Though, it can still be useful for plugins that\n * would need to work on multiple charts?!\n */\nChart.instances = {};\n\nvar core_controller = Chart;\n\n// DEPRECATIONS\n\n/**\n * Provided for backward compatibility, use Chart instead.\n * @class Chart.Controller\n * @deprecated since version 2.6\n * @todo remove at version 3\n * @private\n */\nChart.Controller = Chart;\n\n/**\n * Provided for backward compatibility, not available anymore.\n * @namespace Chart\n * @deprecated since version 2.8\n * @todo remove at version 3\n * @private\n */\nChart.types = {};\n\n/**\n * Provided for backward compatibility, not available anymore.\n * @namespace Chart.helpers.configMerge\n * @deprecated since version 2.8.0\n * @todo remove at version 3\n * @private\n */\nhelpers$1.configMerge = mergeConfig;\n\n/**\n * Provided for backward compatibility, not available anymore.\n * @namespace Chart.helpers.scaleMerge\n * @deprecated since version 2.8.0\n * @todo remove at version 3\n * @private\n */\nhelpers$1.scaleMerge = mergeScaleConfig;\n\nvar core_helpers = function() {\n\n\t// -- Basic js utility methods\n\n\thelpers$1.where = function(collection, filterCallback) {\n\t\tif (helpers$1.isArray(collection) && Array.prototype.filter) {\n\t\t\treturn collection.filter(filterCallback);\n\t\t}\n\t\tvar filtered = [];\n\n\t\thelpers$1.each(collection, function(item) {\n\t\t\tif (filterCallback(item)) {\n\t\t\t\tfiltered.push(item);\n\t\t\t}\n\t\t});\n\n\t\treturn filtered;\n\t};\n\thelpers$1.findIndex = Array.prototype.findIndex ?\n\t\tfunction(array, callback, scope) {\n\t\t\treturn array.findIndex(callback, scope);\n\t\t} :\n\t\tfunction(array, callback, scope) {\n\t\t\tscope = scope === undefined ? array : scope;\n\t\t\tfor (var i = 0, ilen = array.length; i < ilen; ++i) {\n\t\t\t\tif (callback.call(scope, array[i], i, array)) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn -1;\n\t\t};\n\thelpers$1.findNextWhere = function(arrayToSearch, filterCallback, startIndex) {\n\t\t// Default to start of the array\n\t\tif (helpers$1.isNullOrUndef(startIndex)) {\n\t\t\tstartIndex = -1;\n\t\t}\n\t\tfor (var i = startIndex + 1; i < arrayToSearch.length; i++) {\n\t\t\tvar currentItem = arrayToSearch[i];\n\t\t\tif (filterCallback(currentItem)) {\n\t\t\t\treturn currentItem;\n\t\t\t}\n\t\t}\n\t};\n\thelpers$1.findPreviousWhere = function(arrayToSearch, filterCallback, startIndex) {\n\t\t// Default to end of the array\n\t\tif (helpers$1.isNullOrUndef(startIndex)) {\n\t\t\tstartIndex = arrayToSearch.length;\n\t\t}\n\t\tfor (var i = startIndex - 1; i >= 0; i--) {\n\t\t\tvar currentItem = arrayToSearch[i];\n\t\t\tif (filterCallback(currentItem)) {\n\t\t\t\treturn currentItem;\n\t\t\t}\n\t\t}\n\t};\n\n\t// -- Math methods\n\thelpers$1.isNumber = function(n) {\n\t\treturn !isNaN(parseFloat(n)) && isFinite(n);\n\t};\n\thelpers$1.almostEquals = function(x, y, epsilon) {\n\t\treturn Math.abs(x - y) < epsilon;\n\t};\n\thelpers$1.almostWhole = function(x, epsilon) {\n\t\tvar rounded = Math.round(x);\n\t\treturn ((rounded - epsilon) <= x) && ((rounded + epsilon) >= x);\n\t};\n\thelpers$1.max = function(array) {\n\t\treturn array.reduce(function(max, value) {\n\t\t\tif (!isNaN(value)) {\n\t\t\t\treturn Math.max(max, value);\n\t\t\t}\n\t\t\treturn max;\n\t\t}, Number.NEGATIVE_INFINITY);\n\t};\n\thelpers$1.min = function(array) {\n\t\treturn array.reduce(function(min, value) {\n\t\t\tif (!isNaN(value)) {\n\t\t\t\treturn Math.min(min, value);\n\t\t\t}\n\t\t\treturn min;\n\t\t}, Number.POSITIVE_INFINITY);\n\t};\n\thelpers$1.sign = Math.sign ?\n\t\tfunction(x) {\n\t\t\treturn Math.sign(x);\n\t\t} :\n\t\tfunction(x) {\n\t\t\tx = +x; // convert to a number\n\t\t\tif (x === 0 || isNaN(x)) {\n\t\t\t\treturn x;\n\t\t\t}\n\t\t\treturn x > 0 ? 1 : -1;\n\t\t};\n\thelpers$1.toRadians = function(degrees) {\n\t\treturn degrees * (Math.PI / 180);\n\t};\n\thelpers$1.toDegrees = function(radians) {\n\t\treturn radians * (180 / Math.PI);\n\t};\n\n\t/**\n\t * Returns the number of decimal places\n\t * i.e. the number of digits after the decimal point, of the value of this Number.\n\t * @param {number} x - A number.\n\t * @returns {number} The number of decimal places.\n\t * @private\n\t */\n\thelpers$1._decimalPlaces = function(x) {\n\t\tif (!helpers$1.isFinite(x)) {\n\t\t\treturn;\n\t\t}\n\t\tvar e = 1;\n\t\tvar p = 0;\n\t\twhile (Math.round(x * e) / e !== x) {\n\t\t\te *= 10;\n\t\t\tp++;\n\t\t}\n\t\treturn p;\n\t};\n\n\t// Gets the angle from vertical upright to the point about a centre.\n\thelpers$1.getAngleFromPoint = function(centrePoint, anglePoint) {\n\t\tvar distanceFromXCenter = anglePoint.x - centrePoint.x;\n\t\tvar distanceFromYCenter = anglePoint.y - centrePoint.y;\n\t\tvar radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter);\n\n\t\tvar angle = Math.atan2(distanceFromYCenter, distanceFromXCenter);\n\n\t\tif (angle < (-0.5 * Math.PI)) {\n\t\t\tangle += 2.0 * Math.PI; // make sure the returned angle is in the range of (-PI/2, 3PI/2]\n\t\t}\n\n\t\treturn {\n\t\t\tangle: angle,\n\t\t\tdistance: radialDistanceFromCenter\n\t\t};\n\t};\n\thelpers$1.distanceBetweenPoints = function(pt1, pt2) {\n\t\treturn Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2));\n\t};\n\n\t/**\n\t * Provided for backward compatibility, not available anymore\n\t * @function Chart.helpers.aliasPixel\n\t * @deprecated since version 2.8.0\n\t * @todo remove at version 3\n\t */\n\thelpers$1.aliasPixel = function(pixelWidth) {\n\t\treturn (pixelWidth % 2 === 0) ? 0 : 0.5;\n\t};\n\n\t/**\n\t * Returns the aligned pixel value to avoid anti-aliasing blur\n\t * @param {Chart} chart - The chart instance.\n\t * @param {number} pixel - A pixel value.\n\t * @param {number} width - The width of the element.\n\t * @returns {number} The aligned pixel value.\n\t * @private\n\t */\n\thelpers$1._alignPixel = function(chart, pixel, width) {\n\t\tvar devicePixelRatio = chart.currentDevicePixelRatio;\n\t\tvar halfWidth = width / 2;\n\t\treturn Math.round((pixel - halfWidth) * devicePixelRatio) / devicePixelRatio + halfWidth;\n\t};\n\n\thelpers$1.splineCurve = function(firstPoint, middlePoint, afterPoint, t) {\n\t\t// Props to Rob Spencer at scaled innovation for his post on splining between points\n\t\t// http://scaledinnovation.com/analytics/splines/aboutSplines.html\n\n\t\t// This function must also respect \"skipped\" points\n\n\t\tvar previous = firstPoint.skip ? middlePoint : firstPoint;\n\t\tvar current = middlePoint;\n\t\tvar next = afterPoint.skip ? middlePoint : afterPoint;\n\n\t\tvar d01 = Math.sqrt(Math.pow(current.x - previous.x, 2) + Math.pow(current.y - previous.y, 2));\n\t\tvar d12 = Math.sqrt(Math.pow(next.x - current.x, 2) + Math.pow(next.y - current.y, 2));\n\n\t\tvar s01 = d01 / (d01 + d12);\n\t\tvar s12 = d12 / (d01 + d12);\n\n\t\t// If all points are the same, s01 & s02 will be inf\n\t\ts01 = isNaN(s01) ? 0 : s01;\n\t\ts12 = isNaN(s12) ? 0 : s12;\n\n\t\tvar fa = t * s01; // scaling factor for triangle Ta\n\t\tvar fb = t * s12;\n\n\t\treturn {\n\t\t\tprevious: {\n\t\t\t\tx: current.x - fa * (next.x - previous.x),\n\t\t\t\ty: current.y - fa * (next.y - previous.y)\n\t\t\t},\n\t\t\tnext: {\n\t\t\t\tx: current.x + fb * (next.x - previous.x),\n\t\t\t\ty: current.y + fb * (next.y - previous.y)\n\t\t\t}\n\t\t};\n\t};\n\thelpers$1.EPSILON = Number.EPSILON || 1e-14;\n\thelpers$1.splineCurveMonotone = function(points) {\n\t\t// This function calculates Bézier control points in a similar way than |splineCurve|,\n\t\t// but preserves monotonicity of the provided data and ensures no local extremums are added\n\t\t// between the dataset discrete points due to the interpolation.\n\t\t// See : https://en.wikipedia.org/wiki/Monotone_cubic_interpolation\n\n\t\tvar pointsWithTangents = (points || []).map(function(point) {\n\t\t\treturn {\n\t\t\t\tmodel: point._model,\n\t\t\t\tdeltaK: 0,\n\t\t\t\tmK: 0\n\t\t\t};\n\t\t});\n\n\t\t// Calculate slopes (deltaK) and initialize tangents (mK)\n\t\tvar pointsLen = pointsWithTangents.length;\n\t\tvar i, pointBefore, pointCurrent, pointAfter;\n\t\tfor (i = 0; i < pointsLen; ++i) {\n\t\t\tpointCurrent = pointsWithTangents[i];\n\t\t\tif (pointCurrent.model.skip) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tpointBefore = i > 0 ? pointsWithTangents[i - 1] : null;\n\t\t\tpointAfter = i < pointsLen - 1 ? pointsWithTangents[i + 1] : null;\n\t\t\tif (pointAfter && !pointAfter.model.skip) {\n\t\t\t\tvar slopeDeltaX = (pointAfter.model.x - pointCurrent.model.x);\n\n\t\t\t\t// In the case of two points that appear at the same x pixel, slopeDeltaX is 0\n\t\t\t\tpointCurrent.deltaK = slopeDeltaX !== 0 ? (pointAfter.model.y - pointCurrent.model.y) / slopeDeltaX : 0;\n\t\t\t}\n\n\t\t\tif (!pointBefore || pointBefore.model.skip) {\n\t\t\t\tpointCurrent.mK = pointCurrent.deltaK;\n\t\t\t} else if (!pointAfter || pointAfter.model.skip) {\n\t\t\t\tpointCurrent.mK = pointBefore.deltaK;\n\t\t\t} else if (this.sign(pointBefore.deltaK) !== this.sign(pointCurrent.deltaK)) {\n\t\t\t\tpointCurrent.mK = 0;\n\t\t\t} else {\n\t\t\t\tpointCurrent.mK = (pointBefore.deltaK + pointCurrent.deltaK) / 2;\n\t\t\t}\n\t\t}\n\n\t\t// Adjust tangents to ensure monotonic properties\n\t\tvar alphaK, betaK, tauK, squaredMagnitude;\n\t\tfor (i = 0; i < pointsLen - 1; ++i) {\n\t\t\tpointCurrent = pointsWithTangents[i];\n\t\t\tpointAfter = pointsWithTangents[i + 1];\n\t\t\tif (pointCurrent.model.skip || pointAfter.model.skip) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (helpers$1.almostEquals(pointCurrent.deltaK, 0, this.EPSILON)) {\n\t\t\t\tpointCurrent.mK = pointAfter.mK = 0;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\talphaK = pointCurrent.mK / pointCurrent.deltaK;\n\t\t\tbetaK = pointAfter.mK / pointCurrent.deltaK;\n\t\t\tsquaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2);\n\t\t\tif (squaredMagnitude <= 9) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\ttauK = 3 / Math.sqrt(squaredMagnitude);\n\t\t\tpointCurrent.mK = alphaK * tauK * pointCurrent.deltaK;\n\t\t\tpointAfter.mK = betaK * tauK * pointCurrent.deltaK;\n\t\t}\n\n\t\t// Compute control points\n\t\tvar deltaX;\n\t\tfor (i = 0; i < pointsLen; ++i) {\n\t\t\tpointCurrent = pointsWithTangents[i];\n\t\t\tif (pointCurrent.model.skip) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tpointBefore = i > 0 ? pointsWithTangents[i - 1] : null;\n\t\t\tpointAfter = i < pointsLen - 1 ? pointsWithTangents[i + 1] : null;\n\t\t\tif (pointBefore && !pointBefore.model.skip) {\n\t\t\t\tdeltaX = (pointCurrent.model.x - pointBefore.model.x) / 3;\n\t\t\t\tpointCurrent.model.controlPointPreviousX = pointCurrent.model.x - deltaX;\n\t\t\t\tpointCurrent.model.controlPointPreviousY = pointCurrent.model.y - deltaX * pointCurrent.mK;\n\t\t\t}\n\t\t\tif (pointAfter && !pointAfter.model.skip) {\n\t\t\t\tdeltaX = (pointAfter.model.x - pointCurrent.model.x) / 3;\n\t\t\t\tpointCurrent.model.controlPointNextX = pointCurrent.model.x + deltaX;\n\t\t\t\tpointCurrent.model.controlPointNextY = pointCurrent.model.y + deltaX * pointCurrent.mK;\n\t\t\t}\n\t\t}\n\t};\n\thelpers$1.nextItem = function(collection, index, loop) {\n\t\tif (loop) {\n\t\t\treturn index >= collection.length - 1 ? collection[0] : collection[index + 1];\n\t\t}\n\t\treturn index >= collection.length - 1 ? collection[collection.length - 1] : collection[index + 1];\n\t};\n\thelpers$1.previousItem = function(collection, index, loop) {\n\t\tif (loop) {\n\t\t\treturn index <= 0 ? collection[collection.length - 1] : collection[index - 1];\n\t\t}\n\t\treturn index <= 0 ? collection[0] : collection[index - 1];\n\t};\n\t// Implementation of the nice number algorithm used in determining where axis labels will go\n\thelpers$1.niceNum = function(range, round) {\n\t\tvar exponent = Math.floor(helpers$1.log10(range));\n\t\tvar fraction = range / Math.pow(10, exponent);\n\t\tvar niceFraction;\n\n\t\tif (round) {\n\t\t\tif (fraction < 1.5) {\n\t\t\t\tniceFraction = 1;\n\t\t\t} else if (fraction < 3) {\n\t\t\t\tniceFraction = 2;\n\t\t\t} else if (fraction < 7) {\n\t\t\t\tniceFraction = 5;\n\t\t\t} else {\n\t\t\t\tniceFraction = 10;\n\t\t\t}\n\t\t} else if (fraction <= 1.0) {\n\t\t\tniceFraction = 1;\n\t\t} else if (fraction <= 2) {\n\t\t\tniceFraction = 2;\n\t\t} else if (fraction <= 5) {\n\t\t\tniceFraction = 5;\n\t\t} else {\n\t\t\tniceFraction = 10;\n\t\t}\n\n\t\treturn niceFraction * Math.pow(10, exponent);\n\t};\n\t// Request animation polyfill - https://www.paulirish.com/2011/requestanimationframe-for-smart-animating/\n\thelpers$1.requestAnimFrame = (function() {\n\t\tif (typeof window === 'undefined') {\n\t\t\treturn function(callback) {\n\t\t\t\tcallback();\n\t\t\t};\n\t\t}\n\t\treturn window.requestAnimationFrame ||\n\t\t\twindow.webkitRequestAnimationFrame ||\n\t\t\twindow.mozRequestAnimationFrame ||\n\t\t\twindow.oRequestAnimationFrame ||\n\t\t\twindow.msRequestAnimationFrame ||\n\t\t\tfunction(callback) {\n\t\t\t\treturn window.setTimeout(callback, 1000 / 60);\n\t\t\t};\n\t}());\n\t// -- DOM methods\n\thelpers$1.getRelativePosition = function(evt, chart) {\n\t\tvar mouseX, mouseY;\n\t\tvar e = evt.originalEvent || evt;\n\t\tvar canvas = evt.target || evt.srcElement;\n\t\tvar boundingRect = canvas.getBoundingClientRect();\n\n\t\tvar touches = e.touches;\n\t\tif (touches && touches.length > 0) {\n\t\t\tmouseX = touches[0].clientX;\n\t\t\tmouseY = touches[0].clientY;\n\n\t\t} else {\n\t\t\tmouseX = e.clientX;\n\t\t\tmouseY = e.clientY;\n\t\t}\n\n\t\t// Scale mouse coordinates into canvas coordinates\n\t\t// by following the pattern laid out by 'jerryj' in the comments of\n\t\t// https://www.html5canvastutorials.com/advanced/html5-canvas-mouse-coordinates/\n\t\tvar paddingLeft = parseFloat(helpers$1.getStyle(canvas, 'padding-left'));\n\t\tvar paddingTop = parseFloat(helpers$1.getStyle(canvas, 'padding-top'));\n\t\tvar paddingRight = parseFloat(helpers$1.getStyle(canvas, 'padding-right'));\n\t\tvar paddingBottom = parseFloat(helpers$1.getStyle(canvas, 'padding-bottom'));\n\t\tvar width = boundingRect.right - boundingRect.left - paddingLeft - paddingRight;\n\t\tvar height = boundingRect.bottom - boundingRect.top - paddingTop - paddingBottom;\n\n\t\t// We divide by the current device pixel ratio, because the canvas is scaled up by that amount in each direction. However\n\t\t// the backend model is in unscaled coordinates. Since we are going to deal with our model coordinates, we go back here\n\t\tmouseX = Math.round((mouseX - boundingRect.left - paddingLeft) / (width) * canvas.width / chart.currentDevicePixelRatio);\n\t\tmouseY = Math.round((mouseY - boundingRect.top - paddingTop) / (height) * canvas.height / chart.currentDevicePixelRatio);\n\n\t\treturn {\n\t\t\tx: mouseX,\n\t\t\ty: mouseY\n\t\t};\n\n\t};\n\n\t// Private helper function to convert max-width/max-height values that may be percentages into a number\n\tfunction parseMaxStyle(styleValue, node, parentProperty) {\n\t\tvar valueInPixels;\n\t\tif (typeof styleValue === 'string') {\n\t\t\tvalueInPixels = parseInt(styleValue, 10);\n\n\t\t\tif (styleValue.indexOf('%') !== -1) {\n\t\t\t\t// percentage * size in dimension\n\t\t\t\tvalueInPixels = valueInPixels / 100 * node.parentNode[parentProperty];\n\t\t\t}\n\t\t} else {\n\t\t\tvalueInPixels = styleValue;\n\t\t}\n\n\t\treturn valueInPixels;\n\t}\n\n\t/**\n\t * Returns if the given value contains an effective constraint.\n\t * @private\n\t */\n\tfunction isConstrainedValue(value) {\n\t\treturn value !== undefined && value !== null && value !== 'none';\n\t}\n\n\t/**\n\t * Returns the max width or height of the given DOM node in a cross-browser compatible fashion\n\t * @param {HTMLElement} domNode - the node to check the constraint on\n\t * @param {string} maxStyle - the style that defines the maximum for the direction we are using ('max-width' / 'max-height')\n\t * @param {string} percentageProperty - property of parent to use when calculating width as a percentage\n\t * @see {@link https://www.nathanaeljones.com/blog/2013/reading-max-width-cross-browser}\n\t */\n\tfunction getConstraintDimension(domNode, maxStyle, percentageProperty) {\n\t\tvar view = document.defaultView;\n\t\tvar parentNode = helpers$1._getParentNode(domNode);\n\t\tvar constrainedNode = view.getComputedStyle(domNode)[maxStyle];\n\t\tvar constrainedContainer = view.getComputedStyle(parentNode)[maxStyle];\n\t\tvar hasCNode = isConstrainedValue(constrainedNode);\n\t\tvar hasCContainer = isConstrainedValue(constrainedContainer);\n\t\tvar infinity = Number.POSITIVE_INFINITY;\n\n\t\tif (hasCNode || hasCContainer) {\n\t\t\treturn Math.min(\n\t\t\t\thasCNode ? parseMaxStyle(constrainedNode, domNode, percentageProperty) : infinity,\n\t\t\t\thasCContainer ? parseMaxStyle(constrainedContainer, parentNode, percentageProperty) : infinity);\n\t\t}\n\n\t\treturn 'none';\n\t}\n\t// returns Number or undefined if no constraint\n\thelpers$1.getConstraintWidth = function(domNode) {\n\t\treturn getConstraintDimension(domNode, 'max-width', 'clientWidth');\n\t};\n\t// returns Number or undefined if no constraint\n\thelpers$1.getConstraintHeight = function(domNode) {\n\t\treturn getConstraintDimension(domNode, 'max-height', 'clientHeight');\n\t};\n\t/**\n\t * @private\n \t */\n\thelpers$1._calculatePadding = function(container, padding, parentDimension) {\n\t\tpadding = helpers$1.getStyle(container, padding);\n\n\t\treturn padding.indexOf('%') > -1 ? parentDimension * parseInt(padding, 10) / 100 : parseInt(padding, 10);\n\t};\n\t/**\n\t * @private\n\t */\n\thelpers$1._getParentNode = function(domNode) {\n\t\tvar parent = domNode.parentNode;\n\t\tif (parent && parent.toString() === '[object ShadowRoot]') {\n\t\t\tparent = parent.host;\n\t\t}\n\t\treturn parent;\n\t};\n\thelpers$1.getMaximumWidth = function(domNode) {\n\t\tvar container = helpers$1._getParentNode(domNode);\n\t\tif (!container) {\n\t\t\treturn domNode.clientWidth;\n\t\t}\n\n\t\tvar clientWidth = container.clientWidth;\n\t\tvar paddingLeft = helpers$1._calculatePadding(container, 'padding-left', clientWidth);\n\t\tvar paddingRight = helpers$1._calculatePadding(container, 'padding-right', clientWidth);\n\n\t\tvar w = clientWidth - paddingLeft - paddingRight;\n\t\tvar cw = helpers$1.getConstraintWidth(domNode);\n\t\treturn isNaN(cw) ? w : Math.min(w, cw);\n\t};\n\thelpers$1.getMaximumHeight = function(domNode) {\n\t\tvar container = helpers$1._getParentNode(domNode);\n\t\tif (!container) {\n\t\t\treturn domNode.clientHeight;\n\t\t}\n\n\t\tvar clientHeight = container.clientHeight;\n\t\tvar paddingTop = helpers$1._calculatePadding(container, 'padding-top', clientHeight);\n\t\tvar paddingBottom = helpers$1._calculatePadding(container, 'padding-bottom', clientHeight);\n\n\t\tvar h = clientHeight - paddingTop - paddingBottom;\n\t\tvar ch = helpers$1.getConstraintHeight(domNode);\n\t\treturn isNaN(ch) ? h : Math.min(h, ch);\n\t};\n\thelpers$1.getStyle = function(el, property) {\n\t\treturn el.currentStyle ?\n\t\t\tel.currentStyle[property] :\n\t\t\tdocument.defaultView.getComputedStyle(el, null).getPropertyValue(property);\n\t};\n\thelpers$1.retinaScale = function(chart, forceRatio) {\n\t\tvar pixelRatio = chart.currentDevicePixelRatio = forceRatio || (typeof window !== 'undefined' && window.devicePixelRatio) || 1;\n\t\tif (pixelRatio === 1) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar canvas = chart.canvas;\n\t\tvar height = chart.height;\n\t\tvar width = chart.width;\n\n\t\tcanvas.height = height * pixelRatio;\n\t\tcanvas.width = width * pixelRatio;\n\t\tchart.ctx.scale(pixelRatio, pixelRatio);\n\n\t\t// If no style has been set on the canvas, the render size is used as display size,\n\t\t// making the chart visually bigger, so let's enforce it to the \"correct\" values.\n\t\t// See https://github.com/chartjs/Chart.js/issues/3575\n\t\tif (!canvas.style.height && !canvas.style.width) {\n\t\t\tcanvas.style.height = height + 'px';\n\t\t\tcanvas.style.width = width + 'px';\n\t\t}\n\t};\n\t// -- Canvas methods\n\thelpers$1.fontString = function(pixelSize, fontStyle, fontFamily) {\n\t\treturn fontStyle + ' ' + pixelSize + 'px ' + fontFamily;\n\t};\n\thelpers$1.longestText = function(ctx, font, arrayOfThings, cache) {\n\t\tcache = cache || {};\n\t\tvar data = cache.data = cache.data || {};\n\t\tvar gc = cache.garbageCollect = cache.garbageCollect || [];\n\n\t\tif (cache.font !== font) {\n\t\t\tdata = cache.data = {};\n\t\t\tgc = cache.garbageCollect = [];\n\t\t\tcache.font = font;\n\t\t}\n\n\t\tctx.font = font;\n\t\tvar longest = 0;\n\t\tvar ilen = arrayOfThings.length;\n\t\tvar i, j, jlen, thing, nestedThing;\n\t\tfor (i = 0; i < ilen; i++) {\n\t\t\tthing = arrayOfThings[i];\n\n\t\t\t// Undefined strings and arrays should not be measured\n\t\t\tif (thing !== undefined && thing !== null && helpers$1.isArray(thing) !== true) {\n\t\t\t\tlongest = helpers$1.measureText(ctx, data, gc, longest, thing);\n\t\t\t} else if (helpers$1.isArray(thing)) {\n\t\t\t\t// if it is an array lets measure each element\n\t\t\t\t// to do maybe simplify this function a bit so we can do this more recursively?\n\t\t\t\tfor (j = 0, jlen = thing.length; j < jlen; j++) {\n\t\t\t\t\tnestedThing = thing[j];\n\t\t\t\t\t// Undefined strings and arrays should not be measured\n\t\t\t\t\tif (nestedThing !== undefined && nestedThing !== null && !helpers$1.isArray(nestedThing)) {\n\t\t\t\t\t\tlongest = helpers$1.measureText(ctx, data, gc, longest, nestedThing);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tvar gcLen = gc.length / 2;\n\t\tif (gcLen > arrayOfThings.length) {\n\t\t\tfor (i = 0; i < gcLen; i++) {\n\t\t\t\tdelete data[gc[i]];\n\t\t\t}\n\t\t\tgc.splice(0, gcLen);\n\t\t}\n\t\treturn longest;\n\t};\n\thelpers$1.measureText = function(ctx, data, gc, longest, string) {\n\t\tvar textWidth = data[string];\n\t\tif (!textWidth) {\n\t\t\ttextWidth = data[string] = ctx.measureText(string).width;\n\t\t\tgc.push(string);\n\t\t}\n\t\tif (textWidth > longest) {\n\t\t\tlongest = textWidth;\n\t\t}\n\t\treturn longest;\n\t};\n\n\t/**\n\t * @deprecated\n\t */\n\thelpers$1.numberOfLabelLines = function(arrayOfThings) {\n\t\tvar numberOfLines = 1;\n\t\thelpers$1.each(arrayOfThings, function(thing) {\n\t\t\tif (helpers$1.isArray(thing)) {\n\t\t\t\tif (thing.length > numberOfLines) {\n\t\t\t\t\tnumberOfLines = thing.length;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\treturn numberOfLines;\n\t};\n\n\thelpers$1.color = !chartjsColor ?\n\t\tfunction(value) {\n\t\t\tconsole.error('Color.js not found!');\n\t\t\treturn value;\n\t\t} :\n\t\tfunction(value) {\n\t\t\t/* global CanvasGradient */\n\t\t\tif (value instanceof CanvasGradient) {\n\t\t\t\tvalue = core_defaults.global.defaultColor;\n\t\t\t}\n\n\t\t\treturn chartjsColor(value);\n\t\t};\n\n\thelpers$1.getHoverColor = function(colorValue) {\n\t\t/* global CanvasPattern */\n\t\treturn (colorValue instanceof CanvasPattern || colorValue instanceof CanvasGradient) ?\n\t\t\tcolorValue :\n\t\t\thelpers$1.color(colorValue).saturate(0.5).darken(0.1).rgbString();\n\t};\n};\n\nfunction abstract() {\n\tthrow new Error(\n\t\t'This method is not implemented: either no adapter can ' +\n\t\t'be found or an incomplete integration was provided.'\n\t);\n}\n\n/**\n * Date adapter (current used by the time scale)\n * @namespace Chart._adapters._date\n * @memberof Chart._adapters\n * @private\n */\n\n/**\n * Currently supported unit string values.\n * @typedef {('millisecond'|'second'|'minute'|'hour'|'day'|'week'|'month'|'quarter'|'year')}\n * @memberof Chart._adapters._date\n * @name Unit\n */\n\n/**\n * @class\n */\nfunction DateAdapter(options) {\n\tthis.options = options || {};\n}\n\nhelpers$1.extend(DateAdapter.prototype, /** @lends DateAdapter */ {\n\t/**\n\t * Returns a map of time formats for the supported formatting units defined\n\t * in Unit as well as 'datetime' representing a detailed date/time string.\n\t * @returns {{string: string}}\n\t */\n\tformats: abstract,\n\n\t/**\n\t * Parses the given `value` and return the associated timestamp.\n\t * @param {any} value - the value to parse (usually comes from the data)\n\t * @param {string} [format] - the expected data format\n\t * @returns {(number|null)}\n\t * @function\n\t */\n\tparse: abstract,\n\n\t/**\n\t * Returns the formatted date in the specified `format` for a given `timestamp`.\n\t * @param {number} timestamp - the timestamp to format\n\t * @param {string} format - the date/time token\n\t * @return {string}\n\t * @function\n\t */\n\tformat: abstract,\n\n\t/**\n\t * Adds the specified `amount` of `unit` to the given `timestamp`.\n\t * @param {number} timestamp - the input timestamp\n\t * @param {number} amount - the amount to add\n\t * @param {Unit} unit - the unit as string\n\t * @return {number}\n\t * @function\n\t */\n\tadd: abstract,\n\n\t/**\n\t * Returns the number of `unit` between the given timestamps.\n\t * @param {number} max - the input timestamp (reference)\n\t * @param {number} min - the timestamp to substract\n\t * @param {Unit} unit - the unit as string\n\t * @return {number}\n\t * @function\n\t */\n\tdiff: abstract,\n\n\t/**\n\t * Returns start of `unit` for the given `timestamp`.\n\t * @param {number} timestamp - the input timestamp\n\t * @param {Unit} unit - the unit as string\n\t * @param {number} [weekday] - the ISO day of the week with 1 being Monday\n\t * and 7 being Sunday (only needed if param *unit* is `isoWeek`).\n\t * @function\n\t */\n\tstartOf: abstract,\n\n\t/**\n\t * Returns end of `unit` for the given `timestamp`.\n\t * @param {number} timestamp - the input timestamp\n\t * @param {Unit} unit - the unit as string\n\t * @function\n\t */\n\tendOf: abstract,\n\n\t// DEPRECATIONS\n\n\t/**\n\t * Provided for backward compatibility for scale.getValueForPixel(),\n\t * this method should be overridden only by the moment adapter.\n\t * @deprecated since version 2.8.0\n\t * @todo remove at version 3\n\t * @private\n\t */\n\t_create: function(value) {\n\t\treturn value;\n\t}\n});\n\nDateAdapter.override = function(members) {\n\thelpers$1.extend(DateAdapter.prototype, members);\n};\n\nvar _date = DateAdapter;\n\nvar core_adapters = {\n\t_date: _date\n};\n\n/**\n * Namespace to hold static tick generation functions\n * @namespace Chart.Ticks\n */\nvar core_ticks = {\n\t/**\n\t * Namespace to hold formatters for different types of ticks\n\t * @namespace Chart.Ticks.formatters\n\t */\n\tformatters: {\n\t\t/**\n\t\t * Formatter for value labels\n\t\t * @method Chart.Ticks.formatters.values\n\t\t * @param value the value to display\n\t\t * @return {string|string[]} the label to display\n\t\t */\n\t\tvalues: function(value) {\n\t\t\treturn helpers$1.isArray(value) ? value : '' + value;\n\t\t},\n\n\t\t/**\n\t\t * Formatter for linear numeric ticks\n\t\t * @method Chart.Ticks.formatters.linear\n\t\t * @param tickValue {number} the value to be formatted\n\t\t * @param index {number} the position of the tickValue parameter in the ticks array\n\t\t * @param ticks {number[]} the list of ticks being converted\n\t\t * @return {string} string representation of the tickValue parameter\n\t\t */\n\t\tlinear: function(tickValue, index, ticks) {\n\t\t\t// If we have lots of ticks, don't use the ones\n\t\t\tvar delta = ticks.length > 3 ? ticks[2] - ticks[1] : ticks[1] - ticks[0];\n\n\t\t\t// If we have a number like 2.5 as the delta, figure out how many decimal places we need\n\t\t\tif (Math.abs(delta) > 1) {\n\t\t\t\tif (tickValue !== Math.floor(tickValue)) {\n\t\t\t\t\t// not an integer\n\t\t\t\t\tdelta = tickValue - Math.floor(tickValue);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar logDelta = helpers$1.log10(Math.abs(delta));\n\t\t\tvar tickString = '';\n\n\t\t\tif (tickValue !== 0) {\n\t\t\t\tvar maxTick = Math.max(Math.abs(ticks[0]), Math.abs(ticks[ticks.length - 1]));\n\t\t\t\tif (maxTick < 1e-4) { // all ticks are small numbers; use scientific notation\n\t\t\t\t\tvar logTick = helpers$1.log10(Math.abs(tickValue));\n\t\t\t\t\tvar numExponential = Math.floor(logTick) - Math.floor(logDelta);\n\t\t\t\t\tnumExponential = Math.max(Math.min(numExponential, 20), 0);\n\t\t\t\t\ttickString = tickValue.toExponential(numExponential);\n\t\t\t\t} else {\n\t\t\t\t\tvar numDecimal = -1 * Math.floor(logDelta);\n\t\t\t\t\tnumDecimal = Math.max(Math.min(numDecimal, 20), 0); // toFixed has a max of 20 decimal places\n\t\t\t\t\ttickString = tickValue.toFixed(numDecimal);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\ttickString = '0'; // never show decimal places for 0\n\t\t\t}\n\n\t\t\treturn tickString;\n\t\t},\n\n\t\tlogarithmic: function(tickValue, index, ticks) {\n\t\t\tvar remain = tickValue / (Math.pow(10, Math.floor(helpers$1.log10(tickValue))));\n\n\t\t\tif (tickValue === 0) {\n\t\t\t\treturn '0';\n\t\t\t} else if (remain === 1 || remain === 2 || remain === 5 || index === 0 || index === ticks.length - 1) {\n\t\t\t\treturn tickValue.toExponential();\n\t\t\t}\n\t\t\treturn '';\n\t\t}\n\t}\n};\n\nvar isArray = helpers$1.isArray;\nvar isNullOrUndef = helpers$1.isNullOrUndef;\nvar valueOrDefault$a = helpers$1.valueOrDefault;\nvar valueAtIndexOrDefault = helpers$1.valueAtIndexOrDefault;\n\ncore_defaults._set('scale', {\n\tdisplay: true,\n\tposition: 'left',\n\toffset: false,\n\n\t// grid line settings\n\tgridLines: {\n\t\tdisplay: true,\n\t\tcolor: 'rgba(0,0,0,0.1)',\n\t\tlineWidth: 1,\n\t\tdrawBorder: true,\n\t\tdrawOnChartArea: true,\n\t\tdrawTicks: true,\n\t\ttickMarkLength: 10,\n\t\tzeroLineWidth: 1,\n\t\tzeroLineColor: 'rgba(0,0,0,0.25)',\n\t\tzeroLineBorderDash: [],\n\t\tzeroLineBorderDashOffset: 0.0,\n\t\toffsetGridLines: false,\n\t\tborderDash: [],\n\t\tborderDashOffset: 0.0\n\t},\n\n\t// scale label\n\tscaleLabel: {\n\t\t// display property\n\t\tdisplay: false,\n\n\t\t// actual label\n\t\tlabelString: '',\n\n\t\t// top/bottom padding\n\t\tpadding: {\n\t\t\ttop: 4,\n\t\t\tbottom: 4\n\t\t}\n\t},\n\n\t// label settings\n\tticks: {\n\t\tbeginAtZero: false,\n\t\tminRotation: 0,\n\t\tmaxRotation: 50,\n\t\tmirror: false,\n\t\tpadding: 0,\n\t\treverse: false,\n\t\tdisplay: true,\n\t\tautoSkip: true,\n\t\tautoSkipPadding: 0,\n\t\tlabelOffset: 0,\n\t\t// We pass through arrays to be rendered as multiline labels, we convert Others to strings here.\n\t\tcallback: core_ticks.formatters.values,\n\t\tminor: {},\n\t\tmajor: {}\n\t}\n});\n\n/** Returns a new array containing numItems from arr */\nfunction sample(arr, numItems) {\n\tvar result = [];\n\tvar increment = arr.length / numItems;\n\tvar i = 0;\n\tvar len = arr.length;\n\n\tfor (; i < len; i += increment) {\n\t\tresult.push(arr[Math.floor(i)]);\n\t}\n\treturn result;\n}\n\nfunction getPixelForGridLine(scale, index, offsetGridLines) {\n\tvar length = scale.getTicks().length;\n\tvar validIndex = Math.min(index, length - 1);\n\tvar lineValue = scale.getPixelForTick(validIndex);\n\tvar start = scale._startPixel;\n\tvar end = scale._endPixel;\n\tvar epsilon = 1e-6; // 1e-6 is margin in pixels for accumulated error.\n\tvar offset;\n\n\tif (offsetGridLines) {\n\t\tif (length === 1) {\n\t\t\toffset = Math.max(lineValue - start, end - lineValue);\n\t\t} else if (index === 0) {\n\t\t\toffset = (scale.getPixelForTick(1) - lineValue) / 2;\n\t\t} else {\n\t\t\toffset = (lineValue - scale.getPixelForTick(validIndex - 1)) / 2;\n\t\t}\n\t\tlineValue += validIndex < index ? offset : -offset;\n\n\t\t// Return undefined if the pixel is out of the range\n\t\tif (lineValue < start - epsilon || lineValue > end + epsilon) {\n\t\t\treturn;\n\t\t}\n\t}\n\treturn lineValue;\n}\n\nfunction garbageCollect(caches, length) {\n\thelpers$1.each(caches, function(cache) {\n\t\tvar gc = cache.gc;\n\t\tvar gcLen = gc.length / 2;\n\t\tvar i;\n\t\tif (gcLen > length) {\n\t\t\tfor (i = 0; i < gcLen; ++i) {\n\t\t\t\tdelete cache.data[gc[i]];\n\t\t\t}\n\t\t\tgc.splice(0, gcLen);\n\t\t}\n\t});\n}\n\n/**\n * Returns {width, height, offset} objects for the first, last, widest, highest tick\n * labels where offset indicates the anchor point offset from the top in pixels.\n */\nfunction computeLabelSizes(ctx, tickFonts, ticks, caches) {\n\tvar length = ticks.length;\n\tvar widths = [];\n\tvar heights = [];\n\tvar offsets = [];\n\tvar i, j, jlen, label, tickFont, fontString, cache, lineHeight, width, height, nestedLabel, widest, highest;\n\n\tfor (i = 0; i < length; ++i) {\n\t\tlabel = ticks[i].label;\n\t\ttickFont = ticks[i].major ? tickFonts.major : tickFonts.minor;\n\t\tctx.font = fontString = tickFont.string;\n\t\tcache = caches[fontString] = caches[fontString] || {data: {}, gc: []};\n\t\tlineHeight = tickFont.lineHeight;\n\t\twidth = height = 0;\n\t\t// Undefined labels and arrays should not be measured\n\t\tif (!isNullOrUndef(label) && !isArray(label)) {\n\t\t\twidth = helpers$1.measureText(ctx, cache.data, cache.gc, width, label);\n\t\t\theight = lineHeight;\n\t\t} else if (isArray(label)) {\n\t\t\t// if it is an array let's measure each element\n\t\t\tfor (j = 0, jlen = label.length; j < jlen; ++j) {\n\t\t\t\tnestedLabel = label[j];\n\t\t\t\t// Undefined labels and arrays should not be measured\n\t\t\t\tif (!isNullOrUndef(nestedLabel) && !isArray(nestedLabel)) {\n\t\t\t\t\twidth = helpers$1.measureText(ctx, cache.data, cache.gc, width, nestedLabel);\n\t\t\t\t\theight += lineHeight;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\twidths.push(width);\n\t\theights.push(height);\n\t\toffsets.push(lineHeight / 2);\n\t}\n\tgarbageCollect(caches, length);\n\n\twidest = widths.indexOf(Math.max.apply(null, widths));\n\thighest = heights.indexOf(Math.max.apply(null, heights));\n\n\tfunction valueAt(idx) {\n\t\treturn {\n\t\t\twidth: widths[idx] || 0,\n\t\t\theight: heights[idx] || 0,\n\t\t\toffset: offsets[idx] || 0\n\t\t};\n\t}\n\n\treturn {\n\t\tfirst: valueAt(0),\n\t\tlast: valueAt(length - 1),\n\t\twidest: valueAt(widest),\n\t\thighest: valueAt(highest)\n\t};\n}\n\nfunction getTickMarkLength(options) {\n\treturn options.drawTicks ? options.tickMarkLength : 0;\n}\n\nfunction getScaleLabelHeight(options) {\n\tvar font, padding;\n\n\tif (!options.display) {\n\t\treturn 0;\n\t}\n\n\tfont = helpers$1.options._parseFont(options);\n\tpadding = helpers$1.options.toPadding(options.padding);\n\n\treturn font.lineHeight + padding.height;\n}\n\nfunction parseFontOptions(options, nestedOpts) {\n\treturn helpers$1.extend(helpers$1.options._parseFont({\n\t\tfontFamily: valueOrDefault$a(nestedOpts.fontFamily, options.fontFamily),\n\t\tfontSize: valueOrDefault$a(nestedOpts.fontSize, options.fontSize),\n\t\tfontStyle: valueOrDefault$a(nestedOpts.fontStyle, options.fontStyle),\n\t\tlineHeight: valueOrDefault$a(nestedOpts.lineHeight, options.lineHeight)\n\t}), {\n\t\tcolor: helpers$1.options.resolve([nestedOpts.fontColor, options.fontColor, core_defaults.global.defaultFontColor])\n\t});\n}\n\nfunction parseTickFontOptions(options) {\n\tvar minor = parseFontOptions(options, options.minor);\n\tvar major = options.major.enabled ? parseFontOptions(options, options.major) : minor;\n\n\treturn {minor: minor, major: major};\n}\n\nfunction nonSkipped(ticksToFilter) {\n\tvar filtered = [];\n\tvar item, index, len;\n\tfor (index = 0, len = ticksToFilter.length; index < len; ++index) {\n\t\titem = ticksToFilter[index];\n\t\tif (typeof item._index !== 'undefined') {\n\t\t\tfiltered.push(item);\n\t\t}\n\t}\n\treturn filtered;\n}\n\nfunction getEvenSpacing(arr) {\n\tvar len = arr.length;\n\tvar i, diff;\n\n\tif (len < 2) {\n\t\treturn false;\n\t}\n\n\tfor (diff = arr[0], i = 1; i < len; ++i) {\n\t\tif (arr[i] - arr[i - 1] !== diff) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn diff;\n}\n\nfunction calculateSpacing(majorIndices, ticks, axisLength, ticksLimit) {\n\tvar evenMajorSpacing = getEvenSpacing(majorIndices);\n\tvar spacing = (ticks.length - 1) / ticksLimit;\n\tvar factors, factor, i, ilen;\n\n\t// If the major ticks are evenly spaced apart, place the minor ticks\n\t// so that they divide the major ticks into even chunks\n\tif (!evenMajorSpacing) {\n\t\treturn Math.max(spacing, 1);\n\t}\n\n\tfactors = helpers$1.math._factorize(evenMajorSpacing);\n\tfor (i = 0, ilen = factors.length - 1; i < ilen; i++) {\n\t\tfactor = factors[i];\n\t\tif (factor > spacing) {\n\t\t\treturn factor;\n\t\t}\n\t}\n\treturn Math.max(spacing, 1);\n}\n\nfunction getMajorIndices(ticks) {\n\tvar result = [];\n\tvar i, ilen;\n\tfor (i = 0, ilen = ticks.length; i < ilen; i++) {\n\t\tif (ticks[i].major) {\n\t\t\tresult.push(i);\n\t\t}\n\t}\n\treturn result;\n}\n\nfunction skipMajors(ticks, majorIndices, spacing) {\n\tvar count = 0;\n\tvar next = majorIndices[0];\n\tvar i, tick;\n\n\tspacing = Math.ceil(spacing);\n\tfor (i = 0; i < ticks.length; i++) {\n\t\ttick = ticks[i];\n\t\tif (i === next) {\n\t\t\ttick._index = i;\n\t\t\tcount++;\n\t\t\tnext = majorIndices[count * spacing];\n\t\t} else {\n\t\t\tdelete tick.label;\n\t\t}\n\t}\n}\n\nfunction skip(ticks, spacing, majorStart, majorEnd) {\n\tvar start = valueOrDefault$a(majorStart, 0);\n\tvar end = Math.min(valueOrDefault$a(majorEnd, ticks.length), ticks.length);\n\tvar count = 0;\n\tvar length, i, tick, next;\n\n\tspacing = Math.ceil(spacing);\n\tif (majorEnd) {\n\t\tlength = majorEnd - majorStart;\n\t\tspacing = length / Math.floor(length / spacing);\n\t}\n\n\tnext = start;\n\n\twhile (next < 0) {\n\t\tcount++;\n\t\tnext = Math.round(start + count * spacing);\n\t}\n\n\tfor (i = Math.max(start, 0); i < end; i++) {\n\t\ttick = ticks[i];\n\t\tif (i === next) {\n\t\t\ttick._index = i;\n\t\t\tcount++;\n\t\t\tnext = Math.round(start + count * spacing);\n\t\t} else {\n\t\t\tdelete tick.label;\n\t\t}\n\t}\n}\n\nvar Scale = core_element.extend({\n\n\tzeroLineIndex: 0,\n\n\t/**\n\t * Get the padding needed for the scale\n\t * @method getPadding\n\t * @private\n\t * @returns {Padding} the necessary padding\n\t */\n\tgetPadding: function() {\n\t\tvar me = this;\n\t\treturn {\n\t\t\tleft: me.paddingLeft || 0,\n\t\t\ttop: me.paddingTop || 0,\n\t\t\tright: me.paddingRight || 0,\n\t\t\tbottom: me.paddingBottom || 0\n\t\t};\n\t},\n\n\t/**\n\t * Returns the scale tick objects ({label, major})\n\t * @since 2.7\n\t */\n\tgetTicks: function() {\n\t\treturn this._ticks;\n\t},\n\n\t/**\n\t* @private\n\t*/\n\t_getLabels: function() {\n\t\tvar data = this.chart.data;\n\t\treturn this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels || [];\n\t},\n\n\t// These methods are ordered by lifecyle. Utilities then follow.\n\t// Any function defined here is inherited by all scale types.\n\t// Any function can be extended by the scale type\n\n\t/**\n\t * Provided for backward compatibility, not available anymore\n\t * @function Chart.Scale.mergeTicksOptions\n\t * @deprecated since version 2.8.0\n\t * @todo remove at version 3\n\t */\n\tmergeTicksOptions: function() {\n\t\t// noop\n\t},\n\n\tbeforeUpdate: function() {\n\t\thelpers$1.callback(this.options.beforeUpdate, [this]);\n\t},\n\n\t/**\n\t * @param {number} maxWidth - the max width in pixels\n\t * @param {number} maxHeight - the max height in pixels\n\t * @param {object} margins - the space between the edge of the other scales and edge of the chart\n\t *   This space comes from two sources:\n\t *     - padding - space that's required to show the labels at the edges of the scale\n\t *     - thickness of scales or legends in another orientation\n\t */\n\tupdate: function(maxWidth, maxHeight, margins) {\n\t\tvar me = this;\n\t\tvar tickOpts = me.options.ticks;\n\t\tvar sampleSize = tickOpts.sampleSize;\n\t\tvar i, ilen, labels, ticks, samplingEnabled;\n\n\t\t// Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\n\t\tme.beforeUpdate();\n\n\t\t// Absorb the master measurements\n\t\tme.maxWidth = maxWidth;\n\t\tme.maxHeight = maxHeight;\n\t\tme.margins = helpers$1.extend({\n\t\t\tleft: 0,\n\t\t\tright: 0,\n\t\t\ttop: 0,\n\t\t\tbottom: 0\n\t\t}, margins);\n\n\t\tme._ticks = null;\n\t\tme.ticks = null;\n\t\tme._labelSizes = null;\n\t\tme._maxLabelLines = 0;\n\t\tme.longestLabelWidth = 0;\n\t\tme.longestTextCache = me.longestTextCache || {};\n\t\tme._gridLineItems = null;\n\t\tme._labelItems = null;\n\n\t\t// Dimensions\n\t\tme.beforeSetDimensions();\n\t\tme.setDimensions();\n\t\tme.afterSetDimensions();\n\n\t\t// Data min/max\n\t\tme.beforeDataLimits();\n\t\tme.determineDataLimits();\n\t\tme.afterDataLimits();\n\n\t\t// Ticks - `this.ticks` is now DEPRECATED!\n\t\t// Internal ticks are now stored as objects in the PRIVATE `this._ticks` member\n\t\t// and must not be accessed directly from outside this class. `this.ticks` being\n\t\t// around for long time and not marked as private, we can't change its structure\n\t\t// without unexpected breaking changes. If you need to access the scale ticks,\n\t\t// use scale.getTicks() instead.\n\n\t\tme.beforeBuildTicks();\n\n\t\t// New implementations should return an array of objects but for BACKWARD COMPAT,\n\t\t// we still support no return (`this.ticks` internally set by calling this method).\n\t\tticks = me.buildTicks() || [];\n\n\t\t// Allow modification of ticks in callback.\n\t\tticks = me.afterBuildTicks(ticks) || ticks;\n\n\t\t// Ensure ticks contains ticks in new tick format\n\t\tif ((!ticks || !ticks.length) && me.ticks) {\n\t\t\tticks = [];\n\t\t\tfor (i = 0, ilen = me.ticks.length; i < ilen; ++i) {\n\t\t\t\tticks.push({\n\t\t\t\t\tvalue: me.ticks[i],\n\t\t\t\t\tmajor: false\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tme._ticks = ticks;\n\n\t\t// Compute tick rotation and fit using a sampled subset of labels\n\t\t// We generally don't need to compute the size of every single label for determining scale size\n\t\tsamplingEnabled = sampleSize < ticks.length;\n\t\tlabels = me._convertTicksToLabels(samplingEnabled ? sample(ticks, sampleSize) : ticks);\n\n\t\t// _configure is called twice, once here, once from core.controller.updateLayout.\n\t\t// Here we haven't been positioned yet, but dimensions are correct.\n\t\t// Variables set in _configure are needed for calculateTickRotation, and\n\t\t// it's ok that coordinates are not correct there, only dimensions matter.\n\t\tme._configure();\n\n\t\t// Tick Rotation\n\t\tme.beforeCalculateTickRotation();\n\t\tme.calculateTickRotation();\n\t\tme.afterCalculateTickRotation();\n\n\t\tme.beforeFit();\n\t\tme.fit();\n\t\tme.afterFit();\n\n\t\t// Auto-skip\n\t\tme._ticksToDraw = tickOpts.display && (tickOpts.autoSkip || tickOpts.source === 'auto') ? me._autoSkip(ticks) : ticks;\n\n\t\tif (samplingEnabled) {\n\t\t\t// Generate labels using all non-skipped ticks\n\t\t\tlabels = me._convertTicksToLabels(me._ticksToDraw);\n\t\t}\n\n\t\tme.ticks = labels;   // BACKWARD COMPATIBILITY\n\n\t\t// IMPORTANT: after this point, we consider that `this.ticks` will NEVER change!\n\n\t\tme.afterUpdate();\n\n\t\t// TODO(v3): remove minSize as a public property and return value from all layout boxes. It is unused\n\t\t// make maxWidth and maxHeight private\n\t\treturn me.minSize;\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_configure: function() {\n\t\tvar me = this;\n\t\tvar reversePixels = me.options.ticks.reverse;\n\t\tvar startPixel, endPixel;\n\n\t\tif (me.isHorizontal()) {\n\t\t\tstartPixel = me.left;\n\t\t\tendPixel = me.right;\n\t\t} else {\n\t\t\tstartPixel = me.top;\n\t\t\tendPixel = me.bottom;\n\t\t\t// by default vertical scales are from bottom to top, so pixels are reversed\n\t\t\treversePixels = !reversePixels;\n\t\t}\n\t\tme._startPixel = startPixel;\n\t\tme._endPixel = endPixel;\n\t\tme._reversePixels = reversePixels;\n\t\tme._length = endPixel - startPixel;\n\t},\n\n\tafterUpdate: function() {\n\t\thelpers$1.callback(this.options.afterUpdate, [this]);\n\t},\n\n\t//\n\n\tbeforeSetDimensions: function() {\n\t\thelpers$1.callback(this.options.beforeSetDimensions, [this]);\n\t},\n\tsetDimensions: function() {\n\t\tvar me = this;\n\t\t// Set the unconstrained dimension before label rotation\n\t\tif (me.isHorizontal()) {\n\t\t\t// Reset position before calculating rotation\n\t\t\tme.width = me.maxWidth;\n\t\t\tme.left = 0;\n\t\t\tme.right = me.width;\n\t\t} else {\n\t\t\tme.height = me.maxHeight;\n\n\t\t\t// Reset position before calculating rotation\n\t\t\tme.top = 0;\n\t\t\tme.bottom = me.height;\n\t\t}\n\n\t\t// Reset padding\n\t\tme.paddingLeft = 0;\n\t\tme.paddingTop = 0;\n\t\tme.paddingRight = 0;\n\t\tme.paddingBottom = 0;\n\t},\n\tafterSetDimensions: function() {\n\t\thelpers$1.callback(this.options.afterSetDimensions, [this]);\n\t},\n\n\t// Data limits\n\tbeforeDataLimits: function() {\n\t\thelpers$1.callback(this.options.beforeDataLimits, [this]);\n\t},\n\tdetermineDataLimits: helpers$1.noop,\n\tafterDataLimits: function() {\n\t\thelpers$1.callback(this.options.afterDataLimits, [this]);\n\t},\n\n\t//\n\tbeforeBuildTicks: function() {\n\t\thelpers$1.callback(this.options.beforeBuildTicks, [this]);\n\t},\n\tbuildTicks: helpers$1.noop,\n\tafterBuildTicks: function(ticks) {\n\t\tvar me = this;\n\t\t// ticks is empty for old axis implementations here\n\t\tif (isArray(ticks) && ticks.length) {\n\t\t\treturn helpers$1.callback(me.options.afterBuildTicks, [me, ticks]);\n\t\t}\n\t\t// Support old implementations (that modified `this.ticks` directly in buildTicks)\n\t\tme.ticks = helpers$1.callback(me.options.afterBuildTicks, [me, me.ticks]) || me.ticks;\n\t\treturn ticks;\n\t},\n\n\tbeforeTickToLabelConversion: function() {\n\t\thelpers$1.callback(this.options.beforeTickToLabelConversion, [this]);\n\t},\n\tconvertTicksToLabels: function() {\n\t\tvar me = this;\n\t\t// Convert ticks to strings\n\t\tvar tickOpts = me.options.ticks;\n\t\tme.ticks = me.ticks.map(tickOpts.userCallback || tickOpts.callback, this);\n\t},\n\tafterTickToLabelConversion: function() {\n\t\thelpers$1.callback(this.options.afterTickToLabelConversion, [this]);\n\t},\n\n\t//\n\n\tbeforeCalculateTickRotation: function() {\n\t\thelpers$1.callback(this.options.beforeCalculateTickRotation, [this]);\n\t},\n\tcalculateTickRotation: function() {\n\t\tvar me = this;\n\t\tvar options = me.options;\n\t\tvar tickOpts = options.ticks;\n\t\tvar numTicks = me.getTicks().length;\n\t\tvar minRotation = tickOpts.minRotation || 0;\n\t\tvar maxRotation = tickOpts.maxRotation;\n\t\tvar labelRotation = minRotation;\n\t\tvar labelSizes, maxLabelWidth, maxLabelHeight, maxWidth, tickWidth, maxHeight, maxLabelDiagonal;\n\n\t\tif (!me._isVisible() || !tickOpts.display || minRotation >= maxRotation || numTicks <= 1 || !me.isHorizontal()) {\n\t\t\tme.labelRotation = minRotation;\n\t\t\treturn;\n\t\t}\n\n\t\tlabelSizes = me._getLabelSizes();\n\t\tmaxLabelWidth = labelSizes.widest.width;\n\t\tmaxLabelHeight = labelSizes.highest.height - labelSizes.highest.offset;\n\n\t\t// Estimate the width of each grid based on the canvas width, the maximum\n\t\t// label width and the number of tick intervals\n\t\tmaxWidth = Math.min(me.maxWidth, me.chart.width - maxLabelWidth);\n\t\ttickWidth = options.offset ? me.maxWidth / numTicks : maxWidth / (numTicks - 1);\n\n\t\t// Allow 3 pixels x2 padding either side for label readability\n\t\tif (maxLabelWidth + 6 > tickWidth) {\n\t\t\ttickWidth = maxWidth / (numTicks - (options.offset ? 0.5 : 1));\n\t\t\tmaxHeight = me.maxHeight - getTickMarkLength(options.gridLines)\n\t\t\t\t- tickOpts.padding - getScaleLabelHeight(options.scaleLabel);\n\t\t\tmaxLabelDiagonal = Math.sqrt(maxLabelWidth * maxLabelWidth + maxLabelHeight * maxLabelHeight);\n\t\t\tlabelRotation = helpers$1.toDegrees(Math.min(\n\t\t\t\tMath.asin(Math.min((labelSizes.highest.height + 6) / tickWidth, 1)),\n\t\t\t\tMath.asin(Math.min(maxHeight / maxLabelDiagonal, 1)) - Math.asin(maxLabelHeight / maxLabelDiagonal)\n\t\t\t));\n\t\t\tlabelRotation = Math.max(minRotation, Math.min(maxRotation, labelRotation));\n\t\t}\n\n\t\tme.labelRotation = labelRotation;\n\t},\n\tafterCalculateTickRotation: function() {\n\t\thelpers$1.callback(this.options.afterCalculateTickRotation, [this]);\n\t},\n\n\t//\n\n\tbeforeFit: function() {\n\t\thelpers$1.callback(this.options.beforeFit, [this]);\n\t},\n\tfit: function() {\n\t\tvar me = this;\n\t\t// Reset\n\t\tvar minSize = me.minSize = {\n\t\t\twidth: 0,\n\t\t\theight: 0\n\t\t};\n\n\t\tvar chart = me.chart;\n\t\tvar opts = me.options;\n\t\tvar tickOpts = opts.ticks;\n\t\tvar scaleLabelOpts = opts.scaleLabel;\n\t\tvar gridLineOpts = opts.gridLines;\n\t\tvar display = me._isVisible();\n\t\tvar isBottom = opts.position === 'bottom';\n\t\tvar isHorizontal = me.isHorizontal();\n\n\t\t// Width\n\t\tif (isHorizontal) {\n\t\t\tminSize.width = me.maxWidth;\n\t\t} else if (display) {\n\t\t\tminSize.width = getTickMarkLength(gridLineOpts) + getScaleLabelHeight(scaleLabelOpts);\n\t\t}\n\n\t\t// height\n\t\tif (!isHorizontal) {\n\t\t\tminSize.height = me.maxHeight; // fill all the height\n\t\t} else if (display) {\n\t\t\tminSize.height = getTickMarkLength(gridLineOpts) + getScaleLabelHeight(scaleLabelOpts);\n\t\t}\n\n\t\t// Don't bother fitting the ticks if we are not showing the labels\n\t\tif (tickOpts.display && display) {\n\t\t\tvar tickFonts = parseTickFontOptions(tickOpts);\n\t\t\tvar labelSizes = me._getLabelSizes();\n\t\t\tvar firstLabelSize = labelSizes.first;\n\t\t\tvar lastLabelSize = labelSizes.last;\n\t\t\tvar widestLabelSize = labelSizes.widest;\n\t\t\tvar highestLabelSize = labelSizes.highest;\n\t\t\tvar lineSpace = tickFonts.minor.lineHeight * 0.4;\n\t\t\tvar tickPadding = tickOpts.padding;\n\n\t\t\tif (isHorizontal) {\n\t\t\t\t// A horizontal axis is more constrained by the height.\n\t\t\t\tvar isRotated = me.labelRotation !== 0;\n\t\t\t\tvar angleRadians = helpers$1.toRadians(me.labelRotation);\n\t\t\t\tvar cosRotation = Math.cos(angleRadians);\n\t\t\t\tvar sinRotation = Math.sin(angleRadians);\n\n\t\t\t\tvar labelHeight = sinRotation * widestLabelSize.width\n\t\t\t\t\t+ cosRotation * (highestLabelSize.height - (isRotated ? highestLabelSize.offset : 0))\n\t\t\t\t\t+ (isRotated ? 0 : lineSpace); // padding\n\n\t\t\t\tminSize.height = Math.min(me.maxHeight, minSize.height + labelHeight + tickPadding);\n\n\t\t\t\tvar offsetLeft = me.getPixelForTick(0) - me.left;\n\t\t\t\tvar offsetRight = me.right - me.getPixelForTick(me.getTicks().length - 1);\n\t\t\t\tvar paddingLeft, paddingRight;\n\n\t\t\t\t// Ensure that our ticks are always inside the canvas. When rotated, ticks are right aligned\n\t\t\t\t// which means that the right padding is dominated by the font height\n\t\t\t\tif (isRotated) {\n\t\t\t\t\tpaddingLeft = isBottom ?\n\t\t\t\t\t\tcosRotation * firstLabelSize.width + sinRotation * firstLabelSize.offset :\n\t\t\t\t\t\tsinRotation * (firstLabelSize.height - firstLabelSize.offset);\n\t\t\t\t\tpaddingRight = isBottom ?\n\t\t\t\t\t\tsinRotation * (lastLabelSize.height - lastLabelSize.offset) :\n\t\t\t\t\t\tcosRotation * lastLabelSize.width + sinRotation * lastLabelSize.offset;\n\t\t\t\t} else {\n\t\t\t\t\tpaddingLeft = firstLabelSize.width / 2;\n\t\t\t\t\tpaddingRight = lastLabelSize.width / 2;\n\t\t\t\t}\n\n\t\t\t\t// Adjust padding taking into account changes in offsets\n\t\t\t\t// and add 3 px to move away from canvas edges\n\t\t\t\tme.paddingLeft = Math.max((paddingLeft - offsetLeft) * me.width / (me.width - offsetLeft), 0) + 3;\n\t\t\t\tme.paddingRight = Math.max((paddingRight - offsetRight) * me.width / (me.width - offsetRight), 0) + 3;\n\t\t\t} else {\n\t\t\t\t// A vertical axis is more constrained by the width. Labels are the\n\t\t\t\t// dominant factor here, so get that length first and account for padding\n\t\t\t\tvar labelWidth = tickOpts.mirror ? 0 :\n\t\t\t\t\t// use lineSpace for consistency with horizontal axis\n\t\t\t\t\t// tickPadding is not implemented for horizontal\n\t\t\t\t\twidestLabelSize.width + tickPadding + lineSpace;\n\n\t\t\t\tminSize.width = Math.min(me.maxWidth, minSize.width + labelWidth);\n\n\t\t\t\tme.paddingTop = firstLabelSize.height / 2;\n\t\t\t\tme.paddingBottom = lastLabelSize.height / 2;\n\t\t\t}\n\t\t}\n\n\t\tme.handleMargins();\n\n\t\tif (isHorizontal) {\n\t\t\tme.width = me._length = chart.width - me.margins.left - me.margins.right;\n\t\t\tme.height = minSize.height;\n\t\t} else {\n\t\t\tme.width = minSize.width;\n\t\t\tme.height = me._length = chart.height - me.margins.top - me.margins.bottom;\n\t\t}\n\t},\n\n\t/**\n\t * Handle margins and padding interactions\n\t * @private\n\t */\n\thandleMargins: function() {\n\t\tvar me = this;\n\t\tif (me.margins) {\n\t\t\tme.margins.left = Math.max(me.paddingLeft, me.margins.left);\n\t\t\tme.margins.top = Math.max(me.paddingTop, me.margins.top);\n\t\t\tme.margins.right = Math.max(me.paddingRight, me.margins.right);\n\t\t\tme.margins.bottom = Math.max(me.paddingBottom, me.margins.bottom);\n\t\t}\n\t},\n\n\tafterFit: function() {\n\t\thelpers$1.callback(this.options.afterFit, [this]);\n\t},\n\n\t// Shared Methods\n\tisHorizontal: function() {\n\t\tvar pos = this.options.position;\n\t\treturn pos === 'top' || pos === 'bottom';\n\t},\n\tisFullWidth: function() {\n\t\treturn this.options.fullWidth;\n\t},\n\n\t// Get the correct value. NaN bad inputs, If the value type is object get the x or y based on whether we are horizontal or not\n\tgetRightValue: function(rawValue) {\n\t\t// Null and undefined values first\n\t\tif (isNullOrUndef(rawValue)) {\n\t\t\treturn NaN;\n\t\t}\n\t\t// isNaN(object) returns true, so make sure NaN is checking for a number; Discard Infinite values\n\t\tif ((typeof rawValue === 'number' || rawValue instanceof Number) && !isFinite(rawValue)) {\n\t\t\treturn NaN;\n\t\t}\n\n\t\t// If it is in fact an object, dive in one more level\n\t\tif (rawValue) {\n\t\t\tif (this.isHorizontal()) {\n\t\t\t\tif (rawValue.x !== undefined) {\n\t\t\t\t\treturn this.getRightValue(rawValue.x);\n\t\t\t\t}\n\t\t\t} else if (rawValue.y !== undefined) {\n\t\t\t\treturn this.getRightValue(rawValue.y);\n\t\t\t}\n\t\t}\n\n\t\t// Value is good, return it\n\t\treturn rawValue;\n\t},\n\n\t_convertTicksToLabels: function(ticks) {\n\t\tvar me = this;\n\t\tvar labels, i, ilen;\n\n\t\tme.ticks = ticks.map(function(tick) {\n\t\t\treturn tick.value;\n\t\t});\n\n\t\tme.beforeTickToLabelConversion();\n\n\t\t// New implementations should return the formatted tick labels but for BACKWARD\n\t\t// COMPAT, we still support no return (`this.ticks` internally changed by calling\n\t\t// this method and supposed to contain only string values).\n\t\tlabels = me.convertTicksToLabels(ticks) || me.ticks;\n\n\t\tme.afterTickToLabelConversion();\n\n\t\t// BACKWARD COMPAT: synchronize `_ticks` with labels (so potentially `this.ticks`)\n\t\tfor (i = 0, ilen = ticks.length; i < ilen; ++i) {\n\t\t\tticks[i].label = labels[i];\n\t\t}\n\n\t\treturn labels;\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_getLabelSizes: function() {\n\t\tvar me = this;\n\t\tvar labelSizes = me._labelSizes;\n\n\t\tif (!labelSizes) {\n\t\t\tme._labelSizes = labelSizes = computeLabelSizes(me.ctx, parseTickFontOptions(me.options.ticks), me.getTicks(), me.longestTextCache);\n\t\t\tme.longestLabelWidth = labelSizes.widest.width;\n\t\t}\n\n\t\treturn labelSizes;\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_parseValue: function(value) {\n\t\tvar start, end, min, max;\n\n\t\tif (isArray(value)) {\n\t\t\tstart = +this.getRightValue(value[0]);\n\t\t\tend = +this.getRightValue(value[1]);\n\t\t\tmin = Math.min(start, end);\n\t\t\tmax = Math.max(start, end);\n\t\t} else {\n\t\t\tvalue = +this.getRightValue(value);\n\t\t\tstart = undefined;\n\t\t\tend = value;\n\t\t\tmin = value;\n\t\t\tmax = value;\n\t\t}\n\n\t\treturn {\n\t\t\tmin: min,\n\t\t\tmax: max,\n\t\t\tstart: start,\n\t\t\tend: end\n\t\t};\n\t},\n\n\t/**\n\t* @private\n\t*/\n\t_getScaleLabel: function(rawValue) {\n\t\tvar v = this._parseValue(rawValue);\n\t\tif (v.start !== undefined) {\n\t\t\treturn '[' + v.start + ', ' + v.end + ']';\n\t\t}\n\n\t\treturn +this.getRightValue(rawValue);\n\t},\n\n\t/**\n\t * Used to get the value to display in the tooltip for the data at the given index\n\t * @param index\n\t * @param datasetIndex\n\t */\n\tgetLabelForIndex: helpers$1.noop,\n\n\t/**\n\t * Returns the location of the given data point. Value can either be an index or a numerical value\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t * @param value\n\t * @param index\n\t * @param datasetIndex\n\t */\n\tgetPixelForValue: helpers$1.noop,\n\n\t/**\n\t * Used to get the data value from a given pixel. This is the inverse of getPixelForValue\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t * @param pixel\n\t */\n\tgetValueForPixel: helpers$1.noop,\n\n\t/**\n\t * Returns the location of the tick at the given index\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t */\n\tgetPixelForTick: function(index) {\n\t\tvar me = this;\n\t\tvar offset = me.options.offset;\n\t\tvar numTicks = me._ticks.length;\n\t\tvar tickWidth = 1 / Math.max(numTicks - (offset ? 0 : 1), 1);\n\n\t\treturn index < 0 || index > numTicks - 1\n\t\t\t? null\n\t\t\t: me.getPixelForDecimal(index * tickWidth + (offset ? tickWidth / 2 : 0));\n\t},\n\n\t/**\n\t * Utility for getting the pixel location of a percentage of scale\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t */\n\tgetPixelForDecimal: function(decimal) {\n\t\tvar me = this;\n\n\t\tif (me._reversePixels) {\n\t\t\tdecimal = 1 - decimal;\n\t\t}\n\n\t\treturn me._startPixel + decimal * me._length;\n\t},\n\n\tgetDecimalForPixel: function(pixel) {\n\t\tvar decimal = (pixel - this._startPixel) / this._length;\n\t\treturn this._reversePixels ? 1 - decimal : decimal;\n\t},\n\n\t/**\n\t * Returns the pixel for the minimum chart value\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t */\n\tgetBasePixel: function() {\n\t\treturn this.getPixelForValue(this.getBaseValue());\n\t},\n\n\tgetBaseValue: function() {\n\t\tvar me = this;\n\t\tvar min = me.min;\n\t\tvar max = me.max;\n\n\t\treturn me.beginAtZero ? 0 :\n\t\t\tmin < 0 && max < 0 ? max :\n\t\t\tmin > 0 && max > 0 ? min :\n\t\t\t0;\n\t},\n\n\t/**\n\t * Returns a subset of ticks to be plotted to avoid overlapping labels.\n\t * @private\n\t */\n\t_autoSkip: function(ticks) {\n\t\tvar me = this;\n\t\tvar tickOpts = me.options.ticks;\n\t\tvar axisLength = me._length;\n\t\tvar ticksLimit = tickOpts.maxTicksLimit || axisLength / me._tickSize() + 1;\n\t\tvar majorIndices = tickOpts.major.enabled ? getMajorIndices(ticks) : [];\n\t\tvar numMajorIndices = majorIndices.length;\n\t\tvar first = majorIndices[0];\n\t\tvar last = majorIndices[numMajorIndices - 1];\n\t\tvar i, ilen, spacing, avgMajorSpacing;\n\n\t\t// If there are too many major ticks to display them all\n\t\tif (numMajorIndices > ticksLimit) {\n\t\t\tskipMajors(ticks, majorIndices, numMajorIndices / ticksLimit);\n\t\t\treturn nonSkipped(ticks);\n\t\t}\n\n\t\tspacing = calculateSpacing(majorIndices, ticks, axisLength, ticksLimit);\n\n\t\tif (numMajorIndices > 0) {\n\t\t\tfor (i = 0, ilen = numMajorIndices - 1; i < ilen; i++) {\n\t\t\t\tskip(ticks, spacing, majorIndices[i], majorIndices[i + 1]);\n\t\t\t}\n\t\t\tavgMajorSpacing = numMajorIndices > 1 ? (last - first) / (numMajorIndices - 1) : null;\n\t\t\tskip(ticks, spacing, helpers$1.isNullOrUndef(avgMajorSpacing) ? 0 : first - avgMajorSpacing, first);\n\t\t\tskip(ticks, spacing, last, helpers$1.isNullOrUndef(avgMajorSpacing) ? ticks.length : last + avgMajorSpacing);\n\t\t\treturn nonSkipped(ticks);\n\t\t}\n\t\tskip(ticks, spacing);\n\t\treturn nonSkipped(ticks);\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_tickSize: function() {\n\t\tvar me = this;\n\t\tvar optionTicks = me.options.ticks;\n\n\t\t// Calculate space needed by label in axis direction.\n\t\tvar rot = helpers$1.toRadians(me.labelRotation);\n\t\tvar cos = Math.abs(Math.cos(rot));\n\t\tvar sin = Math.abs(Math.sin(rot));\n\n\t\tvar labelSizes = me._getLabelSizes();\n\t\tvar padding = optionTicks.autoSkipPadding || 0;\n\t\tvar w = labelSizes ? labelSizes.widest.width + padding : 0;\n\t\tvar h = labelSizes ? labelSizes.highest.height + padding : 0;\n\n\t\t// Calculate space needed for 1 tick in axis direction.\n\t\treturn me.isHorizontal()\n\t\t\t? h * cos > w * sin ? w / cos : h / sin\n\t\t\t: h * sin < w * cos ? h / cos : w / sin;\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_isVisible: function() {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar display = me.options.display;\n\t\tvar i, ilen, meta;\n\n\t\tif (display !== 'auto') {\n\t\t\treturn !!display;\n\t\t}\n\n\t\t// When 'auto', the scale is visible if at least one associated dataset is visible.\n\t\tfor (i = 0, ilen = chart.data.datasets.length; i < ilen; ++i) {\n\t\t\tif (chart.isDatasetVisible(i)) {\n\t\t\t\tmeta = chart.getDatasetMeta(i);\n\t\t\t\tif (meta.xAxisID === me.id || meta.yAxisID === me.id) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_computeGridLineItems: function(chartArea) {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar options = me.options;\n\t\tvar gridLines = options.gridLines;\n\t\tvar position = options.position;\n\t\tvar offsetGridLines = gridLines.offsetGridLines;\n\t\tvar isHorizontal = me.isHorizontal();\n\t\tvar ticks = me._ticksToDraw;\n\t\tvar ticksLength = ticks.length + (offsetGridLines ? 1 : 0);\n\n\t\tvar tl = getTickMarkLength(gridLines);\n\t\tvar items = [];\n\t\tvar axisWidth = gridLines.drawBorder ? valueAtIndexOrDefault(gridLines.lineWidth, 0, 0) : 0;\n\t\tvar axisHalfWidth = axisWidth / 2;\n\t\tvar alignPixel = helpers$1._alignPixel;\n\t\tvar alignBorderValue = function(pixel) {\n\t\t\treturn alignPixel(chart, pixel, axisWidth);\n\t\t};\n\t\tvar borderValue, i, tick, lineValue, alignedLineValue;\n\t\tvar tx1, ty1, tx2, ty2, x1, y1, x2, y2, lineWidth, lineColor, borderDash, borderDashOffset;\n\n\t\tif (position === 'top') {\n\t\t\tborderValue = alignBorderValue(me.bottom);\n\t\t\tty1 = me.bottom - tl;\n\t\t\tty2 = borderValue - axisHalfWidth;\n\t\t\ty1 = alignBorderValue(chartArea.top) + axisHalfWidth;\n\t\t\ty2 = chartArea.bottom;\n\t\t} else if (position === 'bottom') {\n\t\t\tborderValue = alignBorderValue(me.top);\n\t\t\ty1 = chartArea.top;\n\t\t\ty2 = alignBorderValue(chartArea.bottom) - axisHalfWidth;\n\t\t\tty1 = borderValue + axisHalfWidth;\n\t\t\tty2 = me.top + tl;\n\t\t} else if (position === 'left') {\n\t\t\tborderValue = alignBorderValue(me.right);\n\t\t\ttx1 = me.right - tl;\n\t\t\ttx2 = borderValue - axisHalfWidth;\n\t\t\tx1 = alignBorderValue(chartArea.left) + axisHalfWidth;\n\t\t\tx2 = chartArea.right;\n\t\t} else {\n\t\t\tborderValue = alignBorderValue(me.left);\n\t\t\tx1 = chartArea.left;\n\t\t\tx2 = alignBorderValue(chartArea.right) - axisHalfWidth;\n\t\t\ttx1 = borderValue + axisHalfWidth;\n\t\t\ttx2 = me.left + tl;\n\t\t}\n\n\t\tfor (i = 0; i < ticksLength; ++i) {\n\t\t\ttick = ticks[i] || {};\n\n\t\t\t// autoskipper skipped this tick (#4635)\n\t\t\tif (isNullOrUndef(tick.label) && i < ticks.length) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (i === me.zeroLineIndex && options.offset === offsetGridLines) {\n\t\t\t\t// Draw the first index specially\n\t\t\t\tlineWidth = gridLines.zeroLineWidth;\n\t\t\t\tlineColor = gridLines.zeroLineColor;\n\t\t\t\tborderDash = gridLines.zeroLineBorderDash || [];\n\t\t\t\tborderDashOffset = gridLines.zeroLineBorderDashOffset || 0.0;\n\t\t\t} else {\n\t\t\t\tlineWidth = valueAtIndexOrDefault(gridLines.lineWidth, i, 1);\n\t\t\t\tlineColor = valueAtIndexOrDefault(gridLines.color, i, 'rgba(0,0,0,0.1)');\n\t\t\t\tborderDash = gridLines.borderDash || [];\n\t\t\t\tborderDashOffset = gridLines.borderDashOffset || 0.0;\n\t\t\t}\n\n\t\t\tlineValue = getPixelForGridLine(me, tick._index || i, offsetGridLines);\n\n\t\t\t// Skip if the pixel is out of the range\n\t\t\tif (lineValue === undefined) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\talignedLineValue = alignPixel(chart, lineValue, lineWidth);\n\n\t\t\tif (isHorizontal) {\n\t\t\t\ttx1 = tx2 = x1 = x2 = alignedLineValue;\n\t\t\t} else {\n\t\t\t\tty1 = ty2 = y1 = y2 = alignedLineValue;\n\t\t\t}\n\n\t\t\titems.push({\n\t\t\t\ttx1: tx1,\n\t\t\t\tty1: ty1,\n\t\t\t\ttx2: tx2,\n\t\t\t\tty2: ty2,\n\t\t\t\tx1: x1,\n\t\t\t\ty1: y1,\n\t\t\t\tx2: x2,\n\t\t\t\ty2: y2,\n\t\t\t\twidth: lineWidth,\n\t\t\t\tcolor: lineColor,\n\t\t\t\tborderDash: borderDash,\n\t\t\t\tborderDashOffset: borderDashOffset,\n\t\t\t});\n\t\t}\n\n\t\titems.ticksLength = ticksLength;\n\t\titems.borderValue = borderValue;\n\n\t\treturn items;\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_computeLabelItems: function() {\n\t\tvar me = this;\n\t\tvar options = me.options;\n\t\tvar optionTicks = options.ticks;\n\t\tvar position = options.position;\n\t\tvar isMirrored = optionTicks.mirror;\n\t\tvar isHorizontal = me.isHorizontal();\n\t\tvar ticks = me._ticksToDraw;\n\t\tvar fonts = parseTickFontOptions(optionTicks);\n\t\tvar tickPadding = optionTicks.padding;\n\t\tvar tl = getTickMarkLength(options.gridLines);\n\t\tvar rotation = -helpers$1.toRadians(me.labelRotation);\n\t\tvar items = [];\n\t\tvar i, ilen, tick, label, x, y, textAlign, pixel, font, lineHeight, lineCount, textOffset;\n\n\t\tif (position === 'top') {\n\t\t\ty = me.bottom - tl - tickPadding;\n\t\t\ttextAlign = !rotation ? 'center' : 'left';\n\t\t} else if (position === 'bottom') {\n\t\t\ty = me.top + tl + tickPadding;\n\t\t\ttextAlign = !rotation ? 'center' : 'right';\n\t\t} else if (position === 'left') {\n\t\t\tx = me.right - (isMirrored ? 0 : tl) - tickPadding;\n\t\t\ttextAlign = isMirrored ? 'left' : 'right';\n\t\t} else {\n\t\t\tx = me.left + (isMirrored ? 0 : tl) + tickPadding;\n\t\t\ttextAlign = isMirrored ? 'right' : 'left';\n\t\t}\n\n\t\tfor (i = 0, ilen = ticks.length; i < ilen; ++i) {\n\t\t\ttick = ticks[i];\n\t\t\tlabel = tick.label;\n\n\t\t\t// autoskipper skipped this tick (#4635)\n\t\t\tif (isNullOrUndef(label)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tpixel = me.getPixelForTick(tick._index || i) + optionTicks.labelOffset;\n\t\t\tfont = tick.major ? fonts.major : fonts.minor;\n\t\t\tlineHeight = font.lineHeight;\n\t\t\tlineCount = isArray(label) ? label.length : 1;\n\n\t\t\tif (isHorizontal) {\n\t\t\t\tx = pixel;\n\t\t\t\ttextOffset = position === 'top'\n\t\t\t\t\t? ((!rotation ? 0.5 : 1) - lineCount) * lineHeight\n\t\t\t\t\t: (!rotation ? 0.5 : 0) * lineHeight;\n\t\t\t} else {\n\t\t\t\ty = pixel;\n\t\t\t\ttextOffset = (1 - lineCount) * lineHeight / 2;\n\t\t\t}\n\n\t\t\titems.push({\n\t\t\t\tx: x,\n\t\t\t\ty: y,\n\t\t\t\trotation: rotation,\n\t\t\t\tlabel: label,\n\t\t\t\tfont: font,\n\t\t\t\ttextOffset: textOffset,\n\t\t\t\ttextAlign: textAlign\n\t\t\t});\n\t\t}\n\n\t\treturn items;\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_drawGrid: function(chartArea) {\n\t\tvar me = this;\n\t\tvar gridLines = me.options.gridLines;\n\n\t\tif (!gridLines.display) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar ctx = me.ctx;\n\t\tvar chart = me.chart;\n\t\tvar alignPixel = helpers$1._alignPixel;\n\t\tvar axisWidth = gridLines.drawBorder ? valueAtIndexOrDefault(gridLines.lineWidth, 0, 0) : 0;\n\t\tvar items = me._gridLineItems || (me._gridLineItems = me._computeGridLineItems(chartArea));\n\t\tvar width, color, i, ilen, item;\n\n\t\tfor (i = 0, ilen = items.length; i < ilen; ++i) {\n\t\t\titem = items[i];\n\t\t\twidth = item.width;\n\t\t\tcolor = item.color;\n\n\t\t\tif (width && color) {\n\t\t\t\tctx.save();\n\t\t\t\tctx.lineWidth = width;\n\t\t\t\tctx.strokeStyle = color;\n\t\t\t\tif (ctx.setLineDash) {\n\t\t\t\t\tctx.setLineDash(item.borderDash);\n\t\t\t\t\tctx.lineDashOffset = item.borderDashOffset;\n\t\t\t\t}\n\n\t\t\t\tctx.beginPath();\n\n\t\t\t\tif (gridLines.drawTicks) {\n\t\t\t\t\tctx.moveTo(item.tx1, item.ty1);\n\t\t\t\t\tctx.lineTo(item.tx2, item.ty2);\n\t\t\t\t}\n\n\t\t\t\tif (gridLines.drawOnChartArea) {\n\t\t\t\t\tctx.moveTo(item.x1, item.y1);\n\t\t\t\t\tctx.lineTo(item.x2, item.y2);\n\t\t\t\t}\n\n\t\t\t\tctx.stroke();\n\t\t\t\tctx.restore();\n\t\t\t}\n\t\t}\n\n\t\tif (axisWidth) {\n\t\t\t// Draw the line at the edge of the axis\n\t\t\tvar firstLineWidth = axisWidth;\n\t\t\tvar lastLineWidth = valueAtIndexOrDefault(gridLines.lineWidth, items.ticksLength - 1, 1);\n\t\t\tvar borderValue = items.borderValue;\n\t\t\tvar x1, x2, y1, y2;\n\n\t\t\tif (me.isHorizontal()) {\n\t\t\t\tx1 = alignPixel(chart, me.left, firstLineWidth) - firstLineWidth / 2;\n\t\t\t\tx2 = alignPixel(chart, me.right, lastLineWidth) + lastLineWidth / 2;\n\t\t\t\ty1 = y2 = borderValue;\n\t\t\t} else {\n\t\t\t\ty1 = alignPixel(chart, me.top, firstLineWidth) - firstLineWidth / 2;\n\t\t\t\ty2 = alignPixel(chart, me.bottom, lastLineWidth) + lastLineWidth / 2;\n\t\t\t\tx1 = x2 = borderValue;\n\t\t\t}\n\n\t\t\tctx.lineWidth = axisWidth;\n\t\t\tctx.strokeStyle = valueAtIndexOrDefault(gridLines.color, 0);\n\t\t\tctx.beginPath();\n\t\t\tctx.moveTo(x1, y1);\n\t\t\tctx.lineTo(x2, y2);\n\t\t\tctx.stroke();\n\t\t}\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_drawLabels: function() {\n\t\tvar me = this;\n\t\tvar optionTicks = me.options.ticks;\n\n\t\tif (!optionTicks.display) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar ctx = me.ctx;\n\t\tvar items = me._labelItems || (me._labelItems = me._computeLabelItems());\n\t\tvar i, j, ilen, jlen, item, tickFont, label, y;\n\n\t\tfor (i = 0, ilen = items.length; i < ilen; ++i) {\n\t\t\titem = items[i];\n\t\t\ttickFont = item.font;\n\n\t\t\t// Make sure we draw text in the correct color and font\n\t\t\tctx.save();\n\t\t\tctx.translate(item.x, item.y);\n\t\t\tctx.rotate(item.rotation);\n\t\t\tctx.font = tickFont.string;\n\t\t\tctx.fillStyle = tickFont.color;\n\t\t\tctx.textBaseline = 'middle';\n\t\t\tctx.textAlign = item.textAlign;\n\n\t\t\tlabel = item.label;\n\t\t\ty = item.textOffset;\n\t\t\tif (isArray(label)) {\n\t\t\t\tfor (j = 0, jlen = label.length; j < jlen; ++j) {\n\t\t\t\t\t// We just make sure the multiline element is a string here..\n\t\t\t\t\tctx.fillText('' + label[j], 0, y);\n\t\t\t\t\ty += tickFont.lineHeight;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tctx.fillText(label, 0, y);\n\t\t\t}\n\t\t\tctx.restore();\n\t\t}\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_drawTitle: function() {\n\t\tvar me = this;\n\t\tvar ctx = me.ctx;\n\t\tvar options = me.options;\n\t\tvar scaleLabel = options.scaleLabel;\n\n\t\tif (!scaleLabel.display) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar scaleLabelFontColor = valueOrDefault$a(scaleLabel.fontColor, core_defaults.global.defaultFontColor);\n\t\tvar scaleLabelFont = helpers$1.options._parseFont(scaleLabel);\n\t\tvar scaleLabelPadding = helpers$1.options.toPadding(scaleLabel.padding);\n\t\tvar halfLineHeight = scaleLabelFont.lineHeight / 2;\n\t\tvar position = options.position;\n\t\tvar rotation = 0;\n\t\tvar scaleLabelX, scaleLabelY;\n\n\t\tif (me.isHorizontal()) {\n\t\t\tscaleLabelX = me.left + me.width / 2; // midpoint of the width\n\t\t\tscaleLabelY = position === 'bottom'\n\t\t\t\t? me.bottom - halfLineHeight - scaleLabelPadding.bottom\n\t\t\t\t: me.top + halfLineHeight + scaleLabelPadding.top;\n\t\t} else {\n\t\t\tvar isLeft = position === 'left';\n\t\t\tscaleLabelX = isLeft\n\t\t\t\t? me.left + halfLineHeight + scaleLabelPadding.top\n\t\t\t\t: me.right - halfLineHeight - scaleLabelPadding.top;\n\t\t\tscaleLabelY = me.top + me.height / 2;\n\t\t\trotation = isLeft ? -0.5 * Math.PI : 0.5 * Math.PI;\n\t\t}\n\n\t\tctx.save();\n\t\tctx.translate(scaleLabelX, scaleLabelY);\n\t\tctx.rotate(rotation);\n\t\tctx.textAlign = 'center';\n\t\tctx.textBaseline = 'middle';\n\t\tctx.fillStyle = scaleLabelFontColor; // render in correct colour\n\t\tctx.font = scaleLabelFont.string;\n\t\tctx.fillText(scaleLabel.labelString, 0, 0);\n\t\tctx.restore();\n\t},\n\n\tdraw: function(chartArea) {\n\t\tvar me = this;\n\n\t\tif (!me._isVisible()) {\n\t\t\treturn;\n\t\t}\n\n\t\tme._drawGrid(chartArea);\n\t\tme._drawTitle();\n\t\tme._drawLabels();\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_layers: function() {\n\t\tvar me = this;\n\t\tvar opts = me.options;\n\t\tvar tz = opts.ticks && opts.ticks.z || 0;\n\t\tvar gz = opts.gridLines && opts.gridLines.z || 0;\n\n\t\tif (!me._isVisible() || tz === gz || me.draw !== me._draw) {\n\t\t\t// backward compatibility: draw has been overridden by custom scale\n\t\t\treturn [{\n\t\t\t\tz: tz,\n\t\t\t\tdraw: function() {\n\t\t\t\t\tme.draw.apply(me, arguments);\n\t\t\t\t}\n\t\t\t}];\n\t\t}\n\n\t\treturn [{\n\t\t\tz: gz,\n\t\t\tdraw: function() {\n\t\t\t\tme._drawGrid.apply(me, arguments);\n\t\t\t\tme._drawTitle.apply(me, arguments);\n\t\t\t}\n\t\t}, {\n\t\t\tz: tz,\n\t\t\tdraw: function() {\n\t\t\t\tme._drawLabels.apply(me, arguments);\n\t\t\t}\n\t\t}];\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_getMatchingVisibleMetas: function(type) {\n\t\tvar me = this;\n\t\tvar isHorizontal = me.isHorizontal();\n\t\treturn me.chart._getSortedVisibleDatasetMetas()\n\t\t\t.filter(function(meta) {\n\t\t\t\treturn (!type || meta.type === type)\n\t\t\t\t\t&& (isHorizontal ? meta.xAxisID === me.id : meta.yAxisID === me.id);\n\t\t\t});\n\t}\n});\n\nScale.prototype._draw = Scale.prototype.draw;\n\nvar core_scale = Scale;\n\nvar isNullOrUndef$1 = helpers$1.isNullOrUndef;\n\nvar defaultConfig = {\n\tposition: 'bottom'\n};\n\nvar scale_category = core_scale.extend({\n\tdetermineDataLimits: function() {\n\t\tvar me = this;\n\t\tvar labels = me._getLabels();\n\t\tvar ticksOpts = me.options.ticks;\n\t\tvar min = ticksOpts.min;\n\t\tvar max = ticksOpts.max;\n\t\tvar minIndex = 0;\n\t\tvar maxIndex = labels.length - 1;\n\t\tvar findIndex;\n\n\t\tif (min !== undefined) {\n\t\t\t// user specified min value\n\t\t\tfindIndex = labels.indexOf(min);\n\t\t\tif (findIndex >= 0) {\n\t\t\t\tminIndex = findIndex;\n\t\t\t}\n\t\t}\n\n\t\tif (max !== undefined) {\n\t\t\t// user specified max value\n\t\t\tfindIndex = labels.indexOf(max);\n\t\t\tif (findIndex >= 0) {\n\t\t\t\tmaxIndex = findIndex;\n\t\t\t}\n\t\t}\n\n\t\tme.minIndex = minIndex;\n\t\tme.maxIndex = maxIndex;\n\t\tme.min = labels[minIndex];\n\t\tme.max = labels[maxIndex];\n\t},\n\n\tbuildTicks: function() {\n\t\tvar me = this;\n\t\tvar labels = me._getLabels();\n\t\tvar minIndex = me.minIndex;\n\t\tvar maxIndex = me.maxIndex;\n\n\t\t// If we are viewing some subset of labels, slice the original array\n\t\tme.ticks = (minIndex === 0 && maxIndex === labels.length - 1) ? labels : labels.slice(minIndex, maxIndex + 1);\n\t},\n\n\tgetLabelForIndex: function(index, datasetIndex) {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\n\t\tif (chart.getDatasetMeta(datasetIndex).controller._getValueScaleId() === me.id) {\n\t\t\treturn me.getRightValue(chart.data.datasets[datasetIndex].data[index]);\n\t\t}\n\n\t\treturn me._getLabels()[index];\n\t},\n\n\t_configure: function() {\n\t\tvar me = this;\n\t\tvar offset = me.options.offset;\n\t\tvar ticks = me.ticks;\n\n\t\tcore_scale.prototype._configure.call(me);\n\n\t\tif (!me.isHorizontal()) {\n\t\t\t// For backward compatibility, vertical category scale reverse is inverted.\n\t\t\tme._reversePixels = !me._reversePixels;\n\t\t}\n\n\t\tif (!ticks) {\n\t\t\treturn;\n\t\t}\n\n\t\tme._startValue = me.minIndex - (offset ? 0.5 : 0);\n\t\tme._valueRange = Math.max(ticks.length - (offset ? 0 : 1), 1);\n\t},\n\n\t// Used to get data value locations.  Value can either be an index or a numerical value\n\tgetPixelForValue: function(value, index, datasetIndex) {\n\t\tvar me = this;\n\t\tvar valueCategory, labels, idx;\n\n\t\tif (!isNullOrUndef$1(index) && !isNullOrUndef$1(datasetIndex)) {\n\t\t\tvalue = me.chart.data.datasets[datasetIndex].data[index];\n\t\t}\n\n\t\t// If value is a data object, then index is the index in the data array,\n\t\t// not the index of the scale. We need to change that.\n\t\tif (!isNullOrUndef$1(value)) {\n\t\t\tvalueCategory = me.isHorizontal() ? value.x : value.y;\n\t\t}\n\t\tif (valueCategory !== undefined || (value !== undefined && isNaN(index))) {\n\t\t\tlabels = me._getLabels();\n\t\t\tvalue = helpers$1.valueOrDefault(valueCategory, value);\n\t\t\tidx = labels.indexOf(value);\n\t\t\tindex = idx !== -1 ? idx : index;\n\t\t\tif (isNaN(index)) {\n\t\t\t\tindex = value;\n\t\t\t}\n\t\t}\n\t\treturn me.getPixelForDecimal((index - me._startValue) / me._valueRange);\n\t},\n\n\tgetPixelForTick: function(index) {\n\t\tvar ticks = this.ticks;\n\t\treturn index < 0 || index > ticks.length - 1\n\t\t\t? null\n\t\t\t: this.getPixelForValue(ticks[index], index + this.minIndex);\n\t},\n\n\tgetValueForPixel: function(pixel) {\n\t\tvar me = this;\n\t\tvar value = Math.round(me._startValue + me.getDecimalForPixel(pixel) * me._valueRange);\n\t\treturn Math.min(Math.max(value, 0), me.ticks.length - 1);\n\t},\n\n\tgetBasePixel: function() {\n\t\treturn this.bottom;\n\t}\n});\n\n// INTERNAL: static default options, registered in src/index.js\nvar _defaults = defaultConfig;\nscale_category._defaults = _defaults;\n\nvar noop = helpers$1.noop;\nvar isNullOrUndef$2 = helpers$1.isNullOrUndef;\n\n/**\n * Generate a set of linear ticks\n * @param generationOptions the options used to generate the ticks\n * @param dataRange the range of the data\n * @returns {number[]} array of tick values\n */\nfunction generateTicks(generationOptions, dataRange) {\n\tvar ticks = [];\n\t// To get a \"nice\" value for the tick spacing, we will use the appropriately named\n\t// \"nice number\" algorithm. See https://stackoverflow.com/questions/8506881/nice-label-algorithm-for-charts-with-minimum-ticks\n\t// for details.\n\n\tvar MIN_SPACING = 1e-14;\n\tvar stepSize = generationOptions.stepSize;\n\tvar unit = stepSize || 1;\n\tvar maxNumSpaces = generationOptions.maxTicks - 1;\n\tvar min = generationOptions.min;\n\tvar max = generationOptions.max;\n\tvar precision = generationOptions.precision;\n\tvar rmin = dataRange.min;\n\tvar rmax = dataRange.max;\n\tvar spacing = helpers$1.niceNum((rmax - rmin) / maxNumSpaces / unit) * unit;\n\tvar factor, niceMin, niceMax, numSpaces;\n\n\t// Beyond MIN_SPACING floating point numbers being to lose precision\n\t// such that we can't do the math necessary to generate ticks\n\tif (spacing < MIN_SPACING && isNullOrUndef$2(min) && isNullOrUndef$2(max)) {\n\t\treturn [rmin, rmax];\n\t}\n\n\tnumSpaces = Math.ceil(rmax / spacing) - Math.floor(rmin / spacing);\n\tif (numSpaces > maxNumSpaces) {\n\t\t// If the calculated num of spaces exceeds maxNumSpaces, recalculate it\n\t\tspacing = helpers$1.niceNum(numSpaces * spacing / maxNumSpaces / unit) * unit;\n\t}\n\n\tif (stepSize || isNullOrUndef$2(precision)) {\n\t\t// If a precision is not specified, calculate factor based on spacing\n\t\tfactor = Math.pow(10, helpers$1._decimalPlaces(spacing));\n\t} else {\n\t\t// If the user specified a precision, round to that number of decimal places\n\t\tfactor = Math.pow(10, precision);\n\t\tspacing = Math.ceil(spacing * factor) / factor;\n\t}\n\n\tniceMin = Math.floor(rmin / spacing) * spacing;\n\tniceMax = Math.ceil(rmax / spacing) * spacing;\n\n\t// If min, max and stepSize is set and they make an evenly spaced scale use it.\n\tif (stepSize) {\n\t\t// If very close to our whole number, use it.\n\t\tif (!isNullOrUndef$2(min) && helpers$1.almostWhole(min / spacing, spacing / 1000)) {\n\t\t\tniceMin = min;\n\t\t}\n\t\tif (!isNullOrUndef$2(max) && helpers$1.almostWhole(max / spacing, spacing / 1000)) {\n\t\t\tniceMax = max;\n\t\t}\n\t}\n\n\tnumSpaces = (niceMax - niceMin) / spacing;\n\t// If very close to our rounded value, use it.\n\tif (helpers$1.almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) {\n\t\tnumSpaces = Math.round(numSpaces);\n\t} else {\n\t\tnumSpaces = Math.ceil(numSpaces);\n\t}\n\n\tniceMin = Math.round(niceMin * factor) / factor;\n\tniceMax = Math.round(niceMax * factor) / factor;\n\tticks.push(isNullOrUndef$2(min) ? niceMin : min);\n\tfor (var j = 1; j < numSpaces; ++j) {\n\t\tticks.push(Math.round((niceMin + j * spacing) * factor) / factor);\n\t}\n\tticks.push(isNullOrUndef$2(max) ? niceMax : max);\n\n\treturn ticks;\n}\n\nvar scale_linearbase = core_scale.extend({\n\tgetRightValue: function(value) {\n\t\tif (typeof value === 'string') {\n\t\t\treturn +value;\n\t\t}\n\t\treturn core_scale.prototype.getRightValue.call(this, value);\n\t},\n\n\thandleTickRangeOptions: function() {\n\t\tvar me = this;\n\t\tvar opts = me.options;\n\t\tvar tickOpts = opts.ticks;\n\n\t\t// If we are forcing it to begin at 0, but 0 will already be rendered on the chart,\n\t\t// do nothing since that would make the chart weird. If the user really wants a weird chart\n\t\t// axis, they can manually override it\n\t\tif (tickOpts.beginAtZero) {\n\t\t\tvar minSign = helpers$1.sign(me.min);\n\t\t\tvar maxSign = helpers$1.sign(me.max);\n\n\t\t\tif (minSign < 0 && maxSign < 0) {\n\t\t\t\t// move the top up to 0\n\t\t\t\tme.max = 0;\n\t\t\t} else if (minSign > 0 && maxSign > 0) {\n\t\t\t\t// move the bottom down to 0\n\t\t\t\tme.min = 0;\n\t\t\t}\n\t\t}\n\n\t\tvar setMin = tickOpts.min !== undefined || tickOpts.suggestedMin !== undefined;\n\t\tvar setMax = tickOpts.max !== undefined || tickOpts.suggestedMax !== undefined;\n\n\t\tif (tickOpts.min !== undefined) {\n\t\t\tme.min = tickOpts.min;\n\t\t} else if (tickOpts.suggestedMin !== undefined) {\n\t\t\tif (me.min === null) {\n\t\t\t\tme.min = tickOpts.suggestedMin;\n\t\t\t} else {\n\t\t\t\tme.min = Math.min(me.min, tickOpts.suggestedMin);\n\t\t\t}\n\t\t}\n\n\t\tif (tickOpts.max !== undefined) {\n\t\t\tme.max = tickOpts.max;\n\t\t} else if (tickOpts.suggestedMax !== undefined) {\n\t\t\tif (me.max === null) {\n\t\t\t\tme.max = tickOpts.suggestedMax;\n\t\t\t} else {\n\t\t\t\tme.max = Math.max(me.max, tickOpts.suggestedMax);\n\t\t\t}\n\t\t}\n\n\t\tif (setMin !== setMax) {\n\t\t\t// We set the min or the max but not both.\n\t\t\t// So ensure that our range is good\n\t\t\t// Inverted or 0 length range can happen when\n\t\t\t// ticks.min is set, and no datasets are visible\n\t\t\tif (me.min >= me.max) {\n\t\t\t\tif (setMin) {\n\t\t\t\t\tme.max = me.min + 1;\n\t\t\t\t} else {\n\t\t\t\t\tme.min = me.max - 1;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (me.min === me.max) {\n\t\t\tme.max++;\n\n\t\t\tif (!tickOpts.beginAtZero) {\n\t\t\t\tme.min--;\n\t\t\t}\n\t\t}\n\t},\n\n\tgetTickLimit: function() {\n\t\tvar me = this;\n\t\tvar tickOpts = me.options.ticks;\n\t\tvar stepSize = tickOpts.stepSize;\n\t\tvar maxTicksLimit = tickOpts.maxTicksLimit;\n\t\tvar maxTicks;\n\n\t\tif (stepSize) {\n\t\t\tmaxTicks = Math.ceil(me.max / stepSize) - Math.floor(me.min / stepSize) + 1;\n\t\t} else {\n\t\t\tmaxTicks = me._computeTickLimit();\n\t\t\tmaxTicksLimit = maxTicksLimit || 11;\n\t\t}\n\n\t\tif (maxTicksLimit) {\n\t\t\tmaxTicks = Math.min(maxTicksLimit, maxTicks);\n\t\t}\n\n\t\treturn maxTicks;\n\t},\n\n\t_computeTickLimit: function() {\n\t\treturn Number.POSITIVE_INFINITY;\n\t},\n\n\thandleDirectionalChanges: noop,\n\n\tbuildTicks: function() {\n\t\tvar me = this;\n\t\tvar opts = me.options;\n\t\tvar tickOpts = opts.ticks;\n\n\t\t// Figure out what the max number of ticks we can support it is based on the size of\n\t\t// the axis area. For now, we say that the minimum tick spacing in pixels must be 40\n\t\t// We also limit the maximum number of ticks to 11 which gives a nice 10 squares on\n\t\t// the graph. Make sure we always have at least 2 ticks\n\t\tvar maxTicks = me.getTickLimit();\n\t\tmaxTicks = Math.max(2, maxTicks);\n\n\t\tvar numericGeneratorOptions = {\n\t\t\tmaxTicks: maxTicks,\n\t\t\tmin: tickOpts.min,\n\t\t\tmax: tickOpts.max,\n\t\t\tprecision: tickOpts.precision,\n\t\t\tstepSize: helpers$1.valueOrDefault(tickOpts.fixedStepSize, tickOpts.stepSize)\n\t\t};\n\t\tvar ticks = me.ticks = generateTicks(numericGeneratorOptions, me);\n\n\t\tme.handleDirectionalChanges();\n\n\t\t// At this point, we need to update our max and min given the tick values since we have expanded the\n\t\t// range of the scale\n\t\tme.max = helpers$1.max(ticks);\n\t\tme.min = helpers$1.min(ticks);\n\n\t\tif (tickOpts.reverse) {\n\t\t\tticks.reverse();\n\n\t\t\tme.start = me.max;\n\t\t\tme.end = me.min;\n\t\t} else {\n\t\t\tme.start = me.min;\n\t\t\tme.end = me.max;\n\t\t}\n\t},\n\n\tconvertTicksToLabels: function() {\n\t\tvar me = this;\n\t\tme.ticksAsNumbers = me.ticks.slice();\n\t\tme.zeroLineIndex = me.ticks.indexOf(0);\n\n\t\tcore_scale.prototype.convertTicksToLabels.call(me);\n\t},\n\n\t_configure: function() {\n\t\tvar me = this;\n\t\tvar ticks = me.getTicks();\n\t\tvar start = me.min;\n\t\tvar end = me.max;\n\t\tvar offset;\n\n\t\tcore_scale.prototype._configure.call(me);\n\n\t\tif (me.options.offset && ticks.length) {\n\t\t\toffset = (end - start) / Math.max(ticks.length - 1, 1) / 2;\n\t\t\tstart -= offset;\n\t\t\tend += offset;\n\t\t}\n\t\tme._startValue = start;\n\t\tme._endValue = end;\n\t\tme._valueRange = end - start;\n\t}\n});\n\nvar defaultConfig$1 = {\n\tposition: 'left',\n\tticks: {\n\t\tcallback: core_ticks.formatters.linear\n\t}\n};\n\nvar DEFAULT_MIN = 0;\nvar DEFAULT_MAX = 1;\n\nfunction getOrCreateStack(stacks, stacked, meta) {\n\tvar key = [\n\t\tmeta.type,\n\t\t// we have a separate stack for stack=undefined datasets when the opts.stacked is undefined\n\t\tstacked === undefined && meta.stack === undefined ? meta.index : '',\n\t\tmeta.stack\n\t].join('.');\n\n\tif (stacks[key] === undefined) {\n\t\tstacks[key] = {\n\t\t\tpos: [],\n\t\t\tneg: []\n\t\t};\n\t}\n\n\treturn stacks[key];\n}\n\nfunction stackData(scale, stacks, meta, data) {\n\tvar opts = scale.options;\n\tvar stacked = opts.stacked;\n\tvar stack = getOrCreateStack(stacks, stacked, meta);\n\tvar pos = stack.pos;\n\tvar neg = stack.neg;\n\tvar ilen = data.length;\n\tvar i, value;\n\n\tfor (i = 0; i < ilen; ++i) {\n\t\tvalue = scale._parseValue(data[i]);\n\t\tif (isNaN(value.min) || isNaN(value.max) || meta.data[i].hidden) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tpos[i] = pos[i] || 0;\n\t\tneg[i] = neg[i] || 0;\n\n\t\tif (opts.relativePoints) {\n\t\t\tpos[i] = 100;\n\t\t} else if (value.min < 0 || value.max < 0) {\n\t\t\tneg[i] += value.min;\n\t\t} else {\n\t\t\tpos[i] += value.max;\n\t\t}\n\t}\n}\n\nfunction updateMinMax(scale, meta, data) {\n\tvar ilen = data.length;\n\tvar i, value;\n\n\tfor (i = 0; i < ilen; ++i) {\n\t\tvalue = scale._parseValue(data[i]);\n\t\tif (isNaN(value.min) || isNaN(value.max) || meta.data[i].hidden) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tscale.min = Math.min(scale.min, value.min);\n\t\tscale.max = Math.max(scale.max, value.max);\n\t}\n}\n\nvar scale_linear = scale_linearbase.extend({\n\tdetermineDataLimits: function() {\n\t\tvar me = this;\n\t\tvar opts = me.options;\n\t\tvar chart = me.chart;\n\t\tvar datasets = chart.data.datasets;\n\t\tvar metasets = me._getMatchingVisibleMetas();\n\t\tvar hasStacks = opts.stacked;\n\t\tvar stacks = {};\n\t\tvar ilen = metasets.length;\n\t\tvar i, meta, data, values;\n\n\t\tme.min = Number.POSITIVE_INFINITY;\n\t\tme.max = Number.NEGATIVE_INFINITY;\n\n\t\tif (hasStacks === undefined) {\n\t\t\tfor (i = 0; !hasStacks && i < ilen; ++i) {\n\t\t\t\tmeta = metasets[i];\n\t\t\t\thasStacks = meta.stack !== undefined;\n\t\t\t}\n\t\t}\n\n\t\tfor (i = 0; i < ilen; ++i) {\n\t\t\tmeta = metasets[i];\n\t\t\tdata = datasets[meta.index].data;\n\t\t\tif (hasStacks) {\n\t\t\t\tstackData(me, stacks, meta, data);\n\t\t\t} else {\n\t\t\t\tupdateMinMax(me, meta, data);\n\t\t\t}\n\t\t}\n\n\t\thelpers$1.each(stacks, function(stackValues) {\n\t\t\tvalues = stackValues.pos.concat(stackValues.neg);\n\t\t\tme.min = Math.min(me.min, helpers$1.min(values));\n\t\t\tme.max = Math.max(me.max, helpers$1.max(values));\n\t\t});\n\n\t\tme.min = helpers$1.isFinite(me.min) && !isNaN(me.min) ? me.min : DEFAULT_MIN;\n\t\tme.max = helpers$1.isFinite(me.max) && !isNaN(me.max) ? me.max : DEFAULT_MAX;\n\n\t\t// Common base implementation to handle ticks.min, ticks.max, ticks.beginAtZero\n\t\tme.handleTickRangeOptions();\n\t},\n\n\t// Returns the maximum number of ticks based on the scale dimension\n\t_computeTickLimit: function() {\n\t\tvar me = this;\n\t\tvar tickFont;\n\n\t\tif (me.isHorizontal()) {\n\t\t\treturn Math.ceil(me.width / 40);\n\t\t}\n\t\ttickFont = helpers$1.options._parseFont(me.options.ticks);\n\t\treturn Math.ceil(me.height / tickFont.lineHeight);\n\t},\n\n\t// Called after the ticks are built. We need\n\thandleDirectionalChanges: function() {\n\t\tif (!this.isHorizontal()) {\n\t\t\t// We are in a vertical orientation. The top value is the highest. So reverse the array\n\t\t\tthis.ticks.reverse();\n\t\t}\n\t},\n\n\tgetLabelForIndex: function(index, datasetIndex) {\n\t\treturn this._getScaleLabel(this.chart.data.datasets[datasetIndex].data[index]);\n\t},\n\n\t// Utils\n\tgetPixelForValue: function(value) {\n\t\tvar me = this;\n\t\treturn me.getPixelForDecimal((+me.getRightValue(value) - me._startValue) / me._valueRange);\n\t},\n\n\tgetValueForPixel: function(pixel) {\n\t\treturn this._startValue + this.getDecimalForPixel(pixel) * this._valueRange;\n\t},\n\n\tgetPixelForTick: function(index) {\n\t\tvar ticks = this.ticksAsNumbers;\n\t\tif (index < 0 || index > ticks.length - 1) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this.getPixelForValue(ticks[index]);\n\t}\n});\n\n// INTERNAL: static default options, registered in src/index.js\nvar _defaults$1 = defaultConfig$1;\nscale_linear._defaults = _defaults$1;\n\nvar valueOrDefault$b = helpers$1.valueOrDefault;\nvar log10 = helpers$1.math.log10;\n\n/**\n * Generate a set of logarithmic ticks\n * @param generationOptions the options used to generate the ticks\n * @param dataRange the range of the data\n * @returns {number[]} array of tick values\n */\nfunction generateTicks$1(generationOptions, dataRange) {\n\tvar ticks = [];\n\n\tvar tickVal = valueOrDefault$b(generationOptions.min, Math.pow(10, Math.floor(log10(dataRange.min))));\n\n\tvar endExp = Math.floor(log10(dataRange.max));\n\tvar endSignificand = Math.ceil(dataRange.max / Math.pow(10, endExp));\n\tvar exp, significand;\n\n\tif (tickVal === 0) {\n\t\texp = Math.floor(log10(dataRange.minNotZero));\n\t\tsignificand = Math.floor(dataRange.minNotZero / Math.pow(10, exp));\n\n\t\tticks.push(tickVal);\n\t\ttickVal = significand * Math.pow(10, exp);\n\t} else {\n\t\texp = Math.floor(log10(tickVal));\n\t\tsignificand = Math.floor(tickVal / Math.pow(10, exp));\n\t}\n\tvar precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1;\n\n\tdo {\n\t\tticks.push(tickVal);\n\n\t\t++significand;\n\t\tif (significand === 10) {\n\t\t\tsignificand = 1;\n\t\t\t++exp;\n\t\t\tprecision = exp >= 0 ? 1 : precision;\n\t\t}\n\n\t\ttickVal = Math.round(significand * Math.pow(10, exp) * precision) / precision;\n\t} while (exp < endExp || (exp === endExp && significand < endSignificand));\n\n\tvar lastTick = valueOrDefault$b(generationOptions.max, tickVal);\n\tticks.push(lastTick);\n\n\treturn ticks;\n}\n\nvar defaultConfig$2 = {\n\tposition: 'left',\n\n\t// label settings\n\tticks: {\n\t\tcallback: core_ticks.formatters.logarithmic\n\t}\n};\n\n// TODO(v3): change this to positiveOrDefault\nfunction nonNegativeOrDefault(value, defaultValue) {\n\treturn helpers$1.isFinite(value) && value >= 0 ? value : defaultValue;\n}\n\nvar scale_logarithmic = core_scale.extend({\n\tdetermineDataLimits: function() {\n\t\tvar me = this;\n\t\tvar opts = me.options;\n\t\tvar chart = me.chart;\n\t\tvar datasets = chart.data.datasets;\n\t\tvar isHorizontal = me.isHorizontal();\n\t\tfunction IDMatches(meta) {\n\t\t\treturn isHorizontal ? meta.xAxisID === me.id : meta.yAxisID === me.id;\n\t\t}\n\t\tvar datasetIndex, meta, value, data, i, ilen;\n\n\t\t// Calculate Range\n\t\tme.min = Number.POSITIVE_INFINITY;\n\t\tme.max = Number.NEGATIVE_INFINITY;\n\t\tme.minNotZero = Number.POSITIVE_INFINITY;\n\n\t\tvar hasStacks = opts.stacked;\n\t\tif (hasStacks === undefined) {\n\t\t\tfor (datasetIndex = 0; datasetIndex < datasets.length; datasetIndex++) {\n\t\t\t\tmeta = chart.getDatasetMeta(datasetIndex);\n\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta) &&\n\t\t\t\t\tmeta.stack !== undefined) {\n\t\t\t\t\thasStacks = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (opts.stacked || hasStacks) {\n\t\t\tvar valuesPerStack = {};\n\n\t\t\tfor (datasetIndex = 0; datasetIndex < datasets.length; datasetIndex++) {\n\t\t\t\tmeta = chart.getDatasetMeta(datasetIndex);\n\t\t\t\tvar key = [\n\t\t\t\t\tmeta.type,\n\t\t\t\t\t// we have a separate stack for stack=undefined datasets when the opts.stacked is undefined\n\t\t\t\t\t((opts.stacked === undefined && meta.stack === undefined) ? datasetIndex : ''),\n\t\t\t\t\tmeta.stack\n\t\t\t\t].join('.');\n\n\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\n\t\t\t\t\tif (valuesPerStack[key] === undefined) {\n\t\t\t\t\t\tvaluesPerStack[key] = [];\n\t\t\t\t\t}\n\n\t\t\t\t\tdata = datasets[datasetIndex].data;\n\t\t\t\t\tfor (i = 0, ilen = data.length; i < ilen; i++) {\n\t\t\t\t\t\tvar values = valuesPerStack[key];\n\t\t\t\t\t\tvalue = me._parseValue(data[i]);\n\t\t\t\t\t\t// invalid, hidden and negative values are ignored\n\t\t\t\t\t\tif (isNaN(value.min) || isNaN(value.max) || meta.data[i].hidden || value.min < 0 || value.max < 0) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvalues[i] = values[i] || 0;\n\t\t\t\t\t\tvalues[i] += value.max;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\thelpers$1.each(valuesPerStack, function(valuesForType) {\n\t\t\t\tif (valuesForType.length > 0) {\n\t\t\t\t\tvar minVal = helpers$1.min(valuesForType);\n\t\t\t\t\tvar maxVal = helpers$1.max(valuesForType);\n\t\t\t\t\tme.min = Math.min(me.min, minVal);\n\t\t\t\t\tme.max = Math.max(me.max, maxVal);\n\t\t\t\t}\n\t\t\t});\n\n\t\t} else {\n\t\t\tfor (datasetIndex = 0; datasetIndex < datasets.length; datasetIndex++) {\n\t\t\t\tmeta = chart.getDatasetMeta(datasetIndex);\n\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\n\t\t\t\t\tdata = datasets[datasetIndex].data;\n\t\t\t\t\tfor (i = 0, ilen = data.length; i < ilen; i++) {\n\t\t\t\t\t\tvalue = me._parseValue(data[i]);\n\t\t\t\t\t\t// invalid, hidden and negative values are ignored\n\t\t\t\t\t\tif (isNaN(value.min) || isNaN(value.max) || meta.data[i].hidden || value.min < 0 || value.max < 0) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tme.min = Math.min(value.min, me.min);\n\t\t\t\t\t\tme.max = Math.max(value.max, me.max);\n\n\t\t\t\t\t\tif (value.min !== 0) {\n\t\t\t\t\t\t\tme.minNotZero = Math.min(value.min, me.minNotZero);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tme.min = helpers$1.isFinite(me.min) ? me.min : null;\n\t\tme.max = helpers$1.isFinite(me.max) ? me.max : null;\n\t\tme.minNotZero = helpers$1.isFinite(me.minNotZero) ? me.minNotZero : null;\n\n\t\t// Common base implementation to handle ticks.min, ticks.max\n\t\tthis.handleTickRangeOptions();\n\t},\n\n\thandleTickRangeOptions: function() {\n\t\tvar me = this;\n\t\tvar tickOpts = me.options.ticks;\n\t\tvar DEFAULT_MIN = 1;\n\t\tvar DEFAULT_MAX = 10;\n\n\t\tme.min = nonNegativeOrDefault(tickOpts.min, me.min);\n\t\tme.max = nonNegativeOrDefault(tickOpts.max, me.max);\n\n\t\tif (me.min === me.max) {\n\t\t\tif (me.min !== 0 && me.min !== null) {\n\t\t\t\tme.min = Math.pow(10, Math.floor(log10(me.min)) - 1);\n\t\t\t\tme.max = Math.pow(10, Math.floor(log10(me.max)) + 1);\n\t\t\t} else {\n\t\t\t\tme.min = DEFAULT_MIN;\n\t\t\t\tme.max = DEFAULT_MAX;\n\t\t\t}\n\t\t}\n\t\tif (me.min === null) {\n\t\t\tme.min = Math.pow(10, Math.floor(log10(me.max)) - 1);\n\t\t}\n\t\tif (me.max === null) {\n\t\t\tme.max = me.min !== 0\n\t\t\t\t? Math.pow(10, Math.floor(log10(me.min)) + 1)\n\t\t\t\t: DEFAULT_MAX;\n\t\t}\n\t\tif (me.minNotZero === null) {\n\t\t\tif (me.min > 0) {\n\t\t\t\tme.minNotZero = me.min;\n\t\t\t} else if (me.max < 1) {\n\t\t\t\tme.minNotZero = Math.pow(10, Math.floor(log10(me.max)));\n\t\t\t} else {\n\t\t\t\tme.minNotZero = DEFAULT_MIN;\n\t\t\t}\n\t\t}\n\t},\n\n\tbuildTicks: function() {\n\t\tvar me = this;\n\t\tvar tickOpts = me.options.ticks;\n\t\tvar reverse = !me.isHorizontal();\n\n\t\tvar generationOptions = {\n\t\t\tmin: nonNegativeOrDefault(tickOpts.min),\n\t\t\tmax: nonNegativeOrDefault(tickOpts.max)\n\t\t};\n\t\tvar ticks = me.ticks = generateTicks$1(generationOptions, me);\n\n\t\t// At this point, we need to update our max and min given the tick values since we have expanded the\n\t\t// range of the scale\n\t\tme.max = helpers$1.max(ticks);\n\t\tme.min = helpers$1.min(ticks);\n\n\t\tif (tickOpts.reverse) {\n\t\t\treverse = !reverse;\n\t\t\tme.start = me.max;\n\t\t\tme.end = me.min;\n\t\t} else {\n\t\t\tme.start = me.min;\n\t\t\tme.end = me.max;\n\t\t}\n\t\tif (reverse) {\n\t\t\tticks.reverse();\n\t\t}\n\t},\n\n\tconvertTicksToLabels: function() {\n\t\tthis.tickValues = this.ticks.slice();\n\n\t\tcore_scale.prototype.convertTicksToLabels.call(this);\n\t},\n\n\t// Get the correct tooltip label\n\tgetLabelForIndex: function(index, datasetIndex) {\n\t\treturn this._getScaleLabel(this.chart.data.datasets[datasetIndex].data[index]);\n\t},\n\n\tgetPixelForTick: function(index) {\n\t\tvar ticks = this.tickValues;\n\t\tif (index < 0 || index > ticks.length - 1) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this.getPixelForValue(ticks[index]);\n\t},\n\n\t/**\n\t * Returns the value of the first tick.\n\t * @param {number} value - The minimum not zero value.\n\t * @return {number} The first tick value.\n\t * @private\n\t */\n\t_getFirstTickValue: function(value) {\n\t\tvar exp = Math.floor(log10(value));\n\t\tvar significand = Math.floor(value / Math.pow(10, exp));\n\n\t\treturn significand * Math.pow(10, exp);\n\t},\n\n\t_configure: function() {\n\t\tvar me = this;\n\t\tvar start = me.min;\n\t\tvar offset = 0;\n\n\t\tcore_scale.prototype._configure.call(me);\n\n\t\tif (start === 0) {\n\t\t\tstart = me._getFirstTickValue(me.minNotZero);\n\t\t\toffset = valueOrDefault$b(me.options.ticks.fontSize, core_defaults.global.defaultFontSize) / me._length;\n\t\t}\n\n\t\tme._startValue = log10(start);\n\t\tme._valueOffset = offset;\n\t\tme._valueRange = (log10(me.max) - log10(start)) / (1 - offset);\n\t},\n\n\tgetPixelForValue: function(value) {\n\t\tvar me = this;\n\t\tvar decimal = 0;\n\n\t\tvalue = +me.getRightValue(value);\n\n\t\tif (value > me.min && value > 0) {\n\t\t\tdecimal = (log10(value) - me._startValue) / me._valueRange + me._valueOffset;\n\t\t}\n\t\treturn me.getPixelForDecimal(decimal);\n\t},\n\n\tgetValueForPixel: function(pixel) {\n\t\tvar me = this;\n\t\tvar decimal = me.getDecimalForPixel(pixel);\n\t\treturn decimal === 0 && me.min === 0\n\t\t\t? 0\n\t\t\t: Math.pow(10, me._startValue + (decimal - me._valueOffset) * me._valueRange);\n\t}\n});\n\n// INTERNAL: static default options, registered in src/index.js\nvar _defaults$2 = defaultConfig$2;\nscale_logarithmic._defaults = _defaults$2;\n\nvar valueOrDefault$c = helpers$1.valueOrDefault;\nvar valueAtIndexOrDefault$1 = helpers$1.valueAtIndexOrDefault;\nvar resolve$4 = helpers$1.options.resolve;\n\nvar defaultConfig$3 = {\n\tdisplay: true,\n\n\t// Boolean - Whether to animate scaling the chart from the centre\n\tanimate: true,\n\tposition: 'chartArea',\n\n\tangleLines: {\n\t\tdisplay: true,\n\t\tcolor: 'rgba(0,0,0,0.1)',\n\t\tlineWidth: 1,\n\t\tborderDash: [],\n\t\tborderDashOffset: 0.0\n\t},\n\n\tgridLines: {\n\t\tcircular: false\n\t},\n\n\t// label settings\n\tticks: {\n\t\t// Boolean - Show a backdrop to the scale label\n\t\tshowLabelBackdrop: true,\n\n\t\t// String - The colour of the label backdrop\n\t\tbackdropColor: 'rgba(255,255,255,0.75)',\n\n\t\t// Number - The backdrop padding above & below the label in pixels\n\t\tbackdropPaddingY: 2,\n\n\t\t// Number - The backdrop padding to the side of the label in pixels\n\t\tbackdropPaddingX: 2,\n\n\t\tcallback: core_ticks.formatters.linear\n\t},\n\n\tpointLabels: {\n\t\t// Boolean - if true, show point labels\n\t\tdisplay: true,\n\n\t\t// Number - Point label font size in pixels\n\t\tfontSize: 10,\n\n\t\t// Function - Used to convert point labels\n\t\tcallback: function(label) {\n\t\t\treturn label;\n\t\t}\n\t}\n};\n\nfunction getTickBackdropHeight(opts) {\n\tvar tickOpts = opts.ticks;\n\n\tif (tickOpts.display && opts.display) {\n\t\treturn valueOrDefault$c(tickOpts.fontSize, core_defaults.global.defaultFontSize) + tickOpts.backdropPaddingY * 2;\n\t}\n\treturn 0;\n}\n\nfunction measureLabelSize(ctx, lineHeight, label) {\n\tif (helpers$1.isArray(label)) {\n\t\treturn {\n\t\t\tw: helpers$1.longestText(ctx, ctx.font, label),\n\t\t\th: label.length * lineHeight\n\t\t};\n\t}\n\n\treturn {\n\t\tw: ctx.measureText(label).width,\n\t\th: lineHeight\n\t};\n}\n\nfunction determineLimits(angle, pos, size, min, max) {\n\tif (angle === min || angle === max) {\n\t\treturn {\n\t\t\tstart: pos - (size / 2),\n\t\t\tend: pos + (size / 2)\n\t\t};\n\t} else if (angle < min || angle > max) {\n\t\treturn {\n\t\t\tstart: pos - size,\n\t\t\tend: pos\n\t\t};\n\t}\n\n\treturn {\n\t\tstart: pos,\n\t\tend: pos + size\n\t};\n}\n\n/**\n * Helper function to fit a radial linear scale with point labels\n */\nfunction fitWithPointLabels(scale) {\n\n\t// Right, this is really confusing and there is a lot of maths going on here\n\t// The gist of the problem is here: https://gist.github.com/nnnick/696cc9c55f4b0beb8fe9\n\t//\n\t// Reaction: https://dl.dropboxusercontent.com/u/34601363/toomuchscience.gif\n\t//\n\t// Solution:\n\t//\n\t// We assume the radius of the polygon is half the size of the canvas at first\n\t// at each index we check if the text overlaps.\n\t//\n\t// Where it does, we store that angle and that index.\n\t//\n\t// After finding the largest index and angle we calculate how much we need to remove\n\t// from the shape radius to move the point inwards by that x.\n\t//\n\t// We average the left and right distances to get the maximum shape radius that can fit in the box\n\t// along with labels.\n\t//\n\t// Once we have that, we can find the centre point for the chart, by taking the x text protrusion\n\t// on each side, removing that from the size, halving it and adding the left x protrusion width.\n\t//\n\t// This will mean we have a shape fitted to the canvas, as large as it can be with the labels\n\t// and position it in the most space efficient manner\n\t//\n\t// https://dl.dropboxusercontent.com/u/34601363/yeahscience.gif\n\n\tvar plFont = helpers$1.options._parseFont(scale.options.pointLabels);\n\n\t// Get maximum radius of the polygon. Either half the height (minus the text width) or half the width.\n\t// Use this to calculate the offset + change. - Make sure L/R protrusion is at least 0 to stop issues with centre points\n\tvar furthestLimits = {\n\t\tl: 0,\n\t\tr: scale.width,\n\t\tt: 0,\n\t\tb: scale.height - scale.paddingTop\n\t};\n\tvar furthestAngles = {};\n\tvar i, textSize, pointPosition;\n\n\tscale.ctx.font = plFont.string;\n\tscale._pointLabelSizes = [];\n\n\tvar valueCount = scale.chart.data.labels.length;\n\tfor (i = 0; i < valueCount; i++) {\n\t\tpointPosition = scale.getPointPosition(i, scale.drawingArea + 5);\n\t\ttextSize = measureLabelSize(scale.ctx, plFont.lineHeight, scale.pointLabels[i]);\n\t\tscale._pointLabelSizes[i] = textSize;\n\n\t\t// Add quarter circle to make degree 0 mean top of circle\n\t\tvar angleRadians = scale.getIndexAngle(i);\n\t\tvar angle = helpers$1.toDegrees(angleRadians) % 360;\n\t\tvar hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180);\n\t\tvar vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270);\n\n\t\tif (hLimits.start < furthestLimits.l) {\n\t\t\tfurthestLimits.l = hLimits.start;\n\t\t\tfurthestAngles.l = angleRadians;\n\t\t}\n\n\t\tif (hLimits.end > furthestLimits.r) {\n\t\t\tfurthestLimits.r = hLimits.end;\n\t\t\tfurthestAngles.r = angleRadians;\n\t\t}\n\n\t\tif (vLimits.start < furthestLimits.t) {\n\t\t\tfurthestLimits.t = vLimits.start;\n\t\t\tfurthestAngles.t = angleRadians;\n\t\t}\n\n\t\tif (vLimits.end > furthestLimits.b) {\n\t\t\tfurthestLimits.b = vLimits.end;\n\t\t\tfurthestAngles.b = angleRadians;\n\t\t}\n\t}\n\n\tscale.setReductions(scale.drawingArea, furthestLimits, furthestAngles);\n}\n\nfunction getTextAlignForAngle(angle) {\n\tif (angle === 0 || angle === 180) {\n\t\treturn 'center';\n\t} else if (angle < 180) {\n\t\treturn 'left';\n\t}\n\n\treturn 'right';\n}\n\nfunction fillText(ctx, text, position, lineHeight) {\n\tvar y = position.y + lineHeight / 2;\n\tvar i, ilen;\n\n\tif (helpers$1.isArray(text)) {\n\t\tfor (i = 0, ilen = text.length; i < ilen; ++i) {\n\t\t\tctx.fillText(text[i], position.x, y);\n\t\t\ty += lineHeight;\n\t\t}\n\t} else {\n\t\tctx.fillText(text, position.x, y);\n\t}\n}\n\nfunction adjustPointPositionForLabelHeight(angle, textSize, position) {\n\tif (angle === 90 || angle === 270) {\n\t\tposition.y -= (textSize.h / 2);\n\t} else if (angle > 270 || angle < 90) {\n\t\tposition.y -= textSize.h;\n\t}\n}\n\nfunction drawPointLabels(scale) {\n\tvar ctx = scale.ctx;\n\tvar opts = scale.options;\n\tvar pointLabelOpts = opts.pointLabels;\n\tvar tickBackdropHeight = getTickBackdropHeight(opts);\n\tvar outerDistance = scale.getDistanceFromCenterForValue(opts.ticks.reverse ? scale.min : scale.max);\n\tvar plFont = helpers$1.options._parseFont(pointLabelOpts);\n\n\tctx.save();\n\n\tctx.font = plFont.string;\n\tctx.textBaseline = 'middle';\n\n\tfor (var i = scale.chart.data.labels.length - 1; i >= 0; i--) {\n\t\t// Extra pixels out for some label spacing\n\t\tvar extra = (i === 0 ? tickBackdropHeight / 2 : 0);\n\t\tvar pointLabelPosition = scale.getPointPosition(i, outerDistance + extra + 5);\n\n\t\t// Keep this in loop since we may support array properties here\n\t\tvar pointLabelFontColor = valueAtIndexOrDefault$1(pointLabelOpts.fontColor, i, core_defaults.global.defaultFontColor);\n\t\tctx.fillStyle = pointLabelFontColor;\n\n\t\tvar angleRadians = scale.getIndexAngle(i);\n\t\tvar angle = helpers$1.toDegrees(angleRadians);\n\t\tctx.textAlign = getTextAlignForAngle(angle);\n\t\tadjustPointPositionForLabelHeight(angle, scale._pointLabelSizes[i], pointLabelPosition);\n\t\tfillText(ctx, scale.pointLabels[i], pointLabelPosition, plFont.lineHeight);\n\t}\n\tctx.restore();\n}\n\nfunction drawRadiusLine(scale, gridLineOpts, radius, index) {\n\tvar ctx = scale.ctx;\n\tvar circular = gridLineOpts.circular;\n\tvar valueCount = scale.chart.data.labels.length;\n\tvar lineColor = valueAtIndexOrDefault$1(gridLineOpts.color, index - 1);\n\tvar lineWidth = valueAtIndexOrDefault$1(gridLineOpts.lineWidth, index - 1);\n\tvar pointPosition;\n\n\tif ((!circular && !valueCount) || !lineColor || !lineWidth) {\n\t\treturn;\n\t}\n\n\tctx.save();\n\tctx.strokeStyle = lineColor;\n\tctx.lineWidth = lineWidth;\n\tif (ctx.setLineDash) {\n\t\tctx.setLineDash(gridLineOpts.borderDash || []);\n\t\tctx.lineDashOffset = gridLineOpts.borderDashOffset || 0.0;\n\t}\n\n\tctx.beginPath();\n\tif (circular) {\n\t\t// Draw circular arcs between the points\n\t\tctx.arc(scale.xCenter, scale.yCenter, radius, 0, Math.PI * 2);\n\t} else {\n\t\t// Draw straight lines connecting each index\n\t\tpointPosition = scale.getPointPosition(0, radius);\n\t\tctx.moveTo(pointPosition.x, pointPosition.y);\n\n\t\tfor (var i = 1; i < valueCount; i++) {\n\t\t\tpointPosition = scale.getPointPosition(i, radius);\n\t\t\tctx.lineTo(pointPosition.x, pointPosition.y);\n\t\t}\n\t}\n\tctx.closePath();\n\tctx.stroke();\n\tctx.restore();\n}\n\nfunction numberOrZero(param) {\n\treturn helpers$1.isNumber(param) ? param : 0;\n}\n\nvar scale_radialLinear = scale_linearbase.extend({\n\tsetDimensions: function() {\n\t\tvar me = this;\n\n\t\t// Set the unconstrained dimension before label rotation\n\t\tme.width = me.maxWidth;\n\t\tme.height = me.maxHeight;\n\t\tme.paddingTop = getTickBackdropHeight(me.options) / 2;\n\t\tme.xCenter = Math.floor(me.width / 2);\n\t\tme.yCenter = Math.floor((me.height - me.paddingTop) / 2);\n\t\tme.drawingArea = Math.min(me.height - me.paddingTop, me.width) / 2;\n\t},\n\n\tdetermineDataLimits: function() {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar min = Number.POSITIVE_INFINITY;\n\t\tvar max = Number.NEGATIVE_INFINITY;\n\n\t\thelpers$1.each(chart.data.datasets, function(dataset, datasetIndex) {\n\t\t\tif (chart.isDatasetVisible(datasetIndex)) {\n\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\n\t\t\t\thelpers$1.each(dataset.data, function(rawValue, index) {\n\t\t\t\t\tvar value = +me.getRightValue(rawValue);\n\t\t\t\t\tif (isNaN(value) || meta.data[index].hidden) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tmin = Math.min(value, min);\n\t\t\t\t\tmax = Math.max(value, max);\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\tme.min = (min === Number.POSITIVE_INFINITY ? 0 : min);\n\t\tme.max = (max === Number.NEGATIVE_INFINITY ? 0 : max);\n\n\t\t// Common base implementation to handle ticks.min, ticks.max, ticks.beginAtZero\n\t\tme.handleTickRangeOptions();\n\t},\n\n\t// Returns the maximum number of ticks based on the scale dimension\n\t_computeTickLimit: function() {\n\t\treturn Math.ceil(this.drawingArea / getTickBackdropHeight(this.options));\n\t},\n\n\tconvertTicksToLabels: function() {\n\t\tvar me = this;\n\n\t\tscale_linearbase.prototype.convertTicksToLabels.call(me);\n\n\t\t// Point labels\n\t\tme.pointLabels = me.chart.data.labels.map(function() {\n\t\t\tvar label = helpers$1.callback(me.options.pointLabels.callback, arguments, me);\n\t\t\treturn label || label === 0 ? label : '';\n\t\t});\n\t},\n\n\tgetLabelForIndex: function(index, datasetIndex) {\n\t\treturn +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]);\n\t},\n\n\tfit: function() {\n\t\tvar me = this;\n\t\tvar opts = me.options;\n\n\t\tif (opts.display && opts.pointLabels.display) {\n\t\t\tfitWithPointLabels(me);\n\t\t} else {\n\t\t\tme.setCenterPoint(0, 0, 0, 0);\n\t\t}\n\t},\n\n\t/**\n\t * Set radius reductions and determine new radius and center point\n\t * @private\n\t */\n\tsetReductions: function(largestPossibleRadius, furthestLimits, furthestAngles) {\n\t\tvar me = this;\n\t\tvar radiusReductionLeft = furthestLimits.l / Math.sin(furthestAngles.l);\n\t\tvar radiusReductionRight = Math.max(furthestLimits.r - me.width, 0) / Math.sin(furthestAngles.r);\n\t\tvar radiusReductionTop = -furthestLimits.t / Math.cos(furthestAngles.t);\n\t\tvar radiusReductionBottom = -Math.max(furthestLimits.b - (me.height - me.paddingTop), 0) / Math.cos(furthestAngles.b);\n\n\t\tradiusReductionLeft = numberOrZero(radiusReductionLeft);\n\t\tradiusReductionRight = numberOrZero(radiusReductionRight);\n\t\tradiusReductionTop = numberOrZero(radiusReductionTop);\n\t\tradiusReductionBottom = numberOrZero(radiusReductionBottom);\n\n\t\tme.drawingArea = Math.min(\n\t\t\tMath.floor(largestPossibleRadius - (radiusReductionLeft + radiusReductionRight) / 2),\n\t\t\tMath.floor(largestPossibleRadius - (radiusReductionTop + radiusReductionBottom) / 2));\n\t\tme.setCenterPoint(radiusReductionLeft, radiusReductionRight, radiusReductionTop, radiusReductionBottom);\n\t},\n\n\tsetCenterPoint: function(leftMovement, rightMovement, topMovement, bottomMovement) {\n\t\tvar me = this;\n\t\tvar maxRight = me.width - rightMovement - me.drawingArea;\n\t\tvar maxLeft = leftMovement + me.drawingArea;\n\t\tvar maxTop = topMovement + me.drawingArea;\n\t\tvar maxBottom = (me.height - me.paddingTop) - bottomMovement - me.drawingArea;\n\n\t\tme.xCenter = Math.floor(((maxLeft + maxRight) / 2) + me.left);\n\t\tme.yCenter = Math.floor(((maxTop + maxBottom) / 2) + me.top + me.paddingTop);\n\t},\n\n\tgetIndexAngle: function(index) {\n\t\tvar chart = this.chart;\n\t\tvar angleMultiplier = 360 / chart.data.labels.length;\n\t\tvar options = chart.options || {};\n\t\tvar startAngle = options.startAngle || 0;\n\n\t\t// Start from the top instead of right, so remove a quarter of the circle\n\t\tvar angle = (index * angleMultiplier + startAngle) % 360;\n\n\t\treturn (angle < 0 ? angle + 360 : angle) * Math.PI * 2 / 360;\n\t},\n\n\tgetDistanceFromCenterForValue: function(value) {\n\t\tvar me = this;\n\n\t\tif (helpers$1.isNullOrUndef(value)) {\n\t\t\treturn NaN;\n\t\t}\n\n\t\t// Take into account half font size + the yPadding of the top value\n\t\tvar scalingFactor = me.drawingArea / (me.max - me.min);\n\t\tif (me.options.ticks.reverse) {\n\t\t\treturn (me.max - value) * scalingFactor;\n\t\t}\n\t\treturn (value - me.min) * scalingFactor;\n\t},\n\n\tgetPointPosition: function(index, distanceFromCenter) {\n\t\tvar me = this;\n\t\tvar thisAngle = me.getIndexAngle(index) - (Math.PI / 2);\n\t\treturn {\n\t\t\tx: Math.cos(thisAngle) * distanceFromCenter + me.xCenter,\n\t\t\ty: Math.sin(thisAngle) * distanceFromCenter + me.yCenter\n\t\t};\n\t},\n\n\tgetPointPositionForValue: function(index, value) {\n\t\treturn this.getPointPosition(index, this.getDistanceFromCenterForValue(value));\n\t},\n\n\tgetBasePosition: function(index) {\n\t\tvar me = this;\n\t\tvar min = me.min;\n\t\tvar max = me.max;\n\n\t\treturn me.getPointPositionForValue(index || 0,\n\t\t\tme.beginAtZero ? 0 :\n\t\t\tmin < 0 && max < 0 ? max :\n\t\t\tmin > 0 && max > 0 ? min :\n\t\t\t0);\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_drawGrid: function() {\n\t\tvar me = this;\n\t\tvar ctx = me.ctx;\n\t\tvar opts = me.options;\n\t\tvar gridLineOpts = opts.gridLines;\n\t\tvar angleLineOpts = opts.angleLines;\n\t\tvar lineWidth = valueOrDefault$c(angleLineOpts.lineWidth, gridLineOpts.lineWidth);\n\t\tvar lineColor = valueOrDefault$c(angleLineOpts.color, gridLineOpts.color);\n\t\tvar i, offset, position;\n\n\t\tif (opts.pointLabels.display) {\n\t\t\tdrawPointLabels(me);\n\t\t}\n\n\t\tif (gridLineOpts.display) {\n\t\t\thelpers$1.each(me.ticks, function(label, index) {\n\t\t\t\tif (index !== 0) {\n\t\t\t\t\toffset = me.getDistanceFromCenterForValue(me.ticksAsNumbers[index]);\n\t\t\t\t\tdrawRadiusLine(me, gridLineOpts, offset, index);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif (angleLineOpts.display && lineWidth && lineColor) {\n\t\t\tctx.save();\n\t\t\tctx.lineWidth = lineWidth;\n\t\t\tctx.strokeStyle = lineColor;\n\t\t\tif (ctx.setLineDash) {\n\t\t\t\tctx.setLineDash(resolve$4([angleLineOpts.borderDash, gridLineOpts.borderDash, []]));\n\t\t\t\tctx.lineDashOffset = resolve$4([angleLineOpts.borderDashOffset, gridLineOpts.borderDashOffset, 0.0]);\n\t\t\t}\n\n\t\t\tfor (i = me.chart.data.labels.length - 1; i >= 0; i--) {\n\t\t\t\toffset = me.getDistanceFromCenterForValue(opts.ticks.reverse ? me.min : me.max);\n\t\t\t\tposition = me.getPointPosition(i, offset);\n\t\t\t\tctx.beginPath();\n\t\t\t\tctx.moveTo(me.xCenter, me.yCenter);\n\t\t\t\tctx.lineTo(position.x, position.y);\n\t\t\t\tctx.stroke();\n\t\t\t}\n\n\t\t\tctx.restore();\n\t\t}\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_drawLabels: function() {\n\t\tvar me = this;\n\t\tvar ctx = me.ctx;\n\t\tvar opts = me.options;\n\t\tvar tickOpts = opts.ticks;\n\n\t\tif (!tickOpts.display) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar startAngle = me.getIndexAngle(0);\n\t\tvar tickFont = helpers$1.options._parseFont(tickOpts);\n\t\tvar tickFontColor = valueOrDefault$c(tickOpts.fontColor, core_defaults.global.defaultFontColor);\n\t\tvar offset, width;\n\n\t\tctx.save();\n\t\tctx.font = tickFont.string;\n\t\tctx.translate(me.xCenter, me.yCenter);\n\t\tctx.rotate(startAngle);\n\t\tctx.textAlign = 'center';\n\t\tctx.textBaseline = 'middle';\n\n\t\thelpers$1.each(me.ticks, function(label, index) {\n\t\t\tif (index === 0 && !tickOpts.reverse) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\toffset = me.getDistanceFromCenterForValue(me.ticksAsNumbers[index]);\n\n\t\t\tif (tickOpts.showLabelBackdrop) {\n\t\t\t\twidth = ctx.measureText(label).width;\n\t\t\t\tctx.fillStyle = tickOpts.backdropColor;\n\n\t\t\t\tctx.fillRect(\n\t\t\t\t\t-width / 2 - tickOpts.backdropPaddingX,\n\t\t\t\t\t-offset - tickFont.size / 2 - tickOpts.backdropPaddingY,\n\t\t\t\t\twidth + tickOpts.backdropPaddingX * 2,\n\t\t\t\t\ttickFont.size + tickOpts.backdropPaddingY * 2\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tctx.fillStyle = tickFontColor;\n\t\t\tctx.fillText(label, 0, -offset);\n\t\t});\n\n\t\tctx.restore();\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_drawTitle: helpers$1.noop\n});\n\n// INTERNAL: static default options, registered in src/index.js\nvar _defaults$3 = defaultConfig$3;\nscale_radialLinear._defaults = _defaults$3;\n\nvar deprecated$1 = helpers$1._deprecated;\nvar resolve$5 = helpers$1.options.resolve;\nvar valueOrDefault$d = helpers$1.valueOrDefault;\n\n// Integer constants are from the ES6 spec.\nvar MIN_INTEGER = Number.MIN_SAFE_INTEGER || -9007199254740991;\nvar MAX_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991;\n\nvar INTERVALS = {\n\tmillisecond: {\n\t\tcommon: true,\n\t\tsize: 1,\n\t\tsteps: 1000\n\t},\n\tsecond: {\n\t\tcommon: true,\n\t\tsize: 1000,\n\t\tsteps: 60\n\t},\n\tminute: {\n\t\tcommon: true,\n\t\tsize: 60000,\n\t\tsteps: 60\n\t},\n\thour: {\n\t\tcommon: true,\n\t\tsize: 3600000,\n\t\tsteps: 24\n\t},\n\tday: {\n\t\tcommon: true,\n\t\tsize: 86400000,\n\t\tsteps: 30\n\t},\n\tweek: {\n\t\tcommon: false,\n\t\tsize: 604800000,\n\t\tsteps: 4\n\t},\n\tmonth: {\n\t\tcommon: true,\n\t\tsize: 2.628e9,\n\t\tsteps: 12\n\t},\n\tquarter: {\n\t\tcommon: false,\n\t\tsize: 7.884e9,\n\t\tsteps: 4\n\t},\n\tyear: {\n\t\tcommon: true,\n\t\tsize: 3.154e10\n\t}\n};\n\nvar UNITS = Object.keys(INTERVALS);\n\nfunction sorter(a, b) {\n\treturn a - b;\n}\n\nfunction arrayUnique(items) {\n\tvar hash = {};\n\tvar out = [];\n\tvar i, ilen, item;\n\n\tfor (i = 0, ilen = items.length; i < ilen; ++i) {\n\t\titem = items[i];\n\t\tif (!hash[item]) {\n\t\t\thash[item] = true;\n\t\t\tout.push(item);\n\t\t}\n\t}\n\n\treturn out;\n}\n\nfunction getMin(options) {\n\treturn helpers$1.valueOrDefault(options.time.min, options.ticks.min);\n}\n\nfunction getMax(options) {\n\treturn helpers$1.valueOrDefault(options.time.max, options.ticks.max);\n}\n\n/**\n * Returns an array of {time, pos} objects used to interpolate a specific `time` or position\n * (`pos`) on the scale, by searching entries before and after the requested value. `pos` is\n * a decimal between 0 and 1: 0 being the start of the scale (left or top) and 1 the other\n * extremity (left + width or top + height). Note that it would be more optimized to directly\n * store pre-computed pixels, but the scale dimensions are not guaranteed at the time we need\n * to create the lookup table. The table ALWAYS contains at least two items: min and max.\n *\n * @param {number[]} timestamps - timestamps sorted from lowest to highest.\n * @param {string} distribution - If 'linear', timestamps will be spread linearly along the min\n * and max range, so basically, the table will contains only two items: {min, 0} and {max, 1}.\n * If 'series', timestamps will be positioned at the same distance from each other. In this\n * case, only timestamps that break the time linearity are registered, meaning that in the\n * best case, all timestamps are linear, the table contains only min and max.\n */\nfunction buildLookupTable(timestamps, min, max, distribution) {\n\tif (distribution === 'linear' || !timestamps.length) {\n\t\treturn [\n\t\t\t{time: min, pos: 0},\n\t\t\t{time: max, pos: 1}\n\t\t];\n\t}\n\n\tvar table = [];\n\tvar items = [min];\n\tvar i, ilen, prev, curr, next;\n\n\tfor (i = 0, ilen = timestamps.length; i < ilen; ++i) {\n\t\tcurr = timestamps[i];\n\t\tif (curr > min && curr < max) {\n\t\t\titems.push(curr);\n\t\t}\n\t}\n\n\titems.push(max);\n\n\tfor (i = 0, ilen = items.length; i < ilen; ++i) {\n\t\tnext = items[i + 1];\n\t\tprev = items[i - 1];\n\t\tcurr = items[i];\n\n\t\t// only add points that breaks the scale linearity\n\t\tif (prev === undefined || next === undefined || Math.round((next + prev) / 2) !== curr) {\n\t\t\ttable.push({time: curr, pos: i / (ilen - 1)});\n\t\t}\n\t}\n\n\treturn table;\n}\n\n// @see adapted from https://www.anujgakhar.com/2014/03/01/binary-search-in-javascript/\nfunction lookup(table, key, value) {\n\tvar lo = 0;\n\tvar hi = table.length - 1;\n\tvar mid, i0, i1;\n\n\twhile (lo >= 0 && lo <= hi) {\n\t\tmid = (lo + hi) >> 1;\n\t\ti0 = table[mid - 1] || null;\n\t\ti1 = table[mid];\n\n\t\tif (!i0) {\n\t\t\t// given value is outside table (before first item)\n\t\t\treturn {lo: null, hi: i1};\n\t\t} else if (i1[key] < value) {\n\t\t\tlo = mid + 1;\n\t\t} else if (i0[key] > value) {\n\t\t\thi = mid - 1;\n\t\t} else {\n\t\t\treturn {lo: i0, hi: i1};\n\t\t}\n\t}\n\n\t// given value is outside table (after last item)\n\treturn {lo: i1, hi: null};\n}\n\n/**\n * Linearly interpolates the given source `value` using the table items `skey` values and\n * returns the associated `tkey` value. For example, interpolate(table, 'time', 42, 'pos')\n * returns the position for a timestamp equal to 42. If value is out of bounds, values at\n * index [0, 1] or [n - 1, n] are used for the interpolation.\n */\nfunction interpolate$1(table, skey, sval, tkey) {\n\tvar range = lookup(table, skey, sval);\n\n\t// Note: the lookup table ALWAYS contains at least 2 items (min and max)\n\tvar prev = !range.lo ? table[0] : !range.hi ? table[table.length - 2] : range.lo;\n\tvar next = !range.lo ? table[1] : !range.hi ? table[table.length - 1] : range.hi;\n\n\tvar span = next[skey] - prev[skey];\n\tvar ratio = span ? (sval - prev[skey]) / span : 0;\n\tvar offset = (next[tkey] - prev[tkey]) * ratio;\n\n\treturn prev[tkey] + offset;\n}\n\nfunction toTimestamp(scale, input) {\n\tvar adapter = scale._adapter;\n\tvar options = scale.options.time;\n\tvar parser = options.parser;\n\tvar format = parser || options.format;\n\tvar value = input;\n\n\tif (typeof parser === 'function') {\n\t\tvalue = parser(value);\n\t}\n\n\t// Only parse if its not a timestamp already\n\tif (!helpers$1.isFinite(value)) {\n\t\tvalue = typeof format === 'string'\n\t\t\t? adapter.parse(value, format)\n\t\t\t: adapter.parse(value);\n\t}\n\n\tif (value !== null) {\n\t\treturn +value;\n\t}\n\n\t// Labels are in an incompatible format and no `parser` has been provided.\n\t// The user might still use the deprecated `format` option for parsing.\n\tif (!parser && typeof format === 'function') {\n\t\tvalue = format(input);\n\n\t\t// `format` could return something else than a timestamp, if so, parse it\n\t\tif (!helpers$1.isFinite(value)) {\n\t\t\tvalue = adapter.parse(value);\n\t\t}\n\t}\n\n\treturn value;\n}\n\nfunction parse(scale, input) {\n\tif (helpers$1.isNullOrUndef(input)) {\n\t\treturn null;\n\t}\n\n\tvar options = scale.options.time;\n\tvar value = toTimestamp(scale, scale.getRightValue(input));\n\tif (value === null) {\n\t\treturn value;\n\t}\n\n\tif (options.round) {\n\t\tvalue = +scale._adapter.startOf(value, options.round);\n\t}\n\n\treturn value;\n}\n\n/**\n * Figures out what unit results in an appropriate number of auto-generated ticks\n */\nfunction determineUnitForAutoTicks(minUnit, min, max, capacity) {\n\tvar ilen = UNITS.length;\n\tvar i, interval, factor;\n\n\tfor (i = UNITS.indexOf(minUnit); i < ilen - 1; ++i) {\n\t\tinterval = INTERVALS[UNITS[i]];\n\t\tfactor = interval.steps ? interval.steps : MAX_INTEGER;\n\n\t\tif (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) {\n\t\t\treturn UNITS[i];\n\t\t}\n\t}\n\n\treturn UNITS[ilen - 1];\n}\n\n/**\n * Figures out what unit to format a set of ticks with\n */\nfunction determineUnitForFormatting(scale, numTicks, minUnit, min, max) {\n\tvar i, unit;\n\n\tfor (i = UNITS.length - 1; i >= UNITS.indexOf(minUnit); i--) {\n\t\tunit = UNITS[i];\n\t\tif (INTERVALS[unit].common && scale._adapter.diff(max, min, unit) >= numTicks - 1) {\n\t\t\treturn unit;\n\t\t}\n\t}\n\n\treturn UNITS[minUnit ? UNITS.indexOf(minUnit) : 0];\n}\n\nfunction determineMajorUnit(unit) {\n\tfor (var i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i) {\n\t\tif (INTERVALS[UNITS[i]].common) {\n\t\t\treturn UNITS[i];\n\t\t}\n\t}\n}\n\n/**\n * Generates a maximum of `capacity` timestamps between min and max, rounded to the\n * `minor` unit using the given scale time `options`.\n * Important: this method can return ticks outside the min and max range, it's the\n * responsibility of the calling code to clamp values if needed.\n */\nfunction generate(scale, min, max, capacity) {\n\tvar adapter = scale._adapter;\n\tvar options = scale.options;\n\tvar timeOpts = options.time;\n\tvar minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, capacity);\n\tvar stepSize = resolve$5([timeOpts.stepSize, timeOpts.unitStepSize, 1]);\n\tvar weekday = minor === 'week' ? timeOpts.isoWeekday : false;\n\tvar first = min;\n\tvar ticks = [];\n\tvar time;\n\n\t// For 'week' unit, handle the first day of week option\n\tif (weekday) {\n\t\tfirst = +adapter.startOf(first, 'isoWeek', weekday);\n\t}\n\n\t// Align first ticks on unit\n\tfirst = +adapter.startOf(first, weekday ? 'day' : minor);\n\n\t// Prevent browser from freezing in case user options request millions of milliseconds\n\tif (adapter.diff(max, min, minor) > 100000 * stepSize) {\n\t\tthrow min + ' and ' + max + ' are too far apart with stepSize of ' + stepSize + ' ' + minor;\n\t}\n\n\tfor (time = first; time < max; time = +adapter.add(time, stepSize, minor)) {\n\t\tticks.push(time);\n\t}\n\n\tif (time === max || options.bounds === 'ticks') {\n\t\tticks.push(time);\n\t}\n\n\treturn ticks;\n}\n\n/**\n * Returns the start and end offsets from edges in the form of {start, end}\n * where each value is a relative width to the scale and ranges between 0 and 1.\n * They add extra margins on the both sides by scaling down the original scale.\n * Offsets are added when the `offset` option is true.\n */\nfunction computeOffsets(table, ticks, min, max, options) {\n\tvar start = 0;\n\tvar end = 0;\n\tvar first, last;\n\n\tif (options.offset && ticks.length) {\n\t\tfirst = interpolate$1(table, 'time', ticks[0], 'pos');\n\t\tif (ticks.length === 1) {\n\t\t\tstart = 1 - first;\n\t\t} else {\n\t\t\tstart = (interpolate$1(table, 'time', ticks[1], 'pos') - first) / 2;\n\t\t}\n\t\tlast = interpolate$1(table, 'time', ticks[ticks.length - 1], 'pos');\n\t\tif (ticks.length === 1) {\n\t\t\tend = last;\n\t\t} else {\n\t\t\tend = (last - interpolate$1(table, 'time', ticks[ticks.length - 2], 'pos')) / 2;\n\t\t}\n\t}\n\n\treturn {start: start, end: end, factor: 1 / (start + 1 + end)};\n}\n\nfunction setMajorTicks(scale, ticks, map, majorUnit) {\n\tvar adapter = scale._adapter;\n\tvar first = +adapter.startOf(ticks[0].value, majorUnit);\n\tvar last = ticks[ticks.length - 1].value;\n\tvar major, index;\n\n\tfor (major = first; major <= last; major = +adapter.add(major, 1, majorUnit)) {\n\t\tindex = map[major];\n\t\tif (index >= 0) {\n\t\t\tticks[index].major = true;\n\t\t}\n\t}\n\treturn ticks;\n}\n\nfunction ticksFromTimestamps(scale, values, majorUnit) {\n\tvar ticks = [];\n\tvar map = {};\n\tvar ilen = values.length;\n\tvar i, value;\n\n\tfor (i = 0; i < ilen; ++i) {\n\t\tvalue = values[i];\n\t\tmap[value] = i;\n\n\t\tticks.push({\n\t\t\tvalue: value,\n\t\t\tmajor: false\n\t\t});\n\t}\n\n\t// We set the major ticks separately from the above loop because calling startOf for every tick\n\t// is expensive when there is a large number of ticks\n\treturn (ilen === 0 || !majorUnit) ? ticks : setMajorTicks(scale, ticks, map, majorUnit);\n}\n\nvar defaultConfig$4 = {\n\tposition: 'bottom',\n\n\t/**\n\t * Data distribution along the scale:\n\t * - 'linear': data are spread according to their time (distances can vary),\n\t * - 'series': data are spread at the same distance from each other.\n\t * @see https://github.com/chartjs/Chart.js/pull/4507\n\t * @since 2.7.0\n\t */\n\tdistribution: 'linear',\n\n\t/**\n\t * Scale boundary strategy (bypassed by min/max time options)\n\t * - `data`: make sure data are fully visible, ticks outside are removed\n\t * - `ticks`: make sure ticks are fully visible, data outside are truncated\n\t * @see https://github.com/chartjs/Chart.js/pull/4556\n\t * @since 2.7.0\n\t */\n\tbounds: 'data',\n\n\tadapters: {},\n\ttime: {\n\t\tparser: false, // false == a pattern string from https://momentjs.com/docs/#/parsing/string-format/ or a custom callback that converts its argument to a moment\n\t\tunit: false, // false == automatic or override with week, month, year, etc.\n\t\tround: false, // none, or override with week, month, year, etc.\n\t\tdisplayFormat: false, // DEPRECATED\n\t\tisoWeekday: false, // override week start day - see https://momentjs.com/docs/#/get-set/iso-weekday/\n\t\tminUnit: 'millisecond',\n\t\tdisplayFormats: {}\n\t},\n\tticks: {\n\t\tautoSkip: false,\n\n\t\t/**\n\t\t * Ticks generation input values:\n\t\t * - 'auto': generates \"optimal\" ticks based on scale size and time options.\n\t\t * - 'data': generates ticks from data (including labels from data {t|x|y} objects).\n\t\t * - 'labels': generates ticks from user given `data.labels` values ONLY.\n\t\t * @see https://github.com/chartjs/Chart.js/pull/4507\n\t\t * @since 2.7.0\n\t\t */\n\t\tsource: 'auto',\n\n\t\tmajor: {\n\t\t\tenabled: false\n\t\t}\n\t}\n};\n\nvar scale_time = core_scale.extend({\n\tinitialize: function() {\n\t\tthis.mergeTicksOptions();\n\t\tcore_scale.prototype.initialize.call(this);\n\t},\n\n\tupdate: function() {\n\t\tvar me = this;\n\t\tvar options = me.options;\n\t\tvar time = options.time || (options.time = {});\n\t\tvar adapter = me._adapter = new core_adapters._date(options.adapters.date);\n\n\t\t// DEPRECATIONS: output a message only one time per update\n\t\tdeprecated$1('time scale', time.format, 'time.format', 'time.parser');\n\t\tdeprecated$1('time scale', time.min, 'time.min', 'ticks.min');\n\t\tdeprecated$1('time scale', time.max, 'time.max', 'ticks.max');\n\n\t\t// Backward compatibility: before introducing adapter, `displayFormats` was\n\t\t// supposed to contain *all* unit/string pairs but this can't be resolved\n\t\t// when loading the scale (adapters are loaded afterward), so let's populate\n\t\t// missing formats on update\n\t\thelpers$1.mergeIf(time.displayFormats, adapter.formats());\n\n\t\treturn core_scale.prototype.update.apply(me, arguments);\n\t},\n\n\t/**\n\t * Allows data to be referenced via 't' attribute\n\t */\n\tgetRightValue: function(rawValue) {\n\t\tif (rawValue && rawValue.t !== undefined) {\n\t\t\trawValue = rawValue.t;\n\t\t}\n\t\treturn core_scale.prototype.getRightValue.call(this, rawValue);\n\t},\n\n\tdetermineDataLimits: function() {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar adapter = me._adapter;\n\t\tvar options = me.options;\n\t\tvar unit = options.time.unit || 'day';\n\t\tvar min = MAX_INTEGER;\n\t\tvar max = MIN_INTEGER;\n\t\tvar timestamps = [];\n\t\tvar datasets = [];\n\t\tvar labels = [];\n\t\tvar i, j, ilen, jlen, data, timestamp, labelsAdded;\n\t\tvar dataLabels = me._getLabels();\n\n\t\tfor (i = 0, ilen = dataLabels.length; i < ilen; ++i) {\n\t\t\tlabels.push(parse(me, dataLabels[i]));\n\t\t}\n\n\t\tfor (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\n\t\t\tif (chart.isDatasetVisible(i)) {\n\t\t\t\tdata = chart.data.datasets[i].data;\n\n\t\t\t\t// Let's consider that all data have the same format.\n\t\t\t\tif (helpers$1.isObject(data[0])) {\n\t\t\t\t\tdatasets[i] = [];\n\n\t\t\t\t\tfor (j = 0, jlen = data.length; j < jlen; ++j) {\n\t\t\t\t\t\ttimestamp = parse(me, data[j]);\n\t\t\t\t\t\ttimestamps.push(timestamp);\n\t\t\t\t\t\tdatasets[i][j] = timestamp;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tdatasets[i] = labels.slice(0);\n\t\t\t\t\tif (!labelsAdded) {\n\t\t\t\t\t\ttimestamps = timestamps.concat(labels);\n\t\t\t\t\t\tlabelsAdded = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdatasets[i] = [];\n\t\t\t}\n\t\t}\n\n\t\tif (labels.length) {\n\t\t\tmin = Math.min(min, labels[0]);\n\t\t\tmax = Math.max(max, labels[labels.length - 1]);\n\t\t}\n\n\t\tif (timestamps.length) {\n\t\t\ttimestamps = ilen > 1 ? arrayUnique(timestamps).sort(sorter) : timestamps.sort(sorter);\n\t\t\tmin = Math.min(min, timestamps[0]);\n\t\t\tmax = Math.max(max, timestamps[timestamps.length - 1]);\n\t\t}\n\n\t\tmin = parse(me, getMin(options)) || min;\n\t\tmax = parse(me, getMax(options)) || max;\n\n\t\t// In case there is no valid min/max, set limits based on unit time option\n\t\tmin = min === MAX_INTEGER ? +adapter.startOf(Date.now(), unit) : min;\n\t\tmax = max === MIN_INTEGER ? +adapter.endOf(Date.now(), unit) + 1 : max;\n\n\t\t// Make sure that max is strictly higher than min (required by the lookup table)\n\t\tme.min = Math.min(min, max);\n\t\tme.max = Math.max(min + 1, max);\n\n\t\t// PRIVATE\n\t\tme._table = [];\n\t\tme._timestamps = {\n\t\t\tdata: timestamps,\n\t\t\tdatasets: datasets,\n\t\t\tlabels: labels\n\t\t};\n\t},\n\n\tbuildTicks: function() {\n\t\tvar me = this;\n\t\tvar min = me.min;\n\t\tvar max = me.max;\n\t\tvar options = me.options;\n\t\tvar tickOpts = options.ticks;\n\t\tvar timeOpts = options.time;\n\t\tvar timestamps = me._timestamps;\n\t\tvar ticks = [];\n\t\tvar capacity = me.getLabelCapacity(min);\n\t\tvar source = tickOpts.source;\n\t\tvar distribution = options.distribution;\n\t\tvar i, ilen, timestamp;\n\n\t\tif (source === 'data' || (source === 'auto' && distribution === 'series')) {\n\t\t\ttimestamps = timestamps.data;\n\t\t} else if (source === 'labels') {\n\t\t\ttimestamps = timestamps.labels;\n\t\t} else {\n\t\t\ttimestamps = generate(me, min, max, capacity);\n\t\t}\n\n\t\tif (options.bounds === 'ticks' && timestamps.length) {\n\t\t\tmin = timestamps[0];\n\t\t\tmax = timestamps[timestamps.length - 1];\n\t\t}\n\n\t\t// Enforce limits with user min/max options\n\t\tmin = parse(me, getMin(options)) || min;\n\t\tmax = parse(me, getMax(options)) || max;\n\n\t\t// Remove ticks outside the min/max range\n\t\tfor (i = 0, ilen = timestamps.length; i < ilen; ++i) {\n\t\t\ttimestamp = timestamps[i];\n\t\t\tif (timestamp >= min && timestamp <= max) {\n\t\t\t\tticks.push(timestamp);\n\t\t\t}\n\t\t}\n\n\t\tme.min = min;\n\t\tme.max = max;\n\n\t\t// PRIVATE\n\t\t// determineUnitForFormatting relies on the number of ticks so we don't use it when\n\t\t// autoSkip is enabled because we don't yet know what the final number of ticks will be\n\t\tme._unit = timeOpts.unit || (tickOpts.autoSkip\n\t\t\t? determineUnitForAutoTicks(timeOpts.minUnit, me.min, me.max, capacity)\n\t\t\t: determineUnitForFormatting(me, ticks.length, timeOpts.minUnit, me.min, me.max));\n\t\tme._majorUnit = !tickOpts.major.enabled || me._unit === 'year' ? undefined\n\t\t\t: determineMajorUnit(me._unit);\n\t\tme._table = buildLookupTable(me._timestamps.data, min, max, distribution);\n\t\tme._offsets = computeOffsets(me._table, ticks, min, max, options);\n\n\t\tif (tickOpts.reverse) {\n\t\t\tticks.reverse();\n\t\t}\n\n\t\treturn ticksFromTimestamps(me, ticks, me._majorUnit);\n\t},\n\n\tgetLabelForIndex: function(index, datasetIndex) {\n\t\tvar me = this;\n\t\tvar adapter = me._adapter;\n\t\tvar data = me.chart.data;\n\t\tvar timeOpts = me.options.time;\n\t\tvar label = data.labels && index < data.labels.length ? data.labels[index] : '';\n\t\tvar value = data.datasets[datasetIndex].data[index];\n\n\t\tif (helpers$1.isObject(value)) {\n\t\t\tlabel = me.getRightValue(value);\n\t\t}\n\t\tif (timeOpts.tooltipFormat) {\n\t\t\treturn adapter.format(toTimestamp(me, label), timeOpts.tooltipFormat);\n\t\t}\n\t\tif (typeof label === 'string') {\n\t\t\treturn label;\n\t\t}\n\t\treturn adapter.format(toTimestamp(me, label), timeOpts.displayFormats.datetime);\n\t},\n\n\t/**\n\t * Function to format an individual tick mark\n\t * @private\n\t */\n\ttickFormatFunction: function(time, index, ticks, format) {\n\t\tvar me = this;\n\t\tvar adapter = me._adapter;\n\t\tvar options = me.options;\n\t\tvar formats = options.time.displayFormats;\n\t\tvar minorFormat = formats[me._unit];\n\t\tvar majorUnit = me._majorUnit;\n\t\tvar majorFormat = formats[majorUnit];\n\t\tvar tick = ticks[index];\n\t\tvar tickOpts = options.ticks;\n\t\tvar major = majorUnit && majorFormat && tick && tick.major;\n\t\tvar label = adapter.format(time, format ? format : major ? majorFormat : minorFormat);\n\t\tvar nestedTickOpts = major ? tickOpts.major : tickOpts.minor;\n\t\tvar formatter = resolve$5([\n\t\t\tnestedTickOpts.callback,\n\t\t\tnestedTickOpts.userCallback,\n\t\t\ttickOpts.callback,\n\t\t\ttickOpts.userCallback\n\t\t]);\n\n\t\treturn formatter ? formatter(label, index, ticks) : label;\n\t},\n\n\tconvertTicksToLabels: function(ticks) {\n\t\tvar labels = [];\n\t\tvar i, ilen;\n\n\t\tfor (i = 0, ilen = ticks.length; i < ilen; ++i) {\n\t\t\tlabels.push(this.tickFormatFunction(ticks[i].value, i, ticks));\n\t\t}\n\n\t\treturn labels;\n\t},\n\n\t/**\n\t * @private\n\t */\n\tgetPixelForOffset: function(time) {\n\t\tvar me = this;\n\t\tvar offsets = me._offsets;\n\t\tvar pos = interpolate$1(me._table, 'time', time, 'pos');\n\t\treturn me.getPixelForDecimal((offsets.start + pos) * offsets.factor);\n\t},\n\n\tgetPixelForValue: function(value, index, datasetIndex) {\n\t\tvar me = this;\n\t\tvar time = null;\n\n\t\tif (index !== undefined && datasetIndex !== undefined) {\n\t\t\ttime = me._timestamps.datasets[datasetIndex][index];\n\t\t}\n\n\t\tif (time === null) {\n\t\t\ttime = parse(me, value);\n\t\t}\n\n\t\tif (time !== null) {\n\t\t\treturn me.getPixelForOffset(time);\n\t\t}\n\t},\n\n\tgetPixelForTick: function(index) {\n\t\tvar ticks = this.getTicks();\n\t\treturn index >= 0 && index < ticks.length ?\n\t\t\tthis.getPixelForOffset(ticks[index].value) :\n\t\t\tnull;\n\t},\n\n\tgetValueForPixel: function(pixel) {\n\t\tvar me = this;\n\t\tvar offsets = me._offsets;\n\t\tvar pos = me.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n\t\tvar time = interpolate$1(me._table, 'pos', pos, 'time');\n\n\t\t// DEPRECATION, we should return time directly\n\t\treturn me._adapter._create(time);\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_getLabelSize: function(label) {\n\t\tvar me = this;\n\t\tvar ticksOpts = me.options.ticks;\n\t\tvar tickLabelWidth = me.ctx.measureText(label).width;\n\t\tvar angle = helpers$1.toRadians(me.isHorizontal() ? ticksOpts.maxRotation : ticksOpts.minRotation);\n\t\tvar cosRotation = Math.cos(angle);\n\t\tvar sinRotation = Math.sin(angle);\n\t\tvar tickFontSize = valueOrDefault$d(ticksOpts.fontSize, core_defaults.global.defaultFontSize);\n\n\t\treturn {\n\t\t\tw: (tickLabelWidth * cosRotation) + (tickFontSize * sinRotation),\n\t\t\th: (tickLabelWidth * sinRotation) + (tickFontSize * cosRotation)\n\t\t};\n\t},\n\n\t/**\n\t * Crude approximation of what the label width might be\n\t * @private\n\t */\n\tgetLabelWidth: function(label) {\n\t\treturn this._getLabelSize(label).w;\n\t},\n\n\t/**\n\t * @private\n\t */\n\tgetLabelCapacity: function(exampleTime) {\n\t\tvar me = this;\n\t\tvar timeOpts = me.options.time;\n\t\tvar displayFormats = timeOpts.displayFormats;\n\n\t\t// pick the longest format (milliseconds) for guestimation\n\t\tvar format = displayFormats[timeOpts.unit] || displayFormats.millisecond;\n\t\tvar exampleLabel = me.tickFormatFunction(exampleTime, 0, ticksFromTimestamps(me, [exampleTime], me._majorUnit), format);\n\t\tvar size = me._getLabelSize(exampleLabel);\n\t\tvar capacity = Math.floor(me.isHorizontal() ? me.width / size.w : me.height / size.h);\n\n\t\tif (me.options.offset) {\n\t\t\tcapacity--;\n\t\t}\n\n\t\treturn capacity > 0 ? capacity : 1;\n\t}\n});\n\n// INTERNAL: static default options, registered in src/index.js\nvar _defaults$4 = defaultConfig$4;\nscale_time._defaults = _defaults$4;\n\nvar scales = {\n\tcategory: scale_category,\n\tlinear: scale_linear,\n\tlogarithmic: scale_logarithmic,\n\tradialLinear: scale_radialLinear,\n\ttime: scale_time\n};\n\nvar FORMATS = {\n\tdatetime: 'MMM D, YYYY, h:mm:ss a',\n\tmillisecond: 'h:mm:ss.SSS a',\n\tsecond: 'h:mm:ss a',\n\tminute: 'h:mm a',\n\thour: 'hA',\n\tday: 'MMM D',\n\tweek: 'll',\n\tmonth: 'MMM YYYY',\n\tquarter: '[Q]Q - YYYY',\n\tyear: 'YYYY'\n};\n\ncore_adapters._date.override(typeof moment === 'function' ? {\n\t_id: 'moment', // DEBUG ONLY\n\n\tformats: function() {\n\t\treturn FORMATS;\n\t},\n\n\tparse: function(value, format) {\n\t\tif (typeof value === 'string' && typeof format === 'string') {\n\t\t\tvalue = moment(value, format);\n\t\t} else if (!(value instanceof moment)) {\n\t\t\tvalue = moment(value);\n\t\t}\n\t\treturn value.isValid() ? value.valueOf() : null;\n\t},\n\n\tformat: function(time, format) {\n\t\treturn moment(time).format(format);\n\t},\n\n\tadd: function(time, amount, unit) {\n\t\treturn moment(time).add(amount, unit).valueOf();\n\t},\n\n\tdiff: function(max, min, unit) {\n\t\treturn moment(max).diff(moment(min), unit);\n\t},\n\n\tstartOf: function(time, unit, weekday) {\n\t\ttime = moment(time);\n\t\tif (unit === 'isoWeek') {\n\t\t\treturn time.isoWeekday(weekday).valueOf();\n\t\t}\n\t\treturn time.startOf(unit).valueOf();\n\t},\n\n\tendOf: function(time, unit) {\n\t\treturn moment(time).endOf(unit).valueOf();\n\t},\n\n\t// DEPRECATIONS\n\n\t/**\n\t * Provided for backward compatibility with scale.getValueForPixel().\n\t * @deprecated since version 2.8.0\n\t * @todo remove at version 3\n\t * @private\n\t */\n\t_create: function(time) {\n\t\treturn moment(time);\n\t},\n} : {});\n\ncore_defaults._set('global', {\n\tplugins: {\n\t\tfiller: {\n\t\t\tpropagate: true\n\t\t}\n\t}\n});\n\nvar mappers = {\n\tdataset: function(source) {\n\t\tvar index = source.fill;\n\t\tvar chart = source.chart;\n\t\tvar meta = chart.getDatasetMeta(index);\n\t\tvar visible = meta && chart.isDatasetVisible(index);\n\t\tvar points = (visible && meta.dataset._children) || [];\n\t\tvar length = points.length || 0;\n\n\t\treturn !length ? null : function(point, i) {\n\t\t\treturn (i < length && points[i]._view) || null;\n\t\t};\n\t},\n\n\tboundary: function(source) {\n\t\tvar boundary = source.boundary;\n\t\tvar x = boundary ? boundary.x : null;\n\t\tvar y = boundary ? boundary.y : null;\n\n\t\tif (helpers$1.isArray(boundary)) {\n\t\t\treturn function(point, i) {\n\t\t\t\treturn boundary[i];\n\t\t\t};\n\t\t}\n\n\t\treturn function(point) {\n\t\t\treturn {\n\t\t\t\tx: x === null ? point.x : x,\n\t\t\t\ty: y === null ? point.y : y,\n\t\t\t};\n\t\t};\n\t}\n};\n\n// @todo if (fill[0] === '#')\nfunction decodeFill(el, index, count) {\n\tvar model = el._model || {};\n\tvar fill = model.fill;\n\tvar target;\n\n\tif (fill === undefined) {\n\t\tfill = !!model.backgroundColor;\n\t}\n\n\tif (fill === false || fill === null) {\n\t\treturn false;\n\t}\n\n\tif (fill === true) {\n\t\treturn 'origin';\n\t}\n\n\ttarget = parseFloat(fill, 10);\n\tif (isFinite(target) && Math.floor(target) === target) {\n\t\tif (fill[0] === '-' || fill[0] === '+') {\n\t\t\ttarget = index + target;\n\t\t}\n\n\t\tif (target === index || target < 0 || target >= count) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn target;\n\t}\n\n\tswitch (fill) {\n\t// compatibility\n\tcase 'bottom':\n\t\treturn 'start';\n\tcase 'top':\n\t\treturn 'end';\n\tcase 'zero':\n\t\treturn 'origin';\n\t// supported boundaries\n\tcase 'origin':\n\tcase 'start':\n\tcase 'end':\n\t\treturn fill;\n\t// invalid fill values\n\tdefault:\n\t\treturn false;\n\t}\n}\n\nfunction computeLinearBoundary(source) {\n\tvar model = source.el._model || {};\n\tvar scale = source.el._scale || {};\n\tvar fill = source.fill;\n\tvar target = null;\n\tvar horizontal;\n\n\tif (isFinite(fill)) {\n\t\treturn null;\n\t}\n\n\t// Backward compatibility: until v3, we still need to support boundary values set on\n\t// the model (scaleTop, scaleBottom and scaleZero) because some external plugins and\n\t// controllers might still use it (e.g. the Smith chart).\n\n\tif (fill === 'start') {\n\t\ttarget = model.scaleBottom === undefined ? scale.bottom : model.scaleBottom;\n\t} else if (fill === 'end') {\n\t\ttarget = model.scaleTop === undefined ? scale.top : model.scaleTop;\n\t} else if (model.scaleZero !== undefined) {\n\t\ttarget = model.scaleZero;\n\t} else if (scale.getBasePixel) {\n\t\ttarget = scale.getBasePixel();\n\t}\n\n\tif (target !== undefined && target !== null) {\n\t\tif (target.x !== undefined && target.y !== undefined) {\n\t\t\treturn target;\n\t\t}\n\n\t\tif (helpers$1.isFinite(target)) {\n\t\t\thorizontal = scale.isHorizontal();\n\t\t\treturn {\n\t\t\t\tx: horizontal ? target : null,\n\t\t\t\ty: horizontal ? null : target\n\t\t\t};\n\t\t}\n\t}\n\n\treturn null;\n}\n\nfunction computeCircularBoundary(source) {\n\tvar scale = source.el._scale;\n\tvar options = scale.options;\n\tvar length = scale.chart.data.labels.length;\n\tvar fill = source.fill;\n\tvar target = [];\n\tvar start, end, center, i, point;\n\n\tif (!length) {\n\t\treturn null;\n\t}\n\n\tstart = options.ticks.reverse ? scale.max : scale.min;\n\tend = options.ticks.reverse ? scale.min : scale.max;\n\tcenter = scale.getPointPositionForValue(0, start);\n\tfor (i = 0; i < length; ++i) {\n\t\tpoint = fill === 'start' || fill === 'end'\n\t\t\t? scale.getPointPositionForValue(i, fill === 'start' ? start : end)\n\t\t\t: scale.getBasePosition(i);\n\t\tif (options.gridLines.circular) {\n\t\t\tpoint.cx = center.x;\n\t\t\tpoint.cy = center.y;\n\t\t\tpoint.angle = scale.getIndexAngle(i) - Math.PI / 2;\n\t\t}\n\t\ttarget.push(point);\n\t}\n\treturn target;\n}\n\nfunction computeBoundary(source) {\n\tvar scale = source.el._scale || {};\n\n\tif (scale.getPointPositionForValue) {\n\t\treturn computeCircularBoundary(source);\n\t}\n\treturn computeLinearBoundary(source);\n}\n\nfunction resolveTarget(sources, index, propagate) {\n\tvar source = sources[index];\n\tvar fill = source.fill;\n\tvar visited = [index];\n\tvar target;\n\n\tif (!propagate) {\n\t\treturn fill;\n\t}\n\n\twhile (fill !== false && visited.indexOf(fill) === -1) {\n\t\tif (!isFinite(fill)) {\n\t\t\treturn fill;\n\t\t}\n\n\t\ttarget = sources[fill];\n\t\tif (!target) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (target.visible) {\n\t\t\treturn fill;\n\t\t}\n\n\t\tvisited.push(fill);\n\t\tfill = target.fill;\n\t}\n\n\treturn false;\n}\n\nfunction createMapper(source) {\n\tvar fill = source.fill;\n\tvar type = 'dataset';\n\n\tif (fill === false) {\n\t\treturn null;\n\t}\n\n\tif (!isFinite(fill)) {\n\t\ttype = 'boundary';\n\t}\n\n\treturn mappers[type](source);\n}\n\nfunction isDrawable(point) {\n\treturn point && !point.skip;\n}\n\nfunction drawArea(ctx, curve0, curve1, len0, len1) {\n\tvar i, cx, cy, r;\n\n\tif (!len0 || !len1) {\n\t\treturn;\n\t}\n\n\t// building first area curve (normal)\n\tctx.moveTo(curve0[0].x, curve0[0].y);\n\tfor (i = 1; i < len0; ++i) {\n\t\thelpers$1.canvas.lineTo(ctx, curve0[i - 1], curve0[i]);\n\t}\n\n\tif (curve1[0].angle !== undefined) {\n\t\tcx = curve1[0].cx;\n\t\tcy = curve1[0].cy;\n\t\tr = Math.sqrt(Math.pow(curve1[0].x - cx, 2) + Math.pow(curve1[0].y - cy, 2));\n\t\tfor (i = len1 - 1; i > 0; --i) {\n\t\t\tctx.arc(cx, cy, r, curve1[i].angle, curve1[i - 1].angle, true);\n\t\t}\n\t\treturn;\n\t}\n\n\t// joining the two area curves\n\tctx.lineTo(curve1[len1 - 1].x, curve1[len1 - 1].y);\n\n\t// building opposite area curve (reverse)\n\tfor (i = len1 - 1; i > 0; --i) {\n\t\thelpers$1.canvas.lineTo(ctx, curve1[i], curve1[i - 1], true);\n\t}\n}\n\nfunction doFill(ctx, points, mapper, view, color, loop) {\n\tvar count = points.length;\n\tvar span = view.spanGaps;\n\tvar curve0 = [];\n\tvar curve1 = [];\n\tvar len0 = 0;\n\tvar len1 = 0;\n\tvar i, ilen, index, p0, p1, d0, d1, loopOffset;\n\n\tctx.beginPath();\n\n\tfor (i = 0, ilen = count; i < ilen; ++i) {\n\t\tindex = i % count;\n\t\tp0 = points[index]._view;\n\t\tp1 = mapper(p0, index, view);\n\t\td0 = isDrawable(p0);\n\t\td1 = isDrawable(p1);\n\n\t\tif (loop && loopOffset === undefined && d0) {\n\t\t\tloopOffset = i + 1;\n\t\t\tilen = count + loopOffset;\n\t\t}\n\n\t\tif (d0 && d1) {\n\t\t\tlen0 = curve0.push(p0);\n\t\t\tlen1 = curve1.push(p1);\n\t\t} else if (len0 && len1) {\n\t\t\tif (!span) {\n\t\t\t\tdrawArea(ctx, curve0, curve1, len0, len1);\n\t\t\t\tlen0 = len1 = 0;\n\t\t\t\tcurve0 = [];\n\t\t\t\tcurve1 = [];\n\t\t\t} else {\n\t\t\t\tif (d0) {\n\t\t\t\t\tcurve0.push(p0);\n\t\t\t\t}\n\t\t\t\tif (d1) {\n\t\t\t\t\tcurve1.push(p1);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tdrawArea(ctx, curve0, curve1, len0, len1);\n\n\tctx.closePath();\n\tctx.fillStyle = color;\n\tctx.fill();\n}\n\nvar plugin_filler = {\n\tid: 'filler',\n\n\tafterDatasetsUpdate: function(chart, options) {\n\t\tvar count = (chart.data.datasets || []).length;\n\t\tvar propagate = options.propagate;\n\t\tvar sources = [];\n\t\tvar meta, i, el, source;\n\n\t\tfor (i = 0; i < count; ++i) {\n\t\t\tmeta = chart.getDatasetMeta(i);\n\t\t\tel = meta.dataset;\n\t\t\tsource = null;\n\n\t\t\tif (el && el._model && el instanceof elements.Line) {\n\t\t\t\tsource = {\n\t\t\t\t\tvisible: chart.isDatasetVisible(i),\n\t\t\t\t\tfill: decodeFill(el, i, count),\n\t\t\t\t\tchart: chart,\n\t\t\t\t\tel: el\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tmeta.$filler = source;\n\t\t\tsources.push(source);\n\t\t}\n\n\t\tfor (i = 0; i < count; ++i) {\n\t\t\tsource = sources[i];\n\t\t\tif (!source) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tsource.fill = resolveTarget(sources, i, propagate);\n\t\t\tsource.boundary = computeBoundary(source);\n\t\t\tsource.mapper = createMapper(source);\n\t\t}\n\t},\n\n\tbeforeDatasetsDraw: function(chart) {\n\t\tvar metasets = chart._getSortedVisibleDatasetMetas();\n\t\tvar ctx = chart.ctx;\n\t\tvar meta, i, el, view, points, mapper, color;\n\n\t\tfor (i = metasets.length - 1; i >= 0; --i) {\n\t\t\tmeta = metasets[i].$filler;\n\n\t\t\tif (!meta || !meta.visible) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tel = meta.el;\n\t\t\tview = el._view;\n\t\t\tpoints = el._children || [];\n\t\t\tmapper = meta.mapper;\n\t\t\tcolor = view.backgroundColor || core_defaults.global.defaultColor;\n\n\t\t\tif (mapper && color && points.length) {\n\t\t\t\thelpers$1.canvas.clipArea(ctx, chart.chartArea);\n\t\t\t\tdoFill(ctx, points, mapper, view, color, el._loop);\n\t\t\t\thelpers$1.canvas.unclipArea(ctx);\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar getRtlHelper$1 = helpers$1.rtl.getRtlAdapter;\nvar noop$1 = helpers$1.noop;\nvar valueOrDefault$e = helpers$1.valueOrDefault;\n\ncore_defaults._set('global', {\n\tlegend: {\n\t\tdisplay: true,\n\t\tposition: 'top',\n\t\talign: 'center',\n\t\tfullWidth: true,\n\t\treverse: false,\n\t\tweight: 1000,\n\n\t\t// a callback that will handle\n\t\tonClick: function(e, legendItem) {\n\t\t\tvar index = legendItem.datasetIndex;\n\t\t\tvar ci = this.chart;\n\t\t\tvar meta = ci.getDatasetMeta(index);\n\n\t\t\t// See controller.isDatasetVisible comment\n\t\t\tmeta.hidden = meta.hidden === null ? !ci.data.datasets[index].hidden : null;\n\n\t\t\t// We hid a dataset ... rerender the chart\n\t\t\tci.update();\n\t\t},\n\n\t\tonHover: null,\n\t\tonLeave: null,\n\n\t\tlabels: {\n\t\t\tboxWidth: 40,\n\t\t\tpadding: 10,\n\t\t\t// Generates labels shown in the legend\n\t\t\t// Valid properties to return:\n\t\t\t// text : text to display\n\t\t\t// fillStyle : fill of coloured box\n\t\t\t// strokeStyle: stroke of coloured box\n\t\t\t// hidden : if this legend item refers to a hidden item\n\t\t\t// lineCap : cap style for line\n\t\t\t// lineDash\n\t\t\t// lineDashOffset :\n\t\t\t// lineJoin :\n\t\t\t// lineWidth :\n\t\t\tgenerateLabels: function(chart) {\n\t\t\t\tvar datasets = chart.data.datasets;\n\t\t\t\tvar options = chart.options.legend || {};\n\t\t\t\tvar usePointStyle = options.labels && options.labels.usePointStyle;\n\n\t\t\t\treturn chart._getSortedDatasetMetas().map(function(meta) {\n\t\t\t\t\tvar style = meta.controller.getStyle(usePointStyle ? 0 : undefined);\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttext: datasets[meta.index].label,\n\t\t\t\t\t\tfillStyle: style.backgroundColor,\n\t\t\t\t\t\thidden: !chart.isDatasetVisible(meta.index),\n\t\t\t\t\t\tlineCap: style.borderCapStyle,\n\t\t\t\t\t\tlineDash: style.borderDash,\n\t\t\t\t\t\tlineDashOffset: style.borderDashOffset,\n\t\t\t\t\t\tlineJoin: style.borderJoinStyle,\n\t\t\t\t\t\tlineWidth: style.borderWidth,\n\t\t\t\t\t\tstrokeStyle: style.borderColor,\n\t\t\t\t\t\tpointStyle: style.pointStyle,\n\t\t\t\t\t\trotation: style.rotation,\n\n\t\t\t\t\t\t// Below is extra data used for toggling the datasets\n\t\t\t\t\t\tdatasetIndex: meta.index\n\t\t\t\t\t};\n\t\t\t\t}, this);\n\t\t\t}\n\t\t}\n\t},\n\n\tlegendCallback: function(chart) {\n\t\tvar list = document.createElement('ul');\n\t\tvar datasets = chart.data.datasets;\n\t\tvar i, ilen, listItem, listItemSpan;\n\n\t\tlist.setAttribute('class', chart.id + '-legend');\n\n\t\tfor (i = 0, ilen = datasets.length; i < ilen; i++) {\n\t\t\tlistItem = list.appendChild(document.createElement('li'));\n\t\t\tlistItemSpan = listItem.appendChild(document.createElement('span'));\n\t\t\tlistItemSpan.style.backgroundColor = datasets[i].backgroundColor;\n\t\t\tif (datasets[i].label) {\n\t\t\t\tlistItem.appendChild(document.createTextNode(datasets[i].label));\n\t\t\t}\n\t\t}\n\n\t\treturn list.outerHTML;\n\t}\n});\n\n/**\n * Helper function to get the box width based on the usePointStyle option\n * @param {object} labelopts - the label options on the legend\n * @param {number} fontSize - the label font size\n * @return {number} width of the color box area\n */\nfunction getBoxWidth(labelOpts, fontSize) {\n\treturn labelOpts.usePointStyle && labelOpts.boxWidth > fontSize ?\n\t\tfontSize :\n\t\tlabelOpts.boxWidth;\n}\n\n/**\n * IMPORTANT: this class is exposed publicly as Chart.Legend, backward compatibility required!\n */\nvar Legend = core_element.extend({\n\n\tinitialize: function(config) {\n\t\tvar me = this;\n\t\thelpers$1.extend(me, config);\n\n\t\t// Contains hit boxes for each dataset (in dataset order)\n\t\tme.legendHitBoxes = [];\n\n\t\t/**\n \t\t * @private\n \t\t */\n\t\tme._hoveredItem = null;\n\n\t\t// Are we in doughnut mode which has a different data type\n\t\tme.doughnutMode = false;\n\t},\n\n\t// These methods are ordered by lifecycle. Utilities then follow.\n\t// Any function defined here is inherited by all legend types.\n\t// Any function can be extended by the legend type\n\n\tbeforeUpdate: noop$1,\n\tupdate: function(maxWidth, maxHeight, margins) {\n\t\tvar me = this;\n\n\t\t// Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\n\t\tme.beforeUpdate();\n\n\t\t// Absorb the master measurements\n\t\tme.maxWidth = maxWidth;\n\t\tme.maxHeight = maxHeight;\n\t\tme.margins = margins;\n\n\t\t// Dimensions\n\t\tme.beforeSetDimensions();\n\t\tme.setDimensions();\n\t\tme.afterSetDimensions();\n\t\t// Labels\n\t\tme.beforeBuildLabels();\n\t\tme.buildLabels();\n\t\tme.afterBuildLabels();\n\n\t\t// Fit\n\t\tme.beforeFit();\n\t\tme.fit();\n\t\tme.afterFit();\n\t\t//\n\t\tme.afterUpdate();\n\n\t\treturn me.minSize;\n\t},\n\tafterUpdate: noop$1,\n\n\t//\n\n\tbeforeSetDimensions: noop$1,\n\tsetDimensions: function() {\n\t\tvar me = this;\n\t\t// Set the unconstrained dimension before label rotation\n\t\tif (me.isHorizontal()) {\n\t\t\t// Reset position before calculating rotation\n\t\t\tme.width = me.maxWidth;\n\t\t\tme.left = 0;\n\t\t\tme.right = me.width;\n\t\t} else {\n\t\t\tme.height = me.maxHeight;\n\n\t\t\t// Reset position before calculating rotation\n\t\t\tme.top = 0;\n\t\t\tme.bottom = me.height;\n\t\t}\n\n\t\t// Reset padding\n\t\tme.paddingLeft = 0;\n\t\tme.paddingTop = 0;\n\t\tme.paddingRight = 0;\n\t\tme.paddingBottom = 0;\n\n\t\t// Reset minSize\n\t\tme.minSize = {\n\t\t\twidth: 0,\n\t\t\theight: 0\n\t\t};\n\t},\n\tafterSetDimensions: noop$1,\n\n\t//\n\n\tbeforeBuildLabels: noop$1,\n\tbuildLabels: function() {\n\t\tvar me = this;\n\t\tvar labelOpts = me.options.labels || {};\n\t\tvar legendItems = helpers$1.callback(labelOpts.generateLabels, [me.chart], me) || [];\n\n\t\tif (labelOpts.filter) {\n\t\t\tlegendItems = legendItems.filter(function(item) {\n\t\t\t\treturn labelOpts.filter(item, me.chart.data);\n\t\t\t});\n\t\t}\n\n\t\tif (me.options.reverse) {\n\t\t\tlegendItems.reverse();\n\t\t}\n\n\t\tme.legendItems = legendItems;\n\t},\n\tafterBuildLabels: noop$1,\n\n\t//\n\n\tbeforeFit: noop$1,\n\tfit: function() {\n\t\tvar me = this;\n\t\tvar opts = me.options;\n\t\tvar labelOpts = opts.labels;\n\t\tvar display = opts.display;\n\n\t\tvar ctx = me.ctx;\n\n\t\tvar labelFont = helpers$1.options._parseFont(labelOpts);\n\t\tvar fontSize = labelFont.size;\n\n\t\t// Reset hit boxes\n\t\tvar hitboxes = me.legendHitBoxes = [];\n\n\t\tvar minSize = me.minSize;\n\t\tvar isHorizontal = me.isHorizontal();\n\n\t\tif (isHorizontal) {\n\t\t\tminSize.width = me.maxWidth; // fill all the width\n\t\t\tminSize.height = display ? 10 : 0;\n\t\t} else {\n\t\t\tminSize.width = display ? 10 : 0;\n\t\t\tminSize.height = me.maxHeight; // fill all the height\n\t\t}\n\n\t\t// Increase sizes here\n\t\tif (!display) {\n\t\t\tme.width = minSize.width = me.height = minSize.height = 0;\n\t\t\treturn;\n\t\t}\n\t\tctx.font = labelFont.string;\n\n\t\tif (isHorizontal) {\n\t\t\t// Labels\n\n\t\t\t// Width of each line of legend boxes. Labels wrap onto multiple lines when there are too many to fit on one\n\t\t\tvar lineWidths = me.lineWidths = [0];\n\t\t\tvar totalHeight = 0;\n\n\t\t\tctx.textAlign = 'left';\n\t\t\tctx.textBaseline = 'middle';\n\n\t\t\thelpers$1.each(me.legendItems, function(legendItem, i) {\n\t\t\t\tvar boxWidth = getBoxWidth(labelOpts, fontSize);\n\t\t\t\tvar width = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n\n\t\t\t\tif (i === 0 || lineWidths[lineWidths.length - 1] + width + 2 * labelOpts.padding > minSize.width) {\n\t\t\t\t\ttotalHeight += fontSize + labelOpts.padding;\n\t\t\t\t\tlineWidths[lineWidths.length - (i > 0 ? 0 : 1)] = 0;\n\t\t\t\t}\n\n\t\t\t\t// Store the hitbox width and height here. Final position will be updated in `draw`\n\t\t\t\thitboxes[i] = {\n\t\t\t\t\tleft: 0,\n\t\t\t\t\ttop: 0,\n\t\t\t\t\twidth: width,\n\t\t\t\t\theight: fontSize\n\t\t\t\t};\n\n\t\t\t\tlineWidths[lineWidths.length - 1] += width + labelOpts.padding;\n\t\t\t});\n\n\t\t\tminSize.height += totalHeight;\n\n\t\t} else {\n\t\t\tvar vPadding = labelOpts.padding;\n\t\t\tvar columnWidths = me.columnWidths = [];\n\t\t\tvar columnHeights = me.columnHeights = [];\n\t\t\tvar totalWidth = labelOpts.padding;\n\t\t\tvar currentColWidth = 0;\n\t\t\tvar currentColHeight = 0;\n\n\t\t\thelpers$1.each(me.legendItems, function(legendItem, i) {\n\t\t\t\tvar boxWidth = getBoxWidth(labelOpts, fontSize);\n\t\t\t\tvar itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n\n\t\t\t\t// If too tall, go to new column\n\t\t\t\tif (i > 0 && currentColHeight + fontSize + 2 * vPadding > minSize.height) {\n\t\t\t\t\ttotalWidth += currentColWidth + labelOpts.padding;\n\t\t\t\t\tcolumnWidths.push(currentColWidth); // previous column width\n\t\t\t\t\tcolumnHeights.push(currentColHeight);\n\t\t\t\t\tcurrentColWidth = 0;\n\t\t\t\t\tcurrentColHeight = 0;\n\t\t\t\t}\n\n\t\t\t\t// Get max width\n\t\t\t\tcurrentColWidth = Math.max(currentColWidth, itemWidth);\n\t\t\t\tcurrentColHeight += fontSize + vPadding;\n\n\t\t\t\t// Store the hitbox width and height here. Final position will be updated in `draw`\n\t\t\t\thitboxes[i] = {\n\t\t\t\t\tleft: 0,\n\t\t\t\t\ttop: 0,\n\t\t\t\t\twidth: itemWidth,\n\t\t\t\t\theight: fontSize\n\t\t\t\t};\n\t\t\t});\n\n\t\t\ttotalWidth += currentColWidth;\n\t\t\tcolumnWidths.push(currentColWidth);\n\t\t\tcolumnHeights.push(currentColHeight);\n\t\t\tminSize.width += totalWidth;\n\t\t}\n\n\t\tme.width = minSize.width;\n\t\tme.height = minSize.height;\n\t},\n\tafterFit: noop$1,\n\n\t// Shared Methods\n\tisHorizontal: function() {\n\t\treturn this.options.position === 'top' || this.options.position === 'bottom';\n\t},\n\n\t// Actually draw the legend on the canvas\n\tdraw: function() {\n\t\tvar me = this;\n\t\tvar opts = me.options;\n\t\tvar labelOpts = opts.labels;\n\t\tvar globalDefaults = core_defaults.global;\n\t\tvar defaultColor = globalDefaults.defaultColor;\n\t\tvar lineDefault = globalDefaults.elements.line;\n\t\tvar legendHeight = me.height;\n\t\tvar columnHeights = me.columnHeights;\n\t\tvar legendWidth = me.width;\n\t\tvar lineWidths = me.lineWidths;\n\n\t\tif (!opts.display) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar rtlHelper = getRtlHelper$1(opts.rtl, me.left, me.minSize.width);\n\t\tvar ctx = me.ctx;\n\t\tvar fontColor = valueOrDefault$e(labelOpts.fontColor, globalDefaults.defaultFontColor);\n\t\tvar labelFont = helpers$1.options._parseFont(labelOpts);\n\t\tvar fontSize = labelFont.size;\n\t\tvar cursor;\n\n\t\t// Canvas setup\n\t\tctx.textAlign = rtlHelper.textAlign('left');\n\t\tctx.textBaseline = 'middle';\n\t\tctx.lineWidth = 0.5;\n\t\tctx.strokeStyle = fontColor; // for strikethrough effect\n\t\tctx.fillStyle = fontColor; // render in correct colour\n\t\tctx.font = labelFont.string;\n\n\t\tvar boxWidth = getBoxWidth(labelOpts, fontSize);\n\t\tvar hitboxes = me.legendHitBoxes;\n\n\t\t// current position\n\t\tvar drawLegendBox = function(x, y, legendItem) {\n\t\t\tif (isNaN(boxWidth) || boxWidth <= 0) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the ctx for the box\n\t\t\tctx.save();\n\n\t\t\tvar lineWidth = valueOrDefault$e(legendItem.lineWidth, lineDefault.borderWidth);\n\t\t\tctx.fillStyle = valueOrDefault$e(legendItem.fillStyle, defaultColor);\n\t\t\tctx.lineCap = valueOrDefault$e(legendItem.lineCap, lineDefault.borderCapStyle);\n\t\t\tctx.lineDashOffset = valueOrDefault$e(legendItem.lineDashOffset, lineDefault.borderDashOffset);\n\t\t\tctx.lineJoin = valueOrDefault$e(legendItem.lineJoin, lineDefault.borderJoinStyle);\n\t\t\tctx.lineWidth = lineWidth;\n\t\t\tctx.strokeStyle = valueOrDefault$e(legendItem.strokeStyle, defaultColor);\n\n\t\t\tif (ctx.setLineDash) {\n\t\t\t\t// IE 9 and 10 do not support line dash\n\t\t\t\tctx.setLineDash(valueOrDefault$e(legendItem.lineDash, lineDefault.borderDash));\n\t\t\t}\n\n\t\t\tif (labelOpts && labelOpts.usePointStyle) {\n\t\t\t\t// Recalculate x and y for drawPoint() because its expecting\n\t\t\t\t// x and y to be center of figure (instead of top left)\n\t\t\t\tvar radius = boxWidth * Math.SQRT2 / 2;\n\t\t\t\tvar centerX = rtlHelper.xPlus(x, boxWidth / 2);\n\t\t\t\tvar centerY = y + fontSize / 2;\n\n\t\t\t\t// Draw pointStyle as legend symbol\n\t\t\t\thelpers$1.canvas.drawPoint(ctx, legendItem.pointStyle, radius, centerX, centerY, legendItem.rotation);\n\t\t\t} else {\n\t\t\t\t// Draw box as legend symbol\n\t\t\t\tctx.fillRect(rtlHelper.leftForLtr(x, boxWidth), y, boxWidth, fontSize);\n\t\t\t\tif (lineWidth !== 0) {\n\t\t\t\t\tctx.strokeRect(rtlHelper.leftForLtr(x, boxWidth), y, boxWidth, fontSize);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tctx.restore();\n\t\t};\n\n\t\tvar fillText = function(x, y, legendItem, textWidth) {\n\t\t\tvar halfFontSize = fontSize / 2;\n\t\t\tvar xLeft = rtlHelper.xPlus(x, boxWidth + halfFontSize);\n\t\t\tvar yMiddle = y + halfFontSize;\n\n\t\t\tctx.fillText(legendItem.text, xLeft, yMiddle);\n\n\t\t\tif (legendItem.hidden) {\n\t\t\t\t// Strikethrough the text if hidden\n\t\t\t\tctx.beginPath();\n\t\t\t\tctx.lineWidth = 2;\n\t\t\t\tctx.moveTo(xLeft, yMiddle);\n\t\t\t\tctx.lineTo(rtlHelper.xPlus(xLeft, textWidth), yMiddle);\n\t\t\t\tctx.stroke();\n\t\t\t}\n\t\t};\n\n\t\tvar alignmentOffset = function(dimension, blockSize) {\n\t\t\tswitch (opts.align) {\n\t\t\tcase 'start':\n\t\t\t\treturn labelOpts.padding;\n\t\t\tcase 'end':\n\t\t\t\treturn dimension - blockSize;\n\t\t\tdefault: // center\n\t\t\t\treturn (dimension - blockSize + labelOpts.padding) / 2;\n\t\t\t}\n\t\t};\n\n\t\t// Horizontal\n\t\tvar isHorizontal = me.isHorizontal();\n\t\tif (isHorizontal) {\n\t\t\tcursor = {\n\t\t\t\tx: me.left + alignmentOffset(legendWidth, lineWidths[0]),\n\t\t\t\ty: me.top + labelOpts.padding,\n\t\t\t\tline: 0\n\t\t\t};\n\t\t} else {\n\t\t\tcursor = {\n\t\t\t\tx: me.left + labelOpts.padding,\n\t\t\t\ty: me.top + alignmentOffset(legendHeight, columnHeights[0]),\n\t\t\t\tline: 0\n\t\t\t};\n\t\t}\n\n\t\thelpers$1.rtl.overrideTextDirection(me.ctx, opts.textDirection);\n\n\t\tvar itemHeight = fontSize + labelOpts.padding;\n\t\thelpers$1.each(me.legendItems, function(legendItem, i) {\n\t\t\tvar textWidth = ctx.measureText(legendItem.text).width;\n\t\t\tvar width = boxWidth + (fontSize / 2) + textWidth;\n\t\t\tvar x = cursor.x;\n\t\t\tvar y = cursor.y;\n\n\t\t\trtlHelper.setWidth(me.minSize.width);\n\n\t\t\t// Use (me.left + me.minSize.width) and (me.top + me.minSize.height)\n\t\t\t// instead of me.right and me.bottom because me.width and me.height\n\t\t\t// may have been changed since me.minSize was calculated\n\t\t\tif (isHorizontal) {\n\t\t\t\tif (i > 0 && x + width + labelOpts.padding > me.left + me.minSize.width) {\n\t\t\t\t\ty = cursor.y += itemHeight;\n\t\t\t\t\tcursor.line++;\n\t\t\t\t\tx = cursor.x = me.left + alignmentOffset(legendWidth, lineWidths[cursor.line]);\n\t\t\t\t}\n\t\t\t} else if (i > 0 && y + itemHeight > me.top + me.minSize.height) {\n\t\t\t\tx = cursor.x = x + me.columnWidths[cursor.line] + labelOpts.padding;\n\t\t\t\tcursor.line++;\n\t\t\t\ty = cursor.y = me.top + alignmentOffset(legendHeight, columnHeights[cursor.line]);\n\t\t\t}\n\n\t\t\tvar realX = rtlHelper.x(x);\n\n\t\t\tdrawLegendBox(realX, y, legendItem);\n\n\t\t\thitboxes[i].left = rtlHelper.leftForLtr(realX, hitboxes[i].width);\n\t\t\thitboxes[i].top = y;\n\n\t\t\t// Fill the actual label\n\t\t\tfillText(realX, y, legendItem, textWidth);\n\n\t\t\tif (isHorizontal) {\n\t\t\t\tcursor.x += width + labelOpts.padding;\n\t\t\t} else {\n\t\t\t\tcursor.y += itemHeight;\n\t\t\t}\n\t\t});\n\n\t\thelpers$1.rtl.restoreTextDirection(me.ctx, opts.textDirection);\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_getLegendItemAt: function(x, y) {\n\t\tvar me = this;\n\t\tvar i, hitBox, lh;\n\n\t\tif (x >= me.left && x <= me.right && y >= me.top && y <= me.bottom) {\n\t\t\t// See if we are touching one of the dataset boxes\n\t\t\tlh = me.legendHitBoxes;\n\t\t\tfor (i = 0; i < lh.length; ++i) {\n\t\t\t\thitBox = lh[i];\n\n\t\t\t\tif (x >= hitBox.left && x <= hitBox.left + hitBox.width && y >= hitBox.top && y <= hitBox.top + hitBox.height) {\n\t\t\t\t\t// Touching an element\n\t\t\t\t\treturn me.legendItems[i];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t},\n\n\t/**\n\t * Handle an event\n\t * @private\n\t * @param {IEvent} event - The event to handle\n\t */\n\thandleEvent: function(e) {\n\t\tvar me = this;\n\t\tvar opts = me.options;\n\t\tvar type = e.type === 'mouseup' ? 'click' : e.type;\n\t\tvar hoveredItem;\n\n\t\tif (type === 'mousemove') {\n\t\t\tif (!opts.onHover && !opts.onLeave) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t} else if (type === 'click') {\n\t\t\tif (!opts.onClick) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t} else {\n\t\t\treturn;\n\t\t}\n\n\t\t// Chart event already has relative position in it\n\t\thoveredItem = me._getLegendItemAt(e.x, e.y);\n\n\t\tif (type === 'click') {\n\t\t\tif (hoveredItem && opts.onClick) {\n\t\t\t\t// use e.native for backwards compatibility\n\t\t\t\topts.onClick.call(me, e.native, hoveredItem);\n\t\t\t}\n\t\t} else {\n\t\t\tif (opts.onLeave && hoveredItem !== me._hoveredItem) {\n\t\t\t\tif (me._hoveredItem) {\n\t\t\t\t\topts.onLeave.call(me, e.native, me._hoveredItem);\n\t\t\t\t}\n\t\t\t\tme._hoveredItem = hoveredItem;\n\t\t\t}\n\n\t\t\tif (opts.onHover && hoveredItem) {\n\t\t\t\t// use e.native for backwards compatibility\n\t\t\t\topts.onHover.call(me, e.native, hoveredItem);\n\t\t\t}\n\t\t}\n\t}\n});\n\nfunction createNewLegendAndAttach(chart, legendOpts) {\n\tvar legend = new Legend({\n\t\tctx: chart.ctx,\n\t\toptions: legendOpts,\n\t\tchart: chart\n\t});\n\n\tcore_layouts.configure(chart, legend, legendOpts);\n\tcore_layouts.addBox(chart, legend);\n\tchart.legend = legend;\n}\n\nvar plugin_legend = {\n\tid: 'legend',\n\n\t/**\n\t * Backward compatibility: since 2.1.5, the legend is registered as a plugin, making\n\t * Chart.Legend obsolete. To avoid a breaking change, we export the Legend as part of\n\t * the plugin, which one will be re-exposed in the chart.js file.\n\t * https://github.com/chartjs/Chart.js/pull/2640\n\t * @private\n\t */\n\t_element: Legend,\n\n\tbeforeInit: function(chart) {\n\t\tvar legendOpts = chart.options.legend;\n\n\t\tif (legendOpts) {\n\t\t\tcreateNewLegendAndAttach(chart, legendOpts);\n\t\t}\n\t},\n\n\tbeforeUpdate: function(chart) {\n\t\tvar legendOpts = chart.options.legend;\n\t\tvar legend = chart.legend;\n\n\t\tif (legendOpts) {\n\t\t\thelpers$1.mergeIf(legendOpts, core_defaults.global.legend);\n\n\t\t\tif (legend) {\n\t\t\t\tcore_layouts.configure(chart, legend, legendOpts);\n\t\t\t\tlegend.options = legendOpts;\n\t\t\t} else {\n\t\t\t\tcreateNewLegendAndAttach(chart, legendOpts);\n\t\t\t}\n\t\t} else if (legend) {\n\t\t\tcore_layouts.removeBox(chart, legend);\n\t\t\tdelete chart.legend;\n\t\t}\n\t},\n\n\tafterEvent: function(chart, e) {\n\t\tvar legend = chart.legend;\n\t\tif (legend) {\n\t\t\tlegend.handleEvent(e);\n\t\t}\n\t}\n};\n\nvar noop$2 = helpers$1.noop;\n\ncore_defaults._set('global', {\n\ttitle: {\n\t\tdisplay: false,\n\t\tfontStyle: 'bold',\n\t\tfullWidth: true,\n\t\tpadding: 10,\n\t\tposition: 'top',\n\t\ttext: '',\n\t\tweight: 2000         // by default greater than legend (1000) to be above\n\t}\n});\n\n/**\n * IMPORTANT: this class is exposed publicly as Chart.Legend, backward compatibility required!\n */\nvar Title = core_element.extend({\n\tinitialize: function(config) {\n\t\tvar me = this;\n\t\thelpers$1.extend(me, config);\n\n\t\t// Contains hit boxes for each dataset (in dataset order)\n\t\tme.legendHitBoxes = [];\n\t},\n\n\t// These methods are ordered by lifecycle. Utilities then follow.\n\n\tbeforeUpdate: noop$2,\n\tupdate: function(maxWidth, maxHeight, margins) {\n\t\tvar me = this;\n\n\t\t// Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\n\t\tme.beforeUpdate();\n\n\t\t// Absorb the master measurements\n\t\tme.maxWidth = maxWidth;\n\t\tme.maxHeight = maxHeight;\n\t\tme.margins = margins;\n\n\t\t// Dimensions\n\t\tme.beforeSetDimensions();\n\t\tme.setDimensions();\n\t\tme.afterSetDimensions();\n\t\t// Labels\n\t\tme.beforeBuildLabels();\n\t\tme.buildLabels();\n\t\tme.afterBuildLabels();\n\n\t\t// Fit\n\t\tme.beforeFit();\n\t\tme.fit();\n\t\tme.afterFit();\n\t\t//\n\t\tme.afterUpdate();\n\n\t\treturn me.minSize;\n\n\t},\n\tafterUpdate: noop$2,\n\n\t//\n\n\tbeforeSetDimensions: noop$2,\n\tsetDimensions: function() {\n\t\tvar me = this;\n\t\t// Set the unconstrained dimension before label rotation\n\t\tif (me.isHorizontal()) {\n\t\t\t// Reset position before calculating rotation\n\t\t\tme.width = me.maxWidth;\n\t\t\tme.left = 0;\n\t\t\tme.right = me.width;\n\t\t} else {\n\t\t\tme.height = me.maxHeight;\n\n\t\t\t// Reset position before calculating rotation\n\t\t\tme.top = 0;\n\t\t\tme.bottom = me.height;\n\t\t}\n\n\t\t// Reset padding\n\t\tme.paddingLeft = 0;\n\t\tme.paddingTop = 0;\n\t\tme.paddingRight = 0;\n\t\tme.paddingBottom = 0;\n\n\t\t// Reset minSize\n\t\tme.minSize = {\n\t\t\twidth: 0,\n\t\t\theight: 0\n\t\t};\n\t},\n\tafterSetDimensions: noop$2,\n\n\t//\n\n\tbeforeBuildLabels: noop$2,\n\tbuildLabels: noop$2,\n\tafterBuildLabels: noop$2,\n\n\t//\n\n\tbeforeFit: noop$2,\n\tfit: function() {\n\t\tvar me = this;\n\t\tvar opts = me.options;\n\t\tvar minSize = me.minSize = {};\n\t\tvar isHorizontal = me.isHorizontal();\n\t\tvar lineCount, textSize;\n\n\t\tif (!opts.display) {\n\t\t\tme.width = minSize.width = me.height = minSize.height = 0;\n\t\t\treturn;\n\t\t}\n\n\t\tlineCount = helpers$1.isArray(opts.text) ? opts.text.length : 1;\n\t\ttextSize = lineCount * helpers$1.options._parseFont(opts).lineHeight + opts.padding * 2;\n\n\t\tme.width = minSize.width = isHorizontal ? me.maxWidth : textSize;\n\t\tme.height = minSize.height = isHorizontal ? textSize : me.maxHeight;\n\t},\n\tafterFit: noop$2,\n\n\t// Shared Methods\n\tisHorizontal: function() {\n\t\tvar pos = this.options.position;\n\t\treturn pos === 'top' || pos === 'bottom';\n\t},\n\n\t// Actually draw the title block on the canvas\n\tdraw: function() {\n\t\tvar me = this;\n\t\tvar ctx = me.ctx;\n\t\tvar opts = me.options;\n\n\t\tif (!opts.display) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar fontOpts = helpers$1.options._parseFont(opts);\n\t\tvar lineHeight = fontOpts.lineHeight;\n\t\tvar offset = lineHeight / 2 + opts.padding;\n\t\tvar rotation = 0;\n\t\tvar top = me.top;\n\t\tvar left = me.left;\n\t\tvar bottom = me.bottom;\n\t\tvar right = me.right;\n\t\tvar maxWidth, titleX, titleY;\n\n\t\tctx.fillStyle = helpers$1.valueOrDefault(opts.fontColor, core_defaults.global.defaultFontColor); // render in correct colour\n\t\tctx.font = fontOpts.string;\n\n\t\t// Horizontal\n\t\tif (me.isHorizontal()) {\n\t\t\ttitleX = left + ((right - left) / 2); // midpoint of the width\n\t\t\ttitleY = top + offset;\n\t\t\tmaxWidth = right - left;\n\t\t} else {\n\t\t\ttitleX = opts.position === 'left' ? left + offset : right - offset;\n\t\t\ttitleY = top + ((bottom - top) / 2);\n\t\t\tmaxWidth = bottom - top;\n\t\t\trotation = Math.PI * (opts.position === 'left' ? -0.5 : 0.5);\n\t\t}\n\n\t\tctx.save();\n\t\tctx.translate(titleX, titleY);\n\t\tctx.rotate(rotation);\n\t\tctx.textAlign = 'center';\n\t\tctx.textBaseline = 'middle';\n\n\t\tvar text = opts.text;\n\t\tif (helpers$1.isArray(text)) {\n\t\t\tvar y = 0;\n\t\t\tfor (var i = 0; i < text.length; ++i) {\n\t\t\t\tctx.fillText(text[i], 0, y, maxWidth);\n\t\t\t\ty += lineHeight;\n\t\t\t}\n\t\t} else {\n\t\t\tctx.fillText(text, 0, 0, maxWidth);\n\t\t}\n\n\t\tctx.restore();\n\t}\n});\n\nfunction createNewTitleBlockAndAttach(chart, titleOpts) {\n\tvar title = new Title({\n\t\tctx: chart.ctx,\n\t\toptions: titleOpts,\n\t\tchart: chart\n\t});\n\n\tcore_layouts.configure(chart, title, titleOpts);\n\tcore_layouts.addBox(chart, title);\n\tchart.titleBlock = title;\n}\n\nvar plugin_title = {\n\tid: 'title',\n\n\t/**\n\t * Backward compatibility: since 2.1.5, the title is registered as a plugin, making\n\t * Chart.Title obsolete. To avoid a breaking change, we export the Title as part of\n\t * the plugin, which one will be re-exposed in the chart.js file.\n\t * https://github.com/chartjs/Chart.js/pull/2640\n\t * @private\n\t */\n\t_element: Title,\n\n\tbeforeInit: function(chart) {\n\t\tvar titleOpts = chart.options.title;\n\n\t\tif (titleOpts) {\n\t\t\tcreateNewTitleBlockAndAttach(chart, titleOpts);\n\t\t}\n\t},\n\n\tbeforeUpdate: function(chart) {\n\t\tvar titleOpts = chart.options.title;\n\t\tvar titleBlock = chart.titleBlock;\n\n\t\tif (titleOpts) {\n\t\t\thelpers$1.mergeIf(titleOpts, core_defaults.global.title);\n\n\t\t\tif (titleBlock) {\n\t\t\t\tcore_layouts.configure(chart, titleBlock, titleOpts);\n\t\t\t\ttitleBlock.options = titleOpts;\n\t\t\t} else {\n\t\t\t\tcreateNewTitleBlockAndAttach(chart, titleOpts);\n\t\t\t}\n\t\t} else if (titleBlock) {\n\t\t\tcore_layouts.removeBox(chart, titleBlock);\n\t\t\tdelete chart.titleBlock;\n\t\t}\n\t}\n};\n\nvar plugins = {};\nvar filler = plugin_filler;\nvar legend = plugin_legend;\nvar title = plugin_title;\nplugins.filler = filler;\nplugins.legend = legend;\nplugins.title = title;\n\n/**\n * @namespace Chart\n */\n\n\ncore_controller.helpers = helpers$1;\n\n// @todo dispatch these helpers into appropriated helpers/helpers.* file and write unit tests!\ncore_helpers();\n\ncore_controller._adapters = core_adapters;\ncore_controller.Animation = core_animation;\ncore_controller.animationService = core_animations;\ncore_controller.controllers = controllers;\ncore_controller.DatasetController = core_datasetController;\ncore_controller.defaults = core_defaults;\ncore_controller.Element = core_element;\ncore_controller.elements = elements;\ncore_controller.Interaction = core_interaction;\ncore_controller.layouts = core_layouts;\ncore_controller.platform = platform;\ncore_controller.plugins = core_plugins;\ncore_controller.Scale = core_scale;\ncore_controller.scaleService = core_scaleService;\ncore_controller.Ticks = core_ticks;\ncore_controller.Tooltip = core_tooltip;\n\n// Register built-in scales\n\ncore_controller.helpers.each(scales, function(scale, type) {\n\tcore_controller.scaleService.registerScaleType(type, scale, scale._defaults);\n});\n\n// Load to register built-in adapters (as side effects)\n\n\n// Loading built-in plugins\n\nfor (var k in plugins) {\n\tif (plugins.hasOwnProperty(k)) {\n\t\tcore_controller.plugins.register(plugins[k]);\n\t}\n}\n\ncore_controller.platform.initialize();\n\nvar src = core_controller;\nif (typeof window !== 'undefined') {\n\twindow.Chart = core_controller;\n}\n\n// DEPRECATIONS\n\n/**\n * Provided for backward compatibility, not available anymore\n * @namespace Chart.Chart\n * @deprecated since version 2.8.0\n * @todo remove at version 3\n * @private\n */\ncore_controller.Chart = core_controller;\n\n/**\n * Provided for backward compatibility, not available anymore\n * @namespace Chart.Legend\n * @deprecated since version 2.1.5\n * @todo remove at version 3\n * @private\n */\ncore_controller.Legend = plugins.legend._element;\n\n/**\n * Provided for backward compatibility, not available anymore\n * @namespace Chart.Title\n * @deprecated since version 2.1.5\n * @todo remove at version 3\n * @private\n */\ncore_controller.Title = plugins.title._element;\n\n/**\n * Provided for backward compatibility, use Chart.plugins instead\n * @namespace Chart.pluginService\n * @deprecated since version 2.1.5\n * @todo remove at version 3\n * @private\n */\ncore_controller.pluginService = core_controller.plugins;\n\n/**\n * Provided for backward compatibility, inheriting from Chart.PlugingBase has no\n * effect, instead simply create/register plugins via plain JavaScript objects.\n * @interface Chart.PluginBase\n * @deprecated since version 2.5.0\n * @todo remove at version 3\n * @private\n */\ncore_controller.PluginBase = core_controller.Element.extend({});\n\n/**\n * Provided for backward compatibility, use Chart.helpers.canvas instead.\n * @namespace Chart.canvasHelpers\n * @deprecated since version 2.6.0\n * @todo remove at version 3\n * @private\n */\ncore_controller.canvasHelpers = core_controller.helpers.canvas;\n\n/**\n * Provided for backward compatibility, use Chart.layouts instead.\n * @namespace Chart.layoutService\n * @deprecated since version 2.7.3\n * @todo remove at version 3\n * @private\n */\ncore_controller.layoutService = core_controller.layouts;\n\n/**\n * Provided for backward compatibility, not available anymore.\n * @namespace Chart.LinearScaleBase\n * @deprecated since version 2.8\n * @todo remove at version 3\n * @private\n */\ncore_controller.LinearScaleBase = scale_linearbase;\n\n/**\n * Provided for backward compatibility, instead we should create a new Chart\n * by setting the type in the config (`new Chart(id, {type: '{chart-type}'}`).\n * @deprecated since version 2.8.0\n * @todo remove at version 3\n */\ncore_controller.helpers.each(\n\t[\n\t\t'Bar',\n\t\t'Bubble',\n\t\t'Doughnut',\n\t\t'Line',\n\t\t'PolarArea',\n\t\t'Radar',\n\t\t'Scatter'\n\t],\n\tfunction(klass) {\n\t\tcore_controller[klass] = function(ctx, cfg) {\n\t\t\treturn new core_controller(ctx, core_controller.helpers.merge(cfg || {}, {\n\t\t\t\ttype: klass.charAt(0).toLowerCase() + klass.slice(1)\n\t\t\t}));\n\t\t};\n\t}\n);\n\nreturn src;\n\n})));\n","var array = Array.prototype;\n\nexport var slice = array.slice;\nexport var map = array.map;\n","export default function(a, b) {\n  return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import {slice} from \"./array.js\";\nimport bisect from \"./bisect.js\";\nimport constant from \"./constant.js\";\nimport extent from \"./extent.js\";\nimport identity from \"./identity.js\";\nimport range from \"./range.js\";\nimport {tickStep} from \"./ticks.js\";\nimport sturges from \"./threshold/sturges.js\";\n\nexport default function() {\n  var value = identity,\n      domain = extent,\n      threshold = sturges;\n\n  function histogram(data) {\n    if (!Array.isArray(data)) data = Array.from(data);\n\n    var i,\n        n = data.length,\n        x,\n        values = new Array(n);\n\n    for (i = 0; i < n; ++i) {\n      values[i] = value(data[i], i, data);\n    }\n\n    var xz = domain(values),\n        x0 = xz[0],\n        x1 = xz[1],\n        tz = threshold(values, x0, x1);\n\n    // Convert number of thresholds into uniform thresholds.\n    if (!Array.isArray(tz)) {\n      tz = tickStep(x0, x1, tz);\n      tz = range(Math.ceil(x0 / tz) * tz, x1, tz); // exclusive\n    }\n\n    // Remove any thresholds outside the domain.\n    var m = tz.length;\n    while (tz[0] <= x0) tz.shift(), --m;\n    while (tz[m - 1] > x1) tz.pop(), --m;\n\n    var bins = new Array(m + 1),\n        bin;\n\n    // Initialize bins.\n    for (i = 0; i <= m; ++i) {\n      bin = bins[i] = [];\n      bin.x0 = i > 0 ? tz[i - 1] : x0;\n      bin.x1 = i < m ? tz[i] : x1;\n    }\n\n    // Assign data to bins by value, ignoring any outside the domain.\n    for (i = 0; i < n; ++i) {\n      x = values[i];\n      if (x0 <= x && x <= x1) {\n        bins[bisect(tz, x, 0, m)].push(data[i]);\n      }\n    }\n\n    return bins;\n  }\n\n  histogram.value = function(_) {\n    return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(_), histogram) : value;\n  };\n\n  histogram.domain = function(_) {\n    return arguments.length ? (domain = typeof _ === \"function\" ? _ : constant([_[0], _[1]]), histogram) : domain;\n  };\n\n  histogram.thresholds = function(_) {\n    return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), histogram) : threshold;\n  };\n\n  return histogram;\n}\n","import ascending from \"./ascending.js\";\nimport bisector from \"./bisector.js\";\n\nvar ascendingBisect = bisector(ascending);\nexport var bisectRight = ascendingBisect.right;\nexport var bisectLeft = ascendingBisect.left;\nexport default bisectRight;\n","import ascending from \"./ascending.js\";\n\nexport default function(compare) {\n  if (compare.length === 1) compare = ascendingComparator(compare);\n  return {\n    left: function(a, x, lo, hi) {\n      if (lo == null) lo = 0;\n      if (hi == null) hi = a.length;\n      while (lo < hi) {\n        var mid = lo + hi >>> 1;\n        if (compare(a[mid], x) < 0) lo = mid + 1;\n        else hi = mid;\n      }\n      return lo;\n    },\n    right: function(a, x, lo, hi) {\n      if (lo == null) lo = 0;\n      if (hi == null) hi = a.length;\n      while (lo < hi) {\n        var mid = lo + hi >>> 1;\n        if (compare(a[mid], x) > 0) hi = mid;\n        else lo = mid + 1;\n      }\n      return lo;\n    }\n  };\n}\n\nfunction ascendingComparator(f) {\n  return function(d, x) {\n    return ascending(f(d), x);\n  };\n}\n","export default function(x) {\n  return function() {\n    return x;\n  };\n}\n","export default function count(values, valueof) {\n  let count = 0;\n  if (valueof === undefined) {\n    for (let value of values) {\n      if (value != null && (value = +value) >= value) {\n        ++count;\n      }\n    }\n  } else {\n    let index = -1;\n    for (let value of values) {\n      if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n        ++count;\n      }\n    }\n  }\n  return count;\n}\n","function length(array) {\n  return array.length | 0;\n}\n\nfunction empty(length) {\n  return !(length > 0);\n}\n\nfunction arrayify(values) {\n  return typeof values !== \"object\" || \"length\" in values ? values : Array.from(values);\n}\n\nfunction reducer(reduce) {\n  return values => reduce(...values);\n}\n\nexport default function cross(...values) {\n  const reduce = typeof values[values.length - 1] === \"function\" && reducer(values.pop());\n  values = values.map(arrayify);\n  const lengths = values.map(length);\n  const j = values.length - 1;\n  const index = new Array(j + 1).fill(0);\n  const product = [];\n  if (j < 0 || lengths.some(empty)) return product;\n  while (true) {\n    product.push(index.map((j, i) => values[i][j]));\n    let i = j;\n    while (++index[i] === lengths[i]) {\n      if (i === 0) return reduce ? product.map(reduce) : product;\n      index[i--] = 0;\n    }\n  }\n}\n","export default function cumsum(values, valueof) {\n  var sum = 0, index = 0;\n  return Float64Array.from(values, valueof === undefined\n    ? v => (sum += +v || 0)\n    : v => (sum += +valueof(v, index++, values) || 0));\n}","export default function(a, b) {\n  return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}\n","import variance from \"./variance.js\";\n\nexport default function deviation(values, valueof) {\n  const v = variance(values, valueof);\n  return v ? Math.sqrt(v) : v;\n}\n","export default function(values, valueof) {\n  let min;\n  let max;\n  if (valueof === undefined) {\n    for (const value of values) {\n      if (value != null) {\n        if (min === undefined) {\n          if (value >= value) min = max = value;\n        } else {\n          if (min > value) min = value;\n          if (max < value) max = value;\n        }\n      }\n    }\n  } else {\n    let index = -1;\n    for (let value of values) {\n      if ((value = valueof(value, ++index, values)) != null) {\n        if (min === undefined) {\n          if (value >= value) min = max = value;\n        } else {\n          if (min > value) min = value;\n          if (max < value) max = value;\n        }\n      }\n    }\n  }\n  return [min, max];\n}\n","import ascending from \"./ascending.js\";\n\nexport default function greatest(values, compare = ascending) {\n  let max;\n  let defined = false;\n  if (compare.length === 1) {\n    let maxValue;\n    for (const element of values) {\n      const value = compare(element);\n      if (defined\n          ? ascending(value, maxValue) > 0\n          : ascending(value, value) === 0) {\n        max = element;\n        maxValue = value;\n        defined = true;\n      }\n    }\n  } else {\n    for (const value of values) {\n      if (defined\n          ? compare(value, max) > 0\n          : compare(value, value) === 0) {\n        max = value;\n        defined = true;\n      }\n    }\n  }\n  return max;\n}\n","import ascending from \"./ascending.js\";\nimport maxIndex from \"./maxIndex.js\";\n\nexport default function greatestIndex(values, compare = ascending) {\n  if (compare.length === 1) return maxIndex(values, compare);\n  let maxValue;\n  let max = -1;\n  let index = -1;\n  for (const value of values) {\n    ++index;\n    if (max < 0\n        ? compare(value, value) === 0\n        : compare(value, maxValue) > 0) {\n      maxValue = value;\n      max = index;\n    }\n  }\n  return max;\n}\n","import identity from \"./identity.js\";\n\nexport default function group(values, ...keys) {\n  return nest(values, identity, identity, keys);\n}\n\nexport function groups(values, ...keys) {\n  return nest(values, Array.from, identity, keys);\n}\n\nexport function rollup(values, reduce, ...keys) {\n  return nest(values, identity, reduce, keys);\n}\n\nexport function rollups(values, reduce, ...keys) {\n  return nest(values, Array.from, reduce, keys);\n}\n\nfunction nest(values, map, reduce, keys) {\n  return (function regroup(values, i) {\n    if (i >= keys.length) return reduce(values);\n    const groups = new Map();\n    const keyof = keys[i++];\n    let index = -1;\n    for (const value of values) {\n      const key = keyof(value, ++index, values);\n      const group = groups.get(key);\n      if (group) group.push(value);\n      else groups.set(key, [value]);\n    }\n    for (const [key, values] of groups) {\n      groups.set(key, regroup(values, i));\n    }\n    return map(groups);\n  })(values, 0);\n}\n","export default function(x) {\n  return x;\n}\n","export {default as bisect, bisectRight, bisectLeft} from \"./bisect.js\";\nexport {default as ascending} from \"./ascending.js\";\nexport {default as bisector} from \"./bisector.js\";\nexport {default as count} from \"./count.js\";\nexport {default as cross} from \"./cross.js\";\nexport {default as cumsum} from \"./cumsum.js\";\nexport {default as descending} from \"./descending.js\";\nexport {default as deviation} from \"./deviation.js\";\nexport {default as extent} from \"./extent.js\";\nexport {default as group, groups, rollup, rollups} from \"./group.js\";\nexport {default as bin, default as histogram} from \"./bin.js\"; // Deprecated; use bin.\nexport {default as thresholdFreedmanDiaconis} from \"./threshold/freedmanDiaconis.js\";\nexport {default as thresholdScott} from \"./threshold/scott.js\";\nexport {default as thresholdSturges} from \"./threshold/sturges.js\";\nexport {default as max} from \"./max.js\";\nexport {default as maxIndex} from \"./maxIndex.js\";\nexport {default as mean} from \"./mean.js\";\nexport {default as median} from \"./median.js\";\nexport {default as merge} from \"./merge.js\";\nexport {default as min} from \"./min.js\";\nexport {default as minIndex} from \"./minIndex.js\";\nexport {default as pairs} from \"./pairs.js\";\nexport {default as permute} from \"./permute.js\";\nexport {default as quantile, quantileSorted} from \"./quantile.js\";\nexport {default as quickselect} from \"./quickselect.js\";\nexport {default as range} from \"./range.js\";\nexport {default as least} from \"./least.js\";\nexport {default as leastIndex} from \"./leastIndex.js\";\nexport {default as greatest} from \"./greatest.js\";\nexport {default as greatestIndex} from \"./greatestIndex.js\";\nexport {default as scan} from \"./scan.js\"; // Deprecated; use leastIndex.\nexport {default as shuffle} from \"./shuffle.js\";\nexport {default as sum} from \"./sum.js\";\nexport {default as ticks, tickIncrement, tickStep} from \"./ticks.js\";\nexport {default as transpose} from \"./transpose.js\";\nexport {default as variance} from \"./variance.js\";\nexport {default as zip} from \"./zip.js\";\n","import ascending from \"./ascending.js\";\n\nexport default function least(values, compare = ascending) {\n  let min;\n  let defined = false;\n  if (compare.length === 1) {\n    let minValue;\n    for (const element of values) {\n      const value = compare(element);\n      if (defined\n          ? ascending(value, minValue) < 0\n          : ascending(value, value) === 0) {\n        min = element;\n        minValue = value;\n        defined = true;\n      }\n    }\n  } else {\n    for (const value of values) {\n      if (defined\n          ? compare(value, min) < 0\n          : compare(value, value) === 0) {\n        min = value;\n        defined = true;\n      }\n    }\n  }\n  return min;\n}\n","import ascending from \"./ascending.js\";\nimport minIndex from \"./minIndex.js\";\n\nexport default function leastIndex(values, compare = ascending) {\n  if (compare.length === 1) return minIndex(values, compare);\n  let minValue;\n  let min = -1;\n  let index = -1;\n  for (const value of values) {\n    ++index;\n    if (min < 0\n        ? compare(value, value) === 0\n        : compare(value, minValue) < 0) {\n      minValue = value;\n      min = index;\n    }\n  }\n  return min;\n}\n","export default function max(values, valueof) {\n  let max;\n  if (valueof === undefined) {\n    for (const value of values) {\n      if (value != null\n          && (max < value || (max === undefined && value >= value))) {\n        max = value;\n      }\n    }\n  } else {\n    let index = -1;\n    for (let value of values) {\n      if ((value = valueof(value, ++index, values)) != null\n          && (max < value || (max === undefined && value >= value))) {\n        max = value;\n      }\n    }\n  }\n  return max;\n}\n","export default function maxIndex(values, valueof) {\n  let max;\n  let maxIndex = -1;\n  let index = -1;\n  if (valueof === undefined) {\n    for (const value of values) {\n      ++index;\n      if (value != null\n          && (max < value || (max === undefined && value >= value))) {\n        max = value, maxIndex = index;\n      }\n    }\n  } else {\n    for (let value of values) {\n      if ((value = valueof(value, ++index, values)) != null\n          && (max < value || (max === undefined && value >= value))) {\n        max = value, maxIndex = index;\n      }\n    }\n  }\n  return maxIndex;\n}\n","export default function mean(values, valueof) {\n  let count = 0;\n  let sum = 0;\n  if (valueof === undefined) {\n    for (let value of values) {\n      if (value != null && (value = +value) >= value) {\n        ++count, sum += value;\n      }\n    }\n  } else {\n    let index = -1;\n    for (let value of values) {\n      if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n        ++count, sum += value;\n      }\n    }\n  }\n  if (count) return sum / count;\n}\n","import quantile from \"./quantile.js\";\n\nexport default function(values, valueof) {\n  return quantile(values, 0.5, valueof);\n}\n","function* flatten(arrays) {\n  for (const array of arrays) {\n    yield* array;\n  }\n}\n\nexport default function merge(arrays) {\n  return Array.from(flatten(arrays));\n}\n","export default function min(values, valueof) {\n  let min;\n  if (valueof === undefined) {\n    for (const value of values) {\n      if (value != null\n          && (min > value || (min === undefined && value >= value))) {\n        min = value;\n      }\n    }\n  } else {\n    let index = -1;\n    for (let value of values) {\n      if ((value = valueof(value, ++index, values)) != null\n          && (min > value || (min === undefined && value >= value))) {\n        min = value;\n      }\n    }\n  }\n  return min;\n}\n","export default function minIndex(values, valueof) {\n  let min;\n  let minIndex = -1;\n  let index = -1;\n  if (valueof === undefined) {\n    for (const value of values) {\n      ++index;\n      if (value != null\n          && (min > value || (min === undefined && value >= value))) {\n        min = value, minIndex = index;\n      }\n    }\n  } else {\n    for (let value of values) {\n      if ((value = valueof(value, ++index, values)) != null\n          && (min > value || (min === undefined && value >= value))) {\n        min = value, minIndex = index;\n      }\n    }\n  }\n  return minIndex;\n}\n","export default function(x) {\n  return x === null ? NaN : +x;\n}\n\nexport function* numbers(values, valueof) {\n  if (valueof === undefined) {\n    for (let value of values) {\n      if (value != null && (value = +value) >= value) {\n        yield value;\n      }\n    }\n  } else {\n    let index = -1;\n    for (let value of values) {\n      if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n        yield value;\n      }\n    }\n  }\n}\n","export default function pairs(values, pairof = pair) {\n  const pairs = [];\n  let previous;\n  let first = false;\n  for (const value of values) {\n    if (first) pairs.push(pairof(previous, value));\n    previous = value;\n    first = true;\n  }\n  return pairs;\n}\n\nexport function pair(a, b) {\n  return [a, b];\n}\n","export default function(source, keys) {\n  return Array.from(keys, key => source[key]);\n}\n","import max from \"./max.js\";\nimport min from \"./min.js\";\nimport quickselect from \"./quickselect.js\";\nimport number, {numbers} from \"./number.js\";\n\nexport default function quantile(values, p, valueof) {\n  values = Float64Array.from(numbers(values, valueof));\n  if (!(n = values.length)) return;\n  if ((p = +p) <= 0 || n < 2) return min(values);\n  if (p >= 1) return max(values);\n  var n,\n      i = (n - 1) * p,\n      i0 = Math.floor(i),\n      value0 = max(quickselect(values, i0).subarray(0, i0 + 1)),\n      value1 = min(values.subarray(i0 + 1));\n  return value0 + (value1 - value0) * (i - i0);\n}\n\nexport function quantileSorted(values, p, valueof = number) {\n  if (!(n = values.length)) return;\n  if ((p = +p) <= 0 || n < 2) return +valueof(values[0], 0, values);\n  if (p >= 1) return +valueof(values[n - 1], n - 1, values);\n  var n,\n      i = (n - 1) * p,\n      i0 = Math.floor(i),\n      value0 = +valueof(values[i0], i0, values),\n      value1 = +valueof(values[i0 + 1], i0 + 1, values);\n  return value0 + (value1 - value0) * (i - i0);\n}\n","import ascending from \"./ascending.js\";\n\n// Based on https://github.com/mourner/quickselect\n// ISC license, Copyright 2018 Vladimir Agafonkin.\nexport default function quickselect(array, k, left = 0, right = array.length - 1, compare = ascending) {\n  while (right > left) {\n    if (right - left > 600) {\n      const n = right - left + 1;\n      const m = k - left + 1;\n      const z = Math.log(n);\n      const s = 0.5 * Math.exp(2 * z / 3);\n      const sd = 0.5 * Math.sqrt(z * s * (n - s) / n) * (m - n / 2 < 0 ? -1 : 1);\n      const newLeft = Math.max(left, Math.floor(k - m * s / n + sd));\n      const newRight = Math.min(right, Math.floor(k + (n - m) * s / n + sd));\n      quickselect(array, k, newLeft, newRight, compare);\n    }\n\n    const t = array[k];\n    let i = left;\n    let j = right;\n\n    swap(array, left, k);\n    if (compare(array[right], t) > 0) swap(array, left, right);\n\n    while (i < j) {\n      swap(array, i, j), ++i, --j;\n      while (compare(array[i], t) < 0) ++i;\n      while (compare(array[j], t) > 0) --j;\n    }\n\n    if (compare(array[left], t) === 0) swap(array, left, j);\n    else ++j, swap(array, j, right);\n\n    if (j <= k) left = j + 1;\n    if (k <= j) right = j - 1;\n  }\n  return array;\n}\n\nfunction swap(array, i, j) {\n  const t = array[i];\n  array[i] = array[j];\n  array[j] = t;\n}\n","export default function(start, stop, step) {\n  start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n  var i = -1,\n      n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n      range = new Array(n);\n\n  while (++i < n) {\n    range[i] = start + i * step;\n  }\n\n  return range;\n}\n","import leastIndex from \"./leastIndex.js\";\n\nexport default function scan(values, compare) {\n  const index = leastIndex(values, compare);\n  return index < 0 ? undefined : index;\n}\n","export default function shuffle(array, i0 = 0, i1 = array.length) {\n  var m = i1 - (i0 = +i0),\n      t,\n      i;\n\n  while (m) {\n    i = Math.random() * m-- | 0;\n    t = array[m + i0];\n    array[m + i0] = array[i + i0];\n    array[i + i0] = t;\n  }\n\n  return array;\n}\n","export default function sum(values, valueof) {\n  let sum = 0;\n  if (valueof === undefined) {\n    for (let value of values) {\n      if (value = +value) {\n        sum += value;\n      }\n    }\n  } else {\n    let index = -1;\n    for (let value of values) {\n      if (value = +valueof(value, ++index, values)) {\n        sum += value;\n      }\n    }\n  }\n  return sum;\n}\n","import count from \"../count.js\";\nimport quantile from \"../quantile.js\";\n\nexport default function(values, min, max) {\n  return Math.ceil((max - min) / (2 * (quantile(values, 0.75) - quantile(values, 0.25)) * Math.pow(count(values), -1 / 3)));\n}\n","import count from \"../count.js\";\nimport deviation from \"../deviation.js\";\n\nexport default function(values, min, max) {\n  return Math.ceil((max - min) / (3.5 * deviation(values) * Math.pow(count(values), -1 / 3)));\n}\n","import count from \"../count.js\";\n\nexport default function(values) {\n  return Math.ceil(Math.log(count(values)) / Math.LN2) + 1;\n}\n","var e10 = Math.sqrt(50),\n    e5 = Math.sqrt(10),\n    e2 = Math.sqrt(2);\n\nexport default function(start, stop, count) {\n  var reverse,\n      i = -1,\n      n,\n      ticks,\n      step;\n\n  stop = +stop, start = +start, count = +count;\n  if (start === stop && count > 0) return [start];\n  if (reverse = stop < start) n = start, start = stop, stop = n;\n  if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n  if (step > 0) {\n    start = Math.ceil(start / step);\n    stop = Math.floor(stop / step);\n    ticks = new Array(n = Math.ceil(stop - start + 1));\n    while (++i < n) ticks[i] = (start + i) * step;\n  } else {\n    start = Math.floor(start * step);\n    stop = Math.ceil(stop * step);\n    ticks = new Array(n = Math.ceil(start - stop + 1));\n    while (++i < n) ticks[i] = (start - i) / step;\n  }\n\n  if (reverse) ticks.reverse();\n\n  return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n  var step = (stop - start) / Math.max(0, count),\n      power = Math.floor(Math.log(step) / Math.LN10),\n      error = step / Math.pow(10, power);\n  return power >= 0\n      ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n      : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nexport function tickStep(start, stop, count) {\n  var step0 = Math.abs(stop - start) / Math.max(0, count),\n      step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n      error = step0 / step1;\n  if (error >= e10) step1 *= 10;\n  else if (error >= e5) step1 *= 5;\n  else if (error >= e2) step1 *= 2;\n  return stop < start ? -step1 : step1;\n}\n","import min from \"./min.js\";\n\nexport default function(matrix) {\n  if (!(n = matrix.length)) return [];\n  for (var i = -1, m = min(matrix, length), transpose = new Array(m); ++i < m;) {\n    for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n;) {\n      row[j] = matrix[j][i];\n    }\n  }\n  return transpose;\n}\n\nfunction length(d) {\n  return d.length;\n}\n","export default function variance(values, valueof) {\n  let count = 0;\n  let delta;\n  let mean = 0;\n  let sum = 0;\n  if (valueof === undefined) {\n    for (let value of values) {\n      if (value != null && (value = +value) >= value) {\n        delta = value - mean;\n        mean += delta / ++count;\n        sum += delta * (value - mean);\n      }\n    }\n  } else {\n    let index = -1;\n    for (let value of values) {\n      if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n        delta = value - mean;\n        mean += delta / ++count;\n        sum += delta * (value - mean);\n      }\n    }\n  }\n  if (count > 1) return sum / (count - 1);\n}\n","import transpose from \"./transpose.js\";\n\nexport default function() {\n  return transpose(arguments);\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolate} from \"d3-interpolate\";\nimport {customEvent, event, touch, mouse, select} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport BrushEvent from \"./event.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\nvar MODE_DRAG = {name: \"drag\"},\n    MODE_SPACE = {name: \"space\"},\n    MODE_HANDLE = {name: \"handle\"},\n    MODE_CENTER = {name: \"center\"};\n\nfunction number1(e) {\n  return [+e[0], +e[1]];\n}\n\nfunction number2(e) {\n  return [number1(e[0]), number1(e[1])];\n}\n\nfunction toucher(identifier) {\n  return function(target) {\n    return touch(target, event.touches, identifier);\n  };\n}\n\nvar X = {\n  name: \"x\",\n  handles: [\"w\", \"e\"].map(type),\n  input: function(x, e) { return x == null ? null : [[+x[0], e[0][1]], [+x[1], e[1][1]]]; },\n  output: function(xy) { return xy && [xy[0][0], xy[1][0]]; }\n};\n\nvar Y = {\n  name: \"y\",\n  handles: [\"n\", \"s\"].map(type),\n  input: function(y, e) { return y == null ? null : [[e[0][0], +y[0]], [e[1][0], +y[1]]]; },\n  output: function(xy) { return xy && [xy[0][1], xy[1][1]]; }\n};\n\nvar XY = {\n  name: \"xy\",\n  handles: [\"n\", \"w\", \"e\", \"s\", \"nw\", \"ne\", \"sw\", \"se\"].map(type),\n  input: function(xy) { return xy == null ? null : number2(xy); },\n  output: function(xy) { return xy; }\n};\n\nvar cursors = {\n  overlay: \"crosshair\",\n  selection: \"move\",\n  n: \"ns-resize\",\n  e: \"ew-resize\",\n  s: \"ns-resize\",\n  w: \"ew-resize\",\n  nw: \"nwse-resize\",\n  ne: \"nesw-resize\",\n  se: \"nwse-resize\",\n  sw: \"nesw-resize\"\n};\n\nvar flipX = {\n  e: \"w\",\n  w: \"e\",\n  nw: \"ne\",\n  ne: \"nw\",\n  se: \"sw\",\n  sw: \"se\"\n};\n\nvar flipY = {\n  n: \"s\",\n  s: \"n\",\n  nw: \"sw\",\n  ne: \"se\",\n  se: \"ne\",\n  sw: \"nw\"\n};\n\nvar signsX = {\n  overlay: +1,\n  selection: +1,\n  n: null,\n  e: +1,\n  s: null,\n  w: -1,\n  nw: -1,\n  ne: +1,\n  se: +1,\n  sw: -1\n};\n\nvar signsY = {\n  overlay: +1,\n  selection: +1,\n  n: -1,\n  e: null,\n  s: +1,\n  w: null,\n  nw: -1,\n  ne: -1,\n  se: +1,\n  sw: +1\n};\n\nfunction type(t) {\n  return {type: t};\n}\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter() {\n  return !event.ctrlKey && !event.button;\n}\n\nfunction defaultExtent() {\n  var svg = this.ownerSVGElement || this;\n  if (svg.hasAttribute(\"viewBox\")) {\n    svg = svg.viewBox.baseVal;\n    return [[svg.x, svg.y], [svg.x + svg.width, svg.y + svg.height]];\n  }\n  return [[0, 0], [svg.width.baseVal.value, svg.height.baseVal.value]];\n}\n\nfunction defaultTouchable() {\n  return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\n// Like d3.local, but with the name “__brush” rather than auto-generated.\nfunction local(node) {\n  while (!node.__brush) if (!(node = node.parentNode)) return;\n  return node.__brush;\n}\n\nfunction empty(extent) {\n  return extent[0][0] === extent[1][0]\n      || extent[0][1] === extent[1][1];\n}\n\nexport function brushSelection(node) {\n  var state = node.__brush;\n  return state ? state.dim.output(state.selection) : null;\n}\n\nexport function brushX() {\n  return brush(X);\n}\n\nexport function brushY() {\n  return brush(Y);\n}\n\nexport default function() {\n  return brush(XY);\n}\n\nfunction brush(dim) {\n  var extent = defaultExtent,\n      filter = defaultFilter,\n      touchable = defaultTouchable,\n      keys = true,\n      listeners = dispatch(\"start\", \"brush\", \"end\"),\n      handleSize = 6,\n      touchending;\n\n  function brush(group) {\n    var overlay = group\n        .property(\"__brush\", initialize)\n      .selectAll(\".overlay\")\n      .data([type(\"overlay\")]);\n\n    overlay.enter().append(\"rect\")\n        .attr(\"class\", \"overlay\")\n        .attr(\"pointer-events\", \"all\")\n        .attr(\"cursor\", cursors.overlay)\n      .merge(overlay)\n        .each(function() {\n          var extent = local(this).extent;\n          select(this)\n              .attr(\"x\", extent[0][0])\n              .attr(\"y\", extent[0][1])\n              .attr(\"width\", extent[1][0] - extent[0][0])\n              .attr(\"height\", extent[1][1] - extent[0][1]);\n        });\n\n    group.selectAll(\".selection\")\n      .data([type(\"selection\")])\n      .enter().append(\"rect\")\n        .attr(\"class\", \"selection\")\n        .attr(\"cursor\", cursors.selection)\n        .attr(\"fill\", \"#777\")\n        .attr(\"fill-opacity\", 0.3)\n        .attr(\"stroke\", \"#fff\")\n        .attr(\"shape-rendering\", \"crispEdges\");\n\n    var handle = group.selectAll(\".handle\")\n      .data(dim.handles, function(d) { return d.type; });\n\n    handle.exit().remove();\n\n    handle.enter().append(\"rect\")\n        .attr(\"class\", function(d) { return \"handle handle--\" + d.type; })\n        .attr(\"cursor\", function(d) { return cursors[d.type]; });\n\n    group\n        .each(redraw)\n        .attr(\"fill\", \"none\")\n        .attr(\"pointer-events\", \"all\")\n        .on(\"mousedown.brush\", started)\n      .filter(touchable)\n        .on(\"touchstart.brush\", started)\n        .on(\"touchmove.brush\", touchmoved)\n        .on(\"touchend.brush touchcancel.brush\", touchended)\n        .style(\"touch-action\", \"none\")\n        .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n  }\n\n  brush.move = function(group, selection) {\n    if (group.selection) {\n      group\n          .on(\"start.brush\", function() { emitter(this, arguments).beforestart().start(); })\n          .on(\"interrupt.brush end.brush\", function() { emitter(this, arguments).end(); })\n          .tween(\"brush\", function() {\n            var that = this,\n                state = that.__brush,\n                emit = emitter(that, arguments),\n                selection0 = state.selection,\n                selection1 = dim.input(typeof selection === \"function\" ? selection.apply(this, arguments) : selection, state.extent),\n                i = interpolate(selection0, selection1);\n\n            function tween(t) {\n              state.selection = t === 1 && selection1 === null ? null : i(t);\n              redraw.call(that);\n              emit.brush();\n            }\n\n            return selection0 !== null && selection1 !== null ? tween : tween(1);\n          });\n    } else {\n      group\n          .each(function() {\n            var that = this,\n                args = arguments,\n                state = that.__brush,\n                selection1 = dim.input(typeof selection === \"function\" ? selection.apply(that, args) : selection, state.extent),\n                emit = emitter(that, args).beforestart();\n\n            interrupt(that);\n            state.selection = selection1 === null ? null : selection1;\n            redraw.call(that);\n            emit.start().brush().end();\n          });\n    }\n  };\n\n  brush.clear = function(group) {\n    brush.move(group, null);\n  };\n\n  function redraw() {\n    var group = select(this),\n        selection = local(this).selection;\n\n    if (selection) {\n      group.selectAll(\".selection\")\n          .style(\"display\", null)\n          .attr(\"x\", selection[0][0])\n          .attr(\"y\", selection[0][1])\n          .attr(\"width\", selection[1][0] - selection[0][0])\n          .attr(\"height\", selection[1][1] - selection[0][1]);\n\n      group.selectAll(\".handle\")\n          .style(\"display\", null)\n          .attr(\"x\", function(d) { return d.type[d.type.length - 1] === \"e\" ? selection[1][0] - handleSize / 2 : selection[0][0] - handleSize / 2; })\n          .attr(\"y\", function(d) { return d.type[0] === \"s\" ? selection[1][1] - handleSize / 2 : selection[0][1] - handleSize / 2; })\n          .attr(\"width\", function(d) { return d.type === \"n\" || d.type === \"s\" ? selection[1][0] - selection[0][0] + handleSize : handleSize; })\n          .attr(\"height\", function(d) { return d.type === \"e\" || d.type === \"w\" ? selection[1][1] - selection[0][1] + handleSize : handleSize; });\n    }\n\n    else {\n      group.selectAll(\".selection,.handle\")\n          .style(\"display\", \"none\")\n          .attr(\"x\", null)\n          .attr(\"y\", null)\n          .attr(\"width\", null)\n          .attr(\"height\", null);\n    }\n  }\n\n  function emitter(that, args, clean) {\n    return (!clean && that.__brush.emitter) || new Emitter(that, args);\n  }\n\n  function Emitter(that, args) {\n    this.that = that;\n    this.args = args;\n    this.state = that.__brush;\n    this.active = 0;\n  }\n\n  Emitter.prototype = {\n    beforestart: function() {\n      if (++this.active === 1) this.state.emitter = this, this.starting = true;\n      return this;\n    },\n    start: function() {\n      if (this.starting) this.starting = false, this.emit(\"start\");\n      else this.emit(\"brush\");\n      return this;\n    },\n    brush: function() {\n      this.emit(\"brush\");\n      return this;\n    },\n    end: function() {\n      if (--this.active === 0) delete this.state.emitter, this.emit(\"end\");\n      return this;\n    },\n    emit: function(type) {\n      customEvent(new BrushEvent(brush, type, dim.output(this.state.selection)), listeners.apply, listeners, [type, this.that, this.args]);\n    }\n  };\n\n  function started() {\n    if (touchending && !event.touches) return;\n    if (!filter.apply(this, arguments)) return;\n\n    var that = this,\n        type = event.target.__data__.type,\n        mode = (keys && event.metaKey ? type = \"overlay\" : type) === \"selection\" ? MODE_DRAG : (keys && event.altKey ? MODE_CENTER : MODE_HANDLE),\n        signX = dim === Y ? null : signsX[type],\n        signY = dim === X ? null : signsY[type],\n        state = local(that),\n        extent = state.extent,\n        selection = state.selection,\n        W = extent[0][0], w0, w1,\n        N = extent[0][1], n0, n1,\n        E = extent[1][0], e0, e1,\n        S = extent[1][1], s0, s1,\n        dx = 0,\n        dy = 0,\n        moving,\n        shifting = signX && signY && keys && event.shiftKey,\n        lockX,\n        lockY,\n        pointer = event.touches ? toucher(event.changedTouches[0].identifier) : mouse,\n        point0 = pointer(that),\n        point = point0,\n        emit = emitter(that, arguments, true).beforestart();\n\n    if (type === \"overlay\") {\n      if (selection) moving = true;\n      state.selection = selection = [\n        [w0 = dim === Y ? W : point0[0], n0 = dim === X ? N : point0[1]],\n        [e0 = dim === Y ? E : w0, s0 = dim === X ? S : n0]\n      ];\n    } else {\n      w0 = selection[0][0];\n      n0 = selection[0][1];\n      e0 = selection[1][0];\n      s0 = selection[1][1];\n    }\n\n    w1 = w0;\n    n1 = n0;\n    e1 = e0;\n    s1 = s0;\n\n    var group = select(that)\n        .attr(\"pointer-events\", \"none\");\n\n    var overlay = group.selectAll(\".overlay\")\n        .attr(\"cursor\", cursors[type]);\n\n    if (event.touches) {\n      emit.moved = moved;\n      emit.ended = ended;\n    } else {\n      var view = select(event.view)\n          .on(\"mousemove.brush\", moved, true)\n          .on(\"mouseup.brush\", ended, true);\n      if (keys) view\n          .on(\"keydown.brush\", keydowned, true)\n          .on(\"keyup.brush\", keyupped, true)\n\n      dragDisable(event.view);\n    }\n\n    nopropagation();\n    interrupt(that);\n    redraw.call(that);\n    emit.start();\n\n    function moved() {\n      var point1 = pointer(that);\n      if (shifting && !lockX && !lockY) {\n        if (Math.abs(point1[0] - point[0]) > Math.abs(point1[1] - point[1])) lockY = true;\n        else lockX = true;\n      }\n      point = point1;\n      moving = true;\n      noevent();\n      move();\n    }\n\n    function move() {\n      var t;\n\n      dx = point[0] - point0[0];\n      dy = point[1] - point0[1];\n\n      switch (mode) {\n        case MODE_SPACE:\n        case MODE_DRAG: {\n          if (signX) dx = Math.max(W - w0, Math.min(E - e0, dx)), w1 = w0 + dx, e1 = e0 + dx;\n          if (signY) dy = Math.max(N - n0, Math.min(S - s0, dy)), n1 = n0 + dy, s1 = s0 + dy;\n          break;\n        }\n        case MODE_HANDLE: {\n          if (signX < 0) dx = Math.max(W - w0, Math.min(E - w0, dx)), w1 = w0 + dx, e1 = e0;\n          else if (signX > 0) dx = Math.max(W - e0, Math.min(E - e0, dx)), w1 = w0, e1 = e0 + dx;\n          if (signY < 0) dy = Math.max(N - n0, Math.min(S - n0, dy)), n1 = n0 + dy, s1 = s0;\n          else if (signY > 0) dy = Math.max(N - s0, Math.min(S - s0, dy)), n1 = n0, s1 = s0 + dy;\n          break;\n        }\n        case MODE_CENTER: {\n          if (signX) w1 = Math.max(W, Math.min(E, w0 - dx * signX)), e1 = Math.max(W, Math.min(E, e0 + dx * signX));\n          if (signY) n1 = Math.max(N, Math.min(S, n0 - dy * signY)), s1 = Math.max(N, Math.min(S, s0 + dy * signY));\n          break;\n        }\n      }\n\n      if (e1 < w1) {\n        signX *= -1;\n        t = w0, w0 = e0, e0 = t;\n        t = w1, w1 = e1, e1 = t;\n        if (type in flipX) overlay.attr(\"cursor\", cursors[type = flipX[type]]);\n      }\n\n      if (s1 < n1) {\n        signY *= -1;\n        t = n0, n0 = s0, s0 = t;\n        t = n1, n1 = s1, s1 = t;\n        if (type in flipY) overlay.attr(\"cursor\", cursors[type = flipY[type]]);\n      }\n\n      if (state.selection) selection = state.selection; // May be set by brush.move!\n      if (lockX) w1 = selection[0][0], e1 = selection[1][0];\n      if (lockY) n1 = selection[0][1], s1 = selection[1][1];\n\n      if (selection[0][0] !== w1\n          || selection[0][1] !== n1\n          || selection[1][0] !== e1\n          || selection[1][1] !== s1) {\n        state.selection = [[w1, n1], [e1, s1]];\n        redraw.call(that);\n        emit.brush();\n      }\n    }\n\n    function ended() {\n      nopropagation();\n      if (event.touches) {\n        if (event.touches.length) return;\n        if (touchending) clearTimeout(touchending);\n        touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n      } else {\n        dragEnable(event.view, moving);\n        view.on(\"keydown.brush keyup.brush mousemove.brush mouseup.brush\", null);\n      }\n      group.attr(\"pointer-events\", \"all\");\n      overlay.attr(\"cursor\", cursors.overlay);\n      if (state.selection) selection = state.selection; // May be set by brush.move (on start)!\n      if (empty(selection)) state.selection = null, redraw.call(that);\n      emit.end();\n    }\n\n    function keydowned() {\n      switch (event.keyCode) {\n        case 16: { // SHIFT\n          shifting = signX && signY;\n          break;\n        }\n        case 18: { // ALT\n          if (mode === MODE_HANDLE) {\n            if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n            if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n            mode = MODE_CENTER;\n            move();\n          }\n          break;\n        }\n        case 32: { // SPACE; takes priority over ALT\n          if (mode === MODE_HANDLE || mode === MODE_CENTER) {\n            if (signX < 0) e0 = e1 - dx; else if (signX > 0) w0 = w1 - dx;\n            if (signY < 0) s0 = s1 - dy; else if (signY > 0) n0 = n1 - dy;\n            mode = MODE_SPACE;\n            overlay.attr(\"cursor\", cursors.selection);\n            move();\n          }\n          break;\n        }\n        default: return;\n      }\n      noevent();\n    }\n\n    function keyupped() {\n      switch (event.keyCode) {\n        case 16: { // SHIFT\n          if (shifting) {\n            lockX = lockY = shifting = false;\n            move();\n          }\n          break;\n        }\n        case 18: { // ALT\n          if (mode === MODE_CENTER) {\n            if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n            if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n            mode = MODE_HANDLE;\n            move();\n          }\n          break;\n        }\n        case 32: { // SPACE\n          if (mode === MODE_SPACE) {\n            if (event.altKey) {\n              if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n              if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n              mode = MODE_CENTER;\n            } else {\n              if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n              if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n              mode = MODE_HANDLE;\n            }\n            overlay.attr(\"cursor\", cursors[type]);\n            move();\n          }\n          break;\n        }\n        default: return;\n      }\n      noevent();\n    }\n  }\n\n  function touchmoved() {\n    emitter(this, arguments).moved();\n  }\n\n  function touchended() {\n    emitter(this, arguments).ended();\n  }\n\n  function initialize() {\n    var state = this.__brush || {selection: null};\n    state.extent = number2(extent.apply(this, arguments));\n    state.dim = dim;\n    return state;\n  }\n\n  brush.extent = function(_) {\n    return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant(number2(_)), brush) : extent;\n  };\n\n  brush.filter = function(_) {\n    return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), brush) : filter;\n  };\n\n  brush.touchable = function(_) {\n    return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), brush) : touchable;\n  };\n\n  brush.handleSize = function(_) {\n    return arguments.length ? (handleSize = +_, brush) : handleSize;\n  };\n\n  brush.keyModifiers = function(_) {\n    return arguments.length ? (keys = !!_, brush) : keys;\n  };\n\n  brush.on = function() {\n    var value = listeners.on.apply(listeners, arguments);\n    return value === listeners ? brush : value;\n  };\n\n  return brush;\n}\n","export default function(x) {\n  return function() {\n    return x;\n  };\n}\n","export default function(target, type, selection) {\n  this.target = target;\n  this.type = type;\n  this.selection = selection;\n}\n","export {\n  default as brush,\n  brushX,\n  brushY,\n  brushSelection\n} from \"./brush.js\";\n","import {event} from \"d3-selection\";\n\nexport function nopropagation() {\n  event.stopImmediatePropagation();\n}\n\nexport default function() {\n  event.preventDefault();\n  event.stopImmediatePropagation();\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n    reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n    reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n    reHex = /^#([0-9a-f]{3,8})$/,\n    reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\"),\n    reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\"),\n    reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\"),\n    reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\"),\n    reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\"),\n    reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\n\nvar named = {\n  aliceblue: 0xf0f8ff,\n  antiquewhite: 0xfaebd7,\n  aqua: 0x00ffff,\n  aquamarine: 0x7fffd4,\n  azure: 0xf0ffff,\n  beige: 0xf5f5dc,\n  bisque: 0xffe4c4,\n  black: 0x000000,\n  blanchedalmond: 0xffebcd,\n  blue: 0x0000ff,\n  blueviolet: 0x8a2be2,\n  brown: 0xa52a2a,\n  burlywood: 0xdeb887,\n  cadetblue: 0x5f9ea0,\n  chartreuse: 0x7fff00,\n  chocolate: 0xd2691e,\n  coral: 0xff7f50,\n  cornflowerblue: 0x6495ed,\n  cornsilk: 0xfff8dc,\n  crimson: 0xdc143c,\n  cyan: 0x00ffff,\n  darkblue: 0x00008b,\n  darkcyan: 0x008b8b,\n  darkgoldenrod: 0xb8860b,\n  darkgray: 0xa9a9a9,\n  darkgreen: 0x006400,\n  darkgrey: 0xa9a9a9,\n  darkkhaki: 0xbdb76b,\n  darkmagenta: 0x8b008b,\n  darkolivegreen: 0x556b2f,\n  darkorange: 0xff8c00,\n  darkorchid: 0x9932cc,\n  darkred: 0x8b0000,\n  darksalmon: 0xe9967a,\n  darkseagreen: 0x8fbc8f,\n  darkslateblue: 0x483d8b,\n  darkslategray: 0x2f4f4f,\n  darkslategrey: 0x2f4f4f,\n  darkturquoise: 0x00ced1,\n  darkviolet: 0x9400d3,\n  deeppink: 0xff1493,\n  deepskyblue: 0x00bfff,\n  dimgray: 0x696969,\n  dimgrey: 0x696969,\n  dodgerblue: 0x1e90ff,\n  firebrick: 0xb22222,\n  floralwhite: 0xfffaf0,\n  forestgreen: 0x228b22,\n  fuchsia: 0xff00ff,\n  gainsboro: 0xdcdcdc,\n  ghostwhite: 0xf8f8ff,\n  gold: 0xffd700,\n  goldenrod: 0xdaa520,\n  gray: 0x808080,\n  green: 0x008000,\n  greenyellow: 0xadff2f,\n  grey: 0x808080,\n  honeydew: 0xf0fff0,\n  hotpink: 0xff69b4,\n  indianred: 0xcd5c5c,\n  indigo: 0x4b0082,\n  ivory: 0xfffff0,\n  khaki: 0xf0e68c,\n  lavender: 0xe6e6fa,\n  lavenderblush: 0xfff0f5,\n  lawngreen: 0x7cfc00,\n  lemonchiffon: 0xfffacd,\n  lightblue: 0xadd8e6,\n  lightcoral: 0xf08080,\n  lightcyan: 0xe0ffff,\n  lightgoldenrodyellow: 0xfafad2,\n  lightgray: 0xd3d3d3,\n  lightgreen: 0x90ee90,\n  lightgrey: 0xd3d3d3,\n  lightpink: 0xffb6c1,\n  lightsalmon: 0xffa07a,\n  lightseagreen: 0x20b2aa,\n  lightskyblue: 0x87cefa,\n  lightslategray: 0x778899,\n  lightslategrey: 0x778899,\n  lightsteelblue: 0xb0c4de,\n  lightyellow: 0xffffe0,\n  lime: 0x00ff00,\n  limegreen: 0x32cd32,\n  linen: 0xfaf0e6,\n  magenta: 0xff00ff,\n  maroon: 0x800000,\n  mediumaquamarine: 0x66cdaa,\n  mediumblue: 0x0000cd,\n  mediumorchid: 0xba55d3,\n  mediumpurple: 0x9370db,\n  mediumseagreen: 0x3cb371,\n  mediumslateblue: 0x7b68ee,\n  mediumspringgreen: 0x00fa9a,\n  mediumturquoise: 0x48d1cc,\n  mediumvioletred: 0xc71585,\n  midnightblue: 0x191970,\n  mintcream: 0xf5fffa,\n  mistyrose: 0xffe4e1,\n  moccasin: 0xffe4b5,\n  navajowhite: 0xffdead,\n  navy: 0x000080,\n  oldlace: 0xfdf5e6,\n  olive: 0x808000,\n  olivedrab: 0x6b8e23,\n  orange: 0xffa500,\n  orangered: 0xff4500,\n  orchid: 0xda70d6,\n  palegoldenrod: 0xeee8aa,\n  palegreen: 0x98fb98,\n  paleturquoise: 0xafeeee,\n  palevioletred: 0xdb7093,\n  papayawhip: 0xffefd5,\n  peachpuff: 0xffdab9,\n  peru: 0xcd853f,\n  pink: 0xffc0cb,\n  plum: 0xdda0dd,\n  powderblue: 0xb0e0e6,\n  purple: 0x800080,\n  rebeccapurple: 0x663399,\n  red: 0xff0000,\n  rosybrown: 0xbc8f8f,\n  royalblue: 0x4169e1,\n  saddlebrown: 0x8b4513,\n  salmon: 0xfa8072,\n  sandybrown: 0xf4a460,\n  seagreen: 0x2e8b57,\n  seashell: 0xfff5ee,\n  sienna: 0xa0522d,\n  silver: 0xc0c0c0,\n  skyblue: 0x87ceeb,\n  slateblue: 0x6a5acd,\n  slategray: 0x708090,\n  slategrey: 0x708090,\n  snow: 0xfffafa,\n  springgreen: 0x00ff7f,\n  steelblue: 0x4682b4,\n  tan: 0xd2b48c,\n  teal: 0x008080,\n  thistle: 0xd8bfd8,\n  tomato: 0xff6347,\n  turquoise: 0x40e0d0,\n  violet: 0xee82ee,\n  wheat: 0xf5deb3,\n  white: 0xffffff,\n  whitesmoke: 0xf5f5f5,\n  yellow: 0xffff00,\n  yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n  copy: function(channels) {\n    return Object.assign(new this.constructor, this, channels);\n  },\n  displayable: function() {\n    return this.rgb().displayable();\n  },\n  hex: color_formatHex, // Deprecated! Use color.formatHex.\n  formatHex: color_formatHex,\n  formatHsl: color_formatHsl,\n  formatRgb: color_formatRgb,\n  toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n  return this.rgb().formatHex();\n}\n\nfunction color_formatHsl() {\n  return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n  return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n  var m, l;\n  format = (format + \"\").trim().toLowerCase();\n  return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n      : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n      : l === 8 ? new Rgb(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n      : l === 4 ? new Rgb((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n      : null) // invalid hex\n      : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n      : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n      : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n      : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n      : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n      : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n      : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n      : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n      : null;\n}\n\nfunction rgbn(n) {\n  return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n  if (a <= 0) r = g = b = NaN;\n  return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n  if (!(o instanceof Color)) o = color(o);\n  if (!o) return new Rgb;\n  o = o.rgb();\n  return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n  return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n  this.r = +r;\n  this.g = +g;\n  this.b = +b;\n  this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n  brighter: function(k) {\n    k = k == null ? brighter : Math.pow(brighter, k);\n    return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n  },\n  darker: function(k) {\n    k = k == null ? darker : Math.pow(darker, k);\n    return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n  },\n  rgb: function() {\n    return this;\n  },\n  displayable: function() {\n    return (-0.5 <= this.r && this.r < 255.5)\n        && (-0.5 <= this.g && this.g < 255.5)\n        && (-0.5 <= this.b && this.b < 255.5)\n        && (0 <= this.opacity && this.opacity <= 1);\n  },\n  hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n  formatHex: rgb_formatHex,\n  formatRgb: rgb_formatRgb,\n  toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n  return \"#\" + hex(this.r) + hex(this.g) + hex(this.b);\n}\n\nfunction rgb_formatRgb() {\n  var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n  return (a === 1 ? \"rgb(\" : \"rgba(\")\n      + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n      + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n      + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n      + (a === 1 ? \")\" : \", \" + a + \")\");\n}\n\nfunction hex(value) {\n  value = Math.max(0, Math.min(255, Math.round(value) || 0));\n  return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n  if (a <= 0) h = s = l = NaN;\n  else if (l <= 0 || l >= 1) h = s = NaN;\n  else if (s <= 0) h = NaN;\n  return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n  if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n  if (!(o instanceof Color)) o = color(o);\n  if (!o) return new Hsl;\n  if (o instanceof Hsl) return o;\n  o = o.rgb();\n  var r = o.r / 255,\n      g = o.g / 255,\n      b = o.b / 255,\n      min = Math.min(r, g, b),\n      max = Math.max(r, g, b),\n      h = NaN,\n      s = max - min,\n      l = (max + min) / 2;\n  if (s) {\n    if (r === max) h = (g - b) / s + (g < b) * 6;\n    else if (g === max) h = (b - r) / s + 2;\n    else h = (r - g) / s + 4;\n    s /= l < 0.5 ? max + min : 2 - max - min;\n    h *= 60;\n  } else {\n    s = l > 0 && l < 1 ? 0 : h;\n  }\n  return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n  return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n  this.h = +h;\n  this.s = +s;\n  this.l = +l;\n  this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n  brighter: function(k) {\n    k = k == null ? brighter : Math.pow(brighter, k);\n    return new Hsl(this.h, this.s, this.l * k, this.opacity);\n  },\n  darker: function(k) {\n    k = k == null ? darker : Math.pow(darker, k);\n    return new Hsl(this.h, this.s, this.l * k, this.opacity);\n  },\n  rgb: function() {\n    var h = this.h % 360 + (this.h < 0) * 360,\n        s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n        l = this.l,\n        m2 = l + (l < 0.5 ? l : 1 - l) * s,\n        m1 = 2 * l - m2;\n    return new Rgb(\n      hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n      hsl2rgb(h, m1, m2),\n      hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n      this.opacity\n    );\n  },\n  displayable: function() {\n    return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n        && (0 <= this.l && this.l <= 1)\n        && (0 <= this.opacity && this.opacity <= 1);\n  },\n  formatHsl: function() {\n    var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n    return (a === 1 ? \"hsl(\" : \"hsla(\")\n        + (this.h || 0) + \", \"\n        + (this.s || 0) * 100 + \"%, \"\n        + (this.l || 0) * 100 + \"%\"\n        + (a === 1 ? \")\" : \", \" + a + \")\");\n  }\n}));\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n  return (h < 60 ? m1 + (m2 - m1) * h / 60\n      : h < 180 ? m2\n      : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n      : m1) * 255;\n}\n","import define, {extend} from \"./define.js\";\nimport {Color, rgbConvert, Rgb, darker, brighter} from \"./color.js\";\nimport {deg2rad, rad2deg} from \"./math.js\";\n\nvar A = -0.14861,\n    B = +1.78277,\n    C = -0.29227,\n    D = -0.90649,\n    E = +1.97294,\n    ED = E * D,\n    EB = E * B,\n    BC_DA = B * C - D * A;\n\nfunction cubehelixConvert(o) {\n  if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity);\n  if (!(o instanceof Rgb)) o = rgbConvert(o);\n  var r = o.r / 255,\n      g = o.g / 255,\n      b = o.b / 255,\n      l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB),\n      bl = b - l,\n      k = (E * (g - l) - C * bl) / D,\n      s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)), // NaN if l=0 or l=1\n      h = s ? Math.atan2(k, bl) * rad2deg - 120 : NaN;\n  return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity);\n}\n\nexport default function cubehelix(h, s, l, opacity) {\n  return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity);\n}\n\nexport function Cubehelix(h, s, l, opacity) {\n  this.h = +h;\n  this.s = +s;\n  this.l = +l;\n  this.opacity = +opacity;\n}\n\ndefine(Cubehelix, cubehelix, extend(Color, {\n  brighter: function(k) {\n    k = k == null ? brighter : Math.pow(brighter, k);\n    return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n  },\n  darker: function(k) {\n    k = k == null ? darker : Math.pow(darker, k);\n    return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n  },\n  rgb: function() {\n    var h = isNaN(this.h) ? 0 : (this.h + 120) * deg2rad,\n        l = +this.l,\n        a = isNaN(this.s) ? 0 : this.s * l * (1 - l),\n        cosh = Math.cos(h),\n        sinh = Math.sin(h);\n    return new Rgb(\n      255 * (l + a * (A * cosh + B * sinh)),\n      255 * (l + a * (C * cosh + D * sinh)),\n      255 * (l + a * (E * cosh)),\n      this.opacity\n    );\n  }\n}));\n","export default function(constructor, factory, prototype) {\n  constructor.prototype = factory.prototype = prototype;\n  prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n  var prototype = Object.create(parent.prototype);\n  for (var key in definition) prototype[key] = definition[key];\n  return prototype;\n}\n","export {default as color, rgb, hsl} from \"./color.js\";\nexport {default as lab, hcl, lch, gray} from \"./lab.js\";\nexport {default as cubehelix} from \"./cubehelix.js\";\n","import define, {extend} from \"./define.js\";\nimport {Color, rgbConvert, Rgb} from \"./color.js\";\nimport {deg2rad, rad2deg} from \"./math.js\";\n\n// https://observablehq.com/@mbostock/lab-and-rgb\nvar K = 18,\n    Xn = 0.96422,\n    Yn = 1,\n    Zn = 0.82521,\n    t0 = 4 / 29,\n    t1 = 6 / 29,\n    t2 = 3 * t1 * t1,\n    t3 = t1 * t1 * t1;\n\nfunction labConvert(o) {\n  if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity);\n  if (o instanceof Hcl) return hcl2lab(o);\n  if (!(o instanceof Rgb)) o = rgbConvert(o);\n  var r = rgb2lrgb(o.r),\n      g = rgb2lrgb(o.g),\n      b = rgb2lrgb(o.b),\n      y = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn), x, z;\n  if (r === g && g === b) x = z = y; else {\n    x = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn);\n    z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn);\n  }\n  return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity);\n}\n\nexport function gray(l, opacity) {\n  return new Lab(l, 0, 0, opacity == null ? 1 : opacity);\n}\n\nexport default function lab(l, a, b, opacity) {\n  return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity);\n}\n\nexport function Lab(l, a, b, opacity) {\n  this.l = +l;\n  this.a = +a;\n  this.b = +b;\n  this.opacity = +opacity;\n}\n\ndefine(Lab, lab, extend(Color, {\n  brighter: function(k) {\n    return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n  },\n  darker: function(k) {\n    return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n  },\n  rgb: function() {\n    var y = (this.l + 16) / 116,\n        x = isNaN(this.a) ? y : y + this.a / 500,\n        z = isNaN(this.b) ? y : y - this.b / 200;\n    x = Xn * lab2xyz(x);\n    y = Yn * lab2xyz(y);\n    z = Zn * lab2xyz(z);\n    return new Rgb(\n      lrgb2rgb( 3.1338561 * x - 1.6168667 * y - 0.4906146 * z),\n      lrgb2rgb(-0.9787684 * x + 1.9161415 * y + 0.0334540 * z),\n      lrgb2rgb( 0.0719453 * x - 0.2289914 * y + 1.4052427 * z),\n      this.opacity\n    );\n  }\n}));\n\nfunction xyz2lab(t) {\n  return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n}\n\nfunction lab2xyz(t) {\n  return t > t1 ? t * t * t : t2 * (t - t0);\n}\n\nfunction lrgb2rgb(x) {\n  return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n}\n\nfunction rgb2lrgb(x) {\n  return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n}\n\nfunction hclConvert(o) {\n  if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity);\n  if (!(o instanceof Lab)) o = labConvert(o);\n  if (o.a === 0 && o.b === 0) return new Hcl(NaN, 0 < o.l && o.l < 100 ? 0 : NaN, o.l, o.opacity);\n  var h = Math.atan2(o.b, o.a) * rad2deg;\n  return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity);\n}\n\nexport function lch(l, c, h, opacity) {\n  return arguments.length === 1 ? hclConvert(l) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function hcl(h, c, l, opacity) {\n  return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function Hcl(h, c, l, opacity) {\n  this.h = +h;\n  this.c = +c;\n  this.l = +l;\n  this.opacity = +opacity;\n}\n\nfunction hcl2lab(o) {\n  if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity);\n  var h = o.h * deg2rad;\n  return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);\n}\n\ndefine(Hcl, hcl, extend(Color, {\n  brighter: function(k) {\n    return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity);\n  },\n  darker: function(k) {\n    return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity);\n  },\n  rgb: function() {\n    return hcl2lab(this).rgb();\n  }\n}));\n","export var deg2rad = Math.PI / 180;\nexport var rad2deg = 180 / Math.PI;\n","var noop = {value: function() {}};\n\nfunction dispatch() {\n  for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n    if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n    _[t] = [];\n  }\n  return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n  this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n  return typenames.trim().split(/^|\\s+/).map(function(t) {\n    var name = \"\", i = t.indexOf(\".\");\n    if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n    if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n    return {type: t, name: name};\n  });\n}\n\nDispatch.prototype = dispatch.prototype = {\n  constructor: Dispatch,\n  on: function(typename, callback) {\n    var _ = this._,\n        T = parseTypenames(typename + \"\", _),\n        t,\n        i = -1,\n        n = T.length;\n\n    // If no callback was specified, return the callback of the given type and name.\n    if (arguments.length < 2) {\n      while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n      return;\n    }\n\n    // If a type was specified, set the callback for the given type and name.\n    // Otherwise, if a null callback was specified, remove callbacks of the given name.\n    if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n    while (++i < n) {\n      if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n      else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n    }\n\n    return this;\n  },\n  copy: function() {\n    var copy = {}, _ = this._;\n    for (var t in _) copy[t] = _[t].slice();\n    return new Dispatch(copy);\n  },\n  call: function(type, that) {\n    if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n    if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n    for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n  },\n  apply: function(type, that, args) {\n    if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n    for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n  }\n};\n\nfunction get(type, name) {\n  for (var i = 0, n = type.length, c; i < n; ++i) {\n    if ((c = type[i]).name === name) {\n      return c.value;\n    }\n  }\n}\n\nfunction set(type, name, callback) {\n  for (var i = 0, n = type.length; i < n; ++i) {\n    if (type[i].name === name) {\n      type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n      break;\n    }\n  }\n  if (callback != null) type.push({name: name, value: callback});\n  return type;\n}\n\nexport default dispatch;\n","export {default as dispatch} from \"./dispatch.js\";\n","export default function(x) {\n  return function() {\n    return x;\n  };\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {event, customEvent, select, mouse, touch} from \"d3-selection\";\nimport nodrag, {yesdrag} from \"./nodrag.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\nimport constant from \"./constant.js\";\nimport DragEvent from \"./event.js\";\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter() {\n  return !event.ctrlKey && !event.button;\n}\n\nfunction defaultContainer() {\n  return this.parentNode;\n}\n\nfunction defaultSubject(d) {\n  return d == null ? {x: event.x, y: event.y} : d;\n}\n\nfunction defaultTouchable() {\n  return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nexport default function() {\n  var filter = defaultFilter,\n      container = defaultContainer,\n      subject = defaultSubject,\n      touchable = defaultTouchable,\n      gestures = {},\n      listeners = dispatch(\"start\", \"drag\", \"end\"),\n      active = 0,\n      mousedownx,\n      mousedowny,\n      mousemoving,\n      touchending,\n      clickDistance2 = 0;\n\n  function drag(selection) {\n    selection\n        .on(\"mousedown.drag\", mousedowned)\n      .filter(touchable)\n        .on(\"touchstart.drag\", touchstarted)\n        .on(\"touchmove.drag\", touchmoved)\n        .on(\"touchend.drag touchcancel.drag\", touchended)\n        .style(\"touch-action\", \"none\")\n        .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n  }\n\n  function mousedowned() {\n    if (touchending || !filter.apply(this, arguments)) return;\n    var gesture = beforestart(\"mouse\", container.apply(this, arguments), mouse, this, arguments);\n    if (!gesture) return;\n    select(event.view).on(\"mousemove.drag\", mousemoved, true).on(\"mouseup.drag\", mouseupped, true);\n    nodrag(event.view);\n    nopropagation();\n    mousemoving = false;\n    mousedownx = event.clientX;\n    mousedowny = event.clientY;\n    gesture(\"start\");\n  }\n\n  function mousemoved() {\n    noevent();\n    if (!mousemoving) {\n      var dx = event.clientX - mousedownx, dy = event.clientY - mousedowny;\n      mousemoving = dx * dx + dy * dy > clickDistance2;\n    }\n    gestures.mouse(\"drag\");\n  }\n\n  function mouseupped() {\n    select(event.view).on(\"mousemove.drag mouseup.drag\", null);\n    yesdrag(event.view, mousemoving);\n    noevent();\n    gestures.mouse(\"end\");\n  }\n\n  function touchstarted() {\n    if (!filter.apply(this, arguments)) return;\n    var touches = event.changedTouches,\n        c = container.apply(this, arguments),\n        n = touches.length, i, gesture;\n\n    for (i = 0; i < n; ++i) {\n      if (gesture = beforestart(touches[i].identifier, c, touch, this, arguments)) {\n        nopropagation();\n        gesture(\"start\");\n      }\n    }\n  }\n\n  function touchmoved() {\n    var touches = event.changedTouches,\n        n = touches.length, i, gesture;\n\n    for (i = 0; i < n; ++i) {\n      if (gesture = gestures[touches[i].identifier]) {\n        noevent();\n        gesture(\"drag\");\n      }\n    }\n  }\n\n  function touchended() {\n    var touches = event.changedTouches,\n        n = touches.length, i, gesture;\n\n    if (touchending) clearTimeout(touchending);\n    touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n    for (i = 0; i < n; ++i) {\n      if (gesture = gestures[touches[i].identifier]) {\n        nopropagation();\n        gesture(\"end\");\n      }\n    }\n  }\n\n  function beforestart(id, container, point, that, args) {\n    var p = point(container, id), s, dx, dy,\n        sublisteners = listeners.copy();\n\n    if (!customEvent(new DragEvent(drag, \"beforestart\", s, id, active, p[0], p[1], 0, 0, sublisteners), function() {\n      if ((event.subject = s = subject.apply(that, args)) == null) return false;\n      dx = s.x - p[0] || 0;\n      dy = s.y - p[1] || 0;\n      return true;\n    })) return;\n\n    return function gesture(type) {\n      var p0 = p, n;\n      switch (type) {\n        case \"start\": gestures[id] = gesture, n = active++; break;\n        case \"end\": delete gestures[id], --active; // nobreak\n        case \"drag\": p = point(container, id), n = active; break;\n      }\n      customEvent(new DragEvent(drag, type, s, id, n, p[0] + dx, p[1] + dy, p[0] - p0[0], p[1] - p0[1], sublisteners), sublisteners.apply, sublisteners, [type, that, args]);\n    };\n  }\n\n  drag.filter = function(_) {\n    return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), drag) : filter;\n  };\n\n  drag.container = function(_) {\n    return arguments.length ? (container = typeof _ === \"function\" ? _ : constant(_), drag) : container;\n  };\n\n  drag.subject = function(_) {\n    return arguments.length ? (subject = typeof _ === \"function\" ? _ : constant(_), drag) : subject;\n  };\n\n  drag.touchable = function(_) {\n    return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), drag) : touchable;\n  };\n\n  drag.on = function() {\n    var value = listeners.on.apply(listeners, arguments);\n    return value === listeners ? drag : value;\n  };\n\n  drag.clickDistance = function(_) {\n    return arguments.length ? (clickDistance2 = (_ = +_) * _, drag) : Math.sqrt(clickDistance2);\n  };\n\n  return drag;\n}\n","export default function DragEvent(target, type, subject, id, active, x, y, dx, dy, dispatch) {\n  this.target = target;\n  this.type = type;\n  this.subject = subject;\n  this.identifier = id;\n  this.active = active;\n  this.x = x;\n  this.y = y;\n  this.dx = dx;\n  this.dy = dy;\n  this._ = dispatch;\n}\n\nDragEvent.prototype.on = function() {\n  var value = this._.on.apply(this._, arguments);\n  return value === this._ ? this : value;\n};\n","export {default as drag} from \"./drag.js\";\nexport {default as dragDisable, yesdrag as dragEnable} from \"./nodrag.js\";\n","import {select} from \"d3-selection\";\nimport noevent from \"./noevent.js\";\n\nexport default function(view) {\n  var root = view.document.documentElement,\n      selection = select(view).on(\"dragstart.drag\", noevent, true);\n  if (\"onselectstart\" in root) {\n    selection.on(\"selectstart.drag\", noevent, true);\n  } else {\n    root.__noselect = root.style.MozUserSelect;\n    root.style.MozUserSelect = \"none\";\n  }\n}\n\nexport function yesdrag(view, noclick) {\n  var root = view.document.documentElement,\n      selection = select(view).on(\"dragstart.drag\", null);\n  if (noclick) {\n    selection.on(\"click.drag\", noevent, true);\n    setTimeout(function() { selection.on(\"click.drag\", null); }, 0);\n  }\n  if (\"onselectstart\" in root) {\n    selection.on(\"selectstart.drag\", null);\n  } else {\n    root.style.MozUserSelect = root.__noselect;\n    delete root.__noselect;\n  }\n}\n","import {event} from \"d3-selection\";\n\nexport function nopropagation() {\n  event.stopImmediatePropagation();\n}\n\nexport default function() {\n  event.preventDefault();\n  event.stopImmediatePropagation();\n}\n","var overshoot = 1.70158;\n\nexport var backIn = (function custom(s) {\n  s = +s;\n\n  function backIn(t) {\n    return t * t * ((s + 1) * t - s);\n  }\n\n  backIn.overshoot = custom;\n\n  return backIn;\n})(overshoot);\n\nexport var backOut = (function custom(s) {\n  s = +s;\n\n  function backOut(t) {\n    return --t * t * ((s + 1) * t + s) + 1;\n  }\n\n  backOut.overshoot = custom;\n\n  return backOut;\n})(overshoot);\n\nexport var backInOut = (function custom(s) {\n  s = +s;\n\n  function backInOut(t) {\n    return ((t *= 2) < 1 ? t * t * ((s + 1) * t - s) : (t -= 2) * t * ((s + 1) * t + s) + 2) / 2;\n  }\n\n  backInOut.overshoot = custom;\n\n  return backInOut;\n})(overshoot);\n","var b1 = 4 / 11,\n    b2 = 6 / 11,\n    b3 = 8 / 11,\n    b4 = 3 / 4,\n    b5 = 9 / 11,\n    b6 = 10 / 11,\n    b7 = 15 / 16,\n    b8 = 21 / 22,\n    b9 = 63 / 64,\n    b0 = 1 / b1 / b1;\n\nexport function bounceIn(t) {\n  return 1 - bounceOut(1 - t);\n}\n\nexport function bounceOut(t) {\n  return (t = +t) < b1 ? b0 * t * t : t < b3 ? b0 * (t -= b2) * t + b4 : t < b6 ? b0 * (t -= b5) * t + b7 : b0 * (t -= b8) * t + b9;\n}\n\nexport function bounceInOut(t) {\n  return ((t *= 2) <= 1 ? 1 - bounceOut(1 - t) : bounceOut(t - 1) + 1) / 2;\n}\n","export function circleIn(t) {\n  return 1 - Math.sqrt(1 - t * t);\n}\n\nexport function circleOut(t) {\n  return Math.sqrt(1 - --t * t);\n}\n\nexport function circleInOut(t) {\n  return ((t *= 2) <= 1 ? 1 - Math.sqrt(1 - t * t) : Math.sqrt(1 - (t -= 2) * t) + 1) / 2;\n}\n","export function cubicIn(t) {\n  return t * t * t;\n}\n\nexport function cubicOut(t) {\n  return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n  return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","var tau = 2 * Math.PI,\n    amplitude = 1,\n    period = 0.3;\n\nexport var elasticIn = (function custom(a, p) {\n  var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n  function elasticIn(t) {\n    return a * Math.pow(2, 10 * --t) * Math.sin((s - t) / p);\n  }\n\n  elasticIn.amplitude = function(a) { return custom(a, p * tau); };\n  elasticIn.period = function(p) { return custom(a, p); };\n\n  return elasticIn;\n})(amplitude, period);\n\nexport var elasticOut = (function custom(a, p) {\n  var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n  function elasticOut(t) {\n    return 1 - a * Math.pow(2, -10 * (t = +t)) * Math.sin((t + s) / p);\n  }\n\n  elasticOut.amplitude = function(a) { return custom(a, p * tau); };\n  elasticOut.period = function(p) { return custom(a, p); };\n\n  return elasticOut;\n})(amplitude, period);\n\nexport var elasticInOut = (function custom(a, p) {\n  var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n  function elasticInOut(t) {\n    return ((t = t * 2 - 1) < 0\n        ? a * Math.pow(2, 10 * t) * Math.sin((s - t) / p)\n        : 2 - a * Math.pow(2, -10 * t) * Math.sin((s + t) / p)) / 2;\n  }\n\n  elasticInOut.amplitude = function(a) { return custom(a, p * tau); };\n  elasticInOut.period = function(p) { return custom(a, p); };\n\n  return elasticInOut;\n})(amplitude, period);\n","export function expIn(t) {\n  return Math.pow(2, 10 * t - 10);\n}\n\nexport function expOut(t) {\n  return 1 - Math.pow(2, -10 * t);\n}\n\nexport function expInOut(t) {\n  return ((t *= 2) <= 1 ? Math.pow(2, 10 * t - 10) : 2 - Math.pow(2, 10 - 10 * t)) / 2;\n}\n","export {\n  linear as easeLinear\n} from \"./linear.js\";\n\nexport {\n  quadInOut as easeQuad,\n  quadIn as easeQuadIn,\n  quadOut as easeQuadOut,\n  quadInOut as easeQuadInOut\n} from \"./quad.js\";\n\nexport {\n  cubicInOut as easeCubic,\n  cubicIn as easeCubicIn,\n  cubicOut as easeCubicOut,\n  cubicInOut as easeCubicInOut\n} from \"./cubic.js\";\n\nexport {\n  polyInOut as easePoly,\n  polyIn as easePolyIn,\n  polyOut as easePolyOut,\n  polyInOut as easePolyInOut\n} from \"./poly.js\";\n\nexport {\n  sinInOut as easeSin,\n  sinIn as easeSinIn,\n  sinOut as easeSinOut,\n  sinInOut as easeSinInOut\n} from \"./sin.js\";\n\nexport {\n  expInOut as easeExp,\n  expIn as easeExpIn,\n  expOut as easeExpOut,\n  expInOut as easeExpInOut\n} from \"./exp.js\";\n\nexport {\n  circleInOut as easeCircle,\n  circleIn as easeCircleIn,\n  circleOut as easeCircleOut,\n  circleInOut as easeCircleInOut\n} from \"./circle.js\";\n\nexport {\n  bounceOut as easeBounce,\n  bounceIn as easeBounceIn,\n  bounceOut as easeBounceOut,\n  bounceInOut as easeBounceInOut\n} from \"./bounce.js\";\n\nexport {\n  backInOut as easeBack,\n  backIn as easeBackIn,\n  backOut as easeBackOut,\n  backInOut as easeBackInOut\n} from \"./back.js\";\n\nexport {\n  elasticOut as easeElastic,\n  elasticIn as easeElasticIn,\n  elasticOut as easeElasticOut,\n  elasticInOut as easeElasticInOut\n} from \"./elastic.js\";\n","export function linear(t) {\n  return +t;\n}\n","var exponent = 3;\n\nexport var polyIn = (function custom(e) {\n  e = +e;\n\n  function polyIn(t) {\n    return Math.pow(t, e);\n  }\n\n  polyIn.exponent = custom;\n\n  return polyIn;\n})(exponent);\n\nexport var polyOut = (function custom(e) {\n  e = +e;\n\n  function polyOut(t) {\n    return 1 - Math.pow(1 - t, e);\n  }\n\n  polyOut.exponent = custom;\n\n  return polyOut;\n})(exponent);\n\nexport var polyInOut = (function custom(e) {\n  e = +e;\n\n  function polyInOut(t) {\n    return ((t *= 2) <= 1 ? Math.pow(t, e) : 2 - Math.pow(2 - t, e)) / 2;\n  }\n\n  polyInOut.exponent = custom;\n\n  return polyInOut;\n})(exponent);\n","export function quadIn(t) {\n  return t * t;\n}\n\nexport function quadOut(t) {\n  return t * (2 - t);\n}\n\nexport function quadInOut(t) {\n  return ((t *= 2) <= 1 ? t * t : --t * (2 - t) + 1) / 2;\n}\n","var pi = Math.PI,\n    halfPi = pi / 2;\n\nexport function sinIn(t) {\n  return 1 - Math.cos(t * halfPi);\n}\n\nexport function sinOut(t) {\n  return Math.sin(t * halfPi);\n}\n\nexport function sinInOut(t) {\n  return (1 - Math.cos(pi * t)) / 2;\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n  decimal: \".\",\n  thousands: \",\",\n  grouping: [3],\n  currency: [\"$\", \"\"],\n  minus: \"-\"\n});\n\nexport default function defaultLocale(definition) {\n  locale = formatLocale(definition);\n  format = locale.format;\n  formatPrefix = locale.formatPrefix;\n  return locale;\n}\n","import formatDecimal from \"./formatDecimal.js\";\n\nexport default function(x) {\n  return x = formatDecimal(Math.abs(x)), x ? x[1] : NaN;\n}\n","// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimal(1.23) returns [\"123\", 0].\nexport default function(x, p) {\n  if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n  var i, coefficient = x.slice(0, i);\n\n  // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n  // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n  return [\n    coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n    +x.slice(i + 1)\n  ];\n}\n","export default function(grouping, thousands) {\n  return function(value, width) {\n    var i = value.length,\n        t = [],\n        j = 0,\n        g = grouping[0],\n        length = 0;\n\n    while (i > 0 && g > 0) {\n      if (length + g + 1 > width) g = Math.max(1, width - length);\n      t.push(value.substring(i -= g, i + g));\n      if ((length += g + 1) > width) break;\n      g = grouping[j = (j + 1) % grouping.length];\n    }\n\n    return t.reverse().join(thousands);\n  };\n}\n","export default function(numerals) {\n  return function(value) {\n    return value.replace(/[0-9]/g, function(i) {\n      return numerals[+i];\n    });\n  };\n}\n","import formatDecimal from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n  var d = formatDecimal(x, p);\n  if (!d) return x + \"\";\n  var coefficient = d[0],\n      exponent = d[1],\n      i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n      n = coefficient.length;\n  return i === n ? coefficient\n      : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n      : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n      : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimal(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","import formatDecimal from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n  var d = formatDecimal(x, p);\n  if (!d) return x + \"\";\n  var coefficient = d[0],\n      exponent = d[1];\n  return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n      : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n      : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n  if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n  var match;\n  return new FormatSpecifier({\n    fill: match[1],\n    align: match[2],\n    sign: match[3],\n    symbol: match[4],\n    zero: match[5],\n    width: match[6],\n    comma: match[7],\n    precision: match[8] && match[8].slice(1),\n    trim: match[9],\n    type: match[10]\n  });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n  this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n  this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n  this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n  this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n  this.zero = !!specifier.zero;\n  this.width = specifier.width === undefined ? undefined : +specifier.width;\n  this.comma = !!specifier.comma;\n  this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n  this.trim = !!specifier.trim;\n  this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n  return this.fill\n      + this.align\n      + this.sign\n      + this.symbol\n      + (this.zero ? \"0\" : \"\")\n      + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n      + (this.comma ? \",\" : \"\")\n      + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n      + (this.trim ? \"~\" : \"\")\n      + this.type;\n};\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n  out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n    switch (s[i]) {\n      case \".\": i0 = i1 = i; break;\n      case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n      default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n    }\n  }\n  return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","import formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n  \"%\": function(x, p) { return (x * 100).toFixed(p); },\n  \"b\": function(x) { return Math.round(x).toString(2); },\n  \"c\": function(x) { return x + \"\"; },\n  \"d\": function(x) { return Math.round(x).toString(10); },\n  \"e\": function(x, p) { return x.toExponential(p); },\n  \"f\": function(x, p) { return x.toFixed(p); },\n  \"g\": function(x, p) { return x.toPrecision(p); },\n  \"o\": function(x) { return Math.round(x).toString(8); },\n  \"p\": function(x, p) { return formatRounded(x * 100, p); },\n  \"r\": formatRounded,\n  \"s\": formatPrefixAuto,\n  \"X\": function(x) { return Math.round(x).toString(16).toUpperCase(); },\n  \"x\": function(x) { return Math.round(x).toString(16); }\n};\n","export default function(x) {\n  return x;\n}\n","export {default as formatDefaultLocale, format, formatPrefix} from \"./defaultLocale.js\";\nexport {default as formatLocale} from \"./locale.js\";\nexport {default as formatSpecifier, FormatSpecifier} from \"./formatSpecifier.js\";\nexport {default as precisionFixed} from \"./precisionFixed.js\";\nexport {default as precisionPrefix} from \"./precisionPrefix.js\";\nexport {default as precisionRound} from \"./precisionRound.js\";\n","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n    prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n  var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n      currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n      currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n      decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n      numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n      percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n      minus = locale.minus === undefined ? \"-\" : locale.minus + \"\",\n      nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n  function newFormat(specifier) {\n    specifier = formatSpecifier(specifier);\n\n    var fill = specifier.fill,\n        align = specifier.align,\n        sign = specifier.sign,\n        symbol = specifier.symbol,\n        zero = specifier.zero,\n        width = specifier.width,\n        comma = specifier.comma,\n        precision = specifier.precision,\n        trim = specifier.trim,\n        type = specifier.type;\n\n    // The \"n\" type is an alias for \",g\".\n    if (type === \"n\") comma = true, type = \"g\";\n\n    // The \"\" type, and any invalid type, is an alias for \".12~g\".\n    else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n    // If zero fill is specified, padding goes after sign and before digits.\n    if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n    // Compute the prefix and suffix.\n    // For SI-prefix, the suffix is lazily computed.\n    var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n        suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n    // What format function should we use?\n    // Is this an integer type?\n    // Can this type generate exponential notation?\n    var formatType = formatTypes[type],\n        maybeSuffix = /[defgprs%]/.test(type);\n\n    // Set the default precision if not specified,\n    // or clamp the specified precision to the supported range.\n    // For significant precision, it must be in [1, 21].\n    // For fixed precision, it must be in [0, 20].\n    precision = precision === undefined ? 6\n        : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n        : Math.max(0, Math.min(20, precision));\n\n    function format(value) {\n      var valuePrefix = prefix,\n          valueSuffix = suffix,\n          i, n, c;\n\n      if (type === \"c\") {\n        valueSuffix = formatType(value) + valueSuffix;\n        value = \"\";\n      } else {\n        value = +value;\n\n        // Perform the initial formatting.\n        var valueNegative = value < 0;\n        value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n        // Trim insignificant zeros.\n        if (trim) value = formatTrim(value);\n\n        // If a negative value rounds to zero during formatting, treat as positive.\n        if (valueNegative && +value === 0) valueNegative = false;\n\n        // Compute the prefix and suffix.\n        valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n\n        valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n        // Break the formatted value into the integer “value” part that can be\n        // grouped, and fractional or exponential “suffix” part that is not.\n        if (maybeSuffix) {\n          i = -1, n = value.length;\n          while (++i < n) {\n            if (c = value.charCodeAt(i), 48 > c || c > 57) {\n              valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n              value = value.slice(0, i);\n              break;\n            }\n          }\n        }\n      }\n\n      // If the fill character is not \"0\", grouping is applied before padding.\n      if (comma && !zero) value = group(value, Infinity);\n\n      // Compute the padding.\n      var length = valuePrefix.length + value.length + valueSuffix.length,\n          padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n      // If the fill character is \"0\", grouping is applied after padding.\n      if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n      // Reconstruct the final output based on the desired alignment.\n      switch (align) {\n        case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n        case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n        case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n        default: value = padding + valuePrefix + value + valueSuffix; break;\n      }\n\n      return numerals(value);\n    }\n\n    format.toString = function() {\n      return specifier + \"\";\n    };\n\n    return format;\n  }\n\n  function formatPrefix(specifier, value) {\n    var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n        e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n        k = Math.pow(10, -e),\n        prefix = prefixes[8 + e / 3];\n    return function(value) {\n      return f(k * value) + prefix;\n    };\n  }\n\n  return {\n    format: newFormat,\n    formatPrefix: formatPrefix\n  };\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step) {\n  return Math.max(0, -exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, value) {\n  return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, max) {\n  step = Math.abs(step), max = Math.abs(max) - step;\n  return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n","export function optional(f) {\n  return f == null ? null : required(f);\n}\n\nexport function required(f) {\n  if (typeof f !== \"function\") throw new Error;\n  return f;\n}\n","export var slice = Array.prototype.slice;\n\nexport function shuffle(array) {\n  var m = array.length,\n      t,\n      i;\n\n  while (m) {\n    i = Math.random() * m-- | 0;\n    t = array[m];\n    array[m] = array[i];\n    array[i] = t;\n  }\n\n  return array;\n}\n","function defaultSeparation(a, b) {\n  return a.parent === b.parent ? 1 : 2;\n}\n\nfunction meanX(children) {\n  return children.reduce(meanXReduce, 0) / children.length;\n}\n\nfunction meanXReduce(x, c) {\n  return x + c.x;\n}\n\nfunction maxY(children) {\n  return 1 + children.reduce(maxYReduce, 0);\n}\n\nfunction maxYReduce(y, c) {\n  return Math.max(y, c.y);\n}\n\nfunction leafLeft(node) {\n  var children;\n  while (children = node.children) node = children[0];\n  return node;\n}\n\nfunction leafRight(node) {\n  var children;\n  while (children = node.children) node = children[children.length - 1];\n  return node;\n}\n\nexport default function() {\n  var separation = defaultSeparation,\n      dx = 1,\n      dy = 1,\n      nodeSize = false;\n\n  function cluster(root) {\n    var previousNode,\n        x = 0;\n\n    // First walk, computing the initial x & y values.\n    root.eachAfter(function(node) {\n      var children = node.children;\n      if (children) {\n        node.x = meanX(children);\n        node.y = maxY(children);\n      } else {\n        node.x = previousNode ? x += separation(node, previousNode) : 0;\n        node.y = 0;\n        previousNode = node;\n      }\n    });\n\n    var left = leafLeft(root),\n        right = leafRight(root),\n        x0 = left.x - separation(left, right) / 2,\n        x1 = right.x + separation(right, left) / 2;\n\n    // Second walk, normalizing x & y to the desired size.\n    return root.eachAfter(nodeSize ? function(node) {\n      node.x = (node.x - root.x) * dx;\n      node.y = (root.y - node.y) * dy;\n    } : function(node) {\n      node.x = (node.x - x0) / (x1 - x0) * dx;\n      node.y = (1 - (root.y ? node.y / root.y : 1)) * dy;\n    });\n  }\n\n  cluster.separation = function(x) {\n    return arguments.length ? (separation = x, cluster) : separation;\n  };\n\n  cluster.size = function(x) {\n    return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? null : [dx, dy]);\n  };\n\n  cluster.nodeSize = function(x) {\n    return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? [dx, dy] : null);\n  };\n\n  return cluster;\n}\n","export function constantZero() {\n  return 0;\n}\n\nexport default function(x) {\n  return function() {\n    return x;\n  };\n}\n","export default function() {\n  var node = this, nodes = [node];\n  while (node = node.parent) {\n    nodes.push(node);\n  }\n  return nodes;\n}\n","function count(node) {\n  var sum = 0,\n      children = node.children,\n      i = children && children.length;\n  if (!i) sum = 1;\n  else while (--i >= 0) sum += children[i].value;\n  node.value = sum;\n}\n\nexport default function() {\n  return this.eachAfter(count);\n}\n","export default function() {\n  var nodes = [];\n  this.each(function(node) {\n    nodes.push(node);\n  });\n  return nodes;\n}\n","export default function(callback) {\n  var node = this, current, next = [node], children, i, n;\n  do {\n    current = next.reverse(), next = [];\n    while (node = current.pop()) {\n      callback(node), children = node.children;\n      if (children) for (i = 0, n = children.length; i < n; ++i) {\n        next.push(children[i]);\n      }\n    }\n  } while (next.length);\n  return this;\n}\n","export default function(callback) {\n  var node = this, nodes = [node], next = [], children, i, n;\n  while (node = nodes.pop()) {\n    next.push(node), children = node.children;\n    if (children) for (i = 0, n = children.length; i < n; ++i) {\n      nodes.push(children[i]);\n    }\n  }\n  while (node = next.pop()) {\n    callback(node);\n  }\n  return this;\n}\n","export default function(callback) {\n  var node = this, nodes = [node], children, i;\n  while (node = nodes.pop()) {\n    callback(node), children = node.children;\n    if (children) for (i = children.length - 1; i >= 0; --i) {\n      nodes.push(children[i]);\n    }\n  }\n  return this;\n}\n","import node_count from \"./count.js\";\nimport node_each from \"./each.js\";\nimport node_eachBefore from \"./eachBefore.js\";\nimport node_eachAfter from \"./eachAfter.js\";\nimport node_sum from \"./sum.js\";\nimport node_sort from \"./sort.js\";\nimport node_path from \"./path.js\";\nimport node_ancestors from \"./ancestors.js\";\nimport node_descendants from \"./descendants.js\";\nimport node_leaves from \"./leaves.js\";\nimport node_links from \"./links.js\";\n\nexport default function hierarchy(data, children) {\n  var root = new Node(data),\n      valued = +data.value && (root.value = data.value),\n      node,\n      nodes = [root],\n      child,\n      childs,\n      i,\n      n;\n\n  if (children == null) children = defaultChildren;\n\n  while (node = nodes.pop()) {\n    if (valued) node.value = +node.data.value;\n    if ((childs = children(node.data)) && (n = childs.length)) {\n      node.children = new Array(n);\n      for (i = n - 1; i >= 0; --i) {\n        nodes.push(child = node.children[i] = new Node(childs[i]));\n        child.parent = node;\n        child.depth = node.depth + 1;\n      }\n    }\n  }\n\n  return root.eachBefore(computeHeight);\n}\n\nfunction node_copy() {\n  return hierarchy(this).eachBefore(copyData);\n}\n\nfunction defaultChildren(d) {\n  return d.children;\n}\n\nfunction copyData(node) {\n  node.data = node.data.data;\n}\n\nexport function computeHeight(node) {\n  var height = 0;\n  do node.height = height;\n  while ((node = node.parent) && (node.height < ++height));\n}\n\nexport function Node(data) {\n  this.data = data;\n  this.depth =\n  this.height = 0;\n  this.parent = null;\n}\n\nNode.prototype = hierarchy.prototype = {\n  constructor: Node,\n  count: node_count,\n  each: node_each,\n  eachAfter: node_eachAfter,\n  eachBefore: node_eachBefore,\n  sum: node_sum,\n  sort: node_sort,\n  path: node_path,\n  ancestors: node_ancestors,\n  descendants: node_descendants,\n  leaves: node_leaves,\n  links: node_links,\n  copy: node_copy\n};\n","export default function() {\n  var leaves = [];\n  this.eachBefore(function(node) {\n    if (!node.children) {\n      leaves.push(node);\n    }\n  });\n  return leaves;\n}\n","export default function() {\n  var root = this, links = [];\n  root.each(function(node) {\n    if (node !== root) { // Don’t include the root’s parent, if any.\n      links.push({source: node.parent, target: node});\n    }\n  });\n  return links;\n}\n","export default function(end) {\n  var start = this,\n      ancestor = leastCommonAncestor(start, end),\n      nodes = [start];\n  while (start !== ancestor) {\n    start = start.parent;\n    nodes.push(start);\n  }\n  var k = nodes.length;\n  while (end !== ancestor) {\n    nodes.splice(k, 0, end);\n    end = end.parent;\n  }\n  return nodes;\n}\n\nfunction leastCommonAncestor(a, b) {\n  if (a === b) return a;\n  var aNodes = a.ancestors(),\n      bNodes = b.ancestors(),\n      c = null;\n  a = aNodes.pop();\n  b = bNodes.pop();\n  while (a === b) {\n    c = a;\n    a = aNodes.pop();\n    b = bNodes.pop();\n  }\n  return c;\n}\n","export default function(compare) {\n  return this.eachBefore(function(node) {\n    if (node.children) {\n      node.children.sort(compare);\n    }\n  });\n}\n","export default function(value) {\n  return this.eachAfter(function(node) {\n    var sum = +value(node.data) || 0,\n        children = node.children,\n        i = children && children.length;\n    while (--i >= 0) sum += children[i].value;\n    node.value = sum;\n  });\n}\n","export {default as cluster} from \"./cluster.js\";\nexport {default as hierarchy} from \"./hierarchy/index.js\";\nexport {default as pack} from \"./pack/index.js\";\nexport {default as packSiblings} from \"./pack/siblings.js\";\nexport {default as packEnclose} from \"./pack/enclose.js\";\nexport {default as partition} from \"./partition.js\";\nexport {default as stratify} from \"./stratify.js\";\nexport {default as tree} from \"./tree.js\";\nexport {default as treemap} from \"./treemap/index.js\";\nexport {default as treemapBinary} from \"./treemap/binary.js\";\nexport {default as treemapDice} from \"./treemap/dice.js\";\nexport {default as treemapSlice} from \"./treemap/slice.js\";\nexport {default as treemapSliceDice} from \"./treemap/sliceDice.js\";\nexport {default as treemapSquarify} from \"./treemap/squarify.js\";\nexport {default as treemapResquarify} from \"./treemap/resquarify.js\";\n","import {shuffle, slice} from \"../array.js\";\n\nexport default function(circles) {\n  var i = 0, n = (circles = shuffle(slice.call(circles))).length, B = [], p, e;\n\n  while (i < n) {\n    p = circles[i];\n    if (e && enclosesWeak(e, p)) ++i;\n    else e = encloseBasis(B = extendBasis(B, p)), i = 0;\n  }\n\n  return e;\n}\n\nfunction extendBasis(B, p) {\n  var i, j;\n\n  if (enclosesWeakAll(p, B)) return [p];\n\n  // If we get here then B must have at least one element.\n  for (i = 0; i < B.length; ++i) {\n    if (enclosesNot(p, B[i])\n        && enclosesWeakAll(encloseBasis2(B[i], p), B)) {\n      return [B[i], p];\n    }\n  }\n\n  // If we get here then B must have at least two elements.\n  for (i = 0; i < B.length - 1; ++i) {\n    for (j = i + 1; j < B.length; ++j) {\n      if (enclosesNot(encloseBasis2(B[i], B[j]), p)\n          && enclosesNot(encloseBasis2(B[i], p), B[j])\n          && enclosesNot(encloseBasis2(B[j], p), B[i])\n          && enclosesWeakAll(encloseBasis3(B[i], B[j], p), B)) {\n        return [B[i], B[j], p];\n      }\n    }\n  }\n\n  // If we get here then something is very wrong.\n  throw new Error;\n}\n\nfunction enclosesNot(a, b) {\n  var dr = a.r - b.r, dx = b.x - a.x, dy = b.y - a.y;\n  return dr < 0 || dr * dr < dx * dx + dy * dy;\n}\n\nfunction enclosesWeak(a, b) {\n  var dr = a.r - b.r + 1e-6, dx = b.x - a.x, dy = b.y - a.y;\n  return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\n\nfunction enclosesWeakAll(a, B) {\n  for (var i = 0; i < B.length; ++i) {\n    if (!enclosesWeak(a, B[i])) {\n      return false;\n    }\n  }\n  return true;\n}\n\nfunction encloseBasis(B) {\n  switch (B.length) {\n    case 1: return encloseBasis1(B[0]);\n    case 2: return encloseBasis2(B[0], B[1]);\n    case 3: return encloseBasis3(B[0], B[1], B[2]);\n  }\n}\n\nfunction encloseBasis1(a) {\n  return {\n    x: a.x,\n    y: a.y,\n    r: a.r\n  };\n}\n\nfunction encloseBasis2(a, b) {\n  var x1 = a.x, y1 = a.y, r1 = a.r,\n      x2 = b.x, y2 = b.y, r2 = b.r,\n      x21 = x2 - x1, y21 = y2 - y1, r21 = r2 - r1,\n      l = Math.sqrt(x21 * x21 + y21 * y21);\n  return {\n    x: (x1 + x2 + x21 / l * r21) / 2,\n    y: (y1 + y2 + y21 / l * r21) / 2,\n    r: (l + r1 + r2) / 2\n  };\n}\n\nfunction encloseBasis3(a, b, c) {\n  var x1 = a.x, y1 = a.y, r1 = a.r,\n      x2 = b.x, y2 = b.y, r2 = b.r,\n      x3 = c.x, y3 = c.y, r3 = c.r,\n      a2 = x1 - x2,\n      a3 = x1 - x3,\n      b2 = y1 - y2,\n      b3 = y1 - y3,\n      c2 = r2 - r1,\n      c3 = r3 - r1,\n      d1 = x1 * x1 + y1 * y1 - r1 * r1,\n      d2 = d1 - x2 * x2 - y2 * y2 + r2 * r2,\n      d3 = d1 - x3 * x3 - y3 * y3 + r3 * r3,\n      ab = a3 * b2 - a2 * b3,\n      xa = (b2 * d3 - b3 * d2) / (ab * 2) - x1,\n      xb = (b3 * c2 - b2 * c3) / ab,\n      ya = (a3 * d2 - a2 * d3) / (ab * 2) - y1,\n      yb = (a2 * c3 - a3 * c2) / ab,\n      A = xb * xb + yb * yb - 1,\n      B = 2 * (r1 + xa * xb + ya * yb),\n      C = xa * xa + ya * ya - r1 * r1,\n      r = -(A ? (B + Math.sqrt(B * B - 4 * A * C)) / (2 * A) : C / B);\n  return {\n    x: x1 + xa + xb * r,\n    y: y1 + ya + yb * r,\n    r: r\n  };\n}\n","import {packEnclose} from \"./siblings.js\";\nimport {optional} from \"../accessors.js\";\nimport constant, {constantZero} from \"../constant.js\";\n\nfunction defaultRadius(d) {\n  return Math.sqrt(d.value);\n}\n\nexport default function() {\n  var radius = null,\n      dx = 1,\n      dy = 1,\n      padding = constantZero;\n\n  function pack(root) {\n    root.x = dx / 2, root.y = dy / 2;\n    if (radius) {\n      root.eachBefore(radiusLeaf(radius))\n          .eachAfter(packChildren(padding, 0.5))\n          .eachBefore(translateChild(1));\n    } else {\n      root.eachBefore(radiusLeaf(defaultRadius))\n          .eachAfter(packChildren(constantZero, 1))\n          .eachAfter(packChildren(padding, root.r / Math.min(dx, dy)))\n          .eachBefore(translateChild(Math.min(dx, dy) / (2 * root.r)));\n    }\n    return root;\n  }\n\n  pack.radius = function(x) {\n    return arguments.length ? (radius = optional(x), pack) : radius;\n  };\n\n  pack.size = function(x) {\n    return arguments.length ? (dx = +x[0], dy = +x[1], pack) : [dx, dy];\n  };\n\n  pack.padding = function(x) {\n    return arguments.length ? (padding = typeof x === \"function\" ? x : constant(+x), pack) : padding;\n  };\n\n  return pack;\n}\n\nfunction radiusLeaf(radius) {\n  return function(node) {\n    if (!node.children) {\n      node.r = Math.max(0, +radius(node) || 0);\n    }\n  };\n}\n\nfunction packChildren(padding, k) {\n  return function(node) {\n    if (children = node.children) {\n      var children,\n          i,\n          n = children.length,\n          r = padding(node) * k || 0,\n          e;\n\n      if (r) for (i = 0; i < n; ++i) children[i].r += r;\n      e = packEnclose(children);\n      if (r) for (i = 0; i < n; ++i) children[i].r -= r;\n      node.r = e + r;\n    }\n  };\n}\n\nfunction translateChild(k) {\n  return function(node) {\n    var parent = node.parent;\n    node.r *= k;\n    if (parent) {\n      node.x = parent.x + k * node.x;\n      node.y = parent.y + k * node.y;\n    }\n  };\n}\n","import enclose from \"./enclose.js\";\n\nfunction place(b, a, c) {\n  var dx = b.x - a.x, x, a2,\n      dy = b.y - a.y, y, b2,\n      d2 = dx * dx + dy * dy;\n  if (d2) {\n    a2 = a.r + c.r, a2 *= a2;\n    b2 = b.r + c.r, b2 *= b2;\n    if (a2 > b2) {\n      x = (d2 + b2 - a2) / (2 * d2);\n      y = Math.sqrt(Math.max(0, b2 / d2 - x * x));\n      c.x = b.x - x * dx - y * dy;\n      c.y = b.y - x * dy + y * dx;\n    } else {\n      x = (d2 + a2 - b2) / (2 * d2);\n      y = Math.sqrt(Math.max(0, a2 / d2 - x * x));\n      c.x = a.x + x * dx - y * dy;\n      c.y = a.y + x * dy + y * dx;\n    }\n  } else {\n    c.x = a.x + c.r;\n    c.y = a.y;\n  }\n}\n\nfunction intersects(a, b) {\n  var dr = a.r + b.r - 1e-6, dx = b.x - a.x, dy = b.y - a.y;\n  return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\n\nfunction score(node) {\n  var a = node._,\n      b = node.next._,\n      ab = a.r + b.r,\n      dx = (a.x * b.r + b.x * a.r) / ab,\n      dy = (a.y * b.r + b.y * a.r) / ab;\n  return dx * dx + dy * dy;\n}\n\nfunction Node(circle) {\n  this._ = circle;\n  this.next = null;\n  this.previous = null;\n}\n\nexport function packEnclose(circles) {\n  if (!(n = circles.length)) return 0;\n\n  var a, b, c, n, aa, ca, i, j, k, sj, sk;\n\n  // Place the first circle.\n  a = circles[0], a.x = 0, a.y = 0;\n  if (!(n > 1)) return a.r;\n\n  // Place the second circle.\n  b = circles[1], a.x = -b.r, b.x = a.r, b.y = 0;\n  if (!(n > 2)) return a.r + b.r;\n\n  // Place the third circle.\n  place(b, a, c = circles[2]);\n\n  // Initialize the front-chain using the first three circles a, b and c.\n  a = new Node(a), b = new Node(b), c = new Node(c);\n  a.next = c.previous = b;\n  b.next = a.previous = c;\n  c.next = b.previous = a;\n\n  // Attempt to place each remaining circle…\n  pack: for (i = 3; i < n; ++i) {\n    place(a._, b._, c = circles[i]), c = new Node(c);\n\n    // Find the closest intersecting circle on the front-chain, if any.\n    // “Closeness” is determined by linear distance along the front-chain.\n    // “Ahead” or “behind” is likewise determined by linear distance.\n    j = b.next, k = a.previous, sj = b._.r, sk = a._.r;\n    do {\n      if (sj <= sk) {\n        if (intersects(j._, c._)) {\n          b = j, a.next = b, b.previous = a, --i;\n          continue pack;\n        }\n        sj += j._.r, j = j.next;\n      } else {\n        if (intersects(k._, c._)) {\n          a = k, a.next = b, b.previous = a, --i;\n          continue pack;\n        }\n        sk += k._.r, k = k.previous;\n      }\n    } while (j !== k.next);\n\n    // Success! Insert the new circle c between a and b.\n    c.previous = a, c.next = b, a.next = b.previous = b = c;\n\n    // Compute the new closest circle pair to the centroid.\n    aa = score(a);\n    while ((c = c.next) !== b) {\n      if ((ca = score(c)) < aa) {\n        a = c, aa = ca;\n      }\n    }\n    b = a.next;\n  }\n\n  // Compute the enclosing circle of the front chain.\n  a = [b._], c = b; while ((c = c.next) !== b) a.push(c._); c = enclose(a);\n\n  // Translate the circles to put the enclosing circle around the origin.\n  for (i = 0; i < n; ++i) a = circles[i], a.x -= c.x, a.y -= c.y;\n\n  return c.r;\n}\n\nexport default function(circles) {\n  packEnclose(circles);\n  return circles;\n}\n","import roundNode from \"./treemap/round.js\";\nimport treemapDice from \"./treemap/dice.js\";\n\nexport default function() {\n  var dx = 1,\n      dy = 1,\n      padding = 0,\n      round = false;\n\n  function partition(root) {\n    var n = root.height + 1;\n    root.x0 =\n    root.y0 = padding;\n    root.x1 = dx;\n    root.y1 = dy / n;\n    root.eachBefore(positionNode(dy, n));\n    if (round) root.eachBefore(roundNode);\n    return root;\n  }\n\n  function positionNode(dy, n) {\n    return function(node) {\n      if (node.children) {\n        treemapDice(node, node.x0, dy * (node.depth + 1) / n, node.x1, dy * (node.depth + 2) / n);\n      }\n      var x0 = node.x0,\n          y0 = node.y0,\n          x1 = node.x1 - padding,\n          y1 = node.y1 - padding;\n      if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n      if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n      node.x0 = x0;\n      node.y0 = y0;\n      node.x1 = x1;\n      node.y1 = y1;\n    };\n  }\n\n  partition.round = function(x) {\n    return arguments.length ? (round = !!x, partition) : round;\n  };\n\n  partition.size = function(x) {\n    return arguments.length ? (dx = +x[0], dy = +x[1], partition) : [dx, dy];\n  };\n\n  partition.padding = function(x) {\n    return arguments.length ? (padding = +x, partition) : padding;\n  };\n\n  return partition;\n}\n","import {required} from \"./accessors.js\";\nimport {Node, computeHeight} from \"./hierarchy/index.js\";\n\nvar keyPrefix = \"$\", // Protect against keys like “__proto__”.\n    preroot = {depth: -1},\n    ambiguous = {};\n\nfunction defaultId(d) {\n  return d.id;\n}\n\nfunction defaultParentId(d) {\n  return d.parentId;\n}\n\nexport default function() {\n  var id = defaultId,\n      parentId = defaultParentId;\n\n  function stratify(data) {\n    var d,\n        i,\n        n = data.length,\n        root,\n        parent,\n        node,\n        nodes = new Array(n),\n        nodeId,\n        nodeKey,\n        nodeByKey = {};\n\n    for (i = 0; i < n; ++i) {\n      d = data[i], node = nodes[i] = new Node(d);\n      if ((nodeId = id(d, i, data)) != null && (nodeId += \"\")) {\n        nodeKey = keyPrefix + (node.id = nodeId);\n        nodeByKey[nodeKey] = nodeKey in nodeByKey ? ambiguous : node;\n      }\n    }\n\n    for (i = 0; i < n; ++i) {\n      node = nodes[i], nodeId = parentId(data[i], i, data);\n      if (nodeId == null || !(nodeId += \"\")) {\n        if (root) throw new Error(\"multiple roots\");\n        root = node;\n      } else {\n        parent = nodeByKey[keyPrefix + nodeId];\n        if (!parent) throw new Error(\"missing: \" + nodeId);\n        if (parent === ambiguous) throw new Error(\"ambiguous: \" + nodeId);\n        if (parent.children) parent.children.push(node);\n        else parent.children = [node];\n        node.parent = parent;\n      }\n    }\n\n    if (!root) throw new Error(\"no root\");\n    root.parent = preroot;\n    root.eachBefore(function(node) { node.depth = node.parent.depth + 1; --n; }).eachBefore(computeHeight);\n    root.parent = null;\n    if (n > 0) throw new Error(\"cycle\");\n\n    return root;\n  }\n\n  stratify.id = function(x) {\n    return arguments.length ? (id = required(x), stratify) : id;\n  };\n\n  stratify.parentId = function(x) {\n    return arguments.length ? (parentId = required(x), stratify) : parentId;\n  };\n\n  return stratify;\n}\n","import {Node} from \"./hierarchy/index.js\";\n\nfunction defaultSeparation(a, b) {\n  return a.parent === b.parent ? 1 : 2;\n}\n\n// function radialSeparation(a, b) {\n//   return (a.parent === b.parent ? 1 : 2) / a.depth;\n// }\n\n// This function is used to traverse the left contour of a subtree (or\n// subforest). It returns the successor of v on this contour. This successor is\n// either given by the leftmost child of v or by the thread of v. The function\n// returns null if and only if v is on the highest level of its subtree.\nfunction nextLeft(v) {\n  var children = v.children;\n  return children ? children[0] : v.t;\n}\n\n// This function works analogously to nextLeft.\nfunction nextRight(v) {\n  var children = v.children;\n  return children ? children[children.length - 1] : v.t;\n}\n\n// Shifts the current subtree rooted at w+. This is done by increasing\n// prelim(w+) and mod(w+) by shift.\nfunction moveSubtree(wm, wp, shift) {\n  var change = shift / (wp.i - wm.i);\n  wp.c -= change;\n  wp.s += shift;\n  wm.c += change;\n  wp.z += shift;\n  wp.m += shift;\n}\n\n// All other shifts, applied to the smaller subtrees between w- and w+, are\n// performed by this function. To prepare the shifts, we have to adjust\n// change(w+), shift(w+), and change(w-).\nfunction executeShifts(v) {\n  var shift = 0,\n      change = 0,\n      children = v.children,\n      i = children.length,\n      w;\n  while (--i >= 0) {\n    w = children[i];\n    w.z += shift;\n    w.m += shift;\n    shift += w.s + (change += w.c);\n  }\n}\n\n// If vi-’s ancestor is a sibling of v, returns vi-’s ancestor. Otherwise,\n// returns the specified (default) ancestor.\nfunction nextAncestor(vim, v, ancestor) {\n  return vim.a.parent === v.parent ? vim.a : ancestor;\n}\n\nfunction TreeNode(node, i) {\n  this._ = node;\n  this.parent = null;\n  this.children = null;\n  this.A = null; // default ancestor\n  this.a = this; // ancestor\n  this.z = 0; // prelim\n  this.m = 0; // mod\n  this.c = 0; // change\n  this.s = 0; // shift\n  this.t = null; // thread\n  this.i = i; // number\n}\n\nTreeNode.prototype = Object.create(Node.prototype);\n\nfunction treeRoot(root) {\n  var tree = new TreeNode(root, 0),\n      node,\n      nodes = [tree],\n      child,\n      children,\n      i,\n      n;\n\n  while (node = nodes.pop()) {\n    if (children = node._.children) {\n      node.children = new Array(n = children.length);\n      for (i = n - 1; i >= 0; --i) {\n        nodes.push(child = node.children[i] = new TreeNode(children[i], i));\n        child.parent = node;\n      }\n    }\n  }\n\n  (tree.parent = new TreeNode(null, 0)).children = [tree];\n  return tree;\n}\n\n// Node-link tree diagram using the Reingold-Tilford \"tidy\" algorithm\nexport default function() {\n  var separation = defaultSeparation,\n      dx = 1,\n      dy = 1,\n      nodeSize = null;\n\n  function tree(root) {\n    var t = treeRoot(root);\n\n    // Compute the layout using Buchheim et al.’s algorithm.\n    t.eachAfter(firstWalk), t.parent.m = -t.z;\n    t.eachBefore(secondWalk);\n\n    // If a fixed node size is specified, scale x and y.\n    if (nodeSize) root.eachBefore(sizeNode);\n\n    // If a fixed tree size is specified, scale x and y based on the extent.\n    // Compute the left-most, right-most, and depth-most nodes for extents.\n    else {\n      var left = root,\n          right = root,\n          bottom = root;\n      root.eachBefore(function(node) {\n        if (node.x < left.x) left = node;\n        if (node.x > right.x) right = node;\n        if (node.depth > bottom.depth) bottom = node;\n      });\n      var s = left === right ? 1 : separation(left, right) / 2,\n          tx = s - left.x,\n          kx = dx / (right.x + s + tx),\n          ky = dy / (bottom.depth || 1);\n      root.eachBefore(function(node) {\n        node.x = (node.x + tx) * kx;\n        node.y = node.depth * ky;\n      });\n    }\n\n    return root;\n  }\n\n  // Computes a preliminary x-coordinate for v. Before that, FIRST WALK is\n  // applied recursively to the children of v, as well as the function\n  // APPORTION. After spacing out the children by calling EXECUTE SHIFTS, the\n  // node v is placed to the midpoint of its outermost children.\n  function firstWalk(v) {\n    var children = v.children,\n        siblings = v.parent.children,\n        w = v.i ? siblings[v.i - 1] : null;\n    if (children) {\n      executeShifts(v);\n      var midpoint = (children[0].z + children[children.length - 1].z) / 2;\n      if (w) {\n        v.z = w.z + separation(v._, w._);\n        v.m = v.z - midpoint;\n      } else {\n        v.z = midpoint;\n      }\n    } else if (w) {\n      v.z = w.z + separation(v._, w._);\n    }\n    v.parent.A = apportion(v, w, v.parent.A || siblings[0]);\n  }\n\n  // Computes all real x-coordinates by summing up the modifiers recursively.\n  function secondWalk(v) {\n    v._.x = v.z + v.parent.m;\n    v.m += v.parent.m;\n  }\n\n  // The core of the algorithm. Here, a new subtree is combined with the\n  // previous subtrees. Threads are used to traverse the inside and outside\n  // contours of the left and right subtree up to the highest common level. The\n  // vertices used for the traversals are vi+, vi-, vo-, and vo+, where the\n  // superscript o means outside and i means inside, the subscript - means left\n  // subtree and + means right subtree. For summing up the modifiers along the\n  // contour, we use respective variables si+, si-, so-, and so+. Whenever two\n  // nodes of the inside contours conflict, we compute the left one of the\n  // greatest uncommon ancestors using the function ANCESTOR and call MOVE\n  // SUBTREE to shift the subtree and prepare the shifts of smaller subtrees.\n  // Finally, we add a new thread (if necessary).\n  function apportion(v, w, ancestor) {\n    if (w) {\n      var vip = v,\n          vop = v,\n          vim = w,\n          vom = vip.parent.children[0],\n          sip = vip.m,\n          sop = vop.m,\n          sim = vim.m,\n          som = vom.m,\n          shift;\n      while (vim = nextRight(vim), vip = nextLeft(vip), vim && vip) {\n        vom = nextLeft(vom);\n        vop = nextRight(vop);\n        vop.a = v;\n        shift = vim.z + sim - vip.z - sip + separation(vim._, vip._);\n        if (shift > 0) {\n          moveSubtree(nextAncestor(vim, v, ancestor), v, shift);\n          sip += shift;\n          sop += shift;\n        }\n        sim += vim.m;\n        sip += vip.m;\n        som += vom.m;\n        sop += vop.m;\n      }\n      if (vim && !nextRight(vop)) {\n        vop.t = vim;\n        vop.m += sim - sop;\n      }\n      if (vip && !nextLeft(vom)) {\n        vom.t = vip;\n        vom.m += sip - som;\n        ancestor = v;\n      }\n    }\n    return ancestor;\n  }\n\n  function sizeNode(node) {\n    node.x *= dx;\n    node.y = node.depth * dy;\n  }\n\n  tree.separation = function(x) {\n    return arguments.length ? (separation = x, tree) : separation;\n  };\n\n  tree.size = function(x) {\n    return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], tree) : (nodeSize ? null : [dx, dy]);\n  };\n\n  tree.nodeSize = function(x) {\n    return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], tree) : (nodeSize ? [dx, dy] : null);\n  };\n\n  return tree;\n}\n","export default function(parent, x0, y0, x1, y1) {\n  var nodes = parent.children,\n      i, n = nodes.length,\n      sum, sums = new Array(n + 1);\n\n  for (sums[0] = sum = i = 0; i < n; ++i) {\n    sums[i + 1] = sum += nodes[i].value;\n  }\n\n  partition(0, n, parent.value, x0, y0, x1, y1);\n\n  function partition(i, j, value, x0, y0, x1, y1) {\n    if (i >= j - 1) {\n      var node = nodes[i];\n      node.x0 = x0, node.y0 = y0;\n      node.x1 = x1, node.y1 = y1;\n      return;\n    }\n\n    var valueOffset = sums[i],\n        valueTarget = (value / 2) + valueOffset,\n        k = i + 1,\n        hi = j - 1;\n\n    while (k < hi) {\n      var mid = k + hi >>> 1;\n      if (sums[mid] < valueTarget) k = mid + 1;\n      else hi = mid;\n    }\n\n    if ((valueTarget - sums[k - 1]) < (sums[k] - valueTarget) && i + 1 < k) --k;\n\n    var valueLeft = sums[k] - valueOffset,\n        valueRight = value - valueLeft;\n\n    if ((x1 - x0) > (y1 - y0)) {\n      var xk = (x0 * valueRight + x1 * valueLeft) / value;\n      partition(i, k, valueLeft, x0, y0, xk, y1);\n      partition(k, j, valueRight, xk, y0, x1, y1);\n    } else {\n      var yk = (y0 * valueRight + y1 * valueLeft) / value;\n      partition(i, k, valueLeft, x0, y0, x1, yk);\n      partition(k, j, valueRight, x0, yk, x1, y1);\n    }\n  }\n}\n","export default function(parent, x0, y0, x1, y1) {\n  var nodes = parent.children,\n      node,\n      i = -1,\n      n = nodes.length,\n      k = parent.value && (x1 - x0) / parent.value;\n\n  while (++i < n) {\n    node = nodes[i], node.y0 = y0, node.y1 = y1;\n    node.x0 = x0, node.x1 = x0 += node.value * k;\n  }\n}\n","import roundNode from \"./round.js\";\nimport squarify from \"./squarify.js\";\nimport {required} from \"../accessors.js\";\nimport constant, {constantZero} from \"../constant.js\";\n\nexport default function() {\n  var tile = squarify,\n      round = false,\n      dx = 1,\n      dy = 1,\n      paddingStack = [0],\n      paddingInner = constantZero,\n      paddingTop = constantZero,\n      paddingRight = constantZero,\n      paddingBottom = constantZero,\n      paddingLeft = constantZero;\n\n  function treemap(root) {\n    root.x0 =\n    root.y0 = 0;\n    root.x1 = dx;\n    root.y1 = dy;\n    root.eachBefore(positionNode);\n    paddingStack = [0];\n    if (round) root.eachBefore(roundNode);\n    return root;\n  }\n\n  function positionNode(node) {\n    var p = paddingStack[node.depth],\n        x0 = node.x0 + p,\n        y0 = node.y0 + p,\n        x1 = node.x1 - p,\n        y1 = node.y1 - p;\n    if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n    if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n    node.x0 = x0;\n    node.y0 = y0;\n    node.x1 = x1;\n    node.y1 = y1;\n    if (node.children) {\n      p = paddingStack[node.depth + 1] = paddingInner(node) / 2;\n      x0 += paddingLeft(node) - p;\n      y0 += paddingTop(node) - p;\n      x1 -= paddingRight(node) - p;\n      y1 -= paddingBottom(node) - p;\n      if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n      if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n      tile(node, x0, y0, x1, y1);\n    }\n  }\n\n  treemap.round = function(x) {\n    return arguments.length ? (round = !!x, treemap) : round;\n  };\n\n  treemap.size = function(x) {\n    return arguments.length ? (dx = +x[0], dy = +x[1], treemap) : [dx, dy];\n  };\n\n  treemap.tile = function(x) {\n    return arguments.length ? (tile = required(x), treemap) : tile;\n  };\n\n  treemap.padding = function(x) {\n    return arguments.length ? treemap.paddingInner(x).paddingOuter(x) : treemap.paddingInner();\n  };\n\n  treemap.paddingInner = function(x) {\n    return arguments.length ? (paddingInner = typeof x === \"function\" ? x : constant(+x), treemap) : paddingInner;\n  };\n\n  treemap.paddingOuter = function(x) {\n    return arguments.length ? treemap.paddingTop(x).paddingRight(x).paddingBottom(x).paddingLeft(x) : treemap.paddingTop();\n  };\n\n  treemap.paddingTop = function(x) {\n    return arguments.length ? (paddingTop = typeof x === \"function\" ? x : constant(+x), treemap) : paddingTop;\n  };\n\n  treemap.paddingRight = function(x) {\n    return arguments.length ? (paddingRight = typeof x === \"function\" ? x : constant(+x), treemap) : paddingRight;\n  };\n\n  treemap.paddingBottom = function(x) {\n    return arguments.length ? (paddingBottom = typeof x === \"function\" ? x : constant(+x), treemap) : paddingBottom;\n  };\n\n  treemap.paddingLeft = function(x) {\n    return arguments.length ? (paddingLeft = typeof x === \"function\" ? x : constant(+x), treemap) : paddingLeft;\n  };\n\n  return treemap;\n}\n","import treemapDice from \"./dice.js\";\nimport treemapSlice from \"./slice.js\";\nimport {phi, squarifyRatio} from \"./squarify.js\";\n\nexport default (function custom(ratio) {\n\n  function resquarify(parent, x0, y0, x1, y1) {\n    if ((rows = parent._squarify) && (rows.ratio === ratio)) {\n      var rows,\n          row,\n          nodes,\n          i,\n          j = -1,\n          n,\n          m = rows.length,\n          value = parent.value;\n\n      while (++j < m) {\n        row = rows[j], nodes = row.children;\n        for (i = row.value = 0, n = nodes.length; i < n; ++i) row.value += nodes[i].value;\n        if (row.dice) treemapDice(row, x0, y0, x1, y0 += (y1 - y0) * row.value / value);\n        else treemapSlice(row, x0, y0, x0 += (x1 - x0) * row.value / value, y1);\n        value -= row.value;\n      }\n    } else {\n      parent._squarify = rows = squarifyRatio(ratio, parent, x0, y0, x1, y1);\n      rows.ratio = ratio;\n    }\n  }\n\n  resquarify.ratio = function(x) {\n    return custom((x = +x) > 1 ? x : 1);\n  };\n\n  return resquarify;\n})(phi);\n","export default function(node) {\n  node.x0 = Math.round(node.x0);\n  node.y0 = Math.round(node.y0);\n  node.x1 = Math.round(node.x1);\n  node.y1 = Math.round(node.y1);\n}\n","export default function(parent, x0, y0, x1, y1) {\n  var nodes = parent.children,\n      node,\n      i = -1,\n      n = nodes.length,\n      k = parent.value && (y1 - y0) / parent.value;\n\n  while (++i < n) {\n    node = nodes[i], node.x0 = x0, node.x1 = x1;\n    node.y0 = y0, node.y1 = y0 += node.value * k;\n  }\n}\n","import dice from \"./dice.js\";\nimport slice from \"./slice.js\";\n\nexport default function(parent, x0, y0, x1, y1) {\n  (parent.depth & 1 ? slice : dice)(parent, x0, y0, x1, y1);\n}\n","import treemapDice from \"./dice.js\";\nimport treemapSlice from \"./slice.js\";\n\nexport var phi = (1 + Math.sqrt(5)) / 2;\n\nexport function squarifyRatio(ratio, parent, x0, y0, x1, y1) {\n  var rows = [],\n      nodes = parent.children,\n      row,\n      nodeValue,\n      i0 = 0,\n      i1 = 0,\n      n = nodes.length,\n      dx, dy,\n      value = parent.value,\n      sumValue,\n      minValue,\n      maxValue,\n      newRatio,\n      minRatio,\n      alpha,\n      beta;\n\n  while (i0 < n) {\n    dx = x1 - x0, dy = y1 - y0;\n\n    // Find the next non-empty node.\n    do sumValue = nodes[i1++].value; while (!sumValue && i1 < n);\n    minValue = maxValue = sumValue;\n    alpha = Math.max(dy / dx, dx / dy) / (value * ratio);\n    beta = sumValue * sumValue * alpha;\n    minRatio = Math.max(maxValue / beta, beta / minValue);\n\n    // Keep adding nodes while the aspect ratio maintains or improves.\n    for (; i1 < n; ++i1) {\n      sumValue += nodeValue = nodes[i1].value;\n      if (nodeValue < minValue) minValue = nodeValue;\n      if (nodeValue > maxValue) maxValue = nodeValue;\n      beta = sumValue * sumValue * alpha;\n      newRatio = Math.max(maxValue / beta, beta / minValue);\n      if (newRatio > minRatio) { sumValue -= nodeValue; break; }\n      minRatio = newRatio;\n    }\n\n    // Position and record the row orientation.\n    rows.push(row = {value: sumValue, dice: dx < dy, children: nodes.slice(i0, i1)});\n    if (row.dice) treemapDice(row, x0, y0, x1, value ? y0 += dy * sumValue / value : y1);\n    else treemapSlice(row, x0, y0, value ? x0 += dx * sumValue / value : x1, y1);\n    value -= sumValue, i0 = i1;\n  }\n\n  return rows;\n}\n\nexport default (function custom(ratio) {\n\n  function squarify(parent, x0, y0, x1, y1) {\n    squarifyRatio(ratio, parent, x0, y0, x1, y1);\n  }\n\n  squarify.ratio = function(x) {\n    return custom((x = +x) > 1 ? x : 1);\n  };\n\n  return squarify;\n})(phi);\n","import value from \"./value.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n  return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\n\nexport function genericArray(a, b) {\n  var nb = b ? b.length : 0,\n      na = a ? Math.min(nb, a.length) : 0,\n      x = new Array(na),\n      c = new Array(nb),\n      i;\n\n  for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n  for (; i < nb; ++i) c[i] = b[i];\n\n  return function(t) {\n    for (i = 0; i < na; ++i) c[i] = x[i](t);\n    return c;\n  };\n}\n","export function basis(t1, v0, v1, v2, v3) {\n  var t2 = t1 * t1, t3 = t2 * t1;\n  return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n      + (4 - 6 * t2 + 3 * t3) * v1\n      + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n      + t3 * v3) / 6;\n}\n\nexport default function(values) {\n  var n = values.length - 1;\n  return function(t) {\n    var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n        v1 = values[i],\n        v2 = values[i + 1],\n        v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n        v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n    return basis((t - i / n) * n, v0, v1, v2, v3);\n  };\n}\n","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n  var n = values.length;\n  return function(t) {\n    var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n        v0 = values[(i + n - 1) % n],\n        v1 = values[i % n],\n        v2 = values[(i + 1) % n],\n        v3 = values[(i + 2) % n];\n    return basis((t - i / n) * n, v0, v1, v2, v3);\n  };\n}\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n  return function(t) {\n    return a + t * d;\n  };\n}\n\nfunction exponential(a, b, y) {\n  return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n    return Math.pow(a + t * b, y);\n  };\n}\n\nexport function hue(a, b) {\n  var d = b - a;\n  return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n  return (y = +y) === 1 ? nogamma : function(a, b) {\n    return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n  };\n}\n\nexport default function nogamma(a, b) {\n  var d = b - a;\n  return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","export default function(x) {\n  return function() {\n    return x;\n  };\n}\n","import {cubehelix as colorCubehelix} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction cubehelix(hue) {\n  return (function cubehelixGamma(y) {\n    y = +y;\n\n    function cubehelix(start, end) {\n      var h = hue((start = colorCubehelix(start)).h, (end = colorCubehelix(end)).h),\n          s = color(start.s, end.s),\n          l = color(start.l, end.l),\n          opacity = color(start.opacity, end.opacity);\n      return function(t) {\n        start.h = h(t);\n        start.s = s(t);\n        start.l = l(Math.pow(t, y));\n        start.opacity = opacity(t);\n        return start + \"\";\n      };\n    }\n\n    cubehelix.gamma = cubehelixGamma;\n\n    return cubehelix;\n  })(1);\n}\n\nexport default cubehelix(hue);\nexport var cubehelixLong = cubehelix(color);\n","export default function(a, b) {\n  var d = new Date;\n  return a = +a, b = +b, function(t) {\n    return d.setTime(a * (1 - t) + b * t), d;\n  };\n}\n","export default function(range) {\n  var n = range.length;\n  return function(t) {\n    return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];\n  };\n}\n","import {hcl as colorHcl} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction hcl(hue) {\n  return function(start, end) {\n    var h = hue((start = colorHcl(start)).h, (end = colorHcl(end)).h),\n        c = color(start.c, end.c),\n        l = color(start.l, end.l),\n        opacity = color(start.opacity, end.opacity);\n    return function(t) {\n      start.h = h(t);\n      start.c = c(t);\n      start.l = l(t);\n      start.opacity = opacity(t);\n      return start + \"\";\n    };\n  }\n}\n\nexport default hcl(hue);\nexport var hclLong = hcl(color);\n","import {hsl as colorHsl} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction hsl(hue) {\n  return function(start, end) {\n    var h = hue((start = colorHsl(start)).h, (end = colorHsl(end)).h),\n        s = color(start.s, end.s),\n        l = color(start.l, end.l),\n        opacity = color(start.opacity, end.opacity);\n    return function(t) {\n      start.h = h(t);\n      start.s = s(t);\n      start.l = l(t);\n      start.opacity = opacity(t);\n      return start + \"\";\n    };\n  }\n}\n\nexport default hsl(hue);\nexport var hslLong = hsl(color);\n","import {hue} from \"./color.js\";\n\nexport default function(a, b) {\n  var i = hue(+a, +b);\n  return function(t) {\n    var x = i(t);\n    return x - 360 * Math.floor(x / 360);\n  };\n}\n","export {default as interpolate} from \"./value.js\";\nexport {default as interpolateArray} from \"./array.js\";\nexport {default as interpolateBasis} from \"./basis.js\";\nexport {default as interpolateBasisClosed} from \"./basisClosed.js\";\nexport {default as interpolateDate} from \"./date.js\";\nexport {default as interpolateDiscrete} from \"./discrete.js\";\nexport {default as interpolateHue} from \"./hue.js\";\nexport {default as interpolateNumber} from \"./number.js\";\nexport {default as interpolateNumberArray} from \"./numberArray.js\";\nexport {default as interpolateObject} from \"./object.js\";\nexport {default as interpolateRound} from \"./round.js\";\nexport {default as interpolateString} from \"./string.js\";\nexport {interpolateTransformCss, interpolateTransformSvg} from \"./transform/index.js\";\nexport {default as interpolateZoom} from \"./zoom.js\";\nexport {default as interpolateRgb, rgbBasis as interpolateRgbBasis, rgbBasisClosed as interpolateRgbBasisClosed} from \"./rgb.js\";\nexport {default as interpolateHsl, hslLong as interpolateHslLong} from \"./hsl.js\";\nexport {default as interpolateLab} from \"./lab.js\";\nexport {default as interpolateHcl, hclLong as interpolateHclLong} from \"./hcl.js\";\nexport {default as interpolateCubehelix, cubehelixLong as interpolateCubehelixLong} from \"./cubehelix.js\";\nexport {default as piecewise} from \"./piecewise.js\";\nexport {default as quantize} from \"./quantize.js\";\n","import {lab as colorLab} from \"d3-color\";\nimport color from \"./color.js\";\n\nexport default function lab(start, end) {\n  var l = color((start = colorLab(start)).l, (end = colorLab(end)).l),\n      a = color(start.a, end.a),\n      b = color(start.b, end.b),\n      opacity = color(start.opacity, end.opacity);\n  return function(t) {\n    start.l = l(t);\n    start.a = a(t);\n    start.b = b(t);\n    start.opacity = opacity(t);\n    return start + \"\";\n  };\n}\n","export default function(a, b) {\n  return a = +a, b = +b, function(t) {\n    return a * (1 - t) + b * t;\n  };\n}\n","export default function(a, b) {\n  if (!b) b = [];\n  var n = a ? Math.min(b.length, a.length) : 0,\n      c = b.slice(),\n      i;\n  return function(t) {\n    for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n    return c;\n  };\n}\n\nexport function isNumberArray(x) {\n  return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n","import value from \"./value.js\";\n\nexport default function(a, b) {\n  var i = {},\n      c = {},\n      k;\n\n  if (a === null || typeof a !== \"object\") a = {};\n  if (b === null || typeof b !== \"object\") b = {};\n\n  for (k in b) {\n    if (k in a) {\n      i[k] = value(a[k], b[k]);\n    } else {\n      c[k] = b[k];\n    }\n  }\n\n  return function(t) {\n    for (k in i) c[k] = i[k](t);\n    return c;\n  };\n}\n","export default function piecewise(interpolate, values) {\n  var i = 0, n = values.length - 1, v = values[0], I = new Array(n < 0 ? 0 : n);\n  while (i < n) I[i] = interpolate(v, v = values[++i]);\n  return function(t) {\n    var i = Math.max(0, Math.min(n - 1, Math.floor(t *= n)));\n    return I[i](t - i);\n  };\n}\n","export default function(interpolator, n) {\n  var samples = new Array(n);\n  for (var i = 0; i < n; ++i) samples[i] = interpolator(i / (n - 1));\n  return samples;\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n  var color = gamma(y);\n\n  function rgb(start, end) {\n    var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n        g = color(start.g, end.g),\n        b = color(start.b, end.b),\n        opacity = nogamma(start.opacity, end.opacity);\n    return function(t) {\n      start.r = r(t);\n      start.g = g(t);\n      start.b = b(t);\n      start.opacity = opacity(t);\n      return start + \"\";\n    };\n  }\n\n  rgb.gamma = rgbGamma;\n\n  return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n  return function(colors) {\n    var n = colors.length,\n        r = new Array(n),\n        g = new Array(n),\n        b = new Array(n),\n        i, color;\n    for (i = 0; i < n; ++i) {\n      color = colorRgb(colors[i]);\n      r[i] = color.r || 0;\n      g[i] = color.g || 0;\n      b[i] = color.b || 0;\n    }\n    r = spline(r);\n    g = spline(g);\n    b = spline(b);\n    color.opacity = 1;\n    return function(t) {\n      color.r = r(t);\n      color.g = g(t);\n      color.b = b(t);\n      return color + \"\";\n    };\n  };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","export default function(a, b) {\n  return a = +a, b = +b, function(t) {\n    return Math.round(a * (1 - t) + b * t);\n  };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n    reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n  return function() {\n    return b;\n  };\n}\n\nfunction one(b) {\n  return function(t) {\n    return b(t) + \"\";\n  };\n}\n\nexport default function(a, b) {\n  var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n      am, // current match in a\n      bm, // current match in b\n      bs, // string preceding current number in b, if any\n      i = -1, // index in s\n      s = [], // string constants and placeholders\n      q = []; // number interpolators\n\n  // Coerce inputs to strings.\n  a = a + \"\", b = b + \"\";\n\n  // Interpolate pairs of numbers in a & b.\n  while ((am = reA.exec(a))\n      && (bm = reB.exec(b))) {\n    if ((bs = bm.index) > bi) { // a string precedes the next number in b\n      bs = b.slice(bi, bs);\n      if (s[i]) s[i] += bs; // coalesce with previous string\n      else s[++i] = bs;\n    }\n    if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n      if (s[i]) s[i] += bm; // coalesce with previous string\n      else s[++i] = bm;\n    } else { // interpolate non-matching numbers\n      s[++i] = null;\n      q.push({i: i, x: number(am, bm)});\n    }\n    bi = reB.lastIndex;\n  }\n\n  // Add remains of b.\n  if (bi < b.length) {\n    bs = b.slice(bi);\n    if (s[i]) s[i] += bs; // coalesce with previous string\n    else s[++i] = bs;\n  }\n\n  // Special optimization for only a single match.\n  // Otherwise, interpolate each of the numbers and rejoin the string.\n  return s.length < 2 ? (q[0]\n      ? one(q[0].x)\n      : zero(b))\n      : (b = q.length, function(t) {\n          for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n          return s.join(\"\");\n        });\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n  translateX: 0,\n  translateY: 0,\n  rotate: 0,\n  skewX: 0,\n  scaleX: 1,\n  scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n  var scaleX, scaleY, skewX;\n  if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n  if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n  if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n  if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n  return {\n    translateX: e,\n    translateY: f,\n    rotate: Math.atan2(b, a) * degrees,\n    skewX: Math.atan(skewX) * degrees,\n    scaleX: scaleX,\n    scaleY: scaleY\n  };\n}\n","import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n  function pop(s) {\n    return s.length ? s.pop() + \" \" : \"\";\n  }\n\n  function translate(xa, ya, xb, yb, s, q) {\n    if (xa !== xb || ya !== yb) {\n      var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n      q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n    } else if (xb || yb) {\n      s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n    }\n  }\n\n  function rotate(a, b, s, q) {\n    if (a !== b) {\n      if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n      q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n    } else if (b) {\n      s.push(pop(s) + \"rotate(\" + b + degParen);\n    }\n  }\n\n  function skewX(a, b, s, q) {\n    if (a !== b) {\n      q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n    } else if (b) {\n      s.push(pop(s) + \"skewX(\" + b + degParen);\n    }\n  }\n\n  function scale(xa, ya, xb, yb, s, q) {\n    if (xa !== xb || ya !== yb) {\n      var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n      q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n    } else if (xb !== 1 || yb !== 1) {\n      s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n    }\n  }\n\n  return function(a, b) {\n    var s = [], // string constants and placeholders\n        q = []; // number interpolators\n    a = parse(a), b = parse(b);\n    translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n    rotate(a.rotate, b.rotate, s, q);\n    skewX(a.skewX, b.skewX, s, q);\n    scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n    a = b = null; // gc\n    return function(t) {\n      var i = -1, n = q.length, o;\n      while (++i < n) s[(o = q[i]).i] = o.x(t);\n      return s.join(\"\");\n    };\n  };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","import decompose, {identity} from \"./decompose.js\";\n\nvar cssNode,\n    cssRoot,\n    cssView,\n    svgNode;\n\nexport function parseCss(value) {\n  if (value === \"none\") return identity;\n  if (!cssNode) cssNode = document.createElement(\"DIV\"), cssRoot = document.documentElement, cssView = document.defaultView;\n  cssNode.style.transform = value;\n  value = cssView.getComputedStyle(cssRoot.appendChild(cssNode), null).getPropertyValue(\"transform\");\n  cssRoot.removeChild(cssNode);\n  value = value.slice(7, -1).split(\",\");\n  return decompose(+value[0], +value[1], +value[2], +value[3], +value[4], +value[5]);\n}\n\nexport function parseSvg(value) {\n  if (value == null) return identity;\n  if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n  svgNode.setAttribute(\"transform\", value);\n  if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n  value = value.matrix;\n  return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","import {color} from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport {genericArray} from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n  var t = typeof b, c;\n  return b == null || t === \"boolean\" ? constant(b)\n      : (t === \"number\" ? number\n      : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n      : b instanceof color ? rgb\n      : b instanceof Date ? date\n      : isNumberArray(b) ? numberArray\n      : Array.isArray(b) ? genericArray\n      : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n      : number)(a, b);\n}\n","var rho = Math.SQRT2,\n    rho2 = 2,\n    rho4 = 4,\n    epsilon2 = 1e-12;\n\nfunction cosh(x) {\n  return ((x = Math.exp(x)) + 1 / x) / 2;\n}\n\nfunction sinh(x) {\n  return ((x = Math.exp(x)) - 1 / x) / 2;\n}\n\nfunction tanh(x) {\n  return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\n\n// p0 = [ux0, uy0, w0]\n// p1 = [ux1, uy1, w1]\nexport default function(p0, p1) {\n  var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n      ux1 = p1[0], uy1 = p1[1], w1 = p1[2],\n      dx = ux1 - ux0,\n      dy = uy1 - uy0,\n      d2 = dx * dx + dy * dy,\n      i,\n      S;\n\n  // Special case for u0 ≅ u1.\n  if (d2 < epsilon2) {\n    S = Math.log(w1 / w0) / rho;\n    i = function(t) {\n      return [\n        ux0 + t * dx,\n        uy0 + t * dy,\n        w0 * Math.exp(rho * t * S)\n      ];\n    }\n  }\n\n  // General case.\n  else {\n    var d1 = Math.sqrt(d2),\n        b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n        b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n        r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n        r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n    S = (r1 - r0) / rho;\n    i = function(t) {\n      var s = t * S,\n          coshr0 = cosh(r0),\n          u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n      return [\n        ux0 + u * dx,\n        uy0 + u * dy,\n        w0 * coshr0 / cosh(rho * s + r0)\n      ];\n    }\n  }\n\n  i.duration = S * 1000;\n\n  return i;\n}\n","export {default as path} from \"./path.js\";\n","var pi = Math.PI,\n    tau = 2 * pi,\n    epsilon = 1e-6,\n    tauEpsilon = tau - epsilon;\n\nfunction Path() {\n  this._x0 = this._y0 = // start of current subpath\n  this._x1 = this._y1 = null; // end of current subpath\n  this._ = \"\";\n}\n\nfunction path() {\n  return new Path;\n}\n\nPath.prototype = path.prototype = {\n  constructor: Path,\n  moveTo: function(x, y) {\n    this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y);\n  },\n  closePath: function() {\n    if (this._x1 !== null) {\n      this._x1 = this._x0, this._y1 = this._y0;\n      this._ += \"Z\";\n    }\n  },\n  lineTo: function(x, y) {\n    this._ += \"L\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n  },\n  quadraticCurveTo: function(x1, y1, x, y) {\n    this._ += \"Q\" + (+x1) + \",\" + (+y1) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n  },\n  bezierCurveTo: function(x1, y1, x2, y2, x, y) {\n    this._ += \"C\" + (+x1) + \",\" + (+y1) + \",\" + (+x2) + \",\" + (+y2) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n  },\n  arcTo: function(x1, y1, x2, y2, r) {\n    x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n    var x0 = this._x1,\n        y0 = this._y1,\n        x21 = x2 - x1,\n        y21 = y2 - y1,\n        x01 = x0 - x1,\n        y01 = y0 - y1,\n        l01_2 = x01 * x01 + y01 * y01;\n\n    // Is the radius negative? Error.\n    if (r < 0) throw new Error(\"negative radius: \" + r);\n\n    // Is this path empty? Move to (x1,y1).\n    if (this._x1 === null) {\n      this._ += \"M\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n    }\n\n    // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n    else if (!(l01_2 > epsilon));\n\n    // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n    // Equivalently, is (x1,y1) coincident with (x2,y2)?\n    // Or, is the radius zero? Line to (x1,y1).\n    else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n      this._ += \"L\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n    }\n\n    // Otherwise, draw an arc!\n    else {\n      var x20 = x2 - x0,\n          y20 = y2 - y0,\n          l21_2 = x21 * x21 + y21 * y21,\n          l20_2 = x20 * x20 + y20 * y20,\n          l21 = Math.sqrt(l21_2),\n          l01 = Math.sqrt(l01_2),\n          l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n          t01 = l / l01,\n          t21 = l / l21;\n\n      // If the start tangent is not coincident with (x0,y0), line to.\n      if (Math.abs(t01 - 1) > epsilon) {\n        this._ += \"L\" + (x1 + t01 * x01) + \",\" + (y1 + t01 * y01);\n      }\n\n      this._ += \"A\" + r + \",\" + r + \",0,0,\" + (+(y01 * x20 > x01 * y20)) + \",\" + (this._x1 = x1 + t21 * x21) + \",\" + (this._y1 = y1 + t21 * y21);\n    }\n  },\n  arc: function(x, y, r, a0, a1, ccw) {\n    x = +x, y = +y, r = +r, ccw = !!ccw;\n    var dx = r * Math.cos(a0),\n        dy = r * Math.sin(a0),\n        x0 = x + dx,\n        y0 = y + dy,\n        cw = 1 ^ ccw,\n        da = ccw ? a0 - a1 : a1 - a0;\n\n    // Is the radius negative? Error.\n    if (r < 0) throw new Error(\"negative radius: \" + r);\n\n    // Is this path empty? Move to (x0,y0).\n    if (this._x1 === null) {\n      this._ += \"M\" + x0 + \",\" + y0;\n    }\n\n    // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n    else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n      this._ += \"L\" + x0 + \",\" + y0;\n    }\n\n    // Is this arc empty? We’re done.\n    if (!r) return;\n\n    // Does the angle go the wrong way? Flip the direction.\n    if (da < 0) da = da % tau + tau;\n\n    // Is this a complete circle? Draw two arcs to complete the circle.\n    if (da > tauEpsilon) {\n      this._ += \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (x - dx) + \",\" + (y - dy) + \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (this._x1 = x0) + \",\" + (this._y1 = y0);\n    }\n\n    // Is this arc non-empty? Draw an arc!\n    else if (da > epsilon) {\n      this._ += \"A\" + r + \",\" + r + \",0,\" + (+(da >= pi)) + \",\" + cw + \",\" + (this._x1 = x + r * Math.cos(a1)) + \",\" + (this._y1 = y + r * Math.sin(a1));\n    }\n  },\n  rect: function(x, y, w, h) {\n    this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y) + \"h\" + (+w) + \"v\" + (+h) + \"h\" + (-w) + \"Z\";\n  },\n  toString: function() {\n    return this._;\n  }\n};\n\nexport default path;\n","import {range as sequence} from \"d3-array\";\nimport {initRange} from \"./init.js\";\nimport ordinal from \"./ordinal.js\";\n\nexport default function band() {\n  var scale = ordinal().unknown(undefined),\n      domain = scale.domain,\n      ordinalRange = scale.range,\n      r0 = 0,\n      r1 = 1,\n      step,\n      bandwidth,\n      round = false,\n      paddingInner = 0,\n      paddingOuter = 0,\n      align = 0.5;\n\n  delete scale.unknown;\n\n  function rescale() {\n    var n = domain().length,\n        reverse = r1 < r0,\n        start = reverse ? r1 : r0,\n        stop = reverse ? r0 : r1;\n    step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2);\n    if (round) step = Math.floor(step);\n    start += (stop - start - step * (n - paddingInner)) * align;\n    bandwidth = step * (1 - paddingInner);\n    if (round) start = Math.round(start), bandwidth = Math.round(bandwidth);\n    var values = sequence(n).map(function(i) { return start + step * i; });\n    return ordinalRange(reverse ? values.reverse() : values);\n  }\n\n  scale.domain = function(_) {\n    return arguments.length ? (domain(_), rescale()) : domain();\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? ([r0, r1] = _, r0 = +r0, r1 = +r1, rescale()) : [r0, r1];\n  };\n\n  scale.rangeRound = function(_) {\n    return [r0, r1] = _, r0 = +r0, r1 = +r1, round = true, rescale();\n  };\n\n  scale.bandwidth = function() {\n    return bandwidth;\n  };\n\n  scale.step = function() {\n    return step;\n  };\n\n  scale.round = function(_) {\n    return arguments.length ? (round = !!_, rescale()) : round;\n  };\n\n  scale.padding = function(_) {\n    return arguments.length ? (paddingInner = Math.min(1, paddingOuter = +_), rescale()) : paddingInner;\n  };\n\n  scale.paddingInner = function(_) {\n    return arguments.length ? (paddingInner = Math.min(1, _), rescale()) : paddingInner;\n  };\n\n  scale.paddingOuter = function(_) {\n    return arguments.length ? (paddingOuter = +_, rescale()) : paddingOuter;\n  };\n\n  scale.align = function(_) {\n    return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align;\n  };\n\n  scale.copy = function() {\n    return band(domain(), [r0, r1])\n        .round(round)\n        .paddingInner(paddingInner)\n        .paddingOuter(paddingOuter)\n        .align(align);\n  };\n\n  return initRange.apply(rescale(), arguments);\n}\n\nfunction pointish(scale) {\n  var copy = scale.copy;\n\n  scale.padding = scale.paddingOuter;\n  delete scale.paddingInner;\n  delete scale.paddingOuter;\n\n  scale.copy = function() {\n    return pointish(copy());\n  };\n\n  return scale;\n}\n\nexport function point() {\n  return pointish(band.apply(null, arguments).paddingInner(1));\n}\n","export default function(x) {\n  return function() {\n    return x;\n  };\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport constant from \"./constant.js\";\nimport number from \"./number.js\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n  return x;\n}\n\nfunction normalize(a, b) {\n  return (b -= (a = +a))\n      ? function(x) { return (x - a) / b; }\n      : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(a, b) {\n  var t;\n  if (a > b) t = a, a = b, b = t;\n  return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n  var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n  if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n  else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n  return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n  var j = Math.min(domain.length, range.length) - 1,\n      d = new Array(j),\n      r = new Array(j),\n      i = -1;\n\n  // Reverse descending domains.\n  if (domain[j] < domain[0]) {\n    domain = domain.slice().reverse();\n    range = range.slice().reverse();\n  }\n\n  while (++i < j) {\n    d[i] = normalize(domain[i], domain[i + 1]);\n    r[i] = interpolate(range[i], range[i + 1]);\n  }\n\n  return function(x) {\n    var i = bisect(domain, x, 1, j) - 1;\n    return r[i](d[i](x));\n  };\n}\n\nexport function copy(source, target) {\n  return target\n      .domain(source.domain())\n      .range(source.range())\n      .interpolate(source.interpolate())\n      .clamp(source.clamp())\n      .unknown(source.unknown());\n}\n\nexport function transformer() {\n  var domain = unit,\n      range = unit,\n      interpolate = interpolateValue,\n      transform,\n      untransform,\n      unknown,\n      clamp = identity,\n      piecewise,\n      output,\n      input;\n\n  function rescale() {\n    var n = Math.min(domain.length, range.length);\n    if (clamp !== identity) clamp = clamper(domain[0], domain[n - 1]);\n    piecewise = n > 2 ? polymap : bimap;\n    output = input = null;\n    return scale;\n  }\n\n  function scale(x) {\n    return isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n  }\n\n  scale.invert = function(y) {\n    return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n  };\n\n  scale.domain = function(_) {\n    return arguments.length ? (domain = Array.from(_, number), rescale()) : domain.slice();\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n  };\n\n  scale.rangeRound = function(_) {\n    return range = Array.from(_), interpolate = interpolateRound, rescale();\n  };\n\n  scale.clamp = function(_) {\n    return arguments.length ? (clamp = _ ? true : identity, rescale()) : clamp !== identity;\n  };\n\n  scale.interpolate = function(_) {\n    return arguments.length ? (interpolate = _, rescale()) : interpolate;\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  return function(t, u) {\n    transform = t, untransform = u;\n    return rescale();\n  };\n}\n\nexport default function continuous() {\n  return transformer()(identity, identity);\n}\n","import {interpolate, interpolateRound, piecewise} from \"d3-interpolate\";\nimport {identity} from \"./continuous.js\";\nimport {initInterpolator} from \"./init.js\";\nimport {linearish} from \"./linear.js\";\nimport {loggish} from \"./log.js\";\nimport {copy} from \"./sequential.js\";\nimport {symlogish} from \"./symlog.js\";\nimport {powish} from \"./pow.js\";\n\nfunction transformer() {\n  var x0 = 0,\n      x1 = 0.5,\n      x2 = 1,\n      s = 1,\n      t0,\n      t1,\n      t2,\n      k10,\n      k21,\n      interpolator = identity,\n      transform,\n      clamp = false,\n      unknown;\n\n  function scale(x) {\n    return isNaN(x = +x) ? unknown : (x = 0.5 + ((x = +transform(x)) - t1) * (s * x < s * t1 ? k10 : k21), interpolator(clamp ? Math.max(0, Math.min(1, x)) : x));\n  }\n\n  scale.domain = function(_) {\n    return arguments.length ? ([x0, x1, x2] = _, t0 = transform(x0 = +x0), t1 = transform(x1 = +x1), t2 = transform(x2 = +x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), s = t1 < t0 ? -1 : 1, scale) : [x0, x1, x2];\n  };\n\n  scale.clamp = function(_) {\n    return arguments.length ? (clamp = !!_, scale) : clamp;\n  };\n\n  scale.interpolator = function(_) {\n    return arguments.length ? (interpolator = _, scale) : interpolator;\n  };\n\n  function range(interpolate) {\n    return function(_) {\n      var r0, r1, r2;\n      return arguments.length ? ([r0, r1, r2] = _, interpolator = piecewise(interpolate, [r0, r1, r2]), scale) : [interpolator(0), interpolator(0.5), interpolator(1)];\n    };\n  }\n\n  scale.range = range(interpolate);\n\n  scale.rangeRound = range(interpolateRound);\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  return function(t) {\n    transform = t, t0 = t(x0), t1 = t(x1), t2 = t(x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), s = t1 < t0 ? -1 : 1;\n    return scale;\n  };\n}\n\nexport default function diverging() {\n  var scale = linearish(transformer()(identity));\n\n  scale.copy = function() {\n    return copy(scale, diverging());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingLog() {\n  var scale = loggish(transformer()).domain([0.1, 1, 10]);\n\n  scale.copy = function() {\n    return copy(scale, divergingLog()).base(scale.base());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSymlog() {\n  var scale = symlogish(transformer());\n\n  scale.copy = function() {\n    return copy(scale, divergingSymlog()).constant(scale.constant());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingPow() {\n  var scale = powish(transformer());\n\n  scale.copy = function() {\n    return copy(scale, divergingPow()).exponent(scale.exponent());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSqrt() {\n  return divergingPow.apply(null, arguments).exponent(0.5);\n}\n","import {linearish} from \"./linear.js\";\nimport number from \"./number.js\";\n\nexport default function identity(domain) {\n  var unknown;\n\n  function scale(x) {\n    return isNaN(x = +x) ? unknown : x;\n  }\n\n  scale.invert = scale;\n\n  scale.domain = scale.range = function(_) {\n    return arguments.length ? (domain = Array.from(_, number), scale) : domain.slice();\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  scale.copy = function() {\n    return identity(domain).unknown(unknown);\n  };\n\n  domain = arguments.length ? Array.from(domain, number) : [0, 1];\n\n  return linearish(scale);\n}\n","export {\n  default as scaleBand,\n  point as scalePoint\n} from \"./band.js\";\n\nexport {\n  default as scaleIdentity\n} from \"./identity.js\";\n\nexport {\n  default as scaleLinear\n} from \"./linear.js\";\n\nexport {\n  default as scaleLog\n} from \"./log.js\";\n\nexport {\n  default as scaleSymlog\n} from \"./symlog.js\";\n\nexport {\n  default as scaleOrdinal,\n  implicit as scaleImplicit\n} from \"./ordinal.js\";\n\nexport {\n  default as scalePow,\n  sqrt as scaleSqrt\n} from \"./pow.js\";\n\nexport {\n  default as scaleRadial\n} from \"./radial.js\";\n\nexport {\n  default as scaleQuantile\n} from \"./quantile.js\";\n\nexport {\n  default as scaleQuantize\n} from \"./quantize.js\";\n\nexport {\n  default as scaleThreshold\n} from \"./threshold.js\";\n\nexport {\n  default as scaleTime\n} from \"./time.js\";\n\nexport {\n  default as scaleUtc\n} from \"./utcTime.js\";\n\nexport {\n  default as scaleSequential,\n  sequentialLog as scaleSequentialLog,\n  sequentialPow as scaleSequentialPow,\n  sequentialSqrt as scaleSequentialSqrt,\n  sequentialSymlog as scaleSequentialSymlog\n} from \"./sequential.js\";\n\nexport {\n  default as scaleSequentialQuantile\n} from \"./sequentialQuantile.js\";\n\nexport {\n  default as scaleDiverging,\n  divergingLog as scaleDivergingLog,\n  divergingPow as scaleDivergingPow,\n  divergingSqrt as scaleDivergingSqrt,\n  divergingSymlog as scaleDivergingSymlog\n} from \"./diverging.js\";\n\nexport {\n  default as tickFormat\n} from \"./tickFormat.js\";\n","export function initRange(domain, range) {\n  switch (arguments.length) {\n    case 0: break;\n    case 1: this.range(domain); break;\n    default: this.range(range).domain(domain); break;\n  }\n  return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n  switch (arguments.length) {\n    case 0: break;\n    case 1: {\n      if (typeof domain === \"function\") this.interpolator(domain);\n      else this.range(domain);\n      break;\n    }\n    default: {\n      this.domain(domain);\n      if (typeof interpolator === \"function\") this.interpolator(interpolator);\n      else this.range(interpolator);\n      break;\n    }\n  }\n  return this;\n}\n","import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport tickFormat from \"./tickFormat.js\";\n\nexport function linearish(scale) {\n  var domain = scale.domain;\n\n  scale.ticks = function(count) {\n    var d = domain();\n    return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n  };\n\n  scale.tickFormat = function(count, specifier) {\n    var d = domain();\n    return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n  };\n\n  scale.nice = function(count) {\n    if (count == null) count = 10;\n\n    var d = domain(),\n        i0 = 0,\n        i1 = d.length - 1,\n        start = d[i0],\n        stop = d[i1],\n        step;\n\n    if (stop < start) {\n      step = start, start = stop, stop = step;\n      step = i0, i0 = i1, i1 = step;\n    }\n\n    step = tickIncrement(start, stop, count);\n\n    if (step > 0) {\n      start = Math.floor(start / step) * step;\n      stop = Math.ceil(stop / step) * step;\n      step = tickIncrement(start, stop, count);\n    } else if (step < 0) {\n      start = Math.ceil(start * step) / step;\n      stop = Math.floor(stop * step) / step;\n      step = tickIncrement(start, stop, count);\n    }\n\n    if (step > 0) {\n      d[i0] = Math.floor(start / step) * step;\n      d[i1] = Math.ceil(stop / step) * step;\n      domain(d);\n    } else if (step < 0) {\n      d[i0] = Math.ceil(start * step) / step;\n      d[i1] = Math.floor(stop * step) / step;\n      domain(d);\n    }\n\n    return scale;\n  };\n\n  return scale;\n}\n\nexport default function linear() {\n  var scale = continuous();\n\n  scale.copy = function() {\n    return copy(scale, linear());\n  };\n\n  initRange.apply(scale, arguments);\n\n  return linearish(scale);\n}\n","import {ticks} from \"d3-array\";\nimport {format} from \"d3-format\";\nimport nice from \"./nice.js\";\nimport {copy, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformLog(x) {\n  return Math.log(x);\n}\n\nfunction transformExp(x) {\n  return Math.exp(x);\n}\n\nfunction transformLogn(x) {\n  return -Math.log(-x);\n}\n\nfunction transformExpn(x) {\n  return -Math.exp(-x);\n}\n\nfunction pow10(x) {\n  return isFinite(x) ? +(\"1e\" + x) : x < 0 ? 0 : x;\n}\n\nfunction powp(base) {\n  return base === 10 ? pow10\n      : base === Math.E ? Math.exp\n      : function(x) { return Math.pow(base, x); };\n}\n\nfunction logp(base) {\n  return base === Math.E ? Math.log\n      : base === 10 && Math.log10\n      || base === 2 && Math.log2\n      || (base = Math.log(base), function(x) { return Math.log(x) / base; });\n}\n\nfunction reflect(f) {\n  return function(x) {\n    return -f(-x);\n  };\n}\n\nexport function loggish(transform) {\n  var scale = transform(transformLog, transformExp),\n      domain = scale.domain,\n      base = 10,\n      logs,\n      pows;\n\n  function rescale() {\n    logs = logp(base), pows = powp(base);\n    if (domain()[0] < 0) {\n      logs = reflect(logs), pows = reflect(pows);\n      transform(transformLogn, transformExpn);\n    } else {\n      transform(transformLog, transformExp);\n    }\n    return scale;\n  }\n\n  scale.base = function(_) {\n    return arguments.length ? (base = +_, rescale()) : base;\n  };\n\n  scale.domain = function(_) {\n    return arguments.length ? (domain(_), rescale()) : domain();\n  };\n\n  scale.ticks = function(count) {\n    var d = domain(),\n        u = d[0],\n        v = d[d.length - 1],\n        r;\n\n    if (r = v < u) i = u, u = v, v = i;\n\n    var i = logs(u),\n        j = logs(v),\n        p,\n        k,\n        t,\n        n = count == null ? 10 : +count,\n        z = [];\n\n    if (!(base % 1) && j - i < n) {\n      i = Math.floor(i), j = Math.ceil(j);\n      if (u > 0) for (; i <= j; ++i) {\n        for (k = 1, p = pows(i); k < base; ++k) {\n          t = p * k;\n          if (t < u) continue;\n          if (t > v) break;\n          z.push(t);\n        }\n      } else for (; i <= j; ++i) {\n        for (k = base - 1, p = pows(i); k >= 1; --k) {\n          t = p * k;\n          if (t < u) continue;\n          if (t > v) break;\n          z.push(t);\n        }\n      }\n      if (z.length * 2 < n) z = ticks(u, v, n);\n    } else {\n      z = ticks(i, j, Math.min(j - i, n)).map(pows);\n    }\n\n    return r ? z.reverse() : z;\n  };\n\n  scale.tickFormat = function(count, specifier) {\n    if (specifier == null) specifier = base === 10 ? \".0e\" : \",\";\n    if (typeof specifier !== \"function\") specifier = format(specifier);\n    if (count === Infinity) return specifier;\n    if (count == null) count = 10;\n    var k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate?\n    return function(d) {\n      var i = d / pows(Math.round(logs(d)));\n      if (i * base < base - 0.5) i *= base;\n      return i <= k ? specifier(d) : \"\";\n    };\n  };\n\n  scale.nice = function() {\n    return domain(nice(domain(), {\n      floor: function(x) { return pows(Math.floor(logs(x))); },\n      ceil: function(x) { return pows(Math.ceil(logs(x))); }\n    }));\n  };\n\n  return scale;\n}\n\nexport default function log() {\n  var scale = loggish(transformer()).domain([1, 10]);\n\n  scale.copy = function() {\n    return copy(scale, log()).base(scale.base());\n  };\n\n  initRange.apply(scale, arguments);\n\n  return scale;\n}\n","export default function(domain, interval) {\n  domain = domain.slice();\n\n  var i0 = 0,\n      i1 = domain.length - 1,\n      x0 = domain[i0],\n      x1 = domain[i1],\n      t;\n\n  if (x1 < x0) {\n    t = i0, i0 = i1, i1 = t;\n    t = x0, x0 = x1, x1 = t;\n  }\n\n  domain[i0] = interval.floor(x0);\n  domain[i1] = interval.ceil(x1);\n  return domain;\n}\n","export default function(x) {\n  return +x;\n}\n","import {initRange} from \"./init.js\";\n\nexport const implicit = Symbol(\"implicit\");\n\nexport default function ordinal() {\n  var index = new Map(),\n      domain = [],\n      range = [],\n      unknown = implicit;\n\n  function scale(d) {\n    var key = d + \"\", i = index.get(key);\n    if (!i) {\n      if (unknown !== implicit) return unknown;\n      index.set(key, i = domain.push(d));\n    }\n    return range[(i - 1) % range.length];\n  }\n\n  scale.domain = function(_) {\n    if (!arguments.length) return domain.slice();\n    domain = [], index = new Map();\n    for (const value of _) {\n      const key = value + \"\";\n      if (index.has(key)) continue;\n      index.set(key, domain.push(value));\n    }\n    return scale;\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (range = Array.from(_), scale) : range.slice();\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  scale.copy = function() {\n    return ordinal(domain, range).unknown(unknown);\n  };\n\n  initRange.apply(scale, arguments);\n\n  return scale;\n}\n","import {linearish} from \"./linear.js\";\nimport {copy, identity, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformPow(exponent) {\n  return function(x) {\n    return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n  };\n}\n\nfunction transformSqrt(x) {\n  return x < 0 ? -Math.sqrt(-x) : Math.sqrt(x);\n}\n\nfunction transformSquare(x) {\n  return x < 0 ? -x * x : x * x;\n}\n\nexport function powish(transform) {\n  var scale = transform(identity, identity),\n      exponent = 1;\n\n  function rescale() {\n    return exponent === 1 ? transform(identity, identity)\n        : exponent === 0.5 ? transform(transformSqrt, transformSquare)\n        : transform(transformPow(exponent), transformPow(1 / exponent));\n  }\n\n  scale.exponent = function(_) {\n    return arguments.length ? (exponent = +_, rescale()) : exponent;\n  };\n\n  return linearish(scale);\n}\n\nexport default function pow() {\n  var scale = powish(transformer());\n\n  scale.copy = function() {\n    return copy(scale, pow()).exponent(scale.exponent());\n  };\n\n  initRange.apply(scale, arguments);\n\n  return scale;\n}\n\nexport function sqrt() {\n  return pow.apply(null, arguments).exponent(0.5);\n}\n","import {ascending, bisect, quantile as threshold} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport default function quantile() {\n  var domain = [],\n      range = [],\n      thresholds = [],\n      unknown;\n\n  function rescale() {\n    var i = 0, n = Math.max(1, range.length);\n    thresholds = new Array(n - 1);\n    while (++i < n) thresholds[i - 1] = threshold(domain, i / n);\n    return scale;\n  }\n\n  function scale(x) {\n    return isNaN(x = +x) ? unknown : range[bisect(thresholds, x)];\n  }\n\n  scale.invertExtent = function(y) {\n    var i = range.indexOf(y);\n    return i < 0 ? [NaN, NaN] : [\n      i > 0 ? thresholds[i - 1] : domain[0],\n      i < thresholds.length ? thresholds[i] : domain[domain.length - 1]\n    ];\n  };\n\n  scale.domain = function(_) {\n    if (!arguments.length) return domain.slice();\n    domain = [];\n    for (let d of _) if (d != null && !isNaN(d = +d)) domain.push(d);\n    domain.sort(ascending);\n    return rescale();\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  scale.quantiles = function() {\n    return thresholds.slice();\n  };\n\n  scale.copy = function() {\n    return quantile()\n        .domain(domain)\n        .range(range)\n        .unknown(unknown);\n  };\n\n  return initRange.apply(scale, arguments);\n}\n","import {bisect} from \"d3-array\";\nimport {linearish} from \"./linear.js\";\nimport {initRange} from \"./init.js\";\n\nexport default function quantize() {\n  var x0 = 0,\n      x1 = 1,\n      n = 1,\n      domain = [0.5],\n      range = [0, 1],\n      unknown;\n\n  function scale(x) {\n    return x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n  }\n\n  function rescale() {\n    var i = -1;\n    domain = new Array(n);\n    while (++i < n) domain[i] = ((i + 1) * x1 - (i - n) * x0) / (n + 1);\n    return scale;\n  }\n\n  scale.domain = function(_) {\n    return arguments.length ? ([x0, x1] = _, x0 = +x0, x1 = +x1, rescale()) : [x0, x1];\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (n = (range = Array.from(_)).length - 1, rescale()) : range.slice();\n  };\n\n  scale.invertExtent = function(y) {\n    var i = range.indexOf(y);\n    return i < 0 ? [NaN, NaN]\n        : i < 1 ? [x0, domain[0]]\n        : i >= n ? [domain[n - 1], x1]\n        : [domain[i - 1], domain[i]];\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : scale;\n  };\n\n  scale.thresholds = function() {\n    return domain.slice();\n  };\n\n  scale.copy = function() {\n    return quantize()\n        .domain([x0, x1])\n        .range(range)\n        .unknown(unknown);\n  };\n\n  return initRange.apply(linearish(scale), arguments);\n}\n","import continuous from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport {linearish} from \"./linear.js\";\nimport number from \"./number.js\";\n\nfunction square(x) {\n  return Math.sign(x) * x * x;\n}\n\nfunction unsquare(x) {\n  return Math.sign(x) * Math.sqrt(Math.abs(x));\n}\n\nexport default function radial() {\n  var squared = continuous(),\n      range = [0, 1],\n      round = false,\n      unknown;\n\n  function scale(x) {\n    var y = unsquare(squared(x));\n    return isNaN(y) ? unknown : round ? Math.round(y) : y;\n  }\n\n  scale.invert = function(y) {\n    return squared.invert(square(y));\n  };\n\n  scale.domain = function(_) {\n    return arguments.length ? (squared.domain(_), scale) : squared.domain();\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (squared.range((range = Array.from(_, number)).map(square)), scale) : range.slice();\n  };\n\n  scale.rangeRound = function(_) {\n    return scale.range(_).round(true);\n  };\n\n  scale.round = function(_) {\n    return arguments.length ? (round = !!_, scale) : round;\n  };\n\n  scale.clamp = function(_) {\n    return arguments.length ? (squared.clamp(_), scale) : squared.clamp();\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  scale.copy = function() {\n    return radial(squared.domain(), range)\n        .round(round)\n        .clamp(squared.clamp())\n        .unknown(unknown);\n  };\n\n  initRange.apply(scale, arguments);\n\n  return linearish(scale);\n}\n","import {interpolate, interpolateRound} from \"d3-interpolate\";\nimport {identity} from \"./continuous.js\";\nimport {initInterpolator} from \"./init.js\";\nimport {linearish} from \"./linear.js\";\nimport {loggish} from \"./log.js\";\nimport {symlogish} from \"./symlog.js\";\nimport {powish} from \"./pow.js\";\n\nfunction transformer() {\n  var x0 = 0,\n      x1 = 1,\n      t0,\n      t1,\n      k10,\n      transform,\n      interpolator = identity,\n      clamp = false,\n      unknown;\n\n  function scale(x) {\n    return isNaN(x = +x) ? unknown : interpolator(k10 === 0 ? 0.5 : (x = (transform(x) - t0) * k10, clamp ? Math.max(0, Math.min(1, x)) : x));\n  }\n\n  scale.domain = function(_) {\n    return arguments.length ? ([x0, x1] = _, t0 = transform(x0 = +x0), t1 = transform(x1 = +x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0), scale) : [x0, x1];\n  };\n\n  scale.clamp = function(_) {\n    return arguments.length ? (clamp = !!_, scale) : clamp;\n  };\n\n  scale.interpolator = function(_) {\n    return arguments.length ? (interpolator = _, scale) : interpolator;\n  };\n\n  function range(interpolate) {\n    return function(_) {\n      var r0, r1;\n      return arguments.length ? ([r0, r1] = _, interpolator = interpolate(r0, r1), scale) : [interpolator(0), interpolator(1)];\n    };\n  }\n\n  scale.range = range(interpolate);\n\n  scale.rangeRound = range(interpolateRound);\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  return function(t) {\n    transform = t, t0 = t(x0), t1 = t(x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0);\n    return scale;\n  };\n}\n\nexport function copy(source, target) {\n  return target\n      .domain(source.domain())\n      .interpolator(source.interpolator())\n      .clamp(source.clamp())\n      .unknown(source.unknown());\n}\n\nexport default function sequential() {\n  var scale = linearish(transformer()(identity));\n\n  scale.copy = function() {\n    return copy(scale, sequential());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialLog() {\n  var scale = loggish(transformer()).domain([1, 10]);\n\n  scale.copy = function() {\n    return copy(scale, sequentialLog()).base(scale.base());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSymlog() {\n  var scale = symlogish(transformer());\n\n  scale.copy = function() {\n    return copy(scale, sequentialSymlog()).constant(scale.constant());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialPow() {\n  var scale = powish(transformer());\n\n  scale.copy = function() {\n    return copy(scale, sequentialPow()).exponent(scale.exponent());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSqrt() {\n  return sequentialPow.apply(null, arguments).exponent(0.5);\n}\n","import {ascending, bisect, quantile} from \"d3-array\";\nimport {identity} from \"./continuous.js\";\nimport {initInterpolator} from \"./init.js\";\n\nexport default function sequentialQuantile() {\n  var domain = [],\n      interpolator = identity;\n\n  function scale(x) {\n    if (!isNaN(x = +x)) return interpolator((bisect(domain, x, 1) - 1) / (domain.length - 1));\n  }\n\n  scale.domain = function(_) {\n    if (!arguments.length) return domain.slice();\n    domain = [];\n    for (let d of _) if (d != null && !isNaN(d = +d)) domain.push(d);\n    domain.sort(ascending);\n    return scale;\n  };\n\n  scale.interpolator = function(_) {\n    return arguments.length ? (interpolator = _, scale) : interpolator;\n  };\n\n  scale.range = function() {\n    return domain.map((d, i) => interpolator(i / (domain.length - 1)));\n  };\n\n  scale.quantiles = function(n) {\n    return Array.from({length: n + 1}, (_, i) => quantile(domain, i / n));\n  };\n\n  scale.copy = function() {\n    return sequentialQuantile(interpolator).domain(domain);\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n","import {linearish} from \"./linear.js\";\nimport {copy, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformSymlog(c) {\n  return function(x) {\n    return Math.sign(x) * Math.log1p(Math.abs(x / c));\n  };\n}\n\nfunction transformSymexp(c) {\n  return function(x) {\n    return Math.sign(x) * Math.expm1(Math.abs(x)) * c;\n  };\n}\n\nexport function symlogish(transform) {\n  var c = 1, scale = transform(transformSymlog(c), transformSymexp(c));\n\n  scale.constant = function(_) {\n    return arguments.length ? transform(transformSymlog(c = +_), transformSymexp(c)) : c;\n  };\n\n  return linearish(scale);\n}\n\nexport default function symlog() {\n  var scale = symlogish(transformer());\n\n  scale.copy = function() {\n    return copy(scale, symlog()).constant(scale.constant());\n  };\n\n  return initRange.apply(scale, arguments);\n}\n","import {bisect} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport default function threshold() {\n  var domain = [0.5],\n      range = [0, 1],\n      unknown,\n      n = 1;\n\n  function scale(x) {\n    return x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n  }\n\n  scale.domain = function(_) {\n    return arguments.length ? (domain = Array.from(_), n = Math.min(domain.length, range.length - 1), scale) : domain.slice();\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (range = Array.from(_), n = Math.min(domain.length, range.length - 1), scale) : range.slice();\n  };\n\n  scale.invertExtent = function(y) {\n    var i = range.indexOf(y);\n    return [domain[i - 1], domain[i]];\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  scale.copy = function() {\n    return threshold()\n        .domain(domain)\n        .range(range)\n        .unknown(unknown);\n  };\n\n  return initRange.apply(scale, arguments);\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function(start, stop, count, specifier) {\n  var step = tickStep(start, stop, count),\n      precision;\n  specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n  switch (specifier.type) {\n    case \"s\": {\n      var value = Math.max(Math.abs(start), Math.abs(stop));\n      if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n      return formatPrefix(specifier, value);\n    }\n    case \"\":\n    case \"e\":\n    case \"g\":\n    case \"p\":\n    case \"r\": {\n      if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n      break;\n    }\n    case \"f\":\n    case \"%\": {\n      if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n      break;\n    }\n  }\n  return format(specifier);\n}\n","import {bisector, tickStep} from \"d3-array\";\nimport {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeMillisecond} from \"d3-time\";\nimport {timeFormat} from \"d3-time-format\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport nice from \"./nice.js\";\n\nvar durationSecond = 1000,\n    durationMinute = durationSecond * 60,\n    durationHour = durationMinute * 60,\n    durationDay = durationHour * 24,\n    durationWeek = durationDay * 7,\n    durationMonth = durationDay * 30,\n    durationYear = durationDay * 365;\n\nfunction date(t) {\n  return new Date(t);\n}\n\nfunction number(t) {\n  return t instanceof Date ? +t : +new Date(+t);\n}\n\nexport function calendar(year, month, week, day, hour, minute, second, millisecond, format) {\n  var scale = continuous(),\n      invert = scale.invert,\n      domain = scale.domain;\n\n  var formatMillisecond = format(\".%L\"),\n      formatSecond = format(\":%S\"),\n      formatMinute = format(\"%I:%M\"),\n      formatHour = format(\"%I %p\"),\n      formatDay = format(\"%a %d\"),\n      formatWeek = format(\"%b %d\"),\n      formatMonth = format(\"%B\"),\n      formatYear = format(\"%Y\");\n\n  var tickIntervals = [\n    [second,  1,      durationSecond],\n    [second,  5,  5 * durationSecond],\n    [second, 15, 15 * durationSecond],\n    [second, 30, 30 * durationSecond],\n    [minute,  1,      durationMinute],\n    [minute,  5,  5 * durationMinute],\n    [minute, 15, 15 * durationMinute],\n    [minute, 30, 30 * durationMinute],\n    [  hour,  1,      durationHour  ],\n    [  hour,  3,  3 * durationHour  ],\n    [  hour,  6,  6 * durationHour  ],\n    [  hour, 12, 12 * durationHour  ],\n    [   day,  1,      durationDay   ],\n    [   day,  2,  2 * durationDay   ],\n    [  week,  1,      durationWeek  ],\n    [ month,  1,      durationMonth ],\n    [ month,  3,  3 * durationMonth ],\n    [  year,  1,      durationYear  ]\n  ];\n\n  function tickFormat(date) {\n    return (second(date) < date ? formatMillisecond\n        : minute(date) < date ? formatSecond\n        : hour(date) < date ? formatMinute\n        : day(date) < date ? formatHour\n        : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n        : year(date) < date ? formatMonth\n        : formatYear)(date);\n  }\n\n  function tickInterval(interval, start, stop) {\n    if (interval == null) interval = 10;\n\n    // If a desired tick count is specified, pick a reasonable tick interval\n    // based on the extent of the domain and a rough estimate of tick size.\n    // Otherwise, assume interval is already a time interval and use it.\n    if (typeof interval === \"number\") {\n      var target = Math.abs(stop - start) / interval,\n          i = bisector(function(i) { return i[2]; }).right(tickIntervals, target),\n          step;\n      if (i === tickIntervals.length) {\n        step = tickStep(start / durationYear, stop / durationYear, interval);\n        interval = year;\n      } else if (i) {\n        i = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n        step = i[1];\n        interval = i[0];\n      } else {\n        step = Math.max(tickStep(start, stop, interval), 1);\n        interval = millisecond;\n      }\n      return interval.every(step);\n    }\n\n    return interval;\n  }\n\n  scale.invert = function(y) {\n    return new Date(invert(y));\n  };\n\n  scale.domain = function(_) {\n    return arguments.length ? domain(Array.from(_, number)) : domain().map(date);\n  };\n\n  scale.ticks = function(interval) {\n    var d = domain(),\n        t0 = d[0],\n        t1 = d[d.length - 1],\n        r = t1 < t0,\n        t;\n    if (r) t = t0, t0 = t1, t1 = t;\n    t = tickInterval(interval, t0, t1);\n    t = t ? t.range(t0, t1 + 1) : []; // inclusive stop\n    return r ? t.reverse() : t;\n  };\n\n  scale.tickFormat = function(count, specifier) {\n    return specifier == null ? tickFormat : format(specifier);\n  };\n\n  scale.nice = function(interval) {\n    var d = domain();\n    return (interval = tickInterval(interval, d[0], d[d.length - 1]))\n        ? domain(nice(d, interval))\n        : scale;\n  };\n\n  scale.copy = function() {\n    return copy(scale, calendar(year, month, week, day, hour, minute, second, millisecond, format));\n  };\n\n  return scale;\n}\n\nexport default function() {\n  return initRange.apply(calendar(timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeMillisecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\n","import {calendar} from \"./time.js\";\nimport {utcFormat} from \"d3-time-format\";\nimport {utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcMillisecond} from \"d3-time\";\nimport {initRange} from \"./init.js\";\n\nexport default function() {\n  return initRange.apply(calendar(utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcMillisecond, utcFormat).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]), arguments);\n}\n","export default function(x) {\n  return function() {\n    return x;\n  };\n}\n","import creator from \"./creator\";\nimport select from \"./select\";\n\nexport default function(name) {\n  return select(creator(name).call(document.documentElement));\n}\n","import namespace from \"./namespace\";\nimport {xhtml} from \"./namespaces\";\n\nfunction creatorInherit(name) {\n  return function() {\n    var document = this.ownerDocument,\n        uri = this.namespaceURI;\n    return uri === xhtml && document.documentElement.namespaceURI === xhtml\n        ? document.createElement(name)\n        : document.createElementNS(uri, name);\n  };\n}\n\nfunction creatorFixed(fullname) {\n  return function() {\n    return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n  };\n}\n\nexport default function(name) {\n  var fullname = namespace(name);\n  return (fullname.local\n      ? creatorFixed\n      : creatorInherit)(fullname);\n}\n","export {default as create} from \"./create\";\nexport {default as creator} from \"./creator\";\nexport {default as local} from \"./local\";\nexport {default as matcher} from \"./matcher\";\nexport {default as mouse} from \"./mouse\";\nexport {default as namespace} from \"./namespace\";\nexport {default as namespaces} from \"./namespaces\";\nexport {default as clientPoint} from \"./point\";\nexport {default as select} from \"./select\";\nexport {default as selectAll} from \"./selectAll\";\nexport {default as selection} from \"./selection/index\";\nexport {default as selector} from \"./selector\";\nexport {default as selectorAll} from \"./selectorAll\";\nexport {styleValue as style} from \"./selection/style\";\nexport {default as touch} from \"./touch\";\nexport {default as touches} from \"./touches\";\nexport {default as window} from \"./window\";\nexport {event, customEvent} from \"./selection/on\";\n","var nextId = 0;\n\nexport default function local() {\n  return new Local;\n}\n\nfunction Local() {\n  this._ = \"@\" + (++nextId).toString(36);\n}\n\nLocal.prototype = local.prototype = {\n  constructor: Local,\n  get: function(node) {\n    var id = this._;\n    while (!(id in node)) if (!(node = node.parentNode)) return;\n    return node[id];\n  },\n  set: function(node, value) {\n    return node[this._] = value;\n  },\n  remove: function(node) {\n    return this._ in node && delete node[this._];\n  },\n  toString: function() {\n    return this._;\n  }\n};\n","export default function(selector) {\n  return function() {\n    return this.matches(selector);\n  };\n}\n","import sourceEvent from \"./sourceEvent\";\nimport point from \"./point\";\n\nexport default function(node) {\n  var event = sourceEvent();\n  if (event.changedTouches) event = event.changedTouches[0];\n  return point(node, event);\n}\n","import namespaces from \"./namespaces\";\n\nexport default function(name) {\n  var prefix = name += \"\", i = prefix.indexOf(\":\");\n  if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n  return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name;\n}\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n  svg: \"http://www.w3.org/2000/svg\",\n  xhtml: xhtml,\n  xlink: \"http://www.w3.org/1999/xlink\",\n  xml: \"http://www.w3.org/XML/1998/namespace\",\n  xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","export default function(node, event) {\n  var svg = node.ownerSVGElement || node;\n\n  if (svg.createSVGPoint) {\n    var point = svg.createSVGPoint();\n    point.x = event.clientX, point.y = event.clientY;\n    point = point.matrixTransform(node.getScreenCTM().inverse());\n    return [point.x, point.y];\n  }\n\n  var rect = node.getBoundingClientRect();\n  return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n}\n","import {Selection, root} from \"./selection/index\";\n\nexport default function(selector) {\n  return typeof selector === \"string\"\n      ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n      : new Selection([[selector]], root);\n}\n","import {Selection, root} from \"./selection/index\";\n\nexport default function(selector) {\n  return typeof selector === \"string\"\n      ? new Selection([document.querySelectorAll(selector)], [document.documentElement])\n      : new Selection([selector == null ? [] : selector], root);\n}\n","import creator from \"../creator\";\n\nexport default function(name) {\n  var create = typeof name === \"function\" ? name : creator(name);\n  return this.select(function() {\n    return this.appendChild(create.apply(this, arguments));\n  });\n}\n","import namespace from \"../namespace\";\n\nfunction attrRemove(name) {\n  return function() {\n    this.removeAttribute(name);\n  };\n}\n\nfunction attrRemoveNS(fullname) {\n  return function() {\n    this.removeAttributeNS(fullname.space, fullname.local);\n  };\n}\n\nfunction attrConstant(name, value) {\n  return function() {\n    this.setAttribute(name, value);\n  };\n}\n\nfunction attrConstantNS(fullname, value) {\n  return function() {\n    this.setAttributeNS(fullname.space, fullname.local, value);\n  };\n}\n\nfunction attrFunction(name, value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (v == null) this.removeAttribute(name);\n    else this.setAttribute(name, v);\n  };\n}\n\nfunction attrFunctionNS(fullname, value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n    else this.setAttributeNS(fullname.space, fullname.local, v);\n  };\n}\n\nexport default function(name, value) {\n  var fullname = namespace(name);\n\n  if (arguments.length < 2) {\n    var node = this.node();\n    return fullname.local\n        ? node.getAttributeNS(fullname.space, fullname.local)\n        : node.getAttribute(fullname);\n  }\n\n  return this.each((value == null\n      ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n      ? (fullname.local ? attrFunctionNS : attrFunction)\n      : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","export default function() {\n  var callback = arguments[0];\n  arguments[0] = this;\n  callback.apply(null, arguments);\n  return this;\n}\n","function classArray(string) {\n  return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n  return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n  this._node = node;\n  this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n  add: function(name) {\n    var i = this._names.indexOf(name);\n    if (i < 0) {\n      this._names.push(name);\n      this._node.setAttribute(\"class\", this._names.join(\" \"));\n    }\n  },\n  remove: function(name) {\n    var i = this._names.indexOf(name);\n    if (i >= 0) {\n      this._names.splice(i, 1);\n      this._node.setAttribute(\"class\", this._names.join(\" \"));\n    }\n  },\n  contains: function(name) {\n    return this._names.indexOf(name) >= 0;\n  }\n};\n\nfunction classedAdd(node, names) {\n  var list = classList(node), i = -1, n = names.length;\n  while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n  var list = classList(node), i = -1, n = names.length;\n  while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n  return function() {\n    classedAdd(this, names);\n  };\n}\n\nfunction classedFalse(names) {\n  return function() {\n    classedRemove(this, names);\n  };\n}\n\nfunction classedFunction(names, value) {\n  return function() {\n    (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n  };\n}\n\nexport default function(name, value) {\n  var names = classArray(name + \"\");\n\n  if (arguments.length < 2) {\n    var list = classList(this.node()), i = -1, n = names.length;\n    while (++i < n) if (!list.contains(names[i])) return false;\n    return true;\n  }\n\n  return this.each((typeof value === \"function\"\n      ? classedFunction : value\n      ? classedTrue\n      : classedFalse)(names, value));\n}\n","function selection_cloneShallow() {\n  var clone = this.cloneNode(false), parent = this.parentNode;\n  return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n  var clone = this.cloneNode(true), parent = this.parentNode;\n  return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n  return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","import {Selection} from \"./index\";\nimport {EnterNode} from \"./enter\";\nimport constant from \"../constant\";\n\nvar keyPrefix = \"$\"; // Protect against keys like “__proto__”.\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n  var i = 0,\n      node,\n      groupLength = group.length,\n      dataLength = data.length;\n\n  // Put any non-null nodes that fit into update.\n  // Put any null nodes into enter.\n  // Put any remaining data into enter.\n  for (; i < dataLength; ++i) {\n    if (node = group[i]) {\n      node.__data__ = data[i];\n      update[i] = node;\n    } else {\n      enter[i] = new EnterNode(parent, data[i]);\n    }\n  }\n\n  // Put any non-null nodes that don’t fit into exit.\n  for (; i < groupLength; ++i) {\n    if (node = group[i]) {\n      exit[i] = node;\n    }\n  }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n  var i,\n      node,\n      nodeByKeyValue = {},\n      groupLength = group.length,\n      dataLength = data.length,\n      keyValues = new Array(groupLength),\n      keyValue;\n\n  // Compute the key for each node.\n  // If multiple nodes have the same key, the duplicates are added to exit.\n  for (i = 0; i < groupLength; ++i) {\n    if (node = group[i]) {\n      keyValues[i] = keyValue = keyPrefix + key.call(node, node.__data__, i, group);\n      if (keyValue in nodeByKeyValue) {\n        exit[i] = node;\n      } else {\n        nodeByKeyValue[keyValue] = node;\n      }\n    }\n  }\n\n  // Compute the key for each datum.\n  // If there a node associated with this key, join and add it to update.\n  // If there is not (or the key is a duplicate), add it to enter.\n  for (i = 0; i < dataLength; ++i) {\n    keyValue = keyPrefix + key.call(parent, data[i], i, data);\n    if (node = nodeByKeyValue[keyValue]) {\n      update[i] = node;\n      node.__data__ = data[i];\n      nodeByKeyValue[keyValue] = null;\n    } else {\n      enter[i] = new EnterNode(parent, data[i]);\n    }\n  }\n\n  // Add any remaining nodes that were not bound to data to exit.\n  for (i = 0; i < groupLength; ++i) {\n    if ((node = group[i]) && (nodeByKeyValue[keyValues[i]] === node)) {\n      exit[i] = node;\n    }\n  }\n}\n\nexport default function(value, key) {\n  if (!value) {\n    data = new Array(this.size()), j = -1;\n    this.each(function(d) { data[++j] = d; });\n    return data;\n  }\n\n  var bind = key ? bindKey : bindIndex,\n      parents = this._parents,\n      groups = this._groups;\n\n  if (typeof value !== \"function\") value = constant(value);\n\n  for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n    var parent = parents[j],\n        group = groups[j],\n        groupLength = group.length,\n        data = value.call(parent, parent && parent.__data__, j, parents),\n        dataLength = data.length,\n        enterGroup = enter[j] = new Array(dataLength),\n        updateGroup = update[j] = new Array(dataLength),\n        exitGroup = exit[j] = new Array(groupLength);\n\n    bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n    // Now connect the enter nodes to their following update node, such that\n    // appendChild can insert the materialized enter node before this node,\n    // rather than at the end of the parent node.\n    for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n      if (previous = enterGroup[i0]) {\n        if (i0 >= i1) i1 = i0 + 1;\n        while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n        previous._next = next || null;\n      }\n    }\n  }\n\n  update = new Selection(update, parents);\n  update._enter = enter;\n  update._exit = exit;\n  return update;\n}\n","export default function(value) {\n  return arguments.length\n      ? this.property(\"__data__\", value)\n      : this.node().__data__;\n}\n","import defaultView from \"../window\";\n\nfunction dispatchEvent(node, type, params) {\n  var window = defaultView(node),\n      event = window.CustomEvent;\n\n  if (typeof event === \"function\") {\n    event = new event(type, params);\n  } else {\n    event = window.document.createEvent(\"Event\");\n    if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n    else event.initEvent(type, false, false);\n  }\n\n  node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n  return function() {\n    return dispatchEvent(this, type, params);\n  };\n}\n\nfunction dispatchFunction(type, params) {\n  return function() {\n    return dispatchEvent(this, type, params.apply(this, arguments));\n  };\n}\n\nexport default function(type, params) {\n  return this.each((typeof params === \"function\"\n      ? dispatchFunction\n      : dispatchConstant)(type, params));\n}\n","export default function(callback) {\n\n  for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n    for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n      if (node = group[i]) callback.call(node, node.__data__, i, group);\n    }\n  }\n\n  return this;\n}\n","export default function() {\n  return !this.node();\n}\n","import sparse from \"./sparse\";\nimport {Selection} from \"./index\";\n\nexport default function() {\n  return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n  this.ownerDocument = parent.ownerDocument;\n  this.namespaceURI = parent.namespaceURI;\n  this._next = null;\n  this._parent = parent;\n  this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n  constructor: EnterNode,\n  appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n  insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n  querySelector: function(selector) { return this._parent.querySelector(selector); },\n  querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","import sparse from \"./sparse\";\nimport {Selection} from \"./index\";\n\nexport default function() {\n  return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","import {Selection} from \"./index\";\nimport matcher from \"../matcher\";\n\nexport default function(match) {\n  if (typeof match !== \"function\") match = matcher(match);\n\n  for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n      if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n        subgroup.push(node);\n      }\n    }\n  }\n\n  return new Selection(subgroups, this._parents);\n}\n","function htmlRemove() {\n  this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n  return function() {\n    this.innerHTML = value;\n  };\n}\n\nfunction htmlFunction(value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    this.innerHTML = v == null ? \"\" : v;\n  };\n}\n\nexport default function(value) {\n  return arguments.length\n      ? this.each(value == null\n          ? htmlRemove : (typeof value === \"function\"\n          ? htmlFunction\n          : htmlConstant)(value))\n      : this.node().innerHTML;\n}\n","import selection_select from \"./select\";\nimport selection_selectAll from \"./selectAll\";\nimport selection_filter from \"./filter\";\nimport selection_data from \"./data\";\nimport selection_enter from \"./enter\";\nimport selection_exit from \"./exit\";\nimport selection_join from \"./join\";\nimport selection_merge from \"./merge\";\nimport selection_order from \"./order\";\nimport selection_sort from \"./sort\";\nimport selection_call from \"./call\";\nimport selection_nodes from \"./nodes\";\nimport selection_node from \"./node\";\nimport selection_size from \"./size\";\nimport selection_empty from \"./empty\";\nimport selection_each from \"./each\";\nimport selection_attr from \"./attr\";\nimport selection_style from \"./style\";\nimport selection_property from \"./property\";\nimport selection_classed from \"./classed\";\nimport selection_text from \"./text\";\nimport selection_html from \"./html\";\nimport selection_raise from \"./raise\";\nimport selection_lower from \"./lower\";\nimport selection_append from \"./append\";\nimport selection_insert from \"./insert\";\nimport selection_remove from \"./remove\";\nimport selection_clone from \"./clone\";\nimport selection_datum from \"./datum\";\nimport selection_on from \"./on\";\nimport selection_dispatch from \"./dispatch\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n  this._groups = groups;\n  this._parents = parents;\n}\n\nfunction selection() {\n  return new Selection([[document.documentElement]], root);\n}\n\nSelection.prototype = selection.prototype = {\n  constructor: Selection,\n  select: selection_select,\n  selectAll: selection_selectAll,\n  filter: selection_filter,\n  data: selection_data,\n  enter: selection_enter,\n  exit: selection_exit,\n  join: selection_join,\n  merge: selection_merge,\n  order: selection_order,\n  sort: selection_sort,\n  call: selection_call,\n  nodes: selection_nodes,\n  node: selection_node,\n  size: selection_size,\n  empty: selection_empty,\n  each: selection_each,\n  attr: selection_attr,\n  style: selection_style,\n  property: selection_property,\n  classed: selection_classed,\n  text: selection_text,\n  html: selection_html,\n  raise: selection_raise,\n  lower: selection_lower,\n  append: selection_append,\n  insert: selection_insert,\n  remove: selection_remove,\n  clone: selection_clone,\n  datum: selection_datum,\n  on: selection_on,\n  dispatch: selection_dispatch\n};\n\nexport default selection;\n","import creator from \"../creator\";\nimport selector from \"../selector\";\n\nfunction constantNull() {\n  return null;\n}\n\nexport default function(name, before) {\n  var create = typeof name === \"function\" ? name : creator(name),\n      select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n  return this.select(function() {\n    return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n  });\n}\n","export default function(onenter, onupdate, onexit) {\n  var enter = this.enter(), update = this, exit = this.exit();\n  enter = typeof onenter === \"function\" ? onenter(enter) : enter.append(onenter + \"\");\n  if (onupdate != null) update = onupdate(update);\n  if (onexit == null) exit.remove(); else onexit(exit);\n  return enter && update ? enter.merge(update).order() : update;\n}\n","function lower() {\n  if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n  return this.each(lower);\n}\n","import {Selection} from \"./index\";\n\nexport default function(selection) {\n\n  for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n    for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n      if (node = group0[i] || group1[i]) {\n        merge[i] = node;\n      }\n    }\n  }\n\n  for (; j < m0; ++j) {\n    merges[j] = groups0[j];\n  }\n\n  return new Selection(merges, this._parents);\n}\n","export default function() {\n\n  for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n    for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n      var node = group[i];\n      if (node) return node;\n    }\n  }\n\n  return null;\n}\n","export default function() {\n  var nodes = new Array(this.size()), i = -1;\n  this.each(function() { nodes[++i] = this; });\n  return nodes;\n}\n","var filterEvents = {};\n\nexport var event = null;\n\nif (typeof document !== \"undefined\") {\n  var element = document.documentElement;\n  if (!(\"onmouseenter\" in element)) {\n    filterEvents = {mouseenter: \"mouseover\", mouseleave: \"mouseout\"};\n  }\n}\n\nfunction filterContextListener(listener, index, group) {\n  listener = contextListener(listener, index, group);\n  return function(event) {\n    var related = event.relatedTarget;\n    if (!related || (related !== this && !(related.compareDocumentPosition(this) & 8))) {\n      listener.call(this, event);\n    }\n  };\n}\n\nfunction contextListener(listener, index, group) {\n  return function(event1) {\n    var event0 = event; // Events can be reentrant (e.g., focus).\n    event = event1;\n    try {\n      listener.call(this, this.__data__, index, group);\n    } finally {\n      event = event0;\n    }\n  };\n}\n\nfunction parseTypenames(typenames) {\n  return typenames.trim().split(/^|\\s+/).map(function(t) {\n    var name = \"\", i = t.indexOf(\".\");\n    if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n    return {type: t, name: name};\n  });\n}\n\nfunction onRemove(typename) {\n  return function() {\n    var on = this.__on;\n    if (!on) return;\n    for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n      if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n        this.removeEventListener(o.type, o.listener, o.capture);\n      } else {\n        on[++i] = o;\n      }\n    }\n    if (++i) on.length = i;\n    else delete this.__on;\n  };\n}\n\nfunction onAdd(typename, value, capture) {\n  var wrap = filterEvents.hasOwnProperty(typename.type) ? filterContextListener : contextListener;\n  return function(d, i, group) {\n    var on = this.__on, o, listener = wrap(value, i, group);\n    if (on) for (var j = 0, m = on.length; j < m; ++j) {\n      if ((o = on[j]).type === typename.type && o.name === typename.name) {\n        this.removeEventListener(o.type, o.listener, o.capture);\n        this.addEventListener(o.type, o.listener = listener, o.capture = capture);\n        o.value = value;\n        return;\n      }\n    }\n    this.addEventListener(typename.type, listener, capture);\n    o = {type: typename.type, name: typename.name, value: value, listener: listener, capture: capture};\n    if (!on) this.__on = [o];\n    else on.push(o);\n  };\n}\n\nexport default function(typename, value, capture) {\n  var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n  if (arguments.length < 2) {\n    var on = this.node().__on;\n    if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n      for (i = 0, o = on[j]; i < n; ++i) {\n        if ((t = typenames[i]).type === o.type && t.name === o.name) {\n          return o.value;\n        }\n      }\n    }\n    return;\n  }\n\n  on = value ? onAdd : onRemove;\n  if (capture == null) capture = false;\n  for (i = 0; i < n; ++i) this.each(on(typenames[i], value, capture));\n  return this;\n}\n\nexport function customEvent(event1, listener, that, args) {\n  var event0 = event;\n  event1.sourceEvent = event;\n  event = event1;\n  try {\n    return listener.apply(that, args);\n  } finally {\n    event = event0;\n  }\n}\n","export default function() {\n\n  for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n    for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n      if (node = group[i]) {\n        if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n        next = node;\n      }\n    }\n  }\n\n  return this;\n}\n","function propertyRemove(name) {\n  return function() {\n    delete this[name];\n  };\n}\n\nfunction propertyConstant(name, value) {\n  return function() {\n    this[name] = value;\n  };\n}\n\nfunction propertyFunction(name, value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (v == null) delete this[name];\n    else this[name] = v;\n  };\n}\n\nexport default function(name, value) {\n  return arguments.length > 1\n      ? this.each((value == null\n          ? propertyRemove : typeof value === \"function\"\n          ? propertyFunction\n          : propertyConstant)(name, value))\n      : this.node()[name];\n}\n","function raise() {\n  if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n  return this.each(raise);\n}\n","function remove() {\n  var parent = this.parentNode;\n  if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n  return this.each(remove);\n}\n","import {Selection} from \"./index\";\nimport selector from \"../selector\";\n\nexport default function(select) {\n  if (typeof select !== \"function\") select = selector(select);\n\n  for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n      if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n        if (\"__data__\" in node) subnode.__data__ = node.__data__;\n        subgroup[i] = subnode;\n      }\n    }\n  }\n\n  return new Selection(subgroups, this._parents);\n}\n","import {Selection} from \"./index\";\nimport selectorAll from \"../selectorAll\";\n\nexport default function(select) {\n  if (typeof select !== \"function\") select = selectorAll(select);\n\n  for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        subgroups.push(select.call(node, node.__data__, i, group));\n        parents.push(node);\n      }\n    }\n  }\n\n  return new Selection(subgroups, parents);\n}\n","export default function() {\n  var size = 0;\n  this.each(function() { ++size; });\n  return size;\n}\n","import {Selection} from \"./index\";\n\nexport default function(compare) {\n  if (!compare) compare = ascending;\n\n  function compareNode(a, b) {\n    return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n  }\n\n  for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        sortgroup[i] = node;\n      }\n    }\n    sortgroup.sort(compareNode);\n  }\n\n  return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n  return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function(update) {\n  return new Array(update.length);\n}\n","import defaultView from \"../window\";\n\nfunction styleRemove(name) {\n  return function() {\n    this.style.removeProperty(name);\n  };\n}\n\nfunction styleConstant(name, value, priority) {\n  return function() {\n    this.style.setProperty(name, value, priority);\n  };\n}\n\nfunction styleFunction(name, value, priority) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (v == null) this.style.removeProperty(name);\n    else this.style.setProperty(name, v, priority);\n  };\n}\n\nexport default function(name, value, priority) {\n  return arguments.length > 1\n      ? this.each((value == null\n            ? styleRemove : typeof value === \"function\"\n            ? styleFunction\n            : styleConstant)(name, value, priority == null ? \"\" : priority))\n      : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n  return node.style.getPropertyValue(name)\n      || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function textRemove() {\n  this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n  return function() {\n    this.textContent = value;\n  };\n}\n\nfunction textFunction(value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    this.textContent = v == null ? \"\" : v;\n  };\n}\n\nexport default function(value) {\n  return arguments.length\n      ? this.each(value == null\n          ? textRemove : (typeof value === \"function\"\n          ? textFunction\n          : textConstant)(value))\n      : this.node().textContent;\n}\n","function none() {}\n\nexport default function(selector) {\n  return selector == null ? none : function() {\n    return this.querySelector(selector);\n  };\n}\n","function empty() {\n  return [];\n}\n\nexport default function(selector) {\n  return selector == null ? empty : function() {\n    return this.querySelectorAll(selector);\n  };\n}\n","import {event} from \"./selection/on\";\n\nexport default function() {\n  var current = event, source;\n  while (source = current.sourceEvent) current = source;\n  return current;\n}\n","import sourceEvent from \"./sourceEvent\";\nimport point from \"./point\";\n\nexport default function(node, touches, identifier) {\n  if (arguments.length < 3) identifier = touches, touches = sourceEvent().changedTouches;\n\n  for (var i = 0, n = touches ? touches.length : 0, touch; i < n; ++i) {\n    if ((touch = touches[i]).identifier === identifier) {\n      return point(node, touch);\n    }\n  }\n\n  return null;\n}\n","import sourceEvent from \"./sourceEvent\";\nimport point from \"./point\";\n\nexport default function(node, touches) {\n  if (touches == null) touches = sourceEvent().touches;\n\n  for (var i = 0, n = touches ? touches.length : 0, points = new Array(n); i < n; ++i) {\n    points[i] = point(node, touches[i]);\n  }\n\n  return points;\n}\n","export default function(node) {\n  return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n      || (node.document && node) // node is a Window\n      || node.defaultView; // node is a Document\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant.js\";\nimport {abs, acos, asin, atan2, cos, epsilon, halfPi, max, min, pi, sin, sqrt, tau} from \"./math.js\";\n\nfunction arcInnerRadius(d) {\n  return d.innerRadius;\n}\n\nfunction arcOuterRadius(d) {\n  return d.outerRadius;\n}\n\nfunction arcStartAngle(d) {\n  return d.startAngle;\n}\n\nfunction arcEndAngle(d) {\n  return d.endAngle;\n}\n\nfunction arcPadAngle(d) {\n  return d && d.padAngle; // Note: optional!\n}\n\nfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n  var x10 = x1 - x0, y10 = y1 - y0,\n      x32 = x3 - x2, y32 = y3 - y2,\n      t = y32 * x10 - x32 * y10;\n  if (t * t < epsilon) return;\n  t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;\n  return [x0 + t * x10, y0 + t * y10];\n}\n\n// Compute perpendicular offset line of length rc.\n// http://mathworld.wolfram.com/Circle-LineIntersection.html\nfunction cornerTangents(x0, y0, x1, y1, r1, rc, cw) {\n  var x01 = x0 - x1,\n      y01 = y0 - y1,\n      lo = (cw ? rc : -rc) / sqrt(x01 * x01 + y01 * y01),\n      ox = lo * y01,\n      oy = -lo * x01,\n      x11 = x0 + ox,\n      y11 = y0 + oy,\n      x10 = x1 + ox,\n      y10 = y1 + oy,\n      x00 = (x11 + x10) / 2,\n      y00 = (y11 + y10) / 2,\n      dx = x10 - x11,\n      dy = y10 - y11,\n      d2 = dx * dx + dy * dy,\n      r = r1 - rc,\n      D = x11 * y10 - x10 * y11,\n      d = (dy < 0 ? -1 : 1) * sqrt(max(0, r * r * d2 - D * D)),\n      cx0 = (D * dy - dx * d) / d2,\n      cy0 = (-D * dx - dy * d) / d2,\n      cx1 = (D * dy + dx * d) / d2,\n      cy1 = (-D * dx + dy * d) / d2,\n      dx0 = cx0 - x00,\n      dy0 = cy0 - y00,\n      dx1 = cx1 - x00,\n      dy1 = cy1 - y00;\n\n  // Pick the closer of the two intersection points.\n  // TODO Is there a faster way to determine which intersection to use?\n  if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n\n  return {\n    cx: cx0,\n    cy: cy0,\n    x01: -ox,\n    y01: -oy,\n    x11: cx0 * (r1 / r - 1),\n    y11: cy0 * (r1 / r - 1)\n  };\n}\n\nexport default function() {\n  var innerRadius = arcInnerRadius,\n      outerRadius = arcOuterRadius,\n      cornerRadius = constant(0),\n      padRadius = null,\n      startAngle = arcStartAngle,\n      endAngle = arcEndAngle,\n      padAngle = arcPadAngle,\n      context = null;\n\n  function arc() {\n    var buffer,\n        r,\n        r0 = +innerRadius.apply(this, arguments),\n        r1 = +outerRadius.apply(this, arguments),\n        a0 = startAngle.apply(this, arguments) - halfPi,\n        a1 = endAngle.apply(this, arguments) - halfPi,\n        da = abs(a1 - a0),\n        cw = a1 > a0;\n\n    if (!context) context = buffer = path();\n\n    // Ensure that the outer radius is always larger than the inner radius.\n    if (r1 < r0) r = r1, r1 = r0, r0 = r;\n\n    // Is it a point?\n    if (!(r1 > epsilon)) context.moveTo(0, 0);\n\n    // Or is it a circle or annulus?\n    else if (da > tau - epsilon) {\n      context.moveTo(r1 * cos(a0), r1 * sin(a0));\n      context.arc(0, 0, r1, a0, a1, !cw);\n      if (r0 > epsilon) {\n        context.moveTo(r0 * cos(a1), r0 * sin(a1));\n        context.arc(0, 0, r0, a1, a0, cw);\n      }\n    }\n\n    // Or is it a circular or annular sector?\n    else {\n      var a01 = a0,\n          a11 = a1,\n          a00 = a0,\n          a10 = a1,\n          da0 = da,\n          da1 = da,\n          ap = padAngle.apply(this, arguments) / 2,\n          rp = (ap > epsilon) && (padRadius ? +padRadius.apply(this, arguments) : sqrt(r0 * r0 + r1 * r1)),\n          rc = min(abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments)),\n          rc0 = rc,\n          rc1 = rc,\n          t0,\n          t1;\n\n      // Apply padding? Note that since r1 ≥ r0, da1 ≥ da0.\n      if (rp > epsilon) {\n        var p0 = asin(rp / r0 * sin(ap)),\n            p1 = asin(rp / r1 * sin(ap));\n        if ((da0 -= p0 * 2) > epsilon) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0;\n        else da0 = 0, a00 = a10 = (a0 + a1) / 2;\n        if ((da1 -= p1 * 2) > epsilon) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1;\n        else da1 = 0, a01 = a11 = (a0 + a1) / 2;\n      }\n\n      var x01 = r1 * cos(a01),\n          y01 = r1 * sin(a01),\n          x10 = r0 * cos(a10),\n          y10 = r0 * sin(a10);\n\n      // Apply rounded corners?\n      if (rc > epsilon) {\n        var x11 = r1 * cos(a11),\n            y11 = r1 * sin(a11),\n            x00 = r0 * cos(a00),\n            y00 = r0 * sin(a00),\n            oc;\n\n        // Restrict the corner radius according to the sector angle.\n        if (da < pi && (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10))) {\n          var ax = x01 - oc[0],\n              ay = y01 - oc[1],\n              bx = x11 - oc[0],\n              by = y11 - oc[1],\n              kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2),\n              lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n          rc0 = min(rc, (r0 - lc) / (kc - 1));\n          rc1 = min(rc, (r1 - lc) / (kc + 1));\n        }\n      }\n\n      // Is the sector collapsed to a line?\n      if (!(da1 > epsilon)) context.moveTo(x01, y01);\n\n      // Does the sector’s outer ring have rounded corners?\n      else if (rc1 > epsilon) {\n        t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);\n        t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);\n\n        context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n        // Have the corners merged?\n        if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n        // Otherwise, draw the two corners and the ring.\n        else {\n          context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n          context.arc(0, 0, r1, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), !cw);\n          context.arc(t1.cx, t1.cy, rc1, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n        }\n      }\n\n      // Or is the outer ring just a circular arc?\n      else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw);\n\n      // Is there no inner ring, and it’s a circular sector?\n      // Or perhaps it’s an annular sector collapsed due to padding?\n      if (!(r0 > epsilon) || !(da0 > epsilon)) context.lineTo(x10, y10);\n\n      // Does the sector’s inner ring (or point) have rounded corners?\n      else if (rc0 > epsilon) {\n        t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);\n        t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);\n\n        context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n        // Have the corners merged?\n        if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n        // Otherwise, draw the two corners and the ring.\n        else {\n          context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n          context.arc(0, 0, r0, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), cw);\n          context.arc(t1.cx, t1.cy, rc0, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n        }\n      }\n\n      // Or is the inner ring just a circular arc?\n      else context.arc(0, 0, r0, a10, a00, cw);\n    }\n\n    context.closePath();\n\n    if (buffer) return context = null, buffer + \"\" || null;\n  }\n\n  arc.centroid = function() {\n    var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2,\n        a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi / 2;\n    return [cos(a) * r, sin(a) * r];\n  };\n\n  arc.innerRadius = function(_) {\n    return arguments.length ? (innerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : innerRadius;\n  };\n\n  arc.outerRadius = function(_) {\n    return arguments.length ? (outerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : outerRadius;\n  };\n\n  arc.cornerRadius = function(_) {\n    return arguments.length ? (cornerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : cornerRadius;\n  };\n\n  arc.padRadius = function(_) {\n    return arguments.length ? (padRadius = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), arc) : padRadius;\n  };\n\n  arc.startAngle = function(_) {\n    return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : startAngle;\n  };\n\n  arc.endAngle = function(_) {\n    return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : endAngle;\n  };\n\n  arc.padAngle = function(_) {\n    return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : padAngle;\n  };\n\n  arc.context = function(_) {\n    return arguments.length ? ((context = _ == null ? null : _), arc) : context;\n  };\n\n  return arc;\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport line from \"./line.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function() {\n  var x0 = pointX,\n      x1 = null,\n      y0 = constant(0),\n      y1 = pointY,\n      defined = constant(true),\n      context = null,\n      curve = curveLinear,\n      output = null;\n\n  function area(data) {\n    var i,\n        j,\n        k,\n        n = data.length,\n        d,\n        defined0 = false,\n        buffer,\n        x0z = new Array(n),\n        y0z = new Array(n);\n\n    if (context == null) output = curve(buffer = path());\n\n    for (i = 0; i <= n; ++i) {\n      if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n        if (defined0 = !defined0) {\n          j = i;\n          output.areaStart();\n          output.lineStart();\n        } else {\n          output.lineEnd();\n          output.lineStart();\n          for (k = i - 1; k >= j; --k) {\n            output.point(x0z[k], y0z[k]);\n          }\n          output.lineEnd();\n          output.areaEnd();\n        }\n      }\n      if (defined0) {\n        x0z[i] = +x0(d, i, data), y0z[i] = +y0(d, i, data);\n        output.point(x1 ? +x1(d, i, data) : x0z[i], y1 ? +y1(d, i, data) : y0z[i]);\n      }\n    }\n\n    if (buffer) return output = null, buffer + \"\" || null;\n  }\n\n  function arealine() {\n    return line().defined(defined).curve(curve).context(context);\n  }\n\n  area.x = function(_) {\n    return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), x1 = null, area) : x0;\n  };\n\n  area.x0 = function(_) {\n    return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), area) : x0;\n  };\n\n  area.x1 = function(_) {\n    return arguments.length ? (x1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : x1;\n  };\n\n  area.y = function(_) {\n    return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), y1 = null, area) : y0;\n  };\n\n  area.y0 = function(_) {\n    return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), area) : y0;\n  };\n\n  area.y1 = function(_) {\n    return arguments.length ? (y1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : y1;\n  };\n\n  area.lineX0 =\n  area.lineY0 = function() {\n    return arealine().x(x0).y(y0);\n  };\n\n  area.lineY1 = function() {\n    return arealine().x(x0).y(y1);\n  };\n\n  area.lineX1 = function() {\n    return arealine().x(x1).y(y0);\n  };\n\n  area.defined = function(_) {\n    return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), area) : defined;\n  };\n\n  area.curve = function(_) {\n    return arguments.length ? (curve = _, context != null && (output = curve(context)), area) : curve;\n  };\n\n  area.context = function(_) {\n    return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), area) : context;\n  };\n\n  return area;\n}\n","import curveRadial, {curveRadialLinear} from \"./curve/radial.js\";\nimport area from \"./area.js\";\nimport {lineRadial} from \"./lineRadial.js\";\n\nexport default function() {\n  var a = area().curve(curveRadialLinear),\n      c = a.curve,\n      x0 = a.lineX0,\n      x1 = a.lineX1,\n      y0 = a.lineY0,\n      y1 = a.lineY1;\n\n  a.angle = a.x, delete a.x;\n  a.startAngle = a.x0, delete a.x0;\n  a.endAngle = a.x1, delete a.x1;\n  a.radius = a.y, delete a.y;\n  a.innerRadius = a.y0, delete a.y0;\n  a.outerRadius = a.y1, delete a.y1;\n  a.lineStartAngle = function() { return lineRadial(x0()); }, delete a.lineX0;\n  a.lineEndAngle = function() { return lineRadial(x1()); }, delete a.lineX1;\n  a.lineInnerRadius = function() { return lineRadial(y0()); }, delete a.lineY0;\n  a.lineOuterRadius = function() { return lineRadial(y1()); }, delete a.lineY1;\n\n  a.curve = function(_) {\n    return arguments.length ? c(curveRadial(_)) : c()._curve;\n  };\n\n  return a;\n}\n","export var slice = Array.prototype.slice;\n","export default function(x) {\n  return function constant() {\n    return x;\n  };\n}\n","export function point(that, x, y) {\n  that._context.bezierCurveTo(\n    (2 * that._x0 + that._x1) / 3,\n    (2 * that._y0 + that._y1) / 3,\n    (that._x0 + 2 * that._x1) / 3,\n    (that._y0 + 2 * that._y1) / 3,\n    (that._x0 + 4 * that._x1 + x) / 6,\n    (that._y0 + 4 * that._y1 + y) / 6\n  );\n}\n\nexport function Basis(context) {\n  this._context = context;\n}\n\nBasis.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 =\n    this._y0 = this._y1 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 3: point(this, this._x1, this._y1); // proceed\n      case 2: this._context.lineTo(this._x1, this._y1); break;\n    }\n    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n      case 1: this._point = 2; break;\n      case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // proceed\n      default: point(this, x, y); break;\n    }\n    this._x0 = this._x1, this._x1 = x;\n    this._y0 = this._y1, this._y1 = y;\n  }\n};\n\nexport default function(context) {\n  return new Basis(context);\n}\n","import noop from \"../noop.js\";\nimport {point} from \"./basis.js\";\n\nfunction BasisClosed(context) {\n  this._context = context;\n}\n\nBasisClosed.prototype = {\n  areaStart: noop,\n  areaEnd: noop,\n  lineStart: function() {\n    this._x0 = this._x1 = this._x2 = this._x3 = this._x4 =\n    this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 1: {\n        this._context.moveTo(this._x2, this._y2);\n        this._context.closePath();\n        break;\n      }\n      case 2: {\n        this._context.moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3);\n        this._context.lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3);\n        this._context.closePath();\n        break;\n      }\n      case 3: {\n        this.point(this._x2, this._y2);\n        this.point(this._x3, this._y3);\n        this.point(this._x4, this._y4);\n        break;\n      }\n    }\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; this._x2 = x, this._y2 = y; break;\n      case 1: this._point = 2; this._x3 = x, this._y3 = y; break;\n      case 2: this._point = 3; this._x4 = x, this._y4 = y; this._context.moveTo((this._x0 + 4 * this._x1 + x) / 6, (this._y0 + 4 * this._y1 + y) / 6); break;\n      default: point(this, x, y); break;\n    }\n    this._x0 = this._x1, this._x1 = x;\n    this._y0 = this._y1, this._y1 = y;\n  }\n};\n\nexport default function(context) {\n  return new BasisClosed(context);\n}\n","import {point} from \"./basis.js\";\n\nfunction BasisOpen(context) {\n  this._context = context;\n}\n\nBasisOpen.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 =\n    this._y0 = this._y1 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; break;\n      case 1: this._point = 2; break;\n      case 2: this._point = 3; var x0 = (this._x0 + 4 * this._x1 + x) / 6, y0 = (this._y0 + 4 * this._y1 + y) / 6; this._line ? this._context.lineTo(x0, y0) : this._context.moveTo(x0, y0); break;\n      case 3: this._point = 4; // proceed\n      default: point(this, x, y); break;\n    }\n    this._x0 = this._x1, this._x1 = x;\n    this._y0 = this._y1, this._y1 = y;\n  }\n};\n\nexport default function(context) {\n  return new BasisOpen(context);\n}\n","import {Basis} from \"./basis.js\";\n\nfunction Bundle(context, beta) {\n  this._basis = new Basis(context);\n  this._beta = beta;\n}\n\nBundle.prototype = {\n  lineStart: function() {\n    this._x = [];\n    this._y = [];\n    this._basis.lineStart();\n  },\n  lineEnd: function() {\n    var x = this._x,\n        y = this._y,\n        j = x.length - 1;\n\n    if (j > 0) {\n      var x0 = x[0],\n          y0 = y[0],\n          dx = x[j] - x0,\n          dy = y[j] - y0,\n          i = -1,\n          t;\n\n      while (++i <= j) {\n        t = i / j;\n        this._basis.point(\n          this._beta * x[i] + (1 - this._beta) * (x0 + t * dx),\n          this._beta * y[i] + (1 - this._beta) * (y0 + t * dy)\n        );\n      }\n    }\n\n    this._x = this._y = null;\n    this._basis.lineEnd();\n  },\n  point: function(x, y) {\n    this._x.push(+x);\n    this._y.push(+y);\n  }\n};\n\nexport default (function custom(beta) {\n\n  function bundle(context) {\n    return beta === 1 ? new Basis(context) : new Bundle(context, beta);\n  }\n\n  bundle.beta = function(beta) {\n    return custom(+beta);\n  };\n\n  return bundle;\n})(0.85);\n","export function point(that, x, y) {\n  that._context.bezierCurveTo(\n    that._x1 + that._k * (that._x2 - that._x0),\n    that._y1 + that._k * (that._y2 - that._y0),\n    that._x2 + that._k * (that._x1 - x),\n    that._y2 + that._k * (that._y1 - y),\n    that._x2,\n    that._y2\n  );\n}\n\nexport function Cardinal(context, tension) {\n  this._context = context;\n  this._k = (1 - tension) / 6;\n}\n\nCardinal.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 = this._x2 =\n    this._y0 = this._y1 = this._y2 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 2: this._context.lineTo(this._x2, this._y2); break;\n      case 3: point(this, this._x1, this._y1); break;\n    }\n    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n      case 1: this._point = 2; this._x1 = x, this._y1 = y; break;\n      case 2: this._point = 3; // proceed\n      default: point(this, x, y); break;\n    }\n    this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n    this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n  }\n};\n\nexport default (function custom(tension) {\n\n  function cardinal(context) {\n    return new Cardinal(context, tension);\n  }\n\n  cardinal.tension = function(tension) {\n    return custom(+tension);\n  };\n\n  return cardinal;\n})(0);\n","import noop from \"../noop.js\";\nimport {point} from \"./cardinal.js\";\n\nexport function CardinalClosed(context, tension) {\n  this._context = context;\n  this._k = (1 - tension) / 6;\n}\n\nCardinalClosed.prototype = {\n  areaStart: noop,\n  areaEnd: noop,\n  lineStart: function() {\n    this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n    this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 1: {\n        this._context.moveTo(this._x3, this._y3);\n        this._context.closePath();\n        break;\n      }\n      case 2: {\n        this._context.lineTo(this._x3, this._y3);\n        this._context.closePath();\n        break;\n      }\n      case 3: {\n        this.point(this._x3, this._y3);\n        this.point(this._x4, this._y4);\n        this.point(this._x5, this._y5);\n        break;\n      }\n    }\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n      case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n      case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n      default: point(this, x, y); break;\n    }\n    this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n    this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n  }\n};\n\nexport default (function custom(tension) {\n\n  function cardinal(context) {\n    return new CardinalClosed(context, tension);\n  }\n\n  cardinal.tension = function(tension) {\n    return custom(+tension);\n  };\n\n  return cardinal;\n})(0);\n","import {point} from \"./cardinal.js\";\n\nexport function CardinalOpen(context, tension) {\n  this._context = context;\n  this._k = (1 - tension) / 6;\n}\n\nCardinalOpen.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 = this._x2 =\n    this._y0 = this._y1 = this._y2 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; break;\n      case 1: this._point = 2; break;\n      case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n      case 3: this._point = 4; // proceed\n      default: point(this, x, y); break;\n    }\n    this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n    this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n  }\n};\n\nexport default (function custom(tension) {\n\n  function cardinal(context) {\n    return new CardinalOpen(context, tension);\n  }\n\n  cardinal.tension = function(tension) {\n    return custom(+tension);\n  };\n\n  return cardinal;\n})(0);\n","import {epsilon} from \"../math.js\";\nimport {Cardinal} from \"./cardinal.js\";\n\nexport function point(that, x, y) {\n  var x1 = that._x1,\n      y1 = that._y1,\n      x2 = that._x2,\n      y2 = that._y2;\n\n  if (that._l01_a > epsilon) {\n    var a = 2 * that._l01_2a + 3 * that._l01_a * that._l12_a + that._l12_2a,\n        n = 3 * that._l01_a * (that._l01_a + that._l12_a);\n    x1 = (x1 * a - that._x0 * that._l12_2a + that._x2 * that._l01_2a) / n;\n    y1 = (y1 * a - that._y0 * that._l12_2a + that._y2 * that._l01_2a) / n;\n  }\n\n  if (that._l23_a > epsilon) {\n    var b = 2 * that._l23_2a + 3 * that._l23_a * that._l12_a + that._l12_2a,\n        m = 3 * that._l23_a * (that._l23_a + that._l12_a);\n    x2 = (x2 * b + that._x1 * that._l23_2a - x * that._l12_2a) / m;\n    y2 = (y2 * b + that._y1 * that._l23_2a - y * that._l12_2a) / m;\n  }\n\n  that._context.bezierCurveTo(x1, y1, x2, y2, that._x2, that._y2);\n}\n\nfunction CatmullRom(context, alpha) {\n  this._context = context;\n  this._alpha = alpha;\n}\n\nCatmullRom.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 = this._x2 =\n    this._y0 = this._y1 = this._y2 = NaN;\n    this._l01_a = this._l12_a = this._l23_a =\n    this._l01_2a = this._l12_2a = this._l23_2a =\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 2: this._context.lineTo(this._x2, this._y2); break;\n      case 3: this.point(this._x2, this._y2); break;\n    }\n    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n\n    if (this._point) {\n      var x23 = this._x2 - x,\n          y23 = this._y2 - y;\n      this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n    }\n\n    switch (this._point) {\n      case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n      case 1: this._point = 2; break;\n      case 2: this._point = 3; // proceed\n      default: point(this, x, y); break;\n    }\n\n    this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n    this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n    this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n    this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n  }\n};\n\nexport default (function custom(alpha) {\n\n  function catmullRom(context) {\n    return alpha ? new CatmullRom(context, alpha) : new Cardinal(context, 0);\n  }\n\n  catmullRom.alpha = function(alpha) {\n    return custom(+alpha);\n  };\n\n  return catmullRom;\n})(0.5);\n","import {CardinalClosed} from \"./cardinalClosed.js\";\nimport noop from \"../noop.js\";\nimport {point} from \"./catmullRom.js\";\n\nfunction CatmullRomClosed(context, alpha) {\n  this._context = context;\n  this._alpha = alpha;\n}\n\nCatmullRomClosed.prototype = {\n  areaStart: noop,\n  areaEnd: noop,\n  lineStart: function() {\n    this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n    this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n    this._l01_a = this._l12_a = this._l23_a =\n    this._l01_2a = this._l12_2a = this._l23_2a =\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 1: {\n        this._context.moveTo(this._x3, this._y3);\n        this._context.closePath();\n        break;\n      }\n      case 2: {\n        this._context.lineTo(this._x3, this._y3);\n        this._context.closePath();\n        break;\n      }\n      case 3: {\n        this.point(this._x3, this._y3);\n        this.point(this._x4, this._y4);\n        this.point(this._x5, this._y5);\n        break;\n      }\n    }\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n\n    if (this._point) {\n      var x23 = this._x2 - x,\n          y23 = this._y2 - y;\n      this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n    }\n\n    switch (this._point) {\n      case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n      case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n      case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n      default: point(this, x, y); break;\n    }\n\n    this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n    this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n    this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n    this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n  }\n};\n\nexport default (function custom(alpha) {\n\n  function catmullRom(context) {\n    return alpha ? new CatmullRomClosed(context, alpha) : new CardinalClosed(context, 0);\n  }\n\n  catmullRom.alpha = function(alpha) {\n    return custom(+alpha);\n  };\n\n  return catmullRom;\n})(0.5);\n","import {CardinalOpen} from \"./cardinalOpen.js\";\nimport {point} from \"./catmullRom.js\";\n\nfunction CatmullRomOpen(context, alpha) {\n  this._context = context;\n  this._alpha = alpha;\n}\n\nCatmullRomOpen.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 = this._x2 =\n    this._y0 = this._y1 = this._y2 = NaN;\n    this._l01_a = this._l12_a = this._l23_a =\n    this._l01_2a = this._l12_2a = this._l23_2a =\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n\n    if (this._point) {\n      var x23 = this._x2 - x,\n          y23 = this._y2 - y;\n      this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n    }\n\n    switch (this._point) {\n      case 0: this._point = 1; break;\n      case 1: this._point = 2; break;\n      case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n      case 3: this._point = 4; // proceed\n      default: point(this, x, y); break;\n    }\n\n    this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n    this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n    this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n    this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n  }\n};\n\nexport default (function custom(alpha) {\n\n  function catmullRom(context) {\n    return alpha ? new CatmullRomOpen(context, alpha) : new CardinalOpen(context, 0);\n  }\n\n  catmullRom.alpha = function(alpha) {\n    return custom(+alpha);\n  };\n\n  return catmullRom;\n})(0.5);\n","function Linear(context) {\n  this._context = context;\n}\n\nLinear.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n      case 1: this._point = 2; // proceed\n      default: this._context.lineTo(x, y); break;\n    }\n  }\n};\n\nexport default function(context) {\n  return new Linear(context);\n}\n","import noop from \"../noop.js\";\n\nfunction LinearClosed(context) {\n  this._context = context;\n}\n\nLinearClosed.prototype = {\n  areaStart: noop,\n  areaEnd: noop,\n  lineStart: function() {\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._point) this._context.closePath();\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    if (this._point) this._context.lineTo(x, y);\n    else this._point = 1, this._context.moveTo(x, y);\n  }\n};\n\nexport default function(context) {\n  return new LinearClosed(context);\n}\n","function sign(x) {\n  return x < 0 ? -1 : 1;\n}\n\n// Calculate the slopes of the tangents (Hermite-type interpolation) based on\n// the following paper: Steffen, M. 1990. A Simple Method for Monotonic\n// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.\n// NOV(II), P. 443, 1990.\nfunction slope3(that, x2, y2) {\n  var h0 = that._x1 - that._x0,\n      h1 = x2 - that._x1,\n      s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0),\n      s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0),\n      p = (s0 * h1 + s1 * h0) / (h0 + h1);\n  return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n}\n\n// Calculate a one-sided slope.\nfunction slope2(that, t) {\n  var h = that._x1 - that._x0;\n  return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t;\n}\n\n// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n// \"you can express cubic Hermite interpolation in terms of cubic Bézier curves\n// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\nfunction point(that, t0, t1) {\n  var x0 = that._x0,\n      y0 = that._y0,\n      x1 = that._x1,\n      y1 = that._y1,\n      dx = (x1 - x0) / 3;\n  that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1);\n}\n\nfunction MonotoneX(context) {\n  this._context = context;\n}\n\nMonotoneX.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 =\n    this._y0 = this._y1 =\n    this._t0 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 2: this._context.lineTo(this._x1, this._y1); break;\n      case 3: point(this, this._t0, slope2(this, this._t0)); break;\n    }\n    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    var t1 = NaN;\n\n    x = +x, y = +y;\n    if (x === this._x1 && y === this._y1) return; // Ignore coincident points.\n    switch (this._point) {\n      case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n      case 1: this._point = 2; break;\n      case 2: this._point = 3; point(this, slope2(this, t1 = slope3(this, x, y)), t1); break;\n      default: point(this, this._t0, t1 = slope3(this, x, y)); break;\n    }\n\n    this._x0 = this._x1, this._x1 = x;\n    this._y0 = this._y1, this._y1 = y;\n    this._t0 = t1;\n  }\n}\n\nfunction MonotoneY(context) {\n  this._context = new ReflectContext(context);\n}\n\n(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) {\n  MonotoneX.prototype.point.call(this, y, x);\n};\n\nfunction ReflectContext(context) {\n  this._context = context;\n}\n\nReflectContext.prototype = {\n  moveTo: function(x, y) { this._context.moveTo(y, x); },\n  closePath: function() { this._context.closePath(); },\n  lineTo: function(x, y) { this._context.lineTo(y, x); },\n  bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); }\n};\n\nexport function monotoneX(context) {\n  return new MonotoneX(context);\n}\n\nexport function monotoneY(context) {\n  return new MonotoneY(context);\n}\n","function Natural(context) {\n  this._context = context;\n}\n\nNatural.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x = [];\n    this._y = [];\n  },\n  lineEnd: function() {\n    var x = this._x,\n        y = this._y,\n        n = x.length;\n\n    if (n) {\n      this._line ? this._context.lineTo(x[0], y[0]) : this._context.moveTo(x[0], y[0]);\n      if (n === 2) {\n        this._context.lineTo(x[1], y[1]);\n      } else {\n        var px = controlPoints(x),\n            py = controlPoints(y);\n        for (var i0 = 0, i1 = 1; i1 < n; ++i0, ++i1) {\n          this._context.bezierCurveTo(px[0][i0], py[0][i0], px[1][i0], py[1][i0], x[i1], y[i1]);\n        }\n      }\n    }\n\n    if (this._line || (this._line !== 0 && n === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n    this._x = this._y = null;\n  },\n  point: function(x, y) {\n    this._x.push(+x);\n    this._y.push(+y);\n  }\n};\n\n// See https://www.particleincell.com/2012/bezier-splines/ for derivation.\nfunction controlPoints(x) {\n  var i,\n      n = x.length - 1,\n      m,\n      a = new Array(n),\n      b = new Array(n),\n      r = new Array(n);\n  a[0] = 0, b[0] = 2, r[0] = x[0] + 2 * x[1];\n  for (i = 1; i < n - 1; ++i) a[i] = 1, b[i] = 4, r[i] = 4 * x[i] + 2 * x[i + 1];\n  a[n - 1] = 2, b[n - 1] = 7, r[n - 1] = 8 * x[n - 1] + x[n];\n  for (i = 1; i < n; ++i) m = a[i] / b[i - 1], b[i] -= m, r[i] -= m * r[i - 1];\n  a[n - 1] = r[n - 1] / b[n - 1];\n  for (i = n - 2; i >= 0; --i) a[i] = (r[i] - a[i + 1]) / b[i];\n  b[n - 1] = (x[n] + a[n - 1]) / 2;\n  for (i = 0; i < n - 1; ++i) b[i] = 2 * x[i + 1] - a[i + 1];\n  return [a, b];\n}\n\nexport default function(context) {\n  return new Natural(context);\n}\n","import curveLinear from \"./linear.js\";\n\nexport var curveRadialLinear = curveRadial(curveLinear);\n\nfunction Radial(curve) {\n  this._curve = curve;\n}\n\nRadial.prototype = {\n  areaStart: function() {\n    this._curve.areaStart();\n  },\n  areaEnd: function() {\n    this._curve.areaEnd();\n  },\n  lineStart: function() {\n    this._curve.lineStart();\n  },\n  lineEnd: function() {\n    this._curve.lineEnd();\n  },\n  point: function(a, r) {\n    this._curve.point(r * Math.sin(a), r * -Math.cos(a));\n  }\n};\n\nexport default function curveRadial(curve) {\n\n  function radial(context) {\n    return new Radial(curve(context));\n  }\n\n  radial._curve = curve;\n\n  return radial;\n}\n","function Step(context, t) {\n  this._context = context;\n  this._t = t;\n}\n\nStep.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x = this._y = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y);\n    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n    if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n      case 1: this._point = 2; // proceed\n      default: {\n        if (this._t <= 0) {\n          this._context.lineTo(this._x, y);\n          this._context.lineTo(x, y);\n        } else {\n          var x1 = this._x * (1 - this._t) + x * this._t;\n          this._context.lineTo(x1, this._y);\n          this._context.lineTo(x1, y);\n        }\n        break;\n      }\n    }\n    this._x = x, this._y = y;\n  }\n};\n\nexport default function(context) {\n  return new Step(context, 0.5);\n}\n\nexport function stepBefore(context) {\n  return new Step(context, 0);\n}\n\nexport function stepAfter(context) {\n  return new Step(context, 1);\n}\n","export default function(a, b) {\n  return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}\n","export default function(d) {\n  return d;\n}\n","export {default as arc} from \"./arc.js\";\nexport {default as area} from \"./area.js\";\nexport {default as line} from \"./line.js\";\nexport {default as pie} from \"./pie.js\";\nexport {default as areaRadial, default as radialArea} from \"./areaRadial.js\"; // Note: radialArea is deprecated!\nexport {default as lineRadial, default as radialLine} from \"./lineRadial.js\"; // Note: radialLine is deprecated!\nexport {default as pointRadial} from \"./pointRadial.js\";\nexport {linkHorizontal, linkVertical, linkRadial} from \"./link/index.js\";\n\nexport {default as symbol, symbols} from \"./symbol.js\";\nexport {default as symbolCircle} from \"./symbol/circle.js\";\nexport {default as symbolCross} from \"./symbol/cross.js\";\nexport {default as symbolDiamond} from \"./symbol/diamond.js\";\nexport {default as symbolSquare} from \"./symbol/square.js\";\nexport {default as symbolStar} from \"./symbol/star.js\";\nexport {default as symbolTriangle} from \"./symbol/triangle.js\";\nexport {default as symbolWye} from \"./symbol/wye.js\";\n\nexport {default as curveBasisClosed} from \"./curve/basisClosed.js\";\nexport {default as curveBasisOpen} from \"./curve/basisOpen.js\";\nexport {default as curveBasis} from \"./curve/basis.js\";\nexport {default as curveBundle} from \"./curve/bundle.js\";\nexport {default as curveCardinalClosed} from \"./curve/cardinalClosed.js\";\nexport {default as curveCardinalOpen} from \"./curve/cardinalOpen.js\";\nexport {default as curveCardinal} from \"./curve/cardinal.js\";\nexport {default as curveCatmullRomClosed} from \"./curve/catmullRomClosed.js\";\nexport {default as curveCatmullRomOpen} from \"./curve/catmullRomOpen.js\";\nexport {default as curveCatmullRom} from \"./curve/catmullRom.js\";\nexport {default as curveLinearClosed} from \"./curve/linearClosed.js\";\nexport {default as curveLinear} from \"./curve/linear.js\";\nexport {monotoneX as curveMonotoneX, monotoneY as curveMonotoneY} from \"./curve/monotone.js\";\nexport {default as curveNatural} from \"./curve/natural.js\";\nexport {default as curveStep, stepAfter as curveStepAfter, stepBefore as curveStepBefore} from \"./curve/step.js\";\n\nexport {default as stack} from \"./stack.js\";\nexport {default as stackOffsetExpand} from \"./offset/expand.js\";\nexport {default as stackOffsetDiverging} from \"./offset/diverging.js\";\nexport {default as stackOffsetNone} from \"./offset/none.js\";\nexport {default as stackOffsetSilhouette} from \"./offset/silhouette.js\";\nexport {default as stackOffsetWiggle} from \"./offset/wiggle.js\";\nexport {default as stackOrderAppearance} from \"./order/appearance.js\";\nexport {default as stackOrderAscending} from \"./order/ascending.js\";\nexport {default as stackOrderDescending} from \"./order/descending.js\";\nexport {default as stackOrderInsideOut} from \"./order/insideOut.js\";\nexport {default as stackOrderNone} from \"./order/none.js\";\nexport {default as stackOrderReverse} from \"./order/reverse.js\";\n","import {path} from \"d3-path\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function() {\n  var x = pointX,\n      y = pointY,\n      defined = constant(true),\n      context = null,\n      curve = curveLinear,\n      output = null;\n\n  function line(data) {\n    var i,\n        n = data.length,\n        d,\n        defined0 = false,\n        buffer;\n\n    if (context == null) output = curve(buffer = path());\n\n    for (i = 0; i <= n; ++i) {\n      if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n        if (defined0 = !defined0) output.lineStart();\n        else output.lineEnd();\n      }\n      if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n    }\n\n    if (buffer) return output = null, buffer + \"\" || null;\n  }\n\n  line.x = function(_) {\n    return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n  };\n\n  line.y = function(_) {\n    return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n  };\n\n  line.defined = function(_) {\n    return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n  };\n\n  line.curve = function(_) {\n    return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n  };\n\n  line.context = function(_) {\n    return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n  };\n\n  return line;\n}\n","import curveRadial, {curveRadialLinear} from \"./curve/radial.js\";\nimport line from \"./line.js\";\n\nexport function lineRadial(l) {\n  var c = l.curve;\n\n  l.angle = l.x, delete l.x;\n  l.radius = l.y, delete l.y;\n\n  l.curve = function(_) {\n    return arguments.length ? c(curveRadial(_)) : c()._curve;\n  };\n\n  return l;\n}\n\nexport default function() {\n  return lineRadial(line().curve(curveRadialLinear));\n}\n","import {path} from \"d3-path\";\nimport {slice} from \"../array.js\";\nimport constant from \"../constant.js\";\nimport {x as pointX, y as pointY} from \"../point.js\";\nimport pointRadial from \"../pointRadial.js\";\n\nfunction linkSource(d) {\n  return d.source;\n}\n\nfunction linkTarget(d) {\n  return d.target;\n}\n\nfunction link(curve) {\n  var source = linkSource,\n      target = linkTarget,\n      x = pointX,\n      y = pointY,\n      context = null;\n\n  function link() {\n    var buffer, argv = slice.call(arguments), s = source.apply(this, argv), t = target.apply(this, argv);\n    if (!context) context = buffer = path();\n    curve(context, +x.apply(this, (argv[0] = s, argv)), +y.apply(this, argv), +x.apply(this, (argv[0] = t, argv)), +y.apply(this, argv));\n    if (buffer) return context = null, buffer + \"\" || null;\n  }\n\n  link.source = function(_) {\n    return arguments.length ? (source = _, link) : source;\n  };\n\n  link.target = function(_) {\n    return arguments.length ? (target = _, link) : target;\n  };\n\n  link.x = function(_) {\n    return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), link) : x;\n  };\n\n  link.y = function(_) {\n    return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), link) : y;\n  };\n\n  link.context = function(_) {\n    return arguments.length ? ((context = _ == null ? null : _), link) : context;\n  };\n\n  return link;\n}\n\nfunction curveHorizontal(context, x0, y0, x1, y1) {\n  context.moveTo(x0, y0);\n  context.bezierCurveTo(x0 = (x0 + x1) / 2, y0, x0, y1, x1, y1);\n}\n\nfunction curveVertical(context, x0, y0, x1, y1) {\n  context.moveTo(x0, y0);\n  context.bezierCurveTo(x0, y0 = (y0 + y1) / 2, x1, y0, x1, y1);\n}\n\nfunction curveRadial(context, x0, y0, x1, y1) {\n  var p0 = pointRadial(x0, y0),\n      p1 = pointRadial(x0, y0 = (y0 + y1) / 2),\n      p2 = pointRadial(x1, y0),\n      p3 = pointRadial(x1, y1);\n  context.moveTo(p0[0], p0[1]);\n  context.bezierCurveTo(p1[0], p1[1], p2[0], p2[1], p3[0], p3[1]);\n}\n\nexport function linkHorizontal() {\n  return link(curveHorizontal);\n}\n\nexport function linkVertical() {\n  return link(curveVertical);\n}\n\nexport function linkRadial() {\n  var l = link(curveRadial);\n  l.angle = l.x, delete l.x;\n  l.radius = l.y, delete l.y;\n  return l;\n}\n","export var abs = Math.abs;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var max = Math.max;\nexport var min = Math.min;\nexport var sin = Math.sin;\nexport var sqrt = Math.sqrt;\n\nexport var epsilon = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = 2 * pi;\n\nexport function acos(x) {\n  return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n  return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n","export default function() {}\n","export default function(series, order) {\n  if (!((n = series.length) > 0)) return;\n  for (var i, j = 0, d, dy, yp, yn, n, m = series[order[0]].length; j < m; ++j) {\n    for (yp = yn = 0, i = 0; i < n; ++i) {\n      if ((dy = (d = series[order[i]][j])[1] - d[0]) > 0) {\n        d[0] = yp, d[1] = yp += dy;\n      } else if (dy < 0) {\n        d[1] = yn, d[0] = yn += dy;\n      } else {\n        d[0] = 0, d[1] = dy;\n      }\n    }\n  }\n}\n","import none from \"./none.js\";\n\nexport default function(series, order) {\n  if (!((n = series.length) > 0)) return;\n  for (var i, n, j = 0, m = series[0].length, y; j < m; ++j) {\n    for (y = i = 0; i < n; ++i) y += series[i][j][1] || 0;\n    if (y) for (i = 0; i < n; ++i) series[i][j][1] /= y;\n  }\n  none(series, order);\n}\n","export default function(series, order) {\n  if (!((n = series.length) > 1)) return;\n  for (var i = 1, j, s0, s1 = series[order[0]], n, m = s1.length; i < n; ++i) {\n    s0 = s1, s1 = series[order[i]];\n    for (j = 0; j < m; ++j) {\n      s1[j][1] += s1[j][0] = isNaN(s0[j][1]) ? s0[j][0] : s0[j][1];\n    }\n  }\n}\n","import none from \"./none.js\";\n\nexport default function(series, order) {\n  if (!((n = series.length) > 0)) return;\n  for (var j = 0, s0 = series[order[0]], n, m = s0.length; j < m; ++j) {\n    for (var i = 0, y = 0; i < n; ++i) y += series[i][j][1] || 0;\n    s0[j][1] += s0[j][0] = -y / 2;\n  }\n  none(series, order);\n}\n","import none from \"./none.js\";\n\nexport default function(series, order) {\n  if (!((n = series.length) > 0) || !((m = (s0 = series[order[0]]).length) > 0)) return;\n  for (var y = 0, j = 1, s0, m, n; j < m; ++j) {\n    for (var i = 0, s1 = 0, s2 = 0; i < n; ++i) {\n      var si = series[order[i]],\n          sij0 = si[j][1] || 0,\n          sij1 = si[j - 1][1] || 0,\n          s3 = (sij0 - sij1) / 2;\n      for (var k = 0; k < i; ++k) {\n        var sk = series[order[k]],\n            skj0 = sk[j][1] || 0,\n            skj1 = sk[j - 1][1] || 0;\n        s3 += skj0 - skj1;\n      }\n      s1 += sij0, s2 += s3 * sij0;\n    }\n    s0[j - 1][1] += s0[j - 1][0] = y;\n    if (s1) y -= s2 / s1;\n  }\n  s0[j - 1][1] += s0[j - 1][0] = y;\n  none(series, order);\n}\n","import none from \"./none.js\";\n\nexport default function(series) {\n  var peaks = series.map(peak);\n  return none(series).sort(function(a, b) { return peaks[a] - peaks[b]; });\n}\n\nfunction peak(series) {\n  var i = -1, j = 0, n = series.length, vi, vj = -Infinity;\n  while (++i < n) if ((vi = +series[i][1]) > vj) vj = vi, j = i;\n  return j;\n}\n","import none from \"./none.js\";\n\nexport default function(series) {\n  var sums = series.map(sum);\n  return none(series).sort(function(a, b) { return sums[a] - sums[b]; });\n}\n\nexport function sum(series) {\n  var s = 0, i = -1, n = series.length, v;\n  while (++i < n) if (v = +series[i][1]) s += v;\n  return s;\n}\n","import ascending from \"./ascending.js\";\n\nexport default function(series) {\n  return ascending(series).reverse();\n}\n","import appearance from \"./appearance.js\";\nimport {sum} from \"./ascending.js\";\n\nexport default function(series) {\n  var n = series.length,\n      i,\n      j,\n      sums = series.map(sum),\n      order = appearance(series),\n      top = 0,\n      bottom = 0,\n      tops = [],\n      bottoms = [];\n\n  for (i = 0; i < n; ++i) {\n    j = order[i];\n    if (top < bottom) {\n      top += sums[j];\n      tops.push(j);\n    } else {\n      bottom += sums[j];\n      bottoms.push(j);\n    }\n  }\n\n  return bottoms.reverse().concat(tops);\n}\n","export default function(series) {\n  var n = series.length, o = new Array(n);\n  while (--n >= 0) o[n] = n;\n  return o;\n}\n","import none from \"./none.js\";\n\nexport default function(series) {\n  return none(series).reverse();\n}\n","import constant from \"./constant.js\";\nimport descending from \"./descending.js\";\nimport identity from \"./identity.js\";\nimport {tau} from \"./math.js\";\n\nexport default function() {\n  var value = identity,\n      sortValues = descending,\n      sort = null,\n      startAngle = constant(0),\n      endAngle = constant(tau),\n      padAngle = constant(0);\n\n  function pie(data) {\n    var i,\n        n = data.length,\n        j,\n        k,\n        sum = 0,\n        index = new Array(n),\n        arcs = new Array(n),\n        a0 = +startAngle.apply(this, arguments),\n        da = Math.min(tau, Math.max(-tau, endAngle.apply(this, arguments) - a0)),\n        a1,\n        p = Math.min(Math.abs(da) / n, padAngle.apply(this, arguments)),\n        pa = p * (da < 0 ? -1 : 1),\n        v;\n\n    for (i = 0; i < n; ++i) {\n      if ((v = arcs[index[i] = i] = +value(data[i], i, data)) > 0) {\n        sum += v;\n      }\n    }\n\n    // Optionally sort the arcs by previously-computed values or by data.\n    if (sortValues != null) index.sort(function(i, j) { return sortValues(arcs[i], arcs[j]); });\n    else if (sort != null) index.sort(function(i, j) { return sort(data[i], data[j]); });\n\n    // Compute the arcs! They are stored in the original data's order.\n    for (i = 0, k = sum ? (da - n * pa) / sum : 0; i < n; ++i, a0 = a1) {\n      j = index[i], v = arcs[j], a1 = a0 + (v > 0 ? v * k : 0) + pa, arcs[j] = {\n        data: data[j],\n        index: i,\n        value: v,\n        startAngle: a0,\n        endAngle: a1,\n        padAngle: p\n      };\n    }\n\n    return arcs;\n  }\n\n  pie.value = function(_) {\n    return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), pie) : value;\n  };\n\n  pie.sortValues = function(_) {\n    return arguments.length ? (sortValues = _, sort = null, pie) : sortValues;\n  };\n\n  pie.sort = function(_) {\n    return arguments.length ? (sort = _, sortValues = null, pie) : sort;\n  };\n\n  pie.startAngle = function(_) {\n    return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : startAngle;\n  };\n\n  pie.endAngle = function(_) {\n    return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : endAngle;\n  };\n\n  pie.padAngle = function(_) {\n    return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : padAngle;\n  };\n\n  return pie;\n}\n","export function x(p) {\n  return p[0];\n}\n\nexport function y(p) {\n  return p[1];\n}\n","export default function(x, y) {\n  return [(y = +y) * Math.cos(x -= Math.PI / 2), y * Math.sin(x)];\n}\n","import {slice} from \"./array.js\";\nimport constant from \"./constant.js\";\nimport offsetNone from \"./offset/none.js\";\nimport orderNone from \"./order/none.js\";\n\nfunction stackValue(d, key) {\n  return d[key];\n}\n\nexport default function() {\n  var keys = constant([]),\n      order = orderNone,\n      offset = offsetNone,\n      value = stackValue;\n\n  function stack(data) {\n    var kz = keys.apply(this, arguments),\n        i,\n        m = data.length,\n        n = kz.length,\n        sz = new Array(n),\n        oz;\n\n    for (i = 0; i < n; ++i) {\n      for (var ki = kz[i], si = sz[i] = new Array(m), j = 0, sij; j < m; ++j) {\n        si[j] = sij = [0, +value(data[j], ki, j, data)];\n        sij.data = data[j];\n      }\n      si.key = ki;\n    }\n\n    for (i = 0, oz = order(sz); i < n; ++i) {\n      sz[oz[i]].index = i;\n    }\n\n    offset(sz, oz);\n    return sz;\n  }\n\n  stack.keys = function(_) {\n    return arguments.length ? (keys = typeof _ === \"function\" ? _ : constant(slice.call(_)), stack) : keys;\n  };\n\n  stack.value = function(_) {\n    return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), stack) : value;\n  };\n\n  stack.order = function(_) {\n    return arguments.length ? (order = _ == null ? orderNone : typeof _ === \"function\" ? _ : constant(slice.call(_)), stack) : order;\n  };\n\n  stack.offset = function(_) {\n    return arguments.length ? (offset = _ == null ? offsetNone : _, stack) : offset;\n  };\n\n  return stack;\n}\n","import {path} from \"d3-path\";\nimport circle from \"./symbol/circle.js\";\nimport cross from \"./symbol/cross.js\";\nimport diamond from \"./symbol/diamond.js\";\nimport star from \"./symbol/star.js\";\nimport square from \"./symbol/square.js\";\nimport triangle from \"./symbol/triangle.js\";\nimport wye from \"./symbol/wye.js\";\nimport constant from \"./constant.js\";\n\nexport var symbols = [\n  circle,\n  cross,\n  diamond,\n  square,\n  star,\n  triangle,\n  wye\n];\n\nexport default function() {\n  var type = constant(circle),\n      size = constant(64),\n      context = null;\n\n  function symbol() {\n    var buffer;\n    if (!context) context = buffer = path();\n    type.apply(this, arguments).draw(context, +size.apply(this, arguments));\n    if (buffer) return context = null, buffer + \"\" || null;\n  }\n\n  symbol.type = function(_) {\n    return arguments.length ? (type = typeof _ === \"function\" ? _ : constant(_), symbol) : type;\n  };\n\n  symbol.size = function(_) {\n    return arguments.length ? (size = typeof _ === \"function\" ? _ : constant(+_), symbol) : size;\n  };\n\n  symbol.context = function(_) {\n    return arguments.length ? (context = _ == null ? null : _, symbol) : context;\n  };\n\n  return symbol;\n}\n","import {pi, tau} from \"../math.js\";\n\nexport default {\n  draw: function(context, size) {\n    var r = Math.sqrt(size / pi);\n    context.moveTo(r, 0);\n    context.arc(0, 0, r, 0, tau);\n  }\n};\n","export default {\n  draw: function(context, size) {\n    var r = Math.sqrt(size / 5) / 2;\n    context.moveTo(-3 * r, -r);\n    context.lineTo(-r, -r);\n    context.lineTo(-r, -3 * r);\n    context.lineTo(r, -3 * r);\n    context.lineTo(r, -r);\n    context.lineTo(3 * r, -r);\n    context.lineTo(3 * r, r);\n    context.lineTo(r, r);\n    context.lineTo(r, 3 * r);\n    context.lineTo(-r, 3 * r);\n    context.lineTo(-r, r);\n    context.lineTo(-3 * r, r);\n    context.closePath();\n  }\n};\n","var tan30 = Math.sqrt(1 / 3),\n    tan30_2 = tan30 * 2;\n\nexport default {\n  draw: function(context, size) {\n    var y = Math.sqrt(size / tan30_2),\n        x = y * tan30;\n    context.moveTo(0, -y);\n    context.lineTo(x, 0);\n    context.lineTo(0, y);\n    context.lineTo(-x, 0);\n    context.closePath();\n  }\n};\n","export default {\n  draw: function(context, size) {\n    var w = Math.sqrt(size),\n        x = -w / 2;\n    context.rect(x, x, w, w);\n  }\n};\n","import {pi, tau} from \"../math.js\";\n\nvar ka = 0.89081309152928522810,\n    kr = Math.sin(pi / 10) / Math.sin(7 * pi / 10),\n    kx = Math.sin(tau / 10) * kr,\n    ky = -Math.cos(tau / 10) * kr;\n\nexport default {\n  draw: function(context, size) {\n    var r = Math.sqrt(size * ka),\n        x = kx * r,\n        y = ky * r;\n    context.moveTo(0, -r);\n    context.lineTo(x, y);\n    for (var i = 1; i < 5; ++i) {\n      var a = tau * i / 5,\n          c = Math.cos(a),\n          s = Math.sin(a);\n      context.lineTo(s * r, -c * r);\n      context.lineTo(c * x - s * y, s * x + c * y);\n    }\n    context.closePath();\n  }\n};\n","var sqrt3 = Math.sqrt(3);\n\nexport default {\n  draw: function(context, size) {\n    var y = -Math.sqrt(size / (sqrt3 * 3));\n    context.moveTo(0, y * 2);\n    context.lineTo(-sqrt3 * y, -y);\n    context.lineTo(sqrt3 * y, -y);\n    context.closePath();\n  }\n};\n","var c = -0.5,\n    s = Math.sqrt(3) / 2,\n    k = 1 / Math.sqrt(12),\n    a = (k / 2 + 1) * 3;\n\nexport default {\n  draw: function(context, size) {\n    var r = Math.sqrt(size / a),\n        x0 = r / 2,\n        y0 = r * k,\n        x1 = x0,\n        y1 = r * k + r,\n        x2 = -x1,\n        y2 = y1;\n    context.moveTo(x0, y0);\n    context.lineTo(x1, y1);\n    context.lineTo(x2, y2);\n    context.lineTo(c * x0 - s * y0, s * x0 + c * y0);\n    context.lineTo(c * x1 - s * y1, s * x1 + c * y1);\n    context.lineTo(c * x2 - s * y2, s * x2 + c * y2);\n    context.lineTo(c * x0 + s * y0, c * y0 - s * x0);\n    context.lineTo(c * x1 + s * y1, c * y1 - s * x1);\n    context.lineTo(c * x2 + s * y2, c * y2 - s * x2);\n    context.closePath();\n  }\n};\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n  dateTime: \"%x, %X\",\n  date: \"%-m/%-d/%Y\",\n  time: \"%-I:%M:%S %p\",\n  periods: [\"AM\", \"PM\"],\n  days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n  shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n  months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n  shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n  locale = formatLocale(definition);\n  timeFormat = locale.format;\n  timeParse = locale.parse;\n  utcFormat = locale.utcFormat;\n  utcParse = locale.utcParse;\n  return locale;\n}\n","export {default as timeFormatDefaultLocale, timeFormat, timeParse, utcFormat, utcParse} from \"./defaultLocale.js\";\nexport {default as timeFormatLocale} from \"./locale.js\";\nexport {default as isoFormat} from \"./isoFormat.js\";\nexport {default as isoParse} from \"./isoParse.js\";\n","import {utcFormat} from \"./defaultLocale.js\";\n\nexport var isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\nfunction formatIsoNative(date) {\n  return date.toISOString();\n}\n\nvar formatIso = Date.prototype.toISOString\n    ? formatIsoNative\n    : utcFormat(isoSpecifier);\n\nexport default formatIso;\n","import {isoSpecifier} from \"./isoFormat.js\";\nimport {utcParse} from \"./defaultLocale.js\";\n\nfunction parseIsoNative(string) {\n  var date = new Date(string);\n  return isNaN(date) ? null : date;\n}\n\nvar parseIso = +new Date(\"2000-01-01T00:00:00.000Z\")\n    ? parseIsoNative\n    : utcParse(isoSpecifier);\n\nexport default parseIso;\n","import {\n  timeDay,\n  timeSunday,\n  timeMonday,\n  timeThursday,\n  timeYear,\n  utcDay,\n  utcSunday,\n  utcMonday,\n  utcThursday,\n  utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n  if (0 <= d.y && d.y < 100) {\n    var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n    date.setFullYear(d.y);\n    return date;\n  }\n  return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n  if (0 <= d.y && d.y < 100) {\n    var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n    date.setUTCFullYear(d.y);\n    return date;\n  }\n  return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n  return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n  var locale_dateTime = locale.dateTime,\n      locale_date = locale.date,\n      locale_time = locale.time,\n      locale_periods = locale.periods,\n      locale_weekdays = locale.days,\n      locale_shortWeekdays = locale.shortDays,\n      locale_months = locale.months,\n      locale_shortMonths = locale.shortMonths;\n\n  var periodRe = formatRe(locale_periods),\n      periodLookup = formatLookup(locale_periods),\n      weekdayRe = formatRe(locale_weekdays),\n      weekdayLookup = formatLookup(locale_weekdays),\n      shortWeekdayRe = formatRe(locale_shortWeekdays),\n      shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n      monthRe = formatRe(locale_months),\n      monthLookup = formatLookup(locale_months),\n      shortMonthRe = formatRe(locale_shortMonths),\n      shortMonthLookup = formatLookup(locale_shortMonths);\n\n  var formats = {\n    \"a\": formatShortWeekday,\n    \"A\": formatWeekday,\n    \"b\": formatShortMonth,\n    \"B\": formatMonth,\n    \"c\": null,\n    \"d\": formatDayOfMonth,\n    \"e\": formatDayOfMonth,\n    \"f\": formatMicroseconds,\n    \"H\": formatHour24,\n    \"I\": formatHour12,\n    \"j\": formatDayOfYear,\n    \"L\": formatMilliseconds,\n    \"m\": formatMonthNumber,\n    \"M\": formatMinutes,\n    \"p\": formatPeriod,\n    \"q\": formatQuarter,\n    \"Q\": formatUnixTimestamp,\n    \"s\": formatUnixTimestampSeconds,\n    \"S\": formatSeconds,\n    \"u\": formatWeekdayNumberMonday,\n    \"U\": formatWeekNumberSunday,\n    \"V\": formatWeekNumberISO,\n    \"w\": formatWeekdayNumberSunday,\n    \"W\": formatWeekNumberMonday,\n    \"x\": null,\n    \"X\": null,\n    \"y\": formatYear,\n    \"Y\": formatFullYear,\n    \"Z\": formatZone,\n    \"%\": formatLiteralPercent\n  };\n\n  var utcFormats = {\n    \"a\": formatUTCShortWeekday,\n    \"A\": formatUTCWeekday,\n    \"b\": formatUTCShortMonth,\n    \"B\": formatUTCMonth,\n    \"c\": null,\n    \"d\": formatUTCDayOfMonth,\n    \"e\": formatUTCDayOfMonth,\n    \"f\": formatUTCMicroseconds,\n    \"H\": formatUTCHour24,\n    \"I\": formatUTCHour12,\n    \"j\": formatUTCDayOfYear,\n    \"L\": formatUTCMilliseconds,\n    \"m\": formatUTCMonthNumber,\n    \"M\": formatUTCMinutes,\n    \"p\": formatUTCPeriod,\n    \"q\": formatUTCQuarter,\n    \"Q\": formatUnixTimestamp,\n    \"s\": formatUnixTimestampSeconds,\n    \"S\": formatUTCSeconds,\n    \"u\": formatUTCWeekdayNumberMonday,\n    \"U\": formatUTCWeekNumberSunday,\n    \"V\": formatUTCWeekNumberISO,\n    \"w\": formatUTCWeekdayNumberSunday,\n    \"W\": formatUTCWeekNumberMonday,\n    \"x\": null,\n    \"X\": null,\n    \"y\": formatUTCYear,\n    \"Y\": formatUTCFullYear,\n    \"Z\": formatUTCZone,\n    \"%\": formatLiteralPercent\n  };\n\n  var parses = {\n    \"a\": parseShortWeekday,\n    \"A\": parseWeekday,\n    \"b\": parseShortMonth,\n    \"B\": parseMonth,\n    \"c\": parseLocaleDateTime,\n    \"d\": parseDayOfMonth,\n    \"e\": parseDayOfMonth,\n    \"f\": parseMicroseconds,\n    \"H\": parseHour24,\n    \"I\": parseHour24,\n    \"j\": parseDayOfYear,\n    \"L\": parseMilliseconds,\n    \"m\": parseMonthNumber,\n    \"M\": parseMinutes,\n    \"p\": parsePeriod,\n    \"q\": parseQuarter,\n    \"Q\": parseUnixTimestamp,\n    \"s\": parseUnixTimestampSeconds,\n    \"S\": parseSeconds,\n    \"u\": parseWeekdayNumberMonday,\n    \"U\": parseWeekNumberSunday,\n    \"V\": parseWeekNumberISO,\n    \"w\": parseWeekdayNumberSunday,\n    \"W\": parseWeekNumberMonday,\n    \"x\": parseLocaleDate,\n    \"X\": parseLocaleTime,\n    \"y\": parseYear,\n    \"Y\": parseFullYear,\n    \"Z\": parseZone,\n    \"%\": parseLiteralPercent\n  };\n\n  // These recursive directive definitions must be deferred.\n  formats.x = newFormat(locale_date, formats);\n  formats.X = newFormat(locale_time, formats);\n  formats.c = newFormat(locale_dateTime, formats);\n  utcFormats.x = newFormat(locale_date, utcFormats);\n  utcFormats.X = newFormat(locale_time, utcFormats);\n  utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n  function newFormat(specifier, formats) {\n    return function(date) {\n      var string = [],\n          i = -1,\n          j = 0,\n          n = specifier.length,\n          c,\n          pad,\n          format;\n\n      if (!(date instanceof Date)) date = new Date(+date);\n\n      while (++i < n) {\n        if (specifier.charCodeAt(i) === 37) {\n          string.push(specifier.slice(j, i));\n          if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n          else pad = c === \"e\" ? \" \" : \"0\";\n          if (format = formats[c]) c = format(date, pad);\n          string.push(c);\n          j = i + 1;\n        }\n      }\n\n      string.push(specifier.slice(j, i));\n      return string.join(\"\");\n    };\n  }\n\n  function newParse(specifier, Z) {\n    return function(string) {\n      var d = newDate(1900, undefined, 1),\n          i = parseSpecifier(d, specifier, string += \"\", 0),\n          week, day;\n      if (i != string.length) return null;\n\n      // If a UNIX timestamp is specified, return it.\n      if (\"Q\" in d) return new Date(d.Q);\n      if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n      // If this is utcParse, never use the local timezone.\n      if (Z && !(\"Z\" in d)) d.Z = 0;\n\n      // The am-pm flag is 0 for AM, and 1 for PM.\n      if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n      // If the month was not specified, inherit from the quarter.\n      if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n      // Convert day-of-week and week-of-year to day-of-year.\n      if (\"V\" in d) {\n        if (d.V < 1 || d.V > 53) return null;\n        if (!(\"w\" in d)) d.w = 1;\n        if (\"Z\" in d) {\n          week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n          week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n          week = utcDay.offset(week, (d.V - 1) * 7);\n          d.y = week.getUTCFullYear();\n          d.m = week.getUTCMonth();\n          d.d = week.getUTCDate() + (d.w + 6) % 7;\n        } else {\n          week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n          week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n          week = timeDay.offset(week, (d.V - 1) * 7);\n          d.y = week.getFullYear();\n          d.m = week.getMonth();\n          d.d = week.getDate() + (d.w + 6) % 7;\n        }\n      } else if (\"W\" in d || \"U\" in d) {\n        if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n        day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n        d.m = 0;\n        d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n      }\n\n      // If a time zone is specified, all fields are interpreted as UTC and then\n      // offset according to the specified time zone.\n      if (\"Z\" in d) {\n        d.H += d.Z / 100 | 0;\n        d.M += d.Z % 100;\n        return utcDate(d);\n      }\n\n      // Otherwise, all fields are in local time.\n      return localDate(d);\n    };\n  }\n\n  function parseSpecifier(d, specifier, string, j) {\n    var i = 0,\n        n = specifier.length,\n        m = string.length,\n        c,\n        parse;\n\n    while (i < n) {\n      if (j >= m) return -1;\n      c = specifier.charCodeAt(i++);\n      if (c === 37) {\n        c = specifier.charAt(i++);\n        parse = parses[c in pads ? specifier.charAt(i++) : c];\n        if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n      } else if (c != string.charCodeAt(j++)) {\n        return -1;\n      }\n    }\n\n    return j;\n  }\n\n  function parsePeriod(d, string, i) {\n    var n = periodRe.exec(string.slice(i));\n    return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n  }\n\n  function parseShortWeekday(d, string, i) {\n    var n = shortWeekdayRe.exec(string.slice(i));\n    return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n  }\n\n  function parseWeekday(d, string, i) {\n    var n = weekdayRe.exec(string.slice(i));\n    return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n  }\n\n  function parseShortMonth(d, string, i) {\n    var n = shortMonthRe.exec(string.slice(i));\n    return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n  }\n\n  function parseMonth(d, string, i) {\n    var n = monthRe.exec(string.slice(i));\n    return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n  }\n\n  function parseLocaleDateTime(d, string, i) {\n    return parseSpecifier(d, locale_dateTime, string, i);\n  }\n\n  function parseLocaleDate(d, string, i) {\n    return parseSpecifier(d, locale_date, string, i);\n  }\n\n  function parseLocaleTime(d, string, i) {\n    return parseSpecifier(d, locale_time, string, i);\n  }\n\n  function formatShortWeekday(d) {\n    return locale_shortWeekdays[d.getDay()];\n  }\n\n  function formatWeekday(d) {\n    return locale_weekdays[d.getDay()];\n  }\n\n  function formatShortMonth(d) {\n    return locale_shortMonths[d.getMonth()];\n  }\n\n  function formatMonth(d) {\n    return locale_months[d.getMonth()];\n  }\n\n  function formatPeriod(d) {\n    return locale_periods[+(d.getHours() >= 12)];\n  }\n\n  function formatQuarter(d) {\n    return 1 + ~~(d.getMonth() / 3);\n  }\n\n  function formatUTCShortWeekday(d) {\n    return locale_shortWeekdays[d.getUTCDay()];\n  }\n\n  function formatUTCWeekday(d) {\n    return locale_weekdays[d.getUTCDay()];\n  }\n\n  function formatUTCShortMonth(d) {\n    return locale_shortMonths[d.getUTCMonth()];\n  }\n\n  function formatUTCMonth(d) {\n    return locale_months[d.getUTCMonth()];\n  }\n\n  function formatUTCPeriod(d) {\n    return locale_periods[+(d.getUTCHours() >= 12)];\n  }\n\n  function formatUTCQuarter(d) {\n    return 1 + ~~(d.getUTCMonth() / 3);\n  }\n\n  return {\n    format: function(specifier) {\n      var f = newFormat(specifier += \"\", formats);\n      f.toString = function() { return specifier; };\n      return f;\n    },\n    parse: function(specifier) {\n      var p = newParse(specifier += \"\", false);\n      p.toString = function() { return specifier; };\n      return p;\n    },\n    utcFormat: function(specifier) {\n      var f = newFormat(specifier += \"\", utcFormats);\n      f.toString = function() { return specifier; };\n      return f;\n    },\n    utcParse: function(specifier) {\n      var p = newParse(specifier += \"\", true);\n      p.toString = function() { return specifier; };\n      return p;\n    }\n  };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n    numberRe = /^\\s*\\d+/, // note: ignores next directive\n    percentRe = /^%/,\n    requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n  var sign = value < 0 ? \"-\" : \"\",\n      string = (sign ? -value : value) + \"\",\n      length = string.length;\n  return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n  return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n  return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n  var map = {}, i = -1, n = names.length;\n  while (++i < n) map[names[i].toLowerCase()] = i;\n  return map;\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 1));\n  return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 1));\n  return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 4));\n  return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n  var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n  return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 1));\n  return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 3));\n  return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 3));\n  return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 6));\n  return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n  var n = percentRe.exec(string.slice(i, i + 1));\n  return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n  var n = numberRe.exec(string.slice(i));\n  return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i));\n  return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n  return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n  return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n  return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n  return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n  return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n  return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n  return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n  return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n  return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n  var day = d.getDay();\n  return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n  return pad(timeSunday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatWeekNumberISO(d, p) {\n  var day = d.getDay();\n  d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n  return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n  return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n  return pad(timeMonday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n  return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n  return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n  var z = d.getTimezoneOffset();\n  return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n      + pad(z / 60 | 0, \"0\", 2)\n      + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n  return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n  return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n  return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n  return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n  return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n  return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n  return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n  return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n  return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n  var dow = d.getUTCDay();\n  return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n  return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n  var day = d.getUTCDay();\n  d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n  return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n  return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n  return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n  return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n  return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n  return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n  return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n  return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n  return Math.floor(+d / 1000);\n}\n","import interval from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nvar day = interval(function(date) {\n  date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setDate(date.getDate() + step);\n}, function(start, end) {\n  return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function(date) {\n  return date.getDate() - 1;\n});\n\nexport default day;\nexport var days = day.range;\n","export var durationSecond = 1e3;\nexport var durationMinute = 6e4;\nexport var durationHour = 36e5;\nexport var durationDay = 864e5;\nexport var durationWeek = 6048e5;\n","import interval from \"./interval.js\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration.js\";\n\nvar hour = interval(function(date) {\n  date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, function(date, step) {\n  date.setTime(+date + step * durationHour);\n}, function(start, end) {\n  return (end - start) / durationHour;\n}, function(date) {\n  return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n","export {\n  default as timeInterval\n} from \"./interval.js\";\n\nexport {\n  default as timeMillisecond,\n  milliseconds as timeMilliseconds,\n  default as utcMillisecond,\n  milliseconds as utcMilliseconds\n} from \"./millisecond.js\";\n\nexport {\n  default as timeSecond,\n  seconds as timeSeconds,\n  default as utcSecond,\n  seconds as utcSeconds\n} from \"./second.js\";\n\nexport {\n  default as timeMinute,\n  minutes as timeMinutes\n} from \"./minute.js\";\n\nexport {\n  default as timeHour,\n  hours as timeHours\n} from \"./hour.js\";\n\nexport {\n  default as timeDay,\n  days as timeDays\n} from \"./day.js\";\n\nexport {\n  sunday as timeWeek,\n  sundays as timeWeeks,\n  sunday as timeSunday,\n  sundays as timeSundays,\n  monday as timeMonday,\n  mondays as timeMondays,\n  tuesday as timeTuesday,\n  tuesdays as timeTuesdays,\n  wednesday as timeWednesday,\n  wednesdays as timeWednesdays,\n  thursday as timeThursday,\n  thursdays as timeThursdays,\n  friday as timeFriday,\n  fridays as timeFridays,\n  saturday as timeSaturday,\n  saturdays as timeSaturdays\n} from \"./week.js\";\n\nexport {\n  default as timeMonth,\n  months as timeMonths\n} from \"./month.js\";\n\nexport {\n  default as timeYear,\n  years as timeYears\n} from \"./year.js\";\n\nexport {\n  default as utcMinute,\n  utcMinutes as utcMinutes\n} from \"./utcMinute.js\";\n\nexport {\n  default as utcHour,\n  utcHours as utcHours\n} from \"./utcHour.js\";\n\nexport {\n  default as utcDay,\n  utcDays as utcDays\n} from \"./utcDay.js\";\n\nexport {\n  utcSunday as utcWeek,\n  utcSundays as utcWeeks,\n  utcSunday as utcSunday,\n  utcSundays as utcSundays,\n  utcMonday as utcMonday,\n  utcMondays as utcMondays,\n  utcTuesday as utcTuesday,\n  utcTuesdays as utcTuesdays,\n  utcWednesday as utcWednesday,\n  utcWednesdays as utcWednesdays,\n  utcThursday as utcThursday,\n  utcThursdays as utcThursdays,\n  utcFriday as utcFriday,\n  utcFridays as utcFridays,\n  utcSaturday as utcSaturday,\n  utcSaturdays as utcSaturdays\n} from \"./utcWeek.js\";\n\nexport {\n  default as utcMonth,\n  utcMonths as utcMonths\n} from \"./utcMonth.js\";\n\nexport {\n  default as utcYear,\n  utcYears as utcYears\n} from \"./utcYear.js\";\n","var t0 = new Date,\n    t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n  function interval(date) {\n    return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n  }\n\n  interval.floor = function(date) {\n    return floori(date = new Date(+date)), date;\n  };\n\n  interval.ceil = function(date) {\n    return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n  };\n\n  interval.round = function(date) {\n    var d0 = interval(date),\n        d1 = interval.ceil(date);\n    return date - d0 < d1 - date ? d0 : d1;\n  };\n\n  interval.offset = function(date, step) {\n    return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n  };\n\n  interval.range = function(start, stop, step) {\n    var range = [], previous;\n    start = interval.ceil(start);\n    step = step == null ? 1 : Math.floor(step);\n    if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n    do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n    while (previous < start && start < stop);\n    return range;\n  };\n\n  interval.filter = function(test) {\n    return newInterval(function(date) {\n      if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n    }, function(date, step) {\n      if (date >= date) {\n        if (step < 0) while (++step <= 0) {\n          while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n        } else while (--step >= 0) {\n          while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n        }\n      }\n    });\n  };\n\n  if (count) {\n    interval.count = function(start, end) {\n      t0.setTime(+start), t1.setTime(+end);\n      floori(t0), floori(t1);\n      return Math.floor(count(t0, t1));\n    };\n\n    interval.every = function(step) {\n      step = Math.floor(step);\n      return !isFinite(step) || !(step > 0) ? null\n          : !(step > 1) ? interval\n          : interval.filter(field\n              ? function(d) { return field(d) % step === 0; }\n              : function(d) { return interval.count(0, d) % step === 0; });\n    };\n  }\n\n  return interval;\n}\n","import interval from \"./interval.js\";\n\nvar millisecond = interval(function() {\n  // noop\n}, function(date, step) {\n  date.setTime(+date + step);\n}, function(start, end) {\n  return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n  k = Math.floor(k);\n  if (!isFinite(k) || !(k > 0)) return null;\n  if (!(k > 1)) return millisecond;\n  return interval(function(date) {\n    date.setTime(Math.floor(date / k) * k);\n  }, function(date, step) {\n    date.setTime(+date + step * k);\n  }, function(start, end) {\n    return (end - start) / k;\n  });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationSecond} from \"./duration.js\";\n\nvar minute = interval(function(date) {\n  date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, function(date, step) {\n  date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n  return (end - start) / durationMinute;\n}, function(date) {\n  return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n","import interval from \"./interval.js\";\n\nvar month = interval(function(date) {\n  date.setDate(1);\n  date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n  return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n  return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","import interval from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\nvar second = interval(function(date) {\n  date.setTime(date - date.getMilliseconds());\n}, function(date, step) {\n  date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n  return (end - start) / durationSecond;\n}, function(date) {\n  return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n","import interval from \"./interval.js\";\nimport {durationDay} from \"./duration.js\";\n\nvar utcDay = interval(function(date) {\n  date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n  return (end - start) / durationDay;\n}, function(date) {\n  return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval.js\";\nimport {durationHour} from \"./duration.js\";\n\nvar utcHour = interval(function(date) {\n  date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n  date.setTime(+date + step * durationHour);\n}, function(start, end) {\n  return (end - start) / durationHour;\n}, function(date) {\n  return date.getUTCHours();\n});\n\nexport default utcHour;\nexport var utcHours = utcHour.range;\n","import interval from \"./interval.js\";\nimport {durationMinute} from \"./duration.js\";\n\nvar utcMinute = interval(function(date) {\n  date.setUTCSeconds(0, 0);\n}, function(date, step) {\n  date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n  return (end - start) / durationMinute;\n}, function(date) {\n  return date.getUTCMinutes();\n});\n\nexport default utcMinute;\nexport var utcMinutes = utcMinute.range;\n","import interval from \"./interval.js\";\n\nvar utcMonth = interval(function(date) {\n  date.setUTCDate(1);\n  date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n  return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n  return date.getUTCMonth();\n});\n\nexport default utcMonth;\nexport var utcMonths = utcMonth.range;\n","import interval from \"./interval.js\";\nimport {durationWeek} from \"./duration.js\";\n\nfunction utcWeekday(i) {\n  return interval(function(date) {\n    date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n    date.setUTCHours(0, 0, 0, 0);\n  }, function(date, step) {\n    date.setUTCDate(date.getUTCDate() + step * 7);\n  }, function(start, end) {\n    return (end - start) / durationWeek;\n  });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval.js\";\n\nvar utcYear = interval(function(date) {\n  date.setUTCMonth(0, 1);\n  date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n  return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n  return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n  return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n    date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n    date.setUTCMonth(0, 1);\n    date.setUTCHours(0, 0, 0, 0);\n  }, function(date, step) {\n    date.setUTCFullYear(date.getUTCFullYear() + step * k);\n  });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction weekday(i) {\n  return interval(function(date) {\n    date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n    date.setHours(0, 0, 0, 0);\n  }, function(date, step) {\n    date.setDate(date.getDate() + step * 7);\n  }, function(start, end) {\n    return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n  });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval.js\";\n\nvar year = interval(function(date) {\n  date.setMonth(0, 1);\n  date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n  return end.getFullYear() - start.getFullYear();\n}, function(date) {\n  return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n  return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n    date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n    date.setMonth(0, 1);\n    date.setHours(0, 0, 0, 0);\n  }, function(date, step) {\n    date.setFullYear(date.getFullYear() + step * k);\n  });\n};\n\nexport default year;\nexport var years = year.range;\n","export {\n  now,\n  timer,\n  timerFlush\n} from \"./timer.js\";\n\nexport {\n  default as timeout\n} from \"./timeout.js\";\n\nexport {\n  default as interval\n} from \"./interval.js\";\n","import {Timer, now} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n  var t = new Timer, total = delay;\n  if (delay == null) return t.restart(callback, delay, time), t;\n  delay = +delay, time = time == null ? now() : +time;\n  t.restart(function tick(elapsed) {\n    elapsed += total;\n    t.restart(tick, total += delay, time);\n    callback(elapsed);\n  }, delay, time);\n  return t;\n}\n","import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n  var t = new Timer;\n  delay = delay == null ? 0 : +delay;\n  t.restart(function(elapsed) {\n    t.stop();\n    callback(elapsed + delay);\n  }, delay, time);\n  return t;\n}\n","var frame = 0, // is an animation frame pending?\n    timeout = 0, // is a timeout pending?\n    interval = 0, // are any timers active?\n    pokeDelay = 1000, // how frequently we check for clock skew\n    taskHead,\n    taskTail,\n    clockLast = 0,\n    clockNow = 0,\n    clockSkew = 0,\n    clock = typeof performance === \"object\" && performance.now ? performance : Date,\n    setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n  return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n  clockNow = 0;\n}\n\nexport function Timer() {\n  this._call =\n  this._time =\n  this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n  constructor: Timer,\n  restart: function(callback, delay, time) {\n    if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n    time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n    if (!this._next && taskTail !== this) {\n      if (taskTail) taskTail._next = this;\n      else taskHead = this;\n      taskTail = this;\n    }\n    this._call = callback;\n    this._time = time;\n    sleep();\n  },\n  stop: function() {\n    if (this._call) {\n      this._call = null;\n      this._time = Infinity;\n      sleep();\n    }\n  }\n};\n\nexport function timer(callback, delay, time) {\n  var t = new Timer;\n  t.restart(callback, delay, time);\n  return t;\n}\n\nexport function timerFlush() {\n  now(); // Get the current time, if not already set.\n  ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n  var t = taskHead, e;\n  while (t) {\n    if ((e = clockNow - t._time) >= 0) t._call.call(null, e);\n    t = t._next;\n  }\n  --frame;\n}\n\nfunction wake() {\n  clockNow = (clockLast = clock.now()) + clockSkew;\n  frame = timeout = 0;\n  try {\n    timerFlush();\n  } finally {\n    frame = 0;\n    nap();\n    clockNow = 0;\n  }\n}\n\nfunction poke() {\n  var now = clock.now(), delay = now - clockLast;\n  if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n  var t0, t1 = taskHead, t2, time = Infinity;\n  while (t1) {\n    if (t1._call) {\n      if (time > t1._time) time = t1._time;\n      t0 = t1, t1 = t1._next;\n    } else {\n      t2 = t1._next, t1._next = null;\n      t1 = t0 ? t0._next = t2 : taskHead = t2;\n    }\n  }\n  taskTail = t0;\n  sleep(time);\n}\n\nfunction sleep(time) {\n  if (frame) return; // Soonest alarm already set, or will be.\n  if (timeout) timeout = clearTimeout(timeout);\n  var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n  if (delay > 24) {\n    if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n    if (interval) interval = clearInterval(interval);\n  } else {\n    if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n    frame = 1, setFrame(wake);\n  }\n}\n","import {Transition} from \"./transition/index.js\";\nimport {SCHEDULED} from \"./transition/schedule.js\";\n\nvar root = [null];\n\nexport default function(node, name) {\n  var schedules = node.__transition,\n      schedule,\n      i;\n\n  if (schedules) {\n    name = name == null ? null : name + \"\";\n    for (i in schedules) {\n      if ((schedule = schedules[i]).state > SCHEDULED && schedule.name === name) {\n        return new Transition([[node]], root, name, +i);\n      }\n    }\n  }\n\n  return null;\n}\n","import \"./selection/index.js\";\nexport {default as transition} from \"./transition/index.js\";\nexport {default as active} from \"./active.js\";\nexport {default as interrupt} from \"./interrupt.js\";\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n  var schedules = node.__transition,\n      schedule,\n      active,\n      empty = true,\n      i;\n\n  if (!schedules) return;\n\n  name = name == null ? null : name + \"\";\n\n  for (i in schedules) {\n    if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n    active = schedule.state > STARTING && schedule.state < ENDING;\n    schedule.state = ENDED;\n    schedule.timer.stop();\n    schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n    delete schedules[i];\n  }\n\n  if (empty) delete node.__transition;\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n  return this.each(function() {\n    interrupt(this, name);\n  });\n}\n","import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n  time: null, // Set on use.\n  delay: 0,\n  duration: 250,\n  ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n  var timing;\n  while (!(timing = node.__transition) || !(timing = timing[id])) {\n    if (!(node = node.parentNode)) {\n      return defaultTiming.time = now(), defaultTiming;\n    }\n  }\n  return timing;\n}\n\nexport default function(name) {\n  var id,\n      timing;\n\n  if (name instanceof Transition) {\n    id = name._id, name = name._name;\n  } else {\n    id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n  }\n\n  for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        schedule(node, name, id, i, group, timing || inherit(node, id));\n      }\n    }\n  }\n\n  return new Transition(groups, this._parents, name, id);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n  return function() {\n    this.removeAttribute(name);\n  };\n}\n\nfunction attrRemoveNS(fullname) {\n  return function() {\n    this.removeAttributeNS(fullname.space, fullname.local);\n  };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n  var string00,\n      string1 = value1 + \"\",\n      interpolate0;\n  return function() {\n    var string0 = this.getAttribute(name);\n    return string0 === string1 ? null\n        : string0 === string00 ? interpolate0\n        : interpolate0 = interpolate(string00 = string0, value1);\n  };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n  var string00,\n      string1 = value1 + \"\",\n      interpolate0;\n  return function() {\n    var string0 = this.getAttributeNS(fullname.space, fullname.local);\n    return string0 === string1 ? null\n        : string0 === string00 ? interpolate0\n        : interpolate0 = interpolate(string00 = string0, value1);\n  };\n}\n\nfunction attrFunction(name, interpolate, value) {\n  var string00,\n      string10,\n      interpolate0;\n  return function() {\n    var string0, value1 = value(this), string1;\n    if (value1 == null) return void this.removeAttribute(name);\n    string0 = this.getAttribute(name);\n    string1 = value1 + \"\";\n    return string0 === string1 ? null\n        : string0 === string00 && string1 === string10 ? interpolate0\n        : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n  };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n  var string00,\n      string10,\n      interpolate0;\n  return function() {\n    var string0, value1 = value(this), string1;\n    if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n    string0 = this.getAttributeNS(fullname.space, fullname.local);\n    string1 = value1 + \"\";\n    return string0 === string1 ? null\n        : string0 === string00 && string1 === string10 ? interpolate0\n        : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n  };\n}\n\nexport default function(name, value) {\n  var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n  return this.attrTween(name, typeof value === \"function\"\n      ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n      : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n      : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n  return function(t) {\n    this.setAttribute(name, i.call(this, t));\n  };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n  return function(t) {\n    this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n  };\n}\n\nfunction attrTweenNS(fullname, value) {\n  var t0, i0;\n  function tween() {\n    var i = value.apply(this, arguments);\n    if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n    return t0;\n  }\n  tween._value = value;\n  return tween;\n}\n\nfunction attrTween(name, value) {\n  var t0, i0;\n  function tween() {\n    var i = value.apply(this, arguments);\n    if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n    return t0;\n  }\n  tween._value = value;\n  return tween;\n}\n\nexport default function(name, value) {\n  var key = \"attr.\" + name;\n  if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n  if (value == null) return this.tween(key, null);\n  if (typeof value !== \"function\") throw new Error;\n  var fullname = namespace(name);\n  return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n  return function() {\n    init(this, id).delay = +value.apply(this, arguments);\n  };\n}\n\nfunction delayConstant(id, value) {\n  return value = +value, function() {\n    init(this, id).delay = value;\n  };\n}\n\nexport default function(value) {\n  var id = this._id;\n\n  return arguments.length\n      ? this.each((typeof value === \"function\"\n          ? delayFunction\n          : delayConstant)(id, value))\n      : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n  return function() {\n    set(this, id).duration = +value.apply(this, arguments);\n  };\n}\n\nfunction durationConstant(id, value) {\n  return value = +value, function() {\n    set(this, id).duration = value;\n  };\n}\n\nexport default function(value) {\n  var id = this._id;\n\n  return arguments.length\n      ? this.each((typeof value === \"function\"\n          ? durationFunction\n          : durationConstant)(id, value))\n      : get(this.node(), id).duration;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n  if (typeof value !== \"function\") throw new Error;\n  return function() {\n    set(this, id).ease = value;\n  };\n}\n\nexport default function(value) {\n  var id = this._id;\n\n  return arguments.length\n      ? this.each(easeConstant(id, value))\n      : get(this.node(), id).ease;\n}\n","import {set} from \"./schedule.js\";\n\nexport default function() {\n  var on0, on1, that = this, id = that._id, size = that.size();\n  return new Promise(function(resolve, reject) {\n    var cancel = {value: reject},\n        end = {value: function() { if (--size === 0) resolve(); }};\n\n    that.each(function() {\n      var schedule = set(this, id),\n          on = schedule.on;\n\n      // If this node shared a dispatch with the previous node,\n      // just assign the updated shared dispatch and we’re done!\n      // Otherwise, copy-on-write.\n      if (on !== on0) {\n        on1 = (on0 = on).copy();\n        on1._.cancel.push(cancel);\n        on1._.interrupt.push(cancel);\n        on1._.end.push(end);\n      }\n\n      schedule.on = on1;\n    });\n  });\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n  if (typeof match !== \"function\") match = matcher(match);\n\n  for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n      if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n        subgroup.push(node);\n      }\n    }\n  }\n\n  return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n  this._groups = groups;\n  this._parents = parents;\n  this._name = name;\n  this._id = id;\n}\n\nexport default function transition(name) {\n  return selection().transition(name);\n}\n\nexport function newId() {\n  return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n  constructor: Transition,\n  select: transition_select,\n  selectAll: transition_selectAll,\n  filter: transition_filter,\n  merge: transition_merge,\n  selection: transition_selection,\n  transition: transition_transition,\n  call: selection_prototype.call,\n  nodes: selection_prototype.nodes,\n  node: selection_prototype.node,\n  size: selection_prototype.size,\n  empty: selection_prototype.empty,\n  each: selection_prototype.each,\n  on: transition_on,\n  attr: transition_attr,\n  attrTween: transition_attrTween,\n  style: transition_style,\n  styleTween: transition_styleTween,\n  text: transition_text,\n  textTween: transition_textTween,\n  remove: transition_remove,\n  tween: transition_tween,\n  delay: transition_delay,\n  duration: transition_duration,\n  ease: transition_ease,\n  end: transition_end\n};\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n  var c;\n  return (typeof b === \"number\" ? interpolateNumber\n      : b instanceof color ? interpolateRgb\n      : (c = color(b)) ? (b = c, interpolateRgb)\n      : interpolateString)(a, b);\n}\n","import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n  if (transition._id !== this._id) throw new Error;\n\n  for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n    for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n      if (node = group0[i] || group1[i]) {\n        merge[i] = node;\n      }\n    }\n  }\n\n  for (; j < m0; ++j) {\n    merges[j] = groups0[j];\n  }\n\n  return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n  return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n    var i = t.indexOf(\".\");\n    if (i >= 0) t = t.slice(0, i);\n    return !t || t === \"start\";\n  });\n}\n\nfunction onFunction(id, name, listener) {\n  var on0, on1, sit = start(name) ? init : set;\n  return function() {\n    var schedule = sit(this, id),\n        on = schedule.on;\n\n    // If this node shared a dispatch with the previous node,\n    // just assign the updated shared dispatch and we’re done!\n    // Otherwise, copy-on-write.\n    if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n    schedule.on = on1;\n  };\n}\n\nexport default function(name, listener) {\n  var id = this._id;\n\n  return arguments.length < 2\n      ? get(this.node(), id).on.on(name)\n      : this.each(onFunction(id, name, listener));\n}\n","function removeFunction(id) {\n  return function() {\n    var parent = this.parentNode;\n    for (var i in this.__transition) if (+i !== id) return;\n    if (parent) parent.removeChild(this);\n  };\n}\n\nexport default function() {\n  return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n  var schedules = node.__transition;\n  if (!schedules) node.__transition = {};\n  else if (id in schedules) return;\n  create(node, id, {\n    name: name,\n    index: index, // For context during callback.\n    group: group, // For context during callback.\n    on: emptyOn,\n    tween: emptyTween,\n    time: timing.time,\n    delay: timing.delay,\n    duration: timing.duration,\n    ease: timing.ease,\n    timer: null,\n    state: CREATED\n  });\n}\n\nexport function init(node, id) {\n  var schedule = get(node, id);\n  if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n  return schedule;\n}\n\nexport function set(node, id) {\n  var schedule = get(node, id);\n  if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n  return schedule;\n}\n\nexport function get(node, id) {\n  var schedule = node.__transition;\n  if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n  return schedule;\n}\n\nfunction create(node, id, self) {\n  var schedules = node.__transition,\n      tween;\n\n  // Initialize the self timer when the transition is created.\n  // Note the actual delay is not known until the first callback!\n  schedules[id] = self;\n  self.timer = timer(schedule, 0, self.time);\n\n  function schedule(elapsed) {\n    self.state = SCHEDULED;\n    self.timer.restart(start, self.delay, self.time);\n\n    // If the elapsed delay is less than our first sleep, start immediately.\n    if (self.delay <= elapsed) start(elapsed - self.delay);\n  }\n\n  function start(elapsed) {\n    var i, j, n, o;\n\n    // If the state is not SCHEDULED, then we previously errored on start.\n    if (self.state !== SCHEDULED) return stop();\n\n    for (i in schedules) {\n      o = schedules[i];\n      if (o.name !== self.name) continue;\n\n      // While this element already has a starting transition during this frame,\n      // defer starting an interrupting transition until that transition has a\n      // chance to tick (and possibly end); see d3/d3-transition#54!\n      if (o.state === STARTED) return timeout(start);\n\n      // Interrupt the active transition, if any.\n      if (o.state === RUNNING) {\n        o.state = ENDED;\n        o.timer.stop();\n        o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n        delete schedules[i];\n      }\n\n      // Cancel any pre-empted transitions.\n      else if (+i < id) {\n        o.state = ENDED;\n        o.timer.stop();\n        o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n        delete schedules[i];\n      }\n    }\n\n    // Defer the first tick to end of the current frame; see d3/d3#1576.\n    // Note the transition may be canceled after start and before the first tick!\n    // Note this must be scheduled before the start event; see d3/d3-transition#16!\n    // Assuming this is successful, subsequent callbacks go straight to tick.\n    timeout(function() {\n      if (self.state === STARTED) {\n        self.state = RUNNING;\n        self.timer.restart(tick, self.delay, self.time);\n        tick(elapsed);\n      }\n    });\n\n    // Dispatch the start event.\n    // Note this must be done before the tween are initialized.\n    self.state = STARTING;\n    self.on.call(\"start\", node, node.__data__, self.index, self.group);\n    if (self.state !== STARTING) return; // interrupted\n    self.state = STARTED;\n\n    // Initialize the tween, deleting null tween.\n    tween = new Array(n = self.tween.length);\n    for (i = 0, j = -1; i < n; ++i) {\n      if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n        tween[++j] = o;\n      }\n    }\n    tween.length = j + 1;\n  }\n\n  function tick(elapsed) {\n    var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n        i = -1,\n        n = tween.length;\n\n    while (++i < n) {\n      tween[i].call(node, t);\n    }\n\n    // Dispatch the end event.\n    if (self.state === ENDING) {\n      self.on.call(\"end\", node, node.__data__, self.index, self.group);\n      stop();\n    }\n  }\n\n  function stop() {\n    self.state = ENDED;\n    self.timer.stop();\n    delete schedules[id];\n    for (var i in schedules) return; // eslint-disable-line no-unused-vars\n    delete node.__transition;\n  }\n}\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n  var name = this._name,\n      id = this._id;\n\n  if (typeof select !== \"function\") select = selector(select);\n\n  for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n      if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n        if (\"__data__\" in node) subnode.__data__ = node.__data__;\n        subgroup[i] = subnode;\n        schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n      }\n    }\n  }\n\n  return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n  var name = this._name,\n      id = this._id;\n\n  if (typeof select !== \"function\") select = selectorAll(select);\n\n  for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n          if (child = children[k]) {\n            schedule(child, name, id, k, children, inherit);\n          }\n        }\n        subgroups.push(children);\n        parents.push(node);\n      }\n    }\n  }\n\n  return new Transition(subgroups, parents, name, id);\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n  return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n  var string00,\n      string10,\n      interpolate0;\n  return function() {\n    var string0 = style(this, name),\n        string1 = (this.style.removeProperty(name), style(this, name));\n    return string0 === string1 ? null\n        : string0 === string00 && string1 === string10 ? interpolate0\n        : interpolate0 = interpolate(string00 = string0, string10 = string1);\n  };\n}\n\nfunction styleRemove(name) {\n  return function() {\n    this.style.removeProperty(name);\n  };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n  var string00,\n      string1 = value1 + \"\",\n      interpolate0;\n  return function() {\n    var string0 = style(this, name);\n    return string0 === string1 ? null\n        : string0 === string00 ? interpolate0\n        : interpolate0 = interpolate(string00 = string0, value1);\n  };\n}\n\nfunction styleFunction(name, interpolate, value) {\n  var string00,\n      string10,\n      interpolate0;\n  return function() {\n    var string0 = style(this, name),\n        value1 = value(this),\n        string1 = value1 + \"\";\n    if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n    return string0 === string1 ? null\n        : string0 === string00 && string1 === string10 ? interpolate0\n        : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n  };\n}\n\nfunction styleMaybeRemove(id, name) {\n  var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n  return function() {\n    var schedule = set(this, id),\n        on = schedule.on,\n        listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n    // If this node shared a dispatch with the previous node,\n    // just assign the updated shared dispatch and we’re done!\n    // Otherwise, copy-on-write.\n    if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n    schedule.on = on1;\n  };\n}\n\nexport default function(name, value, priority) {\n  var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n  return value == null ? this\n      .styleTween(name, styleNull(name, i))\n      .on(\"end.style.\" + name, styleRemove(name))\n    : typeof value === \"function\" ? this\n      .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n      .each(styleMaybeRemove(this._id, name))\n    : this\n      .styleTween(name, styleConstant(name, i, value), priority)\n      .on(\"end.style.\" + name, null);\n}\n","function styleInterpolate(name, i, priority) {\n  return function(t) {\n    this.style.setProperty(name, i.call(this, t), priority);\n  };\n}\n\nfunction styleTween(name, value, priority) {\n  var t, i0;\n  function tween() {\n    var i = value.apply(this, arguments);\n    if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n    return t;\n  }\n  tween._value = value;\n  return tween;\n}\n\nexport default function(name, value, priority) {\n  var key = \"style.\" + (name += \"\");\n  if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n  if (value == null) return this.tween(key, null);\n  if (typeof value !== \"function\") throw new Error;\n  return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n  return function() {\n    this.textContent = value;\n  };\n}\n\nfunction textFunction(value) {\n  return function() {\n    var value1 = value(this);\n    this.textContent = value1 == null ? \"\" : value1;\n  };\n}\n\nexport default function(value) {\n  return this.tween(\"text\", typeof value === \"function\"\n      ? textFunction(tweenValue(this, \"text\", value))\n      : textConstant(value == null ? \"\" : value + \"\"));\n}\n","function textInterpolate(i) {\n  return function(t) {\n    this.textContent = i.call(this, t);\n  };\n}\n\nfunction textTween(value) {\n  var t0, i0;\n  function tween() {\n    var i = value.apply(this, arguments);\n    if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n    return t0;\n  }\n  tween._value = value;\n  return tween;\n}\n\nexport default function(value) {\n  var key = \"text\";\n  if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n  if (value == null) return this.tween(key, null);\n  if (typeof value !== \"function\") throw new Error;\n  return this.tween(key, textTween(value));\n}\n","import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n  var name = this._name,\n      id0 = this._id,\n      id1 = newId();\n\n  for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        var inherit = get(node, id0);\n        schedule(node, name, id1, i, group, {\n          time: inherit.time + inherit.delay + inherit.duration,\n          delay: 0,\n          duration: inherit.duration,\n          ease: inherit.ease\n        });\n      }\n    }\n  }\n\n  return new Transition(groups, this._parents, name, id1);\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n  var tween0, tween1;\n  return function() {\n    var schedule = set(this, id),\n        tween = schedule.tween;\n\n    // If this node shared tween with the previous node,\n    // just assign the updated shared tween and we’re done!\n    // Otherwise, copy-on-write.\n    if (tween !== tween0) {\n      tween1 = tween0 = tween;\n      for (var i = 0, n = tween1.length; i < n; ++i) {\n        if (tween1[i].name === name) {\n          tween1 = tween1.slice();\n          tween1.splice(i, 1);\n          break;\n        }\n      }\n    }\n\n    schedule.tween = tween1;\n  };\n}\n\nfunction tweenFunction(id, name, value) {\n  var tween0, tween1;\n  if (typeof value !== \"function\") throw new Error;\n  return function() {\n    var schedule = set(this, id),\n        tween = schedule.tween;\n\n    // If this node shared tween with the previous node,\n    // just assign the updated shared tween and we’re done!\n    // Otherwise, copy-on-write.\n    if (tween !== tween0) {\n      tween1 = (tween0 = tween).slice();\n      for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n        if (tween1[i].name === name) {\n          tween1[i] = t;\n          break;\n        }\n      }\n      if (i === n) tween1.push(t);\n    }\n\n    schedule.tween = tween1;\n  };\n}\n\nexport default function(name, value) {\n  var id = this._id;\n\n  name += \"\";\n\n  if (arguments.length < 2) {\n    var tween = get(this.node(), id).tween;\n    for (var i = 0, n = tween.length, t; i < n; ++i) {\n      if ((t = tween[i]).name === name) {\n        return t.value;\n      }\n    }\n    return null;\n  }\n\n  return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n  var id = transition._id;\n\n  transition.each(function() {\n    var schedule = set(this, id);\n    (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n  });\n\n  return function(node) {\n    return get(node, id).value[name];\n  };\n}\n","var _echarts = require(\"./lib/echarts\");\n\n(function () {\n  for (var key in _echarts) {\n    if (_echarts == null || !_echarts.hasOwnProperty(key) || key === 'default' || key === '__esModule') return;\n    exports[key] = _echarts[key];\n  }\n})();\n\nvar _export = require(\"./lib/export\");\n\n(function () {\n  for (var key in _export) {\n    if (_export == null || !_export.hasOwnProperty(key) || key === 'default' || key === '__esModule') return;\n    exports[key] = _export[key];\n  }\n})();\n\nrequire(\"./lib/component/dataset\");\n\nrequire(\"./lib/chart/line\");\n\nrequire(\"./lib/chart/bar\");\n\nrequire(\"./lib/chart/pie\");\n\nrequire(\"./lib/chart/scatter\");\n\nrequire(\"./lib/chart/radar\");\n\nrequire(\"./lib/chart/map\");\n\nrequire(\"./lib/chart/tree\");\n\nrequire(\"./lib/chart/treemap\");\n\nrequire(\"./lib/chart/graph\");\n\nrequire(\"./lib/chart/gauge\");\n\nrequire(\"./lib/chart/funnel\");\n\nrequire(\"./lib/chart/parallel\");\n\nrequire(\"./lib/chart/sankey\");\n\nrequire(\"./lib/chart/boxplot\");\n\nrequire(\"./lib/chart/candlestick\");\n\nrequire(\"./lib/chart/effectScatter\");\n\nrequire(\"./lib/chart/lines\");\n\nrequire(\"./lib/chart/heatmap\");\n\nrequire(\"./lib/chart/pictorialBar\");\n\nrequire(\"./lib/chart/themeRiver\");\n\nrequire(\"./lib/chart/sunburst\");\n\nrequire(\"./lib/chart/custom\");\n\nrequire(\"./lib/component/graphic\");\n\nrequire(\"./lib/component/grid\");\n\nrequire(\"./lib/component/legendScroll\");\n\nrequire(\"./lib/component/tooltip\");\n\nrequire(\"./lib/component/axisPointer\");\n\nrequire(\"./lib/component/polar\");\n\nrequire(\"./lib/component/geo\");\n\nrequire(\"./lib/component/parallel\");\n\nrequire(\"./lib/component/singleAxis\");\n\nrequire(\"./lib/component/brush\");\n\nrequire(\"./lib/component/calendar\");\n\nrequire(\"./lib/component/title\");\n\nrequire(\"./lib/component/dataZoom\");\n\nrequire(\"./lib/component/visualMap\");\n\nrequire(\"./lib/component/markPoint\");\n\nrequire(\"./lib/component/markLine\");\n\nrequire(\"./lib/component/markArea\");\n\nrequire(\"./lib/component/timeline\");\n\nrequire(\"./lib/component/toolbox\");\n\nrequire(\"zrender/lib/vml/vml\");\n\nrequire(\"zrender/lib/svg/svg\");","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar coordinateSystemCreators = {};\n\nfunction CoordinateSystemManager() {\n  this._coordinateSystems = [];\n}\n\nCoordinateSystemManager.prototype = {\n  constructor: CoordinateSystemManager,\n  create: function (ecModel, api) {\n    var coordinateSystems = [];\n    zrUtil.each(coordinateSystemCreators, function (creater, type) {\n      var list = creater.create(ecModel, api);\n      coordinateSystems = coordinateSystems.concat(list || []);\n    });\n    this._coordinateSystems = coordinateSystems;\n  },\n  update: function (ecModel, api) {\n    zrUtil.each(this._coordinateSystems, function (coordSys) {\n      coordSys.update && coordSys.update(ecModel, api);\n    });\n  },\n  getCoordinateSystems: function () {\n    return this._coordinateSystems.slice();\n  }\n};\n\nCoordinateSystemManager.register = function (type, coordinateSystemCreator) {\n  coordinateSystemCreators[type] = coordinateSystemCreator;\n};\n\nCoordinateSystemManager.get = function (type) {\n  return coordinateSystemCreators[type];\n};\n\nvar _default = CoordinateSystemManager;\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar echartsAPIList = ['getDom', 'getZr', 'getWidth', 'getHeight', 'getDevicePixelRatio', 'dispatchAction', 'isDisposed', 'on', 'off', 'getDataURL', 'getConnectedDataURL', 'getModel', 'getOption', 'getViewOfComponentModel', 'getViewOfSeriesModel']; // And `getCoordinateSystems` and `getComponentByElement` will be injected in echarts.js\n\nfunction ExtensionAPI(chartInstance) {\n  zrUtil.each(echartsAPIList, function (name) {\n    this[name] = zrUtil.bind(chartInstance[name], chartInstance);\n  }, this);\n}\n\nvar _default = ExtensionAPI;\nmodule.exports = _default;","var echarts = require(\"../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nfunction _default(seriesType, actionInfos) {\n  zrUtil.each(actionInfos, function (actionInfo) {\n    actionInfo.update = 'updateView';\n    /**\n     * @payload\n     * @property {string} seriesName\n     * @property {string} name\n     */\n\n    echarts.registerAction(actionInfo, function (payload, ecModel) {\n      var selected = {};\n      ecModel.eachComponent({\n        mainType: 'series',\n        subType: seriesType,\n        query: payload\n      }, function (seriesModel) {\n        if (seriesModel[actionInfo.method]) {\n          seriesModel[actionInfo.method](payload.name, payload.dataIndex);\n        }\n\n        var data = seriesModel.getData(); // Create selected map\n\n        data.each(function (idx) {\n          var name = data.getName(idx);\n          selected[name] = seriesModel.isSelected(name) || false;\n        });\n      });\n      return {\n        name: payload.name,\n        selected: selected\n      };\n    });\n  });\n}\n\nmodule.exports = _default;","var echarts = require(\"../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar _roamHelper = require(\"./roamHelper\");\n\nvar updateCenterAndZoom = _roamHelper.updateCenterAndZoom;\n\n/**\n * @payload\n * @property {string} [componentType=series]\n * @property {number} [dx]\n * @property {number} [dy]\n * @property {number} [zoom]\n * @property {number} [originX]\n * @property {number} [originY]\n */\necharts.registerAction({\n  type: 'geoRoam',\n  event: 'geoRoam',\n  update: 'updateTransform'\n}, function (payload, ecModel) {\n  var componentType = payload.componentType || 'series';\n  ecModel.eachComponent({\n    mainType: componentType,\n    query: payload\n  }, function (componentModel) {\n    var geo = componentModel.coordinateSystem;\n\n    if (geo.type !== 'geo') {\n      return;\n    }\n\n    var res = updateCenterAndZoom(geo, payload, componentModel.get('scaleLimit'));\n    componentModel.setCenter && componentModel.setCenter(res.center);\n    componentModel.setZoom && componentModel.setZoom(res.zoom); // All map series with same `map` use the same geo coordinate system\n    // So the center and zoom must be in sync. Include the series not selected by legend\n\n    if (componentType === 'series') {\n      zrUtil.each(componentModel.seriesGroup, function (seriesModel) {\n        seriesModel.setCenter(res.center);\n        seriesModel.setZoom(res.zoom);\n      });\n    }\n  });\n});","/**\n * @param {module:echarts/coord/View} view\n * @param {Object} payload\n * @param {Object} [zoomLimit]\n */\nfunction updateCenterAndZoom(view, payload, zoomLimit) {\n  var previousZoom = view.getZoom();\n  var center = view.getCenter();\n  var zoom = payload.zoom;\n  var point = view.dataToPoint(center);\n\n  if (payload.dx != null && payload.dy != null) {\n    point[0] -= payload.dx;\n    point[1] -= payload.dy;\n    var center = view.pointToData(point);\n    view.setCenter(center);\n  }\n\n  if (zoom != null) {\n    if (zoomLimit) {\n      var zoomMin = zoomLimit.min || 0;\n      var zoomMax = zoomLimit.max || Infinity;\n      zoom = Math.max(Math.min(previousZoom * zoom, zoomMax), zoomMin) / previousZoom;\n    } // Zoom on given point(originX, originY)\n\n\n    view.scale[0] *= zoom;\n    view.scale[1] *= zoom;\n    var position = view.position;\n    var fixX = (payload.originX - position[0]) * (zoom - 1);\n    var fixY = (payload.originY - position[1]) * (zoom - 1);\n    position[0] -= fixX;\n    position[1] -= fixY;\n    view.updateTransform(); // Get the new center\n\n    var center = view.pointToData(point);\n    view.setCenter(center);\n    view.setZoom(zoom * previousZoom);\n  }\n\n  return {\n    center: view.getCenter(),\n    zoom: view.getZoom()\n  };\n}\n\nexports.updateCenterAndZoom = updateCenterAndZoom;","var echarts = require(\"../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar _barGrid = require(\"../layout/barGrid\");\n\nvar layout = _barGrid.layout;\n\nrequire(\"../coord/cartesian/Grid\");\n\nrequire(\"./bar/BarSeries\");\n\nrequire(\"./bar/BarView\");\n\nrequire(\"../component/gridSimple\");\n\n// In case developer forget to include grid component\necharts.registerLayout(zrUtil.curry(layout, 'bar')); // Visual coding for legend\n\necharts.registerVisual(function (ecModel) {\n  ecModel.eachSeriesByType('bar', function (seriesModel) {\n    var data = seriesModel.getData();\n    data.setVisual('legendSymbol', 'roundRect');\n  });\n});","var BaseBarSeries = require(\"./BaseBarSeries\");\n\nvar _default = BaseBarSeries.extend({\n  type: 'series.bar',\n  dependencies: ['grid', 'polar'],\n  brushSelector: 'rect'\n});\n\nmodule.exports = _default;","var _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar echarts = require(\"../../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar _helper = require(\"./helper\");\n\nvar setLabel = _helper.setLabel;\n\nvar Model = require(\"../../model/Model\");\n\nvar barItemStyle = require(\"./barItemStyle\");\n\nvar BAR_BORDER_WIDTH_QUERY = ['itemStyle', 'barBorderWidth']; // FIXME\n// Just for compatible with ec2.\n\nzrUtil.extend(Model.prototype, barItemStyle);\n\nvar _default = echarts.extendChartView({\n  type: 'bar',\n  render: function (seriesModel, ecModel, api) {\n    var coordinateSystemType = seriesModel.get('coordinateSystem');\n\n    if (coordinateSystemType === 'cartesian2d' || coordinateSystemType === 'polar') {\n      this._render(seriesModel, ecModel, api);\n    } else {}\n\n    return this.group;\n  },\n  dispose: zrUtil.noop,\n  _render: function (seriesModel, ecModel, api) {\n    var group = this.group;\n    var data = seriesModel.getData();\n    var oldData = this._data;\n    var coord = seriesModel.coordinateSystem;\n    var baseAxis = coord.getBaseAxis();\n    var isHorizontalOrRadial;\n\n    if (coord.type === 'cartesian2d') {\n      isHorizontalOrRadial = baseAxis.isHorizontal();\n    } else if (coord.type === 'polar') {\n      isHorizontalOrRadial = baseAxis.dim === 'angle';\n    }\n\n    var animationModel = seriesModel.isAnimationEnabled() ? seriesModel : null;\n    data.diff(oldData).add(function (dataIndex) {\n      if (!data.hasValue(dataIndex)) {\n        return;\n      }\n\n      var itemModel = data.getItemModel(dataIndex);\n      var layout = getLayout[coord.type](data, dataIndex, itemModel);\n      var el = elementCreator[coord.type](data, dataIndex, itemModel, layout, isHorizontalOrRadial, animationModel);\n      data.setItemGraphicEl(dataIndex, el);\n      group.add(el);\n      updateStyle(el, data, dataIndex, itemModel, layout, seriesModel, isHorizontalOrRadial, coord.type === 'polar');\n    }).update(function (newIndex, oldIndex) {\n      var el = oldData.getItemGraphicEl(oldIndex);\n\n      if (!data.hasValue(newIndex)) {\n        group.remove(el);\n        return;\n      }\n\n      var itemModel = data.getItemModel(newIndex);\n      var layout = getLayout[coord.type](data, newIndex, itemModel);\n\n      if (el) {\n        graphic.updateProps(el, {\n          shape: layout\n        }, animationModel, newIndex);\n      } else {\n        el = elementCreator[coord.type](data, newIndex, itemModel, layout, isHorizontalOrRadial, animationModel, true);\n      }\n\n      data.setItemGraphicEl(newIndex, el); // Add back\n\n      group.add(el);\n      updateStyle(el, data, newIndex, itemModel, layout, seriesModel, isHorizontalOrRadial, coord.type === 'polar');\n    }).remove(function (dataIndex) {\n      var el = oldData.getItemGraphicEl(dataIndex);\n\n      if (coord.type === 'cartesian2d') {\n        el && removeRect(dataIndex, animationModel, el);\n      } else {\n        el && removeSector(dataIndex, animationModel, el);\n      }\n    }).execute();\n    this._data = data;\n  },\n  remove: function (ecModel, api) {\n    var group = this.group;\n    var data = this._data;\n\n    if (ecModel.get('animation')) {\n      if (data) {\n        data.eachItemGraphicEl(function (el) {\n          if (el.type === 'sector') {\n            removeSector(el.dataIndex, ecModel, el);\n          } else {\n            removeRect(el.dataIndex, ecModel, el);\n          }\n        });\n      }\n    } else {\n      group.removeAll();\n    }\n  }\n});\n\nvar elementCreator = {\n  cartesian2d: function (data, dataIndex, itemModel, layout, isHorizontal, animationModel, isUpdate) {\n    var rect = new graphic.Rect({\n      shape: zrUtil.extend({}, layout)\n    }); // Animation\n\n    if (animationModel) {\n      var rectShape = rect.shape;\n      var animateProperty = isHorizontal ? 'height' : 'width';\n      var animateTarget = {};\n      rectShape[animateProperty] = 0;\n      animateTarget[animateProperty] = layout[animateProperty];\n      graphic[isUpdate ? 'updateProps' : 'initProps'](rect, {\n        shape: animateTarget\n      }, animationModel, dataIndex);\n    }\n\n    return rect;\n  },\n  polar: function (data, dataIndex, itemModel, layout, isRadial, animationModel, isUpdate) {\n    var sector = new graphic.Sector({\n      shape: zrUtil.extend({}, layout)\n    }); // Animation\n\n    if (animationModel) {\n      var sectorShape = sector.shape;\n      var animateProperty = isRadial ? 'r' : 'endAngle';\n      var animateTarget = {};\n      sectorShape[animateProperty] = isRadial ? 0 : layout.startAngle;\n      animateTarget[animateProperty] = layout[animateProperty];\n      graphic[isUpdate ? 'updateProps' : 'initProps'](sector, {\n        shape: animateTarget\n      }, animationModel, dataIndex);\n    }\n\n    return sector;\n  }\n};\n\nfunction removeRect(dataIndex, animationModel, el) {\n  // Not show text when animating\n  el.style.text = null;\n  graphic.updateProps(el, {\n    shape: {\n      width: 0\n    }\n  }, animationModel, dataIndex, function () {\n    el.parent && el.parent.remove(el);\n  });\n}\n\nfunction removeSector(dataIndex, animationModel, el) {\n  // Not show text when animating\n  el.style.text = null;\n  graphic.updateProps(el, {\n    shape: {\n      r: el.shape.r0\n    }\n  }, animationModel, dataIndex, function () {\n    el.parent && el.parent.remove(el);\n  });\n}\n\nvar getLayout = {\n  cartesian2d: function (data, dataIndex, itemModel) {\n    var layout = data.getItemLayout(dataIndex);\n    var fixedLineWidth = getLineWidth(itemModel, layout); // fix layout with lineWidth\n\n    var signX = layout.width > 0 ? 1 : -1;\n    var signY = layout.height > 0 ? 1 : -1;\n    return {\n      x: layout.x + signX * fixedLineWidth / 2,\n      y: layout.y + signY * fixedLineWidth / 2,\n      width: layout.width - signX * fixedLineWidth,\n      height: layout.height - signY * fixedLineWidth\n    };\n  },\n  polar: function (data, dataIndex, itemModel) {\n    var layout = data.getItemLayout(dataIndex);\n    return {\n      cx: layout.cx,\n      cy: layout.cy,\n      r0: layout.r0,\n      r: layout.r,\n      startAngle: layout.startAngle,\n      endAngle: layout.endAngle\n    };\n  }\n};\n\nfunction updateStyle(el, data, dataIndex, itemModel, layout, seriesModel, isHorizontal, isPolar) {\n  var color = data.getItemVisual(dataIndex, 'color');\n  var opacity = data.getItemVisual(dataIndex, 'opacity');\n  var itemStyleModel = itemModel.getModel('itemStyle');\n  var hoverStyle = itemModel.getModel('emphasis.itemStyle').getBarItemStyle();\n\n  if (!isPolar) {\n    el.setShape('r', itemStyleModel.get('barBorderRadius') || 0);\n  }\n\n  el.useStyle(zrUtil.defaults({\n    fill: color,\n    opacity: opacity\n  }, itemStyleModel.getBarItemStyle()));\n  var cursorStyle = itemModel.getShallow('cursor');\n  cursorStyle && el.attr('cursor', cursorStyle);\n  var labelPositionOutside = isHorizontal ? layout.height > 0 ? 'bottom' : 'top' : layout.width > 0 ? 'left' : 'right';\n\n  if (!isPolar) {\n    setLabel(el.style, hoverStyle, itemModel, color, seriesModel, dataIndex, labelPositionOutside);\n  }\n\n  graphic.setHoverStyle(el, hoverStyle);\n} // In case width or height are too small.\n\n\nfunction getLineWidth(itemModel, rawLayout) {\n  var lineWidth = itemModel.get(BAR_BORDER_WIDTH_QUERY) || 0;\n  return Math.min(lineWidth, Math.abs(rawLayout.width), Math.abs(rawLayout.height));\n}\n\nmodule.exports = _default;","var SeriesModel = require(\"../../model/Series\");\n\nvar createListFromArray = require(\"../helper/createListFromArray\");\n\nvar _default = SeriesModel.extend({\n  type: 'series.__base_bar__',\n  getInitialData: function (option, ecModel) {\n    return createListFromArray(this.getSource(), this);\n  },\n  getMarkerPosition: function (value) {\n    var coordSys = this.coordinateSystem;\n\n    if (coordSys) {\n      // PENDING if clamp ?\n      var pt = coordSys.dataToPoint(coordSys.clampData(value));\n      var data = this.getData();\n      var offset = data.getLayout('offset');\n      var size = data.getLayout('size');\n      var offsetIndex = coordSys.getBaseAxis().isHorizontal() ? 0 : 1;\n      pt[offsetIndex] += offset + size / 2;\n      return pt;\n    }\n\n    return [NaN, NaN];\n  },\n  defaultOption: {\n    zlevel: 0,\n    // 一级层叠\n    z: 2,\n    // 二级层叠\n    coordinateSystem: 'cartesian2d',\n    legendHoverLink: true,\n    // stack: null\n    // Cartesian coordinate system\n    // xAxisIndex: 0,\n    // yAxisIndex: 0,\n    // 最小高度改为0\n    barMinHeight: 0,\n    // 最小角度为0，仅对极坐标系下的柱状图有效\n    barMinAngle: 0,\n    // cursor: null,\n    // barMaxWidth: null,\n    // 默认自适应\n    // barWidth: null,\n    // 柱间距离，默认为柱形宽度的30%，可设固定值\n    // barGap: '30%',\n    // 类目间柱形距离，默认为类目间距的20%，可设固定值\n    // barCategoryGap: '20%',\n    // label: {\n    //      show: false\n    // },\n    itemStyle: {},\n    emphasis: {}\n  }\n});\n\nmodule.exports = _default;","var BaseBarSeries = require(\"./BaseBarSeries\");\n\nvar PictorialBarSeries = BaseBarSeries.extend({\n  type: 'series.pictorialBar',\n  dependencies: ['grid'],\n  defaultOption: {\n    symbol: 'circle',\n    // Customized bar shape\n    symbolSize: null,\n    // Can be ['100%', '100%'], null means auto.\n    symbolRotate: null,\n    symbolPosition: null,\n    // 'start' or 'end' or 'center', null means auto.\n    symbolOffset: null,\n    symbolMargin: null,\n    // start margin and end margin. Can be a number or a percent string.\n    // Auto margin by defualt.\n    symbolRepeat: false,\n    // false/null/undefined, means no repeat.\n    // Can be true, means auto calculate repeat times and cut by data.\n    // Can be a number, specifies repeat times, and do not cut by data.\n    // Can be 'fixed', means auto calculate repeat times but do not cut by data.\n    symbolRepeatDirection: 'end',\n    // 'end' means from 'start' to 'end'.\n    symbolClip: false,\n    symbolBoundingData: null,\n    // Can be 60 or -40 or [-40, 60]\n    symbolPatternSize: 400,\n    // 400 * 400 px\n    barGap: '-100%',\n    // In most case, overlap is needed.\n    // z can be set in data item, which is z2 actually.\n    // Disable progressive\n    progressive: 0,\n    hoverAnimation: false // Open only when needed.\n\n  },\n  getInitialData: function (option) {\n    // Disable stack.\n    option.stack = null;\n    return PictorialBarSeries.superApply(this, 'getInitialData', arguments);\n  }\n});\nvar _default = PictorialBarSeries;\nmodule.exports = _default;","var echarts = require(\"../../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar _symbol = require(\"../../util/symbol\");\n\nvar createSymbol = _symbol.createSymbol;\n\nvar _number = require(\"../../util/number\");\n\nvar parsePercent = _number.parsePercent;\nvar isNumeric = _number.isNumeric;\n\nvar _helper = require(\"./helper\");\n\nvar setLabel = _helper.setLabel;\nvar BAR_BORDER_WIDTH_QUERY = ['itemStyle', 'borderWidth']; // index: +isHorizontal\n\nvar LAYOUT_ATTRS = [{\n  xy: 'x',\n  wh: 'width',\n  index: 0,\n  posDesc: ['left', 'right']\n}, {\n  xy: 'y',\n  wh: 'height',\n  index: 1,\n  posDesc: ['top', 'bottom']\n}];\nvar pathForLineWidth = new graphic.Circle();\nvar BarView = echarts.extendChartView({\n  type: 'pictorialBar',\n  render: function (seriesModel, ecModel, api) {\n    var group = this.group;\n    var data = seriesModel.getData();\n    var oldData = this._data;\n    var cartesian = seriesModel.coordinateSystem;\n    var baseAxis = cartesian.getBaseAxis();\n    var isHorizontal = !!baseAxis.isHorizontal();\n    var coordSysRect = cartesian.grid.getRect();\n    var opt = {\n      ecSize: {\n        width: api.getWidth(),\n        height: api.getHeight()\n      },\n      seriesModel: seriesModel,\n      coordSys: cartesian,\n      coordSysExtent: [[coordSysRect.x, coordSysRect.x + coordSysRect.width], [coordSysRect.y, coordSysRect.y + coordSysRect.height]],\n      isHorizontal: isHorizontal,\n      valueDim: LAYOUT_ATTRS[+isHorizontal],\n      categoryDim: LAYOUT_ATTRS[1 - isHorizontal]\n    };\n    data.diff(oldData).add(function (dataIndex) {\n      if (!data.hasValue(dataIndex)) {\n        return;\n      }\n\n      var itemModel = getItemModel(data, dataIndex);\n      var symbolMeta = getSymbolMeta(data, dataIndex, itemModel, opt);\n      var bar = createBar(data, opt, symbolMeta);\n      data.setItemGraphicEl(dataIndex, bar);\n      group.add(bar);\n      updateCommon(bar, opt, symbolMeta);\n    }).update(function (newIndex, oldIndex) {\n      var bar = oldData.getItemGraphicEl(oldIndex);\n\n      if (!data.hasValue(newIndex)) {\n        group.remove(bar);\n        return;\n      }\n\n      var itemModel = getItemModel(data, newIndex);\n      var symbolMeta = getSymbolMeta(data, newIndex, itemModel, opt);\n      var pictorialShapeStr = getShapeStr(data, symbolMeta);\n\n      if (bar && pictorialShapeStr !== bar.__pictorialShapeStr) {\n        group.remove(bar);\n        data.setItemGraphicEl(newIndex, null);\n        bar = null;\n      }\n\n      if (bar) {\n        updateBar(bar, opt, symbolMeta);\n      } else {\n        bar = createBar(data, opt, symbolMeta, true);\n      }\n\n      data.setItemGraphicEl(newIndex, bar);\n      bar.__pictorialSymbolMeta = symbolMeta; // Add back\n\n      group.add(bar);\n      updateCommon(bar, opt, symbolMeta);\n    }).remove(function (dataIndex) {\n      var bar = oldData.getItemGraphicEl(dataIndex);\n      bar && removeBar(oldData, dataIndex, bar.__pictorialSymbolMeta.animationModel, bar);\n    }).execute();\n    this._data = data;\n    return this.group;\n  },\n  dispose: zrUtil.noop,\n  remove: function (ecModel, api) {\n    var group = this.group;\n    var data = this._data;\n\n    if (ecModel.get('animation')) {\n      if (data) {\n        data.eachItemGraphicEl(function (bar) {\n          removeBar(data, bar.dataIndex, ecModel, bar);\n        });\n      }\n    } else {\n      group.removeAll();\n    }\n  }\n}); // Set or calculate default value about symbol, and calculate layout info.\n\nfunction getSymbolMeta(data, dataIndex, itemModel, opt) {\n  var layout = data.getItemLayout(dataIndex);\n  var symbolRepeat = itemModel.get('symbolRepeat');\n  var symbolClip = itemModel.get('symbolClip');\n  var symbolPosition = itemModel.get('symbolPosition') || 'start';\n  var symbolRotate = itemModel.get('symbolRotate');\n  var rotation = (symbolRotate || 0) * Math.PI / 180 || 0;\n  var symbolPatternSize = itemModel.get('symbolPatternSize') || 2;\n  var isAnimationEnabled = itemModel.isAnimationEnabled();\n  var symbolMeta = {\n    dataIndex: dataIndex,\n    layout: layout,\n    itemModel: itemModel,\n    symbolType: data.getItemVisual(dataIndex, 'symbol') || 'circle',\n    color: data.getItemVisual(dataIndex, 'color'),\n    symbolClip: symbolClip,\n    symbolRepeat: symbolRepeat,\n    symbolRepeatDirection: itemModel.get('symbolRepeatDirection'),\n    symbolPatternSize: symbolPatternSize,\n    rotation: rotation,\n    animationModel: isAnimationEnabled ? itemModel : null,\n    hoverAnimation: isAnimationEnabled && itemModel.get('hoverAnimation'),\n    z2: itemModel.getShallow('z', true) || 0\n  };\n  prepareBarLength(itemModel, symbolRepeat, layout, opt, symbolMeta);\n  prepareSymbolSize(data, dataIndex, layout, symbolRepeat, symbolClip, symbolMeta.boundingLength, symbolMeta.pxSign, symbolPatternSize, opt, symbolMeta);\n  prepareLineWidth(itemModel, symbolMeta.symbolScale, rotation, opt, symbolMeta);\n  var symbolSize = symbolMeta.symbolSize;\n  var symbolOffset = itemModel.get('symbolOffset');\n\n  if (zrUtil.isArray(symbolOffset)) {\n    symbolOffset = [parsePercent(symbolOffset[0], symbolSize[0]), parsePercent(symbolOffset[1], symbolSize[1])];\n  }\n\n  prepareLayoutInfo(itemModel, symbolSize, layout, symbolRepeat, symbolClip, symbolOffset, symbolPosition, symbolMeta.valueLineWidth, symbolMeta.boundingLength, symbolMeta.repeatCutLength, opt, symbolMeta);\n  return symbolMeta;\n} // bar length can be negative.\n\n\nfunction prepareBarLength(itemModel, symbolRepeat, layout, opt, output) {\n  var valueDim = opt.valueDim;\n  var symbolBoundingData = itemModel.get('symbolBoundingData');\n  var valueAxis = opt.coordSys.getOtherAxis(opt.coordSys.getBaseAxis());\n  var zeroPx = valueAxis.toGlobalCoord(valueAxis.dataToCoord(0));\n  var pxSignIdx = 1 - +(layout[valueDim.wh] <= 0);\n  var boundingLength;\n\n  if (zrUtil.isArray(symbolBoundingData)) {\n    var symbolBoundingExtent = [convertToCoordOnAxis(valueAxis, symbolBoundingData[0]) - zeroPx, convertToCoordOnAxis(valueAxis, symbolBoundingData[1]) - zeroPx];\n    symbolBoundingExtent[1] < symbolBoundingExtent[0] && symbolBoundingExtent.reverse();\n    boundingLength = symbolBoundingExtent[pxSignIdx];\n  } else if (symbolBoundingData != null) {\n    boundingLength = convertToCoordOnAxis(valueAxis, symbolBoundingData) - zeroPx;\n  } else if (symbolRepeat) {\n    boundingLength = opt.coordSysExtent[valueDim.index][pxSignIdx] - zeroPx;\n  } else {\n    boundingLength = layout[valueDim.wh];\n  }\n\n  output.boundingLength = boundingLength;\n\n  if (symbolRepeat) {\n    output.repeatCutLength = layout[valueDim.wh];\n  }\n\n  output.pxSign = boundingLength > 0 ? 1 : boundingLength < 0 ? -1 : 0;\n}\n\nfunction convertToCoordOnAxis(axis, value) {\n  return axis.toGlobalCoord(axis.dataToCoord(axis.scale.parse(value)));\n} // Support ['100%', '100%']\n\n\nfunction prepareSymbolSize(data, dataIndex, layout, symbolRepeat, symbolClip, boundingLength, pxSign, symbolPatternSize, opt, output) {\n  var valueDim = opt.valueDim;\n  var categoryDim = opt.categoryDim;\n  var categorySize = Math.abs(layout[categoryDim.wh]);\n  var symbolSize = data.getItemVisual(dataIndex, 'symbolSize');\n\n  if (zrUtil.isArray(symbolSize)) {\n    symbolSize = symbolSize.slice();\n  } else {\n    if (symbolSize == null) {\n      symbolSize = '100%';\n    }\n\n    symbolSize = [symbolSize, symbolSize];\n  } // Note: percentage symbolSize (like '100%') do not consider lineWidth, because it is\n  // to complicated to calculate real percent value if considering scaled lineWidth.\n  // So the actual size will bigger than layout size if lineWidth is bigger than zero,\n  // which can be tolerated in pictorial chart.\n\n\n  symbolSize[categoryDim.index] = parsePercent(symbolSize[categoryDim.index], categorySize);\n  symbolSize[valueDim.index] = parsePercent(symbolSize[valueDim.index], symbolRepeat ? categorySize : Math.abs(boundingLength));\n  output.symbolSize = symbolSize; // If x or y is less than zero, show reversed shape.\n\n  var symbolScale = output.symbolScale = [symbolSize[0] / symbolPatternSize, symbolSize[1] / symbolPatternSize]; // Follow convention, 'right' and 'top' is the normal scale.\n\n  symbolScale[valueDim.index] *= (opt.isHorizontal ? -1 : 1) * pxSign;\n}\n\nfunction prepareLineWidth(itemModel, symbolScale, rotation, opt, output) {\n  // In symbols are drawn with scale, so do not need to care about the case that width\n  // or height are too small. But symbol use strokeNoScale, where acture lineWidth should\n  // be calculated.\n  var valueLineWidth = itemModel.get(BAR_BORDER_WIDTH_QUERY) || 0;\n\n  if (valueLineWidth) {\n    pathForLineWidth.attr({\n      scale: symbolScale.slice(),\n      rotation: rotation\n    });\n    pathForLineWidth.updateTransform();\n    valueLineWidth /= pathForLineWidth.getLineScale();\n    valueLineWidth *= symbolScale[opt.valueDim.index];\n  }\n\n  output.valueLineWidth = valueLineWidth;\n}\n\nfunction prepareLayoutInfo(itemModel, symbolSize, layout, symbolRepeat, symbolClip, symbolOffset, symbolPosition, valueLineWidth, boundingLength, repeatCutLength, opt, output) {\n  var categoryDim = opt.categoryDim;\n  var valueDim = opt.valueDim;\n  var pxSign = output.pxSign;\n  var unitLength = Math.max(symbolSize[valueDim.index] + valueLineWidth, 0);\n  var pathLen = unitLength; // Note: rotation will not effect the layout of symbols, because user may\n  // want symbols to rotate on its center, which should not be translated\n  // when rotating.\n\n  if (symbolRepeat) {\n    var absBoundingLength = Math.abs(boundingLength);\n    var symbolMargin = zrUtil.retrieve(itemModel.get('symbolMargin'), '15%') + '';\n    var hasEndGap = false;\n\n    if (symbolMargin.lastIndexOf('!') === symbolMargin.length - 1) {\n      hasEndGap = true;\n      symbolMargin = symbolMargin.slice(0, symbolMargin.length - 1);\n    }\n\n    symbolMargin = parsePercent(symbolMargin, symbolSize[valueDim.index]);\n    var uLenWithMargin = Math.max(unitLength + symbolMargin * 2, 0); // When symbol margin is less than 0, margin at both ends will be subtracted\n    // to ensure that all of the symbols will not be overflow the given area.\n\n    var endFix = hasEndGap ? 0 : symbolMargin * 2; // Both final repeatTimes and final symbolMargin area calculated based on\n    // boundingLength.\n\n    var repeatSpecified = isNumeric(symbolRepeat);\n    var repeatTimes = repeatSpecified ? symbolRepeat : toIntTimes((absBoundingLength + endFix) / uLenWithMargin); // Adjust calculate margin, to ensure each symbol is displayed\n    // entirely in the given layout area.\n\n    var mDiff = absBoundingLength - repeatTimes * unitLength;\n    symbolMargin = mDiff / 2 / (hasEndGap ? repeatTimes : repeatTimes - 1);\n    uLenWithMargin = unitLength + symbolMargin * 2;\n    endFix = hasEndGap ? 0 : symbolMargin * 2; // Update repeatTimes when not all symbol will be shown.\n\n    if (!repeatSpecified && symbolRepeat !== 'fixed') {\n      repeatTimes = repeatCutLength ? toIntTimes((Math.abs(repeatCutLength) + endFix) / uLenWithMargin) : 0;\n    }\n\n    pathLen = repeatTimes * uLenWithMargin - endFix;\n    output.repeatTimes = repeatTimes;\n    output.symbolMargin = symbolMargin;\n  }\n\n  var sizeFix = pxSign * (pathLen / 2);\n  var pathPosition = output.pathPosition = [];\n  pathPosition[categoryDim.index] = layout[categoryDim.wh] / 2;\n  pathPosition[valueDim.index] = symbolPosition === 'start' ? sizeFix : symbolPosition === 'end' ? boundingLength - sizeFix : boundingLength / 2; // 'center'\n\n  if (symbolOffset) {\n    pathPosition[0] += symbolOffset[0];\n    pathPosition[1] += symbolOffset[1];\n  }\n\n  var bundlePosition = output.bundlePosition = [];\n  bundlePosition[categoryDim.index] = layout[categoryDim.xy];\n  bundlePosition[valueDim.index] = layout[valueDim.xy];\n  var barRectShape = output.barRectShape = zrUtil.extend({}, layout);\n  barRectShape[valueDim.wh] = pxSign * Math.max(Math.abs(layout[valueDim.wh]), Math.abs(pathPosition[valueDim.index] + sizeFix));\n  barRectShape[categoryDim.wh] = layout[categoryDim.wh];\n  var clipShape = output.clipShape = {}; // Consider that symbol may be overflow layout rect.\n\n  clipShape[categoryDim.xy] = -layout[categoryDim.xy];\n  clipShape[categoryDim.wh] = opt.ecSize[categoryDim.wh];\n  clipShape[valueDim.xy] = 0;\n  clipShape[valueDim.wh] = layout[valueDim.wh];\n}\n\nfunction createPath(symbolMeta) {\n  var symbolPatternSize = symbolMeta.symbolPatternSize;\n  var path = createSymbol( // Consider texture img, make a big size.\n  symbolMeta.symbolType, -symbolPatternSize / 2, -symbolPatternSize / 2, symbolPatternSize, symbolPatternSize, symbolMeta.color);\n  path.attr({\n    culling: true\n  });\n  path.type !== 'image' && path.setStyle({\n    strokeNoScale: true\n  });\n  return path;\n}\n\nfunction createOrUpdateRepeatSymbols(bar, opt, symbolMeta, isUpdate) {\n  var bundle = bar.__pictorialBundle;\n  var symbolSize = symbolMeta.symbolSize;\n  var valueLineWidth = symbolMeta.valueLineWidth;\n  var pathPosition = symbolMeta.pathPosition;\n  var valueDim = opt.valueDim;\n  var repeatTimes = symbolMeta.repeatTimes || 0;\n  var index = 0;\n  var unit = symbolSize[opt.valueDim.index] + valueLineWidth + symbolMeta.symbolMargin * 2;\n  eachPath(bar, function (path) {\n    path.__pictorialAnimationIndex = index;\n    path.__pictorialRepeatTimes = repeatTimes;\n\n    if (index < repeatTimes) {\n      updateAttr(path, null, makeTarget(index), symbolMeta, isUpdate);\n    } else {\n      updateAttr(path, null, {\n        scale: [0, 0]\n      }, symbolMeta, isUpdate, function () {\n        bundle.remove(path);\n      });\n    }\n\n    updateHoverAnimation(path, symbolMeta);\n    index++;\n  });\n\n  for (; index < repeatTimes; index++) {\n    var path = createPath(symbolMeta);\n    path.__pictorialAnimationIndex = index;\n    path.__pictorialRepeatTimes = repeatTimes;\n    bundle.add(path);\n    var target = makeTarget(index);\n    updateAttr(path, {\n      position: target.position,\n      scale: [0, 0]\n    }, {\n      scale: target.scale,\n      rotation: target.rotation\n    }, symbolMeta, isUpdate); // FIXME\n    // If all emphasis/normal through action.\n\n    path.on('mouseover', onMouseOver).on('mouseout', onMouseOut);\n    updateHoverAnimation(path, symbolMeta);\n  }\n\n  function makeTarget(index) {\n    var position = pathPosition.slice(); // (start && pxSign > 0) || (end && pxSign < 0): i = repeatTimes - index\n    // Otherwise: i = index;\n\n    var pxSign = symbolMeta.pxSign;\n    var i = index;\n\n    if (symbolMeta.symbolRepeatDirection === 'start' ? pxSign > 0 : pxSign < 0) {\n      i = repeatTimes - 1 - index;\n    }\n\n    position[valueDim.index] = unit * (i - repeatTimes / 2 + 0.5) + pathPosition[valueDim.index];\n    return {\n      position: position,\n      scale: symbolMeta.symbolScale.slice(),\n      rotation: symbolMeta.rotation\n    };\n  }\n\n  function onMouseOver() {\n    eachPath(bar, function (path) {\n      path.trigger('emphasis');\n    });\n  }\n\n  function onMouseOut() {\n    eachPath(bar, function (path) {\n      path.trigger('normal');\n    });\n  }\n}\n\nfunction createOrUpdateSingleSymbol(bar, opt, symbolMeta, isUpdate) {\n  var bundle = bar.__pictorialBundle;\n  var mainPath = bar.__pictorialMainPath;\n\n  if (!mainPath) {\n    mainPath = bar.__pictorialMainPath = createPath(symbolMeta);\n    bundle.add(mainPath);\n    updateAttr(mainPath, {\n      position: symbolMeta.pathPosition.slice(),\n      scale: [0, 0],\n      rotation: symbolMeta.rotation\n    }, {\n      scale: symbolMeta.symbolScale.slice()\n    }, symbolMeta, isUpdate);\n    mainPath.on('mouseover', onMouseOver).on('mouseout', onMouseOut);\n  } else {\n    updateAttr(mainPath, null, {\n      position: symbolMeta.pathPosition.slice(),\n      scale: symbolMeta.symbolScale.slice(),\n      rotation: symbolMeta.rotation\n    }, symbolMeta, isUpdate);\n  }\n\n  updateHoverAnimation(mainPath, symbolMeta);\n\n  function onMouseOver() {\n    this.trigger('emphasis');\n  }\n\n  function onMouseOut() {\n    this.trigger('normal');\n  }\n} // bar rect is used for label.\n\n\nfunction createOrUpdateBarRect(bar, symbolMeta, isUpdate) {\n  var rectShape = zrUtil.extend({}, symbolMeta.barRectShape);\n  var barRect = bar.__pictorialBarRect;\n\n  if (!barRect) {\n    barRect = bar.__pictorialBarRect = new graphic.Rect({\n      z2: 2,\n      shape: rectShape,\n      silent: true,\n      style: {\n        stroke: 'transparent',\n        fill: 'transparent',\n        lineWidth: 0\n      }\n    });\n    bar.add(barRect);\n  } else {\n    updateAttr(barRect, null, {\n      shape: rectShape\n    }, symbolMeta, isUpdate);\n  }\n}\n\nfunction createOrUpdateClip(bar, opt, symbolMeta, isUpdate) {\n  // If not clip, symbol will be remove and rebuilt.\n  if (symbolMeta.symbolClip) {\n    var clipPath = bar.__pictorialClipPath;\n    var clipShape = zrUtil.extend({}, symbolMeta.clipShape);\n    var valueDim = opt.valueDim;\n    var animationModel = symbolMeta.animationModel;\n    var dataIndex = symbolMeta.dataIndex;\n\n    if (clipPath) {\n      graphic.updateProps(clipPath, {\n        shape: clipShape\n      }, animationModel, dataIndex);\n    } else {\n      clipShape[valueDim.wh] = 0;\n      clipPath = new graphic.Rect({\n        shape: clipShape\n      });\n\n      bar.__pictorialBundle.setClipPath(clipPath);\n\n      bar.__pictorialClipPath = clipPath;\n      var target = {};\n      target[valueDim.wh] = symbolMeta.clipShape[valueDim.wh];\n      graphic[isUpdate ? 'updateProps' : 'initProps'](clipPath, {\n        shape: target\n      }, animationModel, dataIndex);\n    }\n  }\n}\n\nfunction getItemModel(data, dataIndex) {\n  var itemModel = data.getItemModel(dataIndex);\n  itemModel.getAnimationDelayParams = getAnimationDelayParams;\n  itemModel.isAnimationEnabled = isAnimationEnabled;\n  return itemModel;\n}\n\nfunction getAnimationDelayParams(path) {\n  // The order is the same as the z-order, see `symbolRepeatDiretion`.\n  return {\n    index: path.__pictorialAnimationIndex,\n    count: path.__pictorialRepeatTimes\n  };\n}\n\nfunction isAnimationEnabled() {\n  // `animation` prop can be set on itemModel in pictorial bar chart.\n  return this.parentModel.isAnimationEnabled() && !!this.getShallow('animation');\n}\n\nfunction updateHoverAnimation(path, symbolMeta) {\n  path.off('emphasis').off('normal');\n  var scale = symbolMeta.symbolScale.slice();\n  symbolMeta.hoverAnimation && path.on('emphasis', function () {\n    this.animateTo({\n      scale: [scale[0] * 1.1, scale[1] * 1.1]\n    }, 400, 'elasticOut');\n  }).on('normal', function () {\n    this.animateTo({\n      scale: scale.slice()\n    }, 400, 'elasticOut');\n  });\n}\n\nfunction createBar(data, opt, symbolMeta, isUpdate) {\n  // bar is the main element for each data.\n  var bar = new graphic.Group(); // bundle is used for location and clip.\n\n  var bundle = new graphic.Group();\n  bar.add(bundle);\n  bar.__pictorialBundle = bundle;\n  bundle.attr('position', symbolMeta.bundlePosition.slice());\n\n  if (symbolMeta.symbolRepeat) {\n    createOrUpdateRepeatSymbols(bar, opt, symbolMeta);\n  } else {\n    createOrUpdateSingleSymbol(bar, opt, symbolMeta);\n  }\n\n  createOrUpdateBarRect(bar, symbolMeta, isUpdate);\n  createOrUpdateClip(bar, opt, symbolMeta, isUpdate);\n  bar.__pictorialShapeStr = getShapeStr(data, symbolMeta);\n  bar.__pictorialSymbolMeta = symbolMeta;\n  return bar;\n}\n\nfunction updateBar(bar, opt, symbolMeta) {\n  var animationModel = symbolMeta.animationModel;\n  var dataIndex = symbolMeta.dataIndex;\n  var bundle = bar.__pictorialBundle;\n  graphic.updateProps(bundle, {\n    position: symbolMeta.bundlePosition.slice()\n  }, animationModel, dataIndex);\n\n  if (symbolMeta.symbolRepeat) {\n    createOrUpdateRepeatSymbols(bar, opt, symbolMeta, true);\n  } else {\n    createOrUpdateSingleSymbol(bar, opt, symbolMeta, true);\n  }\n\n  createOrUpdateBarRect(bar, symbolMeta, true);\n  createOrUpdateClip(bar, opt, symbolMeta, true);\n}\n\nfunction removeBar(data, dataIndex, animationModel, bar) {\n  // Not show text when animating\n  var labelRect = bar.__pictorialBarRect;\n  labelRect && (labelRect.style.text = null);\n  var pathes = [];\n  eachPath(bar, function (path) {\n    pathes.push(path);\n  });\n  bar.__pictorialMainPath && pathes.push(bar.__pictorialMainPath); // I do not find proper remove animation for clip yet.\n\n  bar.__pictorialClipPath && (animationModel = null);\n  zrUtil.each(pathes, function (path) {\n    graphic.updateProps(path, {\n      scale: [0, 0]\n    }, animationModel, dataIndex, function () {\n      bar.parent && bar.parent.remove(bar);\n    });\n  });\n  data.setItemGraphicEl(dataIndex, null);\n}\n\nfunction getShapeStr(data, symbolMeta) {\n  return [data.getItemVisual(symbolMeta.dataIndex, 'symbol') || 'none', !!symbolMeta.symbolRepeat, !!symbolMeta.symbolClip].join(':');\n}\n\nfunction eachPath(bar, cb, context) {\n  // Do not use Group#eachChild, because it do not support remove.\n  zrUtil.each(bar.__pictorialBundle.children(), function (el) {\n    el !== bar.__pictorialBarRect && cb.call(context, el);\n  });\n}\n\nfunction updateAttr(el, immediateAttrs, animationAttrs, symbolMeta, isUpdate, cb) {\n  immediateAttrs && el.attr(immediateAttrs); // when symbolCip used, only clip path has init animation, otherwise it would be weird effect.\n\n  if (symbolMeta.symbolClip && !isUpdate) {\n    animationAttrs && el.attr(animationAttrs);\n  } else {\n    animationAttrs && graphic[isUpdate ? 'updateProps' : 'initProps'](el, animationAttrs, symbolMeta.animationModel, symbolMeta.dataIndex, cb);\n  }\n}\n\nfunction updateCommon(bar, opt, symbolMeta) {\n  var color = symbolMeta.color;\n  var dataIndex = symbolMeta.dataIndex;\n  var itemModel = symbolMeta.itemModel; // Color must be excluded.\n  // Because symbol provide setColor individually to set fill and stroke\n\n  var normalStyle = itemModel.getModel('itemStyle').getItemStyle(['color']);\n  var hoverStyle = itemModel.getModel('emphasis.itemStyle').getItemStyle();\n  var cursorStyle = itemModel.getShallow('cursor');\n  eachPath(bar, function (path) {\n    // PENDING setColor should be before setStyle!!!\n    path.setColor(color);\n    path.setStyle(zrUtil.defaults({\n      fill: color,\n      opacity: symbolMeta.opacity\n    }, normalStyle));\n    graphic.setHoverStyle(path, hoverStyle);\n    cursorStyle && (path.cursor = cursorStyle);\n    path.z2 = symbolMeta.z2;\n  });\n  var barRectHoverStyle = {};\n  var barPositionOutside = opt.valueDim.posDesc[+(symbolMeta.boundingLength > 0)];\n  var barRect = bar.__pictorialBarRect;\n  setLabel(barRect.style, barRectHoverStyle, itemModel, color, opt.seriesModel, dataIndex, barPositionOutside);\n  graphic.setHoverStyle(barRect, barRectHoverStyle);\n}\n\nfunction toIntTimes(times) {\n  var roundedTimes = Math.round(times); // Escapse accurate error\n\n  return Math.abs(times - roundedTimes) < 1e-4 ? roundedTimes : Math.ceil(times);\n}\n\nvar _default = BarView;\nmodule.exports = _default;","var makeStyleMapper = require(\"../../model/mixin/makeStyleMapper\");\n\nvar getBarItemStyle = makeStyleMapper([['fill', 'color'], ['stroke', 'borderColor'], ['lineWidth', 'borderWidth'], // Compatitable with 2\n['stroke', 'barBorderColor'], ['lineWidth', 'barBorderWidth'], ['opacity'], ['shadowBlur'], ['shadowOffsetX'], ['shadowOffsetY'], ['shadowColor']]);\nvar _default = {\n  getBarItemStyle: function (excludes) {\n    var style = getBarItemStyle(this, excludes);\n\n    if (this.getBorderLineDash) {\n      var lineDash = this.getBorderLineDash();\n      lineDash && (style.lineDash = lineDash);\n    }\n\n    return style;\n  }\n};\nmodule.exports = _default;","var graphic = require(\"../../util/graphic\");\n\nvar _labelHelper = require(\"../helper/labelHelper\");\n\nvar getDefaultLabel = _labelHelper.getDefaultLabel;\n\nfunction setLabel(normalStyle, hoverStyle, itemModel, color, seriesModel, dataIndex, labelPositionOutside) {\n  var labelModel = itemModel.getModel('label');\n  var hoverLabelModel = itemModel.getModel('emphasis.label');\n  graphic.setLabelStyle(normalStyle, hoverStyle, labelModel, hoverLabelModel, {\n    labelFetcher: seriesModel,\n    labelDataIndex: dataIndex,\n    defaultText: getDefaultLabel(seriesModel.getData(), dataIndex),\n    isRectText: true,\n    autoColor: color\n  });\n  fixPosition(normalStyle);\n  fixPosition(hoverStyle);\n}\n\nfunction fixPosition(style, labelPositionOutside) {\n  if (style.textPosition === 'outside') {\n    style.textPosition = labelPositionOutside;\n  }\n}\n\nexports.setLabel = setLabel;","var echarts = require(\"../echarts\");\n\nrequire(\"./boxplot/BoxplotSeries\");\n\nrequire(\"./boxplot/BoxplotView\");\n\nvar boxplotVisual = require(\"./boxplot/boxplotVisual\");\n\nvar boxplotLayout = require(\"./boxplot/boxplotLayout\");\n\necharts.registerVisual(boxplotVisual);\necharts.registerLayout(boxplotLayout);","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar SeriesModel = require(\"../../model/Series\");\n\nvar _whiskerBoxCommon = require(\"../helper/whiskerBoxCommon\");\n\nvar seriesModelMixin = _whiskerBoxCommon.seriesModelMixin;\nvar BoxplotSeries = SeriesModel.extend({\n  type: 'series.boxplot',\n  dependencies: ['xAxis', 'yAxis', 'grid'],\n  // TODO\n  // box width represents group size, so dimension should have 'size'.\n\n  /**\n   * @see <https://en.wikipedia.org/wiki/Box_plot>\n   * The meanings of 'min' and 'max' depend on user,\n   * and echarts do not need to know it.\n   * @readOnly\n   */\n  defaultValueDimensions: ['min', 'Q1', 'median', 'Q3', 'max'],\n\n  /**\n   * @type {Array.<string>}\n   * @readOnly\n   */\n  dimensions: null,\n\n  /**\n   * @override\n   */\n  defaultOption: {\n    zlevel: 0,\n    // 一级层叠\n    z: 2,\n    // 二级层叠\n    coordinateSystem: 'cartesian2d',\n    legendHoverLink: true,\n    hoverAnimation: true,\n    // xAxisIndex: 0,\n    // yAxisIndex: 0,\n    layout: null,\n    // 'horizontal' or 'vertical'\n    boxWidth: [7, 50],\n    // [min, max] can be percent of band width.\n    itemStyle: {\n      color: '#fff',\n      borderWidth: 1\n    },\n    emphasis: {\n      itemStyle: {\n        borderWidth: 2,\n        shadowBlur: 5,\n        shadowOffsetX: 2,\n        shadowOffsetY: 2,\n        shadowColor: 'rgba(0,0,0,0.4)'\n      }\n    },\n    animationEasing: 'elasticOut',\n    animationDuration: 800\n  }\n});\nzrUtil.mixin(BoxplotSeries, seriesModelMixin, true);\nvar _default = BoxplotSeries;\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar ChartView = require(\"../../view/Chart\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar _whiskerBoxCommon = require(\"../helper/whiskerBoxCommon\");\n\nvar viewMixin = _whiskerBoxCommon.viewMixin;\nvar BoxplotView = ChartView.extend({\n  type: 'boxplot',\n  getStyleUpdater: function () {\n    return updateStyle;\n  },\n  dispose: zrUtil.noop\n});\nzrUtil.mixin(BoxplotView, viewMixin, true); // Update common properties\n\nvar normalStyleAccessPath = ['itemStyle'];\nvar emphasisStyleAccessPath = ['emphasis', 'itemStyle'];\n\nfunction updateStyle(itemGroup, data, idx) {\n  var itemModel = data.getItemModel(idx);\n  var normalItemStyleModel = itemModel.getModel(normalStyleAccessPath);\n  var borderColor = data.getItemVisual(idx, 'color'); // Exclude borderColor.\n\n  var itemStyle = normalItemStyleModel.getItemStyle(['borderColor']);\n  var whiskerEl = itemGroup.childAt(itemGroup.whiskerIndex);\n  whiskerEl.style.set(itemStyle);\n  whiskerEl.style.stroke = borderColor;\n  whiskerEl.dirty();\n  var bodyEl = itemGroup.childAt(itemGroup.bodyIndex);\n  bodyEl.style.set(itemStyle);\n  bodyEl.style.stroke = borderColor;\n  bodyEl.dirty();\n  var hoverStyle = itemModel.getModel(emphasisStyleAccessPath).getItemStyle();\n  graphic.setHoverStyle(itemGroup, hoverStyle);\n}\n\nvar _default = BoxplotView;\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar _number = require(\"../../util/number\");\n\nvar parsePercent = _number.parsePercent;\nvar each = zrUtil.each;\n\nfunction _default(ecModel) {\n  var groupResult = groupSeriesByAxis(ecModel);\n  each(groupResult, function (groupItem) {\n    var seriesModels = groupItem.seriesModels;\n\n    if (!seriesModels.length) {\n      return;\n    }\n\n    calculateBase(groupItem);\n    each(seriesModels, function (seriesModel, idx) {\n      layoutSingleSeries(seriesModel, groupItem.boxOffsetList[idx], groupItem.boxWidthList[idx]);\n    });\n  });\n}\n/**\n * Group series by axis.\n */\n\n\nfunction groupSeriesByAxis(ecModel) {\n  var result = [];\n  var axisList = [];\n  ecModel.eachSeriesByType('boxplot', function (seriesModel) {\n    var baseAxis = seriesModel.getBaseAxis();\n    var idx = zrUtil.indexOf(axisList, baseAxis);\n\n    if (idx < 0) {\n      idx = axisList.length;\n      axisList[idx] = baseAxis;\n      result[idx] = {\n        axis: baseAxis,\n        seriesModels: []\n      };\n    }\n\n    result[idx].seriesModels.push(seriesModel);\n  });\n  return result;\n}\n/**\n * Calculate offset and box width for each series.\n */\n\n\nfunction calculateBase(groupItem) {\n  var extent;\n  var baseAxis = groupItem.axis;\n  var seriesModels = groupItem.seriesModels;\n  var seriesCount = seriesModels.length;\n  var boxWidthList = groupItem.boxWidthList = [];\n  var boxOffsetList = groupItem.boxOffsetList = [];\n  var boundList = [];\n  var bandWidth;\n\n  if (baseAxis.type === 'category') {\n    bandWidth = baseAxis.getBandWidth();\n  } else {\n    var maxDataCount = 0;\n    each(seriesModels, function (seriesModel) {\n      maxDataCount = Math.max(maxDataCount, seriesModel.getData().count());\n    });\n    extent = baseAxis.getExtent(), Math.abs(extent[1] - extent[0]) / maxDataCount;\n  }\n\n  each(seriesModels, function (seriesModel) {\n    var boxWidthBound = seriesModel.get('boxWidth');\n\n    if (!zrUtil.isArray(boxWidthBound)) {\n      boxWidthBound = [boxWidthBound, boxWidthBound];\n    }\n\n    boundList.push([parsePercent(boxWidthBound[0], bandWidth) || 0, parsePercent(boxWidthBound[1], bandWidth) || 0]);\n  });\n  var availableWidth = bandWidth * 0.8 - 2;\n  var boxGap = availableWidth / seriesCount * 0.3;\n  var boxWidth = (availableWidth - boxGap * (seriesCount - 1)) / seriesCount;\n  var base = boxWidth / 2 - availableWidth / 2;\n  each(seriesModels, function (seriesModel, idx) {\n    boxOffsetList.push(base);\n    base += boxGap + boxWidth;\n    boxWidthList.push(Math.min(Math.max(boxWidth, boundList[idx][0]), boundList[idx][1]));\n  });\n}\n/**\n * Calculate points location for each series.\n */\n\n\nfunction layoutSingleSeries(seriesModel, offset, boxWidth) {\n  var coordSys = seriesModel.coordinateSystem;\n  var data = seriesModel.getData();\n  var halfWidth = boxWidth / 2;\n  var chartLayout = seriesModel.get('layout');\n  var variableDim = chartLayout === 'horizontal' ? 0 : 1;\n  var constDim = 1 - variableDim;\n  var coordDims = ['x', 'y'];\n  var vDims = [];\n  var cDim;\n  zrUtil.each(data.dimensions, function (dimName) {\n    var dimInfo = data.getDimensionInfo(dimName);\n    var coordDim = dimInfo.coordDim;\n\n    if (coordDim === coordDims[constDim]) {\n      vDims.push(dimName);\n    } else if (coordDim === coordDims[variableDim]) {\n      cDim = dimName;\n    }\n  });\n\n  if (cDim == null || vDims.length < 5) {\n    return;\n  }\n\n  data.each([cDim].concat(vDims), function () {\n    var args = arguments;\n    var axisDimVal = args[0];\n    var idx = args[vDims.length + 1];\n    var median = getPoint(args[3]);\n    var end1 = getPoint(args[1]);\n    var end5 = getPoint(args[5]);\n    var whiskerEnds = [[end1, getPoint(args[2])], [end5, getPoint(args[4])]];\n    layEndLine(end1);\n    layEndLine(end5);\n    layEndLine(median);\n    var bodyEnds = [];\n    addBodyEnd(whiskerEnds[0][1], 0);\n    addBodyEnd(whiskerEnds[1][1], 1);\n    data.setItemLayout(idx, {\n      chartLayout: chartLayout,\n      initBaseline: median[constDim],\n      median: median,\n      bodyEnds: bodyEnds,\n      whiskerEnds: whiskerEnds\n    });\n\n    function getPoint(val) {\n      var p = [];\n      p[variableDim] = axisDimVal;\n      p[constDim] = val;\n      var point;\n\n      if (isNaN(axisDimVal) || isNaN(val)) {\n        point = [NaN, NaN];\n      } else {\n        point = coordSys.dataToPoint(p);\n        point[variableDim] += offset;\n      }\n\n      return point;\n    }\n\n    function addBodyEnd(point, start) {\n      var point1 = point.slice();\n      var point2 = point.slice();\n      point1[variableDim] += halfWidth;\n      point2[variableDim] -= halfWidth;\n      start ? bodyEnds.push(point1, point2) : bodyEnds.push(point2, point1);\n    }\n\n    function layEndLine(endCenter) {\n      var line = [endCenter.slice(), endCenter.slice()];\n      line[0][variableDim] -= halfWidth;\n      line[1][variableDim] += halfWidth;\n      whiskerEnds.push(line);\n    }\n  });\n}\n\nmodule.exports = _default;","var borderColorQuery = ['itemStyle', 'borderColor'];\n\nfunction _default(ecModel, api) {\n  var globalColors = ecModel.get('color');\n  ecModel.eachRawSeriesByType('boxplot', function (seriesModel) {\n    var defaulColor = globalColors[seriesModel.seriesIndex % globalColors.length];\n    var data = seriesModel.getData();\n    data.setVisual({\n      legendSymbol: 'roundRect',\n      // Use name 'color' but not 'borderColor' for legend usage and\n      // visual coding from other component like dataRange.\n      color: seriesModel.get(borderColorQuery) || defaulColor\n    }); // Only visible series has each data be visual encoded\n\n    if (!ecModel.isSeriesFiltered(seriesModel)) {\n      data.each(function (idx) {\n        var itemModel = data.getItemModel(idx);\n        data.setItemVisual(idx, {\n          color: itemModel.get(borderColorQuery, true)\n        });\n      });\n    }\n  });\n}\n\nmodule.exports = _default;","var echarts = require(\"../echarts\");\n\nrequire(\"./candlestick/CandlestickSeries\");\n\nrequire(\"./candlestick/CandlestickView\");\n\nvar preprocessor = require(\"./candlestick/preprocessor\");\n\nvar candlestickVisual = require(\"./candlestick/candlestickVisual\");\n\nvar candlestickLayout = require(\"./candlestick/candlestickLayout\");\n\necharts.registerPreprocessor(preprocessor);\necharts.registerVisual(candlestickVisual);\necharts.registerLayout(candlestickLayout);","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar SeriesModel = require(\"../../model/Series\");\n\nvar _whiskerBoxCommon = require(\"../helper/whiskerBoxCommon\");\n\nvar seriesModelMixin = _whiskerBoxCommon.seriesModelMixin;\nvar CandlestickSeries = SeriesModel.extend({\n  type: 'series.candlestick',\n  dependencies: ['xAxis', 'yAxis', 'grid'],\n\n  /**\n   * @readOnly\n   */\n  defaultValueDimensions: ['open', 'close', 'lowest', 'highest'],\n\n  /**\n   * @type {Array.<string>}\n   * @readOnly\n   */\n  dimensions: null,\n\n  /**\n   * @override\n   */\n  defaultOption: {\n    zlevel: 0,\n    // 一级层叠\n    z: 2,\n    // 二级层叠\n    coordinateSystem: 'cartesian2d',\n    legendHoverLink: true,\n    hoverAnimation: true,\n    // xAxisIndex: 0,\n    // yAxisIndex: 0,\n    layout: null,\n    // 'horizontal' or 'vertical'\n    itemStyle: {\n      color: '#c23531',\n      // 阳线 positive\n      color0: '#314656',\n      // 阴线 negative     '#c23531', '#314656'\n      borderWidth: 1,\n      // FIXME\n      // ec2中使用的是lineStyle.color 和 lineStyle.color0\n      borderColor: '#c23531',\n      borderColor0: '#314656'\n    },\n    emphasis: {\n      itemStyle: {\n        borderWidth: 2\n      }\n    },\n    barMaxWidth: null,\n    barMinWidth: null,\n    barWidth: null,\n    animationUpdate: false,\n    animationEasing: 'linear',\n    animationDuration: 300\n  },\n\n  /**\n   * Get dimension for shadow in dataZoom\n   * @return {string} dimension name\n   */\n  getShadowDim: function () {\n    return 'open';\n  },\n  brushSelector: function (dataIndex, data, selectors) {\n    var itemLayout = data.getItemLayout(dataIndex);\n    return selectors.rect(itemLayout.brushRect);\n  }\n});\nzrUtil.mixin(CandlestickSeries, seriesModelMixin, true);\nvar _default = CandlestickSeries;\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar ChartView = require(\"../../view/Chart\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar _whiskerBoxCommon = require(\"../helper/whiskerBoxCommon\");\n\nvar viewMixin = _whiskerBoxCommon.viewMixin;\nvar CandlestickView = ChartView.extend({\n  type: 'candlestick',\n  getStyleUpdater: function () {\n    return updateStyle;\n  },\n  dispose: zrUtil.noop\n});\nzrUtil.mixin(CandlestickView, viewMixin, true); // Update common properties\n\nvar normalStyleAccessPath = ['itemStyle'];\nvar emphasisStyleAccessPath = ['emphasis', 'itemStyle'];\n\nfunction updateStyle(itemGroup, data, idx) {\n  var itemModel = data.getItemModel(idx);\n  var normalItemStyleModel = itemModel.getModel(normalStyleAccessPath);\n  var color = data.getItemVisual(idx, 'color');\n  var borderColor = data.getItemVisual(idx, 'borderColor') || color; // Color must be excluded.\n  // Because symbol provide setColor individually to set fill and stroke\n\n  var itemStyle = normalItemStyleModel.getItemStyle(['color', 'color0', 'borderColor', 'borderColor0']);\n  var whiskerEl = itemGroup.childAt(itemGroup.whiskerIndex);\n  whiskerEl.useStyle(itemStyle);\n  whiskerEl.style.stroke = borderColor;\n  var bodyEl = itemGroup.childAt(itemGroup.bodyIndex);\n  bodyEl.useStyle(itemStyle);\n  bodyEl.style.fill = color;\n  bodyEl.style.stroke = borderColor;\n  var hoverStyle = itemModel.getModel(emphasisStyleAccessPath).getItemStyle();\n  graphic.setHoverStyle(itemGroup, hoverStyle);\n}\n\nvar _default = CandlestickView;\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar _number = require(\"../../util/number\");\n\nvar parsePercent = _number.parsePercent;\n\nvar _graphic = require(\"../../util/graphic\");\n\nvar subPixelOptimize = _graphic.subPixelOptimize;\nvar retrieve2 = zrUtil.retrieve2;\n\nfunction _default(ecModel) {\n  ecModel.eachSeriesByType('candlestick', function (seriesModel) {\n    var coordSys = seriesModel.coordinateSystem;\n    var data = seriesModel.getData();\n    var candleWidth = calculateCandleWidth(seriesModel, data);\n    var chartLayout = seriesModel.get('layout');\n    var variableDim = chartLayout === 'horizontal' ? 0 : 1;\n    var constDim = 1 - variableDim;\n    var coordDims = ['x', 'y'];\n    var vDims = [];\n    var cDim;\n    zrUtil.each(data.dimensions, function (dimName) {\n      var dimInfo = data.getDimensionInfo(dimName);\n      var coordDim = dimInfo.coordDim;\n\n      if (coordDim === coordDims[constDim]) {\n        vDims.push(dimName);\n      } else if (coordDim === coordDims[variableDim]) {\n        cDim = dimName;\n      }\n    });\n\n    if (cDim == null || vDims.length < 4) {\n      return;\n    }\n\n    var dataIndex = 0;\n    data.each([cDim].concat(vDims), function () {\n      var args = arguments;\n      var axisDimVal = args[0];\n      var idx = args[vDims.length + 1];\n      var openVal = args[1];\n      var closeVal = args[2];\n      var lowestVal = args[3];\n      var highestVal = args[4];\n      var ocLow = Math.min(openVal, closeVal);\n      var ocHigh = Math.max(openVal, closeVal);\n      var ocLowPoint = getPoint(ocLow);\n      var ocHighPoint = getPoint(ocHigh);\n      var lowestPoint = getPoint(lowestVal);\n      var highestPoint = getPoint(highestVal);\n      var whiskerEnds = [[subPixelOptimizePoint(highestPoint), subPixelOptimizePoint(ocHighPoint)], [subPixelOptimizePoint(lowestPoint), subPixelOptimizePoint(ocLowPoint)]];\n      var bodyEnds = [];\n      addBodyEnd(ocHighPoint, 0);\n      addBodyEnd(ocLowPoint, 1);\n      var sign;\n\n      if (openVal > closeVal) {\n        sign = -1;\n      } else if (openVal < closeVal) {\n        sign = 1;\n      } else {\n        // If close === open, compare with close of last record\n        if (dataIndex > 0) {\n          sign = data.getItemModel(dataIndex - 1).get()[2] <= closeVal ? 1 : -1;\n        } else {\n          // No record of previous, set to be positive\n          sign = 1;\n        }\n      }\n\n      data.setItemLayout(idx, {\n        chartLayout: chartLayout,\n        sign: sign,\n        initBaseline: openVal > closeVal ? ocHighPoint[constDim] : ocLowPoint[constDim],\n        // open point.\n        bodyEnds: bodyEnds,\n        whiskerEnds: whiskerEnds,\n        brushRect: makeBrushRect()\n      });\n      ++dataIndex;\n\n      function getPoint(val) {\n        var p = [];\n        p[variableDim] = axisDimVal;\n        p[constDim] = val;\n        return isNaN(axisDimVal) || isNaN(val) ? [NaN, NaN] : coordSys.dataToPoint(p);\n      }\n\n      function addBodyEnd(point, start) {\n        var point1 = point.slice();\n        var point2 = point.slice();\n        point1[variableDim] = subPixelOptimize(point1[variableDim] + candleWidth / 2, 1, false);\n        point2[variableDim] = subPixelOptimize(point2[variableDim] - candleWidth / 2, 1, true);\n        start ? bodyEnds.push(point1, point2) : bodyEnds.push(point2, point1);\n      }\n\n      function makeBrushRect() {\n        var pmin = getPoint(Math.min(openVal, closeVal, lowestVal, highestVal));\n        var pmax = getPoint(Math.max(openVal, closeVal, lowestVal, highestVal));\n        pmin[variableDim] -= candleWidth / 2;\n        pmax[variableDim] -= candleWidth / 2;\n        return {\n          x: pmin[0],\n          y: pmin[1],\n          width: constDim ? candleWidth : pmax[0] - pmin[0],\n          height: constDim ? pmax[1] - pmin[1] : candleWidth\n        };\n      }\n\n      function subPixelOptimizePoint(point) {\n        point[variableDim] = subPixelOptimize(point[variableDim], 1);\n        return point;\n      }\n    }, true);\n  });\n}\n\nfunction calculateCandleWidth(seriesModel, data) {\n  var baseAxis = seriesModel.getBaseAxis();\n  var extent;\n  var bandWidth = baseAxis.type === 'category' ? baseAxis.getBandWidth() : (extent = baseAxis.getExtent(), Math.abs(extent[1] - extent[0]) / data.count());\n  var barMaxWidth = parsePercent(retrieve2(seriesModel.get('barMaxWidth'), bandWidth), bandWidth);\n  var barMinWidth = parsePercent(retrieve2(seriesModel.get('barMinWidth'), 1), bandWidth);\n  var barWidth = seriesModel.get('barWidth');\n  return barWidth != null ? parsePercent(barWidth, bandWidth) // Put max outer to ensure bar visible in spite of overlap.\n  : Math.max(Math.min(bandWidth / 2, barMaxWidth), barMinWidth);\n}\n\nmodule.exports = _default;","var positiveBorderColorQuery = ['itemStyle', 'borderColor'];\nvar negativeBorderColorQuery = ['itemStyle', 'borderColor0'];\nvar positiveColorQuery = ['itemStyle', 'color'];\nvar negativeColorQuery = ['itemStyle', 'color0'];\n\nfunction _default(ecModel, api) {\n  ecModel.eachRawSeriesByType('candlestick', function (seriesModel) {\n    var data = seriesModel.getData();\n    data.setVisual({\n      legendSymbol: 'roundRect'\n    }); // Only visible series has each data be visual encoded\n\n    if (!ecModel.isSeriesFiltered(seriesModel)) {\n      data.each(function (idx) {\n        var itemModel = data.getItemModel(idx);\n        var sign = data.getItemLayout(idx).sign;\n        data.setItemVisual(idx, {\n          color: itemModel.get(sign > 0 ? positiveColorQuery : negativeColorQuery),\n          borderColor: itemModel.get(sign > 0 ? positiveBorderColorQuery : negativeBorderColorQuery)\n        });\n      });\n    }\n  });\n}\n\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\nfunction _default(option) {\n  if (!option || !zrUtil.isArray(option.series)) {\n    return;\n  } // Translate 'k' to 'candlestick'.\n\n\n  zrUtil.each(option.series, function (seriesItem) {\n    if (zrUtil.isObject(seriesItem) && seriesItem.type === 'k') {\n      seriesItem.type = 'candlestick';\n    }\n  });\n}\n\nmodule.exports = _default;","var _config = require(\"../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar echarts = require(\"../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar graphicUtil = require(\"../util/graphic\");\n\nvar _labelHelper = require(\"./helper/labelHelper\");\n\nvar getDefaultLabel = _labelHelper.getDefaultLabel;\n\nvar createListFromArray = require(\"./helper/createListFromArray\");\n\nvar _barGrid = require(\"../layout/barGrid\");\n\nvar getLayoutOnAxis = _barGrid.getLayoutOnAxis;\n\nvar DataDiffer = require(\"../data/DataDiffer\");\n\nvar prepareCartesian2d = require(\"../coord/cartesian/prepareCustom\");\n\nvar prepareGeo = require(\"../coord/geo/prepareCustom\");\n\nvar prepareSingleAxis = require(\"../coord/single/prepareCustom\");\n\nvar preparePolar = require(\"../coord/polar/prepareCustom\");\n\nvar prepareCalendar = require(\"../coord/calendar/prepareCustom\");\n\nvar ITEM_STYLE_NORMAL_PATH = ['itemStyle'];\nvar ITEM_STYLE_EMPHASIS_PATH = ['emphasis', 'itemStyle'];\nvar LABEL_NORMAL = ['label'];\nvar LABEL_EMPHASIS = ['emphasis', 'label']; // Use prefix to avoid index to be the same as el.name,\n// which will cause weird udpate animation.\n\nvar GROUP_DIFF_PREFIX = 'e\\0\\0';\n/**\n * To reduce total package size of each coordinate systems, the modules `prepareCustom`\n * of each coordinate systems are not required by each coordinate systems directly, but\n * required by the module `custom`.\n *\n * prepareInfoForCustomSeries {Function}: optional\n *     @return {Object} {coordSys: {...}, api: {\n *         coord: function (data, clamp) {}, // return point in global.\n *         size: function (dataSize, dataItem) {} // return size of each axis in coordSys.\n *     }}\n */\n\nvar prepareCustoms = {\n  cartesian2d: prepareCartesian2d,\n  geo: prepareGeo,\n  singleAxis: prepareSingleAxis,\n  polar: preparePolar,\n  calendar: prepareCalendar\n}; // ------\n// Model\n// ------\n\necharts.extendSeriesModel({\n  type: 'series.custom',\n  dependencies: ['grid', 'polar', 'geo', 'singleAxis', 'calendar'],\n  defaultOption: {\n    coordinateSystem: 'cartesian2d',\n    // Can be set as 'none'\n    zlevel: 0,\n    z: 2,\n    legendHoverLink: true // Cartesian coordinate system\n    // xAxisIndex: 0,\n    // yAxisIndex: 0,\n    // Polar coordinate system\n    // polarIndex: 0,\n    // Geo coordinate system\n    // geoIndex: 0,\n    // label: {}\n    // itemStyle: {}\n\n  },\n  getInitialData: function (option, ecModel) {\n    return createListFromArray(this.getSource(), this);\n  }\n}); // -----\n// View\n// -----\n\necharts.extendChartView({\n  type: 'custom',\n\n  /**\n   * @private\n   * @type {module:echarts/data/List}\n   */\n  _data: null,\n\n  /**\n   * @override\n   */\n  render: function (customSeries, ecModel, api) {\n    var oldData = this._data;\n    var data = customSeries.getData();\n    var group = this.group;\n    var renderItem = makeRenderItem(customSeries, data, ecModel, api);\n    this.group.removeAll();\n    data.diff(oldData).add(function (newIdx) {\n      data.hasValue(newIdx) && createOrUpdate(null, newIdx, renderItem(newIdx), customSeries, group, data);\n    }).update(function (newIdx, oldIdx) {\n      var el = oldData.getItemGraphicEl(oldIdx);\n      data.hasValue(newIdx) ? createOrUpdate(el, newIdx, renderItem(newIdx), customSeries, group, data) : el && group.remove(el);\n    }).remove(function (oldIdx) {\n      var el = oldData.getItemGraphicEl(oldIdx);\n      el && group.remove(el);\n    }).execute();\n    this._data = data;\n  },\n  incrementalPrepareRender: function (customSeries, ecModel, api) {\n    this.group.removeAll();\n    this._data = null;\n  },\n  incrementalRender: function (params, customSeries, ecModel, api) {\n    var data = customSeries.getData();\n    var renderItem = makeRenderItem(customSeries, data, ecModel, api);\n\n    function setIncrementalAndHoverLayer(el) {\n      if (!el.isGroup) {\n        el.incremental = true;\n        el.useHoverLayer = true;\n      }\n    }\n\n    for (var idx = params.start; idx < params.end; idx++) {\n      var el = createOrUpdate(null, idx, renderItem(idx), customSeries, this.group, data);\n      el.traverse(setIncrementalAndHoverLayer);\n    }\n  },\n\n  /**\n   * @override\n   */\n  dispose: zrUtil.noop\n});\n\nfunction createEl(elOption) {\n  var graphicType = elOption.type;\n  var el;\n\n  if (graphicType === 'path') {\n    var shape = elOption.shape;\n    el = graphicUtil.makePath(shape.pathData, null, {\n      x: shape.x || 0,\n      y: shape.y || 0,\n      width: shape.width || 0,\n      height: shape.height || 0\n    }, 'center');\n    el.__customPathData = elOption.pathData;\n  } else if (graphicType === 'image') {\n    el = new graphicUtil.Image({});\n    el.__customImagePath = elOption.style.image;\n  } else if (graphicType === 'text') {\n    el = new graphicUtil.Text({});\n    el.__customText = elOption.style.text;\n  } else {\n    var Clz = graphicUtil[graphicType.charAt(0).toUpperCase() + graphicType.slice(1)];\n    el = new Clz();\n  }\n\n  el.__customGraphicType = graphicType;\n  el.name = elOption.name;\n  return el;\n}\n\nfunction updateEl(el, dataIndex, elOption, animatableModel, data, isInit) {\n  var targetProps = {};\n  var elOptionStyle = elOption.style || {};\n  elOption.shape && (targetProps.shape = zrUtil.clone(elOption.shape));\n  elOption.position && (targetProps.position = elOption.position.slice());\n  elOption.scale && (targetProps.scale = elOption.scale.slice());\n  elOption.origin && (targetProps.origin = elOption.origin.slice());\n  elOption.rotation && (targetProps.rotation = elOption.rotation);\n\n  if (el.type === 'image' && elOption.style) {\n    var targetStyle = targetProps.style = {};\n    zrUtil.each(['x', 'y', 'width', 'height'], function (prop) {\n      prepareStyleTransition(prop, targetStyle, elOptionStyle, el.style, isInit);\n    });\n  }\n\n  if (el.type === 'text' && elOption.style) {\n    var targetStyle = targetProps.style = {};\n    zrUtil.each(['x', 'y'], function (prop) {\n      prepareStyleTransition(prop, targetStyle, elOptionStyle, el.style, isInit);\n    }); // Compatible with previous: both support\n    // textFill and fill, textStroke and stroke in 'text' element.\n\n    !elOptionStyle.hasOwnProperty('textFill') && elOptionStyle.fill && (elOptionStyle.textFill = elOptionStyle.fill);\n    !elOptionStyle.hasOwnProperty('textStroke') && elOptionStyle.stroke && (elOptionStyle.textStroke = elOptionStyle.stroke);\n  }\n\n  if (el.type !== 'group') {\n    el.useStyle(elOptionStyle); // Init animation.\n\n    if (isInit) {\n      el.style.opacity = 0;\n      var targetOpacity = elOptionStyle.opacity;\n      targetOpacity == null && (targetOpacity = 1);\n      graphicUtil.initProps(el, {\n        style: {\n          opacity: targetOpacity\n        }\n      }, animatableModel, dataIndex);\n    }\n  }\n\n  if (isInit) {\n    el.attr(targetProps);\n  } else {\n    graphicUtil.updateProps(el, targetProps, animatableModel, dataIndex);\n  } // z2 must not be null/undefined, otherwise sort error may occur.\n\n\n  el.attr({\n    z2: elOption.z2 || 0,\n    silent: elOption.silent\n  });\n  elOption.styleEmphasis !== false && graphicUtil.setHoverStyle(el, elOption.styleEmphasis);\n}\n\nfunction prepareStyleTransition(prop, targetStyle, elOptionStyle, oldElStyle, isInit) {\n  if (elOptionStyle[prop] != null && !isInit) {\n    targetStyle[prop] = elOptionStyle[prop];\n    elOptionStyle[prop] = oldElStyle[prop];\n  }\n}\n\nfunction makeRenderItem(customSeries, data, ecModel, api) {\n  var renderItem = customSeries.get('renderItem');\n  var coordSys = customSeries.coordinateSystem;\n  var prepareResult = {};\n\n  if (coordSys) {\n    prepareResult = coordSys.prepareCustoms ? coordSys.prepareCustoms() : prepareCustoms[coordSys.type](coordSys);\n  }\n\n  var userAPI = zrUtil.defaults({\n    getWidth: api.getWidth,\n    getHeight: api.getHeight,\n    getZr: api.getZr,\n    getDevicePixelRatio: api.getDevicePixelRatio,\n    value: value,\n    style: style,\n    styleEmphasis: styleEmphasis,\n    visual: visual,\n    barLayout: barLayout,\n    currentSeriesIndices: currentSeriesIndices,\n    font: font\n  }, prepareResult.api || {});\n  var userParams = {\n    context: {},\n    seriesId: customSeries.id,\n    seriesName: customSeries.name,\n    seriesIndex: customSeries.seriesIndex,\n    coordSys: prepareResult.coordSys,\n    dataInsideLength: data.count(),\n    encode: wrapEncodeDef(customSeries.getData())\n  }; // Do not support call `api` asynchronously without dataIndexInside input.\n\n  var currDataIndexInside;\n  var currDirty = true;\n  var currItemModel;\n  var currLabelNormalModel;\n  var currLabelEmphasisModel;\n  var currVisualColor;\n  return function (dataIndexInside) {\n    currDataIndexInside = dataIndexInside;\n    currDirty = true;\n    return renderItem && renderItem(zrUtil.defaults({\n      dataIndexInside: dataIndexInside,\n      dataIndex: data.getRawIndex(dataIndexInside)\n    }, userParams), userAPI) || {};\n  }; // Do not update cache until api called.\n\n  function updateCache(dataIndexInside) {\n    dataIndexInside == null && (dataIndexInside = currDataIndexInside);\n\n    if (currDirty) {\n      currItemModel = data.getItemModel(dataIndexInside);\n      currLabelNormalModel = currItemModel.getModel(LABEL_NORMAL);\n      currLabelEmphasisModel = currItemModel.getModel(LABEL_EMPHASIS);\n      currVisualColor = data.getItemVisual(dataIndexInside, 'color');\n      currDirty = false;\n    }\n  }\n  /**\n   * @public\n   * @param {number|string} dim\n   * @param {number} [dataIndexInside=currDataIndexInside]\n   * @return {number|string} value\n   */\n\n\n  function value(dim, dataIndexInside) {\n    dataIndexInside == null && (dataIndexInside = currDataIndexInside);\n    return data.get(data.getDimension(dim || 0), dataIndexInside);\n  }\n  /**\n   * By default, `visual` is applied to style (to support visualMap).\n   * `visual.color` is applied at `fill`. If user want apply visual.color on `stroke`,\n   * it can be implemented as:\n   * `api.style({stroke: api.visual('color'), fill: null})`;\n   * @public\n   * @param {Object} [extra]\n   * @param {number} [dataIndexInside=currDataIndexInside]\n   */\n\n\n  function style(extra, dataIndexInside) {\n    dataIndexInside == null && (dataIndexInside = currDataIndexInside);\n    updateCache(dataIndexInside);\n    var itemStyle = currItemModel.getModel(ITEM_STYLE_NORMAL_PATH).getItemStyle();\n    currVisualColor != null && (itemStyle.fill = currVisualColor);\n    var opacity = data.getItemVisual(dataIndexInside, 'opacity');\n    opacity != null && (itemStyle.opacity = opacity);\n    graphicUtil.setTextStyle(itemStyle, currLabelNormalModel, null, {\n      autoColor: currVisualColor,\n      isRectText: true\n    });\n    itemStyle.text = currLabelNormalModel.getShallow('show') ? zrUtil.retrieve2(customSeries.getFormattedLabel(dataIndexInside, 'normal'), getDefaultLabel(data, dataIndexInside)) : null;\n    extra && zrUtil.extend(itemStyle, extra);\n    return itemStyle;\n  }\n  /**\n   * @public\n   * @param {Object} [extra]\n   * @param {number} [dataIndexInside=currDataIndexInside]\n   */\n\n\n  function styleEmphasis(extra, dataIndexInside) {\n    dataIndexInside == null && (dataIndexInside = currDataIndexInside);\n    updateCache(dataIndexInside);\n    var itemStyle = currItemModel.getModel(ITEM_STYLE_EMPHASIS_PATH).getItemStyle();\n    graphicUtil.setTextStyle(itemStyle, currLabelEmphasisModel, null, {\n      isRectText: true\n    }, true);\n    itemStyle.text = currLabelEmphasisModel.getShallow('show') ? zrUtil.retrieve3(customSeries.getFormattedLabel(dataIndexInside, 'emphasis'), customSeries.getFormattedLabel(dataIndexInside, 'normal'), getDefaultLabel(data, dataIndexInside)) : null;\n    extra && zrUtil.extend(itemStyle, extra);\n    return itemStyle;\n  }\n  /**\n   * @public\n   * @param {string} visualType\n   * @param {number} [dataIndexInside=currDataIndexInside]\n   */\n\n\n  function visual(visualType, dataIndexInside) {\n    dataIndexInside == null && (dataIndexInside = currDataIndexInside);\n    return data.getItemVisual(dataIndexInside, visualType);\n  }\n  /**\n   * @public\n   * @param {number} opt.count Positive interger.\n   * @param {number} [opt.barWidth]\n   * @param {number} [opt.barMaxWidth]\n   * @param {number} [opt.barGap]\n   * @param {number} [opt.barCategoryGap]\n   * @return {Object} {width, offset, offsetCenter} is not support, return undefined.\n   */\n\n\n  function barLayout(opt) {\n    if (coordSys.getBaseAxis) {\n      var baseAxis = coordSys.getBaseAxis();\n      return getLayoutOnAxis(zrUtil.defaults({\n        axis: baseAxis\n      }, opt), api);\n    }\n  }\n  /**\n   * @public\n   * @return {Array.<number>}\n   */\n\n\n  function currentSeriesIndices() {\n    return ecModel.getCurrentSeriesIndices();\n  }\n  /**\n   * @public\n   * @param {Object} opt\n   * @param {string} [opt.fontStyle]\n   * @param {number} [opt.fontWeight]\n   * @param {number} [opt.fontSize]\n   * @param {string} [opt.fontFamily]\n   * @return {string} font string\n   */\n\n\n  function font(opt) {\n    return graphicUtil.getFont(opt, ecModel);\n  }\n}\n\nfunction wrapEncodeDef(data) {\n  var encodeDef = {};\n  zrUtil.each(data.dimensions, function (dimName, dataDimIndex) {\n    var dimInfo = data.getDimensionInfo(dimName);\n\n    if (!dimInfo.isExtraCoord) {\n      var coordDim = dimInfo.coordDim;\n      var dataDims = encodeDef[coordDim] = encodeDef[coordDim] || [];\n      dataDims[dimInfo.coordDimIndex] = dataDimIndex;\n    }\n  });\n  return encodeDef;\n}\n\nfunction createOrUpdate(el, dataIndex, elOption, animatableModel, group, data) {\n  el = doCreateOrUpdate(el, dataIndex, elOption, animatableModel, group, data);\n  el && data.setItemGraphicEl(dataIndex, el);\n  return el;\n}\n\nfunction doCreateOrUpdate(el, dataIndex, elOption, animatableModel, group, data) {\n  var elOptionType = elOption.type;\n\n  if (el && elOptionType !== el.__customGraphicType && (elOptionType !== 'path' || elOption.pathData !== el.__customPathData) && (elOptionType !== 'image' || elOption.style.image !== el.__customImagePath) && (elOptionType !== 'text' || elOption.style.text !== el.__customText)) {\n    group.remove(el);\n    el = null;\n  } // `elOption.type` is undefined when `renderItem` returns nothing.\n\n\n  if (elOptionType == null) {\n    return;\n  }\n\n  var isInit = !el;\n  !el && (el = createEl(elOption));\n  updateEl(el, dataIndex, elOption, animatableModel, data, isInit);\n\n  if (elOptionType === 'group') {\n    var oldChildren = el.children() || [];\n    var newChildren = elOption.children || [];\n\n    if (elOption.diffChildrenByName) {\n      // lower performance.\n      diffGroupChildren({\n        oldChildren: oldChildren,\n        newChildren: newChildren,\n        dataIndex: dataIndex,\n        animatableModel: animatableModel,\n        group: el,\n        data: data\n      });\n    } else {\n      // better performance.\n      var index = 0;\n\n      for (; index < newChildren.length; index++) {\n        doCreateOrUpdate(el.childAt(index), dataIndex, newChildren[index], animatableModel, el, data);\n      }\n\n      for (; index < oldChildren.length; index++) {\n        oldChildren[index] && el.remove(oldChildren[index]);\n      }\n    }\n  }\n\n  group.add(el);\n  return el;\n}\n\nfunction diffGroupChildren(context) {\n  new DataDiffer(context.oldChildren, context.newChildren, getKey, getKey, context).add(processAddUpdate).update(processAddUpdate).remove(processRemove).execute();\n}\n\nfunction getKey(item, idx) {\n  var name = item && item.name;\n  return name != null ? name : GROUP_DIFF_PREFIX + idx;\n}\n\nfunction processAddUpdate(newIndex, oldIndex) {\n  var context = this.context;\n  var childOption = newIndex != null ? context.newChildren[newIndex] : null;\n  var child = oldIndex != null ? context.oldChildren[oldIndex] : null;\n  doCreateOrUpdate(child, context.dataIndex, childOption, context.animatableModel, context.group, context.data);\n}\n\nfunction processRemove(oldIndex) {\n  var context = this.context;\n  var child = context.oldChildren[oldIndex];\n  child && context.group.remove(child);\n}","var echarts = require(\"../echarts\");\n\nrequire(\"./effectScatter/EffectScatterSeries\");\n\nrequire(\"./effectScatter/EffectScatterView\");\n\nvar visualSymbol = require(\"../visual/symbol\");\n\nvar layoutPoints = require(\"../layout/points\");\n\necharts.registerVisual(visualSymbol('effectScatter', 'circle'));\necharts.registerLayout(layoutPoints('effectScatter'));","var createListFromArray = require(\"../helper/createListFromArray\");\n\nvar SeriesModel = require(\"../../model/Series\");\n\nvar _default = SeriesModel.extend({\n  type: 'series.effectScatter',\n  dependencies: ['grid', 'polar'],\n  getInitialData: function (option, ecModel) {\n    return createListFromArray(this.getSource(), this);\n  },\n  brushSelector: 'point',\n  defaultOption: {\n    coordinateSystem: 'cartesian2d',\n    zlevel: 0,\n    z: 2,\n    legendHoverLink: true,\n    effectType: 'ripple',\n    progressive: 0,\n    // When to show the effect, option: 'render'|'emphasis'\n    showEffectOn: 'render',\n    // Ripple effect config\n    rippleEffect: {\n      period: 4,\n      // Scale of ripple\n      scale: 2.5,\n      // Brush type can be fill or stroke\n      brushType: 'fill'\n    },\n    // Cartesian coordinate system\n    // xAxisIndex: 0,\n    // yAxisIndex: 0,\n    // Polar coordinate system\n    // polarIndex: 0,\n    // Geo coordinate system\n    // geoIndex: 0,\n    // symbol: null,        // 图形类型\n    symbolSize: 10 // 图形大小，半宽（半径）参数，当图形为方向或菱形则总宽度为symbolSize * 2\n    // symbolRotate: null,  // 图形旋转控制\n    // large: false,\n    // Available when large is true\n    // largeThreshold: 2000,\n    // itemStyle: {\n    //     opacity: 1\n    // }\n\n  }\n});\n\nmodule.exports = _default;","var echarts = require(\"../../echarts\");\n\nvar SymbolDraw = require(\"../helper/SymbolDraw\");\n\nvar EffectSymbol = require(\"../helper/EffectSymbol\");\n\nvar matrix = require(\"zrender/lib/core/matrix\");\n\nvar pointsLayout = require(\"../../layout/points\");\n\nvar _default = echarts.extendChartView({\n  type: 'effectScatter',\n  init: function () {\n    this._symbolDraw = new SymbolDraw(EffectSymbol);\n  },\n  render: function (seriesModel, ecModel, api) {\n    var data = seriesModel.getData();\n    var effectSymbolDraw = this._symbolDraw;\n    effectSymbolDraw.updateData(data);\n    this.group.add(effectSymbolDraw.group);\n  },\n  updateTransform: function (seriesModel, ecModel, api) {\n    var data = seriesModel.getData();\n    this.group.dirty();\n    var res = pointsLayout().reset(seriesModel);\n\n    if (res.progress) {\n      res.progress({\n        start: 0,\n        end: data.count()\n      }, data);\n    }\n\n    this._symbolDraw.updateLayout(data);\n  },\n  _updateGroupTransform: function (seriesModel) {\n    var coordSys = seriesModel.coordinateSystem;\n\n    if (coordSys && coordSys.getRoamTransform) {\n      this.group.transform = matrix.clone(coordSys.getRoamTransform());\n      this.group.decomposeTransform();\n    }\n  },\n  remove: function (ecModel, api) {\n    this._symbolDraw && this._symbolDraw.remove(api);\n  },\n  dispose: function () {}\n});\n\nmodule.exports = _default;","var echarts = require(\"../echarts\");\n\nrequire(\"./funnel/FunnelSeries\");\n\nrequire(\"./funnel/FunnelView\");\n\nvar dataColor = require(\"../visual/dataColor\");\n\nvar funnelLayout = require(\"./funnel/funnelLayout\");\n\nvar dataFilter = require(\"../processor/dataFilter\");\n\necharts.registerVisual(dataColor('funnel'));\necharts.registerLayout(funnelLayout);\necharts.registerProcessor(dataFilter('funnel'));","var echarts = require(\"../../echarts\");\n\nvar createListSimply = require(\"../helper/createListSimply\");\n\nvar _model = require(\"../../util/model\");\n\nvar defaultEmphasis = _model.defaultEmphasis;\nvar FunnelSeries = echarts.extendSeriesModel({\n  type: 'series.funnel',\n  init: function (option) {\n    FunnelSeries.superApply(this, 'init', arguments); // Enable legend selection for each data item\n    // Use a function instead of direct access because data reference may changed\n\n    this.legendDataProvider = function () {\n      return this.getRawData();\n    }; // Extend labelLine emphasis\n\n\n    this._defaultLabelLine(option);\n  },\n  getInitialData: function (option, ecModel) {\n    return createListSimply(this, ['value']);\n  },\n  _defaultLabelLine: function (option) {\n    // Extend labelLine emphasis\n    defaultEmphasis(option, 'labelLine', ['show']);\n    var labelLineNormalOpt = option.labelLine;\n    var labelLineEmphasisOpt = option.emphasis.labelLine; // Not show label line if `label.normal.show = false`\n\n    labelLineNormalOpt.show = labelLineNormalOpt.show && option.label.show;\n    labelLineEmphasisOpt.show = labelLineEmphasisOpt.show && option.emphasis.label.show;\n  },\n  // Overwrite\n  getDataParams: function (dataIndex) {\n    var data = this.getData();\n    var params = FunnelSeries.superCall(this, 'getDataParams', dataIndex);\n    var valueDim = data.mapDimension('value');\n    var sum = data.getSum(valueDim); // Percent is 0 if sum is 0\n\n    params.percent = !sum ? 0 : +(data.get(valueDim, dataIndex) / sum * 100).toFixed(2);\n    params.$vars.push('percent');\n    return params;\n  },\n  defaultOption: {\n    zlevel: 0,\n    // 一级层叠\n    z: 2,\n    // 二级层叠\n    legendHoverLink: true,\n    left: 80,\n    top: 60,\n    right: 80,\n    bottom: 60,\n    // width: {totalWidth} - left - right,\n    // height: {totalHeight} - top - bottom,\n    // 默认取数据最小最大值\n    // min: 0,\n    // max: 100,\n    minSize: '0%',\n    maxSize: '100%',\n    sort: 'descending',\n    // 'ascending', 'descending'\n    gap: 0,\n    funnelAlign: 'center',\n    label: {\n      show: true,\n      position: 'outer' // formatter: 标签文本格式器，同Tooltip.formatter，不支持异步回调\n\n    },\n    labelLine: {\n      show: true,\n      length: 20,\n      lineStyle: {\n        // color: 各异,\n        width: 1,\n        type: 'solid'\n      }\n    },\n    itemStyle: {\n      // color: 各异,\n      borderColor: '#fff',\n      borderWidth: 1\n    },\n    emphasis: {\n      label: {\n        show: true\n      }\n    }\n  }\n});\nvar _default = FunnelSeries;\nmodule.exports = _default;","var graphic = require(\"../../util/graphic\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar ChartView = require(\"../../view/Chart\");\n\n/**\n * Piece of pie including Sector, Label, LabelLine\n * @constructor\n * @extends {module:zrender/graphic/Group}\n */\nfunction FunnelPiece(data, idx) {\n  graphic.Group.call(this);\n  var polygon = new graphic.Polygon();\n  var labelLine = new graphic.Polyline();\n  var text = new graphic.Text();\n  this.add(polygon);\n  this.add(labelLine);\n  this.add(text);\n  this.updateData(data, idx, true); // Hover to change label and labelLine\n\n  function onEmphasis() {\n    labelLine.ignore = labelLine.hoverIgnore;\n    text.ignore = text.hoverIgnore;\n  }\n\n  function onNormal() {\n    labelLine.ignore = labelLine.normalIgnore;\n    text.ignore = text.normalIgnore;\n  }\n\n  this.on('emphasis', onEmphasis).on('normal', onNormal).on('mouseover', onEmphasis).on('mouseout', onNormal);\n}\n\nvar funnelPieceProto = FunnelPiece.prototype;\nvar opacityAccessPath = ['itemStyle', 'opacity'];\n\nfunnelPieceProto.updateData = function (data, idx, firstCreate) {\n  var polygon = this.childAt(0);\n  var seriesModel = data.hostModel;\n  var itemModel = data.getItemModel(idx);\n  var layout = data.getItemLayout(idx);\n  var opacity = data.getItemModel(idx).get(opacityAccessPath);\n  opacity = opacity == null ? 1 : opacity; // Reset style\n\n  polygon.useStyle({});\n\n  if (firstCreate) {\n    polygon.setShape({\n      points: layout.points\n    });\n    polygon.setStyle({\n      opacity: 0\n    });\n    graphic.initProps(polygon, {\n      style: {\n        opacity: opacity\n      }\n    }, seriesModel, idx);\n  } else {\n    graphic.updateProps(polygon, {\n      style: {\n        opacity: opacity\n      },\n      shape: {\n        points: layout.points\n      }\n    }, seriesModel, idx);\n  } // Update common style\n\n\n  var itemStyleModel = itemModel.getModel('itemStyle');\n  var visualColor = data.getItemVisual(idx, 'color');\n  polygon.setStyle(zrUtil.defaults({\n    lineJoin: 'round',\n    fill: visualColor\n  }, itemStyleModel.getItemStyle(['opacity'])));\n  polygon.hoverStyle = itemStyleModel.getModel('emphasis').getItemStyle();\n\n  this._updateLabel(data, idx);\n\n  graphic.setHoverStyle(this);\n};\n\nfunnelPieceProto._updateLabel = function (data, idx) {\n  var labelLine = this.childAt(1);\n  var labelText = this.childAt(2);\n  var seriesModel = data.hostModel;\n  var itemModel = data.getItemModel(idx);\n  var layout = data.getItemLayout(idx);\n  var labelLayout = layout.label;\n  var visualColor = data.getItemVisual(idx, 'color');\n  graphic.updateProps(labelLine, {\n    shape: {\n      points: labelLayout.linePoints || labelLayout.linePoints\n    }\n  }, seriesModel, idx);\n  graphic.updateProps(labelText, {\n    style: {\n      x: labelLayout.x,\n      y: labelLayout.y\n    }\n  }, seriesModel, idx);\n  labelText.attr({\n    rotation: labelLayout.rotation,\n    origin: [labelLayout.x, labelLayout.y],\n    z2: 10\n  });\n  var labelModel = itemModel.getModel('label');\n  var labelHoverModel = itemModel.getModel('emphasis.label');\n  var labelLineModel = itemModel.getModel('labelLine');\n  var labelLineHoverModel = itemModel.getModel('emphasis.labelLine');\n  var visualColor = data.getItemVisual(idx, 'color');\n  graphic.setLabelStyle(labelText.style, labelText.hoverStyle = {}, labelModel, labelHoverModel, {\n    labelFetcher: data.hostModel,\n    labelDataIndex: idx,\n    defaultText: data.getName(idx),\n    autoColor: visualColor,\n    useInsideStyle: !!labelLayout.inside\n  }, {\n    textAlign: labelLayout.textAlign,\n    textVerticalAlign: labelLayout.verticalAlign\n  });\n  labelText.ignore = labelText.normalIgnore = !labelModel.get('show');\n  labelText.hoverIgnore = !labelHoverModel.get('show');\n  labelLine.ignore = labelLine.normalIgnore = !labelLineModel.get('show');\n  labelLine.hoverIgnore = !labelLineHoverModel.get('show'); // Default use item visual color\n\n  labelLine.setStyle({\n    stroke: visualColor\n  });\n  labelLine.setStyle(labelLineModel.getModel('lineStyle').getLineStyle());\n  labelLine.hoverStyle = labelLineHoverModel.getModel('lineStyle').getLineStyle();\n};\n\nzrUtil.inherits(FunnelPiece, graphic.Group);\nvar FunnelView = ChartView.extend({\n  type: 'funnel',\n  render: function (seriesModel, ecModel, api) {\n    var data = seriesModel.getData();\n    var oldData = this._data;\n    var group = this.group;\n    data.diff(oldData).add(function (idx) {\n      var funnelPiece = new FunnelPiece(data, idx);\n      data.setItemGraphicEl(idx, funnelPiece);\n      group.add(funnelPiece);\n    }).update(function (newIdx, oldIdx) {\n      var piePiece = oldData.getItemGraphicEl(oldIdx);\n      piePiece.updateData(data, newIdx);\n      group.add(piePiece);\n      data.setItemGraphicEl(newIdx, piePiece);\n    }).remove(function (idx) {\n      var piePiece = oldData.getItemGraphicEl(idx);\n      group.remove(piePiece);\n    }).execute();\n    this._data = data;\n  },\n  remove: function () {\n    this.group.removeAll();\n    this._data = null;\n  },\n  dispose: function () {}\n});\nvar _default = FunnelView;\nmodule.exports = _default;","var layout = require(\"../../util/layout\");\n\nvar _number = require(\"../../util/number\");\n\nvar parsePercent = _number.parsePercent;\nvar linearMap = _number.linearMap;\n\nfunction getViewRect(seriesModel, api) {\n  return layout.getLayoutRect(seriesModel.getBoxLayoutParams(), {\n    width: api.getWidth(),\n    height: api.getHeight()\n  });\n}\n\nfunction getSortedIndices(data, sort) {\n  var valueDim = data.mapDimension('value');\n  var valueArr = data.mapArray(valueDim, function (val) {\n    return val;\n  });\n  var indices = [];\n  var isAscending = sort === 'ascending';\n\n  for (var i = 0, len = data.count(); i < len; i++) {\n    indices[i] = i;\n  } // Add custom sortable function & none sortable opetion by \"options.sort\"\n\n\n  if (typeof sort === 'function') {\n    indices.sort(sort);\n  } else if (sort !== 'none') {\n    indices.sort(function (a, b) {\n      return isAscending ? valueArr[a] - valueArr[b] : valueArr[b] - valueArr[a];\n    });\n  }\n\n  return indices;\n}\n\nfunction labelLayout(data) {\n  data.each(function (idx) {\n    var itemModel = data.getItemModel(idx);\n    var labelModel = itemModel.getModel('label');\n    var labelPosition = labelModel.get('position');\n    var labelLineModel = itemModel.getModel('labelLine');\n    var layout = data.getItemLayout(idx);\n    var points = layout.points;\n    var isLabelInside = labelPosition === 'inner' || labelPosition === 'inside' || labelPosition === 'center';\n    var textAlign;\n    var textX;\n    var textY;\n    var linePoints;\n\n    if (isLabelInside) {\n      textX = (points[0][0] + points[1][0] + points[2][0] + points[3][0]) / 4;\n      textY = (points[0][1] + points[1][1] + points[2][1] + points[3][1]) / 4;\n      textAlign = 'center';\n      linePoints = [[textX, textY], [textX, textY]];\n    } else {\n      var x1;\n      var y1;\n      var x2;\n      var labelLineLen = labelLineModel.get('length');\n\n      if (labelPosition === 'left') {\n        // Left side\n        x1 = (points[3][0] + points[0][0]) / 2;\n        y1 = (points[3][1] + points[0][1]) / 2;\n        x2 = x1 - labelLineLen;\n        textX = x2 - 5;\n        textAlign = 'right';\n      } else {\n        // Right side\n        x1 = (points[1][0] + points[2][0]) / 2;\n        y1 = (points[1][1] + points[2][1]) / 2;\n        x2 = x1 + labelLineLen;\n        textX = x2 + 5;\n        textAlign = 'left';\n      }\n\n      var y2 = y1;\n      linePoints = [[x1, y1], [x2, y2]];\n      textY = y2;\n    }\n\n    layout.label = {\n      linePoints: linePoints,\n      x: textX,\n      y: textY,\n      verticalAlign: 'middle',\n      textAlign: textAlign,\n      inside: isLabelInside\n    };\n  });\n}\n\nfunction _default(ecModel, api, payload) {\n  ecModel.eachSeriesByType('funnel', function (seriesModel) {\n    var data = seriesModel.getData();\n    var valueDim = data.mapDimension('value');\n    var sort = seriesModel.get('sort');\n    var viewRect = getViewRect(seriesModel, api);\n    var indices = getSortedIndices(data, sort);\n    var sizeExtent = [parsePercent(seriesModel.get('minSize'), viewRect.width), parsePercent(seriesModel.get('maxSize'), viewRect.width)];\n    var dataExtent = data.getDataExtent(valueDim);\n    var min = seriesModel.get('min');\n    var max = seriesModel.get('max');\n\n    if (min == null) {\n      min = Math.min(dataExtent[0], 0);\n    }\n\n    if (max == null) {\n      max = dataExtent[1];\n    }\n\n    var funnelAlign = seriesModel.get('funnelAlign');\n    var gap = seriesModel.get('gap');\n    var itemHeight = (viewRect.height - gap * (data.count() - 1)) / data.count();\n    var y = viewRect.y;\n\n    var getLinePoints = function (idx, offY) {\n      // End point index is data.count() and we assign it 0\n      var val = data.get(valueDim, idx) || 0;\n      var itemWidth = linearMap(val, [min, max], sizeExtent, true);\n      var x0;\n\n      switch (funnelAlign) {\n        case 'left':\n          x0 = viewRect.x;\n          break;\n\n        case 'center':\n          x0 = viewRect.x + (viewRect.width - itemWidth) / 2;\n          break;\n\n        case 'right':\n          x0 = viewRect.x + viewRect.width - itemWidth;\n          break;\n      }\n\n      return [[x0, offY], [x0 + itemWidth, offY]];\n    };\n\n    if (sort === 'ascending') {\n      // From bottom to top\n      itemHeight = -itemHeight;\n      gap = -gap;\n      y += viewRect.height;\n      indices = indices.reverse();\n    }\n\n    for (var i = 0; i < indices.length; i++) {\n      var idx = indices[i];\n      var nextIdx = indices[i + 1];\n      var itemModel = data.getItemModel(idx);\n      var height = itemModel.get('itemStyle.height');\n\n      if (height == null) {\n        height = itemHeight;\n      } else {\n        height = parsePercent(height, viewRect.height);\n\n        if (sort === 'ascending') {\n          height = -height;\n        }\n      }\n\n      var start = getLinePoints(idx, y);\n      var end = getLinePoints(nextIdx, y + height);\n      y += height + gap;\n      data.setItemLayout(idx, {\n        points: start.concat(end.slice().reverse())\n      });\n    }\n\n    labelLayout(data);\n  });\n}\n\nmodule.exports = _default;","require(\"./gauge/GaugeSeries\");\n\nrequire(\"./gauge/GaugeView\");","var createListSimply = require(\"../helper/createListSimply\");\n\nvar SeriesModel = require(\"../../model/Series\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar GaugeSeries = SeriesModel.extend({\n  type: 'series.gauge',\n  getInitialData: function (option, ecModel) {\n    var dataOpt = option.data || [];\n\n    if (!zrUtil.isArray(dataOpt)) {\n      dataOpt = [dataOpt];\n    }\n\n    option.data = dataOpt;\n    return createListSimply(this, ['value']);\n  },\n  defaultOption: {\n    zlevel: 0,\n    z: 2,\n    // 默认全局居中\n    center: ['50%', '50%'],\n    legendHoverLink: true,\n    radius: '75%',\n    startAngle: 225,\n    endAngle: -45,\n    clockwise: true,\n    // 最小值\n    min: 0,\n    // 最大值\n    max: 100,\n    // 分割段数，默认为10\n    splitNumber: 10,\n    // 坐标轴线\n    axisLine: {\n      // 默认显示，属性show控制显示与否\n      show: true,\n      lineStyle: {\n        // 属性lineStyle控制线条样式\n        color: [[0.2, '#91c7ae'], [0.8, '#63869e'], [1, '#c23531']],\n        width: 30\n      }\n    },\n    // 分隔线\n    splitLine: {\n      // 默认显示，属性show控制显示与否\n      show: true,\n      // 属性length控制线长\n      length: 30,\n      // 属性lineStyle（详见lineStyle）控制线条样式\n      lineStyle: {\n        color: '#eee',\n        width: 2,\n        type: 'solid'\n      }\n    },\n    // 坐标轴小标记\n    axisTick: {\n      // 属性show控制显示与否，默认不显示\n      show: true,\n      // 每份split细分多少段\n      splitNumber: 5,\n      // 属性length控制线长\n      length: 8,\n      // 属性lineStyle控制线条样式\n      lineStyle: {\n        color: '#eee',\n        width: 1,\n        type: 'solid'\n      }\n    },\n    axisLabel: {\n      show: true,\n      distance: 5,\n      // formatter: null,\n      color: 'auto'\n    },\n    pointer: {\n      show: true,\n      length: '80%',\n      width: 8\n    },\n    itemStyle: {\n      color: 'auto'\n    },\n    title: {\n      show: true,\n      // x, y，单位px\n      offsetCenter: [0, '-40%'],\n      // 其余属性默认使用全局文本样式，详见TEXTSTYLE\n      color: '#333',\n      fontSize: 15\n    },\n    detail: {\n      show: true,\n      backgroundColor: 'rgba(0,0,0,0)',\n      borderWidth: 0,\n      borderColor: '#ccc',\n      width: 100,\n      height: null,\n      // self-adaption\n      padding: [5, 10],\n      // x, y，单位px\n      offsetCenter: [0, '40%'],\n      // formatter: null,\n      // 其余属性默认使用全局文本样式，详见TEXTSTYLE\n      color: 'auto',\n      fontSize: 30\n    }\n  }\n});\nvar _default = GaugeSeries;\nmodule.exports = _default;","var PointerPath = require(\"./PointerPath\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar ChartView = require(\"../../view/Chart\");\n\nvar _number = require(\"../../util/number\");\n\nvar parsePercent = _number.parsePercent;\nvar round = _number.round;\nvar linearMap = _number.linearMap;\n\nfunction parsePosition(seriesModel, api) {\n  var center = seriesModel.get('center');\n  var width = api.getWidth();\n  var height = api.getHeight();\n  var size = Math.min(width, height);\n  var cx = parsePercent(center[0], api.getWidth());\n  var cy = parsePercent(center[1], api.getHeight());\n  var r = parsePercent(seriesModel.get('radius'), size / 2);\n  return {\n    cx: cx,\n    cy: cy,\n    r: r\n  };\n}\n\nfunction formatLabel(label, labelFormatter) {\n  if (labelFormatter) {\n    if (typeof labelFormatter === 'string') {\n      label = labelFormatter.replace('{value}', label != null ? label : '');\n    } else if (typeof labelFormatter === 'function') {\n      label = labelFormatter(label);\n    }\n  }\n\n  return label;\n}\n\nvar PI2 = Math.PI * 2;\nvar GaugeView = ChartView.extend({\n  type: 'gauge',\n  render: function (seriesModel, ecModel, api) {\n    this.group.removeAll();\n    var colorList = seriesModel.get('axisLine.lineStyle.color');\n    var posInfo = parsePosition(seriesModel, api);\n\n    this._renderMain(seriesModel, ecModel, api, colorList, posInfo);\n  },\n  dispose: function () {},\n  _renderMain: function (seriesModel, ecModel, api, colorList, posInfo) {\n    var group = this.group;\n    var axisLineModel = seriesModel.getModel('axisLine');\n    var lineStyleModel = axisLineModel.getModel('lineStyle');\n    var clockwise = seriesModel.get('clockwise');\n    var startAngle = -seriesModel.get('startAngle') / 180 * Math.PI;\n    var endAngle = -seriesModel.get('endAngle') / 180 * Math.PI;\n    var angleRangeSpan = (endAngle - startAngle) % PI2;\n    var prevEndAngle = startAngle;\n    var axisLineWidth = lineStyleModel.get('width');\n\n    for (var i = 0; i < colorList.length; i++) {\n      // Clamp\n      var percent = Math.min(Math.max(colorList[i][0], 0), 1);\n      var endAngle = startAngle + angleRangeSpan * percent;\n      var sector = new graphic.Sector({\n        shape: {\n          startAngle: prevEndAngle,\n          endAngle: endAngle,\n          cx: posInfo.cx,\n          cy: posInfo.cy,\n          clockwise: clockwise,\n          r0: posInfo.r - axisLineWidth,\n          r: posInfo.r\n        },\n        silent: true\n      });\n      sector.setStyle({\n        fill: colorList[i][1]\n      });\n      sector.setStyle(lineStyleModel.getLineStyle( // Because we use sector to simulate arc\n      // so the properties for stroking are useless\n      ['color', 'borderWidth', 'borderColor']));\n      group.add(sector);\n      prevEndAngle = endAngle;\n    }\n\n    var getColor = function (percent) {\n      // Less than 0\n      if (percent <= 0) {\n        return colorList[0][1];\n      }\n\n      for (var i = 0; i < colorList.length; i++) {\n        if (colorList[i][0] >= percent && (i === 0 ? 0 : colorList[i - 1][0]) < percent) {\n          return colorList[i][1];\n        }\n      } // More than 1\n\n\n      return colorList[i - 1][1];\n    };\n\n    if (!clockwise) {\n      var tmp = startAngle;\n      startAngle = endAngle;\n      endAngle = tmp;\n    }\n\n    this._renderTicks(seriesModel, ecModel, api, getColor, posInfo, startAngle, endAngle, clockwise);\n\n    this._renderPointer(seriesModel, ecModel, api, getColor, posInfo, startAngle, endAngle, clockwise);\n\n    this._renderTitle(seriesModel, ecModel, api, getColor, posInfo);\n\n    this._renderDetail(seriesModel, ecModel, api, getColor, posInfo);\n  },\n  _renderTicks: function (seriesModel, ecModel, api, getColor, posInfo, startAngle, endAngle, clockwise) {\n    var group = this.group;\n    var cx = posInfo.cx;\n    var cy = posInfo.cy;\n    var r = posInfo.r;\n    var minVal = +seriesModel.get('min');\n    var maxVal = +seriesModel.get('max');\n    var splitLineModel = seriesModel.getModel('splitLine');\n    var tickModel = seriesModel.getModel('axisTick');\n    var labelModel = seriesModel.getModel('axisLabel');\n    var splitNumber = seriesModel.get('splitNumber');\n    var subSplitNumber = tickModel.get('splitNumber');\n    var splitLineLen = parsePercent(splitLineModel.get('length'), r);\n    var tickLen = parsePercent(tickModel.get('length'), r);\n    var angle = startAngle;\n    var step = (endAngle - startAngle) / splitNumber;\n    var subStep = step / subSplitNumber;\n    var splitLineStyle = splitLineModel.getModel('lineStyle').getLineStyle();\n    var tickLineStyle = tickModel.getModel('lineStyle').getLineStyle();\n\n    for (var i = 0; i <= splitNumber; i++) {\n      var unitX = Math.cos(angle);\n      var unitY = Math.sin(angle); // Split line\n\n      if (splitLineModel.get('show')) {\n        var splitLine = new graphic.Line({\n          shape: {\n            x1: unitX * r + cx,\n            y1: unitY * r + cy,\n            x2: unitX * (r - splitLineLen) + cx,\n            y2: unitY * (r - splitLineLen) + cy\n          },\n          style: splitLineStyle,\n          silent: true\n        });\n\n        if (splitLineStyle.stroke === 'auto') {\n          splitLine.setStyle({\n            stroke: getColor(i / splitNumber)\n          });\n        }\n\n        group.add(splitLine);\n      } // Label\n\n\n      if (labelModel.get('show')) {\n        var label = formatLabel(round(i / splitNumber * (maxVal - minVal) + minVal), labelModel.get('formatter'));\n        var distance = labelModel.get('distance');\n        var autoColor = getColor(i / splitNumber);\n        group.add(new graphic.Text({\n          style: graphic.setTextStyle({}, labelModel, {\n            text: label,\n            x: unitX * (r - splitLineLen - distance) + cx,\n            y: unitY * (r - splitLineLen - distance) + cy,\n            textVerticalAlign: unitY < -0.4 ? 'top' : unitY > 0.4 ? 'bottom' : 'middle',\n            textAlign: unitX < -0.4 ? 'left' : unitX > 0.4 ? 'right' : 'center'\n          }, {\n            autoColor: autoColor\n          }),\n          silent: true\n        }));\n      } // Axis tick\n\n\n      if (tickModel.get('show') && i !== splitNumber) {\n        for (var j = 0; j <= subSplitNumber; j++) {\n          var unitX = Math.cos(angle);\n          var unitY = Math.sin(angle);\n          var tickLine = new graphic.Line({\n            shape: {\n              x1: unitX * r + cx,\n              y1: unitY * r + cy,\n              x2: unitX * (r - tickLen) + cx,\n              y2: unitY * (r - tickLen) + cy\n            },\n            silent: true,\n            style: tickLineStyle\n          });\n\n          if (tickLineStyle.stroke === 'auto') {\n            tickLine.setStyle({\n              stroke: getColor((i + j / subSplitNumber) / splitNumber)\n            });\n          }\n\n          group.add(tickLine);\n          angle += subStep;\n        }\n\n        angle -= subStep;\n      } else {\n        angle += step;\n      }\n    }\n  },\n  _renderPointer: function (seriesModel, ecModel, api, getColor, posInfo, startAngle, endAngle, clockwise) {\n    var group = this.group;\n    var oldData = this._data;\n\n    if (!seriesModel.get('pointer.show')) {\n      // Remove old element\n      oldData && oldData.eachItemGraphicEl(function (el) {\n        group.remove(el);\n      });\n      return;\n    }\n\n    var valueExtent = [+seriesModel.get('min'), +seriesModel.get('max')];\n    var angleExtent = [startAngle, endAngle];\n    var data = seriesModel.getData();\n    var valueDim = data.mapDimension('value');\n    data.diff(oldData).add(function (idx) {\n      var pointer = new PointerPath({\n        shape: {\n          angle: startAngle\n        }\n      });\n      graphic.initProps(pointer, {\n        shape: {\n          angle: linearMap(data.get(valueDim, idx), valueExtent, angleExtent, true)\n        }\n      }, seriesModel);\n      group.add(pointer);\n      data.setItemGraphicEl(idx, pointer);\n    }).update(function (newIdx, oldIdx) {\n      var pointer = oldData.getItemGraphicEl(oldIdx);\n      graphic.updateProps(pointer, {\n        shape: {\n          angle: linearMap(data.get(valueDim, newIdx), valueExtent, angleExtent, true)\n        }\n      }, seriesModel);\n      group.add(pointer);\n      data.setItemGraphicEl(newIdx, pointer);\n    }).remove(function (idx) {\n      var pointer = oldData.getItemGraphicEl(idx);\n      group.remove(pointer);\n    }).execute();\n    data.eachItemGraphicEl(function (pointer, idx) {\n      var itemModel = data.getItemModel(idx);\n      var pointerModel = itemModel.getModel('pointer');\n      pointer.setShape({\n        x: posInfo.cx,\n        y: posInfo.cy,\n        width: parsePercent(pointerModel.get('width'), posInfo.r),\n        r: parsePercent(pointerModel.get('length'), posInfo.r)\n      });\n      pointer.useStyle(itemModel.getModel('itemStyle').getItemStyle());\n\n      if (pointer.style.fill === 'auto') {\n        pointer.setStyle('fill', getColor(linearMap(data.get(valueDim, idx), valueExtent, [0, 1], true)));\n      }\n\n      graphic.setHoverStyle(pointer, itemModel.getModel('emphasis.itemStyle').getItemStyle());\n    });\n    this._data = data;\n  },\n  _renderTitle: function (seriesModel, ecModel, api, getColor, posInfo) {\n    var data = seriesModel.getData();\n    var valueDim = data.mapDimension('value');\n    var titleModel = seriesModel.getModel('title');\n\n    if (titleModel.get('show')) {\n      var offsetCenter = titleModel.get('offsetCenter');\n      var x = posInfo.cx + parsePercent(offsetCenter[0], posInfo.r);\n      var y = posInfo.cy + parsePercent(offsetCenter[1], posInfo.r);\n      var minVal = +seriesModel.get('min');\n      var maxVal = +seriesModel.get('max');\n      var value = seriesModel.getData().get(valueDim, 0);\n      var autoColor = getColor(linearMap(value, [minVal, maxVal], [0, 1], true));\n      this.group.add(new graphic.Text({\n        silent: true,\n        style: graphic.setTextStyle({}, titleModel, {\n          x: x,\n          y: y,\n          // FIXME First data name ?\n          text: data.getName(0),\n          textAlign: 'center',\n          textVerticalAlign: 'middle'\n        }, {\n          autoColor: autoColor,\n          forceRich: true\n        })\n      }));\n    }\n  },\n  _renderDetail: function (seriesModel, ecModel, api, getColor, posInfo) {\n    var detailModel = seriesModel.getModel('detail');\n    var minVal = +seriesModel.get('min');\n    var maxVal = +seriesModel.get('max');\n\n    if (detailModel.get('show')) {\n      var offsetCenter = detailModel.get('offsetCenter');\n      var x = posInfo.cx + parsePercent(offsetCenter[0], posInfo.r);\n      var y = posInfo.cy + parsePercent(offsetCenter[1], posInfo.r);\n      var width = parsePercent(detailModel.get('width'), posInfo.r);\n      var height = parsePercent(detailModel.get('height'), posInfo.r);\n      var data = seriesModel.getData();\n      var value = data.get(data.mapDimension('value'), 0);\n      var autoColor = getColor(linearMap(value, [minVal, maxVal], [0, 1], true));\n      this.group.add(new graphic.Text({\n        silent: true,\n        style: graphic.setTextStyle({}, detailModel, {\n          x: x,\n          y: y,\n          text: formatLabel( // FIXME First data name ?\n          value, detailModel.get('formatter')),\n          textWidth: isNaN(width) ? null : width,\n          textHeight: isNaN(height) ? null : height,\n          textAlign: 'center',\n          textVerticalAlign: 'middle'\n        }, {\n          autoColor: autoColor,\n          forceRich: true\n        })\n      }));\n    }\n  }\n});\nvar _default = GaugeView;\nmodule.exports = _default;","var Path = require(\"zrender/lib/graphic/Path\");\n\nvar _default = Path.extend({\n  type: 'echartsGaugePointer',\n  shape: {\n    angle: 0,\n    width: 10,\n    r: 10,\n    x: 0,\n    y: 0\n  },\n  buildPath: function (ctx, shape) {\n    var mathCos = Math.cos;\n    var mathSin = Math.sin;\n    var r = shape.r;\n    var width = shape.width;\n    var angle = shape.angle;\n    var x = shape.x - mathCos(angle) * width * (width >= r / 3 ? 1 : 2);\n    var y = shape.y - mathSin(angle) * width * (width >= r / 3 ? 1 : 2);\n    angle = shape.angle - Math.PI / 2;\n    ctx.moveTo(x, y);\n    ctx.lineTo(shape.x + mathCos(angle) * width, shape.y + mathSin(angle) * width);\n    ctx.lineTo(shape.x + mathCos(shape.angle) * r, shape.y + mathSin(shape.angle) * r);\n    ctx.lineTo(shape.x - mathCos(angle) * width, shape.y - mathSin(angle) * width);\n    ctx.lineTo(x, y);\n    return;\n  }\n});\n\nmodule.exports = _default;","var echarts = require(\"../echarts\");\n\nrequire(\"./graph/GraphSeries\");\n\nrequire(\"./graph/GraphView\");\n\nrequire(\"./graph/graphAction\");\n\nvar categoryFilter = require(\"./graph/categoryFilter\");\n\nvar visualSymbol = require(\"../visual/symbol\");\n\nvar categoryVisual = require(\"./graph/categoryVisual\");\n\nvar edgeVisual = require(\"./graph/edgeVisual\");\n\nvar simpleLayout = require(\"./graph/simpleLayout\");\n\nvar circularLayout = require(\"./graph/circularLayout\");\n\nvar forceLayout = require(\"./graph/forceLayout\");\n\nvar createView = require(\"./graph/createView\");\n\necharts.registerProcessor(categoryFilter);\necharts.registerVisual(visualSymbol('graph', 'circle', null));\necharts.registerVisual(categoryVisual);\necharts.registerVisual(edgeVisual);\necharts.registerLayout(simpleLayout);\necharts.registerLayout(circularLayout);\necharts.registerLayout(forceLayout); // Graph view coordinate system\n\necharts.registerCoordinateSystem('graphView', {\n  create: createView\n});","var echarts = require(\"../../echarts\");\n\nvar List = require(\"../../data/List\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar _model = require(\"../../util/model\");\n\nvar defaultEmphasis = _model.defaultEmphasis;\n\nvar Model = require(\"../../model/Model\");\n\nvar _format = require(\"../../util/format\");\n\nvar encodeHTML = _format.encodeHTML;\n\nvar createGraphFromNodeEdge = require(\"../helper/createGraphFromNodeEdge\");\n\nvar GraphSeries = echarts.extendSeriesModel({\n  type: 'series.graph',\n  init: function (option) {\n    GraphSeries.superApply(this, 'init', arguments); // Provide data for legend select\n\n    this.legendDataProvider = function () {\n      return this._categoriesData;\n    };\n\n    this.fillDataTextStyle(option.edges || option.links);\n\n    this._updateCategoriesData();\n  },\n  mergeOption: function (option) {\n    GraphSeries.superApply(this, 'mergeOption', arguments);\n    this.fillDataTextStyle(option.edges || option.links);\n\n    this._updateCategoriesData();\n  },\n  mergeDefaultAndTheme: function (option) {\n    GraphSeries.superApply(this, 'mergeDefaultAndTheme', arguments);\n    defaultEmphasis(option, ['edgeLabel'], ['show']);\n  },\n  getInitialData: function (option, ecModel) {\n    var edges = option.edges || option.links || [];\n    var nodes = option.data || option.nodes || [];\n    var self = this;\n\n    if (nodes && edges) {\n      return createGraphFromNodeEdge(nodes, edges, this, true, beforeLink).data;\n    }\n\n    function beforeLink(nodeData, edgeData) {\n      // Overwrite nodeData.getItemModel to\n      nodeData.wrapMethod('getItemModel', function (model) {\n        var categoriesModels = self._categoriesModels;\n        var categoryIdx = model.getShallow('category');\n        var categoryModel = categoriesModels[categoryIdx];\n\n        if (categoryModel) {\n          categoryModel.parentModel = model.parentModel;\n          model.parentModel = categoryModel;\n        }\n\n        return model;\n      });\n      var edgeLabelModel = self.getModel('edgeLabel'); // For option `edgeLabel` can be found by label.xxx.xxx on item mode.\n\n      var fakeSeriesModel = new Model({\n        label: edgeLabelModel.option\n      }, edgeLabelModel.parentModel, ecModel);\n      edgeData.wrapMethod('getItemModel', function (model) {\n        model.customizeGetParent(edgeGetParent);\n        return model;\n      });\n\n      function edgeGetParent(path) {\n        path = this.parsePath(path);\n        return path && path[0] === 'label' ? fakeSeriesModel : this.parentModel;\n      }\n    }\n  },\n\n  /**\n   * @return {module:echarts/data/Graph}\n   */\n  getGraph: function () {\n    return this.getData().graph;\n  },\n\n  /**\n   * @return {module:echarts/data/List}\n   */\n  getEdgeData: function () {\n    return this.getGraph().edgeData;\n  },\n\n  /**\n   * @return {module:echarts/data/List}\n   */\n  getCategoriesData: function () {\n    return this._categoriesData;\n  },\n\n  /**\n   * @override\n   */\n  formatTooltip: function (dataIndex, multipleSeries, dataType) {\n    if (dataType === 'edge') {\n      var nodeData = this.getData();\n      var params = this.getDataParams(dataIndex, dataType);\n      var edge = nodeData.graph.getEdgeByIndex(dataIndex);\n      var sourceName = nodeData.getName(edge.node1.dataIndex);\n      var targetName = nodeData.getName(edge.node2.dataIndex);\n      var html = [];\n      sourceName != null && html.push(sourceName);\n      targetName != null && html.push(targetName);\n      html = encodeHTML(html.join(' > '));\n\n      if (params.value) {\n        html += ' : ' + encodeHTML(params.value);\n      }\n\n      return html;\n    } else {\n      // dataType === 'node' or empty\n      return GraphSeries.superApply(this, 'formatTooltip', arguments);\n    }\n  },\n  _updateCategoriesData: function () {\n    var categories = zrUtil.map(this.option.categories || [], function (category) {\n      // Data must has value\n      return category.value != null ? category : zrUtil.extend({\n        value: 0\n      }, category);\n    });\n    var categoriesData = new List(['value'], this);\n    categoriesData.initData(categories);\n    this._categoriesData = categoriesData;\n    this._categoriesModels = categoriesData.mapArray(function (idx) {\n      return categoriesData.getItemModel(idx, true);\n    });\n  },\n  setZoom: function (zoom) {\n    this.option.zoom = zoom;\n  },\n  setCenter: function (center) {\n    this.option.center = center;\n  },\n  isAnimationEnabled: function () {\n    return GraphSeries.superCall(this, 'isAnimationEnabled') // Not enable animation when do force layout\n    && !(this.get('layout') === 'force' && this.get('force.layoutAnimation'));\n  },\n  defaultOption: {\n    zlevel: 0,\n    z: 2,\n    coordinateSystem: 'view',\n    // Default option for all coordinate systems\n    // xAxisIndex: 0,\n    // yAxisIndex: 0,\n    // polarIndex: 0,\n    // geoIndex: 0,\n    legendHoverLink: true,\n    hoverAnimation: true,\n    layout: null,\n    focusNodeAdjacency: false,\n    // Configuration of circular layout\n    circular: {\n      rotateLabel: false\n    },\n    // Configuration of force directed layout\n    force: {\n      initLayout: null,\n      // Node repulsion. Can be an array to represent range.\n      repulsion: [0, 50],\n      gravity: 0.1,\n      // Edge length. Can be an array to represent range.\n      edgeLength: 30,\n      layoutAnimation: true\n    },\n    left: 'center',\n    top: 'center',\n    // right: null,\n    // bottom: null,\n    // width: '80%',\n    // height: '80%',\n    symbol: 'circle',\n    symbolSize: 10,\n    edgeSymbol: ['none', 'none'],\n    edgeSymbolSize: 10,\n    edgeLabel: {\n      position: 'middle'\n    },\n    draggable: false,\n    roam: false,\n    // Default on center of graph\n    center: null,\n    zoom: 1,\n    // Symbol size scale ratio in roam\n    nodeScaleRatio: 0.6,\n    // cursor: null,\n    // categories: [],\n    // data: []\n    // Or\n    // nodes: []\n    //\n    // links: []\n    // Or\n    // edges: []\n    label: {\n      show: false,\n      formatter: '{b}'\n    },\n    itemStyle: {},\n    lineStyle: {\n      color: '#aaa',\n      width: 1,\n      curveness: 0,\n      opacity: 0.5\n    },\n    emphasis: {\n      label: {\n        show: true\n      }\n    }\n  }\n});\nvar _default = GraphSeries;\nmodule.exports = _default;","var echarts = require(\"../../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar SymbolDraw = require(\"../helper/SymbolDraw\");\n\nvar LineDraw = require(\"../helper/LineDraw\");\n\nvar RoamController = require(\"../../component/helper/RoamController\");\n\nvar roamHelper = require(\"../../component/helper/roamHelper\");\n\nvar _cursorHelper = require(\"../../component/helper/cursorHelper\");\n\nvar onIrrelevantElement = _cursorHelper.onIrrelevantElement;\n\nvar graphic = require(\"../../util/graphic\");\n\nvar adjustEdge = require(\"./adjustEdge\");\n\nvar nodeOpacityPath = ['itemStyle', 'opacity'];\nvar lineOpacityPath = ['lineStyle', 'opacity'];\n\nfunction getItemOpacity(item, opacityPath) {\n  return item.getVisual('opacity') || item.getModel().get(opacityPath);\n}\n\nfunction fadeOutItem(item, opacityPath, opacityRatio) {\n  var el = item.getGraphicEl();\n  var opacity = getItemOpacity(item, opacityPath);\n\n  if (opacityRatio != null) {\n    opacity == null && (opacity = 1);\n    opacity *= opacityRatio;\n  }\n\n  el.downplay && el.downplay();\n  el.traverse(function (child) {\n    if (child.type !== 'group') {\n      child.setStyle('opacity', opacity);\n    }\n  });\n}\n\nfunction fadeInItem(item, opacityPath) {\n  var opacity = getItemOpacity(item, opacityPath);\n  var el = item.getGraphicEl();\n  el.highlight && el.highlight();\n  el.traverse(function (child) {\n    if (child.type !== 'group') {\n      child.setStyle('opacity', opacity);\n    }\n  });\n}\n\nvar _default = echarts.extendChartView({\n  type: 'graph',\n  init: function (ecModel, api) {\n    var symbolDraw = new SymbolDraw();\n    var lineDraw = new LineDraw();\n    var group = this.group;\n    this._controller = new RoamController(api.getZr());\n    this._controllerHost = {\n      target: group\n    };\n    group.add(symbolDraw.group);\n    group.add(lineDraw.group);\n    this._symbolDraw = symbolDraw;\n    this._lineDraw = lineDraw;\n    this._firstRender = true;\n  },\n  render: function (seriesModel, ecModel, api) {\n    var coordSys = seriesModel.coordinateSystem;\n    this._model = seriesModel;\n    this._nodeScaleRatio = seriesModel.get('nodeScaleRatio');\n    var symbolDraw = this._symbolDraw;\n    var lineDraw = this._lineDraw;\n    var group = this.group;\n\n    if (coordSys.type === 'view') {\n      var groupNewProp = {\n        position: coordSys.position,\n        scale: coordSys.scale\n      };\n\n      if (this._firstRender) {\n        group.attr(groupNewProp);\n      } else {\n        graphic.updateProps(group, groupNewProp, seriesModel);\n      }\n    } // Fix edge contact point with node\n\n\n    adjustEdge(seriesModel.getGraph(), this._getNodeGlobalScale(seriesModel));\n    var data = seriesModel.getData();\n    symbolDraw.updateData(data);\n    var edgeData = seriesModel.getEdgeData();\n    lineDraw.updateData(edgeData);\n\n    this._updateNodeAndLinkScale();\n\n    this._updateController(seriesModel, ecModel, api);\n\n    clearTimeout(this._layoutTimeout);\n    var forceLayout = seriesModel.forceLayout;\n    var layoutAnimation = seriesModel.get('force.layoutAnimation');\n\n    if (forceLayout) {\n      this._startForceLayoutIteration(forceLayout, layoutAnimation);\n    }\n\n    data.eachItemGraphicEl(function (el, idx) {\n      var itemModel = data.getItemModel(idx); // Update draggable\n\n      el.off('drag').off('dragend');\n      var draggable = data.getItemModel(idx).get('draggable');\n\n      if (draggable) {\n        el.on('drag', function () {\n          if (forceLayout) {\n            forceLayout.warmUp();\n            !this._layouting && this._startForceLayoutIteration(forceLayout, layoutAnimation);\n            forceLayout.setFixed(idx); // Write position back to layout\n\n            data.setItemLayout(idx, el.position);\n          }\n        }, this).on('dragend', function () {\n          if (forceLayout) {\n            forceLayout.setUnfixed(idx);\n          }\n        }, this);\n      }\n\n      el.setDraggable(draggable && forceLayout);\n      el.off('mouseover', el.__focusNodeAdjacency);\n      el.off('mouseout', el.__unfocusNodeAdjacency);\n\n      if (itemModel.get('focusNodeAdjacency')) {\n        el.on('mouseover', el.__focusNodeAdjacency = function () {\n          api.dispatchAction({\n            type: 'focusNodeAdjacency',\n            seriesId: seriesModel.id,\n            dataIndex: el.dataIndex\n          });\n        });\n        el.on('mouseout', el.__unfocusNodeAdjacency = function () {\n          api.dispatchAction({\n            type: 'unfocusNodeAdjacency',\n            seriesId: seriesModel.id\n          });\n        });\n      }\n    }, this);\n    data.graph.eachEdge(function (edge) {\n      var el = edge.getGraphicEl();\n      el.off('mouseover', el.__focusNodeAdjacency);\n      el.off('mouseout', el.__unfocusNodeAdjacency);\n\n      if (edge.getModel().get('focusNodeAdjacency')) {\n        el.on('mouseover', el.__focusNodeAdjacency = function () {\n          api.dispatchAction({\n            type: 'focusNodeAdjacency',\n            seriesId: seriesModel.id,\n            edgeDataIndex: edge.dataIndex\n          });\n        });\n        el.on('mouseout', el.__unfocusNodeAdjacency = function () {\n          api.dispatchAction({\n            type: 'unfocusNodeAdjacency',\n            seriesId: seriesModel.id\n          });\n        });\n      }\n    });\n    var circularRotateLabel = seriesModel.get('layout') === 'circular' && seriesModel.get('circular.rotateLabel');\n    var cx = data.getLayout('cx');\n    var cy = data.getLayout('cy');\n    data.eachItemGraphicEl(function (el, idx) {\n      var symbolPath = el.getSymbolPath();\n\n      if (circularRotateLabel) {\n        var pos = data.getItemLayout(idx);\n        var rad = Math.atan2(pos[1] - cy, pos[0] - cx);\n\n        if (rad < 0) {\n          rad = Math.PI * 2 + rad;\n        }\n\n        var isLeft = pos[0] < cx;\n\n        if (isLeft) {\n          rad = rad - Math.PI;\n        }\n\n        var textPosition = isLeft ? 'left' : 'right';\n        symbolPath.setStyle({\n          textRotation: -rad,\n          textPosition: textPosition,\n          textOrigin: 'center'\n        });\n        symbolPath.hoverStyle && (symbolPath.hoverStyle.textPosition = textPosition);\n      } else {\n        symbolPath.setStyle({\n          textRotation: 0\n        });\n      }\n    });\n    this._firstRender = false;\n  },\n  dispose: function () {\n    this._controller && this._controller.dispose();\n    this._controllerHost = {};\n  },\n  focusNodeAdjacency: function (seriesModel, ecModel, api, payload) {\n    var data = this._model.getData();\n\n    var graph = data.graph;\n    var dataIndex = payload.dataIndex;\n    var edgeDataIndex = payload.edgeDataIndex;\n    var node = graph.getNodeByIndex(dataIndex);\n    var edge = graph.getEdgeByIndex(edgeDataIndex);\n\n    if (!node && !edge) {\n      return;\n    }\n\n    graph.eachNode(function (node) {\n      fadeOutItem(node, nodeOpacityPath, 0.1);\n    });\n    graph.eachEdge(function (edge) {\n      fadeOutItem(edge, lineOpacityPath, 0.1);\n    });\n\n    if (node) {\n      fadeInItem(node, nodeOpacityPath);\n      zrUtil.each(node.edges, function (adjacentEdge) {\n        if (adjacentEdge.dataIndex < 0) {\n          return;\n        }\n\n        fadeInItem(adjacentEdge, lineOpacityPath);\n        fadeInItem(adjacentEdge.node1, nodeOpacityPath);\n        fadeInItem(adjacentEdge.node2, nodeOpacityPath);\n      });\n    }\n\n    if (edge) {\n      fadeInItem(edge, lineOpacityPath);\n      fadeInItem(edge.node1, nodeOpacityPath);\n      fadeInItem(edge.node2, nodeOpacityPath);\n    }\n  },\n  unfocusNodeAdjacency: function (seriesModel, ecModel, api, payload) {\n    var graph = this._model.getData().graph;\n\n    graph.eachNode(function (node) {\n      fadeOutItem(node, nodeOpacityPath);\n    });\n    graph.eachEdge(function (edge) {\n      fadeOutItem(edge, lineOpacityPath);\n    });\n  },\n  _startForceLayoutIteration: function (forceLayout, layoutAnimation) {\n    var self = this;\n\n    (function step() {\n      forceLayout.step(function (stopped) {\n        self.updateLayout(self._model);\n        (self._layouting = !stopped) && (layoutAnimation ? self._layoutTimeout = setTimeout(step, 16) : step());\n      });\n    })();\n  },\n  _updateController: function (seriesModel, ecModel, api) {\n    var controller = this._controller;\n    var controllerHost = this._controllerHost;\n    var group = this.group;\n    controller.setPointerChecker(function (e, x, y) {\n      var rect = group.getBoundingRect();\n      rect.applyTransform(group.transform);\n      return rect.contain(x, y) && !onIrrelevantElement(e, api, seriesModel);\n    });\n\n    if (seriesModel.coordinateSystem.type !== 'view') {\n      controller.disable();\n      return;\n    }\n\n    controller.enable(seriesModel.get('roam'));\n    controllerHost.zoomLimit = seriesModel.get('scaleLimit');\n    controllerHost.zoom = seriesModel.coordinateSystem.getZoom();\n    controller.off('pan').off('zoom').on('pan', function (dx, dy) {\n      roamHelper.updateViewOnPan(controllerHost, dx, dy);\n      api.dispatchAction({\n        seriesId: seriesModel.id,\n        type: 'graphRoam',\n        dx: dx,\n        dy: dy\n      });\n    }).on('zoom', function (zoom, mouseX, mouseY) {\n      roamHelper.updateViewOnZoom(controllerHost, zoom, mouseX, mouseY);\n      api.dispatchAction({\n        seriesId: seriesModel.id,\n        type: 'graphRoam',\n        zoom: zoom,\n        originX: mouseX,\n        originY: mouseY\n      });\n\n      this._updateNodeAndLinkScale();\n\n      adjustEdge(seriesModel.getGraph(), this._getNodeGlobalScale(seriesModel));\n\n      this._lineDraw.updateLayout();\n    }, this);\n  },\n  _updateNodeAndLinkScale: function () {\n    var seriesModel = this._model;\n    var data = seriesModel.getData();\n\n    var nodeScale = this._getNodeGlobalScale(seriesModel);\n\n    var invScale = [nodeScale, nodeScale];\n    data.eachItemGraphicEl(function (el, idx) {\n      el.attr('scale', invScale);\n    });\n  },\n  _getNodeGlobalScale: function (seriesModel) {\n    var coordSys = seriesModel.coordinateSystem;\n\n    if (coordSys.type !== 'view') {\n      return 1;\n    }\n\n    var nodeScaleRatio = this._nodeScaleRatio;\n    var groupScale = coordSys.scale;\n    var groupZoom = groupScale && groupScale[0] || 1; // Scale node when zoom changes\n\n    var roamZoom = coordSys.getZoom();\n    var nodeScale = (roamZoom - 1) * nodeScaleRatio + 1;\n    return nodeScale / groupZoom;\n  },\n  updateLayout: function (seriesModel) {\n    adjustEdge(seriesModel.getGraph(), this._getNodeGlobalScale(seriesModel));\n\n    this._symbolDraw.updateLayout();\n\n    this._lineDraw.updateLayout();\n  },\n  remove: function (ecModel, api) {\n    this._symbolDraw && this._symbolDraw.remove();\n    this._lineDraw && this._lineDraw.remove();\n  }\n});\n\nmodule.exports = _default;","var curveTool = require(\"zrender/lib/core/curve\");\n\nvar vec2 = require(\"zrender/lib/core/vector\");\n\nvar v1 = [];\nvar v2 = [];\nvar v3 = [];\nvar quadraticAt = curveTool.quadraticAt;\nvar v2DistSquare = vec2.distSquare;\nvar mathAbs = Math.abs;\n\nfunction intersectCurveCircle(curvePoints, center, radius) {\n  var p0 = curvePoints[0];\n  var p1 = curvePoints[1];\n  var p2 = curvePoints[2];\n  var d = Infinity;\n  var t;\n  var radiusSquare = radius * radius;\n  var interval = 0.1;\n\n  for (var _t = 0.1; _t <= 0.9; _t += 0.1) {\n    v1[0] = quadraticAt(p0[0], p1[0], p2[0], _t);\n    v1[1] = quadraticAt(p0[1], p1[1], p2[1], _t);\n    var diff = mathAbs(v2DistSquare(v1, center) - radiusSquare);\n\n    if (diff < d) {\n      d = diff;\n      t = _t;\n    }\n  } // Assume the segment is monotone，Find root through Bisection method\n  // At most 32 iteration\n\n\n  for (var i = 0; i < 32; i++) {\n    // var prev = t - interval;\n    var next = t + interval; // v1[0] = quadraticAt(p0[0], p1[0], p2[0], prev);\n    // v1[1] = quadraticAt(p0[1], p1[1], p2[1], prev);\n\n    v2[0] = quadraticAt(p0[0], p1[0], p2[0], t);\n    v2[1] = quadraticAt(p0[1], p1[1], p2[1], t);\n    v3[0] = quadraticAt(p0[0], p1[0], p2[0], next);\n    v3[1] = quadraticAt(p0[1], p1[1], p2[1], next);\n    var diff = v2DistSquare(v2, center) - radiusSquare;\n\n    if (mathAbs(diff) < 1e-2) {\n      break;\n    } // var prevDiff = v2DistSquare(v1, center) - radiusSquare;\n\n\n    var nextDiff = v2DistSquare(v3, center) - radiusSquare;\n    interval /= 2;\n\n    if (diff < 0) {\n      if (nextDiff >= 0) {\n        t = t + interval;\n      } else {\n        t = t - interval;\n      }\n    } else {\n      if (nextDiff >= 0) {\n        t = t - interval;\n      } else {\n        t = t + interval;\n      }\n    }\n  }\n\n  return t;\n} // Adjust edge to avoid\n\n\nfunction _default(graph, scale) {\n  var tmp0 = [];\n  var quadraticSubdivide = curveTool.quadraticSubdivide;\n  var pts = [[], [], []];\n  var pts2 = [[], []];\n  var v = [];\n  scale /= 2;\n\n  function getSymbolSize(node) {\n    var symbolSize = node.getVisual('symbolSize');\n\n    if (symbolSize instanceof Array) {\n      symbolSize = (symbolSize[0] + symbolSize[1]) / 2;\n    }\n\n    return symbolSize;\n  }\n\n  graph.eachEdge(function (edge, idx) {\n    var linePoints = edge.getLayout();\n    var fromSymbol = edge.getVisual('fromSymbol');\n    var toSymbol = edge.getVisual('toSymbol');\n\n    if (!linePoints.__original) {\n      linePoints.__original = [vec2.clone(linePoints[0]), vec2.clone(linePoints[1])];\n\n      if (linePoints[2]) {\n        linePoints.__original.push(vec2.clone(linePoints[2]));\n      }\n    }\n\n    var originalPoints = linePoints.__original; // Quadratic curve\n\n    if (linePoints[2] != null) {\n      vec2.copy(pts[0], originalPoints[0]);\n      vec2.copy(pts[1], originalPoints[2]);\n      vec2.copy(pts[2], originalPoints[1]);\n\n      if (fromSymbol && fromSymbol != 'none') {\n        var symbolSize = getSymbolSize(edge.node1);\n        var t = intersectCurveCircle(pts, originalPoints[0], symbolSize * scale); // Subdivide and get the second\n\n        quadraticSubdivide(pts[0][0], pts[1][0], pts[2][0], t, tmp0);\n        pts[0][0] = tmp0[3];\n        pts[1][0] = tmp0[4];\n        quadraticSubdivide(pts[0][1], pts[1][1], pts[2][1], t, tmp0);\n        pts[0][1] = tmp0[3];\n        pts[1][1] = tmp0[4];\n      }\n\n      if (toSymbol && toSymbol != 'none') {\n        var symbolSize = getSymbolSize(edge.node2);\n        var t = intersectCurveCircle(pts, originalPoints[1], symbolSize * scale); // Subdivide and get the first\n\n        quadraticSubdivide(pts[0][0], pts[1][0], pts[2][0], t, tmp0);\n        pts[1][0] = tmp0[1];\n        pts[2][0] = tmp0[2];\n        quadraticSubdivide(pts[0][1], pts[1][1], pts[2][1], t, tmp0);\n        pts[1][1] = tmp0[1];\n        pts[2][1] = tmp0[2];\n      } // Copy back to layout\n\n\n      vec2.copy(linePoints[0], pts[0]);\n      vec2.copy(linePoints[1], pts[2]);\n      vec2.copy(linePoints[2], pts[1]);\n    } // Line\n    else {\n        vec2.copy(pts2[0], originalPoints[0]);\n        vec2.copy(pts2[1], originalPoints[1]);\n        vec2.sub(v, pts2[1], pts2[0]);\n        vec2.normalize(v, v);\n\n        if (fromSymbol && fromSymbol != 'none') {\n          var symbolSize = getSymbolSize(edge.node1);\n          vec2.scaleAndAdd(pts2[0], pts2[0], v, symbolSize * scale);\n        }\n\n        if (toSymbol && toSymbol != 'none') {\n          var symbolSize = getSymbolSize(edge.node2);\n          vec2.scaleAndAdd(pts2[1], pts2[1], v, -symbolSize * scale);\n        }\n\n        vec2.copy(linePoints[0], pts2[0]);\n        vec2.copy(linePoints[1], pts2[1]);\n      }\n  });\n}\n\nmodule.exports = _default;","function _default(ecModel) {\n  var legendModels = ecModel.findComponents({\n    mainType: 'legend'\n  });\n\n  if (!legendModels || !legendModels.length) {\n    return;\n  }\n\n  ecModel.eachSeriesByType('graph', function (graphSeries) {\n    var categoriesData = graphSeries.getCategoriesData();\n    var graph = graphSeries.getGraph();\n    var data = graph.data;\n    var categoryNames = categoriesData.mapArray(categoriesData.getName);\n    data.filterSelf(function (idx) {\n      var model = data.getItemModel(idx);\n      var category = model.getShallow('category');\n\n      if (category != null) {\n        if (typeof category === 'number') {\n          category = categoryNames[category];\n        } // If in any legend component the status is not selected.\n\n\n        for (var i = 0; i < legendModels.length; i++) {\n          if (!legendModels[i].isSelected(category)) {\n            return false;\n          }\n        }\n      }\n\n      return true;\n    });\n  }, this);\n}\n\nmodule.exports = _default;","function _default(ecModel) {\n  var paletteScope = {};\n  ecModel.eachSeriesByType('graph', function (seriesModel) {\n    var categoriesData = seriesModel.getCategoriesData();\n    var data = seriesModel.getData();\n    var categoryNameIdxMap = {};\n    categoriesData.each(function (idx) {\n      var name = categoriesData.getName(idx); // Add prefix to avoid conflict with Object.prototype.\n\n      categoryNameIdxMap['ec-' + name] = idx;\n      var itemModel = categoriesData.getItemModel(idx);\n      var color = itemModel.get('itemStyle.color') || seriesModel.getColorFromPalette(name, paletteScope);\n      categoriesData.setItemVisual(idx, 'color', color);\n    }); // Assign category color to visual\n\n    if (categoriesData.count()) {\n      data.each(function (idx) {\n        var model = data.getItemModel(idx);\n        var category = model.getShallow('category');\n\n        if (category != null) {\n          if (typeof category === 'string') {\n            category = categoryNameIdxMap['ec-' + category];\n          }\n\n          if (!data.getItemVisual(idx, 'color', true)) {\n            data.setItemVisual(idx, 'color', categoriesData.getItemVisual(category, 'color'));\n          }\n        }\n      });\n    }\n  });\n}\n\nmodule.exports = _default;","var _circularLayoutHelper = require(\"./circularLayoutHelper\");\n\nvar circularLayout = _circularLayoutHelper.circularLayout;\n\nfunction _default(ecModel) {\n  ecModel.eachSeriesByType('graph', function (seriesModel) {\n    if (seriesModel.get('layout') === 'circular') {\n      circularLayout(seriesModel);\n    }\n  });\n}\n\nmodule.exports = _default;","var vec2 = require(\"zrender/lib/core/vector\");\n\nfunction circularLayout(seriesModel) {\n  var coordSys = seriesModel.coordinateSystem;\n\n  if (coordSys && coordSys.type !== 'view') {\n    return;\n  }\n\n  var rect = coordSys.getBoundingRect();\n  var nodeData = seriesModel.getData();\n  var graph = nodeData.graph;\n  var angle = 0;\n  var sum = nodeData.getSum('value');\n  var unitAngle = Math.PI * 2 / (sum || nodeData.count());\n  var cx = rect.width / 2 + rect.x;\n  var cy = rect.height / 2 + rect.y;\n  var r = Math.min(rect.width, rect.height) / 2;\n  graph.eachNode(function (node) {\n    var value = node.getValue('value');\n    angle += unitAngle * (sum ? value : 1) / 2;\n    node.setLayout([r * Math.cos(angle) + cx, r * Math.sin(angle) + cy]);\n    angle += unitAngle * (sum ? value : 1) / 2;\n  });\n  nodeData.setLayout({\n    cx: cx,\n    cy: cy\n  });\n  graph.eachEdge(function (edge) {\n    var curveness = edge.getModel().get('lineStyle.curveness') || 0;\n    var p1 = vec2.clone(edge.node1.getLayout());\n    var p2 = vec2.clone(edge.node2.getLayout());\n    var cp1;\n    var x12 = (p1[0] + p2[0]) / 2;\n    var y12 = (p1[1] + p2[1]) / 2;\n\n    if (+curveness) {\n      curveness *= 3;\n      cp1 = [cx * curveness + x12 * (1 - curveness), cy * curveness + y12 * (1 - curveness)];\n    }\n\n    edge.setLayout([p1, p2, cp1]);\n  });\n}\n\nexports.circularLayout = circularLayout;","var View = require(\"../../coord/View\");\n\nvar _layout = require(\"../../util/layout\");\n\nvar getLayoutRect = _layout.getLayoutRect;\n\nvar bbox = require(\"zrender/lib/core/bbox\");\n\n// FIXME Where to create the simple view coordinate system\nfunction getViewRect(seriesModel, api, aspect) {\n  var option = seriesModel.getBoxLayoutParams();\n  option.aspect = aspect;\n  return getLayoutRect(option, {\n    width: api.getWidth(),\n    height: api.getHeight()\n  });\n}\n\nfunction _default(ecModel, api) {\n  var viewList = [];\n  ecModel.eachSeriesByType('graph', function (seriesModel) {\n    var coordSysType = seriesModel.get('coordinateSystem');\n\n    if (!coordSysType || coordSysType === 'view') {\n      var data = seriesModel.getData();\n      var positions = data.mapArray(function (idx) {\n        var itemModel = data.getItemModel(idx);\n        return [+itemModel.get('x'), +itemModel.get('y')];\n      });\n      var min = [];\n      var max = [];\n      bbox.fromPoints(positions, min, max); // If width or height is 0\n\n      if (max[0] - min[0] === 0) {\n        max[0] += 1;\n        min[0] -= 1;\n      }\n\n      if (max[1] - min[1] === 0) {\n        max[1] += 1;\n        min[1] -= 1;\n      }\n\n      var aspect = (max[0] - min[0]) / (max[1] - min[1]); // FIXME If get view rect after data processed?\n\n      var viewRect = getViewRect(seriesModel, api, aspect); // Position may be NaN, use view rect instead\n\n      if (isNaN(aspect)) {\n        min = [viewRect.x, viewRect.y];\n        max = [viewRect.x + viewRect.width, viewRect.y + viewRect.height];\n      }\n\n      var bbWidth = max[0] - min[0];\n      var bbHeight = max[1] - min[1];\n      var viewWidth = viewRect.width;\n      var viewHeight = viewRect.height;\n      var viewCoordSys = seriesModel.coordinateSystem = new View();\n      viewCoordSys.zoomLimit = seriesModel.get('scaleLimit');\n      viewCoordSys.setBoundingRect(min[0], min[1], bbWidth, bbHeight);\n      viewCoordSys.setViewRect(viewRect.x, viewRect.y, viewWidth, viewHeight); // Update roam info\n\n      viewCoordSys.setCenter(seriesModel.get('center'));\n      viewCoordSys.setZoom(seriesModel.get('zoom'));\n      viewList.push(viewCoordSys);\n    }\n  });\n  return viewList;\n}\n\nmodule.exports = _default;","function normalize(a) {\n  if (!(a instanceof Array)) {\n    a = [a, a];\n  }\n\n  return a;\n}\n\nfunction _default(ecModel) {\n  ecModel.eachSeriesByType('graph', function (seriesModel) {\n    var graph = seriesModel.getGraph();\n    var edgeData = seriesModel.getEdgeData();\n    var symbolType = normalize(seriesModel.get('edgeSymbol'));\n    var symbolSize = normalize(seriesModel.get('edgeSymbolSize'));\n    var colorQuery = 'lineStyle.color'.split('.');\n    var opacityQuery = 'lineStyle.opacity'.split('.');\n    edgeData.setVisual('fromSymbol', symbolType && symbolType[0]);\n    edgeData.setVisual('toSymbol', symbolType && symbolType[1]);\n    edgeData.setVisual('fromSymbolSize', symbolSize && symbolSize[0]);\n    edgeData.setVisual('toSymbolSize', symbolSize && symbolSize[1]);\n    edgeData.setVisual('color', seriesModel.get(colorQuery));\n    edgeData.setVisual('opacity', seriesModel.get(opacityQuery));\n    edgeData.each(function (idx) {\n      var itemModel = edgeData.getItemModel(idx);\n      var edge = graph.getEdgeByIndex(idx);\n      var symbolType = normalize(itemModel.getShallow('symbol', true));\n      var symbolSize = normalize(itemModel.getShallow('symbolSize', true)); // Edge visual must after node visual\n\n      var color = itemModel.get(colorQuery);\n      var opacity = itemModel.get(opacityQuery);\n\n      switch (color) {\n        case 'source':\n          color = edge.node1.getVisual('color');\n          break;\n\n        case 'target':\n          color = edge.node2.getVisual('color');\n          break;\n      }\n\n      symbolType[0] && edge.setVisual('fromSymbol', symbolType[0]);\n      symbolType[1] && edge.setVisual('toSymbol', symbolType[1]);\n      symbolSize[0] && edge.setVisual('fromSymbolSize', symbolSize[0]);\n      symbolSize[1] && edge.setVisual('toSymbolSize', symbolSize[1]);\n      edge.setVisual('color', color);\n      edge.setVisual('opacity', opacity);\n    });\n  });\n}\n\nmodule.exports = _default;","var vec2 = require(\"zrender/lib/core/vector\");\n\nvar scaleAndAdd = vec2.scaleAndAdd; // function adjacentNode(n, e) {\n//     return e.n1 === n ? e.n2 : e.n1;\n// }\n\nfunction forceLayout(nodes, edges, opts) {\n  var rect = opts.rect;\n  var width = rect.width;\n  var height = rect.height;\n  var center = [rect.x + width / 2, rect.y + height / 2]; // var scale = opts.scale || 1;\n\n  var gravity = opts.gravity == null ? 0.1 : opts.gravity; // for (var i = 0; i < edges.length; i++) {\n  //     var e = edges[i];\n  //     var n1 = e.n1;\n  //     var n2 = e.n2;\n  //     n1.edges = n1.edges || [];\n  //     n2.edges = n2.edges || [];\n  //     n1.edges.push(e);\n  //     n2.edges.push(e);\n  // }\n  // Init position\n\n  for (var i = 0; i < nodes.length; i++) {\n    var n = nodes[i];\n\n    if (!n.p) {\n      // Use the position from first adjecent node with defined position\n      // Or use a random position\n      // From d3\n      // if (n.edges) {\n      //     var j = -1;\n      //     while (++j < n.edges.length) {\n      //         var e = n.edges[j];\n      //         var other = adjacentNode(n, e);\n      //         if (other.p) {\n      //             n.p = vec2.clone(other.p);\n      //             break;\n      //         }\n      //     }\n      // }\n      // if (!n.p) {\n      n.p = vec2.create(width * (Math.random() - 0.5) + center[0], height * (Math.random() - 0.5) + center[1]); // }\n    }\n\n    n.pp = vec2.clone(n.p);\n    n.edges = null;\n  } // Formula in 'Graph Drawing by Force-directed Placement'\n  // var k = scale * Math.sqrt(width * height / nodes.length);\n  // var k2 = k * k;\n\n\n  var friction = 0.6;\n  return {\n    warmUp: function () {\n      friction = 0.5;\n    },\n    setFixed: function (idx) {\n      nodes[idx].fixed = true;\n    },\n    setUnfixed: function (idx) {\n      nodes[idx].fixed = false;\n    },\n    step: function (cb) {\n      var v12 = [];\n      var nLen = nodes.length;\n\n      for (var i = 0; i < edges.length; i++) {\n        var e = edges[i];\n        var n1 = e.n1;\n        var n2 = e.n2;\n        vec2.sub(v12, n2.p, n1.p);\n        var d = vec2.len(v12) - e.d;\n        var w = n2.w / (n1.w + n2.w);\n\n        if (isNaN(w)) {\n          w = 0;\n        }\n\n        vec2.normalize(v12, v12);\n        !n1.fixed && scaleAndAdd(n1.p, n1.p, v12, w * d * friction);\n        !n2.fixed && scaleAndAdd(n2.p, n2.p, v12, -(1 - w) * d * friction);\n      } // Gravity\n\n\n      for (var i = 0; i < nLen; i++) {\n        var n = nodes[i];\n\n        if (!n.fixed) {\n          vec2.sub(v12, center, n.p); // var d = vec2.len(v12);\n          // vec2.scale(v12, v12, 1 / d);\n          // var gravityFactor = gravity;\n\n          scaleAndAdd(n.p, n.p, v12, gravity * friction);\n        }\n      } // Repulsive\n      // PENDING\n\n\n      for (var i = 0; i < nLen; i++) {\n        var n1 = nodes[i];\n\n        for (var j = i + 1; j < nLen; j++) {\n          var n2 = nodes[j];\n          vec2.sub(v12, n2.p, n1.p);\n          var d = vec2.len(v12);\n\n          if (d === 0) {\n            // Random repulse\n            vec2.set(v12, Math.random() - 0.5, Math.random() - 0.5);\n            d = 1;\n          }\n\n          var repFact = (n1.rep + n2.rep) / d / d;\n          !n1.fixed && scaleAndAdd(n1.pp, n1.pp, v12, repFact);\n          !n2.fixed && scaleAndAdd(n2.pp, n2.pp, v12, -repFact);\n        }\n      }\n\n      var v = [];\n\n      for (var i = 0; i < nLen; i++) {\n        var n = nodes[i];\n\n        if (!n.fixed) {\n          vec2.sub(v, n.p, n.pp);\n          scaleAndAdd(n.p, n.p, v, friction);\n          vec2.copy(n.pp, n.p);\n        }\n      }\n\n      friction = friction * 0.992;\n      cb && cb(nodes, edges, friction < 0.01);\n    }\n  };\n}\n\nexports.forceLayout = forceLayout;","var _forceHelper = require(\"./forceHelper\");\n\nvar forceLayout = _forceHelper.forceLayout;\n\nvar _simpleLayoutHelper = require(\"./simpleLayoutHelper\");\n\nvar simpleLayout = _simpleLayoutHelper.simpleLayout;\n\nvar _circularLayoutHelper = require(\"./circularLayoutHelper\");\n\nvar circularLayout = _circularLayoutHelper.circularLayout;\n\nvar _number = require(\"../../util/number\");\n\nvar linearMap = _number.linearMap;\n\nvar vec2 = require(\"zrender/lib/core/vector\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nfunction _default(ecModel) {\n  ecModel.eachSeriesByType('graph', function (graphSeries) {\n    var coordSys = graphSeries.coordinateSystem;\n\n    if (coordSys && coordSys.type !== 'view') {\n      return;\n    }\n\n    if (graphSeries.get('layout') === 'force') {\n      var preservedPoints = graphSeries.preservedPoints || {};\n      var graph = graphSeries.getGraph();\n      var nodeData = graph.data;\n      var edgeData = graph.edgeData;\n      var forceModel = graphSeries.getModel('force');\n      var initLayout = forceModel.get('initLayout');\n\n      if (graphSeries.preservedPoints) {\n        nodeData.each(function (idx) {\n          var id = nodeData.getId(idx);\n          nodeData.setItemLayout(idx, preservedPoints[id] || [NaN, NaN]);\n        });\n      } else if (!initLayout || initLayout === 'none') {\n        simpleLayout(graphSeries);\n      } else if (initLayout === 'circular') {\n        circularLayout(graphSeries);\n      }\n\n      var nodeDataExtent = nodeData.getDataExtent('value');\n      var edgeDataExtent = edgeData.getDataExtent('value'); // var edgeDataExtent = edgeData.getDataExtent('value');\n\n      var repulsion = forceModel.get('repulsion');\n      var edgeLength = forceModel.get('edgeLength');\n\n      if (!zrUtil.isArray(repulsion)) {\n        repulsion = [repulsion, repulsion];\n      }\n\n      if (!zrUtil.isArray(edgeLength)) {\n        edgeLength = [edgeLength, edgeLength];\n      } // Larger value has smaller length\n\n\n      edgeLength = [edgeLength[1], edgeLength[0]];\n      var nodes = nodeData.mapArray('value', function (value, idx) {\n        var point = nodeData.getItemLayout(idx);\n        var rep = linearMap(value, nodeDataExtent, repulsion);\n\n        if (isNaN(rep)) {\n          rep = (repulsion[0] + repulsion[1]) / 2;\n        }\n\n        return {\n          w: rep,\n          rep: rep,\n          fixed: nodeData.getItemModel(idx).get('fixed'),\n          p: !point || isNaN(point[0]) || isNaN(point[1]) ? null : point\n        };\n      });\n      var edges = edgeData.mapArray('value', function (value, idx) {\n        var edge = graph.getEdgeByIndex(idx);\n        var d = linearMap(value, edgeDataExtent, edgeLength);\n\n        if (isNaN(d)) {\n          d = (edgeLength[0] + edgeLength[1]) / 2;\n        }\n\n        return {\n          n1: nodes[edge.node1.dataIndex],\n          n2: nodes[edge.node2.dataIndex],\n          d: d,\n          curveness: edge.getModel().get('lineStyle.curveness') || 0\n        };\n      });\n      var coordSys = graphSeries.coordinateSystem;\n      var rect = coordSys.getBoundingRect();\n      var forceInstance = forceLayout(nodes, edges, {\n        rect: rect,\n        gravity: forceModel.get('gravity')\n      });\n      var oldStep = forceInstance.step;\n\n      forceInstance.step = function (cb) {\n        for (var i = 0, l = nodes.length; i < l; i++) {\n          if (nodes[i].fixed) {\n            // Write back to layout instance\n            vec2.copy(nodes[i].p, graph.getNodeByIndex(i).getLayout());\n          }\n        }\n\n        oldStep(function (nodes, edges, stopped) {\n          for (var i = 0, l = nodes.length; i < l; i++) {\n            if (!nodes[i].fixed) {\n              graph.getNodeByIndex(i).setLayout(nodes[i].p);\n            }\n\n            preservedPoints[nodeData.getId(i)] = nodes[i].p;\n          }\n\n          for (var i = 0, l = edges.length; i < l; i++) {\n            var e = edges[i];\n            var edge = graph.getEdgeByIndex(i);\n            var p1 = e.n1.p;\n            var p2 = e.n2.p;\n            var points = edge.getLayout();\n            points = points ? points.slice() : [];\n            points[0] = points[0] || [];\n            points[1] = points[1] || [];\n            vec2.copy(points[0], p1);\n            vec2.copy(points[1], p2);\n\n            if (+e.curveness) {\n              points[2] = [(p1[0] + p2[0]) / 2 - (p1[1] - p2[1]) * e.curveness, (p1[1] + p2[1]) / 2 - (p2[0] - p1[0]) * e.curveness];\n            }\n\n            edge.setLayout(points);\n          } // Update layout\n\n\n          cb && cb(stopped);\n        });\n      };\n\n      graphSeries.forceLayout = forceInstance;\n      graphSeries.preservedPoints = preservedPoints; // Step to get the layout\n\n      forceInstance.step();\n    } else {\n      // Remove prev injected forceLayout instance\n      graphSeries.forceLayout = null;\n    }\n  });\n}\n\nmodule.exports = _default;","var echarts = require(\"../../echarts\");\n\nvar _roamHelper = require(\"../../action/roamHelper\");\n\nvar updateCenterAndZoom = _roamHelper.updateCenterAndZoom;\nvar actionInfo = {\n  type: 'graphRoam',\n  event: 'graphRoam',\n  update: 'none'\n};\n/**\n * @payload\n * @property {string} name Series name\n * @property {number} [dx]\n * @property {number} [dy]\n * @property {number} [zoom]\n * @property {number} [originX]\n * @property {number} [originY]\n */\n\necharts.registerAction(actionInfo, function (payload, ecModel) {\n  ecModel.eachComponent({\n    mainType: 'series',\n    query: payload\n  }, function (seriesModel) {\n    var coordSys = seriesModel.coordinateSystem;\n    var res = updateCenterAndZoom(coordSys, payload);\n    seriesModel.setCenter && seriesModel.setCenter(res.center);\n    seriesModel.setZoom && seriesModel.setZoom(res.zoom);\n  });\n});\n/**\n * @payload\n * @property {number} [seriesIndex]\n * @property {string} [seriesId]\n * @property {string} [seriesName]\n * @property {number} [dataIndex]\n */\n\necharts.registerAction({\n  type: 'focusNodeAdjacency',\n  event: 'focusNodeAdjacency',\n  update: 'series.graph:focusNodeAdjacency'\n}, function () {});\n/**\n * @payload\n * @property {number} [seriesIndex]\n * @property {string} [seriesId]\n * @property {string} [seriesName]\n */\n\necharts.registerAction({\n  type: 'unfocusNodeAdjacency',\n  event: 'unfocusNodeAdjacency',\n  update: 'series.graph:unfocusNodeAdjacency'\n}, function () {});","var _util = require(\"zrender/lib/core/util\");\n\nvar each = _util.each;\n\nvar _simpleLayoutHelper = require(\"./simpleLayoutHelper\");\n\nvar simpleLayout = _simpleLayoutHelper.simpleLayout;\nvar simpleLayoutEdge = _simpleLayoutHelper.simpleLayoutEdge;\n\nfunction _default(ecModel, api) {\n  ecModel.eachSeriesByType('graph', function (seriesModel) {\n    var layout = seriesModel.get('layout');\n    var coordSys = seriesModel.coordinateSystem;\n\n    if (coordSys && coordSys.type !== 'view') {\n      var data = seriesModel.getData();\n      var dimensions = [];\n      each(coordSys.dimensions, function (coordDim) {\n        dimensions = dimensions.concat(data.mapDimension(coordDim, true));\n      });\n\n      for (var dataIndex = 0; dataIndex < data.count(); dataIndex++) {\n        var value = [];\n        var hasValue = false;\n\n        for (var i = 0; i < dimensions.length; i++) {\n          var val = data.get(dimensions[i], dataIndex);\n\n          if (!isNaN(val)) {\n            hasValue = true;\n          }\n\n          value.push(val);\n        }\n\n        if (hasValue) {\n          data.setItemLayout(dataIndex, coordSys.dataToPoint(value));\n        } else {\n          // Also {Array.<number>}, not undefined to avoid if...else... statement\n          data.setItemLayout(dataIndex, [NaN, NaN]);\n        }\n      }\n\n      simpleLayoutEdge(data.graph);\n    } else if (!layout || layout === 'none') {\n      simpleLayout(seriesModel);\n    }\n  });\n}\n\nmodule.exports = _default;","var vec2 = require(\"zrender/lib/core/vector\");\n\nfunction simpleLayout(seriesModel) {\n  var coordSys = seriesModel.coordinateSystem;\n\n  if (coordSys && coordSys.type !== 'view') {\n    return;\n  }\n\n  var graph = seriesModel.getGraph();\n  graph.eachNode(function (node) {\n    var model = node.getModel();\n    node.setLayout([+model.get('x'), +model.get('y')]);\n  });\n  simpleLayoutEdge(graph);\n}\n\nfunction simpleLayoutEdge(graph) {\n  graph.eachEdge(function (edge) {\n    var curveness = edge.getModel().get('lineStyle.curveness') || 0;\n    var p1 = vec2.clone(edge.node1.getLayout());\n    var p2 = vec2.clone(edge.node2.getLayout());\n    var points = [p1, p2];\n\n    if (+curveness) {\n      points.push([(p1[0] + p2[0]) / 2 - (p1[1] - p2[1]) * curveness, (p1[1] + p2[1]) / 2 - (p2[0] - p1[0]) * curveness]);\n    }\n\n    edge.setLayout(points);\n  });\n}\n\nexports.simpleLayout = simpleLayout;\nexports.simpleLayoutEdge = simpleLayoutEdge;","require(\"./heatmap/HeatmapSeries\");\n\nrequire(\"./heatmap/HeatmapView\");","var zrUtil = require(\"zrender/lib/core/util\");\n\n/**\n * @file defines echarts Heatmap Chart\n * @author Ovilia (me@zhangwenli.com)\n * Inspired by https://github.com/mourner/simpleheat\n *\n * @module\n */\nvar GRADIENT_LEVELS = 256;\n/**\n * Heatmap Chart\n *\n * @class\n */\n\nfunction Heatmap() {\n  var canvas = zrUtil.createCanvas();\n  this.canvas = canvas;\n  this.blurSize = 30;\n  this.pointSize = 20;\n  this.maxOpacity = 1;\n  this.minOpacity = 0;\n  this._gradientPixels = {};\n}\n\nHeatmap.prototype = {\n  /**\n   * Renders Heatmap and returns the rendered canvas\n   * @param {Array} data array of data, each has x, y, value\n   * @param {number} width canvas width\n   * @param {number} height canvas height\n   */\n  update: function (data, width, height, normalize, colorFunc, isInRange) {\n    var brush = this._getBrush();\n\n    var gradientInRange = this._getGradient(data, colorFunc, 'inRange');\n\n    var gradientOutOfRange = this._getGradient(data, colorFunc, 'outOfRange');\n\n    var r = this.pointSize + this.blurSize;\n    var canvas = this.canvas;\n    var ctx = canvas.getContext('2d');\n    var len = data.length;\n    canvas.width = width;\n    canvas.height = height;\n\n    for (var i = 0; i < len; ++i) {\n      var p = data[i];\n      var x = p[0];\n      var y = p[1];\n      var value = p[2]; // calculate alpha using value\n\n      var alpha = normalize(value); // draw with the circle brush with alpha\n\n      ctx.globalAlpha = alpha;\n      ctx.drawImage(brush, x - r, y - r);\n    }\n\n    if (!canvas.width || !canvas.height) {\n      // Avoid \"Uncaught DOMException: Failed to execute 'getImageData' on\n      // 'CanvasRenderingContext2D': The source height is 0.\"\n      return canvas;\n    } // colorize the canvas using alpha value and set with gradient\n\n\n    var imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);\n    var pixels = imageData.data;\n    var offset = 0;\n    var pixelLen = pixels.length;\n    var minOpacity = this.minOpacity;\n    var maxOpacity = this.maxOpacity;\n    var diffOpacity = maxOpacity - minOpacity;\n\n    while (offset < pixelLen) {\n      var alpha = pixels[offset + 3] / 256;\n      var gradientOffset = Math.floor(alpha * (GRADIENT_LEVELS - 1)) * 4; // Simple optimize to ignore the empty data\n\n      if (alpha > 0) {\n        var gradient = isInRange(alpha) ? gradientInRange : gradientOutOfRange; // Any alpha > 0 will be mapped to [minOpacity, maxOpacity]\n\n        alpha > 0 && (alpha = alpha * diffOpacity + minOpacity);\n        pixels[offset++] = gradient[gradientOffset];\n        pixels[offset++] = gradient[gradientOffset + 1];\n        pixels[offset++] = gradient[gradientOffset + 2];\n        pixels[offset++] = gradient[gradientOffset + 3] * alpha * 256;\n      } else {\n        offset += 4;\n      }\n    }\n\n    ctx.putImageData(imageData, 0, 0);\n    return canvas;\n  },\n\n  /**\n   * get canvas of a black circle brush used for canvas to draw later\n   * @private\n   * @returns {Object} circle brush canvas\n   */\n  _getBrush: function () {\n    var brushCanvas = this._brushCanvas || (this._brushCanvas = zrUtil.createCanvas()); // set brush size\n\n    var r = this.pointSize + this.blurSize;\n    var d = r * 2;\n    brushCanvas.width = d;\n    brushCanvas.height = d;\n    var ctx = brushCanvas.getContext('2d');\n    ctx.clearRect(0, 0, d, d); // in order to render shadow without the distinct circle,\n    // draw the distinct circle in an invisible place,\n    // and use shadowOffset to draw shadow in the center of the canvas\n\n    ctx.shadowOffsetX = d;\n    ctx.shadowBlur = this.blurSize; // draw the shadow in black, and use alpha and shadow blur to generate\n    // color in color map\n\n    ctx.shadowColor = '#000'; // draw circle in the left to the canvas\n\n    ctx.beginPath();\n    ctx.arc(-r, r, this.pointSize, 0, Math.PI * 2, true);\n    ctx.closePath();\n    ctx.fill();\n    return brushCanvas;\n  },\n\n  /**\n   * get gradient color map\n   * @private\n   */\n  _getGradient: function (data, colorFunc, state) {\n    var gradientPixels = this._gradientPixels;\n    var pixelsSingleState = gradientPixels[state] || (gradientPixels[state] = new Uint8ClampedArray(256 * 4));\n    var color = [0, 0, 0, 0];\n    var off = 0;\n\n    for (var i = 0; i < 256; i++) {\n      colorFunc[state](i / 255, true, color);\n      pixelsSingleState[off++] = color[0];\n      pixelsSingleState[off++] = color[1];\n      pixelsSingleState[off++] = color[2];\n      pixelsSingleState[off++] = color[3];\n    }\n\n    return pixelsSingleState;\n  }\n};\nvar _default = Heatmap;\nmodule.exports = _default;","var SeriesModel = require(\"../../model/Series\");\n\nvar createListFromArray = require(\"../helper/createListFromArray\");\n\nvar CoordinateSystem = require(\"../../CoordinateSystem\");\n\nvar _default = SeriesModel.extend({\n  type: 'series.heatmap',\n  getInitialData: function (option, ecModel) {\n    return createListFromArray(this.getSource(), this);\n  },\n  preventIncremental: function () {\n    var coordSysCreator = CoordinateSystem.get(this.get('coordinateSystem'));\n\n    if (coordSysCreator && coordSysCreator.dimensions) {\n      return coordSysCreator.dimensions[0] === 'lng' && coordSysCreator.dimensions[1] === 'lat';\n    }\n  },\n  defaultOption: {\n    // Cartesian2D or geo\n    coordinateSystem: 'cartesian2d',\n    zlevel: 0,\n    z: 2,\n    // Cartesian coordinate system\n    // xAxisIndex: 0,\n    // yAxisIndex: 0,\n    // Geo coordinate system\n    geoIndex: 0,\n    blurSize: 30,\n    pointSize: 20,\n    maxOpacity: 1,\n    minOpacity: 0\n  }\n});\n\nmodule.exports = _default;","var _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar echarts = require(\"../../echarts\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar HeatmapLayer = require(\"./HeatmapLayer\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nfunction getIsInPiecewiseRange(dataExtent, pieceList, selected) {\n  var dataSpan = dataExtent[1] - dataExtent[0];\n  pieceList = zrUtil.map(pieceList, function (piece) {\n    return {\n      interval: [(piece.interval[0] - dataExtent[0]) / dataSpan, (piece.interval[1] - dataExtent[0]) / dataSpan]\n    };\n  });\n  var len = pieceList.length;\n  var lastIndex = 0;\n  return function (val) {\n    // Try to find in the location of the last found\n    for (var i = lastIndex; i < len; i++) {\n      var interval = pieceList[i].interval;\n\n      if (interval[0] <= val && val <= interval[1]) {\n        lastIndex = i;\n        break;\n      }\n    }\n\n    if (i === len) {\n      // Not found, back interation\n      for (var i = lastIndex - 1; i >= 0; i--) {\n        var interval = pieceList[i].interval;\n\n        if (interval[0] <= val && val <= interval[1]) {\n          lastIndex = i;\n          break;\n        }\n      }\n    }\n\n    return i >= 0 && i < len && selected[i];\n  };\n}\n\nfunction getIsInContinuousRange(dataExtent, range) {\n  var dataSpan = dataExtent[1] - dataExtent[0];\n  range = [(range[0] - dataExtent[0]) / dataSpan, (range[1] - dataExtent[0]) / dataSpan];\n  return function (val) {\n    return val >= range[0] && val <= range[1];\n  };\n}\n\nfunction isGeoCoordSys(coordSys) {\n  var dimensions = coordSys.dimensions; // Not use coorSys.type === 'geo' because coordSys maybe extended\n\n  return dimensions[0] === 'lng' && dimensions[1] === 'lat';\n}\n\nvar _default = echarts.extendChartView({\n  type: 'heatmap',\n  render: function (seriesModel, ecModel, api) {\n    var visualMapOfThisSeries;\n    ecModel.eachComponent('visualMap', function (visualMap) {\n      visualMap.eachTargetSeries(function (targetSeries) {\n        if (targetSeries === seriesModel) {\n          visualMapOfThisSeries = visualMap;\n        }\n      });\n    });\n    this.group.removeAll();\n    this._incrementalDisplayable = null;\n    var coordSys = seriesModel.coordinateSystem;\n\n    if (coordSys.type === 'cartesian2d' || coordSys.type === 'calendar') {\n      this._renderOnCartesianAndCalendar(seriesModel, api, 0, seriesModel.getData().count());\n    } else if (isGeoCoordSys(coordSys)) {\n      this._renderOnGeo(coordSys, seriesModel, visualMapOfThisSeries, api);\n    }\n  },\n  incrementalPrepareRender: function (seriesModel, ecModel, api) {\n    this.group.removeAll();\n  },\n  incrementalRender: function (params, seriesModel, ecModel, api) {\n    var coordSys = seriesModel.coordinateSystem;\n\n    if (coordSys) {\n      this._renderOnCartesianAndCalendar(seriesModel, api, params.start, params.end, true);\n    }\n  },\n  _renderOnCartesianAndCalendar: function (seriesModel, api, start, end, incremental) {\n    var coordSys = seriesModel.coordinateSystem;\n    var width;\n    var height;\n\n    if (coordSys.type === 'cartesian2d') {\n      var xAxis = coordSys.getAxis('x');\n      var yAxis = coordSys.getAxis('y');\n      width = xAxis.getBandWidth();\n      height = yAxis.getBandWidth();\n    }\n\n    var group = this.group;\n    var data = seriesModel.getData();\n    var itemStyleQuery = 'itemStyle';\n    var hoverItemStyleQuery = 'emphasis.itemStyle';\n    var labelQuery = 'label';\n    var hoverLabelQuery = 'emphasis.label';\n    var style = seriesModel.getModel(itemStyleQuery).getItemStyle(['color']);\n    var hoverStl = seriesModel.getModel(hoverItemStyleQuery).getItemStyle();\n    var labelModel = seriesModel.getModel(labelQuery);\n    var hoverLabelModel = seriesModel.getModel(hoverLabelQuery);\n    var coordSysType = coordSys.type;\n    var dataDims = coordSysType === 'cartesian2d' ? [data.mapDimension('x'), data.mapDimension('y'), data.mapDimension('value')] : [data.mapDimension('time'), data.mapDimension('value')];\n\n    for (var idx = start; idx < end; idx++) {\n      var rect;\n\n      if (coordSysType === 'cartesian2d') {\n        // Ignore empty data\n        if (isNaN(data.get(dataDims[2], idx))) {\n          continue;\n        }\n\n        var point = coordSys.dataToPoint([data.get(dataDims[0], idx), data.get(dataDims[1], idx)]);\n        rect = new graphic.Rect({\n          shape: {\n            x: point[0] - width / 2,\n            y: point[1] - height / 2,\n            width: width,\n            height: height\n          },\n          style: {\n            fill: data.getItemVisual(idx, 'color'),\n            opacity: data.getItemVisual(idx, 'opacity')\n          }\n        });\n      } else {\n        // Ignore empty data\n        if (isNaN(data.get(dataDims[1], idx))) {\n          continue;\n        }\n\n        rect = new graphic.Rect({\n          z2: 1,\n          shape: coordSys.dataToRect([data.get(dataDims[0], idx)]).contentShape,\n          style: {\n            fill: data.getItemVisual(idx, 'color'),\n            opacity: data.getItemVisual(idx, 'opacity')\n          }\n        });\n      }\n\n      var itemModel = data.getItemModel(idx); // Optimization for large datset\n\n      if (data.hasItemOption) {\n        style = itemModel.getModel(itemStyleQuery).getItemStyle(['color']);\n        hoverStl = itemModel.getModel(hoverItemStyleQuery).getItemStyle();\n        labelModel = itemModel.getModel(labelQuery);\n        hoverLabelModel = itemModel.getModel(hoverLabelQuery);\n      }\n\n      var rawValue = seriesModel.getRawValue(idx);\n      var defaultText = '-';\n\n      if (rawValue && rawValue[2] != null) {\n        defaultText = rawValue[2];\n      }\n\n      graphic.setLabelStyle(style, hoverStl, labelModel, hoverLabelModel, {\n        labelFetcher: seriesModel,\n        labelDataIndex: idx,\n        defaultText: defaultText,\n        isRectText: true\n      });\n      rect.setStyle(style);\n      graphic.setHoverStyle(rect, data.hasItemOption ? hoverStl : zrUtil.extend({}, hoverStl));\n      rect.incremental = incremental; // PENDING\n\n      if (incremental) {\n        // Rect must use hover layer if it's incremental.\n        rect.useHoverLayer = true;\n      }\n\n      group.add(rect);\n      data.setItemGraphicEl(idx, rect);\n    }\n  },\n  _renderOnGeo: function (geo, seriesModel, visualMapModel, api) {\n    var inRangeVisuals = visualMapModel.targetVisuals.inRange;\n    var outOfRangeVisuals = visualMapModel.targetVisuals.outOfRange; // if (!visualMapping) {\n    //     throw new Error('Data range must have color visuals');\n    // }\n\n    var data = seriesModel.getData();\n    var hmLayer = this._hmLayer || this._hmLayer || new HeatmapLayer();\n    hmLayer.blurSize = seriesModel.get('blurSize');\n    hmLayer.pointSize = seriesModel.get('pointSize');\n    hmLayer.minOpacity = seriesModel.get('minOpacity');\n    hmLayer.maxOpacity = seriesModel.get('maxOpacity');\n    var rect = geo.getViewRect().clone();\n    var roamTransform = geo.getRoamTransform();\n    rect.applyTransform(roamTransform); // Clamp on viewport\n\n    var x = Math.max(rect.x, 0);\n    var y = Math.max(rect.y, 0);\n    var x2 = Math.min(rect.width + rect.x, api.getWidth());\n    var y2 = Math.min(rect.height + rect.y, api.getHeight());\n    var width = x2 - x;\n    var height = y2 - y;\n    var dims = [data.mapDimension('lng'), data.mapDimension('lat'), data.mapDimension('value')];\n    var points = data.mapArray(dims, function (lng, lat, value) {\n      var pt = geo.dataToPoint([lng, lat]);\n      pt[0] -= x;\n      pt[1] -= y;\n      pt.push(value);\n      return pt;\n    });\n    var dataExtent = visualMapModel.getExtent();\n    var isInRange = visualMapModel.type === 'visualMap.continuous' ? getIsInContinuousRange(dataExtent, visualMapModel.option.range) : getIsInPiecewiseRange(dataExtent, visualMapModel.getPieceList(), visualMapModel.option.selected);\n    hmLayer.update(points, width, height, inRangeVisuals.color.getNormalizer(), {\n      inRange: inRangeVisuals.color.getColorMapper(),\n      outOfRange: outOfRangeVisuals.color.getColorMapper()\n    }, isInRange);\n    var img = new graphic.Image({\n      style: {\n        width: width,\n        height: height,\n        x: x,\n        y: y,\n        image: hmLayer.canvas\n      },\n      silent: true\n    });\n    this.group.add(img);\n  },\n  dispose: function () {}\n});\n\nmodule.exports = _default;","var graphic = require(\"../../util/graphic\");\n\nvar Line = require(\"./Line\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar _symbol = require(\"../../util/symbol\");\n\nvar createSymbol = _symbol.createSymbol;\n\nvar vec2 = require(\"zrender/lib/core/vector\");\n\nvar curveUtil = require(\"zrender/lib/core/curve\");\n\n/**\n * Provide effect for line\n * @module echarts/chart/helper/EffectLine\n */\n\n/**\n * @constructor\n * @extends {module:zrender/graphic/Group}\n * @alias {module:echarts/chart/helper/Line}\n */\nfunction EffectLine(lineData, idx, seriesScope) {\n  graphic.Group.call(this);\n  this.add(this.createLine(lineData, idx, seriesScope));\n\n  this._updateEffectSymbol(lineData, idx);\n}\n\nvar effectLineProto = EffectLine.prototype;\n\neffectLineProto.createLine = function (lineData, idx, seriesScope) {\n  return new Line(lineData, idx, seriesScope);\n};\n\neffectLineProto._updateEffectSymbol = function (lineData, idx) {\n  var itemModel = lineData.getItemModel(idx);\n  var effectModel = itemModel.getModel('effect');\n  var size = effectModel.get('symbolSize');\n  var symbolType = effectModel.get('symbol');\n\n  if (!zrUtil.isArray(size)) {\n    size = [size, size];\n  }\n\n  var color = effectModel.get('color') || lineData.getItemVisual(idx, 'color');\n  var symbol = this.childAt(1);\n\n  if (this._symbolType !== symbolType) {\n    // Remove previous\n    this.remove(symbol);\n    symbol = createSymbol(symbolType, -0.5, -0.5, 1, 1, color);\n    symbol.z2 = 100;\n    symbol.culling = true;\n    this.add(symbol);\n  } // Symbol may be removed if loop is false\n\n\n  if (!symbol) {\n    return;\n  } // Shadow color is same with color in default\n\n\n  symbol.setStyle('shadowColor', color);\n  symbol.setStyle(effectModel.getItemStyle(['color']));\n  symbol.attr('scale', size);\n  symbol.setColor(color);\n  symbol.attr('scale', size);\n  this._symbolType = symbolType;\n\n  this._updateEffectAnimation(lineData, effectModel, idx);\n};\n\neffectLineProto._updateEffectAnimation = function (lineData, effectModel, idx) {\n  var symbol = this.childAt(1);\n\n  if (!symbol) {\n    return;\n  }\n\n  var self = this;\n  var points = lineData.getItemLayout(idx);\n  var period = effectModel.get('period') * 1000;\n  var loop = effectModel.get('loop');\n  var constantSpeed = effectModel.get('constantSpeed');\n  var delayExpr = zrUtil.retrieve(effectModel.get('delay'), function (idx) {\n    return idx / lineData.count() * period / 3;\n  });\n  var isDelayFunc = typeof delayExpr === 'function'; // Ignore when updating\n\n  symbol.ignore = true;\n  this.updateAnimationPoints(symbol, points);\n\n  if (constantSpeed > 0) {\n    period = this.getLineLength(symbol) / constantSpeed * 1000;\n  }\n\n  if (period !== this._period || loop !== this._loop) {\n    symbol.stopAnimation();\n    var delay = delayExpr;\n\n    if (isDelayFunc) {\n      delay = delayExpr(idx);\n    }\n\n    if (symbol.__t > 0) {\n      delay = -period * symbol.__t;\n    }\n\n    symbol.__t = 0;\n    var animator = symbol.animate('', loop).when(period, {\n      __t: 1\n    }).delay(delay).during(function () {\n      self.updateSymbolPosition(symbol);\n    });\n\n    if (!loop) {\n      animator.done(function () {\n        self.remove(symbol);\n      });\n    }\n\n    animator.start();\n  }\n\n  this._period = period;\n  this._loop = loop;\n};\n\neffectLineProto.getLineLength = function (symbol) {\n  // Not so accurate\n  return vec2.dist(symbol.__p1, symbol.__cp1) + vec2.dist(symbol.__cp1, symbol.__p2);\n};\n\neffectLineProto.updateAnimationPoints = function (symbol, points) {\n  symbol.__p1 = points[0];\n  symbol.__p2 = points[1];\n  symbol.__cp1 = points[2] || [(points[0][0] + points[1][0]) / 2, (points[0][1] + points[1][1]) / 2];\n};\n\neffectLineProto.updateData = function (lineData, idx, seriesScope) {\n  this.childAt(0).updateData(lineData, idx, seriesScope);\n\n  this._updateEffectSymbol(lineData, idx);\n};\n\neffectLineProto.updateSymbolPosition = function (symbol) {\n  var p1 = symbol.__p1;\n  var p2 = symbol.__p2;\n  var cp1 = symbol.__cp1;\n  var t = symbol.__t;\n  var pos = symbol.position;\n  var quadraticAt = curveUtil.quadraticAt;\n  var quadraticDerivativeAt = curveUtil.quadraticDerivativeAt;\n  pos[0] = quadraticAt(p1[0], cp1[0], p2[0], t);\n  pos[1] = quadraticAt(p1[1], cp1[1], p2[1], t); // Tangent\n\n  var tx = quadraticDerivativeAt(p1[0], cp1[0], p2[0], t);\n  var ty = quadraticDerivativeAt(p1[1], cp1[1], p2[1], t);\n  symbol.rotation = -Math.atan2(ty, tx) - Math.PI / 2;\n  symbol.ignore = false;\n};\n\neffectLineProto.updateLayout = function (lineData, idx) {\n  this.childAt(0).updateLayout(lineData, idx);\n  var effectModel = lineData.getItemModel(idx).getModel('effect');\n\n  this._updateEffectAnimation(lineData, effectModel, idx);\n};\n\nzrUtil.inherits(EffectLine, graphic.Group);\nvar _default = EffectLine;\nmodule.exports = _default;","var Polyline = require(\"./Polyline\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar EffectLine = require(\"./EffectLine\");\n\nvar vec2 = require(\"zrender/lib/core/vector\");\n\n/**\n * Provide effect for line\n * @module echarts/chart/helper/EffectLine\n */\n\n/**\n * @constructor\n * @extends {module:echarts/chart/helper/EffectLine}\n * @alias {module:echarts/chart/helper/Polyline}\n */\nfunction EffectPolyline(lineData, idx, seriesScope) {\n  EffectLine.call(this, lineData, idx, seriesScope);\n  this._lastFrame = 0;\n  this._lastFramePercent = 0;\n}\n\nvar effectPolylineProto = EffectPolyline.prototype; // Overwrite\n\neffectPolylineProto.createLine = function (lineData, idx, seriesScope) {\n  return new Polyline(lineData, idx, seriesScope);\n}; // Overwrite\n\n\neffectPolylineProto.updateAnimationPoints = function (symbol, points) {\n  this._points = points;\n  var accLenArr = [0];\n  var len = 0;\n\n  for (var i = 1; i < points.length; i++) {\n    var p1 = points[i - 1];\n    var p2 = points[i];\n    len += vec2.dist(p1, p2);\n    accLenArr.push(len);\n  }\n\n  if (len === 0) {\n    return;\n  }\n\n  for (var i = 0; i < accLenArr.length; i++) {\n    accLenArr[i] /= len;\n  }\n\n  this._offsets = accLenArr;\n  this._length = len;\n}; // Overwrite\n\n\neffectPolylineProto.getLineLength = function (symbol) {\n  return this._length;\n}; // Overwrite\n\n\neffectPolylineProto.updateSymbolPosition = function (symbol) {\n  var t = symbol.__t;\n  var points = this._points;\n  var offsets = this._offsets;\n  var len = points.length;\n\n  if (!offsets) {\n    // Has length 0\n    return;\n  }\n\n  var lastFrame = this._lastFrame;\n  var frame;\n\n  if (t < this._lastFramePercent) {\n    // Start from the next frame\n    // PENDING start from lastFrame ?\n    var start = Math.min(lastFrame + 1, len - 1);\n\n    for (frame = start; frame >= 0; frame--) {\n      if (offsets[frame] <= t) {\n        break;\n      }\n    } // PENDING really need to do this ?\n\n\n    frame = Math.min(frame, len - 2);\n  } else {\n    for (var frame = lastFrame; frame < len; frame++) {\n      if (offsets[frame] > t) {\n        break;\n      }\n    }\n\n    frame = Math.min(frame - 1, len - 2);\n  }\n\n  vec2.lerp(symbol.position, points[frame], points[frame + 1], (t - offsets[frame]) / (offsets[frame + 1] - offsets[frame]));\n  var tx = points[frame + 1][0] - points[frame][0];\n  var ty = points[frame + 1][1] - points[frame][1];\n  symbol.rotation = -Math.atan2(ty, tx) - Math.PI / 2;\n  this._lastFrame = frame;\n  this._lastFramePercent = t;\n  symbol.ignore = false;\n};\n\nzrUtil.inherits(EffectPolyline, EffectLine);\nvar _default = EffectPolyline;\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar _symbol = require(\"../../util/symbol\");\n\nvar createSymbol = _symbol.createSymbol;\n\nvar _graphic = require(\"../../util/graphic\");\n\nvar Group = _graphic.Group;\n\nvar _number = require(\"../../util/number\");\n\nvar parsePercent = _number.parsePercent;\n\nvar SymbolClz = require(\"./Symbol\");\n\n/**\n * Symbol with ripple effect\n * @module echarts/chart/helper/EffectSymbol\n */\nvar EFFECT_RIPPLE_NUMBER = 3;\n\nfunction normalizeSymbolSize(symbolSize) {\n  if (!zrUtil.isArray(symbolSize)) {\n    symbolSize = [+symbolSize, +symbolSize];\n  }\n\n  return symbolSize;\n}\n\nfunction updateRipplePath(rippleGroup, effectCfg) {\n  rippleGroup.eachChild(function (ripplePath) {\n    ripplePath.attr({\n      z: effectCfg.z,\n      zlevel: effectCfg.zlevel,\n      style: {\n        stroke: effectCfg.brushType === 'stroke' ? effectCfg.color : null,\n        fill: effectCfg.brushType === 'fill' ? effectCfg.color : null\n      }\n    });\n  });\n}\n/**\n * @constructor\n * @param {module:echarts/data/List} data\n * @param {number} idx\n * @extends {module:zrender/graphic/Group}\n */\n\n\nfunction EffectSymbol(data, idx) {\n  Group.call(this);\n  var symbol = new SymbolClz(data, idx);\n  var rippleGroup = new Group();\n  this.add(symbol);\n  this.add(rippleGroup);\n\n  rippleGroup.beforeUpdate = function () {\n    this.attr(symbol.getScale());\n  };\n\n  this.updateData(data, idx);\n}\n\nvar effectSymbolProto = EffectSymbol.prototype;\n\neffectSymbolProto.stopEffectAnimation = function () {\n  this.childAt(1).removeAll();\n};\n\neffectSymbolProto.startEffectAnimation = function (effectCfg) {\n  var symbolType = effectCfg.symbolType;\n  var color = effectCfg.color;\n  var rippleGroup = this.childAt(1);\n\n  for (var i = 0; i < EFFECT_RIPPLE_NUMBER; i++) {\n    // var ripplePath = createSymbol(\n    //     symbolType, -0.5, -0.5, 1, 1, color\n    // );\n    // If width/height are set too small (e.g., set to 1) on ios10\n    // and macOS Sierra, a circle stroke become a rect, no matter what\n    // the scale is set. So we set width/height as 2. See #4136.\n    var ripplePath = createSymbol(symbolType, -1, -1, 2, 2, color);\n    ripplePath.attr({\n      style: {\n        strokeNoScale: true\n      },\n      z2: 99,\n      silent: true,\n      scale: [0.5, 0.5]\n    });\n    var delay = -i / EFFECT_RIPPLE_NUMBER * effectCfg.period + effectCfg.effectOffset; // TODO Configurable effectCfg.period\n\n    ripplePath.animate('', true).when(effectCfg.period, {\n      scale: [effectCfg.rippleScale / 2, effectCfg.rippleScale / 2]\n    }).delay(delay).start();\n    ripplePath.animateStyle(true).when(effectCfg.period, {\n      opacity: 0\n    }).delay(delay).start();\n    rippleGroup.add(ripplePath);\n  }\n\n  updateRipplePath(rippleGroup, effectCfg);\n};\n/**\n * Update effect symbol\n */\n\n\neffectSymbolProto.updateEffectAnimation = function (effectCfg) {\n  var oldEffectCfg = this._effectCfg;\n  var rippleGroup = this.childAt(1); // Must reinitialize effect if following configuration changed\n\n  var DIFFICULT_PROPS = ['symbolType', 'period', 'rippleScale'];\n\n  for (var i = 0; i < DIFFICULT_PROPS.length; i++) {\n    var propName = DIFFICULT_PROPS[i];\n\n    if (oldEffectCfg[propName] !== effectCfg[propName]) {\n      this.stopEffectAnimation();\n      this.startEffectAnimation(effectCfg);\n      return;\n    }\n  }\n\n  updateRipplePath(rippleGroup, effectCfg);\n};\n/**\n * Highlight symbol\n */\n\n\neffectSymbolProto.highlight = function () {\n  this.trigger('emphasis');\n};\n/**\n * Downplay symbol\n */\n\n\neffectSymbolProto.downplay = function () {\n  this.trigger('normal');\n};\n/**\n * Update symbol properties\n * @param  {module:echarts/data/List} data\n * @param  {number} idx\n */\n\n\neffectSymbolProto.updateData = function (data, idx) {\n  var seriesModel = data.hostModel;\n  this.childAt(0).updateData(data, idx);\n  var rippleGroup = this.childAt(1);\n  var itemModel = data.getItemModel(idx);\n  var symbolType = data.getItemVisual(idx, 'symbol');\n  var symbolSize = normalizeSymbolSize(data.getItemVisual(idx, 'symbolSize'));\n  var color = data.getItemVisual(idx, 'color');\n  rippleGroup.attr('scale', symbolSize);\n  rippleGroup.traverse(function (ripplePath) {\n    ripplePath.attr({\n      fill: color\n    });\n  });\n  var symbolOffset = itemModel.getShallow('symbolOffset');\n\n  if (symbolOffset) {\n    var pos = rippleGroup.position;\n    pos[0] = parsePercent(symbolOffset[0], symbolSize[0]);\n    pos[1] = parsePercent(symbolOffset[1], symbolSize[1]);\n  }\n\n  rippleGroup.rotation = (itemModel.getShallow('symbolRotate') || 0) * Math.PI / 180 || 0;\n  var effectCfg = {};\n  effectCfg.showEffectOn = seriesModel.get('showEffectOn');\n  effectCfg.rippleScale = itemModel.get('rippleEffect.scale');\n  effectCfg.brushType = itemModel.get('rippleEffect.brushType');\n  effectCfg.period = itemModel.get('rippleEffect.period') * 1000;\n  effectCfg.effectOffset = idx / data.count();\n  effectCfg.z = itemModel.getShallow('z') || 0;\n  effectCfg.zlevel = itemModel.getShallow('zlevel') || 0;\n  effectCfg.symbolType = symbolType;\n  effectCfg.color = color;\n  this.off('mouseover').off('mouseout').off('emphasis').off('normal');\n\n  if (effectCfg.showEffectOn === 'render') {\n    this._effectCfg ? this.updateEffectAnimation(effectCfg) : this.startEffectAnimation(effectCfg);\n    this._effectCfg = effectCfg;\n  } else {\n    // Not keep old effect config\n    this._effectCfg = null;\n    this.stopEffectAnimation();\n    var symbol = this.childAt(0);\n\n    var onEmphasis = function () {\n      symbol.highlight();\n\n      if (effectCfg.showEffectOn !== 'render') {\n        this.startEffectAnimation(effectCfg);\n      }\n    };\n\n    var onNormal = function () {\n      symbol.downplay();\n\n      if (effectCfg.showEffectOn !== 'render') {\n        this.stopEffectAnimation();\n      }\n    };\n\n    this.on('mouseover', onEmphasis, this).on('mouseout', onNormal, this).on('emphasis', onEmphasis, this).on('normal', onNormal, this);\n  }\n\n  this._effectCfg = effectCfg;\n};\n\neffectSymbolProto.fadeOut = function (cb) {\n  this.off('mouseover').off('mouseout').off('emphasis').off('normal');\n  cb && cb();\n};\n\nzrUtil.inherits(EffectSymbol, Group);\nvar _default = EffectSymbol;\nmodule.exports = _default;","var graphic = require(\"../../util/graphic\");\n\nvar IncrementalDisplayable = require(\"zrender/lib/graphic/IncrementalDisplayable\");\n\nvar lineContain = require(\"zrender/lib/contain/line\");\n\nvar quadraticContain = require(\"zrender/lib/contain/quadratic\");\n\n// TODO Batch by color\nvar LargeLineShape = graphic.extendShape({\n  shape: {\n    polyline: false,\n    curveness: 0,\n    segs: []\n  },\n  buildPath: function (path, shape) {\n    var segs = shape.segs;\n    var curveness = shape.curveness;\n\n    if (shape.polyline) {\n      for (var i = 0; i < segs.length;) {\n        var count = segs[i++];\n\n        if (count > 0) {\n          path.moveTo(segs[i++], segs[i++]);\n\n          for (var k = 1; k < count; k++) {\n            path.lineTo(segs[i++], segs[i++]);\n          }\n        }\n      }\n    } else {\n      for (var i = 0; i < segs.length;) {\n        var x0 = segs[i++];\n        var y0 = segs[i++];\n        var x1 = segs[i++];\n        var y1 = segs[i++];\n        path.moveTo(x0, y0);\n\n        if (curveness > 0) {\n          var x2 = (x0 + x1) / 2 - (y0 - y1) * curveness;\n          var y2 = (y0 + y1) / 2 - (x1 - x0) * curveness;\n          path.quadraticCurveTo(x2, y2, x1, y1);\n        } else {\n          path.lineTo(x1, y1);\n        }\n      }\n    }\n  },\n  findDataIndex: function (x, y) {\n    var shape = this.shape;\n    var segs = shape.segs;\n    var curveness = shape.curveness;\n\n    if (shape.polyline) {\n      var dataIndex = 0;\n\n      for (var i = 0; i < segs.length;) {\n        var count = segs[i++];\n\n        if (count > 0) {\n          var x0 = segs[i++];\n          var y0 = segs[i++];\n\n          for (var k = 1; k < count; k++) {\n            var x1 = segs[i++];\n            var y1 = segs[i++];\n\n            if (lineContain.containStroke(x0, y0, x1, y1)) {\n              return dataIndex;\n            }\n          }\n        }\n\n        dataIndex++;\n      }\n    } else {\n      var dataIndex = 0;\n\n      for (var i = 0; i < segs.length;) {\n        var x0 = segs[i++];\n        var y0 = segs[i++];\n        var x1 = segs[i++];\n        var y1 = segs[i++];\n\n        if (curveness > 0) {\n          var x2 = (x0 + x1) / 2 - (y0 - y1) * curveness;\n          var y2 = (y0 + y1) / 2 - (x1 - x0) * curveness;\n\n          if (quadraticContain.containStroke(x0, y0, x2, y2, x1, y1)) {\n            return dataIndex;\n          }\n        } else {\n          if (lineContain.containStroke(x0, y0, x1, y1)) {\n            return dataIndex;\n          }\n        }\n\n        dataIndex++;\n      }\n    }\n\n    return -1;\n  }\n});\n\nfunction LargeLineDraw() {\n  this.group = new graphic.Group();\n}\n\nvar largeLineProto = LargeLineDraw.prototype;\n\nlargeLineProto.isPersistent = function () {\n  return !this._incremental;\n};\n/**\n * Update symbols draw by new data\n * @param {module:echarts/data/List} data\n */\n\n\nlargeLineProto.updateData = function (data) {\n  this.group.removeAll();\n  var lineEl = new LargeLineShape({\n    rectHover: true,\n    cursor: 'default'\n  });\n  lineEl.setShape({\n    segs: data.getLayout('linesPoints')\n  });\n\n  this._setCommon(lineEl, data); // Add back\n\n\n  this.group.add(lineEl);\n  this._incremental = null;\n};\n/**\n * @override\n */\n\n\nlargeLineProto.incrementalPrepareUpdate = function (data) {\n  this.group.removeAll();\n\n  this._clearIncremental();\n\n  if (data.count() > 5e5) {\n    if (!this._incremental) {\n      this._incremental = new IncrementalDisplayable({\n        silent: true\n      });\n    }\n\n    this.group.add(this._incremental);\n  } else {\n    this._incremental = null;\n  }\n};\n/**\n * @override\n */\n\n\nlargeLineProto.incrementalUpdate = function (taskParams, data) {\n  var lineEl = new LargeLineShape();\n  lineEl.setShape({\n    segs: data.getLayout('linesPoints')\n  });\n\n  this._setCommon(lineEl, data, !!this._incremental);\n\n  if (!this._incremental) {\n    lineEl.rectHover = true;\n    lineEl.cursor = 'default';\n    lineEl.__startIndex = taskParams.start;\n    this.group.add(lineEl);\n  } else {\n    this._incremental.addDisplayable(lineEl, true);\n  }\n};\n/**\n * @override\n */\n\n\nlargeLineProto.remove = function () {\n  this._clearIncremental();\n\n  this._incremental = null;\n  this.group.removeAll();\n};\n\nlargeLineProto._setCommon = function (lineEl, data, isIncremental) {\n  var hostModel = data.hostModel;\n  lineEl.setShape({\n    polyline: hostModel.get('polyline'),\n    curveness: hostModel.get('lineStyle.curveness')\n  });\n  lineEl.useStyle(hostModel.getModel('lineStyle').getLineStyle());\n  lineEl.style.strokeNoScale = true;\n  var visualColor = data.getVisual('color');\n\n  if (visualColor) {\n    lineEl.setStyle('stroke', visualColor);\n  }\n\n  lineEl.setStyle('fill');\n\n  if (!isIncremental) {\n    // Enable tooltip\n    // PENDING May have performance issue when path is extremely large\n    lineEl.seriesIndex = hostModel.seriesIndex;\n    lineEl.on('mousemove', function (e) {\n      lineEl.dataIndex = null;\n      var dataIndex = lineEl.findDataIndex(e.offsetX, e.offsetY);\n\n      if (dataIndex > 0) {\n        // Provide dataIndex for tooltip\n        lineEl.dataIndex = dataIndex + lineEl.__startIndex;\n      }\n    });\n  }\n};\n\nlargeLineProto._clearIncremental = function () {\n  var incremental = this._incremental;\n\n  if (incremental) {\n    incremental.clearDisplaybles();\n  }\n};\n\nvar _default = LargeLineDraw;\nmodule.exports = _default;","var graphic = require(\"../../util/graphic\");\n\nvar _symbol = require(\"../../util/symbol\");\n\nvar createSymbol = _symbol.createSymbol;\n\nvar IncrementalDisplayable = require(\"zrender/lib/graphic/IncrementalDisplayable\");\n\n// TODO Batch by color\nvar BOOST_SIZE_THRESHOLD = 4;\nvar LargeSymbolPath = graphic.extendShape({\n  shape: {\n    points: null\n  },\n  symbolProxy: null,\n  buildPath: function (path, shape) {\n    var points = shape.points;\n    var size = shape.size;\n    var symbolProxy = this.symbolProxy;\n    var symbolProxyShape = symbolProxy.shape;\n    var ctx = path.getContext ? path.getContext() : path;\n    var canBoost = ctx && size[0] < BOOST_SIZE_THRESHOLD; // Do draw in afterBrush.\n\n    if (canBoost) {\n      return;\n    }\n\n    for (var i = 0; i < points.length;) {\n      var x = points[i++];\n      var y = points[i++];\n\n      if (isNaN(x) || isNaN(y)) {\n        continue;\n      }\n\n      symbolProxyShape.x = x - size[0] / 2;\n      symbolProxyShape.y = y - size[1] / 2;\n      symbolProxyShape.width = size[0];\n      symbolProxyShape.height = size[1];\n      symbolProxy.buildPath(path, symbolProxyShape, true);\n    }\n  },\n  afterBrush: function (ctx) {\n    var shape = this.shape;\n    var points = shape.points;\n    var size = shape.size;\n    var canBoost = size[0] < BOOST_SIZE_THRESHOLD;\n\n    if (!canBoost) {\n      return;\n    }\n\n    this.setTransform(ctx); // PENDING If style or other canvas status changed?\n\n    for (var i = 0; i < points.length;) {\n      var x = points[i++];\n      var y = points[i++];\n\n      if (isNaN(x) || isNaN(y)) {\n        continue;\n      } // fillRect is faster than building a rect path and draw.\n      // And it support light globalCompositeOperation.\n\n\n      ctx.fillRect(x - size[0] / 2, y - size[1] / 2, size[0], size[1]);\n    }\n\n    this.restoreTransform(ctx);\n  },\n  findDataIndex: function (x, y) {\n    // TODO ???\n    // Consider transform\n    var shape = this.shape;\n    var points = shape.points;\n    var size = shape.size;\n    var w = Math.max(size[0], 4);\n    var h = Math.max(size[1], 4); // Not consider transform\n    // Treat each element as a rect\n    // top down traverse\n\n    for (var idx = points.length / 2 - 1; idx >= 0; idx--) {\n      var i = idx * 2;\n      var x0 = points[i] - w / 2;\n      var y0 = points[i + 1] - h / 2;\n\n      if (x >= x0 && y >= y0 && x <= x0 + w && y <= y0 + h) {\n        return idx;\n      }\n    }\n\n    return -1;\n  }\n});\n\nfunction LargeSymbolDraw() {\n  this.group = new graphic.Group();\n}\n\nvar largeSymbolProto = LargeSymbolDraw.prototype;\n\nlargeSymbolProto.isPersistent = function () {\n  return !this._incremental;\n};\n/**\n * Update symbols draw by new data\n * @param {module:echarts/data/List} data\n */\n\n\nlargeSymbolProto.updateData = function (data) {\n  this.group.removeAll();\n  var symbolEl = new LargeSymbolPath({\n    rectHover: true,\n    cursor: 'default'\n  });\n  symbolEl.setShape({\n    points: data.getLayout('symbolPoints')\n  });\n\n  this._setCommon(symbolEl, data);\n\n  this.group.add(symbolEl);\n  this._incremental = null;\n};\n\nlargeSymbolProto.updateLayout = function (data) {\n  if (this._incremental) {\n    return;\n  }\n\n  var points = data.getLayout('symbolPoints');\n  this.group.eachChild(function (child) {\n    if (child.startIndex != null) {\n      var len = (child.endIndex - child.startIndex) * 2;\n      var byteOffset = child.startIndex * 4 * 2;\n      points = new Float32Array(points.buffer, byteOffset, len);\n    }\n\n    child.setShape('points', points);\n  });\n};\n\nlargeSymbolProto.incrementalPrepareUpdate = function (data) {\n  this.group.removeAll();\n\n  this._clearIncremental(); // Only use incremental displayables when data amount is larger than 2 million.\n  // PENDING Incremental data?\n\n\n  if (data.count() > 2e6) {\n    if (!this._incremental) {\n      this._incremental = new IncrementalDisplayable({\n        silent: true\n      });\n    }\n\n    this.group.add(this._incremental);\n  } else {\n    this._incremental = null;\n  }\n};\n\nlargeSymbolProto.incrementalUpdate = function (taskParams, data) {\n  var symbolEl;\n\n  if (this._incremental) {\n    symbolEl = new LargeSymbolPath();\n\n    this._incremental.addDisplayable(symbolEl, true);\n  } else {\n    symbolEl = new LargeSymbolPath({\n      rectHover: true,\n      cursor: 'default',\n      startIndex: taskParams.start,\n      endIndex: taskParams.end\n    });\n    symbolEl.incremental = true;\n    this.group.add(symbolEl);\n  }\n\n  symbolEl.setShape({\n    points: data.getLayout('symbolPoints')\n  });\n\n  this._setCommon(symbolEl, data, !!this._incremental);\n};\n\nlargeSymbolProto._setCommon = function (symbolEl, data, isIncremental) {\n  var hostModel = data.hostModel; // TODO\n  // if (data.hasItemVisual.symbolSize) {\n  //     // TODO typed array?\n  //     symbolEl.setShape('sizes', data.mapArray(\n  //         function (idx) {\n  //             var size = data.getItemVisual(idx, 'symbolSize');\n  //             return (size instanceof Array) ? size : [size, size];\n  //         }\n  //     ));\n  // }\n  // else {\n\n  var size = data.getVisual('symbolSize');\n  symbolEl.setShape('size', size instanceof Array ? size : [size, size]); // }\n  // Create symbolProxy to build path for each data\n\n  symbolEl.symbolProxy = createSymbol(data.getVisual('symbol'), 0, 0, 0, 0); // Use symbolProxy setColor method\n\n  symbolEl.setColor = symbolEl.symbolProxy.setColor;\n  var extrudeShadow = symbolEl.shape.size[0] < BOOST_SIZE_THRESHOLD;\n  symbolEl.useStyle( // Draw shadow when doing fillRect is extremely slow.\n  hostModel.getModel('itemStyle').getItemStyle(extrudeShadow ? ['color', 'shadowBlur', 'shadowColor'] : ['color']));\n  var visualColor = data.getVisual('color');\n\n  if (visualColor) {\n    symbolEl.setColor(visualColor);\n  }\n\n  if (!isIncremental) {\n    // Enable tooltip\n    // PENDING May have performance issue when path is extremely large\n    symbolEl.seriesIndex = hostModel.seriesIndex;\n    symbolEl.on('mousemove', function (e) {\n      symbolEl.dataIndex = null;\n      var dataIndex = symbolEl.findDataIndex(e.offsetX, e.offsetY);\n\n      if (dataIndex >= 0) {\n        // Provide dataIndex for tooltip\n        symbolEl.dataIndex = dataIndex + (symbolEl.startIndex || 0);\n      }\n    });\n  }\n};\n\nlargeSymbolProto.remove = function () {\n  this._clearIncremental();\n\n  this._incremental = null;\n  this.group.removeAll();\n};\n\nlargeSymbolProto._clearIncremental = function () {\n  var incremental = this._incremental;\n\n  if (incremental) {\n    incremental.clearDisplaybles();\n  }\n};\n\nvar _default = LargeSymbolDraw;\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar vector = require(\"zrender/lib/core/vector\");\n\nvar symbolUtil = require(\"../../util/symbol\");\n\nvar LinePath = require(\"./LinePath\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar _number = require(\"../../util/number\");\n\nvar round = _number.round;\n\n/**\n * @module echarts/chart/helper/Line\n */\nvar SYMBOL_CATEGORIES = ['fromSymbol', 'toSymbol'];\n\nfunction makeSymbolTypeKey(symbolCategory) {\n  return '_' + symbolCategory + 'Type';\n}\n/**\n * @inner\n */\n\n\nfunction createSymbol(name, lineData, idx) {\n  var color = lineData.getItemVisual(idx, 'color');\n  var symbolType = lineData.getItemVisual(idx, name);\n  var symbolSize = lineData.getItemVisual(idx, name + 'Size');\n\n  if (!symbolType || symbolType === 'none') {\n    return;\n  }\n\n  if (!zrUtil.isArray(symbolSize)) {\n    symbolSize = [symbolSize, symbolSize];\n  }\n\n  var symbolPath = symbolUtil.createSymbol(symbolType, -symbolSize[0] / 2, -symbolSize[1] / 2, symbolSize[0], symbolSize[1], color);\n  symbolPath.name = name;\n  return symbolPath;\n}\n\nfunction createLine(points) {\n  var line = new LinePath({\n    name: 'line'\n  });\n  setLinePoints(line.shape, points);\n  return line;\n}\n\nfunction setLinePoints(targetShape, points) {\n  var p1 = points[0];\n  var p2 = points[1];\n  var cp1 = points[2];\n  targetShape.x1 = p1[0];\n  targetShape.y1 = p1[1];\n  targetShape.x2 = p2[0];\n  targetShape.y2 = p2[1];\n  targetShape.percent = 1;\n\n  if (cp1) {\n    targetShape.cpx1 = cp1[0];\n    targetShape.cpy1 = cp1[1];\n  } else {\n    targetShape.cpx1 = NaN;\n    targetShape.cpy1 = NaN;\n  }\n}\n\nfunction updateSymbolAndLabelBeforeLineUpdate() {\n  var lineGroup = this;\n  var symbolFrom = lineGroup.childOfName('fromSymbol');\n  var symbolTo = lineGroup.childOfName('toSymbol');\n  var label = lineGroup.childOfName('label'); // Quick reject\n\n  if (!symbolFrom && !symbolTo && label.ignore) {\n    return;\n  }\n\n  var invScale = 1;\n  var parentNode = this.parent;\n\n  while (parentNode) {\n    if (parentNode.scale) {\n      invScale /= parentNode.scale[0];\n    }\n\n    parentNode = parentNode.parent;\n  }\n\n  var line = lineGroup.childOfName('line'); // If line not changed\n  // FIXME Parent scale changed\n\n  if (!this.__dirty && !line.__dirty) {\n    return;\n  }\n\n  var percent = line.shape.percent;\n  var fromPos = line.pointAt(0);\n  var toPos = line.pointAt(percent);\n  var d = vector.sub([], toPos, fromPos);\n  vector.normalize(d, d);\n\n  if (symbolFrom) {\n    symbolFrom.attr('position', fromPos);\n    var tangent = line.tangentAt(0);\n    symbolFrom.attr('rotation', Math.PI / 2 - Math.atan2(tangent[1], tangent[0]));\n    symbolFrom.attr('scale', [invScale * percent, invScale * percent]);\n  }\n\n  if (symbolTo) {\n    symbolTo.attr('position', toPos);\n    var tangent = line.tangentAt(1);\n    symbolTo.attr('rotation', -Math.PI / 2 - Math.atan2(tangent[1], tangent[0]));\n    symbolTo.attr('scale', [invScale * percent, invScale * percent]);\n  }\n\n  if (!label.ignore) {\n    label.attr('position', toPos);\n    var textPosition;\n    var textAlign;\n    var textVerticalAlign;\n    var distance = 5 * invScale; // End\n\n    if (label.__position === 'end') {\n      textPosition = [d[0] * distance + toPos[0], d[1] * distance + toPos[1]];\n      textAlign = d[0] > 0.8 ? 'left' : d[0] < -0.8 ? 'right' : 'center';\n      textVerticalAlign = d[1] > 0.8 ? 'top' : d[1] < -0.8 ? 'bottom' : 'middle';\n    } // Middle\n    else if (label.__position === 'middle') {\n        var halfPercent = percent / 2;\n        var tangent = line.tangentAt(halfPercent);\n        var n = [tangent[1], -tangent[0]];\n        var cp = line.pointAt(halfPercent);\n\n        if (n[1] > 0) {\n          n[0] = -n[0];\n          n[1] = -n[1];\n        }\n\n        textPosition = [cp[0] + n[0] * distance, cp[1] + n[1] * distance];\n        textAlign = 'center';\n        textVerticalAlign = 'bottom';\n        var rotation = -Math.atan2(tangent[1], tangent[0]);\n\n        if (toPos[0] < fromPos[0]) {\n          rotation = Math.PI + rotation;\n        }\n\n        label.attr('rotation', rotation);\n      } // Start\n      else {\n          textPosition = [-d[0] * distance + fromPos[0], -d[1] * distance + fromPos[1]];\n          textAlign = d[0] > 0.8 ? 'right' : d[0] < -0.8 ? 'left' : 'center';\n          textVerticalAlign = d[1] > 0.8 ? 'bottom' : d[1] < -0.8 ? 'top' : 'middle';\n        }\n\n    label.attr({\n      style: {\n        // Use the user specified text align and baseline first\n        textVerticalAlign: label.__verticalAlign || textVerticalAlign,\n        textAlign: label.__textAlign || textAlign\n      },\n      position: textPosition,\n      scale: [invScale, invScale]\n    });\n  }\n}\n/**\n * @constructor\n * @extends {module:zrender/graphic/Group}\n * @alias {module:echarts/chart/helper/Line}\n */\n\n\nfunction Line(lineData, idx, seriesScope) {\n  graphic.Group.call(this);\n\n  this._createLine(lineData, idx, seriesScope);\n}\n\nvar lineProto = Line.prototype; // Update symbol position and rotation\n\nlineProto.beforeUpdate = updateSymbolAndLabelBeforeLineUpdate;\n\nlineProto._createLine = function (lineData, idx, seriesScope) {\n  var seriesModel = lineData.hostModel;\n  var linePoints = lineData.getItemLayout(idx);\n  var line = createLine(linePoints);\n  line.shape.percent = 0;\n  graphic.initProps(line, {\n    shape: {\n      percent: 1\n    }\n  }, seriesModel, idx);\n  this.add(line);\n  var label = new graphic.Text({\n    name: 'label'\n  });\n  this.add(label);\n  zrUtil.each(SYMBOL_CATEGORIES, function (symbolCategory) {\n    var symbol = createSymbol(symbolCategory, lineData, idx); // symbols must added after line to make sure\n    // it will be updated after line#update.\n    // Or symbol position and rotation update in line#beforeUpdate will be one frame slow\n\n    this.add(symbol);\n    this[makeSymbolTypeKey(symbolCategory)] = lineData.getItemVisual(idx, symbolCategory);\n  }, this);\n\n  this._updateCommonStl(lineData, idx, seriesScope);\n};\n\nlineProto.updateData = function (lineData, idx, seriesScope) {\n  var seriesModel = lineData.hostModel;\n  var line = this.childOfName('line');\n  var linePoints = lineData.getItemLayout(idx);\n  var target = {\n    shape: {}\n  };\n  setLinePoints(target.shape, linePoints);\n  graphic.updateProps(line, target, seriesModel, idx);\n  zrUtil.each(SYMBOL_CATEGORIES, function (symbolCategory) {\n    var symbolType = lineData.getItemVisual(idx, symbolCategory);\n    var key = makeSymbolTypeKey(symbolCategory); // Symbol changed\n\n    if (this[key] !== symbolType) {\n      this.remove(this.childOfName(symbolCategory));\n      var symbol = createSymbol(symbolCategory, lineData, idx);\n      this.add(symbol);\n    }\n\n    this[key] = symbolType;\n  }, this);\n\n  this._updateCommonStl(lineData, idx, seriesScope);\n};\n\nlineProto._updateCommonStl = function (lineData, idx, seriesScope) {\n  var seriesModel = lineData.hostModel;\n  var line = this.childOfName('line');\n  var lineStyle = seriesScope && seriesScope.lineStyle;\n  var hoverLineStyle = seriesScope && seriesScope.hoverLineStyle;\n  var labelModel = seriesScope && seriesScope.labelModel;\n  var hoverLabelModel = seriesScope && seriesScope.hoverLabelModel; // Optimization for large dataset\n\n  if (!seriesScope || lineData.hasItemOption) {\n    var itemModel = lineData.getItemModel(idx);\n    lineStyle = itemModel.getModel('lineStyle').getLineStyle();\n    hoverLineStyle = itemModel.getModel('emphasis.lineStyle').getLineStyle();\n    labelModel = itemModel.getModel('label');\n    hoverLabelModel = itemModel.getModel('emphasis.label');\n  }\n\n  var visualColor = lineData.getItemVisual(idx, 'color');\n  var visualOpacity = zrUtil.retrieve3(lineData.getItemVisual(idx, 'opacity'), lineStyle.opacity, 1);\n  line.useStyle(zrUtil.defaults({\n    strokeNoScale: true,\n    fill: 'none',\n    stroke: visualColor,\n    opacity: visualOpacity\n  }, lineStyle));\n  line.hoverStyle = hoverLineStyle; // Update symbol\n\n  zrUtil.each(SYMBOL_CATEGORIES, function (symbolCategory) {\n    var symbol = this.childOfName(symbolCategory);\n\n    if (symbol) {\n      symbol.setColor(visualColor);\n      symbol.setStyle({\n        opacity: visualOpacity\n      });\n    }\n  }, this);\n  var showLabel = labelModel.getShallow('show');\n  var hoverShowLabel = hoverLabelModel.getShallow('show');\n  var label = this.childOfName('label');\n  var defaultLabelColor;\n  var normalText;\n  var emphasisText;\n\n  if (showLabel || hoverShowLabel) {\n    defaultLabelColor = visualColor || '#000';\n    normalText = seriesModel.getFormattedLabel(idx, 'normal', lineData.dataType);\n\n    if (normalText == null) {\n      var rawVal = seriesModel.getRawValue(idx);\n      normalText = rawVal == null ? lineData.getName(idx) : isFinite(rawVal) ? round(rawVal) : rawVal;\n    }\n\n    emphasisText = zrUtil.retrieve2(seriesModel.getFormattedLabel(idx, 'emphasis', lineData.dataType), normalText);\n  } // label.afterUpdate = lineAfterUpdate;\n\n\n  if (showLabel) {\n    var labelStyle = graphic.setTextStyle(label.style, labelModel, {\n      text: normalText\n    }, {\n      autoColor: defaultLabelColor\n    });\n    label.__textAlign = labelStyle.textAlign;\n    label.__verticalAlign = labelStyle.textVerticalAlign; // 'start', 'middle', 'end'\n\n    label.__position = labelModel.get('position') || 'middle';\n  } else {\n    label.setStyle('text', null);\n  }\n\n  if (hoverShowLabel) {\n    // Only these properties supported in this emphasis style here.\n    label.hoverStyle = {\n      text: emphasisText,\n      textFill: hoverLabelModel.getTextColor(true),\n      // For merging hover style to normal style, do not use\n      // `hoverLabelModel.getFont()` here.\n      fontStyle: hoverLabelModel.getShallow('fontStyle'),\n      fontWeight: hoverLabelModel.getShallow('fontWeight'),\n      fontSize: hoverLabelModel.getShallow('fontSize'),\n      fontFamily: hoverLabelModel.getShallow('fontFamily')\n    };\n  } else {\n    label.hoverStyle = {\n      text: null\n    };\n  }\n\n  label.ignore = !showLabel && !hoverShowLabel;\n  graphic.setHoverStyle(this);\n};\n\nlineProto.highlight = function () {\n  this.trigger('emphasis');\n};\n\nlineProto.downplay = function () {\n  this.trigger('normal');\n};\n\nlineProto.updateLayout = function (lineData, idx) {\n  this.setLinePoints(lineData.getItemLayout(idx));\n};\n\nlineProto.setLinePoints = function (points) {\n  var linePath = this.childOfName('line');\n  setLinePoints(linePath.shape, points);\n  linePath.dirty();\n};\n\nzrUtil.inherits(Line, graphic.Group);\nvar _default = Line;\nmodule.exports = _default;","var graphic = require(\"../../util/graphic\");\n\nvar LineGroup = require(\"./Line\");\n\n/**\n * @module echarts/chart/helper/LineDraw\n */\n// import IncrementalDisplayable from 'zrender/src/graphic/IncrementalDisplayable';\n\n/**\n * @alias module:echarts/component/marker/LineDraw\n * @constructor\n */\nfunction LineDraw(ctor) {\n  this._ctor = ctor || LineGroup;\n  this.group = new graphic.Group();\n}\n\nvar lineDrawProto = LineDraw.prototype;\n\nlineDrawProto.isPersistent = function () {\n  return true;\n};\n/**\n * @param {module:echarts/data/List} lineData\n */\n\n\nlineDrawProto.updateData = function (lineData) {\n  var lineDraw = this;\n  var group = lineDraw.group;\n  var oldLineData = lineDraw._lineData;\n  lineDraw._lineData = lineData; // There is no oldLineData only when first rendering or switching from\n  // stream mode to normal mode, where previous elements should be removed.\n\n  if (!oldLineData) {\n    group.removeAll();\n  }\n\n  var seriesScope = makeSeriesScope(lineData);\n  lineData.diff(oldLineData).add(function (idx) {\n    doAdd(lineDraw, lineData, idx, seriesScope);\n  }).update(function (newIdx, oldIdx) {\n    doUpdate(lineDraw, oldLineData, lineData, oldIdx, newIdx, seriesScope);\n  }).remove(function (idx) {\n    group.remove(oldLineData.getItemGraphicEl(idx));\n  }).execute();\n};\n\nfunction doAdd(lineDraw, lineData, idx, seriesScope) {\n  var itemLayout = lineData.getItemLayout(idx);\n\n  if (!lineNeedsDraw(itemLayout)) {\n    return;\n  }\n\n  var el = new lineDraw._ctor(lineData, idx, seriesScope);\n  lineData.setItemGraphicEl(idx, el);\n  lineDraw.group.add(el);\n}\n\nfunction doUpdate(lineDraw, oldLineData, newLineData, oldIdx, newIdx, seriesScope) {\n  var itemEl = oldLineData.getItemGraphicEl(oldIdx);\n\n  if (!lineNeedsDraw(newLineData.getItemLayout(newIdx))) {\n    lineDraw.group.remove(itemEl);\n    return;\n  }\n\n  if (!itemEl) {\n    itemEl = new lineDraw._ctor(newLineData, newIdx, seriesScope);\n  } else {\n    itemEl.updateData(newLineData, newIdx, seriesScope);\n  }\n\n  newLineData.setItemGraphicEl(newIdx, itemEl);\n  lineDraw.group.add(itemEl);\n}\n\nlineDrawProto.updateLayout = function () {\n  var lineData = this._lineData;\n  lineData.eachItemGraphicEl(function (el, idx) {\n    el.updateLayout(lineData, idx);\n  }, this);\n};\n\nlineDrawProto.incrementalPrepareUpdate = function (lineData) {\n  this._seriesScope = makeSeriesScope(lineData);\n  this._lineData = null;\n  this.group.removeAll();\n};\n\nlineDrawProto.incrementalUpdate = function (taskParams, lineData) {\n  function updateIncrementalAndHover(el) {\n    if (!el.isGroup) {\n      el.incremental = el.useHoverLayer = true;\n    }\n  }\n\n  for (var idx = taskParams.start; idx < taskParams.end; idx++) {\n    var itemLayout = lineData.getItemLayout(idx);\n\n    if (lineNeedsDraw(itemLayout)) {\n      var el = new this._ctor(lineData, idx, this._seriesScope);\n      el.traverse(updateIncrementalAndHover);\n      this.group.add(el);\n    }\n  }\n};\n\nfunction makeSeriesScope(lineData) {\n  var hostModel = lineData.hostModel;\n  return {\n    lineStyle: hostModel.getModel('lineStyle').getLineStyle(),\n    hoverLineStyle: hostModel.getModel('emphasis.lineStyle').getLineStyle(),\n    labelModel: hostModel.getModel('label'),\n    hoverLabelModel: hostModel.getModel('emphasis.label')\n  };\n}\n\nlineDrawProto.remove = function () {\n  this._clearIncremental();\n\n  this._incremental = null;\n  this.group.removeAll();\n};\n\nlineDrawProto._clearIncremental = function () {\n  var incremental = this._incremental;\n\n  if (incremental) {\n    incremental.clearDisplaybles();\n  }\n};\n\nfunction isPointNaN(pt) {\n  return isNaN(pt[0]) || isNaN(pt[1]);\n}\n\nfunction lineNeedsDraw(pts) {\n  return !isPointNaN(pts[0]) && !isPointNaN(pts[1]);\n}\n\nvar _default = LineDraw;\nmodule.exports = _default;","var graphic = require(\"../../util/graphic\");\n\nvar vec2 = require(\"zrender/lib/core/vector\");\n\n/**\n * Line path for bezier and straight line draw\n */\nvar straightLineProto = graphic.Line.prototype;\nvar bezierCurveProto = graphic.BezierCurve.prototype;\n\nfunction isLine(shape) {\n  return isNaN(+shape.cpx1) || isNaN(+shape.cpy1);\n}\n\nvar _default = graphic.extendShape({\n  type: 'ec-line',\n  style: {\n    stroke: '#000',\n    fill: null\n  },\n  shape: {\n    x1: 0,\n    y1: 0,\n    x2: 0,\n    y2: 0,\n    percent: 1,\n    cpx1: null,\n    cpy1: null\n  },\n  buildPath: function (ctx, shape) {\n    (isLine(shape) ? straightLineProto : bezierCurveProto).buildPath(ctx, shape);\n  },\n  pointAt: function (t) {\n    return isLine(this.shape) ? straightLineProto.pointAt.call(this, t) : bezierCurveProto.pointAt.call(this, t);\n  },\n  tangentAt: function (t) {\n    var shape = this.shape;\n    var p = isLine(shape) ? [shape.x2 - shape.x1, shape.y2 - shape.y1] : bezierCurveProto.tangentAt.call(this, t);\n    return vec2.normalize(p, p);\n  }\n});\n\nmodule.exports = _default;","var graphic = require(\"../../util/graphic\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\n/**\n * @module echarts/chart/helper/Line\n */\n\n/**\n * @constructor\n * @extends {module:zrender/graphic/Group}\n * @alias {module:echarts/chart/helper/Polyline}\n */\nfunction Polyline(lineData, idx, seriesScope) {\n  graphic.Group.call(this);\n\n  this._createPolyline(lineData, idx, seriesScope);\n}\n\nvar polylineProto = Polyline.prototype;\n\npolylineProto._createPolyline = function (lineData, idx, seriesScope) {\n  // var seriesModel = lineData.hostModel;\n  var points = lineData.getItemLayout(idx);\n  var line = new graphic.Polyline({\n    shape: {\n      points: points\n    }\n  });\n  this.add(line);\n\n  this._updateCommonStl(lineData, idx, seriesScope);\n};\n\npolylineProto.updateData = function (lineData, idx, seriesScope) {\n  var seriesModel = lineData.hostModel;\n  var line = this.childAt(0);\n  var target = {\n    shape: {\n      points: lineData.getItemLayout(idx)\n    }\n  };\n  graphic.updateProps(line, target, seriesModel, idx);\n\n  this._updateCommonStl(lineData, idx, seriesScope);\n};\n\npolylineProto._updateCommonStl = function (lineData, idx, seriesScope) {\n  var line = this.childAt(0);\n  var itemModel = lineData.getItemModel(idx);\n  var visualColor = lineData.getItemVisual(idx, 'color');\n  var lineStyle = seriesScope && seriesScope.lineStyle;\n  var hoverLineStyle = seriesScope && seriesScope.hoverLineStyle;\n\n  if (!seriesScope || lineData.hasItemOption) {\n    lineStyle = itemModel.getModel('lineStyle').getLineStyle();\n    hoverLineStyle = itemModel.getModel('emphasis.lineStyle').getLineStyle();\n  }\n\n  line.useStyle(zrUtil.defaults({\n    strokeNoScale: true,\n    fill: 'none',\n    stroke: visualColor\n  }, lineStyle));\n  line.hoverStyle = hoverLineStyle;\n  graphic.setHoverStyle(this);\n};\n\npolylineProto.updateLayout = function (lineData, idx) {\n  var polyline = this.childAt(0);\n  polyline.setShape('points', lineData.getItemLayout(idx));\n};\n\nzrUtil.inherits(Polyline, graphic.Group);\nvar _default = Polyline;\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar _symbol = require(\"../../util/symbol\");\n\nvar createSymbol = _symbol.createSymbol;\n\nvar graphic = require(\"../../util/graphic\");\n\nvar _number = require(\"../../util/number\");\n\nvar parsePercent = _number.parsePercent;\n\nvar _labelHelper = require(\"./labelHelper\");\n\nvar getDefaultLabel = _labelHelper.getDefaultLabel;\n\n/**\n * @module echarts/chart/helper/Symbol\n */\nfunction getSymbolSize(data, idx) {\n  var symbolSize = data.getItemVisual(idx, 'symbolSize');\n  return symbolSize instanceof Array ? symbolSize.slice() : [+symbolSize, +symbolSize];\n}\n\nfunction getScale(symbolSize) {\n  return [symbolSize[0] / 2, symbolSize[1] / 2];\n}\n/**\n * @constructor\n * @alias {module:echarts/chart/helper/Symbol}\n * @param {module:echarts/data/List} data\n * @param {number} idx\n * @extends {module:zrender/graphic/Group}\n */\n\n\nfunction SymbolClz(data, idx, seriesScope) {\n  graphic.Group.call(this);\n  this.updateData(data, idx, seriesScope);\n}\n\nvar symbolProto = SymbolClz.prototype;\n\nfunction driftSymbol(dx, dy) {\n  this.parent.drift(dx, dy);\n}\n\nsymbolProto._createSymbol = function (symbolType, data, idx, symbolSize) {\n  // Remove paths created before\n  this.removeAll();\n  var color = data.getItemVisual(idx, 'color'); // var symbolPath = createSymbol(\n  //     symbolType, -0.5, -0.5, 1, 1, color\n  // );\n  // If width/height are set too small (e.g., set to 1) on ios10\n  // and macOS Sierra, a circle stroke become a rect, no matter what\n  // the scale is set. So we set width/height as 2. See #4150.\n\n  var symbolPath = createSymbol(symbolType, -1, -1, 2, 2, color);\n  symbolPath.attr({\n    z2: 100,\n    culling: true,\n    scale: getScale(symbolSize)\n  }); // Rewrite drift method\n\n  symbolPath.drift = driftSymbol;\n  this._symbolType = symbolType;\n  this.add(symbolPath);\n};\n/**\n * Stop animation\n * @param {boolean} toLastFrame\n */\n\n\nsymbolProto.stopSymbolAnimation = function (toLastFrame) {\n  this.childAt(0).stopAnimation(toLastFrame);\n};\n/**\n * FIXME:\n * Caution: This method breaks the encapsulation of this module,\n * but it indeed brings convenience. So do not use the method\n * unless you detailedly know all the implements of `Symbol`,\n * especially animation.\n *\n * Get symbol path element.\n */\n\n\nsymbolProto.getSymbolPath = function () {\n  return this.childAt(0);\n};\n/**\n * Get scale(aka, current symbol size).\n * Including the change caused by animation\n */\n\n\nsymbolProto.getScale = function () {\n  return this.childAt(0).scale;\n};\n/**\n * Highlight symbol\n */\n\n\nsymbolProto.highlight = function () {\n  this.childAt(0).trigger('emphasis');\n};\n/**\n * Downplay symbol\n */\n\n\nsymbolProto.downplay = function () {\n  this.childAt(0).trigger('normal');\n};\n/**\n * @param {number} zlevel\n * @param {number} z\n */\n\n\nsymbolProto.setZ = function (zlevel, z) {\n  var symbolPath = this.childAt(0);\n  symbolPath.zlevel = zlevel;\n  symbolPath.z = z;\n};\n\nsymbolProto.setDraggable = function (draggable) {\n  var symbolPath = this.childAt(0);\n  symbolPath.draggable = draggable;\n  symbolPath.cursor = draggable ? 'move' : 'pointer';\n};\n/**\n * Update symbol properties\n * @param {module:echarts/data/List} data\n * @param {number} idx\n * @param {Object} [seriesScope]\n * @param {Object} [seriesScope.itemStyle]\n * @param {Object} [seriesScope.hoverItemStyle]\n * @param {Object} [seriesScope.symbolRotate]\n * @param {Object} [seriesScope.symbolOffset]\n * @param {module:echarts/model/Model} [seriesScope.labelModel]\n * @param {module:echarts/model/Model} [seriesScope.hoverLabelModel]\n * @param {boolean} [seriesScope.hoverAnimation]\n * @param {Object} [seriesScope.cursorStyle]\n * @param {module:echarts/model/Model} [seriesScope.itemModel]\n * @param {string} [seriesScope.symbolInnerColor]\n * @param {Object} [seriesScope.fadeIn=false]\n */\n\n\nsymbolProto.updateData = function (data, idx, seriesScope) {\n  this.silent = false;\n  var symbolType = data.getItemVisual(idx, 'symbol') || 'circle';\n  var seriesModel = data.hostModel;\n  var symbolSize = getSymbolSize(data, idx);\n  var isInit = symbolType !== this._symbolType;\n\n  if (isInit) {\n    this._createSymbol(symbolType, data, idx, symbolSize);\n  } else {\n    var symbolPath = this.childAt(0);\n    symbolPath.silent = false;\n    graphic.updateProps(symbolPath, {\n      scale: getScale(symbolSize)\n    }, seriesModel, idx);\n  }\n\n  this._updateCommon(data, idx, symbolSize, seriesScope);\n\n  if (isInit) {\n    var symbolPath = this.childAt(0);\n    var fadeIn = seriesScope && seriesScope.fadeIn;\n    var target = {\n      scale: symbolPath.scale.slice()\n    };\n    fadeIn && (target.style = {\n      opacity: symbolPath.style.opacity\n    });\n    symbolPath.scale = [0, 0];\n    fadeIn && (symbolPath.style.opacity = 0);\n    graphic.initProps(symbolPath, target, seriesModel, idx);\n  }\n\n  this._seriesModel = seriesModel;\n}; // Update common properties\n\n\nvar normalStyleAccessPath = ['itemStyle'];\nvar emphasisStyleAccessPath = ['emphasis', 'itemStyle'];\nvar normalLabelAccessPath = ['label'];\nvar emphasisLabelAccessPath = ['emphasis', 'label'];\n/**\n * @param {module:echarts/data/List} data\n * @param {number} idx\n * @param {Array.<number>} symbolSize\n * @param {Object} [seriesScope]\n */\n\nsymbolProto._updateCommon = function (data, idx, symbolSize, seriesScope) {\n  var symbolPath = this.childAt(0);\n  var seriesModel = data.hostModel;\n  var color = data.getItemVisual(idx, 'color'); // Reset style\n\n  if (symbolPath.type !== 'image') {\n    symbolPath.useStyle({\n      strokeNoScale: true\n    });\n  }\n\n  var itemStyle = seriesScope && seriesScope.itemStyle;\n  var hoverItemStyle = seriesScope && seriesScope.hoverItemStyle;\n  var symbolRotate = seriesScope && seriesScope.symbolRotate;\n  var symbolOffset = seriesScope && seriesScope.symbolOffset;\n  var labelModel = seriesScope && seriesScope.labelModel;\n  var hoverLabelModel = seriesScope && seriesScope.hoverLabelModel;\n  var hoverAnimation = seriesScope && seriesScope.hoverAnimation;\n  var cursorStyle = seriesScope && seriesScope.cursorStyle;\n\n  if (!seriesScope || data.hasItemOption) {\n    var itemModel = seriesScope && seriesScope.itemModel ? seriesScope.itemModel : data.getItemModel(idx); // Color must be excluded.\n    // Because symbol provide setColor individually to set fill and stroke\n\n    itemStyle = itemModel.getModel(normalStyleAccessPath).getItemStyle(['color']);\n    hoverItemStyle = itemModel.getModel(emphasisStyleAccessPath).getItemStyle();\n    symbolRotate = itemModel.getShallow('symbolRotate');\n    symbolOffset = itemModel.getShallow('symbolOffset');\n    labelModel = itemModel.getModel(normalLabelAccessPath);\n    hoverLabelModel = itemModel.getModel(emphasisLabelAccessPath);\n    hoverAnimation = itemModel.getShallow('hoverAnimation');\n    cursorStyle = itemModel.getShallow('cursor');\n  } else {\n    hoverItemStyle = zrUtil.extend({}, hoverItemStyle);\n  }\n\n  var elStyle = symbolPath.style;\n  symbolPath.attr('rotation', (symbolRotate || 0) * Math.PI / 180 || 0);\n\n  if (symbolOffset) {\n    symbolPath.attr('position', [parsePercent(symbolOffset[0], symbolSize[0]), parsePercent(symbolOffset[1], symbolSize[1])]);\n  }\n\n  cursorStyle && symbolPath.attr('cursor', cursorStyle); // PENDING setColor before setStyle!!!\n\n  symbolPath.setColor(color, seriesScope && seriesScope.symbolInnerColor);\n  symbolPath.setStyle(itemStyle);\n  var opacity = data.getItemVisual(idx, 'opacity');\n\n  if (opacity != null) {\n    elStyle.opacity = opacity;\n  }\n\n  var useNameLabel = seriesScope && seriesScope.useNameLabel;\n  graphic.setLabelStyle(elStyle, hoverItemStyle, labelModel, hoverLabelModel, {\n    labelFetcher: seriesModel,\n    labelDataIndex: idx,\n    defaultText: getLabelDefaultText,\n    isRectText: true,\n    autoColor: color\n  }); // Do not execute util needed.\n\n  function getLabelDefaultText(idx, opt) {\n    return useNameLabel ? data.getName(idx) : getDefaultLabel(data, idx);\n  }\n\n  symbolPath.off('mouseover').off('mouseout').off('emphasis').off('normal');\n  symbolPath.hoverStyle = hoverItemStyle; // FIXME\n  // Do not use symbol.trigger('emphasis'), but use symbol.highlight() instead.\n\n  graphic.setHoverStyle(symbolPath);\n  var scale = getScale(symbolSize);\n\n  if (hoverAnimation && seriesModel.isAnimationEnabled()) {\n    var onEmphasis = function () {\n      var ratio = scale[1] / scale[0];\n      this.animateTo({\n        scale: [Math.max(scale[0] * 1.1, scale[0] + 3), Math.max(scale[1] * 1.1, scale[1] + 3 * ratio)]\n      }, 400, 'elasticOut');\n    };\n\n    var onNormal = function () {\n      this.animateTo({\n        scale: scale\n      }, 400, 'elasticOut');\n    };\n\n    symbolPath.on('mouseover', onEmphasis).on('mouseout', onNormal).on('emphasis', onEmphasis).on('normal', onNormal);\n  }\n};\n/**\n * @param {Function} cb\n * @param {Object} [opt]\n * @param {Object} [opt.keepLabel=true]\n */\n\n\nsymbolProto.fadeOut = function (cb, opt) {\n  var symbolPath = this.childAt(0); // Avoid mistaken hover when fading out\n\n  this.silent = symbolPath.silent = true; // Not show text when animating\n\n  !(opt && opt.keepLabel) && (symbolPath.style.text = null);\n  graphic.updateProps(symbolPath, {\n    style: {\n      opacity: 0\n    },\n    scale: [0, 0]\n  }, this._seriesModel, this.dataIndex, cb);\n};\n\nzrUtil.inherits(SymbolClz, graphic.Group);\nvar _default = SymbolClz;\nmodule.exports = _default;","var graphic = require(\"../../util/graphic\");\n\nvar SymbolClz = require(\"./Symbol\");\n\n/**\n * @module echarts/chart/helper/SymbolDraw\n */\n\n/**\n * @constructor\n * @alias module:echarts/chart/helper/SymbolDraw\n * @param {module:zrender/graphic/Group} [symbolCtor]\n */\nfunction SymbolDraw(symbolCtor) {\n  this.group = new graphic.Group();\n  this._symbolCtor = symbolCtor || SymbolClz;\n}\n\nvar symbolDrawProto = SymbolDraw.prototype;\n\nfunction symbolNeedsDraw(data, point, idx, isIgnore) {\n  return point && !isNaN(point[0]) && !isNaN(point[1]) && !(isIgnore && isIgnore(idx)) && data.getItemVisual(idx, 'symbol') !== 'none';\n}\n/**\n * Update symbols draw by new data\n * @param {module:echarts/data/List} data\n * @param {Array.<boolean>} [isIgnore]\n */\n\n\nsymbolDrawProto.updateData = function (data, isIgnore) {\n  var group = this.group;\n  var seriesModel = data.hostModel;\n  var oldData = this._data;\n  var SymbolCtor = this._symbolCtor;\n  var seriesScope = makeSeriesScope(data); // There is no oldLineData only when first rendering or switching from\n  // stream mode to normal mode, where previous elements should be removed.\n\n  if (!oldData) {\n    group.removeAll();\n  }\n\n  data.diff(oldData).add(function (newIdx) {\n    var point = data.getItemLayout(newIdx);\n\n    if (symbolNeedsDraw(data, point, newIdx, isIgnore)) {\n      var symbolEl = new SymbolCtor(data, newIdx, seriesScope);\n      symbolEl.attr('position', point);\n      data.setItemGraphicEl(newIdx, symbolEl);\n      group.add(symbolEl);\n    }\n  }).update(function (newIdx, oldIdx) {\n    var symbolEl = oldData.getItemGraphicEl(oldIdx);\n    var point = data.getItemLayout(newIdx);\n\n    if (!symbolNeedsDraw(data, point, newIdx, isIgnore)) {\n      group.remove(symbolEl);\n      return;\n    }\n\n    if (!symbolEl) {\n      symbolEl = new SymbolCtor(data, newIdx);\n      symbolEl.attr('position', point);\n    } else {\n      symbolEl.updateData(data, newIdx, seriesScope);\n      graphic.updateProps(symbolEl, {\n        position: point\n      }, seriesModel);\n    } // Add back\n\n\n    group.add(symbolEl);\n    data.setItemGraphicEl(newIdx, symbolEl);\n  }).remove(function (oldIdx) {\n    var el = oldData.getItemGraphicEl(oldIdx);\n    el && el.fadeOut(function () {\n      group.remove(el);\n    });\n  }).execute();\n  this._data = data;\n};\n\nsymbolDrawProto.isPersistent = function () {\n  return true;\n};\n\nsymbolDrawProto.updateLayout = function () {\n  var data = this._data;\n\n  if (data) {\n    // Not use animation\n    data.eachItemGraphicEl(function (el, idx) {\n      var point = data.getItemLayout(idx);\n      el.attr('position', point);\n    });\n  }\n};\n\nsymbolDrawProto.incrementalPrepareUpdate = function (data) {\n  this._seriesScope = makeSeriesScope(data);\n  this._data = null;\n  this.group.removeAll();\n};\n\nsymbolDrawProto.incrementalUpdate = function (taskParams, data, isIgnore) {\n  function updateIncrementalAndHover(el) {\n    if (!el.isGroup) {\n      el.incremental = el.useHoverLayer = true;\n    }\n  }\n\n  for (var idx = taskParams.start; idx < taskParams.end; idx++) {\n    var point = data.getItemLayout(idx);\n\n    if (symbolNeedsDraw(data, point, idx, isIgnore)) {\n      var el = new this._symbolCtor(data, idx, this._seriesScope);\n      el.traverse(updateIncrementalAndHover);\n      el.attr('position', point);\n      this.group.add(el);\n      data.setItemGraphicEl(idx, el);\n    }\n  }\n};\n\nsymbolDrawProto.remove = function (enableAnimation) {\n  var group = this.group;\n  var data = this._data;\n\n  if (data) {\n    if (enableAnimation) {\n      data.eachItemGraphicEl(function (el) {\n        el.fadeOut(function () {\n          group.remove(el);\n        });\n      });\n    } else {\n      group.removeAll();\n    }\n  }\n};\n\nfunction makeSeriesScope(data) {\n  var seriesModel = data.hostModel;\n  return {\n    itemStyle: seriesModel.getModel('itemStyle').getItemStyle(['color']),\n    hoverItemStyle: seriesModel.getModel('emphasis.itemStyle').getItemStyle(),\n    symbolRotate: seriesModel.get('symbolRotate'),\n    symbolOffset: seriesModel.get('symbolOffset'),\n    hoverAnimation: seriesModel.get('hoverAnimation'),\n    labelModel: seriesModel.getModel('label'),\n    hoverLabelModel: seriesModel.getModel('emphasis.label'),\n    cursorStyle: seriesModel.get('cursor')\n  };\n}\n\nvar _default = SymbolDraw;\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar Path = require(\"zrender/lib/graphic/Path\");\n\n/**\n * @module echarts/chart/helper/Symbol\n */\nvar WhiskerPath = Path.extend({\n  type: 'whiskerInBox',\n  shape: {},\n  buildPath: function (ctx, shape) {\n    for (var i in shape) {\n      if (shape.hasOwnProperty(i) && i.indexOf('ends') === 0) {\n        var pts = shape[i];\n        ctx.moveTo(pts[0][0], pts[0][1]);\n        ctx.lineTo(pts[1][0], pts[1][1]);\n      }\n    }\n  }\n});\n/**\n * @constructor\n * @alias {module:echarts/chart/helper/WhiskerBox}\n * @param {module:echarts/data/List} data\n * @param {number} idx\n * @param {Function} styleUpdater\n * @param {boolean} isInit\n * @extends {module:zrender/graphic/Group}\n */\n\nfunction WhiskerBox(data, idx, styleUpdater, isInit) {\n  graphic.Group.call(this);\n  /**\n   * @type {number}\n   * @readOnly\n   */\n\n  this.bodyIndex;\n  /**\n   * @type {number}\n   * @readOnly\n   */\n\n  this.whiskerIndex;\n  /**\n   * @type {Function}\n   */\n\n  this.styleUpdater = styleUpdater;\n\n  this._createContent(data, idx, isInit);\n\n  this.updateData(data, idx, isInit);\n  /**\n   * Last series model.\n   * @type {module:echarts/model/Series}\n   */\n\n  this._seriesModel;\n}\n\nvar whiskerBoxProto = WhiskerBox.prototype;\n\nwhiskerBoxProto._createContent = function (data, idx, isInit) {\n  var itemLayout = data.getItemLayout(idx);\n  var constDim = itemLayout.chartLayout === 'horizontal' ? 1 : 0;\n  var count = 0; // Whisker element.\n\n  this.add(new graphic.Polygon({\n    shape: {\n      points: isInit ? transInit(itemLayout.bodyEnds, constDim, itemLayout) : itemLayout.bodyEnds\n    },\n    style: {\n      strokeNoScale: true\n    },\n    z2: 100\n  }));\n  this.bodyIndex = count++; // Box element.\n\n  var whiskerEnds = zrUtil.map(itemLayout.whiskerEnds, function (ends) {\n    return isInit ? transInit(ends, constDim, itemLayout) : ends;\n  });\n  this.add(new WhiskerPath({\n    shape: makeWhiskerEndsShape(whiskerEnds),\n    style: {\n      strokeNoScale: true\n    },\n    z2: 100\n  }));\n  this.whiskerIndex = count++;\n};\n\nfunction transInit(points, dim, itemLayout) {\n  return zrUtil.map(points, function (point) {\n    point = point.slice();\n    point[dim] = itemLayout.initBaseline;\n    return point;\n  });\n}\n\nfunction makeWhiskerEndsShape(whiskerEnds) {\n  // zr animation only support 2-dim array.\n  var shape = {};\n  zrUtil.each(whiskerEnds, function (ends, i) {\n    shape['ends' + i] = ends;\n  });\n  return shape;\n}\n/**\n * Update symbol properties\n * @param  {module:echarts/data/List} data\n * @param  {number} idx\n */\n\n\nwhiskerBoxProto.updateData = function (data, idx, isInit) {\n  var seriesModel = this._seriesModel = data.hostModel;\n  var itemLayout = data.getItemLayout(idx);\n  var updateMethod = graphic[isInit ? 'initProps' : 'updateProps']; // this.childAt(this.bodyIndex).stopAnimation(true);\n  // this.childAt(this.whiskerIndex).stopAnimation(true);\n\n  updateMethod(this.childAt(this.bodyIndex), {\n    shape: {\n      points: itemLayout.bodyEnds\n    }\n  }, seriesModel, idx);\n  updateMethod(this.childAt(this.whiskerIndex), {\n    shape: makeWhiskerEndsShape(itemLayout.whiskerEnds)\n  }, seriesModel, idx);\n  this.styleUpdater.call(null, this, data, idx);\n};\n\nzrUtil.inherits(WhiskerBox, graphic.Group);\n/**\n * @constructor\n * @alias module:echarts/chart/helper/WhiskerBoxDraw\n */\n\nfunction WhiskerBoxDraw(styleUpdater) {\n  this.group = new graphic.Group();\n  this.styleUpdater = styleUpdater;\n}\n\nvar whiskerBoxDrawProto = WhiskerBoxDraw.prototype;\n/**\n * Update symbols draw by new data\n * @param {module:echarts/data/List} data\n */\n\nwhiskerBoxDrawProto.updateData = function (data) {\n  var group = this.group;\n  var oldData = this._data;\n  var styleUpdater = this.styleUpdater;\n  data.diff(oldData).add(function (newIdx) {\n    if (data.hasValue(newIdx)) {\n      var symbolEl = new WhiskerBox(data, newIdx, styleUpdater, true);\n      data.setItemGraphicEl(newIdx, symbolEl);\n      group.add(symbolEl);\n    }\n  }).update(function (newIdx, oldIdx) {\n    var symbolEl = oldData.getItemGraphicEl(oldIdx); // Empty data\n\n    if (!data.hasValue(newIdx)) {\n      group.remove(symbolEl);\n      return;\n    }\n\n    if (!symbolEl) {\n      symbolEl = new WhiskerBox(data, newIdx, styleUpdater);\n    } else {\n      symbolEl.updateData(data, newIdx);\n    } // Add back\n\n\n    group.add(symbolEl);\n    data.setItemGraphicEl(newIdx, symbolEl);\n  }).remove(function (oldIdx) {\n    var el = oldData.getItemGraphicEl(oldIdx);\n    el && group.remove(el);\n  }).execute();\n  this._data = data;\n};\n/**\n * Remove symbols.\n * @param {module:echarts/data/List} data\n */\n\n\nwhiskerBoxDrawProto.remove = function () {\n  var group = this.group;\n  var data = this._data;\n  this._data = null;\n  data && data.eachItemGraphicEl(function (el) {\n    el && group.remove(el);\n  });\n};\n\nvar _default = WhiskerBoxDraw;\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar List = require(\"../../data/List\");\n\nvar Graph = require(\"../../data/Graph\");\n\nvar linkList = require(\"../../data/helper/linkList\");\n\nvar createDimensions = require(\"../../data/helper/createDimensions\");\n\nvar CoordinateSystem = require(\"../../CoordinateSystem\");\n\nvar createListFromArray = require(\"./createListFromArray\");\n\nfunction _default(nodes, edges, seriesModel, directed, beforeLink) {\n  // ??? TODO\n  // support dataset?\n  var graph = new Graph(directed);\n\n  for (var i = 0; i < nodes.length; i++) {\n    graph.addNode(zrUtil.retrieve( // Id, name, dataIndex\n    nodes[i].id, nodes[i].name, i), i);\n  }\n\n  var linkNameList = [];\n  var validEdges = [];\n  var linkCount = 0;\n\n  for (var i = 0; i < edges.length; i++) {\n    var link = edges[i];\n    var source = link.source;\n    var target = link.target; // addEdge may fail when source or target not exists\n\n    if (graph.addEdge(source, target, linkCount)) {\n      validEdges.push(link);\n      linkNameList.push(zrUtil.retrieve(link.id, source + ' > ' + target));\n      linkCount++;\n    }\n  }\n\n  var coordSys = seriesModel.get('coordinateSystem');\n  var nodeData;\n\n  if (coordSys === 'cartesian2d' || coordSys === 'polar') {\n    nodeData = createListFromArray(nodes, seriesModel);\n  } else {\n    // FIXME\n    var coordSysCtor = CoordinateSystem.get(coordSys); // FIXME\n\n    var dimensionNames = createDimensions(nodes, {\n      coordDimensions: (coordSysCtor && coordSysCtor.type !== 'view' ? coordSysCtor.dimensions || [] : []).concat(['value'])\n    });\n    nodeData = new List(dimensionNames, seriesModel);\n    nodeData.initData(nodes);\n  }\n\n  var edgeData = new List(['value'], seriesModel);\n  edgeData.initData(validEdges, linkNameList);\n  beforeLink && beforeLink(nodeData, edgeData);\n  linkList({\n    mainData: nodeData,\n    struct: graph,\n    structAttr: 'graph',\n    datas: {\n      node: nodeData,\n      edge: edgeData\n    },\n    datasAttr: {\n      node: 'data',\n      edge: 'edgeData'\n    }\n  }); // Update dataIndex of nodes and edges because invalid edge may be removed\n\n  graph.update();\n  return graph;\n}\n\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar List = require(\"../../data/List\");\n\nvar createDimensions = require(\"../../data/helper/createDimensions\");\n\nvar _sourceType = require(\"../../data/helper/sourceType\");\n\nvar SOURCE_FORMAT_ORIGINAL = _sourceType.SOURCE_FORMAT_ORIGINAL;\n\nvar _dimensionHelper = require(\"../../data/helper/dimensionHelper\");\n\nvar getDimensionTypeByAxis = _dimensionHelper.getDimensionTypeByAxis;\n\nvar _model = require(\"../../util/model\");\n\nvar getDataItemValue = _model.getDataItemValue;\n\nvar CoordinateSystem = require(\"../../CoordinateSystem\");\n\nvar _referHelper = require(\"../../model/referHelper\");\n\nvar getCoordSysDefineBySeries = _referHelper.getCoordSysDefineBySeries;\n\nvar Source = require(\"../../data/Source\");\n\n/**\n * @param {module:echarts/data/Source|Array} source Or raw data.\n * @param {module:echarts/model/Series} seriesModel\n */\nfunction createListFromArray(source, seriesModel) {\n  if (!Source.isInstance(source)) {\n    source = Source.seriesDataToSource(source);\n  }\n\n  var coordSysName = seriesModel.get('coordinateSystem');\n  var registeredCoordSys = CoordinateSystem.get(coordSysName);\n  var coordSysDefine = getCoordSysDefineBySeries(seriesModel);\n  var coordSysDimDefs;\n\n  if (coordSysDefine) {\n    coordSysDimDefs = zrUtil.map(coordSysDefine.coordSysDims, function (dim) {\n      var dimInfo = {\n        name: dim\n      };\n      var axisModel = coordSysDefine.axisMap.get(dim);\n\n      if (axisModel) {\n        var axisType = axisModel.get('type');\n        dimInfo.type = getDimensionTypeByAxis(axisType);\n        dimInfo.stackable = isStackable(axisType);\n      }\n\n      return dimInfo;\n    });\n  }\n\n  if (!coordSysDimDefs) {\n    // Get dimensions from registered coordinate system\n    coordSysDimDefs = registeredCoordSys && (registeredCoordSys.getDimensionsInfo ? registeredCoordSys.getDimensionsInfo() : registeredCoordSys.dimensions.slice()) || ['x', 'y'];\n  }\n\n  var dimInfoList = createDimensions(source, {\n    coordDimensions: coordSysDimDefs\n  });\n  var firstCategoryDimIndex;\n  var hasNameEncode;\n  coordSysDefine && zrUtil.each(dimInfoList, function (dimInfo, dimIndex) {\n    var coordDim = dimInfo.coordDim;\n    var categoryAxisModel = coordSysDefine.categoryAxisMap.get(coordDim);\n\n    if (categoryAxisModel) {\n      if (firstCategoryDimIndex == null) {\n        firstCategoryDimIndex = dimIndex;\n      }\n\n      dimInfo.ordinalMeta = categoryAxisModel.getOrdinalMeta();\n    }\n\n    if (dimInfo.otherDims.itemName != null) {\n      hasNameEncode = true;\n    }\n  });\n\n  if (!hasNameEncode && firstCategoryDimIndex != null) {\n    dimInfoList[firstCategoryDimIndex].otherDims.itemName = 0;\n  }\n\n  var list = new List(dimInfoList, seriesModel);\n  var dimValueGetter = firstCategoryDimIndex != null && isNeedCompleteOrdinalData(source) ? function (itemOpt, dimName, dataIndex, dimIndex) {\n    // Use dataIndex as ordinal value in categoryAxis\n    return dimIndex === firstCategoryDimIndex ? dataIndex : this.defaultDimValueGetter(itemOpt, dimName, dataIndex, dimIndex);\n  } : null;\n  list.hasItemOption = false;\n  list.initData(source, null, dimValueGetter);\n  return list;\n}\n\nfunction isStackable(axisType) {\n  return axisType !== 'category' && axisType !== 'time';\n}\n\nfunction isNeedCompleteOrdinalData(source) {\n  if (source.sourceFormat === SOURCE_FORMAT_ORIGINAL) {\n    var sampleItem = firstDataNotNull(source.data || []);\n    return sampleItem != null && !zrUtil.isArray(getDataItemValue(sampleItem));\n  }\n}\n\nfunction firstDataNotNull(data) {\n  var i = 0;\n\n  while (i < data.length && data[i] == null) {\n    i++;\n  }\n\n  return data[i];\n}\n\nvar _default = createListFromArray;\nmodule.exports = _default;","var createDimensions = require(\"../../data/helper/createDimensions\");\n\nvar List = require(\"../../data/List\");\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar extend = _util.extend;\nvar isArray = _util.isArray;\n\n/**\n * [Usage]:\n * (1)\n * createListSimply(seriesModel, ['value']);\n * (2)\n * createListSimply(seriesModel, {\n *     coordDimensions: ['value'],\n *     dimensionsCount: 5\n * });\n *\n * @param {module:echarts/model/Series} seriesModel\n * @param {Object|Array.<string|Object>} opt opt or coordDimensions\n *        The options in opt, see `echarts/data/helper/createDimensions`\n * @param {Array.<string>} [nameList]\n * @return {module:echarts/data/List}\n */\nfunction _default(seriesModel, opt, nameList) {\n  opt = isArray(opt) && {\n    coordDimensions: opt\n  } || extend({}, opt);\n  var source = seriesModel.getSource();\n  var dimensionsInfo = createDimensions(source, opt);\n  var list = new List(dimensionsInfo, seriesModel);\n  list.initData(source, nameList);\n  return list;\n}\n\nmodule.exports = _default;","var _model = require(\"../../util/model\");\n\nvar makeInner = _model.makeInner;\n\n/**\n * @return {string} If large mode changed, return string 'reset';\n */\nfunction _default() {\n  var inner = makeInner();\n  return function (seriesModel) {\n    var fields = inner(seriesModel);\n    var pipelineContext = seriesModel.pipelineContext;\n    var originalLarge = fields.large;\n    var originalIncremental = fields.incrementalRender;\n    var large = fields.large = pipelineContext.large;\n    var incremental = fields.incrementalRender = pipelineContext.incrementalRender;\n    return (originalLarge ^ large || originalIncremental ^ incremental) && 'reset';\n  };\n}\n\nmodule.exports = _default;","var _dataProvider = require(\"../../data/helper/dataProvider\");\n\nvar retrieveRawValue = _dataProvider.retrieveRawValue;\n\n/**\n * @param {module:echarts/data/List} data\n * @param {number} dataIndex\n * @return {string} label string. Not null/undefined\n */\nfunction getDefaultLabel(data, dataIndex) {\n  var labelDims = data.mapDimension('defaultedLabel', true);\n  var len = labelDims.length; // Simple optimization (in lots of cases, label dims length is 1)\n\n  if (len === 1) {\n    return retrieveRawValue(data, dataIndex, labelDims[0]);\n  } else if (len) {\n    var vals = [];\n\n    for (var i = 0; i < labelDims.length; i++) {\n      var val = retrieveRawValue(data, dataIndex, labelDims[i]);\n      vals.push(val);\n    }\n\n    return vals.join(' ');\n  }\n}\n\nexports.getDefaultLabel = getDefaultLabel;","var zrUtil = require(\"zrender/lib/core/util\");\n\nfunction retrieveTargetInfo(payload, validPayloadTypes, seriesModel) {\n  if (payload && zrUtil.indexOf(validPayloadTypes, payload.type) >= 0) {\n    var root = seriesModel.getData().tree.root;\n    var targetNode = payload.targetNode;\n\n    if (targetNode && root.contains(targetNode)) {\n      return {\n        node: targetNode\n      };\n    }\n\n    var targetNodeId = payload.targetNodeId;\n\n    if (targetNodeId != null && (targetNode = root.getNodeById(targetNodeId))) {\n      return {\n        node: targetNode\n      };\n    }\n  }\n} // Not includes the given node at the last item.\n\n\nfunction getPathToRoot(node) {\n  var path = [];\n\n  while (node) {\n    node = node.parentNode;\n    node && path.push(node);\n  }\n\n  return path.reverse();\n}\n\nfunction aboveViewRoot(viewRoot, node) {\n  var viewPath = getPathToRoot(viewRoot);\n  return zrUtil.indexOf(viewPath, node) >= 0;\n} // From root to the input node (the input node will be included).\n\n\nfunction wrapTreePathInfo(node, seriesModel) {\n  var treePathInfo = [];\n\n  while (node) {\n    var nodeDataIndex = node.dataIndex;\n    treePathInfo.push({\n      name: node.name,\n      dataIndex: nodeDataIndex,\n      value: seriesModel.getRawValue(nodeDataIndex)\n    });\n    node = node.parentNode;\n  }\n\n  treePathInfo.reverse();\n  return treePathInfo;\n}\n\nexports.retrieveTargetInfo = retrieveTargetInfo;\nexports.getPathToRoot = getPathToRoot;\nexports.aboveViewRoot = aboveViewRoot;\nexports.wrapTreePathInfo = wrapTreePathInfo;","var createListSimply = require(\"../helper/createListSimply\");\n\nvar WhiskerBoxDraw = require(\"../helper/WhiskerBoxDraw\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar _dimensionHelper = require(\"../../data/helper/dimensionHelper\");\n\nvar getDimensionTypeByAxis = _dimensionHelper.getDimensionTypeByAxis;\nvar seriesModelMixin = {\n  /**\n   * @private\n   * @type {string}\n   */\n  _baseAxisDim: null,\n\n  /**\n   * @override\n   */\n  getInitialData: function (option, ecModel) {\n    // When both types of xAxis and yAxis are 'value', layout is\n    // needed to be specified by user. Otherwise, layout can be\n    // judged by which axis is category.\n    var ordinalMeta;\n    var xAxisModel = ecModel.getComponent('xAxis', this.get('xAxisIndex'));\n    var yAxisModel = ecModel.getComponent('yAxis', this.get('yAxisIndex'));\n    var xAxisType = xAxisModel.get('type');\n    var yAxisType = yAxisModel.get('type');\n    var addOrdinal; // FIXME\n    // 考虑时间轴\n\n    if (xAxisType === 'category') {\n      option.layout = 'horizontal';\n      ordinalMeta = xAxisModel.getOrdinalMeta();\n      addOrdinal = true;\n    } else if (yAxisType === 'category') {\n      option.layout = 'vertical';\n      ordinalMeta = yAxisModel.getOrdinalMeta();\n      addOrdinal = true;\n    } else {\n      option.layout = option.layout || 'horizontal';\n    }\n\n    var coordDims = ['x', 'y'];\n    var baseAxisDimIndex = option.layout === 'horizontal' ? 0 : 1;\n    var baseAxisDim = this._baseAxisDim = coordDims[baseAxisDimIndex];\n    var otherAxisDim = coordDims[1 - baseAxisDimIndex];\n    var axisModels = [xAxisModel, yAxisModel];\n    var baseAxisType = axisModels[baseAxisDimIndex].get('type');\n    var otherAxisType = axisModels[1 - baseAxisDimIndex].get('type');\n    var data = option.data; // ??? FIXME make a stage to perform data transfrom.\n    // MUST create a new data, consider setOption({}) again.\n\n    if (data && addOrdinal) {\n      var newOptionData = [];\n      zrUtil.each(data, function (item, index) {\n        var newItem;\n\n        if (item.value && zrUtil.isArray(item.value)) {\n          newItem = item.value.slice();\n          item.value.unshift(index);\n        } else if (zrUtil.isArray(item)) {\n          newItem = item.slice();\n          item.unshift(index);\n        } else {\n          newItem = item;\n        }\n\n        newOptionData.push(newItem);\n      });\n      option.data = newOptionData;\n    }\n\n    var defaultValueDimensions = this.defaultValueDimensions;\n    return createListSimply(this, {\n      coordDimensions: [{\n        name: baseAxisDim,\n        type: getDimensionTypeByAxis(baseAxisType),\n        ordinalMeta: ordinalMeta,\n        otherDims: {\n          tooltip: false,\n          itemName: 0\n        },\n        dimsDef: ['base']\n      }, {\n        name: otherAxisDim,\n        type: getDimensionTypeByAxis(otherAxisType),\n        dimsDef: defaultValueDimensions.slice()\n      }],\n      dimensionsCount: defaultValueDimensions.length + 1\n    });\n  },\n\n  /**\n   * If horizontal, base axis is x, otherwise y.\n   * @override\n   */\n  getBaseAxis: function () {\n    var dim = this._baseAxisDim;\n    return this.ecModel.getComponent(dim + 'Axis', this.get(dim + 'AxisIndex')).axis;\n  }\n};\nvar viewMixin = {\n  init: function () {\n    /**\n     * Old data.\n     * @private\n     * @type {module:echarts/chart/helper/WhiskerBoxDraw}\n     */\n    var whiskerBoxDraw = this._whiskerBoxDraw = new WhiskerBoxDraw(this.getStyleUpdater());\n    this.group.add(whiskerBoxDraw.group);\n  },\n  render: function (seriesModel, ecModel, api) {\n    this._whiskerBoxDraw.updateData(seriesModel.getData());\n  },\n  remove: function (ecModel) {\n    this._whiskerBoxDraw.remove();\n  }\n};\nexports.seriesModelMixin = seriesModelMixin;\nexports.viewMixin = viewMixin;","var echarts = require(\"../echarts\");\n\nrequire(\"./line/LineSeries\");\n\nrequire(\"./line/LineView\");\n\nvar visualSymbol = require(\"../visual/symbol\");\n\nvar layoutPoints = require(\"../layout/points\");\n\nvar dataSample = require(\"../processor/dataSample\");\n\nrequire(\"../component/gridSimple\");\n\n// In case developer forget to include grid component\necharts.registerVisual(visualSymbol('line', 'circle', 'line'));\necharts.registerLayout(layoutPoints('line')); // Down sample after filter\n\necharts.registerProcessor(echarts.PRIORITY.PROCESSOR.STATISTIC, dataSample('line'));","var _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar createListFromArray = require(\"../helper/createListFromArray\");\n\nvar SeriesModel = require(\"../../model/Series\");\n\nvar _default = SeriesModel.extend({\n  type: 'series.line',\n  dependencies: ['grid', 'polar'],\n  getInitialData: function (option, ecModel) {\n    return createListFromArray(this.getSource(), this);\n  },\n  defaultOption: {\n    zlevel: 0,\n    // 一级层叠\n    z: 2,\n    // 二级层叠\n    coordinateSystem: 'cartesian2d',\n    legendHoverLink: true,\n    hoverAnimation: true,\n    // stack: null\n    // xAxisIndex: 0,\n    // yAxisIndex: 0,\n    // polarIndex: 0,\n    // If clip the overflow value\n    clipOverflow: true,\n    // cursor: null,\n    label: {\n      position: 'top'\n    },\n    // itemStyle: {\n    // },\n    lineStyle: {\n      width: 2,\n      type: 'solid'\n    },\n    // areaStyle: {origin: 'auto'},\n    // false, 'start', 'end', 'middle'\n    step: false,\n    // Disabled if step is true\n    smooth: false,\n    smoothMonotone: null,\n    // 拐点图形类型\n    symbol: 'emptyCircle',\n    // 拐点图形大小\n    symbolSize: 4,\n    // 拐点图形旋转控制\n    symbolRotate: null,\n    // 是否显示 symbol, 只有在 tooltip hover 的时候显示\n    showSymbol: true,\n    // 标志图形默认只有主轴显示（随主轴标签间隔隐藏策略）\n    showAllSymbol: false,\n    // 是否连接断点\n    connectNulls: false,\n    // 数据过滤，'average', 'max', 'min', 'sum'\n    sampling: 'none',\n    animationEasing: 'linear',\n    // Disable progressive\n    progressive: 0,\n    hoverLayerThreshold: Infinity\n  }\n});\n\nmodule.exports = _default;","var _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar SymbolDraw = require(\"../helper/SymbolDraw\");\n\nvar SymbolClz = require(\"../helper/Symbol\");\n\nvar lineAnimationDiff = require(\"./lineAnimationDiff\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar modelUtil = require(\"../../util/model\");\n\nvar _poly = require(\"./poly\");\n\nvar Polyline = _poly.Polyline;\nvar Polygon = _poly.Polygon;\n\nvar ChartView = require(\"../../view/Chart\");\n\n// FIXME step not support polar\nfunction isPointsSame(points1, points2) {\n  if (points1.length !== points2.length) {\n    return;\n  }\n\n  for (var i = 0; i < points1.length; i++) {\n    var p1 = points1[i];\n    var p2 = points2[i];\n\n    if (p1[0] !== p2[0] || p1[1] !== p2[1]) {\n      return;\n    }\n  }\n\n  return true;\n}\n\nfunction getSmooth(smooth) {\n  return typeof smooth === 'number' ? smooth : smooth ? 0.3 : 0;\n}\n\nfunction getAxisExtentWithGap(axis) {\n  var extent = axis.getGlobalExtent();\n\n  if (axis.onBand) {\n    // Remove extra 1px to avoid line miter in clipped edge\n    var halfBandWidth = axis.getBandWidth() / 2 - 1;\n    var dir = extent[1] > extent[0] ? 1 : -1;\n    extent[0] += dir * halfBandWidth;\n    extent[1] -= dir * halfBandWidth;\n  }\n\n  return extent;\n}\n\nfunction sign(val) {\n  return val >= 0 ? 1 : -1;\n}\n/**\n * @param {module:echarts/coord/cartesian/Cartesian2D|module:echarts/coord/polar/Polar} coordSys\n * @param {module:echarts/data/List} data\n * @param {Array.<Array.<number>>} points\n * @param {string} origin origin of areaStyle. Valid values: 'auto', 'start',\n *                        'end'.\n *                        auto: from axisLine to data\n *                        start: from min to data\n *                        end: from data to max\n * @private\n */\n\n\nfunction getStackedOnPoints(seriesModel, coordSys, data, origin) {\n  var baseAxis = coordSys.getBaseAxis();\n  var valueAxis = coordSys.getOtherAxis(baseAxis);\n  var valueStart = 0;\n  var extent = valueAxis.scale.getExtent();\n\n  if (origin === 'start') {\n    valueStart = extent[0];\n  } else if (origin === 'end') {\n    valueStart = extent[1];\n  } else {\n    // auto\n    var extent = valueAxis.scale.getExtent();\n\n    if (extent[0] > 0) {\n      // Both positive\n      valueStart = extent[0];\n    } else if (extent[1] < 0) {\n      // Both negative\n      valueStart = extent[1];\n    } // If is one positive, and one negative, onZero shall be true\n\n  }\n\n  var valueCoordDim = valueAxis.dim;\n  var baseDataOffset = valueCoordDim === 'x' || valueCoordDim === 'radius' ? 1 : 0;\n  var valueDim = data.mapDimension(valueCoordDim);\n  return data.mapArray(valueDim ? [valueDim] : [], function (val, idx) {\n    var stackedOnSameSign;\n    var stackedOn = data.stackedOn; // Find first stacked value with same sign\n\n    while (stackedOn && sign(stackedOn.get(valueDim, idx)) === sign(val)) {\n      stackedOnSameSign = stackedOn;\n      break;\n    }\n\n    var stackedData = [];\n    stackedData[baseDataOffset] = data.get(baseAxis.dim, idx);\n    stackedData[1 - baseDataOffset] = stackedOnSameSign ? stackedOnSameSign.get(valueDim, idx, true) : valueStart;\n    return coordSys.dataToPoint(stackedData);\n  }, true);\n}\n\nfunction createGridClipShape(cartesian, hasAnimation, seriesModel) {\n  var xExtent = getAxisExtentWithGap(cartesian.getAxis('x'));\n  var yExtent = getAxisExtentWithGap(cartesian.getAxis('y'));\n  var isHorizontal = cartesian.getBaseAxis().isHorizontal();\n  var x = Math.min(xExtent[0], xExtent[1]);\n  var y = Math.min(yExtent[0], yExtent[1]);\n  var width = Math.max(xExtent[0], xExtent[1]) - x;\n  var height = Math.max(yExtent[0], yExtent[1]) - y;\n  var lineWidth = seriesModel.get('lineStyle.width') || 2; // Expand clip shape to avoid clipping when line value exceeds axis\n\n  var expandSize = seriesModel.get('clipOverflow') ? lineWidth / 2 : Math.max(width, height);\n\n  if (isHorizontal) {\n    y -= expandSize;\n    height += expandSize * 2;\n  } else {\n    x -= expandSize;\n    width += expandSize * 2;\n  }\n\n  var clipPath = new graphic.Rect({\n    shape: {\n      x: x,\n      y: y,\n      width: width,\n      height: height\n    }\n  });\n\n  if (hasAnimation) {\n    clipPath.shape[isHorizontal ? 'width' : 'height'] = 0;\n    graphic.initProps(clipPath, {\n      shape: {\n        width: width,\n        height: height\n      }\n    }, seriesModel);\n  }\n\n  return clipPath;\n}\n\nfunction createPolarClipShape(polar, hasAnimation, seriesModel) {\n  var angleAxis = polar.getAngleAxis();\n  var radiusAxis = polar.getRadiusAxis();\n  var radiusExtent = radiusAxis.getExtent();\n  var angleExtent = angleAxis.getExtent();\n  var RADIAN = Math.PI / 180;\n  var clipPath = new graphic.Sector({\n    shape: {\n      cx: polar.cx,\n      cy: polar.cy,\n      r0: radiusExtent[0],\n      r: radiusExtent[1],\n      startAngle: -angleExtent[0] * RADIAN,\n      endAngle: -angleExtent[1] * RADIAN,\n      clockwise: angleAxis.inverse\n    }\n  });\n\n  if (hasAnimation) {\n    clipPath.shape.endAngle = -angleExtent[0] * RADIAN;\n    graphic.initProps(clipPath, {\n      shape: {\n        endAngle: -angleExtent[1] * RADIAN\n      }\n    }, seriesModel);\n  }\n\n  return clipPath;\n}\n\nfunction createClipShape(coordSys, hasAnimation, seriesModel) {\n  return coordSys.type === 'polar' ? createPolarClipShape(coordSys, hasAnimation, seriesModel) : createGridClipShape(coordSys, hasAnimation, seriesModel);\n}\n\nfunction turnPointsIntoStep(points, coordSys, stepTurnAt) {\n  var baseAxis = coordSys.getBaseAxis();\n  var baseIndex = baseAxis.dim === 'x' || baseAxis.dim === 'radius' ? 0 : 1;\n  var stepPoints = [];\n\n  for (var i = 0; i < points.length - 1; i++) {\n    var nextPt = points[i + 1];\n    var pt = points[i];\n    stepPoints.push(pt);\n    var stepPt = [];\n\n    switch (stepTurnAt) {\n      case 'end':\n        stepPt[baseIndex] = nextPt[baseIndex];\n        stepPt[1 - baseIndex] = pt[1 - baseIndex]; // default is start\n\n        stepPoints.push(stepPt);\n        break;\n\n      case 'middle':\n        // default is start\n        var middle = (pt[baseIndex] + nextPt[baseIndex]) / 2;\n        var stepPt2 = [];\n        stepPt[baseIndex] = stepPt2[baseIndex] = middle;\n        stepPt[1 - baseIndex] = pt[1 - baseIndex];\n        stepPt2[1 - baseIndex] = nextPt[1 - baseIndex];\n        stepPoints.push(stepPt);\n        stepPoints.push(stepPt2);\n        break;\n\n      default:\n        stepPt[baseIndex] = pt[baseIndex];\n        stepPt[1 - baseIndex] = nextPt[1 - baseIndex]; // default is start\n\n        stepPoints.push(stepPt);\n    }\n  } // Last points\n\n\n  points[i] && stepPoints.push(points[i]);\n  return stepPoints;\n}\n\nfunction getVisualGradient(data, coordSys) {\n  var visualMetaList = data.getVisual('visualMeta');\n\n  if (!visualMetaList || !visualMetaList.length || !data.count()) {\n    // When data.count() is 0, gradient range can not be calculated.\n    return;\n  }\n\n  var visualMeta;\n\n  for (var i = visualMetaList.length - 1; i >= 0; i--) {\n    // Can only be x or y\n    if (visualMetaList[i].dimension < 2) {\n      visualMeta = visualMetaList[i];\n      break;\n    }\n  }\n\n  if (!visualMeta || coordSys.type !== 'cartesian2d') {\n    return;\n  } // If the area to be rendered is bigger than area defined by LinearGradient,\n  // the canvas spec prescribes that the color of the first stop and the last\n  // stop should be used. But if two stops are added at offset 0, in effect\n  // browsers use the color of the second stop to render area outside\n  // LinearGradient. So we can only infinitesimally extend area defined in\n  // LinearGradient to render `outerColors`.\n\n\n  var dimension = visualMeta.dimension;\n  var dimName = data.dimensions[dimension];\n  var axis = coordSys.getAxis(dimName); // dataToCoor mapping may not be linear, but must be monotonic.\n\n  var colorStops = zrUtil.map(visualMeta.stops, function (stop) {\n    return {\n      coord: axis.toGlobalCoord(axis.dataToCoord(stop.value)),\n      color: stop.color\n    };\n  });\n  var stopLen = colorStops.length;\n  var outerColors = visualMeta.outerColors.slice();\n\n  if (stopLen && colorStops[0].coord > colorStops[stopLen - 1].coord) {\n    colorStops.reverse();\n    outerColors.reverse();\n  }\n\n  var tinyExtent = 10; // Arbitrary value: 10px\n\n  var minCoord = colorStops[0].coord - tinyExtent;\n  var maxCoord = colorStops[stopLen - 1].coord + tinyExtent;\n  var coordSpan = maxCoord - minCoord;\n\n  if (coordSpan < 1e-3) {\n    return 'transparent';\n  }\n\n  zrUtil.each(colorStops, function (stop) {\n    stop.offset = (stop.coord - minCoord) / coordSpan;\n  });\n  colorStops.push({\n    offset: stopLen ? colorStops[stopLen - 1].offset : 0.5,\n    color: outerColors[1] || 'transparent'\n  });\n  colorStops.unshift({\n    // notice colorStops.length have been changed.\n    offset: stopLen ? colorStops[0].offset : 0.5,\n    color: outerColors[0] || 'transparent'\n  }); // zrUtil.each(colorStops, function (colorStop) {\n  //     // Make sure each offset has rounded px to avoid not sharp edge\n  //     colorStop.offset = (Math.round(colorStop.offset * (end - start) + start) - start) / (end - start);\n  // });\n\n  var gradient = new graphic.LinearGradient(0, 0, 0, 0, colorStops, true);\n  gradient[dimName] = minCoord;\n  gradient[dimName + '2'] = maxCoord;\n  return gradient;\n}\n\nvar _default = ChartView.extend({\n  type: 'line',\n  init: function () {\n    var lineGroup = new graphic.Group();\n    var symbolDraw = new SymbolDraw();\n    this.group.add(symbolDraw.group);\n    this._symbolDraw = symbolDraw;\n    this._lineGroup = lineGroup;\n  },\n  render: function (seriesModel, ecModel, api) {\n    var coordSys = seriesModel.coordinateSystem;\n    var group = this.group;\n    var data = seriesModel.getData();\n    var lineStyleModel = seriesModel.getModel('lineStyle');\n    var areaStyleModel = seriesModel.getModel('areaStyle');\n    var points = data.mapArray(data.getItemLayout, true);\n    var isCoordSysPolar = coordSys.type === 'polar';\n    var prevCoordSys = this._coordSys;\n    var symbolDraw = this._symbolDraw;\n    var polyline = this._polyline;\n    var polygon = this._polygon;\n    var lineGroup = this._lineGroup;\n    var hasAnimation = seriesModel.get('animation');\n    var isAreaChart = !areaStyleModel.isEmpty();\n    var origin = areaStyleModel.get('origin');\n    var stackedOnPoints = getStackedOnPoints(seriesModel, coordSys, data, origin);\n    var showSymbol = seriesModel.get('showSymbol');\n\n    var isSymbolIgnore = showSymbol && !isCoordSysPolar && !seriesModel.get('showAllSymbol') && this._getSymbolIgnoreFunc(data, coordSys); // Remove temporary symbols\n\n\n    var oldData = this._data;\n    oldData && oldData.eachItemGraphicEl(function (el, idx) {\n      if (el.__temp) {\n        group.remove(el);\n        oldData.setItemGraphicEl(idx, null);\n      }\n    }); // Remove previous created symbols if showSymbol changed to false\n\n    if (!showSymbol) {\n      symbolDraw.remove();\n    }\n\n    group.add(lineGroup); // FIXME step not support polar\n\n    var step = !isCoordSysPolar && seriesModel.get('step'); // Initialization animation or coordinate system changed\n\n    if (!(polyline && prevCoordSys.type === coordSys.type && step === this._step)) {\n      showSymbol && symbolDraw.updateData(data, isSymbolIgnore);\n\n      if (step) {\n        // TODO If stacked series is not step\n        points = turnPointsIntoStep(points, coordSys, step);\n        stackedOnPoints = turnPointsIntoStep(stackedOnPoints, coordSys, step);\n      }\n\n      polyline = this._newPolyline(points, coordSys, hasAnimation);\n\n      if (isAreaChart) {\n        polygon = this._newPolygon(points, stackedOnPoints, coordSys, hasAnimation);\n      }\n\n      lineGroup.setClipPath(createClipShape(coordSys, true, seriesModel));\n    } else {\n      if (isAreaChart && !polygon) {\n        // If areaStyle is added\n        polygon = this._newPolygon(points, stackedOnPoints, coordSys, hasAnimation);\n      } else if (polygon && !isAreaChart) {\n        // If areaStyle is removed\n        lineGroup.remove(polygon);\n        polygon = this._polygon = null;\n      } // Update clipPath\n\n\n      lineGroup.setClipPath(createClipShape(coordSys, false, seriesModel)); // Always update, or it is wrong in the case turning on legend\n      // because points are not changed\n\n      showSymbol && symbolDraw.updateData(data, isSymbolIgnore); // Stop symbol animation and sync with line points\n      // FIXME performance?\n\n      data.eachItemGraphicEl(function (el) {\n        el.stopAnimation(true);\n      }); // In the case data zoom triggerred refreshing frequently\n      // Data may not change if line has a category axis. So it should animate nothing\n\n      if (!isPointsSame(this._stackedOnPoints, stackedOnPoints) || !isPointsSame(this._points, points)) {\n        if (hasAnimation) {\n          this._updateAnimation(data, stackedOnPoints, coordSys, api, step);\n        } else {\n          // Not do it in update with animation\n          if (step) {\n            // TODO If stacked series is not step\n            points = turnPointsIntoStep(points, coordSys, step);\n            stackedOnPoints = turnPointsIntoStep(stackedOnPoints, coordSys, step);\n          }\n\n          polyline.setShape({\n            points: points\n          });\n          polygon && polygon.setShape({\n            points: points,\n            stackedOnPoints: stackedOnPoints\n          });\n        }\n      }\n    }\n\n    var visualColor = getVisualGradient(data, coordSys) || data.getVisual('color');\n    polyline.useStyle(zrUtil.defaults( // Use color in lineStyle first\n    lineStyleModel.getLineStyle(), {\n      fill: 'none',\n      stroke: visualColor,\n      lineJoin: 'bevel'\n    }));\n    var smooth = seriesModel.get('smooth');\n    smooth = getSmooth(seriesModel.get('smooth'));\n    polyline.setShape({\n      smooth: smooth,\n      smoothMonotone: seriesModel.get('smoothMonotone'),\n      connectNulls: seriesModel.get('connectNulls')\n    });\n\n    if (polygon) {\n      var stackedOn = data.stackedOn;\n      var stackedOnSmooth = 0;\n      polygon.useStyle(zrUtil.defaults(areaStyleModel.getAreaStyle(), {\n        fill: visualColor,\n        opacity: 0.7,\n        lineJoin: 'bevel'\n      }));\n\n      if (stackedOn) {\n        var stackedOnSeries = stackedOn.hostModel;\n        stackedOnSmooth = getSmooth(stackedOnSeries.get('smooth'));\n      }\n\n      polygon.setShape({\n        smooth: smooth,\n        stackedOnSmooth: stackedOnSmooth,\n        smoothMonotone: seriesModel.get('smoothMonotone'),\n        connectNulls: seriesModel.get('connectNulls')\n      });\n    }\n\n    this._data = data; // Save the coordinate system for transition animation when data changed\n\n    this._coordSys = coordSys;\n    this._stackedOnPoints = stackedOnPoints;\n    this._points = points;\n    this._step = step;\n  },\n  dispose: function () {},\n  highlight: function (seriesModel, ecModel, api, payload) {\n    var data = seriesModel.getData();\n    var dataIndex = modelUtil.queryDataIndex(data, payload);\n\n    if (!(dataIndex instanceof Array) && dataIndex != null && dataIndex >= 0) {\n      var symbol = data.getItemGraphicEl(dataIndex);\n\n      if (!symbol) {\n        // Create a temporary symbol if it is not exists\n        var pt = data.getItemLayout(dataIndex);\n\n        if (!pt) {\n          // Null data\n          return;\n        }\n\n        symbol = new SymbolClz(data, dataIndex);\n        symbol.position = pt;\n        symbol.setZ(seriesModel.get('zlevel'), seriesModel.get('z'));\n        symbol.ignore = isNaN(pt[0]) || isNaN(pt[1]);\n        symbol.__temp = true;\n        data.setItemGraphicEl(dataIndex, symbol); // Stop scale animation\n\n        symbol.stopSymbolAnimation(true);\n        this.group.add(symbol);\n      }\n\n      symbol.highlight();\n    } else {\n      // Highlight whole series\n      ChartView.prototype.highlight.call(this, seriesModel, ecModel, api, payload);\n    }\n  },\n  downplay: function (seriesModel, ecModel, api, payload) {\n    var data = seriesModel.getData();\n    var dataIndex = modelUtil.queryDataIndex(data, payload);\n\n    if (dataIndex != null && dataIndex >= 0) {\n      var symbol = data.getItemGraphicEl(dataIndex);\n\n      if (symbol) {\n        if (symbol.__temp) {\n          data.setItemGraphicEl(dataIndex, null);\n          this.group.remove(symbol);\n        } else {\n          symbol.downplay();\n        }\n      }\n    } else {\n      // FIXME\n      // can not downplay completely.\n      // Downplay whole series\n      ChartView.prototype.downplay.call(this, seriesModel, ecModel, api, payload);\n    }\n  },\n\n  /**\n   * @param {module:zrender/container/Group} group\n   * @param {Array.<Array.<number>>} points\n   * @private\n   */\n  _newPolyline: function (points) {\n    var polyline = this._polyline; // Remove previous created polyline\n\n    if (polyline) {\n      this._lineGroup.remove(polyline);\n    }\n\n    polyline = new Polyline({\n      shape: {\n        points: points\n      },\n      silent: true,\n      z2: 10\n    });\n\n    this._lineGroup.add(polyline);\n\n    this._polyline = polyline;\n    return polyline;\n  },\n\n  /**\n   * @param {module:zrender/container/Group} group\n   * @param {Array.<Array.<number>>} stackedOnPoints\n   * @param {Array.<Array.<number>>} points\n   * @private\n   */\n  _newPolygon: function (points, stackedOnPoints) {\n    var polygon = this._polygon; // Remove previous created polygon\n\n    if (polygon) {\n      this._lineGroup.remove(polygon);\n    }\n\n    polygon = new Polygon({\n      shape: {\n        points: points,\n        stackedOnPoints: stackedOnPoints\n      },\n      silent: true\n    });\n\n    this._lineGroup.add(polygon);\n\n    this._polygon = polygon;\n    return polygon;\n  },\n\n  /**\n   * @private\n   */\n  _getSymbolIgnoreFunc: function (data, coordSys) {\n    var categoryAxis = coordSys.getAxesByScale('ordinal')[0]; // `getLabelInterval` is provided by echarts/component/axis\n\n    if (categoryAxis && categoryAxis.isLabelIgnored) {\n      return zrUtil.bind(categoryAxis.isLabelIgnored, categoryAxis);\n    }\n  },\n\n  /**\n   * @private\n   */\n  // FIXME Two value axis\n  _updateAnimation: function (data, stackedOnPoints, coordSys, api, step) {\n    var polyline = this._polyline;\n    var polygon = this._polygon;\n    var seriesModel = data.hostModel;\n    var diff = lineAnimationDiff(this._data, data, this._stackedOnPoints, stackedOnPoints, this._coordSys, coordSys);\n    var current = diff.current;\n    var stackedOnCurrent = diff.stackedOnCurrent;\n    var next = diff.next;\n    var stackedOnNext = diff.stackedOnNext;\n\n    if (step) {\n      // TODO If stacked series is not step\n      current = turnPointsIntoStep(diff.current, coordSys, step);\n      stackedOnCurrent = turnPointsIntoStep(diff.stackedOnCurrent, coordSys, step);\n      next = turnPointsIntoStep(diff.next, coordSys, step);\n      stackedOnNext = turnPointsIntoStep(diff.stackedOnNext, coordSys, step);\n    } // `diff.current` is subset of `current` (which should be ensured by\n    // turnPointsIntoStep), so points in `__points` can be updated when\n    // points in `current` are update during animation.\n\n\n    polyline.shape.__points = diff.current;\n    polyline.shape.points = current;\n    graphic.updateProps(polyline, {\n      shape: {\n        points: next\n      }\n    }, seriesModel);\n\n    if (polygon) {\n      polygon.setShape({\n        points: current,\n        stackedOnPoints: stackedOnCurrent\n      });\n      graphic.updateProps(polygon, {\n        shape: {\n          points: next,\n          stackedOnPoints: stackedOnNext\n        }\n      }, seriesModel);\n    }\n\n    var updatedDataInfo = [];\n    var diffStatus = diff.status;\n\n    for (var i = 0; i < diffStatus.length; i++) {\n      var cmd = diffStatus[i].cmd;\n\n      if (cmd === '=') {\n        var el = data.getItemGraphicEl(diffStatus[i].idx1);\n\n        if (el) {\n          updatedDataInfo.push({\n            el: el,\n            ptIdx: i // Index of points\n\n          });\n        }\n      }\n    }\n\n    if (polyline.animators && polyline.animators.length) {\n      polyline.animators[0].during(function () {\n        for (var i = 0; i < updatedDataInfo.length; i++) {\n          var el = updatedDataInfo[i].el;\n          el.attr('position', polyline.shape.__points[updatedDataInfo[i].ptIdx]);\n        }\n      });\n    }\n  },\n  remove: function (ecModel) {\n    var group = this.group;\n    var oldData = this._data;\n\n    this._lineGroup.removeAll();\n\n    this._symbolDraw.remove(true); // Remove temporary created elements when highlighting\n\n\n    oldData && oldData.eachItemGraphicEl(function (el, idx) {\n      if (el.__temp) {\n        group.remove(el);\n        oldData.setItemGraphicEl(idx, null);\n      }\n    });\n    this._polyline = this._polygon = this._coordSys = this._points = this._stackedOnPoints = this._data = null;\n  }\n});\n\nmodule.exports = _default;","// var arrayDiff = require('zrender/src/core/arrayDiff');\n// 'zrender/src/core/arrayDiff' has been used before, but it did\n// not do well in performance when roam with fixed dataZoom window.\nfunction sign(val) {\n  return val >= 0 ? 1 : -1;\n}\n\nfunction getStackedOnPoint(coordSys, data, idx) {\n  var baseAxis = coordSys.getBaseAxis();\n  var valueAxis = coordSys.getOtherAxis(baseAxis);\n  var valueStart = baseAxis.onZero ? 0 : valueAxis.scale.getExtent()[0];\n  var valueDim = valueAxis.dim;\n  var baseDataOffset = valueDim === 'x' || valueDim === 'radius' ? 1 : 0;\n  var stackedOnSameSign;\n  var stackedOn = data.stackedOn;\n  var val = data.get(valueDim, idx); // Find first stacked value with same sign\n\n  while (stackedOn && sign(stackedOn.get(valueDim, idx)) === sign(val)) {\n    stackedOnSameSign = stackedOn;\n    break;\n  }\n\n  var stackedData = [];\n  stackedData[baseDataOffset] = data.get(baseAxis.dim, idx);\n  stackedData[1 - baseDataOffset] = stackedOnSameSign ? stackedOnSameSign.get(valueDim, idx, true) : valueStart;\n  return coordSys.dataToPoint(stackedData);\n} // function convertToIntId(newIdList, oldIdList) {\n//     // Generate int id instead of string id.\n//     // Compare string maybe slow in score function of arrDiff\n//     // Assume id in idList are all unique\n//     var idIndicesMap = {};\n//     var idx = 0;\n//     for (var i = 0; i < newIdList.length; i++) {\n//         idIndicesMap[newIdList[i]] = idx;\n//         newIdList[i] = idx++;\n//     }\n//     for (var i = 0; i < oldIdList.length; i++) {\n//         var oldId = oldIdList[i];\n//         // Same with newIdList\n//         if (idIndicesMap[oldId]) {\n//             oldIdList[i] = idIndicesMap[oldId];\n//         }\n//         else {\n//             oldIdList[i] = idx++;\n//         }\n//     }\n// }\n\n\nfunction diffData(oldData, newData) {\n  var diffResult = [];\n  newData.diff(oldData).add(function (idx) {\n    diffResult.push({\n      cmd: '+',\n      idx: idx\n    });\n  }).update(function (newIdx, oldIdx) {\n    diffResult.push({\n      cmd: '=',\n      idx: oldIdx,\n      idx1: newIdx\n    });\n  }).remove(function (idx) {\n    diffResult.push({\n      cmd: '-',\n      idx: idx\n    });\n  }).execute();\n  return diffResult;\n}\n\nfunction _default(oldData, newData, oldStackedOnPoints, newStackedOnPoints, oldCoordSys, newCoordSys) {\n  var diff = diffData(oldData, newData); // var newIdList = newData.mapArray(newData.getId);\n  // var oldIdList = oldData.mapArray(oldData.getId);\n  // convertToIntId(newIdList, oldIdList);\n  // // FIXME One data ?\n  // diff = arrayDiff(oldIdList, newIdList);\n\n  var currPoints = [];\n  var nextPoints = []; // Points for stacking base line\n\n  var currStackedPoints = [];\n  var nextStackedPoints = [];\n  var status = [];\n  var sortedIndices = [];\n  var rawIndices = [];\n  var dims = newCoordSys.dimensions;\n\n  for (var i = 0; i < diff.length; i++) {\n    var diffItem = diff[i];\n    var pointAdded = true; // FIXME, animation is not so perfect when dataZoom window moves fast\n    // Which is in case remvoing or add more than one data in the tail or head\n\n    switch (diffItem.cmd) {\n      case '=':\n        var currentPt = oldData.getItemLayout(diffItem.idx);\n        var nextPt = newData.getItemLayout(diffItem.idx1); // If previous data is NaN, use next point directly\n\n        if (isNaN(currentPt[0]) || isNaN(currentPt[1])) {\n          currentPt = nextPt.slice();\n        }\n\n        currPoints.push(currentPt);\n        nextPoints.push(nextPt);\n        currStackedPoints.push(oldStackedOnPoints[diffItem.idx]);\n        nextStackedPoints.push(newStackedOnPoints[diffItem.idx1]);\n        rawIndices.push(newData.getRawIndex(diffItem.idx1));\n        break;\n\n      case '+':\n        var idx = diffItem.idx;\n        currPoints.push(oldCoordSys.dataToPoint([newData.get(dims[0], idx, true), newData.get(dims[1], idx, true)]));\n        nextPoints.push(newData.getItemLayout(idx).slice());\n        currStackedPoints.push(getStackedOnPoint(oldCoordSys, newData, idx));\n        nextStackedPoints.push(newStackedOnPoints[idx]);\n        rawIndices.push(newData.getRawIndex(idx));\n        break;\n\n      case '-':\n        var idx = diffItem.idx;\n        var rawIndex = oldData.getRawIndex(idx); // Data is replaced. In the case of dynamic data queue\n        // FIXME FIXME FIXME\n\n        if (rawIndex !== idx) {\n          currPoints.push(oldData.getItemLayout(idx));\n          nextPoints.push(newCoordSys.dataToPoint([oldData.get(dims[0], idx, true), oldData.get(dims[1], idx, true)]));\n          currStackedPoints.push(oldStackedOnPoints[idx]);\n          nextStackedPoints.push(getStackedOnPoint(newCoordSys, oldData, idx));\n          rawIndices.push(rawIndex);\n        } else {\n          pointAdded = false;\n        }\n\n    } // Original indices\n\n\n    if (pointAdded) {\n      status.push(diffItem);\n      sortedIndices.push(sortedIndices.length);\n    }\n  } // Diff result may be crossed if all items are changed\n  // Sort by data index\n\n\n  sortedIndices.sort(function (a, b) {\n    return rawIndices[a] - rawIndices[b];\n  });\n  var sortedCurrPoints = [];\n  var sortedNextPoints = [];\n  var sortedCurrStackedPoints = [];\n  var sortedNextStackedPoints = [];\n  var sortedStatus = [];\n\n  for (var i = 0; i < sortedIndices.length; i++) {\n    var idx = sortedIndices[i];\n    sortedCurrPoints[i] = currPoints[idx];\n    sortedNextPoints[i] = nextPoints[idx];\n    sortedCurrStackedPoints[i] = currStackedPoints[idx];\n    sortedNextStackedPoints[i] = nextStackedPoints[idx];\n    sortedStatus[i] = status[idx];\n  }\n\n  return {\n    current: sortedCurrPoints,\n    next: sortedNextPoints,\n    stackedOnCurrent: sortedCurrStackedPoints,\n    stackedOnNext: sortedNextStackedPoints,\n    status: sortedStatus\n  };\n}\n\nmodule.exports = _default;","var Path = require(\"zrender/lib/graphic/Path\");\n\nvar vec2 = require(\"zrender/lib/core/vector\");\n\nvar fixClipWithShadow = require(\"zrender/lib/graphic/helper/fixClipWithShadow\");\n\n// Poly path support NaN point\nvar vec2Min = vec2.min;\nvar vec2Max = vec2.max;\nvar scaleAndAdd = vec2.scaleAndAdd;\nvar v2Copy = vec2.copy; // Temporary variable\n\nvar v = [];\nvar cp0 = [];\nvar cp1 = [];\n\nfunction isPointNull(p) {\n  return isNaN(p[0]) || isNaN(p[1]);\n}\n\nfunction drawSegment(ctx, points, start, segLen, allLen, dir, smoothMin, smoothMax, smooth, smoothMonotone, connectNulls) {\n  var prevIdx = 0;\n  var idx = start;\n\n  for (var k = 0; k < segLen; k++) {\n    var p = points[idx];\n\n    if (idx >= allLen || idx < 0) {\n      break;\n    }\n\n    if (isPointNull(p)) {\n      if (connectNulls) {\n        idx += dir;\n        continue;\n      }\n\n      break;\n    }\n\n    if (idx === start) {\n      ctx[dir > 0 ? 'moveTo' : 'lineTo'](p[0], p[1]);\n      v2Copy(cp0, p);\n    } else {\n      if (smooth > 0) {\n        var nextIdx = idx + dir;\n        var nextP = points[nextIdx];\n\n        if (connectNulls) {\n          // Find next point not null\n          while (nextP && isPointNull(points[nextIdx])) {\n            nextIdx += dir;\n            nextP = points[nextIdx];\n          }\n        }\n\n        var ratioNextSeg = 0.5;\n        var prevP = points[prevIdx];\n        var nextP = points[nextIdx]; // Last point\n\n        if (!nextP || isPointNull(nextP)) {\n          v2Copy(cp1, p);\n        } else {\n          // If next data is null in not connect case\n          if (isPointNull(nextP) && !connectNulls) {\n            nextP = p;\n          }\n\n          vec2.sub(v, nextP, prevP);\n          var lenPrevSeg;\n          var lenNextSeg;\n\n          if (smoothMonotone === 'x' || smoothMonotone === 'y') {\n            var dim = smoothMonotone === 'x' ? 0 : 1;\n            lenPrevSeg = Math.abs(p[dim] - prevP[dim]);\n            lenNextSeg = Math.abs(p[dim] - nextP[dim]);\n          } else {\n            lenPrevSeg = vec2.dist(p, prevP);\n            lenNextSeg = vec2.dist(p, nextP);\n          } // Use ratio of seg length\n\n\n          ratioNextSeg = lenNextSeg / (lenNextSeg + lenPrevSeg);\n          scaleAndAdd(cp1, p, v, -smooth * (1 - ratioNextSeg));\n        } // Smooth constraint\n\n\n        vec2Min(cp0, cp0, smoothMax);\n        vec2Max(cp0, cp0, smoothMin);\n        vec2Min(cp1, cp1, smoothMax);\n        vec2Max(cp1, cp1, smoothMin);\n        ctx.bezierCurveTo(cp0[0], cp0[1], cp1[0], cp1[1], p[0], p[1]); // cp0 of next segment\n\n        scaleAndAdd(cp0, p, v, smooth * ratioNextSeg);\n      } else {\n        ctx.lineTo(p[0], p[1]);\n      }\n    }\n\n    prevIdx = idx;\n    idx += dir;\n  }\n\n  return k;\n}\n\nfunction getBoundingBox(points, smoothConstraint) {\n  var ptMin = [Infinity, Infinity];\n  var ptMax = [-Infinity, -Infinity];\n\n  if (smoothConstraint) {\n    for (var i = 0; i < points.length; i++) {\n      var pt = points[i];\n\n      if (pt[0] < ptMin[0]) {\n        ptMin[0] = pt[0];\n      }\n\n      if (pt[1] < ptMin[1]) {\n        ptMin[1] = pt[1];\n      }\n\n      if (pt[0] > ptMax[0]) {\n        ptMax[0] = pt[0];\n      }\n\n      if (pt[1] > ptMax[1]) {\n        ptMax[1] = pt[1];\n      }\n    }\n  }\n\n  return {\n    min: smoothConstraint ? ptMin : ptMax,\n    max: smoothConstraint ? ptMax : ptMin\n  };\n}\n\nvar Polyline = Path.extend({\n  type: 'ec-polyline',\n  shape: {\n    points: [],\n    smooth: 0,\n    smoothConstraint: true,\n    smoothMonotone: null,\n    connectNulls: false\n  },\n  style: {\n    fill: null,\n    stroke: '#000'\n  },\n  brush: fixClipWithShadow(Path.prototype.brush),\n  buildPath: function (ctx, shape) {\n    var points = shape.points;\n    var i = 0;\n    var len = points.length;\n    var result = getBoundingBox(points, shape.smoothConstraint);\n\n    if (shape.connectNulls) {\n      // Must remove first and last null values avoid draw error in polygon\n      for (; len > 0; len--) {\n        if (!isPointNull(points[len - 1])) {\n          break;\n        }\n      }\n\n      for (; i < len; i++) {\n        if (!isPointNull(points[i])) {\n          break;\n        }\n      }\n    }\n\n    while (i < len) {\n      i += drawSegment(ctx, points, i, len, len, 1, result.min, result.max, shape.smooth, shape.smoothMonotone, shape.connectNulls) + 1;\n    }\n  }\n});\nvar Polygon = Path.extend({\n  type: 'ec-polygon',\n  shape: {\n    points: [],\n    // Offset between stacked base points and points\n    stackedOnPoints: [],\n    smooth: 0,\n    stackedOnSmooth: 0,\n    smoothConstraint: true,\n    smoothMonotone: null,\n    connectNulls: false\n  },\n  brush: fixClipWithShadow(Path.prototype.brush),\n  buildPath: function (ctx, shape) {\n    var points = shape.points;\n    var stackedOnPoints = shape.stackedOnPoints;\n    var i = 0;\n    var len = points.length;\n    var smoothMonotone = shape.smoothMonotone;\n    var bbox = getBoundingBox(points, shape.smoothConstraint);\n    var stackedOnBBox = getBoundingBox(stackedOnPoints, shape.smoothConstraint);\n\n    if (shape.connectNulls) {\n      // Must remove first and last null values avoid draw error in polygon\n      for (; len > 0; len--) {\n        if (!isPointNull(points[len - 1])) {\n          break;\n        }\n      }\n\n      for (; i < len; i++) {\n        if (!isPointNull(points[i])) {\n          break;\n        }\n      }\n    }\n\n    while (i < len) {\n      var k = drawSegment(ctx, points, i, len, len, 1, bbox.min, bbox.max, shape.smooth, smoothMonotone, shape.connectNulls);\n      drawSegment(ctx, stackedOnPoints, i + k - 1, k, len, -1, stackedOnBBox.min, stackedOnBBox.max, shape.stackedOnSmooth, smoothMonotone, shape.connectNulls);\n      i += k + 1;\n      ctx.closePath();\n    }\n  }\n});\nexports.Polyline = Polyline;\nexports.Polygon = Polygon;","var echarts = require(\"../echarts\");\n\nrequire(\"./lines/LinesSeries\");\n\nrequire(\"./lines/LinesView\");\n\nvar linesLayout = require(\"./lines/linesLayout\");\n\nvar linesVisual = require(\"./lines/linesVisual\");\n\necharts.registerLayout(linesLayout);\necharts.registerVisual(linesVisual);","var _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar SeriesModel = require(\"../../model/Series\");\n\nvar List = require(\"../../data/List\");\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar concatArray = _util.concatArray;\nvar mergeAll = _util.mergeAll;\nvar map = _util.map;\n\nvar _format = require(\"../../util/format\");\n\nvar encodeHTML = _format.encodeHTML;\n\nvar CoordinateSystem = require(\"../../CoordinateSystem\");\n\nvar globalObj = typeof window === 'undefined' ? global : window;\nvar Uint32Arr = globalObj.Uint32Array || Array;\nvar Float64Arr = globalObj.Float64Array || Array;\n\nfunction compatEc2(seriesOpt) {\n  var data = seriesOpt.data;\n\n  if (data && data[0] && data[0][0] && data[0][0].coord) {\n    seriesOpt.data = map(data, function (itemOpt) {\n      var coords = [itemOpt[0].coord, itemOpt[1].coord];\n      var target = {\n        coords: coords\n      };\n\n      if (itemOpt[0].name) {\n        target.fromName = itemOpt[0].name;\n      }\n\n      if (itemOpt[1].name) {\n        target.toName = itemOpt[1].name;\n      }\n\n      return mergeAll([target, itemOpt[0], itemOpt[1]]);\n    });\n  }\n}\n\nvar LinesSeries = SeriesModel.extend({\n  type: 'series.lines',\n  dependencies: ['grid', 'polar'],\n  visualColorAccessPath: 'lineStyle.color',\n  init: function (option) {\n    // Not using preprocessor because mergeOption may not have series.type\n    compatEc2(option);\n\n    var result = this._processFlatCoordsArray(option.data);\n\n    this._flatCoords = result.flatCoords;\n    this._flatCoordsOffset = result.flatCoordsOffset;\n\n    if (result.flatCoords) {\n      option.data = new Float32Array(result.count);\n    }\n\n    LinesSeries.superApply(this, 'init', arguments);\n  },\n  mergeOption: function (option) {\n    compatEc2(option);\n\n    if (option.data) {\n      // Only update when have option data to merge.\n      var result = this._processFlatCoordsArray(option.data);\n\n      this._flatCoords = result.flatCoords;\n      this._flatCoordsOffset = result.flatCoordsOffset;\n\n      if (result.flatCoords) {\n        option.data = new Float32Array(result.count);\n      }\n    }\n\n    LinesSeries.superApply(this, 'mergeOption', arguments);\n  },\n  appendData: function (params) {\n    var result = this._processFlatCoordsArray(params.data);\n\n    if (result.flatCoords) {\n      if (!this._flatCoords) {\n        this._flatCoords = result.flatCoords;\n        this._flatCoordsOffset = result.flatCoordsOffset;\n      } else {\n        this._flatCoords = concatArray(this._flatCoords, result.flatCoords);\n        this._flatCoordsOffset = concatArray(this._flatCoordsOffset, result.flatCoordsOffset);\n      }\n\n      params.data = new Float32Array(result.count);\n    }\n\n    this.getRawData().appendData(params.data);\n  },\n  _getCoordsFromItemModel: function (idx) {\n    var itemModel = this.getData().getItemModel(idx);\n    var coords = itemModel.option instanceof Array ? itemModel.option : itemModel.getShallow('coords');\n    return coords;\n  },\n  getLineCoordsCount: function (idx) {\n    if (this._flatCoordsOffset) {\n      return this._flatCoordsOffset[idx * 2 + 1];\n    } else {\n      return this._getCoordsFromItemModel(idx).length;\n    }\n  },\n  getLineCoords: function (idx, out) {\n    if (this._flatCoordsOffset) {\n      var offset = this._flatCoordsOffset[idx * 2];\n      var len = this._flatCoordsOffset[idx * 2 + 1];\n\n      for (var i = 0; i < len; i++) {\n        out[i] = out[i] || [];\n        out[i][0] = this._flatCoords[offset + i * 2];\n        out[i][1] = this._flatCoords[offset + i * 2 + 1];\n      }\n\n      return len;\n    } else {\n      var coords = this._getCoordsFromItemModel(idx);\n\n      for (var i = 0; i < coords.length; i++) {\n        out[i] = out[i] || [];\n        out[i][0] = coords[i][0];\n        out[i][1] = coords[i][1];\n      }\n\n      return coords.length;\n    }\n  },\n  _processFlatCoordsArray: function (data) {\n    var startOffset = 0;\n\n    if (this._flatCoords) {\n      startOffset = this._flatCoords.length;\n    } // Stored as a typed array. In format\n    // Points Count(2) | x | y | x | y | Points Count(3) | x |  y | x | y | x | y |\n\n\n    if (typeof data[0] === 'number') {\n      var len = data.length; // Store offset and len of each segment\n\n      var coordsOffsetAndLenStorage = new Uint32Arr(len);\n      var coordsStorage = new Float64Arr(len);\n      var coordsCursor = 0;\n      var offsetCursor = 0;\n      var dataCount = 0;\n\n      for (var i = 0; i < len;) {\n        dataCount++;\n        var count = data[i++]; // Offset\n\n        coordsOffsetAndLenStorage[offsetCursor++] = coordsCursor + startOffset; // Len\n\n        coordsOffsetAndLenStorage[offsetCursor++] = count;\n\n        for (var k = 0; k < count; k++) {\n          var x = data[i++];\n          var y = data[i++];\n          coordsStorage[coordsCursor++] = x;\n          coordsStorage[coordsCursor++] = y;\n\n          if (i > len) {}\n        }\n      }\n\n      return {\n        flatCoordsOffset: new Uint32Array(coordsOffsetAndLenStorage.buffer, 0, offsetCursor),\n        flatCoords: coordsStorage,\n        count: dataCount\n      };\n    }\n\n    return {\n      flatCoordsOffset: null,\n      flatCoords: null,\n      count: data.length\n    };\n  },\n  getInitialData: function (option, ecModel) {\n    var lineData = new List(['value'], this);\n    lineData.hasItemOption = false;\n    lineData.initData(option.data, [], function (dataItem, dimName, dataIndex, dimIndex) {\n      // dataItem is simply coords\n      if (dataItem instanceof Array) {\n        return NaN;\n      } else {\n        lineData.hasItemOption = true;\n        var value = dataItem.value;\n\n        if (value != null) {\n          return value instanceof Array ? value[dimIndex] : value;\n        }\n      }\n    });\n    return lineData;\n  },\n  formatTooltip: function (dataIndex) {\n    var data = this.getData();\n    var itemModel = data.getItemModel(dataIndex);\n    var name = itemModel.get('name');\n\n    if (name) {\n      return name;\n    }\n\n    var fromName = itemModel.get('fromName');\n    var toName = itemModel.get('toName');\n    var html = [];\n    fromName != null && html.push(fromName);\n    toName != null && html.push(toName);\n    return encodeHTML(html.join(' > '));\n  },\n  preventIncremental: function () {\n    return !!this.get('effect.show');\n  },\n  getProgressive: function () {\n    var progressive = this.option.progressive;\n\n    if (progressive == null) {\n      return this.option.large ? 1e4 : this.get('progressive');\n    }\n\n    return progressive;\n  },\n  getProgressiveThreshold: function () {\n    var progressiveThreshold = this.option.progressiveThreshold;\n\n    if (progressiveThreshold == null) {\n      return this.option.large ? 2e4 : this.get('progressiveThreshold');\n    }\n\n    return progressiveThreshold;\n  },\n  defaultOption: {\n    coordinateSystem: 'geo',\n    zlevel: 0,\n    z: 2,\n    legendHoverLink: true,\n    hoverAnimation: true,\n    // Cartesian coordinate system\n    xAxisIndex: 0,\n    yAxisIndex: 0,\n    symbol: ['none', 'none'],\n    symbolSize: [10, 10],\n    // Geo coordinate system\n    geoIndex: 0,\n    effect: {\n      show: false,\n      period: 4,\n      // Animation delay. support callback\n      // delay: 0,\n      // If move with constant speed px/sec\n      // period will be ignored if this property is > 0,\n      constantSpeed: 0,\n      symbol: 'circle',\n      symbolSize: 3,\n      loop: true,\n      // Length of trail, 0 - 1\n      trailLength: 0.2 // Same with lineStyle.color\n      // color\n\n    },\n    large: false,\n    // Available when large is true\n    largeThreshold: 2000,\n    incremental: false,\n    incrementalThreshold: 3000,\n    // If lines are polyline\n    // polyline not support curveness, label, animation\n    polyline: false,\n    label: {\n      show: false,\n      position: 'end' // distance: 5,\n      // formatter: 标签文本格式器，同Tooltip.formatter，不支持异步回调\n\n    },\n    lineStyle: {\n      opacity: 0.5\n    }\n  }\n});\nvar _default = LinesSeries;\nmodule.exports = _default;","var _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar echarts = require(\"../../echarts\");\n\nvar LineDraw = require(\"../helper/LineDraw\");\n\nvar EffectLine = require(\"../helper/EffectLine\");\n\nvar Line = require(\"../helper/Line\");\n\nvar Polyline = require(\"../helper/Polyline\");\n\nvar EffectPolyline = require(\"../helper/EffectPolyline\");\n\nvar LargeLineDraw = require(\"../helper/LargeLineDraw\");\n\nvar linesLayout = require(\"./linesLayout\");\n\nvar _default = echarts.extendChartView({\n  type: 'lines',\n  init: function () {},\n  render: function (seriesModel, ecModel, api) {\n    var data = seriesModel.getData();\n\n    var lineDraw = this._updateLineDraw(data, seriesModel);\n\n    var zlevel = seriesModel.get('zlevel');\n    var trailLength = seriesModel.get('effect.trailLength');\n    var zr = api.getZr(); // Avoid the drag cause ghost shadow\n    // FIXME Better way ?\n    // SVG doesn't support\n\n    var isSvg = zr.painter.getType() === 'svg';\n\n    if (!isSvg) {\n      zr.painter.getLayer(zlevel).clear(true);\n    } // Config layer with motion blur\n\n\n    if (this._lastZlevel != null && !isSvg) {\n      zr.configLayer(this._lastZlevel, {\n        motionBlur: false\n      });\n    }\n\n    if (this._showEffect(seriesModel) && trailLength) {\n      if (!isSvg) {\n        zr.configLayer(zlevel, {\n          motionBlur: true,\n          lastFrameAlpha: Math.max(Math.min(trailLength / 10 + 0.9, 1), 0)\n        });\n      }\n    }\n\n    lineDraw.updateData(data);\n    this._lastZlevel = zlevel;\n    this._finished = true;\n  },\n  incrementalPrepareRender: function (seriesModel, ecModel, api) {\n    var data = seriesModel.getData();\n\n    var lineDraw = this._updateLineDraw(data, seriesModel);\n\n    lineDraw.incrementalPrepareUpdate(data);\n\n    this._clearLayer(api);\n\n    this._finished = false;\n  },\n  incrementalRender: function (taskParams, seriesModel, ecModel) {\n    this._lineDraw.incrementalUpdate(taskParams, seriesModel.getData());\n\n    this._finished = taskParams.end === seriesModel.getData().count();\n  },\n  updateTransform: function (seriesModel, ecModel, api) {\n    var data = seriesModel.getData();\n\n    if (!this._finished || seriesModel.pipelineContext.large) {\n      // TODO Don't have to do update in large mode. Only do it when there are millions of data.\n      return {\n        update: true\n      };\n    } else {\n      // TODO Use same logic with ScatterView.\n      // Manually update layout\n      var res = linesLayout.reset(seriesModel);\n\n      if (res.progress) {\n        res.progress({\n          start: 0,\n          end: data.count()\n        }, data);\n      }\n\n      this._lineDraw.updateLayout();\n\n      this._clearLayer(api);\n    }\n  },\n  _updateLineDraw: function (data, seriesModel) {\n    var lineDraw = this._lineDraw;\n\n    var hasEffect = this._showEffect(seriesModel);\n\n    var isPolyline = !!seriesModel.get('polyline');\n    var pipelineContext = seriesModel.pipelineContext;\n    var isLargeDraw = pipelineContext.large;\n\n    if (!lineDraw || hasEffect !== this._hasEffet || isPolyline !== this._isPolyline || isLargeDraw !== this._isLargeDraw) {\n      if (lineDraw) {\n        lineDraw.remove();\n      }\n\n      lineDraw = this._lineDraw = isLargeDraw ? new LargeLineDraw() : new LineDraw(isPolyline ? hasEffect ? EffectPolyline : Polyline : hasEffect ? EffectLine : Line);\n      this._hasEffet = hasEffect;\n      this._isPolyline = isPolyline;\n      this._isLargeDraw = isLargeDraw;\n      this.group.removeAll();\n    }\n\n    this.group.add(lineDraw.group);\n    return lineDraw;\n  },\n  _showEffect: function (seriesModel) {\n    return !!seriesModel.get('effect.show');\n  },\n  _clearLayer: function (api) {\n    // Not use motion when dragging or zooming\n    var zr = api.getZr();\n    var isSvg = zr.painter.getType() === 'svg';\n\n    if (!isSvg && this._lastZlevel != null) {\n      zr.painter.getLayer(this._lastZlevel).clear(true);\n    }\n  },\n  remove: function (ecModel, api) {\n    this._lineDraw && this._lineDraw.remove();\n    this._lineDraw = null; // Clear motion when lineDraw is removed\n\n    this._clearLayer(api);\n  },\n  dispose: function () {}\n});\n\nmodule.exports = _default;","var createRenderPlanner = require(\"../helper/createRenderPlanner\");\n\nvar _default = {\n  seriesType: 'lines',\n  plan: createRenderPlanner(),\n  reset: function (seriesModel) {\n    var coordSys = seriesModel.coordinateSystem;\n    var isPolyline = seriesModel.get('polyline');\n    var isLarge = seriesModel.pipelineContext.large;\n\n    function progress(params, lineData) {\n      var lineCoords = [];\n\n      if (isLarge) {\n        var points;\n        var segCount = params.end - params.start;\n\n        if (isPolyline) {\n          var totalCoordsCount = 0;\n\n          for (var i = params.start; i < params.end; i++) {\n            totalCoordsCount += seriesModel.getLineCoordsCount(i);\n          }\n\n          points = new Float32Array(segCount + totalCoordsCount * 2);\n        } else {\n          points = new Float32Array(segCount * 2);\n        }\n\n        var offset = 0;\n        var pt = [];\n\n        for (var i = params.start; i < params.end; i++) {\n          var len = seriesModel.getLineCoords(i, lineCoords);\n\n          if (isPolyline) {\n            points[offset++] = len;\n          }\n\n          for (var k = 0; k < len; k++) {\n            pt = coordSys.dataToPoint(lineCoords[k], false, pt);\n            points[offset++] = pt[0];\n            points[offset++] = pt[1];\n          }\n        }\n\n        lineData.setLayout('linesPoints', points);\n      } else {\n        for (var i = params.start; i < params.end; i++) {\n          var itemModel = lineData.getItemModel(i);\n          var len = seriesModel.getLineCoords(i, lineCoords);\n          var pts = [];\n\n          if (isPolyline) {\n            for (var j = 0; j < len; j++) {\n              pts.push(coordSys.dataToPoint(lineCoords[j]));\n            }\n          } else {\n            pts[0] = coordSys.dataToPoint(lineCoords[0]);\n            pts[1] = coordSys.dataToPoint(lineCoords[1]);\n            var curveness = itemModel.get('lineStyle.curveness');\n\n            if (+curveness) {\n              pts[2] = [(pts[0][0] + pts[1][0]) / 2 - (pts[0][1] - pts[1][1]) * curveness, (pts[0][1] + pts[1][1]) / 2 - (pts[1][0] - pts[0][0]) * curveness];\n            }\n          }\n\n          lineData.setItemLayout(i, pts);\n        }\n      }\n    }\n\n    return {\n      progress: progress\n    };\n  }\n};\nmodule.exports = _default;","function normalize(a) {\n  if (!(a instanceof Array)) {\n    a = [a, a];\n  }\n\n  return a;\n}\n\nvar opacityQuery = 'lineStyle.opacity'.split('.');\nvar _default = {\n  seriesType: 'lines',\n  reset: function (seriesModel, ecModel, api) {\n    var symbolType = normalize(seriesModel.get('symbol'));\n    var symbolSize = normalize(seriesModel.get('symbolSize'));\n    var data = seriesModel.getData();\n    data.setVisual('fromSymbol', symbolType && symbolType[0]);\n    data.setVisual('toSymbol', symbolType && symbolType[1]);\n    data.setVisual('fromSymbolSize', symbolSize && symbolSize[0]);\n    data.setVisual('toSymbolSize', symbolSize && symbolSize[1]);\n    data.setVisual('opacity', seriesModel.get(opacityQuery));\n\n    function dataEach(data, idx) {\n      var itemModel = data.getItemModel(idx);\n      var symbolType = normalize(itemModel.getShallow('symbol', true));\n      var symbolSize = normalize(itemModel.getShallow('symbolSize', true));\n      var opacity = itemModel.get(opacityQuery);\n      symbolType[0] && data.setItemVisual(idx, 'fromSymbol', symbolType[0]);\n      symbolType[1] && data.setItemVisual(idx, 'toSymbol', symbolType[1]);\n      symbolSize[0] && data.setItemVisual(idx, 'fromSymbolSize', symbolSize[0]);\n      symbolSize[1] && data.setItemVisual(idx, 'toSymbolSize', symbolSize[1]);\n      data.setItemVisual(idx, 'opacity', opacity);\n    }\n\n    return {\n      dataEach: data.hasItemOption ? dataEach : null\n    };\n  }\n};\nmodule.exports = _default;","var echarts = require(\"../echarts\");\n\nrequire(\"./map/MapSeries\");\n\nrequire(\"./map/MapView\");\n\nrequire(\"../action/geoRoam\");\n\nrequire(\"../coord/geo/geoCreator\");\n\nvar mapSymbolLayout = require(\"./map/mapSymbolLayout\");\n\nvar mapVisual = require(\"./map/mapVisual\");\n\nvar mapDataStatistic = require(\"./map/mapDataStatistic\");\n\nvar backwardCompat = require(\"./map/backwardCompat\");\n\nvar createDataSelectAction = require(\"../action/createDataSelectAction\");\n\necharts.registerLayout(mapSymbolLayout);\necharts.registerVisual(mapVisual);\necharts.registerProcessor(echarts.PRIORITY.PROCESSOR.STATISTIC, mapDataStatistic);\necharts.registerPreprocessor(backwardCompat);\ncreateDataSelectAction('map', [{\n  type: 'mapToggleSelect',\n  event: 'mapselectchanged',\n  method: 'toggleSelected'\n}, {\n  type: 'mapSelect',\n  event: 'mapselected',\n  method: 'select'\n}, {\n  type: 'mapUnSelect',\n  event: 'mapunselected',\n  method: 'unSelect'\n}]);","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar createListSimply = require(\"../helper/createListSimply\");\n\nvar SeriesModel = require(\"../../model/Series\");\n\nvar _format = require(\"../../util/format\");\n\nvar encodeHTML = _format.encodeHTML;\nvar addCommas = _format.addCommas;\n\nvar dataSelectableMixin = require(\"../../component/helper/selectableMixin\");\n\n// import geoCreator from '../../coord/geo/geoCreator';\nvar MapSeries = SeriesModel.extend({\n  type: 'series.map',\n  dependencies: ['geo'],\n  layoutMode: 'box',\n\n  /**\n   * Only first map series of same mapType will drawMap\n   * @type {boolean}\n   */\n  needsDrawMap: false,\n\n  /**\n   * Group of all map series with same mapType\n   * @type {boolean}\n   */\n  seriesGroup: [],\n  init: function (option) {\n    this._fillOption(option, this.getMapType()); // this.option = option;\n\n\n    MapSeries.superApply(this, 'init', arguments);\n    this.updateSelectedMap(this.getRawData());\n  },\n  getInitialData: function (option) {\n    return createListSimply(this, ['value']);\n  },\n  mergeOption: function (newOption) {\n    this._fillOption(newOption, this.getMapType());\n\n    MapSeries.superApply(this, 'mergeOption', arguments);\n    this.updateSelectedMap(this.getRawData());\n  },\n\n  /**\n   * If no host geo model, return null, which means using a\n   * inner exclusive geo model.\n   */\n  getHostGeoModel: function () {\n    var geoIndex = this.option.geoIndex;\n    return geoIndex != null ? this.dependentModels.geo[geoIndex] : null;\n  },\n  getMapType: function () {\n    return (this.getHostGeoModel() || this).option.map;\n  },\n  _fillOption: function (option, mapName) {// Shallow clone\n    // option = zrUtil.extend({}, option);\n    // option.data = geoCreator.getFilledRegions(option.data, mapName, option.nameMap);\n    // return option;\n  },\n  getRawValue: function (dataIndex) {\n    // Use value stored in data instead because it is calculated from multiple series\n    // FIXME Provide all value of multiple series ?\n    var data = this.getData();\n    return data.get(data.mapDimension('value'), dataIndex);\n  },\n\n  /**\n   * Get model of region\n   * @param  {string} name\n   * @return {module:echarts/model/Model}\n   */\n  getRegionModel: function (regionName) {\n    var data = this.getData();\n    return data.getItemModel(data.indexOfName(regionName));\n  },\n\n  /**\n   * Map tooltip formatter\n   *\n   * @param {number} dataIndex\n   */\n  formatTooltip: function (dataIndex) {\n    // FIXME orignalData and data is a bit confusing\n    var data = this.getData();\n    var formattedValue = addCommas(this.getRawValue(dataIndex));\n    var name = data.getName(dataIndex);\n    var seriesGroup = this.seriesGroup;\n    var seriesNames = [];\n\n    for (var i = 0; i < seriesGroup.length; i++) {\n      var otherIndex = seriesGroup[i].originalData.indexOfName(name);\n      var valueDim = data.mapDimension('value');\n\n      if (!isNaN(seriesGroup[i].originalData.get(valueDim, otherIndex))) {\n        seriesNames.push(encodeHTML(seriesGroup[i].name));\n      }\n    }\n\n    return seriesNames.join(', ') + '<br />' + encodeHTML(name + ' : ' + formattedValue);\n  },\n\n  /**\n   * @implement\n   */\n  getTooltipPosition: function (dataIndex) {\n    if (dataIndex != null) {\n      var name = this.getData().getName(dataIndex);\n      var geo = this.coordinateSystem;\n      var region = geo.getRegion(name);\n      return region && geo.dataToPoint(region.center);\n    }\n  },\n  setZoom: function (zoom) {\n    this.option.zoom = zoom;\n  },\n  setCenter: function (center) {\n    this.option.center = center;\n  },\n  defaultOption: {\n    // 一级层叠\n    zlevel: 0,\n    // 二级层叠\n    z: 2,\n    coordinateSystem: 'geo',\n    // map should be explicitly specified since ec3.\n    map: '',\n    // If `geoIndex` is not specified, a exclusive geo will be\n    // created. Otherwise use the specified geo component, and\n    // `map` and `mapType` are ignored.\n    // geoIndex: 0,\n    // 'center' | 'left' | 'right' | 'x%' | {number}\n    left: 'center',\n    // 'center' | 'top' | 'bottom' | 'x%' | {number}\n    top: 'center',\n    // right\n    // bottom\n    // width:\n    // height\n    // Aspect is width / height. Inited to be geoJson bbox aspect\n    // This parameter is used for scale this aspect\n    aspectScale: 0.75,\n    ///// Layout with center and size\n    // If you wan't to put map in a fixed size box with right aspect ratio\n    // This two properties may more conveninet\n    // layoutCenter: [50%, 50%]\n    // layoutSize: 100\n    // 数值合并方式，默认加和，可选为：\n    // 'sum' | 'average' | 'max' | 'min'\n    // mapValueCalculation: 'sum',\n    // 地图数值计算结果小数精度\n    // mapValuePrecision: 0,\n    // 显示图例颜色标识（系列标识的小圆点），图例开启时有效\n    showLegendSymbol: true,\n    // 选择模式，默认关闭，可选single，multiple\n    // selectedMode: false,\n    dataRangeHoverLink: true,\n    // 是否开启缩放及漫游模式\n    // roam: false,\n    // Define left-top, right-bottom coords to control view\n    // For example, [ [180, 90], [-180, -90] ],\n    // higher priority than center and zoom\n    boundingCoords: null,\n    // Default on center of map\n    center: null,\n    zoom: 1,\n    scaleLimit: null,\n    label: {\n      show: false,\n      color: '#000'\n    },\n    // scaleLimit: null,\n    itemStyle: {\n      borderWidth: 0.5,\n      borderColor: '#444',\n      areaColor: '#eee'\n    },\n    emphasis: {\n      label: {\n        show: true,\n        color: 'rgb(100,0,0)'\n      },\n      itemStyle: {\n        areaColor: 'rgba(255,215,0,0.8)'\n      }\n    }\n  }\n});\nzrUtil.mixin(MapSeries, dataSelectableMixin);\nvar _default = MapSeries;\nmodule.exports = _default;","var echarts = require(\"../../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar MapDraw = require(\"../../component/helper/MapDraw\");\n\nvar _default = echarts.extendChartView({\n  type: 'map',\n  render: function (mapModel, ecModel, api, payload) {\n    // Not render if it is an toggleSelect action from self\n    if (payload && payload.type === 'mapToggleSelect' && payload.from === this.uid) {\n      return;\n    }\n\n    var group = this.group;\n    group.removeAll();\n\n    if (mapModel.getHostGeoModel()) {\n      return;\n    } // Not update map if it is an roam action from self\n\n\n    if (!(payload && payload.type === 'geoRoam' && payload.componentType === 'series' && payload.seriesId === mapModel.id)) {\n      if (mapModel.needsDrawMap) {\n        var mapDraw = this._mapDraw || new MapDraw(api, true);\n        group.add(mapDraw.group);\n        mapDraw.draw(mapModel, ecModel, api, this, payload);\n        this._mapDraw = mapDraw;\n      } else {\n        // Remove drawed map\n        this._mapDraw && this._mapDraw.remove();\n        this._mapDraw = null;\n      }\n    } else {\n      var mapDraw = this._mapDraw;\n      mapDraw && group.add(mapDraw.group);\n    }\n\n    mapModel.get('showLegendSymbol') && ecModel.getComponent('legend') && this._renderSymbols(mapModel, ecModel, api);\n  },\n  remove: function () {\n    this._mapDraw && this._mapDraw.remove();\n    this._mapDraw = null;\n    this.group.removeAll();\n  },\n  dispose: function () {\n    this._mapDraw && this._mapDraw.remove();\n    this._mapDraw = null;\n  },\n  _renderSymbols: function (mapModel, ecModel, api) {\n    var originalData = mapModel.originalData;\n    var group = this.group;\n    originalData.each(originalData.mapDimension('value'), function (value, idx) {\n      if (isNaN(value)) {\n        return;\n      }\n\n      var layout = originalData.getItemLayout(idx);\n\n      if (!layout || !layout.point) {\n        // Not exists in map\n        return;\n      }\n\n      var point = layout.point;\n      var offset = layout.offset;\n      var circle = new graphic.Circle({\n        style: {\n          // Because the special of map draw.\n          // Which needs statistic of multiple series and draw on one map.\n          // And each series also need a symbol with legend color\n          //\n          // Layout and visual are put one the different data\n          fill: mapModel.getData().getVisual('color')\n        },\n        shape: {\n          cx: point[0] + offset * 9,\n          cy: point[1],\n          r: 3\n        },\n        silent: true,\n        // Do not overlap the first series, on which labels are displayed.\n        z2: !offset ? 10 : 8\n      }); // First data on the same region\n\n      if (!offset) {\n        var fullData = mapModel.mainSeries.getData();\n        var name = originalData.getName(idx);\n        var fullIndex = fullData.indexOfName(name);\n        var itemModel = originalData.getItemModel(idx);\n        var labelModel = itemModel.getModel('label');\n        var hoverLabelModel = itemModel.getModel('emphasis.label');\n        var polygonGroups = fullData.getItemGraphicEl(fullIndex);\n        var normalText = zrUtil.retrieve2(mapModel.getFormattedLabel(idx, 'normal'), name);\n        var emphasisText = zrUtil.retrieve2(mapModel.getFormattedLabel(idx, 'emphasis'), normalText);\n\n        var onEmphasis = function () {\n          var hoverStyle = graphic.setTextStyle({}, hoverLabelModel, {\n            text: hoverLabelModel.get('show') ? emphasisText : null\n          }, {\n            isRectText: true,\n            useInsideStyle: false\n          }, true);\n          circle.style.extendFrom(hoverStyle); // Make label upper than others if overlaps.\n\n          circle.__mapOriginalZ2 = circle.z2;\n          circle.z2 += 1;\n        };\n\n        var onNormal = function () {\n          graphic.setTextStyle(circle.style, labelModel, {\n            text: labelModel.get('show') ? normalText : null,\n            textPosition: labelModel.getShallow('position') || 'bottom'\n          }, {\n            isRectText: true,\n            useInsideStyle: false\n          });\n\n          if (circle.__mapOriginalZ2 != null) {\n            circle.z2 = circle.__mapOriginalZ2;\n            circle.__mapOriginalZ2 = null;\n          }\n        };\n\n        polygonGroups.on('mouseover', onEmphasis).on('mouseout', onNormal).on('emphasis', onEmphasis).on('normal', onNormal);\n        onNormal();\n      }\n\n      group.add(circle);\n    });\n  }\n});\n\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\nfunction _default(option) {\n  // Save geoCoord\n  var mapSeries = [];\n  zrUtil.each(option.series, function (seriesOpt) {\n    if (seriesOpt && seriesOpt.type === 'map') {\n      mapSeries.push(seriesOpt);\n      seriesOpt.map = seriesOpt.map || seriesOpt.mapType; // Put x, y, width, height, x2, y2 in the top level\n\n      zrUtil.defaults(seriesOpt, seriesOpt.mapLocation);\n    }\n  });\n}\n\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\n// FIXME 公用？\n\n/**\n * @param {Array.<module:echarts/data/List>} datas\n * @param {string} statisticType 'average' 'sum'\n * @inner\n */\nfunction dataStatistics(datas, statisticType) {\n  var dataNameMap = {};\n  zrUtil.each(datas, function (data) {\n    data.each(data.mapDimension('value'), function (value, idx) {\n      // Add prefix to avoid conflict with Object.prototype.\n      var mapKey = 'ec-' + data.getName(idx);\n      dataNameMap[mapKey] = dataNameMap[mapKey] || [];\n\n      if (!isNaN(value)) {\n        dataNameMap[mapKey].push(value);\n      }\n    });\n  });\n  return datas[0].map(datas[0].mapDimension('value'), function (value, idx) {\n    var mapKey = 'ec-' + datas[0].getName(idx);\n    var sum = 0;\n    var min = Infinity;\n    var max = -Infinity;\n    var len = dataNameMap[mapKey].length;\n\n    for (var i = 0; i < len; i++) {\n      min = Math.min(min, dataNameMap[mapKey][i]);\n      max = Math.max(max, dataNameMap[mapKey][i]);\n      sum += dataNameMap[mapKey][i];\n    }\n\n    var result;\n\n    if (statisticType === 'min') {\n      result = min;\n    } else if (statisticType === 'max') {\n      result = max;\n    } else if (statisticType === 'average') {\n      result = sum / len;\n    } else {\n      result = sum;\n    }\n\n    return len === 0 ? NaN : result;\n  });\n}\n\nfunction _default(ecModel) {\n  var seriesGroups = {};\n  ecModel.eachSeriesByType('map', function (seriesModel) {\n    var hostGeoModel = seriesModel.getHostGeoModel();\n    var key = hostGeoModel ? 'o' + hostGeoModel.id : 'i' + seriesModel.getMapType();\n    (seriesGroups[key] = seriesGroups[key] || []).push(seriesModel);\n  });\n  zrUtil.each(seriesGroups, function (seriesList, key) {\n    var data = dataStatistics(zrUtil.map(seriesList, function (seriesModel) {\n      return seriesModel.getData();\n    }), seriesList[0].get('mapValueCalculation'));\n\n    for (var i = 0; i < seriesList.length; i++) {\n      seriesList[i].originalData = seriesList[i].getData();\n    } // FIXME Put where?\n\n\n    for (var i = 0; i < seriesList.length; i++) {\n      seriesList[i].seriesGroup = seriesList;\n      seriesList[i].needsDrawMap = i === 0 && !seriesList[i].getHostGeoModel();\n      seriesList[i].setData(data.cloneShallow());\n      seriesList[i].mainSeries = seriesList[0];\n    }\n  });\n}\n\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\nfunction _default(ecModel) {\n  var processedMapType = {};\n  ecModel.eachSeriesByType('map', function (mapSeries) {\n    var mapType = mapSeries.getMapType();\n\n    if (mapSeries.getHostGeoModel() || processedMapType[mapType]) {\n      return;\n    }\n\n    var mapSymbolOffsets = {};\n    zrUtil.each(mapSeries.seriesGroup, function (subMapSeries) {\n      var geo = subMapSeries.coordinateSystem;\n      var data = subMapSeries.originalData;\n\n      if (subMapSeries.get('showLegendSymbol') && ecModel.getComponent('legend')) {\n        data.each(data.mapDimension('value'), function (value, idx) {\n          var name = data.getName(idx);\n          var region = geo.getRegion(name); // If input series.data is [11, 22, '-'/null/undefined, 44],\n          // it will be filled with NaN: [11, 22, NaN, 44] and NaN will\n          // not be drawn. So here must validate if value is NaN.\n\n          if (!region || isNaN(value)) {\n            return;\n          }\n\n          var offset = mapSymbolOffsets[name] || 0;\n          var point = geo.dataToPoint(region.center);\n          mapSymbolOffsets[name] = offset + 1;\n          data.setItemLayout(idx, {\n            point: point,\n            offset: offset\n          });\n        });\n      }\n    }); // Show label of those region not has legendSymbol(which is offset 0)\n\n    var data = mapSeries.getData();\n    data.each(function (idx) {\n      var name = data.getName(idx);\n      var layout = data.getItemLayout(idx) || {};\n      layout.showLabel = !mapSymbolOffsets[name];\n      data.setItemLayout(idx, layout);\n    });\n    processedMapType[mapType] = true;\n  });\n}\n\nmodule.exports = _default;","function _default(ecModel) {\n  ecModel.eachSeriesByType('map', function (seriesModel) {\n    var colorList = seriesModel.get('color');\n    var itemStyleModel = seriesModel.getModel('itemStyle');\n    var areaColor = itemStyleModel.get('areaColor');\n    var color = itemStyleModel.get('color') || colorList[seriesModel.seriesIndex % colorList.length];\n    seriesModel.getData().setVisual({\n      'areaColor': areaColor,\n      'color': color\n    });\n  });\n}\n\nmodule.exports = _default;","var echarts = require(\"../echarts\");\n\nrequire(\"../component/parallel\");\n\nrequire(\"./parallel/ParallelSeries\");\n\nrequire(\"./parallel/ParallelView\");\n\nvar parallelVisual = require(\"./parallel/parallelVisual\");\n\necharts.registerVisual(parallelVisual);","var _util = require(\"zrender/lib/core/util\");\n\nvar each = _util.each;\nvar createHashMap = _util.createHashMap;\n\nvar SeriesModel = require(\"../../model/Series\");\n\nvar createListFromArray = require(\"../helper/createListFromArray\");\n\nvar _default = SeriesModel.extend({\n  type: 'series.parallel',\n  dependencies: ['parallel'],\n  visualColorAccessPath: 'lineStyle.color',\n  getInitialData: function (option, ecModel) {\n    // Anication is forbiden in progressive data mode.\n    if (this.option.progressive) {\n      this.option.animation = false;\n    }\n\n    var source = this.getSource();\n    setEncodeAndDimensions(source, this);\n    return createListFromArray(source, this);\n  },\n\n  /**\n   * User can get data raw indices on 'axisAreaSelected' event received.\n   *\n   * @public\n   * @param {string} activeState 'active' or 'inactive' or 'normal'\n   * @return {Array.<number>} Raw indices\n   */\n  getRawIndicesByActiveState: function (activeState) {\n    var coordSys = this.coordinateSystem;\n    var data = this.getData();\n    var indices = [];\n    coordSys.eachActiveState(data, function (theActiveState, dataIndex) {\n      if (activeState === theActiveState) {\n        indices.push(data.getRawIndex(dataIndex));\n      }\n    });\n    return indices;\n  },\n  defaultOption: {\n    zlevel: 0,\n    // 一级层叠\n    z: 2,\n    // 二级层叠\n    coordinateSystem: 'parallel',\n    parallelIndex: 0,\n    label: {\n      show: false\n    },\n    inactiveOpacity: 0.05,\n    activeOpacity: 1,\n    lineStyle: {\n      width: 1,\n      opacity: 0.45,\n      type: 'solid'\n    },\n    emphasis: {\n      label: {\n        show: false\n      }\n    },\n    progressive: false,\n    // 100\n    smooth: false,\n    animationEasing: 'linear'\n  }\n});\n\nfunction setEncodeAndDimensions(source, seriesModel) {\n  // The mapping of parallelAxis dimension to data dimension can\n  // be specified in parallelAxis.option.dim. For example, if\n  // parallelAxis.option.dim is 'dim3', it mapping to the third\n  // dimension of data. But `data.encode` has higher priority.\n  // Moreover, parallelModel.dimension should not be regarded as data\n  // dimensions. Consider dimensions = ['dim4', 'dim2', 'dim6'];\n  if (source.encodeDefine) {\n    return;\n  }\n\n  var parallelModel = seriesModel.ecModel.getComponent('parallel', seriesModel.get('parallelIndex'));\n\n  if (!parallelModel) {\n    return;\n  }\n\n  var encodeDefine = source.encodeDefine = createHashMap();\n  each(parallelModel.dimensions, function (axisDim) {\n    var dataDimIndex = convertDimNameToNumber(axisDim);\n    encodeDefine.set(axisDim, dataDimIndex);\n  });\n}\n\nfunction convertDimNameToNumber(dimName) {\n  return +dimName.replace('dim', '');\n}\n\nmodule.exports = _default;","var graphic = require(\"../../util/graphic\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar ChartView = require(\"../../view/Chart\");\n\nvar SMOOTH = 0.3;\nvar ParallelView = ChartView.extend({\n  type: 'parallel',\n  init: function () {\n    /**\n     * @type {module:zrender/container/Group}\n     * @private\n     */\n    this._dataGroup = new graphic.Group();\n    this.group.add(this._dataGroup);\n    /**\n     * @type {module:echarts/data/List}\n     */\n\n    this._data;\n  },\n\n  /**\n   * @override\n   */\n  render: function (seriesModel, ecModel, api, payload) {\n    this._renderForNormal(seriesModel, payload); // this[\n    //     seriesModel.option.progressive\n    //         ? '_renderForProgressive'\n    //         : '_renderForNormal'\n    // ](seriesModel);\n\n  },\n  dispose: function () {},\n\n  /**\n   * @private\n   */\n  _renderForNormal: function (seriesModel, payload) {\n    var dataGroup = this._dataGroup;\n    var data = seriesModel.getData();\n    var oldData = this._data;\n    var coordSys = seriesModel.coordinateSystem;\n    var dimensions = coordSys.dimensions;\n    var option = seriesModel.option;\n    var smooth = option.smooth ? SMOOTH : null; // Consider switch between progressive and not.\n    // oldData && oldData.__plProgressive && dataGroup.removeAll();\n\n    data.diff(oldData).add(add).update(update).remove(remove).execute(); // Update style\n\n    updateElCommon(data, smooth); // First create\n\n    if (!this._data) {\n      var clipPath = createGridClipShape(coordSys, seriesModel, function () {\n        // Callback will be invoked immediately if there is no animation\n        setTimeout(function () {\n          dataGroup.removeClipPath();\n        });\n      });\n      dataGroup.setClipPath(clipPath);\n    }\n\n    this._data = data;\n\n    function add(newDataIndex) {\n      addEl(data, dataGroup, newDataIndex, dimensions, coordSys, null, smooth);\n    }\n\n    function update(newDataIndex, oldDataIndex) {\n      var line = oldData.getItemGraphicEl(oldDataIndex);\n      var points = createLinePoints(data, newDataIndex, dimensions, coordSys);\n      data.setItemGraphicEl(newDataIndex, line);\n      var animationModel = payload && payload.animation === false ? null : seriesModel;\n      graphic.updateProps(line, {\n        shape: {\n          points: points\n        }\n      }, animationModel, newDataIndex);\n    }\n\n    function remove(oldDataIndex) {\n      var line = oldData.getItemGraphicEl(oldDataIndex);\n      dataGroup.remove(line);\n    }\n  },\n\n  /**\n   * @private\n   */\n  // _renderForProgressive: function (seriesModel) {\n  //     var dataGroup = this._dataGroup;\n  //     var data = seriesModel.getData();\n  //     var oldData = this._data;\n  //     var coordSys = seriesModel.coordinateSystem;\n  //     var dimensions = coordSys.dimensions;\n  //     var option = seriesModel.option;\n  //     var progressive = option.progressive;\n  //     var smooth = option.smooth ? SMOOTH : null;\n  //     // In progressive animation is disabled, so use simple data diff,\n  //     // which effects performance less.\n  //     // (Typically performance for data with length 7000+ like:\n  //     // simpleDiff: 60ms, addEl: 184ms,\n  //     // in RMBP 2.4GHz intel i7, OSX 10.9 chrome 50.0.2661.102 (64-bit))\n  //     if (simpleDiff(oldData, data, dimensions)) {\n  //         dataGroup.removeAll();\n  //         data.each(function (dataIndex) {\n  //             addEl(data, dataGroup, dataIndex, dimensions, coordSys);\n  //         });\n  //     }\n  //     updateElCommon(data, progressive, smooth);\n  //     // Consider switch between progressive and not.\n  //     data.__plProgressive = true;\n  //     this._data = data;\n  // },\n\n  /**\n   * @override\n   */\n  remove: function () {\n    this._dataGroup && this._dataGroup.removeAll();\n    this._data = null;\n  }\n});\n\nfunction createGridClipShape(coordSys, seriesModel, cb) {\n  var parallelModel = coordSys.model;\n  var rect = coordSys.getRect();\n  var rectEl = new graphic.Rect({\n    shape: {\n      x: rect.x,\n      y: rect.y,\n      width: rect.width,\n      height: rect.height\n    }\n  });\n  var dim = parallelModel.get('layout') === 'horizontal' ? 'width' : 'height';\n  rectEl.setShape(dim, 0);\n  graphic.initProps(rectEl, {\n    shape: {\n      width: rect.width,\n      height: rect.height\n    }\n  }, seriesModel, cb);\n  return rectEl;\n}\n\nfunction createLinePoints(data, dataIndex, dimensions, coordSys) {\n  var points = [];\n\n  for (var i = 0; i < dimensions.length; i++) {\n    var dimName = dimensions[i];\n    var value = data.get(data.mapDimension(dimName), dataIndex);\n\n    if (!isEmptyValue(value, coordSys.getAxis(dimName).type)) {\n      points.push(coordSys.dataToPoint(value, dimName));\n    }\n  }\n\n  return points;\n}\n\nfunction addEl(data, dataGroup, dataIndex, dimensions, coordSys) {\n  var points = createLinePoints(data, dataIndex, dimensions, coordSys);\n  var line = new graphic.Polyline({\n    shape: {\n      points: points\n    },\n    silent: true,\n    z2: 10\n  });\n  dataGroup.add(line);\n  data.setItemGraphicEl(dataIndex, line);\n}\n\nfunction updateElCommon(data, smooth) {\n  var seriesStyleModel = data.hostModel.getModel('lineStyle');\n  var lineStyle = seriesStyleModel.getLineStyle();\n  data.eachItemGraphicEl(function (line, dataIndex) {\n    if (data.hasItemOption) {\n      var itemModel = data.getItemModel(dataIndex);\n      var lineStyleModel = itemModel.getModel('lineStyle', seriesStyleModel);\n      lineStyle = lineStyleModel.getLineStyle(['color', 'stroke']);\n    }\n\n    line.useStyle(zrUtil.extend(lineStyle, {\n      fill: null,\n      // lineStyle.color have been set to itemVisual in module:echarts/visual/seriesColor.\n      stroke: data.getItemVisual(dataIndex, 'color'),\n      // lineStyle.opacity have been set to itemVisual in parallelVisual.\n      opacity: data.getItemVisual(dataIndex, 'opacity')\n    }));\n    line.shape.smooth = smooth;\n  });\n} // function simpleDiff(oldData, newData, dimensions) {\n//     var oldLen;\n//     if (!oldData\n//         || !oldData.__plProgressive\n//         || (oldLen = oldData.count()) !== newData.count()\n//     ) {\n//         return true;\n//     }\n//     var dimLen = dimensions.length;\n//     for (var i = 0; i < oldLen; i++) {\n//         for (var j = 0; j < dimLen; j++) {\n//             if (oldData.get(dimensions[j], i) !== newData.get(dimensions[j], i)) {\n//                 return true;\n//             }\n//         }\n//     }\n//     return false;\n// }\n// FIXME\n// 公用方法?\n\n\nfunction isEmptyValue(val, axisType) {\n  return axisType === 'category' ? val == null : val == null || isNaN(val); // axisType === 'value'\n}\n\nvar _default = ParallelView;\nmodule.exports = _default;","var opacityAccessPath = ['lineStyle', 'normal', 'opacity'];\n\nfunction _default(ecModel) {\n  ecModel.eachSeriesByType('parallel', function (seriesModel) {\n    var itemStyleModel = seriesModel.getModel('itemStyle');\n    var lineStyleModel = seriesModel.getModel('lineStyle');\n    var globalColors = ecModel.get('color');\n    var color = lineStyleModel.get('color') || itemStyleModel.get('color') || globalColors[seriesModel.seriesIndex % globalColors.length];\n    var inactiveOpacity = seriesModel.get('inactiveOpacity');\n    var activeOpacity = seriesModel.get('activeOpacity');\n    var lineStyle = seriesModel.getModel('lineStyle').getLineStyle();\n    var coordSys = seriesModel.coordinateSystem;\n    var data = seriesModel.getData();\n    var opacityMap = {\n      normal: lineStyle.opacity,\n      active: activeOpacity,\n      inactive: inactiveOpacity\n    };\n    coordSys.eachActiveState(data, function (activeState, dataIndex) {\n      var itemModel = data.getItemModel(dataIndex);\n      var opacity = opacityMap[activeState];\n\n      if (activeState === 'normal') {\n        var itemOpacity = itemModel.get(opacityAccessPath, true);\n        itemOpacity != null && (opacity = itemOpacity);\n      }\n\n      data.setItemVisual(dataIndex, 'opacity', opacity);\n    });\n    data.setVisual('color', color);\n  });\n}\n\nmodule.exports = _default;","var echarts = require(\"../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nrequire(\"../coord/cartesian/Grid\");\n\nrequire(\"./bar/PictorialBarSeries\");\n\nrequire(\"./bar/PictorialBarView\");\n\nvar _barGrid = require(\"../layout/barGrid\");\n\nvar layout = _barGrid.layout;\n\nvar visualSymbol = require(\"../visual/symbol\");\n\nrequire(\"../component/gridSimple\");\n\n// In case developer forget to include grid component\necharts.registerLayout(zrUtil.curry(layout, 'pictorialBar'));\necharts.registerVisual(visualSymbol('pictorialBar', 'roundRect'));","var echarts = require(\"../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nrequire(\"./pie/PieSeries\");\n\nrequire(\"./pie/PieView\");\n\nvar createDataSelectAction = require(\"../action/createDataSelectAction\");\n\nvar dataColor = require(\"../visual/dataColor\");\n\nvar pieLayout = require(\"./pie/pieLayout\");\n\nvar dataFilter = require(\"../processor/dataFilter\");\n\ncreateDataSelectAction('pie', [{\n  type: 'pieToggleSelect',\n  event: 'pieselectchanged',\n  method: 'toggleSelected'\n}, {\n  type: 'pieSelect',\n  event: 'pieselected',\n  method: 'select'\n}, {\n  type: 'pieUnSelect',\n  event: 'pieunselected',\n  method: 'unSelect'\n}]);\necharts.registerVisual(dataColor('pie'));\necharts.registerLayout(zrUtil.curry(pieLayout, 'pie'));\necharts.registerProcessor(dataFilter('pie'));","var echarts = require(\"../../echarts\");\n\nvar createListSimply = require(\"../helper/createListSimply\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar modelUtil = require(\"../../util/model\");\n\nvar _number = require(\"../../util/number\");\n\nvar getPercentWithPrecision = _number.getPercentWithPrecision;\n\nvar dataSelectableMixin = require(\"../../component/helper/selectableMixin\");\n\nvar PieSeries = echarts.extendSeriesModel({\n  type: 'series.pie',\n  // Overwrite\n  init: function (option) {\n    PieSeries.superApply(this, 'init', arguments); // Enable legend selection for each data item\n    // Use a function instead of direct access because data reference may changed\n\n    this.legendDataProvider = function () {\n      return this.getRawData();\n    };\n\n    this.updateSelectedMap(this.getRawData());\n\n    this._defaultLabelLine(option);\n  },\n  // Overwrite\n  mergeOption: function (newOption) {\n    PieSeries.superCall(this, 'mergeOption', newOption);\n    this.updateSelectedMap(this.getRawData());\n  },\n  getInitialData: function (option, ecModel) {\n    return createListSimply(this, ['value']);\n  },\n  // Overwrite\n  getDataParams: function (dataIndex) {\n    var data = this.getData();\n    var params = PieSeries.superCall(this, 'getDataParams', dataIndex); // FIXME toFixed?\n\n    var valueList = [];\n    data.each(data.mapDimension('value'), function (value) {\n      valueList.push(value);\n    });\n    params.percent = getPercentWithPrecision(valueList, dataIndex, data.hostModel.get('percentPrecision'));\n    params.$vars.push('percent');\n    return params;\n  },\n  _defaultLabelLine: function (option) {\n    // Extend labelLine emphasis\n    modelUtil.defaultEmphasis(option, 'labelLine', ['show']);\n    var labelLineNormalOpt = option.labelLine;\n    var labelLineEmphasisOpt = option.emphasis.labelLine; // Not show label line if `label.normal.show = false`\n\n    labelLineNormalOpt.show = labelLineNormalOpt.show && option.label.show;\n    labelLineEmphasisOpt.show = labelLineEmphasisOpt.show && option.emphasis.label.show;\n  },\n  defaultOption: {\n    zlevel: 0,\n    z: 2,\n    legendHoverLink: true,\n    hoverAnimation: true,\n    // 默认全局居中\n    center: ['50%', '50%'],\n    radius: [0, '75%'],\n    // 默认顺时针\n    clockwise: true,\n    startAngle: 90,\n    // 最小角度改为0\n    minAngle: 0,\n    // 选中时扇区偏移量\n    selectedOffset: 10,\n    // 高亮扇区偏移量\n    hoverOffset: 10,\n    // If use strategy to avoid label overlapping\n    avoidLabelOverlap: true,\n    // 选择模式，默认关闭，可选single，multiple\n    // selectedMode: false,\n    // 南丁格尔玫瑰图模式，'radius'（半径） | 'area'（面积）\n    // roseType: null,\n    percentPrecision: 2,\n    // If still show when all data zero.\n    stillShowZeroSum: true,\n    // cursor: null,\n    label: {\n      // If rotate around circle\n      rotate: false,\n      show: true,\n      // 'outer', 'inside', 'center'\n      position: 'outer' // formatter: 标签文本格式器，同Tooltip.formatter，不支持异步回调\n      // 默认使用全局文本样式，详见TEXTSTYLE\n      // distance: 当position为inner时有效，为label位置到圆心的距离与圆半径(环状图为内外半径和)的比例系数\n\n    },\n    // Enabled when label.normal.position is 'outer'\n    labelLine: {\n      show: true,\n      // 引导线两段中的第一段长度\n      length: 15,\n      // 引导线两段中的第二段长度\n      length2: 15,\n      smooth: false,\n      lineStyle: {\n        // color: 各异,\n        width: 1,\n        type: 'solid'\n      }\n    },\n    itemStyle: {\n      borderWidth: 1\n    },\n    // Animation type canbe expansion, scale\n    animationType: 'expansion',\n    animationEasing: 'cubicOut'\n  }\n});\nzrUtil.mixin(PieSeries, dataSelectableMixin);\nvar _default = PieSeries;\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar ChartView = require(\"../../view/Chart\");\n\n/**\n * @param {module:echarts/model/Series} seriesModel\n * @param {boolean} hasAnimation\n * @inner\n */\nfunction updateDataSelected(uid, seriesModel, hasAnimation, api) {\n  var data = seriesModel.getData();\n  var dataIndex = this.dataIndex;\n  var name = data.getName(dataIndex);\n  var selectedOffset = seriesModel.get('selectedOffset');\n  api.dispatchAction({\n    type: 'pieToggleSelect',\n    from: uid,\n    name: name,\n    seriesId: seriesModel.id\n  });\n  data.each(function (idx) {\n    toggleItemSelected(data.getItemGraphicEl(idx), data.getItemLayout(idx), seriesModel.isSelected(data.getName(idx)), selectedOffset, hasAnimation);\n  });\n}\n/**\n * @param {module:zrender/graphic/Sector} el\n * @param {Object} layout\n * @param {boolean} isSelected\n * @param {number} selectedOffset\n * @param {boolean} hasAnimation\n * @inner\n */\n\n\nfunction toggleItemSelected(el, layout, isSelected, selectedOffset, hasAnimation) {\n  var midAngle = (layout.startAngle + layout.endAngle) / 2;\n  var dx = Math.cos(midAngle);\n  var dy = Math.sin(midAngle);\n  var offset = isSelected ? selectedOffset : 0;\n  var position = [dx * offset, dy * offset];\n  hasAnimation // animateTo will stop revious animation like update transition\n  ? el.animate().when(200, {\n    position: position\n  }).start('bounceOut') : el.attr('position', position);\n}\n/**\n * Piece of pie including Sector, Label, LabelLine\n * @constructor\n * @extends {module:zrender/graphic/Group}\n */\n\n\nfunction PiePiece(data, idx) {\n  graphic.Group.call(this);\n  var sector = new graphic.Sector({\n    z2: 2\n  });\n  var polyline = new graphic.Polyline();\n  var text = new graphic.Text();\n  this.add(sector);\n  this.add(polyline);\n  this.add(text);\n  this.updateData(data, idx, true); // Hover to change label and labelLine\n\n  function onEmphasis() {\n    polyline.ignore = polyline.hoverIgnore;\n    text.ignore = text.hoverIgnore;\n  }\n\n  function onNormal() {\n    polyline.ignore = polyline.normalIgnore;\n    text.ignore = text.normalIgnore;\n  }\n\n  this.on('emphasis', onEmphasis).on('normal', onNormal).on('mouseover', onEmphasis).on('mouseout', onNormal);\n}\n\nvar piePieceProto = PiePiece.prototype;\n\npiePieceProto.updateData = function (data, idx, firstCreate) {\n  var sector = this.childAt(0);\n  var seriesModel = data.hostModel;\n  var itemModel = data.getItemModel(idx);\n  var layout = data.getItemLayout(idx);\n  var sectorShape = zrUtil.extend({}, layout);\n  sectorShape.label = null;\n\n  if (firstCreate) {\n    sector.setShape(sectorShape);\n    var animationType = seriesModel.getShallow('animationType');\n\n    if (animationType === 'scale') {\n      sector.shape.r = layout.r0;\n      graphic.initProps(sector, {\n        shape: {\n          r: layout.r\n        }\n      }, seriesModel, idx);\n    } // Expansion\n    else {\n        sector.shape.endAngle = layout.startAngle;\n        graphic.updateProps(sector, {\n          shape: {\n            endAngle: layout.endAngle\n          }\n        }, seriesModel, idx);\n      }\n  } else {\n    graphic.updateProps(sector, {\n      shape: sectorShape\n    }, seriesModel, idx);\n  } // Update common style\n\n\n  var visualColor = data.getItemVisual(idx, 'color');\n  sector.useStyle(zrUtil.defaults({\n    lineJoin: 'bevel',\n    fill: visualColor\n  }, itemModel.getModel('itemStyle').getItemStyle()));\n  sector.hoverStyle = itemModel.getModel('emphasis.itemStyle').getItemStyle();\n  var cursorStyle = itemModel.getShallow('cursor');\n  cursorStyle && sector.attr('cursor', cursorStyle); // Toggle selected\n\n  toggleItemSelected(this, data.getItemLayout(idx), seriesModel.isSelected(null, idx), seriesModel.get('selectedOffset'), seriesModel.get('animation'));\n\n  function onEmphasis() {\n    // Sector may has animation of updating data. Force to move to the last frame\n    // Or it may stopped on the wrong shape\n    sector.stopAnimation(true);\n    sector.animateTo({\n      shape: {\n        r: layout.r + seriesModel.get('hoverOffset')\n      }\n    }, 300, 'elasticOut');\n  }\n\n  function onNormal() {\n    sector.stopAnimation(true);\n    sector.animateTo({\n      shape: {\n        r: layout.r\n      }\n    }, 300, 'elasticOut');\n  }\n\n  sector.off('mouseover').off('mouseout').off('emphasis').off('normal');\n\n  if (itemModel.get('hoverAnimation') && seriesModel.isAnimationEnabled()) {\n    sector.on('mouseover', onEmphasis).on('mouseout', onNormal).on('emphasis', onEmphasis).on('normal', onNormal);\n  }\n\n  this._updateLabel(data, idx);\n\n  graphic.setHoverStyle(this);\n};\n\npiePieceProto._updateLabel = function (data, idx) {\n  var labelLine = this.childAt(1);\n  var labelText = this.childAt(2);\n  var seriesModel = data.hostModel;\n  var itemModel = data.getItemModel(idx);\n  var layout = data.getItemLayout(idx);\n  var labelLayout = layout.label;\n  var visualColor = data.getItemVisual(idx, 'color');\n  graphic.updateProps(labelLine, {\n    shape: {\n      points: labelLayout.linePoints || [[labelLayout.x, labelLayout.y], [labelLayout.x, labelLayout.y], [labelLayout.x, labelLayout.y]]\n    }\n  }, seriesModel, idx);\n  graphic.updateProps(labelText, {\n    style: {\n      x: labelLayout.x,\n      y: labelLayout.y\n    }\n  }, seriesModel, idx);\n  labelText.attr({\n    rotation: labelLayout.rotation,\n    origin: [labelLayout.x, labelLayout.y],\n    z2: 10\n  });\n  var labelModel = itemModel.getModel('label');\n  var labelHoverModel = itemModel.getModel('emphasis.label');\n  var labelLineModel = itemModel.getModel('labelLine');\n  var labelLineHoverModel = itemModel.getModel('emphasis.labelLine');\n  var visualColor = data.getItemVisual(idx, 'color');\n  graphic.setLabelStyle(labelText.style, labelText.hoverStyle = {}, labelModel, labelHoverModel, {\n    labelFetcher: data.hostModel,\n    labelDataIndex: idx,\n    defaultText: data.getName(idx),\n    autoColor: visualColor,\n    useInsideStyle: !!labelLayout.inside\n  }, {\n    textAlign: labelLayout.textAlign,\n    textVerticalAlign: labelLayout.verticalAlign,\n    opacity: data.getItemVisual(idx, 'opacity')\n  });\n  labelText.ignore = labelText.normalIgnore = !labelModel.get('show');\n  labelText.hoverIgnore = !labelHoverModel.get('show');\n  labelLine.ignore = labelLine.normalIgnore = !labelLineModel.get('show');\n  labelLine.hoverIgnore = !labelLineHoverModel.get('show'); // Default use item visual color\n\n  labelLine.setStyle({\n    stroke: visualColor,\n    opacity: data.getItemVisual(idx, 'opacity')\n  });\n  labelLine.setStyle(labelLineModel.getModel('lineStyle').getLineStyle());\n  labelLine.hoverStyle = labelLineHoverModel.getModel('lineStyle').getLineStyle();\n  var smooth = labelLineModel.get('smooth');\n\n  if (smooth && smooth === true) {\n    smooth = 0.4;\n  }\n\n  labelLine.setShape({\n    smooth: smooth\n  });\n};\n\nzrUtil.inherits(PiePiece, graphic.Group); // Pie view\n\nvar PieView = ChartView.extend({\n  type: 'pie',\n  init: function () {\n    var sectorGroup = new graphic.Group();\n    this._sectorGroup = sectorGroup;\n  },\n  render: function (seriesModel, ecModel, api, payload) {\n    if (payload && payload.from === this.uid) {\n      return;\n    }\n\n    var data = seriesModel.getData();\n    var oldData = this._data;\n    var group = this.group;\n    var hasAnimation = ecModel.get('animation');\n    var isFirstRender = !oldData;\n    var animationType = seriesModel.get('animationType');\n    var onSectorClick = zrUtil.curry(updateDataSelected, this.uid, seriesModel, hasAnimation, api);\n    var selectedMode = seriesModel.get('selectedMode');\n    data.diff(oldData).add(function (idx) {\n      var piePiece = new PiePiece(data, idx); // Default expansion animation\n\n      if (isFirstRender && animationType !== 'scale') {\n        piePiece.eachChild(function (child) {\n          child.stopAnimation(true);\n        });\n      }\n\n      selectedMode && piePiece.on('click', onSectorClick);\n      data.setItemGraphicEl(idx, piePiece);\n      group.add(piePiece);\n    }).update(function (newIdx, oldIdx) {\n      var piePiece = oldData.getItemGraphicEl(oldIdx);\n      piePiece.updateData(data, newIdx);\n      piePiece.off('click');\n      selectedMode && piePiece.on('click', onSectorClick);\n      group.add(piePiece);\n      data.setItemGraphicEl(newIdx, piePiece);\n    }).remove(function (idx) {\n      var piePiece = oldData.getItemGraphicEl(idx);\n      group.remove(piePiece);\n    }).execute();\n\n    if (hasAnimation && isFirstRender && data.count() > 0 // Default expansion animation\n    && animationType !== 'scale') {\n      var shape = data.getItemLayout(0);\n      var r = Math.max(api.getWidth(), api.getHeight()) / 2;\n      var removeClipPath = zrUtil.bind(group.removeClipPath, group);\n      group.setClipPath(this._createClipPath(shape.cx, shape.cy, r, shape.startAngle, shape.clockwise, removeClipPath, seriesModel));\n    }\n\n    this._data = data;\n  },\n  dispose: function () {},\n  _createClipPath: function (cx, cy, r, startAngle, clockwise, cb, seriesModel) {\n    var clipPath = new graphic.Sector({\n      shape: {\n        cx: cx,\n        cy: cy,\n        r0: 0,\n        r: r,\n        startAngle: startAngle,\n        endAngle: startAngle,\n        clockwise: clockwise\n      }\n    });\n    graphic.initProps(clipPath, {\n      shape: {\n        endAngle: startAngle + (clockwise ? 1 : -1) * Math.PI * 2\n      }\n    }, seriesModel, cb);\n    return clipPath;\n  },\n\n  /**\n   * @implement\n   */\n  containPoint: function (point, seriesModel) {\n    var data = seriesModel.getData();\n    var itemLayout = data.getItemLayout(0);\n\n    if (itemLayout) {\n      var dx = point[0] - itemLayout.cx;\n      var dy = point[1] - itemLayout.cy;\n      var radius = Math.sqrt(dx * dx + dy * dy);\n      return radius <= itemLayout.r && radius >= itemLayout.r0;\n    }\n  }\n});\nvar _default = PieView;\nmodule.exports = _default;","var textContain = require(\"zrender/lib/contain/text\");\n\n// FIXME emphasis label position is not same with normal label position\nfunction adjustSingleSide(list, cx, cy, r, dir, viewWidth, viewHeight) {\n  list.sort(function (a, b) {\n    return a.y - b.y;\n  }); // 压\n\n  function shiftDown(start, end, delta, dir) {\n    for (var j = start; j < end; j++) {\n      list[j].y += delta;\n\n      if (j > start && j + 1 < end && list[j + 1].y > list[j].y + list[j].height) {\n        shiftUp(j, delta / 2);\n        return;\n      }\n    }\n\n    shiftUp(end - 1, delta / 2);\n  } // 弹\n\n\n  function shiftUp(end, delta) {\n    for (var j = end; j >= 0; j--) {\n      list[j].y -= delta;\n\n      if (j > 0 && list[j].y > list[j - 1].y + list[j - 1].height) {\n        break;\n      }\n    }\n  }\n\n  function changeX(list, isDownList, cx, cy, r, dir) {\n    var lastDeltaX = dir > 0 ? isDownList // 右侧\n    ? Number.MAX_VALUE // 下\n    : 0 // 上\n    : isDownList // 左侧\n    ? Number.MAX_VALUE // 下\n    : 0; // 上\n\n    for (var i = 0, l = list.length; i < l; i++) {\n      // Not change x for center label\n      if (list[i].position === 'center') {\n        continue;\n      }\n\n      var deltaY = Math.abs(list[i].y - cy);\n      var length = list[i].len;\n      var length2 = list[i].len2;\n      var deltaX = deltaY < r + length ? Math.sqrt((r + length + length2) * (r + length + length2) - deltaY * deltaY) : Math.abs(list[i].x - cx);\n\n      if (isDownList && deltaX >= lastDeltaX) {\n        // 右下，左下\n        deltaX = lastDeltaX - 10;\n      }\n\n      if (!isDownList && deltaX <= lastDeltaX) {\n        // 右上，左上\n        deltaX = lastDeltaX + 10;\n      }\n\n      list[i].x = cx + deltaX * dir;\n      lastDeltaX = deltaX;\n    }\n  }\n\n  var lastY = 0;\n  var delta;\n  var len = list.length;\n  var upList = [];\n  var downList = [];\n\n  for (var i = 0; i < len; i++) {\n    delta = list[i].y - lastY;\n\n    if (delta < 0) {\n      shiftDown(i, len, -delta, dir);\n    }\n\n    lastY = list[i].y + list[i].height;\n  }\n\n  if (viewHeight - lastY < 0) {\n    shiftUp(len - 1, lastY - viewHeight);\n  }\n\n  for (var i = 0; i < len; i++) {\n    if (list[i].y >= cy) {\n      downList.push(list[i]);\n    } else {\n      upList.push(list[i]);\n    }\n  }\n\n  changeX(upList, false, cx, cy, r, dir);\n  changeX(downList, true, cx, cy, r, dir);\n}\n\nfunction avoidOverlap(labelLayoutList, cx, cy, r, viewWidth, viewHeight) {\n  var leftList = [];\n  var rightList = [];\n\n  for (var i = 0; i < labelLayoutList.length; i++) {\n    if (labelLayoutList[i].x < cx) {\n      leftList.push(labelLayoutList[i]);\n    } else {\n      rightList.push(labelLayoutList[i]);\n    }\n  }\n\n  adjustSingleSide(rightList, cx, cy, r, 1, viewWidth, viewHeight);\n  adjustSingleSide(leftList, cx, cy, r, -1, viewWidth, viewHeight);\n\n  for (var i = 0; i < labelLayoutList.length; i++) {\n    var linePoints = labelLayoutList[i].linePoints;\n\n    if (linePoints) {\n      var dist = linePoints[1][0] - linePoints[2][0];\n\n      if (labelLayoutList[i].x < cx) {\n        linePoints[2][0] = labelLayoutList[i].x + 3;\n      } else {\n        linePoints[2][0] = labelLayoutList[i].x - 3;\n      }\n\n      linePoints[1][1] = linePoints[2][1] = labelLayoutList[i].y;\n      linePoints[1][0] = linePoints[2][0] + dist;\n    }\n  }\n}\n\nfunction _default(seriesModel, r, viewWidth, viewHeight) {\n  var data = seriesModel.getData();\n  var labelLayoutList = [];\n  var cx;\n  var cy;\n  var hasLabelRotate = false;\n  data.each(function (idx) {\n    var layout = data.getItemLayout(idx);\n    var itemModel = data.getItemModel(idx);\n    var labelModel = itemModel.getModel('label'); // Use position in normal or emphasis\n\n    var labelPosition = labelModel.get('position') || itemModel.get('emphasis.label.position');\n    var labelLineModel = itemModel.getModel('labelLine');\n    var labelLineLen = labelLineModel.get('length');\n    var labelLineLen2 = labelLineModel.get('length2');\n    var midAngle = (layout.startAngle + layout.endAngle) / 2;\n    var dx = Math.cos(midAngle);\n    var dy = Math.sin(midAngle);\n    var textX;\n    var textY;\n    var linePoints;\n    var textAlign;\n    cx = layout.cx;\n    cy = layout.cy;\n    var isLabelInside = labelPosition === 'inside' || labelPosition === 'inner';\n\n    if (labelPosition === 'center') {\n      textX = layout.cx;\n      textY = layout.cy;\n      textAlign = 'center';\n    } else {\n      var x1 = (isLabelInside ? (layout.r + layout.r0) / 2 * dx : layout.r * dx) + cx;\n      var y1 = (isLabelInside ? (layout.r + layout.r0) / 2 * dy : layout.r * dy) + cy;\n      textX = x1 + dx * 3;\n      textY = y1 + dy * 3;\n\n      if (!isLabelInside) {\n        // For roseType\n        var x2 = x1 + dx * (labelLineLen + r - layout.r);\n        var y2 = y1 + dy * (labelLineLen + r - layout.r);\n        var x3 = x2 + (dx < 0 ? -1 : 1) * labelLineLen2;\n        var y3 = y2;\n        textX = x3 + (dx < 0 ? -5 : 5);\n        textY = y3;\n        linePoints = [[x1, y1], [x2, y2], [x3, y3]];\n      }\n\n      textAlign = isLabelInside ? 'center' : dx > 0 ? 'left' : 'right';\n    }\n\n    var font = labelModel.getFont();\n    var labelRotate = labelModel.get('rotate') ? dx < 0 ? -midAngle + Math.PI : -midAngle : 0;\n    var text = seriesModel.getFormattedLabel(idx, 'normal') || data.getName(idx);\n    var textRect = textContain.getBoundingRect(text, font, textAlign, 'top');\n    hasLabelRotate = !!labelRotate;\n    layout.label = {\n      x: textX,\n      y: textY,\n      position: labelPosition,\n      height: textRect.height,\n      len: labelLineLen,\n      len2: labelLineLen2,\n      linePoints: linePoints,\n      textAlign: textAlign,\n      verticalAlign: 'middle',\n      rotation: labelRotate,\n      inside: isLabelInside\n    }; // Not layout the inside label\n\n    if (!isLabelInside) {\n      labelLayoutList.push(layout.label);\n    }\n  });\n\n  if (!hasLabelRotate && seriesModel.get('avoidLabelOverlap')) {\n    avoidOverlap(labelLayoutList, cx, cy, r, viewWidth, viewHeight);\n  }\n}\n\nmodule.exports = _default;","var _number = require(\"../../util/number\");\n\nvar parsePercent = _number.parsePercent;\nvar linearMap = _number.linearMap;\n\nvar labelLayout = require(\"./labelLayout\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar PI2 = Math.PI * 2;\nvar RADIAN = Math.PI / 180;\n\nfunction _default(seriesType, ecModel, api, payload) {\n  ecModel.eachSeriesByType(seriesType, function (seriesModel) {\n    var data = seriesModel.getData();\n    var valueDim = data.mapDimension('value');\n    var center = seriesModel.get('center');\n    var radius = seriesModel.get('radius');\n\n    if (!zrUtil.isArray(radius)) {\n      radius = [0, radius];\n    }\n\n    if (!zrUtil.isArray(center)) {\n      center = [center, center];\n    }\n\n    var width = api.getWidth();\n    var height = api.getHeight();\n    var size = Math.min(width, height);\n    var cx = parsePercent(center[0], width);\n    var cy = parsePercent(center[1], height);\n    var r0 = parsePercent(radius[0], size / 2);\n    var r = parsePercent(radius[1], size / 2);\n    var startAngle = -seriesModel.get('startAngle') * RADIAN;\n    var minAngle = seriesModel.get('minAngle') * RADIAN;\n    var validDataCount = 0;\n    data.each(valueDim, function (value) {\n      !isNaN(value) && validDataCount++;\n    });\n    var sum = data.getSum(valueDim); // Sum may be 0\n\n    var unitRadian = Math.PI / (sum || validDataCount) * 2;\n    var clockwise = seriesModel.get('clockwise');\n    var roseType = seriesModel.get('roseType');\n    var stillShowZeroSum = seriesModel.get('stillShowZeroSum'); // [0...max]\n\n    var extent = data.getDataExtent(valueDim);\n    extent[0] = 0; // In the case some sector angle is smaller than minAngle\n\n    var restAngle = PI2;\n    var valueSumLargerThanMinAngle = 0;\n    var currentAngle = startAngle;\n    var dir = clockwise ? 1 : -1;\n    data.each(valueDim, function (value, idx) {\n      var angle;\n\n      if (isNaN(value)) {\n        data.setItemLayout(idx, {\n          angle: NaN,\n          startAngle: NaN,\n          endAngle: NaN,\n          clockwise: clockwise,\n          cx: cx,\n          cy: cy,\n          r0: r0,\n          r: roseType ? NaN : r\n        });\n        return;\n      } // FIXME 兼容 2.0 但是 roseType 是 area 的时候才是这样？\n\n\n      if (roseType !== 'area') {\n        angle = sum === 0 && stillShowZeroSum ? unitRadian : value * unitRadian;\n      } else {\n        angle = PI2 / validDataCount;\n      }\n\n      if (angle < minAngle) {\n        angle = minAngle;\n        restAngle -= minAngle;\n      } else {\n        valueSumLargerThanMinAngle += value;\n      }\n\n      var endAngle = currentAngle + dir * angle;\n      data.setItemLayout(idx, {\n        angle: angle,\n        startAngle: currentAngle,\n        endAngle: endAngle,\n        clockwise: clockwise,\n        cx: cx,\n        cy: cy,\n        r0: r0,\n        r: roseType ? linearMap(value, extent, [r0, r]) : r\n      });\n      currentAngle = endAngle;\n    }, true); // Some sector is constrained by minAngle\n    // Rest sectors needs recalculate angle\n\n    if (restAngle < PI2 && validDataCount) {\n      // Average the angle if rest angle is not enough after all angles is\n      // Constrained by minAngle\n      if (restAngle <= 1e-3) {\n        var angle = PI2 / validDataCount;\n        data.each(valueDim, function (value, idx) {\n          if (!isNaN(value)) {\n            var layout = data.getItemLayout(idx);\n            layout.angle = angle;\n            layout.startAngle = startAngle + dir * idx * angle;\n            layout.endAngle = startAngle + dir * (idx + 1) * angle;\n          }\n        });\n      } else {\n        unitRadian = restAngle / valueSumLargerThanMinAngle;\n        currentAngle = startAngle;\n        data.each(valueDim, function (value, idx) {\n          if (!isNaN(value)) {\n            var layout = data.getItemLayout(idx);\n            var angle = layout.angle === minAngle ? minAngle : value * unitRadian;\n            layout.startAngle = currentAngle;\n            layout.endAngle = currentAngle + dir * angle;\n            currentAngle += dir * angle;\n          }\n        });\n      }\n    }\n\n    labelLayout(seriesModel, r, width, height);\n  });\n}\n\nmodule.exports = _default;","var echarts = require(\"../echarts\");\n\nrequire(\"../component/radar\");\n\nrequire(\"./radar/RadarSeries\");\n\nrequire(\"./radar/RadarView\");\n\nvar dataColor = require(\"../visual/dataColor\");\n\nvar visualSymbol = require(\"../visual/symbol\");\n\nvar radarLayout = require(\"./radar/radarLayout\");\n\nvar dataFilter = require(\"../processor/dataFilter\");\n\nvar backwardCompat = require(\"./radar/backwardCompat\");\n\n// Must use radar component\necharts.registerVisual(dataColor('radar'));\necharts.registerVisual(visualSymbol('radar', 'circle'));\necharts.registerLayout(radarLayout);\necharts.registerProcessor(dataFilter('radar'));\necharts.registerPreprocessor(backwardCompat);","var SeriesModel = require(\"../../model/Series\");\n\nvar createListSimply = require(\"../helper/createListSimply\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar _format = require(\"../../util/format\");\n\nvar encodeHTML = _format.encodeHTML;\nvar RadarSeries = SeriesModel.extend({\n  type: 'series.radar',\n  dependencies: ['radar'],\n  // Overwrite\n  init: function (option) {\n    RadarSeries.superApply(this, 'init', arguments); // Enable legend selection for each data item\n    // Use a function instead of direct access because data reference may changed\n\n    this.legendDataProvider = function () {\n      return this.getRawData();\n    };\n  },\n  getInitialData: function (option, ecModel) {\n    return createListSimply(this, {\n      extraPrefix: 'indicator_',\n      extraFromZero: true\n    });\n  },\n  formatTooltip: function (dataIndex) {\n    var data = this.getData();\n    var coordSys = this.coordinateSystem;\n    var indicatorAxes = coordSys.getIndicatorAxes();\n    var name = this.getData().getName(dataIndex);\n    return encodeHTML(name === '' ? this.name : name) + '<br/>' + zrUtil.map(indicatorAxes, function (axis, idx) {\n      var val = data.get(data.mapDimension(axis.dim), dataIndex);\n      return encodeHTML(axis.name + ' : ' + val);\n    }).join('<br />');\n  },\n  defaultOption: {\n    zlevel: 0,\n    z: 2,\n    coordinateSystem: 'radar',\n    legendHoverLink: true,\n    radarIndex: 0,\n    lineStyle: {\n      width: 2,\n      type: 'solid'\n    },\n    label: {\n      position: 'top'\n    },\n    // areaStyle: {\n    // },\n    // itemStyle: {}\n    symbol: 'emptyCircle',\n    symbolSize: 4 // symbolRotate: null\n\n  }\n});\nvar _default = RadarSeries;\nmodule.exports = _default;","var echarts = require(\"../../echarts\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar symbolUtil = require(\"../../util/symbol\");\n\nfunction normalizeSymbolSize(symbolSize) {\n  if (!zrUtil.isArray(symbolSize)) {\n    symbolSize = [+symbolSize, +symbolSize];\n  }\n\n  return symbolSize;\n}\n\nvar _default = echarts.extendChartView({\n  type: 'radar',\n  render: function (seriesModel, ecModel, api) {\n    var polar = seriesModel.coordinateSystem;\n    var group = this.group;\n    var data = seriesModel.getData();\n    var oldData = this._data;\n\n    function createSymbol(data, idx) {\n      var symbolType = data.getItemVisual(idx, 'symbol') || 'circle';\n      var color = data.getItemVisual(idx, 'color');\n\n      if (symbolType === 'none') {\n        return;\n      }\n\n      var symbolSize = normalizeSymbolSize(data.getItemVisual(idx, 'symbolSize'));\n      var symbolPath = symbolUtil.createSymbol(symbolType, -1, -1, 2, 2, color);\n      symbolPath.attr({\n        style: {\n          strokeNoScale: true\n        },\n        z2: 100,\n        scale: [symbolSize[0] / 2, symbolSize[1] / 2]\n      });\n      return symbolPath;\n    }\n\n    function updateSymbols(oldPoints, newPoints, symbolGroup, data, idx, isInit) {\n      // Simply rerender all\n      symbolGroup.removeAll();\n\n      for (var i = 0; i < newPoints.length - 1; i++) {\n        var symbolPath = createSymbol(data, idx);\n\n        if (symbolPath) {\n          symbolPath.__dimIdx = i;\n\n          if (oldPoints[i]) {\n            symbolPath.attr('position', oldPoints[i]);\n            graphic[isInit ? 'initProps' : 'updateProps'](symbolPath, {\n              position: newPoints[i]\n            }, seriesModel, idx);\n          } else {\n            symbolPath.attr('position', newPoints[i]);\n          }\n\n          symbolGroup.add(symbolPath);\n        }\n      }\n    }\n\n    function getInitialPoints(points) {\n      return zrUtil.map(points, function (pt) {\n        return [polar.cx, polar.cy];\n      });\n    }\n\n    data.diff(oldData).add(function (idx) {\n      var points = data.getItemLayout(idx);\n\n      if (!points) {\n        return;\n      }\n\n      var polygon = new graphic.Polygon();\n      var polyline = new graphic.Polyline();\n      var target = {\n        shape: {\n          points: points\n        }\n      };\n      polygon.shape.points = getInitialPoints(points);\n      polyline.shape.points = getInitialPoints(points);\n      graphic.initProps(polygon, target, seriesModel, idx);\n      graphic.initProps(polyline, target, seriesModel, idx);\n      var itemGroup = new graphic.Group();\n      var symbolGroup = new graphic.Group();\n      itemGroup.add(polyline);\n      itemGroup.add(polygon);\n      itemGroup.add(symbolGroup);\n      updateSymbols(polyline.shape.points, points, symbolGroup, data, idx, true);\n      data.setItemGraphicEl(idx, itemGroup);\n    }).update(function (newIdx, oldIdx) {\n      var itemGroup = oldData.getItemGraphicEl(oldIdx);\n      var polyline = itemGroup.childAt(0);\n      var polygon = itemGroup.childAt(1);\n      var symbolGroup = itemGroup.childAt(2);\n      var target = {\n        shape: {\n          points: data.getItemLayout(newIdx)\n        }\n      };\n\n      if (!target.shape.points) {\n        return;\n      }\n\n      updateSymbols(polyline.shape.points, target.shape.points, symbolGroup, data, newIdx, false);\n      graphic.updateProps(polyline, target, seriesModel);\n      graphic.updateProps(polygon, target, seriesModel);\n      data.setItemGraphicEl(newIdx, itemGroup);\n    }).remove(function (idx) {\n      group.remove(oldData.getItemGraphicEl(idx));\n    }).execute();\n    data.eachItemGraphicEl(function (itemGroup, idx) {\n      var itemModel = data.getItemModel(idx);\n      var polyline = itemGroup.childAt(0);\n      var polygon = itemGroup.childAt(1);\n      var symbolGroup = itemGroup.childAt(2);\n      var color = data.getItemVisual(idx, 'color');\n      group.add(itemGroup);\n      polyline.useStyle(zrUtil.defaults(itemModel.getModel('lineStyle').getLineStyle(), {\n        fill: 'none',\n        stroke: color\n      }));\n      polyline.hoverStyle = itemModel.getModel('emphasis.lineStyle').getLineStyle();\n      var areaStyleModel = itemModel.getModel('areaStyle');\n      var hoverAreaStyleModel = itemModel.getModel('emphasis.areaStyle');\n      var polygonIgnore = areaStyleModel.isEmpty() && areaStyleModel.parentModel.isEmpty();\n      var hoverPolygonIgnore = hoverAreaStyleModel.isEmpty() && hoverAreaStyleModel.parentModel.isEmpty();\n      hoverPolygonIgnore = hoverPolygonIgnore && polygonIgnore;\n      polygon.ignore = polygonIgnore;\n      polygon.useStyle(zrUtil.defaults(areaStyleModel.getAreaStyle(), {\n        fill: color,\n        opacity: 0.7\n      }));\n      polygon.hoverStyle = hoverAreaStyleModel.getAreaStyle();\n      var itemStyle = itemModel.getModel('itemStyle').getItemStyle(['color']);\n      var itemHoverStyle = itemModel.getModel('emphasis.itemStyle').getItemStyle();\n      var labelModel = itemModel.getModel('label');\n      var labelHoverModel = itemModel.getModel('emphasis.label');\n      symbolGroup.eachChild(function (symbolPath) {\n        symbolPath.setStyle(itemStyle);\n        symbolPath.hoverStyle = zrUtil.clone(itemHoverStyle);\n        graphic.setLabelStyle(symbolPath.style, symbolPath.hoverStyle, labelModel, labelHoverModel, {\n          labelFetcher: data.hostModel,\n          labelDataIndex: idx,\n          labelDimIndex: symbolPath.__dimIdx,\n          defaultText: data.get(data.dimensions[symbolPath.__dimIdx], idx),\n          autoColor: color,\n          isRectText: true\n        });\n      });\n\n      function onEmphasis() {\n        polygon.attr('ignore', hoverPolygonIgnore);\n      }\n\n      function onNormal() {\n        polygon.attr('ignore', polygonIgnore);\n      }\n\n      itemGroup.off('mouseover').off('mouseout').off('normal').off('emphasis');\n      itemGroup.on('emphasis', onEmphasis).on('mouseover', onEmphasis).on('normal', onNormal).on('mouseout', onNormal);\n      graphic.setHoverStyle(itemGroup);\n    });\n    this._data = data;\n  },\n  remove: function () {\n    this.group.removeAll();\n    this._data = null;\n  },\n  dispose: function () {}\n});\n\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\n// Backward compat for radar chart in 2\nfunction _default(option) {\n  var polarOptArr = option.polar;\n\n  if (polarOptArr) {\n    if (!zrUtil.isArray(polarOptArr)) {\n      polarOptArr = [polarOptArr];\n    }\n\n    var polarNotRadar = [];\n    zrUtil.each(polarOptArr, function (polarOpt, idx) {\n      if (polarOpt.indicator) {\n        if (polarOpt.type && !polarOpt.shape) {\n          polarOpt.shape = polarOpt.type;\n        }\n\n        option.radar = option.radar || [];\n\n        if (!zrUtil.isArray(option.radar)) {\n          option.radar = [option.radar];\n        }\n\n        option.radar.push(polarOpt);\n      } else {\n        polarNotRadar.push(polarOpt);\n      }\n    });\n    option.polar = polarNotRadar;\n  }\n\n  zrUtil.each(option.series, function (seriesOpt) {\n    if (seriesOpt && seriesOpt.type === 'radar' && seriesOpt.polarIndex) {\n      seriesOpt.radarIndex = seriesOpt.polarIndex;\n    }\n  });\n}\n\nmodule.exports = _default;","function _default(ecModel) {\n  ecModel.eachSeriesByType('radar', function (seriesModel) {\n    var data = seriesModel.getData();\n    var points = [];\n    var coordSys = seriesModel.coordinateSystem;\n\n    if (!coordSys) {\n      return;\n    }\n\n    function pointsConverter(val, idx) {\n      points[idx] = points[idx] || [];\n      points[idx][i] = coordSys.dataToPoint(val, i);\n    }\n\n    var axes = coordSys.getIndicatorAxes();\n\n    for (var i = 0; i < coordSys.getIndicatorAxes().length; i++) {\n      data.each(data.mapDimension(axes[i].dim), pointsConverter);\n    }\n\n    data.each(function (idx) {\n      // Close polygon\n      points[idx][0] && points[idx].push(points[idx][0].slice());\n      data.setItemLayout(idx, points[idx]);\n    });\n  });\n}\n\nmodule.exports = _default;","var echarts = require(\"../echarts\");\n\nrequire(\"./sankey/SankeySeries\");\n\nrequire(\"./sankey/SankeyView\");\n\nvar sankeyLayout = require(\"./sankey/sankeyLayout\");\n\nvar sankeyVisual = require(\"./sankey/sankeyVisual\");\n\necharts.registerLayout(sankeyLayout);\necharts.registerVisual(sankeyVisual);","var SeriesModel = require(\"../../model/Series\");\n\nvar createGraphFromNodeEdge = require(\"../helper/createGraphFromNodeEdge\");\n\nvar _format = require(\"../../util/format\");\n\nvar encodeHTML = _format.encodeHTML;\n\n/**\n * @file Get initial data and define sankey view's series model\n * @author Deqing Li(annong035@gmail.com)\n */\nvar SankeySeries = SeriesModel.extend({\n  type: 'series.sankey',\n  layoutInfo: null,\n\n  /**\n   * Init a graph data structure from data in option series\n   *\n   * @param  {Object} option  the object used to config echarts view\n   * @return {module:echarts/data/List} storage initial data\n   */\n  getInitialData: function (option) {\n    var links = option.edges || option.links;\n    var nodes = option.data || option.nodes;\n\n    if (nodes && links) {\n      var graph = createGraphFromNodeEdge(nodes, links, this, true);\n      return graph.data;\n    }\n  },\n\n  /**\n   * Return the graphic data structure\n   *\n   * @return {module:echarts/data/Graph} graphic data structure\n   */\n  getGraph: function () {\n    return this.getData().graph;\n  },\n\n  /**\n   * Get edge data of graphic data structure\n   *\n   * @return {module:echarts/data/List} data structure of list\n   */\n  getEdgeData: function () {\n    return this.getGraph().edgeData;\n  },\n\n  /**\n   * @override\n   */\n  formatTooltip: function (dataIndex, multipleSeries, dataType) {\n    // dataType === 'node' or empty do not show tooltip by default\n    if (dataType === 'edge') {\n      var params = this.getDataParams(dataIndex, dataType);\n      var rawDataOpt = params.data;\n      var html = rawDataOpt.source + ' -- ' + rawDataOpt.target;\n\n      if (params.value) {\n        html += ' : ' + params.value;\n      }\n\n      return encodeHTML(html);\n    }\n\n    return SankeySeries.superCall(this, 'formatTooltip', dataIndex, multipleSeries);\n  },\n  defaultOption: {\n    zlevel: 0,\n    z: 2,\n    coordinateSystem: 'view',\n    layout: null,\n    // the position of the whole view\n    left: '5%',\n    top: '5%',\n    right: '20%',\n    bottom: '5%',\n    // the dx of the node\n    nodeWidth: 20,\n    // the vertical distance between two nodes\n    nodeGap: 8,\n    // the number of iterations to change the position of the node\n    layoutIterations: 32,\n    label: {\n      show: true,\n      position: 'right',\n      color: '#000',\n      fontSize: 12\n    },\n    itemStyle: {\n      borderWidth: 1,\n      borderColor: '#333'\n    },\n    lineStyle: {\n      color: '#314656',\n      opacity: 0.2,\n      curveness: 0.5\n    },\n    emphasis: {\n      label: {\n        show: true\n      },\n      lineStyle: {\n        opacity: 0.6\n      }\n    },\n    animationEasing: 'linear',\n    animationDuration: 1000\n  }\n});\nvar _default = SankeySeries;\nmodule.exports = _default;","var graphic = require(\"../../util/graphic\");\n\nvar echarts = require(\"../../echarts\");\n\n/**\n * @file  The file used to draw sankey view\n * @author  Deqing Li(annong035@gmail.com)\n */\nvar SankeyShape = graphic.extendShape({\n  shape: {\n    x1: 0,\n    y1: 0,\n    x2: 0,\n    y2: 0,\n    cpx1: 0,\n    cpy1: 0,\n    cpx2: 0,\n    cpy2: 0,\n    extent: 0\n  },\n  buildPath: function (ctx, shape) {\n    var halfExtent = shape.extent / 2;\n    ctx.moveTo(shape.x1, shape.y1 - halfExtent);\n    ctx.bezierCurveTo(shape.cpx1, shape.cpy1 - halfExtent, shape.cpx2, shape.cpy2 - halfExtent, shape.x2, shape.y2 - halfExtent);\n    ctx.lineTo(shape.x2, shape.y2 + halfExtent);\n    ctx.bezierCurveTo(shape.cpx2, shape.cpy2 + halfExtent, shape.cpx1, shape.cpy1 + halfExtent, shape.x1, shape.y1 + halfExtent);\n    ctx.closePath();\n  }\n});\n\nvar _default = echarts.extendChartView({\n  type: 'sankey',\n\n  /**\n   * @private\n   * @type {module:echarts/chart/sankey/SankeySeries}\n   */\n  _model: null,\n  render: function (seriesModel, ecModel, api) {\n    var graph = seriesModel.getGraph();\n    var group = this.group;\n    var layoutInfo = seriesModel.layoutInfo;\n    var nodeData = seriesModel.getData();\n    var edgeData = seriesModel.getData('edge');\n    this._model = seriesModel;\n    group.removeAll();\n    group.attr('position', [layoutInfo.x, layoutInfo.y]); // generate a bezire Curve for each edge\n\n    graph.eachEdge(function (edge) {\n      var curve = new SankeyShape();\n      curve.dataIndex = edge.dataIndex;\n      curve.seriesIndex = seriesModel.seriesIndex;\n      curve.dataType = 'edge';\n      var lineStyleModel = edge.getModel('lineStyle');\n      var curvature = lineStyleModel.get('curveness');\n      var n1Layout = edge.node1.getLayout();\n      var n2Layout = edge.node2.getLayout();\n      var edgeLayout = edge.getLayout();\n      curve.shape.extent = Math.max(1, edgeLayout.dy);\n      var x1 = n1Layout.x + n1Layout.dx;\n      var y1 = n1Layout.y + edgeLayout.sy + edgeLayout.dy / 2;\n      var x2 = n2Layout.x;\n      var y2 = n2Layout.y + edgeLayout.ty + edgeLayout.dy / 2;\n      var cpx1 = x1 * (1 - curvature) + x2 * curvature;\n      var cpy1 = y1;\n      var cpx2 = x1 * curvature + x2 * (1 - curvature);\n      var cpy2 = y2;\n      curve.setShape({\n        x1: x1,\n        y1: y1,\n        x2: x2,\n        y2: y2,\n        cpx1: cpx1,\n        cpy1: cpy1,\n        cpx2: cpx2,\n        cpy2: cpy2\n      });\n      curve.setStyle(lineStyleModel.getItemStyle()); // Special color, use source node color or target node color\n\n      switch (curve.style.fill) {\n        case 'source':\n          curve.style.fill = edge.node1.getVisual('color');\n          break;\n\n        case 'target':\n          curve.style.fill = edge.node2.getVisual('color');\n          break;\n      }\n\n      graphic.setHoverStyle(curve, edge.getModel('emphasis.lineStyle').getItemStyle());\n      group.add(curve);\n      edgeData.setItemGraphicEl(edge.dataIndex, curve);\n    }); // generate a rect  for each node\n\n    graph.eachNode(function (node) {\n      var layout = node.getLayout();\n      var itemModel = node.getModel();\n      var labelModel = itemModel.getModel('label');\n      var labelHoverModel = itemModel.getModel('emphasis.label');\n      var rect = new graphic.Rect({\n        shape: {\n          x: layout.x,\n          y: layout.y,\n          width: node.getLayout().dx,\n          height: node.getLayout().dy\n        },\n        style: itemModel.getModel('itemStyle').getItemStyle()\n      });\n      var hoverStyle = node.getModel('emphasis.itemStyle').getItemStyle();\n      graphic.setLabelStyle(rect.style, hoverStyle, labelModel, labelHoverModel, {\n        labelFetcher: seriesModel,\n        labelDataIndex: node.dataIndex,\n        defaultText: node.id,\n        isRectText: true\n      });\n      rect.setStyle('fill', node.getVisual('color'));\n      graphic.setHoverStyle(rect, hoverStyle);\n      group.add(rect);\n      nodeData.setItemGraphicEl(node.dataIndex, rect);\n      rect.dataType = 'node';\n    });\n\n    if (!this._data && seriesModel.get('animation')) {\n      group.setClipPath(createGridClipShape(group.getBoundingRect(), seriesModel, function () {\n        group.removeClipPath();\n      }));\n    }\n\n    this._data = seriesModel.getData();\n  },\n  dispose: function () {}\n}); // add animation to the view\n\n\nfunction createGridClipShape(rect, seriesModel, cb) {\n  var rectEl = new graphic.Rect({\n    shape: {\n      x: rect.x - 10,\n      y: rect.y - 10,\n      width: 0,\n      height: rect.height + 20\n    }\n  });\n  graphic.initProps(rectEl, {\n    shape: {\n      width: rect.width + 20,\n      height: rect.height + 20\n    }\n  }, seriesModel, cb);\n  return rectEl;\n}\n\nmodule.exports = _default;","var layout = require(\"../../util/layout\");\n\nvar nest = require(\"../../util/array/nest\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\n/**\n * @file The layout algorithm of sankey view\n * @author  Deqing Li(annong035@gmail.com)\n */\nfunction _default(ecModel, api, payload) {\n  ecModel.eachSeriesByType('sankey', function (seriesModel) {\n    var nodeWidth = seriesModel.get('nodeWidth');\n    var nodeGap = seriesModel.get('nodeGap');\n    var layoutInfo = getViewRect(seriesModel, api);\n    seriesModel.layoutInfo = layoutInfo;\n    var width = layoutInfo.width;\n    var height = layoutInfo.height;\n    var graph = seriesModel.getGraph();\n    var nodes = graph.nodes;\n    var edges = graph.edges;\n    computeNodeValues(nodes);\n    var filteredNodes = zrUtil.filter(nodes, function (node) {\n      return node.getLayout().value === 0;\n    });\n    var iterations = filteredNodes.length !== 0 ? 0 : seriesModel.get('layoutIterations');\n    layoutSankey(nodes, edges, nodeWidth, nodeGap, width, height, iterations);\n  });\n}\n/**\n * Get the layout position of the whole view\n *\n * @param {module:echarts/model/Series} seriesModel  the model object of sankey series\n * @param {module:echarts/ExtensionAPI} api  provide the API list that the developer can call\n * @return {module:zrender/core/BoundingRect}  size of rect to draw the sankey view\n */\n\n\nfunction getViewRect(seriesModel, api) {\n  return layout.getLayoutRect(seriesModel.getBoxLayoutParams(), {\n    width: api.getWidth(),\n    height: api.getHeight()\n  });\n}\n\nfunction layoutSankey(nodes, edges, nodeWidth, nodeGap, width, height, iterations) {\n  computeNodeBreadths(nodes, nodeWidth, width);\n  computeNodeDepths(nodes, edges, height, nodeGap, iterations);\n  computeEdgeDepths(nodes);\n}\n/**\n * Compute the value of each node by summing the associated edge's value\n *\n * @param {module:echarts/data/Graph~Node} nodes  node of sankey view\n */\n\n\nfunction computeNodeValues(nodes) {\n  zrUtil.each(nodes, function (node) {\n    var value1 = sum(node.outEdges, getEdgeValue);\n    var value2 = sum(node.inEdges, getEdgeValue);\n    var value = Math.max(value1, value2);\n    node.setLayout({\n      value: value\n    }, true);\n  });\n}\n/**\n * Compute the x-position for each node\n *\n * @param {module:echarts/data/Graph~Node} nodes  node of sankey view\n * @param  {number} nodeWidth  the dx of the node\n * @param  {number} width  the whole width of the area to draw the view\n */\n\n\nfunction computeNodeBreadths(nodes, nodeWidth, width) {\n  var remainNodes = nodes;\n  var nextNode = null;\n  var x = 0;\n  var kx = 0;\n\n  while (remainNodes.length) {\n    nextNode = [];\n\n    for (var i = 0, len = remainNodes.length; i < len; i++) {\n      var node = remainNodes[i];\n      node.setLayout({\n        x: x\n      }, true);\n      node.setLayout({\n        dx: nodeWidth\n      }, true);\n\n      for (var j = 0, lenj = node.outEdges.length; j < lenj; j++) {\n        nextNode.push(node.outEdges[j].node2);\n      }\n    }\n\n    remainNodes = nextNode;\n    ++x;\n  }\n\n  moveSinksRight(nodes, x);\n  kx = (width - nodeWidth) / (x - 1);\n  scaleNodeBreadths(nodes, kx);\n}\n/**\n * All the node without outEgdes are assigned maximum x-position and\n *     be aligned in the last column.\n *\n * @param {module:echarts/data/Graph~Node} nodes  node of sankey view\n * @param {number} x  value (x-1) use to assign to node without outEdges\n *     as x-position\n */\n\n\nfunction moveSinksRight(nodes, x) {\n  zrUtil.each(nodes, function (node) {\n    if (!node.outEdges.length) {\n      node.setLayout({\n        x: x - 1\n      }, true);\n    }\n  });\n}\n/**\n * Scale node x-position to the width\n *\n * @param {module:echarts/data/Graph~Node} nodes  node of sankey view\n * @param {number} kx   multiple used to scale nodes\n */\n\n\nfunction scaleNodeBreadths(nodes, kx) {\n  zrUtil.each(nodes, function (node) {\n    var nodeX = node.getLayout().x * kx;\n    node.setLayout({\n      x: nodeX\n    }, true);\n  });\n}\n/**\n * Using Gauss-Seidel iterations method to compute the node depth(y-position)\n *\n * @param {module:echarts/data/Graph~Node} nodes  node of sankey view\n * @param {module:echarts/data/Graph~Edge} edges  edge of sankey view\n * @param {number} height  the whole height of the area to draw the view\n * @param {number} nodeGap  the vertical distance between two nodes\n *     in the same column.\n * @param {number} iterations  the number of iterations for the algorithm\n */\n\n\nfunction computeNodeDepths(nodes, edges, height, nodeGap, iterations) {\n  var nodesByBreadth = nest().key(function (d) {\n    return d.getLayout().x;\n  }).sortKeys(ascending).entries(nodes).map(function (d) {\n    return d.values;\n  });\n  initializeNodeDepth(nodes, nodesByBreadth, edges, height, nodeGap);\n  resolveCollisions(nodesByBreadth, nodeGap, height);\n\n  for (var alpha = 1; iterations > 0; iterations--) {\n    // 0.99 is a experience parameter, ensure that each iterations of\n    // changes as small as possible.\n    alpha *= 0.99;\n    relaxRightToLeft(nodesByBreadth, alpha);\n    resolveCollisions(nodesByBreadth, nodeGap, height);\n    relaxLeftToRight(nodesByBreadth, alpha);\n    resolveCollisions(nodesByBreadth, nodeGap, height);\n  }\n}\n/**\n * Compute the original y-position for each node\n *\n * @param {module:echarts/data/Graph~Node} nodes  node of sankey view\n * @param {Array.<Array.<module:echarts/data/Graph~Node>>} nodesByBreadth\n *     group by the array of all sankey nodes based on the nodes x-position.\n * @param {module:echarts/data/Graph~Edge} edges  edge of sankey view\n * @param {number} height  the whole height of the area to draw the view\n * @param {number} nodeGap  the vertical distance between two nodes\n */\n\n\nfunction initializeNodeDepth(nodes, nodesByBreadth, edges, height, nodeGap) {\n  var kyArray = [];\n  zrUtil.each(nodesByBreadth, function (nodes) {\n    var n = nodes.length;\n    var sum = 0;\n    zrUtil.each(nodes, function (node) {\n      sum += node.getLayout().value;\n    });\n    var ky = (height - (n - 1) * nodeGap) / sum;\n    kyArray.push(ky);\n  });\n  kyArray.sort(function (a, b) {\n    return a - b;\n  });\n  var ky0 = kyArray[0];\n  zrUtil.each(nodesByBreadth, function (nodes) {\n    zrUtil.each(nodes, function (node, i) {\n      node.setLayout({\n        y: i\n      }, true);\n      var nodeDy = node.getLayout().value * ky0;\n      node.setLayout({\n        dy: nodeDy\n      }, true);\n    });\n  });\n  zrUtil.each(edges, function (edge) {\n    var edgeDy = +edge.getValue() * ky0;\n    edge.setLayout({\n      dy: edgeDy\n    }, true);\n  });\n}\n/**\n * Resolve the collision of initialized depth (y-position)\n *\n * @param {Array.<Array.<module:echarts/data/Graph~Node>>} nodesByBreadth\n *     group by the array of all sankey nodes based on the nodes x-position.\n * @param {number} nodeGap  the vertical distance between two nodes\n * @param {number} height  the whole height of the area to draw the view\n */\n\n\nfunction resolveCollisions(nodesByBreadth, nodeGap, height) {\n  zrUtil.each(nodesByBreadth, function (nodes) {\n    var node;\n    var dy;\n    var y0 = 0;\n    var n = nodes.length;\n    var i;\n    nodes.sort(ascendingDepth);\n\n    for (i = 0; i < n; i++) {\n      node = nodes[i];\n      dy = y0 - node.getLayout().y;\n\n      if (dy > 0) {\n        var nodeY = node.getLayout().y + dy;\n        node.setLayout({\n          y: nodeY\n        }, true);\n      }\n\n      y0 = node.getLayout().y + node.getLayout().dy + nodeGap;\n    } // if the bottommost node goes outside the bounds, push it back up\n\n\n    dy = y0 - nodeGap - height;\n\n    if (dy > 0) {\n      var nodeY = node.getLayout().y - dy;\n      node.setLayout({\n        y: nodeY\n      }, true);\n      y0 = node.getLayout().y;\n\n      for (i = n - 2; i >= 0; --i) {\n        node = nodes[i];\n        dy = node.getLayout().y + node.getLayout().dy + nodeGap - y0;\n\n        if (dy > 0) {\n          nodeY = node.getLayout().y - dy;\n          node.setLayout({\n            y: nodeY\n          }, true);\n        }\n\n        y0 = node.getLayout().y;\n      }\n    }\n  });\n}\n/**\n * Change the y-position of the nodes, except most the right side nodes\n *\n * @param {Array.<Array.<module:echarts/data/Graph~Node>>} nodesByBreadth\n *     group by the array of all sankey nodes based on the node x-position.\n * @param {number} alpha  parameter used to adjust the nodes y-position\n */\n\n\nfunction relaxRightToLeft(nodesByBreadth, alpha) {\n  zrUtil.each(nodesByBreadth.slice().reverse(), function (nodes) {\n    zrUtil.each(nodes, function (node) {\n      if (node.outEdges.length) {\n        var y = sum(node.outEdges, weightedTarget) / sum(node.outEdges, getEdgeValue);\n        var nodeY = node.getLayout().y + (y - center(node)) * alpha;\n        node.setLayout({\n          y: nodeY\n        }, true);\n      }\n    });\n  });\n}\n\nfunction weightedTarget(edge) {\n  return center(edge.node2) * edge.getValue();\n}\n/**\n * Change the y-position of the nodes, except most the left side nodes\n *\n * @param {Array.<Array.<module:echarts/data/Graph~Node>>} nodesByBreadth\n *     group by the array of all sankey nodes based on the node x-position.\n * @param {number} alpha  parameter used to adjust the nodes y-position\n */\n\n\nfunction relaxLeftToRight(nodesByBreadth, alpha) {\n  zrUtil.each(nodesByBreadth, function (nodes) {\n    zrUtil.each(nodes, function (node) {\n      if (node.inEdges.length) {\n        var y = sum(node.inEdges, weightedSource) / sum(node.inEdges, getEdgeValue);\n        var nodeY = node.getLayout().y + (y - center(node)) * alpha;\n        node.setLayout({\n          y: nodeY\n        }, true);\n      }\n    });\n  });\n}\n\nfunction weightedSource(edge) {\n  return center(edge.node1) * edge.getValue();\n}\n/**\n * Compute the depth(y-position) of each edge\n *\n * @param {module:echarts/data/Graph~Node} nodes  node of sankey view\n */\n\n\nfunction computeEdgeDepths(nodes) {\n  zrUtil.each(nodes, function (node) {\n    node.outEdges.sort(ascendingTargetDepth);\n    node.inEdges.sort(ascendingSourceDepth);\n  });\n  zrUtil.each(nodes, function (node) {\n    var sy = 0;\n    var ty = 0;\n    zrUtil.each(node.outEdges, function (edge) {\n      edge.setLayout({\n        sy: sy\n      }, true);\n      sy += edge.getLayout().dy;\n    });\n    zrUtil.each(node.inEdges, function (edge) {\n      edge.setLayout({\n        ty: ty\n      }, true);\n      ty += edge.getLayout().dy;\n    });\n  });\n}\n\nfunction ascendingTargetDepth(a, b) {\n  return a.node2.getLayout().y - b.node2.getLayout().y;\n}\n\nfunction ascendingSourceDepth(a, b) {\n  return a.node1.getLayout().y - b.node1.getLayout().y;\n}\n\nfunction sum(array, f) {\n  var sum = 0;\n  var len = array.length;\n  var i = -1;\n\n  while (++i < len) {\n    var value = +f.call(array, array[i], i);\n\n    if (!isNaN(value)) {\n      sum += value;\n    }\n  }\n\n  return sum;\n}\n\nfunction center(node) {\n  return node.getLayout().y + node.getLayout().dy / 2;\n}\n\nfunction ascendingDepth(a, b) {\n  return a.getLayout().y - b.getLayout().y;\n}\n\nfunction ascending(a, b) {\n  return a < b ? -1 : a > b ? 1 : a === b ? 0 : NaN;\n}\n\nfunction getEdgeValue(edge) {\n  return edge.getValue();\n}\n\nmodule.exports = _default;","var VisualMapping = require(\"../../visual/VisualMapping\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\n/**\n * @file Visual encoding for sankey view\n * @author  Deqing Li(annong035@gmail.com)\n */\nfunction _default(ecModel, payload) {\n  ecModel.eachSeriesByType('sankey', function (seriesModel) {\n    var graph = seriesModel.getGraph();\n    var nodes = graph.nodes;\n    nodes.sort(function (a, b) {\n      return a.getLayout().value - b.getLayout().value;\n    });\n    var minValue = nodes[0].getLayout().value;\n    var maxValue = nodes[nodes.length - 1].getLayout().value;\n    zrUtil.each(nodes, function (node) {\n      var mapping = new VisualMapping({\n        type: 'color',\n        mappingMethod: 'linear',\n        dataExtent: [minValue, maxValue],\n        visual: seriesModel.get('color')\n      });\n      var mapValueToColor = mapping.mapValueToVisual(node.getLayout().value);\n      node.setVisual('color', mapValueToColor); // If set itemStyle.normal.color\n\n      var itemModel = node.getModel();\n      var customColor = itemModel.get('itemStyle.color');\n\n      if (customColor != null) {\n        node.setVisual('color', customColor);\n      }\n    });\n  });\n}\n\nmodule.exports = _default;","var echarts = require(\"../echarts\");\n\nrequire(\"./scatter/ScatterSeries\");\n\nrequire(\"./scatter/ScatterView\");\n\nvar visualSymbol = require(\"../visual/symbol\");\n\nvar layoutPoints = require(\"../layout/points\");\n\nrequire(\"../component/gridSimple\");\n\n// import * as zrUtil from 'zrender/src/core/util';\n// In case developer forget to include grid component\necharts.registerVisual(visualSymbol('scatter', 'circle'));\necharts.registerLayout(layoutPoints('scatter')); // echarts.registerProcessor(function (ecModel, api) {\n//     ecModel.eachSeriesByType('scatter', function (seriesModel) {\n//         var data = seriesModel.getData();\n//         var coordSys = seriesModel.coordinateSystem;\n//         if (coordSys.type !== 'geo') {\n//             return;\n//         }\n//         var startPt = coordSys.pointToData([0, 0]);\n//         var endPt = coordSys.pointToData([api.getWidth(), api.getHeight()]);\n//         var dims = zrUtil.map(coordSys.dimensions, function (dim) {\n//             return data.mapDimension(dim);\n//         });\n//         var range = {};\n//         range[dims[0]] = [Math.min(startPt[0], endPt[0]), Math.max(startPt[0], endPt[0])];\n//         range[dims[1]] = [Math.min(startPt[1], endPt[1]), Math.max(startPt[1], endPt[1])];\n//         data.selectRange(range);\n//     });\n// });","var createListFromArray = require(\"../helper/createListFromArray\");\n\nvar SeriesModel = require(\"../../model/Series\");\n\nvar _default = SeriesModel.extend({\n  type: 'series.scatter',\n  dependencies: ['grid', 'polar', 'geo', 'singleAxis', 'calendar'],\n  getInitialData: function (option, ecModel) {\n    return createListFromArray(this.getSource(), this);\n  },\n  brushSelector: 'point',\n  getProgressive: function () {\n    var progressive = this.option.progressive;\n\n    if (progressive == null) {\n      // PENDING\n      return this.option.large ? 5e3 : this.get('progressive');\n    }\n\n    return progressive;\n  },\n  getProgressiveThreshold: function () {\n    var progressiveThreshold = this.option.progressiveThreshold;\n\n    if (progressiveThreshold == null) {\n      // PENDING\n      return this.option.large ? 1e4 : this.get('progressiveThreshold');\n    }\n\n    return progressiveThreshold;\n  },\n  defaultOption: {\n    coordinateSystem: 'cartesian2d',\n    zlevel: 0,\n    z: 2,\n    legendHoverLink: true,\n    hoverAnimation: true,\n    // Cartesian coordinate system\n    // xAxisIndex: 0,\n    // yAxisIndex: 0,\n    // Polar coordinate system\n    // polarIndex: 0,\n    // Geo coordinate system\n    // geoIndex: 0,\n    // symbol: null,        // 图形类型\n    symbolSize: 10,\n    // 图形大小，半宽（半径）参数，当图形为方向或菱形则总宽度为symbolSize * 2\n    // symbolRotate: null,  // 图形旋转控制\n    large: false,\n    // Available when large is true\n    largeThreshold: 2000,\n    // cursor: null,\n    // label: {\n    // show: false\n    // distance: 5,\n    // formatter: 标签文本格式器，同Tooltip.formatter，不支持异步回调\n    // position: 默认自适应，水平布局为'top'，垂直布局为'right'，可选为\n    //           'inside'|'left'|'right'|'top'|'bottom'\n    // 默认使用全局文本样式，详见TEXTSTYLE\n    // },\n    itemStyle: {\n      opacity: 0.8 // color: 各异\n\n    },\n    progressive: null\n  }\n});\n\nmodule.exports = _default;","var echarts = require(\"../../echarts\");\n\nvar SymbolDraw = require(\"../helper/SymbolDraw\");\n\nvar LargeSymbolDraw = require(\"../helper/LargeSymbolDraw\");\n\nvar pointsLayout = require(\"../../layout/points\");\n\necharts.extendChartView({\n  type: 'scatter',\n  render: function (seriesModel, ecModel, api) {\n    var data = seriesModel.getData();\n\n    var symbolDraw = this._updateSymbolDraw(data, seriesModel);\n\n    symbolDraw.updateData(data);\n    this._finished = true;\n  },\n  incrementalPrepareRender: function (seriesModel, ecModel, api) {\n    var data = seriesModel.getData();\n\n    var symbolDraw = this._updateSymbolDraw(data, seriesModel);\n\n    symbolDraw.incrementalPrepareUpdate(data);\n    this._finished = false;\n  },\n  incrementalRender: function (taskParams, seriesModel, ecModel) {\n    this._symbolDraw.incrementalUpdate(taskParams, seriesModel.getData());\n\n    this._finished = taskParams.end === seriesModel.getData().count();\n  },\n  updateTransform: function (seriesModel, ecModel, api) {\n    var data = seriesModel.getData(); // Must mark group dirty and make sure the incremental layer will be cleared\n    // PENDING\n\n    this.group.dirty();\n\n    if (!this._finished || data.count() > 1e4 || !this._symbolDraw.isPersistent()) {\n      return {\n        update: true\n      };\n    } else {\n      var res = pointsLayout().reset(seriesModel);\n\n      if (res.progress) {\n        res.progress({\n          start: 0,\n          end: data.count()\n        }, data);\n      }\n\n      this._symbolDraw.updateLayout(data);\n    }\n  },\n  _updateSymbolDraw: function (data, seriesModel) {\n    var symbolDraw = this._symbolDraw;\n    var pipelineContext = seriesModel.pipelineContext;\n    var isLargeDraw = pipelineContext.large;\n\n    if (!symbolDraw || isLargeDraw !== this._isLargeDraw) {\n      symbolDraw && symbolDraw.remove();\n      symbolDraw = this._symbolDraw = isLargeDraw ? new LargeSymbolDraw() : new SymbolDraw();\n      this._isLargeDraw = isLargeDraw;\n      this.group.removeAll();\n    }\n\n    this.group.add(symbolDraw.group);\n    return symbolDraw;\n  },\n  remove: function (ecModel, api) {\n    this._symbolDraw && this._symbolDraw.remove(true);\n    this._symbolDraw = null;\n  },\n  dispose: function () {}\n});","var echarts = require(\"../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nrequire(\"./sunburst/SunburstSeries\");\n\nrequire(\"./sunburst/SunburstView\");\n\nrequire(\"./sunburst/sunburstAction\");\n\nvar dataColor = require(\"../visual/dataColor\");\n\nvar sunburstLayout = require(\"./sunburst/sunburstLayout\");\n\nvar dataFilter = require(\"../processor/dataFilter\");\n\necharts.registerVisual(zrUtil.curry(dataColor, 'sunburst'));\necharts.registerLayout(zrUtil.curry(sunburstLayout, 'sunburst'));\necharts.registerProcessor(zrUtil.curry(dataFilter, 'sunburst'));","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar NodeHighlightPolicy = {\n  NONE: 'none',\n  // not downplay others\n  DESCENDANT: 'descendant',\n  ANCESTOR: 'ancestor',\n  SELF: 'self'\n};\nvar DEFAULT_SECTOR_Z = 2;\nvar DEFAULT_TEXT_Z = 4;\n/**\n * Sunburstce of Sunburst including Sector, Label, LabelLine\n * @constructor\n * @extends {module:zrender/graphic/Group}\n */\n\nfunction SunburstPiece(node, seriesModel, ecModel) {\n  graphic.Group.call(this);\n  var sector = new graphic.Sector({\n    z2: DEFAULT_SECTOR_Z\n  });\n  var text = new graphic.Text({\n    z2: DEFAULT_TEXT_Z,\n    silent: node.getModel('label').get('silent')\n  });\n  this.add(sector);\n  this.add(text);\n  this.updateData(true, node, 'normal', seriesModel, ecModel); // Hover to change label and labelLine\n\n  function onEmphasis() {\n    text.ignore = text.hoverIgnore;\n  }\n\n  function onNormal() {\n    text.ignore = text.normalIgnore;\n  }\n\n  this.on('emphasis', onEmphasis).on('normal', onNormal).on('mouseover', onEmphasis).on('mouseout', onNormal);\n}\n\nvar SunburstPieceProto = SunburstPiece.prototype;\n\nSunburstPieceProto.updateData = function (firstCreate, node, state, seriesModel, ecModel) {\n  this.node = node;\n  node.piece = this;\n  seriesModel = seriesModel || this._seriesModel;\n  ecModel = ecModel || this._ecModel;\n  var sector = this.childAt(0);\n  sector.dataIndex = node.dataIndex;\n  var itemModel = node.getModel();\n  var layout = node.getLayout();\n  var sectorShape = zrUtil.extend({}, layout);\n  sectorShape.label = null;\n  var visualColor = getNodeColor(node, seriesModel, ecModel);\n  var normalStyle = itemModel.getModel('itemStyle').getItemStyle();\n  var style;\n\n  if (state === 'normal') {\n    style = normalStyle;\n  } else {\n    var stateStyle = itemModel.getModel(state + '.itemStyle').getItemStyle();\n    style = zrUtil.merge(stateStyle, normalStyle);\n  }\n\n  style = zrUtil.defaults({\n    lineJoin: 'bevel',\n    fill: style.fill || visualColor\n  }, style);\n\n  if (firstCreate) {\n    sector.setShape(sectorShape);\n    sector.shape.r = layout.r0;\n    graphic.updateProps(sector, {\n      shape: {\n        r: layout.r\n      }\n    }, seriesModel, node.dataIndex);\n    sector.useStyle(style);\n  } else {\n    graphic.updateProps(sector, {\n      shape: sectorShape,\n      style: style\n    }, seriesModel);\n  }\n\n  if (state === 'normal') {\n    sector.hoverStyle = itemModel.getModel('emphasis.itemStyle').getItemStyle();\n    graphic.setHoverStyle(this);\n  }\n\n  this._updateLabel(seriesModel, ecModel, visualColor);\n\n  var cursorStyle = itemModel.getShallow('cursor');\n  cursorStyle && sector.attr('cursor', cursorStyle);\n\n  if (firstCreate) {\n    var highlightPolicy = seriesModel.getShallow('highlightPolicy');\n\n    this._initEvents(sector, node, seriesModel, highlightPolicy);\n  }\n\n  this._seriesModel = seriesModel || this._seriesModel;\n  this._ecModel = ecModel || this._ecModel;\n};\n\nSunburstPieceProto.onEmphasis = function (highlightPolicy) {\n  var that = this;\n  this.node.hostTree.root.eachNode(function (n) {\n    if (n.piece) {\n      if (that.node === n) {\n        n.piece.updateData(false, n, 'emphasis');\n      } else if (isNodeHighlighted(n, that.node, highlightPolicy)) {\n        n.piece.childAt(0).trigger('highlight');\n      } else if (highlightPolicy !== NodeHighlightPolicy.NONE) {\n        n.piece.childAt(0).trigger('downplay');\n      }\n    }\n  });\n};\n\nSunburstPieceProto.onNormal = function () {\n  this.node.hostTree.root.eachNode(function (n) {\n    if (n.piece) {\n      n.piece.updateData(false, n, 'normal');\n    }\n  });\n};\n\nSunburstPieceProto.onHighlight = function () {\n  this.updateData(false, this.node, 'highlight');\n};\n\nSunburstPieceProto.onDownplay = function () {\n  this.updateData(false, this.node, 'downplay');\n};\n\nSunburstPieceProto._updateLabel = function (seriesModel, ecModel, visualColor) {\n  var itemModel = this.node.getModel();\n  var labelModel = itemModel.getModel('label');\n  var labelHoverModel = itemModel.getModel('label.emphasis');\n  var text = zrUtil.retrieve(seriesModel.getFormattedLabel(this.node.dataIndex, 'normal', null, null, 'label'), this.node.name);\n\n  if (!labelModel.get('show')) {\n    text = '';\n  }\n\n  var label = this.childAt(1);\n  graphic.setLabelStyle(label.style, label.hoverStyle = {}, labelModel, labelHoverModel, {\n    defaultText: labelModel.getShallow('show') ? text : null,\n    autoColor: visualColor,\n    useInsideStyle: true\n  });\n  var layout = this.node.getLayout();\n  var midAngle = (layout.startAngle + layout.endAngle) / 2;\n  var dx = Math.cos(midAngle);\n  var dy = Math.sin(midAngle);\n  var r;\n  var labelPosition = labelModel.get('position');\n  var labelPadding = labelModel.get('distance') || 0;\n  var textAlign = labelModel.get('align');\n\n  if (labelPosition === 'outside') {\n    r = layout.r + labelPadding;\n    textAlign = midAngle > Math.PI / 2 ? 'right' : 'left';\n  } else {\n    if (!textAlign || textAlign === 'center') {\n      r = (layout.r + layout.r0) / 2;\n      textAlign = 'center';\n    } else if (textAlign === 'left') {\n      r = layout.r0 + labelPadding;\n\n      if (midAngle > Math.PI / 2) {\n        textAlign = 'right';\n      }\n    } else if (textAlign === 'right') {\n      r = layout.r - labelPadding;\n\n      if (midAngle > Math.PI / 2) {\n        textAlign = 'left';\n      }\n    }\n  }\n\n  label.attr('style', {\n    text: text,\n    textAlign: textAlign,\n    textVerticalAlign: labelModel.get('verticalAlign') || 'middle',\n    opacity: labelModel.get('opacity')\n  });\n  var textX = r * dx + layout.cx;\n  var textY = r * dy + layout.cy;\n  label.attr('position', [textX, textY]);\n  var rotateType = labelModel.getShallow('rotate');\n  var rotate = 0;\n\n  if (rotateType === 'radial') {\n    rotate = -midAngle;\n\n    if (rotate < -Math.PI / 2) {\n      rotate += Math.PI;\n    }\n  } else if (rotateType === 'tangential') {\n    rotate = Math.PI / 2 - midAngle;\n\n    if (rotate > Math.PI / 2) {\n      rotate -= Math.PI;\n    } else if (rotate < -Math.PI / 2) {\n      rotate += Math.PI;\n    }\n  } else if (typeof rotateType === 'number') {\n    rotate = rotateType * Math.PI / 180;\n  }\n\n  label.attr('rotation', rotate);\n};\n\nSunburstPieceProto._initEvents = function (sector, node, seriesModel, highlightPolicy) {\n  sector.off('mouseover').off('mouseout').off('emphasis').off('normal');\n  var that = this;\n\n  var onEmphasis = function () {\n    that.onEmphasis(highlightPolicy);\n  };\n\n  var onNormal = function () {\n    that.onNormal();\n  };\n\n  var onDownplay = function () {\n    that.onDownplay();\n  };\n\n  var onHighlight = function () {\n    that.onHighlight();\n  };\n\n  if (seriesModel.isAnimationEnabled()) {\n    sector.on('mouseover', onEmphasis).on('mouseout', onNormal).on('emphasis', onEmphasis).on('normal', onNormal).on('downplay', onDownplay).on('highlight', onHighlight);\n  }\n};\n\nzrUtil.inherits(SunburstPiece, graphic.Group);\nvar _default = SunburstPiece;\n/**\n * Get node color\n *\n * @param {TreeNode} node the node to get color\n * @param {module:echarts/model/Series} seriesModel series\n * @param {module:echarts/model/Global} ecModel echarts defaults\n */\n\nfunction getNodeColor(node, seriesModel, ecModel) {\n  // Color from visualMap\n  var visualColor = node.getVisual('color');\n  var visualMetaList = node.getVisual('visualMeta');\n\n  if (visualMetaList.length === 0) {\n    // Use first-generation color if has no visualMap\n    visualColor = null;\n  } // Self color or level color\n\n\n  var color = node.getModel('itemStyle').get('color');\n\n  if (color) {\n    return color;\n  } else if (visualColor) {\n    // Color mapping\n    return visualColor;\n  } else if (node.depth === 0) {\n    // Virtual root node\n    return ecModel.option.color[0];\n  } else {\n    // First-generation color\n    var length = ecModel.option.color.length;\n    color = ecModel.option.color[getRootId(node) % length];\n  }\n\n  return color;\n}\n/**\n * Get index of root in sorted order\n *\n * @param {TreeNode} node current node\n * @return {number} index in root\n */\n\n\nfunction getRootId(node) {\n  var ancestor = node;\n\n  while (ancestor.depth > 1) {\n    ancestor = ancestor.parentNode;\n  }\n\n  var virtualRoot = node.getAncestors()[0];\n  return zrUtil.indexOf(virtualRoot.children, ancestor);\n}\n\nfunction isNodeHighlighted(node, activeNode, policy) {\n  if (policy === NodeHighlightPolicy.NONE) {\n    return false;\n  } else if (policy === NodeHighlightPolicy.SELF) {\n    return node === activeNode;\n  } else if (policy === NodeHighlightPolicy.ANCESTOR) {\n    return node === activeNode || node.isAncestorOf(activeNode);\n  } else {\n    return node === activeNode || node.isDescendantOf(activeNode);\n  }\n}\n\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar SeriesModel = require(\"../../model/Series\");\n\nvar Tree = require(\"../../data/Tree\");\n\nvar _treeHelper = require(\"../helper/treeHelper\");\n\nvar wrapTreePathInfo = _treeHelper.wrapTreePathInfo;\n\nvar _default = SeriesModel.extend({\n  type: 'series.sunburst',\n\n  /**\n   * @type {module:echarts/data/Tree~Node}\n   */\n  _viewRoot: null,\n  getInitialData: function (option, ecModel) {\n    // Create a virtual root.\n    var root = {\n      name: option.name,\n      children: option.data\n    };\n    completeTreeValue(root);\n    var levels = option.levels || []; // levels = option.levels = setDefault(levels, ecModel);\n\n    var treeOption = {};\n    treeOption.levels = levels; // Make sure always a new tree is created when setOption,\n    // in TreemapView, we check whether oldTree === newTree\n    // to choose mappings approach among old shapes and new shapes.\n\n    return Tree.createTree(root, this, treeOption).data;\n  },\n  optionUpdated: function () {\n    this.resetViewRoot();\n  },\n\n  /*\n   * @override\n   */\n  getDataParams: function (dataIndex) {\n    var params = SeriesModel.prototype.getDataParams.apply(this, arguments);\n    var node = this.getData().tree.getNodeByDataIndex(dataIndex);\n    params.treePathInfo = wrapTreePathInfo(node, this);\n    return params;\n  },\n  defaultOption: {\n    zlevel: 0,\n    z: 2,\n    // 默认全局居中\n    center: ['50%', '50%'],\n    radius: [0, '75%'],\n    // 默认顺时针\n    clockwise: true,\n    startAngle: 90,\n    // 最小角度改为0\n    minAngle: 0,\n    percentPrecision: 2,\n    // If still show when all data zero.\n    stillShowZeroSum: true,\n    // Policy of highlighting pieces when hover on one\n    // Valid values: 'none' (for not downplay others), 'descendant',\n    // 'ancestor', 'self'\n    highlightPolicy: 'descendant',\n    // 'rootToNode', 'link', or false\n    nodeClick: 'rootToNode',\n    renderLabelForZeroData: false,\n    label: {\n      // could be: 'radial', 'tangential', or 'none'\n      rotate: 'radial',\n      show: true,\n      opacity: 1,\n      // 'left' is for inner side of inside, and 'right' is for outter\n      // side for inside\n      align: 'center',\n      position: 'inside',\n      distance: 5,\n      silent: true,\n      emphasis: {}\n    },\n    itemStyle: {\n      borderWidth: 1,\n      borderColor: 'white',\n      opacity: 1,\n      emphasis: {},\n      highlight: {\n        opacity: 1\n      },\n      downplay: {\n        opacity: 0.9\n      }\n    },\n    // Animation type canbe expansion, scale\n    animationType: 'expansion',\n    animationDuration: 1000,\n    animationDurationUpdate: 500,\n    animationEasing: 'cubicOut',\n    data: [],\n    levels: [],\n\n    /**\n     * Sort order.\n     *\n     * Valid values: 'desc', 'asc', null, or callback function.\n     * 'desc' and 'asc' for descend and ascendant order;\n     * null for not sorting;\n     * example of callback function:\n     * function(nodeA, nodeB) {\n     *     return nodeA.getValue() - nodeB.getValue();\n     * }\n     */\n    sort: 'desc'\n  },\n  getViewRoot: function () {\n    return this._viewRoot;\n  },\n\n  /**\n   * @param {module:echarts/data/Tree~Node} [viewRoot]\n   */\n  resetViewRoot: function (viewRoot) {\n    viewRoot ? this._viewRoot = viewRoot : viewRoot = this._viewRoot;\n    var root = this.getRawData().tree.root;\n\n    if (!viewRoot || viewRoot !== root && !root.contains(viewRoot)) {\n      this._viewRoot = root;\n    }\n  }\n});\n/**\n * @param {Object} dataNode\n */\n\n\nfunction completeTreeValue(dataNode) {\n  // Postorder travel tree.\n  // If value of none-leaf node is not set,\n  // calculate it by suming up the value of all children.\n  var sum = 0;\n  zrUtil.each(dataNode.children, function (child) {\n    completeTreeValue(child);\n    var childValue = child.value;\n    zrUtil.isArray(childValue) && (childValue = childValue[0]);\n    sum += childValue;\n  });\n  var thisValue = dataNode.value;\n\n  if (zrUtil.isArray(thisValue)) {\n    thisValue = thisValue[0];\n  }\n\n  if (thisValue == null || isNaN(thisValue)) {\n    thisValue = sum;\n  } // Value should not less than 0.\n\n\n  if (thisValue < 0) {\n    thisValue = 0;\n  }\n\n  zrUtil.isArray(dataNode.value) ? dataNode.value[0] = thisValue : dataNode.value = thisValue;\n}\n\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar ChartView = require(\"../../view/Chart\");\n\nvar SunburstPiece = require(\"./SunburstPiece\");\n\nvar DataDiffer = require(\"../../data/DataDiffer\");\n\nvar ROOT_TO_NODE_ACTION = 'sunburstRootToNode';\nvar SunburstView = ChartView.extend({\n  type: 'sunburst',\n  init: function () {},\n  render: function (seriesModel, ecModel, api, payload) {\n    var that = this;\n    this.seriesModel = seriesModel;\n    this.api = api;\n    this.ecModel = ecModel;\n    var virtualRoot = seriesModel.getData().tree.root;\n    var newRoot = seriesModel.getViewRoot();\n    var group = this.group;\n    var renderLabelForZeroData = seriesModel.get('renderLabelForZeroData');\n    var newChildren = [];\n    newRoot.eachNode(function (node) {\n      newChildren.push(node);\n    });\n    var oldChildren = this._oldChildren || [];\n    dualTravel(newChildren, oldChildren);\n    renderRollUp(virtualRoot, newRoot);\n\n    if (payload && payload.highlight && payload.highlight.piece) {\n      var highlightPolicy = seriesModel.getShallow('highlightPolicy');\n      payload.highlight.piece.onEmphasis(highlightPolicy);\n    } else if (payload && payload.unhighlight) {\n      var piece = virtualRoot.piece;\n\n      if (!piece && virtualRoot.children.length) {\n        piece = virtualRoot.children[0].piece;\n      }\n\n      if (piece) {\n        piece.onNormal();\n      }\n    }\n\n    this._initEvents();\n\n    this._oldChildren = newChildren;\n\n    function dualTravel(newChildren, oldChildren) {\n      if (newChildren.length === 0 && oldChildren.length === 0) {\n        return;\n      }\n\n      new DataDiffer(oldChildren, newChildren, getKey, getKey).add(processNode).update(processNode).remove(zrUtil.curry(processNode, null)).execute();\n\n      function getKey(node) {\n        return node.getId();\n      }\n\n      function processNode(newId, oldId) {\n        var newNode = newId == null ? null : newChildren[newId];\n        var oldNode = oldId == null ? null : oldChildren[oldId];\n        doRenderNode(newNode, oldNode);\n      }\n    }\n\n    function doRenderNode(newNode, oldNode) {\n      if (!renderLabelForZeroData && newNode && !newNode.getValue()) {\n        // Not render data with value 0\n        newNode = null;\n      }\n\n      if (newNode !== virtualRoot && oldNode !== virtualRoot) {\n        if (oldNode && oldNode.piece) {\n          if (newNode) {\n            // Update\n            oldNode.piece.updateData(false, newNode, 'normal', seriesModel, ecModel);\n          } else {\n            // Remove\n            removeNode(oldNode);\n          }\n        } else if (newNode) {\n          // Add\n          var piece = new SunburstPiece(newNode, seriesModel, ecModel);\n          group.add(piece);\n        }\n      }\n    }\n\n    function removeNode(node) {\n      if (!node) {\n        return;\n      }\n\n      if (node.piece) {\n        group.remove(node.piece);\n        node.piece = null;\n      }\n    }\n\n    function renderRollUp(virtualRoot, viewRoot) {\n      if (viewRoot.depth > 0) {\n        // Render\n        if (virtualRoot.piece) {\n          // Update\n          virtualRoot.piece.updateData(false, virtualRoot, 'normal', seriesModel, ecModel);\n        } else {\n          // Add\n          virtualRoot.piece = new SunburstPiece(virtualRoot, seriesModel, ecModel);\n          group.add(virtualRoot.piece);\n        }\n\n        if (viewRoot.piece._onclickEvent) {\n          viewRoot.piece.off('click', viewRoot.piece._onclickEvent);\n        }\n\n        var event = function (e) {\n          that._rootToNode(viewRoot.parentNode);\n        };\n\n        viewRoot.piece._onclickEvent = event;\n        virtualRoot.piece.on('click', event);\n      } else if (virtualRoot.piece) {\n        // Remove\n        group.remove(virtualRoot.piece);\n        virtualRoot.piece = null;\n      }\n    }\n  },\n  dispose: function () {},\n\n  /**\n   * @private\n   */\n  _initEvents: function () {\n    var that = this;\n\n    var event = function (e) {\n      var nodeClick = that.seriesModel.get('nodeClick', true);\n\n      if (!nodeClick) {\n        return;\n      }\n\n      var targetFound = false;\n      var viewRoot = that.seriesModel.getViewRoot();\n      viewRoot.eachNode(function (node) {\n        if (!targetFound && node.piece && node.piece.childAt(0) === e.target) {\n          if (nodeClick === 'rootToNode') {\n            that._rootToNode(node);\n          } else if (nodeClick === 'link') {\n            var itemModel = node.getModel();\n            var link = itemModel.get('link', true);\n\n            if (link) {\n              var linkTarget = itemModel.get('target', true) || '_blank';\n              link && window.open(link, linkTarget);\n            }\n          }\n\n          targetFound = true;\n        }\n      });\n    };\n\n    if (this.group._onclickEvent) {\n      this.group.off('click', this.group._onclickEvent);\n    }\n\n    this.group.on('click', event);\n    this.group._onclickEvent = event;\n  },\n\n  /**\n   * @private\n   */\n  _rootToNode: function (node) {\n    if (node !== this.seriesModel.getViewRoot()) {\n      this.api.dispatchAction({\n        type: ROOT_TO_NODE_ACTION,\n        from: this.uid,\n        seriesId: this.seriesModel.id,\n        targetNode: node\n      });\n    }\n  },\n\n  /**\n   * @implement\n   */\n  containPoint: function (point, seriesModel) {\n    var treeRoot = seriesModel.getData();\n    var itemLayout = treeRoot.getItemLayout(0);\n\n    if (itemLayout) {\n      var dx = point[0] - itemLayout.cx;\n      var dy = point[1] - itemLayout.cy;\n      var radius = Math.sqrt(dx * dx + dy * dy);\n      return radius <= itemLayout.r && radius >= itemLayout.r0;\n    }\n  }\n});\nvar _default = SunburstView;\nmodule.exports = _default;","var echarts = require(\"../../echarts\");\n\nvar helper = require(\"../helper/treeHelper\");\n\n/**\n * @file Sunburst action\n */\nvar ROOT_TO_NODE_ACTION = 'sunburstRootToNode';\necharts.registerAction({\n  type: ROOT_TO_NODE_ACTION,\n  update: 'updateView'\n}, function (payload, ecModel) {\n  ecModel.eachComponent({\n    mainType: 'series',\n    subType: 'sunburst',\n    query: payload\n  }, handleRootToNode);\n\n  function handleRootToNode(model, index) {\n    var targetInfo = helper.retrieveTargetInfo(payload, [ROOT_TO_NODE_ACTION], model);\n\n    if (targetInfo) {\n      var originViewRoot = model.getViewRoot();\n\n      if (originViewRoot) {\n        payload.direction = helper.aboveViewRoot(originViewRoot, targetInfo.node) ? 'rollUp' : 'drillDown';\n      }\n\n      model.resetViewRoot(targetInfo.node);\n    }\n  }\n});\nvar HIGHLIGHT_ACTION = 'sunburstHighlight';\necharts.registerAction({\n  type: HIGHLIGHT_ACTION,\n  update: 'updateView'\n}, function (payload, ecModel) {\n  ecModel.eachComponent({\n    mainType: 'series',\n    subType: 'sunburst',\n    query: payload\n  }, handleHighlight);\n\n  function handleHighlight(model, index) {\n    var targetInfo = helper.retrieveTargetInfo(payload, [HIGHLIGHT_ACTION], model);\n\n    if (targetInfo) {\n      payload.highlight = targetInfo.node;\n    }\n  }\n});\nvar UNHIGHLIGHT_ACTION = 'sunburstUnhighlight';\necharts.registerAction({\n  type: UNHIGHLIGHT_ACTION,\n  update: 'updateView'\n}, function (payload, ecModel) {\n  ecModel.eachComponent({\n    mainType: 'series',\n    subType: 'sunburst',\n    query: payload\n  }, handleUnhighlight);\n\n  function handleUnhighlight(model, index) {\n    payload.unhighlight = true;\n  }\n});","var _number = require(\"../../util/number\");\n\nvar parsePercent = _number.parsePercent;\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar PI2 = Math.PI * 2;\nvar RADIAN = Math.PI / 180;\n\nfunction _default(seriesType, ecModel, api, payload) {\n  ecModel.eachSeriesByType(seriesType, function (seriesModel) {\n    var center = seriesModel.get('center');\n    var radius = seriesModel.get('radius');\n\n    if (!zrUtil.isArray(radius)) {\n      radius = [0, radius];\n    }\n\n    if (!zrUtil.isArray(center)) {\n      center = [center, center];\n    }\n\n    var width = api.getWidth();\n    var height = api.getHeight();\n    var size = Math.min(width, height);\n    var cx = parsePercent(center[0], width);\n    var cy = parsePercent(center[1], height);\n    var r0 = parsePercent(radius[0], size / 2);\n    var r = parsePercent(radius[1], size / 2);\n    var startAngle = -seriesModel.get('startAngle') * RADIAN;\n    var minAngle = seriesModel.get('minAngle') * RADIAN;\n    var virtualRoot = seriesModel.getData().tree.root;\n    var treeRoot = seriesModel.getViewRoot();\n    var rootDepth = treeRoot.depth;\n    var sort = seriesModel.get('sort');\n\n    if (sort != null) {\n      initChildren(treeRoot, sort);\n    }\n\n    var validDataCount = 0;\n    zrUtil.each(treeRoot.children, function (child) {\n      !isNaN(child.getValue()) && validDataCount++;\n    });\n    var sum = treeRoot.getValue(); // Sum may be 0\n\n    var unitRadian = Math.PI / (sum || validDataCount) * 2;\n    var renderRollupNode = treeRoot.depth > 0;\n    var levels = treeRoot.height - (renderRollupNode ? -1 : 1);\n    var rPerLevel = (r - r0) / (levels || 1);\n    var clockwise = seriesModel.get('clockwise');\n    var stillShowZeroSum = seriesModel.get('stillShowZeroSum'); // In the case some sector angle is smaller than minAngle\n\n    var restAngle = PI2;\n    var valueSumLargerThanMinAngle = 0;\n    var dir = clockwise ? 1 : -1;\n    /**\n     * Render a tree\n     * @return increased angle\n     */\n\n    var renderNode = function (node, startAngle) {\n      if (!node) {\n        return;\n      }\n\n      var endAngle = startAngle; // Render self\n\n      if (node !== virtualRoot) {\n        // Tree node is virtual, so it doesn't need to be drawn\n        var value = node.getValue();\n        var angle = sum === 0 && stillShowZeroSum ? unitRadian : value * unitRadian;\n\n        if (angle < minAngle) {\n          angle = minAngle;\n          restAngle -= minAngle;\n        } else {\n          valueSumLargerThanMinAngle += value;\n        }\n\n        endAngle = startAngle + dir * angle;\n        var depth = node.depth - rootDepth - (renderRollupNode ? -1 : 1);\n        var rStart = r0 + rPerLevel * depth;\n        var rEnd = r0 + rPerLevel * (depth + 1);\n        var itemModel = node.getModel();\n\n        if (itemModel.get('r0') != null) {\n          rStart = parsePercent(itemModel.get('r0'), size / 2);\n        }\n\n        if (itemModel.get('r') != null) {\n          rEnd = parsePercent(itemModel.get('r'), size / 2);\n        }\n\n        node.setLayout({\n          angle: angle,\n          startAngle: startAngle,\n          endAngle: endAngle,\n          clockwise: clockwise,\n          cx: cx,\n          cy: cy,\n          r0: rStart,\n          r: rEnd\n        });\n      } // Render children\n\n\n      if (node.children && node.children.length) {\n        // currentAngle = startAngle;\n        var siblingAngle = 0;\n        zrUtil.each(node.children, function (node) {\n          siblingAngle += renderNode(node, startAngle + siblingAngle);\n        });\n      }\n\n      return endAngle - startAngle;\n    }; // Virtual root node for roll up\n\n\n    if (renderRollupNode) {\n      var rStart = r0;\n      var rEnd = r0 + rPerLevel;\n      var angle = Math.PI * 2;\n      virtualRoot.setLayout({\n        angle: angle,\n        startAngle: startAngle,\n        endAngle: startAngle + angle,\n        clockwise: clockwise,\n        cx: cx,\n        cy: cy,\n        r0: rStart,\n        r: rEnd\n      });\n    }\n\n    renderNode(treeRoot, startAngle);\n  });\n}\n/**\n * Init node children by order and update visual\n *\n * @param {TreeNode} node  root node\n * @param {boolean}  isAsc if is in ascendant order\n */\n\n\nfunction initChildren(node, isAsc) {\n  var children = node.children || [];\n  node.children = sort(children, isAsc); // Init children recursively\n\n  if (children.length) {\n    zrUtil.each(node.children, function (child) {\n      initChildren(child, isAsc);\n    });\n  }\n}\n/**\n * Sort children nodes\n *\n * @param {TreeNode[]}               children children of node to be sorted\n * @param {string | function | null} sort sort method\n *                                   See SunburstSeries.js for details.\n */\n\n\nfunction sort(children, sortOrder) {\n  if (typeof sortOrder === 'function') {\n    return children.sort(sortOrder);\n  } else {\n    var isAsc = sortOrder === 'asc';\n    return children.sort(function (a, b) {\n      var diff = (a.getValue() - b.getValue()) * (isAsc ? 1 : -1);\n      return diff === 0 ? (a.dataIndex - b.dataIndex) * (isAsc ? -1 : 1) : diff;\n    });\n  }\n}\n\nmodule.exports = _default;","var echarts = require(\"../echarts\");\n\nrequire(\"../component/singleAxis\");\n\nrequire(\"./themeRiver/ThemeRiverSeries\");\n\nrequire(\"./themeRiver/ThemeRiverView\");\n\nvar themeRiverLayout = require(\"./themeRiver/themeRiverLayout\");\n\nvar themeRiverVisual = require(\"./themeRiver/themeRiverVisual\");\n\nvar dataFilter = require(\"../processor/dataFilter\");\n\necharts.registerLayout(themeRiverLayout);\necharts.registerVisual(themeRiverVisual);\necharts.registerProcessor(dataFilter('themeRiver'));","var SeriesModel = require(\"../../model/Series\");\n\nvar createDimensions = require(\"../../data/helper/createDimensions\");\n\nvar _dimensionHelper = require(\"../../data/helper/dimensionHelper\");\n\nvar getDimensionTypeByAxis = _dimensionHelper.getDimensionTypeByAxis;\n\nvar List = require(\"../../data/List\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar _format = require(\"../../util/format\");\n\nvar encodeHTML = _format.encodeHTML;\n\nvar nest = require(\"../../util/array/nest\");\n\n/**\n * @file  Define the themeRiver view's series model\n * @author Deqing Li(annong035@gmail.com)\n */\nvar DATA_NAME_INDEX = 2;\nvar ThemeRiverSeries = SeriesModel.extend({\n  type: 'series.themeRiver',\n  dependencies: ['singleAxis'],\n\n  /**\n   * @readOnly\n   * @type {module:zrender/core/util#HashMap}\n   */\n  nameMap: null,\n\n  /**\n   * @override\n   */\n  init: function (option) {\n    ThemeRiverSeries.superApply(this, 'init', arguments); // Put this function here is for the sake of consistency of code style.\n    // Enable legend selection for each data item\n    // Use a function instead of direct access because data reference may changed\n\n    this.legendDataProvider = function () {\n      return this.getRawData();\n    };\n  },\n\n  /**\n   * If there is no value of a certain point in the time for some event,set it value to 0.\n   *\n   * @param {Array} data  initial data in the option\n   * @return {Array}\n   */\n  fixData: function (data) {\n    var rawDataLength = data.length; // grouped data by name\n\n    var dataByName = nest().key(function (dataItem) {\n      return dataItem[2];\n    }).entries(data); // data group in each layer\n\n    var layData = zrUtil.map(dataByName, function (d) {\n      return {\n        name: d.key,\n        dataList: d.values\n      };\n    });\n    var layerNum = layData.length;\n    var largestLayer = -1;\n    var index = -1;\n\n    for (var i = 0; i < layerNum; ++i) {\n      var len = layData[i].dataList.length;\n\n      if (len > largestLayer) {\n        largestLayer = len;\n        index = i;\n      }\n    }\n\n    for (var k = 0; k < layerNum; ++k) {\n      if (k === index) {\n        continue;\n      }\n\n      var name = layData[k].name;\n\n      for (var j = 0; j < largestLayer; ++j) {\n        var timeValue = layData[index].dataList[j][0];\n        var length = layData[k].dataList.length;\n        var keyIndex = -1;\n\n        for (var l = 0; l < length; ++l) {\n          var value = layData[k].dataList[l][0];\n\n          if (value === timeValue) {\n            keyIndex = l;\n            break;\n          }\n        }\n\n        if (keyIndex === -1) {\n          data[rawDataLength] = [];\n          data[rawDataLength][0] = timeValue;\n          data[rawDataLength][1] = 0;\n          data[rawDataLength][2] = name;\n          rawDataLength++;\n        }\n      }\n    }\n\n    return data;\n  },\n\n  /**\n   * @override\n   * @param  {Object} option  the initial option that user gived\n   * @param  {module:echarts/model/Model} ecModel  the model object for themeRiver option\n   * @return {module:echarts/data/List}\n   */\n  getInitialData: function (option, ecModel) {\n    var singleAxisModel = ecModel.queryComponents({\n      mainType: 'singleAxis',\n      index: this.get('singleAxisIndex'),\n      id: this.get('singleAxisId')\n    })[0];\n    var axisType = singleAxisModel.get('type'); // filter the data item with the value of label is undefined\n\n    var filterData = zrUtil.filter(option.data, function (dataItem) {\n      return dataItem[2] !== undefined;\n    }); // ??? TODO design a stage to transfer data for themeRiver and lines?\n\n    var data = this.fixData(filterData || []);\n    var nameList = [];\n    var nameMap = this.nameMap = zrUtil.createHashMap();\n    var count = 0;\n\n    for (var i = 0; i < data.length; ++i) {\n      nameList.push(data[i][DATA_NAME_INDEX]);\n\n      if (!nameMap.get(data[i][DATA_NAME_INDEX])) {\n        nameMap.set(data[i][DATA_NAME_INDEX], count);\n        count++;\n      }\n    }\n\n    var dimensionsInfo = createDimensions(data, {\n      coordDimensions: ['single'],\n      dimensionsDefine: [{\n        name: 'time',\n        type: getDimensionTypeByAxis(axisType)\n      }, {\n        name: 'value',\n        type: 'float'\n      }, {\n        name: 'name',\n        type: 'ordinal'\n      }],\n      encodeDefine: {\n        single: 0,\n        value: 1,\n        itemName: 2\n      }\n    });\n    var list = new List(dimensionsInfo, this);\n    list.initData(data);\n    return list;\n  },\n\n  /**\n   * The raw data is divided into multiple layers and each layer\n   *     has same name.\n   *\n   * @return {Array.<Array.<number>>}\n   */\n  getLayerSeries: function () {\n    var data = this.getData();\n    var lenCount = data.count();\n    var indexArr = [];\n\n    for (var i = 0; i < lenCount; ++i) {\n      indexArr[i] = i;\n    } // data group by name\n\n\n    var dataByName = nest().key(function (index) {\n      return data.get('name', index);\n    }).entries(indexArr);\n    var layerSeries = zrUtil.map(dataByName, function (d) {\n      return {\n        name: d.key,\n        indices: d.values\n      };\n    });\n    var timeDim = data.mapDimension('single');\n\n    for (var j = 0; j < layerSeries.length; ++j) {\n      layerSeries[j].indices.sort(comparer);\n    }\n\n    function comparer(index1, index2) {\n      return data.get(timeDim, index1) - data.get(timeDim, index2);\n    }\n\n    return layerSeries;\n  },\n\n  /**\n   * Get data indices for show tooltip content\n   *\n   * @param {Array.<string>|string} dim  single coordinate dimension\n   * @param {number} value axis value\n   * @param {module:echarts/coord/single/SingleAxis} baseAxis  single Axis used\n   *     the themeRiver.\n   * @return {Object} {dataIndices, nestestValue}\n   */\n  getAxisTooltipData: function (dim, value, baseAxis) {\n    if (!zrUtil.isArray(dim)) {\n      dim = dim ? [dim] : [];\n    }\n\n    var data = this.getData();\n    var layerSeries = this.getLayerSeries();\n    var indices = [];\n    var layerNum = layerSeries.length;\n    var nestestValue;\n\n    for (var i = 0; i < layerNum; ++i) {\n      var minDist = Number.MAX_VALUE;\n      var nearestIdx = -1;\n      var pointNum = layerSeries[i].indices.length;\n\n      for (var j = 0; j < pointNum; ++j) {\n        var theValue = data.get(dim[0], layerSeries[i].indices[j]);\n        var dist = Math.abs(theValue - value);\n\n        if (dist <= minDist) {\n          nestestValue = theValue;\n          minDist = dist;\n          nearestIdx = layerSeries[i].indices[j];\n        }\n      }\n\n      indices.push(nearestIdx);\n    }\n\n    return {\n      dataIndices: indices,\n      nestestValue: nestestValue\n    };\n  },\n\n  /**\n   * @override\n   * @param {number} dataIndex  index of data\n   */\n  formatTooltip: function (dataIndex) {\n    var data = this.getData();\n    var htmlName = data.getName(dataIndex);\n    var htmlValue = data.get(data.mapDimension('value'), dataIndex);\n\n    if (isNaN(htmlValue) || htmlValue == null) {\n      htmlValue = '-';\n    }\n\n    return encodeHTML(htmlName + ' : ' + htmlValue);\n  },\n  defaultOption: {\n    zlevel: 0,\n    z: 2,\n    coordinateSystem: 'singleAxis',\n    // gap in axis's orthogonal orientation\n    boundaryGap: ['10%', '10%'],\n    // legendHoverLink: true,\n    singleAxisIndex: 0,\n    animationEasing: 'linear',\n    label: {\n      margin: 4,\n      textAlign: 'right',\n      show: true,\n      position: 'left',\n      color: '#000',\n      fontSize: 11\n    },\n    emphasis: {\n      label: {\n        show: true\n      }\n    }\n  }\n});\nvar _default = ThemeRiverSeries;\nmodule.exports = _default;","var echarts = require(\"../../echarts\");\n\nvar _poly = require(\"../line/poly\");\n\nvar Polygon = _poly.Polygon;\n\nvar graphic = require(\"../../util/graphic\");\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar bind = _util.bind;\nvar extend = _util.extend;\n\nvar DataDiffer = require(\"../../data/DataDiffer\");\n\n/**\n * @file  The file used to draw themeRiver view\n * @author  Deqing Li(annong035@gmail.com)\n */\nvar _default = echarts.extendChartView({\n  type: 'themeRiver',\n  init: function () {\n    this._layers = [];\n  },\n  render: function (seriesModel, ecModel, api) {\n    var data = seriesModel.getData();\n    var group = this.group;\n    var layerSeries = seriesModel.getLayerSeries();\n    var layoutInfo = data.getLayout('layoutInfo');\n    var rect = layoutInfo.rect;\n    var boundaryGap = layoutInfo.boundaryGap;\n    group.attr('position', [0, rect.y + boundaryGap[0]]);\n\n    function keyGetter(item) {\n      return item.name;\n    }\n\n    var dataDiffer = new DataDiffer(this._layersSeries || [], layerSeries, keyGetter, keyGetter);\n    var newLayersGroups = {};\n    dataDiffer.add(bind(process, this, 'add')).update(bind(process, this, 'update')).remove(bind(process, this, 'remove')).execute();\n\n    function process(status, idx, oldIdx) {\n      var oldLayersGroups = this._layers;\n\n      if (status === 'remove') {\n        group.remove(oldLayersGroups[idx]);\n        return;\n      }\n\n      var points0 = [];\n      var points1 = [];\n      var color;\n      var indices = layerSeries[idx].indices;\n\n      for (var j = 0; j < indices.length; j++) {\n        var layout = data.getItemLayout(indices[j]);\n        var x = layout.x;\n        var y0 = layout.y0;\n        var y = layout.y;\n        points0.push([x, y0]);\n        points1.push([x, y0 + y]);\n        color = data.getItemVisual(indices[j], 'color');\n      }\n\n      var polygon;\n      var text;\n      var textLayout = data.getItemLayout(indices[0]);\n      var itemModel = data.getItemModel(indices[j - 1]);\n      var labelModel = itemModel.getModel('label');\n      var margin = labelModel.get('margin');\n\n      if (status === 'add') {\n        var layerGroup = newLayersGroups[idx] = new graphic.Group();\n        polygon = new Polygon({\n          shape: {\n            points: points0,\n            stackedOnPoints: points1,\n            smooth: 0.4,\n            stackedOnSmooth: 0.4,\n            smoothConstraint: false\n          },\n          z2: 0\n        });\n        text = new graphic.Text({\n          style: {\n            x: textLayout.x - margin,\n            y: textLayout.y0 + textLayout.y / 2\n          }\n        });\n        layerGroup.add(polygon);\n        layerGroup.add(text);\n        group.add(layerGroup);\n        polygon.setClipPath(createGridClipShape(polygon.getBoundingRect(), seriesModel, function () {\n          polygon.removeClipPath();\n        }));\n      } else {\n        var layerGroup = oldLayersGroups[oldIdx];\n        polygon = layerGroup.childAt(0);\n        text = layerGroup.childAt(1);\n        group.add(layerGroup);\n        newLayersGroups[idx] = layerGroup;\n        graphic.updateProps(polygon, {\n          shape: {\n            points: points0,\n            stackedOnPoints: points1\n          }\n        }, seriesModel);\n        graphic.updateProps(text, {\n          style: {\n            x: textLayout.x - margin,\n            y: textLayout.y0 + textLayout.y / 2\n          }\n        }, seriesModel);\n      }\n\n      var hoverItemStyleModel = itemModel.getModel('emphasis.itemStyle');\n      var itemStyleModel = itemModel.getModel('itemStyle');\n      graphic.setTextStyle(text.style, labelModel, {\n        text: labelModel.get('show') ? seriesModel.getFormattedLabel(indices[j - 1], 'normal') || data.getName(indices[j - 1]) : null,\n        textVerticalAlign: 'middle'\n      });\n      polygon.setStyle(extend({\n        fill: color\n      }, itemStyleModel.getItemStyle(['color'])));\n      graphic.setHoverStyle(polygon, hoverItemStyleModel.getItemStyle());\n    }\n\n    this._layersSeries = layerSeries;\n    this._layers = newLayersGroups;\n  },\n  dispose: function () {}\n}); // add animation to the view\n\n\nfunction createGridClipShape(rect, seriesModel, cb) {\n  var rectEl = new graphic.Rect({\n    shape: {\n      x: rect.x - 10,\n      y: rect.y - 10,\n      width: 0,\n      height: rect.height + 20\n    }\n  });\n  graphic.initProps(rectEl, {\n    shape: {\n      width: rect.width + 20,\n      height: rect.height + 20\n    }\n  }, seriesModel, cb);\n  return rectEl;\n}\n\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar numberUtil = require(\"../../util/number\");\n\n/**\n * @file  Using layout algorithm transform the raw data to layout information.\n * @author Deqing Li(annong035@gmail.com)\n */\nfunction _default(ecModel, api) {\n  ecModel.eachSeriesByType('themeRiver', function (seriesModel) {\n    var data = seriesModel.getData();\n    var single = seriesModel.coordinateSystem;\n    var layoutInfo = {}; // use the axis boundingRect for view\n\n    var rect = single.getRect();\n    layoutInfo.rect = rect;\n    var boundaryGap = seriesModel.get('boundaryGap');\n    var axis = single.getAxis();\n    layoutInfo.boundaryGap = boundaryGap;\n\n    if (axis.orient === 'horizontal') {\n      boundaryGap[0] = numberUtil.parsePercent(boundaryGap[0], rect.height);\n      boundaryGap[1] = numberUtil.parsePercent(boundaryGap[1], rect.height);\n      var height = rect.height - boundaryGap[0] - boundaryGap[1];\n      themeRiverLayout(data, seriesModel, height);\n    } else {\n      boundaryGap[0] = numberUtil.parsePercent(boundaryGap[0], rect.width);\n      boundaryGap[1] = numberUtil.parsePercent(boundaryGap[1], rect.width);\n      var width = rect.width - boundaryGap[0] - boundaryGap[1];\n      themeRiverLayout(data, seriesModel, width);\n    }\n\n    data.setLayout('layoutInfo', layoutInfo);\n  });\n}\n/**\n * The layout information about themeriver\n *\n * @param {module:echarts/data/List} data  data in the series\n * @param {module:echarts/model/Series} seriesModel  the model object of themeRiver series\n * @param {number} height  value used to compute every series height\n */\n\n\nfunction themeRiverLayout(data, seriesModel, height) {\n  if (!data.count()) {\n    return;\n  }\n\n  var coordSys = seriesModel.coordinateSystem; // the data in each layer are organized into a series.\n\n  var layerSeries = seriesModel.getLayerSeries(); // the points in each layer.\n\n  var timeDim = data.mapDimension('single');\n  var valueDim = data.mapDimension('value');\n  var layerPoints = zrUtil.map(layerSeries, function (singleLayer) {\n    return zrUtil.map(singleLayer.indices, function (idx) {\n      var pt = coordSys.dataToPoint(data.get(timeDim, idx));\n      pt[1] = data.get(valueDim, idx);\n      return pt;\n    });\n  });\n  var base = computeBaseline(layerPoints);\n  var baseLine = base.y0;\n  var ky = height / base.max; // set layout information for each item.\n\n  var n = layerSeries.length;\n  var m = layerSeries[0].indices.length;\n  var baseY0;\n\n  for (var j = 0; j < m; ++j) {\n    baseY0 = baseLine[j] * ky;\n    data.setItemLayout(layerSeries[0].indices[j], {\n      layerIndex: 0,\n      x: layerPoints[0][j][0],\n      y0: baseY0,\n      y: layerPoints[0][j][1] * ky\n    });\n\n    for (var i = 1; i < n; ++i) {\n      baseY0 += layerPoints[i - 1][j][1] * ky;\n      data.setItemLayout(layerSeries[i].indices[j], {\n        layerIndex: i,\n        x: layerPoints[i][j][0],\n        y0: baseY0,\n        y: layerPoints[i][j][1] * ky\n      });\n    }\n  }\n}\n/**\n * Compute the baseLine of the rawdata\n * Inspired by Lee Byron's paper Stacked Graphs - Geometry & Aesthetics\n *\n * @param  {Array.<Array>} data  the points in each layer\n * @return {Object}\n */\n\n\nfunction computeBaseline(data) {\n  var layerNum = data.length;\n  var pointNum = data[0].length;\n  var sums = [];\n  var y0 = [];\n  var max = 0;\n  var temp;\n  var base = {};\n\n  for (var i = 0; i < pointNum; ++i) {\n    for (var j = 0, temp = 0; j < layerNum; ++j) {\n      temp += data[j][i][1];\n    }\n\n    if (temp > max) {\n      max = temp;\n    }\n\n    sums.push(temp);\n  }\n\n  for (var k = 0; k < pointNum; ++k) {\n    y0[k] = (max - sums[k]) / 2;\n  }\n\n  max = 0;\n\n  for (var l = 0; l < pointNum; ++l) {\n    var sum = sums[l] + y0[l];\n\n    if (sum > max) {\n      max = sum;\n    }\n  }\n\n  base.y0 = y0;\n  base.max = max;\n  return base;\n}\n\nmodule.exports = _default;","var _util = require(\"zrender/lib/core/util\");\n\nvar createHashMap = _util.createHashMap;\n\n/**\n * @file Visual encoding for themeRiver view\n * @author  Deqing Li(annong035@gmail.com)\n */\nfunction _default(ecModel) {\n  ecModel.eachSeriesByType('themeRiver', function (seriesModel) {\n    var data = seriesModel.getData();\n    var rawData = seriesModel.getRawData();\n    var colorList = seriesModel.get('color');\n    var idxMap = createHashMap();\n    data.each(function (idx) {\n      idxMap.set(data.getRawIndex(idx), idx);\n    });\n    rawData.each(function (rawIndex) {\n      var name = rawData.getName(rawIndex);\n      var color = colorList[(seriesModel.nameMap.get(name) - 1) % colorList.length];\n      rawData.setItemVisual(rawIndex, 'color', color);\n      var idx = idxMap.get(rawIndex);\n\n      if (idx != null) {\n        data.setItemVisual(idx, 'color', color);\n      }\n    });\n  });\n}\n\nmodule.exports = _default;","var echarts = require(\"../echarts\");\n\nrequire(\"./tree/TreeSeries\");\n\nrequire(\"./tree/TreeView\");\n\nrequire(\"./tree/treeAction\");\n\nvar visualSymbol = require(\"../visual/symbol\");\n\nvar orthogonalLayout = require(\"./tree/orthogonalLayout\");\n\nvar radialLayout = require(\"./tree/radialLayout\");\n\necharts.registerVisual(visualSymbol('tree', 'circle'));\necharts.registerLayout(orthogonalLayout);\necharts.registerLayout(radialLayout);","var SeriesModel = require(\"../../model/Series\");\n\nvar Tree = require(\"../../data/Tree\");\n\nvar _format = require(\"../../util/format\");\n\nvar encodeHTML = _format.encodeHTML;\n\n/**\n * @file Create data struct and define tree view's series model\n */\nvar _default = SeriesModel.extend({\n  type: 'series.tree',\n  layoutInfo: null,\n  // can support the position parameters 'left', 'top','right','bottom', 'width',\n  // 'height' in the setOption() with 'merge' mode normal.\n  layoutMode: 'box',\n\n  /**\n   * Init a tree data structure from data in option series\n   * @param  {Object} option  the object used to config echarts view\n   * @return {module:echarts/data/List} storage initial data\n   */\n  getInitialData: function (option) {\n    //create an virtual root\n    var root = {\n      name: option.name,\n      children: option.data\n    };\n    var leaves = option.leaves || {};\n    var treeOption = {};\n    treeOption.leaves = leaves;\n    var tree = Tree.createTree(root, this, treeOption);\n    var treeDepth = 0;\n    tree.eachNode('preorder', function (node) {\n      if (node.depth > treeDepth) {\n        treeDepth = node.depth;\n      }\n    });\n    var expandAndCollapse = option.expandAndCollapse;\n    var expandTreeDepth = expandAndCollapse && option.initialTreeDepth >= 0 ? option.initialTreeDepth : treeDepth;\n    tree.root.eachNode('preorder', function (node) {\n      var item = node.hostTree.data.getRawDataItem(node.dataIndex);\n      node.isExpand = item && item.collapsed != null ? !item.collapsed : node.depth <= expandTreeDepth;\n    });\n    return tree.data;\n  },\n\n  /**\n   * @override\n   * @param {number} dataIndex\n   */\n  formatTooltip: function (dataIndex) {\n    var tree = this.getData().tree;\n    var realRoot = tree.root.children[0];\n    var node = tree.getNodeByDataIndex(dataIndex);\n    var value = node.getValue();\n    var name = node.name;\n\n    while (node && node !== realRoot) {\n      name = node.parentNode.name + '.' + name;\n      node = node.parentNode;\n    }\n\n    return encodeHTML(name + (isNaN(value) || value == null ? '' : ' : ' + value));\n  },\n  defaultOption: {\n    zlevel: 0,\n    z: 2,\n    // the position of the whole view\n    left: '12%',\n    top: '12%',\n    right: '12%',\n    bottom: '12%',\n    // the layout of the tree, two value can be selected, 'orthogonal' or 'radial'\n    layout: 'orthogonal',\n    // the orient of orthoginal layout, can be setted to 'horizontal' or 'vertical'\n    orient: 'horizontal',\n    symbol: 'emptyCircle',\n    symbolSize: 7,\n    expandAndCollapse: true,\n    initialTreeDepth: 2,\n    lineStyle: {\n      color: '#ccc',\n      width: 1.5,\n      curveness: 0.5\n    },\n    itemStyle: {\n      color: 'lightsteelblue',\n      borderColor: '#c23531',\n      borderWidth: 1.5\n    },\n    label: {\n      show: true,\n      color: '#555'\n    },\n    leaves: {\n      label: {\n        show: true\n      }\n    },\n    animationEasing: 'linear',\n    animationDuration: 700,\n    animationDurationUpdate: 1000\n  }\n});\n\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar SymbolClz = require(\"../helper/Symbol\");\n\nvar _layoutHelper = require(\"./layoutHelper\");\n\nvar radialCoordinate = _layoutHelper.radialCoordinate;\n\nvar echarts = require(\"../../echarts\");\n\n/**\n * @file  This file used to draw tree view\n */\nvar _default = echarts.extendChartView({\n  type: 'tree',\n\n  /**\n   * Init the chart\n   * @override\n   * @param  {module:echarts/model/Global} ecModel\n   * @param  {module:echarts/ExtensionAPI} api\n   */\n  init: function (ecModel, api) {\n    /**\n     * @private\n     * @type {module:echarts/data/Tree}\n     */\n    this._oldTree;\n    /**\n     * @private\n     * @type {module:zrender/container/Group}\n     */\n\n    this._mainGroup = new graphic.Group();\n    this.group.add(this._mainGroup);\n  },\n  render: function (seriesModel, ecModel, api, payload) {\n    var data = seriesModel.getData();\n    var layoutInfo = seriesModel.layoutInfo;\n    var group = this._mainGroup;\n    var layout = seriesModel.get('layout');\n\n    if (layout === 'radial') {\n      group.attr('position', [layoutInfo.x + layoutInfo.width / 2, layoutInfo.y + layoutInfo.height / 2]);\n    } else {\n      group.attr('position', [layoutInfo.x, layoutInfo.y]);\n    }\n\n    var oldData = this._data;\n    var seriesScope = {\n      expandAndCollapse: seriesModel.get('expandAndCollapse'),\n      layout: layout,\n      orient: seriesModel.get('orient'),\n      curvature: seriesModel.get('lineStyle.curveness'),\n      symbolRotate: seriesModel.get('symbolRotate'),\n      symbolOffset: seriesModel.get('symbolOffset'),\n      hoverAnimation: seriesModel.get('hoverAnimation'),\n      useNameLabel: true,\n      fadeIn: true\n    };\n    data.diff(oldData).add(function (newIdx) {\n      if (symbolNeedsDraw(data, newIdx)) {\n        // create node and edge\n        updateNode(data, newIdx, null, group, seriesModel, seriesScope);\n      }\n    }).update(function (newIdx, oldIdx) {\n      var symbolEl = oldData.getItemGraphicEl(oldIdx);\n\n      if (!symbolNeedsDraw(data, newIdx)) {\n        symbolEl && removeNode(data, newIdx, symbolEl, group, seriesModel, seriesScope);\n        return;\n      } // update  node and edge\n\n\n      updateNode(data, newIdx, symbolEl, group, seriesModel, seriesScope);\n    }).remove(function (oldIdx) {\n      var symbolEl = oldData.getItemGraphicEl(oldIdx);\n      removeNode(data, oldIdx, symbolEl, group, seriesModel, seriesScope);\n    }).execute();\n\n    if (seriesScope.expandAndCollapse === true) {\n      data.eachItemGraphicEl(function (el, dataIndex) {\n        el.off('click').on('click', function () {\n          api.dispatchAction({\n            type: 'treeExpandAndCollapse',\n            seriesId: seriesModel.id,\n            dataIndex: dataIndex\n          });\n        });\n      });\n    }\n\n    this._data = data;\n  },\n  dispose: function () {},\n  remove: function () {\n    this._mainGroup.removeAll();\n\n    this._data = null;\n  }\n});\n\nfunction symbolNeedsDraw(data, dataIndex) {\n  var layout = data.getItemLayout(dataIndex);\n  return layout && !isNaN(layout.x) && !isNaN(layout.y) && data.getItemVisual(dataIndex, 'symbol') !== 'none';\n}\n\nfunction getTreeNodeStyle(node, itemModel, seriesScope) {\n  seriesScope.itemModel = itemModel;\n  seriesScope.itemStyle = itemModel.getModel('itemStyle').getItemStyle();\n  seriesScope.hoverItemStyle = itemModel.getModel('emphasis.itemStyle').getItemStyle();\n  seriesScope.lineStyle = itemModel.getModel('lineStyle').getLineStyle();\n  seriesScope.labelModel = itemModel.getModel('label');\n  seriesScope.hoverLabelModel = itemModel.getModel('emphasis.label');\n\n  if (node.isExpand === false && node.children.length !== 0) {\n    seriesScope.symbolInnerColor = seriesScope.itemStyle.fill;\n  } else {\n    seriesScope.symbolInnerColor = '#fff';\n  }\n\n  return seriesScope;\n}\n\nfunction updateNode(data, dataIndex, symbolEl, group, seriesModel, seriesScope) {\n  var isInit = !symbolEl;\n  var node = data.tree.getNodeByDataIndex(dataIndex);\n  var itemModel = node.getModel();\n  var seriesScope = getTreeNodeStyle(node, itemModel, seriesScope);\n  var virtualRoot = data.tree.root;\n  var source = node.parentNode === virtualRoot ? node : node.parentNode || node;\n  var sourceSymbolEl = data.getItemGraphicEl(source.dataIndex);\n  var sourceLayout = source.getLayout();\n  var sourceOldLayout = sourceSymbolEl ? {\n    x: sourceSymbolEl.position[0],\n    y: sourceSymbolEl.position[1],\n    rawX: sourceSymbolEl.__radialOldRawX,\n    rawY: sourceSymbolEl.__radialOldRawY\n  } : sourceLayout;\n  var targetLayout = node.getLayout();\n\n  if (isInit) {\n    symbolEl = new SymbolClz(data, dataIndex, seriesScope);\n    symbolEl.attr('position', [sourceOldLayout.x, sourceOldLayout.y]);\n  } else {\n    symbolEl.updateData(data, dataIndex, seriesScope);\n  }\n\n  symbolEl.__radialOldRawX = symbolEl.__radialRawX;\n  symbolEl.__radialOldRawY = symbolEl.__radialRawY;\n  symbolEl.__radialRawX = targetLayout.rawX;\n  symbolEl.__radialRawY = targetLayout.rawY;\n  group.add(symbolEl);\n  data.setItemGraphicEl(dataIndex, symbolEl);\n  graphic.updateProps(symbolEl, {\n    position: [targetLayout.x, targetLayout.y]\n  }, seriesModel);\n  var symbolPath = symbolEl.getSymbolPath();\n\n  if (seriesScope.layout === 'radial') {\n    var realRoot = virtualRoot.children[0];\n    var rootLayout = realRoot.getLayout();\n    var length = realRoot.children.length;\n    var rad;\n    var isLeft;\n\n    if (targetLayout.x === rootLayout.x && node.isExpand === true) {\n      var center = {};\n      center.x = (realRoot.children[0].getLayout().x + realRoot.children[length - 1].getLayout().x) / 2;\n      center.y = (realRoot.children[0].getLayout().y + realRoot.children[length - 1].getLayout().y) / 2;\n      rad = Math.atan2(center.y - rootLayout.y, center.x - rootLayout.x);\n\n      if (rad < 0) {\n        rad = Math.PI * 2 + rad;\n      }\n\n      isLeft = center.x < rootLayout.x;\n\n      if (isLeft) {\n        rad = rad - Math.PI;\n      }\n    } else {\n      rad = Math.atan2(targetLayout.y - rootLayout.y, targetLayout.x - rootLayout.x);\n\n      if (rad < 0) {\n        rad = Math.PI * 2 + rad;\n      }\n\n      if (node.children.length === 0 || node.children.length !== 0 && node.isExpand === false) {\n        isLeft = targetLayout.x < rootLayout.x;\n\n        if (isLeft) {\n          rad = rad - Math.PI;\n        }\n      } else {\n        isLeft = targetLayout.x > rootLayout.x;\n\n        if (!isLeft) {\n          rad = rad - Math.PI;\n        }\n      }\n    }\n\n    var textPosition = isLeft ? 'left' : 'right';\n    symbolPath.setStyle({\n      textPosition: textPosition,\n      textRotation: -rad,\n      textOrigin: 'center',\n      verticalAlign: 'middle'\n    });\n  }\n\n  if (node.parentNode && node.parentNode !== virtualRoot) {\n    var edge = symbolEl.__edge;\n\n    if (!edge) {\n      edge = symbolEl.__edge = new graphic.BezierCurve({\n        shape: getEdgeShape(seriesScope, sourceOldLayout, sourceOldLayout),\n        style: zrUtil.defaults({\n          opacity: 0\n        }, seriesScope.lineStyle)\n      });\n    }\n\n    graphic.updateProps(edge, {\n      shape: getEdgeShape(seriesScope, sourceLayout, targetLayout),\n      style: {\n        opacity: 1\n      }\n    }, seriesModel);\n    group.add(edge);\n  }\n}\n\nfunction removeNode(data, dataIndex, symbolEl, group, seriesModel, seriesScope) {\n  var node = data.tree.getNodeByDataIndex(dataIndex);\n  var virtualRoot = data.tree.root;\n  var itemModel = node.getModel();\n  var seriesScope = getTreeNodeStyle(node, itemModel, seriesScope);\n  var source = node.parentNode === virtualRoot ? node : node.parentNode || node;\n  var sourceLayout;\n\n  while (sourceLayout = source.getLayout(), sourceLayout == null) {\n    source = source.parentNode === virtualRoot ? source : source.parentNode || source;\n  }\n\n  graphic.updateProps(symbolEl, {\n    position: [sourceLayout.x + 1, sourceLayout.y + 1]\n  }, seriesModel, function () {\n    group.remove(symbolEl);\n    data.setItemGraphicEl(dataIndex, null);\n  });\n  symbolEl.fadeOut(null, {\n    keepLabel: true\n  });\n  var edge = symbolEl.__edge;\n\n  if (edge) {\n    graphic.updateProps(edge, {\n      shape: getEdgeShape(seriesScope, sourceLayout, sourceLayout),\n      style: {\n        opacity: 0\n      }\n    }, seriesModel, function () {\n      group.remove(edge);\n    });\n  }\n}\n\nfunction getEdgeShape(seriesScope, sourceLayout, targetLayout) {\n  var cpx1;\n  var cpy1;\n  var cpx2;\n  var cpy2;\n  var orient = seriesScope.orient;\n\n  if (seriesScope.layout === 'radial') {\n    var x1 = sourceLayout.rawX;\n    var y1 = sourceLayout.rawY;\n    var x2 = targetLayout.rawX;\n    var y2 = targetLayout.rawY;\n    var radialCoor1 = radialCoordinate(x1, y1);\n    var radialCoor2 = radialCoordinate(x1, y1 + (y2 - y1) * seriesScope.curvature);\n    var radialCoor3 = radialCoordinate(x2, y2 + (y1 - y2) * seriesScope.curvature);\n    var radialCoor4 = radialCoordinate(x2, y2);\n    return {\n      x1: radialCoor1.x,\n      y1: radialCoor1.y,\n      x2: radialCoor4.x,\n      y2: radialCoor4.y,\n      cpx1: radialCoor2.x,\n      cpy1: radialCoor2.y,\n      cpx2: radialCoor3.x,\n      cpy2: radialCoor3.y\n    };\n  } else {\n    var x1 = sourceLayout.x;\n    var y1 = sourceLayout.y;\n    var x2 = targetLayout.x;\n    var y2 = targetLayout.y;\n\n    if (orient === 'horizontal') {\n      cpx1 = x1 + (x2 - x1) * seriesScope.curvature;\n      cpy1 = y1;\n      cpx2 = x2 + (x1 - x2) * seriesScope.curvature;\n      cpy2 = y2;\n    }\n\n    if (orient === 'vertical') {\n      cpx1 = x1;\n      cpy1 = y1 + (y2 - y1) * seriesScope.curvature;\n      cpx2 = x2;\n      cpy2 = y2 + (y1 - y2) * seriesScope.curvature;\n    }\n\n    return {\n      x1: x1,\n      y1: y1,\n      x2: x2,\n      y2: y2,\n      cpx1: cpx1,\n      cpy1: cpy1,\n      cpx2: cpx2,\n      cpy2: cpy2\n    };\n  }\n}\n\nmodule.exports = _default;","var _traversalHelper = require(\"./traversalHelper\");\n\nvar eachAfter = _traversalHelper.eachAfter;\nvar eachBefore = _traversalHelper.eachBefore;\n\nvar _layoutHelper = require(\"./layoutHelper\");\n\nvar init = _layoutHelper.init;\nvar firstWalk = _layoutHelper.firstWalk;\nvar secondWalk = _layoutHelper.secondWalk;\nvar sep = _layoutHelper.separation;\nvar radialCoordinate = _layoutHelper.radialCoordinate;\nvar getViewRect = _layoutHelper.getViewRect;\n\nfunction _default(seriesModel, api) {\n  var layoutInfo = getViewRect(seriesModel, api);\n  seriesModel.layoutInfo = layoutInfo;\n  var layout = seriesModel.get('layout');\n  var width = 0;\n  var height = 0;\n  var separation = null;\n\n  if (layout === 'radial') {\n    width = 2 * Math.PI;\n    height = Math.min(layoutInfo.height, layoutInfo.width) / 2;\n    separation = sep(function (node1, node2) {\n      return (node1.parentNode === node2.parentNode ? 1 : 2) / node1.depth;\n    });\n  } else {\n    width = layoutInfo.width;\n    height = layoutInfo.height;\n    separation = sep();\n  }\n\n  var virtualRoot = seriesModel.getData().tree.root;\n  var realRoot = virtualRoot.children[0];\n  init(virtualRoot);\n  eachAfter(realRoot, firstWalk, separation);\n  virtualRoot.hierNode.modifier = -realRoot.hierNode.prelim;\n  eachBefore(realRoot, secondWalk);\n  var left = realRoot;\n  var right = realRoot;\n  var bottom = realRoot;\n  eachBefore(realRoot, function (node) {\n    var x = node.getLayout().x;\n\n    if (x < left.getLayout().x) {\n      left = node;\n    }\n\n    if (x > right.getLayout().x) {\n      right = node;\n    }\n\n    if (node.depth > bottom.depth) {\n      bottom = node;\n    }\n  });\n  var delta = left === right ? 1 : separation(left, right) / 2;\n  var tx = delta - left.getLayout().x;\n  var kx = 0;\n  var ky = 0;\n  var coorX = 0;\n  var coorY = 0;\n\n  if (layout === 'radial') {\n    kx = width / (right.getLayout().x + delta + tx); // here we use (node.depth - 1), bucause the real root's depth is 1\n\n    ky = height / (bottom.depth - 1 || 1);\n    eachBefore(realRoot, function (node) {\n      coorX = (node.getLayout().x + tx) * kx;\n      coorY = (node.depth - 1) * ky;\n      var finalCoor = radialCoordinate(coorX, coorY);\n      node.setLayout({\n        x: finalCoor.x,\n        y: finalCoor.y,\n        rawX: coorX,\n        rawY: coorY\n      }, true);\n    });\n  } else {\n    if (seriesModel.get('orient') === 'horizontal') {\n      ky = height / (right.getLayout().x + delta + tx);\n      kx = width / (bottom.depth - 1 || 1);\n      eachBefore(realRoot, function (node) {\n        coorY = (node.getLayout().x + tx) * ky;\n        coorX = (node.depth - 1) * kx;\n        node.setLayout({\n          x: coorX,\n          y: coorY\n        }, true);\n      });\n    } else {\n      kx = width / (right.getLayout().x + delta + tx);\n      ky = height / (bottom.depth - 1 || 1);\n      eachBefore(realRoot, function (node) {\n        coorX = (node.getLayout().x + tx) * kx;\n        coorY = (node.depth - 1) * ky;\n        node.setLayout({\n          x: coorX,\n          y: coorY\n        }, true);\n      });\n    }\n  }\n}\n\nmodule.exports = _default;","var layout = require(\"../../util/layout\");\n\n/**\n * @file The layout algorithm of node-link tree diagrams. Here we using Reingold-Tilford algorithm to drawing\n *       the tree.\n * @see https://github.com/d3/d3-hierarchy\n */\n\n/**\n * Initialize all computational message for following algorithm\n * @param  {module:echarts/data/Tree~TreeNode} root   The virtual root of the tree\n */\nfunction init(root) {\n  root.hierNode = {\n    defaultAncestor: null,\n    ancestor: root,\n    prelim: 0,\n    modifier: 0,\n    change: 0,\n    shift: 0,\n    i: 0,\n    thread: null\n  };\n  var nodes = [root];\n  var node;\n  var children;\n\n  while (node = nodes.pop()) {\n    // jshint ignore:line\n    children = node.children;\n\n    if (node.isExpand && children.length) {\n      var n = children.length;\n\n      for (var i = n - 1; i >= 0; i--) {\n        var child = children[i];\n        child.hierNode = {\n          defaultAncestor: null,\n          ancestor: child,\n          prelim: 0,\n          modifier: 0,\n          change: 0,\n          shift: 0,\n          i: i,\n          thread: null\n        };\n        nodes.push(child);\n      }\n    }\n  }\n}\n/**\n * Computes a preliminary x coordinate for node. Before that, this function is\n * applied recursively to the children of node, as well as the function\n * apportion(). After spacing out the children by calling executeShifts(), the\n * node is placed to the midpoint of its outermost children.\n * @param  {module:echarts/data/Tree~TreeNode} node\n * @param {Function} separation\n */\n\n\nfunction firstWalk(node, separation) {\n  var children = node.isExpand ? node.children : [];\n  var siblings = node.parentNode.children;\n  var subtreeW = node.hierNode.i ? siblings[node.hierNode.i - 1] : null;\n\n  if (children.length) {\n    executeShifts(node);\n    var midPoint = (children[0].hierNode.prelim + children[children.length - 1].hierNode.prelim) / 2;\n\n    if (subtreeW) {\n      node.hierNode.prelim = subtreeW.hierNode.prelim + separation(node, subtreeW);\n      node.hierNode.modifier = node.hierNode.prelim - midPoint;\n    } else {\n      node.hierNode.prelim = midPoint;\n    }\n  } else if (subtreeW) {\n    node.hierNode.prelim = subtreeW.hierNode.prelim + separation(node, subtreeW);\n  }\n\n  node.parentNode.hierNode.defaultAncestor = apportion(node, subtreeW, node.parentNode.hierNode.defaultAncestor || siblings[0], separation);\n}\n/**\n * Computes all real x-coordinates by summing up the modifiers recursively.\n * @param  {module:echarts/data/Tree~TreeNode} node\n */\n\n\nfunction secondWalk(node) {\n  var nodeX = node.hierNode.prelim + node.parentNode.hierNode.modifier;\n  node.setLayout({\n    x: nodeX\n  }, true);\n  node.hierNode.modifier += node.parentNode.hierNode.modifier;\n}\n\nfunction separation(cb) {\n  return arguments.length ? cb : defaultSeparation;\n}\n/**\n * Transform the common coordinate to radial coordinate\n * @param  {number} x\n * @param  {number} y\n * @return {Object}\n */\n\n\nfunction radialCoordinate(x, y) {\n  var radialCoor = {};\n  x -= Math.PI / 2;\n  radialCoor.x = y * Math.cos(x);\n  radialCoor.y = y * Math.sin(x);\n  return radialCoor;\n}\n/**\n * Get the layout position of the whole view\n * @param {module:echarts/model/Series} seriesModel  the model object of sankey series\n * @param {module:echarts/ExtensionAPI} api  provide the API list that the developer can call\n * @return {module:zrender/core/BoundingRect}  size of rect to draw the sankey view\n */\n\n\nfunction getViewRect(seriesModel, api) {\n  return layout.getLayoutRect(seriesModel.getBoxLayoutParams(), {\n    width: api.getWidth(),\n    height: api.getHeight()\n  });\n}\n/**\n * All other shifts, applied to the smaller subtrees between w- and w+, are\n * performed by this function.\n * @param  {module:echarts/data/Tree~TreeNode} node\n */\n\n\nfunction executeShifts(node) {\n  var children = node.children;\n  var n = children.length;\n  var shift = 0;\n  var change = 0;\n\n  while (--n >= 0) {\n    var child = children[n];\n    child.hierNode.prelim += shift;\n    child.hierNode.modifier += shift;\n    change += child.hierNode.change;\n    shift += child.hierNode.shift + change;\n  }\n}\n/**\n * The core of the algorithm. Here, a new subtree is combined with the\n * previous subtrees. Threads are used to traverse the inside and outside\n * contours of the left and right subtree up to the highest common level.\n * Whenever two nodes of the inside contours conflict, we compute the left\n * one of the greatest uncommon ancestors using the function nextAncestor()\n * and call moveSubtree() to shift the subtree and prepare the shifts of\n * smaller subtrees. Finally, we add a new thread (if necessary).\n * @param  {module:echarts/data/Tree~TreeNode} subtreeV\n * @param  {module:echarts/data/Tree~TreeNode} subtreeW\n * @param  {module:echarts/data/Tree~TreeNode} ancestor\n * @param  {Function} separation\n * @return {module:echarts/data/Tree~TreeNode}\n */\n\n\nfunction apportion(subtreeV, subtreeW, ancestor, separation) {\n  if (subtreeW) {\n    var nodeOutRight = subtreeV;\n    var nodeInRight = subtreeV;\n    var nodeOutLeft = nodeInRight.parentNode.children[0];\n    var nodeInLeft = subtreeW;\n    var sumOutRight = nodeOutRight.hierNode.modifier;\n    var sumInRight = nodeInRight.hierNode.modifier;\n    var sumOutLeft = nodeOutLeft.hierNode.modifier;\n    var sumInLeft = nodeInLeft.hierNode.modifier;\n\n    while (nodeInLeft = nextRight(nodeInLeft), nodeInRight = nextLeft(nodeInRight), nodeInLeft && nodeInRight) {\n      nodeOutRight = nextRight(nodeOutRight);\n      nodeOutLeft = nextLeft(nodeOutLeft);\n      nodeOutRight.hierNode.ancestor = subtreeV;\n      var shift = nodeInLeft.hierNode.prelim + sumInLeft - nodeInRight.hierNode.prelim - sumInRight + separation(nodeInLeft, nodeInRight);\n\n      if (shift > 0) {\n        moveSubtree(nextAncestor(nodeInLeft, subtreeV, ancestor), subtreeV, shift);\n        sumInRight += shift;\n        sumOutRight += shift;\n      }\n\n      sumInLeft += nodeInLeft.hierNode.modifier;\n      sumInRight += nodeInRight.hierNode.modifier;\n      sumOutRight += nodeOutRight.hierNode.modifier;\n      sumOutLeft += nodeOutLeft.hierNode.modifier;\n    }\n\n    if (nodeInLeft && !nextRight(nodeOutRight)) {\n      nodeOutRight.hierNode.thread = nodeInLeft;\n      nodeOutRight.hierNode.modifier += sumInLeft - sumOutRight;\n    }\n\n    if (nodeInRight && !nextLeft(nodeOutLeft)) {\n      nodeOutLeft.hierNode.thread = nodeInRight;\n      nodeOutLeft.hierNode.modifier += sumInRight - sumOutLeft;\n      ancestor = subtreeV;\n    }\n  }\n\n  return ancestor;\n}\n/**\n * This function is used to traverse the right contour of a subtree.\n * It returns the rightmost child of node or the thread of node. The function\n * returns null if and only if node is on the highest depth of its subtree.\n * @param  {module:echarts/data/Tree~TreeNode} node\n * @return {module:echarts/data/Tree~TreeNode}\n */\n\n\nfunction nextRight(node) {\n  var children = node.children;\n  return children.length && node.isExpand ? children[children.length - 1] : node.hierNode.thread;\n}\n/**\n * This function is used to traverse the left contour of a subtree (or a subforest).\n * It returns the leftmost child of node or the thread of node. The function\n * returns null if and only if node is on the highest depth of its subtree.\n * @param  {module:echarts/data/Tree~TreeNode} node\n * @return {module:echarts/data/Tree~TreeNode}\n */\n\n\nfunction nextLeft(node) {\n  var children = node.children;\n  return children.length && node.isExpand ? children[0] : node.hierNode.thread;\n}\n/**\n * If nodeInLeft’s ancestor is a sibling of node, returns nodeInLeft’s ancestor.\n * Otherwise, returns the specified ancestor.\n * @param  {module:echarts/data/Tree~TreeNode} nodeInLeft\n * @param  {module:echarts/data/Tree~TreeNode} node\n * @param  {module:echarts/data/Tree~TreeNode} ancestor\n * @return {module:echarts/data/Tree~TreeNode}\n */\n\n\nfunction nextAncestor(nodeInLeft, node, ancestor) {\n  return nodeInLeft.hierNode.ancestor.parentNode === node.parentNode ? nodeInLeft.hierNode.ancestor : ancestor;\n}\n/**\n * Shifts the current subtree rooted at wr. This is done by increasing prelim(w+) and modifier(w+) by shift.\n * @param  {module:echarts/data/Tree~TreeNode} wl\n * @param  {module:echarts/data/Tree~TreeNode} wr\n * @param  {number} shift [description]\n */\n\n\nfunction moveSubtree(wl, wr, shift) {\n  var change = shift / (wr.hierNode.i - wl.hierNode.i);\n  wr.hierNode.change -= change;\n  wr.hierNode.shift += shift;\n  wr.hierNode.modifier += shift;\n  wr.hierNode.prelim += shift;\n  wl.hierNode.change += change;\n}\n\nfunction defaultSeparation(node1, node2) {\n  return node1.parentNode === node2.parentNode ? 1 : 2;\n}\n\nexports.init = init;\nexports.firstWalk = firstWalk;\nexports.secondWalk = secondWalk;\nexports.separation = separation;\nexports.radialCoordinate = radialCoordinate;\nexports.getViewRect = getViewRect;","var commonLayout = require(\"./commonLayout\");\n\nfunction _default(ecModel, api) {\n  ecModel.eachSeriesByType('tree', function (seriesModel) {\n    commonLayout(seriesModel, api);\n  });\n}\n\nmodule.exports = _default;","var commonLayout = require(\"./commonLayout\");\n\nfunction _default(ecModel, api) {\n  ecModel.eachSeriesByType('tree', function (seriesModel) {\n    commonLayout(seriesModel, api);\n  });\n}\n\nmodule.exports = _default;","/**\n * Traverse the tree from bottom to top and do something\n * @param  {module:echarts/data/Tree~TreeNode} root  The real root of the tree\n * @param  {Function} callback\n */\nfunction eachAfter(root, callback, separation) {\n  var nodes = [root];\n  var next = [];\n  var node;\n\n  while (node = nodes.pop()) {\n    // jshint ignore:line\n    next.push(node);\n\n    if (node.isExpand) {\n      var children = node.children;\n\n      if (children.length) {\n        for (var i = 0; i < children.length; i++) {\n          nodes.push(children[i]);\n        }\n      }\n    }\n  }\n\n  while (node = next.pop()) {\n    // jshint ignore:line\n    callback(node, separation);\n  }\n}\n/**\n * Traverse the tree from top to bottom and do something\n * @param  {module:echarts/data/Tree~TreeNode} root  The real root of the tree\n * @param  {Function} callback\n */\n\n\nfunction eachBefore(root, callback) {\n  var nodes = [root];\n  var node;\n\n  while (node = nodes.pop()) {\n    // jshint ignore:line\n    callback(node);\n\n    if (node.isExpand) {\n      var children = node.children;\n\n      if (children.length) {\n        for (var i = children.length - 1; i >= 0; i--) {\n          nodes.push(children[i]);\n        }\n      }\n    }\n  }\n}\n\nexports.eachAfter = eachAfter;\nexports.eachBefore = eachBefore;","var echarts = require(\"../../echarts\");\n\necharts.registerAction({\n  type: 'treeExpandAndCollapse',\n  event: 'treeExpandAndCollapse',\n  update: 'update'\n}, function (payload, ecModel) {\n  ecModel.eachComponent({\n    mainType: 'series',\n    subType: 'tree',\n    query: payload\n  }, function (seriesModel) {\n    var dataIndex = payload.dataIndex;\n    var tree = seriesModel.getData().tree;\n    var node = tree.getNodeByDataIndex(dataIndex);\n    node.isExpand = !node.isExpand;\n  });\n});","var echarts = require(\"../echarts\");\n\nrequire(\"./treemap/TreemapSeries\");\n\nrequire(\"./treemap/TreemapView\");\n\nrequire(\"./treemap/treemapAction\");\n\nvar treemapVisual = require(\"./treemap/treemapVisual\");\n\nvar treemapLayout = require(\"./treemap/treemapLayout\");\n\necharts.registerVisual(treemapVisual);\necharts.registerLayout(treemapLayout);","var graphic = require(\"../../util/graphic\");\n\nvar layout = require(\"../../util/layout\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar _treeHelper = require(\"../helper/treeHelper\");\n\nvar wrapTreePathInfo = _treeHelper.wrapTreePathInfo;\nvar TEXT_PADDING = 8;\nvar ITEM_GAP = 8;\nvar ARRAY_LENGTH = 5;\n\nfunction Breadcrumb(containerGroup) {\n  /**\n   * @private\n   * @type {module:zrender/container/Group}\n   */\n  this.group = new graphic.Group();\n  containerGroup.add(this.group);\n}\n\nBreadcrumb.prototype = {\n  constructor: Breadcrumb,\n  render: function (seriesModel, api, targetNode, onSelect) {\n    var model = seriesModel.getModel('breadcrumb');\n    var thisGroup = this.group;\n    thisGroup.removeAll();\n\n    if (!model.get('show') || !targetNode) {\n      return;\n    }\n\n    var normalStyleModel = model.getModel('itemStyle'); // var emphasisStyleModel = model.getModel('emphasis.itemStyle');\n\n    var textStyleModel = normalStyleModel.getModel('textStyle');\n    var layoutParam = {\n      pos: {\n        left: model.get('left'),\n        right: model.get('right'),\n        top: model.get('top'),\n        bottom: model.get('bottom')\n      },\n      box: {\n        width: api.getWidth(),\n        height: api.getHeight()\n      },\n      emptyItemWidth: model.get('emptyItemWidth'),\n      totalWidth: 0,\n      renderList: []\n    };\n\n    this._prepare(targetNode, layoutParam, textStyleModel);\n\n    this._renderContent(seriesModel, layoutParam, normalStyleModel, textStyleModel, onSelect);\n\n    layout.positionElement(thisGroup, layoutParam.pos, layoutParam.box);\n  },\n\n  /**\n   * Prepare render list and total width\n   * @private\n   */\n  _prepare: function (targetNode, layoutParam, textStyleModel) {\n    for (var node = targetNode; node; node = node.parentNode) {\n      var text = node.getModel().get('name');\n      var textRect = textStyleModel.getTextRect(text);\n      var itemWidth = Math.max(textRect.width + TEXT_PADDING * 2, layoutParam.emptyItemWidth);\n      layoutParam.totalWidth += itemWidth + ITEM_GAP;\n      layoutParam.renderList.push({\n        node: node,\n        text: text,\n        width: itemWidth\n      });\n    }\n  },\n\n  /**\n   * @private\n   */\n  _renderContent: function (seriesModel, layoutParam, normalStyleModel, textStyleModel, onSelect) {\n    // Start rendering.\n    var lastX = 0;\n    var emptyItemWidth = layoutParam.emptyItemWidth;\n    var height = seriesModel.get('breadcrumb.height');\n    var availableSize = layout.getAvailableSize(layoutParam.pos, layoutParam.box);\n    var totalWidth = layoutParam.totalWidth;\n    var renderList = layoutParam.renderList;\n\n    for (var i = renderList.length - 1; i >= 0; i--) {\n      var item = renderList[i];\n      var itemNode = item.node;\n      var itemWidth = item.width;\n      var text = item.text; // Hdie text and shorten width if necessary.\n\n      if (totalWidth > availableSize.width) {\n        totalWidth -= itemWidth - emptyItemWidth;\n        itemWidth = emptyItemWidth;\n        text = null;\n      }\n\n      var el = new graphic.Polygon({\n        shape: {\n          points: makeItemPoints(lastX, 0, itemWidth, height, i === renderList.length - 1, i === 0)\n        },\n        style: zrUtil.defaults(normalStyleModel.getItemStyle(), {\n          lineJoin: 'bevel',\n          text: text,\n          textFill: textStyleModel.getTextColor(),\n          textFont: textStyleModel.getFont()\n        }),\n        z: 10,\n        onclick: zrUtil.curry(onSelect, itemNode)\n      });\n      this.group.add(el);\n      packEventData(el, seriesModel, itemNode);\n      lastX += itemWidth + ITEM_GAP;\n    }\n  },\n\n  /**\n   * @override\n   */\n  remove: function () {\n    this.group.removeAll();\n  }\n};\n\nfunction makeItemPoints(x, y, itemWidth, itemHeight, head, tail) {\n  var points = [[head ? x : x - ARRAY_LENGTH, y], [x + itemWidth, y], [x + itemWidth, y + itemHeight], [head ? x : x - ARRAY_LENGTH, y + itemHeight]];\n  !tail && points.splice(2, 0, [x + itemWidth + ARRAY_LENGTH, y + itemHeight / 2]);\n  !head && points.push([x, y + itemHeight / 2]);\n  return points;\n} // Package custom mouse event.\n\n\nfunction packEventData(el, seriesModel, itemNode) {\n  el.eventData = {\n    componentType: 'series',\n    componentSubType: 'treemap',\n    seriesIndex: seriesModel.componentIndex,\n    seriesName: seriesModel.name,\n    seriesType: 'treemap',\n    selfType: 'breadcrumb',\n    // Distinguish with click event on treemap node.\n    nodeData: {\n      dataIndex: itemNode && itemNode.dataIndex,\n      name: itemNode && itemNode.name\n    },\n    treePathInfo: itemNode && wrapTreePathInfo(itemNode, seriesModel)\n  };\n}\n\nvar _default = Breadcrumb;\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar SeriesModel = require(\"../../model/Series\");\n\nvar Tree = require(\"../../data/Tree\");\n\nvar Model = require(\"../../model/Model\");\n\nvar _format = require(\"../../util/format\");\n\nvar encodeHTML = _format.encodeHTML;\nvar addCommas = _format.addCommas;\n\nvar _treeHelper = require(\"../helper/treeHelper\");\n\nvar wrapTreePathInfo = _treeHelper.wrapTreePathInfo;\n\nvar _default = SeriesModel.extend({\n  type: 'series.treemap',\n  layoutMode: 'box',\n  dependencies: ['grid', 'polar'],\n\n  /**\n   * @type {module:echarts/data/Tree~Node}\n   */\n  _viewRoot: null,\n  defaultOption: {\n    // Disable progressive rendering\n    progressive: 0,\n    hoverLayerThreshold: Infinity,\n    // center: ['50%', '50%'],          // not supported in ec3.\n    // size: ['80%', '80%'],            // deprecated, compatible with ec2.\n    left: 'center',\n    top: 'middle',\n    right: null,\n    bottom: null,\n    width: '80%',\n    height: '80%',\n    sort: true,\n    // Can be null or false or true\n    // (order by desc default, asc not supported yet (strange effect))\n    clipWindow: 'origin',\n    // Size of clipped window when zooming. 'origin' or 'fullscreen'\n    squareRatio: 0.5 * (1 + Math.sqrt(5)),\n    // golden ratio\n    leafDepth: null,\n    // Nodes on depth from root are regarded as leaves.\n    // Count from zero (zero represents only view root).\n    drillDownIcon: '▶',\n    // Use html character temporarily because it is complicated\n    // to align specialized icon. ▷▶❒❐▼✚\n    zoomToNodeRatio: 0.32 * 0.32,\n    // Be effective when using zoomToNode. Specify the proportion of the\n    // target node area in the view area.\n    roam: true,\n    // true, false, 'scale' or 'zoom', 'move'.\n    nodeClick: 'zoomToNode',\n    // Leaf node click behaviour: 'zoomToNode', 'link', false.\n    // If leafDepth is set and clicking a node which has children but\n    // be on left depth, the behaviour would be changing root. Otherwise\n    // use behavious defined above.\n    animation: true,\n    animationDurationUpdate: 900,\n    animationEasing: 'quinticInOut',\n    breadcrumb: {\n      show: true,\n      height: 22,\n      left: 'center',\n      top: 'bottom',\n      // right\n      // bottom\n      emptyItemWidth: 25,\n      // Width of empty node.\n      itemStyle: {\n        color: 'rgba(0,0,0,0.7)',\n        //'#5793f3',\n        borderColor: 'rgba(255,255,255,0.7)',\n        borderWidth: 1,\n        shadowColor: 'rgba(150,150,150,1)',\n        shadowBlur: 3,\n        shadowOffsetX: 0,\n        shadowOffsetY: 0,\n        textStyle: {\n          color: '#fff'\n        }\n      },\n      emphasis: {\n        textStyle: {}\n      }\n    },\n    label: {\n      show: true,\n      // Do not use textDistance, for ellipsis rect just the same as treemap node rect.\n      distance: 0,\n      padding: 5,\n      position: 'inside',\n      // Can be [5, '5%'] or position stirng like 'insideTopLeft', ...\n      // formatter: null,\n      color: '#fff',\n      ellipsis: true // align\n      // verticalAlign\n\n    },\n    upperLabel: {\n      // Label when node is parent.\n      show: false,\n      position: [0, '50%'],\n      height: 20,\n      // formatter: null,\n      color: '#fff',\n      ellipsis: true,\n      // align: null,\n      verticalAlign: 'middle'\n    },\n    itemStyle: {\n      color: null,\n      // Can be 'none' if not necessary.\n      colorAlpha: null,\n      // Can be 'none' if not necessary.\n      colorSaturation: null,\n      // Can be 'none' if not necessary.\n      borderWidth: 0,\n      gapWidth: 0,\n      borderColor: '#fff',\n      borderColorSaturation: null // If specified, borderColor will be ineffective, and the\n      // border color is evaluated by color of current node and\n      // borderColorSaturation.\n\n    },\n    emphasis: {\n      upperLabel: {\n        show: true,\n        position: [0, '50%'],\n        color: '#fff',\n        ellipsis: true,\n        verticalAlign: 'middle'\n      }\n    },\n    visualDimension: 0,\n    // Can be 0, 1, 2, 3.\n    visualMin: null,\n    visualMax: null,\n    color: [],\n    // + treemapSeries.color should not be modified. Please only modified\n    // level[n].color (if necessary).\n    // + Specify color list of each level. level[0].color would be global\n    // color list if not specified. (see method `setDefault`).\n    // + But set as a empty array to forbid fetch color from global palette\n    // when using nodeModel.get('color'), otherwise nodes on deep level\n    // will always has color palette set and are not able to inherit color\n    // from parent node.\n    // + TreemapSeries.color can not be set as 'none', otherwise effect\n    // legend color fetching (see seriesColor.js).\n    colorAlpha: null,\n    // Array. Specify color alpha range of each level, like [0.2, 0.8]\n    colorSaturation: null,\n    // Array. Specify color saturation of each level, like [0.2, 0.5]\n    colorMappingBy: 'index',\n    // 'value' or 'index' or 'id'.\n    visibleMin: 10,\n    // If area less than this threshold (unit: pixel^2), node will not\n    // be rendered. Only works when sort is 'asc' or 'desc'.\n    childrenVisibleMin: null,\n    // If area of a node less than this threshold (unit: pixel^2),\n    // grandchildren will not show.\n    // Why grandchildren? If not grandchildren but children,\n    // some siblings show children and some not,\n    // the appearance may be mess and not consistent,\n    levels: [] // Each item: {\n    //     visibleMin, itemStyle, visualDimension, label\n    // }\n    // data: {\n    //      value: [],\n    //      children: [],\n    //      link: 'http://xxx.xxx.xxx',\n    //      target: 'blank' or 'self'\n    // }\n\n  },\n\n  /**\n   * @override\n   */\n  getInitialData: function (option, ecModel) {\n    // Create a virtual root.\n    var root = {\n      name: option.name,\n      children: option.data\n    };\n    completeTreeValue(root);\n    var levels = option.levels || [];\n    levels = option.levels = setDefault(levels, ecModel);\n    var treeOption = {};\n    treeOption.levels = levels; // Make sure always a new tree is created when setOption,\n    // in TreemapView, we check whether oldTree === newTree\n    // to choose mappings approach among old shapes and new shapes.\n\n    return Tree.createTree(root, this, treeOption).data;\n  },\n  optionUpdated: function () {\n    this.resetViewRoot();\n  },\n\n  /**\n   * @override\n   * @param {number} dataIndex\n   * @param {boolean} [mutipleSeries=false]\n   */\n  formatTooltip: function (dataIndex) {\n    var data = this.getData();\n    var value = this.getRawValue(dataIndex);\n    var formattedValue = zrUtil.isArray(value) ? addCommas(value[0]) : addCommas(value);\n    var name = data.getName(dataIndex);\n    return encodeHTML(name + ': ' + formattedValue);\n  },\n\n  /**\n   * Add tree path to tooltip param\n   *\n   * @override\n   * @param {number} dataIndex\n   * @return {Object}\n   */\n  getDataParams: function (dataIndex) {\n    var params = SeriesModel.prototype.getDataParams.apply(this, arguments);\n    var node = this.getData().tree.getNodeByDataIndex(dataIndex);\n    params.treePathInfo = wrapTreePathInfo(node, this);\n    return params;\n  },\n\n  /**\n   * @public\n   * @param {Object} layoutInfo {\n   *                                x: containerGroup x\n   *                                y: containerGroup y\n   *                                width: containerGroup width\n   *                                height: containerGroup height\n   *                            }\n   */\n  setLayoutInfo: function (layoutInfo) {\n    /**\n     * @readOnly\n     * @type {Object}\n     */\n    this.layoutInfo = this.layoutInfo || {};\n    zrUtil.extend(this.layoutInfo, layoutInfo);\n  },\n\n  /**\n   * @param  {string} id\n   * @return {number} index\n   */\n  mapIdToIndex: function (id) {\n    // A feature is implemented:\n    // index is monotone increasing with the sequence of\n    // input id at the first time.\n    // This feature can make sure that each data item and its\n    // mapped color have the same index between data list and\n    // color list at the beginning, which is useful for user\n    // to adjust data-color mapping.\n\n    /**\n     * @private\n     * @type {Object}\n     */\n    var idIndexMap = this._idIndexMap;\n\n    if (!idIndexMap) {\n      idIndexMap = this._idIndexMap = zrUtil.createHashMap();\n      /**\n       * @private\n       * @type {number}\n       */\n\n      this._idIndexMapCount = 0;\n    }\n\n    var index = idIndexMap.get(id);\n\n    if (index == null) {\n      idIndexMap.set(id, index = this._idIndexMapCount++);\n    }\n\n    return index;\n  },\n  getViewRoot: function () {\n    return this._viewRoot;\n  },\n\n  /**\n   * @param {module:echarts/data/Tree~Node} [viewRoot]\n   */\n  resetViewRoot: function (viewRoot) {\n    viewRoot ? this._viewRoot = viewRoot : viewRoot = this._viewRoot;\n    var root = this.getRawData().tree.root;\n\n    if (!viewRoot || viewRoot !== root && !root.contains(viewRoot)) {\n      this._viewRoot = root;\n    }\n  }\n});\n/**\n * @param {Object} dataNode\n */\n\n\nfunction completeTreeValue(dataNode) {\n  // Postorder travel tree.\n  // If value of none-leaf node is not set,\n  // calculate it by suming up the value of all children.\n  var sum = 0;\n  zrUtil.each(dataNode.children, function (child) {\n    completeTreeValue(child);\n    var childValue = child.value;\n    zrUtil.isArray(childValue) && (childValue = childValue[0]);\n    sum += childValue;\n  });\n  var thisValue = dataNode.value;\n\n  if (zrUtil.isArray(thisValue)) {\n    thisValue = thisValue[0];\n  }\n\n  if (thisValue == null || isNaN(thisValue)) {\n    thisValue = sum;\n  } // Value should not less than 0.\n\n\n  if (thisValue < 0) {\n    thisValue = 0;\n  }\n\n  zrUtil.isArray(dataNode.value) ? dataNode.value[0] = thisValue : dataNode.value = thisValue;\n}\n/**\n * set default to level configuration\n */\n\n\nfunction setDefault(levels, ecModel) {\n  var globalColorList = ecModel.get('color');\n\n  if (!globalColorList) {\n    return;\n  }\n\n  levels = levels || [];\n  var hasColorDefine;\n  zrUtil.each(levels, function (levelDefine) {\n    var model = new Model(levelDefine);\n    var modelColor = model.get('color');\n\n    if (model.get('itemStyle.color') || modelColor && modelColor !== 'none') {\n      hasColorDefine = true;\n    }\n  });\n\n  if (!hasColorDefine) {\n    var level0 = levels[0] || (levels[0] = {});\n    level0.color = globalColorList.slice();\n  }\n\n  return levels;\n}\n\nmodule.exports = _default;","var echarts = require(\"../../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar DataDiffer = require(\"../../data/DataDiffer\");\n\nvar helper = require(\"../helper/treeHelper\");\n\nvar Breadcrumb = require(\"./Breadcrumb\");\n\nvar RoamController = require(\"../../component/helper/RoamController\");\n\nvar BoundingRect = require(\"zrender/lib/core/BoundingRect\");\n\nvar matrix = require(\"zrender/lib/core/matrix\");\n\nvar animationUtil = require(\"../../util/animation\");\n\nvar makeStyleMapper = require(\"../../model/mixin/makeStyleMapper\");\n\nvar bind = zrUtil.bind;\nvar Group = graphic.Group;\nvar Rect = graphic.Rect;\nvar each = zrUtil.each;\nvar DRAG_THRESHOLD = 3;\nvar PATH_LABEL_NOAMAL = ['label'];\nvar PATH_LABEL_EMPHASIS = ['emphasis', 'label'];\nvar PATH_UPPERLABEL_NORMAL = ['upperLabel'];\nvar PATH_UPPERLABEL_EMPHASIS = ['emphasis', 'upperLabel'];\nvar Z_BASE = 10; // Should bigger than every z.\n\nvar Z_BG = 1;\nvar Z_CONTENT = 2;\nvar getItemStyleEmphasis = makeStyleMapper([['fill', 'color'], // `borderColor` and `borderWidth` has been occupied,\n// so use `stroke` to indicate the stroke of the rect.\n['stroke', 'strokeColor'], ['lineWidth', 'strokeWidth'], ['shadowBlur'], ['shadowOffsetX'], ['shadowOffsetY'], ['shadowColor']]);\n\nvar getItemStyleNormal = function (model) {\n  // Normal style props should include emphasis style props.\n  var itemStyle = getItemStyleEmphasis(model); // Clear styles set by emphasis.\n\n  itemStyle.stroke = itemStyle.fill = itemStyle.lineWidth = null;\n  return itemStyle;\n};\n\nvar _default = echarts.extendChartView({\n  type: 'treemap',\n\n  /**\n   * @override\n   */\n  init: function (o, api) {\n    /**\n     * @private\n     * @type {module:zrender/container/Group}\n     */\n    this._containerGroup;\n    /**\n     * @private\n     * @type {Object.<string, Array.<module:zrender/container/Group>>}\n     */\n\n    this._storage = createStorage();\n    /**\n     * @private\n     * @type {module:echarts/data/Tree}\n     */\n\n    this._oldTree;\n    /**\n     * @private\n     * @type {module:echarts/chart/treemap/Breadcrumb}\n     */\n\n    this._breadcrumb;\n    /**\n     * @private\n     * @type {module:echarts/component/helper/RoamController}\n     */\n\n    this._controller;\n    /**\n     * 'ready', 'animating'\n     * @private\n     */\n\n    this._state = 'ready';\n  },\n\n  /**\n   * @override\n   */\n  render: function (seriesModel, ecModel, api, payload) {\n    var models = ecModel.findComponents({\n      mainType: 'series',\n      subType: 'treemap',\n      query: payload\n    });\n\n    if (zrUtil.indexOf(models, seriesModel) < 0) {\n      return;\n    }\n\n    this.seriesModel = seriesModel;\n    this.api = api;\n    this.ecModel = ecModel;\n    var types = ['treemapZoomToNode', 'treemapRootToNode'];\n    var targetInfo = helper.retrieveTargetInfo(payload, types, seriesModel);\n    var payloadType = payload && payload.type;\n    var layoutInfo = seriesModel.layoutInfo;\n    var isInit = !this._oldTree;\n    var thisStorage = this._storage; // Mark new root when action is treemapRootToNode.\n\n    var reRoot = payloadType === 'treemapRootToNode' && targetInfo && thisStorage ? {\n      rootNodeGroup: thisStorage.nodeGroup[targetInfo.node.getRawIndex()],\n      direction: payload.direction\n    } : null;\n\n    var containerGroup = this._giveContainerGroup(layoutInfo);\n\n    var renderResult = this._doRender(containerGroup, seriesModel, reRoot);\n\n    !isInit && (!payloadType || payloadType === 'treemapZoomToNode' || payloadType === 'treemapRootToNode') ? this._doAnimation(containerGroup, renderResult, seriesModel, reRoot) : renderResult.renderFinally();\n\n    this._resetController(api);\n\n    this._renderBreadcrumb(seriesModel, api, targetInfo);\n  },\n\n  /**\n   * @private\n   */\n  _giveContainerGroup: function (layoutInfo) {\n    var containerGroup = this._containerGroup;\n\n    if (!containerGroup) {\n      // FIXME\n      // 加一层containerGroup是为了clip，但是现在clip功能并没有实现。\n      containerGroup = this._containerGroup = new Group();\n\n      this._initEvents(containerGroup);\n\n      this.group.add(containerGroup);\n    }\n\n    containerGroup.attr('position', [layoutInfo.x, layoutInfo.y]);\n    return containerGroup;\n  },\n\n  /**\n   * @private\n   */\n  _doRender: function (containerGroup, seriesModel, reRoot) {\n    var thisTree = seriesModel.getData().tree;\n    var oldTree = this._oldTree; // Clear last shape records.\n\n    var lastsForAnimation = createStorage();\n    var thisStorage = createStorage();\n    var oldStorage = this._storage;\n    var willInvisibleEls = [];\n    var doRenderNode = zrUtil.curry(renderNode, seriesModel, thisStorage, oldStorage, reRoot, lastsForAnimation, willInvisibleEls); // Notice: when thisTree and oldTree are the same tree (see list.cloneShallow),\n    // the oldTree is actually losted, so we can not find all of the old graphic\n    // elements from tree. So we use this stragegy: make element storage, move\n    // from old storage to new storage, clear old storage.\n\n    dualTravel(thisTree.root ? [thisTree.root] : [], oldTree && oldTree.root ? [oldTree.root] : [], containerGroup, thisTree === oldTree || !oldTree, 0); // Process all removing.\n\n    var willDeleteEls = clearStorage(oldStorage);\n    this._oldTree = thisTree;\n    this._storage = thisStorage;\n    return {\n      lastsForAnimation: lastsForAnimation,\n      willDeleteEls: willDeleteEls,\n      renderFinally: renderFinally\n    };\n\n    function dualTravel(thisViewChildren, oldViewChildren, parentGroup, sameTree, depth) {\n      // When 'render' is triggered by action,\n      // 'this' and 'old' may be the same tree,\n      // we use rawIndex in that case.\n      if (sameTree) {\n        oldViewChildren = thisViewChildren;\n        each(thisViewChildren, function (child, index) {\n          !child.isRemoved() && processNode(index, index);\n        });\n      } // Diff hierarchically (diff only in each subtree, but not whole).\n      // because, consistency of view is important.\n      else {\n          new DataDiffer(oldViewChildren, thisViewChildren, getKey, getKey).add(processNode).update(processNode).remove(zrUtil.curry(processNode, null)).execute();\n        }\n\n      function getKey(node) {\n        // Identify by name or raw index.\n        return node.getId();\n      }\n\n      function processNode(newIndex, oldIndex) {\n        var thisNode = newIndex != null ? thisViewChildren[newIndex] : null;\n        var oldNode = oldIndex != null ? oldViewChildren[oldIndex] : null;\n        var group = doRenderNode(thisNode, oldNode, parentGroup, depth);\n        group && dualTravel(thisNode && thisNode.viewChildren || [], oldNode && oldNode.viewChildren || [], group, sameTree, depth + 1);\n      }\n    }\n\n    function clearStorage(storage) {\n      var willDeleteEls = createStorage();\n      storage && each(storage, function (store, storageName) {\n        var delEls = willDeleteEls[storageName];\n        each(store, function (el) {\n          el && (delEls.push(el), el.__tmWillDelete = 1);\n        });\n      });\n      return willDeleteEls;\n    }\n\n    function renderFinally() {\n      each(willDeleteEls, function (els) {\n        each(els, function (el) {\n          el.parent && el.parent.remove(el);\n        });\n      });\n      each(willInvisibleEls, function (el) {\n        el.invisible = true; // Setting invisible is for optimizing, so no need to set dirty,\n        // just mark as invisible.\n\n        el.dirty();\n      });\n    }\n  },\n\n  /**\n   * @private\n   */\n  _doAnimation: function (containerGroup, renderResult, seriesModel, reRoot) {\n    if (!seriesModel.get('animation')) {\n      return;\n    }\n\n    var duration = seriesModel.get('animationDurationUpdate');\n    var easing = seriesModel.get('animationEasing');\n    var animationWrap = animationUtil.createWrap(); // Make delete animations.\n\n    each(renderResult.willDeleteEls, function (store, storageName) {\n      each(store, function (el, rawIndex) {\n        if (el.invisible) {\n          return;\n        }\n\n        var parent = el.parent; // Always has parent, and parent is nodeGroup.\n\n        var target;\n\n        if (reRoot && reRoot.direction === 'drillDown') {\n          target = parent === reRoot.rootNodeGroup // This is the content element of view root.\n          // Only `content` will enter this branch, because\n          // `background` and `nodeGroup` will not be deleted.\n          ? {\n            shape: {\n              x: 0,\n              y: 0,\n              width: parent.__tmNodeWidth,\n              height: parent.__tmNodeHeight\n            },\n            style: {\n              opacity: 0\n            } // Others.\n\n          } : {\n            style: {\n              opacity: 0\n            }\n          };\n        } else {\n          var targetX = 0;\n          var targetY = 0;\n\n          if (!parent.__tmWillDelete) {\n            // Let node animate to right-bottom corner, cooperating with fadeout,\n            // which is appropriate for user understanding.\n            // Divided by 2 for reRoot rolling up effect.\n            targetX = parent.__tmNodeWidth / 2;\n            targetY = parent.__tmNodeHeight / 2;\n          }\n\n          target = storageName === 'nodeGroup' ? {\n            position: [targetX, targetY],\n            style: {\n              opacity: 0\n            }\n          } : {\n            shape: {\n              x: targetX,\n              y: targetY,\n              width: 0,\n              height: 0\n            },\n            style: {\n              opacity: 0\n            }\n          };\n        }\n\n        target && animationWrap.add(el, target, duration, easing);\n      });\n    }); // Make other animations\n\n    each(this._storage, function (store, storageName) {\n      each(store, function (el, rawIndex) {\n        var last = renderResult.lastsForAnimation[storageName][rawIndex];\n        var target = {};\n\n        if (!last) {\n          return;\n        }\n\n        if (storageName === 'nodeGroup') {\n          if (last.old) {\n            target.position = el.position.slice();\n            el.attr('position', last.old);\n          }\n        } else {\n          if (last.old) {\n            target.shape = zrUtil.extend({}, el.shape);\n            el.setShape(last.old);\n          }\n\n          if (last.fadein) {\n            el.setStyle('opacity', 0);\n            target.style = {\n              opacity: 1\n            };\n          } // When animation is stopped for succedent animation starting,\n          // el.style.opacity might not be 1\n          else if (el.style.opacity !== 1) {\n              target.style = {\n                opacity: 1\n              };\n            }\n        }\n\n        animationWrap.add(el, target, duration, easing);\n      });\n    }, this);\n    this._state = 'animating';\n    animationWrap.done(bind(function () {\n      this._state = 'ready';\n      renderResult.renderFinally();\n    }, this)).start();\n  },\n\n  /**\n   * @private\n   */\n  _resetController: function (api) {\n    var controller = this._controller; // Init controller.\n\n    if (!controller) {\n      controller = this._controller = new RoamController(api.getZr());\n      controller.enable(this.seriesModel.get('roam'));\n      controller.on('pan', bind(this._onPan, this));\n      controller.on('zoom', bind(this._onZoom, this));\n    }\n\n    var rect = new BoundingRect(0, 0, api.getWidth(), api.getHeight());\n    controller.setPointerChecker(function (e, x, y) {\n      return rect.contain(x, y);\n    });\n  },\n\n  /**\n   * @private\n   */\n  _clearController: function () {\n    var controller = this._controller;\n\n    if (controller) {\n      controller.dispose();\n      controller = null;\n    }\n  },\n\n  /**\n   * @private\n   */\n  _onPan: function (dx, dy) {\n    if (this._state !== 'animating' && (Math.abs(dx) > DRAG_THRESHOLD || Math.abs(dy) > DRAG_THRESHOLD)) {\n      // These param must not be cached.\n      var root = this.seriesModel.getData().tree.root;\n\n      if (!root) {\n        return;\n      }\n\n      var rootLayout = root.getLayout();\n\n      if (!rootLayout) {\n        return;\n      }\n\n      this.api.dispatchAction({\n        type: 'treemapMove',\n        from: this.uid,\n        seriesId: this.seriesModel.id,\n        rootRect: {\n          x: rootLayout.x + dx,\n          y: rootLayout.y + dy,\n          width: rootLayout.width,\n          height: rootLayout.height\n        }\n      });\n    }\n  },\n\n  /**\n   * @private\n   */\n  _onZoom: function (scale, mouseX, mouseY) {\n    if (this._state !== 'animating') {\n      // These param must not be cached.\n      var root = this.seriesModel.getData().tree.root;\n\n      if (!root) {\n        return;\n      }\n\n      var rootLayout = root.getLayout();\n\n      if (!rootLayout) {\n        return;\n      }\n\n      var rect = new BoundingRect(rootLayout.x, rootLayout.y, rootLayout.width, rootLayout.height);\n      var layoutInfo = this.seriesModel.layoutInfo; // Transform mouse coord from global to containerGroup.\n\n      mouseX -= layoutInfo.x;\n      mouseY -= layoutInfo.y; // Scale root bounding rect.\n\n      var m = matrix.create();\n      matrix.translate(m, m, [-mouseX, -mouseY]);\n      matrix.scale(m, m, [scale, scale]);\n      matrix.translate(m, m, [mouseX, mouseY]);\n      rect.applyTransform(m);\n      this.api.dispatchAction({\n        type: 'treemapRender',\n        from: this.uid,\n        seriesId: this.seriesModel.id,\n        rootRect: {\n          x: rect.x,\n          y: rect.y,\n          width: rect.width,\n          height: rect.height\n        }\n      });\n    }\n  },\n\n  /**\n   * @private\n   */\n  _initEvents: function (containerGroup) {\n    containerGroup.on('click', function (e) {\n      if (this._state !== 'ready') {\n        return;\n      }\n\n      var nodeClick = this.seriesModel.get('nodeClick', true);\n\n      if (!nodeClick) {\n        return;\n      }\n\n      var targetInfo = this.findTarget(e.offsetX, e.offsetY);\n\n      if (!targetInfo) {\n        return;\n      }\n\n      var node = targetInfo.node;\n\n      if (node.getLayout().isLeafRoot) {\n        this._rootToNode(targetInfo);\n      } else {\n        if (nodeClick === 'zoomToNode') {\n          this._zoomToNode(targetInfo);\n        } else if (nodeClick === 'link') {\n          var itemModel = node.hostTree.data.getItemModel(node.dataIndex);\n          var link = itemModel.get('link', true);\n          var linkTarget = itemModel.get('target', true) || 'blank';\n          link && window.open(link, linkTarget);\n        }\n      }\n    }, this);\n  },\n\n  /**\n   * @private\n   */\n  _renderBreadcrumb: function (seriesModel, api, targetInfo) {\n    if (!targetInfo) {\n      targetInfo = seriesModel.get('leafDepth', true) != null ? {\n        node: seriesModel.getViewRoot() // FIXME\n        // better way?\n        // Find breadcrumb tail on center of containerGroup.\n\n      } : this.findTarget(api.getWidth() / 2, api.getHeight() / 2);\n\n      if (!targetInfo) {\n        targetInfo = {\n          node: seriesModel.getData().tree.root\n        };\n      }\n    }\n\n    (this._breadcrumb || (this._breadcrumb = new Breadcrumb(this.group))).render(seriesModel, api, targetInfo.node, bind(onSelect, this));\n\n    function onSelect(node) {\n      if (this._state !== 'animating') {\n        helper.aboveViewRoot(seriesModel.getViewRoot(), node) ? this._rootToNode({\n          node: node\n        }) : this._zoomToNode({\n          node: node\n        });\n      }\n    }\n  },\n\n  /**\n   * @override\n   */\n  remove: function () {\n    this._clearController();\n\n    this._containerGroup && this._containerGroup.removeAll();\n    this._storage = createStorage();\n    this._state = 'ready';\n    this._breadcrumb && this._breadcrumb.remove();\n  },\n  dispose: function () {\n    this._clearController();\n  },\n\n  /**\n   * @private\n   */\n  _zoomToNode: function (targetInfo) {\n    this.api.dispatchAction({\n      type: 'treemapZoomToNode',\n      from: this.uid,\n      seriesId: this.seriesModel.id,\n      targetNode: targetInfo.node\n    });\n  },\n\n  /**\n   * @private\n   */\n  _rootToNode: function (targetInfo) {\n    this.api.dispatchAction({\n      type: 'treemapRootToNode',\n      from: this.uid,\n      seriesId: this.seriesModel.id,\n      targetNode: targetInfo.node\n    });\n  },\n\n  /**\n   * @public\n   * @param {number} x Global coord x.\n   * @param {number} y Global coord y.\n   * @return {Object} info If not found, return undefined;\n   * @return {number} info.node Target node.\n   * @return {number} info.offsetX x refer to target node.\n   * @return {number} info.offsetY y refer to target node.\n   */\n  findTarget: function (x, y) {\n    var targetInfo;\n    var viewRoot = this.seriesModel.getViewRoot();\n    viewRoot.eachNode({\n      attr: 'viewChildren',\n      order: 'preorder'\n    }, function (node) {\n      var bgEl = this._storage.background[node.getRawIndex()]; // If invisible, there might be no element.\n\n\n      if (bgEl) {\n        var point = bgEl.transformCoordToLocal(x, y);\n        var shape = bgEl.shape; // For performance consideration, dont use 'getBoundingRect'.\n\n        if (shape.x <= point[0] && point[0] <= shape.x + shape.width && shape.y <= point[1] && point[1] <= shape.y + shape.height) {\n          targetInfo = {\n            node: node,\n            offsetX: point[0],\n            offsetY: point[1]\n          };\n        } else {\n          return false; // Suppress visit subtree.\n        }\n      }\n    }, this);\n    return targetInfo;\n  }\n});\n/**\n * @inner\n */\n\n\nfunction createStorage() {\n  return {\n    nodeGroup: [],\n    background: [],\n    content: []\n  };\n}\n/**\n * @inner\n * @return Return undefined means do not travel further.\n */\n\n\nfunction renderNode(seriesModel, thisStorage, oldStorage, reRoot, lastsForAnimation, willInvisibleEls, thisNode, oldNode, parentGroup, depth) {\n  // Whether under viewRoot.\n  if (!thisNode) {\n    // Deleting nodes will be performed finally. This method just find\n    // element from old storage, or create new element, set them to new\n    // storage, and set styles.\n    return;\n  } // -------------------------------------------------------------------\n  // Start of closure variables available in \"Procedures in renderNode\".\n\n\n  var thisLayout = thisNode.getLayout();\n\n  if (!thisLayout || !thisLayout.isInView) {\n    return;\n  }\n\n  var thisWidth = thisLayout.width;\n  var thisHeight = thisLayout.height;\n  var borderWidth = thisLayout.borderWidth;\n  var thisInvisible = thisLayout.invisible;\n  var thisRawIndex = thisNode.getRawIndex();\n  var oldRawIndex = oldNode && oldNode.getRawIndex();\n  var thisViewChildren = thisNode.viewChildren;\n  var upperHeight = thisLayout.upperHeight;\n  var isParent = thisViewChildren && thisViewChildren.length;\n  var itemStyleNormalModel = thisNode.getModel('itemStyle');\n  var itemStyleEmphasisModel = thisNode.getModel('emphasis.itemStyle'); // End of closure ariables available in \"Procedures in renderNode\".\n  // -----------------------------------------------------------------\n  // Node group\n\n  var group = giveGraphic('nodeGroup', Group);\n\n  if (!group) {\n    return;\n  }\n\n  parentGroup.add(group); // x,y are not set when el is above view root.\n\n  group.attr('position', [thisLayout.x || 0, thisLayout.y || 0]);\n  group.__tmNodeWidth = thisWidth;\n  group.__tmNodeHeight = thisHeight;\n\n  if (thisLayout.isAboveViewRoot) {\n    return group;\n  } // Background\n\n\n  var bg = giveGraphic('background', Rect, depth, Z_BG);\n  bg && renderBackground(group, bg, isParent && thisLayout.upperHeight); // No children, render content.\n\n  if (!isParent) {\n    var content = giveGraphic('content', Rect, depth, Z_CONTENT);\n    content && renderContent(group, content);\n  }\n\n  return group; // ----------------------------\n  // | Procedures in renderNode |\n  // ----------------------------\n\n  function renderBackground(group, bg, useUpperLabel) {\n    // For tooltip.\n    bg.dataIndex = thisNode.dataIndex;\n    bg.seriesIndex = seriesModel.seriesIndex;\n    bg.setShape({\n      x: 0,\n      y: 0,\n      width: thisWidth,\n      height: thisHeight\n    });\n    var visualBorderColor = thisNode.getVisual('borderColor', true);\n    var emphasisBorderColor = itemStyleEmphasisModel.get('borderColor');\n    updateStyle(bg, function () {\n      var normalStyle = getItemStyleNormal(itemStyleNormalModel);\n      normalStyle.fill = visualBorderColor;\n      var emphasisStyle = getItemStyleEmphasis(itemStyleEmphasisModel);\n      emphasisStyle.fill = emphasisBorderColor;\n\n      if (useUpperLabel) {\n        var upperLabelWidth = thisWidth - 2 * borderWidth;\n        prepareText(normalStyle, emphasisStyle, visualBorderColor, upperLabelWidth, upperHeight, {\n          x: borderWidth,\n          y: 0,\n          width: upperLabelWidth,\n          height: upperHeight\n        });\n      } // For old bg.\n      else {\n          normalStyle.text = emphasisStyle.text = null;\n        }\n\n      bg.setStyle(normalStyle);\n      graphic.setHoverStyle(bg, emphasisStyle);\n    });\n    group.add(bg);\n  }\n\n  function renderContent(group, content) {\n    // For tooltip.\n    content.dataIndex = thisNode.dataIndex;\n    content.seriesIndex = seriesModel.seriesIndex;\n    var contentWidth = Math.max(thisWidth - 2 * borderWidth, 0);\n    var contentHeight = Math.max(thisHeight - 2 * borderWidth, 0);\n    content.culling = true;\n    content.setShape({\n      x: borderWidth,\n      y: borderWidth,\n      width: contentWidth,\n      height: contentHeight\n    });\n    var visualColor = thisNode.getVisual('color', true);\n    updateStyle(content, function () {\n      var normalStyle = getItemStyleNormal(itemStyleNormalModel);\n      normalStyle.fill = visualColor;\n      var emphasisStyle = getItemStyleEmphasis(itemStyleEmphasisModel);\n      prepareText(normalStyle, emphasisStyle, visualColor, contentWidth, contentHeight);\n      content.setStyle(normalStyle);\n      graphic.setHoverStyle(content, emphasisStyle);\n    });\n    group.add(content);\n  }\n\n  function updateStyle(element, cb) {\n    if (!thisInvisible) {\n      // If invisible, do not set visual, otherwise the element will\n      // change immediately before animation. We think it is OK to\n      // remain its origin color when moving out of the view window.\n      cb();\n\n      if (!element.__tmWillVisible) {\n        element.invisible = false;\n      }\n    } else {\n      // Delay invisible setting utill animation finished,\n      // avoid element vanish suddenly before animation.\n      !element.invisible && willInvisibleEls.push(element);\n    }\n  }\n\n  function prepareText(normalStyle, emphasisStyle, visualColor, width, height, upperLabelRect) {\n    var nodeModel = thisNode.getModel();\n    var text = zrUtil.retrieve(seriesModel.getFormattedLabel(thisNode.dataIndex, 'normal', null, null, upperLabelRect ? 'upperLabel' : 'label'), nodeModel.get('name'));\n\n    if (!upperLabelRect && thisLayout.isLeafRoot) {\n      var iconChar = seriesModel.get('drillDownIcon', true);\n      text = iconChar ? iconChar + ' ' + text : text;\n    }\n\n    var normalLabelModel = nodeModel.getModel(upperLabelRect ? PATH_UPPERLABEL_NORMAL : PATH_LABEL_NOAMAL);\n    var emphasisLabelModel = nodeModel.getModel(upperLabelRect ? PATH_UPPERLABEL_EMPHASIS : PATH_LABEL_EMPHASIS);\n    var isShow = normalLabelModel.getShallow('show');\n    graphic.setLabelStyle(normalStyle, emphasisStyle, normalLabelModel, emphasisLabelModel, {\n      defaultText: isShow ? text : null,\n      autoColor: visualColor,\n      isRectText: true\n    });\n    upperLabelRect && (normalStyle.textRect = zrUtil.clone(upperLabelRect));\n    normalStyle.truncate = isShow && normalLabelModel.get('ellipsis') ? {\n      outerWidth: width,\n      outerHeight: height,\n      minChar: 2\n    } : null;\n  }\n\n  function giveGraphic(storageName, Ctor, depth, z) {\n    var element = oldRawIndex != null && oldStorage[storageName][oldRawIndex];\n    var lasts = lastsForAnimation[storageName];\n\n    if (element) {\n      // Remove from oldStorage\n      oldStorage[storageName][oldRawIndex] = null;\n      prepareAnimationWhenHasOld(lasts, element, storageName);\n    } // If invisible and no old element, do not create new element (for optimizing).\n    else if (!thisInvisible) {\n        element = new Ctor({\n          z: calculateZ(depth, z)\n        });\n        element.__tmDepth = depth;\n        element.__tmStorageName = storageName;\n        prepareAnimationWhenNoOld(lasts, element, storageName);\n      } // Set to thisStorage\n\n\n    return thisStorage[storageName][thisRawIndex] = element;\n  }\n\n  function prepareAnimationWhenHasOld(lasts, element, storageName) {\n    var lastCfg = lasts[thisRawIndex] = {};\n    lastCfg.old = storageName === 'nodeGroup' ? element.position.slice() : zrUtil.extend({}, element.shape);\n  } // If a element is new, we need to find the animation start point carefully,\n  // otherwise it will looks strange when 'zoomToNode'.\n\n\n  function prepareAnimationWhenNoOld(lasts, element, storageName) {\n    var lastCfg = lasts[thisRawIndex] = {};\n    var parentNode = thisNode.parentNode;\n\n    if (parentNode && (!reRoot || reRoot.direction === 'drillDown')) {\n      var parentOldX = 0;\n      var parentOldY = 0; // New nodes appear from right-bottom corner in 'zoomToNode' animation.\n      // For convenience, get old bounding rect from background.\n\n      var parentOldBg = lastsForAnimation.background[parentNode.getRawIndex()];\n\n      if (!reRoot && parentOldBg && parentOldBg.old) {\n        parentOldX = parentOldBg.old.width;\n        parentOldY = parentOldBg.old.height;\n      } // When no parent old shape found, its parent is new too,\n      // so we can just use {x:0, y:0}.\n\n\n      lastCfg.old = storageName === 'nodeGroup' ? [0, parentOldY] : {\n        x: parentOldX,\n        y: parentOldY,\n        width: 0,\n        height: 0\n      };\n    } // Fade in, user can be aware that these nodes are new.\n\n\n    lastCfg.fadein = storageName !== 'nodeGroup';\n  }\n} // We can not set all backgroud with the same z, Because the behaviour of\n// drill down and roll up differ background creation sequence from tree\n// hierarchy sequence, which cause that lowser background element overlap\n// upper ones. So we calculate z based on depth.\n// Moreover, we try to shrink down z interval to [0, 1] to avoid that\n// treemap with large z overlaps other components.\n\n\nfunction calculateZ(depth, zInLevel) {\n  var zb = depth * Z_BASE + zInLevel;\n  return (zb - 1) / zb;\n}\n\nmodule.exports = _default;","var echarts = require(\"../../echarts\");\n\nvar helper = require(\"../helper/treeHelper\");\n\n/**\n * @file Treemap action\n */\nvar noop = function () {};\n\nvar actionTypes = ['treemapZoomToNode', 'treemapRender', 'treemapMove'];\n\nfor (var i = 0; i < actionTypes.length; i++) {\n  echarts.registerAction({\n    type: actionTypes[i],\n    update: 'updateView'\n  }, noop);\n}\n\necharts.registerAction({\n  type: 'treemapRootToNode',\n  update: 'updateView'\n}, function (payload, ecModel) {\n  ecModel.eachComponent({\n    mainType: 'series',\n    subType: 'treemap',\n    query: payload\n  }, handleRootToNode);\n\n  function handleRootToNode(model, index) {\n    var types = ['treemapZoomToNode', 'treemapRootToNode'];\n    var targetInfo = helper.retrieveTargetInfo(payload, types, model);\n\n    if (targetInfo) {\n      var originViewRoot = model.getViewRoot();\n\n      if (originViewRoot) {\n        payload.direction = helper.aboveViewRoot(originViewRoot, targetInfo.node) ? 'rollUp' : 'drillDown';\n      }\n\n      model.resetViewRoot(targetInfo.node);\n    }\n  }\n});","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar BoundingRect = require(\"zrender/lib/core/BoundingRect\");\n\nvar _number = require(\"../../util/number\");\n\nvar parsePercent = _number.parsePercent;\nvar MAX_SAFE_INTEGER = _number.MAX_SAFE_INTEGER;\n\nvar layout = require(\"../../util/layout\");\n\nvar helper = require(\"../helper/treeHelper\");\n\nvar mathMax = Math.max;\nvar mathMin = Math.min;\nvar retrieveValue = zrUtil.retrieve;\nvar each = zrUtil.each;\nvar PATH_BORDER_WIDTH = ['itemStyle', 'borderWidth'];\nvar PATH_GAP_WIDTH = ['itemStyle', 'gapWidth'];\nvar PATH_UPPER_LABEL_SHOW = ['upperLabel', 'show'];\nvar PATH_UPPER_LABEL_HEIGHT = ['upperLabel', 'height'];\n/**\n * @public\n */\n\nvar _default = {\n  seriesType: 'treemap',\n  reset: function (seriesModel, ecModel, api, payload) {\n    // Layout result in each node:\n    // {x, y, width, height, area, borderWidth}\n    var ecWidth = api.getWidth();\n    var ecHeight = api.getHeight();\n    var seriesOption = seriesModel.option;\n    var layoutInfo = layout.getLayoutRect(seriesModel.getBoxLayoutParams(), {\n      width: api.getWidth(),\n      height: api.getHeight()\n    });\n    var size = seriesOption.size || []; // Compatible with ec2.\n\n    var containerWidth = parsePercent(retrieveValue(layoutInfo.width, size[0]), ecWidth);\n    var containerHeight = parsePercent(retrieveValue(layoutInfo.height, size[1]), ecHeight); // Fetch payload info.\n\n    var payloadType = payload && payload.type;\n    var types = ['treemapZoomToNode', 'treemapRootToNode'];\n    var targetInfo = helper.retrieveTargetInfo(payload, types, seriesModel);\n    var rootRect = payloadType === 'treemapRender' || payloadType === 'treemapMove' ? payload.rootRect : null;\n    var viewRoot = seriesModel.getViewRoot();\n    var viewAbovePath = helper.getPathToRoot(viewRoot);\n\n    if (payloadType !== 'treemapMove') {\n      var rootSize = payloadType === 'treemapZoomToNode' ? estimateRootSize(seriesModel, targetInfo, viewRoot, containerWidth, containerHeight) : rootRect ? [rootRect.width, rootRect.height] : [containerWidth, containerHeight];\n      var sort = seriesOption.sort;\n\n      if (sort && sort !== 'asc' && sort !== 'desc') {\n        sort = 'desc';\n      }\n\n      var options = {\n        squareRatio: seriesOption.squareRatio,\n        sort: sort,\n        leafDepth: seriesOption.leafDepth\n      }; // layout should be cleared because using updateView but not update.\n\n      viewRoot.hostTree.clearLayouts(); // TODO\n      // optimize: if out of view clip, do not layout.\n      // But take care that if do not render node out of view clip,\n      // how to calculate start po\n\n      var viewRootLayout = {\n        x: 0,\n        y: 0,\n        width: rootSize[0],\n        height: rootSize[1],\n        area: rootSize[0] * rootSize[1]\n      };\n      viewRoot.setLayout(viewRootLayout);\n      squarify(viewRoot, options, false, 0); // Supplement layout.\n\n      var viewRootLayout = viewRoot.getLayout();\n      each(viewAbovePath, function (node, index) {\n        var childValue = (viewAbovePath[index + 1] || viewRoot).getValue();\n        node.setLayout(zrUtil.extend({\n          dataExtent: [childValue, childValue],\n          borderWidth: 0,\n          upperHeight: 0\n        }, viewRootLayout));\n      });\n    }\n\n    var treeRoot = seriesModel.getData().tree.root;\n    treeRoot.setLayout(calculateRootPosition(layoutInfo, rootRect, targetInfo), true);\n    seriesModel.setLayoutInfo(layoutInfo); // FIXME\n    // 现在没有clip功能，暂时取ec高宽。\n\n    prunning(treeRoot, // Transform to base element coordinate system.\n    new BoundingRect(-layoutInfo.x, -layoutInfo.y, ecWidth, ecHeight), viewAbovePath, viewRoot, 0);\n  }\n};\n/**\n * Layout treemap with squarify algorithm.\n * @see https://graphics.ethz.ch/teaching/scivis_common/Literature/squarifiedTreeMaps.pdf\n * @see https://github.com/mbostock/d3/blob/master/src/layout/treemap.js\n *\n * @protected\n * @param {module:echarts/data/Tree~TreeNode} node\n * @param {Object} options\n * @param {string} options.sort 'asc' or 'desc'\n * @param {number} options.squareRatio\n * @param {boolean} hideChildren\n * @param {number} depth\n */\n\nfunction squarify(node, options, hideChildren, depth) {\n  var width;\n  var height;\n\n  if (node.isRemoved()) {\n    return;\n  }\n\n  var thisLayout = node.getLayout();\n  width = thisLayout.width;\n  height = thisLayout.height; // Considering border and gap\n\n  var nodeModel = node.getModel();\n  var borderWidth = nodeModel.get(PATH_BORDER_WIDTH);\n  var halfGapWidth = nodeModel.get(PATH_GAP_WIDTH) / 2;\n  var upperLabelHeight = getUpperLabelHeight(nodeModel);\n  var upperHeight = Math.max(borderWidth, upperLabelHeight);\n  var layoutOffset = borderWidth - halfGapWidth;\n  var layoutOffsetUpper = upperHeight - halfGapWidth;\n  var nodeModel = node.getModel();\n  node.setLayout({\n    borderWidth: borderWidth,\n    upperHeight: upperHeight,\n    upperLabelHeight: upperLabelHeight\n  }, true);\n  width = mathMax(width - 2 * layoutOffset, 0);\n  height = mathMax(height - layoutOffset - layoutOffsetUpper, 0);\n  var totalArea = width * height;\n  var viewChildren = initChildren(node, nodeModel, totalArea, options, hideChildren, depth);\n\n  if (!viewChildren.length) {\n    return;\n  }\n\n  var rect = {\n    x: layoutOffset,\n    y: layoutOffsetUpper,\n    width: width,\n    height: height\n  };\n  var rowFixedLength = mathMin(width, height);\n  var best = Infinity; // the best row score so far\n\n  var row = [];\n  row.area = 0;\n\n  for (var i = 0, len = viewChildren.length; i < len;) {\n    var child = viewChildren[i];\n    row.push(child);\n    row.area += child.getLayout().area;\n    var score = worst(row, rowFixedLength, options.squareRatio); // continue with this orientation\n\n    if (score <= best) {\n      i++;\n      best = score;\n    } // abort, and try a different orientation\n    else {\n        row.area -= row.pop().getLayout().area;\n        position(row, rowFixedLength, rect, halfGapWidth, false);\n        rowFixedLength = mathMin(rect.width, rect.height);\n        row.length = row.area = 0;\n        best = Infinity;\n      }\n  }\n\n  if (row.length) {\n    position(row, rowFixedLength, rect, halfGapWidth, true);\n  }\n\n  if (!hideChildren) {\n    var childrenVisibleMin = nodeModel.get('childrenVisibleMin');\n\n    if (childrenVisibleMin != null && totalArea < childrenVisibleMin) {\n      hideChildren = true;\n    }\n  }\n\n  for (var i = 0, len = viewChildren.length; i < len; i++) {\n    squarify(viewChildren[i], options, hideChildren, depth + 1);\n  }\n}\n/**\n * Set area to each child, and calculate data extent for visual coding.\n */\n\n\nfunction initChildren(node, nodeModel, totalArea, options, hideChildren, depth) {\n  var viewChildren = node.children || [];\n  var orderBy = options.sort;\n  orderBy !== 'asc' && orderBy !== 'desc' && (orderBy = null);\n  var overLeafDepth = options.leafDepth != null && options.leafDepth <= depth; // leafDepth has higher priority.\n\n  if (hideChildren && !overLeafDepth) {\n    return node.viewChildren = [];\n  } // Sort children, order by desc.\n\n\n  viewChildren = zrUtil.filter(viewChildren, function (child) {\n    return !child.isRemoved();\n  });\n  sort(viewChildren, orderBy);\n  var info = statistic(nodeModel, viewChildren, orderBy);\n\n  if (info.sum === 0) {\n    return node.viewChildren = [];\n  }\n\n  info.sum = filterByThreshold(nodeModel, totalArea, info.sum, orderBy, viewChildren);\n\n  if (info.sum === 0) {\n    return node.viewChildren = [];\n  } // Set area to each child.\n\n\n  for (var i = 0, len = viewChildren.length; i < len; i++) {\n    var area = viewChildren[i].getValue() / info.sum * totalArea; // Do not use setLayout({...}, true), because it is needed to clear last layout.\n\n    viewChildren[i].setLayout({\n      area: area\n    });\n  }\n\n  if (overLeafDepth) {\n    viewChildren.length && node.setLayout({\n      isLeafRoot: true\n    }, true);\n    viewChildren.length = 0;\n  }\n\n  node.viewChildren = viewChildren;\n  node.setLayout({\n    dataExtent: info.dataExtent\n  }, true);\n  return viewChildren;\n}\n/**\n * Consider 'visibleMin'. Modify viewChildren and get new sum.\n */\n\n\nfunction filterByThreshold(nodeModel, totalArea, sum, orderBy, orderedChildren) {\n  // visibleMin is not supported yet when no option.sort.\n  if (!orderBy) {\n    return sum;\n  }\n\n  var visibleMin = nodeModel.get('visibleMin');\n  var len = orderedChildren.length;\n  var deletePoint = len; // Always travel from little value to big value.\n\n  for (var i = len - 1; i >= 0; i--) {\n    var value = orderedChildren[orderBy === 'asc' ? len - i - 1 : i].getValue();\n\n    if (value / sum * totalArea < visibleMin) {\n      deletePoint = i;\n      sum -= value;\n    }\n  }\n\n  orderBy === 'asc' ? orderedChildren.splice(0, len - deletePoint) : orderedChildren.splice(deletePoint, len - deletePoint);\n  return sum;\n}\n/**\n * Sort\n */\n\n\nfunction sort(viewChildren, orderBy) {\n  if (orderBy) {\n    viewChildren.sort(function (a, b) {\n      var diff = orderBy === 'asc' ? a.getValue() - b.getValue() : b.getValue() - a.getValue();\n      return diff === 0 ? orderBy === 'asc' ? a.dataIndex - b.dataIndex : b.dataIndex - a.dataIndex : diff;\n    });\n  }\n\n  return viewChildren;\n}\n/**\n * Statistic\n */\n\n\nfunction statistic(nodeModel, children, orderBy) {\n  // Calculate sum.\n  var sum = 0;\n\n  for (var i = 0, len = children.length; i < len; i++) {\n    sum += children[i].getValue();\n  } // Statistic data extent for latter visual coding.\n  // Notice: data extent should be calculate based on raw children\n  // but not filtered view children, otherwise visual mapping will not\n  // be stable when zoom (where children is filtered by visibleMin).\n\n\n  var dimension = nodeModel.get('visualDimension');\n  var dataExtent; // The same as area dimension.\n\n  if (!children || !children.length) {\n    dataExtent = [NaN, NaN];\n  } else if (dimension === 'value' && orderBy) {\n    dataExtent = [children[children.length - 1].getValue(), children[0].getValue()];\n    orderBy === 'asc' && dataExtent.reverse();\n  } // Other dimension.\n  else {\n      var dataExtent = [Infinity, -Infinity];\n      each(children, function (child) {\n        var value = child.getValue(dimension);\n        value < dataExtent[0] && (dataExtent[0] = value);\n        value > dataExtent[1] && (dataExtent[1] = value);\n      });\n    }\n\n  return {\n    sum: sum,\n    dataExtent: dataExtent\n  };\n}\n/**\n * Computes the score for the specified row,\n * as the worst aspect ratio.\n */\n\n\nfunction worst(row, rowFixedLength, ratio) {\n  var areaMax = 0;\n  var areaMin = Infinity;\n\n  for (var i = 0, area, len = row.length; i < len; i++) {\n    area = row[i].getLayout().area;\n\n    if (area) {\n      area < areaMin && (areaMin = area);\n      area > areaMax && (areaMax = area);\n    }\n  }\n\n  var squareArea = row.area * row.area;\n  var f = rowFixedLength * rowFixedLength * ratio;\n  return squareArea ? mathMax(f * areaMax / squareArea, squareArea / (f * areaMin)) : Infinity;\n}\n/**\n * Positions the specified row of nodes. Modifies `rect`.\n */\n\n\nfunction position(row, rowFixedLength, rect, halfGapWidth, flush) {\n  // When rowFixedLength === rect.width,\n  // it is horizontal subdivision,\n  // rowFixedLength is the width of the subdivision,\n  // rowOtherLength is the height of the subdivision,\n  // and nodes will be positioned from left to right.\n  // wh[idx0WhenH] means: when horizontal,\n  //      wh[idx0WhenH] => wh[0] => 'width'.\n  //      xy[idx1WhenH] => xy[1] => 'y'.\n  var idx0WhenH = rowFixedLength === rect.width ? 0 : 1;\n  var idx1WhenH = 1 - idx0WhenH;\n  var xy = ['x', 'y'];\n  var wh = ['width', 'height'];\n  var last = rect[xy[idx0WhenH]];\n  var rowOtherLength = rowFixedLength ? row.area / rowFixedLength : 0;\n\n  if (flush || rowOtherLength > rect[wh[idx1WhenH]]) {\n    rowOtherLength = rect[wh[idx1WhenH]]; // over+underflow\n  }\n\n  for (var i = 0, rowLen = row.length; i < rowLen; i++) {\n    var node = row[i];\n    var nodeLayout = {};\n    var step = rowOtherLength ? node.getLayout().area / rowOtherLength : 0;\n    var wh1 = nodeLayout[wh[idx1WhenH]] = mathMax(rowOtherLength - 2 * halfGapWidth, 0); // We use Math.max/min to avoid negative width/height when considering gap width.\n\n    var remain = rect[xy[idx0WhenH]] + rect[wh[idx0WhenH]] - last;\n    var modWH = i === rowLen - 1 || remain < step ? remain : step;\n    var wh0 = nodeLayout[wh[idx0WhenH]] = mathMax(modWH - 2 * halfGapWidth, 0);\n    nodeLayout[xy[idx1WhenH]] = rect[xy[idx1WhenH]] + mathMin(halfGapWidth, wh1 / 2);\n    nodeLayout[xy[idx0WhenH]] = last + mathMin(halfGapWidth, wh0 / 2);\n    last += modWH;\n    node.setLayout(nodeLayout, true);\n  }\n\n  rect[xy[idx1WhenH]] += rowOtherLength;\n  rect[wh[idx1WhenH]] -= rowOtherLength;\n} // Return [containerWidth, containerHeight] as defualt.\n\n\nfunction estimateRootSize(seriesModel, targetInfo, viewRoot, containerWidth, containerHeight) {\n  // If targetInfo.node exists, we zoom to the node,\n  // so estimate whold width and heigth by target node.\n  var currNode = (targetInfo || {}).node;\n  var defaultSize = [containerWidth, containerHeight];\n\n  if (!currNode || currNode === viewRoot) {\n    return defaultSize;\n  }\n\n  var parent;\n  var viewArea = containerWidth * containerHeight;\n  var area = viewArea * seriesModel.option.zoomToNodeRatio;\n\n  while (parent = currNode.parentNode) {\n    // jshint ignore:line\n    var sum = 0;\n    var siblings = parent.children;\n\n    for (var i = 0, len = siblings.length; i < len; i++) {\n      sum += siblings[i].getValue();\n    }\n\n    var currNodeValue = currNode.getValue();\n\n    if (currNodeValue === 0) {\n      return defaultSize;\n    }\n\n    area *= sum / currNodeValue; // Considering border, suppose aspect ratio is 1.\n\n    var parentModel = parent.getModel();\n    var borderWidth = parentModel.get(PATH_BORDER_WIDTH);\n    var upperHeight = Math.max(borderWidth, getUpperLabelHeight(parentModel, borderWidth));\n    area += 4 * borderWidth * borderWidth + (3 * borderWidth + upperHeight) * Math.pow(area, 0.5);\n    area > MAX_SAFE_INTEGER && (area = MAX_SAFE_INTEGER);\n    currNode = parent;\n  }\n\n  area < viewArea && (area = viewArea);\n  var scale = Math.pow(area / viewArea, 0.5);\n  return [containerWidth * scale, containerHeight * scale];\n} // Root postion base on coord of containerGroup\n\n\nfunction calculateRootPosition(layoutInfo, rootRect, targetInfo) {\n  if (rootRect) {\n    return {\n      x: rootRect.x,\n      y: rootRect.y\n    };\n  }\n\n  var defaultPosition = {\n    x: 0,\n    y: 0\n  };\n\n  if (!targetInfo) {\n    return defaultPosition;\n  } // If targetInfo is fetched by 'retrieveTargetInfo',\n  // old tree and new tree are the same tree,\n  // so the node still exists and we can visit it.\n\n\n  var targetNode = targetInfo.node;\n  var layout = targetNode.getLayout();\n\n  if (!layout) {\n    return defaultPosition;\n  } // Transform coord from local to container.\n\n\n  var targetCenter = [layout.width / 2, layout.height / 2];\n  var node = targetNode;\n\n  while (node) {\n    var nodeLayout = node.getLayout();\n    targetCenter[0] += nodeLayout.x;\n    targetCenter[1] += nodeLayout.y;\n    node = node.parentNode;\n  }\n\n  return {\n    x: layoutInfo.width / 2 - targetCenter[0],\n    y: layoutInfo.height / 2 - targetCenter[1]\n  };\n} // Mark nodes visible for prunning when visual coding and rendering.\n// Prunning depends on layout and root position, so we have to do it after layout.\n\n\nfunction prunning(node, clipRect, viewAbovePath, viewRoot, depth) {\n  var nodeLayout = node.getLayout();\n  var nodeInViewAbovePath = viewAbovePath[depth];\n  var isAboveViewRoot = nodeInViewAbovePath && nodeInViewAbovePath === node;\n\n  if (nodeInViewAbovePath && !isAboveViewRoot || depth === viewAbovePath.length && node !== viewRoot) {\n    return;\n  }\n\n  node.setLayout({\n    // isInView means: viewRoot sub tree + viewAbovePath\n    isInView: true,\n    // invisible only means: outside view clip so that the node can not\n    // see but still layout for animation preparation but not render.\n    invisible: !isAboveViewRoot && !clipRect.intersect(nodeLayout),\n    isAboveViewRoot: isAboveViewRoot\n  }, true); // Transform to child coordinate.\n\n  var childClipRect = new BoundingRect(clipRect.x - nodeLayout.x, clipRect.y - nodeLayout.y, clipRect.width, clipRect.height);\n  each(node.viewChildren || [], function (child) {\n    prunning(child, childClipRect, viewAbovePath, viewRoot, depth + 1);\n  });\n}\n\nfunction getUpperLabelHeight(model) {\n  return model.get(PATH_UPPER_LABEL_SHOW) ? model.get(PATH_UPPER_LABEL_HEIGHT) : 0;\n}\n\nmodule.exports = _default;","var VisualMapping = require(\"../../visual/VisualMapping\");\n\nvar zrColor = require(\"zrender/lib/tool/color\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar isArray = zrUtil.isArray;\nvar ITEM_STYLE_NORMAL = 'itemStyle';\nvar _default = {\n  seriesType: 'treemap',\n  reset: function (seriesModel, ecModel, api, payload) {\n    var tree = seriesModel.getData().tree;\n    var root = tree.root;\n    var seriesItemStyleModel = seriesModel.getModel(ITEM_STYLE_NORMAL);\n\n    if (root.isRemoved()) {\n      return;\n    }\n\n    var levelItemStyles = zrUtil.map(tree.levelModels, function (levelModel) {\n      return levelModel ? levelModel.get(ITEM_STYLE_NORMAL) : null;\n    });\n    travelTree(root, // Visual should calculate from tree root but not view root.\n    {}, levelItemStyles, seriesItemStyleModel, seriesModel.getViewRoot().getAncestors(), seriesModel);\n  }\n};\n\nfunction travelTree(node, designatedVisual, levelItemStyles, seriesItemStyleModel, viewRootAncestors, seriesModel) {\n  var nodeModel = node.getModel();\n  var nodeLayout = node.getLayout(); // Optimize\n\n  if (!nodeLayout || nodeLayout.invisible || !nodeLayout.isInView) {\n    return;\n  }\n\n  var nodeItemStyleModel = node.getModel(ITEM_STYLE_NORMAL);\n  var levelItemStyle = levelItemStyles[node.depth];\n  var visuals = buildVisuals(nodeItemStyleModel, designatedVisual, levelItemStyle, seriesItemStyleModel); // calculate border color\n\n  var borderColor = nodeItemStyleModel.get('borderColor');\n  var borderColorSaturation = nodeItemStyleModel.get('borderColorSaturation');\n  var thisNodeColor;\n\n  if (borderColorSaturation != null) {\n    // For performance, do not always execute 'calculateColor'.\n    thisNodeColor = calculateColor(visuals, node);\n    borderColor = calculateBorderColor(borderColorSaturation, thisNodeColor);\n  }\n\n  node.setVisual('borderColor', borderColor);\n  var viewChildren = node.viewChildren;\n\n  if (!viewChildren || !viewChildren.length) {\n    thisNodeColor = calculateColor(visuals, node); // Apply visual to this node.\n\n    node.setVisual('color', thisNodeColor);\n  } else {\n    var mapping = buildVisualMapping(node, nodeModel, nodeLayout, nodeItemStyleModel, visuals, viewChildren); // Designate visual to children.\n\n    zrUtil.each(viewChildren, function (child, index) {\n      // If higher than viewRoot, only ancestors of viewRoot is needed to visit.\n      if (child.depth >= viewRootAncestors.length || child === viewRootAncestors[child.depth]) {\n        var childVisual = mapVisual(nodeModel, visuals, child, index, mapping, seriesModel);\n        travelTree(child, childVisual, levelItemStyles, seriesItemStyleModel, viewRootAncestors, seriesModel);\n      }\n    });\n  }\n}\n\nfunction buildVisuals(nodeItemStyleModel, designatedVisual, levelItemStyle, seriesItemStyleModel) {\n  var visuals = zrUtil.extend({}, designatedVisual);\n  zrUtil.each(['color', 'colorAlpha', 'colorSaturation'], function (visualName) {\n    // Priority: thisNode > thisLevel > parentNodeDesignated > seriesModel\n    var val = nodeItemStyleModel.get(visualName, true); // Ignore parent\n\n    val == null && levelItemStyle && (val = levelItemStyle[visualName]);\n    val == null && (val = designatedVisual[visualName]);\n    val == null && (val = seriesItemStyleModel.get(visualName));\n    val != null && (visuals[visualName] = val);\n  });\n  return visuals;\n}\n\nfunction calculateColor(visuals) {\n  var color = getValueVisualDefine(visuals, 'color');\n\n  if (color) {\n    var colorAlpha = getValueVisualDefine(visuals, 'colorAlpha');\n    var colorSaturation = getValueVisualDefine(visuals, 'colorSaturation');\n\n    if (colorSaturation) {\n      color = zrColor.modifyHSL(color, null, null, colorSaturation);\n    }\n\n    if (colorAlpha) {\n      color = zrColor.modifyAlpha(color, colorAlpha);\n    }\n\n    return color;\n  }\n}\n\nfunction calculateBorderColor(borderColorSaturation, thisNodeColor) {\n  return thisNodeColor != null ? zrColor.modifyHSL(thisNodeColor, null, null, borderColorSaturation) : null;\n}\n\nfunction getValueVisualDefine(visuals, name) {\n  var value = visuals[name];\n\n  if (value != null && value !== 'none') {\n    return value;\n  }\n}\n\nfunction buildVisualMapping(node, nodeModel, nodeLayout, nodeItemStyleModel, visuals, viewChildren) {\n  if (!viewChildren || !viewChildren.length) {\n    return;\n  }\n\n  var rangeVisual = getRangeVisual(nodeModel, 'color') || visuals.color != null && visuals.color !== 'none' && (getRangeVisual(nodeModel, 'colorAlpha') || getRangeVisual(nodeModel, 'colorSaturation'));\n\n  if (!rangeVisual) {\n    return;\n  }\n\n  var visualMin = nodeModel.get('visualMin');\n  var visualMax = nodeModel.get('visualMax');\n  var dataExtent = nodeLayout.dataExtent.slice();\n  visualMin != null && visualMin < dataExtent[0] && (dataExtent[0] = visualMin);\n  visualMax != null && visualMax > dataExtent[1] && (dataExtent[1] = visualMax);\n  var colorMappingBy = nodeModel.get('colorMappingBy');\n  var opt = {\n    type: rangeVisual.name,\n    dataExtent: dataExtent,\n    visual: rangeVisual.range\n  };\n\n  if (opt.type === 'color' && (colorMappingBy === 'index' || colorMappingBy === 'id')) {\n    opt.mappingMethod = 'category';\n    opt.loop = true; // categories is ordinal, so do not set opt.categories.\n  } else {\n    opt.mappingMethod = 'linear';\n  }\n\n  var mapping = new VisualMapping(opt);\n  mapping.__drColorMappingBy = colorMappingBy;\n  return mapping;\n} // Notice: If we dont have the attribute 'colorRange', but only use\n// attribute 'color' to represent both concepts of 'colorRange' and 'color',\n// (It means 'colorRange' when 'color' is Array, means 'color' when not array),\n// this problem will be encountered:\n// If a level-1 node dont have children, and its siblings has children,\n// and colorRange is set on level-1, then the node can not be colored.\n// So we separate 'colorRange' and 'color' to different attributes.\n\n\nfunction getRangeVisual(nodeModel, name) {\n  // 'colorRange', 'colorARange', 'colorSRange'.\n  // If not exsits on this node, fetch from levels and series.\n  var range = nodeModel.get(name);\n  return isArray(range) && range.length ? {\n    name: name,\n    range: range\n  } : null;\n}\n\nfunction mapVisual(nodeModel, visuals, child, index, mapping, seriesModel) {\n  var childVisuals = zrUtil.extend({}, visuals);\n\n  if (mapping) {\n    var mappingType = mapping.type;\n    var colorMappingBy = mappingType === 'color' && mapping.__drColorMappingBy;\n    var value = colorMappingBy === 'index' ? index : colorMappingBy === 'id' ? seriesModel.mapIdToIndex(child.getId()) : child.getValue(nodeModel.get('visualDimension'));\n    childVisuals[mappingType] = mapping.mapValueToVisual(value);\n  }\n\n  return childVisuals;\n}\n\nmodule.exports = _default;","require(\"../coord/polar/polarCreator\");\n\nrequire(\"./axis/AngleAxisView\");","require(\"../coord/cartesian/AxisModel\");\n\nrequire(\"./axis/CartesianAxisView\");","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar Model = require(\"../../model/Model\");\n\nvar AxisView = require(\"./AxisView\");\n\nvar elementList = ['axisLine', 'axisLabel', 'axisTick', 'splitLine', 'splitArea'];\n\nfunction getAxisLineShape(polar, rExtent, angle) {\n  rExtent[1] > rExtent[0] && (rExtent = rExtent.slice().reverse());\n  var start = polar.coordToPoint([rExtent[0], angle]);\n  var end = polar.coordToPoint([rExtent[1], angle]);\n  return {\n    x1: start[0],\n    y1: start[1],\n    x2: end[0],\n    y2: end[1]\n  };\n}\n\nfunction getRadiusIdx(polar) {\n  var radiusAxis = polar.getRadiusAxis();\n  return radiusAxis.inverse ? 0 : 1;\n}\n\nvar _default = AxisView.extend({\n  type: 'angleAxis',\n  axisPointerClass: 'PolarAxisPointer',\n  render: function (angleAxisModel, ecModel) {\n    this.group.removeAll();\n\n    if (!angleAxisModel.get('show')) {\n      return;\n    }\n\n    var angleAxis = angleAxisModel.axis;\n    var polar = angleAxis.polar;\n    var radiusExtent = polar.getRadiusAxis().getExtent();\n    var ticksAngles = angleAxis.getTicksCoords();\n\n    if (angleAxis.type !== 'category') {\n      // Remove the last tick which will overlap the first tick\n      ticksAngles.pop();\n    }\n\n    zrUtil.each(elementList, function (name) {\n      if (angleAxisModel.get(name + '.show') && (!angleAxis.scale.isBlank() || name === 'axisLine')) {\n        this['_' + name](angleAxisModel, polar, ticksAngles, radiusExtent);\n      }\n    }, this);\n  },\n\n  /**\n   * @private\n   */\n  _axisLine: function (angleAxisModel, polar, ticksAngles, radiusExtent) {\n    var lineStyleModel = angleAxisModel.getModel('axisLine.lineStyle');\n    var circle = new graphic.Circle({\n      shape: {\n        cx: polar.cx,\n        cy: polar.cy,\n        r: radiusExtent[getRadiusIdx(polar)]\n      },\n      style: lineStyleModel.getLineStyle(),\n      z2: 1,\n      silent: true\n    });\n    circle.style.fill = null;\n    this.group.add(circle);\n  },\n\n  /**\n   * @private\n   */\n  _axisTick: function (angleAxisModel, polar, ticksAngles, radiusExtent) {\n    var tickModel = angleAxisModel.getModel('axisTick');\n    var tickLen = (tickModel.get('inside') ? -1 : 1) * tickModel.get('length');\n    var radius = radiusExtent[getRadiusIdx(polar)];\n    var lines = zrUtil.map(ticksAngles, function (tickAngle) {\n      return new graphic.Line({\n        shape: getAxisLineShape(polar, [radius, radius + tickLen], tickAngle)\n      });\n    });\n    this.group.add(graphic.mergePath(lines, {\n      style: zrUtil.defaults(tickModel.getModel('lineStyle').getLineStyle(), {\n        stroke: angleAxisModel.get('axisLine.lineStyle.color')\n      })\n    }));\n  },\n\n  /**\n   * @private\n   */\n  _axisLabel: function (angleAxisModel, polar, ticksAngles, radiusExtent) {\n    var axis = angleAxisModel.axis;\n    var categoryData = angleAxisModel.getCategories();\n    var labelModel = angleAxisModel.getModel('axisLabel');\n    var labels = angleAxisModel.getFormattedLabels();\n    var labelMargin = labelModel.get('margin');\n    var labelsAngles = axis.getLabelsCoords(); // Use length of ticksAngles because it may remove the last tick to avoid overlapping\n\n    for (var i = 0; i < ticksAngles.length; i++) {\n      var r = radiusExtent[getRadiusIdx(polar)];\n      var p = polar.coordToPoint([r + labelMargin, labelsAngles[i]]);\n      var cx = polar.cx;\n      var cy = polar.cy;\n      var labelTextAlign = Math.abs(p[0] - cx) / r < 0.3 ? 'center' : p[0] > cx ? 'left' : 'right';\n      var labelTextVerticalAlign = Math.abs(p[1] - cy) / r < 0.3 ? 'middle' : p[1] > cy ? 'top' : 'bottom';\n\n      if (categoryData && categoryData[i] && categoryData[i].textStyle) {\n        labelModel = new Model(categoryData[i].textStyle, labelModel, labelModel.ecModel);\n      }\n\n      var textEl = new graphic.Text({\n        silent: true\n      });\n      this.group.add(textEl);\n      graphic.setTextStyle(textEl.style, labelModel, {\n        x: p[0],\n        y: p[1],\n        textFill: labelModel.getTextColor() || angleAxisModel.get('axisLine.lineStyle.color'),\n        text: labels[i],\n        textAlign: labelTextAlign,\n        textVerticalAlign: labelTextVerticalAlign\n      });\n    }\n  },\n\n  /**\n   * @private\n   */\n  _splitLine: function (angleAxisModel, polar, ticksAngles, radiusExtent) {\n    var splitLineModel = angleAxisModel.getModel('splitLine');\n    var lineStyleModel = splitLineModel.getModel('lineStyle');\n    var lineColors = lineStyleModel.get('color');\n    var lineCount = 0;\n    lineColors = lineColors instanceof Array ? lineColors : [lineColors];\n    var splitLines = [];\n\n    for (var i = 0; i < ticksAngles.length; i++) {\n      var colorIndex = lineCount++ % lineColors.length;\n      splitLines[colorIndex] = splitLines[colorIndex] || [];\n      splitLines[colorIndex].push(new graphic.Line({\n        shape: getAxisLineShape(polar, radiusExtent, ticksAngles[i])\n      }));\n    } // Simple optimization\n    // Batching the lines if color are the same\n\n\n    for (var i = 0; i < splitLines.length; i++) {\n      this.group.add(graphic.mergePath(splitLines[i], {\n        style: zrUtil.defaults({\n          stroke: lineColors[i % lineColors.length]\n        }, lineStyleModel.getLineStyle()),\n        silent: true,\n        z: angleAxisModel.get('z')\n      }));\n    }\n  },\n\n  /**\n   * @private\n   */\n  _splitArea: function (angleAxisModel, polar, ticksAngles, radiusExtent) {\n    var splitAreaModel = angleAxisModel.getModel('splitArea');\n    var areaStyleModel = splitAreaModel.getModel('areaStyle');\n    var areaColors = areaStyleModel.get('color');\n    var lineCount = 0;\n    areaColors = areaColors instanceof Array ? areaColors : [areaColors];\n    var splitAreas = [];\n    var RADIAN = Math.PI / 180;\n    var prevAngle = -ticksAngles[0] * RADIAN;\n    var r0 = Math.min(radiusExtent[0], radiusExtent[1]);\n    var r1 = Math.max(radiusExtent[0], radiusExtent[1]);\n    var clockwise = angleAxisModel.get('clockwise');\n\n    for (var i = 1; i < ticksAngles.length; i++) {\n      var colorIndex = lineCount++ % areaColors.length;\n      splitAreas[colorIndex] = splitAreas[colorIndex] || [];\n      splitAreas[colorIndex].push(new graphic.Sector({\n        shape: {\n          cx: polar.cx,\n          cy: polar.cy,\n          r0: r0,\n          r: r1,\n          startAngle: prevAngle,\n          endAngle: -ticksAngles[i] * RADIAN,\n          clockwise: clockwise\n        },\n        silent: true\n      }));\n      prevAngle = -ticksAngles[i] * RADIAN;\n    } // Simple optimization\n    // Batching the lines if color are the same\n\n\n    for (var i = 0; i < splitAreas.length; i++) {\n      this.group.add(graphic.mergePath(splitAreas[i], {\n        style: zrUtil.defaults({\n          fill: areaColors[i % areaColors.length]\n        }, areaStyleModel.getAreaStyle()),\n        silent: true\n      }));\n    }\n  }\n});\n\nmodule.exports = _default;","var _util = require(\"zrender/lib/core/util\");\n\nvar retrieve = _util.retrieve;\nvar defaults = _util.defaults;\nvar extend = _util.extend;\nvar each = _util.each;\n\nvar formatUtil = require(\"../../util/format\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar Model = require(\"../../model/Model\");\n\nvar _number = require(\"../../util/number\");\n\nvar isRadianAroundZero = _number.isRadianAroundZero;\nvar remRadian = _number.remRadian;\n\nvar _symbol = require(\"../../util/symbol\");\n\nvar createSymbol = _symbol.createSymbol;\n\nvar matrixUtil = require(\"zrender/lib/core/matrix\");\n\nvar _vector = require(\"zrender/lib/core/vector\");\n\nvar v2ApplyTransform = _vector.applyTransform;\nvar PI = Math.PI;\n\nfunction makeAxisEventDataBase(axisModel) {\n  var eventData = {\n    componentType: axisModel.mainType\n  };\n  eventData[axisModel.mainType + 'Index'] = axisModel.componentIndex;\n  return eventData;\n}\n/**\n * A final axis is translated and rotated from a \"standard axis\".\n * So opt.position and opt.rotation is required.\n *\n * A standard axis is and axis from [0, 0] to [0, axisExtent[1]],\n * for example: (0, 0) ------------> (0, 50)\n *\n * nameDirection or tickDirection or labelDirection is 1 means tick\n * or label is below the standard axis, whereas is -1 means above\n * the standard axis. labelOffset means offset between label and axis,\n * which is useful when 'onZero', where axisLabel is in the grid and\n * label in outside grid.\n *\n * Tips: like always,\n * positive rotation represents anticlockwise, and negative rotation\n * represents clockwise.\n * The direction of position coordinate is the same as the direction\n * of screen coordinate.\n *\n * Do not need to consider axis 'inverse', which is auto processed by\n * axis extent.\n *\n * @param {module:zrender/container/Group} group\n * @param {Object} axisModel\n * @param {Object} opt Standard axis parameters.\n * @param {Array.<number>} opt.position [x, y]\n * @param {number} opt.rotation by radian\n * @param {number} [opt.nameDirection=1] 1 or -1 Used when nameLocation is 'middle' or 'center'.\n * @param {number} [opt.tickDirection=1] 1 or -1\n * @param {number} [opt.labelDirection=1] 1 or -1\n * @param {number} [opt.labelOffset=0] Usefull when onZero.\n * @param {string} [opt.axisLabelShow] default get from axisModel.\n * @param {string} [opt.axisName] default get from axisModel.\n * @param {number} [opt.axisNameAvailableWidth]\n * @param {number} [opt.labelRotate] by degree, default get from axisModel.\n * @param {number} [opt.labelInterval] Default label interval when label\n *                                     interval from model is null or 'auto'.\n * @param {number} [opt.strokeContainThreshold] Default label interval when label\n * @param {number} [opt.nameTruncateMaxWidth]\n */\n\n\nvar AxisBuilder = function (axisModel, opt) {\n  /**\n   * @readOnly\n   */\n  this.opt = opt;\n  /**\n   * @readOnly\n   */\n\n  this.axisModel = axisModel; // Default value\n\n  defaults(opt, {\n    labelOffset: 0,\n    nameDirection: 1,\n    tickDirection: 1,\n    labelDirection: 1,\n    silent: true\n  });\n  /**\n   * @readOnly\n   */\n\n  this.group = new graphic.Group(); // FIXME Not use a seperate text group?\n\n  var dumbGroup = new graphic.Group({\n    position: opt.position.slice(),\n    rotation: opt.rotation\n  }); // this.group.add(dumbGroup);\n  // this._dumbGroup = dumbGroup;\n\n  dumbGroup.updateTransform();\n  this._transform = dumbGroup.transform;\n  this._dumbGroup = dumbGroup;\n};\n\nAxisBuilder.prototype = {\n  constructor: AxisBuilder,\n  hasBuilder: function (name) {\n    return !!builders[name];\n  },\n  add: function (name) {\n    builders[name].call(this);\n  },\n  getGroup: function () {\n    return this.group;\n  }\n};\nvar builders = {\n  /**\n   * @private\n   */\n  axisLine: function () {\n    var opt = this.opt;\n    var axisModel = this.axisModel;\n\n    if (!axisModel.get('axisLine.show')) {\n      return;\n    }\n\n    var extent = this.axisModel.axis.getExtent();\n    var matrix = this._transform;\n    var pt1 = [extent[0], 0];\n    var pt2 = [extent[1], 0];\n\n    if (matrix) {\n      v2ApplyTransform(pt1, pt1, matrix);\n      v2ApplyTransform(pt2, pt2, matrix);\n    }\n\n    var lineStyle = extend({\n      lineCap: 'round'\n    }, axisModel.getModel('axisLine.lineStyle').getLineStyle());\n    this.group.add(new graphic.Line(graphic.subPixelOptimizeLine({\n      // Id for animation\n      anid: 'line',\n      shape: {\n        x1: pt1[0],\n        y1: pt1[1],\n        x2: pt2[0],\n        y2: pt2[1]\n      },\n      style: lineStyle,\n      strokeContainThreshold: opt.strokeContainThreshold || 5,\n      silent: true,\n      z2: 1\n    })));\n    var arrows = axisModel.get('axisLine.symbol');\n    var arrowSize = axisModel.get('axisLine.symbolSize');\n\n    if (arrows != null) {\n      if (typeof arrows === 'string') {\n        // Use the same arrow for start and end point\n        arrows = [arrows, arrows];\n      }\n\n      if (typeof arrowSize === 'string' || typeof arrowSize === 'number') {\n        // Use the same size for width and height\n        arrowSize = [arrowSize, arrowSize];\n      }\n\n      var symbolWidth = arrowSize[0];\n      var symbolHeight = arrowSize[1];\n      each([[opt.rotation + Math.PI / 2, pt1], [opt.rotation - Math.PI / 2, pt2]], function (item, index) {\n        if (arrows[index] !== 'none' && arrows[index] != null) {\n          var symbol = createSymbol(arrows[index], -symbolWidth / 2, -symbolHeight / 2, symbolWidth, symbolHeight, lineStyle.stroke, true);\n          symbol.attr({\n            rotation: item[0],\n            position: item[1],\n            silent: true\n          });\n          this.group.add(symbol);\n        }\n      }, this);\n    }\n  },\n\n  /**\n   * @private\n   */\n  axisTickLabel: function () {\n    var axisModel = this.axisModel;\n    var opt = this.opt;\n    var tickEls = buildAxisTick(this, axisModel, opt);\n    var labelEls = buildAxisLabel(this, axisModel, opt);\n    fixMinMaxLabelShow(axisModel, labelEls, tickEls);\n  },\n\n  /**\n   * @private\n   */\n  axisName: function () {\n    var opt = this.opt;\n    var axisModel = this.axisModel;\n    var name = retrieve(opt.axisName, axisModel.get('name'));\n\n    if (!name) {\n      return;\n    }\n\n    var nameLocation = axisModel.get('nameLocation');\n    var nameDirection = opt.nameDirection;\n    var textStyleModel = axisModel.getModel('nameTextStyle');\n    var gap = axisModel.get('nameGap') || 0;\n    var extent = this.axisModel.axis.getExtent();\n    var gapSignal = extent[0] > extent[1] ? -1 : 1;\n    var pos = [nameLocation === 'start' ? extent[0] - gapSignal * gap : nameLocation === 'end' ? extent[1] + gapSignal * gap : (extent[0] + extent[1]) / 2, // 'middle'\n    // Reuse labelOffset.\n    isNameLocationCenter(nameLocation) ? opt.labelOffset + nameDirection * gap : 0];\n    var labelLayout;\n    var nameRotation = axisModel.get('nameRotate');\n\n    if (nameRotation != null) {\n      nameRotation = nameRotation * PI / 180; // To radian.\n    }\n\n    var axisNameAvailableWidth;\n\n    if (isNameLocationCenter(nameLocation)) {\n      labelLayout = innerTextLayout(opt.rotation, nameRotation != null ? nameRotation : opt.rotation, // Adapt to axis.\n      nameDirection);\n    } else {\n      labelLayout = endTextLayout(opt, nameLocation, nameRotation || 0, extent);\n      axisNameAvailableWidth = opt.axisNameAvailableWidth;\n\n      if (axisNameAvailableWidth != null) {\n        axisNameAvailableWidth = Math.abs(axisNameAvailableWidth / Math.sin(labelLayout.rotation));\n        !isFinite(axisNameAvailableWidth) && (axisNameAvailableWidth = null);\n      }\n    }\n\n    var textFont = textStyleModel.getFont();\n    var truncateOpt = axisModel.get('nameTruncate', true) || {};\n    var ellipsis = truncateOpt.ellipsis;\n    var maxWidth = retrieve(opt.nameTruncateMaxWidth, truncateOpt.maxWidth, axisNameAvailableWidth); // FIXME\n    // truncate rich text? (consider performance)\n\n    var truncatedText = ellipsis != null && maxWidth != null ? formatUtil.truncateText(name, maxWidth, textFont, ellipsis, {\n      minChar: 2,\n      placeholder: truncateOpt.placeholder\n    }) : name;\n    var tooltipOpt = axisModel.get('tooltip', true);\n    var mainType = axisModel.mainType;\n    var formatterParams = {\n      componentType: mainType,\n      name: name,\n      $vars: ['name']\n    };\n    formatterParams[mainType + 'Index'] = axisModel.componentIndex;\n    var textEl = new graphic.Text({\n      // Id for animation\n      anid: 'name',\n      __fullText: name,\n      __truncatedText: truncatedText,\n      position: pos,\n      rotation: labelLayout.rotation,\n      silent: isSilent(axisModel),\n      z2: 1,\n      tooltip: tooltipOpt && tooltipOpt.show ? extend({\n        content: name,\n        formatter: function () {\n          return name;\n        },\n        formatterParams: formatterParams\n      }, tooltipOpt) : null\n    });\n    graphic.setTextStyle(textEl.style, textStyleModel, {\n      text: truncatedText,\n      textFont: textFont,\n      textFill: textStyleModel.getTextColor() || axisModel.get('axisLine.lineStyle.color'),\n      textAlign: labelLayout.textAlign,\n      textVerticalAlign: labelLayout.textVerticalAlign\n    });\n\n    if (axisModel.get('triggerEvent')) {\n      textEl.eventData = makeAxisEventDataBase(axisModel);\n      textEl.eventData.targetType = 'axisName';\n      textEl.eventData.name = name;\n    } // FIXME\n\n\n    this._dumbGroup.add(textEl);\n\n    textEl.updateTransform();\n    this.group.add(textEl);\n    textEl.decomposeTransform();\n  }\n};\n/**\n * @public\n * @static\n * @param {Object} opt\n * @param {number} axisRotation in radian\n * @param {number} textRotation in radian\n * @param {number} direction\n * @return {Object} {\n *  rotation, // according to axis\n *  textAlign,\n *  textVerticalAlign\n * }\n */\n\nvar innerTextLayout = AxisBuilder.innerTextLayout = function (axisRotation, textRotation, direction) {\n  var rotationDiff = remRadian(textRotation - axisRotation);\n  var textAlign;\n  var textVerticalAlign;\n\n  if (isRadianAroundZero(rotationDiff)) {\n    // Label is parallel with axis line.\n    textVerticalAlign = direction > 0 ? 'top' : 'bottom';\n    textAlign = 'center';\n  } else if (isRadianAroundZero(rotationDiff - PI)) {\n    // Label is inverse parallel with axis line.\n    textVerticalAlign = direction > 0 ? 'bottom' : 'top';\n    textAlign = 'center';\n  } else {\n    textVerticalAlign = 'middle';\n\n    if (rotationDiff > 0 && rotationDiff < PI) {\n      textAlign = direction > 0 ? 'right' : 'left';\n    } else {\n      textAlign = direction > 0 ? 'left' : 'right';\n    }\n  }\n\n  return {\n    rotation: rotationDiff,\n    textAlign: textAlign,\n    textVerticalAlign: textVerticalAlign\n  };\n};\n\nfunction endTextLayout(opt, textPosition, textRotate, extent) {\n  var rotationDiff = remRadian(textRotate - opt.rotation);\n  var textAlign;\n  var textVerticalAlign;\n  var inverse = extent[0] > extent[1];\n  var onLeft = textPosition === 'start' && !inverse || textPosition !== 'start' && inverse;\n\n  if (isRadianAroundZero(rotationDiff - PI / 2)) {\n    textVerticalAlign = onLeft ? 'bottom' : 'top';\n    textAlign = 'center';\n  } else if (isRadianAroundZero(rotationDiff - PI * 1.5)) {\n    textVerticalAlign = onLeft ? 'top' : 'bottom';\n    textAlign = 'center';\n  } else {\n    textVerticalAlign = 'middle';\n\n    if (rotationDiff < PI * 1.5 && rotationDiff > PI / 2) {\n      textAlign = onLeft ? 'left' : 'right';\n    } else {\n      textAlign = onLeft ? 'right' : 'left';\n    }\n  }\n\n  return {\n    rotation: rotationDiff,\n    textAlign: textAlign,\n    textVerticalAlign: textVerticalAlign\n  };\n}\n\nfunction isSilent(axisModel) {\n  var tooltipOpt = axisModel.get('tooltip');\n  return axisModel.get('silent') // Consider mouse cursor, add these restrictions.\n  || !(axisModel.get('triggerEvent') || tooltipOpt && tooltipOpt.show);\n}\n\nfunction fixMinMaxLabelShow(axisModel, labelEls, tickEls) {\n  // If min or max are user set, we need to check\n  // If the tick on min(max) are overlap on their neighbour tick\n  // If they are overlapped, we need to hide the min(max) tick label\n  var showMinLabel = axisModel.get('axisLabel.showMinLabel');\n  var showMaxLabel = axisModel.get('axisLabel.showMaxLabel'); // FIXME\n  // Have not consider onBand yet, where tick els is more than label els.\n\n  labelEls = labelEls || [];\n  tickEls = tickEls || [];\n  var firstLabel = labelEls[0];\n  var nextLabel = labelEls[1];\n  var lastLabel = labelEls[labelEls.length - 1];\n  var prevLabel = labelEls[labelEls.length - 2];\n  var firstTick = tickEls[0];\n  var nextTick = tickEls[1];\n  var lastTick = tickEls[tickEls.length - 1];\n  var prevTick = tickEls[tickEls.length - 2];\n\n  if (showMinLabel === false) {\n    ignoreEl(firstLabel);\n    ignoreEl(firstTick);\n  } else if (isTwoLabelOverlapped(firstLabel, nextLabel)) {\n    if (showMinLabel) {\n      ignoreEl(nextLabel);\n      ignoreEl(nextTick);\n    } else {\n      ignoreEl(firstLabel);\n      ignoreEl(firstTick);\n    }\n  }\n\n  if (showMaxLabel === false) {\n    ignoreEl(lastLabel);\n    ignoreEl(lastTick);\n  } else if (isTwoLabelOverlapped(prevLabel, lastLabel)) {\n    if (showMaxLabel) {\n      ignoreEl(prevLabel);\n      ignoreEl(prevTick);\n    } else {\n      ignoreEl(lastLabel);\n      ignoreEl(lastTick);\n    }\n  }\n}\n\nfunction ignoreEl(el) {\n  el && (el.ignore = true);\n}\n\nfunction isTwoLabelOverlapped(current, next, labelLayout) {\n  // current and next has the same rotation.\n  var firstRect = current && current.getBoundingRect().clone();\n  var nextRect = next && next.getBoundingRect().clone();\n\n  if (!firstRect || !nextRect) {\n    return;\n  } // When checking intersect of two rotated labels, we use mRotationBack\n  // to avoid that boundingRect is enlarge when using `boundingRect.applyTransform`.\n\n\n  var mRotationBack = matrixUtil.identity([]);\n  matrixUtil.rotate(mRotationBack, mRotationBack, -current.rotation);\n  firstRect.applyTransform(matrixUtil.mul([], mRotationBack, current.getLocalTransform()));\n  nextRect.applyTransform(matrixUtil.mul([], mRotationBack, next.getLocalTransform()));\n  return firstRect.intersect(nextRect);\n}\n\nfunction isNameLocationCenter(nameLocation) {\n  return nameLocation === 'middle' || nameLocation === 'center';\n}\n/**\n * @static\n */\n\n\nvar ifIgnoreOnTick = AxisBuilder.ifIgnoreOnTick = function (axis, i, interval, ticksCnt, showMinLabel, showMaxLabel) {\n  if (i === 0 && showMinLabel || i === ticksCnt - 1 && showMaxLabel) {\n    return false;\n  } // FIXME\n  // Have not consider label overlap (if label is too long) yet.\n\n\n  var rawTick;\n  var scale = axis.scale;\n  return scale.type === 'ordinal' && (typeof interval === 'function' ? (rawTick = scale.getTicks()[i], !interval(rawTick, scale.getLabel(rawTick))) : i % (interval + 1));\n};\n/**\n * @static\n */\n\n\nvar getInterval = AxisBuilder.getInterval = function (model, labelInterval) {\n  var interval = model.get('interval');\n\n  if (interval == null || interval == 'auto') {\n    interval = labelInterval;\n  }\n\n  return interval;\n};\n\nfunction buildAxisTick(axisBuilder, axisModel, opt) {\n  var axis = axisModel.axis;\n\n  if (!axisModel.get('axisTick.show') || axis.scale.isBlank()) {\n    return;\n  }\n\n  var tickModel = axisModel.getModel('axisTick');\n  var lineStyleModel = tickModel.getModel('lineStyle');\n  var tickLen = tickModel.get('length');\n  var tickInterval = getInterval(tickModel, opt.labelInterval);\n  var ticksCoords = axis.getTicksCoords(tickModel.get('alignWithLabel')); // FIXME\n  // Corresponds to ticksCoords ?\n\n  var ticks = axis.scale.getTicks();\n  var showMinLabel = axisModel.get('axisLabel.showMinLabel');\n  var showMaxLabel = axisModel.get('axisLabel.showMaxLabel');\n  var pt1 = [];\n  var pt2 = [];\n  var matrix = axisBuilder._transform;\n  var tickEls = [];\n  var ticksCnt = ticksCoords.length;\n\n  for (var i = 0; i < ticksCnt; i++) {\n    // Only ordinal scale support tick interval\n    if (ifIgnoreOnTick(axis, i, tickInterval, ticksCnt, showMinLabel, showMaxLabel)) {\n      continue;\n    }\n\n    var tickCoord = ticksCoords[i];\n    pt1[0] = tickCoord;\n    pt1[1] = 0;\n    pt2[0] = tickCoord;\n    pt2[1] = opt.tickDirection * tickLen;\n\n    if (matrix) {\n      v2ApplyTransform(pt1, pt1, matrix);\n      v2ApplyTransform(pt2, pt2, matrix);\n    } // Tick line, Not use group transform to have better line draw\n\n\n    var tickEl = new graphic.Line(graphic.subPixelOptimizeLine({\n      // Id for animation\n      anid: 'tick_' + ticks[i],\n      shape: {\n        x1: pt1[0],\n        y1: pt1[1],\n        x2: pt2[0],\n        y2: pt2[1]\n      },\n      style: defaults(lineStyleModel.getLineStyle(), {\n        stroke: axisModel.get('axisLine.lineStyle.color')\n      }),\n      z2: 2,\n      silent: true\n    }));\n    axisBuilder.group.add(tickEl);\n    tickEls.push(tickEl);\n  }\n\n  return tickEls;\n}\n\nfunction buildAxisLabel(axisBuilder, axisModel, opt) {\n  var axis = axisModel.axis;\n  var show = retrieve(opt.axisLabelShow, axisModel.get('axisLabel.show'));\n\n  if (!show || axis.scale.isBlank()) {\n    return;\n  }\n\n  var labelModel = axisModel.getModel('axisLabel');\n  var labelMargin = labelModel.get('margin');\n  var ticks = axis.scale.getTicks();\n  var labels = axisModel.getFormattedLabels(); // Special label rotate.\n\n  var labelRotation = (retrieve(opt.labelRotate, labelModel.get('rotate')) || 0) * PI / 180;\n  var labelLayout = innerTextLayout(opt.rotation, labelRotation, opt.labelDirection);\n  var categoryData = axisModel.getCategories();\n  var labelEls = [];\n  var silent = isSilent(axisModel);\n  var triggerEvent = axisModel.get('triggerEvent');\n  var showMinLabel = axisModel.get('axisLabel.showMinLabel');\n  var showMaxLabel = axisModel.get('axisLabel.showMaxLabel');\n  each(ticks, function (tickVal, index) {\n    if (ifIgnoreOnTick(axis, index, opt.labelInterval, ticks.length, showMinLabel, showMaxLabel)) {\n      return;\n    }\n\n    var itemLabelModel = labelModel;\n\n    if (categoryData && categoryData[tickVal] && categoryData[tickVal].textStyle) {\n      itemLabelModel = new Model(categoryData[tickVal].textStyle, labelModel, axisModel.ecModel);\n    }\n\n    var textColor = itemLabelModel.getTextColor() || axisModel.get('axisLine.lineStyle.color');\n    var tickCoord = axis.dataToCoord(tickVal);\n    var pos = [tickCoord, opt.labelOffset + opt.labelDirection * labelMargin];\n    var labelStr = axis.scale.getLabel(tickVal);\n    var textEl = new graphic.Text({\n      // Id for animation\n      anid: 'label_' + tickVal,\n      position: pos,\n      rotation: labelLayout.rotation,\n      silent: silent,\n      z2: 10\n    });\n    graphic.setTextStyle(textEl.style, itemLabelModel, {\n      text: labels[index],\n      textAlign: itemLabelModel.getShallow('align', true) || labelLayout.textAlign,\n      textVerticalAlign: itemLabelModel.getShallow('verticalAlign', true) || itemLabelModel.getShallow('baseline', true) || labelLayout.textVerticalAlign,\n      textFill: typeof textColor === 'function' ? textColor( // (1) In category axis with data zoom, tick is not the original\n      // index of axis.data. So tick should not be exposed to user\n      // in category axis.\n      // (2) Compatible with previous version, which always returns labelStr.\n      // But in interval scale labelStr is like '223,445', which maked\n      // user repalce ','. So we modify it to return original val but remain\n      // it as 'string' to avoid error in replacing.\n      axis.type === 'category' ? labelStr : axis.type === 'value' ? tickVal + '' : tickVal, index) : textColor\n    }); // Pack data for mouse event\n\n    if (triggerEvent) {\n      textEl.eventData = makeAxisEventDataBase(axisModel);\n      textEl.eventData.targetType = 'axisLabel';\n      textEl.eventData.value = labelStr;\n    } // FIXME\n\n\n    axisBuilder._dumbGroup.add(textEl);\n\n    textEl.updateTransform();\n    labelEls.push(textEl);\n    axisBuilder.group.add(textEl);\n    textEl.decomposeTransform();\n  });\n  return labelEls;\n}\n\nvar _default = AxisBuilder;\nmodule.exports = _default;","var _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar echarts = require(\"../../echarts\");\n\nvar axisPointerModelHelper = require(\"../axisPointer/modelHelper\");\n\n/**\n * Base class of AxisView.\n */\nvar AxisView = echarts.extendComponentView({\n  type: 'axis',\n\n  /**\n   * @private\n   */\n  _axisPointer: null,\n\n  /**\n   * @protected\n   * @type {string}\n   */\n  axisPointerClass: null,\n\n  /**\n   * @override\n   */\n  render: function (axisModel, ecModel, api, payload) {\n    // FIXME\n    // This process should proformed after coordinate systems updated\n    // (axis scale updated), and should be performed each time update.\n    // So put it here temporarily, although it is not appropriate to\n    // put a model-writing procedure in `view`.\n    this.axisPointerClass && axisPointerModelHelper.fixValue(axisModel);\n    AxisView.superApply(this, 'render', arguments);\n    updateAxisPointer(this, axisModel, ecModel, api, payload, true);\n  },\n\n  /**\n   * Action handler.\n   * @public\n   * @param {module:echarts/coord/cartesian/AxisModel} axisModel\n   * @param {module:echarts/model/Global} ecModel\n   * @param {module:echarts/ExtensionAPI} api\n   * @param {Object} payload\n   */\n  updateAxisPointer: function (axisModel, ecModel, api, payload, force) {\n    updateAxisPointer(this, axisModel, ecModel, api, payload, false);\n  },\n\n  /**\n   * @override\n   */\n  remove: function (ecModel, api) {\n    var axisPointer = this._axisPointer;\n    axisPointer && axisPointer.remove(api);\n    AxisView.superApply(this, 'remove', arguments);\n  },\n\n  /**\n   * @override\n   */\n  dispose: function (ecModel, api) {\n    disposeAxisPointer(this, api);\n    AxisView.superApply(this, 'dispose', arguments);\n  }\n});\n\nfunction updateAxisPointer(axisView, axisModel, ecModel, api, payload, forceRender) {\n  var Clazz = AxisView.getAxisPointerClass(axisView.axisPointerClass);\n\n  if (!Clazz) {\n    return;\n  }\n\n  var axisPointerModel = axisPointerModelHelper.getAxisPointerModel(axisModel);\n  axisPointerModel ? (axisView._axisPointer || (axisView._axisPointer = new Clazz())).render(axisModel, axisPointerModel, api, forceRender) : disposeAxisPointer(axisView, api);\n}\n\nfunction disposeAxisPointer(axisView, ecModel, api) {\n  var axisPointer = axisView._axisPointer;\n  axisPointer && axisPointer.dispose(ecModel, api);\n  axisView._axisPointer = null;\n}\n\nvar axisPointerClazz = [];\n\nAxisView.registerAxisPointerClass = function (type, clazz) {\n  axisPointerClazz[type] = clazz;\n};\n\nAxisView.getAxisPointerClass = function (type) {\n  return type && axisPointerClazz[type];\n};\n\nvar _default = AxisView;\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar AxisBuilder = require(\"./AxisBuilder\");\n\nvar AxisView = require(\"./AxisView\");\n\nvar cartesianAxisHelper = require(\"./cartesianAxisHelper\");\n\nvar ifIgnoreOnTick = AxisBuilder.ifIgnoreOnTick;\nvar getInterval = AxisBuilder.getInterval;\nvar axisBuilderAttrs = ['axisLine', 'axisTickLabel', 'axisName'];\nvar selfBuilderAttrs = ['splitArea', 'splitLine']; // function getAlignWithLabel(model, axisModel) {\n//     var alignWithLabel = model.get('alignWithLabel');\n//     if (alignWithLabel === 'auto') {\n//         alignWithLabel = axisModel.get('axisTick.alignWithLabel');\n//     }\n//     return alignWithLabel;\n// }\n\nvar CartesianAxisView = AxisView.extend({\n  type: 'cartesianAxis',\n  axisPointerClass: 'CartesianAxisPointer',\n\n  /**\n   * @override\n   */\n  render: function (axisModel, ecModel, api, payload) {\n    this.group.removeAll();\n    var oldAxisGroup = this._axisGroup;\n    this._axisGroup = new graphic.Group();\n    this.group.add(this._axisGroup);\n\n    if (!axisModel.get('show')) {\n      return;\n    }\n\n    var gridModel = axisModel.getCoordSysModel();\n    var layout = cartesianAxisHelper.layout(gridModel, axisModel);\n    var axisBuilder = new AxisBuilder(axisModel, layout);\n    zrUtil.each(axisBuilderAttrs, axisBuilder.add, axisBuilder);\n\n    this._axisGroup.add(axisBuilder.getGroup());\n\n    zrUtil.each(selfBuilderAttrs, function (name) {\n      if (axisModel.get(name + '.show')) {\n        this['_' + name](axisModel, gridModel, layout.labelInterval);\n      }\n    }, this);\n    graphic.groupTransition(oldAxisGroup, this._axisGroup, axisModel);\n    CartesianAxisView.superCall(this, 'render', axisModel, ecModel, api, payload);\n  },\n\n  /**\n   * @param {module:echarts/coord/cartesian/AxisModel} axisModel\n   * @param {module:echarts/coord/cartesian/GridModel} gridModel\n   * @param {number|Function} labelInterval\n   * @private\n   */\n  _splitLine: function (axisModel, gridModel, labelInterval) {\n    var axis = axisModel.axis;\n\n    if (axis.scale.isBlank()) {\n      return;\n    }\n\n    var splitLineModel = axisModel.getModel('splitLine');\n    var lineStyleModel = splitLineModel.getModel('lineStyle');\n    var lineColors = lineStyleModel.get('color');\n    var lineInterval = getInterval(splitLineModel, labelInterval);\n    lineColors = zrUtil.isArray(lineColors) ? lineColors : [lineColors];\n    var gridRect = gridModel.coordinateSystem.getRect();\n    var isHorizontal = axis.isHorizontal();\n    var lineCount = 0;\n    var ticksCoords = axis.getTicksCoords();\n    var ticks = axis.scale.getTicks();\n    var showMinLabel = axisModel.get('axisLabel.showMinLabel');\n    var showMaxLabel = axisModel.get('axisLabel.showMaxLabel');\n    var p1 = [];\n    var p2 = []; // Simple optimization\n    // Batching the lines if color are the same\n\n    var lineStyle = lineStyleModel.getLineStyle();\n\n    for (var i = 0; i < ticksCoords.length; i++) {\n      if (ifIgnoreOnTick(axis, i, lineInterval, ticksCoords.length, showMinLabel, showMaxLabel)) {\n        continue;\n      }\n\n      var tickCoord = axis.toGlobalCoord(ticksCoords[i]);\n\n      if (isHorizontal) {\n        p1[0] = tickCoord;\n        p1[1] = gridRect.y;\n        p2[0] = tickCoord;\n        p2[1] = gridRect.y + gridRect.height;\n      } else {\n        p1[0] = gridRect.x;\n        p1[1] = tickCoord;\n        p2[0] = gridRect.x + gridRect.width;\n        p2[1] = tickCoord;\n      }\n\n      var colorIndex = lineCount++ % lineColors.length;\n\n      this._axisGroup.add(new graphic.Line(graphic.subPixelOptimizeLine({\n        anid: 'line_' + ticks[i],\n        shape: {\n          x1: p1[0],\n          y1: p1[1],\n          x2: p2[0],\n          y2: p2[1]\n        },\n        style: zrUtil.defaults({\n          stroke: lineColors[colorIndex]\n        }, lineStyle),\n        silent: true\n      })));\n    }\n  },\n\n  /**\n   * @param {module:echarts/coord/cartesian/AxisModel} axisModel\n   * @param {module:echarts/coord/cartesian/GridModel} gridModel\n   * @param {number|Function} labelInterval\n   * @private\n   */\n  _splitArea: function (axisModel, gridModel, labelInterval) {\n    var axis = axisModel.axis;\n\n    if (axis.scale.isBlank()) {\n      return;\n    }\n\n    var splitAreaModel = axisModel.getModel('splitArea');\n    var areaStyleModel = splitAreaModel.getModel('areaStyle');\n    var areaColors = areaStyleModel.get('color');\n    var gridRect = gridModel.coordinateSystem.getRect();\n    var ticksCoords = axis.getTicksCoords();\n    var ticks = axis.scale.getTicks();\n    var prevX = axis.toGlobalCoord(ticksCoords[0]);\n    var prevY = axis.toGlobalCoord(ticksCoords[0]);\n    var count = 0;\n    var areaInterval = getInterval(splitAreaModel, labelInterval);\n    var areaStyle = areaStyleModel.getAreaStyle();\n    areaColors = zrUtil.isArray(areaColors) ? areaColors : [areaColors];\n    var showMinLabel = axisModel.get('axisLabel.showMinLabel');\n    var showMaxLabel = axisModel.get('axisLabel.showMaxLabel');\n\n    for (var i = 1; i < ticksCoords.length; i++) {\n      if (ifIgnoreOnTick(axis, i, areaInterval, ticksCoords.length, showMinLabel, showMaxLabel)) {\n        continue;\n      }\n\n      var tickCoord = axis.toGlobalCoord(ticksCoords[i]);\n      var x;\n      var y;\n      var width;\n      var height;\n\n      if (axis.isHorizontal()) {\n        x = prevX;\n        y = gridRect.y;\n        width = tickCoord - x;\n        height = gridRect.height;\n      } else {\n        x = gridRect.x;\n        y = prevY;\n        width = gridRect.width;\n        height = tickCoord - y;\n      }\n\n      var colorIndex = count++ % areaColors.length;\n\n      this._axisGroup.add(new graphic.Rect({\n        anid: 'area_' + ticks[i],\n        shape: {\n          x: x,\n          y: y,\n          width: width,\n          height: height\n        },\n        style: zrUtil.defaults({\n          fill: areaColors[colorIndex]\n        }, areaStyle),\n        silent: true\n      }));\n\n      prevX = x + width;\n      prevY = y + height;\n    }\n  }\n});\nCartesianAxisView.extend({\n  type: 'xAxis'\n});\nCartesianAxisView.extend({\n  type: 'yAxis'\n});","var echarts = require(\"../../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar AxisBuilder = require(\"./AxisBuilder\");\n\nvar BrushController = require(\"../helper/BrushController\");\n\nvar brushHelper = require(\"../helper/brushHelper\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar elementList = ['axisLine', 'axisTickLabel', 'axisName'];\nvar AxisView = echarts.extendComponentView({\n  type: 'parallelAxis',\n\n  /**\n   * @override\n   */\n  init: function (ecModel, api) {\n    AxisView.superApply(this, 'init', arguments);\n    /**\n     * @type {module:echarts/component/helper/BrushController}\n     */\n\n    (this._brushController = new BrushController(api.getZr())).on('brush', zrUtil.bind(this._onBrush, this));\n  },\n\n  /**\n   * @override\n   */\n  render: function (axisModel, ecModel, api, payload) {\n    if (fromAxisAreaSelect(axisModel, ecModel, payload)) {\n      return;\n    }\n\n    this.axisModel = axisModel;\n    this.api = api;\n    this.group.removeAll();\n    var oldAxisGroup = this._axisGroup;\n    this._axisGroup = new graphic.Group();\n    this.group.add(this._axisGroup);\n\n    if (!axisModel.get('show')) {\n      return;\n    }\n\n    var coordSysModel = getCoordSysModel(axisModel, ecModel);\n    var coordSys = coordSysModel.coordinateSystem;\n    var areaSelectStyle = axisModel.getAreaSelectStyle();\n    var areaWidth = areaSelectStyle.width;\n    var dim = axisModel.axis.dim;\n    var axisLayout = coordSys.getAxisLayout(dim);\n    var builderOpt = zrUtil.extend({\n      strokeContainThreshold: areaWidth\n    }, axisLayout);\n    var axisBuilder = new AxisBuilder(axisModel, builderOpt);\n    zrUtil.each(elementList, axisBuilder.add, axisBuilder);\n\n    this._axisGroup.add(axisBuilder.getGroup());\n\n    this._refreshBrushController(builderOpt, areaSelectStyle, axisModel, coordSysModel, areaWidth, api);\n\n    var animationModel = payload && payload.animation === false ? null : axisModel;\n    graphic.groupTransition(oldAxisGroup, this._axisGroup, animationModel);\n  },\n  // /**\n  //  * @override\n  //  */\n  // updateVisual: function (axisModel, ecModel, api, payload) {\n  //     this._brushController && this._brushController\n  //         .updateCovers(getCoverInfoList(axisModel));\n  // },\n  _refreshBrushController: function (builderOpt, areaSelectStyle, axisModel, coordSysModel, areaWidth, api) {\n    // After filtering, axis may change, select area needs to be update.\n    var extent = axisModel.axis.getExtent();\n    var extentLen = extent[1] - extent[0];\n    var extra = Math.min(30, Math.abs(extentLen) * 0.1); // Arbitrary value.\n    // width/height might be negative, which will be\n    // normalized in BoundingRect.\n\n    var rect = graphic.BoundingRect.create({\n      x: extent[0],\n      y: -areaWidth / 2,\n      width: extentLen,\n      height: areaWidth\n    });\n    rect.x -= extra;\n    rect.width += 2 * extra;\n\n    this._brushController.mount({\n      enableGlobalPan: true,\n      rotation: builderOpt.rotation,\n      position: builderOpt.position\n    }).setPanels([{\n      panelId: 'pl',\n      clipPath: brushHelper.makeRectPanelClipPath(rect),\n      isTargetByCursor: brushHelper.makeRectIsTargetByCursor(rect, api, coordSysModel),\n      getLinearBrushOtherExtent: brushHelper.makeLinearBrushOtherExtent(rect, 0)\n    }]).enableBrush({\n      brushType: 'lineX',\n      brushStyle: areaSelectStyle,\n      removeOnClick: true\n    }).updateCovers(getCoverInfoList(axisModel));\n  },\n  _onBrush: function (coverInfoList, opt) {\n    // Do not cache these object, because the mey be changed.\n    var axisModel = this.axisModel;\n    var axis = axisModel.axis;\n    var intervals = zrUtil.map(coverInfoList, function (coverInfo) {\n      return [axis.coordToData(coverInfo.range[0], true), axis.coordToData(coverInfo.range[1], true)];\n    }); // If realtime is true, action is not dispatched on drag end, because\n    // the drag end emits the same params with the last drag move event,\n    // and may have some delay when using touch pad.\n\n    if (!axisModel.option.realtime === opt.isEnd || opt.removeOnClick) {\n      // jshint ignore:line\n      this.api.dispatchAction({\n        type: 'axisAreaSelect',\n        parallelAxisId: axisModel.id,\n        intervals: intervals\n      });\n    }\n  },\n\n  /**\n   * @override\n   */\n  dispose: function () {\n    this._brushController.dispose();\n  }\n});\n\nfunction fromAxisAreaSelect(axisModel, ecModel, payload) {\n  return payload && payload.type === 'axisAreaSelect' && ecModel.findComponents({\n    mainType: 'parallelAxis',\n    query: payload\n  })[0] === axisModel;\n}\n\nfunction getCoverInfoList(axisModel) {\n  var axis = axisModel.axis;\n  return zrUtil.map(axisModel.activeIntervals, function (interval) {\n    return {\n      brushType: 'lineX',\n      panelId: 'pl',\n      range: [axis.dataToCoord(interval[0], true), axis.dataToCoord(interval[1], true)]\n    };\n  });\n}\n\nfunction getCoordSysModel(axisModel, ecModel) {\n  return ecModel.getComponent('parallel', axisModel.get('parallelIndex'));\n}\n\nvar _default = AxisView;\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar AxisBuilder = require(\"./AxisBuilder\");\n\nvar AxisView = require(\"./AxisView\");\n\nvar axisBuilderAttrs = ['axisLine', 'axisTickLabel', 'axisName'];\nvar selfBuilderAttrs = ['splitLine', 'splitArea'];\n\nvar _default = AxisView.extend({\n  type: 'radiusAxis',\n  axisPointerClass: 'PolarAxisPointer',\n  render: function (radiusAxisModel, ecModel) {\n    this.group.removeAll();\n\n    if (!radiusAxisModel.get('show')) {\n      return;\n    }\n\n    var radiusAxis = radiusAxisModel.axis;\n    var polar = radiusAxis.polar;\n    var angleAxis = polar.getAngleAxis();\n    var ticksCoords = radiusAxis.getTicksCoords();\n    var axisAngle = angleAxis.getExtent()[0];\n    var radiusExtent = radiusAxis.getExtent();\n    var layout = layoutAxis(polar, radiusAxisModel, axisAngle);\n    var axisBuilder = new AxisBuilder(radiusAxisModel, layout);\n    zrUtil.each(axisBuilderAttrs, axisBuilder.add, axisBuilder);\n    this.group.add(axisBuilder.getGroup());\n    zrUtil.each(selfBuilderAttrs, function (name) {\n      if (radiusAxisModel.get(name + '.show') && !radiusAxis.scale.isBlank()) {\n        this['_' + name](radiusAxisModel, polar, axisAngle, radiusExtent, ticksCoords);\n      }\n    }, this);\n  },\n\n  /**\n   * @private\n   */\n  _splitLine: function (radiusAxisModel, polar, axisAngle, radiusExtent, ticksCoords) {\n    var splitLineModel = radiusAxisModel.getModel('splitLine');\n    var lineStyleModel = splitLineModel.getModel('lineStyle');\n    var lineColors = lineStyleModel.get('color');\n    var lineCount = 0;\n    lineColors = lineColors instanceof Array ? lineColors : [lineColors];\n    var splitLines = [];\n\n    for (var i = 0; i < ticksCoords.length; i++) {\n      var colorIndex = lineCount++ % lineColors.length;\n      splitLines[colorIndex] = splitLines[colorIndex] || [];\n      splitLines[colorIndex].push(new graphic.Circle({\n        shape: {\n          cx: polar.cx,\n          cy: polar.cy,\n          r: ticksCoords[i]\n        },\n        silent: true\n      }));\n    } // Simple optimization\n    // Batching the lines if color are the same\n\n\n    for (var i = 0; i < splitLines.length; i++) {\n      this.group.add(graphic.mergePath(splitLines[i], {\n        style: zrUtil.defaults({\n          stroke: lineColors[i % lineColors.length],\n          fill: null\n        }, lineStyleModel.getLineStyle()),\n        silent: true\n      }));\n    }\n  },\n\n  /**\n   * @private\n   */\n  _splitArea: function (radiusAxisModel, polar, axisAngle, radiusExtent, ticksCoords) {\n    var splitAreaModel = radiusAxisModel.getModel('splitArea');\n    var areaStyleModel = splitAreaModel.getModel('areaStyle');\n    var areaColors = areaStyleModel.get('color');\n    var lineCount = 0;\n    areaColors = areaColors instanceof Array ? areaColors : [areaColors];\n    var splitAreas = [];\n    var prevRadius = ticksCoords[0];\n\n    for (var i = 1; i < ticksCoords.length; i++) {\n      var colorIndex = lineCount++ % areaColors.length;\n      splitAreas[colorIndex] = splitAreas[colorIndex] || [];\n      splitAreas[colorIndex].push(new graphic.Sector({\n        shape: {\n          cx: polar.cx,\n          cy: polar.cy,\n          r0: prevRadius,\n          r: ticksCoords[i],\n          startAngle: 0,\n          endAngle: Math.PI * 2\n        },\n        silent: true\n      }));\n      prevRadius = ticksCoords[i];\n    } // Simple optimization\n    // Batching the lines if color are the same\n\n\n    for (var i = 0; i < splitAreas.length; i++) {\n      this.group.add(graphic.mergePath(splitAreas[i], {\n        style: zrUtil.defaults({\n          fill: areaColors[i % areaColors.length]\n        }, areaStyleModel.getAreaStyle()),\n        silent: true\n      }));\n    }\n  }\n});\n/**\n * @inner\n */\n\n\nfunction layoutAxis(polar, radiusAxisModel, axisAngle) {\n  return {\n    position: [polar.cx, polar.cy],\n    rotation: axisAngle / 180 * Math.PI,\n    labelDirection: -1,\n    tickDirection: -1,\n    nameDirection: 1,\n    labelRotate: radiusAxisModel.getModel('axisLabel').get('rotate'),\n    // Over splitLine and splitArea\n    z2: 1\n  };\n}\n\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar AxisBuilder = require(\"./AxisBuilder\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar singleAxisHelper = require(\"./singleAxisHelper\");\n\nvar AxisView = require(\"./AxisView\");\n\nvar getInterval = AxisBuilder.getInterval;\nvar ifIgnoreOnTick = AxisBuilder.ifIgnoreOnTick;\nvar axisBuilderAttrs = ['axisLine', 'axisTickLabel', 'axisName'];\nvar selfBuilderAttr = 'splitLine';\nvar SingleAxisView = AxisView.extend({\n  type: 'singleAxis',\n  axisPointerClass: 'SingleAxisPointer',\n  render: function (axisModel, ecModel, api, payload) {\n    var group = this.group;\n    group.removeAll();\n    var layout = singleAxisHelper.layout(axisModel);\n    var axisBuilder = new AxisBuilder(axisModel, layout);\n    zrUtil.each(axisBuilderAttrs, axisBuilder.add, axisBuilder);\n    group.add(axisBuilder.getGroup());\n\n    if (axisModel.get(selfBuilderAttr + '.show')) {\n      this['_' + selfBuilderAttr](axisModel, layout.labelInterval);\n    }\n\n    SingleAxisView.superCall(this, 'render', axisModel, ecModel, api, payload);\n  },\n  _splitLine: function (axisModel, labelInterval) {\n    var axis = axisModel.axis;\n\n    if (axis.scale.isBlank()) {\n      return;\n    }\n\n    var splitLineModel = axisModel.getModel('splitLine');\n    var lineStyleModel = splitLineModel.getModel('lineStyle');\n    var lineWidth = lineStyleModel.get('width');\n    var lineColors = lineStyleModel.get('color');\n    var lineInterval = getInterval(splitLineModel, labelInterval);\n    lineColors = lineColors instanceof Array ? lineColors : [lineColors];\n    var gridRect = axisModel.coordinateSystem.getRect();\n    var isHorizontal = axis.isHorizontal();\n    var splitLines = [];\n    var lineCount = 0;\n    var ticksCoords = axis.getTicksCoords();\n    var p1 = [];\n    var p2 = [];\n    var showMinLabel = axisModel.get('axisLabel.showMinLabel');\n    var showMaxLabel = axisModel.get('axisLabel.showMaxLabel');\n\n    for (var i = 0; i < ticksCoords.length; ++i) {\n      if (ifIgnoreOnTick(axis, i, lineInterval, ticksCoords.length, showMinLabel, showMaxLabel)) {\n        continue;\n      }\n\n      var tickCoord = axis.toGlobalCoord(ticksCoords[i]);\n\n      if (isHorizontal) {\n        p1[0] = tickCoord;\n        p1[1] = gridRect.y;\n        p2[0] = tickCoord;\n        p2[1] = gridRect.y + gridRect.height;\n      } else {\n        p1[0] = gridRect.x;\n        p1[1] = tickCoord;\n        p2[0] = gridRect.x + gridRect.width;\n        p2[1] = tickCoord;\n      }\n\n      var colorIndex = lineCount++ % lineColors.length;\n      splitLines[colorIndex] = splitLines[colorIndex] || [];\n      splitLines[colorIndex].push(new graphic.Line(graphic.subPixelOptimizeLine({\n        shape: {\n          x1: p1[0],\n          y1: p1[1],\n          x2: p2[0],\n          y2: p2[1]\n        },\n        style: {\n          lineWidth: lineWidth\n        },\n        silent: true\n      })));\n    }\n\n    for (var i = 0; i < splitLines.length; ++i) {\n      this.group.add(graphic.mergePath(splitLines[i], {\n        style: {\n          stroke: lineColors[i % lineColors.length],\n          lineDash: lineStyleModel.getLineDash(lineWidth),\n          lineWidth: lineWidth\n        },\n        silent: true\n      }));\n    }\n  }\n});\nvar _default = SingleAxisView;\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\n/**\n * @param {Object} opt {labelInside}\n * @return {Object} {\n *  position, rotation, labelDirection, labelOffset,\n *  tickDirection, labelRotate, labelInterval, z2\n * }\n */\nfunction layout(gridModel, axisModel, opt) {\n  opt = opt || {};\n  var grid = gridModel.coordinateSystem;\n  var axis = axisModel.axis;\n  var layout = {};\n  var rawAxisPosition = axis.position;\n  var axisPosition = axis.onZero ? 'onZero' : rawAxisPosition;\n  var axisDim = axis.dim;\n  var rect = grid.getRect();\n  var rectBound = [rect.x, rect.x + rect.width, rect.y, rect.y + rect.height];\n  var idx = {\n    left: 0,\n    right: 1,\n    top: 0,\n    bottom: 1,\n    onZero: 2\n  };\n  var axisOffset = axisModel.get('offset') || 0;\n  var posBound = axisDim === 'x' ? [rectBound[2] - axisOffset, rectBound[3] + axisOffset] : [rectBound[0] - axisOffset, rectBound[1] + axisOffset];\n\n  if (axis.onZero) {\n    var otherAxis = grid.getAxis(axisDim === 'x' ? 'y' : 'x', axis.onZeroAxisIndex);\n    var onZeroCoord = otherAxis.toGlobalCoord(otherAxis.dataToCoord(0));\n    posBound[idx['onZero']] = Math.max(Math.min(onZeroCoord, posBound[1]), posBound[0]);\n  } // Axis position\n\n\n  layout.position = [axisDim === 'y' ? posBound[idx[axisPosition]] : rectBound[0], axisDim === 'x' ? posBound[idx[axisPosition]] : rectBound[3]]; // Axis rotation\n\n  layout.rotation = Math.PI / 2 * (axisDim === 'x' ? 0 : 1); // Tick and label direction, x y is axisDim\n\n  var dirMap = {\n    top: -1,\n    bottom: 1,\n    left: -1,\n    right: 1\n  };\n  layout.labelDirection = layout.tickDirection = layout.nameDirection = dirMap[rawAxisPosition];\n  layout.labelOffset = axis.onZero ? posBound[idx[rawAxisPosition]] - posBound[idx['onZero']] : 0;\n\n  if (axisModel.get('axisTick.inside')) {\n    layout.tickDirection = -layout.tickDirection;\n  }\n\n  if (zrUtil.retrieve(opt.labelInside, axisModel.get('axisLabel.inside'))) {\n    layout.labelDirection = -layout.labelDirection;\n  } // Special label rotation\n\n\n  var labelRotate = axisModel.get('axisLabel.rotate');\n  layout.labelRotate = axisPosition === 'top' ? -labelRotate : labelRotate; // label interval when auto mode.\n\n  layout.labelInterval = axis.getLabelInterval(); // Over splitLine and splitArea\n\n  layout.z2 = 1;\n  return layout;\n}\n\nexports.layout = layout;","var echarts = require(\"../../echarts\");\n\n/**\n * @payload\n * @property {string} parallelAxisId\n * @property {Array.<Array.<number>>} intervals\n */\nvar actionInfo = {\n  type: 'axisAreaSelect',\n  event: 'axisAreaSelected' // update: 'updateVisual'\n\n};\necharts.registerAction(actionInfo, function (payload, ecModel) {\n  ecModel.eachComponent({\n    mainType: 'parallelAxis',\n    query: payload\n  }, function (parallelAxisModel) {\n    parallelAxisModel.axis.model.setActiveIntervals(payload.intervals);\n  });\n});\n/**\n * @payload\n */\n\necharts.registerAction('parallelAxisExpand', function (payload, ecModel) {\n  ecModel.eachComponent({\n    mainType: 'parallel',\n    query: payload\n  }, function (parallelModel) {\n    parallelModel.setAxisExpand(payload);\n  });\n});","var zrUtil = require(\"zrender/lib/core/util\");\n\n/**\n * @param {Object} opt {labelInside}\n * @return {Object} {\n *  position, rotation, labelDirection, labelOffset,\n *  tickDirection, labelRotate, labelInterval, z2\n * }\n */\nfunction layout(axisModel, opt) {\n  opt = opt || {};\n  var single = axisModel.coordinateSystem;\n  var axis = axisModel.axis;\n  var layout = {};\n  var axisPosition = axis.position;\n  var orient = axis.orient;\n  var rect = single.getRect();\n  var rectBound = [rect.x, rect.x + rect.width, rect.y, rect.y + rect.height];\n  var positionMap = {\n    horizontal: {\n      top: rectBound[2],\n      bottom: rectBound[3]\n    },\n    vertical: {\n      left: rectBound[0],\n      right: rectBound[1]\n    }\n  };\n  layout.position = [orient === 'vertical' ? positionMap.vertical[axisPosition] : rectBound[0], orient === 'horizontal' ? positionMap.horizontal[axisPosition] : rectBound[3]];\n  var r = {\n    horizontal: 0,\n    vertical: 1\n  };\n  layout.rotation = Math.PI / 2 * r[orient];\n  var directionMap = {\n    top: -1,\n    bottom: 1,\n    right: 1,\n    left: -1\n  };\n  layout.labelDirection = layout.tickDirection = layout.nameDirection = directionMap[axisPosition];\n\n  if (axisModel.get('axisTick.inside')) {\n    layout.tickDirection = -layout.tickDirection;\n  }\n\n  if (zrUtil.retrieve(opt.labelInside, axisModel.get('axisLabel.inside'))) {\n    layout.labelDirection = -layout.labelDirection;\n  }\n\n  var labelRotation = opt.rotate;\n  labelRotation == null && (labelRotation = axisModel.get('axisLabel.rotate'));\n  layout.labelRotation = axisPosition === 'top' ? -labelRotation : labelRotation;\n  layout.labelInterval = axis.getLabelInterval();\n  layout.z2 = 1;\n  return layout;\n}\n\nexports.layout = layout;","var echarts = require(\"../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar axisPointerModelHelper = require(\"./axisPointer/modelHelper\");\n\nvar axisTrigger = require(\"./axisPointer/axisTrigger\");\n\nrequire(\"./axisPointer/AxisPointerModel\");\n\nrequire(\"./axisPointer/AxisPointerView\");\n\nrequire(\"./axisPointer/CartesianAxisPointer\");\n\n// CartesianAxisPointer is not supposed to be required here. But consider\n// echarts.simple.js and online build tooltip, which only require gridSimple,\n// CartesianAxisPointer should be able to required somewhere.\necharts.registerPreprocessor(function (option) {\n  // Always has a global axisPointerModel for default setting.\n  if (option) {\n    (!option.axisPointer || option.axisPointer.length === 0) && (option.axisPointer = {});\n    var link = option.axisPointer.link; // Normalize to array to avoid object mergin. But if link\n    // is not set, remain null/undefined, otherwise it will\n    // override existent link setting.\n\n    if (link && !zrUtil.isArray(link)) {\n      option.axisPointer.link = [link];\n    }\n  }\n}); // This process should proformed after coordinate systems created\n// and series data processed. So put it on statistic processing stage.\n\necharts.registerProcessor(echarts.PRIORITY.PROCESSOR.STATISTIC, function (ecModel, api) {\n  // Build axisPointerModel, mergin tooltip.axisPointer model for each axis.\n  // allAxesInfo should be updated when setOption performed.\n  ecModel.getComponent('axisPointer').coordSysAxesInfo = axisPointerModelHelper.collect(ecModel, api);\n}); // Broadcast to all views.\n\necharts.registerAction({\n  type: 'updateAxisPointer',\n  event: 'updateAxisPointer',\n  update: ':updateAxisPointer'\n}, axisTrigger);","var echarts = require(\"../../echarts\");\n\nvar AxisPointerModel = echarts.extendComponentModel({\n  type: 'axisPointer',\n  coordSysAxesInfo: null,\n  defaultOption: {\n    // 'auto' means that show when triggered by tooltip or handle.\n    show: 'auto',\n    // 'click' | 'mousemove' | 'none'\n    triggerOn: null,\n    // set default in AxisPonterView.js\n    zlevel: 0,\n    z: 50,\n    type: 'line',\n    // axispointer triggered by tootip determine snap automatically,\n    // see `modelHelper`.\n    snap: false,\n    triggerTooltip: true,\n    value: null,\n    status: null,\n    // Init value depends on whether handle is used.\n    // [group0, group1, ...]\n    // Each group can be: {\n    //      mapper: function () {},\n    //      singleTooltip: 'multiple',  // 'multiple' or 'single'\n    //      xAxisId: ...,\n    //      yAxisName: ...,\n    //      angleAxisIndex: ...\n    // }\n    // mapper: can be ignored.\n    //      input: {axisInfo, value}\n    //      output: {axisInfo, value}\n    link: [],\n    // Do not set 'auto' here, otherwise global animation: false\n    // will not effect at this axispointer.\n    animation: null,\n    animationDurationUpdate: 200,\n    lineStyle: {\n      color: '#aaa',\n      width: 1,\n      type: 'solid'\n    },\n    shadowStyle: {\n      color: 'rgba(150,150,150,0.3)'\n    },\n    label: {\n      show: true,\n      formatter: null,\n      // string | Function\n      precision: 'auto',\n      // Or a number like 0, 1, 2 ...\n      margin: 3,\n      color: '#fff',\n      padding: [5, 7, 5, 7],\n      backgroundColor: 'auto',\n      // default: axis line color\n      borderColor: null,\n      borderWidth: 0,\n      shadowBlur: 3,\n      shadowColor: '#aaa' // Considering applicability, common style should\n      // better not have shadowOffset.\n      // shadowOffsetX: 0,\n      // shadowOffsetY: 2\n\n    },\n    handle: {\n      show: false,\n      icon: 'M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4h1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7v-1.2h6.6z M13.3,22H6.7v-1.2h6.6z M13.3,19.6H6.7v-1.2h6.6z',\n      // jshint ignore:line\n      size: 45,\n      // handle margin is from symbol center to axis, which is stable when circular move.\n      margin: 50,\n      // color: '#1b8bbd'\n      // color: '#2f4554'\n      color: '#333',\n      shadowBlur: 3,\n      shadowColor: '#aaa',\n      shadowOffsetX: 0,\n      shadowOffsetY: 2,\n      // For mobile performance\n      throttle: 40\n    }\n  }\n});\nvar _default = AxisPointerModel;\nmodule.exports = _default;","var echarts = require(\"../../echarts\");\n\nvar globalListener = require(\"./globalListener\");\n\nvar AxisPointerView = echarts.extendComponentView({\n  type: 'axisPointer',\n  render: function (globalAxisPointerModel, ecModel, api) {\n    var globalTooltipModel = ecModel.getComponent('tooltip');\n    var triggerOn = globalAxisPointerModel.get('triggerOn') || globalTooltipModel && globalTooltipModel.get('triggerOn') || 'mousemove|click'; // Register global listener in AxisPointerView to enable\n    // AxisPointerView to be independent to Tooltip.\n\n    globalListener.register('axisPointer', api, function (currTrigger, e, dispatchAction) {\n      // If 'none', it is not controlled by mouse totally.\n      if (triggerOn !== 'none' && (currTrigger === 'leave' || triggerOn.indexOf(currTrigger) >= 0)) {\n        dispatchAction({\n          type: 'updateAxisPointer',\n          currTrigger: currTrigger,\n          x: e && e.offsetX,\n          y: e && e.offsetY\n        });\n      }\n    });\n  },\n\n  /**\n   * @override\n   */\n  remove: function (ecModel, api) {\n    globalListener.unregister(api.getZr(), 'axisPointer');\n    AxisPointerView.superApply(this._model, 'remove', arguments);\n  },\n\n  /**\n   * @override\n   */\n  dispose: function (ecModel, api) {\n    globalListener.unregister('axisPointer', api);\n    AxisPointerView.superApply(this._model, 'dispose', arguments);\n  }\n});\nvar _default = AxisPointerView;\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar clazzUtil = require(\"../../util/clazz\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar axisPointerModelHelper = require(\"./modelHelper\");\n\nvar eventTool = require(\"zrender/lib/core/event\");\n\nvar throttleUtil = require(\"../../util/throttle\");\n\nvar _model = require(\"../../util/model\");\n\nvar makeInner = _model.makeInner;\nvar inner = makeInner();\nvar clone = zrUtil.clone;\nvar bind = zrUtil.bind;\n/**\n * Base axis pointer class in 2D.\n * Implemenents {module:echarts/component/axis/IAxisPointer}.\n */\n\nfunction BaseAxisPointer() {}\n\nBaseAxisPointer.prototype = {\n  /**\n   * @private\n   */\n  _group: null,\n\n  /**\n   * @private\n   */\n  _lastGraphicKey: null,\n\n  /**\n   * @private\n   */\n  _handle: null,\n\n  /**\n   * @private\n   */\n  _dragging: false,\n\n  /**\n   * @private\n   */\n  _lastValue: null,\n\n  /**\n   * @private\n   */\n  _lastStatus: null,\n\n  /**\n   * @private\n   */\n  _payloadInfo: null,\n\n  /**\n   * In px, arbitrary value. Do not set too small,\n   * no animation is ok for most cases.\n   * @protected\n   */\n  animationThreshold: 15,\n\n  /**\n   * @implement\n   */\n  render: function (axisModel, axisPointerModel, api, forceRender) {\n    var value = axisPointerModel.get('value');\n    var status = axisPointerModel.get('status'); // Bind them to `this`, not in closure, otherwise they will not\n    // be replaced when user calling setOption in not merge mode.\n\n    this._axisModel = axisModel;\n    this._axisPointerModel = axisPointerModel;\n    this._api = api; // Optimize: `render` will be called repeatly during mouse move.\n    // So it is power consuming if performing `render` each time,\n    // especially on mobile device.\n\n    if (!forceRender && this._lastValue === value && this._lastStatus === status) {\n      return;\n    }\n\n    this._lastValue = value;\n    this._lastStatus = status;\n    var group = this._group;\n    var handle = this._handle;\n\n    if (!status || status === 'hide') {\n      // Do not clear here, for animation better.\n      group && group.hide();\n      handle && handle.hide();\n      return;\n    }\n\n    group && group.show();\n    handle && handle.show(); // Otherwise status is 'show'\n\n    var elOption = {};\n    this.makeElOption(elOption, value, axisModel, axisPointerModel, api); // Enable change axis pointer type.\n\n    var graphicKey = elOption.graphicKey;\n\n    if (graphicKey !== this._lastGraphicKey) {\n      this.clear(api);\n    }\n\n    this._lastGraphicKey = graphicKey;\n    var moveAnimation = this._moveAnimation = this.determineAnimation(axisModel, axisPointerModel);\n\n    if (!group) {\n      group = this._group = new graphic.Group();\n      this.createPointerEl(group, elOption, axisModel, axisPointerModel);\n      this.createLabelEl(group, elOption, axisModel, axisPointerModel);\n      api.getZr().add(group);\n    } else {\n      var doUpdateProps = zrUtil.curry(updateProps, axisPointerModel, moveAnimation);\n      this.updatePointerEl(group, elOption, doUpdateProps, axisPointerModel);\n      this.updateLabelEl(group, elOption, doUpdateProps, axisPointerModel);\n    }\n\n    updateMandatoryProps(group, axisPointerModel, true);\n\n    this._renderHandle(value);\n  },\n\n  /**\n   * @implement\n   */\n  remove: function (api) {\n    this.clear(api);\n  },\n\n  /**\n   * @implement\n   */\n  dispose: function (api) {\n    this.clear(api);\n  },\n\n  /**\n   * @protected\n   */\n  determineAnimation: function (axisModel, axisPointerModel) {\n    var animation = axisPointerModel.get('animation');\n    var axis = axisModel.axis;\n    var isCategoryAxis = axis.type === 'category';\n    var useSnap = axisPointerModel.get('snap'); // Value axis without snap always do not snap.\n\n    if (!useSnap && !isCategoryAxis) {\n      return false;\n    }\n\n    if (animation === 'auto' || animation == null) {\n      var animationThreshold = this.animationThreshold;\n\n      if (isCategoryAxis && axis.getBandWidth() > animationThreshold) {\n        return true;\n      } // It is important to auto animation when snap used. Consider if there is\n      // a dataZoom, animation will be disabled when too many points exist, while\n      // it will be enabled for better visual effect when little points exist.\n\n\n      if (useSnap) {\n        var seriesDataCount = axisPointerModelHelper.getAxisInfo(axisModel).seriesDataCount;\n        var axisExtent = axis.getExtent(); // Approximate band width\n\n        return Math.abs(axisExtent[0] - axisExtent[1]) / seriesDataCount > animationThreshold;\n      }\n\n      return false;\n    }\n\n    return animation === true;\n  },\n\n  /**\n   * add {pointer, label, graphicKey} to elOption\n   * @protected\n   */\n  makeElOption: function (elOption, value, axisModel, axisPointerModel, api) {// Shoule be implemenented by sub-class.\n  },\n\n  /**\n   * @protected\n   */\n  createPointerEl: function (group, elOption, axisModel, axisPointerModel) {\n    var pointerOption = elOption.pointer;\n\n    if (pointerOption) {\n      var pointerEl = inner(group).pointerEl = new graphic[pointerOption.type](clone(elOption.pointer));\n      group.add(pointerEl);\n    }\n  },\n\n  /**\n   * @protected\n   */\n  createLabelEl: function (group, elOption, axisModel, axisPointerModel) {\n    if (elOption.label) {\n      var labelEl = inner(group).labelEl = new graphic.Rect(clone(elOption.label));\n      group.add(labelEl);\n      updateLabelShowHide(labelEl, axisPointerModel);\n    }\n  },\n\n  /**\n   * @protected\n   */\n  updatePointerEl: function (group, elOption, updateProps) {\n    var pointerEl = inner(group).pointerEl;\n\n    if (pointerEl) {\n      pointerEl.setStyle(elOption.pointer.style);\n      updateProps(pointerEl, {\n        shape: elOption.pointer.shape\n      });\n    }\n  },\n\n  /**\n   * @protected\n   */\n  updateLabelEl: function (group, elOption, updateProps, axisPointerModel) {\n    var labelEl = inner(group).labelEl;\n\n    if (labelEl) {\n      labelEl.setStyle(elOption.label.style);\n      updateProps(labelEl, {\n        // Consider text length change in vertical axis, animation should\n        // be used on shape, otherwise the effect will be weird.\n        shape: elOption.label.shape,\n        position: elOption.label.position\n      });\n      updateLabelShowHide(labelEl, axisPointerModel);\n    }\n  },\n\n  /**\n   * @private\n   */\n  _renderHandle: function (value) {\n    if (this._dragging || !this.updateHandleTransform) {\n      return;\n    }\n\n    var axisPointerModel = this._axisPointerModel;\n\n    var zr = this._api.getZr();\n\n    var handle = this._handle;\n    var handleModel = axisPointerModel.getModel('handle');\n    var status = axisPointerModel.get('status');\n\n    if (!handleModel.get('show') || !status || status === 'hide') {\n      handle && zr.remove(handle);\n      this._handle = null;\n      return;\n    }\n\n    var isInit;\n\n    if (!this._handle) {\n      isInit = true;\n      handle = this._handle = graphic.createIcon(handleModel.get('icon'), {\n        cursor: 'move',\n        draggable: true,\n        onmousemove: function (e) {\n          // Fot mobile devicem, prevent screen slider on the button.\n          eventTool.stop(e.event);\n        },\n        onmousedown: bind(this._onHandleDragMove, this, 0, 0),\n        drift: bind(this._onHandleDragMove, this),\n        ondragend: bind(this._onHandleDragEnd, this)\n      });\n      zr.add(handle);\n    }\n\n    updateMandatoryProps(handle, axisPointerModel, false); // update style\n\n    var includeStyles = ['color', 'borderColor', 'borderWidth', 'opacity', 'shadowColor', 'shadowBlur', 'shadowOffsetX', 'shadowOffsetY'];\n    handle.setStyle(handleModel.getItemStyle(null, includeStyles)); // update position\n\n    var handleSize = handleModel.get('size');\n\n    if (!zrUtil.isArray(handleSize)) {\n      handleSize = [handleSize, handleSize];\n    }\n\n    handle.attr('scale', [handleSize[0] / 2, handleSize[1] / 2]);\n    throttleUtil.createOrUpdate(this, '_doDispatchAxisPointer', handleModel.get('throttle') || 0, 'fixRate');\n\n    this._moveHandleToValue(value, isInit);\n  },\n\n  /**\n   * @private\n   */\n  _moveHandleToValue: function (value, isInit) {\n    updateProps(this._axisPointerModel, !isInit && this._moveAnimation, this._handle, getHandleTransProps(this.getHandleTransform(value, this._axisModel, this._axisPointerModel)));\n  },\n\n  /**\n   * @private\n   */\n  _onHandleDragMove: function (dx, dy) {\n    var handle = this._handle;\n\n    if (!handle) {\n      return;\n    }\n\n    this._dragging = true; // Persistent for throttle.\n\n    var trans = this.updateHandleTransform(getHandleTransProps(handle), [dx, dy], this._axisModel, this._axisPointerModel);\n    this._payloadInfo = trans;\n    handle.stopAnimation();\n    handle.attr(getHandleTransProps(trans));\n    inner(handle).lastProp = null;\n\n    this._doDispatchAxisPointer();\n  },\n\n  /**\n   * Throttled method.\n   * @private\n   */\n  _doDispatchAxisPointer: function () {\n    var handle = this._handle;\n\n    if (!handle) {\n      return;\n    }\n\n    var payloadInfo = this._payloadInfo;\n    var axisModel = this._axisModel;\n\n    this._api.dispatchAction({\n      type: 'updateAxisPointer',\n      x: payloadInfo.cursorPoint[0],\n      y: payloadInfo.cursorPoint[1],\n      tooltipOption: payloadInfo.tooltipOption,\n      axesInfo: [{\n        axisDim: axisModel.axis.dim,\n        axisIndex: axisModel.componentIndex\n      }]\n    });\n  },\n\n  /**\n   * @private\n   */\n  _onHandleDragEnd: function (moveAnimation) {\n    this._dragging = false;\n    var handle = this._handle;\n\n    if (!handle) {\n      return;\n    }\n\n    var value = this._axisPointerModel.get('value'); // Consider snap or categroy axis, handle may be not consistent with\n    // axisPointer. So move handle to align the exact value position when\n    // drag ended.\n\n\n    this._moveHandleToValue(value); // For the effect: tooltip will be shown when finger holding on handle\n    // button, and will be hidden after finger left handle button.\n\n\n    this._api.dispatchAction({\n      type: 'hideTip'\n    });\n  },\n\n  /**\n   * Should be implemenented by sub-class if support `handle`.\n   * @protected\n   * @param {number} value\n   * @param {module:echarts/model/Model} axisModel\n   * @param {module:echarts/model/Model} axisPointerModel\n   * @return {Object} {position: [x, y], rotation: 0}\n   */\n  getHandleTransform: null,\n\n  /**\n   * * Should be implemenented by sub-class if support `handle`.\n   * @protected\n   * @param {Object} transform {position, rotation}\n   * @param {Array.<number>} delta [dx, dy]\n   * @param {module:echarts/model/Model} axisModel\n   * @param {module:echarts/model/Model} axisPointerModel\n   * @return {Object} {position: [x, y], rotation: 0, cursorPoint: [x, y]}\n   */\n  updateHandleTransform: null,\n\n  /**\n   * @private\n   */\n  clear: function (api) {\n    this._lastValue = null;\n    this._lastStatus = null;\n    var zr = api.getZr();\n    var group = this._group;\n    var handle = this._handle;\n\n    if (zr && group) {\n      this._lastGraphicKey = null;\n      group && zr.remove(group);\n      handle && zr.remove(handle);\n      this._group = null;\n      this._handle = null;\n      this._payloadInfo = null;\n    }\n  },\n\n  /**\n   * @protected\n   */\n  doClear: function () {// Implemented by sub-class if necessary.\n  },\n\n  /**\n   * @protected\n   * @param {Array.<number>} xy\n   * @param {Array.<number>} wh\n   * @param {number} [xDimIndex=0] or 1\n   */\n  buildLabel: function (xy, wh, xDimIndex) {\n    xDimIndex = xDimIndex || 0;\n    return {\n      x: xy[xDimIndex],\n      y: xy[1 - xDimIndex],\n      width: wh[xDimIndex],\n      height: wh[1 - xDimIndex]\n    };\n  }\n};\nBaseAxisPointer.prototype.constructor = BaseAxisPointer;\n\nfunction updateProps(animationModel, moveAnimation, el, props) {\n  // Animation optimize.\n  if (!propsEqual(inner(el).lastProp, props)) {\n    inner(el).lastProp = props;\n    moveAnimation ? graphic.updateProps(el, props, animationModel) : (el.stopAnimation(), el.attr(props));\n  }\n}\n\nfunction propsEqual(lastProps, newProps) {\n  if (zrUtil.isObject(lastProps) && zrUtil.isObject(newProps)) {\n    var equals = true;\n    zrUtil.each(newProps, function (item, key) {\n      equals = equals && propsEqual(lastProps[key], item);\n    });\n    return !!equals;\n  } else {\n    return lastProps === newProps;\n  }\n}\n\nfunction updateLabelShowHide(labelEl, axisPointerModel) {\n  labelEl[axisPointerModel.get('label.show') ? 'show' : 'hide']();\n}\n\nfunction getHandleTransProps(trans) {\n  return {\n    position: trans.position.slice(),\n    rotation: trans.rotation || 0\n  };\n}\n\nfunction updateMandatoryProps(group, axisPointerModel, silent) {\n  var z = axisPointerModel.get('z');\n  var zlevel = axisPointerModel.get('zlevel');\n  group && group.traverse(function (el) {\n    if (el.type !== 'group') {\n      z != null && (el.z = z);\n      zlevel != null && (el.zlevel = zlevel);\n      el.silent = silent;\n    }\n  });\n}\n\nclazzUtil.enableClassExtend(BaseAxisPointer);\nvar _default = BaseAxisPointer;\nmodule.exports = _default;","var graphic = require(\"../../util/graphic\");\n\nvar BaseAxisPointer = require(\"./BaseAxisPointer\");\n\nvar viewHelper = require(\"./viewHelper\");\n\nvar cartesianAxisHelper = require(\"../axis/cartesianAxisHelper\");\n\nvar AxisView = require(\"../axis/AxisView\");\n\nvar CartesianAxisPointer = BaseAxisPointer.extend({\n  /**\n   * @override\n   */\n  makeElOption: function (elOption, value, axisModel, axisPointerModel, api) {\n    var axis = axisModel.axis;\n    var grid = axis.grid;\n    var axisPointerType = axisPointerModel.get('type');\n    var otherExtent = getCartesian(grid, axis).getOtherAxis(axis).getGlobalExtent();\n    var pixelValue = axis.toGlobalCoord(axis.dataToCoord(value, true));\n\n    if (axisPointerType && axisPointerType !== 'none') {\n      var elStyle = viewHelper.buildElStyle(axisPointerModel);\n      var pointerOption = pointerShapeBuilder[axisPointerType](axis, pixelValue, otherExtent, elStyle);\n      pointerOption.style = elStyle;\n      elOption.graphicKey = pointerOption.type;\n      elOption.pointer = pointerOption;\n    }\n\n    var layoutInfo = cartesianAxisHelper.layout(grid.model, axisModel);\n    viewHelper.buildCartesianSingleLabelElOption(value, elOption, layoutInfo, axisModel, axisPointerModel, api);\n  },\n\n  /**\n   * @override\n   */\n  getHandleTransform: function (value, axisModel, axisPointerModel) {\n    var layoutInfo = cartesianAxisHelper.layout(axisModel.axis.grid.model, axisModel, {\n      labelInside: false\n    });\n    layoutInfo.labelMargin = axisPointerModel.get('handle.margin');\n    return {\n      position: viewHelper.getTransformedPosition(axisModel.axis, value, layoutInfo),\n      rotation: layoutInfo.rotation + (layoutInfo.labelDirection < 0 ? Math.PI : 0)\n    };\n  },\n\n  /**\n   * @override\n   */\n  updateHandleTransform: function (transform, delta, axisModel, axisPointerModel) {\n    var axis = axisModel.axis;\n    var grid = axis.grid;\n    var axisExtent = axis.getGlobalExtent(true);\n    var otherExtent = getCartesian(grid, axis).getOtherAxis(axis).getGlobalExtent();\n    var dimIndex = axis.dim === 'x' ? 0 : 1;\n    var currPosition = transform.position;\n    currPosition[dimIndex] += delta[dimIndex];\n    currPosition[dimIndex] = Math.min(axisExtent[1], currPosition[dimIndex]);\n    currPosition[dimIndex] = Math.max(axisExtent[0], currPosition[dimIndex]);\n    var cursorOtherValue = (otherExtent[1] + otherExtent[0]) / 2;\n    var cursorPoint = [cursorOtherValue, cursorOtherValue];\n    cursorPoint[dimIndex] = currPosition[dimIndex]; // Make tooltip do not overlap axisPointer and in the middle of the grid.\n\n    var tooltipOptions = [{\n      verticalAlign: 'middle'\n    }, {\n      align: 'center'\n    }];\n    return {\n      position: currPosition,\n      rotation: transform.rotation,\n      cursorPoint: cursorPoint,\n      tooltipOption: tooltipOptions[dimIndex]\n    };\n  }\n});\n\nfunction getCartesian(grid, axis) {\n  var opt = {};\n  opt[axis.dim + 'AxisIndex'] = axis.index;\n  return grid.getCartesian(opt);\n}\n\nvar pointerShapeBuilder = {\n  line: function (axis, pixelValue, otherExtent, elStyle) {\n    var targetShape = viewHelper.makeLineShape([pixelValue, otherExtent[0]], [pixelValue, otherExtent[1]], getAxisDimIndex(axis));\n    graphic.subPixelOptimizeLine({\n      shape: targetShape,\n      style: elStyle\n    });\n    return {\n      type: 'Line',\n      shape: targetShape\n    };\n  },\n  shadow: function (axis, pixelValue, otherExtent, elStyle) {\n    var bandWidth = axis.getBandWidth();\n    var span = otherExtent[1] - otherExtent[0];\n    return {\n      type: 'Rect',\n      shape: viewHelper.makeRectShape([pixelValue - bandWidth / 2, otherExtent[0]], [bandWidth, span], getAxisDimIndex(axis))\n    };\n  }\n};\n\nfunction getAxisDimIndex(axis) {\n  return axis.dim === 'x' ? 0 : 1;\n}\n\nAxisView.registerAxisPointerClass('CartesianAxisPointer', CartesianAxisPointer);\nvar _default = CartesianAxisPointer;\nmodule.exports = _default;","var formatUtil = require(\"../../util/format\");\n\nvar BaseAxisPointer = require(\"./BaseAxisPointer\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar viewHelper = require(\"./viewHelper\");\n\nvar matrix = require(\"zrender/lib/core/matrix\");\n\nvar AxisBuilder = require(\"../axis/AxisBuilder\");\n\nvar AxisView = require(\"../axis/AxisView\");\n\nvar PolarAxisPointer = BaseAxisPointer.extend({\n  /**\n   * @override\n   */\n  makeElOption: function (elOption, value, axisModel, axisPointerModel, api) {\n    var axis = axisModel.axis;\n\n    if (axis.dim === 'angle') {\n      this.animationThreshold = Math.PI / 18;\n    }\n\n    var polar = axis.polar;\n    var otherAxis = polar.getOtherAxis(axis);\n    var otherExtent = otherAxis.getExtent();\n    var coordValue;\n    coordValue = axis['dataTo' + formatUtil.capitalFirst(axis.dim)](value);\n    var axisPointerType = axisPointerModel.get('type');\n\n    if (axisPointerType && axisPointerType !== 'none') {\n      var elStyle = viewHelper.buildElStyle(axisPointerModel);\n      var pointerOption = pointerShapeBuilder[axisPointerType](axis, polar, coordValue, otherExtent, elStyle);\n      pointerOption.style = elStyle;\n      elOption.graphicKey = pointerOption.type;\n      elOption.pointer = pointerOption;\n    }\n\n    var labelMargin = axisPointerModel.get('label.margin');\n    var labelPos = getLabelPosition(value, axisModel, axisPointerModel, polar, labelMargin);\n    viewHelper.buildLabelElOption(elOption, axisModel, axisPointerModel, api, labelPos);\n  } // Do not support handle, utill any user requires it.\n\n});\n\nfunction getLabelPosition(value, axisModel, axisPointerModel, polar, labelMargin) {\n  var axis = axisModel.axis;\n  var coord = axis.dataToCoord(value);\n  var axisAngle = polar.getAngleAxis().getExtent()[0];\n  axisAngle = axisAngle / 180 * Math.PI;\n  var radiusExtent = polar.getRadiusAxis().getExtent();\n  var position;\n  var align;\n  var verticalAlign;\n\n  if (axis.dim === 'radius') {\n    var transform = matrix.create();\n    matrix.rotate(transform, transform, axisAngle);\n    matrix.translate(transform, transform, [polar.cx, polar.cy]);\n    position = graphic.applyTransform([coord, -labelMargin], transform);\n    var labelRotation = axisModel.getModel('axisLabel').get('rotate') || 0;\n    var labelLayout = AxisBuilder.innerTextLayout(axisAngle, labelRotation * Math.PI / 180, -1);\n    align = labelLayout.textAlign;\n    verticalAlign = labelLayout.textVerticalAlign;\n  } else {\n    // angle axis\n    var r = radiusExtent[1];\n    position = polar.coordToPoint([r + labelMargin, coord]);\n    var cx = polar.cx;\n    var cy = polar.cy;\n    align = Math.abs(position[0] - cx) / r < 0.3 ? 'center' : position[0] > cx ? 'left' : 'right';\n    verticalAlign = Math.abs(position[1] - cy) / r < 0.3 ? 'middle' : position[1] > cy ? 'top' : 'bottom';\n  }\n\n  return {\n    position: position,\n    align: align,\n    verticalAlign: verticalAlign\n  };\n}\n\nvar pointerShapeBuilder = {\n  line: function (axis, polar, coordValue, otherExtent, elStyle) {\n    return axis.dim === 'angle' ? {\n      type: 'Line',\n      shape: viewHelper.makeLineShape(polar.coordToPoint([otherExtent[0], coordValue]), polar.coordToPoint([otherExtent[1], coordValue]))\n    } : {\n      type: 'Circle',\n      shape: {\n        cx: polar.cx,\n        cy: polar.cy,\n        r: coordValue\n      }\n    };\n  },\n  shadow: function (axis, polar, coordValue, otherExtent, elStyle) {\n    var bandWidth = axis.getBandWidth();\n    var radian = Math.PI / 180;\n    return axis.dim === 'angle' ? {\n      type: 'Sector',\n      shape: viewHelper.makeSectorShape(polar.cx, polar.cy, otherExtent[0], otherExtent[1], // In ECharts y is negative if angle is positive\n      (-coordValue - bandWidth / 2) * radian, (-coordValue + bandWidth / 2) * radian)\n    } : {\n      type: 'Sector',\n      shape: viewHelper.makeSectorShape(polar.cx, polar.cy, coordValue - bandWidth / 2, coordValue + bandWidth / 2, 0, Math.PI * 2)\n    };\n  }\n};\nAxisView.registerAxisPointerClass('PolarAxisPointer', PolarAxisPointer);\nvar _default = PolarAxisPointer;\nmodule.exports = _default;","var graphic = require(\"../../util/graphic\");\n\nvar BaseAxisPointer = require(\"./BaseAxisPointer\");\n\nvar viewHelper = require(\"./viewHelper\");\n\nvar singleAxisHelper = require(\"../axis/singleAxisHelper\");\n\nvar AxisView = require(\"../axis/AxisView\");\n\nvar XY = ['x', 'y'];\nvar WH = ['width', 'height'];\nvar SingleAxisPointer = BaseAxisPointer.extend({\n  /**\n   * @override\n   */\n  makeElOption: function (elOption, value, axisModel, axisPointerModel, api) {\n    var axis = axisModel.axis;\n    var coordSys = axis.coordinateSystem;\n    var otherExtent = getGlobalExtent(coordSys, 1 - getPointDimIndex(axis));\n    var pixelValue = coordSys.dataToPoint(value)[0];\n    var axisPointerType = axisPointerModel.get('type');\n\n    if (axisPointerType && axisPointerType !== 'none') {\n      var elStyle = viewHelper.buildElStyle(axisPointerModel);\n      var pointerOption = pointerShapeBuilder[axisPointerType](axis, pixelValue, otherExtent, elStyle);\n      pointerOption.style = elStyle;\n      elOption.graphicKey = pointerOption.type;\n      elOption.pointer = pointerOption;\n    }\n\n    var layoutInfo = singleAxisHelper.layout(axisModel);\n    viewHelper.buildCartesianSingleLabelElOption(value, elOption, layoutInfo, axisModel, axisPointerModel, api);\n  },\n\n  /**\n   * @override\n   */\n  getHandleTransform: function (value, axisModel, axisPointerModel) {\n    var layoutInfo = singleAxisHelper.layout(axisModel, {\n      labelInside: false\n    });\n    layoutInfo.labelMargin = axisPointerModel.get('handle.margin');\n    return {\n      position: viewHelper.getTransformedPosition(axisModel.axis, value, layoutInfo),\n      rotation: layoutInfo.rotation + (layoutInfo.labelDirection < 0 ? Math.PI : 0)\n    };\n  },\n\n  /**\n   * @override\n   */\n  updateHandleTransform: function (transform, delta, axisModel, axisPointerModel) {\n    var axis = axisModel.axis;\n    var coordSys = axis.coordinateSystem;\n    var dimIndex = getPointDimIndex(axis);\n    var axisExtent = getGlobalExtent(coordSys, dimIndex);\n    var currPosition = transform.position;\n    currPosition[dimIndex] += delta[dimIndex];\n    currPosition[dimIndex] = Math.min(axisExtent[1], currPosition[dimIndex]);\n    currPosition[dimIndex] = Math.max(axisExtent[0], currPosition[dimIndex]);\n    var otherExtent = getGlobalExtent(coordSys, 1 - dimIndex);\n    var cursorOtherValue = (otherExtent[1] + otherExtent[0]) / 2;\n    var cursorPoint = [cursorOtherValue, cursorOtherValue];\n    cursorPoint[dimIndex] = currPosition[dimIndex];\n    return {\n      position: currPosition,\n      rotation: transform.rotation,\n      cursorPoint: cursorPoint,\n      tooltipOption: {\n        verticalAlign: 'middle'\n      }\n    };\n  }\n});\nvar pointerShapeBuilder = {\n  line: function (axis, pixelValue, otherExtent, elStyle) {\n    var targetShape = viewHelper.makeLineShape([pixelValue, otherExtent[0]], [pixelValue, otherExtent[1]], getPointDimIndex(axis));\n    graphic.subPixelOptimizeLine({\n      shape: targetShape,\n      style: elStyle\n    });\n    return {\n      type: 'Line',\n      shape: targetShape\n    };\n  },\n  shadow: function (axis, pixelValue, otherExtent, elStyle) {\n    var bandWidth = axis.getBandWidth();\n    var span = otherExtent[1] - otherExtent[0];\n    return {\n      type: 'Rect',\n      shape: viewHelper.makeRectShape([pixelValue - bandWidth / 2, otherExtent[0]], [bandWidth, span], getPointDimIndex(axis))\n    };\n  }\n};\n\nfunction getPointDimIndex(axis) {\n  return axis.isHorizontal() ? 0 : 1;\n}\n\nfunction getGlobalExtent(coordSys, dimIndex) {\n  var rect = coordSys.getRect();\n  return [rect[XY[dimIndex]], rect[XY[dimIndex]] + rect[WH[dimIndex]]];\n}\n\nAxisView.registerAxisPointerClass('SingleAxisPointer', SingleAxisPointer);\nvar _default = SingleAxisPointer;\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar _model = require(\"../../util/model\");\n\nvar makeInner = _model.makeInner;\n\nvar modelHelper = require(\"./modelHelper\");\n\nvar findPointFromSeries = require(\"./findPointFromSeries\");\n\nvar each = zrUtil.each;\nvar curry = zrUtil.curry;\nvar inner = makeInner();\n/**\n * Basic logic: check all axis, if they do not demand show/highlight,\n * then hide/downplay them.\n *\n * @param {Object} coordSysAxesInfo\n * @param {Object} payload\n * @param {string} [payload.currTrigger] 'click' | 'mousemove' | 'leave'\n * @param {Array.<number>} [payload.x] x and y, which are mandatory, specify a point to\n *              trigger axisPointer and tooltip.\n * @param {Array.<number>} [payload.y] x and y, which are mandatory, specify a point to\n *              trigger axisPointer and tooltip.\n * @param {Object} [payload.seriesIndex] finder, optional, restrict target axes.\n * @param {Object} [payload.dataIndex] finder, restrict target axes.\n * @param {Object} [payload.axesInfo] finder, restrict target axes.\n *        [{\n *          axisDim: 'x'|'y'|'angle'|...,\n *          axisIndex: ...,\n *          value: ...\n *        }, ...]\n * @param {Function} [payload.dispatchAction]\n * @param {Object} [payload.tooltipOption]\n * @param {Object|Array.<number>|Function} [payload.position] Tooltip position,\n *        which can be specified in dispatchAction\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n * @return {Object} content of event obj for echarts.connect.\n */\n\nfunction _default(payload, ecModel, api) {\n  var currTrigger = payload.currTrigger;\n  var point = [payload.x, payload.y];\n  var finder = payload;\n  var dispatchAction = payload.dispatchAction || zrUtil.bind(api.dispatchAction, api);\n  var coordSysAxesInfo = ecModel.getComponent('axisPointer').coordSysAxesInfo; // Pending\n  // See #6121. But we are not able to reproduce it yet.\n\n  if (!coordSysAxesInfo) {\n    return;\n  }\n\n  if (illegalPoint(point)) {\n    // Used in the default behavior of `connection`: use the sample seriesIndex\n    // and dataIndex. And also used in the tooltipView trigger.\n    point = findPointFromSeries({\n      seriesIndex: finder.seriesIndex,\n      // Do not use dataIndexInside from other ec instance.\n      // FIXME: auto detect it?\n      dataIndex: finder.dataIndex\n    }, ecModel).point;\n  }\n\n  var isIllegalPoint = illegalPoint(point); // Axis and value can be specified when calling dispatchAction({type: 'updateAxisPointer'}).\n  // Notice: In this case, it is difficult to get the `point` (which is necessary to show\n  // tooltip, so if point is not given, we just use the point found by sample seriesIndex\n  // and dataIndex.\n\n  var inputAxesInfo = finder.axesInfo;\n  var axesInfo = coordSysAxesInfo.axesInfo;\n  var shouldHide = currTrigger === 'leave' || illegalPoint(point);\n  var outputFinder = {};\n  var showValueMap = {};\n  var dataByCoordSys = {\n    list: [],\n    map: {}\n  };\n  var updaters = {\n    showPointer: curry(showPointer, showValueMap),\n    showTooltip: curry(showTooltip, dataByCoordSys)\n  }; // Process for triggered axes.\n\n  each(coordSysAxesInfo.coordSysMap, function (coordSys, coordSysKey) {\n    // If a point given, it must be contained by the coordinate system.\n    var coordSysContainsPoint = isIllegalPoint || coordSys.containPoint(point);\n    each(coordSysAxesInfo.coordSysAxesInfo[coordSysKey], function (axisInfo, key) {\n      var axis = axisInfo.axis;\n      var inputAxisInfo = findInputAxisInfo(inputAxesInfo, axisInfo); // If no inputAxesInfo, no axis is restricted.\n\n      if (!shouldHide && coordSysContainsPoint && (!inputAxesInfo || inputAxisInfo)) {\n        var val = inputAxisInfo && inputAxisInfo.value;\n\n        if (val == null && !isIllegalPoint) {\n          val = axis.pointToData(point);\n        }\n\n        val != null && processOnAxis(axisInfo, val, updaters, false, outputFinder);\n      }\n    });\n  }); // Process for linked axes.\n\n  var linkTriggers = {};\n  each(axesInfo, function (tarAxisInfo, tarKey) {\n    var linkGroup = tarAxisInfo.linkGroup; // If axis has been triggered in the previous stage, it should not be triggered by link.\n\n    if (linkGroup && !showValueMap[tarKey]) {\n      each(linkGroup.axesInfo, function (srcAxisInfo, srcKey) {\n        var srcValItem = showValueMap[srcKey]; // If srcValItem exist, source axis is triggered, so link to target axis.\n\n        if (srcAxisInfo !== tarAxisInfo && srcValItem) {\n          var val = srcValItem.value;\n          linkGroup.mapper && (val = tarAxisInfo.axis.scale.parse(linkGroup.mapper(val, makeMapperParam(srcAxisInfo), makeMapperParam(tarAxisInfo))));\n          linkTriggers[tarAxisInfo.key] = val;\n        }\n      });\n    }\n  });\n  each(linkTriggers, function (val, tarKey) {\n    processOnAxis(axesInfo[tarKey], val, updaters, true, outputFinder);\n  });\n  updateModelActually(showValueMap, axesInfo, outputFinder);\n  dispatchTooltipActually(dataByCoordSys, point, payload, dispatchAction);\n  dispatchHighDownActually(axesInfo, dispatchAction, api);\n  return outputFinder;\n}\n\nfunction processOnAxis(axisInfo, newValue, updaters, dontSnap, outputFinder) {\n  var axis = axisInfo.axis;\n\n  if (axis.scale.isBlank() || !axis.containData(newValue)) {\n    return;\n  }\n\n  if (!axisInfo.involveSeries) {\n    updaters.showPointer(axisInfo, newValue);\n    return;\n  } // Heavy calculation. So put it after axis.containData checking.\n\n\n  var payloadInfo = buildPayloadsBySeries(newValue, axisInfo);\n  var payloadBatch = payloadInfo.payloadBatch;\n  var snapToValue = payloadInfo.snapToValue; // Fill content of event obj for echarts.connect.\n  // By defualt use the first involved series data as a sample to connect.\n\n  if (payloadBatch[0] && outputFinder.seriesIndex == null) {\n    zrUtil.extend(outputFinder, payloadBatch[0]);\n  } // If no linkSource input, this process is for collecting link\n  // target, where snap should not be accepted.\n\n\n  if (!dontSnap && axisInfo.snap) {\n    if (axis.containData(snapToValue) && snapToValue != null) {\n      newValue = snapToValue;\n    }\n  }\n\n  updaters.showPointer(axisInfo, newValue, payloadBatch, outputFinder); // Tooltip should always be snapToValue, otherwise there will be\n  // incorrect \"axis value ~ series value\" mapping displayed in tooltip.\n\n  updaters.showTooltip(axisInfo, payloadInfo, snapToValue);\n}\n\nfunction buildPayloadsBySeries(value, axisInfo) {\n  var axis = axisInfo.axis;\n  var dim = axis.dim;\n  var snapToValue = value;\n  var payloadBatch = [];\n  var minDist = Number.MAX_VALUE;\n  var minDiff = -1;\n  each(axisInfo.seriesModels, function (series, idx) {\n    var dataDim = series.getData().mapDimension(dim, true);\n    var seriesNestestValue;\n    var dataIndices;\n\n    if (series.getAxisTooltipData) {\n      var result = series.getAxisTooltipData(dataDim, value, axis);\n      dataIndices = result.dataIndices;\n      seriesNestestValue = result.nestestValue;\n    } else {\n      dataIndices = series.getData().indicesOfNearest(dataDim[0], value, // Add a threshold to avoid find the wrong dataIndex\n      // when data length is not same.\n      false, axis.type === 'category' ? 0.5 : null);\n\n      if (!dataIndices.length) {\n        return;\n      }\n\n      seriesNestestValue = series.getData().get(dataDim[0], dataIndices[0]);\n    }\n\n    if (seriesNestestValue == null || !isFinite(seriesNestestValue)) {\n      return;\n    }\n\n    var diff = value - seriesNestestValue;\n    var dist = Math.abs(diff); // Consider category case\n\n    if (dist <= minDist) {\n      if (dist < minDist || diff >= 0 && minDiff < 0) {\n        minDist = dist;\n        minDiff = diff;\n        snapToValue = seriesNestestValue;\n        payloadBatch.length = 0;\n      }\n\n      each(dataIndices, function (dataIndex) {\n        payloadBatch.push({\n          seriesIndex: series.seriesIndex,\n          dataIndexInside: dataIndex,\n          dataIndex: series.getData().getRawIndex(dataIndex)\n        });\n      });\n    }\n  });\n  return {\n    payloadBatch: payloadBatch,\n    snapToValue: snapToValue\n  };\n}\n\nfunction showPointer(showValueMap, axisInfo, value, payloadBatch) {\n  showValueMap[axisInfo.key] = {\n    value: value,\n    payloadBatch: payloadBatch\n  };\n}\n\nfunction showTooltip(dataByCoordSys, axisInfo, payloadInfo, value) {\n  var payloadBatch = payloadInfo.payloadBatch;\n  var axis = axisInfo.axis;\n  var axisModel = axis.model;\n  var axisPointerModel = axisInfo.axisPointerModel; // If no data, do not create anything in dataByCoordSys,\n  // whose length will be used to judge whether dispatch action.\n\n  if (!axisInfo.triggerTooltip || !payloadBatch.length) {\n    return;\n  }\n\n  var coordSysModel = axisInfo.coordSys.model;\n  var coordSysKey = modelHelper.makeKey(coordSysModel);\n  var coordSysItem = dataByCoordSys.map[coordSysKey];\n\n  if (!coordSysItem) {\n    coordSysItem = dataByCoordSys.map[coordSysKey] = {\n      coordSysId: coordSysModel.id,\n      coordSysIndex: coordSysModel.componentIndex,\n      coordSysType: coordSysModel.type,\n      coordSysMainType: coordSysModel.mainType,\n      dataByAxis: []\n    };\n    dataByCoordSys.list.push(coordSysItem);\n  }\n\n  coordSysItem.dataByAxis.push({\n    axisDim: axis.dim,\n    axisIndex: axisModel.componentIndex,\n    axisType: axisModel.type,\n    axisId: axisModel.id,\n    value: value,\n    // Caustion: viewHelper.getValueLabel is actually on \"view stage\", which\n    // depends that all models have been updated. So it should not be performed\n    // here. Considering axisPointerModel used here is volatile, which is hard\n    // to be retrieve in TooltipView, we prepare parameters here.\n    valueLabelOpt: {\n      precision: axisPointerModel.get('label.precision'),\n      formatter: axisPointerModel.get('label.formatter')\n    },\n    seriesDataIndices: payloadBatch.slice()\n  });\n}\n\nfunction updateModelActually(showValueMap, axesInfo, outputFinder) {\n  var outputAxesInfo = outputFinder.axesInfo = []; // Basic logic: If no 'show' required, 'hide' this axisPointer.\n\n  each(axesInfo, function (axisInfo, key) {\n    var option = axisInfo.axisPointerModel.option;\n    var valItem = showValueMap[key];\n\n    if (valItem) {\n      !axisInfo.useHandle && (option.status = 'show');\n      option.value = valItem.value; // For label formatter param and highlight.\n\n      option.seriesDataIndices = (valItem.payloadBatch || []).slice();\n    } // When always show (e.g., handle used), remain\n    // original value and status.\n    else {\n        // If hide, value still need to be set, consider\n        // click legend to toggle axis blank.\n        !axisInfo.useHandle && (option.status = 'hide');\n      } // If status is 'hide', should be no info in payload.\n\n\n    option.status === 'show' && outputAxesInfo.push({\n      axisDim: axisInfo.axis.dim,\n      axisIndex: axisInfo.axis.model.componentIndex,\n      value: option.value\n    });\n  });\n}\n\nfunction dispatchTooltipActually(dataByCoordSys, point, payload, dispatchAction) {\n  // Basic logic: If no showTip required, hideTip will be dispatched.\n  if (illegalPoint(point) || !dataByCoordSys.list.length) {\n    dispatchAction({\n      type: 'hideTip'\n    });\n    return;\n  } // In most case only one axis (or event one series is used). It is\n  // convinient to fetch payload.seriesIndex and payload.dataIndex\n  // dirtectly. So put the first seriesIndex and dataIndex of the first\n  // axis on the payload.\n\n\n  var sampleItem = ((dataByCoordSys.list[0].dataByAxis[0] || {}).seriesDataIndices || [])[0] || {};\n  dispatchAction({\n    type: 'showTip',\n    escapeConnect: true,\n    x: point[0],\n    y: point[1],\n    tooltipOption: payload.tooltipOption,\n    position: payload.position,\n    dataIndexInside: sampleItem.dataIndexInside,\n    dataIndex: sampleItem.dataIndex,\n    seriesIndex: sampleItem.seriesIndex,\n    dataByCoordSys: dataByCoordSys.list\n  });\n}\n\nfunction dispatchHighDownActually(axesInfo, dispatchAction, api) {\n  // FIXME\n  // highlight status modification shoule be a stage of main process?\n  // (Consider confilct (e.g., legend and axisPointer) and setOption)\n  var zr = api.getZr();\n  var highDownKey = 'axisPointerLastHighlights';\n  var lastHighlights = inner(zr)[highDownKey] || {};\n  var newHighlights = inner(zr)[highDownKey] = {}; // Update highlight/downplay status according to axisPointer model.\n  // Build hash map and remove duplicate incidentally.\n\n  each(axesInfo, function (axisInfo, key) {\n    var option = axisInfo.axisPointerModel.option;\n    option.status === 'show' && each(option.seriesDataIndices, function (batchItem) {\n      var key = batchItem.seriesIndex + ' | ' + batchItem.dataIndex;\n      newHighlights[key] = batchItem;\n    });\n  }); // Diff.\n\n  var toHighlight = [];\n  var toDownplay = [];\n  zrUtil.each(lastHighlights, function (batchItem, key) {\n    !newHighlights[key] && toDownplay.push(batchItem);\n  });\n  zrUtil.each(newHighlights, function (batchItem, key) {\n    !lastHighlights[key] && toHighlight.push(batchItem);\n  });\n  toDownplay.length && api.dispatchAction({\n    type: 'downplay',\n    escapeConnect: true,\n    batch: toDownplay\n  });\n  toHighlight.length && api.dispatchAction({\n    type: 'highlight',\n    escapeConnect: true,\n    batch: toHighlight\n  });\n}\n\nfunction findInputAxisInfo(inputAxesInfo, axisInfo) {\n  for (var i = 0; i < (inputAxesInfo || []).length; i++) {\n    var inputAxisInfo = inputAxesInfo[i];\n\n    if (axisInfo.axis.dim === inputAxisInfo.axisDim && axisInfo.axis.model.componentIndex === inputAxisInfo.axisIndex) {\n      return inputAxisInfo;\n    }\n  }\n}\n\nfunction makeMapperParam(axisInfo) {\n  var axisModel = axisInfo.axis.model;\n  var item = {};\n  var dim = item.axisDim = axisInfo.axis.dim;\n  item.axisIndex = item[dim + 'AxisIndex'] = axisModel.componentIndex;\n  item.axisName = item[dim + 'AxisName'] = axisModel.name;\n  item.axisId = item[dim + 'AxisId'] = axisModel.id;\n  return item;\n}\n\nfunction illegalPoint(point) {\n  return !point || point[0] == null || isNaN(point[0]) || point[1] == null || isNaN(point[1]);\n}\n\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar modelUtil = require(\"../../util/model\");\n\n/**\n * @param {Object} finder contains {seriesIndex, dataIndex, dataIndexInside}\n * @param {module:echarts/model/Global} ecModel\n * @return {Object} {point: [x, y], el: ...} point Will not be null.\n */\nfunction _default(finder, ecModel) {\n  var point = [];\n  var seriesIndex = finder.seriesIndex;\n  var seriesModel;\n\n  if (seriesIndex == null || !(seriesModel = ecModel.getSeriesByIndex(seriesIndex))) {\n    return {\n      point: []\n    };\n  }\n\n  var data = seriesModel.getData();\n  var dataIndex = modelUtil.queryDataIndex(data, finder);\n\n  if (dataIndex == null || dataIndex < 0 || zrUtil.isArray(dataIndex)) {\n    return {\n      point: []\n    };\n  }\n\n  var el = data.getItemGraphicEl(dataIndex);\n  var coordSys = seriesModel.coordinateSystem;\n\n  if (seriesModel.getTooltipPosition) {\n    point = seriesModel.getTooltipPosition(dataIndex) || [];\n  } else if (coordSys && coordSys.dataToPoint) {\n    point = coordSys.dataToPoint(data.getValues(zrUtil.map(coordSys.dimensions, function (dim) {\n      return data.mapDimension(dim);\n    }), dataIndex, true)) || [];\n  } else if (el) {\n    // Use graphic bounding rect\n    var rect = el.getBoundingRect().clone();\n    rect.applyTransform(el.transform);\n    point = [rect.x + rect.width / 2, rect.y + rect.height / 2];\n  }\n\n  return {\n    point: point,\n    el: el\n  };\n}\n\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar env = require(\"zrender/lib/core/env\");\n\nvar _model = require(\"../../util/model\");\n\nvar makeInner = _model.makeInner;\nvar inner = makeInner();\nvar each = zrUtil.each;\n/**\n * @param {string} key\n * @param {module:echarts/ExtensionAPI} api\n * @param {Function} handler\n *      param: {string} currTrigger\n *      param: {Array.<number>} point\n */\n\nfunction register(key, api, handler) {\n  if (env.node) {\n    return;\n  }\n\n  var zr = api.getZr();\n  inner(zr).records || (inner(zr).records = {});\n  initGlobalListeners(zr, api);\n  var record = inner(zr).records[key] || (inner(zr).records[key] = {});\n  record.handler = handler;\n}\n\nfunction initGlobalListeners(zr, api) {\n  if (inner(zr).initialized) {\n    return;\n  }\n\n  inner(zr).initialized = true;\n  useHandler('click', zrUtil.curry(doEnter, 'click'));\n  useHandler('mousemove', zrUtil.curry(doEnter, 'mousemove')); // useHandler('mouseout', onLeave);\n\n  useHandler('globalout', onLeave);\n\n  function useHandler(eventType, cb) {\n    zr.on(eventType, function (e) {\n      var dis = makeDispatchAction(api);\n      each(inner(zr).records, function (record) {\n        record && cb(record, e, dis.dispatchAction);\n      });\n      dispatchTooltipFinally(dis.pendings, api);\n    });\n  }\n}\n\nfunction dispatchTooltipFinally(pendings, api) {\n  var showLen = pendings.showTip.length;\n  var hideLen = pendings.hideTip.length;\n  var actuallyPayload;\n\n  if (showLen) {\n    actuallyPayload = pendings.showTip[showLen - 1];\n  } else if (hideLen) {\n    actuallyPayload = pendings.hideTip[hideLen - 1];\n  }\n\n  if (actuallyPayload) {\n    actuallyPayload.dispatchAction = null;\n    api.dispatchAction(actuallyPayload);\n  }\n}\n\nfunction onLeave(record, e, dispatchAction) {\n  record.handler('leave', null, dispatchAction);\n}\n\nfunction doEnter(currTrigger, record, e, dispatchAction) {\n  record.handler(currTrigger, e, dispatchAction);\n}\n\nfunction makeDispatchAction(api) {\n  var pendings = {\n    showTip: [],\n    hideTip: []\n  }; // FIXME\n  // better approach?\n  // 'showTip' and 'hideTip' can be triggered by axisPointer and tooltip,\n  // which may be conflict, (axisPointer call showTip but tooltip call hideTip);\n  // So we have to add \"final stage\" to merge those dispatched actions.\n\n  var dispatchAction = function (payload) {\n    var pendingList = pendings[payload.type];\n\n    if (pendingList) {\n      pendingList.push(payload);\n    } else {\n      payload.dispatchAction = dispatchAction;\n      api.dispatchAction(payload);\n    }\n  };\n\n  return {\n    dispatchAction: dispatchAction,\n    pendings: pendings\n  };\n}\n/**\n * @param {string} key\n * @param {module:echarts/ExtensionAPI} api\n */\n\n\nfunction unregister(key, api) {\n  if (env.node) {\n    return;\n  }\n\n  var zr = api.getZr();\n  var record = (inner(zr).records || {})[key];\n\n  if (record) {\n    inner(zr).records[key] = null;\n  }\n}\n\nexports.register = register;\nexports.unregister = unregister;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar Model = require(\"../../model/Model\");\n\nvar each = zrUtil.each;\nvar curry = zrUtil.curry; // Build axisPointerModel, mergin tooltip.axisPointer model for each axis.\n// allAxesInfo should be updated when setOption performed.\n\nfunction collect(ecModel, api) {\n  var result = {\n    /**\n     * key: makeKey(axis.model)\n     * value: {\n     *      axis,\n     *      coordSys,\n     *      axisPointerModel,\n     *      triggerTooltip,\n     *      involveSeries,\n     *      snap,\n     *      seriesModels,\n     *      seriesDataCount\n     * }\n     */\n    axesInfo: {},\n    seriesInvolved: false,\n\n    /**\n     * key: makeKey(coordSys.model)\n     * value: Object: key makeKey(axis.model), value: axisInfo\n     */\n    coordSysAxesInfo: {},\n    coordSysMap: {}\n  };\n  collectAxesInfo(result, ecModel, api); // Check seriesInvolved for performance, in case too many series in some chart.\n\n  result.seriesInvolved && collectSeriesInfo(result, ecModel);\n  return result;\n}\n\nfunction collectAxesInfo(result, ecModel, api) {\n  var globalTooltipModel = ecModel.getComponent('tooltip');\n  var globalAxisPointerModel = ecModel.getComponent('axisPointer'); // links can only be set on global.\n\n  var linksOption = globalAxisPointerModel.get('link', true) || [];\n  var linkGroups = []; // Collect axes info.\n\n  each(api.getCoordinateSystems(), function (coordSys) {\n    // Some coordinate system do not support axes, like geo.\n    if (!coordSys.axisPointerEnabled) {\n      return;\n    }\n\n    var coordSysKey = makeKey(coordSys.model);\n    var axesInfoInCoordSys = result.coordSysAxesInfo[coordSysKey] = {};\n    result.coordSysMap[coordSysKey] = coordSys; // Set tooltip (like 'cross') is a convienent way to show axisPointer\n    // for user. So we enable seting tooltip on coordSys model.\n\n    var coordSysModel = coordSys.model;\n    var baseTooltipModel = coordSysModel.getModel('tooltip', globalTooltipModel);\n    each(coordSys.getAxes(), curry(saveTooltipAxisInfo, false, null)); // If axis tooltip used, choose tooltip axis for each coordSys.\n    // Notice this case: coordSys is `grid` but not `cartesian2D` here.\n\n    if (coordSys.getTooltipAxes && globalTooltipModel // If tooltip.showContent is set as false, tooltip will not\n    // show but axisPointer will show as normal.\n    && baseTooltipModel.get('show')) {\n      // Compatible with previous logic. But series.tooltip.trigger: 'axis'\n      // or series.data[n].tooltip.trigger: 'axis' are not support any more.\n      var triggerAxis = baseTooltipModel.get('trigger') === 'axis';\n      var cross = baseTooltipModel.get('axisPointer.type') === 'cross';\n      var tooltipAxes = coordSys.getTooltipAxes(baseTooltipModel.get('axisPointer.axis'));\n\n      if (triggerAxis || cross) {\n        each(tooltipAxes.baseAxes, curry(saveTooltipAxisInfo, cross ? 'cross' : true, triggerAxis));\n      }\n\n      if (cross) {\n        each(tooltipAxes.otherAxes, curry(saveTooltipAxisInfo, 'cross', false));\n      }\n    } // fromTooltip: true | false | 'cross'\n    // triggerTooltip: true | false | null\n\n\n    function saveTooltipAxisInfo(fromTooltip, triggerTooltip, axis) {\n      var axisPointerModel = axis.model.getModel('axisPointer', globalAxisPointerModel);\n      var axisPointerShow = axisPointerModel.get('show');\n\n      if (!axisPointerShow || axisPointerShow === 'auto' && !fromTooltip && !isHandleTrigger(axisPointerModel)) {\n        return;\n      }\n\n      if (triggerTooltip == null) {\n        triggerTooltip = axisPointerModel.get('triggerTooltip');\n      }\n\n      axisPointerModel = fromTooltip ? makeAxisPointerModel(axis, baseTooltipModel, globalAxisPointerModel, ecModel, fromTooltip, triggerTooltip) : axisPointerModel;\n      var snap = axisPointerModel.get('snap');\n      var key = makeKey(axis.model);\n      var involveSeries = triggerTooltip || snap || axis.type === 'category'; // If result.axesInfo[key] exist, override it (tooltip has higher priority).\n\n      var axisInfo = result.axesInfo[key] = {\n        key: key,\n        axis: axis,\n        coordSys: coordSys,\n        axisPointerModel: axisPointerModel,\n        triggerTooltip: triggerTooltip,\n        involveSeries: involveSeries,\n        snap: snap,\n        useHandle: isHandleTrigger(axisPointerModel),\n        seriesModels: []\n      };\n      axesInfoInCoordSys[key] = axisInfo;\n      result.seriesInvolved |= involveSeries;\n      var groupIndex = getLinkGroupIndex(linksOption, axis);\n\n      if (groupIndex != null) {\n        var linkGroup = linkGroups[groupIndex] || (linkGroups[groupIndex] = {\n          axesInfo: {}\n        });\n        linkGroup.axesInfo[key] = axisInfo;\n        linkGroup.mapper = linksOption[groupIndex].mapper;\n        axisInfo.linkGroup = linkGroup;\n      }\n    }\n  });\n}\n\nfunction makeAxisPointerModel(axis, baseTooltipModel, globalAxisPointerModel, ecModel, fromTooltip, triggerTooltip) {\n  var tooltipAxisPointerModel = baseTooltipModel.getModel('axisPointer');\n  var volatileOption = {};\n  each(['type', 'snap', 'lineStyle', 'shadowStyle', 'label', 'animation', 'animationDurationUpdate', 'animationEasingUpdate', 'z'], function (field) {\n    volatileOption[field] = zrUtil.clone(tooltipAxisPointerModel.get(field));\n  }); // category axis do not auto snap, otherwise some tick that do not\n  // has value can not be hovered. value/time/log axis default snap if\n  // triggered from tooltip and trigger tooltip.\n\n  volatileOption.snap = axis.type !== 'category' && !!triggerTooltip; // Compatibel with previous behavior, tooltip axis do not show label by default.\n  // Only these properties can be overrided from tooltip to axisPointer.\n\n  if (tooltipAxisPointerModel.get('type') === 'cross') {\n    volatileOption.type = 'line';\n  }\n\n  var labelOption = volatileOption.label || (volatileOption.label = {}); // Follow the convention, do not show label when triggered by tooltip by default.\n\n  labelOption.show == null && (labelOption.show = false);\n\n  if (fromTooltip === 'cross') {\n    // When 'cross', both axes show labels.\n    labelOption.show = true; // If triggerTooltip, this is a base axis, which should better not use cross style\n    // (cross style is dashed by default)\n\n    if (!triggerTooltip) {\n      var crossStyle = volatileOption.lineStyle = tooltipAxisPointerModel.get('crossStyle');\n      crossStyle && zrUtil.defaults(labelOption, crossStyle.textStyle);\n    }\n  }\n\n  return axis.model.getModel('axisPointer', new Model(volatileOption, globalAxisPointerModel, ecModel));\n}\n\nfunction collectSeriesInfo(result, ecModel) {\n  // Prepare data for axis trigger\n  ecModel.eachSeries(function (seriesModel) {\n    // Notice this case: this coordSys is `cartesian2D` but not `grid`.\n    var coordSys = seriesModel.coordinateSystem;\n    var seriesTooltipTrigger = seriesModel.get('tooltip.trigger', true);\n    var seriesTooltipShow = seriesModel.get('tooltip.show', true);\n\n    if (!coordSys || seriesTooltipTrigger === 'none' || seriesTooltipTrigger === false || seriesTooltipTrigger === 'item' || seriesTooltipShow === false || seriesModel.get('axisPointer.show', true) === false) {\n      return;\n    }\n\n    each(result.coordSysAxesInfo[makeKey(coordSys.model)], function (axisInfo) {\n      var axis = axisInfo.axis;\n\n      if (coordSys.getAxis(axis.dim) === axis) {\n        axisInfo.seriesModels.push(seriesModel);\n        axisInfo.seriesDataCount == null && (axisInfo.seriesDataCount = 0);\n        axisInfo.seriesDataCount += seriesModel.getData().count();\n      }\n    });\n  }, this);\n}\n/**\n * For example:\n * {\n *     axisPointer: {\n *         links: [{\n *             xAxisIndex: [2, 4],\n *             yAxisIndex: 'all'\n *         }, {\n *             xAxisId: ['a5', 'a7'],\n *             xAxisName: 'xxx'\n *         }]\n *     }\n * }\n */\n\n\nfunction getLinkGroupIndex(linksOption, axis) {\n  var axisModel = axis.model;\n  var dim = axis.dim;\n\n  for (var i = 0; i < linksOption.length; i++) {\n    var linkOption = linksOption[i] || {};\n\n    if (checkPropInLink(linkOption[dim + 'AxisId'], axisModel.id) || checkPropInLink(linkOption[dim + 'AxisIndex'], axisModel.componentIndex) || checkPropInLink(linkOption[dim + 'AxisName'], axisModel.name)) {\n      return i;\n    }\n  }\n}\n\nfunction checkPropInLink(linkPropValue, axisPropValue) {\n  return linkPropValue === 'all' || zrUtil.isArray(linkPropValue) && zrUtil.indexOf(linkPropValue, axisPropValue) >= 0 || linkPropValue === axisPropValue;\n}\n\nfunction fixValue(axisModel) {\n  var axisInfo = getAxisInfo(axisModel);\n\n  if (!axisInfo) {\n    return;\n  }\n\n  var axisPointerModel = axisInfo.axisPointerModel;\n  var scale = axisInfo.axis.scale;\n  var option = axisPointerModel.option;\n  var status = axisPointerModel.get('status');\n  var value = axisPointerModel.get('value'); // Parse init value for category and time axis.\n\n  if (value != null) {\n    value = scale.parse(value);\n  }\n\n  var useHandle = isHandleTrigger(axisPointerModel); // If `handle` used, `axisPointer` will always be displayed, so value\n  // and status should be initialized.\n\n  if (status == null) {\n    option.status = useHandle ? 'show' : 'hide';\n  }\n\n  var extent = scale.getExtent().slice();\n  extent[0] > extent[1] && extent.reverse();\n\n  if ( // Pick a value on axis when initializing.\n  value == null // If both `handle` and `dataZoom` are used, value may be out of axis extent,\n  // where we should re-pick a value to keep `handle` displaying normally.\n  || value > extent[1]) {\n    // Make handle displayed on the end of the axis when init, which looks better.\n    value = extent[1];\n  }\n\n  if (value < extent[0]) {\n    value = extent[0];\n  }\n\n  option.value = value;\n\n  if (useHandle) {\n    option.status = axisInfo.axis.scale.isBlank() ? 'hide' : 'show';\n  }\n}\n\nfunction getAxisInfo(axisModel) {\n  var coordSysAxesInfo = (axisModel.ecModel.getComponent('axisPointer') || {}).coordSysAxesInfo;\n  return coordSysAxesInfo && coordSysAxesInfo.axesInfo[makeKey(axisModel)];\n}\n\nfunction getAxisPointerModel(axisModel) {\n  var axisInfo = getAxisInfo(axisModel);\n  return axisInfo && axisInfo.axisPointerModel;\n}\n\nfunction isHandleTrigger(axisPointerModel) {\n  return !!axisPointerModel.get('handle.show');\n}\n/**\n * @param {module:echarts/model/Model} model\n * @return {string} unique key\n */\n\n\nfunction makeKey(model) {\n  return model.type + '||' + model.id;\n}\n\nexports.collect = collect;\nexports.fixValue = fixValue;\nexports.getAxisInfo = getAxisInfo;\nexports.getAxisPointerModel = getAxisPointerModel;\nexports.makeKey = makeKey;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar textContain = require(\"zrender/lib/contain/text\");\n\nvar formatUtil = require(\"../../util/format\");\n\nvar matrix = require(\"zrender/lib/core/matrix\");\n\nvar axisHelper = require(\"../../coord/axisHelper\");\n\nvar AxisBuilder = require(\"../axis/AxisBuilder\");\n\n/**\n * @param {module:echarts/model/Model} axisPointerModel\n */\nfunction buildElStyle(axisPointerModel) {\n  var axisPointerType = axisPointerModel.get('type');\n  var styleModel = axisPointerModel.getModel(axisPointerType + 'Style');\n  var style;\n\n  if (axisPointerType === 'line') {\n    style = styleModel.getLineStyle();\n    style.fill = null;\n  } else if (axisPointerType === 'shadow') {\n    style = styleModel.getAreaStyle();\n    style.stroke = null;\n  }\n\n  return style;\n}\n/**\n * @param {Function} labelPos {align, verticalAlign, position}\n */\n\n\nfunction buildLabelElOption(elOption, axisModel, axisPointerModel, api, labelPos) {\n  var value = axisPointerModel.get('value');\n  var text = getValueLabel(value, axisModel.axis, axisModel.ecModel, axisPointerModel.get('seriesDataIndices'), {\n    precision: axisPointerModel.get('label.precision'),\n    formatter: axisPointerModel.get('label.formatter')\n  });\n  var labelModel = axisPointerModel.getModel('label');\n  var paddings = formatUtil.normalizeCssArray(labelModel.get('padding') || 0);\n  var font = labelModel.getFont();\n  var textRect = textContain.getBoundingRect(text, font);\n  var position = labelPos.position;\n  var width = textRect.width + paddings[1] + paddings[3];\n  var height = textRect.height + paddings[0] + paddings[2]; // Adjust by align.\n\n  var align = labelPos.align;\n  align === 'right' && (position[0] -= width);\n  align === 'center' && (position[0] -= width / 2);\n  var verticalAlign = labelPos.verticalAlign;\n  verticalAlign === 'bottom' && (position[1] -= height);\n  verticalAlign === 'middle' && (position[1] -= height / 2); // Not overflow ec container\n\n  confineInContainer(position, width, height, api);\n  var bgColor = labelModel.get('backgroundColor');\n\n  if (!bgColor || bgColor === 'auto') {\n    bgColor = axisModel.get('axisLine.lineStyle.color');\n  }\n\n  elOption.label = {\n    shape: {\n      x: 0,\n      y: 0,\n      width: width,\n      height: height,\n      r: labelModel.get('borderRadius')\n    },\n    position: position.slice(),\n    // TODO: rich\n    style: {\n      text: text,\n      textFont: font,\n      textFill: labelModel.getTextColor(),\n      textPosition: 'inside',\n      fill: bgColor,\n      stroke: labelModel.get('borderColor') || 'transparent',\n      lineWidth: labelModel.get('borderWidth') || 0,\n      shadowBlur: labelModel.get('shadowBlur'),\n      shadowColor: labelModel.get('shadowColor'),\n      shadowOffsetX: labelModel.get('shadowOffsetX'),\n      shadowOffsetY: labelModel.get('shadowOffsetY')\n    },\n    // Lable should be over axisPointer.\n    z2: 10\n  };\n} // Do not overflow ec container\n\n\nfunction confineInContainer(position, width, height, api) {\n  var viewWidth = api.getWidth();\n  var viewHeight = api.getHeight();\n  position[0] = Math.min(position[0] + width, viewWidth) - width;\n  position[1] = Math.min(position[1] + height, viewHeight) - height;\n  position[0] = Math.max(position[0], 0);\n  position[1] = Math.max(position[1], 0);\n}\n/**\n * @param {number} value\n * @param {module:echarts/coord/Axis} axis\n * @param {module:echarts/model/Global} ecModel\n * @param {Object} opt\n * @param {Array.<Object>} seriesDataIndices\n * @param {number|string} opt.precision 'auto' or a number\n * @param {string|Function} opt.formatter label formatter\n */\n\n\nfunction getValueLabel(value, axis, ecModel, seriesDataIndices, opt) {\n  var text = axis.scale.getLabel( // If `precision` is set, width can be fixed (like '12.00500'), which\n  // helps to debounce when when moving label.\n  value, {\n    precision: opt.precision\n  });\n  var formatter = opt.formatter;\n\n  if (formatter) {\n    var params = {\n      value: axisHelper.getAxisRawValue(axis, value),\n      seriesData: []\n    };\n    zrUtil.each(seriesDataIndices, function (idxItem) {\n      var series = ecModel.getSeriesByIndex(idxItem.seriesIndex);\n      var dataIndex = idxItem.dataIndexInside;\n      var dataParams = series && series.getDataParams(dataIndex);\n      dataParams && params.seriesData.push(dataParams);\n    });\n\n    if (zrUtil.isString(formatter)) {\n      text = formatter.replace('{value}', text);\n    } else if (zrUtil.isFunction(formatter)) {\n      text = formatter(params);\n    }\n  }\n\n  return text;\n}\n/**\n * @param {module:echarts/coord/Axis} axis\n * @param {number} value\n * @param {Object} layoutInfo {\n *  rotation, position, labelOffset, labelDirection, labelMargin\n * }\n */\n\n\nfunction getTransformedPosition(axis, value, layoutInfo) {\n  var transform = matrix.create();\n  matrix.rotate(transform, transform, layoutInfo.rotation);\n  matrix.translate(transform, transform, layoutInfo.position);\n  return graphic.applyTransform([axis.dataToCoord(value), (layoutInfo.labelOffset || 0) + (layoutInfo.labelDirection || 1) * (layoutInfo.labelMargin || 0)], transform);\n}\n\nfunction buildCartesianSingleLabelElOption(value, elOption, layoutInfo, axisModel, axisPointerModel, api) {\n  var textLayout = AxisBuilder.innerTextLayout(layoutInfo.rotation, 0, layoutInfo.labelDirection);\n  layoutInfo.labelMargin = axisPointerModel.get('label.margin');\n  buildLabelElOption(elOption, axisModel, axisPointerModel, api, {\n    position: getTransformedPosition(axisModel.axis, value, layoutInfo),\n    align: textLayout.textAlign,\n    verticalAlign: textLayout.textVerticalAlign\n  });\n}\n/**\n * @param {Array.<number>} p1\n * @param {Array.<number>} p2\n * @param {number} [xDimIndex=0] or 1\n */\n\n\nfunction makeLineShape(p1, p2, xDimIndex) {\n  xDimIndex = xDimIndex || 0;\n  return {\n    x1: p1[xDimIndex],\n    y1: p1[1 - xDimIndex],\n    x2: p2[xDimIndex],\n    y2: p2[1 - xDimIndex]\n  };\n}\n/**\n * @param {Array.<number>} xy\n * @param {Array.<number>} wh\n * @param {number} [xDimIndex=0] or 1\n */\n\n\nfunction makeRectShape(xy, wh, xDimIndex) {\n  xDimIndex = xDimIndex || 0;\n  return {\n    x: xy[xDimIndex],\n    y: xy[1 - xDimIndex],\n    width: wh[xDimIndex],\n    height: wh[1 - xDimIndex]\n  };\n}\n\nfunction makeSectorShape(cx, cy, r0, r, startAngle, endAngle) {\n  return {\n    cx: cx,\n    cy: cy,\n    r0: r0,\n    r: r,\n    startAngle: startAngle,\n    endAngle: endAngle,\n    clockwise: true\n  };\n}\n\nexports.buildElStyle = buildElStyle;\nexports.buildLabelElOption = buildLabelElOption;\nexports.getValueLabel = getValueLabel;\nexports.getTransformedPosition = getTransformedPosition;\nexports.buildCartesianSingleLabelElOption = buildCartesianSingleLabelElOption;\nexports.makeLineShape = makeLineShape;\nexports.makeRectShape = makeRectShape;\nexports.makeSectorShape = makeSectorShape;","var echarts = require(\"../echarts\");\n\nvar preprocessor = require(\"./brush/preprocessor\");\n\nrequire(\"./brush/visualEncoding\");\n\nrequire(\"./brush/BrushModel\");\n\nrequire(\"./brush/BrushView\");\n\nrequire(\"./brush/brushAction\");\n\nrequire(\"./toolbox/feature/Brush\");\n\n/**\n * Brush component entry\n */\necharts.registerPreprocessor(preprocessor);","var _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar echarts = require(\"../../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar visualSolution = require(\"../../visual/visualSolution\");\n\nvar Model = require(\"../../model/Model\");\n\nvar DEFAULT_OUT_OF_BRUSH_COLOR = ['#ddd'];\nvar BrushModel = echarts.extendComponentModel({\n  type: 'brush',\n  dependencies: ['geo', 'grid', 'xAxis', 'yAxis', 'parallel', 'series'],\n\n  /**\n   * @protected\n   */\n  defaultOption: {\n    // inBrush: null,\n    // outOfBrush: null,\n    toolbox: null,\n    // Default value see preprocessor.\n    brushLink: null,\n    // Series indices array, broadcast using dataIndex.\n    // or 'all', which means all series. 'none' or null means no series.\n    seriesIndex: 'all',\n    // seriesIndex array, specify series controlled by this brush component.\n    geoIndex: null,\n    //\n    xAxisIndex: null,\n    yAxisIndex: null,\n    brushType: 'rect',\n    // Default brushType, see BrushController.\n    brushMode: 'single',\n    // Default brushMode, 'single' or 'multiple'\n    transformable: true,\n    // Default transformable.\n    brushStyle: {\n      // Default brushStyle\n      borderWidth: 1,\n      color: 'rgba(120,140,180,0.3)',\n      borderColor: 'rgba(120,140,180,0.8)'\n    },\n    throttleType: 'fixRate',\n    // Throttle in brushSelected event. 'fixRate' or 'debounce'.\n    // If null, no throttle. Valid only in the first brush component\n    throttleDelay: 0,\n    // Unit: ms, 0 means every event will be triggered.\n    // FIXME\n    // 试验效果\n    removeOnClick: true,\n    z: 10000\n  },\n\n  /**\n   * @readOnly\n   * @type {Array.<Object>}\n   */\n  areas: [],\n\n  /**\n   * Current activated brush type.\n   * If null, brush is inactived.\n   * see module:echarts/component/helper/BrushController\n   * @readOnly\n   * @type {string}\n   */\n  brushType: null,\n\n  /**\n   * Current brush opt.\n   * see module:echarts/component/helper/BrushController\n   * @readOnly\n   * @type {Object}\n   */\n  brushOption: {},\n\n  /**\n   * @readOnly\n   * @type {Array.<Object>}\n   */\n  coordInfoList: [],\n  optionUpdated: function (newOption, isInit) {\n    var thisOption = this.option;\n    !isInit && visualSolution.replaceVisualOption(thisOption, newOption, ['inBrush', 'outOfBrush']);\n    thisOption.inBrush = thisOption.inBrush || {}; // Always give default visual, consider setOption at the second time.\n\n    thisOption.outOfBrush = thisOption.outOfBrush || {\n      color: DEFAULT_OUT_OF_BRUSH_COLOR\n    };\n  },\n\n  /**\n   * If ranges is null/undefined, range state remain.\n   *\n   * @param {Array.<Object>} [ranges]\n   */\n  setAreas: function (areas) {\n    // If ranges is null/undefined, range state remain.\n    // This helps user to dispatchAction({type: 'brush'}) with no areas\n    // set but just want to get the current brush select info from a `brush` event.\n    if (!areas) {\n      return;\n    }\n\n    this.areas = zrUtil.map(areas, function (area) {\n      return generateBrushOption(this.option, area);\n    }, this);\n  },\n\n  /**\n   * see module:echarts/component/helper/BrushController\n   * @param {Object} brushOption\n   */\n  setBrushOption: function (brushOption) {\n    this.brushOption = generateBrushOption(this.option, brushOption);\n    this.brushType = this.brushOption.brushType;\n  }\n});\n\nfunction generateBrushOption(option, brushOption) {\n  return zrUtil.merge({\n    brushType: option.brushType,\n    brushMode: option.brushMode,\n    transformable: option.transformable,\n    brushStyle: new Model(option.brushStyle).getItemStyle(),\n    removeOnClick: option.removeOnClick,\n    z: option.z\n  }, brushOption, true);\n}\n\nvar _default = BrushModel;\nmodule.exports = _default;","var echarts = require(\"../../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar BrushController = require(\"../helper/BrushController\");\n\nvar _default = echarts.extendComponentView({\n  type: 'brush',\n  init: function (ecModel, api) {\n    /**\n     * @readOnly\n     * @type {module:echarts/model/Global}\n     */\n    this.ecModel = ecModel;\n    /**\n     * @readOnly\n     * @type {module:echarts/ExtensionAPI}\n     */\n\n    this.api = api;\n    /**\n     * @readOnly\n     * @type {module:echarts/component/brush/BrushModel}\n     */\n\n    this.model;\n    /**\n     * @private\n     * @type {module:echarts/component/helper/BrushController}\n     */\n\n    (this._brushController = new BrushController(api.getZr())).on('brush', zrUtil.bind(this._onBrush, this)).mount();\n  },\n\n  /**\n   * @override\n   */\n  render: function (brushModel) {\n    this.model = brushModel;\n    return updateController.apply(this, arguments);\n  },\n\n  /**\n   * @override\n   */\n  updateView: updateController,\n  // /**\n  //  * @override\n  //  */\n  // updateLayout: updateController,\n  // /**\n  //  * @override\n  //  */\n  // updateVisual: updateController,\n\n  /**\n   * @override\n   */\n  dispose: function () {\n    this._brushController.dispose();\n  },\n\n  /**\n   * @private\n   */\n  _onBrush: function (areas, opt) {\n    var modelId = this.model.id;\n    this.model.brushTargetManager.setOutputRanges(areas, this.ecModel); // Action is not dispatched on drag end, because the drag end\n    // emits the same params with the last drag move event, and\n    // may have some delay when using touch pad, which makes\n    // animation not smooth (when using debounce).\n\n    (!opt.isEnd || opt.removeOnClick) && this.api.dispatchAction({\n      type: 'brush',\n      brushId: modelId,\n      areas: zrUtil.clone(areas),\n      $from: modelId\n    });\n  }\n});\n\nfunction updateController(brushModel, ecModel, api, payload) {\n  // Do not update controller when drawing.\n  (!payload || payload.$from !== brushModel.id) && this._brushController.setPanels(brushModel.brushTargetManager.makePanelOpts(api)).enableBrush(brushModel.brushOption).updateCovers(brushModel.areas.slice());\n}\n\nmodule.exports = _default;","var echarts = require(\"../../echarts\");\n\n/**\n * payload: {\n *      brushIndex: number, or,\n *      brushId: string, or,\n *      brushName: string,\n *      globalRanges: Array\n * }\n */\necharts.registerAction({\n  type: 'brush',\n  event: 'brush'\n  /*, update: 'updateView' */\n\n}, function (payload, ecModel) {\n  ecModel.eachComponent({\n    mainType: 'brush',\n    query: payload\n  }, function (brushModel) {\n    brushModel.setAreas(payload.areas);\n  });\n});\n/**\n * payload: {\n *      brushComponents: [\n *          {\n *              brushId,\n *              brushIndex,\n *              brushName,\n *              series: [\n *                  {\n *                      seriesId,\n *                      seriesIndex,\n *                      seriesName,\n *                      rawIndices: [21, 34, ...]\n *                  },\n *                  ...\n *              ]\n *          },\n *          ...\n *      ]\n * }\n */\n\necharts.registerAction({\n  type: 'brushSelect',\n  event: 'brushSelected',\n  update: 'none'\n}, function () {});","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar DEFAULT_TOOLBOX_BTNS = ['rect', 'polygon', 'keep', 'clear'];\n\nfunction _default(option, isNew) {\n  var brushComponents = option && option.brush;\n\n  if (!zrUtil.isArray(brushComponents)) {\n    brushComponents = brushComponents ? [brushComponents] : [];\n  }\n\n  if (!brushComponents.length) {\n    return;\n  }\n\n  var brushComponentSpecifiedBtns = [];\n  zrUtil.each(brushComponents, function (brushOpt) {\n    var tbs = brushOpt.hasOwnProperty('toolbox') ? brushOpt.toolbox : [];\n\n    if (tbs instanceof Array) {\n      brushComponentSpecifiedBtns = brushComponentSpecifiedBtns.concat(tbs);\n    }\n  });\n  var toolbox = option && option.toolbox;\n\n  if (zrUtil.isArray(toolbox)) {\n    toolbox = toolbox[0];\n  }\n\n  if (!toolbox) {\n    toolbox = {\n      feature: {}\n    };\n    option.toolbox = [toolbox];\n  }\n\n  var toolboxFeature = toolbox.feature || (toolbox.feature = {});\n  var toolboxBrush = toolboxFeature.brush || (toolboxFeature.brush = {});\n  var brushTypes = toolboxBrush.type || (toolboxBrush.type = []);\n  brushTypes.push.apply(brushTypes, brushComponentSpecifiedBtns);\n  removeDuplicate(brushTypes);\n\n  if (isNew && !brushTypes.length) {\n    brushTypes.push.apply(brushTypes, DEFAULT_TOOLBOX_BTNS);\n  }\n}\n\nfunction removeDuplicate(arr) {\n  var map = {};\n  zrUtil.each(arr, function (val) {\n    map[val] = 1;\n  });\n  arr.length = 0;\n  zrUtil.each(map, function (flag, val) {\n    arr.push(val);\n  });\n}\n\nmodule.exports = _default;","var polygonContain = require(\"zrender/lib/contain/polygon\");\n\nvar BoundingRect = require(\"zrender/lib/core/BoundingRect\");\n\n// Key of the first level is brushType: `line`, `rect`, `polygon`.\n// Key of the second level is chart element type: `point`, `rect`.\n// See moudule:echarts/component/helper/BrushController\n// function param:\n//      {Object} itemLayout fetch from data.getItemLayout(dataIndex)\n//      {Object} selectors {point: selector, rect: selector, ...}\n//      {Object} area {range: [[], [], ..], boudingRect}\n// function return:\n//      {boolean} Whether in the given brush.\nvar selector = {\n  lineX: getLineSelectors(0),\n  lineY: getLineSelectors(1),\n  rect: {\n    point: function (itemLayout, selectors, area) {\n      return itemLayout && area.boundingRect.contain(itemLayout[0], itemLayout[1]);\n    },\n    rect: function (itemLayout, selectors, area) {\n      return itemLayout && area.boundingRect.intersect(itemLayout);\n    }\n  },\n  polygon: {\n    point: function (itemLayout, selectors, area) {\n      return itemLayout && area.boundingRect.contain(itemLayout[0], itemLayout[1]) && polygonContain.contain(area.range, itemLayout[0], itemLayout[1]);\n    },\n    rect: function (itemLayout, selectors, area) {\n      var points = area.range;\n\n      if (!itemLayout || points.length <= 1) {\n        return false;\n      }\n\n      var x = itemLayout.x;\n      var y = itemLayout.y;\n      var width = itemLayout.width;\n      var height = itemLayout.height;\n      var p = points[0];\n\n      if (polygonContain.contain(points, x, y) || polygonContain.contain(points, x + width, y) || polygonContain.contain(points, x, y + height) || polygonContain.contain(points, x + width, y + height) || BoundingRect.create(itemLayout).contain(p[0], p[1]) || lineIntersectPolygon(x, y, x + width, y, points) || lineIntersectPolygon(x, y, x, y + height, points) || lineIntersectPolygon(x + width, y, x + width, y + height, points) || lineIntersectPolygon(x, y + height, x + width, y + height, points)) {\n        return true;\n      }\n    }\n  }\n};\n\nfunction getLineSelectors(xyIndex) {\n  var xy = ['x', 'y'];\n  var wh = ['width', 'height'];\n  return {\n    point: function (itemLayout, selectors, area) {\n      if (itemLayout) {\n        var range = area.range;\n        var p = itemLayout[xyIndex];\n        return inLineRange(p, range);\n      }\n    },\n    rect: function (itemLayout, selectors, area) {\n      if (itemLayout) {\n        var range = area.range;\n        var layoutRange = [itemLayout[xy[xyIndex]], itemLayout[xy[xyIndex]] + itemLayout[wh[xyIndex]]];\n        layoutRange[1] < layoutRange[0] && layoutRange.reverse();\n        return inLineRange(layoutRange[0], range) || inLineRange(layoutRange[1], range) || inLineRange(range[0], layoutRange) || inLineRange(range[1], layoutRange);\n      }\n    }\n  };\n}\n\nfunction inLineRange(p, range) {\n  return range[0] <= p && p <= range[1];\n}\n\nfunction lineIntersectPolygon(lx, ly, l2x, l2y, points) {\n  for (var i = 0, p2 = points[points.length - 1]; i < points.length; i++) {\n    var p = points[i];\n\n    if (lineIntersect(lx, ly, l2x, l2y, p[0], p[1], p2[0], p2[1])) {\n      return true;\n    }\n\n    p2 = p;\n  }\n} // Code from <http://blog.csdn.net/rickliuxiao/article/details/6259322> with some fix.\n// See <https://en.wikipedia.org/wiki/Line%E2%80%93line_intersection>\n\n\nfunction lineIntersect(a1x, a1y, a2x, a2y, b1x, b1y, b2x, b2y) {\n  var delta = determinant(a2x - a1x, b1x - b2x, a2y - a1y, b1y - b2y);\n\n  if (nearZero(delta)) {\n    // parallel\n    return false;\n  }\n\n  var namenda = determinant(b1x - a1x, b1x - b2x, b1y - a1y, b1y - b2y) / delta;\n\n  if (namenda < 0 || namenda > 1) {\n    return false;\n  }\n\n  var miu = determinant(a2x - a1x, b1x - a1x, a2y - a1y, b1y - a1y) / delta;\n\n  if (miu < 0 || miu > 1) {\n    return false;\n  }\n\n  return true;\n}\n\nfunction nearZero(val) {\n  return val <= 1e-6 && val >= -1e-6;\n}\n\nfunction determinant(v1, v2, v3, v4) {\n  return v1 * v4 - v2 * v3;\n}\n\nvar _default = selector;\nmodule.exports = _default;","var echarts = require(\"../../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar BoundingRect = require(\"zrender/lib/core/BoundingRect\");\n\nvar visualSolution = require(\"../../visual/visualSolution\");\n\nvar selector = require(\"./selector\");\n\nvar throttleUtil = require(\"../../util/throttle\");\n\nvar BrushTargetManager = require(\"../helper/BrushTargetManager\");\n\nvar STATE_LIST = ['inBrush', 'outOfBrush'];\nvar DISPATCH_METHOD = '__ecBrushSelect';\nvar DISPATCH_FLAG = '__ecInBrushSelectEvent';\nvar PRIORITY_BRUSH = echarts.PRIORITY.VISUAL.BRUSH;\n/**\n * Layout for visual, the priority higher than other layout, and before brush visual.\n */\n\necharts.registerLayout(PRIORITY_BRUSH, function (ecModel, api, payload) {\n  ecModel.eachComponent({\n    mainType: 'brush'\n  }, function (brushModel) {\n    payload && payload.type === 'takeGlobalCursor' && brushModel.setBrushOption(payload.key === 'brush' ? payload.brushOption : {\n      brushType: false\n    });\n    var brushTargetManager = brushModel.brushTargetManager = new BrushTargetManager(brushModel.option, ecModel);\n    brushTargetManager.setInputRanges(brushModel.areas, ecModel);\n  });\n});\n/**\n * Register the visual encoding if this modules required.\n */\n\necharts.registerVisual(PRIORITY_BRUSH, function (ecModel, api, payload) {\n  var brushSelected = [];\n  var throttleType;\n  var throttleDelay;\n  ecModel.eachComponent({\n    mainType: 'brush'\n  }, function (brushModel, brushIndex) {\n    var thisBrushSelected = {\n      brushId: brushModel.id,\n      brushIndex: brushIndex,\n      brushName: brushModel.name,\n      areas: zrUtil.clone(brushModel.areas),\n      selected: []\n    }; // Every brush component exists in event params, convenient\n    // for user to find by index.\n\n    brushSelected.push(thisBrushSelected);\n    var brushOption = brushModel.option;\n    var brushLink = brushOption.brushLink;\n    var linkedSeriesMap = [];\n    var selectedDataIndexForLink = [];\n    var rangeInfoBySeries = [];\n    var hasBrushExists = 0;\n\n    if (!brushIndex) {\n      // Only the first throttle setting works.\n      throttleType = brushOption.throttleType;\n      throttleDelay = brushOption.throttleDelay;\n    } // Add boundingRect and selectors to range.\n\n\n    var areas = zrUtil.map(brushModel.areas, function (area) {\n      return bindSelector(zrUtil.defaults({\n        boundingRect: boundingRectBuilders[area.brushType](area)\n      }, area));\n    });\n    var visualMappings = visualSolution.createVisualMappings(brushModel.option, STATE_LIST, function (mappingOption) {\n      mappingOption.mappingMethod = 'fixed';\n    });\n    zrUtil.isArray(brushLink) && zrUtil.each(brushLink, function (seriesIndex) {\n      linkedSeriesMap[seriesIndex] = 1;\n    });\n\n    function linkOthers(seriesIndex) {\n      return brushLink === 'all' || linkedSeriesMap[seriesIndex];\n    } // If no supported brush or no brush on the series,\n    // all visuals should be in original state.\n\n\n    function brushed(rangeInfoList) {\n      return !!rangeInfoList.length;\n    }\n    /**\n     * Logic for each series: (If the logic has to be modified one day, do it carefully!)\n     *\n     * ( brushed ┬ && ┬hasBrushExist ┬ && linkOthers  ) => StepA: ┬record, ┬ StepB: ┬visualByRecord.\n     *   !brushed┘    ├hasBrushExist ┤                            └nothing,┘        ├visualByRecord.\n     *                └!hasBrushExist┘                                              └nothing.\n     * ( !brushed  && ┬hasBrushExist ┬ && linkOthers  ) => StepA:  nothing,  StepB: ┬visualByRecord.\n     *                └!hasBrushExist┘                                              └nothing.\n     * ( brushed ┬ &&                     !linkOthers ) => StepA:  nothing,  StepB: ┬visualByCheck.\n     *   !brushed┘                                                                  └nothing.\n     * ( !brushed  &&                     !linkOthers ) => StepA:  nothing,  StepB:  nothing.\n     */\n    // Step A\n\n\n    ecModel.eachSeries(function (seriesModel, seriesIndex) {\n      var rangeInfoList = rangeInfoBySeries[seriesIndex] = [];\n      seriesModel.subType === 'parallel' ? stepAParallel(seriesModel, seriesIndex, rangeInfoList) : stepAOthers(seriesModel, seriesIndex, rangeInfoList);\n    });\n\n    function stepAParallel(seriesModel, seriesIndex) {\n      var coordSys = seriesModel.coordinateSystem;\n      hasBrushExists |= coordSys.hasAxisBrushed();\n      linkOthers(seriesIndex) && coordSys.eachActiveState(seriesModel.getData(), function (activeState, dataIndex) {\n        activeState === 'active' && (selectedDataIndexForLink[dataIndex] = 1);\n      });\n    }\n\n    function stepAOthers(seriesModel, seriesIndex, rangeInfoList) {\n      var selectorsByBrushType = getSelectorsByBrushType(seriesModel);\n\n      if (!selectorsByBrushType || brushModelNotControll(brushModel, seriesIndex)) {\n        return;\n      }\n\n      zrUtil.each(areas, function (area) {\n        selectorsByBrushType[area.brushType] && brushModel.brushTargetManager.controlSeries(area, seriesModel, ecModel) && rangeInfoList.push(area);\n        hasBrushExists |= brushed(rangeInfoList);\n      });\n\n      if (linkOthers(seriesIndex) && brushed(rangeInfoList)) {\n        var data = seriesModel.getData();\n        data.each(function (dataIndex) {\n          if (checkInRange(selectorsByBrushType, rangeInfoList, data, dataIndex)) {\n            selectedDataIndexForLink[dataIndex] = 1;\n          }\n        });\n      }\n    } // Step B\n\n\n    ecModel.eachSeries(function (seriesModel, seriesIndex) {\n      var seriesBrushSelected = {\n        seriesId: seriesModel.id,\n        seriesIndex: seriesIndex,\n        seriesName: seriesModel.name,\n        dataIndex: []\n      }; // Every series exists in event params, convenient\n      // for user to find series by seriesIndex.\n\n      thisBrushSelected.selected.push(seriesBrushSelected);\n      var selectorsByBrushType = getSelectorsByBrushType(seriesModel);\n      var rangeInfoList = rangeInfoBySeries[seriesIndex];\n      var data = seriesModel.getData();\n      var getValueState = linkOthers(seriesIndex) ? function (dataIndex) {\n        return selectedDataIndexForLink[dataIndex] ? (seriesBrushSelected.dataIndex.push(data.getRawIndex(dataIndex)), 'inBrush') : 'outOfBrush';\n      } : function (dataIndex) {\n        return checkInRange(selectorsByBrushType, rangeInfoList, data, dataIndex) ? (seriesBrushSelected.dataIndex.push(data.getRawIndex(dataIndex)), 'inBrush') : 'outOfBrush';\n      }; // If no supported brush or no brush, all visuals are in original state.\n\n      (linkOthers(seriesIndex) ? hasBrushExists : brushed(rangeInfoList)) && visualSolution.applyVisual(STATE_LIST, visualMappings, data, getValueState);\n    });\n  });\n  dispatchAction(api, throttleType, throttleDelay, brushSelected, payload);\n});\n\nfunction dispatchAction(api, throttleType, throttleDelay, brushSelected, payload) {\n  // This event will not be triggered when `setOpion`, otherwise dead lock may\n  // triggered when do `setOption` in event listener, which we do not find\n  // satisfactory way to solve yet. Some considered resolutions:\n  // (a) Diff with prevoius selected data ant only trigger event when changed.\n  // But store previous data and diff precisely (i.e., not only by dataIndex, but\n  // also detect value changes in selected data) might bring complexity or fragility.\n  // (b) Use spectial param like `silent` to suppress event triggering.\n  // But such kind of volatile param may be weird in `setOption`.\n  if (!payload) {\n    return;\n  }\n\n  var zr = api.getZr();\n\n  if (zr[DISPATCH_FLAG]) {\n    return;\n  }\n\n  if (!zr[DISPATCH_METHOD]) {\n    zr[DISPATCH_METHOD] = doDispatch;\n  }\n\n  var fn = throttleUtil.createOrUpdate(zr, DISPATCH_METHOD, throttleDelay, throttleType);\n  fn(api, brushSelected);\n}\n\nfunction doDispatch(api, brushSelected) {\n  if (!api.isDisposed()) {\n    var zr = api.getZr();\n    zr[DISPATCH_FLAG] = true;\n    api.dispatchAction({\n      type: 'brushSelect',\n      batch: brushSelected\n    });\n    zr[DISPATCH_FLAG] = false;\n  }\n}\n\nfunction checkInRange(selectorsByBrushType, rangeInfoList, data, dataIndex) {\n  for (var i = 0, len = rangeInfoList.length; i < len; i++) {\n    var area = rangeInfoList[i];\n\n    if (selectorsByBrushType[area.brushType](dataIndex, data, area.selectors, area)) {\n      return true;\n    }\n  }\n}\n\nfunction getSelectorsByBrushType(seriesModel) {\n  var brushSelector = seriesModel.brushSelector;\n\n  if (zrUtil.isString(brushSelector)) {\n    var sels = [];\n    zrUtil.each(selector, function (selectorsByElementType, brushType) {\n      sels[brushType] = function (dataIndex, data, selectors, area) {\n        var itemLayout = data.getItemLayout(dataIndex);\n        return selectorsByElementType[brushSelector](itemLayout, selectors, area);\n      };\n    });\n    return sels;\n  } else if (zrUtil.isFunction(brushSelector)) {\n    var bSelector = {};\n    zrUtil.each(selector, function (sel, brushType) {\n      bSelector[brushType] = brushSelector;\n    });\n    return bSelector;\n  }\n\n  return brushSelector;\n}\n\nfunction brushModelNotControll(brushModel, seriesIndex) {\n  var seriesIndices = brushModel.option.seriesIndex;\n  return seriesIndices != null && seriesIndices !== 'all' && (zrUtil.isArray(seriesIndices) ? zrUtil.indexOf(seriesIndices, seriesIndex) < 0 : seriesIndex !== seriesIndices);\n}\n\nfunction bindSelector(area) {\n  var selectors = area.selectors = {};\n  zrUtil.each(selector[area.brushType], function (selFn, elType) {\n    // Do not use function binding or curry for performance.\n    selectors[elType] = function (itemLayout) {\n      return selFn(itemLayout, selectors, area);\n    };\n  });\n  return area;\n}\n\nvar boundingRectBuilders = {\n  lineX: zrUtil.noop,\n  lineY: zrUtil.noop,\n  rect: function (area) {\n    return getBoundingRectFromMinMax(area.range);\n  },\n  polygon: function (area) {\n    var minMax;\n    var range = area.range;\n\n    for (var i = 0, len = range.length; i < len; i++) {\n      minMax = minMax || [[Infinity, -Infinity], [Infinity, -Infinity]];\n      var rg = range[i];\n      rg[0] < minMax[0][0] && (minMax[0][0] = rg[0]);\n      rg[0] > minMax[0][1] && (minMax[0][1] = rg[0]);\n      rg[1] < minMax[1][0] && (minMax[1][0] = rg[1]);\n      rg[1] > minMax[1][1] && (minMax[1][1] = rg[1]);\n    }\n\n    return minMax && getBoundingRectFromMinMax(minMax);\n  }\n};\n\nfunction getBoundingRectFromMinMax(minMax) {\n  return new BoundingRect(minMax[0][0], minMax[1][0], minMax[0][1] - minMax[0][0], minMax[1][1] - minMax[1][0]);\n}","require(\"../coord/calendar/Calendar\");\n\nrequire(\"../coord/calendar/CalendarModel\");\n\nrequire(\"./calendar/CalendarView\");","var echarts = require(\"../../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar formatUtil = require(\"../../util/format\");\n\nvar numberUtil = require(\"../../util/number\");\n\nvar MONTH_TEXT = {\n  EN: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n  CN: ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月']\n};\nvar WEEK_TEXT = {\n  EN: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n  CN: ['日', '一', '二', '三', '四', '五', '六']\n};\n\nvar _default = echarts.extendComponentView({\n  type: 'calendar',\n\n  /**\n   * top/left line points\n   *  @private\n   */\n  _tlpoints: null,\n\n  /**\n   * bottom/right line points\n   *  @private\n   */\n  _blpoints: null,\n\n  /**\n   * first day of month\n   *  @private\n   */\n  _firstDayOfMonth: null,\n\n  /**\n   * first day point of month\n   *  @private\n   */\n  _firstDayPoints: null,\n  render: function (calendarModel, ecModel, api) {\n    var group = this.group;\n    group.removeAll();\n    var coordSys = calendarModel.coordinateSystem; // range info\n\n    var rangeData = coordSys.getRangeInfo();\n    var orient = coordSys.getOrient();\n\n    this._renderDayRect(calendarModel, rangeData, group); // _renderLines must be called prior to following function\n\n\n    this._renderLines(calendarModel, rangeData, orient, group);\n\n    this._renderYearText(calendarModel, rangeData, orient, group);\n\n    this._renderMonthText(calendarModel, orient, group);\n\n    this._renderWeekText(calendarModel, rangeData, orient, group);\n  },\n  // render day rect\n  _renderDayRect: function (calendarModel, rangeData, group) {\n    var coordSys = calendarModel.coordinateSystem;\n    var itemRectStyleModel = calendarModel.getModel('itemStyle').getItemStyle();\n    var sw = coordSys.getCellWidth();\n    var sh = coordSys.getCellHeight();\n\n    for (var i = rangeData.start.time; i <= rangeData.end.time; i = coordSys.getNextNDay(i, 1).time) {\n      var point = coordSys.dataToRect([i], false).tl; // every rect\n\n      var rect = new graphic.Rect({\n        shape: {\n          x: point[0],\n          y: point[1],\n          width: sw,\n          height: sh\n        },\n        cursor: 'default',\n        style: itemRectStyleModel\n      });\n      group.add(rect);\n    }\n  },\n  // render separate line\n  _renderLines: function (calendarModel, rangeData, orient, group) {\n    var self = this;\n    var coordSys = calendarModel.coordinateSystem;\n    var lineStyleModel = calendarModel.getModel('splitLine.lineStyle').getLineStyle();\n    var show = calendarModel.get('splitLine.show');\n    var lineWidth = lineStyleModel.lineWidth;\n    this._tlpoints = [];\n    this._blpoints = [];\n    this._firstDayOfMonth = [];\n    this._firstDayPoints = [];\n    var firstDay = rangeData.start;\n\n    for (var i = 0; firstDay.time <= rangeData.end.time; i++) {\n      addPoints(firstDay.formatedDate);\n\n      if (i === 0) {\n        firstDay = coordSys.getDateInfo(rangeData.start.y + '-' + rangeData.start.m);\n      }\n\n      var date = firstDay.date;\n      date.setMonth(date.getMonth() + 1);\n      firstDay = coordSys.getDateInfo(date);\n    }\n\n    addPoints(coordSys.getNextNDay(rangeData.end.time, 1).formatedDate);\n\n    function addPoints(date) {\n      self._firstDayOfMonth.push(coordSys.getDateInfo(date));\n\n      self._firstDayPoints.push(coordSys.dataToRect([date], false).tl);\n\n      var points = self._getLinePointsOfOneWeek(calendarModel, date, orient);\n\n      self._tlpoints.push(points[0]);\n\n      self._blpoints.push(points[points.length - 1]);\n\n      show && self._drawSplitline(points, lineStyleModel, group);\n    } // render top/left line\n\n\n    show && this._drawSplitline(self._getEdgesPoints(self._tlpoints, lineWidth, orient), lineStyleModel, group); // render bottom/right line\n\n    show && this._drawSplitline(self._getEdgesPoints(self._blpoints, lineWidth, orient), lineStyleModel, group);\n  },\n  // get points at both ends\n  _getEdgesPoints: function (points, lineWidth, orient) {\n    var rs = [points[0].slice(), points[points.length - 1].slice()];\n    var idx = orient === 'horizontal' ? 0 : 1; // both ends of the line are extend half lineWidth\n\n    rs[0][idx] = rs[0][idx] - lineWidth / 2;\n    rs[1][idx] = rs[1][idx] + lineWidth / 2;\n    return rs;\n  },\n  // render split line\n  _drawSplitline: function (points, lineStyleModel, group) {\n    var poyline = new graphic.Polyline({\n      z2: 20,\n      shape: {\n        points: points\n      },\n      style: lineStyleModel\n    });\n    group.add(poyline);\n  },\n  // render month line of one week points\n  _getLinePointsOfOneWeek: function (calendarModel, date, orient) {\n    var coordSys = calendarModel.coordinateSystem;\n    date = coordSys.getDateInfo(date);\n    var points = [];\n\n    for (var i = 0; i < 7; i++) {\n      var tmpD = coordSys.getNextNDay(date.time, i);\n      var point = coordSys.dataToRect([tmpD.time], false);\n      points[2 * tmpD.day] = point.tl;\n      points[2 * tmpD.day + 1] = point[orient === 'horizontal' ? 'bl' : 'tr'];\n    }\n\n    return points;\n  },\n  _formatterLabel: function (formatter, params) {\n    if (typeof formatter === 'string' && formatter) {\n      return formatUtil.formatTplSimple(formatter, params);\n    }\n\n    if (typeof formatter === 'function') {\n      return formatter(params);\n    }\n\n    return params.nameMap;\n  },\n  _yearTextPositionControl: function (textEl, point, orient, position, margin) {\n    point = point.slice();\n    var aligns = ['center', 'bottom'];\n\n    if (position === 'bottom') {\n      point[1] += margin;\n      aligns = ['center', 'top'];\n    } else if (position === 'left') {\n      point[0] -= margin;\n    } else if (position === 'right') {\n      point[0] += margin;\n      aligns = ['center', 'top'];\n    } else {\n      // top\n      point[1] -= margin;\n    }\n\n    var rotate = 0;\n\n    if (position === 'left' || position === 'right') {\n      rotate = Math.PI / 2;\n    }\n\n    return {\n      rotation: rotate,\n      position: point,\n      style: {\n        textAlign: aligns[0],\n        textVerticalAlign: aligns[1]\n      }\n    };\n  },\n  // render year\n  _renderYearText: function (calendarModel, rangeData, orient, group) {\n    var yearLabel = calendarModel.getModel('yearLabel');\n\n    if (!yearLabel.get('show')) {\n      return;\n    }\n\n    var margin = yearLabel.get('margin');\n    var pos = yearLabel.get('position');\n\n    if (!pos) {\n      pos = orient !== 'horizontal' ? 'top' : 'left';\n    }\n\n    var points = [this._tlpoints[this._tlpoints.length - 1], this._blpoints[0]];\n    var xc = (points[0][0] + points[1][0]) / 2;\n    var yc = (points[0][1] + points[1][1]) / 2;\n    var idx = orient === 'horizontal' ? 0 : 1;\n    var posPoints = {\n      top: [xc, points[idx][1]],\n      bottom: [xc, points[1 - idx][1]],\n      left: [points[1 - idx][0], yc],\n      right: [points[idx][0], yc]\n    };\n    var name = rangeData.start.y;\n\n    if (+rangeData.end.y > +rangeData.start.y) {\n      name = name + '-' + rangeData.end.y;\n    }\n\n    var formatter = yearLabel.get('formatter');\n    var params = {\n      start: rangeData.start.y,\n      end: rangeData.end.y,\n      nameMap: name\n    };\n\n    var content = this._formatterLabel(formatter, params);\n\n    var yearText = new graphic.Text({\n      z2: 30\n    });\n    graphic.setTextStyle(yearText.style, yearLabel, {\n      text: content\n    }), yearText.attr(this._yearTextPositionControl(yearText, posPoints[pos], orient, pos, margin));\n    group.add(yearText);\n  },\n  _monthTextPositionControl: function (point, isCenter, orient, position, margin) {\n    var align = 'left';\n    var vAlign = 'top';\n    var x = point[0];\n    var y = point[1];\n\n    if (orient === 'horizontal') {\n      y = y + margin;\n\n      if (isCenter) {\n        align = 'center';\n      }\n\n      if (position === 'start') {\n        vAlign = 'bottom';\n      }\n    } else {\n      x = x + margin;\n\n      if (isCenter) {\n        vAlign = 'middle';\n      }\n\n      if (position === 'start') {\n        align = 'right';\n      }\n    }\n\n    return {\n      x: x,\n      y: y,\n      textAlign: align,\n      textVerticalAlign: vAlign\n    };\n  },\n  // render month and year text\n  _renderMonthText: function (calendarModel, orient, group) {\n    var monthLabel = calendarModel.getModel('monthLabel');\n\n    if (!monthLabel.get('show')) {\n      return;\n    }\n\n    var nameMap = monthLabel.get('nameMap');\n    var margin = monthLabel.get('margin');\n    var pos = monthLabel.get('position');\n    var align = monthLabel.get('align');\n    var termPoints = [this._tlpoints, this._blpoints];\n\n    if (zrUtil.isString(nameMap)) {\n      nameMap = MONTH_TEXT[nameMap.toUpperCase()] || [];\n    }\n\n    var idx = pos === 'start' ? 0 : 1;\n    var axis = orient === 'horizontal' ? 0 : 1;\n    margin = pos === 'start' ? -margin : margin;\n    var isCenter = align === 'center';\n\n    for (var i = 0; i < termPoints[idx].length - 1; i++) {\n      var tmp = termPoints[idx][i].slice();\n      var firstDay = this._firstDayOfMonth[i];\n\n      if (isCenter) {\n        var firstDayPoints = this._firstDayPoints[i];\n        tmp[axis] = (firstDayPoints[axis] + termPoints[0][i + 1][axis]) / 2;\n      }\n\n      var formatter = monthLabel.get('formatter');\n      var name = nameMap[+firstDay.m - 1];\n      var params = {\n        yyyy: firstDay.y,\n        yy: (firstDay.y + '').slice(2),\n        MM: firstDay.m,\n        M: +firstDay.m,\n        nameMap: name\n      };\n\n      var content = this._formatterLabel(formatter, params);\n\n      var monthText = new graphic.Text({\n        z2: 30\n      });\n      zrUtil.extend(graphic.setTextStyle(monthText.style, monthLabel, {\n        text: content\n      }), this._monthTextPositionControl(tmp, isCenter, orient, pos, margin));\n      group.add(monthText);\n    }\n  },\n  _weekTextPositionControl: function (point, orient, position, margin, cellSize) {\n    var align = 'center';\n    var vAlign = 'middle';\n    var x = point[0];\n    var y = point[1];\n    var isStart = position === 'start';\n\n    if (orient === 'horizontal') {\n      x = x + margin + (isStart ? 1 : -1) * cellSize[0] / 2;\n      align = isStart ? 'right' : 'left';\n    } else {\n      y = y + margin + (isStart ? 1 : -1) * cellSize[1] / 2;\n      vAlign = isStart ? 'bottom' : 'top';\n    }\n\n    return {\n      x: x,\n      y: y,\n      textAlign: align,\n      textVerticalAlign: vAlign\n    };\n  },\n  // render weeks\n  _renderWeekText: function (calendarModel, rangeData, orient, group) {\n    var dayLabel = calendarModel.getModel('dayLabel');\n\n    if (!dayLabel.get('show')) {\n      return;\n    }\n\n    var coordSys = calendarModel.coordinateSystem;\n    var pos = dayLabel.get('position');\n    var nameMap = dayLabel.get('nameMap');\n    var margin = dayLabel.get('margin');\n    var firstDayOfWeek = coordSys.getFirstDayOfWeek();\n\n    if (zrUtil.isString(nameMap)) {\n      nameMap = WEEK_TEXT[nameMap.toUpperCase()] || [];\n    }\n\n    var start = coordSys.getNextNDay(rangeData.end.time, 7 - rangeData.lweek).time;\n    var cellSize = [coordSys.getCellWidth(), coordSys.getCellHeight()];\n    margin = numberUtil.parsePercent(margin, cellSize[orient === 'horizontal' ? 0 : 1]);\n\n    if (pos === 'start') {\n      start = coordSys.getNextNDay(rangeData.start.time, -(7 + rangeData.fweek)).time;\n      margin = -margin;\n    }\n\n    for (var i = 0; i < 7; i++) {\n      var tmpD = coordSys.getNextNDay(start, i);\n      var point = coordSys.dataToRect([tmpD.time], false).center;\n      var day = i;\n      day = Math.abs((i + firstDayOfWeek) % 7);\n      var weekText = new graphic.Text({\n        z2: 30\n      });\n      zrUtil.extend(graphic.setTextStyle(weekText.style, dayLabel, {\n        text: nameMap[day]\n      }), this._weekTextPositionControl(point, orient, pos, margin, cellSize));\n      group.add(weekText);\n    }\n  }\n});\n\nmodule.exports = _default;","require(\"./dataZoom/typeDefaulter\");\n\nrequire(\"./dataZoom/DataZoomModel\");\n\nrequire(\"./dataZoom/DataZoomView\");\n\nrequire(\"./dataZoom/SliderZoomModel\");\n\nrequire(\"./dataZoom/SliderZoomView\");\n\nrequire(\"./dataZoom/InsideZoomModel\");\n\nrequire(\"./dataZoom/InsideZoomView\");\n\nrequire(\"./dataZoom/dataZoomProcessor\");\n\nrequire(\"./dataZoom/dataZoomAction\");","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar numberUtil = require(\"../../util/number\");\n\nvar helper = require(\"./helper\");\n\nvar each = zrUtil.each;\nvar asc = numberUtil.asc;\n/**\n * Operate single axis.\n * One axis can only operated by one axis operator.\n * Different dataZoomModels may be defined to operate the same axis.\n * (i.e. 'inside' data zoom and 'slider' data zoom components)\n * So dataZoomModels share one axisProxy in that case.\n *\n * @class\n */\n\nvar AxisProxy = function (dimName, axisIndex, dataZoomModel, ecModel) {\n  /**\n   * @private\n   * @type {string}\n   */\n  this._dimName = dimName;\n  /**\n   * @private\n   */\n\n  this._axisIndex = axisIndex;\n  /**\n   * @private\n   * @type {Array.<number>}\n   */\n\n  this._valueWindow;\n  /**\n   * @private\n   * @type {Array.<number>}\n   */\n\n  this._percentWindow;\n  /**\n   * @private\n   * @type {Array.<number>}\n   */\n\n  this._dataExtent;\n  /**\n   * {minSpan, maxSpan, minValueSpan, maxValueSpan}\n   * @private\n   * @type {Object}\n   */\n\n  this._minMaxSpan;\n  /**\n   * @readOnly\n   * @type {module: echarts/model/Global}\n   */\n\n  this.ecModel = ecModel;\n  /**\n   * @private\n   * @type {module: echarts/component/dataZoom/DataZoomModel}\n   */\n\n  this._dataZoomModel = dataZoomModel;\n  /**\n   * @readOnly\n   * @private\n   */\n\n  this.hasSeriesStacked;\n};\n\nAxisProxy.prototype = {\n  constructor: AxisProxy,\n\n  /**\n   * Whether the axisProxy is hosted by dataZoomModel.\n   *\n   * @public\n   * @param {module: echarts/component/dataZoom/DataZoomModel} dataZoomModel\n   * @return {boolean}\n   */\n  hostedBy: function (dataZoomModel) {\n    return this._dataZoomModel === dataZoomModel;\n  },\n\n  /**\n   * @return {Array.<number>} Value can only be NaN or finite value.\n   */\n  getDataValueWindow: function () {\n    return this._valueWindow.slice();\n  },\n\n  /**\n   * @return {Array.<number>}\n   */\n  getDataPercentWindow: function () {\n    return this._percentWindow.slice();\n  },\n\n  /**\n   * @public\n   * @param {number} axisIndex\n   * @return {Array} seriesModels\n   */\n  getTargetSeriesModels: function () {\n    var seriesModels = [];\n    var ecModel = this.ecModel;\n    ecModel.eachSeries(function (seriesModel) {\n      if (helper.isCoordSupported(seriesModel.get('coordinateSystem'))) {\n        var dimName = this._dimName;\n        var axisModel = ecModel.queryComponents({\n          mainType: dimName + 'Axis',\n          index: seriesModel.get(dimName + 'AxisIndex'),\n          id: seriesModel.get(dimName + 'AxisId')\n        })[0];\n\n        if (this._axisIndex === (axisModel && axisModel.componentIndex)) {\n          seriesModels.push(seriesModel);\n        }\n      }\n    }, this);\n    return seriesModels;\n  },\n  getAxisModel: function () {\n    return this.ecModel.getComponent(this._dimName + 'Axis', this._axisIndex);\n  },\n  getOtherAxisModel: function () {\n    var axisDim = this._dimName;\n    var ecModel = this.ecModel;\n    var axisModel = this.getAxisModel();\n    var isCartesian = axisDim === 'x' || axisDim === 'y';\n    var otherAxisDim;\n    var coordSysIndexName;\n\n    if (isCartesian) {\n      coordSysIndexName = 'gridIndex';\n      otherAxisDim = axisDim === 'x' ? 'y' : 'x';\n    } else {\n      coordSysIndexName = 'polarIndex';\n      otherAxisDim = axisDim === 'angle' ? 'radius' : 'angle';\n    }\n\n    var foundOtherAxisModel;\n    ecModel.eachComponent(otherAxisDim + 'Axis', function (otherAxisModel) {\n      if ((otherAxisModel.get(coordSysIndexName) || 0) === (axisModel.get(coordSysIndexName) || 0)) {\n        foundOtherAxisModel = otherAxisModel;\n      }\n    });\n    return foundOtherAxisModel;\n  },\n  getMinMaxSpan: function () {\n    return zrUtil.clone(this._minMaxSpan);\n  },\n\n  /**\n   * Only calculate by given range and this._dataExtent, do not change anything.\n   *\n   * @param {Object} opt\n   * @param {number} [opt.start]\n   * @param {number} [opt.end]\n   * @param {number} [opt.startValue]\n   * @param {number} [opt.endValue]\n   */\n  calculateDataWindow: function (opt) {\n    var dataExtent = this._dataExtent;\n    var axisModel = this.getAxisModel();\n    var scale = axisModel.axis.scale;\n\n    var rangePropMode = this._dataZoomModel.getRangePropMode();\n\n    var percentExtent = [0, 100];\n    var percentWindow = [opt.start, opt.end];\n    var valueWindow = [];\n    each(['startValue', 'endValue'], function (prop) {\n      valueWindow.push(opt[prop] != null ? scale.parse(opt[prop]) : null);\n    }); // Normalize bound.\n\n    each([0, 1], function (idx) {\n      var boundValue = valueWindow[idx];\n      var boundPercent = percentWindow[idx]; // Notice: dataZoom is based either on `percentProp` ('start', 'end') or\n      // on `valueProp` ('startValue', 'endValue'). The former one is suitable\n      // for cases that a dataZoom component controls multiple axes with different\n      // unit or extent, and the latter one is suitable for accurate zoom by pixel\n      // (e.g., in dataZoomSelect). `valueProp` can be calculated from `percentProp`,\n      // but it is awkward that `percentProp` can not be obtained from `valueProp`\n      // accurately (because all of values that are overflow the `dataExtent` will\n      // be calculated to percent '100%'). So we have to use\n      // `dataZoom.getRangePropMode()` to mark which prop is used.\n      // `rangePropMode` is updated only when setOption or dispatchAction, otherwise\n      // it remains its original value.\n\n      if (rangePropMode[idx] === 'percent') {\n        if (boundPercent == null) {\n          boundPercent = percentExtent[idx];\n        } // Use scale.parse to math round for category or time axis.\n\n\n        boundValue = scale.parse(numberUtil.linearMap(boundPercent, percentExtent, dataExtent, true));\n      } else {\n        // Calculating `percent` from `value` may be not accurate, because\n        // This calculation can not be inversed, because all of values that\n        // are overflow the `dataExtent` will be calculated to percent '100%'\n        boundPercent = numberUtil.linearMap(boundValue, dataExtent, percentExtent, true);\n      } // valueWindow[idx] = round(boundValue);\n      // percentWindow[idx] = round(boundPercent);\n\n\n      valueWindow[idx] = boundValue;\n      percentWindow[idx] = boundPercent;\n    });\n    return {\n      valueWindow: asc(valueWindow),\n      percentWindow: asc(percentWindow)\n    };\n  },\n\n  /**\n   * Notice: reset should not be called before series.restoreData() called,\n   * so it is recommanded to be called in \"process stage\" but not \"model init\n   * stage\".\n   *\n   * @param {module: echarts/component/dataZoom/DataZoomModel} dataZoomModel\n   */\n  reset: function (dataZoomModel) {\n    if (dataZoomModel !== this._dataZoomModel) {\n      return;\n    }\n\n    var targetSeries = this.getTargetSeriesModels(); // Culculate data window and data extent, and record them.\n\n    this._dataExtent = calculateDataExtent(this, this._dimName, targetSeries);\n    this.hasSeriesStacked = false;\n    each(targetSeries, function (series) {\n      var data = series.getData();\n      var dataDim = data.mapDimension(this._dimName);\n\n      if (data.isStacked(dataDim)) {\n        this.hasSeriesStacked = true;\n      }\n    }, this);\n    var dataWindow = this.calculateDataWindow(dataZoomModel.option);\n    this._valueWindow = dataWindow.valueWindow;\n    this._percentWindow = dataWindow.percentWindow;\n    setMinMaxSpan(this); // Update axis setting then.\n\n    setAxisModel(this);\n  },\n\n  /**\n   * @param {module: echarts/component/dataZoom/DataZoomModel} dataZoomModel\n   */\n  restore: function (dataZoomModel) {\n    if (dataZoomModel !== this._dataZoomModel) {\n      return;\n    }\n\n    this._valueWindow = this._percentWindow = null;\n    setAxisModel(this, true);\n  },\n\n  /**\n   * @param {module: echarts/component/dataZoom/DataZoomModel} dataZoomModel\n   */\n  filterData: function (dataZoomModel, api) {\n    if (dataZoomModel !== this._dataZoomModel) {\n      return;\n    }\n\n    var axisDim = this._dimName;\n    var seriesModels = this.getTargetSeriesModels();\n    var filterMode = dataZoomModel.get('filterMode');\n    var valueWindow = this._valueWindow;\n\n    if (filterMode === 'none') {\n      return;\n    } // FIXME\n    // Toolbox may has dataZoom injected. And if there are stacked bar chart\n    // with NaN data, NaN will be filtered and stack will be wrong.\n    // So we need to force the mode to be set empty.\n    // In fect, it is not a big deal that do not support filterMode-'filter'\n    // when using toolbox#dataZoom, utill tooltip#dataZoom support \"single axis\n    // selection\" some day, which might need \"adapt to data extent on the\n    // otherAxis\", which is disabled by filterMode-'empty'.\n\n\n    var otherAxisModel = this.getOtherAxisModel();\n\n    if (dataZoomModel.get('$fromToolbox') && otherAxisModel && otherAxisModel.hasSeriesStacked) {\n      filterMode = 'empty';\n    } // TODO\n    // filterMode 'weakFilter' and 'empty' is not optimized for huge data yet.\n    // Process series data\n\n\n    each(seriesModels, function (seriesModel) {\n      var seriesData = seriesModel.getData();\n      var dataDims = seriesData.mapDimension(axisDim, true);\n\n      if (filterMode === 'weakFilter') {\n        seriesData.filterSelf(function (dataIndex) {\n          var leftOut;\n          var rightOut;\n          var hasValue;\n\n          for (var i = 0; i < dataDims.length; i++) {\n            var value = seriesData.get(dataDims[i], dataIndex);\n            var thisHasValue = !isNaN(value);\n            var thisLeftOut = value < valueWindow[0];\n            var thisRightOut = value > valueWindow[1];\n\n            if (thisHasValue && !thisLeftOut && !thisRightOut) {\n              return true;\n            }\n\n            thisHasValue && (hasValue = true);\n            thisLeftOut && (leftOut = true);\n            thisRightOut && (rightOut = true);\n          } // If both left out and right out, do not filter.\n\n\n          return hasValue && leftOut && rightOut;\n        });\n      } else {\n        each(dataDims, function (dim) {\n          if (filterMode === 'empty') {\n            seriesModel.setData(seriesData.map(dim, function (value) {\n              return !isInWindow(value) ? NaN : value;\n            }));\n          } else {\n            var range = {};\n            range[dim] = valueWindow; // console.time('select');\n\n            seriesData.selectRange(range); // console.timeEnd('select');\n          }\n        });\n      }\n\n      each(dataDims, function (dim) {\n        seriesData.setApproximateExtent(valueWindow, dim);\n      });\n    });\n\n    function isInWindow(value) {\n      return value >= valueWindow[0] && value <= valueWindow[1];\n    }\n  }\n};\n\nfunction calculateDataExtent(axisProxy, axisDim, seriesModels) {\n  var dataExtent = [Infinity, -Infinity];\n  each(seriesModels, function (seriesModel) {\n    var seriesData = seriesModel.getData();\n\n    if (seriesData) {\n      each(seriesData.mapDimension(axisDim, true), function (dim) {\n        var seriesExtent = seriesData.getApproximateExtent(dim);\n        seriesExtent[0] < dataExtent[0] && (dataExtent[0] = seriesExtent[0]);\n        seriesExtent[1] > dataExtent[1] && (dataExtent[1] = seriesExtent[1]);\n      });\n    }\n  });\n\n  if (dataExtent[1] < dataExtent[0]) {\n    dataExtent = [NaN, NaN];\n  } // It is important to get \"consistent\" extent when more then one axes is\n  // controlled by a `dataZoom`, otherwise those axes will not be synchronized\n  // when zooming. But it is difficult to know what is \"consistent\", considering\n  // axes have different type or even different meanings (For example, two\n  // time axes are used to compare data of the same date in different years).\n  // So basically dataZoom just obtains extent by series.data (in category axis\n  // extent can be obtained from axis.data).\n  // Nevertheless, user can set min/max/scale on axes to make extent of axes\n  // consistent.\n\n\n  fixExtentByAxis(axisProxy, dataExtent);\n  return dataExtent;\n}\n\nfunction fixExtentByAxis(axisProxy, dataExtent) {\n  var axisModel = axisProxy.getAxisModel();\n  var min = axisModel.getMin(true); // For category axis, if min/max/scale are not set, extent is determined\n  // by axis.data by default.\n\n  var isCategoryAxis = axisModel.get('type') === 'category';\n  var axisDataLen = isCategoryAxis && axisModel.getCategories().length;\n\n  if (min != null && min !== 'dataMin' && typeof min !== 'function') {\n    dataExtent[0] = min;\n  } else if (isCategoryAxis) {\n    dataExtent[0] = axisDataLen > 0 ? 0 : NaN;\n  }\n\n  var max = axisModel.getMax(true);\n\n  if (max != null && max !== 'dataMax' && typeof max !== 'function') {\n    dataExtent[1] = max;\n  } else if (isCategoryAxis) {\n    dataExtent[1] = axisDataLen > 0 ? axisDataLen - 1 : NaN;\n  }\n\n  if (!axisModel.get('scale', true)) {\n    dataExtent[0] > 0 && (dataExtent[0] = 0);\n    dataExtent[1] < 0 && (dataExtent[1] = 0);\n  } // For value axis, if min/max/scale are not set, we just use the extent obtained\n  // by series data, which may be a little different from the extent calculated by\n  // `axisHelper.getScaleExtent`. But the different just affects the experience a\n  // little when zooming. So it will not be fixed until some users require it strongly.\n\n\n  return dataExtent;\n}\n\nfunction setAxisModel(axisProxy, isRestore) {\n  var axisModel = axisProxy.getAxisModel();\n  var percentWindow = axisProxy._percentWindow;\n  var valueWindow = axisProxy._valueWindow;\n\n  if (!percentWindow) {\n    return;\n  } // [0, 500]: arbitrary value, guess axis extent.\n\n\n  var precision = numberUtil.getPixelPrecision(valueWindow, [0, 500]);\n  precision = Math.min(precision, 20); // isRestore or isFull\n\n  var useOrigin = isRestore || percentWindow[0] === 0 && percentWindow[1] === 100;\n  axisModel.setRange(useOrigin ? null : +valueWindow[0].toFixed(precision), useOrigin ? null : +valueWindow[1].toFixed(precision));\n}\n\nfunction setMinMaxSpan(axisProxy) {\n  var minMaxSpan = axisProxy._minMaxSpan = {};\n  var dataZoomModel = axisProxy._dataZoomModel;\n  each(['min', 'max'], function (minMax) {\n    minMaxSpan[minMax + 'Span'] = dataZoomModel.get(minMax + 'Span'); // minValueSpan and maxValueSpan has higher priority than minSpan and maxSpan\n\n    var valueSpan = dataZoomModel.get(minMax + 'ValueSpan');\n\n    if (valueSpan != null) {\n      minMaxSpan[minMax + 'ValueSpan'] = valueSpan;\n      valueSpan = axisProxy.getAxisModel().axis.scale.parse(valueSpan);\n\n      if (valueSpan != null) {\n        var dataExtent = axisProxy._dataExtent;\n        minMaxSpan[minMax + 'Span'] = numberUtil.linearMap(dataExtent[0] + valueSpan, dataExtent, [0, 100], true);\n      }\n    }\n  });\n}\n\nvar _default = AxisProxy;\nmodule.exports = _default;","var _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar echarts = require(\"../../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar env = require(\"zrender/lib/core/env\");\n\nvar modelUtil = require(\"../../util/model\");\n\nvar helper = require(\"./helper\");\n\nvar AxisProxy = require(\"./AxisProxy\");\n\nvar each = zrUtil.each;\nvar eachAxisDim = helper.eachAxisDim;\nvar DataZoomModel = echarts.extendComponentModel({\n  type: 'dataZoom',\n  dependencies: ['xAxis', 'yAxis', 'zAxis', 'radiusAxis', 'angleAxis', 'singleAxis', 'series'],\n\n  /**\n   * @protected\n   */\n  defaultOption: {\n    zlevel: 0,\n    z: 4,\n    // Higher than normal component (z: 2).\n    orient: null,\n    // Default auto by axisIndex. Possible value: 'horizontal', 'vertical'.\n    xAxisIndex: null,\n    // Default the first horizontal category axis.\n    yAxisIndex: null,\n    // Default the first vertical category axis.\n    filterMode: 'filter',\n    // Possible values: 'filter' or 'empty' or 'weakFilter'.\n    // 'filter': data items which are out of window will be removed. This option is\n    //          applicable when filtering outliers. For each data item, it will be\n    //          filtered if one of the relevant dimensions is out of the window.\n    // 'weakFilter': data items which are out of window will be removed. This option\n    //          is applicable when filtering outliers. For each data item, it will be\n    //          filtered only if all  of the relevant dimensions are out of the same\n    //          side of the window.\n    // 'empty': data items which are out of window will be set to empty.\n    //          This option is applicable when user should not neglect\n    //          that there are some data items out of window.\n    // 'none': Do not filter.\n    // Taking line chart as an example, line will be broken in\n    // the filtered points when filterModel is set to 'empty', but\n    // be connected when set to 'filter'.\n    throttle: null,\n    // Dispatch action by the fixed rate, avoid frequency.\n    // default 100. Do not throttle when use null/undefined.\n    // If animation === true and animationDurationUpdate > 0,\n    // default value is 100, otherwise 20.\n    start: 0,\n    // Start percent. 0 ~ 100\n    end: 100,\n    // End percent. 0 ~ 100\n    startValue: null,\n    // Start value. If startValue specified, start is ignored.\n    endValue: null,\n    // End value. If endValue specified, end is ignored.\n    minSpan: null,\n    // 0 ~ 100\n    maxSpan: null,\n    // 0 ~ 100\n    minValueSpan: null,\n    // The range of dataZoom can not be smaller than that.\n    maxValueSpan: null,\n    // The range of dataZoom can not be larger than that.\n    rangeMode: null // Array, can be 'value' or 'percent'.\n\n  },\n\n  /**\n   * @override\n   */\n  init: function (option, parentModel, ecModel) {\n    /**\n     * key like x_0, y_1\n     * @private\n     * @type {Object}\n     */\n    this._dataIntervalByAxis = {};\n    /**\n     * @private\n     */\n\n    this._dataInfo = {};\n    /**\n     * key like x_0, y_1\n     * @private\n     */\n\n    this._axisProxies = {};\n    /**\n     * @readOnly\n     */\n\n    this.textStyleModel;\n    /**\n     * @private\n     */\n\n    this._autoThrottle = true;\n    /**\n     * 'percent' or 'value'\n     * @private\n     */\n\n    this._rangePropMode = ['percent', 'percent'];\n    var rawOption = retrieveRaw(option);\n    this.mergeDefaultAndTheme(option, ecModel);\n    this.doInit(rawOption);\n  },\n\n  /**\n   * @override\n   */\n  mergeOption: function (newOption) {\n    var rawOption = retrieveRaw(newOption); //FIX #2591\n\n    zrUtil.merge(this.option, newOption, true);\n    this.doInit(rawOption);\n  },\n\n  /**\n   * @protected\n   */\n  doInit: function (rawOption) {\n    var thisOption = this.option; // Disable realtime view update if canvas is not supported.\n\n    if (!env.canvasSupported) {\n      thisOption.realtime = false;\n    }\n\n    this._setDefaultThrottle(rawOption);\n\n    updateRangeUse(this, rawOption);\n    each([['start', 'startValue'], ['end', 'endValue']], function (names, index) {\n      // start/end has higher priority over startValue/endValue if they\n      // both set, but we should make chart.setOption({endValue: 1000})\n      // effective, rather than chart.setOption({endValue: 1000, end: null}).\n      if (this._rangePropMode[index] === 'value') {\n        thisOption[names[0]] = null;\n      } // Otherwise do nothing and use the merge result.\n\n    }, this);\n    this.textStyleModel = this.getModel('textStyle');\n\n    this._resetTarget();\n\n    this._giveAxisProxies();\n  },\n\n  /**\n   * @private\n   */\n  _giveAxisProxies: function () {\n    var axisProxies = this._axisProxies;\n    this.eachTargetAxis(function (dimNames, axisIndex, dataZoomModel, ecModel) {\n      var axisModel = this.dependentModels[dimNames.axis][axisIndex]; // If exists, share axisProxy with other dataZoomModels.\n\n      var axisProxy = axisModel.__dzAxisProxy || ( // Use the first dataZoomModel as the main model of axisProxy.\n      axisModel.__dzAxisProxy = new AxisProxy(dimNames.name, axisIndex, this, ecModel)); // FIXME\n      // dispose __dzAxisProxy\n\n      axisProxies[dimNames.name + '_' + axisIndex] = axisProxy;\n    }, this);\n  },\n\n  /**\n   * @private\n   */\n  _resetTarget: function () {\n    var thisOption = this.option;\n\n    var autoMode = this._judgeAutoMode();\n\n    eachAxisDim(function (dimNames) {\n      var axisIndexName = dimNames.axisIndex;\n      thisOption[axisIndexName] = modelUtil.normalizeToArray(thisOption[axisIndexName]);\n    }, this);\n\n    if (autoMode === 'axisIndex') {\n      this._autoSetAxisIndex();\n    } else if (autoMode === 'orient') {\n      this._autoSetOrient();\n    }\n  },\n\n  /**\n   * @private\n   */\n  _judgeAutoMode: function () {\n    // Auto set only works for setOption at the first time.\n    // The following is user's reponsibility. So using merged\n    // option is OK.\n    var thisOption = this.option;\n    var hasIndexSpecified = false;\n    eachAxisDim(function (dimNames) {\n      // When user set axisIndex as a empty array, we think that user specify axisIndex\n      // but do not want use auto mode. Because empty array may be encountered when\n      // some error occured.\n      if (thisOption[dimNames.axisIndex] != null) {\n        hasIndexSpecified = true;\n      }\n    }, this);\n    var orient = thisOption.orient;\n\n    if (orient == null && hasIndexSpecified) {\n      return 'orient';\n    } else if (!hasIndexSpecified) {\n      if (orient == null) {\n        thisOption.orient = 'horizontal';\n      }\n\n      return 'axisIndex';\n    }\n  },\n\n  /**\n   * @private\n   */\n  _autoSetAxisIndex: function () {\n    var autoAxisIndex = true;\n    var orient = this.get('orient', true);\n    var thisOption = this.option;\n    var dependentModels = this.dependentModels;\n\n    if (autoAxisIndex) {\n      // Find axis that parallel to dataZoom as default.\n      var dimName = orient === 'vertical' ? 'y' : 'x';\n\n      if (dependentModels[dimName + 'Axis'].length) {\n        thisOption[dimName + 'AxisIndex'] = [0];\n        autoAxisIndex = false;\n      } else {\n        each(dependentModels.singleAxis, function (singleAxisModel) {\n          if (autoAxisIndex && singleAxisModel.get('orient', true) === orient) {\n            thisOption.singleAxisIndex = [singleAxisModel.componentIndex];\n            autoAxisIndex = false;\n          }\n        });\n      }\n    }\n\n    if (autoAxisIndex) {\n      // Find the first category axis as default. (consider polar)\n      eachAxisDim(function (dimNames) {\n        if (!autoAxisIndex) {\n          return;\n        }\n\n        var axisIndices = [];\n        var axisModels = this.dependentModels[dimNames.axis];\n\n        if (axisModels.length && !axisIndices.length) {\n          for (var i = 0, len = axisModels.length; i < len; i++) {\n            if (axisModels[i].get('type') === 'category') {\n              axisIndices.push(i);\n            }\n          }\n        }\n\n        thisOption[dimNames.axisIndex] = axisIndices;\n\n        if (axisIndices.length) {\n          autoAxisIndex = false;\n        }\n      }, this);\n    }\n\n    if (autoAxisIndex) {\n      // FIXME\n      // 这里是兼容ec2的写法（没指定xAxisIndex和yAxisIndex时把scatter和双数值轴折柱纳入dataZoom控制），\n      // 但是实际是否需要Grid.js#getScaleByOption来判断（考虑time，log等axis type）？\n      // If both dataZoom.xAxisIndex and dataZoom.yAxisIndex is not specified,\n      // dataZoom component auto adopts series that reference to\n      // both xAxis and yAxis which type is 'value'.\n      this.ecModel.eachSeries(function (seriesModel) {\n        if (this._isSeriesHasAllAxesTypeOf(seriesModel, 'value')) {\n          eachAxisDim(function (dimNames) {\n            var axisIndices = thisOption[dimNames.axisIndex];\n            var axisIndex = seriesModel.get(dimNames.axisIndex);\n            var axisId = seriesModel.get(dimNames.axisId);\n            var axisModel = seriesModel.ecModel.queryComponents({\n              mainType: dimNames.axis,\n              index: axisIndex,\n              id: axisId\n            })[0];\n            axisIndex = axisModel.componentIndex;\n\n            if (zrUtil.indexOf(axisIndices, axisIndex) < 0) {\n              axisIndices.push(axisIndex);\n            }\n          });\n        }\n      }, this);\n    }\n  },\n\n  /**\n   * @private\n   */\n  _autoSetOrient: function () {\n    var dim; // Find the first axis\n\n    this.eachTargetAxis(function (dimNames) {\n      !dim && (dim = dimNames.name);\n    }, this);\n    this.option.orient = dim === 'y' ? 'vertical' : 'horizontal';\n  },\n\n  /**\n   * @private\n   */\n  _isSeriesHasAllAxesTypeOf: function (seriesModel, axisType) {\n    // FIXME\n    // 需要series的xAxisIndex和yAxisIndex都首先自动设置上。\n    // 例如series.type === scatter时。\n    var is = true;\n    eachAxisDim(function (dimNames) {\n      var seriesAxisIndex = seriesModel.get(dimNames.axisIndex);\n      var axisModel = this.dependentModels[dimNames.axis][seriesAxisIndex];\n\n      if (!axisModel || axisModel.get('type') !== axisType) {\n        is = false;\n      }\n    }, this);\n    return is;\n  },\n\n  /**\n   * @private\n   */\n  _setDefaultThrottle: function (rawOption) {\n    // When first time user set throttle, auto throttle ends.\n    if (rawOption.hasOwnProperty('throttle')) {\n      this._autoThrottle = false;\n    }\n\n    if (this._autoThrottle) {\n      var globalOption = this.ecModel.option;\n      this.option.throttle = globalOption.animation && globalOption.animationDurationUpdate > 0 ? 100 : 20;\n    }\n  },\n\n  /**\n   * @public\n   */\n  getFirstTargetAxisModel: function () {\n    var firstAxisModel;\n    eachAxisDim(function (dimNames) {\n      if (firstAxisModel == null) {\n        var indices = this.get(dimNames.axisIndex);\n\n        if (indices.length) {\n          firstAxisModel = this.dependentModels[dimNames.axis][indices[0]];\n        }\n      }\n    }, this);\n    return firstAxisModel;\n  },\n\n  /**\n   * @public\n   * @param {Function} callback param: axisModel, dimNames, axisIndex, dataZoomModel, ecModel\n   */\n  eachTargetAxis: function (callback, context) {\n    var ecModel = this.ecModel;\n    eachAxisDim(function (dimNames) {\n      each(this.get(dimNames.axisIndex), function (axisIndex) {\n        callback.call(context, dimNames, axisIndex, this, ecModel);\n      }, this);\n    }, this);\n  },\n\n  /**\n   * @param {string} dimName\n   * @param {number} axisIndex\n   * @return {module:echarts/component/dataZoom/AxisProxy} If not found, return null/undefined.\n   */\n  getAxisProxy: function (dimName, axisIndex) {\n    return this._axisProxies[dimName + '_' + axisIndex];\n  },\n\n  /**\n   * @param {string} dimName\n   * @param {number} axisIndex\n   * @return {module:echarts/model/Model} If not found, return null/undefined.\n   */\n  getAxisModel: function (dimName, axisIndex) {\n    var axisProxy = this.getAxisProxy(dimName, axisIndex);\n    return axisProxy && axisProxy.getAxisModel();\n  },\n\n  /**\n   * If not specified, set to undefined.\n   *\n   * @public\n   * @param {Object} opt\n   * @param {number} [opt.start]\n   * @param {number} [opt.end]\n   * @param {number} [opt.startValue]\n   * @param {number} [opt.endValue]\n   * @param {boolean} [ignoreUpdateRangeUsg=false]\n   */\n  setRawRange: function (opt, ignoreUpdateRangeUsg) {\n    var option = this.option;\n    each([['start', 'startValue'], ['end', 'endValue']], function (names) {\n      // If only one of 'start' and 'startValue' is not null/undefined, the other\n      // should be cleared, which enable clear the option.\n      // If both of them are not set, keep option with the original value, which\n      // enable use only set start but not set end when calling `dispatchAction`.\n      // The same as 'end' and 'endValue'.\n      if (opt[names[0]] != null || opt[names[1]] != null) {\n        option[names[0]] = opt[names[0]];\n        option[names[1]] = opt[names[1]];\n      }\n    }, this);\n    !ignoreUpdateRangeUsg && updateRangeUse(this, opt);\n  },\n\n  /**\n   * @public\n   * @return {Array.<number>} [startPercent, endPercent]\n   */\n  getPercentRange: function () {\n    var axisProxy = this.findRepresentativeAxisProxy();\n\n    if (axisProxy) {\n      return axisProxy.getDataPercentWindow();\n    }\n  },\n\n  /**\n   * @public\n   * For example, chart.getModel().getComponent('dataZoom').getValueRange('y', 0);\n   *\n   * @param {string} [axisDimName]\n   * @param {number} [axisIndex]\n   * @return {Array.<number>} [startValue, endValue] value can only be '-' or finite number.\n   */\n  getValueRange: function (axisDimName, axisIndex) {\n    if (axisDimName == null && axisIndex == null) {\n      var axisProxy = this.findRepresentativeAxisProxy();\n\n      if (axisProxy) {\n        return axisProxy.getDataValueWindow();\n      }\n    } else {\n      return this.getAxisProxy(axisDimName, axisIndex).getDataValueWindow();\n    }\n  },\n\n  /**\n   * @public\n   * @param {module:echarts/model/Model} [axisModel] If axisModel given, find axisProxy\n   *      corresponding to the axisModel\n   * @return {module:echarts/component/dataZoom/AxisProxy}\n   */\n  findRepresentativeAxisProxy: function (axisModel) {\n    if (axisModel) {\n      return axisModel.__dzAxisProxy;\n    } // Find the first hosted axisProxy\n\n\n    var axisProxies = this._axisProxies;\n\n    for (var key in axisProxies) {\n      if (axisProxies.hasOwnProperty(key) && axisProxies[key].hostedBy(this)) {\n        return axisProxies[key];\n      }\n    } // If no hosted axis find not hosted axisProxy.\n    // Consider this case: dataZoomModel1 and dataZoomModel2 control the same axis,\n    // and the option.start or option.end settings are different. The percentRange\n    // should follow axisProxy.\n    // (We encounter this problem in toolbox data zoom.)\n\n\n    for (var key in axisProxies) {\n      if (axisProxies.hasOwnProperty(key) && !axisProxies[key].hostedBy(this)) {\n        return axisProxies[key];\n      }\n    }\n  },\n\n  /**\n   * @return {Array.<string>}\n   */\n  getRangePropMode: function () {\n    return this._rangePropMode.slice();\n  }\n});\n\nfunction retrieveRaw(option) {\n  var ret = {};\n  each(['start', 'end', 'startValue', 'endValue', 'throttle'], function (name) {\n    option.hasOwnProperty(name) && (ret[name] = option[name]);\n  });\n  return ret;\n}\n\nfunction updateRangeUse(dataZoomModel, rawOption) {\n  var rangePropMode = dataZoomModel._rangePropMode;\n  var rangeModeInOption = dataZoomModel.get('rangeMode');\n  each([['start', 'startValue'], ['end', 'endValue']], function (names, index) {\n    var percentSpecified = rawOption[names[0]] != null;\n    var valueSpecified = rawOption[names[1]] != null;\n\n    if (percentSpecified && !valueSpecified) {\n      rangePropMode[index] = 'percent';\n    } else if (!percentSpecified && valueSpecified) {\n      rangePropMode[index] = 'value';\n    } else if (rangeModeInOption) {\n      rangePropMode[index] = rangeModeInOption[index];\n    } else if (percentSpecified) {\n      // percentSpecified && valueSpecified\n      rangePropMode[index] = 'percent';\n    } // else remain its original setting.\n\n  });\n}\n\nvar _default = DataZoomModel;\nmodule.exports = _default;","var ComponentView = require(\"../../view/Component\");\n\nvar _default = ComponentView.extend({\n  type: 'dataZoom',\n  render: function (dataZoomModel, ecModel, api, payload) {\n    this.dataZoomModel = dataZoomModel;\n    this.ecModel = ecModel;\n    this.api = api;\n  },\n\n  /**\n   * Find the first target coordinate system.\n   *\n   * @protected\n   * @return {Object} {\n   *                   grid: [\n   *                       {model: coord0, axisModels: [axis1, axis3], coordIndex: 1},\n   *                       {model: coord1, axisModels: [axis0, axis2], coordIndex: 0},\n   *                       ...\n   *                   ],  // cartesians must not be null/undefined.\n   *                   polar: [\n   *                       {model: coord0, axisModels: [axis4], coordIndex: 0},\n   *                       ...\n   *                   ],  // polars must not be null/undefined.\n   *                   singleAxis: [\n   *                       {model: coord0, axisModels: [], coordIndex: 0}\n   *                   ]\n   */\n  getTargetCoordInfo: function () {\n    var dataZoomModel = this.dataZoomModel;\n    var ecModel = this.ecModel;\n    var coordSysLists = {};\n    dataZoomModel.eachTargetAxis(function (dimNames, axisIndex) {\n      var axisModel = ecModel.getComponent(dimNames.axis, axisIndex);\n\n      if (axisModel) {\n        var coordModel = axisModel.getCoordSysModel();\n        coordModel && save(coordModel, axisModel, coordSysLists[coordModel.mainType] || (coordSysLists[coordModel.mainType] = []), coordModel.componentIndex);\n      }\n    }, this);\n\n    function save(coordModel, axisModel, store, coordIndex) {\n      var item;\n\n      for (var i = 0; i < store.length; i++) {\n        if (store[i].model === coordModel) {\n          item = store[i];\n          break;\n        }\n      }\n\n      if (!item) {\n        store.push(item = {\n          model: coordModel,\n          axisModels: [],\n          coordIndex: coordIndex\n        });\n      }\n\n      item.axisModels.push(axisModel);\n    }\n\n    return coordSysLists;\n  }\n});\n\nmodule.exports = _default;","var DataZoomModel = require(\"./DataZoomModel\");\n\nvar _default = DataZoomModel.extend({\n  type: 'dataZoom.inside',\n\n  /**\n   * @protected\n   */\n  defaultOption: {\n    disabled: false,\n    // Whether disable this inside zoom.\n    zoomLock: false,\n    // Whether disable zoom but only pan.\n    zoomOnMouseWheel: true,\n    // Can be: true / false / 'shift' / 'ctrl' / 'alt'.\n    moveOnMouseMove: true,\n    // Can be: true / false / 'shift' / 'ctrl' / 'alt'.\n    preventDefaultMouseMove: true\n  }\n});\n\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar DataZoomView = require(\"./DataZoomView\");\n\nvar sliderMove = require(\"../helper/sliderMove\");\n\nvar roams = require(\"./roams\");\n\nvar bind = zrUtil.bind;\nvar InsideZoomView = DataZoomView.extend({\n  type: 'dataZoom.inside',\n\n  /**\n   * @override\n   */\n  init: function (ecModel, api) {\n    /**\n     * 'throttle' is used in this.dispatchAction, so we save range\n     * to avoid missing some 'pan' info.\n     * @private\n     * @type {Array.<number>}\n     */\n    this._range;\n  },\n\n  /**\n   * @override\n   */\n  render: function (dataZoomModel, ecModel, api, payload) {\n    InsideZoomView.superApply(this, 'render', arguments); // Notice: origin this._range should be maintained, and should not be re-fetched\n    // from dataZoomModel when payload.type is 'dataZoom', otherwise 'pan' or 'zoom'\n    // info will be missed because of 'throttle' of this.dispatchAction.\n\n    if (roams.shouldRecordRange(payload, dataZoomModel.id)) {\n      this._range = dataZoomModel.getPercentRange();\n    } // Reset controllers.\n\n\n    zrUtil.each(this.getTargetCoordInfo(), function (coordInfoList, coordSysName) {\n      var allCoordIds = zrUtil.map(coordInfoList, function (coordInfo) {\n        return roams.generateCoordId(coordInfo.model);\n      });\n      zrUtil.each(coordInfoList, function (coordInfo) {\n        var coordModel = coordInfo.model;\n        var dataZoomOption = dataZoomModel.option;\n        roams.register(api, {\n          coordId: roams.generateCoordId(coordModel),\n          allCoordIds: allCoordIds,\n          containsPoint: function (e, x, y) {\n            return coordModel.coordinateSystem.containPoint([x, y]);\n          },\n          dataZoomId: dataZoomModel.id,\n          throttleRate: dataZoomModel.get('throttle', true),\n          panGetRange: bind(this._onPan, this, coordInfo, coordSysName),\n          zoomGetRange: bind(this._onZoom, this, coordInfo, coordSysName),\n          zoomLock: dataZoomOption.zoomLock,\n          disabled: dataZoomOption.disabled,\n          roamControllerOpt: {\n            zoomOnMouseWheel: dataZoomOption.zoomOnMouseWheel,\n            moveOnMouseMove: dataZoomOption.moveOnMouseMove,\n            preventDefaultMouseMove: dataZoomOption.preventDefaultMouseMove\n          }\n        });\n      }, this);\n    }, this);\n  },\n\n  /**\n   * @override\n   */\n  dispose: function () {\n    roams.unregister(this.api, this.dataZoomModel.id);\n    InsideZoomView.superApply(this, 'dispose', arguments);\n    this._range = null;\n  },\n\n  /**\n   * @private\n   */\n  _onPan: function (coordInfo, coordSysName, controller, dx, dy, oldX, oldY, newX, newY) {\n    var range = this._range.slice(); // Calculate transform by the first axis.\n\n\n    var axisModel = coordInfo.axisModels[0];\n\n    if (!axisModel) {\n      return;\n    }\n\n    var directionInfo = getDirectionInfo[coordSysName]([oldX, oldY], [newX, newY], axisModel, controller, coordInfo);\n    var percentDelta = directionInfo.signal * (range[1] - range[0]) * directionInfo.pixel / directionInfo.pixelLength;\n    sliderMove(percentDelta, range, [0, 100], 'all');\n    return this._range = range;\n  },\n\n  /**\n   * @private\n   */\n  _onZoom: function (coordInfo, coordSysName, controller, scale, mouseX, mouseY) {\n    var range = this._range.slice(); // Calculate transform by the first axis.\n\n\n    var axisModel = coordInfo.axisModels[0];\n\n    if (!axisModel) {\n      return;\n    }\n\n    var directionInfo = getDirectionInfo[coordSysName](null, [mouseX, mouseY], axisModel, controller, coordInfo);\n    var percentPoint = (directionInfo.signal > 0 ? directionInfo.pixelStart + directionInfo.pixelLength - directionInfo.pixel : directionInfo.pixel - directionInfo.pixelStart) / directionInfo.pixelLength * (range[1] - range[0]) + range[0];\n    scale = Math.max(1 / scale, 0);\n    range[0] = (range[0] - percentPoint) * scale + percentPoint;\n    range[1] = (range[1] - percentPoint) * scale + percentPoint; // Restrict range.\n\n    var minMaxSpan = this.dataZoomModel.findRepresentativeAxisProxy().getMinMaxSpan();\n    sliderMove(0, range, [0, 100], 0, minMaxSpan.minSpan, minMaxSpan.maxSpan);\n    return this._range = range;\n  }\n});\nvar getDirectionInfo = {\n  grid: function (oldPoint, newPoint, axisModel, controller, coordInfo) {\n    var axis = axisModel.axis;\n    var ret = {};\n    var rect = coordInfo.model.coordinateSystem.getRect();\n    oldPoint = oldPoint || [0, 0];\n\n    if (axis.dim === 'x') {\n      ret.pixel = newPoint[0] - oldPoint[0];\n      ret.pixelLength = rect.width;\n      ret.pixelStart = rect.x;\n      ret.signal = axis.inverse ? 1 : -1;\n    } else {\n      // axis.dim === 'y'\n      ret.pixel = newPoint[1] - oldPoint[1];\n      ret.pixelLength = rect.height;\n      ret.pixelStart = rect.y;\n      ret.signal = axis.inverse ? -1 : 1;\n    }\n\n    return ret;\n  },\n  polar: function (oldPoint, newPoint, axisModel, controller, coordInfo) {\n    var axis = axisModel.axis;\n    var ret = {};\n    var polar = coordInfo.model.coordinateSystem;\n    var radiusExtent = polar.getRadiusAxis().getExtent();\n    var angleExtent = polar.getAngleAxis().getExtent();\n    oldPoint = oldPoint ? polar.pointToCoord(oldPoint) : [0, 0];\n    newPoint = polar.pointToCoord(newPoint);\n\n    if (axisModel.mainType === 'radiusAxis') {\n      ret.pixel = newPoint[0] - oldPoint[0]; // ret.pixelLength = Math.abs(radiusExtent[1] - radiusExtent[0]);\n      // ret.pixelStart = Math.min(radiusExtent[0], radiusExtent[1]);\n\n      ret.pixelLength = radiusExtent[1] - radiusExtent[0];\n      ret.pixelStart = radiusExtent[0];\n      ret.signal = axis.inverse ? 1 : -1;\n    } else {\n      // 'angleAxis'\n      ret.pixel = newPoint[1] - oldPoint[1]; // ret.pixelLength = Math.abs(angleExtent[1] - angleExtent[0]);\n      // ret.pixelStart = Math.min(angleExtent[0], angleExtent[1]);\n\n      ret.pixelLength = angleExtent[1] - angleExtent[0];\n      ret.pixelStart = angleExtent[0];\n      ret.signal = axis.inverse ? -1 : 1;\n    }\n\n    return ret;\n  },\n  singleAxis: function (oldPoint, newPoint, axisModel, controller, coordInfo) {\n    var axis = axisModel.axis;\n    var rect = coordInfo.model.coordinateSystem.getRect();\n    var ret = {};\n    oldPoint = oldPoint || [0, 0];\n\n    if (axis.orient === 'horizontal') {\n      ret.pixel = newPoint[0] - oldPoint[0];\n      ret.pixelLength = rect.width;\n      ret.pixelStart = rect.x;\n      ret.signal = axis.inverse ? 1 : -1;\n    } else {\n      // 'vertical'\n      ret.pixel = newPoint[1] - oldPoint[1];\n      ret.pixelLength = rect.height;\n      ret.pixelStart = rect.y;\n      ret.signal = axis.inverse ? -1 : 1;\n    }\n\n    return ret;\n  }\n};\nvar _default = InsideZoomView;\nmodule.exports = _default;","var DataZoomModel = require(\"./DataZoomModel\");\n\nvar _default = DataZoomModel.extend({\n  type: 'dataZoom.select'\n});\n\nmodule.exports = _default;","var DataZoomView = require(\"./DataZoomView\");\n\nvar _default = DataZoomView.extend({\n  type: 'dataZoom.select'\n});\n\nmodule.exports = _default;","var DataZoomModel = require(\"./DataZoomModel\");\n\nvar SliderZoomModel = DataZoomModel.extend({\n  type: 'dataZoom.slider',\n  layoutMode: 'box',\n\n  /**\n   * @protected\n   */\n  defaultOption: {\n    show: true,\n    // ph => placeholder. Using placehoder here because\n    // deault value can only be drived in view stage.\n    right: 'ph',\n    // Default align to grid rect.\n    top: 'ph',\n    // Default align to grid rect.\n    width: 'ph',\n    // Default align to grid rect.\n    height: 'ph',\n    // Default align to grid rect.\n    left: null,\n    // Default align to grid rect.\n    bottom: null,\n    // Default align to grid rect.\n    backgroundColor: 'rgba(47,69,84,0)',\n    // Background of slider zoom component.\n    // dataBackgroundColor: '#ddd',         // Background coor of data shadow and border of box,\n    // highest priority, remain for compatibility of\n    // previous version, but not recommended any more.\n    dataBackground: {\n      lineStyle: {\n        color: '#2f4554',\n        width: 0.5,\n        opacity: 0.3\n      },\n      areaStyle: {\n        color: 'rgba(47,69,84,0.3)',\n        opacity: 0.3\n      }\n    },\n    borderColor: '#ddd',\n    // border color of the box. For compatibility,\n    // if dataBackgroundColor is set, borderColor\n    // is ignored.\n    fillerColor: 'rgba(167,183,204,0.4)',\n    // Color of selected area.\n    // handleColor: 'rgba(89,170,216,0.95)',     // Color of handle.\n    // handleIcon: 'path://M4.9,17.8c0-1.4,4.5-10.5,5.5-12.4c0-0.1,0.6-1.1,0.9-1.1c0.4,0,0.9,1,0.9,1.1c1.1,2.2,5.4,11,5.4,12.4v17.8c0,1.5-0.6,2.1-1.3,2.1H6.1c-0.7,0-1.3-0.6-1.3-2.1V17.8z',\n    handleIcon: 'M8.2,13.6V3.9H6.3v9.7H3.1v14.9h3.3v9.7h1.8v-9.7h3.3V13.6H8.2z M9.7,24.4H4.8v-1.4h4.9V24.4z M9.7,19.1H4.8v-1.4h4.9V19.1z',\n    // Percent of the slider height\n    handleSize: '100%',\n    handleStyle: {\n      color: '#a7b7cc'\n    },\n    labelPrecision: null,\n    labelFormatter: null,\n    showDetail: true,\n    showDataShadow: 'auto',\n    // Default auto decision.\n    realtime: true,\n    zoomLock: false,\n    // Whether disable zoom.\n    textStyle: {\n      color: '#333'\n    }\n  }\n});\nvar _default = SliderZoomModel;\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar eventTool = require(\"zrender/lib/core/event\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar throttle = require(\"../../util/throttle\");\n\nvar DataZoomView = require(\"./DataZoomView\");\n\nvar numberUtil = require(\"../../util/number\");\n\nvar layout = require(\"../../util/layout\");\n\nvar sliderMove = require(\"../helper/sliderMove\");\n\nvar Rect = graphic.Rect;\nvar linearMap = numberUtil.linearMap;\nvar asc = numberUtil.asc;\nvar bind = zrUtil.bind;\nvar each = zrUtil.each; // Constants\n\nvar DEFAULT_LOCATION_EDGE_GAP = 7;\nvar DEFAULT_FRAME_BORDER_WIDTH = 1;\nvar DEFAULT_FILLER_SIZE = 30;\nvar HORIZONTAL = 'horizontal';\nvar VERTICAL = 'vertical';\nvar LABEL_GAP = 5;\nvar SHOW_DATA_SHADOW_SERIES_TYPE = ['line', 'bar', 'candlestick', 'scatter'];\nvar SliderZoomView = DataZoomView.extend({\n  type: 'dataZoom.slider',\n  init: function (ecModel, api) {\n    /**\n     * @private\n     * @type {Object}\n     */\n    this._displayables = {};\n    /**\n     * @private\n     * @type {string}\n     */\n\n    this._orient;\n    /**\n     * [0, 100]\n     * @private\n     */\n\n    this._range;\n    /**\n     * [coord of the first handle, coord of the second handle]\n     * @private\n     */\n\n    this._handleEnds;\n    /**\n     * [length, thick]\n     * @private\n     * @type {Array.<number>}\n     */\n\n    this._size;\n    /**\n     * @private\n     * @type {number}\n     */\n\n    this._handleWidth;\n    /**\n     * @private\n     * @type {number}\n     */\n\n    this._handleHeight;\n    /**\n     * @private\n     */\n\n    this._location;\n    /**\n     * @private\n     */\n\n    this._dragging;\n    /**\n     * @private\n     */\n\n    this._dataShadowInfo;\n    this.api = api;\n  },\n\n  /**\n   * @override\n   */\n  render: function (dataZoomModel, ecModel, api, payload) {\n    SliderZoomView.superApply(this, 'render', arguments);\n    throttle.createOrUpdate(this, '_dispatchZoomAction', this.dataZoomModel.get('throttle'), 'fixRate');\n    this._orient = dataZoomModel.get('orient');\n\n    if (this.dataZoomModel.get('show') === false) {\n      this.group.removeAll();\n      return;\n    } // Notice: this._resetInterval() should not be executed when payload.type\n    // is 'dataZoom', origin this._range should be maintained, otherwise 'pan'\n    // or 'zoom' info will be missed because of 'throttle' of this.dispatchAction,\n\n\n    if (!payload || payload.type !== 'dataZoom' || payload.from !== this.uid) {\n      this._buildView();\n    }\n\n    this._updateView();\n  },\n\n  /**\n   * @override\n   */\n  remove: function () {\n    SliderZoomView.superApply(this, 'remove', arguments);\n    throttle.clear(this, '_dispatchZoomAction');\n  },\n\n  /**\n   * @override\n   */\n  dispose: function () {\n    SliderZoomView.superApply(this, 'dispose', arguments);\n    throttle.clear(this, '_dispatchZoomAction');\n  },\n  _buildView: function () {\n    var thisGroup = this.group;\n    thisGroup.removeAll();\n\n    this._resetLocation();\n\n    this._resetInterval();\n\n    var barGroup = this._displayables.barGroup = new graphic.Group();\n\n    this._renderBackground();\n\n    this._renderHandle();\n\n    this._renderDataShadow();\n\n    thisGroup.add(barGroup);\n\n    this._positionGroup();\n  },\n\n  /**\n   * @private\n   */\n  _resetLocation: function () {\n    var dataZoomModel = this.dataZoomModel;\n    var api = this.api; // If some of x/y/width/height are not specified,\n    // auto-adapt according to target grid.\n\n    var coordRect = this._findCoordRect();\n\n    var ecSize = {\n      width: api.getWidth(),\n      height: api.getHeight()\n    }; // Default align by coordinate system rect.\n\n    var positionInfo = this._orient === HORIZONTAL ? {\n      // Why using 'right', because right should be used in vertical,\n      // and it is better to be consistent for dealing with position param merge.\n      right: ecSize.width - coordRect.x - coordRect.width,\n      top: ecSize.height - DEFAULT_FILLER_SIZE - DEFAULT_LOCATION_EDGE_GAP,\n      width: coordRect.width,\n      height: DEFAULT_FILLER_SIZE\n    } : {\n      // vertical\n      right: DEFAULT_LOCATION_EDGE_GAP,\n      top: coordRect.y,\n      width: DEFAULT_FILLER_SIZE,\n      height: coordRect.height\n    }; // Do not write back to option and replace value 'ph', because\n    // the 'ph' value should be recalculated when resize.\n\n    var layoutParams = layout.getLayoutParams(dataZoomModel.option); // Replace the placeholder value.\n\n    zrUtil.each(['right', 'top', 'width', 'height'], function (name) {\n      if (layoutParams[name] === 'ph') {\n        layoutParams[name] = positionInfo[name];\n      }\n    });\n    var layoutRect = layout.getLayoutRect(layoutParams, ecSize, dataZoomModel.padding);\n    this._location = {\n      x: layoutRect.x,\n      y: layoutRect.y\n    };\n    this._size = [layoutRect.width, layoutRect.height];\n    this._orient === VERTICAL && this._size.reverse();\n  },\n\n  /**\n   * @private\n   */\n  _positionGroup: function () {\n    var thisGroup = this.group;\n    var location = this._location;\n    var orient = this._orient; // Just use the first axis to determine mapping.\n\n    var targetAxisModel = this.dataZoomModel.getFirstTargetAxisModel();\n    var inverse = targetAxisModel && targetAxisModel.get('inverse');\n    var barGroup = this._displayables.barGroup;\n    var otherAxisInverse = (this._dataShadowInfo || {}).otherAxisInverse; // Transform barGroup.\n\n    barGroup.attr(orient === HORIZONTAL && !inverse ? {\n      scale: otherAxisInverse ? [1, 1] : [1, -1]\n    } : orient === HORIZONTAL && inverse ? {\n      scale: otherAxisInverse ? [-1, 1] : [-1, -1]\n    } : orient === VERTICAL && !inverse ? {\n      scale: otherAxisInverse ? [1, -1] : [1, 1],\n      rotation: Math.PI / 2 // Dont use Math.PI, considering shadow direction.\n\n    } : {\n      scale: otherAxisInverse ? [-1, -1] : [-1, 1],\n      rotation: Math.PI / 2\n    }); // Position barGroup\n\n    var rect = thisGroup.getBoundingRect([barGroup]);\n    thisGroup.attr('position', [location.x - rect.x, location.y - rect.y]);\n  },\n\n  /**\n   * @private\n   */\n  _getViewExtent: function () {\n    return [0, this._size[0]];\n  },\n  _renderBackground: function () {\n    var dataZoomModel = this.dataZoomModel;\n    var size = this._size;\n    var barGroup = this._displayables.barGroup;\n    barGroup.add(new Rect({\n      silent: true,\n      shape: {\n        x: 0,\n        y: 0,\n        width: size[0],\n        height: size[1]\n      },\n      style: {\n        fill: dataZoomModel.get('backgroundColor')\n      },\n      z2: -40\n    })); // Click panel, over shadow, below handles.\n\n    barGroup.add(new Rect({\n      shape: {\n        x: 0,\n        y: 0,\n        width: size[0],\n        height: size[1]\n      },\n      style: {\n        fill: 'transparent'\n      },\n      z2: 0,\n      onclick: zrUtil.bind(this._onClickPanelClick, this)\n    }));\n  },\n  _renderDataShadow: function () {\n    var info = this._dataShadowInfo = this._prepareDataShadowInfo();\n\n    if (!info) {\n      return;\n    }\n\n    var size = this._size;\n    var seriesModel = info.series;\n    var data = seriesModel.getRawData();\n    var otherDim = seriesModel.getShadowDim ? seriesModel.getShadowDim() // @see candlestick\n    : info.otherDim;\n\n    if (otherDim == null) {\n      return;\n    }\n\n    var otherDataExtent = data.getDataExtent(otherDim); // Nice extent.\n\n    var otherOffset = (otherDataExtent[1] - otherDataExtent[0]) * 0.3;\n    otherDataExtent = [otherDataExtent[0] - otherOffset, otherDataExtent[1] + otherOffset];\n    var otherShadowExtent = [0, size[1]];\n    var thisShadowExtent = [0, size[0]];\n    var areaPoints = [[size[0], 0], [0, 0]];\n    var linePoints = [];\n    var step = thisShadowExtent[1] / (data.count() - 1);\n    var thisCoord = 0; // Optimize for large data shadow\n\n    var stride = Math.round(data.count() / size[0]);\n    var lastIsEmpty;\n    data.each([otherDim], function (value, index) {\n      if (stride > 0 && index % stride) {\n        thisCoord += step;\n        return;\n      } // FIXME\n      // Should consider axis.min/axis.max when drawing dataShadow.\n      // FIXME\n      // 应该使用统一的空判断？还是在list里进行空判断？\n\n\n      var isEmpty = value == null || isNaN(value) || value === ''; // See #4235.\n\n      var otherCoord = isEmpty ? 0 : linearMap(value, otherDataExtent, otherShadowExtent, true); // Attempt to draw data shadow precisely when there are empty value.\n\n      if (isEmpty && !lastIsEmpty && index) {\n        areaPoints.push([areaPoints[areaPoints.length - 1][0], 0]);\n        linePoints.push([linePoints[linePoints.length - 1][0], 0]);\n      } else if (!isEmpty && lastIsEmpty) {\n        areaPoints.push([thisCoord, 0]);\n        linePoints.push([thisCoord, 0]);\n      }\n\n      areaPoints.push([thisCoord, otherCoord]);\n      linePoints.push([thisCoord, otherCoord]);\n      thisCoord += step;\n      lastIsEmpty = isEmpty;\n    });\n    var dataZoomModel = this.dataZoomModel; // var dataBackgroundModel = dataZoomModel.getModel('dataBackground');\n\n    this._displayables.barGroup.add(new graphic.Polygon({\n      shape: {\n        points: areaPoints\n      },\n      style: zrUtil.defaults({\n        fill: dataZoomModel.get('dataBackgroundColor')\n      }, dataZoomModel.getModel('dataBackground.areaStyle').getAreaStyle()),\n      silent: true,\n      z2: -20\n    }));\n\n    this._displayables.barGroup.add(new graphic.Polyline({\n      shape: {\n        points: linePoints\n      },\n      style: dataZoomModel.getModel('dataBackground.lineStyle').getLineStyle(),\n      silent: true,\n      z2: -19\n    }));\n  },\n  _prepareDataShadowInfo: function () {\n    var dataZoomModel = this.dataZoomModel;\n    var showDataShadow = dataZoomModel.get('showDataShadow');\n\n    if (showDataShadow === false) {\n      return;\n    } // Find a representative series.\n\n\n    var result;\n    var ecModel = this.ecModel;\n    dataZoomModel.eachTargetAxis(function (dimNames, axisIndex) {\n      var seriesModels = dataZoomModel.getAxisProxy(dimNames.name, axisIndex).getTargetSeriesModels();\n      zrUtil.each(seriesModels, function (seriesModel) {\n        if (result) {\n          return;\n        }\n\n        if (showDataShadow !== true && zrUtil.indexOf(SHOW_DATA_SHADOW_SERIES_TYPE, seriesModel.get('type')) < 0) {\n          return;\n        }\n\n        var thisAxis = ecModel.getComponent(dimNames.axis, axisIndex).axis;\n        var otherDim = getOtherDim(dimNames.name);\n        var otherAxisInverse;\n        var coordSys = seriesModel.coordinateSystem;\n\n        if (otherDim != null && coordSys.getOtherAxis) {\n          otherAxisInverse = coordSys.getOtherAxis(thisAxis).inverse;\n        }\n\n        otherDim = seriesModel.getData().mapDimension(otherDim);\n        result = {\n          thisAxis: thisAxis,\n          series: seriesModel,\n          thisDim: dimNames.name,\n          otherDim: otherDim,\n          otherAxisInverse: otherAxisInverse\n        };\n      }, this);\n    }, this);\n    return result;\n  },\n  _renderHandle: function () {\n    var displaybles = this._displayables;\n    var handles = displaybles.handles = [];\n    var handleLabels = displaybles.handleLabels = [];\n    var barGroup = this._displayables.barGroup;\n    var size = this._size;\n    var dataZoomModel = this.dataZoomModel;\n    barGroup.add(displaybles.filler = new Rect({\n      draggable: true,\n      cursor: getCursor(this._orient),\n      drift: bind(this._onDragMove, this, 'all'),\n      onmousemove: function (e) {\n        // Fot mobile devicem, prevent screen slider on the button.\n        eventTool.stop(e.event);\n      },\n      ondragstart: bind(this._showDataInfo, this, true),\n      ondragend: bind(this._onDragEnd, this),\n      onmouseover: bind(this._showDataInfo, this, true),\n      onmouseout: bind(this._showDataInfo, this, false),\n      style: {\n        fill: dataZoomModel.get('fillerColor'),\n        textPosition: 'inside'\n      }\n    })); // Frame border.\n\n    barGroup.add(new Rect(graphic.subPixelOptimizeRect({\n      silent: true,\n      shape: {\n        x: 0,\n        y: 0,\n        width: size[0],\n        height: size[1]\n      },\n      style: {\n        stroke: dataZoomModel.get('dataBackgroundColor') || dataZoomModel.get('borderColor'),\n        lineWidth: DEFAULT_FRAME_BORDER_WIDTH,\n        fill: 'rgba(0,0,0,0)'\n      }\n    })));\n    each([0, 1], function (handleIndex) {\n      var path = graphic.createIcon(dataZoomModel.get('handleIcon'), {\n        cursor: getCursor(this._orient),\n        draggable: true,\n        drift: bind(this._onDragMove, this, handleIndex),\n        onmousemove: function (e) {\n          // Fot mobile devicem, prevent screen slider on the button.\n          eventTool.stop(e.event);\n        },\n        ondragend: bind(this._onDragEnd, this),\n        onmouseover: bind(this._showDataInfo, this, true),\n        onmouseout: bind(this._showDataInfo, this, false)\n      }, {\n        x: -1,\n        y: 0,\n        width: 2,\n        height: 2\n      });\n      var bRect = path.getBoundingRect();\n      this._handleHeight = numberUtil.parsePercent(dataZoomModel.get('handleSize'), this._size[1]);\n      this._handleWidth = bRect.width / bRect.height * this._handleHeight;\n      path.setStyle(dataZoomModel.getModel('handleStyle').getItemStyle());\n      var handleColor = dataZoomModel.get('handleColor'); // Compatitable with previous version\n\n      if (handleColor != null) {\n        path.style.fill = handleColor;\n      }\n\n      barGroup.add(handles[handleIndex] = path);\n      var textStyleModel = dataZoomModel.textStyleModel;\n      this.group.add(handleLabels[handleIndex] = new graphic.Text({\n        silent: true,\n        invisible: true,\n        style: {\n          x: 0,\n          y: 0,\n          text: '',\n          textVerticalAlign: 'middle',\n          textAlign: 'center',\n          textFill: textStyleModel.getTextColor(),\n          textFont: textStyleModel.getFont()\n        },\n        z2: 10\n      }));\n    }, this);\n  },\n\n  /**\n   * @private\n   */\n  _resetInterval: function () {\n    var range = this._range = this.dataZoomModel.getPercentRange();\n\n    var viewExtent = this._getViewExtent();\n\n    this._handleEnds = [linearMap(range[0], [0, 100], viewExtent, true), linearMap(range[1], [0, 100], viewExtent, true)];\n  },\n\n  /**\n   * @private\n   * @param {(number|string)} handleIndex 0 or 1 or 'all'\n   * @param {number} delta\n   */\n  _updateInterval: function (handleIndex, delta) {\n    var dataZoomModel = this.dataZoomModel;\n    var handleEnds = this._handleEnds;\n\n    var viewExtend = this._getViewExtent();\n\n    var minMaxSpan = dataZoomModel.findRepresentativeAxisProxy().getMinMaxSpan();\n    var percentExtent = [0, 100];\n    sliderMove(delta, handleEnds, viewExtend, dataZoomModel.get('zoomLock') ? 'all' : handleIndex, minMaxSpan.minSpan != null ? linearMap(minMaxSpan.minSpan, percentExtent, viewExtend, true) : null, minMaxSpan.maxSpan != null ? linearMap(minMaxSpan.maxSpan, percentExtent, viewExtend, true) : null);\n    this._range = asc([linearMap(handleEnds[0], viewExtend, percentExtent, true), linearMap(handleEnds[1], viewExtend, percentExtent, true)]);\n  },\n\n  /**\n   * @private\n   */\n  _updateView: function (nonRealtime) {\n    var displaybles = this._displayables;\n    var handleEnds = this._handleEnds;\n    var handleInterval = asc(handleEnds.slice());\n    var size = this._size;\n    each([0, 1], function (handleIndex) {\n      // Handles\n      var handle = displaybles.handles[handleIndex];\n      var handleHeight = this._handleHeight;\n      handle.attr({\n        scale: [handleHeight / 2, handleHeight / 2],\n        position: [handleEnds[handleIndex], size[1] / 2 - handleHeight / 2]\n      });\n    }, this); // Filler\n\n    displaybles.filler.setShape({\n      x: handleInterval[0],\n      y: 0,\n      width: handleInterval[1] - handleInterval[0],\n      height: size[1]\n    });\n\n    this._updateDataInfo(nonRealtime);\n  },\n\n  /**\n   * @private\n   */\n  _updateDataInfo: function (nonRealtime) {\n    var dataZoomModel = this.dataZoomModel;\n    var displaybles = this._displayables;\n    var handleLabels = displaybles.handleLabels;\n    var orient = this._orient;\n    var labelTexts = ['', '']; // FIXME\n    // date型，支持formatter，autoformatter（ec2 date.getAutoFormatter）\n\n    if (dataZoomModel.get('showDetail')) {\n      var axisProxy = dataZoomModel.findRepresentativeAxisProxy();\n\n      if (axisProxy) {\n        var axis = axisProxy.getAxisModel().axis;\n        var range = this._range;\n        var dataInterval = nonRealtime // See #4434, data and axis are not processed and reset yet in non-realtime mode.\n        ? axisProxy.calculateDataWindow({\n          start: range[0],\n          end: range[1]\n        }).valueWindow : axisProxy.getDataValueWindow();\n        labelTexts = [this._formatLabel(dataInterval[0], axis), this._formatLabel(dataInterval[1], axis)];\n      }\n    }\n\n    var orderedHandleEnds = asc(this._handleEnds.slice());\n    setLabel.call(this, 0);\n    setLabel.call(this, 1);\n\n    function setLabel(handleIndex) {\n      // Label\n      // Text should not transform by barGroup.\n      // Ignore handlers transform\n      var barTransform = graphic.getTransform(displaybles.handles[handleIndex].parent, this.group);\n      var direction = graphic.transformDirection(handleIndex === 0 ? 'right' : 'left', barTransform);\n      var offset = this._handleWidth / 2 + LABEL_GAP;\n      var textPoint = graphic.applyTransform([orderedHandleEnds[handleIndex] + (handleIndex === 0 ? -offset : offset), this._size[1] / 2], barTransform);\n      handleLabels[handleIndex].setStyle({\n        x: textPoint[0],\n        y: textPoint[1],\n        textVerticalAlign: orient === HORIZONTAL ? 'middle' : direction,\n        textAlign: orient === HORIZONTAL ? direction : 'center',\n        text: labelTexts[handleIndex]\n      });\n    }\n  },\n\n  /**\n   * @private\n   */\n  _formatLabel: function (value, axis) {\n    var dataZoomModel = this.dataZoomModel;\n    var labelFormatter = dataZoomModel.get('labelFormatter');\n    var labelPrecision = dataZoomModel.get('labelPrecision');\n\n    if (labelPrecision == null || labelPrecision === 'auto') {\n      labelPrecision = axis.getPixelPrecision();\n    }\n\n    var valueStr = value == null || isNaN(value) ? '' // FIXME Glue code\n    : axis.type === 'category' || axis.type === 'time' ? axis.scale.getLabel(Math.round(value)) // param of toFixed should less then 20.\n    : value.toFixed(Math.min(labelPrecision, 20));\n    return zrUtil.isFunction(labelFormatter) ? labelFormatter(value, valueStr) : zrUtil.isString(labelFormatter) ? labelFormatter.replace('{value}', valueStr) : valueStr;\n  },\n\n  /**\n   * @private\n   * @param {boolean} showOrHide true: show, false: hide\n   */\n  _showDataInfo: function (showOrHide) {\n    // Always show when drgging.\n    showOrHide = this._dragging || showOrHide;\n    var handleLabels = this._displayables.handleLabels;\n    handleLabels[0].attr('invisible', !showOrHide);\n    handleLabels[1].attr('invisible', !showOrHide);\n  },\n  _onDragMove: function (handleIndex, dx, dy) {\n    this._dragging = true; // Transform dx, dy to bar coordination.\n\n    var barTransform = this._displayables.barGroup.getLocalTransform();\n\n    var vertex = graphic.applyTransform([dx, dy], barTransform, true);\n\n    this._updateInterval(handleIndex, vertex[0]);\n\n    var realtime = this.dataZoomModel.get('realtime');\n\n    this._updateView(!realtime);\n\n    realtime && this._dispatchZoomAction();\n  },\n  _onDragEnd: function () {\n    this._dragging = false;\n\n    this._showDataInfo(false); // While in realtime mode and stream mode, dispatch action when\n    // drag end will cause the whole view rerender, which is unnecessary.\n\n\n    var realtime = this.dataZoomModel.get('realtime');\n    !realtime && this._dispatchZoomAction();\n  },\n  _onClickPanelClick: function (e) {\n    var size = this._size;\n\n    var localPoint = this._displayables.barGroup.transformCoordToLocal(e.offsetX, e.offsetY);\n\n    if (localPoint[0] < 0 || localPoint[0] > size[0] || localPoint[1] < 0 || localPoint[1] > size[1]) {\n      return;\n    }\n\n    var handleEnds = this._handleEnds;\n    var center = (handleEnds[0] + handleEnds[1]) / 2;\n\n    this._updateInterval('all', localPoint[0] - center);\n\n    this._updateView();\n\n    this._dispatchZoomAction();\n  },\n\n  /**\n   * This action will be throttled.\n   * @private\n   */\n  _dispatchZoomAction: function () {\n    var range = this._range;\n    this.api.dispatchAction({\n      type: 'dataZoom',\n      from: this.uid,\n      dataZoomId: this.dataZoomModel.id,\n      start: range[0],\n      end: range[1]\n    });\n  },\n\n  /**\n   * @private\n   */\n  _findCoordRect: function () {\n    // Find the grid coresponding to the first axis referred by dataZoom.\n    var rect;\n    each(this.getTargetCoordInfo(), function (coordInfoList) {\n      if (!rect && coordInfoList.length) {\n        var coordSys = coordInfoList[0].model.coordinateSystem;\n        rect = coordSys.getRect && coordSys.getRect();\n      }\n    });\n\n    if (!rect) {\n      var width = this.api.getWidth();\n      var height = this.api.getHeight();\n      rect = {\n        x: width * 0.2,\n        y: height * 0.2,\n        width: width * 0.6,\n        height: height * 0.6\n      };\n    }\n\n    return rect;\n  }\n});\n\nfunction getOtherDim(thisDim) {\n  // FIXME\n  // 这个逻辑和getOtherAxis里一致，但是写在这里是否不好\n  var map = {\n    x: 'y',\n    y: 'x',\n    radius: 'angle',\n    angle: 'radius'\n  };\n  return map[thisDim];\n}\n\nfunction getCursor(orient) {\n  return orient === 'vertical' ? 'ns-resize' : 'ew-resize';\n}\n\nvar _default = SliderZoomView;\nmodule.exports = _default;","var echarts = require(\"../../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar helper = require(\"./helper\");\n\necharts.registerAction('dataZoom', function (payload, ecModel) {\n  var linkedNodesFinder = helper.createLinkedNodesFinder(zrUtil.bind(ecModel.eachComponent, ecModel, 'dataZoom'), helper.eachAxisDim, function (model, dimNames) {\n    return model.get(dimNames.axisIndex);\n  });\n  var effectedModels = [];\n  ecModel.eachComponent({\n    mainType: 'dataZoom',\n    query: payload\n  }, function (model, index) {\n    effectedModels.push.apply(effectedModels, linkedNodesFinder(model).nodes);\n  });\n  zrUtil.each(effectedModels, function (dataZoomModel, index) {\n    dataZoomModel.setRawRange({\n      start: payload.start,\n      end: payload.end,\n      startValue: payload.startValue,\n      endValue: payload.endValue\n    });\n  });\n});","var echarts = require(\"../../echarts\");\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar createHashMap = _util.createHashMap;\nvar each = _util.each;\necharts.registerProcessor({\n  getTargetSeries: function (ecModel) {\n    var seriesModelMap = createHashMap();\n    ecModel.eachComponent('dataZoom', function (dataZoomModel) {\n      dataZoomModel.eachTargetAxis(function (dimNames, axisIndex, dataZoomModel) {\n        var axisProxy = dataZoomModel.getAxisProxy(dimNames.name, axisIndex);\n        each(axisProxy.getTargetSeriesModels(), function (seriesModel) {\n          seriesModelMap.set(seriesModel.uid, seriesModel);\n        });\n      });\n    });\n    return seriesModelMap;\n  },\n  isOverallFilter: true,\n  // Consider appendData, where filter should be performed. Because data process is\n  // in block mode currently, it is not need to worry about that the overallProgress\n  // execute every frame.\n  overallReset: function (ecModel, api) {\n    ecModel.eachComponent('dataZoom', function (dataZoomModel) {\n      // We calculate window and reset axis here but not in model\n      // init stage and not after action dispatch handler, because\n      // reset should be called after seriesData.restoreData.\n      dataZoomModel.eachTargetAxis(function (dimNames, axisIndex, dataZoomModel) {\n        dataZoomModel.getAxisProxy(dimNames.name, axisIndex).reset(dataZoomModel, api);\n      }); // Caution: data zoom filtering is order sensitive when using\n      // percent range and no min/max/scale set on axis.\n      // For example, we have dataZoom definition:\n      // [\n      //      {xAxisIndex: 0, start: 30, end: 70},\n      //      {yAxisIndex: 0, start: 20, end: 80}\n      // ]\n      // In this case, [20, 80] of y-dataZoom should be based on data\n      // that have filtered by x-dataZoom using range of [30, 70],\n      // but should not be based on full raw data. Thus sliding\n      // x-dataZoom will change both ranges of xAxis and yAxis,\n      // while sliding y-dataZoom will only change the range of yAxis.\n      // So we should filter x-axis after reset x-axis immediately,\n      // and then reset y-axis and filter y-axis.\n\n      dataZoomModel.eachTargetAxis(function (dimNames, axisIndex, dataZoomModel) {\n        dataZoomModel.getAxisProxy(dimNames.name, axisIndex).filterData(dataZoomModel, api);\n      });\n    });\n    ecModel.eachComponent('dataZoom', function (dataZoomModel) {\n      // Fullfill all of the range props so that user\n      // is able to get them from chart.getOption().\n      var axisProxy = dataZoomModel.findRepresentativeAxisProxy();\n      var percentRange = axisProxy.getDataPercentWindow();\n      var valueRange = axisProxy.getDataValueWindow();\n      dataZoomModel.setRawRange({\n        start: percentRange[0],\n        end: percentRange[1],\n        startValue: valueRange[0],\n        endValue: valueRange[1]\n      }, true);\n    });\n  }\n});","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar formatUtil = require(\"../../util/format\");\n\nvar AXIS_DIMS = ['x', 'y', 'z', 'radius', 'angle', 'single']; // Supported coords.\n\nvar COORDS = ['cartesian2d', 'polar', 'singleAxis'];\n/**\n * @param {string} coordType\n * @return {boolean}\n */\n\nfunction isCoordSupported(coordType) {\n  return zrUtil.indexOf(COORDS, coordType) >= 0;\n}\n/**\n * Create \"each\" method to iterate names.\n *\n * @pubilc\n * @param  {Array.<string>} names\n * @param  {Array.<string>=} attrs\n * @return {Function}\n */\n\n\nfunction createNameEach(names, attrs) {\n  names = names.slice();\n  var capitalNames = zrUtil.map(names, formatUtil.capitalFirst);\n  attrs = (attrs || []).slice();\n  var capitalAttrs = zrUtil.map(attrs, formatUtil.capitalFirst);\n  return function (callback, context) {\n    zrUtil.each(names, function (name, index) {\n      var nameObj = {\n        name: name,\n        capital: capitalNames[index]\n      };\n\n      for (var j = 0; j < attrs.length; j++) {\n        nameObj[attrs[j]] = name + capitalAttrs[j];\n      }\n\n      callback.call(context, nameObj);\n    });\n  };\n}\n/**\n * Iterate each dimension name.\n *\n * @public\n * @param {Function} callback The parameter is like:\n *                            {\n *                                name: 'angle',\n *                                capital: 'Angle',\n *                                axis: 'angleAxis',\n *                                axisIndex: 'angleAixs',\n *                                index: 'angleIndex'\n *                            }\n * @param {Object} context\n */\n\n\nvar eachAxisDim = createNameEach(AXIS_DIMS, ['axisIndex', 'axis', 'index', 'id']);\n/**\n * If tow dataZoomModels has the same axis controlled, we say that they are 'linked'.\n * dataZoomModels and 'links' make up one or more graphics.\n * This function finds the graphic where the source dataZoomModel is in.\n *\n * @public\n * @param {Function} forEachNode Node iterator.\n * @param {Function} forEachEdgeType edgeType iterator\n * @param {Function} edgeIdGetter Giving node and edgeType, return an array of edge id.\n * @return {Function} Input: sourceNode, Output: Like {nodes: [], dims: {}}\n */\n\nfunction createLinkedNodesFinder(forEachNode, forEachEdgeType, edgeIdGetter) {\n  return function (sourceNode) {\n    var result = {\n      nodes: [],\n      records: {} // key: edgeType.name, value: Object (key: edge id, value: boolean).\n\n    };\n    forEachEdgeType(function (edgeType) {\n      result.records[edgeType.name] = {};\n    });\n\n    if (!sourceNode) {\n      return result;\n    }\n\n    absorb(sourceNode, result);\n    var existsLink;\n\n    do {\n      existsLink = false;\n      forEachNode(processSingleNode);\n    } while (existsLink);\n\n    function processSingleNode(node) {\n      if (!isNodeAbsorded(node, result) && isLinked(node, result)) {\n        absorb(node, result);\n        existsLink = true;\n      }\n    }\n\n    return result;\n  };\n\n  function isNodeAbsorded(node, result) {\n    return zrUtil.indexOf(result.nodes, node) >= 0;\n  }\n\n  function isLinked(node, result) {\n    var hasLink = false;\n    forEachEdgeType(function (edgeType) {\n      zrUtil.each(edgeIdGetter(node, edgeType) || [], function (edgeId) {\n        result.records[edgeType.name][edgeId] && (hasLink = true);\n      });\n    });\n    return hasLink;\n  }\n\n  function absorb(node, result) {\n    result.nodes.push(node);\n    forEachEdgeType(function (edgeType) {\n      zrUtil.each(edgeIdGetter(node, edgeType) || [], function (edgeId) {\n        result.records[edgeType.name][edgeId] = true;\n      });\n    });\n  }\n}\n\nexports.isCoordSupported = isCoordSupported;\nexports.createNameEach = createNameEach;\nexports.eachAxisDim = eachAxisDim;\nexports.createLinkedNodesFinder = createLinkedNodesFinder;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar each = zrUtil.each;\nvar ATTR = '\\0_ec_hist_store';\n/**\n * @param {module:echarts/model/Global} ecModel\n * @param {Object} newSnapshot {dataZoomId, batch: [payloadInfo, ...]}\n */\n\nfunction push(ecModel, newSnapshot) {\n  var store = giveStore(ecModel); // If previous dataZoom can not be found,\n  // complete an range with current range.\n\n  each(newSnapshot, function (batchItem, dataZoomId) {\n    var i = store.length - 1;\n\n    for (; i >= 0; i--) {\n      var snapshot = store[i];\n\n      if (snapshot[dataZoomId]) {\n        break;\n      }\n    }\n\n    if (i < 0) {\n      // No origin range set, create one by current range.\n      var dataZoomModel = ecModel.queryComponents({\n        mainType: 'dataZoom',\n        subType: 'select',\n        id: dataZoomId\n      })[0];\n\n      if (dataZoomModel) {\n        var percentRange = dataZoomModel.getPercentRange();\n        store[0][dataZoomId] = {\n          dataZoomId: dataZoomId,\n          start: percentRange[0],\n          end: percentRange[1]\n        };\n      }\n    }\n  });\n  store.push(newSnapshot);\n}\n/**\n * @param {module:echarts/model/Global} ecModel\n * @return {Object} snapshot\n */\n\n\nfunction pop(ecModel) {\n  var store = giveStore(ecModel);\n  var head = store[store.length - 1];\n  store.length > 1 && store.pop(); // Find top for all dataZoom.\n\n  var snapshot = {};\n  each(head, function (batchItem, dataZoomId) {\n    for (var i = store.length - 1; i >= 0; i--) {\n      var batchItem = store[i][dataZoomId];\n\n      if (batchItem) {\n        snapshot[dataZoomId] = batchItem;\n        break;\n      }\n    }\n  });\n  return snapshot;\n}\n/**\n * @param {module:echarts/model/Global} ecModel\n */\n\n\nfunction clear(ecModel) {\n  ecModel[ATTR] = null;\n}\n/**\n * @param {module:echarts/model/Global} ecModel\n * @return {number} records. always >= 1.\n */\n\n\nfunction count(ecModel) {\n  return giveStore(ecModel).length;\n}\n/**\n * [{key: dataZoomId, value: {dataZoomId, range}}, ...]\n * History length of each dataZoom may be different.\n * this._history[0] is used to store origin range.\n * @type {Array.<Object>}\n */\n\n\nfunction giveStore(ecModel) {\n  var store = ecModel[ATTR];\n\n  if (!store) {\n    store = ecModel[ATTR] = [{}];\n  }\n\n  return store;\n}\n\nexports.push = push;\nexports.pop = pop;\nexports.clear = clear;\nexports.count = count;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar RoamController = require(\"../../component/helper/RoamController\");\n\nvar throttleUtil = require(\"../../util/throttle\");\n\n// Only create one roam controller for each coordinate system.\n// one roam controller might be refered by two inside data zoom\n// components (for example, one for x and one for y). When user\n// pan or zoom, only dispatch one action for those data zoom\n// components.\nvar curry = zrUtil.curry;\nvar ATTR = '\\0_ec_dataZoom_roams';\n/**\n * @public\n * @param {module:echarts/ExtensionAPI} api\n * @param {Object} dataZoomInfo\n * @param {string} dataZoomInfo.coordId\n * @param {Function} dataZoomInfo.containsPoint\n * @param {Array.<string>} dataZoomInfo.allCoordIds\n * @param {string} dataZoomInfo.dataZoomId\n * @param {number} dataZoomInfo.throttleRate\n * @param {Function} dataZoomInfo.panGetRange\n * @param {Function} dataZoomInfo.zoomGetRange\n * @param {boolean} [dataZoomInfo.zoomLock]\n * @param {boolean} [dataZoomInfo.disabled]\n */\n\nfunction register(api, dataZoomInfo) {\n  var store = giveStore(api);\n  var theDataZoomId = dataZoomInfo.dataZoomId;\n  var theCoordId = dataZoomInfo.coordId; // Do clean when a dataZoom changes its target coordnate system.\n  // Avoid memory leak, dispose all not-used-registered.\n\n  zrUtil.each(store, function (record, coordId) {\n    var dataZoomInfos = record.dataZoomInfos;\n\n    if (dataZoomInfos[theDataZoomId] && zrUtil.indexOf(dataZoomInfo.allCoordIds, theCoordId) < 0) {\n      delete dataZoomInfos[theDataZoomId];\n      record.count--;\n    }\n  });\n  cleanStore(store);\n  var record = store[theCoordId]; // Create if needed.\n\n  if (!record) {\n    record = store[theCoordId] = {\n      coordId: theCoordId,\n      dataZoomInfos: {},\n      count: 0\n    };\n    record.controller = createController(api, record);\n    record.dispatchAction = zrUtil.curry(dispatchAction, api);\n  } // Update reference of dataZoom.\n\n\n  !record.dataZoomInfos[theDataZoomId] && record.count++;\n  record.dataZoomInfos[theDataZoomId] = dataZoomInfo;\n  var controllerParams = mergeControllerParams(record.dataZoomInfos);\n  record.controller.enable(controllerParams.controlType, controllerParams.opt); // Consider resize, area should be always updated.\n\n  record.controller.setPointerChecker(dataZoomInfo.containsPoint); // Update throttle.\n\n  throttleUtil.createOrUpdate(record, 'dispatchAction', dataZoomInfo.throttleRate, 'fixRate');\n}\n/**\n * @public\n * @param {module:echarts/ExtensionAPI} api\n * @param {string} dataZoomId\n */\n\n\nfunction unregister(api, dataZoomId) {\n  var store = giveStore(api);\n  zrUtil.each(store, function (record) {\n    record.controller.dispose();\n    var dataZoomInfos = record.dataZoomInfos;\n\n    if (dataZoomInfos[dataZoomId]) {\n      delete dataZoomInfos[dataZoomId];\n      record.count--;\n    }\n  });\n  cleanStore(store);\n}\n/**\n * @public\n */\n\n\nfunction shouldRecordRange(payload, dataZoomId) {\n  if (payload && payload.type === 'dataZoom' && payload.batch) {\n    for (var i = 0, len = payload.batch.length; i < len; i++) {\n      if (payload.batch[i].dataZoomId === dataZoomId) {\n        return false;\n      }\n    }\n  }\n\n  return true;\n}\n/**\n * @public\n */\n\n\nfunction generateCoordId(coordModel) {\n  return coordModel.type + '\\0_' + coordModel.id;\n}\n/**\n * Key: coordId, value: {dataZoomInfos: [], count, controller}\n * @type {Array.<Object>}\n */\n\n\nfunction giveStore(api) {\n  // Mount store on zrender instance, so that we do not\n  // need to worry about dispose.\n  var zr = api.getZr();\n  return zr[ATTR] || (zr[ATTR] = {});\n}\n\nfunction createController(api, newRecord) {\n  var controller = new RoamController(api.getZr());\n  controller.on('pan', curry(onPan, newRecord));\n  controller.on('zoom', curry(onZoom, newRecord));\n  return controller;\n}\n\nfunction cleanStore(store) {\n  zrUtil.each(store, function (record, coordId) {\n    if (!record.count) {\n      record.controller.dispose();\n      delete store[coordId];\n    }\n  });\n}\n\nfunction onPan(record, dx, dy, oldX, oldY, newX, newY) {\n  wrapAndDispatch(record, function (info) {\n    return info.panGetRange(record.controller, dx, dy, oldX, oldY, newX, newY);\n  });\n}\n\nfunction onZoom(record, scale, mouseX, mouseY) {\n  wrapAndDispatch(record, function (info) {\n    return info.zoomGetRange(record.controller, scale, mouseX, mouseY);\n  });\n}\n\nfunction wrapAndDispatch(record, getRange) {\n  var batch = [];\n  zrUtil.each(record.dataZoomInfos, function (info) {\n    var range = getRange(info);\n    !info.disabled && range && batch.push({\n      dataZoomId: info.dataZoomId,\n      start: range[0],\n      end: range[1]\n    });\n  });\n  record.dispatchAction(batch);\n}\n/**\n * This action will be throttled.\n */\n\n\nfunction dispatchAction(api, batch) {\n  api.dispatchAction({\n    type: 'dataZoom',\n    batch: batch\n  });\n}\n/**\n * Merge roamController settings when multiple dataZooms share one roamController.\n */\n\n\nfunction mergeControllerParams(dataZoomInfos) {\n  var controlType;\n  var opt = {}; // DO NOT use reserved word (true, false, undefined) as key literally. Even if encapsulated\n  // as string, it is probably revert to reserved word by compress tool. See #7411.\n\n  var prefix = 'type_';\n  var typePriority = {\n    'type_true': 2,\n    'type_move': 1,\n    'type_false': 0,\n    'type_undefined': -1\n  };\n  zrUtil.each(dataZoomInfos, function (dataZoomInfo) {\n    var oneType = dataZoomInfo.disabled ? false : dataZoomInfo.zoomLock ? 'move' : true;\n\n    if (typePriority[prefix + oneType] > typePriority[prefix + controlType]) {\n      controlType = oneType;\n    } // Do not support that different 'shift'/'ctrl'/'alt' setting used in one coord sys.\n\n\n    zrUtil.extend(opt, dataZoomInfo.roamControllerOpt);\n  });\n  return {\n    controlType: controlType,\n    opt: opt\n  };\n}\n\nexports.register = register;\nexports.unregister = unregister;\nexports.shouldRecordRange = shouldRecordRange;\nexports.generateCoordId = generateCoordId;","var Component = require(\"../../model/Component\");\n\nComponent.registerSubTypeDefaulter('dataZoom', function () {\n  // Default 'slider' when no type specified.\n  return 'slider';\n});","require(\"./dataZoom/typeDefaulter\");\n\nrequire(\"./dataZoom/DataZoomModel\");\n\nrequire(\"./dataZoom/DataZoomView\");\n\nrequire(\"./dataZoom/SelectZoomModel\");\n\nrequire(\"./dataZoom/SelectZoomView\");\n\nrequire(\"./dataZoom/dataZoomProcessor\");\n\nrequire(\"./dataZoom/dataZoomAction\");","require(\"./dataset/DatasetModel\");\n\nvar echarts = require(\"../echarts\");\n\necharts.extendComponentView({\n  type: 'dataset'\n});","var echarts = require(\"../../echarts\");\n\nvar _sourceHelper = require(\"../../data/helper/sourceHelper\");\n\nvar detectSourceFormat = _sourceHelper.detectSourceFormat;\n\nvar _sourceType = require(\"../../data/helper/sourceType\");\n\nvar SERIES_LAYOUT_BY_COLUMN = _sourceType.SERIES_LAYOUT_BY_COLUMN;\nvar DatasetModel = echarts.extendComponentModel({\n  type: 'dataset',\n\n  /**\n   * @protected\n   */\n  defaultOption: {\n    // 'row', 'column'\n    seriesLayoutBy: SERIES_LAYOUT_BY_COLUMN,\n    // null/'auto': auto detect header, see \"module:echarts/data/helper/sourceHelper\"\n    sourceHeader: null,\n    dimensions: null,\n    source: null\n  },\n  optionUpdated: function () {\n    detectSourceFormat(this);\n  }\n});\nvar _default = DatasetModel;\nmodule.exports = _default;","var echarts = require(\"../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nrequire(\"../coord/geo/GeoModel\");\n\nrequire(\"../coord/geo/geoCreator\");\n\nrequire(\"./geo/GeoView\");\n\nrequire(\"../action/geoRoam\");\n\nfunction makeAction(method, actionInfo) {\n  actionInfo.update = 'updateView';\n  echarts.registerAction(actionInfo, function (payload, ecModel) {\n    var selected = {};\n    ecModel.eachComponent({\n      mainType: 'geo',\n      query: payload\n    }, function (geoModel) {\n      geoModel[method](payload.name);\n      var geo = geoModel.coordinateSystem;\n      zrUtil.each(geo.regions, function (region) {\n        selected[region.name] = geoModel.isSelected(region.name) || false;\n      });\n    });\n    return {\n      selected: selected,\n      name: payload.name\n    };\n  });\n}\n\nmakeAction('toggleSelected', {\n  type: 'geoToggleSelect',\n  event: 'geoselectchanged'\n});\nmakeAction('select', {\n  type: 'geoSelect',\n  event: 'geoselected'\n});\nmakeAction('unSelect', {\n  type: 'geoUnSelect',\n  event: 'geounselected'\n});","var MapDraw = require(\"../helper/MapDraw\");\n\nvar echarts = require(\"../../echarts\");\n\nvar _default = echarts.extendComponentView({\n  type: 'geo',\n  init: function (ecModel, api) {\n    var mapDraw = new MapDraw(api, true);\n    this._mapDraw = mapDraw;\n    this.group.add(mapDraw.group);\n  },\n  render: function (geoModel, ecModel, api, payload) {\n    // Not render if it is an toggleSelect action from self\n    if (payload && payload.type === 'geoToggleSelect' && payload.from === this.uid) {\n      return;\n    }\n\n    var mapDraw = this._mapDraw;\n\n    if (geoModel.get('show')) {\n      mapDraw.draw(geoModel, ecModel, api, this, payload);\n    } else {\n      this._mapDraw.group.removeAll();\n    }\n\n    this.group.silent = geoModel.get('silent');\n  },\n  dispose: function () {\n    this._mapDraw && this._mapDraw.remove();\n  }\n});\n\nmodule.exports = _default;","var _config = require(\"../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar echarts = require(\"../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar modelUtil = require(\"../util/model\");\n\nvar graphicUtil = require(\"../util/graphic\");\n\nvar layoutUtil = require(\"../util/layout\");\n\n// -------------\n// Preprocessor\n// -------------\necharts.registerPreprocessor(function (option) {\n  var graphicOption = option.graphic; // Convert\n  // {graphic: [{left: 10, type: 'circle'}, ...]}\n  // or\n  // {graphic: {left: 10, type: 'circle'}}\n  // to\n  // {graphic: [{elements: [{left: 10, type: 'circle'}, ...]}]}\n\n  if (zrUtil.isArray(graphicOption)) {\n    if (!graphicOption[0] || !graphicOption[0].elements) {\n      option.graphic = [{\n        elements: graphicOption\n      }];\n    } else {\n      // Only one graphic instance can be instantiated. (We dont\n      // want that too many views are created in echarts._viewMap)\n      option.graphic = [option.graphic[0]];\n    }\n  } else if (graphicOption && !graphicOption.elements) {\n    option.graphic = [{\n      elements: [graphicOption]\n    }];\n  }\n}); // ------\n// Model\n// ------\n\nvar GraphicModel = echarts.extendComponentModel({\n  type: 'graphic',\n  defaultOption: {\n    // Extra properties for each elements:\n    //\n    // left/right/top/bottom: (like 12, '22%', 'center', default undefined)\n    //      If left/rigth is set, shape.x/shape.cx/position will not be used.\n    //      If top/bottom is set, shape.y/shape.cy/position will not be used.\n    //      This mechanism is useful when you want to position a group/element\n    //      against the right side or the center of this container.\n    //\n    // width/height: (can only be pixel value, default 0)\n    //      Only be used to specify contianer(group) size, if needed. And\n    //      can not be percentage value (like '33%'). See the reason in the\n    //      layout algorithm below.\n    //\n    // bounding: (enum: 'all' (default) | 'raw')\n    //      Specify how to calculate boundingRect when locating.\n    //      'all': Get uioned and transformed boundingRect\n    //          from both itself and its descendants.\n    //          This mode simplies confining a group of elements in the bounding\n    //          of their ancester container (e.g., using 'right: 0').\n    //      'raw': Only use the boundingRect of itself and before transformed.\n    //          This mode is similar to css behavior, which is useful when you\n    //          want an element to be able to overflow its container. (Consider\n    //          a rotated circle needs to be located in a corner.)\n    // Note: elements is always behind its ancestors in this elements array.\n    elements: [],\n    parentId: null\n  },\n\n  /**\n   * Save el options for the sake of the performance (only update modified graphics).\n   * The order is the same as those in option. (ancesters -> descendants)\n   *\n   * @private\n   * @type {Array.<Object>}\n   */\n  _elOptionsToUpdate: null,\n\n  /**\n   * @override\n   */\n  mergeOption: function (option) {\n    // Prevent default merge to elements\n    var elements = this.option.elements;\n    this.option.elements = null;\n    GraphicModel.superApply(this, 'mergeOption', arguments);\n    this.option.elements = elements;\n  },\n\n  /**\n   * @override\n   */\n  optionUpdated: function (newOption, isInit) {\n    var thisOption = this.option;\n    var newList = (isInit ? thisOption : newOption).elements;\n    var existList = thisOption.elements = isInit ? [] : thisOption.elements;\n    var flattenedList = [];\n\n    this._flatten(newList, flattenedList);\n\n    var mappingResult = modelUtil.mappingToExists(existList, flattenedList);\n    modelUtil.makeIdAndName(mappingResult); // Clear elOptionsToUpdate\n\n    var elOptionsToUpdate = this._elOptionsToUpdate = [];\n    zrUtil.each(mappingResult, function (resultItem, index) {\n      var newElOption = resultItem.option;\n\n      if (!newElOption) {\n        return;\n      }\n\n      elOptionsToUpdate.push(newElOption);\n      setKeyInfoToNewElOption(resultItem, newElOption);\n      mergeNewElOptionToExist(existList, index, newElOption);\n      setLayoutInfoToExist(existList[index], newElOption);\n    }, this); // Clean\n\n    for (var i = existList.length - 1; i >= 0; i--) {\n      if (existList[i] == null) {\n        existList.splice(i, 1);\n      } else {\n        // $action should be volatile, otherwise option gotten from\n        // `getOption` will contain unexpected $action.\n        delete existList[i].$action;\n      }\n    }\n  },\n\n  /**\n   * Convert\n   * [{\n   *  type: 'group',\n   *  id: 'xx',\n   *  children: [{type: 'circle'}, {type: 'polygon'}]\n   * }]\n   * to\n   * [\n   *  {type: 'group', id: 'xx'},\n   *  {type: 'circle', parentId: 'xx'},\n   *  {type: 'polygon', parentId: 'xx'}\n   * ]\n   *\n   * @private\n   * @param {Array.<Object>} optionList option list\n   * @param {Array.<Object>} result result of flatten\n   * @param {Object} parentOption parent option\n   */\n  _flatten: function (optionList, result, parentOption) {\n    zrUtil.each(optionList, function (option) {\n      if (!option) {\n        return;\n      }\n\n      if (parentOption) {\n        option.parentOption = parentOption;\n      }\n\n      result.push(option);\n      var children = option.children;\n\n      if (option.type === 'group' && children) {\n        this._flatten(children, result, option);\n      } // Deleting for JSON output, and for not affecting group creation.\n\n\n      delete option.children;\n    }, this);\n  },\n  // FIXME\n  // Pass to view using payload? setOption has a payload?\n  useElOptionsToUpdate: function () {\n    var els = this._elOptionsToUpdate; // Clear to avoid render duplicately when zooming.\n\n    this._elOptionsToUpdate = null;\n    return els;\n  }\n}); // -----\n// View\n// -----\n\necharts.extendComponentView({\n  type: 'graphic',\n\n  /**\n   * @override\n   */\n  init: function (ecModel, api) {\n    /**\n     * @private\n     * @type {module:zrender/core/util.HashMap}\n     */\n    this._elMap = zrUtil.createHashMap();\n    /**\n     * @private\n     * @type {module:echarts/graphic/GraphicModel}\n     */\n\n    this._lastGraphicModel;\n  },\n\n  /**\n   * @override\n   */\n  render: function (graphicModel, ecModel, api) {\n    // Having leveraged between use cases and algorithm complexity, a very\n    // simple layout mechanism is used:\n    // The size(width/height) can be determined by itself or its parent (not\n    // implemented yet), but can not by its children. (Top-down travel)\n    // The location(x/y) can be determined by the bounding rect of itself\n    // (can including its descendants or not) and the size of its parent.\n    // (Bottom-up travel)\n    // When `chart.clear()` or `chart.setOption({...}, true)` with the same id,\n    // view will be reused.\n    if (graphicModel !== this._lastGraphicModel) {\n      this._clear();\n    }\n\n    this._lastGraphicModel = graphicModel;\n\n    this._updateElements(graphicModel, api);\n\n    this._relocate(graphicModel, api);\n  },\n\n  /**\n   * Update graphic elements.\n   *\n   * @private\n   * @param {Object} graphicModel graphic model\n   * @param {module:echarts/ExtensionAPI} api extension API\n   */\n  _updateElements: function (graphicModel, api) {\n    var elOptionsToUpdate = graphicModel.useElOptionsToUpdate();\n\n    if (!elOptionsToUpdate) {\n      return;\n    }\n\n    var elMap = this._elMap;\n    var rootGroup = this.group; // Top-down tranverse to assign graphic settings to each elements.\n\n    zrUtil.each(elOptionsToUpdate, function (elOption) {\n      var $action = elOption.$action;\n      var id = elOption.id;\n      var existEl = elMap.get(id);\n      var parentId = elOption.parentId;\n      var targetElParent = parentId != null ? elMap.get(parentId) : rootGroup;\n\n      if (elOption.type === 'text') {\n        var elOptionStyle = elOption.style; // In top/bottom mode, textVerticalAlign should not be used, which cause\n        // inaccurately locating.\n\n        if (elOption.hv && elOption.hv[1]) {\n          elOptionStyle.textVerticalAlign = elOptionStyle.textBaseline = null;\n        } // Compatible with previous setting: both support fill and textFill,\n        // stroke and textStroke.\n\n\n        !elOptionStyle.hasOwnProperty('textFill') && elOptionStyle.fill && (elOptionStyle.textFill = elOptionStyle.fill);\n        !elOptionStyle.hasOwnProperty('textStroke') && elOptionStyle.stroke && (elOptionStyle.textStroke = elOptionStyle.stroke);\n      } // Remove unnecessary props to avoid potential problems.\n\n\n      var elOptionCleaned = getCleanedElOption(elOption); // For simple, do not support parent change, otherwise reorder is needed.\n\n      if (!$action || $action === 'merge') {\n        existEl ? existEl.attr(elOptionCleaned) : createEl(id, targetElParent, elOptionCleaned, elMap);\n      } else if ($action === 'replace') {\n        removeEl(existEl, elMap);\n        createEl(id, targetElParent, elOptionCleaned, elMap);\n      } else if ($action === 'remove') {\n        removeEl(existEl, elMap);\n      }\n\n      var el = elMap.get(id);\n\n      if (el) {\n        el.__ecGraphicWidth = elOption.width;\n        el.__ecGraphicHeight = elOption.height;\n      }\n    });\n  },\n\n  /**\n   * Locate graphic elements.\n   *\n   * @private\n   * @param {Object} graphicModel graphic model\n   * @param {module:echarts/ExtensionAPI} api extension API\n   */\n  _relocate: function (graphicModel, api) {\n    var elOptions = graphicModel.option.elements;\n    var rootGroup = this.group;\n    var elMap = this._elMap; // Bottom-up tranvese all elements (consider ec resize) to locate elements.\n\n    for (var i = elOptions.length - 1; i >= 0; i--) {\n      var elOption = elOptions[i];\n      var el = elMap.get(elOption.id);\n\n      if (!el) {\n        continue;\n      }\n\n      var parentEl = el.parent;\n      var containerInfo = parentEl === rootGroup ? {\n        width: api.getWidth(),\n        height: api.getHeight()\n      } : {\n        // Like 'position:absolut' in css, default 0.\n        width: parentEl.__ecGraphicWidth || 0,\n        height: parentEl.__ecGraphicHeight || 0\n      };\n      layoutUtil.positionElement(el, elOption, containerInfo, null, {\n        hv: elOption.hv,\n        boundingMode: elOption.bounding\n      });\n    }\n  },\n\n  /**\n   * Clear all elements.\n   *\n   * @private\n   */\n  _clear: function () {\n    var elMap = this._elMap;\n    elMap.each(function (el) {\n      removeEl(el, elMap);\n    });\n    this._elMap = zrUtil.createHashMap();\n  },\n\n  /**\n   * @override\n   */\n  dispose: function () {\n    this._clear();\n  }\n});\n\nfunction createEl(id, targetElParent, elOption, elMap) {\n  var graphicType = elOption.type;\n  var Clz = graphicUtil[graphicType.charAt(0).toUpperCase() + graphicType.slice(1)];\n  var el = new Clz(elOption);\n  targetElParent.add(el);\n  elMap.set(id, el);\n  el.__ecGraphicId = id;\n}\n\nfunction removeEl(existEl, elMap) {\n  var existElParent = existEl && existEl.parent;\n\n  if (existElParent) {\n    existEl.type === 'group' && existEl.traverse(function (el) {\n      removeEl(el, elMap);\n    });\n    elMap.removeKey(existEl.__ecGraphicId);\n    existElParent.remove(existEl);\n  }\n} // Remove unnecessary props to avoid potential problems.\n\n\nfunction getCleanedElOption(elOption) {\n  elOption = zrUtil.extend({}, elOption);\n  zrUtil.each(['id', 'parentId', '$action', 'hv', 'bounding'].concat(layoutUtil.LOCATION_PARAMS), function (name) {\n    delete elOption[name];\n  });\n  return elOption;\n}\n\nfunction isSetLoc(obj, props) {\n  var isSet;\n  zrUtil.each(props, function (prop) {\n    obj[prop] != null && obj[prop] !== 'auto' && (isSet = true);\n  });\n  return isSet;\n}\n\nfunction setKeyInfoToNewElOption(resultItem, newElOption) {\n  var existElOption = resultItem.exist; // Set id and type after id assigned.\n\n  newElOption.id = resultItem.keyInfo.id;\n  !newElOption.type && existElOption && (newElOption.type = existElOption.type); // Set parent id if not specified\n\n  if (newElOption.parentId == null) {\n    var newElParentOption = newElOption.parentOption;\n\n    if (newElParentOption) {\n      newElOption.parentId = newElParentOption.id;\n    } else if (existElOption) {\n      newElOption.parentId = existElOption.parentId;\n    }\n  } // Clear\n\n\n  newElOption.parentOption = null;\n}\n\nfunction mergeNewElOptionToExist(existList, index, newElOption) {\n  // Update existing options, for `getOption` feature.\n  var newElOptCopy = zrUtil.extend({}, newElOption);\n  var existElOption = existList[index];\n  var $action = newElOption.$action || 'merge';\n\n  if ($action === 'merge') {\n    if (existElOption) {\n      // We can ensure that newElOptCopy and existElOption are not\n      // the same object, so `merge` will not change newElOptCopy.\n      zrUtil.merge(existElOption, newElOptCopy, true); // Rigid body, use ignoreSize.\n\n      layoutUtil.mergeLayoutParam(existElOption, newElOptCopy, {\n        ignoreSize: true\n      }); // Will be used in render.\n\n      layoutUtil.copyLayoutParams(newElOption, existElOption);\n    } else {\n      existList[index] = newElOptCopy;\n    }\n  } else if ($action === 'replace') {\n    existList[index] = newElOptCopy;\n  } else if ($action === 'remove') {\n    // null will be cleaned later.\n    existElOption && (existList[index] = null);\n  }\n}\n\nfunction setLayoutInfoToExist(existItem, newElOption) {\n  if (!existItem) {\n    return;\n  }\n\n  existItem.hv = newElOption.hv = [// Rigid body, dont care `width`.\n  isSetLoc(newElOption, ['left', 'right']), // Rigid body, dont care `height`.\n  isSetLoc(newElOption, ['top', 'bottom'])]; // Give default group size. Otherwise layout error may occur.\n\n  if (existItem.type === 'group') {\n    existItem.width == null && (existItem.width = newElOption.width = 0);\n    existItem.height == null && (existItem.height = newElOption.height = 0);\n  }\n}","require(\"./gridSimple\");\n\nrequire(\"./axisPointer/CartesianAxisPointer\");\n\nrequire(\"./axisPointer\");","var echarts = require(\"../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar graphic = require(\"../util/graphic\");\n\nrequire(\"../coord/cartesian/Grid\");\n\nrequire(\"./axis\");\n\n// Grid view\necharts.extendComponentView({\n  type: 'grid',\n  render: function (gridModel, ecModel) {\n    this.group.removeAll();\n\n    if (gridModel.get('show')) {\n      this.group.add(new graphic.Rect({\n        shape: gridModel.coordinateSystem.getRect(),\n        style: zrUtil.defaults({\n          fill: gridModel.get('backgroundColor')\n        }, gridModel.getItemStyle()),\n        silent: true,\n        z2: -1\n      }));\n    }\n  }\n});\necharts.registerPreprocessor(function (option) {\n  // Only create grid when need\n  if (option.xAxis && option.yAxis && !option.grid) {\n    option.grid = {};\n  }\n});","var _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar Eventful = require(\"zrender/lib/mixin/Eventful\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar interactionMutex = require(\"./interactionMutex\");\n\nvar DataDiffer = require(\"../../data/DataDiffer\");\n\nvar curry = zrUtil.curry;\nvar each = zrUtil.each;\nvar map = zrUtil.map;\nvar mathMin = Math.min;\nvar mathMax = Math.max;\nvar mathPow = Math.pow;\nvar COVER_Z = 10000;\nvar UNSELECT_THRESHOLD = 6;\nvar MIN_RESIZE_LINE_WIDTH = 6;\nvar MUTEX_RESOURCE_KEY = 'globalPan';\nvar DIRECTION_MAP = {\n  w: [0, 0],\n  e: [0, 1],\n  n: [1, 0],\n  s: [1, 1]\n};\nvar CURSOR_MAP = {\n  w: 'ew',\n  e: 'ew',\n  n: 'ns',\n  s: 'ns',\n  ne: 'nesw',\n  sw: 'nesw',\n  nw: 'nwse',\n  se: 'nwse'\n};\nvar DEFAULT_BRUSH_OPT = {\n  brushStyle: {\n    lineWidth: 2,\n    stroke: 'rgba(0,0,0,0.3)',\n    fill: 'rgba(0,0,0,0.1)'\n  },\n  transformable: true,\n  brushMode: 'single',\n  removeOnClick: false\n};\nvar baseUID = 0;\n/**\n * @alias module:echarts/component/helper/BrushController\n * @constructor\n * @mixin {module:zrender/mixin/Eventful}\n * @event module:echarts/component/helper/BrushController#brush\n *        params:\n *            areas: Array.<Array>, coord relates to container group,\n *                                    If no container specified, to global.\n *            opt {\n *                isEnd: boolean,\n *                removeOnClick: boolean\n *            }\n *\n * @param {module:zrender/zrender~ZRender} zr\n */\n\nfunction BrushController(zr) {\n  Eventful.call(this);\n  /**\n   * @type {module:zrender/zrender~ZRender}\n   * @private\n   */\n\n  this._zr = zr;\n  /**\n   * @type {module:zrender/container/Group}\n   * @readOnly\n   */\n\n  this.group = new graphic.Group();\n  /**\n   * Only for drawing (after enabledBrush).\n   *     'line', 'rect', 'polygon' or false\n   *     If passing false/null/undefined, disable brush.\n   *     If passing 'auto', determined by panel.defaultBrushType\n   * @private\n   * @type {string}\n   */\n\n  this._brushType;\n  /**\n   * Only for drawing (after enabledBrush).\n   *\n   * @private\n   * @type {Object}\n   */\n\n  this._brushOption;\n  /**\n   * @private\n   * @type {Object}\n   */\n\n  this._panels;\n  /**\n   * @private\n   * @type {Array.<nubmer>}\n   */\n\n  this._track = [];\n  /**\n   * @private\n   * @type {boolean}\n   */\n\n  this._dragging;\n  /**\n   * @private\n   * @type {Array}\n   */\n\n  this._covers = [];\n  /**\n   * @private\n   * @type {moudule:zrender/container/Group}\n   */\n\n  this._creatingCover;\n  /**\n   * `true` means global panel\n   * @private\n   * @type {module:zrender/container/Group|boolean}\n   */\n\n  this._creatingPanel;\n  /**\n   * @private\n   * @type {boolean}\n   */\n\n  this._enableGlobalPan;\n  /**\n   * @private\n   * @type {boolean}\n   */\n\n  /**\n   * @private\n   * @type {string}\n   */\n  this._uid = 'brushController_' + baseUID++;\n  /**\n   * @private\n   * @type {Object}\n   */\n\n  this._handlers = {};\n  each(mouseHandlers, function (handler, eventName) {\n    this._handlers[eventName] = zrUtil.bind(handler, this);\n  }, this);\n}\n\nBrushController.prototype = {\n  constructor: BrushController,\n\n  /**\n   * If set to null/undefined/false, select disabled.\n   * @param {Object} brushOption\n   * @param {string|boolean} brushOption.brushType 'line', 'rect', 'polygon' or false\n   *                          If passing false/null/undefined, disable brush.\n   *                          If passing 'auto', determined by panel.defaultBrushType.\n   *                              ('auto' can not be used in global panel)\n   * @param {number} [brushOption.brushMode='single'] 'single' or 'multiple'\n   * @param {boolean} [brushOption.transformable=true]\n   * @param {boolean} [brushOption.removeOnClick=false]\n   * @param {Object} [brushOption.brushStyle]\n   * @param {number} [brushOption.brushStyle.width]\n   * @param {number} [brushOption.brushStyle.lineWidth]\n   * @param {string} [brushOption.brushStyle.stroke]\n   * @param {string} [brushOption.brushStyle.fill]\n   * @param {number} [brushOption.z]\n   */\n  enableBrush: function (brushOption) {\n    this._brushType && doDisableBrush(this);\n    brushOption.brushType && doEnableBrush(this, brushOption);\n    return this;\n  },\n\n  /**\n   * @param {Array.<Object>} panelOpts If not pass, it is global brush.\n   *        Each items: {\n   *            panelId, // mandatory.\n   *            clipPath, // mandatory. function.\n   *            isTargetByCursor, // mandatory. function.\n   *            defaultBrushType, // optional, only used when brushType is 'auto'.\n   *            getLinearBrushOtherExtent, // optional. function.\n   *        }\n   */\n  setPanels: function (panelOpts) {\n    if (panelOpts && panelOpts.length) {\n      var panels = this._panels = {};\n      zrUtil.each(panelOpts, function (panelOpts) {\n        panels[panelOpts.panelId] = zrUtil.clone(panelOpts);\n      });\n    } else {\n      this._panels = null;\n    }\n\n    return this;\n  },\n\n  /**\n   * @param {Object} [opt]\n   * @return {boolean} [opt.enableGlobalPan=false]\n   */\n  mount: function (opt) {\n    opt = opt || {};\n    this._enableGlobalPan = opt.enableGlobalPan;\n    var thisGroup = this.group;\n\n    this._zr.add(thisGroup);\n\n    thisGroup.attr({\n      position: opt.position || [0, 0],\n      rotation: opt.rotation || 0,\n      scale: opt.scale || [1, 1]\n    });\n    this._transform = thisGroup.getLocalTransform();\n    return this;\n  },\n  eachCover: function (cb, context) {\n    each(this._covers, cb, context);\n  },\n\n  /**\n   * Update covers.\n   * @param {Array.<Object>} brushOptionList Like:\n   *        [\n   *            {id: 'xx', brushType: 'line', range: [23, 44], brushStyle, transformable},\n   *            {id: 'yy', brushType: 'rect', range: [[23, 44], [23, 54]]},\n   *            ...\n   *        ]\n   *        `brushType` is required in each cover info. (can not be 'auto')\n   *        `id` is not mandatory.\n   *        `brushStyle`, `transformable` is not mandatory, use DEFAULT_BRUSH_OPT by default.\n   *        If brushOptionList is null/undefined, all covers removed.\n   */\n  updateCovers: function (brushOptionList) {\n    brushOptionList = zrUtil.map(brushOptionList, function (brushOption) {\n      return zrUtil.merge(zrUtil.clone(DEFAULT_BRUSH_OPT), brushOption, true);\n    });\n    var tmpIdPrefix = '\\0-brush-index-';\n    var oldCovers = this._covers;\n    var newCovers = this._covers = [];\n    var controller = this;\n    var creatingCover = this._creatingCover;\n    new DataDiffer(oldCovers, brushOptionList, oldGetKey, getKey).add(addOrUpdate).update(addOrUpdate).remove(remove).execute();\n    return this;\n\n    function getKey(brushOption, index) {\n      return (brushOption.id != null ? brushOption.id : tmpIdPrefix + index) + '-' + brushOption.brushType;\n    }\n\n    function oldGetKey(cover, index) {\n      return getKey(cover.__brushOption, index);\n    }\n\n    function addOrUpdate(newIndex, oldIndex) {\n      var newBrushOption = brushOptionList[newIndex]; // Consider setOption in event listener of brushSelect,\n      // where updating cover when creating should be forbiden.\n\n      if (oldIndex != null && oldCovers[oldIndex] === creatingCover) {\n        newCovers[newIndex] = oldCovers[oldIndex];\n      } else {\n        var cover = newCovers[newIndex] = oldIndex != null ? (oldCovers[oldIndex].__brushOption = newBrushOption, oldCovers[oldIndex]) : endCreating(controller, createCover(controller, newBrushOption));\n        updateCoverAfterCreation(controller, cover);\n      }\n    }\n\n    function remove(oldIndex) {\n      if (oldCovers[oldIndex] !== creatingCover) {\n        controller.group.remove(oldCovers[oldIndex]);\n      }\n    }\n  },\n  unmount: function () {\n    this.enableBrush(false); // container may 'removeAll' outside.\n\n    clearCovers(this);\n\n    this._zr.remove(this.group);\n\n    return this;\n  },\n  dispose: function () {\n    this.unmount();\n    this.off();\n  }\n};\nzrUtil.mixin(BrushController, Eventful);\n\nfunction doEnableBrush(controller, brushOption) {\n  var zr = controller._zr; // Consider roam, which takes globalPan too.\n\n  if (!controller._enableGlobalPan) {\n    interactionMutex.take(zr, MUTEX_RESOURCE_KEY, controller._uid);\n  }\n\n  each(controller._handlers, function (handler, eventName) {\n    zr.on(eventName, handler);\n  });\n  controller._brushType = brushOption.brushType;\n  controller._brushOption = zrUtil.merge(zrUtil.clone(DEFAULT_BRUSH_OPT), brushOption, true);\n}\n\nfunction doDisableBrush(controller) {\n  var zr = controller._zr;\n  interactionMutex.release(zr, MUTEX_RESOURCE_KEY, controller._uid);\n  each(controller._handlers, function (handler, eventName) {\n    zr.off(eventName, handler);\n  });\n  controller._brushType = controller._brushOption = null;\n}\n\nfunction createCover(controller, brushOption) {\n  var cover = coverRenderers[brushOption.brushType].createCover(controller, brushOption);\n  cover.__brushOption = brushOption;\n  updateZ(cover, brushOption);\n  controller.group.add(cover);\n  return cover;\n}\n\nfunction endCreating(controller, creatingCover) {\n  var coverRenderer = getCoverRenderer(creatingCover);\n\n  if (coverRenderer.endCreating) {\n    coverRenderer.endCreating(controller, creatingCover);\n    updateZ(creatingCover, creatingCover.__brushOption);\n  }\n\n  return creatingCover;\n}\n\nfunction updateCoverShape(controller, cover) {\n  var brushOption = cover.__brushOption;\n  getCoverRenderer(cover).updateCoverShape(controller, cover, brushOption.range, brushOption);\n}\n\nfunction updateZ(cover, brushOption) {\n  var z = brushOption.z;\n  z == null && (z = COVER_Z);\n  cover.traverse(function (el) {\n    el.z = z;\n    el.z2 = z; // Consider in given container.\n  });\n}\n\nfunction updateCoverAfterCreation(controller, cover) {\n  getCoverRenderer(cover).updateCommon(controller, cover);\n  updateCoverShape(controller, cover);\n}\n\nfunction getCoverRenderer(cover) {\n  return coverRenderers[cover.__brushOption.brushType];\n} // return target panel or `true` (means global panel)\n\n\nfunction getPanelByPoint(controller, e, localCursorPoint) {\n  var panels = controller._panels;\n\n  if (!panels) {\n    return true; // Global panel\n  }\n\n  var panel;\n  var transform = controller._transform;\n  each(panels, function (pn) {\n    pn.isTargetByCursor(e, localCursorPoint, transform) && (panel = pn);\n  });\n  return panel;\n} // Return a panel or true\n\n\nfunction getPanelByCover(controller, cover) {\n  var panels = controller._panels;\n\n  if (!panels) {\n    return true; // Global panel\n  }\n\n  var panelId = cover.__brushOption.panelId; // User may give cover without coord sys info,\n  // which is then treated as global panel.\n\n  return panelId != null ? panels[panelId] : true;\n}\n\nfunction clearCovers(controller) {\n  var covers = controller._covers;\n  var originalLength = covers.length;\n  each(covers, function (cover) {\n    controller.group.remove(cover);\n  }, controller);\n  covers.length = 0;\n  return !!originalLength;\n}\n\nfunction trigger(controller, opt) {\n  var areas = map(controller._covers, function (cover) {\n    var brushOption = cover.__brushOption;\n    var range = zrUtil.clone(brushOption.range);\n    return {\n      brushType: brushOption.brushType,\n      panelId: brushOption.panelId,\n      range: range\n    };\n  });\n  controller.trigger('brush', areas, {\n    isEnd: !!opt.isEnd,\n    removeOnClick: !!opt.removeOnClick\n  });\n}\n\nfunction shouldShowCover(controller) {\n  var track = controller._track;\n\n  if (!track.length) {\n    return false;\n  }\n\n  var p2 = track[track.length - 1];\n  var p1 = track[0];\n  var dx = p2[0] - p1[0];\n  var dy = p2[1] - p1[1];\n  var dist = mathPow(dx * dx + dy * dy, 0.5);\n  return dist > UNSELECT_THRESHOLD;\n}\n\nfunction getTrackEnds(track) {\n  var tail = track.length - 1;\n  tail < 0 && (tail = 0);\n  return [track[0], track[tail]];\n}\n\nfunction createBaseRectCover(doDrift, controller, brushOption, edgeNames) {\n  var cover = new graphic.Group();\n  cover.add(new graphic.Rect({\n    name: 'main',\n    style: makeStyle(brushOption),\n    silent: true,\n    draggable: true,\n    cursor: 'move',\n    drift: curry(doDrift, controller, cover, 'nswe'),\n    ondragend: curry(trigger, controller, {\n      isEnd: true\n    })\n  }));\n  each(edgeNames, function (name) {\n    cover.add(new graphic.Rect({\n      name: name,\n      style: {\n        opacity: 0\n      },\n      draggable: true,\n      silent: true,\n      invisible: true,\n      drift: curry(doDrift, controller, cover, name),\n      ondragend: curry(trigger, controller, {\n        isEnd: true\n      })\n    }));\n  });\n  return cover;\n}\n\nfunction updateBaseRect(controller, cover, localRange, brushOption) {\n  var lineWidth = brushOption.brushStyle.lineWidth || 0;\n  var handleSize = mathMax(lineWidth, MIN_RESIZE_LINE_WIDTH);\n  var x = localRange[0][0];\n  var y = localRange[1][0];\n  var xa = x - lineWidth / 2;\n  var ya = y - lineWidth / 2;\n  var x2 = localRange[0][1];\n  var y2 = localRange[1][1];\n  var x2a = x2 - handleSize + lineWidth / 2;\n  var y2a = y2 - handleSize + lineWidth / 2;\n  var width = x2 - x;\n  var height = y2 - y;\n  var widtha = width + lineWidth;\n  var heighta = height + lineWidth;\n  updateRectShape(controller, cover, 'main', x, y, width, height);\n\n  if (brushOption.transformable) {\n    updateRectShape(controller, cover, 'w', xa, ya, handleSize, heighta);\n    updateRectShape(controller, cover, 'e', x2a, ya, handleSize, heighta);\n    updateRectShape(controller, cover, 'n', xa, ya, widtha, handleSize);\n    updateRectShape(controller, cover, 's', xa, y2a, widtha, handleSize);\n    updateRectShape(controller, cover, 'nw', xa, ya, handleSize, handleSize);\n    updateRectShape(controller, cover, 'ne', x2a, ya, handleSize, handleSize);\n    updateRectShape(controller, cover, 'sw', xa, y2a, handleSize, handleSize);\n    updateRectShape(controller, cover, 'se', x2a, y2a, handleSize, handleSize);\n  }\n}\n\nfunction updateCommon(controller, cover) {\n  var brushOption = cover.__brushOption;\n  var transformable = brushOption.transformable;\n  var mainEl = cover.childAt(0);\n  mainEl.useStyle(makeStyle(brushOption));\n  mainEl.attr({\n    silent: !transformable,\n    cursor: transformable ? 'move' : 'default'\n  });\n  each(['w', 'e', 'n', 's', 'se', 'sw', 'ne', 'nw'], function (name) {\n    var el = cover.childOfName(name);\n    var globalDir = getGlobalDirection(controller, name);\n    el && el.attr({\n      silent: !transformable,\n      invisible: !transformable,\n      cursor: transformable ? CURSOR_MAP[globalDir] + '-resize' : null\n    });\n  });\n}\n\nfunction updateRectShape(controller, cover, name, x, y, w, h) {\n  var el = cover.childOfName(name);\n  el && el.setShape(pointsToRect(clipByPanel(controller, cover, [[x, y], [x + w, y + h]])));\n}\n\nfunction makeStyle(brushOption) {\n  return zrUtil.defaults({\n    strokeNoScale: true\n  }, brushOption.brushStyle);\n}\n\nfunction formatRectRange(x, y, x2, y2) {\n  var min = [mathMin(x, x2), mathMin(y, y2)];\n  var max = [mathMax(x, x2), mathMax(y, y2)];\n  return [[min[0], max[0]], // x range\n  [min[1], max[1]] // y range\n  ];\n}\n\nfunction getTransform(controller) {\n  return graphic.getTransform(controller.group);\n}\n\nfunction getGlobalDirection(controller, localDirection) {\n  if (localDirection.length > 1) {\n    localDirection = localDirection.split('');\n    var globalDir = [getGlobalDirection(controller, localDirection[0]), getGlobalDirection(controller, localDirection[1])];\n    (globalDir[0] === 'e' || globalDir[0] === 'w') && globalDir.reverse();\n    return globalDir.join('');\n  } else {\n    var map = {\n      w: 'left',\n      e: 'right',\n      n: 'top',\n      s: 'bottom'\n    };\n    var inverseMap = {\n      left: 'w',\n      right: 'e',\n      top: 'n',\n      bottom: 's'\n    };\n    var globalDir = graphic.transformDirection(map[localDirection], getTransform(controller));\n    return inverseMap[globalDir];\n  }\n}\n\nfunction driftRect(toRectRange, fromRectRange, controller, cover, name, dx, dy, e) {\n  var brushOption = cover.__brushOption;\n  var rectRange = toRectRange(brushOption.range);\n  var localDelta = toLocalDelta(controller, dx, dy);\n  each(name.split(''), function (namePart) {\n    var ind = DIRECTION_MAP[namePart];\n    rectRange[ind[0]][ind[1]] += localDelta[ind[0]];\n  });\n  brushOption.range = fromRectRange(formatRectRange(rectRange[0][0], rectRange[1][0], rectRange[0][1], rectRange[1][1]));\n  updateCoverAfterCreation(controller, cover);\n  trigger(controller, {\n    isEnd: false\n  });\n}\n\nfunction driftPolygon(controller, cover, dx, dy, e) {\n  var range = cover.__brushOption.range;\n  var localDelta = toLocalDelta(controller, dx, dy);\n  each(range, function (point) {\n    point[0] += localDelta[0];\n    point[1] += localDelta[1];\n  });\n  updateCoverAfterCreation(controller, cover);\n  trigger(controller, {\n    isEnd: false\n  });\n}\n\nfunction toLocalDelta(controller, dx, dy) {\n  var thisGroup = controller.group;\n  var localD = thisGroup.transformCoordToLocal(dx, dy);\n  var localZero = thisGroup.transformCoordToLocal(0, 0);\n  return [localD[0] - localZero[0], localD[1] - localZero[1]];\n}\n\nfunction clipByPanel(controller, cover, data) {\n  var panel = getPanelByCover(controller, cover);\n  return panel && panel !== true ? panel.clipPath(data, controller._transform) : zrUtil.clone(data);\n}\n\nfunction pointsToRect(points) {\n  var xmin = mathMin(points[0][0], points[1][0]);\n  var ymin = mathMin(points[0][1], points[1][1]);\n  var xmax = mathMax(points[0][0], points[1][0]);\n  var ymax = mathMax(points[0][1], points[1][1]);\n  return {\n    x: xmin,\n    y: ymin,\n    width: xmax - xmin,\n    height: ymax - ymin\n  };\n}\n\nfunction resetCursor(controller, e, localCursorPoint) {\n  // Check active\n  if (!controller._brushType) {\n    return;\n  }\n\n  var zr = controller._zr;\n  var covers = controller._covers;\n  var currPanel = getPanelByPoint(controller, e, localCursorPoint); // Check whether in covers.\n\n  if (!controller._dragging) {\n    for (var i = 0; i < covers.length; i++) {\n      var brushOption = covers[i].__brushOption;\n\n      if (currPanel && (currPanel === true || brushOption.panelId === currPanel.panelId) && coverRenderers[brushOption.brushType].contain(covers[i], localCursorPoint[0], localCursorPoint[1])) {\n        // Use cursor style set on cover.\n        return;\n      }\n    }\n  }\n\n  currPanel && zr.setCursorStyle('crosshair');\n}\n\nfunction preventDefault(e) {\n  var rawE = e.event;\n  rawE.preventDefault && rawE.preventDefault();\n}\n\nfunction mainShapeContain(cover, x, y) {\n  return cover.childOfName('main').contain(x, y);\n}\n\nfunction updateCoverByMouse(controller, e, localCursorPoint, isEnd) {\n  var creatingCover = controller._creatingCover;\n  var panel = controller._creatingPanel;\n  var thisBrushOption = controller._brushOption;\n  var eventParams;\n\n  controller._track.push(localCursorPoint.slice());\n\n  if (shouldShowCover(controller) || creatingCover) {\n    if (panel && !creatingCover) {\n      thisBrushOption.brushMode === 'single' && clearCovers(controller);\n      var brushOption = zrUtil.clone(thisBrushOption);\n      brushOption.brushType = determineBrushType(brushOption.brushType, panel);\n      brushOption.panelId = panel === true ? null : panel.panelId;\n      creatingCover = controller._creatingCover = createCover(controller, brushOption);\n\n      controller._covers.push(creatingCover);\n    }\n\n    if (creatingCover) {\n      var coverRenderer = coverRenderers[determineBrushType(controller._brushType, panel)];\n      var coverBrushOption = creatingCover.__brushOption;\n      coverBrushOption.range = coverRenderer.getCreatingRange(clipByPanel(controller, creatingCover, controller._track));\n\n      if (isEnd) {\n        endCreating(controller, creatingCover);\n        coverRenderer.updateCommon(controller, creatingCover);\n      }\n\n      updateCoverShape(controller, creatingCover);\n      eventParams = {\n        isEnd: isEnd\n      };\n    }\n  } else if (isEnd && thisBrushOption.brushMode === 'single' && thisBrushOption.removeOnClick) {\n    // Help user to remove covers easily, only by a tiny drag, in 'single' mode.\n    // But a single click do not clear covers, because user may have casual\n    // clicks (for example, click on other component and do not expect covers\n    // disappear).\n    // Only some cover removed, trigger action, but not every click trigger action.\n    if (getPanelByPoint(controller, e, localCursorPoint) && clearCovers(controller)) {\n      eventParams = {\n        isEnd: isEnd,\n        removeOnClick: true\n      };\n    }\n  }\n\n  return eventParams;\n}\n\nfunction determineBrushType(brushType, panel) {\n  if (brushType === 'auto') {\n    return panel.defaultBrushType;\n  }\n\n  return brushType;\n}\n\nvar mouseHandlers = {\n  mousedown: function (e) {\n    if (this._dragging) {\n      // In case some browser do not support globalOut,\n      // and release mose out side the browser.\n      handleDragEnd.call(this, e);\n    } else if (!e.target || !e.target.draggable) {\n      preventDefault(e);\n      var localCursorPoint = this.group.transformCoordToLocal(e.offsetX, e.offsetY);\n      this._creatingCover = null;\n      var panel = this._creatingPanel = getPanelByPoint(this, e, localCursorPoint);\n\n      if (panel) {\n        this._dragging = true;\n        this._track = [localCursorPoint.slice()];\n      }\n    }\n  },\n  mousemove: function (e) {\n    var localCursorPoint = this.group.transformCoordToLocal(e.offsetX, e.offsetY);\n    resetCursor(this, e, localCursorPoint);\n\n    if (this._dragging) {\n      preventDefault(e);\n      var eventParams = updateCoverByMouse(this, e, localCursorPoint, false);\n      eventParams && trigger(this, eventParams);\n    }\n  },\n  mouseup: handleDragEnd //,\n  // FIXME\n  // in tooltip, globalout should not be triggered.\n  // globalout: handleDragEnd\n\n};\n\nfunction handleDragEnd(e) {\n  if (this._dragging) {\n    preventDefault(e);\n    var localCursorPoint = this.group.transformCoordToLocal(e.offsetX, e.offsetY);\n    var eventParams = updateCoverByMouse(this, e, localCursorPoint, true);\n    this._dragging = false;\n    this._track = [];\n    this._creatingCover = null; // trigger event shoule be at final, after procedure will be nested.\n\n    eventParams && trigger(this, eventParams);\n  }\n}\n/**\n * key: brushType\n * @type {Object}\n */\n\n\nvar coverRenderers = {\n  lineX: getLineRenderer(0),\n  lineY: getLineRenderer(1),\n  rect: {\n    createCover: function (controller, brushOption) {\n      return createBaseRectCover(curry(driftRect, function (range) {\n        return range;\n      }, function (range) {\n        return range;\n      }), controller, brushOption, ['w', 'e', 'n', 's', 'se', 'sw', 'ne', 'nw']);\n    },\n    getCreatingRange: function (localTrack) {\n      var ends = getTrackEnds(localTrack);\n      return formatRectRange(ends[1][0], ends[1][1], ends[0][0], ends[0][1]);\n    },\n    updateCoverShape: function (controller, cover, localRange, brushOption) {\n      updateBaseRect(controller, cover, localRange, brushOption);\n    },\n    updateCommon: updateCommon,\n    contain: mainShapeContain\n  },\n  polygon: {\n    createCover: function (controller, brushOption) {\n      var cover = new graphic.Group(); // Do not use graphic.Polygon because graphic.Polyline do not close the\n      // border of the shape when drawing, which is a better experience for user.\n\n      cover.add(new graphic.Polyline({\n        name: 'main',\n        style: makeStyle(brushOption),\n        silent: true\n      }));\n      return cover;\n    },\n    getCreatingRange: function (localTrack) {\n      return localTrack;\n    },\n    endCreating: function (controller, cover) {\n      cover.remove(cover.childAt(0)); // Use graphic.Polygon close the shape.\n\n      cover.add(new graphic.Polygon({\n        name: 'main',\n        draggable: true,\n        drift: curry(driftPolygon, controller, cover),\n        ondragend: curry(trigger, controller, {\n          isEnd: true\n        })\n      }));\n    },\n    updateCoverShape: function (controller, cover, localRange, brushOption) {\n      cover.childAt(0).setShape({\n        points: clipByPanel(controller, cover, localRange)\n      });\n    },\n    updateCommon: updateCommon,\n    contain: mainShapeContain\n  }\n};\n\nfunction getLineRenderer(xyIndex) {\n  return {\n    createCover: function (controller, brushOption) {\n      return createBaseRectCover(curry(driftRect, function (range) {\n        var rectRange = [range, [0, 100]];\n        xyIndex && rectRange.reverse();\n        return rectRange;\n      }, function (rectRange) {\n        return rectRange[xyIndex];\n      }), controller, brushOption, [['w', 'e'], ['n', 's']][xyIndex]);\n    },\n    getCreatingRange: function (localTrack) {\n      var ends = getTrackEnds(localTrack);\n      var min = mathMin(ends[0][xyIndex], ends[1][xyIndex]);\n      var max = mathMax(ends[0][xyIndex], ends[1][xyIndex]);\n      return [min, max];\n    },\n    updateCoverShape: function (controller, cover, localRange, brushOption) {\n      var otherExtent; // If brushWidth not specified, fit the panel.\n\n      var panel = getPanelByCover(controller, cover);\n\n      if (panel !== true && panel.getLinearBrushOtherExtent) {\n        otherExtent = panel.getLinearBrushOtherExtent(xyIndex, controller._transform);\n      } else {\n        var zr = controller._zr;\n        otherExtent = [0, [zr.getWidth(), zr.getHeight()][1 - xyIndex]];\n      }\n\n      var rectRange = [localRange, otherExtent];\n      xyIndex && rectRange.reverse();\n      updateBaseRect(controller, cover, rectRange, brushOption);\n    },\n    updateCommon: updateCommon,\n    contain: mainShapeContain\n  };\n}\n\nvar _default = BrushController;\nmodule.exports = _default;","var _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar modelUtil = require(\"../../util/model\");\n\nvar brushHelper = require(\"./brushHelper\");\n\nvar each = zrUtil.each;\nvar indexOf = zrUtil.indexOf;\nvar curry = zrUtil.curry;\nvar COORD_CONVERTS = ['dataToPoint', 'pointToData']; // FIXME\n// how to genarialize to more coordinate systems.\n\nvar INCLUDE_FINDER_MAIN_TYPES = ['grid', 'xAxis', 'yAxis', 'geo', 'graph', 'polar', 'radiusAxis', 'angleAxis', 'bmap'];\n/**\n * [option in constructor]:\n * {\n *     Index/Id/Name of geo, xAxis, yAxis, grid: See util/model#parseFinder.\n * }\n *\n *\n * [targetInfo]:\n *\n * There can be multiple axes in a single targetInfo. Consider the case\n * of `grid` component, a targetInfo represents a grid which contains one or more\n * cartesian and one or more axes. And consider the case of parallel system,\n * which has multiple axes in a coordinate system.\n * Can be {\n *     panelId: ...,\n *     coordSys: <a representitive cartesian in grid (first cartesian by default)>,\n *     coordSyses: all cartesians.\n *     gridModel: <grid component>\n *     xAxes: correspond to coordSyses on index\n *     yAxes: correspond to coordSyses on index\n * }\n * or {\n *     panelId: ...,\n *     coordSys: <geo coord sys>\n *     coordSyses: [<geo coord sys>]\n *     geoModel: <geo component>\n * }\n *\n *\n * [panelOpt]:\n *\n * Make from targetInfo. Input to BrushController.\n * {\n *     panelId: ...,\n *     rect: ...\n * }\n *\n *\n * [area]:\n *\n * Generated by BrushController or user input.\n * {\n *     panelId: Used to locate coordInfo directly. If user inpput, no panelId.\n *     brushType: determine how to convert to/from coord('rect' or 'polygon' or 'lineX/Y').\n *     Index/Id/Name of geo, xAxis, yAxis, grid: See util/model#parseFinder.\n *     range: pixel range.\n *     coordRange: representitive coord range (the first one of coordRanges).\n *     coordRanges: <Array> coord ranges, used in multiple cartesian in one grid.\n * }\n */\n\n/**\n * @param {Object} option contains Index/Id/Name of xAxis/yAxis/geo/grid\n *        Each can be {number|Array.<number>}. like: {xAxisIndex: [3, 4]}\n * @param {module:echarts/model/Global} ecModel\n * @param {Object} [opt]\n * @param {Array.<string>} [opt.include] include coordinate system types.\n */\n\nfunction BrushTargetManager(option, ecModel, opt) {\n  /**\n   * @private\n   * @type {Array.<Object>}\n   */\n  var targetInfoList = this._targetInfoList = [];\n  var info = {};\n  var foundCpts = parseFinder(ecModel, option);\n  each(targetInfoBuilders, function (builder, type) {\n    if (!opt || !opt.include || indexOf(opt.include, type) >= 0) {\n      builder(foundCpts, targetInfoList, info);\n    }\n  });\n}\n\nvar proto = BrushTargetManager.prototype;\n\nproto.setOutputRanges = function (areas, ecModel) {\n  this.matchOutputRanges(areas, ecModel, function (area, coordRange, coordSys) {\n    (area.coordRanges || (area.coordRanges = [])).push(coordRange); // area.coordRange is the first of area.coordRanges\n\n    if (!area.coordRange) {\n      area.coordRange = coordRange; // In 'category' axis, coord to pixel is not reversible, so we can not\n      // rebuild range by coordRange accrately, which may bring trouble when\n      // brushing only one item. So we use __rangeOffset to rebuilding range\n      // by coordRange. And this it only used in brush component so it is no\n      // need to be adapted to coordRanges.\n\n      var result = coordConvert[area.brushType](0, coordSys, coordRange);\n      area.__rangeOffset = {\n        offset: diffProcessor[area.brushType](result.values, area.range, [1, 1]),\n        xyMinMax: result.xyMinMax\n      };\n    }\n  });\n};\n\nproto.matchOutputRanges = function (areas, ecModel, cb) {\n  each(areas, function (area) {\n    var targetInfo = this.findTargetInfo(area, ecModel);\n\n    if (targetInfo && targetInfo !== true) {\n      zrUtil.each(targetInfo.coordSyses, function (coordSys) {\n        var result = coordConvert[area.brushType](1, coordSys, area.range);\n        cb(area, result.values, coordSys, ecModel);\n      });\n    }\n  }, this);\n};\n\nproto.setInputRanges = function (areas, ecModel) {\n  each(areas, function (area) {\n    var targetInfo = this.findTargetInfo(area, ecModel);\n    area.range = area.range || []; // convert coordRange to global range and set panelId.\n\n    if (targetInfo && targetInfo !== true) {\n      area.panelId = targetInfo.panelId; // (1) area.range shoule always be calculate from coordRange but does\n      // not keep its original value, for the sake of the dataZoom scenario,\n      // where area.coordRange remains unchanged but area.range may be changed.\n      // (2) Only support converting one coordRange to pixel range in brush\n      // component. So do not consider `coordRanges`.\n      // (3) About __rangeOffset, see comment above.\n\n      var result = coordConvert[area.brushType](0, targetInfo.coordSys, area.coordRange);\n      var rangeOffset = area.__rangeOffset;\n      area.range = rangeOffset ? diffProcessor[area.brushType](result.values, rangeOffset.offset, getScales(result.xyMinMax, rangeOffset.xyMinMax)) : result.values;\n    }\n  }, this);\n};\n\nproto.makePanelOpts = function (api, getDefaultBrushType) {\n  return zrUtil.map(this._targetInfoList, function (targetInfo) {\n    var rect = targetInfo.getPanelRect();\n    return {\n      panelId: targetInfo.panelId,\n      defaultBrushType: getDefaultBrushType && getDefaultBrushType(targetInfo),\n      clipPath: brushHelper.makeRectPanelClipPath(rect),\n      isTargetByCursor: brushHelper.makeRectIsTargetByCursor(rect, api, targetInfo.coordSysModel),\n      getLinearBrushOtherExtent: brushHelper.makeLinearBrushOtherExtent(rect)\n    };\n  });\n};\n\nproto.controlSeries = function (area, seriesModel, ecModel) {\n  // Check whether area is bound in coord, and series do not belong to that coord.\n  // If do not do this check, some brush (like lineX) will controll all axes.\n  var targetInfo = this.findTargetInfo(area, ecModel);\n  return targetInfo === true || targetInfo && indexOf(targetInfo.coordSyses, seriesModel.coordinateSystem) >= 0;\n};\n/**\n * If return Object, a coord found.\n * If reutrn true, global found.\n * Otherwise nothing found.\n *\n * @param {Object} area\n * @param {Array} targetInfoList\n * @return {Object|boolean}\n */\n\n\nproto.findTargetInfo = function (area, ecModel) {\n  var targetInfoList = this._targetInfoList;\n  var foundCpts = parseFinder(ecModel, area);\n\n  for (var i = 0; i < targetInfoList.length; i++) {\n    var targetInfo = targetInfoList[i];\n    var areaPanelId = area.panelId;\n\n    if (areaPanelId) {\n      if (targetInfo.panelId === areaPanelId) {\n        return targetInfo;\n      }\n    } else {\n      for (var i = 0; i < targetInfoMatchers.length; i++) {\n        if (targetInfoMatchers[i](foundCpts, targetInfo)) {\n          return targetInfo;\n        }\n      }\n    }\n  }\n\n  return true;\n};\n\nfunction formatMinMax(minMax) {\n  minMax[0] > minMax[1] && minMax.reverse();\n  return minMax;\n}\n\nfunction parseFinder(ecModel, option) {\n  return modelUtil.parseFinder(ecModel, option, {\n    includeMainTypes: INCLUDE_FINDER_MAIN_TYPES\n  });\n}\n\nvar targetInfoBuilders = {\n  grid: function (foundCpts, targetInfoList) {\n    var xAxisModels = foundCpts.xAxisModels;\n    var yAxisModels = foundCpts.yAxisModels;\n    var gridModels = foundCpts.gridModels; // Remove duplicated.\n\n    var gridModelMap = zrUtil.createHashMap();\n    var xAxesHas = {};\n    var yAxesHas = {};\n\n    if (!xAxisModels && !yAxisModels && !gridModels) {\n      return;\n    }\n\n    each(xAxisModels, function (axisModel) {\n      var gridModel = axisModel.axis.grid.model;\n      gridModelMap.set(gridModel.id, gridModel);\n      xAxesHas[gridModel.id] = true;\n    });\n    each(yAxisModels, function (axisModel) {\n      var gridModel = axisModel.axis.grid.model;\n      gridModelMap.set(gridModel.id, gridModel);\n      yAxesHas[gridModel.id] = true;\n    });\n    each(gridModels, function (gridModel) {\n      gridModelMap.set(gridModel.id, gridModel);\n      xAxesHas[gridModel.id] = true;\n      yAxesHas[gridModel.id] = true;\n    });\n    gridModelMap.each(function (gridModel) {\n      var grid = gridModel.coordinateSystem;\n      var cartesians = [];\n      each(grid.getCartesians(), function (cartesian, index) {\n        if (indexOf(xAxisModels, cartesian.getAxis('x').model) >= 0 || indexOf(yAxisModels, cartesian.getAxis('y').model) >= 0) {\n          cartesians.push(cartesian);\n        }\n      });\n      targetInfoList.push({\n        panelId: 'grid--' + gridModel.id,\n        gridModel: gridModel,\n        coordSysModel: gridModel,\n        // Use the first one as the representitive coordSys.\n        coordSys: cartesians[0],\n        coordSyses: cartesians,\n        getPanelRect: panelRectBuilder.grid,\n        xAxisDeclared: xAxesHas[gridModel.id],\n        yAxisDeclared: yAxesHas[gridModel.id]\n      });\n    });\n  },\n  geo: function (foundCpts, targetInfoList) {\n    each(foundCpts.geoModels, function (geoModel) {\n      var coordSys = geoModel.coordinateSystem;\n      targetInfoList.push({\n        panelId: 'geo--' + geoModel.id,\n        geoModel: geoModel,\n        coordSysModel: geoModel,\n        coordSys: coordSys,\n        coordSyses: [coordSys],\n        getPanelRect: panelRectBuilder.geo\n      });\n    });\n  }\n};\nvar targetInfoMatchers = [// grid\nfunction (foundCpts, targetInfo) {\n  var xAxisModel = foundCpts.xAxisModel;\n  var yAxisModel = foundCpts.yAxisModel;\n  var gridModel = foundCpts.gridModel;\n  !gridModel && xAxisModel && (gridModel = xAxisModel.axis.grid.model);\n  !gridModel && yAxisModel && (gridModel = yAxisModel.axis.grid.model);\n  return gridModel && gridModel === targetInfo.gridModel;\n}, // geo\nfunction (foundCpts, targetInfo) {\n  var geoModel = foundCpts.geoModel;\n  return geoModel && geoModel === targetInfo.geoModel;\n}];\nvar panelRectBuilder = {\n  grid: function () {\n    // grid is not Transformable.\n    return this.coordSys.grid.getRect().clone();\n  },\n  geo: function () {\n    var coordSys = this.coordSys;\n    var rect = coordSys.getBoundingRect().clone(); // geo roam and zoom transform\n\n    rect.applyTransform(graphic.getTransform(coordSys));\n    return rect;\n  }\n};\nvar coordConvert = {\n  lineX: curry(axisConvert, 0),\n  lineY: curry(axisConvert, 1),\n  rect: function (to, coordSys, rangeOrCoordRange) {\n    var xminymin = coordSys[COORD_CONVERTS[to]]([rangeOrCoordRange[0][0], rangeOrCoordRange[1][0]]);\n    var xmaxymax = coordSys[COORD_CONVERTS[to]]([rangeOrCoordRange[0][1], rangeOrCoordRange[1][1]]);\n    var values = [formatMinMax([xminymin[0], xmaxymax[0]]), formatMinMax([xminymin[1], xmaxymax[1]])];\n    return {\n      values: values,\n      xyMinMax: values\n    };\n  },\n  polygon: function (to, coordSys, rangeOrCoordRange) {\n    var xyMinMax = [[Infinity, -Infinity], [Infinity, -Infinity]];\n    var values = zrUtil.map(rangeOrCoordRange, function (item) {\n      var p = coordSys[COORD_CONVERTS[to]](item);\n      xyMinMax[0][0] = Math.min(xyMinMax[0][0], p[0]);\n      xyMinMax[1][0] = Math.min(xyMinMax[1][0], p[1]);\n      xyMinMax[0][1] = Math.max(xyMinMax[0][1], p[0]);\n      xyMinMax[1][1] = Math.max(xyMinMax[1][1], p[1]);\n      return p;\n    });\n    return {\n      values: values,\n      xyMinMax: xyMinMax\n    };\n  }\n};\n\nfunction axisConvert(axisNameIndex, to, coordSys, rangeOrCoordRange) {\n  var axis = coordSys.getAxis(['x', 'y'][axisNameIndex]);\n  var values = formatMinMax(zrUtil.map([0, 1], function (i) {\n    return to ? axis.coordToData(axis.toLocalCoord(rangeOrCoordRange[i])) : axis.toGlobalCoord(axis.dataToCoord(rangeOrCoordRange[i]));\n  }));\n  var xyMinMax = [];\n  xyMinMax[axisNameIndex] = values;\n  xyMinMax[1 - axisNameIndex] = [NaN, NaN];\n  return {\n    values: values,\n    xyMinMax: xyMinMax\n  };\n}\n\nvar diffProcessor = {\n  lineX: curry(axisDiffProcessor, 0),\n  lineY: curry(axisDiffProcessor, 1),\n  rect: function (values, refer, scales) {\n    return [[values[0][0] - scales[0] * refer[0][0], values[0][1] - scales[0] * refer[0][1]], [values[1][0] - scales[1] * refer[1][0], values[1][1] - scales[1] * refer[1][1]]];\n  },\n  polygon: function (values, refer, scales) {\n    return zrUtil.map(values, function (item, idx) {\n      return [item[0] - scales[0] * refer[idx][0], item[1] - scales[1] * refer[idx][1]];\n    });\n  }\n};\n\nfunction axisDiffProcessor(axisNameIndex, values, refer, scales) {\n  return [values[0] - scales[axisNameIndex] * refer[0], values[1] - scales[axisNameIndex] * refer[1]];\n} // We have to process scale caused by dataZoom manually,\n// although it might be not accurate.\n\n\nfunction getScales(xyMinMaxCurr, xyMinMaxOrigin) {\n  var sizeCurr = getSize(xyMinMaxCurr);\n  var sizeOrigin = getSize(xyMinMaxOrigin);\n  var scales = [sizeCurr[0] / sizeOrigin[0], sizeCurr[1] / sizeOrigin[1]];\n  isNaN(scales[0]) && (scales[0] = 1);\n  isNaN(scales[1]) && (scales[1] = 1);\n  return scales;\n}\n\nfunction getSize(xyMinMax) {\n  return xyMinMax ? [xyMinMax[0][1] - xyMinMax[0][0], xyMinMax[1][1] - xyMinMax[1][0]] : [NaN, NaN];\n}\n\nvar _default = BrushTargetManager;\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar RoamController = require(\"./RoamController\");\n\nvar roamHelper = require(\"../../component/helper/roamHelper\");\n\nvar _cursorHelper = require(\"../../component/helper/cursorHelper\");\n\nvar onIrrelevantElement = _cursorHelper.onIrrelevantElement;\n\nvar graphic = require(\"../../util/graphic\");\n\nfunction getFixedItemStyle(model, scale) {\n  var itemStyle = model.getItemStyle();\n  var areaColor = model.get('areaColor'); // If user want the color not to be changed when hover,\n  // they should both set areaColor and color to be null.\n\n  if (areaColor != null) {\n    itemStyle.fill = areaColor;\n  }\n\n  return itemStyle;\n}\n\nfunction updateMapSelectHandler(mapDraw, mapOrGeoModel, group, api, fromView) {\n  group.off('click');\n  group.off('mousedown');\n\n  if (mapOrGeoModel.get('selectedMode')) {\n    group.on('mousedown', function () {\n      mapDraw._mouseDownFlag = true;\n    });\n    group.on('click', function (e) {\n      if (!mapDraw._mouseDownFlag) {\n        return;\n      }\n\n      mapDraw._mouseDownFlag = false;\n      var el = e.target;\n\n      while (!el.__regions) {\n        el = el.parent;\n      }\n\n      if (!el) {\n        return;\n      }\n\n      var action = {\n        type: (mapOrGeoModel.mainType === 'geo' ? 'geo' : 'map') + 'ToggleSelect',\n        batch: zrUtil.map(el.__regions, function (region) {\n          return {\n            name: region.name,\n            from: fromView.uid\n          };\n        })\n      };\n      action[mapOrGeoModel.mainType + 'Id'] = mapOrGeoModel.id;\n      api.dispatchAction(action);\n      updateMapSelected(mapOrGeoModel, group);\n    });\n  }\n}\n\nfunction updateMapSelected(mapOrGeoModel, group) {\n  // FIXME\n  group.eachChild(function (otherRegionEl) {\n    zrUtil.each(otherRegionEl.__regions, function (region) {\n      otherRegionEl.trigger(mapOrGeoModel.isSelected(region.name) ? 'emphasis' : 'normal');\n    });\n  });\n}\n/**\n * @alias module:echarts/component/helper/MapDraw\n * @param {module:echarts/ExtensionAPI} api\n * @param {boolean} updateGroup\n */\n\n\nfunction MapDraw(api, updateGroup) {\n  var group = new graphic.Group();\n  /**\n   * @type {module:echarts/component/helper/RoamController}\n   * @private\n   */\n\n  this._controller = new RoamController(api.getZr());\n  /**\n   * @type {Object} {target, zoom, zoomLimit}\n   * @private\n   */\n\n  this._controllerHost = {\n    target: updateGroup ? group : null\n  };\n  /**\n   * @type {module:zrender/container/Group}\n   * @readOnly\n   */\n\n  this.group = group;\n  /**\n   * @type {boolean}\n   * @private\n   */\n\n  this._updateGroup = updateGroup;\n  /**\n   * This flag is used to make sure that only one among\n   * `pan`, `zoom`, `click` can occurs, otherwise 'selected'\n   * action may be triggered when `pan`, which is unexpected.\n   * @type {booelan}\n   */\n\n  this._mouseDownFlag;\n}\n\nMapDraw.prototype = {\n  constructor: MapDraw,\n  draw: function (mapOrGeoModel, ecModel, api, fromView, payload) {\n    var isGeo = mapOrGeoModel.mainType === 'geo'; // Map series has data. GEO model that controlled by map series\n    // will be assigned with map data. Other GEO model has no data.\n\n    var data = mapOrGeoModel.getData && mapOrGeoModel.getData();\n    isGeo && ecModel.eachComponent({\n      mainType: 'series',\n      subType: 'map'\n    }, function (mapSeries) {\n      if (!data && mapSeries.getHostGeoModel() === mapOrGeoModel) {\n        data = mapSeries.getData();\n      }\n    });\n    var geo = mapOrGeoModel.coordinateSystem;\n    var group = this.group;\n    var scale = geo.scale;\n    var groupNewProp = {\n      position: geo.position,\n      scale: scale\n    }; // No animation when first draw or in action\n\n    if (!group.childAt(0) || payload) {\n      group.attr(groupNewProp);\n    } else {\n      graphic.updateProps(group, groupNewProp, mapOrGeoModel);\n    }\n\n    group.removeAll();\n    var itemStyleAccessPath = ['itemStyle'];\n    var hoverItemStyleAccessPath = ['emphasis', 'itemStyle'];\n    var labelAccessPath = ['label'];\n    var hoverLabelAccessPath = ['emphasis', 'label'];\n    var nameMap = zrUtil.createHashMap();\n    zrUtil.each(geo.regions, function (region) {\n      // Consider in GeoJson properties.name may be duplicated, for example,\n      // there is multiple region named \"United Kindom\" or \"France\" (so many\n      // colonies). And it is not appropriate to merge them in geo, which\n      // will make them share the same label and bring trouble in label\n      // location calculation.\n      var regionGroup = nameMap.get(region.name) || nameMap.set(region.name, new graphic.Group());\n      var compoundPath = new graphic.CompoundPath({\n        shape: {\n          paths: []\n        }\n      });\n      regionGroup.add(compoundPath);\n      var regionModel = mapOrGeoModel.getRegionModel(region.name) || mapOrGeoModel;\n      var itemStyleModel = regionModel.getModel(itemStyleAccessPath);\n      var hoverItemStyleModel = regionModel.getModel(hoverItemStyleAccessPath);\n      var itemStyle = getFixedItemStyle(itemStyleModel, scale);\n      var hoverItemStyle = getFixedItemStyle(hoverItemStyleModel, scale);\n      var labelModel = regionModel.getModel(labelAccessPath);\n      var hoverLabelModel = regionModel.getModel(hoverLabelAccessPath);\n      var dataIdx; // Use the itemStyle in data if has data\n\n      if (data) {\n        dataIdx = data.indexOfName(region.name); // Only visual color of each item will be used. It can be encoded by dataRange\n        // But visual color of series is used in symbol drawing\n        //\n        // Visual color for each series is for the symbol draw\n\n        var visualColor = data.getItemVisual(dataIdx, 'color', true);\n\n        if (visualColor) {\n          itemStyle.fill = visualColor;\n        }\n      }\n\n      zrUtil.each(region.geometries, function (geometry) {\n        if (geometry.type !== 'polygon') {\n          return;\n        }\n\n        compoundPath.shape.paths.push(new graphic.Polygon({\n          shape: {\n            points: geometry.exterior\n          }\n        }));\n\n        for (var i = 0; i < (geometry.interiors ? geometry.interiors.length : 0); i++) {\n          compoundPath.shape.paths.push(new graphic.Polygon({\n            shape: {\n              points: geometry.interiors[i]\n            }\n          }));\n        }\n      });\n      compoundPath.setStyle(itemStyle);\n      compoundPath.style.strokeNoScale = true;\n      compoundPath.culling = true; // Label\n\n      var showLabel = labelModel.get('show');\n      var hoverShowLabel = hoverLabelModel.get('show');\n      var isDataNaN = data && isNaN(data.get(data.mapDimension('value'), dataIdx));\n      var itemLayout = data && data.getItemLayout(dataIdx); // In the following cases label will be drawn\n      // 1. In map series and data value is NaN\n      // 2. In geo component\n      // 4. Region has no series legendSymbol, which will be add a showLabel flag in mapSymbolLayout\n\n      if (isGeo || isDataNaN && (showLabel || hoverShowLabel) || itemLayout && itemLayout.showLabel) {\n        var query = !isGeo ? dataIdx : region.name;\n        var labelFetcher; // Consider dataIdx not found.\n\n        if (!data || dataIdx >= 0) {\n          labelFetcher = mapOrGeoModel;\n        }\n\n        var textEl = new graphic.Text({\n          position: region.center.slice(),\n          scale: [1 / scale[0], 1 / scale[1]],\n          z2: 10,\n          silent: true\n        });\n        graphic.setLabelStyle(textEl.style, textEl.hoverStyle = {}, labelModel, hoverLabelModel, {\n          labelFetcher: labelFetcher,\n          labelDataIndex: query,\n          defaultText: region.name,\n          useInsideStyle: false\n        }, {\n          textAlign: 'center',\n          textVerticalAlign: 'middle'\n        });\n        regionGroup.add(textEl);\n      } // setItemGraphicEl, setHoverStyle after all polygons and labels\n      // are added to the rigionGroup\n\n\n      if (data) {\n        data.setItemGraphicEl(dataIdx, regionGroup);\n      } else {\n        var regionModel = mapOrGeoModel.getRegionModel(region.name); // Package custom mouse event for geo component\n\n        compoundPath.eventData = {\n          componentType: 'geo',\n          geoIndex: mapOrGeoModel.componentIndex,\n          name: region.name,\n          region: regionModel && regionModel.option || {}\n        };\n      }\n\n      var groupRegions = regionGroup.__regions || (regionGroup.__regions = []);\n      groupRegions.push(region);\n      graphic.setHoverStyle(regionGroup, hoverItemStyle, {\n        hoverSilentOnTouch: !!mapOrGeoModel.get('selectedMode')\n      });\n      group.add(regionGroup);\n    });\n\n    this._updateController(mapOrGeoModel, ecModel, api);\n\n    updateMapSelectHandler(this, mapOrGeoModel, group, api, fromView);\n    updateMapSelected(mapOrGeoModel, group);\n  },\n  remove: function () {\n    this.group.removeAll();\n\n    this._controller.dispose();\n\n    this._controllerHost = {};\n  },\n  _updateController: function (mapOrGeoModel, ecModel, api) {\n    var geo = mapOrGeoModel.coordinateSystem;\n    var controller = this._controller;\n    var controllerHost = this._controllerHost;\n    controllerHost.zoomLimit = mapOrGeoModel.get('scaleLimit');\n    controllerHost.zoom = geo.getZoom(); // roamType is will be set default true if it is null\n\n    controller.enable(mapOrGeoModel.get('roam') || false);\n    var mainType = mapOrGeoModel.mainType;\n\n    function makeActionBase() {\n      var action = {\n        type: 'geoRoam',\n        componentType: mainType\n      };\n      action[mainType + 'Id'] = mapOrGeoModel.id;\n      return action;\n    }\n\n    controller.off('pan').on('pan', function (dx, dy) {\n      this._mouseDownFlag = false;\n      roamHelper.updateViewOnPan(controllerHost, dx, dy);\n      api.dispatchAction(zrUtil.extend(makeActionBase(), {\n        dx: dx,\n        dy: dy\n      }));\n    }, this);\n    controller.off('zoom').on('zoom', function (zoom, mouseX, mouseY) {\n      this._mouseDownFlag = false;\n      roamHelper.updateViewOnZoom(controllerHost, zoom, mouseX, mouseY);\n      api.dispatchAction(zrUtil.extend(makeActionBase(), {\n        zoom: zoom,\n        originX: mouseX,\n        originY: mouseY\n      }));\n\n      if (this._updateGroup) {\n        var group = this.group;\n        var scale = group.scale;\n        group.traverse(function (el) {\n          if (el.type === 'text') {\n            el.attr('scale', [1 / scale[0], 1 / scale[1]]);\n          }\n        });\n      }\n    }, this);\n    controller.setPointerChecker(function (e, x, y) {\n      return geo.getViewRectAfterRoam().contain(x, y) && !onIrrelevantElement(e, api, mapOrGeoModel);\n    });\n  }\n};\nvar _default = MapDraw;\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar Eventful = require(\"zrender/lib/mixin/Eventful\");\n\nvar eventTool = require(\"zrender/lib/core/event\");\n\nvar interactionMutex = require(\"./interactionMutex\");\n\n/**\n * @alias module:echarts/component/helper/RoamController\n * @constructor\n * @mixin {module:zrender/mixin/Eventful}\n *\n * @param {module:zrender/zrender~ZRender} zr\n */\nfunction RoamController(zr) {\n  /**\n   * @type {Function}\n   */\n  this.pointerChecker;\n  /**\n   * @type {module:zrender}\n   */\n\n  this._zr = zr;\n  /**\n   * @type {Object}\n   */\n\n  this._opt = {}; // Avoid two roamController bind the same handler\n\n  var bind = zrUtil.bind;\n  var mousedownHandler = bind(mousedown, this);\n  var mousemoveHandler = bind(mousemove, this);\n  var mouseupHandler = bind(mouseup, this);\n  var mousewheelHandler = bind(mousewheel, this);\n  var pinchHandler = bind(pinch, this);\n  Eventful.call(this);\n  /**\n   * @param {Function} pointerChecker\n   *                   input: x, y\n   *                   output: boolean\n   */\n\n  this.setPointerChecker = function (pointerChecker) {\n    this.pointerChecker = pointerChecker;\n  };\n  /**\n   * Notice: only enable needed types. For example, if 'zoom'\n   * is not needed, 'zoom' should not be enabled, otherwise\n   * default mousewheel behaviour (scroll page) will be disabled.\n   *\n   * @param  {boolean|string} [controlType=true] Specify the control type,\n   *                          which can be null/undefined or true/false\n   *                          or 'pan/move' or 'zoom'/'scale'\n   * @param {Object} [opt]\n   * @param {Object} [opt.zoomOnMouseWheel=true]\n   * @param {Object} [opt.moveOnMouseMove=true]\n   * @param {Object} [opt.preventDefaultMouseMove=true] When pan.\n   */\n\n\n  this.enable = function (controlType, opt) {\n    // Disable previous first\n    this.disable();\n    this._opt = zrUtil.defaults(zrUtil.clone(opt) || {}, {\n      zoomOnMouseWheel: true,\n      moveOnMouseMove: true,\n      preventDefaultMouseMove: true\n    });\n\n    if (controlType == null) {\n      controlType = true;\n    }\n\n    if (controlType === true || controlType === 'move' || controlType === 'pan') {\n      zr.on('mousedown', mousedownHandler);\n      zr.on('mousemove', mousemoveHandler);\n      zr.on('mouseup', mouseupHandler);\n    }\n\n    if (controlType === true || controlType === 'scale' || controlType === 'zoom') {\n      zr.on('mousewheel', mousewheelHandler);\n      zr.on('pinch', pinchHandler);\n    }\n  };\n\n  this.disable = function () {\n    zr.off('mousedown', mousedownHandler);\n    zr.off('mousemove', mousemoveHandler);\n    zr.off('mouseup', mouseupHandler);\n    zr.off('mousewheel', mousewheelHandler);\n    zr.off('pinch', pinchHandler);\n  };\n\n  this.dispose = this.disable;\n\n  this.isDragging = function () {\n    return this._dragging;\n  };\n\n  this.isPinching = function () {\n    return this._pinching;\n  };\n}\n\nzrUtil.mixin(RoamController, Eventful);\n\nfunction mousedown(e) {\n  if (eventTool.notLeftMouse(e) || e.target && e.target.draggable) {\n    return;\n  }\n\n  var x = e.offsetX;\n  var y = e.offsetY; // Only check on mosedown, but not mousemove.\n  // Mouse can be out of target when mouse moving.\n\n  if (this.pointerChecker && this.pointerChecker(e, x, y)) {\n    this._x = x;\n    this._y = y;\n    this._dragging = true;\n  }\n}\n\nfunction mousemove(e) {\n  if (eventTool.notLeftMouse(e) || !checkKeyBinding(this, 'moveOnMouseMove', e) || !this._dragging || e.gestureEvent === 'pinch' || interactionMutex.isTaken(this._zr, 'globalPan')) {\n    return;\n  }\n\n  var x = e.offsetX;\n  var y = e.offsetY;\n  var oldX = this._x;\n  var oldY = this._y;\n  var dx = x - oldX;\n  var dy = y - oldY;\n  this._x = x;\n  this._y = y;\n  this._opt.preventDefaultMouseMove && eventTool.stop(e.event);\n  this.trigger('pan', dx, dy, oldX, oldY, x, y);\n}\n\nfunction mouseup(e) {\n  if (!eventTool.notLeftMouse(e)) {\n    this._dragging = false;\n  }\n}\n\nfunction mousewheel(e) {\n  // wheelDelta maybe -0 in chrome mac.\n  if (!checkKeyBinding(this, 'zoomOnMouseWheel', e) || e.wheelDelta === 0) {\n    return;\n  } // Convenience:\n  // Mac and VM Windows on Mac: scroll up: zoom out.\n  // Windows: scroll up: zoom in.\n\n\n  var zoomDelta = e.wheelDelta > 0 ? 1.1 : 1 / 1.1;\n  zoom.call(this, e, zoomDelta, e.offsetX, e.offsetY);\n}\n\nfunction pinch(e) {\n  if (interactionMutex.isTaken(this._zr, 'globalPan')) {\n    return;\n  }\n\n  var zoomDelta = e.pinchScale > 1 ? 1.1 : 1 / 1.1;\n  zoom.call(this, e, zoomDelta, e.pinchX, e.pinchY);\n}\n\nfunction zoom(e, zoomDelta, zoomX, zoomY) {\n  if (this.pointerChecker && this.pointerChecker(e, zoomX, zoomY)) {\n    // When mouse is out of roamController rect,\n    // default befavoius should not be be disabled, otherwise\n    // page sliding is disabled, contrary to expectation.\n    eventTool.stop(e.event);\n    this.trigger('zoom', zoomDelta, zoomX, zoomY);\n  }\n}\n\nfunction checkKeyBinding(roamController, prop, e) {\n  var setting = roamController._opt[prop];\n  return setting && (!zrUtil.isString(setting) || e.event[setting + 'Key']);\n}\n\nvar _default = RoamController;\nmodule.exports = _default;","var BoundingRect = require(\"zrender/lib/core/BoundingRect\");\n\nvar _cursorHelper = require(\"./cursorHelper\");\n\nvar onIrrelevantElement = _cursorHelper.onIrrelevantElement;\n\nvar graphicUtil = require(\"../../util/graphic\");\n\nfunction makeRectPanelClipPath(rect) {\n  rect = normalizeRect(rect);\n  return function (localPoints, transform) {\n    return graphicUtil.clipPointsByRect(localPoints, rect);\n  };\n}\n\nfunction makeLinearBrushOtherExtent(rect, specifiedXYIndex) {\n  rect = normalizeRect(rect);\n  return function (xyIndex) {\n    var idx = specifiedXYIndex != null ? specifiedXYIndex : xyIndex;\n    var brushWidth = idx ? rect.width : rect.height;\n    var base = idx ? rect.x : rect.y;\n    return [base, base + (brushWidth || 0)];\n  };\n}\n\nfunction makeRectIsTargetByCursor(rect, api, targetModel) {\n  rect = normalizeRect(rect);\n  return function (e, localCursorPoint, transform) {\n    return rect.contain(localCursorPoint[0], localCursorPoint[1]) && !onIrrelevantElement(e, api, targetModel);\n  };\n} // Consider width/height is negative.\n\n\nfunction normalizeRect(rect) {\n  return BoundingRect.create(rect);\n}\n\nexports.makeRectPanelClipPath = makeRectPanelClipPath;\nexports.makeLinearBrushOtherExtent = makeLinearBrushOtherExtent;\nexports.makeRectIsTargetByCursor = makeRectIsTargetByCursor;","var IRRELEVANT_EXCLUDES = {\n  'axisPointer': 1,\n  'tooltip': 1,\n  'brush': 1\n};\n/**\n * Avoid that: mouse click on a elements that is over geo or graph,\n * but roam is triggered.\n */\n\nfunction onIrrelevantElement(e, api, targetCoordSysModel) {\n  var model = api.getComponentByElement(e.topTarget); // If model is axisModel, it works only if it is injected with coordinateSystem.\n\n  var coordSys = model && model.coordinateSystem;\n  return model && model !== targetCoordSysModel && !IRRELEVANT_EXCLUDES[model.mainType] && coordSys && coordSys.model !== targetCoordSysModel;\n}\n\nexports.onIrrelevantElement = onIrrelevantElement;","var echarts = require(\"../../echarts\");\n\nvar ATTR = '\\0_ec_interaction_mutex';\n\nfunction take(zr, resourceKey, userKey) {\n  var store = getStore(zr);\n  store[resourceKey] = userKey;\n}\n\nfunction release(zr, resourceKey, userKey) {\n  var store = getStore(zr);\n  var uKey = store[resourceKey];\n\n  if (uKey === userKey) {\n    store[resourceKey] = null;\n  }\n}\n\nfunction isTaken(zr, resourceKey) {\n  return !!getStore(zr)[resourceKey];\n}\n\nfunction getStore(zr) {\n  return zr[ATTR] || (zr[ATTR] = {});\n}\n/**\n * payload: {\n *     type: 'takeGlobalCursor',\n *     key: 'dataZoomSelect', or 'brush', or ...,\n *         If no userKey, release global cursor.\n * }\n */\n\n\necharts.registerAction({\n  type: 'takeGlobalCursor',\n  event: 'globalCursorTaken',\n  update: 'update'\n}, function () {});\nexports.take = take;\nexports.release = release;\nexports.isTaken = isTaken;","var _layout = require(\"../../util/layout\");\n\nvar getLayoutRect = _layout.getLayoutRect;\nvar layoutBox = _layout.box;\nvar positionElement = _layout.positionElement;\n\nvar formatUtil = require(\"../../util/format\");\n\nvar graphic = require(\"../../util/graphic\");\n\n/**\n * Layout list like component.\n * It will box layout each items in group of component and then position the whole group in the viewport\n * @param {module:zrender/group/Group} group\n * @param {module:echarts/model/Component} componentModel\n * @param {module:echarts/ExtensionAPI}\n */\nfunction layout(group, componentModel, api) {\n  var boxLayoutParams = componentModel.getBoxLayoutParams();\n  var padding = componentModel.get('padding');\n  var viewportSize = {\n    width: api.getWidth(),\n    height: api.getHeight()\n  };\n  var rect = getLayoutRect(boxLayoutParams, viewportSize, padding);\n  layoutBox(componentModel.get('orient'), group, componentModel.get('itemGap'), rect.width, rect.height);\n  positionElement(group, boxLayoutParams, viewportSize, padding);\n}\n\nfunction makeBackground(rect, componentModel) {\n  var padding = formatUtil.normalizeCssArray(componentModel.get('padding'));\n  var style = componentModel.getItemStyle(['color', 'opacity']);\n  style.fill = componentModel.get('backgroundColor');\n  var rect = new graphic.Rect({\n    shape: {\n      x: rect.x - padding[3],\n      y: rect.y - padding[0],\n      width: rect.width + padding[1] + padding[3],\n      height: rect.height + padding[0] + padding[2],\n      r: componentModel.get('borderRadius')\n    },\n    style: style,\n    silent: true,\n    z2: -1\n  }); // FIXME\n  // `subPixelOptimizeRect` may bring some gap between edge of viewpart\n  // and background rect when setting like `left: 0`, `top: 0`.\n  // graphic.subPixelOptimizeRect(rect);\n\n  return rect;\n}\n\nexports.layout = layout;\nexports.makeBackground = makeBackground;","/**\n * For geo and graph.\n *\n * @param {Object} controllerHost\n * @param {module:zrender/Element} controllerHost.target\n */\nfunction updateViewOnPan(controllerHost, dx, dy) {\n  var target = controllerHost.target;\n  var pos = target.position;\n  pos[0] += dx;\n  pos[1] += dy;\n  target.dirty();\n}\n/**\n * For geo and graph.\n *\n * @param {Object} controllerHost\n * @param {module:zrender/Element} controllerHost.target\n * @param {number} controllerHost.zoom\n * @param {number} controllerHost.zoomLimit like: {min: 1, max: 2}\n */\n\n\nfunction updateViewOnZoom(controllerHost, zoomDelta, zoomX, zoomY) {\n  var target = controllerHost.target;\n  var zoomLimit = controllerHost.zoomLimit;\n  var pos = target.position;\n  var scale = target.scale;\n  var newZoom = controllerHost.zoom = controllerHost.zoom || 1;\n  newZoom *= zoomDelta;\n\n  if (zoomLimit) {\n    var zoomMin = zoomLimit.min || 0;\n    var zoomMax = zoomLimit.max || Infinity;\n    newZoom = Math.max(Math.min(zoomMax, newZoom), zoomMin);\n  }\n\n  var zoomScale = newZoom / controllerHost.zoom;\n  controllerHost.zoom = newZoom; // Keep the mouse center when scaling\n\n  pos[0] -= (zoomX - pos[0]) * (zoomScale - 1);\n  pos[1] -= (zoomY - pos[1]) * (zoomScale - 1);\n  scale[0] *= zoomScale;\n  scale[1] *= zoomScale;\n  target.dirty();\n}\n\nexports.updateViewOnPan = updateViewOnPan;\nexports.updateViewOnZoom = updateViewOnZoom;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar _dataProvider = require(\"../../data/helper/dataProvider\");\n\nvar retrieveRawAttr = _dataProvider.retrieveRawAttr;\n\n/**\n * Data selectable mixin for chart series.\n * To eanble data select, option of series must have `selectedMode`.\n * And each data item will use `selected` to toggle itself selected status\n */\nvar _default = {\n  /**\n   * @param {Array.<Object>|module:echars/data/List} targetList\n   *        If targetList is an array, it should like [{name: ..., value: ...}, ...].\n   *        If targetList is a \"List\", it must have coordDim: 'value' dimension and name.\n   */\n  updateSelectedMap: function (targetList) {\n    if (zrUtil.isArray(targetList)) {\n      this._targetList = targetList.slice();\n    } else {\n      var ecList = targetList;\n      var valueDim = ecList.mapDimension('value');\n      var targetList = this._targetList = [];\n\n      for (var i = 0, len = ecList.count(); i < len; i++) {\n        targetList.push({\n          name: ecList.getName(i),\n          value: ecList.get(valueDim, i),\n          selected: retrieveRawAttr(ecList, i, 'selected')\n        });\n      }\n    }\n\n    this._selectTargetMap = zrUtil.reduce(targetList || [], function (targetMap, target) {\n      targetMap.set(target.name, target);\n      return targetMap;\n    }, zrUtil.createHashMap());\n  },\n\n  /**\n   * Either name or id should be passed as input here.\n   * If both of them are defined, id is used.\n   *\n   * @param {string|undefined} name name of data\n   * @param {number|undefined} id dataIndex of data\n   */\n  // PENGING If selectedMode is null ?\n  select: function (name, id) {\n    var target = id != null ? this._targetList[id] : this._selectTargetMap.get(name);\n    var selectedMode = this.get('selectedMode');\n\n    if (selectedMode === 'single') {\n      this._selectTargetMap.each(function (target) {\n        target.selected = false;\n      });\n    }\n\n    target && (target.selected = true);\n  },\n\n  /**\n   * Either name or id should be passed as input here.\n   * If both of them are defined, id is used.\n   *\n   * @param {string|undefined} name name of data\n   * @param {number|undefined} id dataIndex of data\n   */\n  unSelect: function (name, id) {\n    var target = id != null ? this._targetList[id] : this._selectTargetMap.get(name); // var selectedMode = this.get('selectedMode');\n    // selectedMode !== 'single' && target && (target.selected = false);\n\n    target && (target.selected = false);\n  },\n\n  /**\n   * Either name or id should be passed as input here.\n   * If both of them are defined, id is used.\n   *\n   * @param {string|undefined} name name of data\n   * @param {number|undefined} id dataIndex of data\n   */\n  toggleSelected: function (name, id) {\n    var target = id != null ? this._targetList[id] : this._selectTargetMap.get(name);\n\n    if (target != null) {\n      this[target.selected ? 'unSelect' : 'select'](name, id);\n      return target.selected;\n    }\n  },\n\n  /**\n   * Either name or id should be passed as input here.\n   * If both of them are defined, id is used.\n   *\n   * @param {string|undefined} name name of data\n   * @param {number|undefined} id dataIndex of data\n   */\n  isSelected: function (name, id) {\n    var target = id != null ? this._targetList[id] : this._selectTargetMap.get(name);\n    return target && target.selected;\n  }\n};\nmodule.exports = _default;","/**\n * Calculate slider move result.\n * Usage:\n * (1) If both handle0 and handle1 are needed to be moved, set minSpan the same as\n * maxSpan and the same as `Math.abs(handleEnd[1] - handleEnds[0])`.\n * (2) If handle0 is forbidden to cross handle1, set minSpan as `0`.\n *\n * @param {number} delta Move length.\n * @param {Array.<number>} handleEnds handleEnds[0] can be bigger then handleEnds[1].\n *              handleEnds will be modified in this method.\n * @param {Array.<number>} extent handleEnds is restricted by extent.\n *              extent[0] should less or equals than extent[1].\n * @param {number|string} handleIndex Can be 'all', means that both move the two handleEnds,\n *              where the input minSpan and maxSpan will not work.\n * @param {number} [minSpan] The range of dataZoom can not be smaller than that.\n *              If not set, handle0 and cross handle1. If set as a non-negative\n *              number (including `0`), handles will push each other when reaching\n *              the minSpan.\n * @param {number} [maxSpan] The range of dataZoom can not be larger than that.\n * @return {Array.<number>} The input handleEnds.\n */\nfunction _default(delta, handleEnds, extent, handleIndex, minSpan, maxSpan) {\n  // Normalize firstly.\n  handleEnds[0] = restrict(handleEnds[0], extent);\n  handleEnds[1] = restrict(handleEnds[1], extent);\n  delta = delta || 0;\n  var extentSpan = extent[1] - extent[0]; // Notice maxSpan and minSpan can be null/undefined.\n\n  if (minSpan != null) {\n    minSpan = restrict(minSpan, [0, extentSpan]);\n  }\n\n  if (maxSpan != null) {\n    maxSpan = Math.max(maxSpan, minSpan != null ? minSpan : 0);\n  }\n\n  if (handleIndex === 'all') {\n    minSpan = maxSpan = Math.abs(handleEnds[1] - handleEnds[0]);\n    handleIndex = 0;\n  }\n\n  var originalDistSign = getSpanSign(handleEnds, handleIndex);\n  handleEnds[handleIndex] += delta; // Restrict in extent.\n\n  var extentMinSpan = minSpan || 0;\n  var realExtent = extent.slice();\n  originalDistSign.sign < 0 ? realExtent[0] += extentMinSpan : realExtent[1] -= extentMinSpan;\n  handleEnds[handleIndex] = restrict(handleEnds[handleIndex], realExtent); // Expand span.\n\n  var currDistSign = getSpanSign(handleEnds, handleIndex);\n\n  if (minSpan != null && (currDistSign.sign !== originalDistSign.sign || currDistSign.span < minSpan)) {\n    // If minSpan exists, 'cross' is forbinden.\n    handleEnds[1 - handleIndex] = handleEnds[handleIndex] + originalDistSign.sign * minSpan;\n  } // Shrink span.\n\n\n  var currDistSign = getSpanSign(handleEnds, handleIndex);\n\n  if (maxSpan != null && currDistSign.span > maxSpan) {\n    handleEnds[1 - handleIndex] = handleEnds[handleIndex] + currDistSign.sign * maxSpan;\n  }\n\n  return handleEnds;\n}\n\nfunction getSpanSign(handleEnds, handleIndex) {\n  var dist = handleEnds[handleIndex] - handleEnds[1 - handleIndex]; // If `handleEnds[0] === handleEnds[1]`, always believe that handleEnd[0]\n  // is at left of handleEnds[1] for non-cross case.\n\n  return {\n    span: Math.abs(dist),\n    sign: dist > 0 ? -1 : dist < 0 ? 1 : handleIndex ? -1 : 1\n  };\n}\n\nfunction restrict(value, extend) {\n  return Math.min(extend[1], Math.max(extend[0], value));\n}\n\nmodule.exports = _default;","var echarts = require(\"../echarts\");\n\nrequire(\"./legend/LegendModel\");\n\nrequire(\"./legend/legendAction\");\n\nrequire(\"./legend/LegendView\");\n\nvar legendFilter = require(\"./legend/legendFilter\");\n\nvar Component = require(\"../model/Component\");\n\n// Do not contain scrollable legend, for sake of file size.\n// Series Filter\necharts.registerProcessor(legendFilter);\nComponent.registerSubTypeDefaulter('legend', function () {\n  // Default 'plain' when no type specified.\n  return 'plain';\n});","var echarts = require(\"../../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar Model = require(\"../../model/Model\");\n\nvar _model = require(\"../../util/model\");\n\nvar DEFAULT_COMPONENT_NAME = _model.DEFAULT_COMPONENT_NAME;\nvar LegendModel = echarts.extendComponentModel({\n  type: 'legend.plain',\n  dependencies: ['series'],\n  layoutMode: {\n    type: 'box',\n    // legend.width/height are maxWidth/maxHeight actually,\n    // whereas realy width/height is calculated by its content.\n    // (Setting {left: 10, right: 10} does not make sense).\n    // So consider the case:\n    // `setOption({legend: {left: 10});`\n    // then `setOption({legend: {right: 10});`\n    // The previous `left` should be cleared by setting `ignoreSize`.\n    ignoreSize: true\n  },\n  init: function (option, parentModel, ecModel) {\n    this.mergeDefaultAndTheme(option, ecModel);\n    option.selected = option.selected || {};\n  },\n  mergeOption: function (option) {\n    LegendModel.superCall(this, 'mergeOption', option);\n  },\n  optionUpdated: function () {\n    this._updateData(this.ecModel);\n\n    var legendData = this._data; // If selectedMode is single, try to select one\n\n    if (legendData[0] && this.get('selectedMode') === 'single') {\n      var hasSelected = false; // If has any selected in option.selected\n\n      for (var i = 0; i < legendData.length; i++) {\n        var name = legendData[i].get('name');\n\n        if (this.isSelected(name)) {\n          // Force to unselect others\n          this.select(name);\n          hasSelected = true;\n          break;\n        }\n      } // Try select the first if selectedMode is single\n\n\n      !hasSelected && this.select(legendData[0].get('name'));\n    }\n  },\n  _updateData: function (ecModel) {\n    var potentialData = [];\n    var availableNames = [];\n    ecModel.eachRawSeries(function (seriesModel) {\n      var seriesName = seriesModel.name;\n      availableNames.push(seriesName);\n      var potentialSeriesName;\n\n      if (seriesModel.legendDataProvider) {\n        var data = seriesModel.legendDataProvider();\n        var names = data.mapArray(data.getName);\n\n        if (!ecModel.isSeriesFiltered(seriesModel)) {\n          availableNames = availableNames.concat(names);\n        }\n\n        if (names.length) {\n          potentialData = potentialData.concat(names);\n        } else {\n          potentialSeriesName = seriesName;\n        }\n      } else {\n        potentialSeriesName = seriesName;\n      }\n\n      if (potentialSeriesName && potentialSeriesName !== DEFAULT_COMPONENT_NAME) {\n        potentialData.push(potentialSeriesName);\n      }\n    });\n    /**\n     * @type {Array.<string>}\n     * @private\n     */\n\n    this._availableNames = availableNames; // If legend.data not specified in option, use availableNames as data,\n    // which is convinient for user preparing option.\n\n    var rawData = this.get('data') || potentialData;\n    var legendData = zrUtil.map(rawData, function (dataItem) {\n      // Can be string or number\n      if (typeof dataItem === 'string' || typeof dataItem === 'number') {\n        dataItem = {\n          name: dataItem\n        };\n      }\n\n      return new Model(dataItem, this, this.ecModel);\n    }, this);\n    /**\n     * @type {Array.<module:echarts/model/Model>}\n     * @private\n     */\n\n    this._data = legendData;\n  },\n\n  /**\n   * @return {Array.<module:echarts/model/Model>}\n   */\n  getData: function () {\n    return this._data;\n  },\n\n  /**\n   * @param {string} name\n   */\n  select: function (name) {\n    var selected = this.option.selected;\n    var selectedMode = this.get('selectedMode');\n\n    if (selectedMode === 'single') {\n      var data = this._data;\n      zrUtil.each(data, function (dataItem) {\n        selected[dataItem.get('name')] = false;\n      });\n    }\n\n    selected[name] = true;\n  },\n\n  /**\n   * @param {string} name\n   */\n  unSelect: function (name) {\n    if (this.get('selectedMode') !== 'single') {\n      this.option.selected[name] = false;\n    }\n  },\n\n  /**\n   * @param {string} name\n   */\n  toggleSelected: function (name) {\n    var selected = this.option.selected; // Default is true\n\n    if (!selected.hasOwnProperty(name)) {\n      selected[name] = true;\n    }\n\n    this[selected[name] ? 'unSelect' : 'select'](name);\n  },\n\n  /**\n   * @param {string} name\n   */\n  isSelected: function (name) {\n    var selected = this.option.selected;\n    return !(selected.hasOwnProperty(name) && !selected[name]) && zrUtil.indexOf(this._availableNames, name) >= 0;\n  },\n  defaultOption: {\n    // 一级层叠\n    zlevel: 0,\n    // 二级层叠\n    z: 4,\n    show: true,\n    // 布局方式，默认为水平布局，可选为：\n    // 'horizontal' | 'vertical'\n    orient: 'horizontal',\n    left: 'center',\n    // right: 'center',\n    top: 0,\n    // bottom: null,\n    // 水平对齐\n    // 'auto' | 'left' | 'right'\n    // 默认为 'auto', 根据 x 的位置判断是左对齐还是右对齐\n    align: 'auto',\n    backgroundColor: 'rgba(0,0,0,0)',\n    // 图例边框颜色\n    borderColor: '#ccc',\n    borderRadius: 0,\n    // 图例边框线宽，单位px，默认为0（无边框）\n    borderWidth: 0,\n    // 图例内边距，单位px，默认各方向内边距为5，\n    // 接受数组分别设定上右下左边距，同css\n    padding: 5,\n    // 各个item之间的间隔，单位px，默认为10，\n    // 横向布局时为水平间隔，纵向布局时为纵向间隔\n    itemGap: 10,\n    // 图例图形宽度\n    itemWidth: 25,\n    // 图例图形高度\n    itemHeight: 14,\n    // 图例关闭时候的颜色\n    inactiveColor: '#ccc',\n    textStyle: {\n      // 图例文字颜色\n      color: '#333'\n    },\n    // formatter: '',\n    // 选择模式，默认开启图例开关\n    selectedMode: true,\n    // 配置默认选中状态，可配合LEGEND.SELECTED事件做动态数据载入\n    // selected: null,\n    // 图例内容（详见legend.data，数组中每一项代表一个item\n    // data: [],\n    // Tooltip 相关配置\n    tooltip: {\n      show: false\n    }\n  }\n});\nvar _default = LegendModel;\nmodule.exports = _default;","var _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar echarts = require(\"../../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar _symbol = require(\"../../util/symbol\");\n\nvar createSymbol = _symbol.createSymbol;\n\nvar graphic = require(\"../../util/graphic\");\n\nvar _listComponent = require(\"../helper/listComponent\");\n\nvar makeBackground = _listComponent.makeBackground;\n\nvar layoutUtil = require(\"../../util/layout\");\n\nvar curry = zrUtil.curry;\nvar each = zrUtil.each;\nvar Group = graphic.Group;\n\nvar _default = echarts.extendComponentView({\n  type: 'legend.plain',\n  newlineDisabled: false,\n\n  /**\n   * @override\n   */\n  init: function () {\n    /**\n     * @private\n     * @type {module:zrender/container/Group}\n     */\n    this.group.add(this._contentGroup = new Group());\n    /**\n     * @private\n     * @type {module:zrender/Element}\n     */\n\n    this._backgroundEl;\n  },\n\n  /**\n   * @protected\n   */\n  getContentGroup: function () {\n    return this._contentGroup;\n  },\n\n  /**\n   * @override\n   */\n  render: function (legendModel, ecModel, api) {\n    this.resetInner();\n\n    if (!legendModel.get('show', true)) {\n      return;\n    }\n\n    var itemAlign = legendModel.get('align');\n\n    if (!itemAlign || itemAlign === 'auto') {\n      itemAlign = legendModel.get('left') === 'right' && legendModel.get('orient') === 'vertical' ? 'right' : 'left';\n    }\n\n    this.renderInner(itemAlign, legendModel, ecModel, api); // Perform layout.\n\n    var positionInfo = legendModel.getBoxLayoutParams();\n    var viewportSize = {\n      width: api.getWidth(),\n      height: api.getHeight()\n    };\n    var padding = legendModel.get('padding');\n    var maxSize = layoutUtil.getLayoutRect(positionInfo, viewportSize, padding);\n    var mainRect = this.layoutInner(legendModel, itemAlign, maxSize); // Place mainGroup, based on the calculated `mainRect`.\n\n    var layoutRect = layoutUtil.getLayoutRect(zrUtil.defaults({\n      width: mainRect.width,\n      height: mainRect.height\n    }, positionInfo), viewportSize, padding);\n    this.group.attr('position', [layoutRect.x - mainRect.x, layoutRect.y - mainRect.y]); // Render background after group is layout.\n\n    this.group.add(this._backgroundEl = makeBackground(mainRect, legendModel));\n  },\n\n  /**\n   * @protected\n   */\n  resetInner: function () {\n    this.getContentGroup().removeAll();\n    this._backgroundEl && this.group.remove(this._backgroundEl);\n  },\n\n  /**\n   * @protected\n   */\n  renderInner: function (itemAlign, legendModel, ecModel, api) {\n    var contentGroup = this.getContentGroup();\n    var legendDrawnMap = zrUtil.createHashMap();\n    var selectMode = legendModel.get('selectedMode');\n    each(legendModel.getData(), function (itemModel, dataIndex) {\n      var name = itemModel.get('name'); // Use empty string or \\n as a newline string\n\n      if (!this.newlineDisabled && (name === '' || name === '\\n')) {\n        contentGroup.add(new Group({\n          newline: true\n        }));\n        return;\n      }\n\n      var seriesModel = ecModel.getSeriesByName(name)[0];\n\n      if (legendDrawnMap.get(name)) {\n        // Have been drawed\n        return;\n      } // Series legend\n\n\n      if (seriesModel) {\n        var data = seriesModel.getData();\n        var color = data.getVisual('color'); // If color is a callback function\n\n        if (typeof color === 'function') {\n          // Use the first data\n          color = color(seriesModel.getDataParams(0));\n        } // Using rect symbol defaultly\n\n\n        var legendSymbolType = data.getVisual('legendSymbol') || 'roundRect';\n        var symbolType = data.getVisual('symbol');\n\n        var itemGroup = this._createItem(name, dataIndex, itemModel, legendModel, legendSymbolType, symbolType, itemAlign, color, selectMode);\n\n        itemGroup.on('click', curry(dispatchSelectAction, name, api)).on('mouseover', curry(dispatchHighlightAction, seriesModel, null, api)).on('mouseout', curry(dispatchDownplayAction, seriesModel, null, api));\n        legendDrawnMap.set(name, true);\n      } else {\n        // Data legend of pie, funnel\n        ecModel.eachRawSeries(function (seriesModel) {\n          // In case multiple series has same data name\n          if (legendDrawnMap.get(name)) {\n            return;\n          }\n\n          if (seriesModel.legendDataProvider) {\n            var data = seriesModel.legendDataProvider();\n            var idx = data.indexOfName(name);\n\n            if (idx < 0) {\n              return;\n            }\n\n            var color = data.getItemVisual(idx, 'color');\n            var legendSymbolType = 'roundRect';\n\n            var itemGroup = this._createItem(name, dataIndex, itemModel, legendModel, legendSymbolType, null, itemAlign, color, selectMode);\n\n            itemGroup.on('click', curry(dispatchSelectAction, name, api)) // FIXME Should not specify the series name\n            .on('mouseover', curry(dispatchHighlightAction, seriesModel, name, api)).on('mouseout', curry(dispatchDownplayAction, seriesModel, name, api));\n            legendDrawnMap.set(name, true);\n          }\n        }, this);\n      }\n    }, this);\n  },\n  _createItem: function (name, dataIndex, itemModel, legendModel, legendSymbolType, symbolType, itemAlign, color, selectMode) {\n    var itemWidth = legendModel.get('itemWidth');\n    var itemHeight = legendModel.get('itemHeight');\n    var inactiveColor = legendModel.get('inactiveColor');\n    var isSelected = legendModel.isSelected(name);\n    var itemGroup = new Group();\n    var textStyleModel = itemModel.getModel('textStyle');\n    var itemIcon = itemModel.get('icon');\n    var tooltipModel = itemModel.getModel('tooltip');\n    var legendGlobalTooltipModel = tooltipModel.parentModel; // Use user given icon first\n\n    legendSymbolType = itemIcon || legendSymbolType;\n    itemGroup.add(createSymbol(legendSymbolType, 0, 0, itemWidth, itemHeight, isSelected ? color : inactiveColor, true)); // Compose symbols\n    // PENDING\n\n    if (!itemIcon && symbolType // At least show one symbol, can't be all none\n    && (symbolType !== legendSymbolType || symbolType == 'none')) {\n      var size = itemHeight * 0.8;\n\n      if (symbolType === 'none') {\n        symbolType = 'circle';\n      } // Put symbol in the center\n\n\n      itemGroup.add(createSymbol(symbolType, (itemWidth - size) / 2, (itemHeight - size) / 2, size, size, isSelected ? color : inactiveColor));\n    }\n\n    var textX = itemAlign === 'left' ? itemWidth + 5 : -5;\n    var textAlign = itemAlign;\n    var formatter = legendModel.get('formatter');\n    var content = name;\n\n    if (typeof formatter === 'string' && formatter) {\n      content = formatter.replace('{name}', name != null ? name : '');\n    } else if (typeof formatter === 'function') {\n      content = formatter(name);\n    }\n\n    itemGroup.add(new graphic.Text({\n      style: graphic.setTextStyle({}, textStyleModel, {\n        text: content,\n        x: textX,\n        y: itemHeight / 2,\n        textFill: isSelected ? textStyleModel.getTextColor() : inactiveColor,\n        textAlign: textAlign,\n        textVerticalAlign: 'middle'\n      })\n    })); // Add a invisible rect to increase the area of mouse hover\n\n    var hitRect = new graphic.Rect({\n      shape: itemGroup.getBoundingRect(),\n      invisible: true,\n      tooltip: tooltipModel.get('show') ? zrUtil.extend({\n        content: name,\n        // Defaul formatter\n        formatter: legendGlobalTooltipModel.get('formatter', true) || function () {\n          return name;\n        },\n        formatterParams: {\n          componentType: 'legend',\n          legendIndex: legendModel.componentIndex,\n          name: name,\n          $vars: ['name']\n        }\n      }, tooltipModel.option) : null\n    });\n    itemGroup.add(hitRect);\n    itemGroup.eachChild(function (child) {\n      child.silent = true;\n    });\n    hitRect.silent = !selectMode;\n    this.getContentGroup().add(itemGroup);\n    graphic.setHoverStyle(itemGroup);\n    itemGroup.__legendDataIndex = dataIndex;\n    return itemGroup;\n  },\n\n  /**\n   * @protected\n   */\n  layoutInner: function (legendModel, itemAlign, maxSize) {\n    var contentGroup = this.getContentGroup(); // Place items in contentGroup.\n\n    layoutUtil.box(legendModel.get('orient'), contentGroup, legendModel.get('itemGap'), maxSize.width, maxSize.height);\n    var contentRect = contentGroup.getBoundingRect();\n    contentGroup.attr('position', [-contentRect.x, -contentRect.y]);\n    return this.group.getBoundingRect();\n  }\n});\n\nfunction dispatchSelectAction(name, api) {\n  api.dispatchAction({\n    type: 'legendToggleSelect',\n    name: name\n  });\n}\n\nfunction dispatchHighlightAction(seriesModel, dataName, api) {\n  // If element hover will move to a hoverLayer.\n  var el = api.getZr().storage.getDisplayList()[0];\n\n  if (!(el && el.useHoverLayer)) {\n    seriesModel.get('legendHoverLink') && api.dispatchAction({\n      type: 'highlight',\n      seriesName: seriesModel.name,\n      name: dataName\n    });\n  }\n}\n\nfunction dispatchDownplayAction(seriesModel, dataName, api) {\n  // If element hover will move to a hoverLayer.\n  var el = api.getZr().storage.getDisplayList()[0];\n\n  if (!(el && el.useHoverLayer)) {\n    seriesModel.get('legendHoverLink') && api.dispatchAction({\n      type: 'downplay',\n      seriesName: seriesModel.name,\n      name: dataName\n    });\n  }\n}\n\nmodule.exports = _default;","var LegendModel = require(\"./LegendModel\");\n\nvar _layout = require(\"../../util/layout\");\n\nvar mergeLayoutParam = _layout.mergeLayoutParam;\nvar getLayoutParams = _layout.getLayoutParams;\nvar ScrollableLegendModel = LegendModel.extend({\n  type: 'legend.scroll',\n\n  /**\n   * @param {number} scrollDataIndex\n   */\n  setScrollDataIndex: function (scrollDataIndex) {\n    this.option.scrollDataIndex = scrollDataIndex;\n  },\n  defaultOption: {\n    scrollDataIndex: 0,\n    pageButtonItemGap: 5,\n    pageButtonGap: null,\n    pageButtonPosition: 'end',\n    // 'start' or 'end'\n    pageFormatter: '{current}/{total}',\n    // If null/undefined, do not show page.\n    pageIcons: {\n      horizontal: ['M0,0L12,-10L12,10z', 'M0,0L-12,-10L-12,10z'],\n      vertical: ['M0,0L20,0L10,-20z', 'M0,0L20,0L10,20z']\n    },\n    pageIconColor: '#2f4554',\n    pageIconInactiveColor: '#aaa',\n    pageIconSize: 15,\n    // Can be [10, 3], which represents [width, height]\n    pageTextStyle: {\n      color: '#333'\n    },\n    animationDurationUpdate: 800\n  },\n\n  /**\n   * @override\n   */\n  init: function (option, parentModel, ecModel, extraOpt) {\n    var inputPositionParams = getLayoutParams(option);\n    ScrollableLegendModel.superCall(this, 'init', option, parentModel, ecModel, extraOpt);\n    mergeAndNormalizeLayoutParams(this, option, inputPositionParams);\n  },\n\n  /**\n   * @override\n   */\n  mergeOption: function (option, extraOpt) {\n    ScrollableLegendModel.superCall(this, 'mergeOption', option, extraOpt);\n    mergeAndNormalizeLayoutParams(this, this.option, option);\n  },\n  getOrient: function () {\n    return this.get('orient') === 'vertical' ? {\n      index: 1,\n      name: 'vertical'\n    } : {\n      index: 0,\n      name: 'horizontal'\n    };\n  }\n}); // Do not `ignoreSize` to enable setting {left: 10, right: 10}.\n\nfunction mergeAndNormalizeLayoutParams(legendModel, target, raw) {\n  var orient = legendModel.getOrient();\n  var ignoreSize = [1, 1];\n  ignoreSize[orient.index] = 0;\n  mergeLayoutParam(target, raw, {\n    type: 'box',\n    ignoreSize: ignoreSize\n  });\n}\n\nvar _default = ScrollableLegendModel;\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar layoutUtil = require(\"../../util/layout\");\n\nvar LegendView = require(\"./LegendView\");\n\n/**\n * Separate legend and scrollable legend to reduce package size.\n */\nvar Group = graphic.Group;\nvar WH = ['width', 'height'];\nvar XY = ['x', 'y'];\nvar ScrollableLegendView = LegendView.extend({\n  type: 'legend.scroll',\n  newlineDisabled: true,\n  init: function () {\n    ScrollableLegendView.superCall(this, 'init');\n    /**\n     * @private\n     * @type {number} For `scroll`.\n     */\n\n    this._currentIndex = 0;\n    /**\n     * @private\n     * @type {module:zrender/container/Group}\n     */\n\n    this.group.add(this._containerGroup = new Group());\n\n    this._containerGroup.add(this.getContentGroup());\n    /**\n     * @private\n     * @type {module:zrender/container/Group}\n     */\n\n\n    this.group.add(this._controllerGroup = new Group());\n    /**\n     *\n     * @private\n     */\n\n    this._showController;\n  },\n\n  /**\n   * @override\n   */\n  resetInner: function () {\n    ScrollableLegendView.superCall(this, 'resetInner');\n\n    this._controllerGroup.removeAll();\n\n    this._containerGroup.removeClipPath();\n\n    this._containerGroup.__rectSize = null;\n  },\n\n  /**\n   * @override\n   */\n  renderInner: function (itemAlign, legendModel, ecModel, api) {\n    var me = this; // Render content items.\n\n    ScrollableLegendView.superCall(this, 'renderInner', itemAlign, legendModel, ecModel, api);\n    var controllerGroup = this._controllerGroup;\n    var pageIconSize = legendModel.get('pageIconSize', true);\n\n    if (!zrUtil.isArray(pageIconSize)) {\n      pageIconSize = [pageIconSize, pageIconSize];\n    }\n\n    createPageButton('pagePrev', 0);\n    var pageTextStyleModel = legendModel.getModel('pageTextStyle');\n    controllerGroup.add(new graphic.Text({\n      name: 'pageText',\n      style: {\n        textFill: pageTextStyleModel.getTextColor(),\n        font: pageTextStyleModel.getFont(),\n        textVerticalAlign: 'middle',\n        textAlign: 'center'\n      },\n      silent: true\n    }));\n    createPageButton('pageNext', 1);\n\n    function createPageButton(name, iconIdx) {\n      var pageDataIndexName = name + 'DataIndex';\n      var icon = graphic.createIcon(legendModel.get('pageIcons', true)[legendModel.getOrient().name][iconIdx], {\n        // Buttons will be created in each render, so we do not need\n        // to worry about avoiding using legendModel kept in scope.\n        onclick: zrUtil.bind(me._pageGo, me, pageDataIndexName, legendModel, api)\n      }, {\n        x: -pageIconSize[0] / 2,\n        y: -pageIconSize[1] / 2,\n        width: pageIconSize[0],\n        height: pageIconSize[1]\n      });\n      icon.name = name;\n      controllerGroup.add(icon);\n    }\n  },\n\n  /**\n   * @override\n   */\n  layoutInner: function (legendModel, itemAlign, maxSize) {\n    var contentGroup = this.getContentGroup();\n    var containerGroup = this._containerGroup;\n    var controllerGroup = this._controllerGroup;\n    var orientIdx = legendModel.getOrient().index;\n    var wh = WH[orientIdx];\n    var hw = WH[1 - orientIdx];\n    var yx = XY[1 - orientIdx]; // Place items in contentGroup.\n\n    layoutUtil.box(legendModel.get('orient'), contentGroup, legendModel.get('itemGap'), !orientIdx ? null : maxSize.width, orientIdx ? null : maxSize.height);\n    layoutUtil.box( // Buttons in controller are layout always horizontally.\n    'horizontal', controllerGroup, legendModel.get('pageButtonItemGap', true));\n    var contentRect = contentGroup.getBoundingRect();\n    var controllerRect = controllerGroup.getBoundingRect();\n    var showController = this._showController = contentRect[wh] > maxSize[wh];\n    var contentPos = [-contentRect.x, -contentRect.y]; // Remain contentPos when scroll animation perfroming.\n\n    contentPos[orientIdx] = contentGroup.position[orientIdx]; // Layout container group based on 0.\n\n    var containerPos = [0, 0];\n    var controllerPos = [-controllerRect.x, -controllerRect.y];\n    var pageButtonGap = zrUtil.retrieve2(legendModel.get('pageButtonGap', true), legendModel.get('itemGap', true)); // Place containerGroup and controllerGroup and contentGroup.\n\n    if (showController) {\n      var pageButtonPosition = legendModel.get('pageButtonPosition', true); // controller is on the right / bottom.\n\n      if (pageButtonPosition === 'end') {\n        controllerPos[orientIdx] += maxSize[wh] - controllerRect[wh];\n      } // controller is on the left / top.\n      else {\n          containerPos[orientIdx] += controllerRect[wh] + pageButtonGap;\n        }\n    } // Always align controller to content as 'middle'.\n\n\n    controllerPos[1 - orientIdx] += contentRect[hw] / 2 - controllerRect[hw] / 2;\n    contentGroup.attr('position', contentPos);\n    containerGroup.attr('position', containerPos);\n    controllerGroup.attr('position', controllerPos); // Calculate `mainRect` and set `clipPath`.\n    // mainRect should not be calculated by `this.group.getBoundingRect()`\n    // for sake of the overflow.\n\n    var mainRect = this.group.getBoundingRect();\n    var mainRect = {\n      x: 0,\n      y: 0\n    }; // Consider content may be overflow (should be clipped).\n\n    mainRect[wh] = showController ? maxSize[wh] : contentRect[wh];\n    mainRect[hw] = Math.max(contentRect[hw], controllerRect[hw]); // `containerRect[yx] + containerPos[1 - orientIdx]` is 0.\n\n    mainRect[yx] = Math.min(0, controllerRect[yx] + controllerPos[1 - orientIdx]);\n    containerGroup.__rectSize = maxSize[wh];\n\n    if (showController) {\n      var clipShape = {\n        x: 0,\n        y: 0\n      };\n      clipShape[wh] = Math.max(maxSize[wh] - controllerRect[wh] - pageButtonGap, 0);\n      clipShape[hw] = mainRect[hw];\n      containerGroup.setClipPath(new graphic.Rect({\n        shape: clipShape\n      })); // Consider content may be larger than container, container rect\n      // can not be obtained from `containerGroup.getBoundingRect()`.\n\n      containerGroup.__rectSize = clipShape[wh];\n    } else {\n      // Do not remove or ignore controller. Keep them set as place holders.\n      controllerGroup.eachChild(function (child) {\n        child.attr({\n          invisible: true,\n          silent: true\n        });\n      });\n    } // Content translate animation.\n\n\n    var pageInfo = this._getPageInfo(legendModel);\n\n    pageInfo.pageIndex != null && graphic.updateProps(contentGroup, {\n      position: pageInfo.contentPosition\n    }, // When switch from \"show controller\" to \"not show controller\", view should be\n    // updated immediately without animation, otherwise causes weird efffect.\n    showController ? legendModel : false);\n\n    this._updatePageInfoView(legendModel, pageInfo);\n\n    return mainRect;\n  },\n  _pageGo: function (to, legendModel, api) {\n    var scrollDataIndex = this._getPageInfo(legendModel)[to];\n\n    scrollDataIndex != null && api.dispatchAction({\n      type: 'legendScroll',\n      scrollDataIndex: scrollDataIndex,\n      legendId: legendModel.id\n    });\n  },\n  _updatePageInfoView: function (legendModel, pageInfo) {\n    var controllerGroup = this._controllerGroup;\n    zrUtil.each(['pagePrev', 'pageNext'], function (name) {\n      var canJump = pageInfo[name + 'DataIndex'] != null;\n      var icon = controllerGroup.childOfName(name);\n\n      if (icon) {\n        icon.setStyle('fill', canJump ? legendModel.get('pageIconColor', true) : legendModel.get('pageIconInactiveColor', true));\n        icon.cursor = canJump ? 'pointer' : 'default';\n      }\n    });\n    var pageText = controllerGroup.childOfName('pageText');\n    var pageFormatter = legendModel.get('pageFormatter');\n    var pageIndex = pageInfo.pageIndex;\n    var current = pageIndex != null ? pageIndex + 1 : 0;\n    var total = pageInfo.pageCount;\n    pageText && pageFormatter && pageText.setStyle('text', zrUtil.isString(pageFormatter) ? pageFormatter.replace('{current}', current).replace('{total}', total) : pageFormatter({\n      current: current,\n      total: total\n    }));\n  },\n\n  /**\n   * @param {module:echarts/model/Model} legendModel\n   * @return {Object} {\n   *  contentPosition: Array.<number>, null when data item not found.\n   *  pageIndex: number, null when data item not found.\n   *  pageCount: number, always be a number, can be 0.\n   *  pagePrevDataIndex: number, null when no next page.\n   *  pageNextDataIndex: number, null when no previous page.\n   * }\n   */\n  _getPageInfo: function (legendModel) {\n    // Align left or top by the current dataIndex.\n    var currDataIndex = legendModel.get('scrollDataIndex', true);\n    var contentGroup = this.getContentGroup();\n    var contentRect = contentGroup.getBoundingRect();\n    var containerRectSize = this._containerGroup.__rectSize;\n    var orientIdx = legendModel.getOrient().index;\n    var wh = WH[orientIdx];\n    var hw = WH[1 - orientIdx];\n    var xy = XY[orientIdx];\n    var contentPos = contentGroup.position.slice();\n    var pageIndex;\n    var pagePrevDataIndex;\n    var pageNextDataIndex;\n    var targetItemGroup;\n\n    if (this._showController) {\n      contentGroup.eachChild(function (child) {\n        if (child.__legendDataIndex === currDataIndex) {\n          targetItemGroup = child;\n        }\n      });\n    } else {\n      targetItemGroup = contentGroup.childAt(0);\n    }\n\n    var pageCount = containerRectSize ? Math.ceil(contentRect[wh] / containerRectSize) : 0;\n\n    if (targetItemGroup) {\n      var itemRect = targetItemGroup.getBoundingRect();\n      var itemLoc = targetItemGroup.position[orientIdx] + itemRect[xy];\n      contentPos[orientIdx] = -itemLoc - contentRect[xy];\n      pageIndex = Math.floor(pageCount * (itemLoc + itemRect[xy] + containerRectSize / 2) / contentRect[wh]);\n      pageIndex = contentRect[wh] && pageCount ? Math.max(0, Math.min(pageCount - 1, pageIndex)) : -1;\n      var winRect = {\n        x: 0,\n        y: 0\n      };\n      winRect[wh] = containerRectSize;\n      winRect[hw] = contentRect[hw];\n      winRect[xy] = -contentPos[orientIdx] - contentRect[xy];\n      var startIdx;\n      var children = contentGroup.children();\n      contentGroup.eachChild(function (child, index) {\n        var itemRect = getItemRect(child);\n\n        if (itemRect.intersect(winRect)) {\n          startIdx == null && (startIdx = index); // It is user-friendly that the last item shown in the\n          // current window is shown at the begining of next window.\n\n          pageNextDataIndex = child.__legendDataIndex;\n        } // If the last item is shown entirely, no next page.\n\n\n        if (index === children.length - 1 && itemRect[xy] + itemRect[wh] <= winRect[xy] + winRect[wh]) {\n          pageNextDataIndex = null;\n        }\n      }); // Always align based on the left/top most item, so the left/top most\n      // item in the previous window is needed to be found here.\n\n      if (startIdx != null) {\n        var startItem = children[startIdx];\n        var startRect = getItemRect(startItem);\n        winRect[xy] = startRect[xy] + startRect[wh] - winRect[wh]; // If the first item is shown entirely, no previous page.\n\n        if (startIdx <= 0 && startRect[xy] >= winRect[xy]) {\n          pagePrevDataIndex = null;\n        } else {\n          while (startIdx > 0 && getItemRect(children[startIdx - 1]).intersect(winRect)) {\n            startIdx--;\n          }\n\n          pagePrevDataIndex = children[startIdx].__legendDataIndex;\n        }\n      }\n    }\n\n    return {\n      contentPosition: contentPos,\n      pageIndex: pageIndex,\n      pageCount: pageCount,\n      pagePrevDataIndex: pagePrevDataIndex,\n      pageNextDataIndex: pageNextDataIndex\n    };\n\n    function getItemRect(el) {\n      var itemRect = el.getBoundingRect().clone();\n      itemRect[xy] += el.position[orientIdx];\n      return itemRect;\n    }\n  }\n});\nvar _default = ScrollableLegendView;\nmodule.exports = _default;","var echarts = require(\"../../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nfunction legendSelectActionHandler(methodName, payload, ecModel) {\n  var selectedMap = {};\n  var isToggleSelect = methodName === 'toggleSelected';\n  var isSelected; // Update all legend components\n\n  ecModel.eachComponent('legend', function (legendModel) {\n    if (isToggleSelect && isSelected != null) {\n      // Force other legend has same selected status\n      // Or the first is toggled to true and other are toggled to false\n      // In the case one legend has some item unSelected in option. And if other legend\n      // doesn't has the item, they will assume it is selected.\n      legendModel[isSelected ? 'select' : 'unSelect'](payload.name);\n    } else {\n      legendModel[methodName](payload.name);\n      isSelected = legendModel.isSelected(payload.name);\n    }\n\n    var legendData = legendModel.getData();\n    zrUtil.each(legendData, function (model) {\n      var name = model.get('name'); // Wrap element\n\n      if (name === '\\n' || name === '') {\n        return;\n      }\n\n      var isItemSelected = legendModel.isSelected(name);\n\n      if (selectedMap.hasOwnProperty(name)) {\n        // Unselected if any legend is unselected\n        selectedMap[name] = selectedMap[name] && isItemSelected;\n      } else {\n        selectedMap[name] = isItemSelected;\n      }\n    });\n  }); // Return the event explicitly\n\n  return {\n    name: payload.name,\n    selected: selectedMap\n  };\n}\n/**\n * @event legendToggleSelect\n * @type {Object}\n * @property {string} type 'legendToggleSelect'\n * @property {string} [from]\n * @property {string} name Series name or data item name\n */\n\n\necharts.registerAction('legendToggleSelect', 'legendselectchanged', zrUtil.curry(legendSelectActionHandler, 'toggleSelected'));\n/**\n * @event legendSelect\n * @type {Object}\n * @property {string} type 'legendSelect'\n * @property {string} name Series name or data item name\n */\n\necharts.registerAction('legendSelect', 'legendselected', zrUtil.curry(legendSelectActionHandler, 'select'));\n/**\n * @event legendUnSelect\n * @type {Object}\n * @property {string} type 'legendUnSelect'\n * @property {string} name Series name or data item name\n */\n\necharts.registerAction('legendUnSelect', 'legendunselected', zrUtil.curry(legendSelectActionHandler, 'unSelect'));","function _default(ecModel) {\n  var legendModels = ecModel.findComponents({\n    mainType: 'legend'\n  });\n\n  if (legendModels && legendModels.length) {\n    ecModel.filterSeries(function (series) {\n      // If in any legend component the status is not selected.\n      // Because in legend series is assumed selected when it is not in the legend data.\n      for (var i = 0; i < legendModels.length; i++) {\n        if (!legendModels[i].isSelected(series.name)) {\n          return false;\n        }\n      }\n\n      return true;\n    });\n  }\n}\n\nmodule.exports = _default;","var echarts = require(\"../../echarts\");\n\n/**\n * @event legendScroll\n * @type {Object}\n * @property {string} type 'legendScroll'\n * @property {string} scrollDataIndex\n */\necharts.registerAction('legendScroll', 'legendscroll', function (payload, ecModel) {\n  var scrollDataIndex = payload.scrollDataIndex;\n  scrollDataIndex != null && ecModel.eachComponent({\n    mainType: 'legend',\n    subType: 'scroll',\n    query: payload\n  }, function (legendModel) {\n    legendModel.setScrollDataIndex(scrollDataIndex);\n  });\n});","require(\"./legend\");\n\nrequire(\"./legend/ScrollableLegendModel\");\n\nrequire(\"./legend/ScrollableLegendView\");\n\nrequire(\"./legend/scrollableLegendAction\");","var echarts = require(\"../echarts\");\n\nrequire(\"./marker/MarkAreaModel\");\n\nrequire(\"./marker/MarkAreaView\");\n\necharts.registerPreprocessor(function (opt) {\n  // Make sure markArea component is enabled\n  opt.markArea = opt.markArea || {};\n});","var echarts = require(\"../echarts\");\n\nrequire(\"./marker/MarkLineModel\");\n\nrequire(\"./marker/MarkLineView\");\n\necharts.registerPreprocessor(function (opt) {\n  // Make sure markLine component is enabled\n  opt.markLine = opt.markLine || {};\n});","var echarts = require(\"../echarts\");\n\nrequire(\"./marker/MarkPointModel\");\n\nrequire(\"./marker/MarkPointView\");\n\n// HINT Markpoint can't be used too much\necharts.registerPreprocessor(function (opt) {\n  // Make sure markPoint component is enabled\n  opt.markPoint = opt.markPoint || {};\n});","var MarkerModel = require(\"./MarkerModel\");\n\nvar _default = MarkerModel.extend({\n  type: 'markArea',\n  defaultOption: {\n    zlevel: 0,\n    // PENDING\n    z: 1,\n    tooltip: {\n      trigger: 'item'\n    },\n    // markArea should fixed on the coordinate system\n    animation: false,\n    label: {\n      show: true,\n      position: 'top'\n    },\n    itemStyle: {\n      // color and borderColor default to use color from series\n      // color: 'auto'\n      // borderColor: 'auto'\n      borderWidth: 0\n    },\n    emphasis: {\n      label: {\n        show: true,\n        position: 'top'\n      }\n    }\n  }\n});\n\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar colorUtil = require(\"zrender/lib/tool/color\");\n\nvar List = require(\"../../data/List\");\n\nvar numberUtil = require(\"../../util/number\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar markerHelper = require(\"./markerHelper\");\n\nvar MarkerView = require(\"./MarkerView\");\n\n// TODO Better on polar\nvar markAreaTransform = function (seriesModel, coordSys, maModel, item) {\n  var lt = markerHelper.dataTransform(seriesModel, item[0]);\n  var rb = markerHelper.dataTransform(seriesModel, item[1]);\n  var retrieve = zrUtil.retrieve; // FIXME make sure lt is less than rb\n\n  var ltCoord = lt.coord;\n  var rbCoord = rb.coord;\n  ltCoord[0] = retrieve(ltCoord[0], -Infinity);\n  ltCoord[1] = retrieve(ltCoord[1], -Infinity);\n  rbCoord[0] = retrieve(rbCoord[0], Infinity);\n  rbCoord[1] = retrieve(rbCoord[1], Infinity); // Merge option into one\n\n  var result = zrUtil.mergeAll([{}, lt, rb]);\n  result.coord = [lt.coord, rb.coord];\n  result.x0 = lt.x;\n  result.y0 = lt.y;\n  result.x1 = rb.x;\n  result.y1 = rb.y;\n  return result;\n};\n\nfunction isInifinity(val) {\n  return !isNaN(val) && !isFinite(val);\n} // If a markArea has one dim\n\n\nfunction ifMarkLineHasOnlyDim(dimIndex, fromCoord, toCoord, coordSys) {\n  var otherDimIndex = 1 - dimIndex;\n  return isInifinity(fromCoord[otherDimIndex]) && isInifinity(toCoord[otherDimIndex]);\n}\n\nfunction markAreaFilter(coordSys, item) {\n  var fromCoord = item.coord[0];\n  var toCoord = item.coord[1];\n\n  if (coordSys.type === 'cartesian2d') {\n    // In case\n    // {\n    //  markArea: {\n    //    data: [{ yAxis: 2 }]\n    //  }\n    // }\n    if (fromCoord && toCoord && (ifMarkLineHasOnlyDim(1, fromCoord, toCoord, coordSys) || ifMarkLineHasOnlyDim(0, fromCoord, toCoord, coordSys))) {\n      return true;\n    }\n  }\n\n  return markerHelper.dataFilter(coordSys, {\n    coord: fromCoord,\n    x: item.x0,\n    y: item.y0\n  }) || markerHelper.dataFilter(coordSys, {\n    coord: toCoord,\n    x: item.x1,\n    y: item.y1\n  });\n} // dims can be ['x0', 'y0'], ['x1', 'y1'], ['x0', 'y1'], ['x1', 'y0']\n\n\nfunction getSingleMarkerEndPoint(data, idx, dims, seriesModel, api) {\n  var coordSys = seriesModel.coordinateSystem;\n  var itemModel = data.getItemModel(idx);\n  var point;\n  var xPx = numberUtil.parsePercent(itemModel.get(dims[0]), api.getWidth());\n  var yPx = numberUtil.parsePercent(itemModel.get(dims[1]), api.getHeight());\n\n  if (!isNaN(xPx) && !isNaN(yPx)) {\n    point = [xPx, yPx];\n  } else {\n    // Chart like bar may have there own marker positioning logic\n    if (seriesModel.getMarkerPosition) {\n      // Use the getMarkerPoisition\n      point = seriesModel.getMarkerPosition(data.getValues(dims, idx));\n    } else {\n      var x = data.get(dims[0], idx);\n      var y = data.get(dims[1], idx);\n      var pt = [x, y];\n      coordSys.clampData && coordSys.clampData(pt, pt);\n      point = coordSys.dataToPoint(pt, true);\n    }\n\n    if (coordSys.type === 'cartesian2d') {\n      var xAxis = coordSys.getAxis('x');\n      var yAxis = coordSys.getAxis('y');\n      var x = data.get(dims[0], idx);\n      var y = data.get(dims[1], idx);\n\n      if (isInifinity(x)) {\n        point[0] = xAxis.toGlobalCoord(xAxis.getExtent()[dims[0] === 'x0' ? 0 : 1]);\n      } else if (isInifinity(y)) {\n        point[1] = yAxis.toGlobalCoord(yAxis.getExtent()[dims[1] === 'y0' ? 0 : 1]);\n      }\n    } // Use x, y if has any\n\n\n    if (!isNaN(xPx)) {\n      point[0] = xPx;\n    }\n\n    if (!isNaN(yPx)) {\n      point[1] = yPx;\n    }\n  }\n\n  return point;\n}\n\nvar dimPermutations = [['x0', 'y0'], ['x1', 'y0'], ['x1', 'y1'], ['x0', 'y1']];\nMarkerView.extend({\n  type: 'markArea',\n  // updateLayout: function (markAreaModel, ecModel, api) {\n  //     ecModel.eachSeries(function (seriesModel) {\n  //         var maModel = seriesModel.markAreaModel;\n  //         if (maModel) {\n  //             var areaData = maModel.getData();\n  //             areaData.each(function (idx) {\n  //                 var points = zrUtil.map(dimPermutations, function (dim) {\n  //                     return getSingleMarkerEndPoint(areaData, idx, dim, seriesModel, api);\n  //                 });\n  //                 // Layout\n  //                 areaData.setItemLayout(idx, points);\n  //                 var el = areaData.getItemGraphicEl(idx);\n  //                 el.setShape('points', points);\n  //             });\n  //         }\n  //     }, this);\n  // },\n  updateTransform: function (markAreaModel, ecModel, api) {\n    ecModel.eachSeries(function (seriesModel) {\n      var maModel = seriesModel.markAreaModel;\n\n      if (maModel) {\n        var areaData = maModel.getData();\n        areaData.each(function (idx) {\n          var points = zrUtil.map(dimPermutations, function (dim) {\n            return getSingleMarkerEndPoint(areaData, idx, dim, seriesModel, api);\n          }); // Layout\n\n          areaData.setItemLayout(idx, points);\n          var el = areaData.getItemGraphicEl(idx);\n          el.setShape('points', points);\n        });\n      }\n    }, this);\n  },\n  renderSeries: function (seriesModel, maModel, ecModel, api) {\n    var coordSys = seriesModel.coordinateSystem;\n    var seriesName = seriesModel.name;\n    var seriesData = seriesModel.getData();\n    var areaGroupMap = this.markerGroupMap;\n    var polygonGroup = areaGroupMap.get(seriesName) || areaGroupMap.set(seriesName, {\n      group: new graphic.Group()\n    });\n    this.group.add(polygonGroup.group);\n    polygonGroup.__keep = true;\n    var areaData = createList(coordSys, seriesModel, maModel); // Line data for tooltip and formatter\n\n    maModel.setData(areaData); // Update visual and layout of line\n\n    areaData.each(function (idx) {\n      // Layout\n      areaData.setItemLayout(idx, zrUtil.map(dimPermutations, function (dim) {\n        return getSingleMarkerEndPoint(areaData, idx, dim, seriesModel, api);\n      })); // Visual\n\n      areaData.setItemVisual(idx, {\n        color: seriesData.getVisual('color')\n      });\n    });\n    areaData.diff(polygonGroup.__data).add(function (idx) {\n      var polygon = new graphic.Polygon({\n        shape: {\n          points: areaData.getItemLayout(idx)\n        }\n      });\n      areaData.setItemGraphicEl(idx, polygon);\n      polygonGroup.group.add(polygon);\n    }).update(function (newIdx, oldIdx) {\n      var polygon = polygonGroup.__data.getItemGraphicEl(oldIdx);\n\n      graphic.updateProps(polygon, {\n        shape: {\n          points: areaData.getItemLayout(newIdx)\n        }\n      }, maModel, newIdx);\n      polygonGroup.group.add(polygon);\n      areaData.setItemGraphicEl(newIdx, polygon);\n    }).remove(function (idx) {\n      var polygon = polygonGroup.__data.getItemGraphicEl(idx);\n\n      polygonGroup.group.remove(polygon);\n    }).execute();\n    areaData.eachItemGraphicEl(function (polygon, idx) {\n      var itemModel = areaData.getItemModel(idx);\n      var labelModel = itemModel.getModel('label');\n      var labelHoverModel = itemModel.getModel('emphasis.label');\n      var color = areaData.getItemVisual(idx, 'color');\n      polygon.useStyle(zrUtil.defaults(itemModel.getModel('itemStyle').getItemStyle(), {\n        fill: colorUtil.modifyAlpha(color, 0.4),\n        stroke: color\n      }));\n      polygon.hoverStyle = itemModel.getModel('emphasis.itemStyle').getItemStyle();\n      graphic.setLabelStyle(polygon.style, polygon.hoverStyle, labelModel, labelHoverModel, {\n        labelFetcher: maModel,\n        labelDataIndex: idx,\n        defaultText: areaData.getName(idx) || '',\n        isRectText: true,\n        autoColor: color\n      });\n      graphic.setHoverStyle(polygon, {});\n      polygon.dataModel = maModel;\n    });\n    polygonGroup.__data = areaData;\n    polygonGroup.group.silent = maModel.get('silent') || seriesModel.get('silent');\n  }\n});\n/**\n * @inner\n * @param {module:echarts/coord/*} coordSys\n * @param {module:echarts/model/Series} seriesModel\n * @param {module:echarts/model/Model} mpModel\n */\n\nfunction createList(coordSys, seriesModel, maModel) {\n  var coordDimsInfos;\n  var areaData;\n  var dims = ['x0', 'y0', 'x1', 'y1'];\n\n  if (coordSys) {\n    coordDimsInfos = zrUtil.map(coordSys && coordSys.dimensions, function (coordDim) {\n      var data = seriesModel.getData();\n      var info = data.getDimensionInfo(data.mapDimension(coordDim)) || {}; // In map series data don't have lng and lat dimension. Fallback to same with coordSys\n\n      return zrUtil.defaults({\n        name: coordDim\n      }, info);\n    });\n    areaData = new List(zrUtil.map(dims, function (dim, idx) {\n      return {\n        name: dim,\n        type: coordDimsInfos[idx % 2].type\n      };\n    }), maModel);\n  } else {\n    coordDimsInfos = [{\n      name: 'value',\n      type: 'float'\n    }];\n    areaData = new List(coordDimsInfos, maModel);\n  }\n\n  var optData = zrUtil.map(maModel.get('data'), zrUtil.curry(markAreaTransform, seriesModel, coordSys, maModel));\n\n  if (coordSys) {\n    optData = zrUtil.filter(optData, zrUtil.curry(markAreaFilter, coordSys));\n  }\n\n  var dimValueGetter = coordSys ? function (item, dimName, dataIndex, dimIndex) {\n    return item.coord[Math.floor(dimIndex / 2)][dimIndex % 2];\n  } : function (item) {\n    return item.value;\n  };\n  areaData.initData(optData, null, dimValueGetter);\n  areaData.hasItemOption = true;\n  return areaData;\n}","var MarkerModel = require(\"./MarkerModel\");\n\nvar _default = MarkerModel.extend({\n  type: 'markLine',\n  defaultOption: {\n    zlevel: 0,\n    z: 5,\n    symbol: ['circle', 'arrow'],\n    symbolSize: [8, 16],\n    //symbolRotate: 0,\n    precision: 2,\n    tooltip: {\n      trigger: 'item'\n    },\n    label: {\n      show: true,\n      position: 'end'\n    },\n    lineStyle: {\n      type: 'dashed'\n    },\n    emphasis: {\n      label: {\n        show: true\n      },\n      lineStyle: {\n        width: 3\n      }\n    },\n    animationEasing: 'linear'\n  }\n});\n\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar List = require(\"../../data/List\");\n\nvar numberUtil = require(\"../../util/number\");\n\nvar markerHelper = require(\"./markerHelper\");\n\nvar LineDraw = require(\"../../chart/helper/LineDraw\");\n\nvar MarkerView = require(\"./MarkerView\");\n\nvar markLineTransform = function (seriesModel, coordSys, mlModel, item) {\n  var data = seriesModel.getData(); // Special type markLine like 'min', 'max', 'average'\n\n  var mlType = item.type;\n\n  if (!zrUtil.isArray(item) && (mlType === 'min' || mlType === 'max' || mlType === 'average' // In case\n  // data: [{\n  //   yAxis: 10\n  // }]\n  || item.xAxis != null || item.yAxis != null)) {\n    var valueAxis;\n    var valueDataDim;\n    var value;\n\n    if (item.yAxis != null || item.xAxis != null) {\n      valueDataDim = item.yAxis != null ? 'y' : 'x';\n      valueAxis = coordSys.getAxis(valueDataDim);\n      value = zrUtil.retrieve(item.yAxis, item.xAxis);\n    } else {\n      var axisInfo = markerHelper.getAxisInfo(item, data, coordSys, seriesModel);\n      valueDataDim = axisInfo.valueDataDim;\n      valueAxis = axisInfo.valueAxis;\n      value = markerHelper.numCalculate(data, valueDataDim, mlType);\n    }\n\n    var valueIndex = valueDataDim === 'x' ? 0 : 1;\n    var baseIndex = 1 - valueIndex;\n    var mlFrom = zrUtil.clone(item);\n    var mlTo = {};\n    mlFrom.type = null;\n    mlFrom.coord = [];\n    mlTo.coord = [];\n    mlFrom.coord[baseIndex] = -Infinity;\n    mlTo.coord[baseIndex] = Infinity;\n    var precision = mlModel.get('precision');\n\n    if (precision >= 0 && typeof value === 'number') {\n      value = +value.toFixed(Math.min(precision, 20));\n    }\n\n    mlFrom.coord[valueIndex] = mlTo.coord[valueIndex] = value;\n    item = [mlFrom, mlTo, {\n      // Extra option for tooltip and label\n      type: mlType,\n      valueIndex: item.valueIndex,\n      // Force to use the value of calculated value.\n      value: value\n    }];\n  }\n\n  item = [markerHelper.dataTransform(seriesModel, item[0]), markerHelper.dataTransform(seriesModel, item[1]), zrUtil.extend({}, item[2])]; // Avoid line data type is extended by from(to) data type\n\n  item[2].type = item[2].type || ''; // Merge from option and to option into line option\n\n  zrUtil.merge(item[2], item[0]);\n  zrUtil.merge(item[2], item[1]);\n  return item;\n};\n\nfunction isInifinity(val) {\n  return !isNaN(val) && !isFinite(val);\n} // If a markLine has one dim\n\n\nfunction ifMarkLineHasOnlyDim(dimIndex, fromCoord, toCoord, coordSys) {\n  var otherDimIndex = 1 - dimIndex;\n  var dimName = coordSys.dimensions[dimIndex];\n  return isInifinity(fromCoord[otherDimIndex]) && isInifinity(toCoord[otherDimIndex]) && fromCoord[dimIndex] === toCoord[dimIndex] && coordSys.getAxis(dimName).containData(fromCoord[dimIndex]);\n}\n\nfunction markLineFilter(coordSys, item) {\n  if (coordSys.type === 'cartesian2d') {\n    var fromCoord = item[0].coord;\n    var toCoord = item[1].coord; // In case\n    // {\n    //  markLine: {\n    //    data: [{ yAxis: 2 }]\n    //  }\n    // }\n\n    if (fromCoord && toCoord && (ifMarkLineHasOnlyDim(1, fromCoord, toCoord, coordSys) || ifMarkLineHasOnlyDim(0, fromCoord, toCoord, coordSys))) {\n      return true;\n    }\n  }\n\n  return markerHelper.dataFilter(coordSys, item[0]) && markerHelper.dataFilter(coordSys, item[1]);\n}\n\nfunction updateSingleMarkerEndLayout(data, idx, isFrom, seriesModel, api) {\n  var coordSys = seriesModel.coordinateSystem;\n  var itemModel = data.getItemModel(idx);\n  var point;\n  var xPx = numberUtil.parsePercent(itemModel.get('x'), api.getWidth());\n  var yPx = numberUtil.parsePercent(itemModel.get('y'), api.getHeight());\n\n  if (!isNaN(xPx) && !isNaN(yPx)) {\n    point = [xPx, yPx];\n  } else {\n    // Chart like bar may have there own marker positioning logic\n    if (seriesModel.getMarkerPosition) {\n      // Use the getMarkerPoisition\n      point = seriesModel.getMarkerPosition(data.getValues(data.dimensions, idx));\n    } else {\n      var dims = coordSys.dimensions;\n      var x = data.get(dims[0], idx);\n      var y = data.get(dims[1], idx);\n      point = coordSys.dataToPoint([x, y]);\n    } // Expand line to the edge of grid if value on one axis is Inifnity\n    // In case\n    //  markLine: {\n    //    data: [{\n    //      yAxis: 2\n    //      // or\n    //      type: 'average'\n    //    }]\n    //  }\n\n\n    if (coordSys.type === 'cartesian2d') {\n      var xAxis = coordSys.getAxis('x');\n      var yAxis = coordSys.getAxis('y');\n      var dims = coordSys.dimensions;\n\n      if (isInifinity(data.get(dims[0], idx))) {\n        point[0] = xAxis.toGlobalCoord(xAxis.getExtent()[isFrom ? 0 : 1]);\n      } else if (isInifinity(data.get(dims[1], idx))) {\n        point[1] = yAxis.toGlobalCoord(yAxis.getExtent()[isFrom ? 0 : 1]);\n      }\n    } // Use x, y if has any\n\n\n    if (!isNaN(xPx)) {\n      point[0] = xPx;\n    }\n\n    if (!isNaN(yPx)) {\n      point[1] = yPx;\n    }\n  }\n\n  data.setItemLayout(idx, point);\n}\n\nvar _default = MarkerView.extend({\n  type: 'markLine',\n  // updateLayout: function (markLineModel, ecModel, api) {\n  //     ecModel.eachSeries(function (seriesModel) {\n  //         var mlModel = seriesModel.markLineModel;\n  //         if (mlModel) {\n  //             var mlData = mlModel.getData();\n  //             var fromData = mlModel.__from;\n  //             var toData = mlModel.__to;\n  //             // Update visual and layout of from symbol and to symbol\n  //             fromData.each(function (idx) {\n  //                 updateSingleMarkerEndLayout(fromData, idx, true, seriesModel, api);\n  //                 updateSingleMarkerEndLayout(toData, idx, false, seriesModel, api);\n  //             });\n  //             // Update layout of line\n  //             mlData.each(function (idx) {\n  //                 mlData.setItemLayout(idx, [\n  //                     fromData.getItemLayout(idx),\n  //                     toData.getItemLayout(idx)\n  //                 ]);\n  //             });\n  //             this.markerGroupMap.get(seriesModel.id).updateLayout();\n  //         }\n  //     }, this);\n  // },\n  updateTransform: function (markLineModel, ecModel, api) {\n    ecModel.eachSeries(function (seriesModel) {\n      var mlModel = seriesModel.markLineModel;\n\n      if (mlModel) {\n        var mlData = mlModel.getData();\n        var fromData = mlModel.__from;\n        var toData = mlModel.__to; // Update visual and layout of from symbol and to symbol\n\n        fromData.each(function (idx) {\n          updateSingleMarkerEndLayout(fromData, idx, true, seriesModel, api);\n          updateSingleMarkerEndLayout(toData, idx, false, seriesModel, api);\n        }); // Update layout of line\n\n        mlData.each(function (idx) {\n          mlData.setItemLayout(idx, [fromData.getItemLayout(idx), toData.getItemLayout(idx)]);\n        });\n        this.markerGroupMap.get(seriesModel.id).updateLayout();\n      }\n    }, this);\n  },\n  renderSeries: function (seriesModel, mlModel, ecModel, api) {\n    var coordSys = seriesModel.coordinateSystem;\n    var seriesId = seriesModel.id;\n    var seriesData = seriesModel.getData();\n    var lineDrawMap = this.markerGroupMap;\n    var lineDraw = lineDrawMap.get(seriesId) || lineDrawMap.set(seriesId, new LineDraw());\n    this.group.add(lineDraw.group);\n    var mlData = createList(coordSys, seriesModel, mlModel);\n    var fromData = mlData.from;\n    var toData = mlData.to;\n    var lineData = mlData.line;\n    mlModel.__from = fromData;\n    mlModel.__to = toData; // Line data for tooltip and formatter\n\n    mlModel.setData(lineData);\n    var symbolType = mlModel.get('symbol');\n    var symbolSize = mlModel.get('symbolSize');\n\n    if (!zrUtil.isArray(symbolType)) {\n      symbolType = [symbolType, symbolType];\n    }\n\n    if (typeof symbolSize === 'number') {\n      symbolSize = [symbolSize, symbolSize];\n    } // Update visual and layout of from symbol and to symbol\n\n\n    mlData.from.each(function (idx) {\n      updateDataVisualAndLayout(fromData, idx, true);\n      updateDataVisualAndLayout(toData, idx, false);\n    }); // Update visual and layout of line\n\n    lineData.each(function (idx) {\n      var lineColor = lineData.getItemModel(idx).get('lineStyle.color');\n      lineData.setItemVisual(idx, {\n        color: lineColor || fromData.getItemVisual(idx, 'color')\n      });\n      lineData.setItemLayout(idx, [fromData.getItemLayout(idx), toData.getItemLayout(idx)]);\n      lineData.setItemVisual(idx, {\n        'fromSymbolSize': fromData.getItemVisual(idx, 'symbolSize'),\n        'fromSymbol': fromData.getItemVisual(idx, 'symbol'),\n        'toSymbolSize': toData.getItemVisual(idx, 'symbolSize'),\n        'toSymbol': toData.getItemVisual(idx, 'symbol')\n      });\n    });\n    lineDraw.updateData(lineData); // Set host model for tooltip\n    // FIXME\n\n    mlData.line.eachItemGraphicEl(function (el, idx) {\n      el.traverse(function (child) {\n        child.dataModel = mlModel;\n      });\n    });\n\n    function updateDataVisualAndLayout(data, idx, isFrom) {\n      var itemModel = data.getItemModel(idx);\n      updateSingleMarkerEndLayout(data, idx, isFrom, seriesModel, api);\n      data.setItemVisual(idx, {\n        symbolSize: itemModel.get('symbolSize') || symbolSize[isFrom ? 0 : 1],\n        symbol: itemModel.get('symbol', true) || symbolType[isFrom ? 0 : 1],\n        color: itemModel.get('itemStyle.color') || seriesData.getVisual('color')\n      });\n    }\n\n    lineDraw.__keep = true;\n    lineDraw.group.silent = mlModel.get('silent') || seriesModel.get('silent');\n  }\n});\n/**\n * @inner\n * @param {module:echarts/coord/*} coordSys\n * @param {module:echarts/model/Series} seriesModel\n * @param {module:echarts/model/Model} mpModel\n */\n\n\nfunction createList(coordSys, seriesModel, mlModel) {\n  var coordDimsInfos;\n\n  if (coordSys) {\n    coordDimsInfos = zrUtil.map(coordSys && coordSys.dimensions, function (coordDim) {\n      var info = seriesModel.getData().getDimensionInfo(seriesModel.getData().mapDimension(coordDim)) || {}; // In map series data don't have lng and lat dimension. Fallback to same with coordSys\n\n      return zrUtil.defaults({\n        name: coordDim\n      }, info);\n    });\n  } else {\n    coordDimsInfos = [{\n      name: 'value',\n      type: 'float'\n    }];\n  }\n\n  var fromData = new List(coordDimsInfos, mlModel);\n  var toData = new List(coordDimsInfos, mlModel); // No dimensions\n\n  var lineData = new List([], mlModel);\n  var optData = zrUtil.map(mlModel.get('data'), zrUtil.curry(markLineTransform, seriesModel, coordSys, mlModel));\n\n  if (coordSys) {\n    optData = zrUtil.filter(optData, zrUtil.curry(markLineFilter, coordSys));\n  }\n\n  var dimValueGetter = coordSys ? markerHelper.dimValueGetter : function (item) {\n    return item.value;\n  };\n  fromData.initData(zrUtil.map(optData, function (item) {\n    return item[0];\n  }), null, dimValueGetter);\n  toData.initData(zrUtil.map(optData, function (item) {\n    return item[1];\n  }), null, dimValueGetter);\n  lineData.initData(zrUtil.map(optData, function (item) {\n    return item[2];\n  }));\n  lineData.hasItemOption = true;\n  return {\n    from: fromData,\n    to: toData,\n    line: lineData\n  };\n}\n\nmodule.exports = _default;","var MarkerModel = require(\"./MarkerModel\");\n\nvar _default = MarkerModel.extend({\n  type: 'markPoint',\n  defaultOption: {\n    zlevel: 0,\n    z: 5,\n    symbol: 'pin',\n    symbolSize: 50,\n    //symbolRotate: 0,\n    //symbolOffset: [0, 0]\n    tooltip: {\n      trigger: 'item'\n    },\n    label: {\n      show: true,\n      position: 'inside'\n    },\n    itemStyle: {\n      borderWidth: 2\n    },\n    emphasis: {\n      label: {\n        show: true\n      }\n    }\n  }\n});\n\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar SymbolDraw = require(\"../../chart/helper/SymbolDraw\");\n\nvar numberUtil = require(\"../../util/number\");\n\nvar List = require(\"../../data/List\");\n\nvar markerHelper = require(\"./markerHelper\");\n\nvar MarkerView = require(\"./MarkerView\");\n\nfunction updateMarkerLayout(mpData, seriesModel, api) {\n  var coordSys = seriesModel.coordinateSystem;\n  mpData.each(function (idx) {\n    var itemModel = mpData.getItemModel(idx);\n    var point;\n    var xPx = numberUtil.parsePercent(itemModel.get('x'), api.getWidth());\n    var yPx = numberUtil.parsePercent(itemModel.get('y'), api.getHeight());\n\n    if (!isNaN(xPx) && !isNaN(yPx)) {\n      point = [xPx, yPx];\n    } // Chart like bar may have there own marker positioning logic\n    else if (seriesModel.getMarkerPosition) {\n        // Use the getMarkerPoisition\n        point = seriesModel.getMarkerPosition(mpData.getValues(mpData.dimensions, idx));\n      } else if (coordSys) {\n        var x = mpData.get(coordSys.dimensions[0], idx);\n        var y = mpData.get(coordSys.dimensions[1], idx);\n        point = coordSys.dataToPoint([x, y]);\n      } // Use x, y if has any\n\n\n    if (!isNaN(xPx)) {\n      point[0] = xPx;\n    }\n\n    if (!isNaN(yPx)) {\n      point[1] = yPx;\n    }\n\n    mpData.setItemLayout(idx, point);\n  });\n}\n\nvar _default = MarkerView.extend({\n  type: 'markPoint',\n  // updateLayout: function (markPointModel, ecModel, api) {\n  //     ecModel.eachSeries(function (seriesModel) {\n  //         var mpModel = seriesModel.markPointModel;\n  //         if (mpModel) {\n  //             updateMarkerLayout(mpModel.getData(), seriesModel, api);\n  //             this.markerGroupMap.get(seriesModel.id).updateLayout(mpModel);\n  //         }\n  //     }, this);\n  // },\n  updateTransform: function (markPointModel, ecModel, api) {\n    ecModel.eachSeries(function (seriesModel) {\n      var mpModel = seriesModel.markPointModel;\n\n      if (mpModel) {\n        updateMarkerLayout(mpModel.getData(), seriesModel, api);\n        this.markerGroupMap.get(seriesModel.id).updateLayout(mpModel);\n      }\n    }, this);\n  },\n  renderSeries: function (seriesModel, mpModel, ecModel, api) {\n    var coordSys = seriesModel.coordinateSystem;\n    var seriesId = seriesModel.id;\n    var seriesData = seriesModel.getData();\n    var symbolDrawMap = this.markerGroupMap;\n    var symbolDraw = symbolDrawMap.get(seriesId) || symbolDrawMap.set(seriesId, new SymbolDraw());\n    var mpData = createList(coordSys, seriesModel, mpModel); // FIXME\n\n    mpModel.setData(mpData);\n    updateMarkerLayout(mpModel.getData(), seriesModel, api);\n    mpData.each(function (idx) {\n      var itemModel = mpData.getItemModel(idx);\n      var symbolSize = itemModel.getShallow('symbolSize');\n\n      if (typeof symbolSize === 'function') {\n        // FIXME 这里不兼容 ECharts 2.x，2.x 貌似参数是整个数据？\n        symbolSize = symbolSize(mpModel.getRawValue(idx), mpModel.getDataParams(idx));\n      }\n\n      mpData.setItemVisual(idx, {\n        symbolSize: symbolSize,\n        color: itemModel.get('itemStyle.color') || seriesData.getVisual('color'),\n        symbol: itemModel.getShallow('symbol')\n      });\n    }); // TODO Text are wrong\n\n    symbolDraw.updateData(mpData);\n    this.group.add(symbolDraw.group); // Set host model for tooltip\n    // FIXME\n\n    mpData.eachItemGraphicEl(function (el) {\n      el.traverse(function (child) {\n        child.dataModel = mpModel;\n      });\n    });\n    symbolDraw.__keep = true;\n    symbolDraw.group.silent = mpModel.get('silent') || seriesModel.get('silent');\n  }\n});\n/**\n * @inner\n * @param {module:echarts/coord/*} [coordSys]\n * @param {module:echarts/model/Series} seriesModel\n * @param {module:echarts/model/Model} mpModel\n */\n\n\nfunction createList(coordSys, seriesModel, mpModel) {\n  var coordDimsInfos;\n\n  if (coordSys) {\n    coordDimsInfos = zrUtil.map(coordSys && coordSys.dimensions, function (coordDim) {\n      var info = seriesModel.getData().getDimensionInfo(seriesModel.getData().mapDimension(coordDim)) || {}; // In map series data don't have lng and lat dimension. Fallback to same with coordSys\n\n      return zrUtil.defaults({\n        name: coordDim,\n        isSysCoord: true\n      }, info);\n    });\n  } else {\n    coordDimsInfos = [{\n      name: 'value',\n      type: 'float',\n      isSysCoord: true\n    }];\n  }\n\n  var mpData = new List(coordDimsInfos, mpModel);\n  var dataOpt = zrUtil.map(mpModel.get('data'), zrUtil.curry(markerHelper.dataTransform, seriesModel));\n\n  if (coordSys) {\n    dataOpt = zrUtil.filter(dataOpt, zrUtil.curry(markerHelper.dataFilter, coordSys));\n  }\n\n  mpData.initData(dataOpt, null, coordSys ? markerHelper.dimValueGetter : function (item) {\n    return item.value;\n  });\n  return mpData;\n}\n\nmodule.exports = _default;","var _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar echarts = require(\"../../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar env = require(\"zrender/lib/core/env\");\n\nvar modelUtil = require(\"../../util/model\");\n\nvar formatUtil = require(\"../../util/format\");\n\nvar dataFormatMixin = require(\"../../model/mixin/dataFormat\");\n\nvar addCommas = formatUtil.addCommas;\nvar encodeHTML = formatUtil.encodeHTML;\n\nfunction fillLabel(opt) {\n  modelUtil.defaultEmphasis(opt, 'label', ['show']);\n}\n\nvar MarkerModel = echarts.extendComponentModel({\n  type: 'marker',\n  dependencies: ['series', 'grid', 'polar', 'geo'],\n\n  /**\n   * @overrite\n   */\n  init: function (option, parentModel, ecModel, extraOpt) {\n    this.mergeDefaultAndTheme(option, ecModel);\n    this.mergeOption(option, ecModel, extraOpt.createdBySelf, true);\n  },\n\n  /**\n   * @return {boolean}\n   */\n  isAnimationEnabled: function () {\n    if (env.node) {\n      return false;\n    }\n\n    var hostSeries = this.__hostSeries;\n    return this.getShallow('animation') && hostSeries && hostSeries.isAnimationEnabled();\n  },\n  mergeOption: function (newOpt, ecModel, createdBySelf, isInit) {\n    var MarkerModel = this.constructor;\n    var modelPropName = this.mainType + 'Model';\n\n    if (!createdBySelf) {\n      ecModel.eachSeries(function (seriesModel) {\n        var markerOpt = seriesModel.get(this.mainType);\n        var markerModel = seriesModel[modelPropName];\n\n        if (!markerOpt || !markerOpt.data) {\n          seriesModel[modelPropName] = null;\n          return;\n        }\n\n        if (!markerModel) {\n          if (isInit) {\n            // Default label emphasis `position` and `show`\n            fillLabel(markerOpt);\n          }\n\n          zrUtil.each(markerOpt.data, function (item) {\n            // FIXME Overwrite fillLabel method ?\n            if (item instanceof Array) {\n              fillLabel(item[0]);\n              fillLabel(item[1]);\n            } else {\n              fillLabel(item);\n            }\n          });\n          markerModel = new MarkerModel(markerOpt, this, ecModel);\n          zrUtil.extend(markerModel, {\n            mainType: this.mainType,\n            // Use the same series index and name\n            seriesIndex: seriesModel.seriesIndex,\n            name: seriesModel.name,\n            createdBySelf: true\n          });\n          markerModel.__hostSeries = seriesModel;\n        } else {\n          markerModel.mergeOption(markerOpt, ecModel, true);\n        }\n\n        seriesModel[modelPropName] = markerModel;\n      }, this);\n    }\n  },\n  formatTooltip: function (dataIndex) {\n    var data = this.getData();\n    var value = this.getRawValue(dataIndex);\n    var formattedValue = zrUtil.isArray(value) ? zrUtil.map(value, addCommas).join(', ') : addCommas(value);\n    var name = data.getName(dataIndex);\n    var html = encodeHTML(this.name);\n\n    if (value != null || name) {\n      html += '<br />';\n    }\n\n    if (name) {\n      html += encodeHTML(name);\n\n      if (value != null) {\n        html += ' : ';\n      }\n    }\n\n    if (value != null) {\n      html += encodeHTML(formattedValue);\n    }\n\n    return html;\n  },\n  getData: function () {\n    return this._data;\n  },\n  setData: function (data) {\n    this._data = data;\n  }\n});\nzrUtil.mixin(MarkerModel, dataFormatMixin);\nvar _default = MarkerModel;\nmodule.exports = _default;","var echarts = require(\"../../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar _default = echarts.extendComponentView({\n  type: 'marker',\n  init: function () {\n    /**\n     * Markline grouped by series\n     * @private\n     * @type {module:zrender/core/util.HashMap}\n     */\n    this.markerGroupMap = zrUtil.createHashMap();\n  },\n  render: function (markerModel, ecModel, api) {\n    var markerGroupMap = this.markerGroupMap;\n    markerGroupMap.each(function (item) {\n      item.__keep = false;\n    });\n    var markerModelKey = this.type + 'Model';\n    ecModel.eachSeries(function (seriesModel) {\n      var markerModel = seriesModel[markerModelKey];\n      markerModel && this.renderSeries(seriesModel, markerModel, ecModel, api);\n    }, this);\n    markerGroupMap.each(function (item) {\n      !item.__keep && this.group.remove(item.group);\n    }, this);\n  },\n  renderSeries: function () {}\n});\n\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar numberUtil = require(\"../../util/number\");\n\nvar indexOf = zrUtil.indexOf;\n\nfunction hasXOrY(item) {\n  return !(isNaN(parseFloat(item.x)) && isNaN(parseFloat(item.y)));\n}\n\nfunction hasXAndY(item) {\n  return !isNaN(parseFloat(item.x)) && !isNaN(parseFloat(item.y));\n}\n\nfunction getPrecision(data, valueAxisDim, dataIndex) {\n  var precision = -1;\n\n  do {\n    precision = Math.max(numberUtil.getPrecision(data.get(valueAxisDim, dataIndex)), precision);\n    data = data.stackedOn;\n  } while (data);\n\n  return precision;\n}\n\nfunction markerTypeCalculatorWithExtent(mlType, data, otherDataDim, targetDataDim, otherCoordIndex, targetCoordIndex) {\n  var coordArr = [];\n  var value = numCalculate(data, targetDataDim, mlType);\n  var dataIndex = data.indicesOfNearest(targetDataDim, value, true)[0];\n  coordArr[otherCoordIndex] = data.get(otherDataDim, dataIndex, true);\n  coordArr[targetCoordIndex] = data.get(targetDataDim, dataIndex, true);\n  var precision = getPrecision(data, targetDataDim, dataIndex);\n  precision = Math.min(precision, 20);\n\n  if (precision >= 0) {\n    coordArr[targetCoordIndex] = +coordArr[targetCoordIndex].toFixed(precision);\n  }\n\n  return coordArr;\n}\n\nvar curry = zrUtil.curry; // TODO Specified percent\n\nvar markerTypeCalculator = {\n  /**\n   * @method\n   * @param {module:echarts/data/List} data\n   * @param {string} baseAxisDim\n   * @param {string} valueAxisDim\n   */\n  min: curry(markerTypeCalculatorWithExtent, 'min'),\n\n  /**\n   * @method\n   * @param {module:echarts/data/List} data\n   * @param {string} baseAxisDim\n   * @param {string} valueAxisDim\n   */\n  max: curry(markerTypeCalculatorWithExtent, 'max'),\n\n  /**\n   * @method\n   * @param {module:echarts/data/List} data\n   * @param {string} baseAxisDim\n   * @param {string} valueAxisDim\n   */\n  average: curry(markerTypeCalculatorWithExtent, 'average')\n};\n/**\n * Transform markPoint data item to format used in List by do the following\n * 1. Calculate statistic like `max`, `min`, `average`\n * 2. Convert `item.xAxis`, `item.yAxis` to `item.coord` array\n * @param  {module:echarts/model/Series} seriesModel\n * @param  {module:echarts/coord/*} [coordSys]\n * @param  {Object} item\n * @return {Object}\n */\n\nfunction dataTransform(seriesModel, item) {\n  var data = seriesModel.getData();\n  var coordSys = seriesModel.coordinateSystem; // 1. If not specify the position with pixel directly\n  // 2. If `coord` is not a data array. Which uses `xAxis`,\n  // `yAxis` to specify the coord on each dimension\n  // parseFloat first because item.x and item.y can be percent string like '20%'\n\n  if (item && !hasXAndY(item) && !zrUtil.isArray(item.coord) && coordSys) {\n    var dims = coordSys.dimensions;\n    var axisInfo = getAxisInfo(item, data, coordSys, seriesModel); // Clone the option\n    // Transform the properties xAxis, yAxis, radiusAxis, angleAxis, geoCoord to value\n\n    item = zrUtil.clone(item);\n\n    if (item.type && markerTypeCalculator[item.type] && axisInfo.baseAxis && axisInfo.valueAxis) {\n      var otherCoordIndex = indexOf(dims, axisInfo.baseAxis.dim);\n      var targetCoordIndex = indexOf(dims, axisInfo.valueAxis.dim);\n      item.coord = markerTypeCalculator[item.type](data, axisInfo.baseDataDim, axisInfo.valueDataDim, otherCoordIndex, targetCoordIndex); // Force to use the value of calculated value.\n\n      item.value = item.coord[targetCoordIndex];\n    } else {\n      // FIXME Only has one of xAxis and yAxis.\n      var coord = [item.xAxis != null ? item.xAxis : item.radiusAxis, item.yAxis != null ? item.yAxis : item.angleAxis]; // Each coord support max, min, average\n\n      for (var i = 0; i < 2; i++) {\n        if (markerTypeCalculator[coord[i]]) {\n          coord[i] = numCalculate(data, data.mapDimension(dims[i]), coord[i]);\n        }\n      }\n\n      item.coord = coord;\n    }\n  }\n\n  return item;\n}\n\nfunction getAxisInfo(item, data, coordSys, seriesModel) {\n  var ret = {};\n\n  if (item.valueIndex != null || item.valueDim != null) {\n    ret.valueDataDim = item.valueIndex != null ? data.getDimension(item.valueIndex) : item.valueDim;\n    ret.valueAxis = coordSys.getAxis(dataDimToCoordDim(seriesModel, ret.valueDataDim));\n    ret.baseAxis = coordSys.getOtherAxis(ret.valueAxis);\n    ret.baseDataDim = data.mapDimension(ret.baseAxis.dim);\n  } else {\n    ret.baseAxis = seriesModel.getBaseAxis();\n    ret.valueAxis = coordSys.getOtherAxis(ret.baseAxis);\n    ret.baseDataDim = data.mapDimension(ret.baseAxis.dim);\n    ret.valueDataDim = data.mapDimension(ret.valueAxis.dim);\n  }\n\n  return ret;\n}\n\nfunction dataDimToCoordDim(seriesModel, dataDim) {\n  var data = seriesModel.getData();\n  var dimensions = data.dimensions;\n  dataDim = data.getDimension(dataDim);\n\n  for (var i = 0; i < dimensions.length; i++) {\n    var dimItem = data.getDimensionInfo(dimensions[i]);\n\n    if (dimItem.name === dataDim) {\n      return dimItem.coordDim;\n    }\n  }\n}\n/**\n * Filter data which is out of coordinateSystem range\n * [dataFilter description]\n * @param  {module:echarts/coord/*} [coordSys]\n * @param  {Object} item\n * @return {boolean}\n */\n\n\nfunction dataFilter(coordSys, item) {\n  // Alwalys return true if there is no coordSys\n  return coordSys && coordSys.containData && item.coord && !hasXOrY(item) ? coordSys.containData(item.coord) : true;\n}\n\nfunction dimValueGetter(item, dimName, dataIndex, dimIndex) {\n  // x, y, radius, angle\n  if (dimIndex < 2) {\n    return item.coord && item.coord[dimIndex];\n  }\n\n  return item.value;\n}\n\nfunction numCalculate(data, valueDataDim, type) {\n  if (type === 'average') {\n    var sum = 0;\n    var count = 0;\n    data.each(valueDataDim, function (val, idx) {\n      if (!isNaN(val)) {\n        sum += val;\n        count++;\n      }\n    }, true);\n    return sum / count;\n  } else {\n    return data.getDataExtent(valueDataDim, true)[type === 'max' ? 1 : 0];\n  }\n}\n\nexports.dataTransform = dataTransform;\nexports.getAxisInfo = getAxisInfo;\nexports.dataFilter = dataFilter;\nexports.dimValueGetter = dimValueGetter;\nexports.numCalculate = numCalculate;","var echarts = require(\"../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar throttleUtil = require(\"../util/throttle\");\n\nvar parallelPreprocessor = require(\"../coord/parallel/parallelPreprocessor\");\n\nrequire(\"../coord/parallel/parallelCreator\");\n\nrequire(\"../coord/parallel/ParallelModel\");\n\nrequire(\"./parallelAxis\");\n\nvar CLICK_THRESHOLD = 5; // > 4\n// Parallel view\n\necharts.extendComponentView({\n  type: 'parallel',\n  render: function (parallelModel, ecModel, api) {\n    this._model = parallelModel;\n    this._api = api;\n\n    if (!this._handlers) {\n      this._handlers = {};\n      zrUtil.each(handlers, function (handler, eventName) {\n        api.getZr().on(eventName, this._handlers[eventName] = zrUtil.bind(handler, this));\n      }, this);\n    }\n\n    throttleUtil.createOrUpdate(this, '_throttledDispatchExpand', parallelModel.get('axisExpandRate'), 'fixRate');\n  },\n  dispose: function (ecModel, api) {\n    zrUtil.each(this._handlers, function (handler, eventName) {\n      api.getZr().off(eventName, handler);\n    });\n    this._handlers = null;\n  },\n\n  /**\n   * @param {Object} [opt] If null, cancle the last action triggering for debounce.\n   */\n  _throttledDispatchExpand: function (opt) {\n    this._dispatchExpand(opt);\n  },\n  _dispatchExpand: function (opt) {\n    opt && this._api.dispatchAction(zrUtil.extend({\n      type: 'parallelAxisExpand'\n    }, opt));\n  }\n});\nvar handlers = {\n  mousedown: function (e) {\n    if (checkTrigger(this, 'click')) {\n      this._mouseDownPoint = [e.offsetX, e.offsetY];\n    }\n  },\n  mouseup: function (e) {\n    var mouseDownPoint = this._mouseDownPoint;\n\n    if (checkTrigger(this, 'click') && mouseDownPoint) {\n      var point = [e.offsetX, e.offsetY];\n      var dist = Math.pow(mouseDownPoint[0] - point[0], 2) + Math.pow(mouseDownPoint[1] - point[1], 2);\n\n      if (dist > CLICK_THRESHOLD) {\n        return;\n      }\n\n      var result = this._model.coordinateSystem.getSlidedAxisExpandWindow([e.offsetX, e.offsetY]);\n\n      result.behavior !== 'none' && this._dispatchExpand({\n        axisExpandWindow: result.axisExpandWindow\n      });\n    }\n\n    this._mouseDownPoint = null;\n  },\n  mousemove: function (e) {\n    // Should do nothing when brushing.\n    if (this._mouseDownPoint || !checkTrigger(this, 'mousemove')) {\n      return;\n    }\n\n    var model = this._model;\n    var result = model.coordinateSystem.getSlidedAxisExpandWindow([e.offsetX, e.offsetY]);\n    var behavior = result.behavior;\n    behavior === 'jump' && this._throttledDispatchExpand.debounceNextCall(model.get('axisExpandDebounce'));\n\n    this._throttledDispatchExpand(behavior === 'none' ? null // Cancle the last trigger, in case that mouse slide out of the area quickly.\n    : {\n      axisExpandWindow: result.axisExpandWindow,\n      // Jumping uses animation, and sliding suppresses animation.\n      animation: behavior === 'jump' ? null : false\n    });\n  }\n};\n\nfunction checkTrigger(view, triggerOn) {\n  var model = view._model;\n  return model.get('axisExpandable') && model.get('axisExpandTriggerOn') === triggerOn;\n}\n\necharts.registerPreprocessor(parallelPreprocessor);","require(\"../coord/parallel/parallelCreator\");\n\nrequire(\"./axis/parallelAxisAction\");\n\nrequire(\"./axis/ParallelAxisView\");","var echarts = require(\"../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar barPolar = require(\"../layout/barPolar\");\n\nrequire(\"../coord/polar/polarCreator\");\n\nrequire(\"./angleAxis\");\n\nrequire(\"./radiusAxis\");\n\nrequire(\"./axisPointer\");\n\nrequire(\"./axisPointer/PolarAxisPointer\");\n\n// For reducing size of echarts.min, barLayoutPolar is required by polar.\necharts.registerLayout(zrUtil.curry(barPolar, 'bar')); // Polar view\n\necharts.extendComponentView({\n  type: 'polar'\n});","require(\"../coord/radar/Radar\");\n\nrequire(\"../coord/radar/RadarModel\");\n\nrequire(\"./radar/RadarView\");","var _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar echarts = require(\"../../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar AxisBuilder = require(\"../axis/AxisBuilder\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar axisBuilderAttrs = ['axisLine', 'axisTickLabel', 'axisName'];\n\nvar _default = echarts.extendComponentView({\n  type: 'radar',\n  render: function (radarModel, ecModel, api) {\n    var group = this.group;\n    group.removeAll();\n\n    this._buildAxes(radarModel);\n\n    this._buildSplitLineAndArea(radarModel);\n  },\n  _buildAxes: function (radarModel) {\n    var radar = radarModel.coordinateSystem;\n    var indicatorAxes = radar.getIndicatorAxes();\n    var axisBuilders = zrUtil.map(indicatorAxes, function (indicatorAxis) {\n      var axisBuilder = new AxisBuilder(indicatorAxis.model, {\n        position: [radar.cx, radar.cy],\n        rotation: indicatorAxis.angle,\n        labelDirection: -1,\n        tickDirection: -1,\n        nameDirection: 1\n      });\n      return axisBuilder;\n    });\n    zrUtil.each(axisBuilders, function (axisBuilder) {\n      zrUtil.each(axisBuilderAttrs, axisBuilder.add, axisBuilder);\n      this.group.add(axisBuilder.getGroup());\n    }, this);\n  },\n  _buildSplitLineAndArea: function (radarModel) {\n    var radar = radarModel.coordinateSystem;\n    var indicatorAxes = radar.getIndicatorAxes();\n\n    if (!indicatorAxes.length) {\n      return;\n    }\n\n    var shape = radarModel.get('shape');\n    var splitLineModel = radarModel.getModel('splitLine');\n    var splitAreaModel = radarModel.getModel('splitArea');\n    var lineStyleModel = splitLineModel.getModel('lineStyle');\n    var areaStyleModel = splitAreaModel.getModel('areaStyle');\n    var showSplitLine = splitLineModel.get('show');\n    var showSplitArea = splitAreaModel.get('show');\n    var splitLineColors = lineStyleModel.get('color');\n    var splitAreaColors = areaStyleModel.get('color');\n    splitLineColors = zrUtil.isArray(splitLineColors) ? splitLineColors : [splitLineColors];\n    splitAreaColors = zrUtil.isArray(splitAreaColors) ? splitAreaColors : [splitAreaColors];\n    var splitLines = [];\n    var splitAreas = [];\n\n    function getColorIndex(areaOrLine, areaOrLineColorList, idx) {\n      var colorIndex = idx % areaOrLineColorList.length;\n      areaOrLine[colorIndex] = areaOrLine[colorIndex] || [];\n      return colorIndex;\n    }\n\n    if (shape === 'circle') {\n      var ticksRadius = indicatorAxes[0].getTicksCoords();\n      var cx = radar.cx;\n      var cy = radar.cy;\n\n      for (var i = 0; i < ticksRadius.length; i++) {\n        if (showSplitLine) {\n          var colorIndex = getColorIndex(splitLines, splitLineColors, i);\n          splitLines[colorIndex].push(new graphic.Circle({\n            shape: {\n              cx: cx,\n              cy: cy,\n              r: ticksRadius[i]\n            }\n          }));\n        }\n\n        if (showSplitArea && i < ticksRadius.length - 1) {\n          var colorIndex = getColorIndex(splitAreas, splitAreaColors, i);\n          splitAreas[colorIndex].push(new graphic.Ring({\n            shape: {\n              cx: cx,\n              cy: cy,\n              r0: ticksRadius[i],\n              r: ticksRadius[i + 1]\n            }\n          }));\n        }\n      }\n    } // Polyyon\n    else {\n        var realSplitNumber;\n        var axesTicksPoints = zrUtil.map(indicatorAxes, function (indicatorAxis, idx) {\n          var ticksCoords = indicatorAxis.getTicksCoords();\n          realSplitNumber = realSplitNumber == null ? ticksCoords.length - 1 : Math.min(ticksCoords.length - 1, realSplitNumber);\n          return zrUtil.map(ticksCoords, function (tickCoord) {\n            return radar.coordToPoint(tickCoord, idx);\n          });\n        });\n        var prevPoints = [];\n\n        for (var i = 0; i <= realSplitNumber; i++) {\n          var points = [];\n\n          for (var j = 0; j < indicatorAxes.length; j++) {\n            points.push(axesTicksPoints[j][i]);\n          } // Close\n\n\n          if (points[0]) {\n            points.push(points[0].slice());\n          } else {}\n\n          if (showSplitLine) {\n            var colorIndex = getColorIndex(splitLines, splitLineColors, i);\n            splitLines[colorIndex].push(new graphic.Polyline({\n              shape: {\n                points: points\n              }\n            }));\n          }\n\n          if (showSplitArea && prevPoints) {\n            var colorIndex = getColorIndex(splitAreas, splitAreaColors, i - 1);\n            splitAreas[colorIndex].push(new graphic.Polygon({\n              shape: {\n                points: points.concat(prevPoints)\n              }\n            }));\n          }\n\n          prevPoints = points.slice().reverse();\n        }\n      }\n\n    var lineStyle = lineStyleModel.getLineStyle();\n    var areaStyle = areaStyleModel.getAreaStyle(); // Add splitArea before splitLine\n\n    zrUtil.each(splitAreas, function (splitAreas, idx) {\n      this.group.add(graphic.mergePath(splitAreas, {\n        style: zrUtil.defaults({\n          stroke: 'none',\n          fill: splitAreaColors[idx % splitAreaColors.length]\n        }, areaStyle),\n        silent: true\n      }));\n    }, this);\n    zrUtil.each(splitLines, function (splitLines, idx) {\n      this.group.add(graphic.mergePath(splitLines, {\n        style: zrUtil.defaults({\n          fill: 'none',\n          stroke: splitLineColors[idx % splitLineColors.length]\n        }, lineStyle),\n        silent: true\n      }));\n    }, this);\n  }\n});\n\nmodule.exports = _default;","require(\"../coord/polar/polarCreator\");\n\nrequire(\"./axis/RadiusAxisView\");","var echarts = require(\"../echarts\");\n\nrequire(\"../coord/single/singleCreator\");\n\nrequire(\"./axis/SingleAxisView\");\n\nrequire(\"../coord/single/AxisModel\");\n\nrequire(\"./axisPointer\");\n\nrequire(\"./axisPointer/SingleAxisPointer\");\n\necharts.extendComponentView({\n  type: 'single'\n});","var echarts = require(\"../echarts\");\n\nvar preprocessor = require(\"./timeline/preprocessor\");\n\nrequire(\"./timeline/typeDefaulter\");\n\nrequire(\"./timeline/timelineAction\");\n\nrequire(\"./timeline/SliderTimelineModel\");\n\nrequire(\"./timeline/SliderTimelineView\");\n\n/**\n * DataZoom component entry\n */\necharts.registerPreprocessor(preprocessor);","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar TimelineModel = require(\"./TimelineModel\");\n\nvar dataFormatMixin = require(\"../../model/mixin/dataFormat\");\n\nvar SliderTimelineModel = TimelineModel.extend({\n  type: 'timeline.slider',\n\n  /**\n   * @protected\n   */\n  defaultOption: {\n    backgroundColor: 'rgba(0,0,0,0)',\n    // 时间轴背景颜色\n    borderColor: '#ccc',\n    // 时间轴边框颜色\n    borderWidth: 0,\n    // 时间轴边框线宽，单位px，默认为0（无边框）\n    orient: 'horizontal',\n    // 'vertical'\n    inverse: false,\n    tooltip: {\n      // boolean or Object\n      trigger: 'item' // data item may also have tootip attr.\n\n    },\n    symbol: 'emptyCircle',\n    symbolSize: 10,\n    lineStyle: {\n      show: true,\n      width: 2,\n      color: '#304654'\n    },\n    label: {\n      // 文本标签\n      position: 'auto',\n      // auto left right top bottom\n      // When using number, label position is not\n      // restricted by viewRect.\n      // positive: right/bottom, negative: left/top\n      show: true,\n      interval: 'auto',\n      rotate: 0,\n      // formatter: null,\n      // 其余属性默认使用全局文本样式，详见TEXTSTYLE\n      color: '#304654'\n    },\n    itemStyle: {\n      color: '#304654',\n      borderWidth: 1\n    },\n    checkpointStyle: {\n      symbol: 'circle',\n      symbolSize: 13,\n      color: '#c23531',\n      borderWidth: 5,\n      borderColor: 'rgba(194,53,49, 0.5)',\n      animation: true,\n      animationDuration: 300,\n      animationEasing: 'quinticInOut'\n    },\n    controlStyle: {\n      show: true,\n      showPlayBtn: true,\n      showPrevBtn: true,\n      showNextBtn: true,\n      itemSize: 22,\n      itemGap: 12,\n      position: 'left',\n      // 'left' 'right' 'top' 'bottom'\n      playIcon: 'path://M31.6,53C17.5,53,6,41.5,6,27.4S17.5,1.8,31.6,1.8C45.7,1.8,57.2,13.3,57.2,27.4S45.7,53,31.6,53z M31.6,3.3 C18.4,3.3,7.5,14.1,7.5,27.4c0,13.3,10.8,24.1,24.1,24.1C44.9,51.5,55.7,40.7,55.7,27.4C55.7,14.1,44.9,3.3,31.6,3.3z M24.9,21.3 c0-2.2,1.6-3.1,3.5-2l10.5,6.1c1.899,1.1,1.899,2.9,0,4l-10.5,6.1c-1.9,1.1-3.5,0.2-3.5-2V21.3z',\n      // jshint ignore:line\n      stopIcon: 'path://M30.9,53.2C16.8,53.2,5.3,41.7,5.3,27.6S16.8,2,30.9,2C45,2,56.4,13.5,56.4,27.6S45,53.2,30.9,53.2z M30.9,3.5C17.6,3.5,6.8,14.4,6.8,27.6c0,13.3,10.8,24.1,24.101,24.1C44.2,51.7,55,40.9,55,27.6C54.9,14.4,44.1,3.5,30.9,3.5z M36.9,35.8c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H36c0.5,0,0.9,0.4,0.9,1V35.8z M27.8,35.8 c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H27c0.5,0,0.9,0.4,0.9,1L27.8,35.8L27.8,35.8z',\n      // jshint ignore:line\n      nextIcon: 'path://M18.6,50.8l22.5-22.5c0.2-0.2,0.3-0.4,0.3-0.7c0-0.3-0.1-0.5-0.3-0.7L18.7,4.4c-0.1-0.1-0.2-0.3-0.2-0.5 c0-0.4,0.3-0.8,0.8-0.8c0.2,0,0.5,0.1,0.6,0.3l23.5,23.5l0,0c0.2,0.2,0.3,0.4,0.3,0.7c0,0.3-0.1,0.5-0.3,0.7l-0.1,0.1L19.7,52 c-0.1,0.1-0.3,0.2-0.5,0.2c-0.4,0-0.8-0.3-0.8-0.8C18.4,51.2,18.5,51,18.6,50.8z',\n      // jshint ignore:line\n      prevIcon: 'path://M43,52.8L20.4,30.3c-0.2-0.2-0.3-0.4-0.3-0.7c0-0.3,0.1-0.5,0.3-0.7L42.9,6.4c0.1-0.1,0.2-0.3,0.2-0.5 c0-0.4-0.3-0.8-0.8-0.8c-0.2,0-0.5,0.1-0.6,0.3L18.3,28.8l0,0c-0.2,0.2-0.3,0.4-0.3,0.7c0,0.3,0.1,0.5,0.3,0.7l0.1,0.1L41.9,54 c0.1,0.1,0.3,0.2,0.5,0.2c0.4,0,0.8-0.3,0.8-0.8C43.2,53.2,43.1,53,43,52.8z',\n      // jshint ignore:line\n      color: '#304654',\n      borderColor: '#304654',\n      borderWidth: 1\n    },\n    emphasis: {\n      label: {\n        show: true,\n        // 其余属性默认使用全局文本样式，详见TEXTSTYLE\n        color: '#c23531'\n      },\n      itemStyle: {\n        color: '#c23531'\n      },\n      controlStyle: {\n        color: '#c23531',\n        borderColor: '#c23531',\n        borderWidth: 2\n      }\n    },\n    data: []\n  }\n});\nzrUtil.mixin(SliderTimelineModel, dataFormatMixin);\nvar _default = SliderTimelineModel;\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar BoundingRect = require(\"zrender/lib/core/BoundingRect\");\n\nvar matrix = require(\"zrender/lib/core/matrix\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar layout = require(\"../../util/layout\");\n\nvar TimelineView = require(\"./TimelineView\");\n\nvar TimelineAxis = require(\"./TimelineAxis\");\n\nvar _symbol = require(\"../../util/symbol\");\n\nvar createSymbol = _symbol.createSymbol;\n\nvar axisHelper = require(\"../../coord/axisHelper\");\n\nvar numberUtil = require(\"../../util/number\");\n\nvar _format = require(\"../../util/format\");\n\nvar encodeHTML = _format.encodeHTML;\nvar bind = zrUtil.bind;\nvar each = zrUtil.each;\nvar PI = Math.PI;\n\nvar _default = TimelineView.extend({\n  type: 'timeline.slider',\n  init: function (ecModel, api) {\n    this.api = api;\n    /**\n     * @private\n     * @type {module:echarts/component/timeline/TimelineAxis}\n     */\n\n    this._axis;\n    /**\n     * @private\n     * @type {module:zrender/core/BoundingRect}\n     */\n\n    this._viewRect;\n    /**\n     * @type {number}\n     */\n\n    this._timer;\n    /**\n     * @type {module:zrender/Element}\n     */\n\n    this._currentPointer;\n    /**\n     * @type {module:zrender/container/Group}\n     */\n\n    this._mainGroup;\n    /**\n     * @type {module:zrender/container/Group}\n     */\n\n    this._labelGroup;\n  },\n\n  /**\n   * @override\n   */\n  render: function (timelineModel, ecModel, api, payload) {\n    this.model = timelineModel;\n    this.api = api;\n    this.ecModel = ecModel;\n    this.group.removeAll();\n\n    if (timelineModel.get('show', true)) {\n      var layoutInfo = this._layout(timelineModel, api);\n\n      var mainGroup = this._createGroup('mainGroup');\n\n      var labelGroup = this._createGroup('labelGroup');\n      /**\n       * @private\n       * @type {module:echarts/component/timeline/TimelineAxis}\n       */\n\n\n      var axis = this._axis = this._createAxis(layoutInfo, timelineModel);\n\n      timelineModel.formatTooltip = function (dataIndex) {\n        return encodeHTML(axis.scale.getLabel(dataIndex));\n      };\n\n      each(['AxisLine', 'AxisTick', 'Control', 'CurrentPointer'], function (name) {\n        this['_render' + name](layoutInfo, mainGroup, axis, timelineModel);\n      }, this);\n\n      this._renderAxisLabel(layoutInfo, labelGroup, axis, timelineModel);\n\n      this._position(layoutInfo, timelineModel);\n    }\n\n    this._doPlayStop();\n  },\n\n  /**\n   * @override\n   */\n  remove: function () {\n    this._clearTimer();\n\n    this.group.removeAll();\n  },\n\n  /**\n   * @override\n   */\n  dispose: function () {\n    this._clearTimer();\n  },\n  _layout: function (timelineModel, api) {\n    var labelPosOpt = timelineModel.get('label.position');\n    var orient = timelineModel.get('orient');\n    var viewRect = getViewRect(timelineModel, api); // Auto label offset.\n\n    if (labelPosOpt == null || labelPosOpt === 'auto') {\n      labelPosOpt = orient === 'horizontal' ? viewRect.y + viewRect.height / 2 < api.getHeight() / 2 ? '-' : '+' : viewRect.x + viewRect.width / 2 < api.getWidth() / 2 ? '+' : '-';\n    } else if (isNaN(labelPosOpt)) {\n      labelPosOpt = {\n        horizontal: {\n          top: '-',\n          bottom: '+'\n        },\n        vertical: {\n          left: '-',\n          right: '+'\n        }\n      }[orient][labelPosOpt];\n    }\n\n    var labelAlignMap = {\n      horizontal: 'center',\n      vertical: labelPosOpt >= 0 || labelPosOpt === '+' ? 'left' : 'right'\n    };\n    var labelBaselineMap = {\n      horizontal: labelPosOpt >= 0 || labelPosOpt === '+' ? 'top' : 'bottom',\n      vertical: 'middle'\n    };\n    var rotationMap = {\n      horizontal: 0,\n      vertical: PI / 2\n    }; // Position\n\n    var mainLength = orient === 'vertical' ? viewRect.height : viewRect.width;\n    var controlModel = timelineModel.getModel('controlStyle');\n    var showControl = controlModel.get('show', true);\n    var controlSize = showControl ? controlModel.get('itemSize') : 0;\n    var controlGap = showControl ? controlModel.get('itemGap') : 0;\n    var sizePlusGap = controlSize + controlGap; // Special label rotate.\n\n    var labelRotation = timelineModel.get('label.rotate') || 0;\n    labelRotation = labelRotation * PI / 180; // To radian.\n\n    var playPosition;\n    var prevBtnPosition;\n    var nextBtnPosition;\n    var axisExtent;\n    var controlPosition = controlModel.get('position', true);\n    var showPlayBtn = showControl && controlModel.get('showPlayBtn', true);\n    var showPrevBtn = showControl && controlModel.get('showPrevBtn', true);\n    var showNextBtn = showControl && controlModel.get('showNextBtn', true);\n    var xLeft = 0;\n    var xRight = mainLength; // position[0] means left, position[1] means middle.\n\n    if (controlPosition === 'left' || controlPosition === 'bottom') {\n      showPlayBtn && (playPosition = [0, 0], xLeft += sizePlusGap);\n      showPrevBtn && (prevBtnPosition = [xLeft, 0], xLeft += sizePlusGap);\n      showNextBtn && (nextBtnPosition = [xRight - controlSize, 0], xRight -= sizePlusGap);\n    } else {\n      // 'top' 'right'\n      showPlayBtn && (playPosition = [xRight - controlSize, 0], xRight -= sizePlusGap);\n      showPrevBtn && (prevBtnPosition = [0, 0], xLeft += sizePlusGap);\n      showNextBtn && (nextBtnPosition = [xRight - controlSize, 0], xRight -= sizePlusGap);\n    }\n\n    axisExtent = [xLeft, xRight];\n\n    if (timelineModel.get('inverse')) {\n      axisExtent.reverse();\n    }\n\n    return {\n      viewRect: viewRect,\n      mainLength: mainLength,\n      orient: orient,\n      rotation: rotationMap[orient],\n      labelRotation: labelRotation,\n      labelPosOpt: labelPosOpt,\n      labelAlign: timelineModel.get('label.align') || labelAlignMap[orient],\n      labelBaseline: timelineModel.get('label.verticalAlign') || timelineModel.get('label.baseline') || labelBaselineMap[orient],\n      // Based on mainGroup.\n      playPosition: playPosition,\n      prevBtnPosition: prevBtnPosition,\n      nextBtnPosition: nextBtnPosition,\n      axisExtent: axisExtent,\n      controlSize: controlSize,\n      controlGap: controlGap\n    };\n  },\n  _position: function (layoutInfo, timelineModel) {\n    // Position is be called finally, because bounding rect is needed for\n    // adapt content to fill viewRect (auto adapt offset).\n    // Timeline may be not all in the viewRect when 'offset' is specified\n    // as a number, because it is more appropriate that label aligns at\n    // 'offset' but not the other edge defined by viewRect.\n    var mainGroup = this._mainGroup;\n    var labelGroup = this._labelGroup;\n    var viewRect = layoutInfo.viewRect;\n\n    if (layoutInfo.orient === 'vertical') {\n      // transform to horizontal, inverse rotate by left-top point.\n      var m = matrix.create();\n      var rotateOriginX = viewRect.x;\n      var rotateOriginY = viewRect.y + viewRect.height;\n      matrix.translate(m, m, [-rotateOriginX, -rotateOriginY]);\n      matrix.rotate(m, m, -PI / 2);\n      matrix.translate(m, m, [rotateOriginX, rotateOriginY]);\n      viewRect = viewRect.clone();\n      viewRect.applyTransform(m);\n    }\n\n    var viewBound = getBound(viewRect);\n    var mainBound = getBound(mainGroup.getBoundingRect());\n    var labelBound = getBound(labelGroup.getBoundingRect());\n    var mainPosition = mainGroup.position;\n    var labelsPosition = labelGroup.position;\n    labelsPosition[0] = mainPosition[0] = viewBound[0][0];\n    var labelPosOpt = layoutInfo.labelPosOpt;\n\n    if (isNaN(labelPosOpt)) {\n      // '+' or '-'\n      var mainBoundIdx = labelPosOpt === '+' ? 0 : 1;\n      toBound(mainPosition, mainBound, viewBound, 1, mainBoundIdx);\n      toBound(labelsPosition, labelBound, viewBound, 1, 1 - mainBoundIdx);\n    } else {\n      var mainBoundIdx = labelPosOpt >= 0 ? 0 : 1;\n      toBound(mainPosition, mainBound, viewBound, 1, mainBoundIdx);\n      labelsPosition[1] = mainPosition[1] + labelPosOpt;\n    }\n\n    mainGroup.attr('position', mainPosition);\n    labelGroup.attr('position', labelsPosition);\n    mainGroup.rotation = labelGroup.rotation = layoutInfo.rotation;\n    setOrigin(mainGroup);\n    setOrigin(labelGroup);\n\n    function setOrigin(targetGroup) {\n      var pos = targetGroup.position;\n      targetGroup.origin = [viewBound[0][0] - pos[0], viewBound[1][0] - pos[1]];\n    }\n\n    function getBound(rect) {\n      // [[xmin, xmax], [ymin, ymax]]\n      return [[rect.x, rect.x + rect.width], [rect.y, rect.y + rect.height]];\n    }\n\n    function toBound(fromPos, from, to, dimIdx, boundIdx) {\n      fromPos[dimIdx] += to[dimIdx][boundIdx] - from[dimIdx][boundIdx];\n    }\n  },\n  _createAxis: function (layoutInfo, timelineModel) {\n    var data = timelineModel.getData();\n    var axisType = timelineModel.get('axisType');\n    var scale = axisHelper.createScaleByModel(timelineModel, axisType);\n    var dataExtent = data.getDataExtent('value');\n    scale.setExtent(dataExtent[0], dataExtent[1]);\n\n    this._customizeScale(scale, data);\n\n    scale.niceTicks();\n    var axis = new TimelineAxis('value', scale, layoutInfo.axisExtent, axisType);\n    axis.model = timelineModel;\n    return axis;\n  },\n  _customizeScale: function (scale, data) {\n    scale.getTicks = function () {\n      return data.mapArray(['value'], function (value) {\n        return value;\n      });\n    };\n\n    scale.getTicksLabels = function () {\n      return zrUtil.map(this.getTicks(), scale.getLabel, scale);\n    };\n  },\n  _createGroup: function (name) {\n    var newGroup = this['_' + name] = new graphic.Group();\n    this.group.add(newGroup);\n    return newGroup;\n  },\n  _renderAxisLine: function (layoutInfo, group, axis, timelineModel) {\n    var axisExtent = axis.getExtent();\n\n    if (!timelineModel.get('lineStyle.show')) {\n      return;\n    }\n\n    group.add(new graphic.Line({\n      shape: {\n        x1: axisExtent[0],\n        y1: 0,\n        x2: axisExtent[1],\n        y2: 0\n      },\n      style: zrUtil.extend({\n        lineCap: 'round'\n      }, timelineModel.getModel('lineStyle').getLineStyle()),\n      silent: true,\n      z2: 1\n    }));\n  },\n\n  /**\n   * @private\n   */\n  _renderAxisTick: function (layoutInfo, group, axis, timelineModel) {\n    var data = timelineModel.getData();\n    var ticks = axis.scale.getTicks();\n    each(ticks, function (value, dataIndex) {\n      var tickCoord = axis.dataToCoord(value);\n      var itemModel = data.getItemModel(dataIndex);\n      var itemStyleModel = itemModel.getModel('itemStyle');\n      var hoverStyleModel = itemModel.getModel('emphasis.itemStyle');\n      var symbolOpt = {\n        position: [tickCoord, 0],\n        onclick: bind(this._changeTimeline, this, dataIndex)\n      };\n      var el = giveSymbol(itemModel, itemStyleModel, group, symbolOpt);\n      graphic.setHoverStyle(el, hoverStyleModel.getItemStyle());\n\n      if (itemModel.get('tooltip')) {\n        el.dataIndex = dataIndex;\n        el.dataModel = timelineModel;\n      } else {\n        el.dataIndex = el.dataModel = null;\n      }\n    }, this);\n  },\n\n  /**\n   * @private\n   */\n  _renderAxisLabel: function (layoutInfo, group, axis, timelineModel) {\n    var labelModel = timelineModel.getModel('label');\n\n    if (!labelModel.get('show')) {\n      return;\n    }\n\n    var data = timelineModel.getData();\n    var ticks = axis.scale.getTicks();\n    var labels = axisHelper.getFormattedLabels(axis, labelModel.get('formatter'));\n    var labelInterval = axis.getLabelInterval();\n    each(ticks, function (tick, dataIndex) {\n      if (axis.isLabelIgnored(dataIndex, labelInterval)) {\n        return;\n      }\n\n      var itemModel = data.getItemModel(dataIndex);\n      var normalLabelModel = itemModel.getModel('label');\n      var hoverLabelModel = itemModel.getModel('emphasis.label');\n      var tickCoord = axis.dataToCoord(tick);\n      var textEl = new graphic.Text({\n        position: [tickCoord, 0],\n        rotation: layoutInfo.labelRotation - layoutInfo.rotation,\n        onclick: bind(this._changeTimeline, this, dataIndex),\n        silent: false\n      });\n      graphic.setTextStyle(textEl.style, normalLabelModel, {\n        text: labels[dataIndex],\n        textAlign: layoutInfo.labelAlign,\n        textVerticalAlign: layoutInfo.labelBaseline\n      });\n      group.add(textEl);\n      graphic.setHoverStyle(textEl, graphic.setTextStyle({}, hoverLabelModel));\n    }, this);\n  },\n\n  /**\n   * @private\n   */\n  _renderControl: function (layoutInfo, group, axis, timelineModel) {\n    var controlSize = layoutInfo.controlSize;\n    var rotation = layoutInfo.rotation;\n    var itemStyle = timelineModel.getModel('controlStyle').getItemStyle();\n    var hoverStyle = timelineModel.getModel('emphasis.controlStyle').getItemStyle();\n    var rect = [0, -controlSize / 2, controlSize, controlSize];\n    var playState = timelineModel.getPlayState();\n    var inverse = timelineModel.get('inverse', true);\n    makeBtn(layoutInfo.nextBtnPosition, 'controlStyle.nextIcon', bind(this._changeTimeline, this, inverse ? '-' : '+'));\n    makeBtn(layoutInfo.prevBtnPosition, 'controlStyle.prevIcon', bind(this._changeTimeline, this, inverse ? '+' : '-'));\n    makeBtn(layoutInfo.playPosition, 'controlStyle.' + (playState ? 'stopIcon' : 'playIcon'), bind(this._handlePlayClick, this, !playState), true);\n\n    function makeBtn(position, iconPath, onclick, willRotate) {\n      if (!position) {\n        return;\n      }\n\n      var opt = {\n        position: position,\n        origin: [controlSize / 2, 0],\n        rotation: willRotate ? -rotation : 0,\n        rectHover: true,\n        style: itemStyle,\n        onclick: onclick\n      };\n      var btn = makeIcon(timelineModel, iconPath, rect, opt);\n      group.add(btn);\n      graphic.setHoverStyle(btn, hoverStyle);\n    }\n  },\n  _renderCurrentPointer: function (layoutInfo, group, axis, timelineModel) {\n    var data = timelineModel.getData();\n    var currentIndex = timelineModel.getCurrentIndex();\n    var pointerModel = data.getItemModel(currentIndex).getModel('checkpointStyle');\n    var me = this;\n    var callback = {\n      onCreate: function (pointer) {\n        pointer.draggable = true;\n        pointer.drift = bind(me._handlePointerDrag, me);\n        pointer.ondragend = bind(me._handlePointerDragend, me);\n        pointerMoveTo(pointer, currentIndex, axis, timelineModel, true);\n      },\n      onUpdate: function (pointer) {\n        pointerMoveTo(pointer, currentIndex, axis, timelineModel);\n      }\n    }; // Reuse when exists, for animation and drag.\n\n    this._currentPointer = giveSymbol(pointerModel, pointerModel, this._mainGroup, {}, this._currentPointer, callback);\n  },\n  _handlePlayClick: function (nextState) {\n    this._clearTimer();\n\n    this.api.dispatchAction({\n      type: 'timelinePlayChange',\n      playState: nextState,\n      from: this.uid\n    });\n  },\n  _handlePointerDrag: function (dx, dy, e) {\n    this._clearTimer();\n\n    this._pointerChangeTimeline([e.offsetX, e.offsetY]);\n  },\n  _handlePointerDragend: function (e) {\n    this._pointerChangeTimeline([e.offsetX, e.offsetY], true);\n  },\n  _pointerChangeTimeline: function (mousePos, trigger) {\n    var toCoord = this._toAxisCoord(mousePos)[0];\n\n    var axis = this._axis;\n    var axisExtent = numberUtil.asc(axis.getExtent().slice());\n    toCoord > axisExtent[1] && (toCoord = axisExtent[1]);\n    toCoord < axisExtent[0] && (toCoord = axisExtent[0]);\n    this._currentPointer.position[0] = toCoord;\n\n    this._currentPointer.dirty();\n\n    var targetDataIndex = this._findNearestTick(toCoord);\n\n    var timelineModel = this.model;\n\n    if (trigger || targetDataIndex !== timelineModel.getCurrentIndex() && timelineModel.get('realtime')) {\n      this._changeTimeline(targetDataIndex);\n    }\n  },\n  _doPlayStop: function () {\n    this._clearTimer();\n\n    if (this.model.getPlayState()) {\n      this._timer = setTimeout(bind(handleFrame, this), this.model.get('playInterval'));\n    }\n\n    function handleFrame() {\n      // Do not cache\n      var timelineModel = this.model;\n\n      this._changeTimeline(timelineModel.getCurrentIndex() + (timelineModel.get('rewind', true) ? -1 : 1));\n    }\n  },\n  _toAxisCoord: function (vertex) {\n    var trans = this._mainGroup.getLocalTransform();\n\n    return graphic.applyTransform(vertex, trans, true);\n  },\n  _findNearestTick: function (axisCoord) {\n    var data = this.model.getData();\n    var dist = Infinity;\n    var targetDataIndex;\n    var axis = this._axis;\n    data.each(['value'], function (value, dataIndex) {\n      var coord = axis.dataToCoord(value);\n      var d = Math.abs(coord - axisCoord);\n\n      if (d < dist) {\n        dist = d;\n        targetDataIndex = dataIndex;\n      }\n    });\n    return targetDataIndex;\n  },\n  _clearTimer: function () {\n    if (this._timer) {\n      clearTimeout(this._timer);\n      this._timer = null;\n    }\n  },\n  _changeTimeline: function (nextIndex) {\n    var currentIndex = this.model.getCurrentIndex();\n\n    if (nextIndex === '+') {\n      nextIndex = currentIndex + 1;\n    } else if (nextIndex === '-') {\n      nextIndex = currentIndex - 1;\n    }\n\n    this.api.dispatchAction({\n      type: 'timelineChange',\n      currentIndex: nextIndex,\n      from: this.uid\n    });\n  }\n});\n\nfunction getViewRect(model, api) {\n  return layout.getLayoutRect(model.getBoxLayoutParams(), {\n    width: api.getWidth(),\n    height: api.getHeight()\n  }, model.get('padding'));\n}\n\nfunction makeIcon(timelineModel, objPath, rect, opts) {\n  var icon = graphic.makePath(timelineModel.get(objPath).replace(/^path:\\/\\//, ''), zrUtil.clone(opts || {}), new BoundingRect(rect[0], rect[1], rect[2], rect[3]), 'center');\n  return icon;\n}\n/**\n * Create symbol or update symbol\n * opt: basic position and event handlers\n */\n\n\nfunction giveSymbol(hostModel, itemStyleModel, group, opt, symbol, callback) {\n  var color = itemStyleModel.get('color');\n\n  if (!symbol) {\n    var symbolType = hostModel.get('symbol');\n    symbol = createSymbol(symbolType, -1, -1, 2, 2, color);\n    symbol.setStyle('strokeNoScale', true);\n    group.add(symbol);\n    callback && callback.onCreate(symbol);\n  } else {\n    symbol.setColor(color);\n    group.add(symbol); // Group may be new, also need to add.\n\n    callback && callback.onUpdate(symbol);\n  } // Style\n\n\n  var itemStyle = itemStyleModel.getItemStyle(['color', 'symbol', 'symbolSize']);\n  symbol.setStyle(itemStyle); // Transform and events.\n\n  opt = zrUtil.merge({\n    rectHover: true,\n    z2: 100\n  }, opt, true);\n  var symbolSize = hostModel.get('symbolSize');\n  symbolSize = symbolSize instanceof Array ? symbolSize.slice() : [+symbolSize, +symbolSize];\n  symbolSize[0] /= 2;\n  symbolSize[1] /= 2;\n  opt.scale = symbolSize;\n  var symbolOffset = hostModel.get('symbolOffset');\n\n  if (symbolOffset) {\n    var pos = opt.position = opt.position || [0, 0];\n    pos[0] += numberUtil.parsePercent(symbolOffset[0], symbolSize[0]);\n    pos[1] += numberUtil.parsePercent(symbolOffset[1], symbolSize[1]);\n  }\n\n  var symbolRotate = hostModel.get('symbolRotate');\n  opt.rotation = (symbolRotate || 0) * Math.PI / 180 || 0;\n  symbol.attr(opt); // FIXME\n  // (1) When symbol.style.strokeNoScale is true and updateTransform is not performed,\n  // getBoundingRect will return wrong result.\n  // (This is supposed to be resolved in zrender, but it is a little difficult to\n  // leverage performance and auto updateTransform)\n  // (2) All of ancesters of symbol do not scale, so we can just updateTransform symbol.\n\n  symbol.updateTransform();\n  return symbol;\n}\n\nfunction pointerMoveTo(pointer, dataIndex, axis, timelineModel, noAnimation) {\n  if (pointer.dragging) {\n    return;\n  }\n\n  var pointerModel = timelineModel.getModel('checkpointStyle');\n  var toCoord = axis.dataToCoord(timelineModel.getData().get(['value'], dataIndex));\n\n  if (noAnimation || !pointerModel.get('animation', true)) {\n    pointer.attr({\n      position: [toCoord, 0]\n    });\n  } else {\n    pointer.stopAnimation(true);\n    pointer.animateTo({\n      position: [toCoord, 0]\n    }, pointerModel.get('animationDuration', true), pointerModel.get('animationEasing', true));\n  }\n}\n\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar Axis = require(\"../../coord/Axis\");\n\nvar axisHelper = require(\"../../coord/axisHelper\");\n\n/**\n * Extend axis 2d\n * @constructor module:echarts/coord/cartesian/Axis2D\n * @extends {module:echarts/coord/cartesian/Axis}\n * @param {string} dim\n * @param {*} scale\n * @param {Array.<number>} coordExtent\n * @param {string} axisType\n * @param {string} position\n */\nvar TimelineAxis = function (dim, scale, coordExtent, axisType) {\n  Axis.call(this, dim, scale, coordExtent);\n  /**\n   * Axis type\n   *  - 'category'\n   *  - 'value'\n   *  - 'time'\n   *  - 'log'\n   * @type {string}\n   */\n\n  this.type = axisType || 'value';\n  /**\n   * @private\n   * @type {number}\n   */\n\n  this._autoLabelInterval;\n  /**\n   * Axis model\n   * @param {module:echarts/component/TimelineModel}\n   */\n\n  this.model = null;\n};\n\nTimelineAxis.prototype = {\n  constructor: TimelineAxis,\n\n  /**\n   * @public\n   * @return {number}\n   */\n  getLabelInterval: function () {\n    var timelineModel = this.model;\n    var labelModel = timelineModel.getModel('label');\n    var labelInterval = labelModel.get('interval');\n\n    if (labelInterval != null && labelInterval != 'auto') {\n      return labelInterval;\n    }\n\n    var labelInterval = this._autoLabelInterval;\n\n    if (!labelInterval) {\n      labelInterval = this._autoLabelInterval = axisHelper.getAxisLabelInterval(zrUtil.map(this.scale.getTicks(), this.dataToCoord, this), axisHelper.getFormattedLabels(this, labelModel.get('formatter')), labelModel.getFont(), timelineModel.get('orient') === 'horizontal' ? 0 : 90, labelModel.get('rotate'));\n    }\n\n    return labelInterval;\n  },\n\n  /**\n   * If label is ignored.\n   * Automatically used when axis is category and label can not be all shown\n   * @public\n   * @param  {number} idx\n   * @return {boolean}\n   */\n  isLabelIgnored: function (idx) {\n    if (this.type === 'category') {\n      var labelInterval = this.getLabelInterval();\n      return typeof labelInterval === 'function' && !labelInterval(idx, this.scale.getLabel(idx)) || idx % (labelInterval + 1);\n    }\n  }\n};\nzrUtil.inherits(TimelineAxis, Axis);\nvar _default = TimelineAxis;\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar ComponentModel = require(\"../../model/Component\");\n\nvar List = require(\"../../data/List\");\n\nvar modelUtil = require(\"../../util/model\");\n\nvar TimelineModel = ComponentModel.extend({\n  type: 'timeline',\n  layoutMode: 'box',\n\n  /**\n   * @protected\n   */\n  defaultOption: {\n    zlevel: 0,\n    // 一级层叠\n    z: 4,\n    // 二级层叠\n    show: true,\n    axisType: 'time',\n    // 模式是时间类型，支持 value, category\n    realtime: true,\n    left: '20%',\n    top: null,\n    right: '20%',\n    bottom: 0,\n    width: null,\n    height: 40,\n    padding: 5,\n    controlPosition: 'left',\n    // 'left' 'right' 'top' 'bottom' 'none'\n    autoPlay: false,\n    rewind: false,\n    // 反向播放\n    loop: true,\n    playInterval: 2000,\n    // 播放时间间隔，单位ms\n    currentIndex: 0,\n    itemStyle: {},\n    label: {\n      color: '#000'\n    },\n    data: []\n  },\n\n  /**\n   * @override\n   */\n  init: function (option, parentModel, ecModel) {\n    /**\n     * @private\n     * @type {module:echarts/data/List}\n     */\n    this._data;\n    /**\n     * @private\n     * @type {Array.<string>}\n     */\n\n    this._names;\n    this.mergeDefaultAndTheme(option, ecModel);\n\n    this._initData();\n  },\n\n  /**\n   * @override\n   */\n  mergeOption: function (option) {\n    TimelineModel.superApply(this, 'mergeOption', arguments);\n\n    this._initData();\n  },\n\n  /**\n   * @param {number} [currentIndex]\n   */\n  setCurrentIndex: function (currentIndex) {\n    if (currentIndex == null) {\n      currentIndex = this.option.currentIndex;\n    }\n\n    var count = this._data.count();\n\n    if (this.option.loop) {\n      currentIndex = (currentIndex % count + count) % count;\n    } else {\n      currentIndex >= count && (currentIndex = count - 1);\n      currentIndex < 0 && (currentIndex = 0);\n    }\n\n    this.option.currentIndex = currentIndex;\n  },\n\n  /**\n   * @return {number} currentIndex\n   */\n  getCurrentIndex: function () {\n    return this.option.currentIndex;\n  },\n\n  /**\n   * @return {boolean}\n   */\n  isIndexMax: function () {\n    return this.getCurrentIndex() >= this._data.count() - 1;\n  },\n\n  /**\n   * @param {boolean} state true: play, false: stop\n   */\n  setPlayState: function (state) {\n    this.option.autoPlay = !!state;\n  },\n\n  /**\n   * @return {boolean} true: play, false: stop\n   */\n  getPlayState: function () {\n    return !!this.option.autoPlay;\n  },\n\n  /**\n   * @private\n   */\n  _initData: function () {\n    var thisOption = this.option;\n    var dataArr = thisOption.data || [];\n    var axisType = thisOption.axisType;\n    var names = this._names = [];\n\n    if (axisType === 'category') {\n      var idxArr = [];\n      zrUtil.each(dataArr, function (item, index) {\n        var value = modelUtil.getDataItemValue(item);\n        var newItem;\n\n        if (zrUtil.isObject(item)) {\n          newItem = zrUtil.clone(item);\n          newItem.value = index;\n        } else {\n          newItem = index;\n        }\n\n        idxArr.push(newItem);\n\n        if (!zrUtil.isString(value) && (value == null || isNaN(value))) {\n          value = '';\n        }\n\n        names.push(value + '');\n      });\n      dataArr = idxArr;\n    }\n\n    var dimType = {\n      category: 'ordinal',\n      time: 'time'\n    }[axisType] || 'number';\n    var data = this._data = new List([{\n      name: 'value',\n      type: dimType\n    }], this);\n    data.initData(dataArr, names);\n  },\n  getData: function () {\n    return this._data;\n  },\n\n  /**\n   * @public\n   * @return {Array.<string>} categoreis\n   */\n  getCategories: function () {\n    if (this.get('axisType') === 'category') {\n      return this._names.slice();\n    }\n  }\n});\nvar _default = TimelineModel;\nmodule.exports = _default;","var ComponentView = require(\"../../view/Component\");\n\nvar _default = ComponentView.extend({\n  type: 'timeline'\n});\n\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\nfunction _default(option) {\n  var timelineOpt = option && option.timeline;\n\n  if (!zrUtil.isArray(timelineOpt)) {\n    timelineOpt = timelineOpt ? [timelineOpt] : [];\n  }\n\n  zrUtil.each(timelineOpt, function (opt) {\n    if (!opt) {\n      return;\n    }\n\n    compatibleEC2(opt);\n  });\n}\n\nfunction compatibleEC2(opt) {\n  var type = opt.type;\n  var ec2Types = {\n    'number': 'value',\n    'time': 'time'\n  }; // Compatible with ec2\n\n  if (ec2Types[type]) {\n    opt.axisType = ec2Types[type];\n    delete opt.type;\n  }\n\n  transferItem(opt);\n\n  if (has(opt, 'controlPosition')) {\n    var controlStyle = opt.controlStyle || (opt.controlStyle = {});\n\n    if (!has(controlStyle, 'position')) {\n      controlStyle.position = opt.controlPosition;\n    }\n\n    if (controlStyle.position === 'none' && !has(controlStyle, 'show')) {\n      controlStyle.show = false;\n      delete controlStyle.position;\n    }\n\n    delete opt.controlPosition;\n  }\n\n  zrUtil.each(opt.data || [], function (dataItem) {\n    if (zrUtil.isObject(dataItem) && !zrUtil.isArray(dataItem)) {\n      if (!has(dataItem, 'value') && has(dataItem, 'name')) {\n        // In ec2, using name as value.\n        dataItem.value = dataItem.name;\n      }\n\n      transferItem(dataItem);\n    }\n  });\n}\n\nfunction transferItem(opt) {\n  var itemStyle = opt.itemStyle || (opt.itemStyle = {});\n  var itemStyleEmphasis = itemStyle.emphasis || (itemStyle.emphasis = {}); // Transfer label out\n\n  var label = opt.label || opt.label || {};\n  var labelNormal = label.normal || (label.normal = {});\n  var excludeLabelAttr = {\n    normal: 1,\n    emphasis: 1\n  };\n  zrUtil.each(label, function (value, name) {\n    if (!excludeLabelAttr[name] && !has(labelNormal, name)) {\n      labelNormal[name] = value;\n    }\n  });\n\n  if (itemStyleEmphasis.label && !has(label, 'emphasis')) {\n    label.emphasis = itemStyleEmphasis.label;\n    delete itemStyleEmphasis.label;\n  }\n}\n\nfunction has(obj, attr) {\n  return obj.hasOwnProperty(attr);\n}\n\nmodule.exports = _default;","var echarts = require(\"../../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\necharts.registerAction({\n  type: 'timelineChange',\n  event: 'timelineChanged',\n  update: 'prepareAndUpdate'\n}, function (payload, ecModel) {\n  var timelineModel = ecModel.getComponent('timeline');\n\n  if (timelineModel && payload.currentIndex != null) {\n    timelineModel.setCurrentIndex(payload.currentIndex);\n\n    if (!timelineModel.get('loop', true) && timelineModel.isIndexMax()) {\n      timelineModel.setPlayState(false);\n    }\n  } // Set normalized currentIndex to payload.\n\n\n  ecModel.resetOption('timeline');\n  return zrUtil.defaults({\n    currentIndex: timelineModel.option.currentIndex\n  }, payload);\n});\necharts.registerAction({\n  type: 'timelinePlayChange',\n  event: 'timelinePlayChanged',\n  update: 'update'\n}, function (payload, ecModel) {\n  var timelineModel = ecModel.getComponent('timeline');\n\n  if (timelineModel && payload.playState != null) {\n    timelineModel.setPlayState(payload.playState);\n  }\n});","var Component = require(\"../../model/Component\");\n\nComponent.registerSubTypeDefaulter('timeline', function () {\n  // Only slider now.\n  return 'slider';\n});","var echarts = require(\"../echarts\");\n\nvar graphic = require(\"../util/graphic\");\n\nvar _layout = require(\"../util/layout\");\n\nvar getLayoutRect = _layout.getLayoutRect;\n// Model\necharts.extendComponentModel({\n  type: 'title',\n  layoutMode: {\n    type: 'box',\n    ignoreSize: true\n  },\n  defaultOption: {\n    // 一级层叠\n    zlevel: 0,\n    // 二级层叠\n    z: 6,\n    show: true,\n    text: '',\n    // 超链接跳转\n    // link: null,\n    // 仅支持self | blank\n    target: 'blank',\n    subtext: '',\n    // 超链接跳转\n    // sublink: null,\n    // 仅支持self | blank\n    subtarget: 'blank',\n    // 'center' ¦ 'left' ¦ 'right'\n    // ¦ {number}（x坐标，单位px）\n    left: 0,\n    // 'top' ¦ 'bottom' ¦ 'center'\n    // ¦ {number}（y坐标，单位px）\n    top: 0,\n    // 水平对齐\n    // 'auto' | 'left' | 'right' | 'center'\n    // 默认根据 left 的位置判断是左对齐还是右对齐\n    // textAlign: null\n    //\n    // 垂直对齐\n    // 'auto' | 'top' | 'bottom' | 'middle'\n    // 默认根据 top 位置判断是上对齐还是下对齐\n    // textBaseline: null\n    backgroundColor: 'rgba(0,0,0,0)',\n    // 标题边框颜色\n    borderColor: '#ccc',\n    // 标题边框线宽，单位px，默认为0（无边框）\n    borderWidth: 0,\n    // 标题内边距，单位px，默认各方向内边距为5，\n    // 接受数组分别设定上右下左边距，同css\n    padding: 5,\n    // 主副标题纵向间隔，单位px，默认为10，\n    itemGap: 10,\n    textStyle: {\n      fontSize: 18,\n      fontWeight: 'bolder',\n      color: '#333'\n    },\n    subtextStyle: {\n      color: '#aaa'\n    }\n  }\n}); // View\n\necharts.extendComponentView({\n  type: 'title',\n  render: function (titleModel, ecModel, api) {\n    this.group.removeAll();\n\n    if (!titleModel.get('show')) {\n      return;\n    }\n\n    var group = this.group;\n    var textStyleModel = titleModel.getModel('textStyle');\n    var subtextStyleModel = titleModel.getModel('subtextStyle');\n    var textAlign = titleModel.get('textAlign');\n    var textBaseline = titleModel.get('textBaseline');\n    var textEl = new graphic.Text({\n      style: graphic.setTextStyle({}, textStyleModel, {\n        text: titleModel.get('text'),\n        textFill: textStyleModel.getTextColor()\n      }, {\n        disableBox: true\n      }),\n      z2: 10\n    });\n    var textRect = textEl.getBoundingRect();\n    var subText = titleModel.get('subtext');\n    var subTextEl = new graphic.Text({\n      style: graphic.setTextStyle({}, subtextStyleModel, {\n        text: subText,\n        textFill: subtextStyleModel.getTextColor(),\n        y: textRect.height + titleModel.get('itemGap'),\n        textVerticalAlign: 'top'\n      }, {\n        disableBox: true\n      }),\n      z2: 10\n    });\n    var link = titleModel.get('link');\n    var sublink = titleModel.get('sublink');\n    textEl.silent = !link;\n    subTextEl.silent = !sublink;\n\n    if (link) {\n      textEl.on('click', function () {\n        window.open(link, '_' + titleModel.get('target'));\n      });\n    }\n\n    if (sublink) {\n      subTextEl.on('click', function () {\n        window.open(sublink, '_' + titleModel.get('subtarget'));\n      });\n    }\n\n    group.add(textEl);\n    subText && group.add(subTextEl); // If no subText, but add subTextEl, there will be an empty line.\n\n    var groupRect = group.getBoundingRect();\n    var layoutOption = titleModel.getBoxLayoutParams();\n    layoutOption.width = groupRect.width;\n    layoutOption.height = groupRect.height;\n    var layoutRect = getLayoutRect(layoutOption, {\n      width: api.getWidth(),\n      height: api.getHeight()\n    }, titleModel.get('padding')); // Adjust text align based on position\n\n    if (!textAlign) {\n      // Align left if title is on the left. center and right is same\n      textAlign = titleModel.get('left') || titleModel.get('right');\n\n      if (textAlign === 'middle') {\n        textAlign = 'center';\n      } // Adjust layout by text align\n\n\n      if (textAlign === 'right') {\n        layoutRect.x += layoutRect.width;\n      } else if (textAlign === 'center') {\n        layoutRect.x += layoutRect.width / 2;\n      }\n    }\n\n    if (!textBaseline) {\n      textBaseline = titleModel.get('top') || titleModel.get('bottom');\n\n      if (textBaseline === 'center') {\n        textBaseline = 'middle';\n      }\n\n      if (textBaseline === 'bottom') {\n        layoutRect.y += layoutRect.height;\n      } else if (textBaseline === 'middle') {\n        layoutRect.y += layoutRect.height / 2;\n      }\n\n      textBaseline = textBaseline || 'top';\n    }\n\n    group.attr('position', [layoutRect.x, layoutRect.y]);\n    var alignStyle = {\n      textAlign: textAlign,\n      textVerticalAlign: textBaseline\n    };\n    textEl.setStyle(alignStyle);\n    subTextEl.setStyle(alignStyle); // Render background\n    // Get groupRect again because textAlign has been changed\n\n    groupRect = group.getBoundingRect();\n    var padding = layoutRect.margin;\n    var style = titleModel.getItemStyle(['color', 'opacity']);\n    style.fill = titleModel.get('backgroundColor');\n    var rect = new graphic.Rect({\n      shape: {\n        x: groupRect.x - padding[3],\n        y: groupRect.y - padding[0],\n        width: groupRect.width + padding[1] + padding[3],\n        height: groupRect.height + padding[0] + padding[2],\n        r: titleModel.get('borderRadius')\n      },\n      style: style,\n      silent: true\n    });\n    graphic.subPixelOptimizeRect(rect);\n    group.add(rect);\n  }\n});","require(\"./toolbox/ToolboxModel\");\n\nrequire(\"./toolbox/ToolboxView\");\n\nrequire(\"./toolbox/feature/SaveAsImage\");\n\nrequire(\"./toolbox/feature/MagicType\");\n\nrequire(\"./toolbox/feature/DataView\");\n\nrequire(\"./toolbox/feature/DataZoom\");\n\nrequire(\"./toolbox/feature/Restore\");","var echarts = require(\"../../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar featureManager = require(\"./featureManager\");\n\nvar ToolboxModel = echarts.extendComponentModel({\n  type: 'toolbox',\n  layoutMode: {\n    type: 'box',\n    ignoreSize: true\n  },\n  mergeDefaultAndTheme: function (option) {\n    ToolboxModel.superApply(this, 'mergeDefaultAndTheme', arguments);\n    zrUtil.each(this.option.feature, function (featureOpt, featureName) {\n      var Feature = featureManager.get(featureName);\n      Feature && zrUtil.merge(featureOpt, Feature.defaultOption);\n    });\n  },\n  defaultOption: {\n    show: true,\n    z: 6,\n    zlevel: 0,\n    orient: 'horizontal',\n    left: 'right',\n    top: 'top',\n    // right\n    // bottom\n    backgroundColor: 'transparent',\n    borderColor: '#ccc',\n    borderRadius: 0,\n    borderWidth: 0,\n    padding: 5,\n    itemSize: 15,\n    itemGap: 8,\n    showTitle: true,\n    iconStyle: {\n      borderColor: '#666',\n      color: 'none'\n    },\n    emphasis: {\n      iconStyle: {\n        borderColor: '#3E98C5'\n      } // textStyle: {},\n      // feature\n\n    }\n  }\n});\nvar _default = ToolboxModel;\nmodule.exports = _default;","var echarts = require(\"../../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar textContain = require(\"zrender/lib/contain/text\");\n\nvar featureManager = require(\"./featureManager\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar Model = require(\"../../model/Model\");\n\nvar DataDiffer = require(\"../../data/DataDiffer\");\n\nvar listComponentHelper = require(\"../helper/listComponent\");\n\nvar _default = echarts.extendComponentView({\n  type: 'toolbox',\n  render: function (toolboxModel, ecModel, api, payload) {\n    var group = this.group;\n    group.removeAll();\n\n    if (!toolboxModel.get('show')) {\n      return;\n    }\n\n    var itemSize = +toolboxModel.get('itemSize');\n    var featureOpts = toolboxModel.get('feature') || {};\n    var features = this._features || (this._features = {});\n    var featureNames = [];\n    zrUtil.each(featureOpts, function (opt, name) {\n      featureNames.push(name);\n    });\n    new DataDiffer(this._featureNames || [], featureNames).add(processFeature).update(processFeature).remove(zrUtil.curry(processFeature, null)).execute(); // Keep for diff.\n\n    this._featureNames = featureNames;\n\n    function processFeature(newIndex, oldIndex) {\n      var featureName = featureNames[newIndex];\n      var oldName = featureNames[oldIndex];\n      var featureOpt = featureOpts[featureName];\n      var featureModel = new Model(featureOpt, toolboxModel, toolboxModel.ecModel);\n      var feature;\n\n      if (featureName && !oldName) {\n        // Create\n        if (isUserFeatureName(featureName)) {\n          feature = {\n            model: featureModel,\n            onclick: featureModel.option.onclick,\n            featureName: featureName\n          };\n        } else {\n          var Feature = featureManager.get(featureName);\n\n          if (!Feature) {\n            return;\n          }\n\n          feature = new Feature(featureModel, ecModel, api);\n        }\n\n        features[featureName] = feature;\n      } else {\n        feature = features[oldName]; // If feature does not exsit.\n\n        if (!feature) {\n          return;\n        }\n\n        feature.model = featureModel;\n        feature.ecModel = ecModel;\n        feature.api = api;\n      }\n\n      if (!featureName && oldName) {\n        feature.dispose && feature.dispose(ecModel, api);\n        return;\n      }\n\n      if (!featureModel.get('show') || feature.unusable) {\n        feature.remove && feature.remove(ecModel, api);\n        return;\n      }\n\n      createIconPaths(featureModel, feature, featureName);\n\n      featureModel.setIconStatus = function (iconName, status) {\n        var option = this.option;\n        var iconPaths = this.iconPaths;\n        option.iconStatus = option.iconStatus || {};\n        option.iconStatus[iconName] = status; // FIXME\n\n        iconPaths[iconName] && iconPaths[iconName].trigger(status);\n      };\n\n      if (feature.render) {\n        feature.render(featureModel, ecModel, api, payload);\n      }\n    }\n\n    function createIconPaths(featureModel, feature, featureName) {\n      var iconStyleModel = featureModel.getModel('iconStyle');\n      var iconStyleEmphasisModel = featureModel.getModel('emphasis.iconStyle'); // If one feature has mutiple icon. they are orginaized as\n      // {\n      //     icon: {\n      //         foo: '',\n      //         bar: ''\n      //     },\n      //     title: {\n      //         foo: '',\n      //         bar: ''\n      //     }\n      // }\n\n      var icons = feature.getIcons ? feature.getIcons() : featureModel.get('icon');\n      var titles = featureModel.get('title') || {};\n\n      if (typeof icons === 'string') {\n        var icon = icons;\n        var title = titles;\n        icons = {};\n        titles = {};\n        icons[featureName] = icon;\n        titles[featureName] = title;\n      }\n\n      var iconPaths = featureModel.iconPaths = {};\n      zrUtil.each(icons, function (iconStr, iconName) {\n        var path = graphic.createIcon(iconStr, {}, {\n          x: -itemSize / 2,\n          y: -itemSize / 2,\n          width: itemSize,\n          height: itemSize\n        });\n        path.setStyle(iconStyleModel.getItemStyle());\n        path.hoverStyle = iconStyleEmphasisModel.getItemStyle();\n        graphic.setHoverStyle(path);\n\n        if (toolboxModel.get('showTitle')) {\n          path.__title = titles[iconName];\n          path.on('mouseover', function () {\n            // Should not reuse above hoverStyle, which might be modified.\n            var hoverStyle = iconStyleEmphasisModel.getItemStyle();\n            path.setStyle({\n              text: titles[iconName],\n              textPosition: hoverStyle.textPosition || 'bottom',\n              textFill: hoverStyle.fill || hoverStyle.stroke || '#000',\n              textAlign: hoverStyle.textAlign || 'center'\n            });\n          }).on('mouseout', function () {\n            path.setStyle({\n              textFill: null\n            });\n          });\n        }\n\n        path.trigger(featureModel.get('iconStatus.' + iconName) || 'normal');\n        group.add(path);\n        path.on('click', zrUtil.bind(feature.onclick, feature, ecModel, api, iconName));\n        iconPaths[iconName] = path;\n      });\n    }\n\n    listComponentHelper.layout(group, toolboxModel, api); // Render background after group is layout\n    // FIXME\n\n    group.add(listComponentHelper.makeBackground(group.getBoundingRect(), toolboxModel)); // Adjust icon title positions to avoid them out of screen\n\n    group.eachChild(function (icon) {\n      var titleText = icon.__title;\n      var hoverStyle = icon.hoverStyle; // May be background element\n\n      if (hoverStyle && titleText) {\n        var rect = textContain.getBoundingRect(titleText, textContain.makeFont(hoverStyle));\n        var offsetX = icon.position[0] + group.position[0];\n        var offsetY = icon.position[1] + group.position[1] + itemSize;\n        var needPutOnTop = false;\n\n        if (offsetY + rect.height > api.getHeight()) {\n          hoverStyle.textPosition = 'top';\n          needPutOnTop = true;\n        }\n\n        var topOffset = needPutOnTop ? -5 - rect.height : itemSize + 8;\n\n        if (offsetX + rect.width / 2 > api.getWidth()) {\n          hoverStyle.textPosition = ['100%', topOffset];\n          hoverStyle.textAlign = 'right';\n        } else if (offsetX - rect.width / 2 < 0) {\n          hoverStyle.textPosition = [0, topOffset];\n          hoverStyle.textAlign = 'left';\n        }\n      }\n    });\n  },\n  updateView: function (toolboxModel, ecModel, api, payload) {\n    zrUtil.each(this._features, function (feature) {\n      feature.updateView && feature.updateView(feature.model, ecModel, api, payload);\n    });\n  },\n  // updateLayout: function (toolboxModel, ecModel, api, payload) {\n  //     zrUtil.each(this._features, function (feature) {\n  //         feature.updateLayout && feature.updateLayout(feature.model, ecModel, api, payload);\n  //     });\n  // },\n  remove: function (ecModel, api) {\n    zrUtil.each(this._features, function (feature) {\n      feature.remove && feature.remove(ecModel, api);\n    });\n    this.group.removeAll();\n  },\n  dispose: function (ecModel, api) {\n    zrUtil.each(this._features, function (feature) {\n      feature.dispose && feature.dispose(ecModel, api);\n    });\n  }\n});\n\nfunction isUserFeatureName(featureName) {\n  return featureName.indexOf('my') === 0;\n}\n\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar featureManager = require(\"../featureManager\");\n\nvar lang = require(\"../../../lang\");\n\nvar brushLang = lang.toolbox.brush;\n\nfunction Brush(model, ecModel, api) {\n  this.model = model;\n  this.ecModel = ecModel;\n  this.api = api;\n  /**\n   * @private\n   * @type {string}\n   */\n\n  this._brushType;\n  /**\n   * @private\n   * @type {string}\n   */\n\n  this._brushMode;\n}\n\nBrush.defaultOption = {\n  show: true,\n  type: ['rect', 'polygon', 'lineX', 'lineY', 'keep', 'clear'],\n  icon: {\n    rect: 'M7.3,34.7 M0.4,10V-0.2h9.8 M89.6,10V-0.2h-9.8 M0.4,60v10.2h9.8 M89.6,60v10.2h-9.8 M12.3,22.4V10.5h13.1 M33.6,10.5h7.8 M49.1,10.5h7.8 M77.5,22.4V10.5h-13 M12.3,31.1v8.2 M77.7,31.1v8.2 M12.3,47.6v11.9h13.1 M33.6,59.5h7.6 M49.1,59.5 h7.7 M77.5,47.6v11.9h-13',\n    // jshint ignore:line\n    polygon: 'M55.2,34.9c1.7,0,3.1,1.4,3.1,3.1s-1.4,3.1-3.1,3.1 s-3.1-1.4-3.1-3.1S53.5,34.9,55.2,34.9z M50.4,51c1.7,0,3.1,1.4,3.1,3.1c0,1.7-1.4,3.1-3.1,3.1c-1.7,0-3.1-1.4-3.1-3.1 C47.3,52.4,48.7,51,50.4,51z M55.6,37.1l1.5-7.8 M60.1,13.5l1.6-8.7l-7.8,4 M59,19l-1,5.3 M24,16.1l6.4,4.9l6.4-3.3 M48.5,11.6 l-5.9,3.1 M19.1,12.8L9.7,5.1l1.1,7.7 M13.4,29.8l1,7.3l6.6,1.6 M11.6,18.4l1,6.1 M32.8,41.9 M26.6,40.4 M27.3,40.2l6.1,1.6 M49.9,52.1l-5.6-7.6l-4.9-1.2',\n    // jshint ignore:line\n    lineX: 'M15.2,30 M19.7,15.6V1.9H29 M34.8,1.9H40.4 M55.3,15.6V1.9H45.9 M19.7,44.4V58.1H29 M34.8,58.1H40.4 M55.3,44.4 V58.1H45.9 M12.5,20.3l-9.4,9.6l9.6,9.8 M3.1,29.9h16.5 M62.5,20.3l9.4,9.6L62.3,39.7 M71.9,29.9H55.4',\n    // jshint ignore:line\n    lineY: 'M38.8,7.7 M52.7,12h13.2v9 M65.9,26.6V32 M52.7,46.3h13.2v-9 M24.9,12H11.8v9 M11.8,26.6V32 M24.9,46.3H11.8v-9 M48.2,5.1l-9.3-9l-9.4,9.2 M38.9-3.9V12 M48.2,53.3l-9.3,9l-9.4-9.2 M38.9,62.3V46.4',\n    // jshint ignore:line\n    keep: 'M4,10.5V1h10.3 M20.7,1h6.1 M33,1h6.1 M55.4,10.5V1H45.2 M4,17.3v6.6 M55.6,17.3v6.6 M4,30.5V40h10.3 M20.7,40 h6.1 M33,40h6.1 M55.4,30.5V40H45.2 M21,18.9h62.9v48.6H21V18.9z',\n    // jshint ignore:line\n    clear: 'M22,14.7l30.9,31 M52.9,14.7L22,45.7 M4.7,16.8V4.2h13.1 M26,4.2h7.8 M41.6,4.2h7.8 M70.3,16.8V4.2H57.2 M4.7,25.9v8.6 M70.3,25.9v8.6 M4.7,43.2v12.6h13.1 M26,55.8h7.8 M41.6,55.8h7.8 M70.3,43.2v12.6H57.2' // jshint ignore:line\n\n  },\n  // `rect`, `polygon`, `lineX`, `lineY`, `keep`, `clear`\n  title: zrUtil.clone(brushLang.title)\n};\nvar proto = Brush.prototype; // proto.updateLayout = function (featureModel, ecModel, api) {\n\nproto.render = proto.updateView = function (featureModel, ecModel, api) {\n  var brushType;\n  var brushMode;\n  var isBrushed;\n  ecModel.eachComponent({\n    mainType: 'brush'\n  }, function (brushModel) {\n    brushType = brushModel.brushType;\n    brushMode = brushModel.brushOption.brushMode || 'single';\n    isBrushed |= brushModel.areas.length;\n  });\n  this._brushType = brushType;\n  this._brushMode = brushMode;\n  zrUtil.each(featureModel.get('type', true), function (type) {\n    featureModel.setIconStatus(type, (type === 'keep' ? brushMode === 'multiple' : type === 'clear' ? isBrushed : type === brushType) ? 'emphasis' : 'normal');\n  });\n};\n\nproto.getIcons = function () {\n  var model = this.model;\n  var availableIcons = model.get('icon', true);\n  var icons = {};\n  zrUtil.each(model.get('type', true), function (type) {\n    if (availableIcons[type]) {\n      icons[type] = availableIcons[type];\n    }\n  });\n  return icons;\n};\n\nproto.onclick = function (ecModel, api, type) {\n  var brushType = this._brushType;\n  var brushMode = this._brushMode;\n\n  if (type === 'clear') {\n    // Trigger parallel action firstly\n    api.dispatchAction({\n      type: 'axisAreaSelect',\n      intervals: []\n    });\n    api.dispatchAction({\n      type: 'brush',\n      command: 'clear',\n      // Clear all areas of all brush components.\n      areas: []\n    });\n  } else {\n    api.dispatchAction({\n      type: 'takeGlobalCursor',\n      key: 'brush',\n      brushOption: {\n        brushType: type === 'keep' ? brushType : brushType === type ? false : type,\n        brushMode: type === 'keep' ? brushMode === 'multiple' ? 'single' : 'multiple' : brushMode\n      }\n    });\n  }\n};\n\nfeatureManager.register('brush', Brush);\nvar _default = Brush;\nmodule.exports = _default;","var echarts = require(\"../../../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar eventTool = require(\"zrender/lib/core/event\");\n\nvar lang = require(\"../../../lang\");\n\nvar featureManager = require(\"../featureManager\");\n\nvar dataViewLang = lang.toolbox.dataView;\nvar BLOCK_SPLITER = new Array(60).join('-');\nvar ITEM_SPLITER = '\\t';\n/**\n * Group series into two types\n *  1. on category axis, like line, bar\n *  2. others, like scatter, pie\n * @param {module:echarts/model/Global} ecModel\n * @return {Object}\n * @inner\n */\n\nfunction groupSeries(ecModel) {\n  var seriesGroupByCategoryAxis = {};\n  var otherSeries = [];\n  var meta = [];\n  ecModel.eachRawSeries(function (seriesModel) {\n    var coordSys = seriesModel.coordinateSystem;\n\n    if (coordSys && (coordSys.type === 'cartesian2d' || coordSys.type === 'polar')) {\n      var baseAxis = coordSys.getBaseAxis();\n\n      if (baseAxis.type === 'category') {\n        var key = baseAxis.dim + '_' + baseAxis.index;\n\n        if (!seriesGroupByCategoryAxis[key]) {\n          seriesGroupByCategoryAxis[key] = {\n            categoryAxis: baseAxis,\n            valueAxis: coordSys.getOtherAxis(baseAxis),\n            series: []\n          };\n          meta.push({\n            axisDim: baseAxis.dim,\n            axisIndex: baseAxis.index\n          });\n        }\n\n        seriesGroupByCategoryAxis[key].series.push(seriesModel);\n      } else {\n        otherSeries.push(seriesModel);\n      }\n    } else {\n      otherSeries.push(seriesModel);\n    }\n  });\n  return {\n    seriesGroupByCategoryAxis: seriesGroupByCategoryAxis,\n    other: otherSeries,\n    meta: meta\n  };\n}\n/**\n * Assemble content of series on cateogory axis\n * @param {Array.<module:echarts/model/Series>} series\n * @return {string}\n * @inner\n */\n\n\nfunction assembleSeriesWithCategoryAxis(series) {\n  var tables = [];\n  zrUtil.each(series, function (group, key) {\n    var categoryAxis = group.categoryAxis;\n    var valueAxis = group.valueAxis;\n    var valueAxisDim = valueAxis.dim;\n    var headers = [' '].concat(zrUtil.map(group.series, function (series) {\n      return series.name;\n    }));\n    var columns = [categoryAxis.model.getCategories()];\n    zrUtil.each(group.series, function (series) {\n      columns.push(series.getRawData().mapArray(valueAxisDim, function (val) {\n        return val;\n      }));\n    }); // Assemble table content\n\n    var lines = [headers.join(ITEM_SPLITER)];\n\n    for (var i = 0; i < columns[0].length; i++) {\n      var items = [];\n\n      for (var j = 0; j < columns.length; j++) {\n        items.push(columns[j][i]);\n      }\n\n      lines.push(items.join(ITEM_SPLITER));\n    }\n\n    tables.push(lines.join('\\n'));\n  });\n  return tables.join('\\n\\n' + BLOCK_SPLITER + '\\n\\n');\n}\n/**\n * Assemble content of other series\n * @param {Array.<module:echarts/model/Series>} series\n * @return {string}\n * @inner\n */\n\n\nfunction assembleOtherSeries(series) {\n  return zrUtil.map(series, function (series) {\n    var data = series.getRawData();\n    var lines = [series.name];\n    var vals = [];\n    data.each(data.dimensions, function () {\n      var argLen = arguments.length;\n      var dataIndex = arguments[argLen - 1];\n      var name = data.getName(dataIndex);\n\n      for (var i = 0; i < argLen - 1; i++) {\n        vals[i] = arguments[i];\n      }\n\n      lines.push((name ? name + ITEM_SPLITER : '') + vals.join(ITEM_SPLITER));\n    });\n    return lines.join('\\n');\n  }).join('\\n\\n' + BLOCK_SPLITER + '\\n\\n');\n}\n/**\n * @param {module:echarts/model/Global}\n * @return {Object}\n * @inner\n */\n\n\nfunction getContentFromModel(ecModel) {\n  var result = groupSeries(ecModel);\n  return {\n    value: zrUtil.filter([assembleSeriesWithCategoryAxis(result.seriesGroupByCategoryAxis), assembleOtherSeries(result.other)], function (str) {\n      return str.replace(/[\\n\\t\\s]/g, '');\n    }).join('\\n\\n' + BLOCK_SPLITER + '\\n\\n'),\n    meta: result.meta\n  };\n}\n\nfunction trim(str) {\n  return str.replace(/^\\s\\s*/, '').replace(/\\s\\s*$/, '');\n}\n/**\n * If a block is tsv format\n */\n\n\nfunction isTSVFormat(block) {\n  // Simple method to find out if a block is tsv format\n  var firstLine = block.slice(0, block.indexOf('\\n'));\n\n  if (firstLine.indexOf(ITEM_SPLITER) >= 0) {\n    return true;\n  }\n}\n\nvar itemSplitRegex = new RegExp('[' + ITEM_SPLITER + ']+', 'g');\n/**\n * @param {string} tsv\n * @return {Object}\n */\n\nfunction parseTSVContents(tsv) {\n  var tsvLines = tsv.split(/\\n+/g);\n  var headers = trim(tsvLines.shift()).split(itemSplitRegex);\n  var categories = [];\n  var series = zrUtil.map(headers, function (header) {\n    return {\n      name: header,\n      data: []\n    };\n  });\n\n  for (var i = 0; i < tsvLines.length; i++) {\n    var items = trim(tsvLines[i]).split(itemSplitRegex);\n    categories.push(items.shift());\n\n    for (var j = 0; j < items.length; j++) {\n      series[j] && (series[j].data[i] = items[j]);\n    }\n  }\n\n  return {\n    series: series,\n    categories: categories\n  };\n}\n/**\n * @param {string} str\n * @return {Array.<Object>}\n * @inner\n */\n\n\nfunction parseListContents(str) {\n  var lines = str.split(/\\n+/g);\n  var seriesName = trim(lines.shift());\n  var data = [];\n\n  for (var i = 0; i < lines.length; i++) {\n    var items = trim(lines[i]).split(itemSplitRegex);\n    var name = '';\n    var value;\n    var hasName = false;\n\n    if (isNaN(items[0])) {\n      // First item is name\n      hasName = true;\n      name = items[0];\n      items = items.slice(1);\n      data[i] = {\n        name: name,\n        value: []\n      };\n      value = data[i].value;\n    } else {\n      value = data[i] = [];\n    }\n\n    for (var j = 0; j < items.length; j++) {\n      value.push(+items[j]);\n    }\n\n    if (value.length === 1) {\n      hasName ? data[i].value = value[0] : data[i] = value[0];\n    }\n  }\n\n  return {\n    name: seriesName,\n    data: data\n  };\n}\n/**\n * @param {string} str\n * @param {Array.<Object>} blockMetaList\n * @return {Object}\n * @inner\n */\n\n\nfunction parseContents(str, blockMetaList) {\n  var blocks = str.split(new RegExp('\\n*' + BLOCK_SPLITER + '\\n*', 'g'));\n  var newOption = {\n    series: []\n  };\n  zrUtil.each(blocks, function (block, idx) {\n    if (isTSVFormat(block)) {\n      var result = parseTSVContents(block);\n      var blockMeta = blockMetaList[idx];\n      var axisKey = blockMeta.axisDim + 'Axis';\n\n      if (blockMeta) {\n        newOption[axisKey] = newOption[axisKey] || [];\n        newOption[axisKey][blockMeta.axisIndex] = {\n          data: result.categories\n        };\n        newOption.series = newOption.series.concat(result.series);\n      }\n    } else {\n      var result = parseListContents(block);\n      newOption.series.push(result);\n    }\n  });\n  return newOption;\n}\n/**\n * @alias {module:echarts/component/toolbox/feature/DataView}\n * @constructor\n * @param {module:echarts/model/Model} model\n */\n\n\nfunction DataView(model) {\n  this._dom = null;\n  this.model = model;\n}\n\nDataView.defaultOption = {\n  show: true,\n  readOnly: false,\n  optionToContent: null,\n  contentToOption: null,\n  icon: 'M17.5,17.3H33 M17.5,17.3H33 M45.4,29.5h-28 M11.5,2v56H51V14.8L38.4,2H11.5z M38.4,2.2v12.7H51 M45.4,41.7h-28',\n  title: zrUtil.clone(dataViewLang.title),\n  lang: zrUtil.clone(dataViewLang.lang),\n  backgroundColor: '#fff',\n  textColor: '#000',\n  textareaColor: '#fff',\n  textareaBorderColor: '#333',\n  buttonColor: '#c23531',\n  buttonTextColor: '#fff'\n};\n\nDataView.prototype.onclick = function (ecModel, api) {\n  var container = api.getDom();\n  var model = this.model;\n\n  if (this._dom) {\n    container.removeChild(this._dom);\n  }\n\n  var root = document.createElement('div');\n  root.style.cssText = 'position:absolute;left:5px;top:5px;bottom:5px;right:5px;';\n  root.style.backgroundColor = model.get('backgroundColor') || '#fff'; // Create elements\n\n  var header = document.createElement('h4');\n  var lang = model.get('lang') || [];\n  header.innerHTML = lang[0] || model.get('title');\n  header.style.cssText = 'margin: 10px 20px;';\n  header.style.color = model.get('textColor');\n  var viewMain = document.createElement('div');\n  var textarea = document.createElement('textarea');\n  viewMain.style.cssText = 'display:block;width:100%;overflow:auto;';\n  var optionToContent = model.get('optionToContent');\n  var contentToOption = model.get('contentToOption');\n  var result = getContentFromModel(ecModel);\n\n  if (typeof optionToContent === 'function') {\n    var htmlOrDom = optionToContent(api.getOption());\n\n    if (typeof htmlOrDom === 'string') {\n      viewMain.innerHTML = htmlOrDom;\n    } else if (zrUtil.isDom(htmlOrDom)) {\n      viewMain.appendChild(htmlOrDom);\n    }\n  } else {\n    // Use default textarea\n    viewMain.appendChild(textarea);\n    textarea.readOnly = model.get('readOnly');\n    textarea.style.cssText = 'width:100%;height:100%;font-family:monospace;font-size:14px;line-height:1.6rem;';\n    textarea.style.color = model.get('textColor');\n    textarea.style.borderColor = model.get('textareaBorderColor');\n    textarea.style.backgroundColor = model.get('textareaColor');\n    textarea.value = result.value;\n  }\n\n  var blockMetaList = result.meta;\n  var buttonContainer = document.createElement('div');\n  buttonContainer.style.cssText = 'position:absolute;bottom:0;left:0;right:0;';\n  var buttonStyle = 'float:right;margin-right:20px;border:none;' + 'cursor:pointer;padding:2px 5px;font-size:12px;border-radius:3px';\n  var closeButton = document.createElement('div');\n  var refreshButton = document.createElement('div');\n  buttonStyle += ';background-color:' + model.get('buttonColor');\n  buttonStyle += ';color:' + model.get('buttonTextColor');\n  var self = this;\n\n  function close() {\n    container.removeChild(root);\n    self._dom = null;\n  }\n\n  eventTool.addEventListener(closeButton, 'click', close);\n  eventTool.addEventListener(refreshButton, 'click', function () {\n    var newOption;\n\n    try {\n      if (typeof contentToOption === 'function') {\n        newOption = contentToOption(viewMain, api.getOption());\n      } else {\n        newOption = parseContents(textarea.value, blockMetaList);\n      }\n    } catch (e) {\n      close();\n      throw new Error('Data view format error ' + e);\n    }\n\n    if (newOption) {\n      api.dispatchAction({\n        type: 'changeDataView',\n        newOption: newOption\n      });\n    }\n\n    close();\n  });\n  closeButton.innerHTML = lang[1];\n  refreshButton.innerHTML = lang[2];\n  refreshButton.style.cssText = buttonStyle;\n  closeButton.style.cssText = buttonStyle;\n  !model.get('readOnly') && buttonContainer.appendChild(refreshButton);\n  buttonContainer.appendChild(closeButton); // http://stackoverflow.com/questions/6637341/use-tab-to-indent-in-textarea\n\n  eventTool.addEventListener(textarea, 'keydown', function (e) {\n    if ((e.keyCode || e.which) === 9) {\n      // get caret position/selection\n      var val = this.value;\n      var start = this.selectionStart;\n      var end = this.selectionEnd; // set textarea value to: text before caret + tab + text after caret\n\n      this.value = val.substring(0, start) + ITEM_SPLITER + val.substring(end); // put caret at right position again\n\n      this.selectionStart = this.selectionEnd = start + 1; // prevent the focus lose\n\n      eventTool.stop(e);\n    }\n  });\n  root.appendChild(header);\n  root.appendChild(viewMain);\n  root.appendChild(buttonContainer);\n  viewMain.style.height = container.clientHeight - 80 + 'px';\n  container.appendChild(root);\n  this._dom = root;\n};\n\nDataView.prototype.remove = function (ecModel, api) {\n  this._dom && api.getDom().removeChild(this._dom);\n};\n\nDataView.prototype.dispose = function (ecModel, api) {\n  this.remove(ecModel, api);\n};\n/**\n * @inner\n */\n\n\nfunction tryMergeDataOption(newData, originalData) {\n  return zrUtil.map(newData, function (newVal, idx) {\n    var original = originalData && originalData[idx];\n\n    if (zrUtil.isObject(original) && !zrUtil.isArray(original)) {\n      if (zrUtil.isObject(newVal) && !zrUtil.isArray(newVal)) {\n        newVal = newVal.value;\n      } // Original data has option\n\n\n      return zrUtil.defaults({\n        value: newVal\n      }, original);\n    } else {\n      return newVal;\n    }\n  });\n}\n\nfeatureManager.register('dataView', DataView);\necharts.registerAction({\n  type: 'changeDataView',\n  event: 'dataViewChanged',\n  update: 'prepareAndUpdate'\n}, function (payload, ecModel) {\n  var newSeriesOptList = [];\n  zrUtil.each(payload.newOption.series, function (seriesOpt) {\n    var seriesModel = ecModel.getSeriesByName(seriesOpt.name)[0];\n\n    if (!seriesModel) {\n      // New created series\n      // Geuss the series type\n      newSeriesOptList.push(zrUtil.extend({\n        // Default is scatter\n        type: 'scatter'\n      }, seriesOpt));\n    } else {\n      var originalData = seriesModel.get('data');\n      newSeriesOptList.push({\n        name: seriesOpt.name,\n        data: tryMergeDataOption(seriesOpt.data, originalData)\n      });\n    }\n  });\n  ecModel.mergeOption(zrUtil.defaults({\n    series: newSeriesOptList\n  }, payload.newOption));\n});\nvar _default = DataView;\nmodule.exports = _default;","var echarts = require(\"../../../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar BrushController = require(\"../../helper/BrushController\");\n\nvar BrushTargetManager = require(\"../../helper/BrushTargetManager\");\n\nvar history = require(\"../../dataZoom/history\");\n\nvar sliderMove = require(\"../../helper/sliderMove\");\n\nvar lang = require(\"../../../lang\");\n\nvar featureManager = require(\"../featureManager\");\n\nrequire(\"../../dataZoomSelect\");\n\n// Use dataZoomSelect\nvar dataZoomLang = lang.toolbox.dataZoom;\nvar each = zrUtil.each; // Spectial component id start with \\0ec\\0, see echarts/model/Global.js~hasInnerId\n\nvar DATA_ZOOM_ID_BASE = '\\0_ec_\\0toolbox-dataZoom_';\n\nfunction DataZoom(model, ecModel, api) {\n  /**\n   * @private\n   * @type {module:echarts/component/helper/BrushController}\n   */\n  (this._brushController = new BrushController(api.getZr())).on('brush', zrUtil.bind(this._onBrush, this)).mount();\n  /**\n   * @private\n   * @type {boolean}\n   */\n\n  this._isZoomActive;\n}\n\nDataZoom.defaultOption = {\n  show: true,\n  // Icon group\n  icon: {\n    zoom: 'M0,13.5h26.9 M13.5,26.9V0 M32.1,13.5H58V58H13.5 V32.1',\n    back: 'M22,1.4L9.9,13.5l12.3,12.3 M10.3,13.5H54.9v44.6 H10.3v-26'\n  },\n  // `zoom`, `back`\n  title: zrUtil.clone(dataZoomLang.title)\n};\nvar proto = DataZoom.prototype;\n\nproto.render = function (featureModel, ecModel, api, payload) {\n  this.model = featureModel;\n  this.ecModel = ecModel;\n  this.api = api;\n  updateZoomBtnStatus(featureModel, ecModel, this, payload, api);\n  updateBackBtnStatus(featureModel, ecModel);\n};\n\nproto.onclick = function (ecModel, api, type) {\n  handlers[type].call(this);\n};\n\nproto.remove = function (ecModel, api) {\n  this._brushController.unmount();\n};\n\nproto.dispose = function (ecModel, api) {\n  this._brushController.dispose();\n};\n/**\n * @private\n */\n\n\nvar handlers = {\n  zoom: function () {\n    var nextActive = !this._isZoomActive;\n    this.api.dispatchAction({\n      type: 'takeGlobalCursor',\n      key: 'dataZoomSelect',\n      dataZoomSelectActive: nextActive\n    });\n  },\n  back: function () {\n    this._dispatchZoomAction(history.pop(this.ecModel));\n  }\n};\n/**\n * @private\n */\n\nproto._onBrush = function (areas, opt) {\n  if (!opt.isEnd || !areas.length) {\n    return;\n  }\n\n  var snapshot = {};\n  var ecModel = this.ecModel;\n\n  this._brushController.updateCovers([]); // remove cover\n\n\n  var brushTargetManager = new BrushTargetManager(retrieveAxisSetting(this.model.option), ecModel, {\n    include: ['grid']\n  });\n  brushTargetManager.matchOutputRanges(areas, ecModel, function (area, coordRange, coordSys) {\n    if (coordSys.type !== 'cartesian2d') {\n      return;\n    }\n\n    var brushType = area.brushType;\n\n    if (brushType === 'rect') {\n      setBatch('x', coordSys, coordRange[0]);\n      setBatch('y', coordSys, coordRange[1]);\n    } else {\n      setBatch({\n        lineX: 'x',\n        lineY: 'y'\n      }[brushType], coordSys, coordRange);\n    }\n  });\n  history.push(ecModel, snapshot);\n\n  this._dispatchZoomAction(snapshot);\n\n  function setBatch(dimName, coordSys, minMax) {\n    var axis = coordSys.getAxis(dimName);\n    var axisModel = axis.model;\n    var dataZoomModel = findDataZoom(dimName, axisModel, ecModel); // Restrict range.\n\n    var minMaxSpan = dataZoomModel.findRepresentativeAxisProxy(axisModel).getMinMaxSpan();\n\n    if (minMaxSpan.minValueSpan != null || minMaxSpan.maxValueSpan != null) {\n      minMax = sliderMove(0, minMax.slice(), axis.scale.getExtent(), 0, minMaxSpan.minValueSpan, minMaxSpan.maxValueSpan);\n    }\n\n    dataZoomModel && (snapshot[dataZoomModel.id] = {\n      dataZoomId: dataZoomModel.id,\n      startValue: minMax[0],\n      endValue: minMax[1]\n    });\n  }\n\n  function findDataZoom(dimName, axisModel, ecModel) {\n    var found;\n    ecModel.eachComponent({\n      mainType: 'dataZoom',\n      subType: 'select'\n    }, function (dzModel) {\n      var has = dzModel.getAxisModel(dimName, axisModel.componentIndex);\n      has && (found = dzModel);\n    });\n    return found;\n  }\n};\n/**\n * @private\n */\n\n\nproto._dispatchZoomAction = function (snapshot) {\n  var batch = []; // Convert from hash map to array.\n\n  each(snapshot, function (batchItem, dataZoomId) {\n    batch.push(zrUtil.clone(batchItem));\n  });\n  batch.length && this.api.dispatchAction({\n    type: 'dataZoom',\n    from: this.uid,\n    batch: batch\n  });\n};\n\nfunction retrieveAxisSetting(option) {\n  var setting = {}; // Compatible with previous setting: null => all axis, false => no axis.\n\n  zrUtil.each(['xAxisIndex', 'yAxisIndex'], function (name) {\n    setting[name] = option[name];\n    setting[name] == null && (setting[name] = 'all');\n    (setting[name] === false || setting[name] === 'none') && (setting[name] = []);\n  });\n  return setting;\n}\n\nfunction updateBackBtnStatus(featureModel, ecModel) {\n  featureModel.setIconStatus('back', history.count(ecModel) > 1 ? 'emphasis' : 'normal');\n}\n\nfunction updateZoomBtnStatus(featureModel, ecModel, view, payload, api) {\n  var zoomActive = view._isZoomActive;\n\n  if (payload && payload.type === 'takeGlobalCursor') {\n    zoomActive = payload.key === 'dataZoomSelect' ? payload.dataZoomSelectActive : false;\n  }\n\n  view._isZoomActive = zoomActive;\n  featureModel.setIconStatus('zoom', zoomActive ? 'emphasis' : 'normal');\n  var brushTargetManager = new BrushTargetManager(retrieveAxisSetting(featureModel.option), ecModel, {\n    include: ['grid']\n  });\n\n  view._brushController.setPanels(brushTargetManager.makePanelOpts(api, function (targetInfo) {\n    return targetInfo.xAxisDeclared && !targetInfo.yAxisDeclared ? 'lineX' : !targetInfo.xAxisDeclared && targetInfo.yAxisDeclared ? 'lineY' : 'rect';\n  })).enableBrush(zoomActive ? {\n    brushType: 'auto',\n    brushStyle: {\n      // FIXME user customized?\n      lineWidth: 0,\n      fill: 'rgba(0,0,0,0.2)'\n    }\n  } : false);\n}\n\nfeatureManager.register('dataZoom', DataZoom); // Create special dataZoom option for select\n\necharts.registerPreprocessor(function (option) {\n  if (!option) {\n    return;\n  }\n\n  var dataZoomOpts = option.dataZoom || (option.dataZoom = []);\n\n  if (!zrUtil.isArray(dataZoomOpts)) {\n    option.dataZoom = dataZoomOpts = [dataZoomOpts];\n  }\n\n  var toolboxOpt = option.toolbox;\n\n  if (toolboxOpt) {\n    // Assume there is only one toolbox\n    if (zrUtil.isArray(toolboxOpt)) {\n      toolboxOpt = toolboxOpt[0];\n    }\n\n    if (toolboxOpt && toolboxOpt.feature) {\n      var dataZoomOpt = toolboxOpt.feature.dataZoom;\n      addForAxis('xAxis', dataZoomOpt);\n      addForAxis('yAxis', dataZoomOpt);\n    }\n  }\n\n  function addForAxis(axisName, dataZoomOpt) {\n    if (!dataZoomOpt) {\n      return;\n    } // Try not to modify model, because it is not merged yet.\n\n\n    var axisIndicesName = axisName + 'Index';\n    var givenAxisIndices = dataZoomOpt[axisIndicesName];\n\n    if (givenAxisIndices != null && givenAxisIndices != 'all' && !zrUtil.isArray(givenAxisIndices)) {\n      givenAxisIndices = givenAxisIndices === false || givenAxisIndices === 'none' ? [] : [givenAxisIndices];\n    }\n\n    forEachComponent(axisName, function (axisOpt, axisIndex) {\n      if (givenAxisIndices != null && givenAxisIndices != 'all' && zrUtil.indexOf(givenAxisIndices, axisIndex) === -1) {\n        return;\n      }\n\n      var newOpt = {\n        type: 'select',\n        $fromToolbox: true,\n        // Id for merge mapping.\n        id: DATA_ZOOM_ID_BASE + axisName + axisIndex\n      }; // FIXME\n      // Only support one axis now.\n\n      newOpt[axisIndicesName] = axisIndex;\n      dataZoomOpts.push(newOpt);\n    });\n  }\n\n  function forEachComponent(mainType, cb) {\n    var opts = option[mainType];\n\n    if (!zrUtil.isArray(opts)) {\n      opts = opts ? [opts] : [];\n    }\n\n    each(opts, cb);\n  }\n});\nvar _default = DataZoom;\nmodule.exports = _default;","var echarts = require(\"../../../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar lang = require(\"../../../lang\");\n\nvar featureManager = require(\"../featureManager\");\n\nvar magicTypeLang = lang.toolbox.magicType;\n\nfunction MagicType(model) {\n  this.model = model;\n}\n\nMagicType.defaultOption = {\n  show: true,\n  type: [],\n  // Icon group\n  icon: {\n    line: 'M4.1,28.9h7.1l9.3-22l7.4,38l9.7-19.7l3,12.8h14.9M4.1,58h51.4',\n    bar: 'M6.7,22.9h10V48h-10V22.9zM24.9,13h10v35h-10V13zM43.2,2h10v46h-10V2zM3.1,58h53.7',\n    stack: 'M8.2,38.4l-8.4,4.1l30.6,15.3L60,42.5l-8.1-4.1l-21.5,11L8.2,38.4z M51.9,30l-8.1,4.2l-13.4,6.9l-13.9-6.9L8.2,30l-8.4,4.2l8.4,4.2l22.2,11l21.5-11l8.1-4.2L51.9,30z M51.9,21.7l-8.1,4.2L35.7,30l-5.3,2.8L24.9,30l-8.4-4.1l-8.3-4.2l-8.4,4.2L8.2,30l8.3,4.2l13.9,6.9l13.4-6.9l8.1-4.2l8.1-4.1L51.9,21.7zM30.4,2.2L-0.2,17.5l8.4,4.1l8.3,4.2l8.4,4.2l5.5,2.7l5.3-2.7l8.1-4.2l8.1-4.2l8.1-4.1L30.4,2.2z',\n    // jshint ignore:line\n    tiled: 'M2.3,2.2h22.8V25H2.3V2.2z M35,2.2h22.8V25H35V2.2zM2.3,35h22.8v22.8H2.3V35z M35,35h22.8v22.8H35V35z'\n  },\n  // `line`, `bar`, `stack`, `tiled`\n  title: zrUtil.clone(magicTypeLang.title),\n  option: {},\n  seriesIndex: {}\n};\nvar proto = MagicType.prototype;\n\nproto.getIcons = function () {\n  var model = this.model;\n  var availableIcons = model.get('icon');\n  var icons = {};\n  zrUtil.each(model.get('type'), function (type) {\n    if (availableIcons[type]) {\n      icons[type] = availableIcons[type];\n    }\n  });\n  return icons;\n};\n\nvar seriesOptGenreator = {\n  'line': function (seriesType, seriesId, seriesModel, model) {\n    if (seriesType === 'bar') {\n      return zrUtil.merge({\n        id: seriesId,\n        type: 'line',\n        // Preserve data related option\n        data: seriesModel.get('data'),\n        stack: seriesModel.get('stack'),\n        markPoint: seriesModel.get('markPoint'),\n        markLine: seriesModel.get('markLine')\n      }, model.get('option.line') || {}, true);\n    }\n  },\n  'bar': function (seriesType, seriesId, seriesModel, model) {\n    if (seriesType === 'line') {\n      return zrUtil.merge({\n        id: seriesId,\n        type: 'bar',\n        // Preserve data related option\n        data: seriesModel.get('data'),\n        stack: seriesModel.get('stack'),\n        markPoint: seriesModel.get('markPoint'),\n        markLine: seriesModel.get('markLine')\n      }, model.get('option.bar') || {}, true);\n    }\n  },\n  'stack': function (seriesType, seriesId, seriesModel, model) {\n    if (seriesType === 'line' || seriesType === 'bar') {\n      return zrUtil.merge({\n        id: seriesId,\n        stack: '__ec_magicType_stack__'\n      }, model.get('option.stack') || {}, true);\n    }\n  },\n  'tiled': function (seriesType, seriesId, seriesModel, model) {\n    if (seriesType === 'line' || seriesType === 'bar') {\n      return zrUtil.merge({\n        id: seriesId,\n        stack: ''\n      }, model.get('option.tiled') || {}, true);\n    }\n  }\n};\nvar radioTypes = [['line', 'bar'], ['stack', 'tiled']];\n\nproto.onclick = function (ecModel, api, type) {\n  var model = this.model;\n  var seriesIndex = model.get('seriesIndex.' + type); // Not supported magicType\n\n  if (!seriesOptGenreator[type]) {\n    return;\n  }\n\n  var newOption = {\n    series: []\n  };\n\n  var generateNewSeriesTypes = function (seriesModel) {\n    var seriesType = seriesModel.subType;\n    var seriesId = seriesModel.id;\n    var newSeriesOpt = seriesOptGenreator[type](seriesType, seriesId, seriesModel, model);\n\n    if (newSeriesOpt) {\n      // PENDING If merge original option?\n      zrUtil.defaults(newSeriesOpt, seriesModel.option);\n      newOption.series.push(newSeriesOpt);\n    } // Modify boundaryGap\n\n\n    var coordSys = seriesModel.coordinateSystem;\n\n    if (coordSys && coordSys.type === 'cartesian2d' && (type === 'line' || type === 'bar')) {\n      var categoryAxis = coordSys.getAxesByScale('ordinal')[0];\n\n      if (categoryAxis) {\n        var axisDim = categoryAxis.dim;\n        var axisType = axisDim + 'Axis';\n        var axisModel = ecModel.queryComponents({\n          mainType: axisType,\n          index: seriesModel.get(name + 'Index'),\n          id: seriesModel.get(name + 'Id')\n        })[0];\n        var axisIndex = axisModel.componentIndex;\n        newOption[axisType] = newOption[axisType] || [];\n\n        for (var i = 0; i <= axisIndex; i++) {\n          newOption[axisType][axisIndex] = newOption[axisType][axisIndex] || {};\n        }\n\n        newOption[axisType][axisIndex].boundaryGap = type === 'bar' ? true : false;\n      }\n    }\n  };\n\n  zrUtil.each(radioTypes, function (radio) {\n    if (zrUtil.indexOf(radio, type) >= 0) {\n      zrUtil.each(radio, function (item) {\n        model.setIconStatus(item, 'normal');\n      });\n    }\n  });\n  model.setIconStatus(type, 'emphasis');\n  ecModel.eachComponent({\n    mainType: 'series',\n    query: seriesIndex == null ? null : {\n      seriesIndex: seriesIndex\n    }\n  }, generateNewSeriesTypes);\n  api.dispatchAction({\n    type: 'changeMagicType',\n    currentType: type,\n    newOption: newOption\n  });\n};\n\necharts.registerAction({\n  type: 'changeMagicType',\n  event: 'magicTypeChanged',\n  update: 'prepareAndUpdate'\n}, function (payload, ecModel) {\n  ecModel.mergeOption(payload.newOption);\n});\nfeatureManager.register('magicType', MagicType);\nvar _default = MagicType;\nmodule.exports = _default;","var echarts = require(\"../../../echarts\");\n\nvar history = require(\"../../dataZoom/history\");\n\nvar lang = require(\"../../../lang\");\n\nvar featureManager = require(\"../featureManager\");\n\nvar restoreLang = lang.toolbox.restore;\n\nfunction Restore(model) {\n  this.model = model;\n}\n\nRestore.defaultOption = {\n  show: true,\n  icon: 'M3.8,33.4 M47,18.9h9.8V8.7 M56.3,20.1 C52.1,9,40.5,0.6,26.8,2.1C12.6,3.7,1.6,16.2,2.1,30.6 M13,41.1H3.1v10.2 M3.7,39.9c4.2,11.1,15.8,19.5,29.5,18 c14.2-1.6,25.2-14.1,24.7-28.5',\n  title: restoreLang.title\n};\nvar proto = Restore.prototype;\n\nproto.onclick = function (ecModel, api, type) {\n  history.clear(ecModel);\n  api.dispatchAction({\n    type: 'restore',\n    from: this.uid\n  });\n};\n\nfeatureManager.register('restore', Restore);\necharts.registerAction({\n  type: 'restore',\n  event: 'restore',\n  update: 'prepareAndUpdate'\n}, function (payload, ecModel) {\n  ecModel.resetOption('recreate');\n});\nvar _default = Restore;\nmodule.exports = _default;","var env = require(\"zrender/lib/core/env\");\n\nvar lang = require(\"../../../lang\");\n\nvar featureManager = require(\"../featureManager\");\n\nvar saveAsImageLang = lang.toolbox.saveAsImage;\n\nfunction SaveAsImage(model) {\n  this.model = model;\n}\n\nSaveAsImage.defaultOption = {\n  show: true,\n  icon: 'M4.7,22.9L29.3,45.5L54.7,23.4M4.6,43.6L4.6,58L53.8,58L53.8,43.6M29.2,45.1L29.2,0',\n  title: saveAsImageLang.title,\n  type: 'png',\n  // Default use option.backgroundColor\n  // backgroundColor: '#fff',\n  name: '',\n  excludeComponents: ['toolbox'],\n  pixelRatio: 1,\n  lang: saveAsImageLang.lang.slice()\n};\nSaveAsImage.prototype.unusable = !env.canvasSupported;\nvar proto = SaveAsImage.prototype;\n\nproto.onclick = function (ecModel, api) {\n  var model = this.model;\n  var title = model.get('name') || ecModel.get('title.0.text') || 'echarts';\n  var $a = document.createElement('a');\n  var type = model.get('type', true) || 'png';\n  $a.download = title + '.' + type;\n  $a.target = '_blank';\n  var url = api.getConnectedDataURL({\n    type: type,\n    backgroundColor: model.get('backgroundColor', true) || ecModel.get('backgroundColor') || '#fff',\n    excludeComponents: model.get('excludeComponents'),\n    pixelRatio: model.get('pixelRatio')\n  });\n  $a.href = url; // Chrome and Firefox\n\n  if (typeof MouseEvent === 'function' && !env.browser.ie && !env.browser.edge) {\n    var evt = new MouseEvent('click', {\n      view: window,\n      bubbles: true,\n      cancelable: false\n    });\n    $a.dispatchEvent(evt);\n  } // IE\n  else {\n      if (window.navigator.msSaveOrOpenBlob) {\n        var bstr = atob(url.split(',')[1]);\n        var n = bstr.length;\n        var u8arr = new Uint8Array(n);\n\n        while (n--) {\n          u8arr[n] = bstr.charCodeAt(n);\n        }\n\n        var blob = new Blob([u8arr]);\n        window.navigator.msSaveOrOpenBlob(blob, title + '.' + type);\n      } else {\n        var lang = model.get('lang');\n        var html = '' + '<body style=\"margin:0;\">' + '<img src=\"' + url + '\" style=\"max-width:100%;\" title=\"' + (lang && lang[0] || '') + '\" />' + '</body>';\n        var tab = window.open();\n        tab.document.write(html);\n      }\n    }\n};\n\nfeatureManager.register('saveAsImage', SaveAsImage);\nvar _default = SaveAsImage;\nmodule.exports = _default;","var features = {};\n\nfunction register(name, ctor) {\n  features[name] = ctor;\n}\n\nfunction get(name) {\n  return features[name];\n}\n\nexports.register = register;\nexports.get = get;","var echarts = require(\"../echarts\");\n\nrequire(\"./axisPointer\");\n\nrequire(\"./tooltip/TooltipModel\");\n\nrequire(\"./tooltip/TooltipView\");\n\n// FIXME Better way to pack data in graphic element\n\n/**\n * @action\n * @property {string} type\n * @property {number} seriesIndex\n * @property {number} dataIndex\n * @property {number} [x]\n * @property {number} [y]\n */\necharts.registerAction({\n  type: 'showTip',\n  event: 'showTip',\n  update: 'tooltip:manuallyShowTip'\n}, // noop\nfunction () {});\necharts.registerAction({\n  type: 'hideTip',\n  event: 'hideTip',\n  update: 'tooltip:manuallyHideTip'\n}, // noop\nfunction () {});","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar zrColor = require(\"zrender/lib/tool/color\");\n\nvar eventUtil = require(\"zrender/lib/core/event\");\n\nvar env = require(\"zrender/lib/core/env\");\n\nvar formatUtil = require(\"../../util/format\");\n\nvar each = zrUtil.each;\nvar toCamelCase = formatUtil.toCamelCase;\nvar vendors = ['', '-webkit-', '-moz-', '-o-'];\nvar gCssText = 'position:absolute;display:block;border-style:solid;white-space:nowrap;z-index:9999999;';\n/**\n * @param {number} duration\n * @return {string}\n * @inner\n */\n\nfunction assembleTransition(duration) {\n  var transitionCurve = 'cubic-bezier(0.23, 1, 0.32, 1)';\n  var transitionText = 'left ' + duration + 's ' + transitionCurve + ',' + 'top ' + duration + 's ' + transitionCurve;\n  return zrUtil.map(vendors, function (vendorPrefix) {\n    return vendorPrefix + 'transition:' + transitionText;\n  }).join(';');\n}\n/**\n * @param {Object} textStyle\n * @return {string}\n * @inner\n */\n\n\nfunction assembleFont(textStyleModel) {\n  var cssText = [];\n  var fontSize = textStyleModel.get('fontSize');\n  var color = textStyleModel.getTextColor();\n  color && cssText.push('color:' + color);\n  cssText.push('font:' + textStyleModel.getFont());\n  fontSize && cssText.push('line-height:' + Math.round(fontSize * 3 / 2) + 'px');\n  each(['decoration', 'align'], function (name) {\n    var val = textStyleModel.get(name);\n    val && cssText.push('text-' + name + ':' + val);\n  });\n  return cssText.join(';');\n}\n/**\n * @param {Object} tooltipModel\n * @return {string}\n * @inner\n */\n\n\nfunction assembleCssText(tooltipModel) {\n  var cssText = [];\n  var transitionDuration = tooltipModel.get('transitionDuration');\n  var backgroundColor = tooltipModel.get('backgroundColor');\n  var textStyleModel = tooltipModel.getModel('textStyle');\n  var padding = tooltipModel.get('padding'); // Animation transition. Do not animate when transitionDuration is 0.\n\n  transitionDuration && cssText.push(assembleTransition(transitionDuration));\n\n  if (backgroundColor) {\n    if (env.canvasSupported) {\n      cssText.push('background-Color:' + backgroundColor);\n    } else {\n      // for ie\n      cssText.push('background-Color:#' + zrColor.toHex(backgroundColor));\n      cssText.push('filter:alpha(opacity=70)');\n    }\n  } // Border style\n\n\n  each(['width', 'color', 'radius'], function (name) {\n    var borderName = 'border-' + name;\n    var camelCase = toCamelCase(borderName);\n    var val = tooltipModel.get(camelCase);\n    val != null && cssText.push(borderName + ':' + val + (name === 'color' ? '' : 'px'));\n  }); // Text style\n\n  cssText.push(assembleFont(textStyleModel)); // Padding\n\n  if (padding != null) {\n    cssText.push('padding:' + formatUtil.normalizeCssArray(padding).join('px ') + 'px');\n  }\n\n  return cssText.join(';') + ';';\n}\n/**\n * @alias module:echarts/component/tooltip/TooltipContent\n * @constructor\n */\n\n\nfunction TooltipContent(container, api) {\n  if (env.wxa) {\n    return null;\n  }\n\n  var el = document.createElement('div');\n  var zr = this._zr = api.getZr();\n  this.el = el;\n  this._x = api.getWidth() / 2;\n  this._y = api.getHeight() / 2;\n  container.appendChild(el);\n  this._container = container;\n  this._show = false;\n  /**\n   * @private\n   */\n\n  this._hideTimeout;\n  var self = this;\n\n  el.onmouseenter = function () {\n    // clear the timeout in hideLater and keep showing tooltip\n    if (self._enterable) {\n      clearTimeout(self._hideTimeout);\n      self._show = true;\n    }\n\n    self._inContent = true;\n  };\n\n  el.onmousemove = function (e) {\n    e = e || window.event;\n\n    if (!self._enterable) {\n      // Try trigger zrender event to avoid mouse\n      // in and out shape too frequently\n      var handler = zr.handler;\n      eventUtil.normalizeEvent(container, e, true);\n      handler.dispatch('mousemove', e);\n    }\n  };\n\n  el.onmouseleave = function () {\n    if (self._enterable) {\n      if (self._show) {\n        self.hideLater(self._hideDelay);\n      }\n    }\n\n    self._inContent = false;\n  };\n}\n\nTooltipContent.prototype = {\n  constructor: TooltipContent,\n\n  /**\n   * @private\n   * @type {boolean}\n   */\n  _enterable: true,\n\n  /**\n   * Update when tooltip is rendered\n   */\n  update: function () {\n    // FIXME\n    // Move this logic to ec main?\n    var container = this._container;\n    var stl = container.currentStyle || document.defaultView.getComputedStyle(container);\n    var domStyle = container.style;\n\n    if (domStyle.position !== 'absolute' && stl.position !== 'absolute') {\n      domStyle.position = 'relative';\n    } // Hide the tooltip\n    // PENDING\n    // this.hide();\n\n  },\n  show: function (tooltipModel) {\n    clearTimeout(this._hideTimeout);\n    var el = this.el;\n    el.style.cssText = gCssText + assembleCssText(tooltipModel) // http://stackoverflow.com/questions/21125587/css3-transition-not-working-in-chrome-anymore\n    + ';left:' + this._x + 'px;top:' + this._y + 'px;' + (tooltipModel.get('extraCssText') || '');\n    el.style.display = el.innerHTML ? 'block' : 'none';\n    this._show = true;\n  },\n  setContent: function (content) {\n    this.el.innerHTML = content == null ? '' : content;\n  },\n  setEnterable: function (enterable) {\n    this._enterable = enterable;\n  },\n  getSize: function () {\n    var el = this.el;\n    return [el.clientWidth, el.clientHeight];\n  },\n  moveTo: function (x, y) {\n    // xy should be based on canvas root. But tooltipContent is\n    // the sibling of canvas root. So padding of ec container\n    // should be considered here.\n    var zr = this._zr;\n    var viewportRootOffset;\n\n    if (zr && zr.painter && (viewportRootOffset = zr.painter.getViewportRootOffset())) {\n      x += viewportRootOffset.offsetLeft;\n      y += viewportRootOffset.offsetTop;\n    }\n\n    var style = this.el.style;\n    style.left = x + 'px';\n    style.top = y + 'px';\n    this._x = x;\n    this._y = y;\n  },\n  hide: function () {\n    this.el.style.display = 'none';\n    this._show = false;\n  },\n  hideLater: function (time) {\n    if (this._show && !(this._inContent && this._enterable)) {\n      if (time) {\n        this._hideDelay = time; // Set show false to avoid invoke hideLater mutiple times\n\n        this._show = false;\n        this._hideTimeout = setTimeout(zrUtil.bind(this.hide, this), time);\n      } else {\n        this.hide();\n      }\n    }\n  },\n  isShow: function () {\n    return this._show;\n  }\n};\nvar _default = TooltipContent;\nmodule.exports = _default;","var echarts = require(\"../../echarts\");\n\nvar _default = echarts.extendComponentModel({\n  type: 'tooltip',\n  dependencies: ['axisPointer'],\n  defaultOption: {\n    zlevel: 0,\n    z: 8,\n    show: true,\n    // tooltip主体内容\n    showContent: true,\n    // 'trigger' only works on coordinate system.\n    // 'item' | 'axis' | 'none'\n    trigger: 'item',\n    // 'click' | 'mousemove' | 'none'\n    triggerOn: 'mousemove|click',\n    alwaysShowContent: false,\n    displayMode: 'single',\n    // 'single' | 'multipleByCoordSys'\n    // 位置 {Array} | {Function}\n    // position: null\n    // Consider triggered from axisPointer handle, verticalAlign should be 'middle'\n    // align: null,\n    // verticalAlign: null,\n    // 是否约束 content 在 viewRect 中。默认 false 是为了兼容以前版本。\n    confine: false,\n    // 内容格式器：{string}（Template） ¦ {Function}\n    // formatter: null\n    showDelay: 0,\n    // 隐藏延迟，单位ms\n    hideDelay: 100,\n    // 动画变换时间，单位s\n    transitionDuration: 0.4,\n    enterable: false,\n    // 提示背景颜色，默认为透明度为0.7的黑色\n    backgroundColor: 'rgba(50,50,50,0.7)',\n    // 提示边框颜色\n    borderColor: '#333',\n    // 提示边框圆角，单位px，默认为4\n    borderRadius: 4,\n    // 提示边框线宽，单位px，默认为0（无边框）\n    borderWidth: 0,\n    // 提示内边距，单位px，默认各方向内边距为5，\n    // 接受数组分别设定上右下左边距，同css\n    padding: 5,\n    // Extra css text\n    extraCssText: '',\n    // 坐标轴指示器，坐标轴触发有效\n    axisPointer: {\n      // 默认为直线\n      // 可选为：'line' | 'shadow' | 'cross'\n      type: 'line',\n      // type 为 line 的时候有效，指定 tooltip line 所在的轴，可选\n      // 可选 'x' | 'y' | 'angle' | 'radius' | 'auto'\n      // 默认 'auto'，会选择类型为 category 的轴，对于双数值轴，笛卡尔坐标系会默认选择 x 轴\n      // 极坐标系会默认选择 angle 轴\n      axis: 'auto',\n      animation: 'auto',\n      animationDurationUpdate: 200,\n      animationEasingUpdate: 'exponentialOut',\n      crossStyle: {\n        color: '#999',\n        width: 1,\n        type: 'dashed',\n        // TODO formatter\n        textStyle: {} // lineStyle and shadowStyle should not be specified here,\n        // otherwise it will always override those styles on option.axisPointer.\n\n      }\n    },\n    textStyle: {\n      color: '#fff',\n      fontSize: 14\n    }\n  }\n});\n\nmodule.exports = _default;","var echarts = require(\"../../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar env = require(\"zrender/lib/core/env\");\n\nvar TooltipContent = require(\"./TooltipContent\");\n\nvar formatUtil = require(\"../../util/format\");\n\nvar numberUtil = require(\"../../util/number\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar findPointFromSeries = require(\"../axisPointer/findPointFromSeries\");\n\nvar layoutUtil = require(\"../../util/layout\");\n\nvar Model = require(\"../../model/Model\");\n\nvar globalListener = require(\"../axisPointer/globalListener\");\n\nvar axisHelper = require(\"../../coord/axisHelper\");\n\nvar axisPointerViewHelper = require(\"../axisPointer/viewHelper\");\n\nvar bind = zrUtil.bind;\nvar each = zrUtil.each;\nvar parsePercent = numberUtil.parsePercent;\nvar proxyRect = new graphic.Rect({\n  shape: {\n    x: -1,\n    y: -1,\n    width: 2,\n    height: 2\n  }\n});\n\nvar _default = echarts.extendComponentView({\n  type: 'tooltip',\n  init: function (ecModel, api) {\n    if (env.node) {\n      return;\n    }\n\n    var tooltipContent = new TooltipContent(api.getDom(), api);\n    this._tooltipContent = tooltipContent;\n  },\n  render: function (tooltipModel, ecModel, api) {\n    if (env.node || env.wxa) {\n      return;\n    } // Reset\n\n\n    this.group.removeAll();\n    /**\n     * @private\n     * @type {module:echarts/component/tooltip/TooltipModel}\n     */\n\n    this._tooltipModel = tooltipModel;\n    /**\n     * @private\n     * @type {module:echarts/model/Global}\n     */\n\n    this._ecModel = ecModel;\n    /**\n     * @private\n     * @type {module:echarts/ExtensionAPI}\n     */\n\n    this._api = api;\n    /**\n     * Should be cleaned when render.\n     * @private\n     * @type {Array.<Array.<Object>>}\n     */\n\n    this._lastDataByCoordSys = null;\n    /**\n     * @private\n     * @type {boolean}\n     */\n\n    this._alwaysShowContent = tooltipModel.get('alwaysShowContent');\n    var tooltipContent = this._tooltipContent;\n    tooltipContent.update();\n    tooltipContent.setEnterable(tooltipModel.get('enterable'));\n\n    this._initGlobalListener();\n\n    this._keepShow();\n  },\n  _initGlobalListener: function () {\n    var tooltipModel = this._tooltipModel;\n    var triggerOn = tooltipModel.get('triggerOn');\n    globalListener.register('itemTooltip', this._api, bind(function (currTrigger, e, dispatchAction) {\n      // If 'none', it is not controlled by mouse totally.\n      if (triggerOn !== 'none') {\n        if (triggerOn.indexOf(currTrigger) >= 0) {\n          this._tryShow(e, dispatchAction);\n        } else if (currTrigger === 'leave') {\n          this._hide(dispatchAction);\n        }\n      }\n    }, this));\n  },\n  _keepShow: function () {\n    var tooltipModel = this._tooltipModel;\n    var ecModel = this._ecModel;\n    var api = this._api; // Try to keep the tooltip show when refreshing\n\n    if (this._lastX != null && this._lastY != null // When user is willing to control tooltip totally using API,\n    // self.manuallyShowTip({x, y}) might cause tooltip hide,\n    // which is not expected.\n    && tooltipModel.get('triggerOn') !== 'none') {\n      var self = this;\n      clearTimeout(this._refreshUpdateTimeout);\n      this._refreshUpdateTimeout = setTimeout(function () {\n        // Show tip next tick after other charts are rendered\n        // In case highlight action has wrong result\n        // FIXME\n        self.manuallyShowTip(tooltipModel, ecModel, api, {\n          x: self._lastX,\n          y: self._lastY\n        });\n      });\n    }\n  },\n\n  /**\n   * Show tip manually by\n   * dispatchAction({\n   *     type: 'showTip',\n   *     x: 10,\n   *     y: 10\n   * });\n   * Or\n   * dispatchAction({\n   *      type: 'showTip',\n   *      seriesIndex: 0,\n   *      dataIndex or dataIndexInside or name\n   * });\n   *\n   *  TODO Batch\n   */\n  manuallyShowTip: function (tooltipModel, ecModel, api, payload) {\n    if (payload.from === this.uid || env.node) {\n      return;\n    }\n\n    var dispatchAction = makeDispatchAction(payload, api); // Reset ticket\n\n    this._ticket = ''; // When triggered from axisPointer.\n\n    var dataByCoordSys = payload.dataByCoordSys;\n\n    if (payload.tooltip && payload.x != null && payload.y != null) {\n      var el = proxyRect;\n      el.position = [payload.x, payload.y];\n      el.update();\n      el.tooltip = payload.tooltip; // Manually show tooltip while view is not using zrender elements.\n\n      this._tryShow({\n        offsetX: payload.x,\n        offsetY: payload.y,\n        target: el\n      }, dispatchAction);\n    } else if (dataByCoordSys) {\n      this._tryShow({\n        offsetX: payload.x,\n        offsetY: payload.y,\n        position: payload.position,\n        event: {},\n        dataByCoordSys: payload.dataByCoordSys,\n        tooltipOption: payload.tooltipOption\n      }, dispatchAction);\n    } else if (payload.seriesIndex != null) {\n      if (this._manuallyAxisShowTip(tooltipModel, ecModel, api, payload)) {\n        return;\n      }\n\n      var pointInfo = findPointFromSeries(payload, ecModel);\n      var cx = pointInfo.point[0];\n      var cy = pointInfo.point[1];\n\n      if (cx != null && cy != null) {\n        this._tryShow({\n          offsetX: cx,\n          offsetY: cy,\n          position: payload.position,\n          target: pointInfo.el,\n          event: {}\n        }, dispatchAction);\n      }\n    } else if (payload.x != null && payload.y != null) {\n      // FIXME\n      // should wrap dispatchAction like `axisPointer/globalListener` ?\n      api.dispatchAction({\n        type: 'updateAxisPointer',\n        x: payload.x,\n        y: payload.y\n      });\n\n      this._tryShow({\n        offsetX: payload.x,\n        offsetY: payload.y,\n        position: payload.position,\n        target: api.getZr().findHover(payload.x, payload.y).target,\n        event: {}\n      }, dispatchAction);\n    }\n  },\n  manuallyHideTip: function (tooltipModel, ecModel, api, payload) {\n    var tooltipContent = this._tooltipContent;\n\n    if (!this._alwaysShowContent && this._tooltipModel) {\n      tooltipContent.hideLater(this._tooltipModel.get('hideDelay'));\n    }\n\n    this._lastX = this._lastY = null;\n\n    if (payload.from !== this.uid) {\n      this._hide(makeDispatchAction(payload, api));\n    }\n  },\n  // Be compatible with previous design, that is, when tooltip.type is 'axis' and\n  // dispatchAction 'showTip' with seriesIndex and dataIndex will trigger axis pointer\n  // and tooltip.\n  _manuallyAxisShowTip: function (tooltipModel, ecModel, api, payload) {\n    var seriesIndex = payload.seriesIndex;\n    var dataIndex = payload.dataIndex;\n    var coordSysAxesInfo = ecModel.getComponent('axisPointer').coordSysAxesInfo;\n\n    if (seriesIndex == null || dataIndex == null || coordSysAxesInfo == null) {\n      return;\n    }\n\n    var seriesModel = ecModel.getSeriesByIndex(seriesIndex);\n\n    if (!seriesModel) {\n      return;\n    }\n\n    var data = seriesModel.getData();\n    var tooltipModel = buildTooltipModel([data.getItemModel(dataIndex), seriesModel, (seriesModel.coordinateSystem || {}).model, tooltipModel]);\n\n    if (tooltipModel.get('trigger') !== 'axis') {\n      return;\n    }\n\n    api.dispatchAction({\n      type: 'updateAxisPointer',\n      seriesIndex: seriesIndex,\n      dataIndex: dataIndex,\n      position: payload.position\n    });\n    return true;\n  },\n  _tryShow: function (e, dispatchAction) {\n    var el = e.target;\n    var tooltipModel = this._tooltipModel;\n\n    if (!tooltipModel) {\n      return;\n    } // Save mouse x, mouse y. So we can try to keep showing the tip if chart is refreshed\n\n\n    this._lastX = e.offsetX;\n    this._lastY = e.offsetY;\n    var dataByCoordSys = e.dataByCoordSys;\n\n    if (dataByCoordSys && dataByCoordSys.length) {\n      this._showAxisTooltip(dataByCoordSys, e);\n    } // Always show item tooltip if mouse is on the element with dataIndex\n    else if (el && el.dataIndex != null) {\n        this._lastDataByCoordSys = null;\n\n        this._showSeriesItemTooltip(e, el, dispatchAction);\n      } // Tooltip provided directly. Like legend.\n      else if (el && el.tooltip) {\n          this._lastDataByCoordSys = null;\n\n          this._showComponentItemTooltip(e, el, dispatchAction);\n        } else {\n          this._lastDataByCoordSys = null;\n\n          this._hide(dispatchAction);\n        }\n  },\n  _showOrMove: function (tooltipModel, cb) {\n    // showDelay is used in this case: tooltip.enterable is set\n    // as true. User intent to move mouse into tooltip and click\n    // something. `showDelay` makes it easyer to enter the content\n    // but tooltip do not move immediately.\n    var delay = tooltipModel.get('showDelay');\n    cb = zrUtil.bind(cb, this);\n    clearTimeout(this._showTimout);\n    delay > 0 ? this._showTimout = setTimeout(cb, delay) : cb();\n  },\n  _showAxisTooltip: function (dataByCoordSys, e) {\n    var ecModel = this._ecModel;\n    var globalTooltipModel = this._tooltipModel;\n    var point = [e.offsetX, e.offsetY];\n    var singleDefaultHTML = [];\n    var singleParamsList = [];\n    var singleTooltipModel = buildTooltipModel([e.tooltipOption, globalTooltipModel]);\n    each(dataByCoordSys, function (itemCoordSys) {\n      // var coordParamList = [];\n      // var coordDefaultHTML = [];\n      // var coordTooltipModel = buildTooltipModel([\n      //     e.tooltipOption,\n      //     itemCoordSys.tooltipOption,\n      //     ecModel.getComponent(itemCoordSys.coordSysMainType, itemCoordSys.coordSysIndex),\n      //     globalTooltipModel\n      // ]);\n      // var displayMode = coordTooltipModel.get('displayMode');\n      // var paramsList = displayMode === 'single' ? singleParamsList : [];\n      each(itemCoordSys.dataByAxis, function (item) {\n        var axisModel = ecModel.getComponent(item.axisDim + 'Axis', item.axisIndex);\n        var axisValue = item.value;\n        var seriesDefaultHTML = [];\n\n        if (!axisModel || axisValue == null) {\n          return;\n        }\n\n        var valueLabel = axisPointerViewHelper.getValueLabel(axisValue, axisModel.axis, ecModel, item.seriesDataIndices, item.valueLabelOpt);\n        zrUtil.each(item.seriesDataIndices, function (idxItem) {\n          var series = ecModel.getSeriesByIndex(idxItem.seriesIndex);\n          var dataIndex = idxItem.dataIndexInside;\n          var dataParams = series && series.getDataParams(dataIndex);\n          dataParams.axisDim = item.axisDim;\n          dataParams.axisIndex = item.axisIndex;\n          dataParams.axisType = item.axisType;\n          dataParams.axisId = item.axisId;\n          dataParams.axisValue = axisHelper.getAxisRawValue(axisModel.axis, axisValue);\n          dataParams.axisValueLabel = valueLabel;\n\n          if (dataParams) {\n            singleParamsList.push(dataParams);\n            seriesDefaultHTML.push(series.formatTooltip(dataIndex, true));\n          }\n        }); // Default tooltip content\n        // FIXME\n        // (1) shold be the first data which has name?\n        // (2) themeRiver, firstDataIndex is array, and first line is unnecessary.\n\n        var firstLine = valueLabel;\n        singleDefaultHTML.push((firstLine ? formatUtil.encodeHTML(firstLine) + '<br />' : '') + seriesDefaultHTML.join('<br />'));\n      });\n    }, this); // In most case, the second axis is shown upper than the first one.\n\n    singleDefaultHTML.reverse();\n    singleDefaultHTML = singleDefaultHTML.join('<br /><br />');\n    var positionExpr = e.position;\n\n    this._showOrMove(singleTooltipModel, function () {\n      if (this._updateContentNotChangedOnAxis(dataByCoordSys)) {\n        this._updatePosition(singleTooltipModel, positionExpr, point[0], point[1], this._tooltipContent, singleParamsList);\n      } else {\n        this._showTooltipContent(singleTooltipModel, singleDefaultHTML, singleParamsList, Math.random(), point[0], point[1], positionExpr);\n      }\n    }); // Do not trigger events here, because this branch only be entered\n    // from dispatchAction.\n\n  },\n  _showSeriesItemTooltip: function (e, el, dispatchAction) {\n    var ecModel = this._ecModel; // Use dataModel in element if possible\n    // Used when mouseover on a element like markPoint or edge\n    // In which case, the data is not main data in series.\n\n    var seriesIndex = el.seriesIndex;\n    var seriesModel = ecModel.getSeriesByIndex(seriesIndex); // For example, graph link.\n\n    var dataModel = el.dataModel || seriesModel;\n    var dataIndex = el.dataIndex;\n    var dataType = el.dataType;\n    var data = dataModel.getData();\n    var tooltipModel = buildTooltipModel([data.getItemModel(dataIndex), dataModel, seriesModel && (seriesModel.coordinateSystem || {}).model, this._tooltipModel]);\n    var tooltipTrigger = tooltipModel.get('trigger');\n\n    if (tooltipTrigger != null && tooltipTrigger !== 'item') {\n      return;\n    }\n\n    var params = dataModel.getDataParams(dataIndex, dataType);\n    var defaultHtml = dataModel.formatTooltip(dataIndex, false, dataType);\n    var asyncTicket = 'item_' + dataModel.name + '_' + dataIndex;\n\n    this._showOrMove(tooltipModel, function () {\n      this._showTooltipContent(tooltipModel, defaultHtml, params, asyncTicket, e.offsetX, e.offsetY, e.position, e.target);\n    }); // FIXME\n    // duplicated showtip if manuallyShowTip is called from dispatchAction.\n\n\n    dispatchAction({\n      type: 'showTip',\n      dataIndexInside: dataIndex,\n      dataIndex: data.getRawIndex(dataIndex),\n      seriesIndex: seriesIndex,\n      from: this.uid\n    });\n  },\n  _showComponentItemTooltip: function (e, el, dispatchAction) {\n    var tooltipOpt = el.tooltip;\n\n    if (typeof tooltipOpt === 'string') {\n      var content = tooltipOpt;\n      tooltipOpt = {\n        content: content,\n        // Fixed formatter\n        formatter: content\n      };\n    }\n\n    var subTooltipModel = new Model(tooltipOpt, this._tooltipModel, this._ecModel);\n    var defaultHtml = subTooltipModel.get('content');\n    var asyncTicket = Math.random(); // Do not check whether `trigger` is 'none' here, because `trigger`\n    // only works on cooridinate system. In fact, we have not found case\n    // that requires setting `trigger` nothing on component yet.\n\n    this._showOrMove(subTooltipModel, function () {\n      this._showTooltipContent(subTooltipModel, defaultHtml, subTooltipModel.get('formatterParams') || {}, asyncTicket, e.offsetX, e.offsetY, e.position, el);\n    }); // If not dispatch showTip, tip may be hide triggered by axis.\n\n\n    dispatchAction({\n      type: 'showTip',\n      from: this.uid\n    });\n  },\n  _showTooltipContent: function (tooltipModel, defaultHtml, params, asyncTicket, x, y, positionExpr, el) {\n    // Reset ticket\n    this._ticket = '';\n\n    if (!tooltipModel.get('showContent') || !tooltipModel.get('show')) {\n      return;\n    }\n\n    var tooltipContent = this._tooltipContent;\n    var formatter = tooltipModel.get('formatter');\n    positionExpr = positionExpr || tooltipModel.get('position');\n    var html = defaultHtml;\n\n    if (formatter && typeof formatter === 'string') {\n      html = formatUtil.formatTpl(formatter, params, true);\n    } else if (typeof formatter === 'function') {\n      var callback = bind(function (cbTicket, html) {\n        if (cbTicket === this._ticket) {\n          tooltipContent.setContent(html);\n\n          this._updatePosition(tooltipModel, positionExpr, x, y, tooltipContent, params, el);\n        }\n      }, this);\n      this._ticket = asyncTicket;\n      html = formatter(params, asyncTicket, callback);\n    }\n\n    tooltipContent.setContent(html);\n    tooltipContent.show(tooltipModel);\n\n    this._updatePosition(tooltipModel, positionExpr, x, y, tooltipContent, params, el);\n  },\n\n  /**\n   * @param  {string|Function|Array.<number>|Object} positionExpr\n   * @param  {number} x Mouse x\n   * @param  {number} y Mouse y\n   * @param  {boolean} confine Whether confine tooltip content in view rect.\n   * @param  {Object|<Array.<Object>} params\n   * @param  {module:zrender/Element} el target element\n   * @param  {module:echarts/ExtensionAPI} api\n   * @return {Array.<number>}\n   */\n  _updatePosition: function (tooltipModel, positionExpr, x, y, content, params, el) {\n    var viewWidth = this._api.getWidth();\n\n    var viewHeight = this._api.getHeight();\n\n    positionExpr = positionExpr || tooltipModel.get('position');\n    var contentSize = content.getSize();\n    var align = tooltipModel.get('align');\n    var vAlign = tooltipModel.get('verticalAlign');\n    var rect = el && el.getBoundingRect().clone();\n    el && rect.applyTransform(el.transform);\n\n    if (typeof positionExpr === 'function') {\n      // Callback of position can be an array or a string specify the position\n      positionExpr = positionExpr([x, y], params, content.el, rect, {\n        viewSize: [viewWidth, viewHeight],\n        contentSize: contentSize.slice()\n      });\n    }\n\n    if (zrUtil.isArray(positionExpr)) {\n      x = parsePercent(positionExpr[0], viewWidth);\n      y = parsePercent(positionExpr[1], viewHeight);\n    } else if (zrUtil.isObject(positionExpr)) {\n      positionExpr.width = contentSize[0];\n      positionExpr.height = contentSize[1];\n      var layoutRect = layoutUtil.getLayoutRect(positionExpr, {\n        width: viewWidth,\n        height: viewHeight\n      });\n      x = layoutRect.x;\n      y = layoutRect.y;\n      align = null; // When positionExpr is left/top/right/bottom,\n      // align and verticalAlign will not work.\n\n      vAlign = null;\n    } // Specify tooltip position by string 'top' 'bottom' 'left' 'right' around graphic element\n    else if (typeof positionExpr === 'string' && el) {\n        var pos = calcTooltipPosition(positionExpr, rect, contentSize);\n        x = pos[0];\n        y = pos[1];\n      } else {\n        var pos = refixTooltipPosition(x, y, content.el, viewWidth, viewHeight, align ? null : 20, vAlign ? null : 20);\n        x = pos[0];\n        y = pos[1];\n      }\n\n    align && (x -= isCenterAlign(align) ? contentSize[0] / 2 : align === 'right' ? contentSize[0] : 0);\n    vAlign && (y -= isCenterAlign(vAlign) ? contentSize[1] / 2 : vAlign === 'bottom' ? contentSize[1] : 0);\n\n    if (tooltipModel.get('confine')) {\n      var pos = confineTooltipPosition(x, y, content.el, viewWidth, viewHeight);\n      x = pos[0];\n      y = pos[1];\n    }\n\n    content.moveTo(x, y);\n  },\n  // FIXME\n  // Should we remove this but leave this to user?\n  _updateContentNotChangedOnAxis: function (dataByCoordSys) {\n    var lastCoordSys = this._lastDataByCoordSys;\n    var contentNotChanged = !!lastCoordSys && lastCoordSys.length === dataByCoordSys.length;\n    contentNotChanged && each(lastCoordSys, function (lastItemCoordSys, indexCoordSys) {\n      var lastDataByAxis = lastItemCoordSys.dataByAxis || {};\n      var thisItemCoordSys = dataByCoordSys[indexCoordSys] || {};\n      var thisDataByAxis = thisItemCoordSys.dataByAxis || [];\n      contentNotChanged &= lastDataByAxis.length === thisDataByAxis.length;\n      contentNotChanged && each(lastDataByAxis, function (lastItem, indexAxis) {\n        var thisItem = thisDataByAxis[indexAxis] || {};\n        var lastIndices = lastItem.seriesDataIndices || [];\n        var newIndices = thisItem.seriesDataIndices || [];\n        contentNotChanged &= lastItem.value === thisItem.value && lastItem.axisType === thisItem.axisType && lastItem.axisId === thisItem.axisId && lastIndices.length === newIndices.length;\n        contentNotChanged && each(lastIndices, function (lastIdxItem, j) {\n          var newIdxItem = newIndices[j];\n          contentNotChanged &= lastIdxItem.seriesIndex === newIdxItem.seriesIndex && lastIdxItem.dataIndex === newIdxItem.dataIndex;\n        });\n      });\n    });\n    this._lastDataByCoordSys = dataByCoordSys;\n    return !!contentNotChanged;\n  },\n  _hide: function (dispatchAction) {\n    // Do not directly hideLater here, because this behavior may be prevented\n    // in dispatchAction when showTip is dispatched.\n    // FIXME\n    // duplicated hideTip if manuallyHideTip is called from dispatchAction.\n    this._lastDataByCoordSys = null;\n    dispatchAction({\n      type: 'hideTip',\n      from: this.uid\n    });\n  },\n  dispose: function (ecModel, api) {\n    if (env.node) {\n      return;\n    }\n\n    this._tooltipContent.hide();\n\n    globalListener.unregister('itemTooltip', api);\n  }\n});\n/**\n * @param {Array.<Object|module:echarts/model/Model>} modelCascade\n * From top to bottom. (the last one should be globalTooltipModel);\n */\n\n\nfunction buildTooltipModel(modelCascade) {\n  var resultModel = modelCascade.pop();\n\n  while (modelCascade.length) {\n    var tooltipOpt = modelCascade.pop();\n\n    if (tooltipOpt) {\n      if (Model.isInstance(tooltipOpt)) {\n        tooltipOpt = tooltipOpt.get('tooltip', true);\n      } // In each data item tooltip can be simply write:\n      // {\n      //  value: 10,\n      //  tooltip: 'Something you need to know'\n      // }\n\n\n      if (typeof tooltipOpt === 'string') {\n        tooltipOpt = {\n          formatter: tooltipOpt\n        };\n      }\n\n      resultModel = new Model(tooltipOpt, resultModel, resultModel.ecModel);\n    }\n  }\n\n  return resultModel;\n}\n\nfunction makeDispatchAction(payload, api) {\n  return payload.dispatchAction || zrUtil.bind(api.dispatchAction, api);\n}\n\nfunction refixTooltipPosition(x, y, el, viewWidth, viewHeight, gapH, gapV) {\n  var size = getOuterSize(el);\n  var width = size.width;\n  var height = size.height;\n\n  if (gapH != null) {\n    if (x + width + gapH > viewWidth) {\n      x -= width + gapH;\n    } else {\n      x += gapH;\n    }\n  }\n\n  if (gapV != null) {\n    if (y + height + gapV > viewHeight) {\n      y -= height + gapV;\n    } else {\n      y += gapV;\n    }\n  }\n\n  return [x, y];\n}\n\nfunction confineTooltipPosition(x, y, el, viewWidth, viewHeight) {\n  var size = getOuterSize(el);\n  var width = size.width;\n  var height = size.height;\n  x = Math.min(x + width, viewWidth) - width;\n  y = Math.min(y + height, viewHeight) - height;\n  x = Math.max(x, 0);\n  y = Math.max(y, 0);\n  return [x, y];\n}\n\nfunction getOuterSize(el) {\n  var width = el.clientWidth;\n  var height = el.clientHeight; // Consider browser compatibility.\n  // IE8 does not support getComputedStyle.\n\n  if (document.defaultView && document.defaultView.getComputedStyle) {\n    var stl = document.defaultView.getComputedStyle(el);\n\n    if (stl) {\n      width += parseInt(stl.paddingLeft, 10) + parseInt(stl.paddingRight, 10) + parseInt(stl.borderLeftWidth, 10) + parseInt(stl.borderRightWidth, 10);\n      height += parseInt(stl.paddingTop, 10) + parseInt(stl.paddingBottom, 10) + parseInt(stl.borderTopWidth, 10) + parseInt(stl.borderBottomWidth, 10);\n    }\n  }\n\n  return {\n    width: width,\n    height: height\n  };\n}\n\nfunction calcTooltipPosition(position, rect, contentSize) {\n  var domWidth = contentSize[0];\n  var domHeight = contentSize[1];\n  var gap = 5;\n  var x = 0;\n  var y = 0;\n  var rectWidth = rect.width;\n  var rectHeight = rect.height;\n\n  switch (position) {\n    case 'inside':\n      x = rect.x + rectWidth / 2 - domWidth / 2;\n      y = rect.y + rectHeight / 2 - domHeight / 2;\n      break;\n\n    case 'top':\n      x = rect.x + rectWidth / 2 - domWidth / 2;\n      y = rect.y - domHeight - gap;\n      break;\n\n    case 'bottom':\n      x = rect.x + rectWidth / 2 - domWidth / 2;\n      y = rect.y + rectHeight + gap;\n      break;\n\n    case 'left':\n      x = rect.x - domWidth - gap;\n      y = rect.y + rectHeight / 2 - domHeight / 2;\n      break;\n\n    case 'right':\n      x = rect.x + rectWidth + gap;\n      y = rect.y + rectHeight / 2 - domHeight / 2;\n  }\n\n  return [x, y];\n}\n\nfunction isCenterAlign(align) {\n  return align === 'center' || align === 'middle';\n}\n\nmodule.exports = _default;","require(\"./visualMapContinuous\");\n\nrequire(\"./visualMapPiecewise\");","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar VisualMapModel = require(\"./VisualMapModel\");\n\nvar numberUtil = require(\"../../util/number\");\n\n// Constant\nvar DEFAULT_BAR_BOUND = [20, 140];\nvar ContinuousModel = VisualMapModel.extend({\n  type: 'visualMap.continuous',\n\n  /**\n   * @protected\n   */\n  defaultOption: {\n    align: 'auto',\n    // 'auto', 'left', 'right', 'top', 'bottom'\n    calculable: false,\n    // This prop effect default component type determine,\n    // See echarts/component/visualMap/typeDefaulter.\n    range: null,\n    // selected range. In default case `range` is [min, max]\n    // and can auto change along with modification of min max,\n    // util use specifid a range.\n    realtime: true,\n    // Whether realtime update.\n    itemHeight: null,\n    // The length of the range control edge.\n    itemWidth: null,\n    // The length of the other side.\n    hoverLink: true,\n    // Enable hover highlight.\n    hoverLinkDataSize: null,\n    // The size of hovered data.\n    hoverLinkOnHandle: null // Whether trigger hoverLink when hover handle.\n    // If not specified, follow the value of `realtime`.\n\n  },\n\n  /**\n   * @override\n   */\n  optionUpdated: function (newOption, isInit) {\n    ContinuousModel.superApply(this, 'optionUpdated', arguments);\n    this.resetExtent();\n    this.resetVisual(function (mappingOption) {\n      mappingOption.mappingMethod = 'linear';\n      mappingOption.dataExtent = this.getExtent();\n    });\n\n    this._resetRange();\n  },\n\n  /**\n   * @protected\n   * @override\n   */\n  resetItemSize: function () {\n    ContinuousModel.superApply(this, 'resetItemSize', arguments);\n    var itemSize = this.itemSize;\n    this._orient === 'horizontal' && itemSize.reverse();\n    (itemSize[0] == null || isNaN(itemSize[0])) && (itemSize[0] = DEFAULT_BAR_BOUND[0]);\n    (itemSize[1] == null || isNaN(itemSize[1])) && (itemSize[1] = DEFAULT_BAR_BOUND[1]);\n  },\n\n  /**\n   * @private\n   */\n  _resetRange: function () {\n    var dataExtent = this.getExtent();\n    var range = this.option.range;\n\n    if (!range || range.auto) {\n      // `range` should always be array (so we dont use other\n      // value like 'auto') for user-friend. (consider getOption).\n      dataExtent.auto = 1;\n      this.option.range = dataExtent;\n    } else if (zrUtil.isArray(range)) {\n      if (range[0] > range[1]) {\n        range.reverse();\n      }\n\n      range[0] = Math.max(range[0], dataExtent[0]);\n      range[1] = Math.min(range[1], dataExtent[1]);\n    }\n  },\n\n  /**\n   * @protected\n   * @override\n   */\n  completeVisualOption: function () {\n    VisualMapModel.prototype.completeVisualOption.apply(this, arguments);\n    zrUtil.each(this.stateList, function (state) {\n      var symbolSize = this.option.controller[state].symbolSize;\n\n      if (symbolSize && symbolSize[0] !== symbolSize[1]) {\n        symbolSize[0] = 0; // For good looking.\n      }\n    }, this);\n  },\n\n  /**\n   * @override\n   */\n  setSelected: function (selected) {\n    this.option.range = selected.slice();\n\n    this._resetRange();\n  },\n\n  /**\n   * @public\n   */\n  getSelected: function () {\n    var dataExtent = this.getExtent();\n    var dataInterval = numberUtil.asc((this.get('range') || []).slice()); // Clamp\n\n    dataInterval[0] > dataExtent[1] && (dataInterval[0] = dataExtent[1]);\n    dataInterval[1] > dataExtent[1] && (dataInterval[1] = dataExtent[1]);\n    dataInterval[0] < dataExtent[0] && (dataInterval[0] = dataExtent[0]);\n    dataInterval[1] < dataExtent[0] && (dataInterval[1] = dataExtent[0]);\n    return dataInterval;\n  },\n\n  /**\n   * @override\n   */\n  getValueState: function (value) {\n    var range = this.option.range;\n    var dataExtent = this.getExtent(); // When range[0] === dataExtent[0], any value larger than dataExtent[0] maps to 'inRange'.\n    // range[1] is processed likewise.\n\n    return (range[0] <= dataExtent[0] || range[0] <= value) && (range[1] >= dataExtent[1] || value <= range[1]) ? 'inRange' : 'outOfRange';\n  },\n\n  /**\n   * @params {Array.<number>} range target value: range[0] <= value && value <= range[1]\n   * @return {Array.<Object>} [{seriesId, dataIndices: <Array.<number>>}, ...]\n   */\n  findTargetDataIndices: function (range) {\n    var result = [];\n    this.eachTargetSeries(function (seriesModel) {\n      var dataIndices = [];\n      var data = seriesModel.getData();\n      data.each(this.getDataDimension(data), function (value, dataIndex) {\n        range[0] <= value && value <= range[1] && dataIndices.push(dataIndex);\n      }, true, this);\n      result.push({\n        seriesId: seriesModel.id,\n        dataIndex: dataIndices\n      });\n    }, this);\n    return result;\n  },\n\n  /**\n   * @implement\n   */\n  getVisualMeta: function (getColorVisual) {\n    var oVals = getColorStopValues(this, 'outOfRange', this.getExtent());\n    var iVals = getColorStopValues(this, 'inRange', this.option.range.slice());\n    var stops = [];\n\n    function setStop(value, valueState) {\n      stops.push({\n        value: value,\n        color: getColorVisual(value, valueState)\n      });\n    } // Format to: outOfRange -- inRange -- outOfRange.\n\n\n    var iIdx = 0;\n    var oIdx = 0;\n    var iLen = iVals.length;\n    var oLen = oVals.length;\n\n    for (; oIdx < oLen && (!iVals.length || oVals[oIdx] <= iVals[0]); oIdx++) {\n      // If oVal[oIdx] === iVals[iIdx], oVal[oIdx] should be ignored.\n      if (oVals[oIdx] < iVals[iIdx]) {\n        setStop(oVals[oIdx], 'outOfRange');\n      }\n    }\n\n    for (var first = 1; iIdx < iLen; iIdx++, first = 0) {\n      // If range is full, value beyond min, max will be clamped.\n      // make a singularity\n      first && stops.length && setStop(iVals[iIdx], 'outOfRange');\n      setStop(iVals[iIdx], 'inRange');\n    }\n\n    for (var first = 1; oIdx < oLen; oIdx++) {\n      if (!iVals.length || iVals[iVals.length - 1] < oVals[oIdx]) {\n        // make a singularity\n        if (first) {\n          stops.length && setStop(stops[stops.length - 1].value, 'outOfRange');\n          first = 0;\n        }\n\n        setStop(oVals[oIdx], 'outOfRange');\n      }\n    }\n\n    var stopsLen = stops.length;\n    return {\n      stops: stops,\n      outerColors: [stopsLen ? stops[0].color : 'transparent', stopsLen ? stops[stopsLen - 1].color : 'transparent']\n    };\n  }\n});\n\nfunction getColorStopValues(visualMapModel, valueState, dataExtent) {\n  if (dataExtent[0] === dataExtent[1]) {\n    return dataExtent.slice();\n  } // When using colorHue mapping, it is not linear color any more.\n  // Moreover, canvas gradient seems not to be accurate linear.\n  // FIXME\n  // Should be arbitrary value 100? or based on pixel size?\n\n\n  var count = 200;\n  var step = (dataExtent[1] - dataExtent[0]) / count;\n  var value = dataExtent[0];\n  var stopValues = [];\n\n  for (var i = 0; i <= count && value < dataExtent[1]; i++) {\n    stopValues.push(value);\n    value += step;\n  }\n\n  stopValues.push(dataExtent[1]);\n  return stopValues;\n}\n\nvar _default = ContinuousModel;\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar LinearGradient = require(\"zrender/lib/graphic/LinearGradient\");\n\nvar eventTool = require(\"zrender/lib/core/event\");\n\nvar VisualMapView = require(\"./VisualMapView\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar numberUtil = require(\"../../util/number\");\n\nvar sliderMove = require(\"../helper/sliderMove\");\n\nvar helper = require(\"./helper\");\n\nvar modelUtil = require(\"../../util/model\");\n\nvar linearMap = numberUtil.linearMap;\nvar each = zrUtil.each;\nvar mathMin = Math.min;\nvar mathMax = Math.max; // Arbitrary value\n\nvar HOVER_LINK_SIZE = 12;\nvar HOVER_LINK_OUT = 6; // Notice:\n// Any \"interval\" should be by the order of [low, high].\n// \"handle0\" (handleIndex === 0) maps to\n// low data value: this._dataInterval[0] and has low coord.\n// \"handle1\" (handleIndex === 1) maps to\n// high data value: this._dataInterval[1] and has high coord.\n// The logic of transform is implemented in this._createBarGroup.\n\nvar ContinuousView = VisualMapView.extend({\n  type: 'visualMap.continuous',\n\n  /**\n   * @override\n   */\n  init: function () {\n    ContinuousView.superApply(this, 'init', arguments);\n    /**\n     * @private\n     */\n\n    this._shapes = {};\n    /**\n     * @private\n     */\n\n    this._dataInterval = [];\n    /**\n     * @private\n     */\n\n    this._handleEnds = [];\n    /**\n     * @private\n     */\n\n    this._orient;\n    /**\n     * @private\n     */\n\n    this._useHandle;\n    /**\n     * @private\n     */\n\n    this._hoverLinkDataIndices = [];\n    /**\n     * @private\n     */\n\n    this._dragging;\n    /**\n     * @private\n     */\n\n    this._hovering;\n  },\n\n  /**\n   * @protected\n   * @override\n   */\n  doRender: function (visualMapModel, ecModel, api, payload) {\n    if (!payload || payload.type !== 'selectDataRange' || payload.from !== this.uid) {\n      this._buildView();\n    }\n  },\n\n  /**\n   * @private\n   */\n  _buildView: function () {\n    this.group.removeAll();\n    var visualMapModel = this.visualMapModel;\n    var thisGroup = this.group;\n    this._orient = visualMapModel.get('orient');\n    this._useHandle = visualMapModel.get('calculable');\n\n    this._resetInterval();\n\n    this._renderBar(thisGroup);\n\n    var dataRangeText = visualMapModel.get('text');\n\n    this._renderEndsText(thisGroup, dataRangeText, 0);\n\n    this._renderEndsText(thisGroup, dataRangeText, 1); // Do this for background size calculation.\n\n\n    this._updateView(true); // After updating view, inner shapes is built completely,\n    // and then background can be rendered.\n\n\n    this.renderBackground(thisGroup); // Real update view\n\n    this._updateView();\n\n    this._enableHoverLinkToSeries();\n\n    this._enableHoverLinkFromSeries();\n\n    this.positionGroup(thisGroup);\n  },\n\n  /**\n   * @private\n   */\n  _renderEndsText: function (group, dataRangeText, endsIndex) {\n    if (!dataRangeText) {\n      return;\n    } // Compatible with ec2, text[0] map to high value, text[1] map low value.\n\n\n    var text = dataRangeText[1 - endsIndex];\n    text = text != null ? text + '' : '';\n    var visualMapModel = this.visualMapModel;\n    var textGap = visualMapModel.get('textGap');\n    var itemSize = visualMapModel.itemSize;\n    var barGroup = this._shapes.barGroup;\n\n    var position = this._applyTransform([itemSize[0] / 2, endsIndex === 0 ? -textGap : itemSize[1] + textGap], barGroup);\n\n    var align = this._applyTransform(endsIndex === 0 ? 'bottom' : 'top', barGroup);\n\n    var orient = this._orient;\n    var textStyleModel = this.visualMapModel.textStyleModel;\n    this.group.add(new graphic.Text({\n      style: {\n        x: position[0],\n        y: position[1],\n        textVerticalAlign: orient === 'horizontal' ? 'middle' : align,\n        textAlign: orient === 'horizontal' ? align : 'center',\n        text: text,\n        textFont: textStyleModel.getFont(),\n        textFill: textStyleModel.getTextColor()\n      }\n    }));\n  },\n\n  /**\n   * @private\n   */\n  _renderBar: function (targetGroup) {\n    var visualMapModel = this.visualMapModel;\n    var shapes = this._shapes;\n    var itemSize = visualMapModel.itemSize;\n    var orient = this._orient;\n    var useHandle = this._useHandle;\n    var itemAlign = helper.getItemAlign(visualMapModel, this.api, itemSize);\n\n    var barGroup = shapes.barGroup = this._createBarGroup(itemAlign); // Bar\n\n\n    barGroup.add(shapes.outOfRange = createPolygon());\n    barGroup.add(shapes.inRange = createPolygon(null, useHandle ? getCursor(this._orient) : null, zrUtil.bind(this._dragHandle, this, 'all', false), zrUtil.bind(this._dragHandle, this, 'all', true)));\n    var textRect = visualMapModel.textStyleModel.getTextRect('国');\n    var textSize = mathMax(textRect.width, textRect.height); // Handle\n\n    if (useHandle) {\n      shapes.handleThumbs = [];\n      shapes.handleLabels = [];\n      shapes.handleLabelPoints = [];\n\n      this._createHandle(barGroup, 0, itemSize, textSize, orient, itemAlign);\n\n      this._createHandle(barGroup, 1, itemSize, textSize, orient, itemAlign);\n    }\n\n    this._createIndicator(barGroup, itemSize, textSize, orient);\n\n    targetGroup.add(barGroup);\n  },\n\n  /**\n   * @private\n   */\n  _createHandle: function (barGroup, handleIndex, itemSize, textSize, orient) {\n    var onDrift = zrUtil.bind(this._dragHandle, this, handleIndex, false);\n    var onDragEnd = zrUtil.bind(this._dragHandle, this, handleIndex, true);\n    var handleThumb = createPolygon(createHandlePoints(handleIndex, textSize), getCursor(this._orient), onDrift, onDragEnd);\n    handleThumb.position[0] = itemSize[0];\n    barGroup.add(handleThumb); // Text is always horizontal layout but should not be effected by\n    // transform (orient/inverse). So label is built separately but not\n    // use zrender/graphic/helper/RectText, and is located based on view\n    // group (according to handleLabelPoint) but not barGroup.\n\n    var textStyleModel = this.visualMapModel.textStyleModel;\n    var handleLabel = new graphic.Text({\n      draggable: true,\n      drift: onDrift,\n      onmousemove: function (e) {\n        // Fot mobile devicem, prevent screen slider on the button.\n        eventTool.stop(e.event);\n      },\n      ondragend: onDragEnd,\n      style: {\n        x: 0,\n        y: 0,\n        text: '',\n        textFont: textStyleModel.getFont(),\n        textFill: textStyleModel.getTextColor()\n      }\n    });\n    this.group.add(handleLabel);\n    var handleLabelPoint = [orient === 'horizontal' ? textSize / 2 : textSize * 1.5, orient === 'horizontal' ? handleIndex === 0 ? -(textSize * 1.5) : textSize * 1.5 : handleIndex === 0 ? -textSize / 2 : textSize / 2];\n    var shapes = this._shapes;\n    shapes.handleThumbs[handleIndex] = handleThumb;\n    shapes.handleLabelPoints[handleIndex] = handleLabelPoint;\n    shapes.handleLabels[handleIndex] = handleLabel;\n  },\n\n  /**\n   * @private\n   */\n  _createIndicator: function (barGroup, itemSize, textSize, orient) {\n    var indicator = createPolygon([[0, 0]], 'move');\n    indicator.position[0] = itemSize[0];\n    indicator.attr({\n      invisible: true,\n      silent: true\n    });\n    barGroup.add(indicator);\n    var textStyleModel = this.visualMapModel.textStyleModel;\n    var indicatorLabel = new graphic.Text({\n      silent: true,\n      invisible: true,\n      style: {\n        x: 0,\n        y: 0,\n        text: '',\n        textFont: textStyleModel.getFont(),\n        textFill: textStyleModel.getTextColor()\n      }\n    });\n    this.group.add(indicatorLabel);\n    var indicatorLabelPoint = [orient === 'horizontal' ? textSize / 2 : HOVER_LINK_OUT + 3, 0];\n    var shapes = this._shapes;\n    shapes.indicator = indicator;\n    shapes.indicatorLabel = indicatorLabel;\n    shapes.indicatorLabelPoint = indicatorLabelPoint;\n  },\n\n  /**\n   * @private\n   */\n  _dragHandle: function (handleIndex, isEnd, dx, dy) {\n    if (!this._useHandle) {\n      return;\n    }\n\n    this._dragging = !isEnd;\n\n    if (!isEnd) {\n      // Transform dx, dy to bar coordination.\n      var vertex = this._applyTransform([dx, dy], this._shapes.barGroup, true);\n\n      this._updateInterval(handleIndex, vertex[1]); // Considering realtime, update view should be executed\n      // before dispatch action.\n\n\n      this._updateView();\n    } // dragEnd do not dispatch action when realtime.\n\n\n    if (isEnd === !this.visualMapModel.get('realtime')) {\n      // jshint ignore:line\n      this.api.dispatchAction({\n        type: 'selectDataRange',\n        from: this.uid,\n        visualMapId: this.visualMapModel.id,\n        selected: this._dataInterval.slice()\n      });\n    }\n\n    if (isEnd) {\n      !this._hovering && this._clearHoverLinkToSeries();\n    } else if (useHoverLinkOnHandle(this.visualMapModel)) {\n      this._doHoverLinkToSeries(this._handleEnds[handleIndex], false);\n    }\n  },\n\n  /**\n   * @private\n   */\n  _resetInterval: function () {\n    var visualMapModel = this.visualMapModel;\n    var dataInterval = this._dataInterval = visualMapModel.getSelected();\n    var dataExtent = visualMapModel.getExtent();\n    var sizeExtent = [0, visualMapModel.itemSize[1]];\n    this._handleEnds = [linearMap(dataInterval[0], dataExtent, sizeExtent, true), linearMap(dataInterval[1], dataExtent, sizeExtent, true)];\n  },\n\n  /**\n   * @private\n   * @param {(number|string)} handleIndex 0 or 1 or 'all'\n   * @param {number} dx\n   * @param {number} dy\n   */\n  _updateInterval: function (handleIndex, delta) {\n    delta = delta || 0;\n    var visualMapModel = this.visualMapModel;\n    var handleEnds = this._handleEnds;\n    var sizeExtent = [0, visualMapModel.itemSize[1]];\n    sliderMove(delta, handleEnds, sizeExtent, handleIndex, // cross is forbiden\n    0);\n    var dataExtent = visualMapModel.getExtent(); // Update data interval.\n\n    this._dataInterval = [linearMap(handleEnds[0], sizeExtent, dataExtent, true), linearMap(handleEnds[1], sizeExtent, dataExtent, true)];\n  },\n\n  /**\n   * @private\n   */\n  _updateView: function (forSketch) {\n    var visualMapModel = this.visualMapModel;\n    var dataExtent = visualMapModel.getExtent();\n    var shapes = this._shapes;\n    var outOfRangeHandleEnds = [0, visualMapModel.itemSize[1]];\n    var inRangeHandleEnds = forSketch ? outOfRangeHandleEnds : this._handleEnds;\n\n    var visualInRange = this._createBarVisual(this._dataInterval, dataExtent, inRangeHandleEnds, 'inRange');\n\n    var visualOutOfRange = this._createBarVisual(dataExtent, dataExtent, outOfRangeHandleEnds, 'outOfRange');\n\n    shapes.inRange.setStyle({\n      fill: visualInRange.barColor,\n      opacity: visualInRange.opacity\n    }).setShape('points', visualInRange.barPoints);\n    shapes.outOfRange.setStyle({\n      fill: visualOutOfRange.barColor,\n      opacity: visualOutOfRange.opacity\n    }).setShape('points', visualOutOfRange.barPoints);\n\n    this._updateHandle(inRangeHandleEnds, visualInRange);\n  },\n\n  /**\n   * @private\n   */\n  _createBarVisual: function (dataInterval, dataExtent, handleEnds, forceState) {\n    var opts = {\n      forceState: forceState,\n      convertOpacityToAlpha: true\n    };\n\n    var colorStops = this._makeColorGradient(dataInterval, opts);\n\n    var symbolSizes = [this.getControllerVisual(dataInterval[0], 'symbolSize', opts), this.getControllerVisual(dataInterval[1], 'symbolSize', opts)];\n\n    var barPoints = this._createBarPoints(handleEnds, symbolSizes);\n\n    return {\n      barColor: new LinearGradient(0, 0, 0, 1, colorStops),\n      barPoints: barPoints,\n      handlesColor: [colorStops[0].color, colorStops[colorStops.length - 1].color]\n    };\n  },\n\n  /**\n   * @private\n   */\n  _makeColorGradient: function (dataInterval, opts) {\n    // Considering colorHue, which is not linear, so we have to sample\n    // to calculate gradient color stops, but not only caculate head\n    // and tail.\n    var sampleNumber = 100; // Arbitrary value.\n\n    var colorStops = [];\n    var step = (dataInterval[1] - dataInterval[0]) / sampleNumber;\n    colorStops.push({\n      color: this.getControllerVisual(dataInterval[0], 'color', opts),\n      offset: 0\n    });\n\n    for (var i = 1; i < sampleNumber; i++) {\n      var currValue = dataInterval[0] + step * i;\n\n      if (currValue > dataInterval[1]) {\n        break;\n      }\n\n      colorStops.push({\n        color: this.getControllerVisual(currValue, 'color', opts),\n        offset: i / sampleNumber\n      });\n    }\n\n    colorStops.push({\n      color: this.getControllerVisual(dataInterval[1], 'color', opts),\n      offset: 1\n    });\n    return colorStops;\n  },\n\n  /**\n   * @private\n   */\n  _createBarPoints: function (handleEnds, symbolSizes) {\n    var itemSize = this.visualMapModel.itemSize;\n    return [[itemSize[0] - symbolSizes[0], handleEnds[0]], [itemSize[0], handleEnds[0]], [itemSize[0], handleEnds[1]], [itemSize[0] - symbolSizes[1], handleEnds[1]]];\n  },\n\n  /**\n   * @private\n   */\n  _createBarGroup: function (itemAlign) {\n    var orient = this._orient;\n    var inverse = this.visualMapModel.get('inverse');\n    return new graphic.Group(orient === 'horizontal' && !inverse ? {\n      scale: itemAlign === 'bottom' ? [1, 1] : [-1, 1],\n      rotation: Math.PI / 2\n    } : orient === 'horizontal' && inverse ? {\n      scale: itemAlign === 'bottom' ? [-1, 1] : [1, 1],\n      rotation: -Math.PI / 2\n    } : orient === 'vertical' && !inverse ? {\n      scale: itemAlign === 'left' ? [1, -1] : [-1, -1]\n    } : {\n      scale: itemAlign === 'left' ? [1, 1] : [-1, 1]\n    });\n  },\n\n  /**\n   * @private\n   */\n  _updateHandle: function (handleEnds, visualInRange) {\n    if (!this._useHandle) {\n      return;\n    }\n\n    var shapes = this._shapes;\n    var visualMapModel = this.visualMapModel;\n    var handleThumbs = shapes.handleThumbs;\n    var handleLabels = shapes.handleLabels;\n    each([0, 1], function (handleIndex) {\n      var handleThumb = handleThumbs[handleIndex];\n      handleThumb.setStyle('fill', visualInRange.handlesColor[handleIndex]);\n      handleThumb.position[1] = handleEnds[handleIndex]; // Update handle label position.\n\n      var textPoint = graphic.applyTransform(shapes.handleLabelPoints[handleIndex], graphic.getTransform(handleThumb, this.group));\n      handleLabels[handleIndex].setStyle({\n        x: textPoint[0],\n        y: textPoint[1],\n        text: visualMapModel.formatValueText(this._dataInterval[handleIndex]),\n        textVerticalAlign: 'middle',\n        textAlign: this._applyTransform(this._orient === 'horizontal' ? handleIndex === 0 ? 'bottom' : 'top' : 'left', shapes.barGroup)\n      });\n    }, this);\n  },\n\n  /**\n   * @private\n   * @param {number} cursorValue\n   * @param {number} textValue\n   * @param {string} [rangeSymbol]\n   * @param {number} [halfHoverLinkSize]\n   */\n  _showIndicator: function (cursorValue, textValue, rangeSymbol, halfHoverLinkSize) {\n    var visualMapModel = this.visualMapModel;\n    var dataExtent = visualMapModel.getExtent();\n    var itemSize = visualMapModel.itemSize;\n    var sizeExtent = [0, itemSize[1]];\n    var pos = linearMap(cursorValue, dataExtent, sizeExtent, true);\n    var shapes = this._shapes;\n    var indicator = shapes.indicator;\n\n    if (!indicator) {\n      return;\n    }\n\n    indicator.position[1] = pos;\n    indicator.attr('invisible', false);\n    indicator.setShape('points', createIndicatorPoints(!!rangeSymbol, halfHoverLinkSize, pos, itemSize[1]));\n    var opts = {\n      convertOpacityToAlpha: true\n    };\n    var color = this.getControllerVisual(cursorValue, 'color', opts);\n    indicator.setStyle('fill', color); // Update handle label position.\n\n    var textPoint = graphic.applyTransform(shapes.indicatorLabelPoint, graphic.getTransform(indicator, this.group));\n    var indicatorLabel = shapes.indicatorLabel;\n    indicatorLabel.attr('invisible', false);\n\n    var align = this._applyTransform('left', shapes.barGroup);\n\n    var orient = this._orient;\n    indicatorLabel.setStyle({\n      text: (rangeSymbol ? rangeSymbol : '') + visualMapModel.formatValueText(textValue),\n      textVerticalAlign: orient === 'horizontal' ? align : 'middle',\n      textAlign: orient === 'horizontal' ? 'center' : align,\n      x: textPoint[0],\n      y: textPoint[1]\n    });\n  },\n\n  /**\n   * @private\n   */\n  _enableHoverLinkToSeries: function () {\n    var self = this;\n\n    this._shapes.barGroup.on('mousemove', function (e) {\n      self._hovering = true;\n\n      if (!self._dragging) {\n        var itemSize = self.visualMapModel.itemSize;\n\n        var pos = self._applyTransform([e.offsetX, e.offsetY], self._shapes.barGroup, true, true); // For hover link show when hover handle, which might be\n        // below or upper than sizeExtent.\n\n\n        pos[1] = mathMin(mathMax(0, pos[1]), itemSize[1]);\n\n        self._doHoverLinkToSeries(pos[1], 0 <= pos[0] && pos[0] <= itemSize[0]);\n      }\n    }).on('mouseout', function () {\n      // When mouse is out of handle, hoverLink still need\n      // to be displayed when realtime is set as false.\n      self._hovering = false;\n      !self._dragging && self._clearHoverLinkToSeries();\n    });\n  },\n\n  /**\n   * @private\n   */\n  _enableHoverLinkFromSeries: function () {\n    var zr = this.api.getZr();\n\n    if (this.visualMapModel.option.hoverLink) {\n      zr.on('mouseover', this._hoverLinkFromSeriesMouseOver, this);\n      zr.on('mouseout', this._hideIndicator, this);\n    } else {\n      this._clearHoverLinkFromSeries();\n    }\n  },\n\n  /**\n   * @private\n   */\n  _doHoverLinkToSeries: function (cursorPos, hoverOnBar) {\n    var visualMapModel = this.visualMapModel;\n    var itemSize = visualMapModel.itemSize;\n\n    if (!visualMapModel.option.hoverLink) {\n      return;\n    }\n\n    var sizeExtent = [0, itemSize[1]];\n    var dataExtent = visualMapModel.getExtent(); // For hover link show when hover handle, which might be below or upper than sizeExtent.\n\n    cursorPos = mathMin(mathMax(sizeExtent[0], cursorPos), sizeExtent[1]);\n    var halfHoverLinkSize = getHalfHoverLinkSize(visualMapModel, dataExtent, sizeExtent);\n    var hoverRange = [cursorPos - halfHoverLinkSize, cursorPos + halfHoverLinkSize];\n    var cursorValue = linearMap(cursorPos, sizeExtent, dataExtent, true);\n    var valueRange = [linearMap(hoverRange[0], sizeExtent, dataExtent, true), linearMap(hoverRange[1], sizeExtent, dataExtent, true)]; // Consider data range is out of visualMap range, see test/visualMap-continuous.html,\n    // where china and india has very large population.\n\n    hoverRange[0] < sizeExtent[0] && (valueRange[0] = -Infinity);\n    hoverRange[1] > sizeExtent[1] && (valueRange[1] = Infinity); // Do not show indicator when mouse is over handle,\n    // otherwise labels overlap, especially when dragging.\n\n    if (hoverOnBar) {\n      if (valueRange[0] === -Infinity) {\n        this._showIndicator(cursorValue, valueRange[1], '< ', halfHoverLinkSize);\n      } else if (valueRange[1] === Infinity) {\n        this._showIndicator(cursorValue, valueRange[0], '> ', halfHoverLinkSize);\n      } else {\n        this._showIndicator(cursorValue, cursorValue, '≈ ', halfHoverLinkSize);\n      }\n    } // When realtime is set as false, handles, which are in barGroup,\n    // also trigger hoverLink, which help user to realize where they\n    // focus on when dragging. (see test/heatmap-large.html)\n    // When realtime is set as true, highlight will not show when hover\n    // handle, because the label on handle, which displays a exact value\n    // but not range, might mislead users.\n\n\n    var oldBatch = this._hoverLinkDataIndices;\n    var newBatch = [];\n\n    if (hoverOnBar || useHoverLinkOnHandle(visualMapModel)) {\n      newBatch = this._hoverLinkDataIndices = visualMapModel.findTargetDataIndices(valueRange);\n    }\n\n    var resultBatches = modelUtil.compressBatches(oldBatch, newBatch);\n\n    this._dispatchHighDown('downplay', helper.convertDataIndex(resultBatches[0]));\n\n    this._dispatchHighDown('highlight', helper.convertDataIndex(resultBatches[1]));\n  },\n\n  /**\n   * @private\n   */\n  _hoverLinkFromSeriesMouseOver: function (e) {\n    var el = e.target;\n    var visualMapModel = this.visualMapModel;\n\n    if (!el || el.dataIndex == null) {\n      return;\n    }\n\n    var dataModel = this.ecModel.getSeriesByIndex(el.seriesIndex);\n\n    if (!visualMapModel.isTargetSeries(dataModel)) {\n      return;\n    }\n\n    var data = dataModel.getData(el.dataType);\n    var value = data.get(visualMapModel.getDataDimension(data), el.dataIndex, true);\n\n    if (!isNaN(value)) {\n      this._showIndicator(value, value);\n    }\n  },\n\n  /**\n   * @private\n   */\n  _hideIndicator: function () {\n    var shapes = this._shapes;\n    shapes.indicator && shapes.indicator.attr('invisible', true);\n    shapes.indicatorLabel && shapes.indicatorLabel.attr('invisible', true);\n  },\n\n  /**\n   * @private\n   */\n  _clearHoverLinkToSeries: function () {\n    this._hideIndicator();\n\n    var indices = this._hoverLinkDataIndices;\n\n    this._dispatchHighDown('downplay', helper.convertDataIndex(indices));\n\n    indices.length = 0;\n  },\n\n  /**\n   * @private\n   */\n  _clearHoverLinkFromSeries: function () {\n    this._hideIndicator();\n\n    var zr = this.api.getZr();\n    zr.off('mouseover', this._hoverLinkFromSeriesMouseOver);\n    zr.off('mouseout', this._hideIndicator);\n  },\n\n  /**\n   * @private\n   */\n  _applyTransform: function (vertex, element, inverse, global) {\n    var transform = graphic.getTransform(element, global ? null : this.group);\n    return graphic[zrUtil.isArray(vertex) ? 'applyTransform' : 'transformDirection'](vertex, transform, inverse);\n  },\n\n  /**\n   * @private\n   */\n  _dispatchHighDown: function (type, batch) {\n    batch && batch.length && this.api.dispatchAction({\n      type: type,\n      batch: batch\n    });\n  },\n\n  /**\n   * @override\n   */\n  dispose: function () {\n    this._clearHoverLinkFromSeries();\n\n    this._clearHoverLinkToSeries();\n  },\n\n  /**\n   * @override\n   */\n  remove: function () {\n    this._clearHoverLinkFromSeries();\n\n    this._clearHoverLinkToSeries();\n  }\n});\n\nfunction createPolygon(points, cursor, onDrift, onDragEnd) {\n  return new graphic.Polygon({\n    shape: {\n      points: points\n    },\n    draggable: !!onDrift,\n    cursor: cursor,\n    drift: onDrift,\n    onmousemove: function (e) {\n      // Fot mobile devicem, prevent screen slider on the button.\n      eventTool.stop(e.event);\n    },\n    ondragend: onDragEnd\n  });\n}\n\nfunction createHandlePoints(handleIndex, textSize) {\n  return handleIndex === 0 ? [[0, 0], [textSize, 0], [textSize, -textSize]] : [[0, 0], [textSize, 0], [textSize, textSize]];\n}\n\nfunction createIndicatorPoints(isRange, halfHoverLinkSize, pos, extentMax) {\n  return isRange ? [// indicate range\n  [0, -mathMin(halfHoverLinkSize, mathMax(pos, 0))], [HOVER_LINK_OUT, 0], [0, mathMin(halfHoverLinkSize, mathMax(extentMax - pos, 0))]] : [// indicate single value\n  [0, 0], [5, -5], [5, 5]];\n}\n\nfunction getHalfHoverLinkSize(visualMapModel, dataExtent, sizeExtent) {\n  var halfHoverLinkSize = HOVER_LINK_SIZE / 2;\n  var hoverLinkDataSize = visualMapModel.get('hoverLinkDataSize');\n\n  if (hoverLinkDataSize) {\n    halfHoverLinkSize = linearMap(hoverLinkDataSize, dataExtent, sizeExtent, true) / 2;\n  }\n\n  return halfHoverLinkSize;\n}\n\nfunction useHoverLinkOnHandle(visualMapModel) {\n  var hoverLinkOnHandle = visualMapModel.get('hoverLinkOnHandle');\n  return !!(hoverLinkOnHandle == null ? visualMapModel.get('realtime') : hoverLinkOnHandle);\n}\n\nfunction getCursor(orient) {\n  return orient === 'vertical' ? 'ns-resize' : 'ew-resize';\n}\n\nvar _default = ContinuousView;\nmodule.exports = _default;","var _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar VisualMapModel = require(\"./VisualMapModel\");\n\nvar VisualMapping = require(\"../../visual/VisualMapping\");\n\nvar visualDefault = require(\"../../visual/visualDefault\");\n\nvar _number = require(\"../../util/number\");\n\nvar reformIntervals = _number.reformIntervals;\nvar PiecewiseModel = VisualMapModel.extend({\n  type: 'visualMap.piecewise',\n\n  /**\n   * Order Rule:\n   *\n   * option.categories / option.pieces / option.text / option.selected:\n   *     If !option.inverse,\n   *     Order when vertical: ['top', ..., 'bottom'].\n   *     Order when horizontal: ['left', ..., 'right'].\n   *     If option.inverse, the meaning of\n   *     the order should be reversed.\n   *\n   * this._pieceList:\n   *     The order is always [low, ..., high].\n   *\n   * Mapping from location to low-high:\n   *     If !option.inverse\n   *     When vertical, top is high.\n   *     When horizontal, right is high.\n   *     If option.inverse, reverse.\n   */\n\n  /**\n   * @protected\n   */\n  defaultOption: {\n    selected: null,\n    // Object. If not specified, means selected.\n    // When pieces and splitNumber: {'0': true, '5': true}\n    // When categories: {'cate1': false, 'cate3': true}\n    // When selected === false, means all unselected.\n    minOpen: false,\n    // Whether include values that smaller than `min`.\n    maxOpen: false,\n    // Whether include values that bigger than `max`.\n    align: 'auto',\n    // 'auto', 'left', 'right'\n    itemWidth: 20,\n    // When put the controller vertically, it is the length of\n    // horizontal side of each item. Otherwise, vertical side.\n    itemHeight: 14,\n    // When put the controller vertically, it is the length of\n    // vertical side of each item. Otherwise, horizontal side.\n    itemSymbol: 'roundRect',\n    pieceList: null,\n    // Each item is Object, with some of those attrs:\n    // {min, max, lt, gt, lte, gte, value,\n    // color, colorSaturation, colorAlpha, opacity,\n    // symbol, symbolSize}, which customize the range or visual\n    // coding of the certain piece. Besides, see \"Order Rule\".\n    categories: null,\n    // category names, like: ['some1', 'some2', 'some3'].\n    // Attr min/max are ignored when categories set. See \"Order Rule\"\n    splitNumber: 5,\n    // If set to 5, auto split five pieces equally.\n    // If set to 0 and component type not set, component type will be\n    // determined as \"continuous\". (It is less reasonable but for ec2\n    // compatibility, see echarts/component/visualMap/typeDefaulter)\n    selectedMode: 'multiple',\n    // Can be 'multiple' or 'single'.\n    itemGap: 10,\n    // The gap between two items, in px.\n    hoverLink: true,\n    // Enable hover highlight.\n    showLabel: null // By default, when text is used, label will hide (the logic\n    // is remained for compatibility reason)\n\n  },\n\n  /**\n   * @override\n   */\n  optionUpdated: function (newOption, isInit) {\n    PiecewiseModel.superApply(this, 'optionUpdated', arguments);\n    /**\n     * The order is always [low, ..., high].\n     * [{text: string, interval: Array.<number>}, ...]\n     * @private\n     * @type {Array.<Object>}\n     */\n\n    this._pieceList = [];\n    this.resetExtent();\n    /**\n     * 'pieces', 'categories', 'splitNumber'\n     * @type {string}\n     */\n\n    var mode = this._mode = this._determineMode();\n\n    resetMethods[this._mode].call(this);\n\n    this._resetSelected(newOption, isInit);\n\n    var categories = this.option.categories;\n    this.resetVisual(function (mappingOption, state) {\n      if (mode === 'categories') {\n        mappingOption.mappingMethod = 'category';\n        mappingOption.categories = zrUtil.clone(categories);\n      } else {\n        mappingOption.dataExtent = this.getExtent();\n        mappingOption.mappingMethod = 'piecewise';\n        mappingOption.pieceList = zrUtil.map(this._pieceList, function (piece) {\n          var piece = zrUtil.clone(piece);\n\n          if (state !== 'inRange') {\n            // FIXME\n            // outOfRange do not support special visual in pieces.\n            piece.visual = null;\n          }\n\n          return piece;\n        });\n      }\n    });\n  },\n\n  /**\n   * @protected\n   * @override\n   */\n  completeVisualOption: function () {\n    // Consider this case:\n    // visualMap: {\n    //      pieces: [{symbol: 'circle', lt: 0}, {symbol: 'rect', gte: 0}]\n    // }\n    // where no inRange/outOfRange set but only pieces. So we should make\n    // default inRange/outOfRange for this case, otherwise visuals that only\n    // appear in `pieces` will not be taken into account in visual encoding.\n    var option = this.option;\n    var visualTypesInPieces = {};\n    var visualTypes = VisualMapping.listVisualTypes();\n    var isCategory = this.isCategory();\n    zrUtil.each(option.pieces, function (piece) {\n      zrUtil.each(visualTypes, function (visualType) {\n        if (piece.hasOwnProperty(visualType)) {\n          visualTypesInPieces[visualType] = 1;\n        }\n      });\n    });\n    zrUtil.each(visualTypesInPieces, function (v, visualType) {\n      var exists = 0;\n      zrUtil.each(this.stateList, function (state) {\n        exists |= has(option, state, visualType) || has(option.target, state, visualType);\n      }, this);\n      !exists && zrUtil.each(this.stateList, function (state) {\n        (option[state] || (option[state] = {}))[visualType] = visualDefault.get(visualType, state === 'inRange' ? 'active' : 'inactive', isCategory);\n      });\n    }, this);\n\n    function has(obj, state, visualType) {\n      return obj && obj[state] && (zrUtil.isObject(obj[state]) ? obj[state].hasOwnProperty(visualType) : obj[state] === visualType // e.g., inRange: 'symbol'\n      );\n    }\n\n    VisualMapModel.prototype.completeVisualOption.apply(this, arguments);\n  },\n  _resetSelected: function (newOption, isInit) {\n    var thisOption = this.option;\n    var pieceList = this._pieceList; // Selected do not merge but all override.\n\n    var selected = (isInit ? thisOption : newOption).selected || {};\n    thisOption.selected = selected; // Consider 'not specified' means true.\n\n    zrUtil.each(pieceList, function (piece, index) {\n      var key = this.getSelectedMapKey(piece);\n\n      if (!selected.hasOwnProperty(key)) {\n        selected[key] = true;\n      }\n    }, this);\n\n    if (thisOption.selectedMode === 'single') {\n      // Ensure there is only one selected.\n      var hasSel = false;\n      zrUtil.each(pieceList, function (piece, index) {\n        var key = this.getSelectedMapKey(piece);\n\n        if (selected[key]) {\n          hasSel ? selected[key] = false : hasSel = true;\n        }\n      }, this);\n    } // thisOption.selectedMode === 'multiple', default: all selected.\n\n  },\n\n  /**\n   * @public\n   */\n  getSelectedMapKey: function (piece) {\n    return this._mode === 'categories' ? piece.value + '' : piece.index + '';\n  },\n\n  /**\n   * @public\n   */\n  getPieceList: function () {\n    return this._pieceList;\n  },\n\n  /**\n   * @private\n   * @return {string}\n   */\n  _determineMode: function () {\n    var option = this.option;\n    return option.pieces && option.pieces.length > 0 ? 'pieces' : this.option.categories ? 'categories' : 'splitNumber';\n  },\n\n  /**\n   * @public\n   * @override\n   */\n  setSelected: function (selected) {\n    this.option.selected = zrUtil.clone(selected);\n  },\n\n  /**\n   * @public\n   * @override\n   */\n  getValueState: function (value) {\n    var index = VisualMapping.findPieceIndex(value, this._pieceList);\n    return index != null ? this.option.selected[this.getSelectedMapKey(this._pieceList[index])] ? 'inRange' : 'outOfRange' : 'outOfRange';\n  },\n\n  /**\n   * @public\n   * @params {number} pieceIndex piece index in visualMapModel.getPieceList()\n   * @return {Array.<Object>} [{seriesId, dataIndices: <Array.<number>>}, ...]\n   */\n  findTargetDataIndices: function (pieceIndex) {\n    var result = [];\n    this.eachTargetSeries(function (seriesModel) {\n      var dataIndices = [];\n      var data = seriesModel.getData();\n      data.each(this.getDataDimension(data), function (value, dataIndex) {\n        // Should always base on model pieceList, because it is order sensitive.\n        var pIdx = VisualMapping.findPieceIndex(value, this._pieceList);\n        pIdx === pieceIndex && dataIndices.push(dataIndex);\n      }, true, this);\n      result.push({\n        seriesId: seriesModel.id,\n        dataIndex: dataIndices\n      });\n    }, this);\n    return result;\n  },\n\n  /**\n   * @private\n   * @param {Object} piece piece.value or piece.interval is required.\n   * @return {number} Can be Infinity or -Infinity\n   */\n  getRepresentValue: function (piece) {\n    var representValue;\n\n    if (this.isCategory()) {\n      representValue = piece.value;\n    } else {\n      if (piece.value != null) {\n        representValue = piece.value;\n      } else {\n        var pieceInterval = piece.interval || [];\n        representValue = pieceInterval[0] === -Infinity && pieceInterval[1] === Infinity ? 0 : (pieceInterval[0] + pieceInterval[1]) / 2;\n      }\n    }\n\n    return representValue;\n  },\n  getVisualMeta: function (getColorVisual) {\n    // Do not support category. (category axis is ordinal, numerical)\n    if (this.isCategory()) {\n      return;\n    }\n\n    var stops = [];\n    var outerColors = [];\n    var visualMapModel = this;\n\n    function setStop(interval, valueState) {\n      var representValue = visualMapModel.getRepresentValue({\n        interval: interval\n      });\n\n      if (!valueState) {\n        valueState = visualMapModel.getValueState(representValue);\n      }\n\n      var color = getColorVisual(representValue, valueState);\n\n      if (interval[0] === -Infinity) {\n        outerColors[0] = color;\n      } else if (interval[1] === Infinity) {\n        outerColors[1] = color;\n      } else {\n        stops.push({\n          value: interval[0],\n          color: color\n        }, {\n          value: interval[1],\n          color: color\n        });\n      }\n    } // Suplement\n\n\n    var pieceList = this._pieceList.slice();\n\n    if (!pieceList.length) {\n      pieceList.push({\n        interval: [-Infinity, Infinity]\n      });\n    } else {\n      var edge = pieceList[0].interval[0];\n      edge !== -Infinity && pieceList.unshift({\n        interval: [-Infinity, edge]\n      });\n      edge = pieceList[pieceList.length - 1].interval[1];\n      edge !== Infinity && pieceList.push({\n        interval: [edge, Infinity]\n      });\n    }\n\n    var curr = -Infinity;\n    zrUtil.each(pieceList, function (piece) {\n      var interval = piece.interval;\n\n      if (interval) {\n        // Fulfill gap.\n        interval[0] > curr && setStop([curr, interval[0]], 'outOfRange');\n        setStop(interval.slice());\n        curr = interval[1];\n      }\n    }, this);\n    return {\n      stops: stops,\n      outerColors: outerColors\n    };\n  }\n});\n/**\n * Key is this._mode\n * @type {Object}\n * @this {module:echarts/component/viusalMap/PiecewiseMode}\n */\n\nvar resetMethods = {\n  splitNumber: function () {\n    var thisOption = this.option;\n    var pieceList = this._pieceList;\n    var precision = Math.min(thisOption.precision, 20);\n    var dataExtent = this.getExtent();\n    var splitNumber = thisOption.splitNumber;\n    splitNumber = Math.max(parseInt(splitNumber, 10), 1);\n    thisOption.splitNumber = splitNumber;\n    var splitStep = (dataExtent[1] - dataExtent[0]) / splitNumber; // Precision auto-adaption\n\n    while (+splitStep.toFixed(precision) !== splitStep && precision < 5) {\n      precision++;\n    }\n\n    thisOption.precision = precision;\n    splitStep = +splitStep.toFixed(precision);\n    var index = 0;\n\n    if (thisOption.minOpen) {\n      pieceList.push({\n        index: index++,\n        interval: [-Infinity, dataExtent[0]],\n        close: [0, 0]\n      });\n    }\n\n    for (var curr = dataExtent[0], len = index + splitNumber; index < len; curr += splitStep) {\n      var max = index === splitNumber - 1 ? dataExtent[1] : curr + splitStep;\n      pieceList.push({\n        index: index++,\n        interval: [curr, max],\n        close: [1, 1]\n      });\n    }\n\n    if (thisOption.maxOpen) {\n      pieceList.push({\n        index: index++,\n        interval: [dataExtent[1], Infinity],\n        close: [0, 0]\n      });\n    }\n\n    reformIntervals(pieceList);\n    zrUtil.each(pieceList, function (piece) {\n      piece.text = this.formatValueText(piece.interval);\n    }, this);\n  },\n  categories: function () {\n    var thisOption = this.option;\n    zrUtil.each(thisOption.categories, function (cate) {\n      // FIXME category模式也使用pieceList，但在visualMapping中不是使用pieceList。\n      // 是否改一致。\n      this._pieceList.push({\n        text: this.formatValueText(cate, true),\n        value: cate\n      });\n    }, this); // See \"Order Rule\".\n\n    normalizeReverse(thisOption, this._pieceList);\n  },\n  pieces: function () {\n    var thisOption = this.option;\n    var pieceList = this._pieceList;\n    zrUtil.each(thisOption.pieces, function (pieceListItem, index) {\n      if (!zrUtil.isObject(pieceListItem)) {\n        pieceListItem = {\n          value: pieceListItem\n        };\n      }\n\n      var item = {\n        text: '',\n        index: index\n      };\n\n      if (pieceListItem.label != null) {\n        item.text = pieceListItem.label;\n      }\n\n      if (pieceListItem.hasOwnProperty('value')) {\n        var value = item.value = pieceListItem.value;\n        item.interval = [value, value];\n        item.close = [1, 1];\n      } else {\n        // `min` `max` is legacy option.\n        // `lt` `gt` `lte` `gte` is recommanded.\n        var interval = item.interval = [];\n        var close = item.close = [0, 0];\n        var closeList = [1, 0, 1];\n        var infinityList = [-Infinity, Infinity];\n        var useMinMax = [];\n\n        for (var lg = 0; lg < 2; lg++) {\n          var names = [['gte', 'gt', 'min'], ['lte', 'lt', 'max']][lg];\n\n          for (var i = 0; i < 3 && interval[lg] == null; i++) {\n            interval[lg] = pieceListItem[names[i]];\n            close[lg] = closeList[i];\n            useMinMax[lg] = i === 2;\n          }\n\n          interval[lg] == null && (interval[lg] = infinityList[lg]);\n        }\n\n        useMinMax[0] && interval[1] === Infinity && (close[0] = 0);\n        useMinMax[1] && interval[0] === -Infinity && (close[1] = 0);\n\n        if (interval[0] === interval[1] && close[0] && close[1]) {\n          // Consider: [{min: 5, max: 5, visual: {...}}, {min: 0, max: 5}],\n          // we use value to lift the priority when min === max\n          item.value = interval[0];\n        }\n      }\n\n      item.visual = VisualMapping.retrieveVisuals(pieceListItem);\n      pieceList.push(item);\n    }, this); // See \"Order Rule\".\n\n    normalizeReverse(thisOption, pieceList); // Only pieces\n\n    reformIntervals(pieceList);\n    zrUtil.each(pieceList, function (piece) {\n      var close = piece.close;\n      var edgeSymbols = [['<', '≤'][close[1]], ['>', '≥'][close[0]]];\n      piece.text = piece.text || this.formatValueText(piece.value != null ? piece.value : piece.interval, false, edgeSymbols);\n    }, this);\n  }\n};\n\nfunction normalizeReverse(thisOption, pieceList) {\n  var inverse = thisOption.inverse;\n\n  if (thisOption.orient === 'vertical' ? !inverse : inverse) {\n    pieceList.reverse();\n  }\n}\n\nvar _default = PiecewiseModel;\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar VisualMapView = require(\"./VisualMapView\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar _symbol = require(\"../../util/symbol\");\n\nvar createSymbol = _symbol.createSymbol;\n\nvar layout = require(\"../../util/layout\");\n\nvar helper = require(\"./helper\");\n\nvar PiecewiseVisualMapView = VisualMapView.extend({\n  type: 'visualMap.piecewise',\n\n  /**\n   * @protected\n   * @override\n   */\n  doRender: function () {\n    var thisGroup = this.group;\n    thisGroup.removeAll();\n    var visualMapModel = this.visualMapModel;\n    var textGap = visualMapModel.get('textGap');\n    var textStyleModel = visualMapModel.textStyleModel;\n    var textFont = textStyleModel.getFont();\n    var textFill = textStyleModel.getTextColor();\n\n    var itemAlign = this._getItemAlign();\n\n    var itemSize = visualMapModel.itemSize;\n\n    var viewData = this._getViewData();\n\n    var endsText = viewData.endsText;\n    var showLabel = zrUtil.retrieve(visualMapModel.get('showLabel', true), !endsText);\n    endsText && this._renderEndsText(thisGroup, endsText[0], itemSize, showLabel, itemAlign);\n    zrUtil.each(viewData.viewPieceList, renderItem, this);\n    endsText && this._renderEndsText(thisGroup, endsText[1], itemSize, showLabel, itemAlign);\n    layout.box(visualMapModel.get('orient'), thisGroup, visualMapModel.get('itemGap'));\n    this.renderBackground(thisGroup);\n    this.positionGroup(thisGroup);\n\n    function renderItem(item) {\n      var piece = item.piece;\n      var itemGroup = new graphic.Group();\n      itemGroup.onclick = zrUtil.bind(this._onItemClick, this, piece);\n\n      this._enableHoverLink(itemGroup, item.indexInModelPieceList);\n\n      var representValue = visualMapModel.getRepresentValue(piece);\n\n      this._createItemSymbol(itemGroup, representValue, [0, 0, itemSize[0], itemSize[1]]);\n\n      if (showLabel) {\n        var visualState = this.visualMapModel.getValueState(representValue);\n        itemGroup.add(new graphic.Text({\n          style: {\n            x: itemAlign === 'right' ? -textGap : itemSize[0] + textGap,\n            y: itemSize[1] / 2,\n            text: piece.text,\n            textVerticalAlign: 'middle',\n            textAlign: itemAlign,\n            textFont: textFont,\n            textFill: textFill,\n            opacity: visualState === 'outOfRange' ? 0.5 : 1\n          }\n        }));\n      }\n\n      thisGroup.add(itemGroup);\n    }\n  },\n\n  /**\n   * @private\n   */\n  _enableHoverLink: function (itemGroup, pieceIndex) {\n    itemGroup.on('mouseover', zrUtil.bind(onHoverLink, this, 'highlight')).on('mouseout', zrUtil.bind(onHoverLink, this, 'downplay'));\n\n    function onHoverLink(method) {\n      var visualMapModel = this.visualMapModel;\n      visualMapModel.option.hoverLink && this.api.dispatchAction({\n        type: method,\n        batch: helper.convertDataIndex(visualMapModel.findTargetDataIndices(pieceIndex))\n      });\n    }\n  },\n\n  /**\n   * @private\n   */\n  _getItemAlign: function () {\n    var visualMapModel = this.visualMapModel;\n    var modelOption = visualMapModel.option;\n\n    if (modelOption.orient === 'vertical') {\n      return helper.getItemAlign(visualMapModel, this.api, visualMapModel.itemSize);\n    } else {\n      // horizontal, most case left unless specifying right.\n      var align = modelOption.align;\n\n      if (!align || align === 'auto') {\n        align = 'left';\n      }\n\n      return align;\n    }\n  },\n\n  /**\n   * @private\n   */\n  _renderEndsText: function (group, text, itemSize, showLabel, itemAlign) {\n    if (!text) {\n      return;\n    }\n\n    var itemGroup = new graphic.Group();\n    var textStyleModel = this.visualMapModel.textStyleModel;\n    itemGroup.add(new graphic.Text({\n      style: {\n        x: showLabel ? itemAlign === 'right' ? itemSize[0] : 0 : itemSize[0] / 2,\n        y: itemSize[1] / 2,\n        textVerticalAlign: 'middle',\n        textAlign: showLabel ? itemAlign : 'center',\n        text: text,\n        textFont: textStyleModel.getFont(),\n        textFill: textStyleModel.getTextColor()\n      }\n    }));\n    group.add(itemGroup);\n  },\n\n  /**\n   * @private\n   * @return {Object} {peiceList, endsText} The order is the same as screen pixel order.\n   */\n  _getViewData: function () {\n    var visualMapModel = this.visualMapModel;\n    var viewPieceList = zrUtil.map(visualMapModel.getPieceList(), function (piece, index) {\n      return {\n        piece: piece,\n        indexInModelPieceList: index\n      };\n    });\n    var endsText = visualMapModel.get('text'); // Consider orient and inverse.\n\n    var orient = visualMapModel.get('orient');\n    var inverse = visualMapModel.get('inverse'); // Order of model pieceList is always [low, ..., high]\n\n    if (orient === 'horizontal' ? inverse : !inverse) {\n      viewPieceList.reverse();\n    } // Origin order of endsText is [high, low]\n    else if (endsText) {\n        endsText = endsText.slice().reverse();\n      }\n\n    return {\n      viewPieceList: viewPieceList,\n      endsText: endsText\n    };\n  },\n\n  /**\n   * @private\n   */\n  _createItemSymbol: function (group, representValue, shapeParam) {\n    group.add(createSymbol(this.getControllerVisual(representValue, 'symbol'), shapeParam[0], shapeParam[1], shapeParam[2], shapeParam[3], this.getControllerVisual(representValue, 'color')));\n  },\n\n  /**\n   * @private\n   */\n  _onItemClick: function (piece) {\n    var visualMapModel = this.visualMapModel;\n    var option = visualMapModel.option;\n    var selected = zrUtil.clone(option.selected);\n    var newKey = visualMapModel.getSelectedMapKey(piece);\n\n    if (option.selectedMode === 'single') {\n      selected[newKey] = true;\n      zrUtil.each(selected, function (o, key) {\n        selected[key] = key === newKey;\n      });\n    } else {\n      selected[newKey] = !selected[newKey];\n    }\n\n    this.api.dispatchAction({\n      type: 'selectDataRange',\n      from: this.uid,\n      visualMapId: this.visualMapModel.id,\n      selected: selected\n    });\n  }\n});\nvar _default = PiecewiseVisualMapView;\nmodule.exports = _default;","var echarts = require(\"../../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar env = require(\"zrender/lib/core/env\");\n\nvar visualDefault = require(\"../../visual/visualDefault\");\n\nvar VisualMapping = require(\"../../visual/VisualMapping\");\n\nvar visualSolution = require(\"../../visual/visualSolution\");\n\nvar modelUtil = require(\"../../util/model\");\n\nvar numberUtil = require(\"../../util/number\");\n\nvar mapVisual = VisualMapping.mapVisual;\nvar eachVisual = VisualMapping.eachVisual;\nvar isArray = zrUtil.isArray;\nvar each = zrUtil.each;\nvar asc = numberUtil.asc;\nvar linearMap = numberUtil.linearMap;\nvar noop = zrUtil.noop;\nvar VisualMapModel = echarts.extendComponentModel({\n  type: 'visualMap',\n  dependencies: ['series'],\n\n  /**\n   * @readOnly\n   * @type {Array.<string>}\n   */\n  stateList: ['inRange', 'outOfRange'],\n\n  /**\n   * @readOnly\n   * @type {Array.<string>}\n   */\n  replacableOptionKeys: ['inRange', 'outOfRange', 'target', 'controller', 'color'],\n\n  /**\n   * [lowerBound, upperBound]\n   *\n   * @readOnly\n   * @type {Array.<number>}\n   */\n  dataBound: [-Infinity, Infinity],\n\n  /**\n   * @readOnly\n   * @type {string|Object}\n   */\n  layoutMode: {\n    type: 'box',\n    ignoreSize: true\n  },\n\n  /**\n   * @protected\n   */\n  defaultOption: {\n    show: true,\n    zlevel: 0,\n    z: 4,\n    seriesIndex: 'all',\n    // 'all' or null/undefined: all series.\n    // A number or an array of number: the specified series.\n    // set min: 0, max: 200, only for campatible with ec2.\n    // In fact min max should not have default value.\n    min: 0,\n    // min value, must specified if pieces is not specified.\n    max: 200,\n    // max value, must specified if pieces is not specified.\n    dimension: null,\n    inRange: null,\n    // 'color', 'colorHue', 'colorSaturation', 'colorLightness', 'colorAlpha',\n    // 'symbol', 'symbolSize'\n    outOfRange: null,\n    // 'color', 'colorHue', 'colorSaturation',\n    // 'colorLightness', 'colorAlpha',\n    // 'symbol', 'symbolSize'\n    left: 0,\n    // 'center' ¦ 'left' ¦ 'right' ¦ {number} (px)\n    right: null,\n    // The same as left.\n    top: null,\n    // 'top' ¦ 'bottom' ¦ 'center' ¦ {number} (px)\n    bottom: 0,\n    // The same as top.\n    itemWidth: null,\n    itemHeight: null,\n    inverse: false,\n    orient: 'vertical',\n    // 'horizontal' ¦ 'vertical'\n    backgroundColor: 'rgba(0,0,0,0)',\n    borderColor: '#ccc',\n    // 值域边框颜色\n    contentColor: '#5793f3',\n    inactiveColor: '#aaa',\n    borderWidth: 0,\n    // 值域边框线宽，单位px，默认为0（无边框）\n    padding: 5,\n    // 值域内边距，单位px，默认各方向内边距为5，\n    // 接受数组分别设定上右下左边距，同css\n    textGap: 10,\n    //\n    precision: 0,\n    // 小数精度，默认为0，无小数点\n    color: null,\n    //颜色（deprecated，兼容ec2，顺序同pieces，不同于inRange/outOfRange）\n    formatter: null,\n    text: null,\n    // 文本，如['高', '低']，兼容ec2，text[0]对应高值，text[1]对应低值\n    textStyle: {\n      color: '#333' // 值域文字颜色\n\n    }\n  },\n\n  /**\n   * @protected\n   */\n  init: function (option, parentModel, ecModel) {\n    /**\n     * @private\n     * @type {Array.<number>}\n     */\n    this._dataExtent;\n    /**\n     * @readOnly\n     */\n\n    this.targetVisuals = {};\n    /**\n     * @readOnly\n     */\n\n    this.controllerVisuals = {};\n    /**\n     * @readOnly\n     */\n\n    this.textStyleModel;\n    /**\n     * [width, height]\n     * @readOnly\n     * @type {Array.<number>}\n     */\n\n    this.itemSize;\n    this.mergeDefaultAndTheme(option, ecModel);\n  },\n\n  /**\n   * @protected\n   */\n  optionUpdated: function (newOption, isInit) {\n    var thisOption = this.option; // FIXME\n    // necessary?\n    // Disable realtime view update if canvas is not supported.\n\n    if (!env.canvasSupported) {\n      thisOption.realtime = false;\n    }\n\n    !isInit && visualSolution.replaceVisualOption(thisOption, newOption, this.replacableOptionKeys);\n    this.textStyleModel = this.getModel('textStyle');\n    this.resetItemSize();\n    this.completeVisualOption();\n  },\n\n  /**\n   * @protected\n   */\n  resetVisual: function (supplementVisualOption) {\n    var stateList = this.stateList;\n    supplementVisualOption = zrUtil.bind(supplementVisualOption, this);\n    this.controllerVisuals = visualSolution.createVisualMappings(this.option.controller, stateList, supplementVisualOption);\n    this.targetVisuals = visualSolution.createVisualMappings(this.option.target, stateList, supplementVisualOption);\n  },\n\n  /**\n   * @protected\n   * @return {Array.<number>} An array of series indices.\n   */\n  getTargetSeriesIndices: function () {\n    var optionSeriesIndex = this.option.seriesIndex;\n    var seriesIndices = [];\n\n    if (optionSeriesIndex == null || optionSeriesIndex === 'all') {\n      this.ecModel.eachSeries(function (seriesModel, index) {\n        seriesIndices.push(index);\n      });\n    } else {\n      seriesIndices = modelUtil.normalizeToArray(optionSeriesIndex);\n    }\n\n    return seriesIndices;\n  },\n\n  /**\n   * @public\n   */\n  eachTargetSeries: function (callback, context) {\n    zrUtil.each(this.getTargetSeriesIndices(), function (seriesIndex) {\n      callback.call(context, this.ecModel.getSeriesByIndex(seriesIndex));\n    }, this);\n  },\n\n  /**\n   * @pubilc\n   */\n  isTargetSeries: function (seriesModel) {\n    var is = false;\n    this.eachTargetSeries(function (model) {\n      model === seriesModel && (is = true);\n    });\n    return is;\n  },\n\n  /**\n   * @example\n   * this.formatValueText(someVal); // format single numeric value to text.\n   * this.formatValueText(someVal, true); // format single category value to text.\n   * this.formatValueText([min, max]); // format numeric min-max to text.\n   * this.formatValueText([this.dataBound[0], max]); // using data lower bound.\n   * this.formatValueText([min, this.dataBound[1]]); // using data upper bound.\n   *\n   * @param {number|Array.<number>} value Real value, or this.dataBound[0 or 1].\n   * @param {boolean} [isCategory=false] Only available when value is number.\n   * @param {Array.<string>} edgeSymbols Open-close symbol when value is interval.\n   * @return {string}\n   * @protected\n   */\n  formatValueText: function (value, isCategory, edgeSymbols) {\n    var option = this.option;\n    var precision = option.precision;\n    var dataBound = this.dataBound;\n    var formatter = option.formatter;\n    var isMinMax;\n    var textValue;\n    edgeSymbols = edgeSymbols || ['<', '>'];\n\n    if (zrUtil.isArray(value)) {\n      value = value.slice();\n      isMinMax = true;\n    }\n\n    textValue = isCategory ? value : isMinMax ? [toFixed(value[0]), toFixed(value[1])] : toFixed(value);\n\n    if (zrUtil.isString(formatter)) {\n      return formatter.replace('{value}', isMinMax ? textValue[0] : textValue).replace('{value2}', isMinMax ? textValue[1] : textValue);\n    } else if (zrUtil.isFunction(formatter)) {\n      return isMinMax ? formatter(value[0], value[1]) : formatter(value);\n    }\n\n    if (isMinMax) {\n      if (value[0] === dataBound[0]) {\n        return edgeSymbols[0] + ' ' + textValue[1];\n      } else if (value[1] === dataBound[1]) {\n        return edgeSymbols[1] + ' ' + textValue[0];\n      } else {\n        return textValue[0] + ' - ' + textValue[1];\n      }\n    } else {\n      // Format single value (includes category case).\n      return textValue;\n    }\n\n    function toFixed(val) {\n      return val === dataBound[0] ? 'min' : val === dataBound[1] ? 'max' : (+val).toFixed(Math.min(precision, 20));\n    }\n  },\n\n  /**\n   * @protected\n   */\n  resetExtent: function () {\n    var thisOption = this.option; // Can not calculate data extent by data here.\n    // Because series and data may be modified in processing stage.\n    // So we do not support the feature \"auto min/max\".\n\n    var extent = asc([thisOption.min, thisOption.max]);\n    this._dataExtent = extent;\n  },\n\n  /**\n   * @public\n   * @param {module:echarts/data/List} list\n   * @return {string} Concrete dimention. If return null/undefined,\n   *                  no dimension used.\n   */\n  getDataDimension: function (list) {\n    var optDim = this.option.dimension;\n    var listDimensions = list.dimensions;\n\n    if (optDim == null && !listDimensions.length) {\n      return;\n    }\n\n    return list.getDimension(optDim != null ? optDim : listDimensions.length - 1);\n  },\n\n  /**\n   * @public\n   * @override\n   */\n  getExtent: function () {\n    return this._dataExtent.slice();\n  },\n\n  /**\n   * @protected\n   */\n  completeVisualOption: function () {\n    var ecModel = this.ecModel;\n    var thisOption = this.option;\n    var base = {\n      inRange: thisOption.inRange,\n      outOfRange: thisOption.outOfRange\n    };\n    var target = thisOption.target || (thisOption.target = {});\n    var controller = thisOption.controller || (thisOption.controller = {});\n    zrUtil.merge(target, base); // Do not override\n\n    zrUtil.merge(controller, base); // Do not override\n\n    var isCategory = this.isCategory();\n    completeSingle.call(this, target);\n    completeSingle.call(this, controller);\n    completeInactive.call(this, target, 'inRange', 'outOfRange'); // completeInactive.call(this, target, 'outOfRange', 'inRange');\n\n    completeController.call(this, controller);\n\n    function completeSingle(base) {\n      // Compatible with ec2 dataRange.color.\n      // The mapping order of dataRange.color is: [high value, ..., low value]\n      // whereas inRange.color and outOfRange.color is [low value, ..., high value]\n      // Notice: ec2 has no inverse.\n      if (isArray(thisOption.color) // If there has been inRange: {symbol: ...}, adding color is a mistake.\n      // So adding color only when no inRange defined.\n      && !base.inRange) {\n        base.inRange = {\n          color: thisOption.color.slice().reverse()\n        };\n      } // Compatible with previous logic, always give a defautl color, otherwise\n      // simple config with no inRange and outOfRange will not work.\n      // Originally we use visualMap.color as the default color, but setOption at\n      // the second time the default color will be erased. So we change to use\n      // constant DEFAULT_COLOR.\n      // If user do not want the defualt color, set inRange: {color: null}.\n\n\n      base.inRange = base.inRange || {\n        color: ecModel.get('gradientColor')\n      }; // If using shortcut like: {inRange: 'symbol'}, complete default value.\n\n      each(this.stateList, function (state) {\n        var visualType = base[state];\n\n        if (zrUtil.isString(visualType)) {\n          var defa = visualDefault.get(visualType, 'active', isCategory);\n\n          if (defa) {\n            base[state] = {};\n            base[state][visualType] = defa;\n          } else {\n            // Mark as not specified.\n            delete base[state];\n          }\n        }\n      }, this);\n    }\n\n    function completeInactive(base, stateExist, stateAbsent) {\n      var optExist = base[stateExist];\n      var optAbsent = base[stateAbsent];\n\n      if (optExist && !optAbsent) {\n        optAbsent = base[stateAbsent] = {};\n        each(optExist, function (visualData, visualType) {\n          if (!VisualMapping.isValidType(visualType)) {\n            return;\n          }\n\n          var defa = visualDefault.get(visualType, 'inactive', isCategory);\n\n          if (defa != null) {\n            optAbsent[visualType] = defa; // Compatibable with ec2:\n            // Only inactive color to rgba(0,0,0,0) can not\n            // make label transparent, so use opacity also.\n\n            if (visualType === 'color' && !optAbsent.hasOwnProperty('opacity') && !optAbsent.hasOwnProperty('colorAlpha')) {\n              optAbsent.opacity = [0, 0];\n            }\n          }\n        });\n      }\n    }\n\n    function completeController(controller) {\n      var symbolExists = (controller.inRange || {}).symbol || (controller.outOfRange || {}).symbol;\n      var symbolSizeExists = (controller.inRange || {}).symbolSize || (controller.outOfRange || {}).symbolSize;\n      var inactiveColor = this.get('inactiveColor');\n      each(this.stateList, function (state) {\n        var itemSize = this.itemSize;\n        var visuals = controller[state]; // Set inactive color for controller if no other color\n        // attr (like colorAlpha) specified.\n\n        if (!visuals) {\n          visuals = controller[state] = {\n            color: isCategory ? inactiveColor : [inactiveColor]\n          };\n        } // Consistent symbol and symbolSize if not specified.\n\n\n        if (visuals.symbol == null) {\n          visuals.symbol = symbolExists && zrUtil.clone(symbolExists) || (isCategory ? 'roundRect' : ['roundRect']);\n        }\n\n        if (visuals.symbolSize == null) {\n          visuals.symbolSize = symbolSizeExists && zrUtil.clone(symbolSizeExists) || (isCategory ? itemSize[0] : [itemSize[0], itemSize[0]]);\n        } // Filter square and none.\n\n\n        visuals.symbol = mapVisual(visuals.symbol, function (symbol) {\n          return symbol === 'none' || symbol === 'square' ? 'roundRect' : symbol;\n        }); // Normalize symbolSize\n\n        var symbolSize = visuals.symbolSize;\n\n        if (symbolSize != null) {\n          var max = -Infinity; // symbolSize can be object when categories defined.\n\n          eachVisual(symbolSize, function (value) {\n            value > max && (max = value);\n          });\n          visuals.symbolSize = mapVisual(symbolSize, function (value) {\n            return linearMap(value, [0, max], [0, itemSize[0]], true);\n          });\n        }\n      }, this);\n    }\n  },\n\n  /**\n   * @protected\n   */\n  resetItemSize: function () {\n    this.itemSize = [parseFloat(this.get('itemWidth')), parseFloat(this.get('itemHeight'))];\n  },\n\n  /**\n   * @public\n   */\n  isCategory: function () {\n    return !!this.option.categories;\n  },\n\n  /**\n   * @public\n   * @abstract\n   */\n  setSelected: noop,\n\n  /**\n   * @public\n   * @abstract\n   * @param {*|module:echarts/data/List} valueOrData\n   * @param {number} dataIndex\n   * @return {string} state See this.stateList\n   */\n  getValueState: noop,\n\n  /**\n   * FIXME\n   * Do not publish to thirt-part-dev temporarily\n   * util the interface is stable. (Should it return\n   * a function but not visual meta?)\n   *\n   * @pubilc\n   * @abstract\n   * @param {Function} getColorVisual\n   *        params: value, valueState\n   *        return: color\n   * @return {Object} visualMeta\n   *        should includes {stops, outerColors}\n   *        outerColor means [colorBeyondMinValue, colorBeyondMaxValue]\n   */\n  getVisualMeta: noop\n});\nvar _default = VisualMapModel;\nmodule.exports = _default;","var echarts = require(\"../../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar formatUtil = require(\"../../util/format\");\n\nvar layout = require(\"../../util/layout\");\n\nvar VisualMapping = require(\"../../visual/VisualMapping\");\n\nvar _default = echarts.extendComponentView({\n  type: 'visualMap',\n\n  /**\n   * @readOnly\n   * @type {Object}\n   */\n  autoPositionValues: {\n    left: 1,\n    right: 1,\n    top: 1,\n    bottom: 1\n  },\n  init: function (ecModel, api) {\n    /**\n     * @readOnly\n     * @type {module:echarts/model/Global}\n     */\n    this.ecModel = ecModel;\n    /**\n     * @readOnly\n     * @type {module:echarts/ExtensionAPI}\n     */\n\n    this.api = api;\n    /**\n     * @readOnly\n     * @type {module:echarts/component/visualMap/visualMapModel}\n     */\n\n    this.visualMapModel;\n  },\n\n  /**\n   * @protected\n   */\n  render: function (visualMapModel, ecModel, api, payload) {\n    this.visualMapModel = visualMapModel;\n\n    if (visualMapModel.get('show') === false) {\n      this.group.removeAll();\n      return;\n    }\n\n    this.doRender.apply(this, arguments);\n  },\n\n  /**\n   * @protected\n   */\n  renderBackground: function (group) {\n    var visualMapModel = this.visualMapModel;\n    var padding = formatUtil.normalizeCssArray(visualMapModel.get('padding') || 0);\n    var rect = group.getBoundingRect();\n    group.add(new graphic.Rect({\n      z2: -1,\n      // Lay background rect on the lowest layer.\n      silent: true,\n      shape: {\n        x: rect.x - padding[3],\n        y: rect.y - padding[0],\n        width: rect.width + padding[3] + padding[1],\n        height: rect.height + padding[0] + padding[2]\n      },\n      style: {\n        fill: visualMapModel.get('backgroundColor'),\n        stroke: visualMapModel.get('borderColor'),\n        lineWidth: visualMapModel.get('borderWidth')\n      }\n    }));\n  },\n\n  /**\n   * @protected\n   * @param {number} targetValue can be Infinity or -Infinity\n   * @param {string=} visualCluster Only can be 'color' 'opacity' 'symbol' 'symbolSize'\n   * @param {Object} [opts]\n   * @param {string=} [opts.forceState] Specify state, instead of using getValueState method.\n   * @param {string=} [opts.convertOpacityToAlpha=false] For color gradient in controller widget.\n   * @return {*} Visual value.\n   */\n  getControllerVisual: function (targetValue, visualCluster, opts) {\n    opts = opts || {};\n    var forceState = opts.forceState;\n    var visualMapModel = this.visualMapModel;\n    var visualObj = {}; // Default values.\n\n    if (visualCluster === 'symbol') {\n      visualObj.symbol = visualMapModel.get('itemSymbol');\n    }\n\n    if (visualCluster === 'color') {\n      var defaultColor = visualMapModel.get('contentColor');\n      visualObj.color = defaultColor;\n    }\n\n    function getter(key) {\n      return visualObj[key];\n    }\n\n    function setter(key, value) {\n      visualObj[key] = value;\n    }\n\n    var mappings = visualMapModel.controllerVisuals[forceState || visualMapModel.getValueState(targetValue)];\n    var visualTypes = VisualMapping.prepareVisualTypes(mappings);\n    zrUtil.each(visualTypes, function (type) {\n      var visualMapping = mappings[type];\n\n      if (opts.convertOpacityToAlpha && type === 'opacity') {\n        type = 'colorAlpha';\n        visualMapping = mappings.__alphaForOpacity;\n      }\n\n      if (VisualMapping.dependsOn(type, visualCluster)) {\n        visualMapping && visualMapping.applyVisual(targetValue, getter, setter);\n      }\n    });\n    return visualObj[visualCluster];\n  },\n\n  /**\n   * @protected\n   */\n  positionGroup: function (group) {\n    var model = this.visualMapModel;\n    var api = this.api;\n    layout.positionElement(group, model.getBoxLayoutParams(), {\n      width: api.getWidth(),\n      height: api.getHeight()\n    });\n  },\n\n  /**\n   * @protected\n   * @abstract\n   */\n  doRender: zrUtil.noop\n});\n\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar _layout = require(\"../../util/layout\");\n\nvar getLayoutRect = _layout.getLayoutRect;\n\n/**\n * @param {module:echarts/component/visualMap/VisualMapModel} visualMapModel\\\n * @param {module:echarts/ExtensionAPI} api\n * @param {Array.<number>} itemSize always [short, long]\n * @return {string} 'left' or 'right' or 'top' or 'bottom'\n */\nfunction getItemAlign(visualMapModel, api, itemSize) {\n  var modelOption = visualMapModel.option;\n  var itemAlign = modelOption.align;\n\n  if (itemAlign != null && itemAlign !== 'auto') {\n    return itemAlign;\n  } // Auto decision align.\n\n\n  var ecSize = {\n    width: api.getWidth(),\n    height: api.getHeight()\n  };\n  var realIndex = modelOption.orient === 'horizontal' ? 1 : 0;\n  var paramsSet = [['left', 'right', 'width'], ['top', 'bottom', 'height']];\n  var reals = paramsSet[realIndex];\n  var fakeValue = [0, null, 10];\n  var layoutInput = {};\n\n  for (var i = 0; i < 3; i++) {\n    layoutInput[paramsSet[1 - realIndex][i]] = fakeValue[i];\n    layoutInput[reals[i]] = i === 2 ? itemSize[0] : modelOption[reals[i]];\n  }\n\n  var rParam = [['x', 'width', 3], ['y', 'height', 0]][realIndex];\n  var rect = getLayoutRect(layoutInput, ecSize, modelOption.padding);\n  return reals[(rect.margin[rParam[2]] || 0) + rect[rParam[0]] + rect[rParam[1]] * 0.5 < ecSize[rParam[1]] * 0.5 ? 0 : 1];\n}\n/**\n * Prepare dataIndex for outside usage, where dataIndex means rawIndex, and\n * dataIndexInside means filtered index.\n */\n\n\nfunction convertDataIndex(batch) {\n  zrUtil.each(batch || [], function (batchItem) {\n    if (batch.dataIndex != null) {\n      batch.dataIndexInside = batch.dataIndex;\n      batch.dataIndex = null;\n    }\n  });\n  return batch;\n}\n\nexports.getItemAlign = getItemAlign;\nexports.convertDataIndex = convertDataIndex;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar each = zrUtil.each;\n\nfunction _default(option) {\n  var visualMap = option && option.visualMap;\n\n  if (!zrUtil.isArray(visualMap)) {\n    visualMap = visualMap ? [visualMap] : [];\n  }\n\n  each(visualMap, function (opt) {\n    if (!opt) {\n      return;\n    } // rename splitList to pieces\n\n\n    if (has(opt, 'splitList') && !has(opt, 'pieces')) {\n      opt.pieces = opt.splitList;\n      delete opt.splitList;\n    }\n\n    var pieces = opt.pieces;\n\n    if (pieces && zrUtil.isArray(pieces)) {\n      each(pieces, function (piece) {\n        if (zrUtil.isObject(piece)) {\n          if (has(piece, 'start') && !has(piece, 'min')) {\n            piece.min = piece.start;\n          }\n\n          if (has(piece, 'end') && !has(piece, 'max')) {\n            piece.max = piece.end;\n          }\n        }\n      });\n    }\n  });\n}\n\nfunction has(obj, name) {\n  return obj && obj.hasOwnProperty && obj.hasOwnProperty(name);\n}\n\nmodule.exports = _default;","var Component = require(\"../../model/Component\");\n\nComponent.registerSubTypeDefaulter('visualMap', function (option) {\n  // Compatible with ec2, when splitNumber === 0, continuous visualMap will be used.\n  return !option.categories && (!(option.pieces ? option.pieces.length > 0 : option.splitNumber > 0) || option.calculable) ? 'continuous' : 'piecewise';\n});","var echarts = require(\"../../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar visualSolution = require(\"../../visual/visualSolution\");\n\nvar VisualMapping = require(\"../../visual/VisualMapping\");\n\nvar VISUAL_PRIORITY = echarts.PRIORITY.VISUAL.COMPONENT;\necharts.registerVisual(VISUAL_PRIORITY, {\n  createOnAllSeries: true,\n  reset: function (seriesModel, ecModel) {\n    var resetDefines = [];\n    ecModel.eachComponent('visualMap', function (visualMapModel) {\n      if (!visualMapModel.isTargetSeries(seriesModel)) {\n        return;\n      }\n\n      resetDefines.push(visualSolution.incrementalApplyVisual(visualMapModel.stateList, visualMapModel.targetVisuals, zrUtil.bind(visualMapModel.getValueState, visualMapModel), visualMapModel.getDataDimension(seriesModel.getData())));\n    });\n    return resetDefines;\n  }\n}); // Only support color.\n\necharts.registerVisual(VISUAL_PRIORITY, {\n  createOnAllSeries: true,\n  reset: function (seriesModel, ecModel) {\n    var data = seriesModel.getData();\n    var visualMetaList = [];\n    ecModel.eachComponent('visualMap', function (visualMapModel) {\n      if (visualMapModel.isTargetSeries(seriesModel)) {\n        var visualMeta = visualMapModel.getVisualMeta(zrUtil.bind(getColorVisual, null, seriesModel, visualMapModel)) || {\n          stops: [],\n          outerColors: []\n        };\n        var concreteDim = visualMapModel.getDataDimension(data);\n        var dimInfo = data.getDimensionInfo(concreteDim);\n\n        if (dimInfo != null) {\n          // visualMeta.dimension should be dimension index, but not concrete dimension.\n          visualMeta.dimension = dimInfo.index;\n          visualMetaList.push(visualMeta);\n        }\n      }\n    }); // console.log(JSON.stringify(visualMetaList.map(a => a.stops)));\n\n    seriesModel.getData().setVisual('visualMeta', visualMetaList);\n  }\n}); // FIXME\n// performance and export for heatmap?\n// value can be Infinity or -Infinity\n\nfunction getColorVisual(seriesModel, visualMapModel, value, valueState) {\n  var mappings = visualMapModel.targetVisuals[valueState];\n  var visualTypes = VisualMapping.prepareVisualTypes(mappings);\n  var resultVisual = {\n    color: seriesModel.getData().getVisual('color') // default color.\n\n  };\n\n  for (var i = 0, len = visualTypes.length; i < len; i++) {\n    var type = visualTypes[i];\n    var mapping = mappings[type === 'opacity' ? '__alphaForOpacity' : type];\n    mapping && mapping.applyVisual(value, getVisual, setVisual);\n  }\n\n  return resultVisual.color;\n\n  function getVisual(key) {\n    return resultVisual[key];\n  }\n\n  function setVisual(key, value) {\n    resultVisual[key] = value;\n  }\n}","var echarts = require(\"../../echarts\");\n\nvar actionInfo = {\n  type: 'selectDataRange',\n  event: 'dataRangeSelected',\n  // FIXME use updateView appears wrong\n  update: 'update'\n};\necharts.registerAction(actionInfo, function (payload, ecModel) {\n  ecModel.eachComponent({\n    mainType: 'visualMap',\n    query: payload\n  }, function (model) {\n    model.setSelected(payload.selected);\n  });\n});","var echarts = require(\"../echarts\");\n\nvar preprocessor = require(\"./visualMap/preprocessor\");\n\nrequire(\"./visualMap/typeDefaulter\");\n\nrequire(\"./visualMap/visualEncoding\");\n\nrequire(\"./visualMap/ContinuousModel\");\n\nrequire(\"./visualMap/ContinuousView\");\n\nrequire(\"./visualMap/visualMapAction\");\n\n/**\n * DataZoom component entry\n */\necharts.registerPreprocessor(preprocessor);","var echarts = require(\"../echarts\");\n\nvar preprocessor = require(\"./visualMap/preprocessor\");\n\nrequire(\"./visualMap/typeDefaulter\");\n\nrequire(\"./visualMap/visualEncoding\");\n\nrequire(\"./visualMap/PiecewiseModel\");\n\nrequire(\"./visualMap/PiecewiseView\");\n\nrequire(\"./visualMap/visualMapAction\");\n\n/**\n * DataZoom component entry\n */\necharts.registerPreprocessor(preprocessor);","// (1) The code `if (__DEV__) ...` can be removed by build tool.\n// (2) If intend to use `__DEV__`, this module should be imported. Use a global\n// variable `__DEV__` may cause that miss the declaration (see #6535), or the\n// declaration is behind of the using position (for example in `Model.extent`,\n// And tools like rollup can not analysis the dependency if not import).\nvar dev; // In browser\n\nif (typeof window !== 'undefined') {\n  dev = window.__DEV__;\n} // In node\nelse if (typeof global !== 'undefined') {\n    dev = global.__DEV__;\n  }\n\nif (typeof dev === 'undefined') {\n  dev = true;\n}\n\nvar __DEV__ = dev;\nexports.__DEV__ = __DEV__;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar numberUtil = require(\"../util/number\");\n\nvar axisHelper = require(\"./axisHelper\");\n\nvar linearMap = numberUtil.linearMap;\n\nfunction fixExtentWithBands(extent, nTick) {\n  var size = extent[1] - extent[0];\n  var len = nTick;\n  var margin = size / len / 2;\n  extent[0] += margin;\n  extent[1] -= margin;\n}\n\nvar normalizedExtent = [0, 1];\n/**\n * @name module:echarts/coord/CartesianAxis\n * @constructor\n */\n\nvar Axis = function (dim, scale, extent) {\n  /**\n   * Axis dimension. Such as 'x', 'y', 'z', 'angle', 'radius'\n   * @type {string}\n   */\n  this.dim = dim;\n  /**\n   * Axis scale\n   * @type {module:echarts/coord/scale/*}\n   */\n\n  this.scale = scale;\n  /**\n   * @type {Array.<number>}\n   * @private\n   */\n\n  this._extent = extent || [0, 0];\n  /**\n   * @type {boolean}\n   */\n\n  this.inverse = false;\n  /**\n   * Usually true when axis has a ordinal scale\n   * @type {boolean}\n   */\n\n  this.onBand = false;\n  /**\n   * @private\n   * @type {number}\n   */\n\n  this._labelInterval;\n};\n\nAxis.prototype = {\n  constructor: Axis,\n\n  /**\n   * If axis extent contain given coord\n   * @param {number} coord\n   * @return {boolean}\n   */\n  contain: function (coord) {\n    var extent = this._extent;\n    var min = Math.min(extent[0], extent[1]);\n    var max = Math.max(extent[0], extent[1]);\n    return coord >= min && coord <= max;\n  },\n\n  /**\n   * If axis extent contain given data\n   * @param {number} data\n   * @return {boolean}\n   */\n  containData: function (data) {\n    return this.contain(this.dataToCoord(data));\n  },\n\n  /**\n   * Get coord extent.\n   * @return {Array.<number>}\n   */\n  getExtent: function () {\n    return this._extent.slice();\n  },\n\n  /**\n   * Get precision used for formatting\n   * @param {Array.<number>} [dataExtent]\n   * @return {number}\n   */\n  getPixelPrecision: function (dataExtent) {\n    return numberUtil.getPixelPrecision(dataExtent || this.scale.getExtent(), this._extent);\n  },\n\n  /**\n   * Set coord extent\n   * @param {number} start\n   * @param {number} end\n   */\n  setExtent: function (start, end) {\n    var extent = this._extent;\n    extent[0] = start;\n    extent[1] = end;\n  },\n\n  /**\n   * Convert data to coord. Data is the rank if it has a ordinal scale\n   * @param {number} data\n   * @param  {boolean} clamp\n   * @return {number}\n   */\n  dataToCoord: function (data, clamp) {\n    var extent = this._extent;\n    var scale = this.scale;\n    data = scale.normalize(data);\n\n    if (this.onBand && scale.type === 'ordinal') {\n      extent = extent.slice();\n      fixExtentWithBands(extent, scale.count());\n    }\n\n    return linearMap(data, normalizedExtent, extent, clamp);\n  },\n\n  /**\n   * Convert coord to data. Data is the rank if it has a ordinal scale\n   * @param {number} coord\n   * @param  {boolean} clamp\n   * @return {number}\n   */\n  coordToData: function (coord, clamp) {\n    var extent = this._extent;\n    var scale = this.scale;\n\n    if (this.onBand && scale.type === 'ordinal') {\n      extent = extent.slice();\n      fixExtentWithBands(extent, scale.count());\n    }\n\n    var t = linearMap(coord, extent, normalizedExtent, clamp);\n    return this.scale.scale(t);\n  },\n\n  /**\n   * Convert pixel point to data in axis\n   * @param {Array.<number>} point\n   * @param  {boolean} clamp\n   * @return {number} data\n   */\n  pointToData: function (point, clamp) {// Should be implemented in derived class if necessary.\n  },\n\n  /**\n   * @return {Array.<number>}\n   */\n  getTicksCoords: function (alignWithLabel) {\n    if (this.onBand && !alignWithLabel) {\n      var bands = this.getBands();\n      var coords = [];\n\n      for (var i = 0; i < bands.length; i++) {\n        coords.push(bands[i][0]);\n      }\n\n      if (bands[i - 1]) {\n        coords.push(bands[i - 1][1]);\n      }\n\n      return coords;\n    } else {\n      return zrUtil.map(this.scale.getTicks(), this.dataToCoord, this);\n    }\n  },\n\n  /**\n   * Coords of labels are on the ticks or on the middle of bands\n   * @return {Array.<number>}\n   */\n  getLabelsCoords: function () {\n    return zrUtil.map(this.scale.getTicks(), this.dataToCoord, this);\n  },\n\n  /**\n   * Get bands.\n   *\n   * If axis has labels [1, 2, 3, 4]. Bands on the axis are\n   * |---1---|---2---|---3---|---4---|.\n   *\n   * @return {Array}\n   */\n  // FIXME Situation when labels is on ticks\n  getBands: function () {\n    var extent = this.getExtent();\n    var bands = [];\n    var len = this.scale.count();\n    var start = extent[0];\n    var end = extent[1];\n    var span = end - start;\n\n    for (var i = 0; i < len; i++) {\n      bands.push([span * i / len + start, span * (i + 1) / len + start]);\n    }\n\n    return bands;\n  },\n\n  /**\n   * Get width of band\n   * @return {number}\n   */\n  getBandWidth: function () {\n    var axisExtent = this._extent;\n    var dataExtent = this.scale.getExtent();\n    var len = dataExtent[1] - dataExtent[0] + (this.onBand ? 1 : 0); // Fix #2728, avoid NaN when only one data.\n\n    len === 0 && (len = 1);\n    var size = Math.abs(axisExtent[1] - axisExtent[0]);\n    return Math.abs(size) / len;\n  },\n\n  /**\n   * @abstract\n   * @return {boolean} Is horizontal\n   */\n  isHorizontal: null,\n\n  /**\n   * @abstract\n   * @return {number} Get axis rotate, by degree.\n   */\n  getRotate: null,\n\n  /**\n   * Get interval of the axis label.\n   * To get precise result, at least one of `getRotate` and `isHorizontal`\n   * should be implemented.\n   * @return {number}\n   */\n  getLabelInterval: function () {\n    var labelInterval = this._labelInterval;\n\n    if (!labelInterval) {\n      var axisModel = this.model;\n      var labelModel = axisModel.getModel('axisLabel');\n      labelInterval = labelModel.get('interval');\n\n      if (this.type === 'category' && (labelInterval == null || labelInterval === 'auto')) {\n        labelInterval = axisHelper.getAxisLabelInterval(zrUtil.map(this.scale.getTicks(), this.dataToCoord, this), axisModel.getFormattedLabels(), labelModel.getFont(), this.getRotate ? this.getRotate() : this.isHorizontal && !this.isHorizontal() ? 90 : 0, labelModel.get('rotate'));\n      }\n\n      this._labelInterval = labelInterval;\n    }\n\n    return labelInterval;\n  }\n};\nvar _default = Axis;\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar vector = require(\"zrender/lib/core/vector\");\n\nvar matrix = require(\"zrender/lib/core/matrix\");\n\nvar BoundingRect = require(\"zrender/lib/core/BoundingRect\");\n\nvar Transformable = require(\"zrender/lib/mixin/Transformable\");\n\n/**\n * Simple view coordinate system\n * Mapping given x, y to transformd view x, y\n */\nvar v2ApplyTransform = vector.applyTransform; // Dummy transform node\n\nfunction TransformDummy() {\n  Transformable.call(this);\n}\n\nzrUtil.mixin(TransformDummy, Transformable);\n\nfunction View(name) {\n  /**\n   * @type {string}\n   */\n  this.name = name;\n  /**\n   * @type {Object}\n   */\n\n  this.zoomLimit;\n  Transformable.call(this);\n  this._roamTransformable = new TransformDummy();\n  this._rawTransformable = new TransformDummy();\n  this._center;\n  this._zoom;\n}\n\nView.prototype = {\n  constructor: View,\n  type: 'view',\n\n  /**\n   * @param {Array.<string>}\n   * @readOnly\n   */\n  dimensions: ['x', 'y'],\n\n  /**\n   * Set bounding rect\n   * @param {number} x\n   * @param {number} y\n   * @param {number} width\n   * @param {number} height\n   */\n  // PENDING to getRect\n  setBoundingRect: function (x, y, width, height) {\n    this._rect = new BoundingRect(x, y, width, height);\n    return this._rect;\n  },\n\n  /**\n   * @return {module:zrender/core/BoundingRect}\n   */\n  // PENDING to getRect\n  getBoundingRect: function () {\n    return this._rect;\n  },\n\n  /**\n   * @param {number} x\n   * @param {number} y\n   * @param {number} width\n   * @param {number} height\n   */\n  setViewRect: function (x, y, width, height) {\n    this.transformTo(x, y, width, height);\n    this._viewRect = new BoundingRect(x, y, width, height);\n  },\n\n  /**\n   * Transformed to particular position and size\n   * @param {number} x\n   * @param {number} y\n   * @param {number} width\n   * @param {number} height\n   */\n  transformTo: function (x, y, width, height) {\n    var rect = this.getBoundingRect();\n    var rawTransform = this._rawTransformable;\n    rawTransform.transform = rect.calculateTransform(new BoundingRect(x, y, width, height));\n    rawTransform.decomposeTransform();\n\n    this._updateTransform();\n  },\n\n  /**\n   * Set center of view\n   * @param {Array.<number>} [centerCoord]\n   */\n  setCenter: function (centerCoord) {\n    if (!centerCoord) {\n      return;\n    }\n\n    this._center = centerCoord;\n\n    this._updateCenterAndZoom();\n  },\n\n  /**\n   * @param {number} zoom\n   */\n  setZoom: function (zoom) {\n    zoom = zoom || 1;\n    var zoomLimit = this.zoomLimit;\n\n    if (zoomLimit) {\n      if (zoomLimit.max != null) {\n        zoom = Math.min(zoomLimit.max, zoom);\n      }\n\n      if (zoomLimit.min != null) {\n        zoom = Math.max(zoomLimit.min, zoom);\n      }\n    }\n\n    this._zoom = zoom;\n\n    this._updateCenterAndZoom();\n  },\n\n  /**\n   * Get default center without roam\n   */\n  getDefaultCenter: function () {\n    // Rect before any transform\n    var rawRect = this.getBoundingRect();\n    var cx = rawRect.x + rawRect.width / 2;\n    var cy = rawRect.y + rawRect.height / 2;\n    return [cx, cy];\n  },\n  getCenter: function () {\n    return this._center || this.getDefaultCenter();\n  },\n  getZoom: function () {\n    return this._zoom || 1;\n  },\n\n  /**\n   * @return {Array.<number}\n   */\n  getRoamTransform: function () {\n    return this._roamTransformable.getLocalTransform();\n  },\n\n  /**\n   * Remove roam\n   */\n  _updateCenterAndZoom: function () {\n    // Must update after view transform updated\n    var rawTransformMatrix = this._rawTransformable.getLocalTransform();\n\n    var roamTransform = this._roamTransformable;\n    var defaultCenter = this.getDefaultCenter();\n    var center = this.getCenter();\n    var zoom = this.getZoom();\n    center = vector.applyTransform([], center, rawTransformMatrix);\n    defaultCenter = vector.applyTransform([], defaultCenter, rawTransformMatrix);\n    roamTransform.origin = center;\n    roamTransform.position = [defaultCenter[0] - center[0], defaultCenter[1] - center[1]];\n    roamTransform.scale = [zoom, zoom];\n\n    this._updateTransform();\n  },\n\n  /**\n   * Update transform from roam and mapLocation\n   * @private\n   */\n  _updateTransform: function () {\n    var roamTransformable = this._roamTransformable;\n    var rawTransformable = this._rawTransformable;\n    rawTransformable.parent = roamTransformable;\n    roamTransformable.updateTransform();\n    rawTransformable.updateTransform();\n    matrix.copy(this.transform || (this.transform = []), rawTransformable.transform || matrix.create());\n    this._rawTransform = rawTransformable.getLocalTransform();\n    this.invTransform = this.invTransform || [];\n    matrix.invert(this.invTransform, this.transform);\n    this.decomposeTransform();\n  },\n\n  /**\n   * @return {module:zrender/core/BoundingRect}\n   */\n  getViewRect: function () {\n    return this._viewRect;\n  },\n\n  /**\n   * Get view rect after roam transform\n   * @return {module:zrender/core/BoundingRect}\n   */\n  getViewRectAfterRoam: function () {\n    var rect = this.getBoundingRect().clone();\n    rect.applyTransform(this.transform);\n    return rect;\n  },\n\n  /**\n   * Convert a single (lon, lat) data item to (x, y) point.\n   * @param {Array.<number>} data\n   * @param {boolean} noRoam\n   * @param {Array.<number>} [out]\n   * @return {Array.<number>}\n   */\n  dataToPoint: function (data, noRoam, out) {\n    var transform = noRoam ? this._rawTransform : this.transform;\n    out = out || [];\n    return transform ? v2ApplyTransform(out, data, transform) : vector.copy(out, data);\n  },\n\n  /**\n   * Convert a (x, y) point to (lon, lat) data\n   * @param {Array.<number>} point\n   * @return {Array.<number>}\n   */\n  pointToData: function (point) {\n    var invTransform = this.invTransform;\n    return invTransform ? v2ApplyTransform([], point, invTransform) : [point[0], point[1]];\n  },\n\n  /**\n   * @implements\n   * see {module:echarts/CoodinateSystem}\n   */\n  convertToPixel: zrUtil.curry(doConvert, 'dataToPoint'),\n\n  /**\n   * @implements\n   * see {module:echarts/CoodinateSystem}\n   */\n  convertFromPixel: zrUtil.curry(doConvert, 'pointToData'),\n\n  /**\n   * @implements\n   * see {module:echarts/CoodinateSystem}\n   */\n  containPoint: function (point) {\n    return this.getViewRectAfterRoam().contain(point[0], point[1]);\n  }\n  /**\n   * @return {number}\n   */\n  // getScalarScale: function () {\n  //     // Use determinant square root of transform to mutiply scalar\n  //     var m = this.transform;\n  //     var det = Math.sqrt(Math.abs(m[0] * m[3] - m[2] * m[1]));\n  //     return det;\n  // }\n\n};\nzrUtil.mixin(View, Transformable);\n\nfunction doConvert(methodName, ecModel, finder, value) {\n  var seriesModel = finder.seriesModel;\n  var coordSys = seriesModel ? seriesModel.coordinateSystem : null; // e.g., graph.\n\n  return coordSys === this ? coordSys[methodName](value) : null;\n}\n\nvar _default = View;\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar defaultOption = {\n  show: true,\n  zlevel: 0,\n  // 一级层叠\n  z: 0,\n  // 二级层叠\n  // 反向坐标轴\n  inverse: false,\n  // 坐标轴名字，默认为空\n  name: '',\n  // 坐标轴名字位置，支持'start' | 'middle' | 'end'\n  nameLocation: 'end',\n  // 坐标轴名字旋转，degree。\n  nameRotate: null,\n  // Adapt to axis rotate, when nameLocation is 'middle'.\n  nameTruncate: {\n    maxWidth: null,\n    ellipsis: '...',\n    placeholder: '.'\n  },\n  // 坐标轴文字样式，默认取全局样式\n  nameTextStyle: {},\n  // 文字与轴线距离\n  nameGap: 15,\n  silent: false,\n  // Default false to support tooltip.\n  triggerEvent: false,\n  // Default false to avoid legacy user event listener fail.\n  tooltip: {\n    show: false\n  },\n  axisPointer: {},\n  // 坐标轴线\n  axisLine: {\n    // 默认显示，属性show控制显示与否\n    show: true,\n    onZero: true,\n    onZeroAxisIndex: null,\n    // 属性lineStyle控制线条样式\n    lineStyle: {\n      color: '#333',\n      width: 1,\n      type: 'solid'\n    },\n    // 坐标轴两端的箭头\n    symbol: ['none', 'none'],\n    symbolSize: [10, 15]\n  },\n  // 坐标轴小标记\n  axisTick: {\n    // 属性show控制显示与否，默认显示\n    show: true,\n    // 控制小标记是否在grid里\n    inside: false,\n    // 属性length控制线长\n    length: 5,\n    // 属性lineStyle控制线条样式\n    lineStyle: {\n      width: 1\n    }\n  },\n  // 坐标轴文本标签，详见axis.axisLabel\n  axisLabel: {\n    show: true,\n    // 控制文本标签是否在grid里\n    inside: false,\n    rotate: 0,\n    showMinLabel: null,\n    // true | false | null (auto)\n    showMaxLabel: null,\n    // true | false | null (auto)\n    margin: 8,\n    // formatter: null,\n    // 其余属性默认使用全局文本样式，详见TEXTSTYLE\n    fontSize: 12\n  },\n  // 分隔线\n  splitLine: {\n    // 默认显示，属性show控制显示与否\n    show: true,\n    // 属性lineStyle（详见lineStyle）控制线条样式\n    lineStyle: {\n      color: ['#ccc'],\n      width: 1,\n      type: 'solid'\n    }\n  },\n  // 分隔区域\n  splitArea: {\n    // 默认不显示，属性show控制显示与否\n    show: false,\n    // 属性areaStyle（详见areaStyle）控制区域样式\n    areaStyle: {\n      color: ['rgba(250,250,250,0.3)', 'rgba(200,200,200,0.3)']\n    }\n  }\n};\nvar axisDefault = {};\naxisDefault.categoryAxis = zrUtil.merge({\n  // 类目起始和结束两端空白策略\n  boundaryGap: true,\n  // Set false to faster category collection.\n  // Only usefull in the case like: category is\n  // ['2012-01-01', '2012-01-02', ...], where the input\n  // data has been ensured not duplicate and is large data.\n  // null means \"auto\":\n  // if axis.data provided, do not deduplication,\n  // else do deduplication.\n  deduplication: null,\n  // splitArea: {\n  // show: false\n  // },\n  splitLine: {\n    show: false\n  },\n  // 坐标轴小标记\n  axisTick: {\n    // If tick is align with label when boundaryGap is true\n    alignWithLabel: false,\n    interval: 'auto'\n  },\n  // 坐标轴文本标签，详见axis.axisLabel\n  axisLabel: {\n    interval: 'auto'\n  }\n}, defaultOption);\naxisDefault.valueAxis = zrUtil.merge({\n  // 数值起始和结束两端空白策略\n  boundaryGap: [0, 0],\n  // TODO\n  // min/max: [30, datamin, 60] or [20, datamin] or [datamin, 60]\n  // 最小值, 设置成 'dataMin' 则从数据中计算最小值\n  // min: null,\n  // 最大值，设置成 'dataMax' 则从数据中计算最大值\n  // max: null,\n  // Readonly prop, specifies start value of the range when using data zoom.\n  // rangeStart: null\n  // Readonly prop, specifies end value of the range when using data zoom.\n  // rangeEnd: null\n  // 脱离0值比例，放大聚焦到最终_min，_max区间\n  // scale: false,\n  // 分割段数，默认为5\n  splitNumber: 5 // Minimum interval\n  // minInterval: null\n  // maxInterval: null\n\n}, defaultOption); // FIXME\n\naxisDefault.timeAxis = zrUtil.defaults({\n  scale: true,\n  min: 'dataMin',\n  max: 'dataMax'\n}, axisDefault.valueAxis);\naxisDefault.logAxis = zrUtil.defaults({\n  scale: true,\n  logBase: 10\n}, axisDefault.valueAxis);\nvar _default = axisDefault;\nmodule.exports = _default;","var _config = require(\"../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar textContain = require(\"zrender/lib/contain/text\");\n\nvar OrdinalScale = require(\"../scale/Ordinal\");\n\nvar IntervalScale = require(\"../scale/Interval\");\n\nvar Scale = require(\"../scale/Scale\");\n\nvar numberUtil = require(\"../util/number\");\n\nvar _barGrid = require(\"../layout/barGrid\");\n\nvar calBarWidthAndOffset = _barGrid.calBarWidthAndOffset;\n\nrequire(\"../scale/Time\");\n\nrequire(\"../scale/Log\");\n\n/**\n * Get axis scale extent before niced.\n * Item of returned array can only be number (including Infinity and NaN).\n */\nfunction getScaleExtent(scale, model) {\n  var scaleType = scale.type;\n  var min = model.getMin();\n  var max = model.getMax();\n  var fixMin = min != null;\n  var fixMax = max != null;\n  var originalExtent = scale.getExtent();\n  var axisDataLen;\n  var boundaryGap;\n  var span;\n\n  if (scaleType === 'ordinal') {\n    axisDataLen = model.getCategories().length;\n  } else {\n    boundaryGap = model.get('boundaryGap');\n\n    if (!zrUtil.isArray(boundaryGap)) {\n      boundaryGap = [boundaryGap || 0, boundaryGap || 0];\n    }\n\n    if (typeof boundaryGap[0] === 'boolean') {\n      boundaryGap = [0, 0];\n    }\n\n    boundaryGap[0] = numberUtil.parsePercent(boundaryGap[0], 1);\n    boundaryGap[1] = numberUtil.parsePercent(boundaryGap[1], 1);\n    span = originalExtent[1] - originalExtent[0] || Math.abs(originalExtent[0]);\n  } // Notice: When min/max is not set (that is, when there are null/undefined,\n  // which is the most common case), these cases should be ensured:\n  // (1) For 'ordinal', show all axis.data.\n  // (2) For others:\n  //      + `boundaryGap` is applied (if min/max set, boundaryGap is\n  //      disabled).\n  //      + If `needCrossZero`, min/max should be zero, otherwise, min/max should\n  //      be the result that originalExtent enlarged by boundaryGap.\n  // (3) If no data, it should be ensured that `scale.setBlank` is set.\n  // FIXME\n  // (1) When min/max is 'dataMin' or 'dataMax', should boundaryGap be able to used?\n  // (2) When `needCrossZero` and all data is positive/negative, should it be ensured\n  // that the results processed by boundaryGap are positive/negative?\n\n\n  if (min == null) {\n    min = scaleType === 'ordinal' ? axisDataLen ? 0 : NaN : originalExtent[0] - boundaryGap[0] * span;\n  }\n\n  if (max == null) {\n    max = scaleType === 'ordinal' ? axisDataLen ? axisDataLen - 1 : NaN : originalExtent[1] + boundaryGap[1] * span;\n  }\n\n  if (min === 'dataMin') {\n    min = originalExtent[0];\n  } else if (typeof min === 'function') {\n    min = min({\n      min: originalExtent[0],\n      max: originalExtent[1]\n    });\n  }\n\n  if (max === 'dataMax') {\n    max = originalExtent[1];\n  } else if (typeof max === 'function') {\n    max = max({\n      min: originalExtent[0],\n      max: originalExtent[1]\n    });\n  }\n\n  (min == null || !isFinite(min)) && (min = NaN);\n  (max == null || !isFinite(max)) && (max = NaN);\n  scale.setBlank(zrUtil.eqNaN(min) || zrUtil.eqNaN(max)); // Evaluate if axis needs cross zero\n\n  if (model.getNeedCrossZero()) {\n    // Axis is over zero and min is not set\n    if (min > 0 && max > 0 && !fixMin) {\n      min = 0;\n    } // Axis is under zero and max is not set\n\n\n    if (min < 0 && max < 0 && !fixMax) {\n      max = 0;\n    }\n  } // If bars are placed on a base axis of type time or interval account for axis boundary overflow and current axis\n  // is base axis\n\n\n  var ecModel = model.ecModel;\n\n  if (ecModel) {\n    var isBaseAxisAndHasBarSeries = zrUtil.filter(ecModel.getSeriesByType('bar'), function (seriesModel) {\n      return seriesModel.getBaseAxis() === model.axis;\n    }).length > 0;\n\n    if ((scaleType === 'time' || scaleType === 'interval') && isBaseAxisAndHasBarSeries) {\n      // Adjust axis min and max to account for overflow\n      var adjustedScale = adjustScaleForOverflow(min, max, model);\n      min = adjustedScale.min;\n      max = adjustedScale.max;\n    }\n  }\n\n  return [min, max];\n}\n\nfunction adjustScaleForOverflow(min, max, model) {\n  var ecModel = model.ecModel; // Get Axis Length\n\n  var axisExtent = model.axis.getExtent();\n  var axisLength = axisExtent[1] - axisExtent[0]; // Calculate placement of bars on axis\n\n  var barWidthAndOffset = calBarWidthAndOffset(zrUtil.filter(ecModel.getSeriesByType('bar'), function (seriesModel) {\n    return !ecModel.isSeriesFiltered(seriesModel) && seriesModel.coordinateSystem && seriesModel.coordinateSystem.type === 'cartesian2d';\n  })); // Get bars on current base axis and calculate min and max overflow\n\n  var baseAxisKey = model.axis.dim + model.axis.index;\n  var barsOnCurrentAxis = barWidthAndOffset[baseAxisKey];\n\n  if (barsOnCurrentAxis === undefined) {\n    return {\n      min: min,\n      max: max\n    };\n  }\n\n  var minOverflow = Infinity;\n  zrUtil.each(barsOnCurrentAxis, function (item) {\n    minOverflow = Math.min(item.offset, minOverflow);\n  });\n  var maxOverflow = -Infinity;\n  zrUtil.each(barsOnCurrentAxis, function (item) {\n    maxOverflow = Math.max(item.offset + item.width, maxOverflow);\n  });\n  var totalOverFlow = Math.abs(minOverflow) + maxOverflow; // Calulate required buffer based on old range and overflow\n\n  var oldRange = max - min;\n  var oldRangePercentOfNew = 1 - (minOverflow + maxOverflow) / axisLength;\n  var overflowBuffer = oldRange / oldRangePercentOfNew - oldRange;\n  max += overflowBuffer * (maxOverflow / totalOverFlow);\n  min -= overflowBuffer * (minOverflow / totalOverFlow);\n  return {\n    min: min,\n    max: max\n  };\n}\n\nfunction niceScaleExtent(scale, model) {\n  var extent = getScaleExtent(scale, model);\n  var fixMin = model.getMin() != null;\n  var fixMax = model.getMax() != null;\n  var splitNumber = model.get('splitNumber');\n\n  if (scale.type === 'log') {\n    scale.base = model.get('logBase');\n  }\n\n  var scaleType = scale.type;\n  scale.setExtent(extent[0], extent[1]);\n  scale.niceExtent({\n    splitNumber: splitNumber,\n    fixMin: fixMin,\n    fixMax: fixMax,\n    minInterval: scaleType === 'interval' || scaleType === 'time' ? model.get('minInterval') : null,\n    maxInterval: scaleType === 'interval' || scaleType === 'time' ? model.get('maxInterval') : null\n  }); // If some one specified the min, max. And the default calculated interval\n  // is not good enough. He can specify the interval. It is often appeared\n  // in angle axis with angle 0 - 360. Interval calculated in interval scale is hard\n  // to be 60.\n  // FIXME\n\n  var interval = model.get('interval');\n\n  if (interval != null) {\n    scale.setInterval && scale.setInterval(interval);\n  }\n}\n/**\n * @param {module:echarts/model/Model} model\n * @param {string} [axisType] Default retrieve from model.type\n * @return {module:echarts/scale/*}\n */\n\n\nfunction createScaleByModel(model, axisType) {\n  axisType = axisType || model.get('type');\n\n  if (axisType) {\n    switch (axisType) {\n      // Buildin scale\n      case 'category':\n        return new OrdinalScale(model.getOrdinalMeta ? model.getOrdinalMeta() : model.getCategories(), [Infinity, -Infinity]);\n\n      case 'value':\n        return new IntervalScale();\n      // Extended scale, like time and log\n\n      default:\n        return (Scale.getClass(axisType) || IntervalScale).create(model);\n    }\n  }\n}\n/**\n * Check if the axis corss 0\n */\n\n\nfunction ifAxisCrossZero(axis) {\n  var dataExtent = axis.scale.getExtent();\n  var min = dataExtent[0];\n  var max = dataExtent[1];\n  return !(min > 0 && max > 0 || min < 0 && max < 0);\n}\n/**\n * @param {Array.<number>} tickCoords In axis self coordinate.\n * @param {Array.<string>} labels\n * @param {string} font\n * @param {number} axisRotate 0: towards right horizontally, clock-wise is negative.\n * @param {number} [labelRotate=0] 0: towards right horizontally, clock-wise is negative.\n * @return {number}\n */\n\n\nfunction getAxisLabelInterval(tickCoords, labels, font, axisRotate, labelRotate) {\n  var textSpaceTakenRect;\n  var autoLabelInterval = 0;\n  var accumulatedLabelInterval = 0;\n  var rotation = (axisRotate - labelRotate) / 180 * Math.PI;\n  var step = 1;\n\n  if (labels.length > 40) {\n    // Simple optimization for large amount of labels\n    step = Math.floor(labels.length / 40);\n  }\n\n  for (var i = 0; i < tickCoords.length; i += step) {\n    var tickCoord = tickCoords[i]; // Not precise, do not consider align and vertical align\n    // and each distance from axis line yet.\n\n    var rect = textContain.getBoundingRect(labels[i], font, 'center', 'top');\n    rect.x += tickCoord * Math.cos(rotation);\n    rect.y += tickCoord * Math.sin(rotation); // Magic number\n\n    rect.width *= 1.3;\n    rect.height *= 1.3;\n\n    if (!textSpaceTakenRect) {\n      textSpaceTakenRect = rect.clone();\n    } // There is no space for current label;\n    else if (textSpaceTakenRect.intersect(rect)) {\n        accumulatedLabelInterval++;\n        autoLabelInterval = Math.max(autoLabelInterval, accumulatedLabelInterval);\n      } else {\n        textSpaceTakenRect.union(rect); // Reset\n\n        accumulatedLabelInterval = 0;\n      }\n  }\n\n  if (autoLabelInterval === 0 && step > 1) {\n    return step;\n  }\n\n  return (autoLabelInterval + 1) * step - 1;\n}\n/**\n * @param {Object} axis\n * @param {Function} labelFormatter\n * @return {Array.<string>}\n */\n\n\nfunction getFormattedLabels(axis, labelFormatter) {\n  var scale = axis.scale;\n  var labels = scale.getTicksLabels();\n  var ticks = scale.getTicks();\n\n  if (typeof labelFormatter === 'string') {\n    labelFormatter = function (tpl) {\n      return function (val) {\n        return tpl.replace('{value}', val != null ? val : '');\n      };\n    }(labelFormatter); // Consider empty array\n\n\n    return zrUtil.map(labels, labelFormatter);\n  } else if (typeof labelFormatter === 'function') {\n    return zrUtil.map(ticks, function (tick, idx) {\n      return labelFormatter(getAxisRawValue(axis, tick), idx);\n    }, this);\n  } else {\n    return labels;\n  }\n}\n\nfunction getAxisRawValue(axis, value) {\n  // In category axis with data zoom, tick is not the original\n  // index of axis.data. So tick should not be exposed to user\n  // in category axis.\n  return axis.type === 'category' ? axis.scale.getLabel(value) : value;\n}\n\nexports.getScaleExtent = getScaleExtent;\nexports.adjustScaleForOverflow = adjustScaleForOverflow;\nexports.niceScaleExtent = niceScaleExtent;\nexports.createScaleByModel = createScaleByModel;\nexports.ifAxisCrossZero = ifAxisCrossZero;\nexports.getAxisLabelInterval = getAxisLabelInterval;\nexports.getFormattedLabels = getFormattedLabels;\nexports.getAxisRawValue = getAxisRawValue;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar axisHelper = require(\"./axisHelper\");\n\nvar _default = {\n  /**\n   * Format labels\n   * @return {Array.<string>}\n   */\n  getFormattedLabels: function () {\n    return axisHelper.getFormattedLabels(this.axis, this.get('axisLabel.formatter'));\n  },\n\n  /**\n   * @param {boolean} origin\n   * @return {number|string} min value or 'dataMin' or null/undefined (means auto) or NaN\n   */\n  getMin: function (origin) {\n    var option = this.option;\n    var min = !origin && option.rangeStart != null ? option.rangeStart : option.min;\n\n    if (this.axis && min != null && min !== 'dataMin' && typeof min !== 'function' && !zrUtil.eqNaN(min)) {\n      min = this.axis.scale.parse(min);\n    }\n\n    return min;\n  },\n\n  /**\n   * @param {boolean} origin\n   * @return {number|string} max value or 'dataMax' or null/undefined (means auto) or NaN\n   */\n  getMax: function (origin) {\n    var option = this.option;\n    var max = !origin && option.rangeEnd != null ? option.rangeEnd : option.max;\n\n    if (this.axis && max != null && max !== 'dataMax' && typeof max !== 'function' && !zrUtil.eqNaN(max)) {\n      max = this.axis.scale.parse(max);\n    }\n\n    return max;\n  },\n\n  /**\n   * @return {boolean}\n   */\n  getNeedCrossZero: function () {\n    var option = this.option;\n    return option.rangeStart != null || option.rangeEnd != null ? false : !option.scale;\n  },\n\n  /**\n   * Should be implemented by each axis model if necessary.\n   * @return {module:echarts/model/Component} coordinate system model\n   */\n  getCoordSysModel: zrUtil.noop,\n\n  /**\n   * @param {number} rangeStart Can only be finite number or null/undefined or NaN.\n   * @param {number} rangeEnd Can only be finite number or null/undefined or NaN.\n   */\n  setRange: function (rangeStart, rangeEnd) {\n    this.option.rangeStart = rangeStart;\n    this.option.rangeEnd = rangeEnd;\n  },\n\n  /**\n   * Reset range\n   */\n  resetRange: function () {\n    // rangeStart and rangeEnd is readonly.\n    this.option.rangeStart = this.option.rangeEnd = null;\n  }\n};\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar axisDefault = require(\"./axisDefault\");\n\nvar ComponentModel = require(\"../model/Component\");\n\nvar _layout = require(\"../util/layout\");\n\nvar getLayoutParams = _layout.getLayoutParams;\nvar mergeLayoutParam = _layout.mergeLayoutParam;\n\nvar OrdinalMeta = require(\"../data/OrdinalMeta\");\n\n// FIXME axisType is fixed ?\nvar AXIS_TYPES = ['value', 'category', 'time', 'log'];\n/**\n * Generate sub axis model class\n * @param {string} axisName 'x' 'y' 'radius' 'angle' 'parallel'\n * @param {module:echarts/model/Component} BaseAxisModelClass\n * @param {Function} axisTypeDefaulter\n * @param {Object} [extraDefaultOption]\n */\n\nfunction _default(axisName, BaseAxisModelClass, axisTypeDefaulter, extraDefaultOption) {\n  zrUtil.each(AXIS_TYPES, function (axisType) {\n    BaseAxisModelClass.extend({\n      /**\n       * @readOnly\n       */\n      type: axisName + 'Axis.' + axisType,\n      mergeDefaultAndTheme: function (option, ecModel) {\n        var layoutMode = this.layoutMode;\n        var inputPositionParams = layoutMode ? getLayoutParams(option) : {};\n        var themeModel = ecModel.getTheme();\n        zrUtil.merge(option, themeModel.get(axisType + 'Axis'));\n        zrUtil.merge(option, this.getDefaultOption());\n        option.type = axisTypeDefaulter(axisName, option);\n\n        if (layoutMode) {\n          mergeLayoutParam(option, inputPositionParams, layoutMode);\n        }\n      },\n\n      /**\n       * @override\n       */\n      optionUpdated: function () {\n        var thisOption = this.option;\n\n        if (thisOption.type === 'category') {\n          this.__ordinalMeta = OrdinalMeta.createByAxisModel(this);\n        }\n      },\n\n      /**\n       * Should not be called before all of 'getInitailData' finished.\n       * Because categories are collected during initializing data.\n       */\n      getCategories: function () {\n        // FIXME\n        // warning if called before all of 'getInitailData' finished.\n        if (this.option.type === 'category') {\n          return this.__ordinalMeta.categories;\n        }\n      },\n      getOrdinalMeta: function () {\n        return this.__ordinalMeta;\n      },\n      defaultOption: zrUtil.mergeAll([{}, axisDefault[axisType + 'Axis'], extraDefaultOption], true)\n    });\n  });\n  ComponentModel.registerSubTypeDefaulter(axisName + 'Axis', zrUtil.curry(axisTypeDefaulter, axisName));\n}\n\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar layout = require(\"../../util/layout\");\n\nvar numberUtil = require(\"../../util/number\");\n\nvar CoordinateSystem = require(\"../../CoordinateSystem\");\n\n// (24*60*60*1000)\nvar PROXIMATE_ONE_DAY = 86400000;\n/**\n * Calendar\n *\n * @constructor\n *\n * @param {Object} calendarModel calendarModel\n * @param {Object} ecModel       ecModel\n * @param {Object} api           api\n */\n\nfunction Calendar(calendarModel, ecModel, api) {\n  this._model = calendarModel;\n}\n\nCalendar.prototype = {\n  constructor: Calendar,\n  type: 'calendar',\n  dimensions: ['time', 'value'],\n  // Required in createListFromData\n  getDimensionsInfo: function () {\n    return [{\n      name: 'time',\n      type: 'time'\n    }];\n  },\n  getRangeInfo: function () {\n    return this._rangeInfo;\n  },\n  getModel: function () {\n    return this._model;\n  },\n  getRect: function () {\n    return this._rect;\n  },\n  getCellWidth: function () {\n    return this._sw;\n  },\n  getCellHeight: function () {\n    return this._sh;\n  },\n  getOrient: function () {\n    return this._orient;\n  },\n\n  /**\n   * getFirstDayOfWeek\n   *\n   * @example\n   *     0 : start at Sunday\n   *     1 : start at Monday\n   *\n   * @return {number}\n   */\n  getFirstDayOfWeek: function () {\n    return this._firstDayOfWeek;\n  },\n\n  /**\n   * get date info\n   *\n   * @param  {string|number} date date\n   * @return {Object}\n   * {\n   *      y: string, local full year, eg., '1940',\n   *      m: string, local month, from '01' ot '12',\n   *      d: string, local date, from '01' to '31' (if exists),\n   *      day: It is not date.getDay(). It is the location of the cell in a week, from 0 to 6,\n   *      time: timestamp,\n   *      formatedDate: string, yyyy-MM-dd,\n   *      date: original date object.\n   * }\n   */\n  getDateInfo: function (date) {\n    date = numberUtil.parseDate(date);\n    var y = date.getFullYear();\n    var m = date.getMonth() + 1;\n    m = m < 10 ? '0' + m : m;\n    var d = date.getDate();\n    d = d < 10 ? '0' + d : d;\n    var day = date.getDay();\n    day = Math.abs((day + 7 - this.getFirstDayOfWeek()) % 7);\n    return {\n      y: y,\n      m: m,\n      d: d,\n      day: day,\n      time: date.getTime(),\n      formatedDate: y + '-' + m + '-' + d,\n      date: date\n    };\n  },\n  getNextNDay: function (date, n) {\n    n = n || 0;\n\n    if (n === 0) {\n      return this.getDateInfo(date);\n    }\n\n    date = new Date(this.getDateInfo(date).time);\n    date.setDate(date.getDate() + n);\n    return this.getDateInfo(date);\n  },\n  update: function (ecModel, api) {\n    this._firstDayOfWeek = +this._model.getModel('dayLabel').get('firstDay');\n    this._orient = this._model.get('orient');\n    this._lineWidth = this._model.getModel('itemStyle').getItemStyle().lineWidth || 0;\n    this._rangeInfo = this._getRangeInfo(this._initRangeOption());\n    var weeks = this._rangeInfo.weeks || 1;\n    var whNames = ['width', 'height'];\n\n    var cellSize = this._model.get('cellSize').slice();\n\n    var layoutParams = this._model.getBoxLayoutParams();\n\n    var cellNumbers = this._orient === 'horizontal' ? [weeks, 7] : [7, weeks];\n    zrUtil.each([0, 1], function (idx) {\n      if (cellSizeSpecified(cellSize, idx)) {\n        layoutParams[whNames[idx]] = cellSize[idx] * cellNumbers[idx];\n      }\n    });\n    var whGlobal = {\n      width: api.getWidth(),\n      height: api.getHeight()\n    };\n    var calendarRect = this._rect = layout.getLayoutRect(layoutParams, whGlobal);\n    zrUtil.each([0, 1], function (idx) {\n      if (!cellSizeSpecified(cellSize, idx)) {\n        cellSize[idx] = calendarRect[whNames[idx]] / cellNumbers[idx];\n      }\n    });\n\n    function cellSizeSpecified(cellSize, idx) {\n      return cellSize[idx] != null && cellSize[idx] !== 'auto';\n    }\n\n    this._sw = cellSize[0];\n    this._sh = cellSize[1];\n  },\n\n  /**\n   * Convert a time data(time, value) item to (x, y) point.\n   *\n   * @override\n   * @param  {Array|number} data data\n   * @param  {boolean} [clamp=true] out of range\n   * @return {Array} point\n   */\n  dataToPoint: function (data, clamp) {\n    zrUtil.isArray(data) && (data = data[0]);\n    clamp == null && (clamp = true);\n    var dayInfo = this.getDateInfo(data);\n    var range = this._rangeInfo;\n    var date = dayInfo.formatedDate; // if not in range return [NaN, NaN]\n\n    if (clamp && !(dayInfo.time >= range.start.time && dayInfo.time <= range.end.time)) {\n      return [NaN, NaN];\n    }\n\n    var week = dayInfo.day;\n\n    var nthWeek = this._getRangeInfo([range.start.time, date]).nthWeek;\n\n    if (this._orient === 'vertical') {\n      return [this._rect.x + week * this._sw + this._sw / 2, this._rect.y + nthWeek * this._sh + this._sh / 2];\n    }\n\n    return [this._rect.x + nthWeek * this._sw + this._sw / 2, this._rect.y + week * this._sh + this._sh / 2];\n  },\n\n  /**\n   * Convert a (x, y) point to time data\n   *\n   * @override\n   * @param  {string} point point\n   * @return {string}       data\n   */\n  pointToData: function (point) {\n    var date = this.pointToDate(point);\n    return date && date.time;\n  },\n\n  /**\n   * Convert a time date item to (x, y) four point.\n   *\n   * @param  {Array} data  date[0] is date\n   * @param  {boolean} [clamp=true]  out of range\n   * @return {Object}       point\n   */\n  dataToRect: function (data, clamp) {\n    var point = this.dataToPoint(data, clamp);\n    return {\n      contentShape: {\n        x: point[0] - (this._sw - this._lineWidth) / 2,\n        y: point[1] - (this._sh - this._lineWidth) / 2,\n        width: this._sw - this._lineWidth,\n        height: this._sh - this._lineWidth\n      },\n      center: point,\n      tl: [point[0] - this._sw / 2, point[1] - this._sh / 2],\n      tr: [point[0] + this._sw / 2, point[1] - this._sh / 2],\n      br: [point[0] + this._sw / 2, point[1] + this._sh / 2],\n      bl: [point[0] - this._sw / 2, point[1] + this._sh / 2]\n    };\n  },\n\n  /**\n   * Convert a (x, y) point to time date\n   *\n   * @param  {Array} point point\n   * @return {Object}       date\n   */\n  pointToDate: function (point) {\n    var nthX = Math.floor((point[0] - this._rect.x) / this._sw) + 1;\n    var nthY = Math.floor((point[1] - this._rect.y) / this._sh) + 1;\n    var range = this._rangeInfo.range;\n\n    if (this._orient === 'vertical') {\n      return this._getDateByWeeksAndDay(nthY, nthX - 1, range);\n    }\n\n    return this._getDateByWeeksAndDay(nthX, nthY - 1, range);\n  },\n\n  /**\n   * @inheritDoc\n   */\n  convertToPixel: zrUtil.curry(doConvert, 'dataToPoint'),\n\n  /**\n   * @inheritDoc\n   */\n  convertFromPixel: zrUtil.curry(doConvert, 'pointToData'),\n\n  /**\n   * initRange\n   *\n   * @private\n   * @return {Array} [start, end]\n   */\n  _initRangeOption: function () {\n    var range = this._model.get('range');\n\n    var rg = range;\n\n    if (zrUtil.isArray(rg) && rg.length === 1) {\n      rg = rg[0];\n    }\n\n    if (/^\\d{4}$/.test(rg)) {\n      range = [rg + '-01-01', rg + '-12-31'];\n    }\n\n    if (/^\\d{4}[\\/|-]\\d{1,2}$/.test(rg)) {\n      var start = this.getDateInfo(rg);\n      var firstDay = start.date;\n      firstDay.setMonth(firstDay.getMonth() + 1);\n      var end = this.getNextNDay(firstDay, -1);\n      range = [start.formatedDate, end.formatedDate];\n    }\n\n    if (/^\\d{4}[\\/|-]\\d{1,2}[\\/|-]\\d{1,2}$/.test(rg)) {\n      range = [rg, rg];\n    }\n\n    var tmp = this._getRangeInfo(range);\n\n    if (tmp.start.time > tmp.end.time) {\n      range.reverse();\n    }\n\n    return range;\n  },\n\n  /**\n   * range info\n   *\n   * @private\n   * @param  {Array} range range ['2017-01-01', '2017-07-08']\n   *  If range[0] > range[1], they will not be reversed.\n   * @return {Object}       obj\n   */\n  _getRangeInfo: function (range) {\n    range = [this.getDateInfo(range[0]), this.getDateInfo(range[1])];\n    var reversed;\n\n    if (range[0].time > range[1].time) {\n      reversed = true;\n      range.reverse();\n    }\n\n    var allDay = Math.floor(range[1].time / PROXIMATE_ONE_DAY) - Math.floor(range[0].time / PROXIMATE_ONE_DAY) + 1; // Consider case:\n    // Firstly set system timezone as \"Time Zone: America/Toronto\",\n    // ```\n    // var first = new Date(1478412000000 - 3600 * 1000 * 2.5);\n    // var second = new Date(1478412000000);\n    // var allDays = Math.floor(second / ONE_DAY) - Math.floor(first / ONE_DAY) + 1;\n    // ```\n    // will get wrong result because of DST. So we should fix it.\n\n    var date = new Date(range[0].time);\n    var startDateNum = date.getDate();\n    var endDateNum = range[1].date.getDate();\n    date.setDate(startDateNum + allDay - 1); // The bias can not over a month, so just compare date.\n\n    if (date.getDate() !== endDateNum) {\n      var sign = date.getTime() - range[1].time > 0 ? 1 : -1;\n\n      while (date.getDate() !== endDateNum && (date.getTime() - range[1].time) * sign > 0) {\n        allDay -= sign;\n        date.setDate(startDateNum + allDay - 1);\n      }\n    }\n\n    var weeks = Math.floor((allDay + range[0].day + 6) / 7);\n    var nthWeek = reversed ? -weeks + 1 : weeks - 1;\n    reversed && range.reverse();\n    return {\n      range: [range[0].formatedDate, range[1].formatedDate],\n      start: range[0],\n      end: range[1],\n      allDay: allDay,\n      weeks: weeks,\n      // From 0.\n      nthWeek: nthWeek,\n      fweek: range[0].day,\n      lweek: range[1].day\n    };\n  },\n\n  /**\n   * get date by nthWeeks and week day in range\n   *\n   * @private\n   * @param  {number} nthWeek the week\n   * @param  {number} day   the week day\n   * @param  {Array} range [d1, d2]\n   * @return {Object}\n   */\n  _getDateByWeeksAndDay: function (nthWeek, day, range) {\n    var rangeInfo = this._getRangeInfo(range);\n\n    if (nthWeek > rangeInfo.weeks || nthWeek === 0 && day < rangeInfo.fweek || nthWeek === rangeInfo.weeks && day > rangeInfo.lweek) {\n      return false;\n    }\n\n    var nthDay = (nthWeek - 1) * 7 - rangeInfo.fweek + day;\n    var date = new Date(rangeInfo.start.time);\n    date.setDate(rangeInfo.start.d + nthDay);\n    return this.getDateInfo(date);\n  }\n};\nCalendar.dimensions = Calendar.prototype.dimensions;\nCalendar.getDimensionsInfo = Calendar.prototype.getDimensionsInfo;\n\nCalendar.create = function (ecModel, api) {\n  var calendarList = [];\n  ecModel.eachComponent('calendar', function (calendarModel) {\n    var calendar = new Calendar(calendarModel, ecModel, api);\n    calendarList.push(calendar);\n    calendarModel.coordinateSystem = calendar;\n  });\n  ecModel.eachSeries(function (calendarSeries) {\n    if (calendarSeries.get('coordinateSystem') === 'calendar') {\n      // Inject coordinate system\n      calendarSeries.coordinateSystem = calendarList[calendarSeries.get('calendarIndex') || 0];\n    }\n  });\n  return calendarList;\n};\n\nfunction doConvert(methodName, ecModel, finder, value) {\n  var calendarModel = finder.calendarModel;\n  var seriesModel = finder.seriesModel;\n  var coordSys = calendarModel ? calendarModel.coordinateSystem : seriesModel ? seriesModel.coordinateSystem : null;\n  return coordSys === this ? coordSys[methodName](value) : null;\n}\n\nCoordinateSystem.register('calendar', Calendar);\nvar _default = Calendar;\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar ComponentModel = require(\"../../model/Component\");\n\nvar _layout = require(\"../../util/layout\");\n\nvar getLayoutParams = _layout.getLayoutParams;\nvar sizeCalculable = _layout.sizeCalculable;\nvar mergeLayoutParam = _layout.mergeLayoutParam;\nvar CalendarModel = ComponentModel.extend({\n  type: 'calendar',\n\n  /**\n   * @type {module:echarts/coord/calendar/Calendar}\n   */\n  coordinateSystem: null,\n  defaultOption: {\n    zlevel: 0,\n    z: 2,\n    left: 80,\n    top: 60,\n    cellSize: 20,\n    // horizontal vertical\n    orient: 'horizontal',\n    // month separate line style\n    splitLine: {\n      show: true,\n      lineStyle: {\n        color: '#000',\n        width: 1,\n        type: 'solid'\n      }\n    },\n    // rect style  temporarily unused emphasis\n    itemStyle: {\n      color: '#fff',\n      borderWidth: 1,\n      borderColor: '#ccc'\n    },\n    // week text style\n    dayLabel: {\n      show: true,\n      // a week first day\n      firstDay: 0,\n      // start end\n      position: 'start',\n      margin: '50%',\n      // 50% of cellSize\n      nameMap: 'en',\n      color: '#000'\n    },\n    // month text style\n    monthLabel: {\n      show: true,\n      // start end\n      position: 'start',\n      margin: 5,\n      // center or left\n      align: 'center',\n      // cn en []\n      nameMap: 'en',\n      formatter: null,\n      color: '#000'\n    },\n    // year text style\n    yearLabel: {\n      show: true,\n      // top bottom left right\n      position: null,\n      margin: 30,\n      formatter: null,\n      color: '#ccc',\n      fontFamily: 'sans-serif',\n      fontWeight: 'bolder',\n      fontSize: 20\n    }\n  },\n\n  /**\n   * @override\n   */\n  init: function (option, parentModel, ecModel, extraOpt) {\n    var inputPositionParams = getLayoutParams(option);\n    CalendarModel.superApply(this, 'init', arguments);\n    mergeAndNormalizeLayoutParams(option, inputPositionParams);\n  },\n\n  /**\n   * @override\n   */\n  mergeOption: function (option, extraOpt) {\n    CalendarModel.superApply(this, 'mergeOption', arguments);\n    mergeAndNormalizeLayoutParams(this.option, option);\n  }\n});\n\nfunction mergeAndNormalizeLayoutParams(target, raw) {\n  // Normalize cellSize\n  var cellSize = target.cellSize;\n\n  if (!zrUtil.isArray(cellSize)) {\n    cellSize = target.cellSize = [cellSize, cellSize];\n  } else if (cellSize.length === 1) {\n    cellSize[1] = cellSize[0];\n  }\n\n  var ignoreSize = zrUtil.map([0, 1], function (hvIdx) {\n    // If user have set `width` or both `left` and `right`, cellSize\n    // will be automatically set to 'auto', otherwise the default\n    // setting of cellSize will make `width` setting not work.\n    if (sizeCalculable(raw, hvIdx)) {\n      cellSize[hvIdx] = 'auto';\n    }\n\n    return cellSize[hvIdx] != null && cellSize[hvIdx] !== 'auto';\n  });\n  mergeLayoutParam(target, raw, {\n    type: 'box',\n    ignoreSize: ignoreSize\n  });\n}\n\nvar _default = CalendarModel;\nmodule.exports = _default;","function _default(coordSys) {\n  var rect = coordSys.getRect();\n  var rangeInfo = coordSys.getRangeInfo();\n  return {\n    coordSys: {\n      type: 'calendar',\n      x: rect.x,\n      y: rect.y,\n      width: rect.width,\n      height: rect.height,\n      cellWidth: coordSys.getCellWidth(),\n      cellHeight: coordSys.getCellHeight(),\n      rangeInfo: {\n        start: rangeInfo.start,\n        end: rangeInfo.end,\n        weeks: rangeInfo.weeks,\n        dayCount: rangeInfo.allDay\n      }\n    },\n    api: {\n      coord: function (data, clamp) {\n        return coordSys.dataToPoint(data, clamp);\n      }\n    }\n  };\n}\n\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar Axis = require(\"../Axis\");\n\n/**\n * Extend axis 2d\n * @constructor module:echarts/coord/cartesian/Axis2D\n * @extends {module:echarts/coord/cartesian/Axis}\n * @param {string} dim\n * @param {*} scale\n * @param {Array.<number>} coordExtent\n * @param {string} axisType\n * @param {string} position\n */\nvar Axis2D = function (dim, scale, coordExtent, axisType, position) {\n  Axis.call(this, dim, scale, coordExtent);\n  /**\n   * Axis type\n   *  - 'category'\n   *  - 'value'\n   *  - 'time'\n   *  - 'log'\n   * @type {string}\n   */\n\n  this.type = axisType || 'value';\n  /**\n   * Axis position\n   *  - 'top'\n   *  - 'bottom'\n   *  - 'left'\n   *  - 'right'\n   */\n\n  this.position = position || 'bottom';\n};\n\nAxis2D.prototype = {\n  constructor: Axis2D,\n\n  /**\n   * Index of axis, can be used as key\n   */\n  index: 0,\n\n  /**\n   * If axis is on the zero position of the other axis\n   * @type {boolean}\n   */\n  onZero: false,\n\n  /**\n   * Axis model\n   * @param {module:echarts/coord/cartesian/AxisModel}\n   */\n  model: null,\n  isHorizontal: function () {\n    var position = this.position;\n    return position === 'top' || position === 'bottom';\n  },\n\n  /**\n   * Each item cooresponds to this.getExtent(), which\n   * means globalExtent[0] may greater than globalExtent[1],\n   * unless `asc` is input.\n   *\n   * @param {boolean} [asc]\n   * @return {Array.<number>}\n   */\n  getGlobalExtent: function (asc) {\n    var ret = this.getExtent();\n    ret[0] = this.toGlobalCoord(ret[0]);\n    ret[1] = this.toGlobalCoord(ret[1]);\n    asc && ret[0] > ret[1] && ret.reverse();\n    return ret;\n  },\n  getOtherAxis: function () {\n    this.grid.getOtherAxis();\n  },\n\n  /**\n   * If label is ignored.\n   * Automatically used when axis is category and label can not be all shown\n   * @param  {number}  idx\n   * @return {boolean}\n   */\n  isLabelIgnored: function (idx) {\n    if (this.type === 'category') {\n      var labelInterval = this.getLabelInterval();\n      return typeof labelInterval === 'function' && !labelInterval(idx, this.scale.getLabel(idx)) || idx % (labelInterval + 1);\n    }\n  },\n\n  /**\n   * @override\n   */\n  pointToData: function (point, clamp) {\n    return this.coordToData(this.toLocalCoord(point[this.dim === 'x' ? 0 : 1]), clamp);\n  },\n\n  /**\n   * Transform global coord to local coord,\n   * i.e. var localCoord = axis.toLocalCoord(80);\n   * designate by module:echarts/coord/cartesian/Grid.\n   * @type {Function}\n   */\n  toLocalCoord: null,\n\n  /**\n   * Transform global coord to local coord,\n   * i.e. var globalCoord = axis.toLocalCoord(40);\n   * designate by module:echarts/coord/cartesian/Grid.\n   * @type {Function}\n   */\n  toGlobalCoord: null\n};\nzrUtil.inherits(Axis2D, Axis);\nvar _default = Axis2D;\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar ComponentModel = require(\"../../model/Component\");\n\nvar axisModelCreator = require(\"../axisModelCreator\");\n\nvar axisModelCommonMixin = require(\"../axisModelCommonMixin\");\n\nvar AxisModel = ComponentModel.extend({\n  type: 'cartesian2dAxis',\n\n  /**\n   * @type {module:echarts/coord/cartesian/Axis2D}\n   */\n  axis: null,\n\n  /**\n   * @override\n   */\n  init: function () {\n    AxisModel.superApply(this, 'init', arguments);\n    this.resetRange();\n  },\n\n  /**\n   * @override\n   */\n  mergeOption: function () {\n    AxisModel.superApply(this, 'mergeOption', arguments);\n    this.resetRange();\n  },\n\n  /**\n   * @override\n   */\n  restoreData: function () {\n    AxisModel.superApply(this, 'restoreData', arguments);\n    this.resetRange();\n  },\n\n  /**\n   * @override\n   * @return {module:echarts/model/Component}\n   */\n  getCoordSysModel: function () {\n    return this.ecModel.queryComponents({\n      mainType: 'grid',\n      index: this.option.gridIndex,\n      id: this.option.gridId\n    })[0];\n  }\n});\n\nfunction getAxisType(axisDim, option) {\n  // Default axis with data is category axis\n  return option.type || (option.data ? 'category' : 'value');\n}\n\nzrUtil.merge(AxisModel.prototype, axisModelCommonMixin);\nvar extraOption = {\n  // gridIndex: 0,\n  // gridId: '',\n  // Offset is for multiple axis on the same position\n  offset: 0\n};\naxisModelCreator('x', AxisModel, getAxisType, extraOption);\naxisModelCreator('y', AxisModel, getAxisType, extraOption);\nvar _default = AxisModel;\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\n/**\n * Cartesian coordinate system\n * @module  echarts/coord/Cartesian\n *\n */\nfunction dimAxisMapper(dim) {\n  return this._axes[dim];\n}\n/**\n * @alias module:echarts/coord/Cartesian\n * @constructor\n */\n\n\nvar Cartesian = function (name) {\n  this._axes = {};\n  this._dimList = [];\n  /**\n   * @type {string}\n   */\n\n  this.name = name || '';\n};\n\nCartesian.prototype = {\n  constructor: Cartesian,\n  type: 'cartesian',\n\n  /**\n   * Get axis\n   * @param  {number|string} dim\n   * @return {module:echarts/coord/Cartesian~Axis}\n   */\n  getAxis: function (dim) {\n    return this._axes[dim];\n  },\n\n  /**\n   * Get axes list\n   * @return {Array.<module:echarts/coord/Cartesian~Axis>}\n   */\n  getAxes: function () {\n    return zrUtil.map(this._dimList, dimAxisMapper, this);\n  },\n\n  /**\n   * Get axes list by given scale type\n   */\n  getAxesByScale: function (scaleType) {\n    scaleType = scaleType.toLowerCase();\n    return zrUtil.filter(this.getAxes(), function (axis) {\n      return axis.scale.type === scaleType;\n    });\n  },\n\n  /**\n   * Add axis\n   * @param {module:echarts/coord/Cartesian.Axis}\n   */\n  addAxis: function (axis) {\n    var dim = axis.dim;\n    this._axes[dim] = axis;\n\n    this._dimList.push(dim);\n  },\n\n  /**\n   * Convert data to coord in nd space\n   * @param {Array.<number>|Object.<string, number>} val\n   * @return {Array.<number>|Object.<string, number>}\n   */\n  dataToCoord: function (val) {\n    return this._dataCoordConvert(val, 'dataToCoord');\n  },\n\n  /**\n   * Convert coord in nd space to data\n   * @param  {Array.<number>|Object.<string, number>} val\n   * @return {Array.<number>|Object.<string, number>}\n   */\n  coordToData: function (val) {\n    return this._dataCoordConvert(val, 'coordToData');\n  },\n  _dataCoordConvert: function (input, method) {\n    var dimList = this._dimList;\n    var output = input instanceof Array ? [] : {};\n\n    for (var i = 0; i < dimList.length; i++) {\n      var dim = dimList[i];\n      var axis = this._axes[dim];\n      output[dim] = axis[method](input[dim]);\n    }\n\n    return output;\n  }\n};\nvar _default = Cartesian;\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar Cartesian = require(\"./Cartesian\");\n\nfunction Cartesian2D(name) {\n  Cartesian.call(this, name);\n}\n\nCartesian2D.prototype = {\n  constructor: Cartesian2D,\n  type: 'cartesian2d',\n\n  /**\n   * @type {Array.<string>}\n   * @readOnly\n   */\n  dimensions: ['x', 'y'],\n\n  /**\n   * Base axis will be used on stacking.\n   *\n   * @return {module:echarts/coord/cartesian/Axis2D}\n   */\n  getBaseAxis: function () {\n    return this.getAxesByScale('ordinal')[0] || this.getAxesByScale('time')[0] || this.getAxis('x');\n  },\n\n  /**\n   * If contain point\n   * @param {Array.<number>} point\n   * @return {boolean}\n   */\n  containPoint: function (point) {\n    var axisX = this.getAxis('x');\n    var axisY = this.getAxis('y');\n    return axisX.contain(axisX.toLocalCoord(point[0])) && axisY.contain(axisY.toLocalCoord(point[1]));\n  },\n\n  /**\n   * If contain data\n   * @param {Array.<number>} data\n   * @return {boolean}\n   */\n  containData: function (data) {\n    return this.getAxis('x').containData(data[0]) && this.getAxis('y').containData(data[1]);\n  },\n\n  /**\n   * @param {Array.<number>} data\n   * @param {Array.<number>} out\n   * @return {Array.<number>}\n   */\n  dataToPoint: function (data, reserved, out) {\n    var xAxis = this.getAxis('x');\n    var yAxis = this.getAxis('y');\n    out = out || [];\n    out[0] = xAxis.toGlobalCoord(xAxis.dataToCoord(data[0]));\n    out[1] = yAxis.toGlobalCoord(yAxis.dataToCoord(data[1]));\n    return out;\n  },\n\n  /**\n   * @param {Array.<number>} data\n   * @param {Array.<number>} out\n   * @return {Array.<number>}\n   */\n  clampData: function (data, out) {\n    var xAxisExtent = this.getAxis('x').scale.getExtent();\n    var yAxisExtent = this.getAxis('y').scale.getExtent();\n    out = out || [];\n    out[0] = Math.min(Math.max(Math.min(xAxisExtent[0], xAxisExtent[1]), data[0]), Math.max(xAxisExtent[0], xAxisExtent[1]));\n    out[1] = Math.min(Math.max(Math.min(yAxisExtent[0], yAxisExtent[1]), data[1]), Math.max(yAxisExtent[0], yAxisExtent[1]));\n    return out;\n  },\n\n  /**\n   * @param {Array.<number>} point\n   * @param {Array.<number>} out\n   * @return {Array.<number>}\n   */\n  pointToData: function (point, out) {\n    var xAxis = this.getAxis('x');\n    var yAxis = this.getAxis('y');\n    out = out || [];\n    out[0] = xAxis.coordToData(xAxis.toLocalCoord(point[0]));\n    out[1] = yAxis.coordToData(yAxis.toLocalCoord(point[1]));\n    return out;\n  },\n\n  /**\n   * Get other axis\n   * @param {module:echarts/coord/cartesian/Axis2D} axis\n   */\n  getOtherAxis: function (axis) {\n    return this.getAxis(axis.dim === 'x' ? 'y' : 'x');\n  }\n};\nzrUtil.inherits(Cartesian2D, Cartesian);\nvar _default = Cartesian2D;\nmodule.exports = _default;","var _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar BoundingRect = require(\"zrender/lib/core/BoundingRect\");\n\nvar _layout = require(\"../../util/layout\");\n\nvar getLayoutRect = _layout.getLayoutRect;\n\nvar axisHelper = require(\"../../coord/axisHelper\");\n\nvar Cartesian2D = require(\"./Cartesian2D\");\n\nvar Axis2D = require(\"./Axis2D\");\n\nvar CoordinateSystem = require(\"../../CoordinateSystem\");\n\nrequire(\"./GridModel\");\n\n/**\n * Grid is a region which contains at most 4 cartesian systems\n *\n * TODO Default cartesian\n */\n// Depends on GridModel, AxisModel, which performs preprocess.\nvar each = zrUtil.each;\nvar ifAxisCrossZero = axisHelper.ifAxisCrossZero;\nvar niceScaleExtent = axisHelper.niceScaleExtent;\n/**\n * Check if the axis is used in the specified grid\n * @inner\n */\n\nfunction isAxisUsedInTheGrid(axisModel, gridModel, ecModel) {\n  return axisModel.getCoordSysModel() === gridModel;\n}\n\nfunction rotateTextRect(textRect, rotate) {\n  var rotateRadians = rotate * Math.PI / 180;\n  var boundingBox = textRect.plain();\n  var beforeWidth = boundingBox.width;\n  var beforeHeight = boundingBox.height;\n  var afterWidth = beforeWidth * Math.cos(rotateRadians) + beforeHeight * Math.sin(rotateRadians);\n  var afterHeight = beforeWidth * Math.sin(rotateRadians) + beforeHeight * Math.cos(rotateRadians);\n  var rotatedRect = new BoundingRect(boundingBox.x, boundingBox.y, afterWidth, afterHeight);\n  return rotatedRect;\n}\n\nfunction getLabelUnionRect(axis) {\n  var axisModel = axis.model;\n  var labels = axisModel.get('axisLabel.show') ? axisModel.getFormattedLabels() : [];\n  var axisLabelModel = axisModel.getModel('axisLabel');\n  var rect;\n  var step = 1;\n  var labelCount = labels.length;\n\n  if (labelCount > 40) {\n    // Simple optimization for large amount of labels\n    step = Math.ceil(labelCount / 40);\n  }\n\n  for (var i = 0; i < labelCount; i += step) {\n    if (!axis.isLabelIgnored(i)) {\n      var unrotatedSingleRect = axisLabelModel.getTextRect(labels[i]);\n      var singleRect = rotateTextRect(unrotatedSingleRect, axisLabelModel.get('rotate') || 0);\n      rect ? rect.union(singleRect) : rect = singleRect;\n    }\n  }\n\n  return rect;\n}\n\nfunction Grid(gridModel, ecModel, api) {\n  /**\n   * @type {Object.<string, module:echarts/coord/cartesian/Cartesian2D>}\n   * @private\n   */\n  this._coordsMap = {};\n  /**\n   * @type {Array.<module:echarts/coord/cartesian/Cartesian>}\n   * @private\n   */\n\n  this._coordsList = [];\n  /**\n   * @type {Object.<string, module:echarts/coord/cartesian/Axis2D>}\n   * @private\n   */\n\n  this._axesMap = {};\n  /**\n   * @type {Array.<module:echarts/coord/cartesian/Axis2D>}\n   * @private\n   */\n\n  this._axesList = [];\n\n  this._initCartesian(gridModel, ecModel, api);\n\n  this.model = gridModel;\n}\n\nvar gridProto = Grid.prototype;\ngridProto.type = 'grid';\ngridProto.axisPointerEnabled = true;\n\ngridProto.getRect = function () {\n  return this._rect;\n};\n\ngridProto.update = function (ecModel, api) {\n  var axesMap = this._axesMap;\n\n  this._updateScale(ecModel, this.model);\n\n  each(axesMap.x, function (xAxis) {\n    niceScaleExtent(xAxis.scale, xAxis.model);\n  });\n  each(axesMap.y, function (yAxis) {\n    niceScaleExtent(yAxis.scale, yAxis.model);\n  });\n  each(axesMap.x, function (xAxis) {\n    fixAxisOnZero(axesMap, 'y', xAxis);\n  });\n  each(axesMap.y, function (yAxis) {\n    fixAxisOnZero(axesMap, 'x', yAxis);\n  }); // Resize again if containLabel is enabled\n  // FIXME It may cause getting wrong grid size in data processing stage\n\n  this.resize(this.model, api);\n};\n\nfunction fixAxisOnZero(axesMap, otherAxisDim, axis) {\n  // onZero can not be enabled in these two situations:\n  // 1. When any other axis is a category axis.\n  // 2. When no axis is cross 0 point.\n  var axes = axesMap[otherAxisDim];\n\n  if (!axis.onZero) {\n    return;\n  }\n\n  var onZeroAxisIndex = axis.onZeroAxisIndex; // If target axis is specified.\n\n  if (onZeroAxisIndex != null) {\n    var otherAxis = axes[onZeroAxisIndex];\n\n    if (otherAxis && canNotOnZeroToAxis(otherAxis)) {\n      axis.onZero = false;\n    }\n\n    return;\n  }\n\n  for (var idx in axes) {\n    if (axes.hasOwnProperty(idx)) {\n      var otherAxis = axes[idx];\n\n      if (otherAxis && !canNotOnZeroToAxis(otherAxis)) {\n        onZeroAxisIndex = +idx;\n        break;\n      }\n    }\n  }\n\n  if (onZeroAxisIndex == null) {\n    axis.onZero = false;\n  }\n\n  axis.onZeroAxisIndex = onZeroAxisIndex;\n}\n\nfunction canNotOnZeroToAxis(axis) {\n  return axis.type === 'category' || axis.type === 'time' || !ifAxisCrossZero(axis);\n}\n/**\n * Resize the grid\n * @param {module:echarts/coord/cartesian/GridModel} gridModel\n * @param {module:echarts/ExtensionAPI} api\n */\n\n\ngridProto.resize = function (gridModel, api, ignoreContainLabel) {\n  var gridRect = getLayoutRect(gridModel.getBoxLayoutParams(), {\n    width: api.getWidth(),\n    height: api.getHeight()\n  });\n  this._rect = gridRect;\n  var axesList = this._axesList;\n  adjustAxes(); // Minus label size\n\n  if (!ignoreContainLabel && gridModel.get('containLabel')) {\n    each(axesList, function (axis) {\n      if (!axis.model.get('axisLabel.inside')) {\n        var labelUnionRect = getLabelUnionRect(axis);\n\n        if (labelUnionRect) {\n          var dim = axis.isHorizontal() ? 'height' : 'width';\n          var margin = axis.model.get('axisLabel.margin');\n          gridRect[dim] -= labelUnionRect[dim] + margin;\n\n          if (axis.position === 'top') {\n            gridRect.y += labelUnionRect.height + margin;\n          } else if (axis.position === 'left') {\n            gridRect.x += labelUnionRect.width + margin;\n          }\n        }\n      }\n    });\n    adjustAxes();\n  }\n\n  function adjustAxes() {\n    each(axesList, function (axis) {\n      var isHorizontal = axis.isHorizontal();\n      var extent = isHorizontal ? [0, gridRect.width] : [0, gridRect.height];\n      var idx = axis.inverse ? 1 : 0;\n      axis.setExtent(extent[idx], extent[1 - idx]);\n      updateAxisTransform(axis, isHorizontal ? gridRect.x : gridRect.y);\n    });\n  }\n};\n/**\n * @param {string} axisType\n * @param {number} [axisIndex]\n */\n\n\ngridProto.getAxis = function (axisType, axisIndex) {\n  var axesMapOnDim = this._axesMap[axisType];\n\n  if (axesMapOnDim != null) {\n    if (axisIndex == null) {\n      // Find first axis\n      for (var name in axesMapOnDim) {\n        if (axesMapOnDim.hasOwnProperty(name)) {\n          return axesMapOnDim[name];\n        }\n      }\n    }\n\n    return axesMapOnDim[axisIndex];\n  }\n};\n/**\n * @return {Array.<module:echarts/coord/Axis>}\n */\n\n\ngridProto.getAxes = function () {\n  return this._axesList.slice();\n};\n/**\n * Usage:\n *      grid.getCartesian(xAxisIndex, yAxisIndex);\n *      grid.getCartesian(xAxisIndex);\n *      grid.getCartesian(null, yAxisIndex);\n *      grid.getCartesian({xAxisIndex: ..., yAxisIndex: ...});\n *\n * @param {number|Object} [xAxisIndex]\n * @param {number} [yAxisIndex]\n */\n\n\ngridProto.getCartesian = function (xAxisIndex, yAxisIndex) {\n  if (xAxisIndex != null && yAxisIndex != null) {\n    var key = 'x' + xAxisIndex + 'y' + yAxisIndex;\n    return this._coordsMap[key];\n  }\n\n  if (zrUtil.isObject(xAxisIndex)) {\n    yAxisIndex = xAxisIndex.yAxisIndex;\n    xAxisIndex = xAxisIndex.xAxisIndex;\n  } // When only xAxisIndex or yAxisIndex given, find its first cartesian.\n\n\n  for (var i = 0, coordList = this._coordsList; i < coordList.length; i++) {\n    if (coordList[i].getAxis('x').index === xAxisIndex || coordList[i].getAxis('y').index === yAxisIndex) {\n      return coordList[i];\n    }\n  }\n};\n\ngridProto.getCartesians = function () {\n  return this._coordsList.slice();\n};\n/**\n * @implements\n * see {module:echarts/CoodinateSystem}\n */\n\n\ngridProto.convertToPixel = function (ecModel, finder, value) {\n  var target = this._findConvertTarget(ecModel, finder);\n\n  return target.cartesian ? target.cartesian.dataToPoint(value) : target.axis ? target.axis.toGlobalCoord(target.axis.dataToCoord(value)) : null;\n};\n/**\n * @implements\n * see {module:echarts/CoodinateSystem}\n */\n\n\ngridProto.convertFromPixel = function (ecModel, finder, value) {\n  var target = this._findConvertTarget(ecModel, finder);\n\n  return target.cartesian ? target.cartesian.pointToData(value) : target.axis ? target.axis.coordToData(target.axis.toLocalCoord(value)) : null;\n};\n/**\n * @inner\n */\n\n\ngridProto._findConvertTarget = function (ecModel, finder) {\n  var seriesModel = finder.seriesModel;\n  var xAxisModel = finder.xAxisModel || seriesModel && seriesModel.getReferringComponents('xAxis')[0];\n  var yAxisModel = finder.yAxisModel || seriesModel && seriesModel.getReferringComponents('yAxis')[0];\n  var gridModel = finder.gridModel;\n  var coordsList = this._coordsList;\n  var cartesian;\n  var axis;\n\n  if (seriesModel) {\n    cartesian = seriesModel.coordinateSystem;\n    zrUtil.indexOf(coordsList, cartesian) < 0 && (cartesian = null);\n  } else if (xAxisModel && yAxisModel) {\n    cartesian = this.getCartesian(xAxisModel.componentIndex, yAxisModel.componentIndex);\n  } else if (xAxisModel) {\n    axis = this.getAxis('x', xAxisModel.componentIndex);\n  } else if (yAxisModel) {\n    axis = this.getAxis('y', yAxisModel.componentIndex);\n  } // Lowest priority.\n  else if (gridModel) {\n      var grid = gridModel.coordinateSystem;\n\n      if (grid === this) {\n        cartesian = this._coordsList[0];\n      }\n    }\n\n  return {\n    cartesian: cartesian,\n    axis: axis\n  };\n};\n/**\n * @implements\n * see {module:echarts/CoodinateSystem}\n */\n\n\ngridProto.containPoint = function (point) {\n  var coord = this._coordsList[0];\n\n  if (coord) {\n    return coord.containPoint(point);\n  }\n};\n/**\n * Initialize cartesian coordinate systems\n * @private\n */\n\n\ngridProto._initCartesian = function (gridModel, ecModel, api) {\n  var axisPositionUsed = {\n    left: false,\n    right: false,\n    top: false,\n    bottom: false\n  };\n  var axesMap = {\n    x: {},\n    y: {}\n  };\n  var axesCount = {\n    x: 0,\n    y: 0\n  }; /// Create axis\n\n  ecModel.eachComponent('xAxis', createAxisCreator('x'), this);\n  ecModel.eachComponent('yAxis', createAxisCreator('y'), this);\n\n  if (!axesCount.x || !axesCount.y) {\n    // Roll back when there no either x or y axis\n    this._axesMap = {};\n    this._axesList = [];\n    return;\n  }\n\n  this._axesMap = axesMap; /// Create cartesian2d\n\n  each(axesMap.x, function (xAxis, xAxisIndex) {\n    each(axesMap.y, function (yAxis, yAxisIndex) {\n      var key = 'x' + xAxisIndex + 'y' + yAxisIndex;\n      var cartesian = new Cartesian2D(key);\n      cartesian.grid = this;\n      cartesian.model = gridModel;\n      this._coordsMap[key] = cartesian;\n\n      this._coordsList.push(cartesian);\n\n      cartesian.addAxis(xAxis);\n      cartesian.addAxis(yAxis);\n    }, this);\n  }, this);\n\n  function createAxisCreator(axisType) {\n    return function (axisModel, idx) {\n      if (!isAxisUsedInTheGrid(axisModel, gridModel, ecModel)) {\n        return;\n      }\n\n      var axisPosition = axisModel.get('position');\n\n      if (axisType === 'x') {\n        // Fix position\n        if (axisPosition !== 'top' && axisPosition !== 'bottom') {\n          // Default bottom of X\n          axisPosition = 'bottom';\n\n          if (axisPositionUsed[axisPosition]) {\n            axisPosition = axisPosition === 'top' ? 'bottom' : 'top';\n          }\n        }\n      } else {\n        // Fix position\n        if (axisPosition !== 'left' && axisPosition !== 'right') {\n          // Default left of Y\n          axisPosition = 'left';\n\n          if (axisPositionUsed[axisPosition]) {\n            axisPosition = axisPosition === 'left' ? 'right' : 'left';\n          }\n        }\n      }\n\n      axisPositionUsed[axisPosition] = true;\n      var axis = new Axis2D(axisType, axisHelper.createScaleByModel(axisModel), [0, 0], axisModel.get('type'), axisPosition);\n      var isCategory = axis.type === 'category';\n      axis.onBand = isCategory && axisModel.get('boundaryGap');\n      axis.inverse = axisModel.get('inverse');\n      axis.onZero = axisModel.get('axisLine.onZero');\n      axis.onZeroAxisIndex = axisModel.get('axisLine.onZeroAxisIndex'); // Inject axis into axisModel\n\n      axisModel.axis = axis; // Inject axisModel into axis\n\n      axis.model = axisModel; // Inject grid info axis\n\n      axis.grid = this; // Index of axis, can be used as key\n\n      axis.index = idx;\n\n      this._axesList.push(axis);\n\n      axesMap[axisType][idx] = axis;\n      axesCount[axisType]++;\n    };\n  }\n};\n/**\n * Update cartesian properties from series\n * @param  {module:echarts/model/Option} option\n * @private\n */\n\n\ngridProto._updateScale = function (ecModel, gridModel) {\n  // Reset scale\n  zrUtil.each(this._axesList, function (axis) {\n    axis.scale.setExtent(Infinity, -Infinity);\n  });\n  ecModel.eachSeries(function (seriesModel) {\n    if (isCartesian2D(seriesModel)) {\n      var axesModels = findAxesModels(seriesModel, ecModel);\n      var xAxisModel = axesModels[0];\n      var yAxisModel = axesModels[1];\n\n      if (!isAxisUsedInTheGrid(xAxisModel, gridModel, ecModel) || !isAxisUsedInTheGrid(yAxisModel, gridModel, ecModel)) {\n        return;\n      }\n\n      var cartesian = this.getCartesian(xAxisModel.componentIndex, yAxisModel.componentIndex);\n      var data = seriesModel.getData();\n      var xAxis = cartesian.getAxis('x');\n      var yAxis = cartesian.getAxis('y');\n\n      if (data.type === 'list') {\n        unionExtent(data, xAxis, seriesModel);\n        unionExtent(data, yAxis, seriesModel);\n      }\n    }\n  }, this);\n\n  function unionExtent(data, axis, seriesModel) {\n    each(data.mapDimension(axis.dim, true), function (dim) {\n      axis.scale.unionExtentFromData(data, dim);\n    });\n  }\n};\n/**\n * @param {string} [dim] 'x' or 'y' or 'auto' or null/undefined\n * @return {Object} {baseAxes: [], otherAxes: []}\n */\n\n\ngridProto.getTooltipAxes = function (dim) {\n  var baseAxes = [];\n  var otherAxes = [];\n  each(this.getCartesians(), function (cartesian) {\n    var baseAxis = dim != null && dim !== 'auto' ? cartesian.getAxis(dim) : cartesian.getBaseAxis();\n    var otherAxis = cartesian.getOtherAxis(baseAxis);\n    zrUtil.indexOf(baseAxes, baseAxis) < 0 && baseAxes.push(baseAxis);\n    zrUtil.indexOf(otherAxes, otherAxis) < 0 && otherAxes.push(otherAxis);\n  });\n  return {\n    baseAxes: baseAxes,\n    otherAxes: otherAxes\n  };\n};\n/**\n * @inner\n */\n\n\nfunction updateAxisTransform(axis, coordBase) {\n  var axisExtent = axis.getExtent();\n  var axisExtentSum = axisExtent[0] + axisExtent[1]; // Fast transform\n\n  axis.toGlobalCoord = axis.dim === 'x' ? function (coord) {\n    return coord + coordBase;\n  } : function (coord) {\n    return axisExtentSum - coord + coordBase;\n  };\n  axis.toLocalCoord = axis.dim === 'x' ? function (coord) {\n    return coord - coordBase;\n  } : function (coord) {\n    return axisExtentSum - coord + coordBase;\n  };\n}\n\nvar axesTypes = ['xAxis', 'yAxis'];\n/**\n * @inner\n */\n\nfunction findAxesModels(seriesModel, ecModel) {\n  return zrUtil.map(axesTypes, function (axisType) {\n    var axisModel = seriesModel.getReferringComponents(axisType)[0];\n    return axisModel;\n  });\n}\n/**\n * @inner\n */\n\n\nfunction isCartesian2D(seriesModel) {\n  return seriesModel.get('coordinateSystem') === 'cartesian2d';\n}\n\nGrid.create = function (ecModel, api) {\n  var grids = [];\n  ecModel.eachComponent('grid', function (gridModel, idx) {\n    var grid = new Grid(gridModel, ecModel, api);\n    grid.name = 'grid_' + idx; // dataSampling requires axis extent, so resize\n    // should be performed in create stage.\n\n    grid.resize(gridModel, api, true);\n    gridModel.coordinateSystem = grid;\n    grids.push(grid);\n  }); // Inject the coordinateSystems into seriesModel\n\n  ecModel.eachSeries(function (seriesModel) {\n    if (!isCartesian2D(seriesModel)) {\n      return;\n    }\n\n    var axesModels = findAxesModels(seriesModel, ecModel);\n    var xAxisModel = axesModels[0];\n    var yAxisModel = axesModels[1];\n    var gridModel = xAxisModel.getCoordSysModel();\n    var grid = gridModel.coordinateSystem;\n    seriesModel.coordinateSystem = grid.getCartesian(xAxisModel.componentIndex, yAxisModel.componentIndex);\n  });\n  return grids;\n}; // For deciding which dimensions to use when creating list data\n\n\nGrid.dimensions = Grid.prototype.dimensions = Cartesian2D.prototype.dimensions;\nCoordinateSystem.register('cartesian2d', Grid);\nvar _default = Grid;\nmodule.exports = _default;","require(\"./AxisModel\");\n\nvar ComponentModel = require(\"../../model/Component\");\n\n// Grid 是在有直角坐标系的时候必须要存在的\n// 所以这里也要被 Cartesian2D 依赖\nvar _default = ComponentModel.extend({\n  type: 'grid',\n  dependencies: ['xAxis', 'yAxis'],\n  layoutMode: 'box',\n\n  /**\n   * @type {module:echarts/coord/cartesian/Grid}\n   */\n  coordinateSystem: null,\n  defaultOption: {\n    show: false,\n    zlevel: 0,\n    z: 0,\n    left: '10%',\n    top: 60,\n    right: '10%',\n    bottom: 60,\n    // If grid size contain label\n    containLabel: false,\n    // width: {totalWidth} - left - right,\n    // height: {totalHeight} - top - bottom,\n    backgroundColor: 'rgba(0,0,0,0)',\n    borderWidth: 1,\n    borderColor: '#ccc'\n  }\n});\n\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\nfunction dataToCoordSize(dataSize, dataItem) {\n  // dataItem is necessary in log axis.\n  dataItem = dataItem || [0, 0];\n  return zrUtil.map(['x', 'y'], function (dim, dimIdx) {\n    var axis = this.getAxis(dim);\n    var val = dataItem[dimIdx];\n    var halfSize = dataSize[dimIdx] / 2;\n    return axis.type === 'category' ? axis.getBandWidth() : Math.abs(axis.dataToCoord(val - halfSize) - axis.dataToCoord(val + halfSize));\n  }, this);\n}\n\nfunction _default(coordSys) {\n  var rect = coordSys.grid.getRect();\n  return {\n    coordSys: {\n      // The name exposed to user is always 'cartesian2d' but not 'grid'.\n      type: 'cartesian2d',\n      x: rect.x,\n      y: rect.y,\n      width: rect.width,\n      height: rect.height\n    },\n    api: {\n      coord: function (data) {\n        // do not provide \"out\" param\n        return coordSys.dataToPoint(data);\n      },\n      size: zrUtil.bind(dataToCoordSize, coordSys)\n    }\n  };\n}\n\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar BoundingRect = require(\"zrender/lib/core/BoundingRect\");\n\nvar parseGeoJson = require(\"./parseGeoJson\");\n\nvar View = require(\"../View\");\n\nvar fixNanhai = require(\"./fix/nanhai\");\n\nvar fixTextCoord = require(\"./fix/textCoord\");\n\nvar fixGeoCoord = require(\"./fix/geoCoord\");\n\nvar fixDiaoyuIsland = require(\"./fix/diaoyuIsland\");\n\n// Geo fix functions\nvar geoFixFuncs = [fixNanhai, fixTextCoord, fixGeoCoord, fixDiaoyuIsland];\n/**\n * [Geo description]\n * @param {string} name Geo name\n * @param {string} map Map type\n * @param {Object} geoJson\n * @param {Object} [specialAreas]\n *        Specify the positioned areas by left, top, width, height\n * @param {Object.<string, string>} [nameMap]\n *        Specify name alias\n */\n\nfunction Geo(name, map, geoJson, specialAreas, nameMap) {\n  View.call(this, name);\n  /**\n   * Map type\n   * @type {string}\n   */\n\n  this.map = map;\n  this._nameCoordMap = zrUtil.createHashMap();\n  this.loadGeoJson(geoJson, specialAreas, nameMap);\n}\n\nGeo.prototype = {\n  constructor: Geo,\n  type: 'geo',\n\n  /**\n   * @param {Array.<string>}\n   * @readOnly\n   */\n  dimensions: ['lng', 'lat'],\n\n  /**\n   * If contain given lng,lat coord\n   * @param {Array.<number>}\n   * @readOnly\n   */\n  containCoord: function (coord) {\n    var regions = this.regions;\n\n    for (var i = 0; i < regions.length; i++) {\n      if (regions[i].contain(coord)) {\n        return true;\n      }\n    }\n\n    return false;\n  },\n\n  /**\n   * @param {Object} geoJson\n   * @param {Object} [specialAreas]\n   *        Specify the positioned areas by left, top, width, height\n   * @param {Object.<string, string>} [nameMap]\n   *        Specify name alias\n   */\n  loadGeoJson: function (geoJson, specialAreas, nameMap) {\n    // https://jsperf.com/try-catch-performance-overhead\n    try {\n      this.regions = geoJson ? parseGeoJson(geoJson) : [];\n    } catch (e) {\n      throw 'Invalid geoJson format\\n' + e.message;\n    }\n\n    specialAreas = specialAreas || {};\n    nameMap = nameMap || {};\n    var regions = this.regions;\n    var regionsMap = zrUtil.createHashMap();\n\n    for (var i = 0; i < regions.length; i++) {\n      var regionName = regions[i].name; // Try use the alias in nameMap\n\n      regionName = nameMap.hasOwnProperty(regionName) ? nameMap[regionName] : regionName;\n      regions[i].name = regionName;\n      regionsMap.set(regionName, regions[i]); // Add geoJson\n\n      this.addGeoCoord(regionName, regions[i].center); // Some area like Alaska in USA map needs to be tansformed\n      // to look better\n\n      var specialArea = specialAreas[regionName];\n\n      if (specialArea) {\n        regions[i].transformTo(specialArea.left, specialArea.top, specialArea.width, specialArea.height);\n      }\n    }\n\n    this._regionsMap = regionsMap;\n    this._rect = null;\n    zrUtil.each(geoFixFuncs, function (fixFunc) {\n      fixFunc(this);\n    }, this);\n  },\n  // Overwrite\n  transformTo: function (x, y, width, height) {\n    var rect = this.getBoundingRect();\n    rect = rect.clone(); // Longitute is inverted\n\n    rect.y = -rect.y - rect.height;\n    var rawTransformable = this._rawTransformable;\n    rawTransformable.transform = rect.calculateTransform(new BoundingRect(x, y, width, height));\n    rawTransformable.decomposeTransform();\n    var scale = rawTransformable.scale;\n    scale[1] = -scale[1];\n    rawTransformable.updateTransform();\n\n    this._updateTransform();\n  },\n\n  /**\n   * @param {string} name\n   * @return {module:echarts/coord/geo/Region}\n   */\n  getRegion: function (name) {\n    return this._regionsMap.get(name);\n  },\n  getRegionByCoord: function (coord) {\n    var regions = this.regions;\n\n    for (var i = 0; i < regions.length; i++) {\n      if (regions[i].contain(coord)) {\n        return regions[i];\n      }\n    }\n  },\n\n  /**\n   * Add geoCoord for indexing by name\n   * @param {string} name\n   * @param {Array.<number>} geoCoord\n   */\n  addGeoCoord: function (name, geoCoord) {\n    this._nameCoordMap.set(name, geoCoord);\n  },\n\n  /**\n   * Get geoCoord by name\n   * @param {string} name\n   * @return {Array.<number>}\n   */\n  getGeoCoord: function (name) {\n    return this._nameCoordMap.get(name);\n  },\n  // Overwrite\n  getBoundingRect: function () {\n    if (this._rect) {\n      return this._rect;\n    }\n\n    var rect;\n    var regions = this.regions;\n\n    for (var i = 0; i < regions.length; i++) {\n      var regionRect = regions[i].getBoundingRect();\n      rect = rect || regionRect.clone();\n      rect.union(regionRect);\n    } // FIXME Always return new ?\n\n\n    return this._rect = rect || new BoundingRect(0, 0, 0, 0);\n  },\n\n  /**\n   * @param {string|Array.<number>} data\n   * @param {boolean} noRoam\n   * @param {Array.<number>} [out]\n   * @return {Array.<number>}\n   */\n  dataToPoint: function (data, noRoam, out) {\n    if (typeof data === 'string') {\n      // Map area name to geoCoord\n      data = this.getGeoCoord(data);\n    }\n\n    if (data) {\n      return View.prototype.dataToPoint.call(this, data, noRoam, out);\n    }\n  },\n\n  /**\n   * @inheritDoc\n   */\n  convertToPixel: zrUtil.curry(doConvert, 'dataToPoint'),\n\n  /**\n   * @inheritDoc\n   */\n  convertFromPixel: zrUtil.curry(doConvert, 'pointToData')\n};\nzrUtil.mixin(Geo, View);\n\nfunction doConvert(methodName, ecModel, finder, value) {\n  var geoModel = finder.geoModel;\n  var seriesModel = finder.seriesModel;\n  var coordSys = geoModel ? geoModel.coordinateSystem : seriesModel ? seriesModel.coordinateSystem // For map.\n  || (seriesModel.getReferringComponents('geo')[0] || {}).coordinateSystem : null;\n  return coordSys === this ? coordSys[methodName](value) : null;\n}\n\nvar _default = Geo;\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar modelUtil = require(\"../../util/model\");\n\nvar ComponentModel = require(\"../../model/Component\");\n\nvar Model = require(\"../../model/Model\");\n\nvar selectableMixin = require(\"../../component/helper/selectableMixin\");\n\nvar geoCreator = require(\"./geoCreator\");\n\nvar GeoModel = ComponentModel.extend({\n  type: 'geo',\n\n  /**\n   * @type {module:echarts/coord/geo/Geo}\n   */\n  coordinateSystem: null,\n  layoutMode: 'box',\n  init: function (option) {\n    ComponentModel.prototype.init.apply(this, arguments); // Default label emphasis `show`\n\n    modelUtil.defaultEmphasis(option, 'label', ['show']);\n  },\n  optionUpdated: function () {\n    var option = this.option;\n    var self = this;\n    option.regions = geoCreator.getFilledRegions(option.regions, option.map, option.nameMap);\n    this._optionModelMap = zrUtil.reduce(option.regions || [], function (optionModelMap, regionOpt) {\n      if (regionOpt.name) {\n        optionModelMap.set(regionOpt.name, new Model(regionOpt, self));\n      }\n\n      return optionModelMap;\n    }, zrUtil.createHashMap());\n    this.updateSelectedMap(option.regions);\n  },\n  defaultOption: {\n    zlevel: 0,\n    z: 0,\n    show: true,\n    left: 'center',\n    top: 'center',\n    // width:,\n    // height:,\n    // right\n    // bottom\n    // Aspect is width / height. Inited to be geoJson bbox aspect\n    // This parameter is used for scale this aspect\n    aspectScale: 0.75,\n    ///// Layout with center and size\n    // If you wan't to put map in a fixed size box with right aspect ratio\n    // This two properties may more conveninet\n    // layoutCenter: [50%, 50%]\n    // layoutSize: 100\n    silent: false,\n    // Map type\n    map: '',\n    // Define left-top, right-bottom coords to control view\n    // For example, [ [180, 90], [-180, -90] ]\n    boundingCoords: null,\n    // Default on center of map\n    center: null,\n    zoom: 1,\n    scaleLimit: null,\n    // selectedMode: false\n    label: {\n      show: false,\n      color: '#000'\n    },\n    itemStyle: {\n      // color: 各异,\n      borderWidth: 0.5,\n      borderColor: '#444',\n      color: '#eee'\n    },\n    emphasis: {\n      label: {\n        show: true,\n        color: 'rgb(100,0,0)'\n      },\n      itemStyle: {\n        color: 'rgba(255,215,0,0.8)'\n      }\n    },\n    regions: []\n  },\n\n  /**\n   * Get model of region\n   * @param  {string} name\n   * @return {module:echarts/model/Model}\n   */\n  getRegionModel: function (name) {\n    return this._optionModelMap.get(name) || new Model(null, this, this.ecModel);\n  },\n\n  /**\n   * Format label\n   * @param {string} name Region name\n   * @param {string} [status='normal'] 'normal' or 'emphasis'\n   * @return {string}\n   */\n  getFormattedLabel: function (name, status) {\n    var regionModel = this.getRegionModel(name);\n    var formatter = regionModel.get('label.' + status + '.formatter');\n    var params = {\n      name: name\n    };\n\n    if (typeof formatter === 'function') {\n      params.status = status;\n      return formatter(params);\n    } else if (typeof formatter === 'string') {\n      return formatter.replace('{a}', name != null ? name : '');\n    }\n  },\n  setZoom: function (zoom) {\n    this.option.zoom = zoom;\n  },\n  setCenter: function (center) {\n    this.option.center = center;\n  }\n});\nzrUtil.mixin(GeoModel, selectableMixin);\nvar _default = GeoModel;\nmodule.exports = _default;","var BoundingRect = require(\"zrender/lib/core/BoundingRect\");\n\nvar bbox = require(\"zrender/lib/core/bbox\");\n\nvar vec2 = require(\"zrender/lib/core/vector\");\n\nvar polygonContain = require(\"zrender/lib/contain/polygon\");\n\n/**\n * @module echarts/coord/geo/Region\n */\n\n/**\n * @param {string} name\n * @param {Array} geometries\n * @param {Array.<number>} cp\n */\nfunction Region(name, geometries, cp) {\n  /**\n   * @type {string}\n   * @readOnly\n   */\n  this.name = name;\n  /**\n   * @type {Array.<Array>}\n   * @readOnly\n   */\n\n  this.geometries = geometries;\n\n  if (!cp) {\n    var rect = this.getBoundingRect();\n    cp = [rect.x + rect.width / 2, rect.y + rect.height / 2];\n  } else {\n    cp = [cp[0], cp[1]];\n  }\n  /**\n   * @type {Array.<number>}\n   */\n\n\n  this.center = cp;\n}\n\nRegion.prototype = {\n  constructor: Region,\n  properties: null,\n\n  /**\n   * @return {module:zrender/core/BoundingRect}\n   */\n  getBoundingRect: function () {\n    var rect = this._rect;\n\n    if (rect) {\n      return rect;\n    }\n\n    var MAX_NUMBER = Number.MAX_VALUE;\n    var min = [MAX_NUMBER, MAX_NUMBER];\n    var max = [-MAX_NUMBER, -MAX_NUMBER];\n    var min2 = [];\n    var max2 = [];\n    var geometries = this.geometries;\n\n    for (var i = 0; i < geometries.length; i++) {\n      // Only support polygon\n      if (geometries[i].type !== 'polygon') {\n        continue;\n      } // Doesn't consider hole\n\n\n      var exterior = geometries[i].exterior;\n      bbox.fromPoints(exterior, min2, max2);\n      vec2.min(min, min, min2);\n      vec2.max(max, max, max2);\n    } // No data\n\n\n    if (i === 0) {\n      min[0] = min[1] = max[0] = max[1] = 0;\n    }\n\n    return this._rect = new BoundingRect(min[0], min[1], max[0] - min[0], max[1] - min[1]);\n  },\n\n  /**\n   * @param {<Array.<number>} coord\n   * @return {boolean}\n   */\n  contain: function (coord) {\n    var rect = this.getBoundingRect();\n    var geometries = this.geometries;\n\n    if (!rect.contain(coord[0], coord[1])) {\n      return false;\n    }\n\n    loopGeo: for (var i = 0, len = geometries.length; i < len; i++) {\n      // Only support polygon.\n      if (geometries[i].type !== 'polygon') {\n        continue;\n      }\n\n      var exterior = geometries[i].exterior;\n      var interiors = geometries[i].interiors;\n\n      if (polygonContain.contain(exterior, coord[0], coord[1])) {\n        // Not in the region if point is in the hole.\n        for (var k = 0; k < (interiors ? interiors.length : 0); k++) {\n          if (polygonContain.contain(interiors[k])) {\n            continue loopGeo;\n          }\n        }\n\n        return true;\n      }\n    }\n\n    return false;\n  },\n  transformTo: function (x, y, width, height) {\n    var rect = this.getBoundingRect();\n    var aspect = rect.width / rect.height;\n\n    if (!width) {\n      width = aspect * height;\n    } else if (!height) {\n      height = width / aspect;\n    }\n\n    var target = new BoundingRect(x, y, width, height);\n    var transform = rect.calculateTransform(target);\n    var geometries = this.geometries;\n\n    for (var i = 0; i < geometries.length; i++) {\n      // Only support polygon.\n      if (geometries[i].type !== 'polygon') {\n        continue;\n      }\n\n      var exterior = geometries[i].exterior;\n      var interiors = geometries[i].interiors;\n\n      for (var p = 0; p < exterior.length; p++) {\n        vec2.applyTransform(exterior[p], exterior[p], transform);\n      }\n\n      for (var h = 0; h < (interiors ? interiors.length : 0); h++) {\n        for (var p = 0; p < interiors[h].length; p++) {\n          vec2.applyTransform(interiors[h][p], interiors[h][p], transform);\n        }\n      }\n    }\n\n    rect = this._rect;\n    rect.copy(target); // Update center\n\n    this.center = [rect.x + rect.width / 2, rect.y + rect.height / 2];\n  }\n};\nvar _default = Region;\nmodule.exports = _default;","// Fix for 钓鱼岛\n// var Region = require('../Region');\n// var zrUtil = require('zrender/src/core/util');\n// var geoCoord = [126, 25];\nvar points = [[[123.45165252685547, 25.73527164402261], [123.49731445312499, 25.73527164402261], [123.49731445312499, 25.750734064600884], [123.45165252685547, 25.750734064600884], [123.45165252685547, 25.73527164402261]]];\n\nfunction _default(geo) {\n  if (geo.map === 'china') {\n    for (var i = 0, len = geo.regions.length; i < len; ++i) {\n      if (geo.regions[i].name === '台湾') {\n        geo.regions[i].geometries.push({\n          type: 'polygon',\n          exterior: points[0]\n        });\n      }\n    }\n  }\n}\n\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar geoCoordMap = {\n  'Russia': [100, 60],\n  'United States': [-99, 38],\n  'United States of America': [-99, 38]\n};\n\nfunction _default(geo) {\n  zrUtil.each(geo.regions, function (region) {\n    var geoCoord = geoCoordMap[region.name];\n\n    if (geoCoord) {\n      var cp = region.center;\n      cp[0] = geoCoord[0];\n      cp[1] = geoCoord[1];\n    }\n  });\n}\n\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar Region = require(\"../Region\");\n\n// Fix for 南海诸岛\nvar geoCoord = [126, 25];\nvar points = [[[0, 3.5], [7, 11.2], [15, 11.9], [30, 7], [42, 0.7], [52, 0.7], [56, 7.7], [59, 0.7], [64, 0.7], [64, 0], [5, 0], [0, 3.5]], [[13, 16.1], [19, 14.7], [16, 21.7], [11, 23.1], [13, 16.1]], [[12, 32.2], [14, 38.5], [15, 38.5], [13, 32.2], [12, 32.2]], [[16, 47.6], [12, 53.2], [13, 53.2], [18, 47.6], [16, 47.6]], [[6, 64.4], [8, 70], [9, 70], [8, 64.4], [6, 64.4]], [[23, 82.6], [29, 79.8], [30, 79.8], [25, 82.6], [23, 82.6]], [[37, 70.7], [43, 62.3], [44, 62.3], [39, 70.7], [37, 70.7]], [[48, 51.1], [51, 45.5], [53, 45.5], [50, 51.1], [48, 51.1]], [[51, 35], [51, 28.7], [53, 28.7], [53, 35], [51, 35]], [[52, 22.4], [55, 17.5], [56, 17.5], [53, 22.4], [52, 22.4]], [[58, 12.6], [62, 7], [63, 7], [60, 12.6], [58, 12.6]], [[0, 3.5], [0, 93.1], [64, 93.1], [64, 0], [63, 0], [63, 92.4], [1, 92.4], [1, 3.5], [0, 3.5]]];\n\nfor (var i = 0; i < points.length; i++) {\n  for (var k = 0; k < points[i].length; k++) {\n    points[i][k][0] /= 10.5;\n    points[i][k][1] /= -10.5 / 0.75;\n    points[i][k][0] += geoCoord[0];\n    points[i][k][1] += geoCoord[1];\n  }\n}\n\nfunction _default(geo) {\n  if (geo.map === 'china') {\n    geo.regions.push(new Region('南海诸岛', zrUtil.map(points, function (exterior) {\n      return {\n        type: 'polygon',\n        exterior: exterior\n      };\n    }), geoCoord));\n  }\n}\n\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar coordsOffsetMap = {\n  '南海诸岛': [32, 80],\n  // 全国\n  '广东': [0, -10],\n  '香港': [10, 5],\n  '澳门': [-10, 10],\n  //'北京': [-10, 0],\n  '天津': [5, 5]\n};\n\nfunction _default(geo) {\n  zrUtil.each(geo.regions, function (region) {\n    var coordFix = coordsOffsetMap[region.name];\n\n    if (coordFix) {\n      var cp = region.center;\n      cp[0] += coordFix[0] / 10.5;\n      cp[1] += -coordFix[1] / (10.5 / 0.75);\n    }\n  });\n}\n\nmodule.exports = _default;","var _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar echarts = require(\"../../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar Geo = require(\"./Geo\");\n\nvar layout = require(\"../../util/layout\");\n\nvar numberUtil = require(\"../../util/number\");\n\n/**\n * Resize method bound to the geo\n * @param {module:echarts/coord/geo/GeoModel|module:echarts/chart/map/MapModel} geoModel\n * @param {module:echarts/ExtensionAPI} api\n */\nfunction resizeGeo(geoModel, api) {\n  var boundingCoords = geoModel.get('boundingCoords');\n\n  if (boundingCoords != null) {\n    var leftTop = boundingCoords[0];\n    var rightBottom = boundingCoords[1];\n\n    if (isNaN(leftTop[0]) || isNaN(leftTop[1]) || isNaN(rightBottom[0]) || isNaN(rightBottom[1])) {} else {\n      this.setBoundingRect(leftTop[0], leftTop[1], rightBottom[0] - leftTop[0], rightBottom[1] - leftTop[1]);\n    }\n  }\n\n  var rect = this.getBoundingRect();\n  var boxLayoutOption;\n  var center = geoModel.get('layoutCenter');\n  var size = geoModel.get('layoutSize');\n  var viewWidth = api.getWidth();\n  var viewHeight = api.getHeight();\n  var aspectScale = geoModel.get('aspectScale') || 0.75;\n  var aspect = rect.width / rect.height * aspectScale;\n  var useCenterAndSize = false;\n\n  if (center && size) {\n    center = [numberUtil.parsePercent(center[0], viewWidth), numberUtil.parsePercent(center[1], viewHeight)];\n    size = numberUtil.parsePercent(size, Math.min(viewWidth, viewHeight));\n\n    if (!isNaN(center[0]) && !isNaN(center[1]) && !isNaN(size)) {\n      useCenterAndSize = true;\n    } else {}\n  }\n\n  var viewRect;\n\n  if (useCenterAndSize) {\n    var viewRect = {};\n\n    if (aspect > 1) {\n      // Width is same with size\n      viewRect.width = size;\n      viewRect.height = size / aspect;\n    } else {\n      viewRect.height = size;\n      viewRect.width = size * aspect;\n    }\n\n    viewRect.y = center[1] - viewRect.height / 2;\n    viewRect.x = center[0] - viewRect.width / 2;\n  } else {\n    // Use left/top/width/height\n    boxLayoutOption = geoModel.getBoxLayoutParams(); // 0.75 rate\n\n    boxLayoutOption.aspect = aspect;\n    viewRect = layout.getLayoutRect(boxLayoutOption, {\n      width: viewWidth,\n      height: viewHeight\n    });\n  }\n\n  this.setViewRect(viewRect.x, viewRect.y, viewRect.width, viewRect.height);\n  this.setCenter(geoModel.get('center'));\n  this.setZoom(geoModel.get('zoom'));\n}\n/**\n * @param {module:echarts/coord/Geo} geo\n * @param {module:echarts/model/Model} model\n * @inner\n */\n\n\nfunction setGeoCoords(geo, model) {\n  zrUtil.each(model.get('geoCoord'), function (geoCoord, name) {\n    geo.addGeoCoord(name, geoCoord);\n  });\n}\n\nvar geoCreator = {\n  // For deciding which dimensions to use when creating list data\n  dimensions: Geo.prototype.dimensions,\n  create: function (ecModel, api) {\n    var geoList = []; // FIXME Create each time may be slow\n\n    ecModel.eachComponent('geo', function (geoModel, idx) {\n      var name = geoModel.get('map');\n      var mapData = echarts.getMap(name);\n      var geo = new Geo(name + idx, name, mapData && mapData.geoJson, mapData && mapData.specialAreas, geoModel.get('nameMap'));\n      geo.zoomLimit = geoModel.get('scaleLimit');\n      geoList.push(geo);\n      setGeoCoords(geo, geoModel);\n      geoModel.coordinateSystem = geo;\n      geo.model = geoModel; // Inject resize method\n\n      geo.resize = resizeGeo;\n      geo.resize(geoModel, api);\n    });\n    ecModel.eachSeries(function (seriesModel) {\n      var coordSys = seriesModel.get('coordinateSystem');\n\n      if (coordSys === 'geo') {\n        var geoIndex = seriesModel.get('geoIndex') || 0;\n        seriesModel.coordinateSystem = geoList[geoIndex];\n      }\n    }); // If has map series\n\n    var mapModelGroupBySeries = {};\n    ecModel.eachSeriesByType('map', function (seriesModel) {\n      if (!seriesModel.getHostGeoModel()) {\n        var mapType = seriesModel.getMapType();\n        mapModelGroupBySeries[mapType] = mapModelGroupBySeries[mapType] || [];\n        mapModelGroupBySeries[mapType].push(seriesModel);\n      }\n    });\n    zrUtil.each(mapModelGroupBySeries, function (mapSeries, mapType) {\n      var mapData = echarts.getMap(mapType);\n      var nameMapList = zrUtil.map(mapSeries, function (singleMapSeries) {\n        return singleMapSeries.get('nameMap');\n      });\n      var geo = new Geo(mapType, mapType, mapData && mapData.geoJson, mapData && mapData.specialAreas, zrUtil.mergeAll(nameMapList));\n      geo.zoomLimit = zrUtil.retrieve.apply(null, zrUtil.map(mapSeries, function (singleMapSeries) {\n        return singleMapSeries.get('scaleLimit');\n      }));\n      geoList.push(geo); // Inject resize method\n\n      geo.resize = resizeGeo;\n      geo.resize(mapSeries[0], api);\n      zrUtil.each(mapSeries, function (singleMapSeries) {\n        singleMapSeries.coordinateSystem = geo;\n        setGeoCoords(geo, singleMapSeries);\n      });\n    });\n    return geoList;\n  },\n\n  /**\n   * Fill given regions array\n   * @param  {Array.<Object>} originRegionArr\n   * @param  {string} mapName\n   * @param  {Object} [nameMap]\n   * @return {Array}\n   */\n  getFilledRegions: function (originRegionArr, mapName, nameMap) {\n    // Not use the original\n    var regionsArr = (originRegionArr || []).slice();\n    nameMap = nameMap || {};\n    var map = echarts.getMap(mapName);\n    var geoJson = map && map.geoJson;\n\n    if (!geoJson) {\n      return originRegionArr;\n    }\n\n    var dataNameMap = zrUtil.createHashMap();\n    var features = geoJson.features;\n\n    for (var i = 0; i < regionsArr.length; i++) {\n      dataNameMap.set(regionsArr[i].name, regionsArr[i]);\n    }\n\n    for (var i = 0; i < features.length; i++) {\n      var name = features[i].properties.name;\n\n      if (!dataNameMap.get(name)) {\n        if (nameMap.hasOwnProperty(name)) {\n          name = nameMap[name];\n        }\n\n        regionsArr.push({\n          name: name\n        });\n      }\n    }\n\n    return regionsArr;\n  }\n};\necharts.registerCoordinateSystem('geo', geoCreator);\nvar _default = geoCreator;\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar Region = require(\"./Region\");\n\n/**\n * Parse and decode geo json\n * @module echarts/coord/geo/parseGeoJson\n */\nfunction decode(json) {\n  if (!json.UTF8Encoding) {\n    return json;\n  }\n\n  var encodeScale = json.UTF8Scale;\n\n  if (encodeScale == null) {\n    encodeScale = 1024;\n  }\n\n  var features = json.features;\n\n  for (var f = 0; f < features.length; f++) {\n    var feature = features[f];\n    var geometry = feature.geometry;\n    var coordinates = geometry.coordinates;\n    var encodeOffsets = geometry.encodeOffsets;\n\n    for (var c = 0; c < coordinates.length; c++) {\n      var coordinate = coordinates[c];\n\n      if (geometry.type === 'Polygon') {\n        coordinates[c] = decodePolygon(coordinate, encodeOffsets[c], encodeScale);\n      } else if (geometry.type === 'MultiPolygon') {\n        for (var c2 = 0; c2 < coordinate.length; c2++) {\n          var polygon = coordinate[c2];\n          coordinate[c2] = decodePolygon(polygon, encodeOffsets[c][c2], encodeScale);\n        }\n      }\n    }\n  } // Has been decoded\n\n\n  json.UTF8Encoding = false;\n  return json;\n}\n\nfunction decodePolygon(coordinate, encodeOffsets, encodeScale) {\n  var result = [];\n  var prevX = encodeOffsets[0];\n  var prevY = encodeOffsets[1];\n\n  for (var i = 0; i < coordinate.length; i += 2) {\n    var x = coordinate.charCodeAt(i) - 64;\n    var y = coordinate.charCodeAt(i + 1) - 64; // ZigZag decoding\n\n    x = x >> 1 ^ -(x & 1);\n    y = y >> 1 ^ -(y & 1); // Delta deocding\n\n    x += prevX;\n    y += prevY;\n    prevX = x;\n    prevY = y; // Dequantize\n\n    result.push([x / encodeScale, y / encodeScale]);\n  }\n\n  return result;\n}\n/**\n * @alias module:echarts/coord/geo/parseGeoJson\n * @param {Object} geoJson\n * @return {module:zrender/container/Group}\n */\n\n\nfunction _default(geoJson) {\n  decode(geoJson);\n  return zrUtil.map(zrUtil.filter(geoJson.features, function (featureObj) {\n    // Output of mapshaper may have geometry null\n    return featureObj.geometry && featureObj.properties && featureObj.geometry.coordinates.length > 0;\n  }), function (featureObj) {\n    var properties = featureObj.properties;\n    var geo = featureObj.geometry;\n    var coordinates = geo.coordinates;\n    var geometries = [];\n\n    if (geo.type === 'Polygon') {\n      geometries.push({\n        type: 'polygon',\n        // According to the GeoJSON specification.\n        // First must be exterior, and the rest are all interior(holes).\n        exterior: coordinates[0],\n        interiors: coordinates.slice(1)\n      });\n    }\n\n    if (geo.type === 'MultiPolygon') {\n      zrUtil.each(coordinates, function (item) {\n        if (item[0]) {\n          geometries.push({\n            type: 'polygon',\n            exterior: item[0],\n            interiors: item.slice(1)\n          });\n        }\n      });\n    }\n\n    var region = new Region(properties.name, geometries, properties.cp);\n    region.properties = properties;\n    return region;\n  });\n}\n\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\nfunction dataToCoordSize(dataSize, dataItem) {\n  dataItem = dataItem || [0, 0];\n  return zrUtil.map([0, 1], function (dimIdx) {\n    var val = dataItem[dimIdx];\n    var halfSize = dataSize[dimIdx] / 2;\n    var p1 = [];\n    var p2 = [];\n    p1[dimIdx] = val - halfSize;\n    p2[dimIdx] = val + halfSize;\n    p1[1 - dimIdx] = p2[1 - dimIdx] = dataItem[1 - dimIdx];\n    return Math.abs(this.dataToPoint(p1)[dimIdx] - this.dataToPoint(p2)[dimIdx]);\n  }, this);\n}\n\nfunction _default(coordSys) {\n  var rect = coordSys.getBoundingRect();\n  return {\n    coordSys: {\n      type: 'geo',\n      x: rect.x,\n      y: rect.y,\n      width: rect.width,\n      height: rect.height\n    },\n    api: {\n      coord: function (data, noRoam) {\n        // do not provide \"out\" param\n        return coordSys.dataToPoint(data, noRoam);\n      },\n      size: zrUtil.bind(dataToCoordSize, coordSys)\n    }\n  };\n}\n\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar ComponentModel = require(\"../../model/Component\");\n\nvar makeStyleMapper = require(\"../../model/mixin/makeStyleMapper\");\n\nvar axisModelCreator = require(\"../axisModelCreator\");\n\nvar numberUtil = require(\"../../util/number\");\n\nvar axisModelCommonMixin = require(\"../axisModelCommonMixin\");\n\nvar AxisModel = ComponentModel.extend({\n  type: 'baseParallelAxis',\n\n  /**\n   * @type {module:echarts/coord/parallel/Axis}\n   */\n  axis: null,\n\n  /**\n   * @type {Array.<Array.<number>}\n   * @readOnly\n   */\n  activeIntervals: [],\n\n  /**\n   * @return {Object}\n   */\n  getAreaSelectStyle: function () {\n    return makeStyleMapper([['fill', 'color'], ['lineWidth', 'borderWidth'], ['stroke', 'borderColor'], ['width', 'width'], ['opacity', 'opacity']])(this.getModel('areaSelectStyle'));\n  },\n\n  /**\n   * The code of this feature is put on AxisModel but not ParallelAxis,\n   * because axisModel can be alive after echarts updating but instance of\n   * ParallelAxis having been disposed. this._activeInterval should be kept\n   * when action dispatched (i.e. legend click).\n   *\n   * @param {Array.<Array<number>>} intervals interval.length === 0\n   *                                          means set all active.\n   * @public\n   */\n  setActiveIntervals: function (intervals) {\n    var activeIntervals = this.activeIntervals = zrUtil.clone(intervals); // Normalize\n\n    if (activeIntervals) {\n      for (var i = activeIntervals.length - 1; i >= 0; i--) {\n        numberUtil.asc(activeIntervals[i]);\n      }\n    }\n  },\n\n  /**\n   * @param {number|string} [value] When attempting to detect 'no activeIntervals set',\n   *                         value can not be input.\n   * @return {string} 'normal': no activeIntervals set,\n   *                  'active',\n   *                  'inactive'.\n   * @public\n   */\n  getActiveState: function (value) {\n    var activeIntervals = this.activeIntervals;\n\n    if (!activeIntervals.length) {\n      return 'normal';\n    }\n\n    if (value == null) {\n      return 'inactive';\n    }\n\n    for (var i = 0, len = activeIntervals.length; i < len; i++) {\n      if (activeIntervals[i][0] <= value && value <= activeIntervals[i][1]) {\n        return 'active';\n      }\n    }\n\n    return 'inactive';\n  }\n});\nvar defaultOption = {\n  type: 'value',\n\n  /**\n   * @type {Array.<number>}\n   */\n  dim: null,\n  // 0, 1, 2, ...\n  // parallelIndex: null,\n  areaSelectStyle: {\n    width: 20,\n    borderWidth: 1,\n    borderColor: 'rgba(160,197,232)',\n    color: 'rgba(160,197,232)',\n    opacity: 0.3\n  },\n  realtime: true,\n  // Whether realtime update view when select.\n  z: 10\n};\nzrUtil.merge(AxisModel.prototype, axisModelCommonMixin);\n\nfunction getAxisType(axisName, option) {\n  return option.type || (option.data ? 'category' : 'value');\n}\n\naxisModelCreator('parallel', AxisModel, getAxisType, defaultOption);\nvar _default = AxisModel;\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar matrix = require(\"zrender/lib/core/matrix\");\n\nvar layoutUtil = require(\"../../util/layout\");\n\nvar axisHelper = require(\"../../coord/axisHelper\");\n\nvar ParallelAxis = require(\"./ParallelAxis\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar numberUtil = require(\"../../util/number\");\n\nvar sliderMove = require(\"../../component/helper/sliderMove\");\n\n/**\n * Parallel Coordinates\n * <https://en.wikipedia.org/wiki/Parallel_coordinates>\n */\nvar each = zrUtil.each;\nvar mathMin = Math.min;\nvar mathMax = Math.max;\nvar mathFloor = Math.floor;\nvar mathCeil = Math.ceil;\nvar round = numberUtil.round;\nvar PI = Math.PI;\n\nfunction Parallel(parallelModel, ecModel, api) {\n  /**\n   * key: dimension\n   * @type {Object.<string, module:echarts/coord/parallel/Axis>}\n   * @private\n   */\n  this._axesMap = zrUtil.createHashMap();\n  /**\n   * key: dimension\n   * value: {position: [], rotation, }\n   * @type {Object.<string, Object>}\n   * @private\n   */\n\n  this._axesLayout = {};\n  /**\n   * Always follow axis order.\n   * @type {Array.<string>}\n   * @readOnly\n   */\n\n  this.dimensions = parallelModel.dimensions;\n  /**\n   * @type {module:zrender/core/BoundingRect}\n   */\n\n  this._rect;\n  /**\n   * @type {module:echarts/coord/parallel/ParallelModel}\n   */\n\n  this._model = parallelModel;\n\n  this._init(parallelModel, ecModel, api);\n}\n\nParallel.prototype = {\n  type: 'parallel',\n  constructor: Parallel,\n\n  /**\n   * Initialize cartesian coordinate systems\n   * @private\n   */\n  _init: function (parallelModel, ecModel, api) {\n    var dimensions = parallelModel.dimensions;\n    var parallelAxisIndex = parallelModel.parallelAxisIndex;\n    each(dimensions, function (dim, idx) {\n      var axisIndex = parallelAxisIndex[idx];\n      var axisModel = ecModel.getComponent('parallelAxis', axisIndex);\n\n      var axis = this._axesMap.set(dim, new ParallelAxis(dim, axisHelper.createScaleByModel(axisModel), [0, 0], axisModel.get('type'), axisIndex));\n\n      var isCategory = axis.type === 'category';\n      axis.onBand = isCategory && axisModel.get('boundaryGap');\n      axis.inverse = axisModel.get('inverse'); // Injection\n\n      axisModel.axis = axis;\n      axis.model = axisModel;\n      axis.coordinateSystem = axisModel.coordinateSystem = this;\n    }, this);\n  },\n\n  /**\n   * Update axis scale after data processed\n   * @param  {module:echarts/model/Global} ecModel\n   * @param  {module:echarts/ExtensionAPI} api\n   */\n  update: function (ecModel, api) {\n    this._updateAxesFromSeries(this._model, ecModel);\n  },\n\n  /**\n   * @override\n   */\n  containPoint: function (point) {\n    var layoutInfo = this._makeLayoutInfo();\n\n    var axisBase = layoutInfo.axisBase;\n    var layoutBase = layoutInfo.layoutBase;\n    var pixelDimIndex = layoutInfo.pixelDimIndex;\n    var pAxis = point[1 - pixelDimIndex];\n    var pLayout = point[pixelDimIndex];\n    return pAxis >= axisBase && pAxis <= axisBase + layoutInfo.axisLength && pLayout >= layoutBase && pLayout <= layoutBase + layoutInfo.layoutLength;\n  },\n  getModel: function () {\n    return this._model;\n  },\n\n  /**\n   * Update properties from series\n   * @private\n   */\n  _updateAxesFromSeries: function (parallelModel, ecModel) {\n    ecModel.eachSeries(function (seriesModel) {\n      if (!parallelModel.contains(seriesModel, ecModel)) {\n        return;\n      }\n\n      var data = seriesModel.getData();\n      each(this.dimensions, function (dim) {\n        var axis = this._axesMap.get(dim);\n\n        axis.scale.unionExtentFromData(data, data.mapDimension(dim));\n        axisHelper.niceScaleExtent(axis.scale, axis.model);\n      }, this);\n    }, this);\n  },\n\n  /**\n   * Resize the parallel coordinate system.\n   * @param {module:echarts/coord/parallel/ParallelModel} parallelModel\n   * @param {module:echarts/ExtensionAPI} api\n   */\n  resize: function (parallelModel, api) {\n    this._rect = layoutUtil.getLayoutRect(parallelModel.getBoxLayoutParams(), {\n      width: api.getWidth(),\n      height: api.getHeight()\n    });\n\n    this._layoutAxes();\n  },\n\n  /**\n   * @return {module:zrender/core/BoundingRect}\n   */\n  getRect: function () {\n    return this._rect;\n  },\n\n  /**\n   * @private\n   */\n  _makeLayoutInfo: function () {\n    var parallelModel = this._model;\n    var rect = this._rect;\n    var xy = ['x', 'y'];\n    var wh = ['width', 'height'];\n    var layout = parallelModel.get('layout');\n    var pixelDimIndex = layout === 'horizontal' ? 0 : 1;\n    var layoutLength = rect[wh[pixelDimIndex]];\n    var layoutExtent = [0, layoutLength];\n    var axisCount = this.dimensions.length;\n    var axisExpandWidth = restrict(parallelModel.get('axisExpandWidth'), layoutExtent);\n    var axisExpandCount = restrict(parallelModel.get('axisExpandCount') || 0, [0, axisCount]);\n    var axisExpandable = parallelModel.get('axisExpandable') && axisCount > 3 && axisCount > axisExpandCount && axisExpandCount > 1 && axisExpandWidth > 0 && layoutLength > 0; // `axisExpandWindow` is According to the coordinates of [0, axisExpandLength],\n    // for sake of consider the case that axisCollapseWidth is 0 (when screen is narrow),\n    // where collapsed axes should be overlapped.\n\n    var axisExpandWindow = parallelModel.get('axisExpandWindow');\n    var winSize;\n\n    if (!axisExpandWindow) {\n      winSize = restrict(axisExpandWidth * (axisExpandCount - 1), layoutExtent);\n      var axisExpandCenter = parallelModel.get('axisExpandCenter') || mathFloor(axisCount / 2);\n      axisExpandWindow = [axisExpandWidth * axisExpandCenter - winSize / 2];\n      axisExpandWindow[1] = axisExpandWindow[0] + winSize;\n    } else {\n      winSize = restrict(axisExpandWindow[1] - axisExpandWindow[0], layoutExtent);\n      axisExpandWindow[1] = axisExpandWindow[0] + winSize;\n    }\n\n    var axisCollapseWidth = (layoutLength - winSize) / (axisCount - axisExpandCount); // Avoid axisCollapseWidth is too small.\n\n    axisCollapseWidth < 3 && (axisCollapseWidth = 0); // Find the first and last indices > ewin[0] and < ewin[1].\n\n    var winInnerIndices = [mathFloor(round(axisExpandWindow[0] / axisExpandWidth, 1)) + 1, mathCeil(round(axisExpandWindow[1] / axisExpandWidth, 1)) - 1]; // Pos in ec coordinates.\n\n    var axisExpandWindow0Pos = axisCollapseWidth / axisExpandWidth * axisExpandWindow[0];\n    return {\n      layout: layout,\n      pixelDimIndex: pixelDimIndex,\n      layoutBase: rect[xy[pixelDimIndex]],\n      layoutLength: layoutLength,\n      axisBase: rect[xy[1 - pixelDimIndex]],\n      axisLength: rect[wh[1 - pixelDimIndex]],\n      axisExpandable: axisExpandable,\n      axisExpandWidth: axisExpandWidth,\n      axisCollapseWidth: axisCollapseWidth,\n      axisExpandWindow: axisExpandWindow,\n      axisCount: axisCount,\n      winInnerIndices: winInnerIndices,\n      axisExpandWindow0Pos: axisExpandWindow0Pos\n    };\n  },\n\n  /**\n   * @private\n   */\n  _layoutAxes: function () {\n    var rect = this._rect;\n    var axes = this._axesMap;\n    var dimensions = this.dimensions;\n\n    var layoutInfo = this._makeLayoutInfo();\n\n    var layout = layoutInfo.layout;\n    axes.each(function (axis) {\n      var axisExtent = [0, layoutInfo.axisLength];\n      var idx = axis.inverse ? 1 : 0;\n      axis.setExtent(axisExtent[idx], axisExtent[1 - idx]);\n    });\n    each(dimensions, function (dim, idx) {\n      var posInfo = (layoutInfo.axisExpandable ? layoutAxisWithExpand : layoutAxisWithoutExpand)(idx, layoutInfo);\n      var positionTable = {\n        horizontal: {\n          x: posInfo.position,\n          y: layoutInfo.axisLength\n        },\n        vertical: {\n          x: 0,\n          y: posInfo.position\n        }\n      };\n      var rotationTable = {\n        horizontal: PI / 2,\n        vertical: 0\n      };\n      var position = [positionTable[layout].x + rect.x, positionTable[layout].y + rect.y];\n      var rotation = rotationTable[layout];\n      var transform = matrix.create();\n      matrix.rotate(transform, transform, rotation);\n      matrix.translate(transform, transform, position); // TODO\n      // tick等排布信息。\n      // TODO\n      // 根据axis order 更新 dimensions顺序。\n\n      this._axesLayout[dim] = {\n        position: position,\n        rotation: rotation,\n        transform: transform,\n        axisNameAvailableWidth: posInfo.axisNameAvailableWidth,\n        axisLabelShow: posInfo.axisLabelShow,\n        nameTruncateMaxWidth: posInfo.nameTruncateMaxWidth,\n        tickDirection: 1,\n        labelDirection: 1,\n        labelInterval: axes.get(dim).getLabelInterval()\n      };\n    }, this);\n  },\n\n  /**\n   * Get axis by dim.\n   * @param {string} dim\n   * @return {module:echarts/coord/parallel/ParallelAxis} [description]\n   */\n  getAxis: function (dim) {\n    return this._axesMap.get(dim);\n  },\n\n  /**\n   * Convert a dim value of a single item of series data to Point.\n   * @param {*} value\n   * @param {string} dim\n   * @return {Array}\n   */\n  dataToPoint: function (value, dim) {\n    return this.axisCoordToPoint(this._axesMap.get(dim).dataToCoord(value), dim);\n  },\n\n  /**\n   * Travel data for one time, get activeState of each data item.\n   * @param {module:echarts/data/List} data\n   * @param {Functio} cb param: {string} activeState 'active' or 'inactive' or 'normal'\n   *                            {number} dataIndex\n   * @param {Object} context\n   */\n  eachActiveState: function (data, callback, context) {\n    var dimensions = this.dimensions;\n    var dataDimensions = zrUtil.map(dimensions, function (axisDim) {\n      return data.mapDimension(axisDim);\n    });\n    var axesMap = this._axesMap;\n    var hasActiveSet = this.hasAxisBrushed();\n\n    for (var i = 0, len = data.count(); i < len; i++) {\n      var values = data.getValues(dataDimensions, i);\n      var activeState;\n\n      if (!hasActiveSet) {\n        activeState = 'normal';\n      } else {\n        activeState = 'active';\n\n        for (var j = 0, lenj = dimensions.length; j < lenj; j++) {\n          var dimName = dimensions[j];\n          var state = axesMap.get(dimName).model.getActiveState(values[j], j);\n\n          if (state === 'inactive') {\n            activeState = 'inactive';\n            break;\n          }\n        }\n      }\n\n      callback.call(context, activeState, i);\n    }\n  },\n\n  /**\n   * Whether has any activeSet.\n   * @return {boolean}\n   */\n  hasAxisBrushed: function () {\n    var dimensions = this.dimensions;\n    var axesMap = this._axesMap;\n    var hasActiveSet = false;\n\n    for (var j = 0, lenj = dimensions.length; j < lenj; j++) {\n      if (axesMap.get(dimensions[j]).model.getActiveState() !== 'normal') {\n        hasActiveSet = true;\n      }\n    }\n\n    return hasActiveSet;\n  },\n\n  /**\n   * Convert coords of each axis to Point.\n   *  Return point. For example: [10, 20]\n   * @param {Array.<number>} coords\n   * @param {string} dim\n   * @return {Array.<number>}\n   */\n  axisCoordToPoint: function (coord, dim) {\n    var axisLayout = this._axesLayout[dim];\n    return graphic.applyTransform([coord, 0], axisLayout.transform);\n  },\n\n  /**\n   * Get axis layout.\n   */\n  getAxisLayout: function (dim) {\n    return zrUtil.clone(this._axesLayout[dim]);\n  },\n\n  /**\n   * @param {Array.<number>} point\n   * @return {Object} {axisExpandWindow, delta, behavior: 'jump' | 'slide' | 'none'}.\n   */\n  getSlidedAxisExpandWindow: function (point) {\n    var layoutInfo = this._makeLayoutInfo();\n\n    var pixelDimIndex = layoutInfo.pixelDimIndex;\n    var axisExpandWindow = layoutInfo.axisExpandWindow.slice();\n    var winSize = axisExpandWindow[1] - axisExpandWindow[0];\n    var extent = [0, layoutInfo.axisExpandWidth * (layoutInfo.axisCount - 1)]; // Out of the area of coordinate system.\n\n    if (!this.containPoint(point)) {\n      return {\n        behavior: 'none',\n        axisExpandWindow: axisExpandWindow\n      };\n    } // Conver the point from global to expand coordinates.\n\n\n    var pointCoord = point[pixelDimIndex] - layoutInfo.layoutBase - layoutInfo.axisExpandWindow0Pos; // For dragging operation convenience, the window should not be\n    // slided when mouse is the center area of the window.\n\n    var delta;\n    var behavior = 'slide';\n    var axisCollapseWidth = layoutInfo.axisCollapseWidth;\n\n    var triggerArea = this._model.get('axisExpandSlideTriggerArea'); // But consider touch device, jump is necessary.\n\n\n    var useJump = triggerArea[0] != null;\n\n    if (axisCollapseWidth) {\n      if (useJump && axisCollapseWidth && pointCoord < winSize * triggerArea[0]) {\n        behavior = 'jump';\n        delta = pointCoord - winSize * triggerArea[2];\n      } else if (useJump && axisCollapseWidth && pointCoord > winSize * (1 - triggerArea[0])) {\n        behavior = 'jump';\n        delta = pointCoord - winSize * (1 - triggerArea[2]);\n      } else {\n        (delta = pointCoord - winSize * triggerArea[1]) >= 0 && (delta = pointCoord - winSize * (1 - triggerArea[1])) <= 0 && (delta = 0);\n      }\n\n      delta *= layoutInfo.axisExpandWidth / axisCollapseWidth;\n      delta ? sliderMove(delta, axisExpandWindow, extent, 'all') // Avoid nonsense triger on mousemove.\n      : behavior = 'none';\n    } // When screen is too narrow, make it visible and slidable, although it is hard to interact.\n    else {\n        var winSize = axisExpandWindow[1] - axisExpandWindow[0];\n        var pos = extent[1] * pointCoord / winSize;\n        axisExpandWindow = [mathMax(0, pos - winSize / 2)];\n        axisExpandWindow[1] = mathMin(extent[1], axisExpandWindow[0] + winSize);\n        axisExpandWindow[0] = axisExpandWindow[1] - winSize;\n      }\n\n    return {\n      axisExpandWindow: axisExpandWindow,\n      behavior: behavior\n    };\n  }\n};\n\nfunction restrict(len, extent) {\n  return mathMin(mathMax(len, extent[0]), extent[1]);\n}\n\nfunction layoutAxisWithoutExpand(axisIndex, layoutInfo) {\n  var step = layoutInfo.layoutLength / (layoutInfo.axisCount - 1);\n  return {\n    position: step * axisIndex,\n    axisNameAvailableWidth: step,\n    axisLabelShow: true\n  };\n}\n\nfunction layoutAxisWithExpand(axisIndex, layoutInfo) {\n  var layoutLength = layoutInfo.layoutLength;\n  var axisExpandWidth = layoutInfo.axisExpandWidth;\n  var axisCount = layoutInfo.axisCount;\n  var axisCollapseWidth = layoutInfo.axisCollapseWidth;\n  var winInnerIndices = layoutInfo.winInnerIndices;\n  var position;\n  var axisNameAvailableWidth = axisCollapseWidth;\n  var axisLabelShow = false;\n  var nameTruncateMaxWidth;\n\n  if (axisIndex < winInnerIndices[0]) {\n    position = axisIndex * axisCollapseWidth;\n    nameTruncateMaxWidth = axisCollapseWidth;\n  } else if (axisIndex <= winInnerIndices[1]) {\n    position = layoutInfo.axisExpandWindow0Pos + axisIndex * axisExpandWidth - layoutInfo.axisExpandWindow[0];\n    axisNameAvailableWidth = axisExpandWidth;\n    axisLabelShow = true;\n  } else {\n    position = layoutLength - (axisCount - 1 - axisIndex) * axisCollapseWidth;\n    nameTruncateMaxWidth = axisCollapseWidth;\n  }\n\n  return {\n    position: position,\n    axisNameAvailableWidth: axisNameAvailableWidth,\n    axisLabelShow: axisLabelShow,\n    nameTruncateMaxWidth: nameTruncateMaxWidth\n  };\n}\n\nvar _default = Parallel;\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar Axis = require(\"../Axis\");\n\n/**\n * @constructor module:echarts/coord/parallel/ParallelAxis\n * @extends {module:echarts/coord/Axis}\n * @param {string} dim\n * @param {*} scale\n * @param {Array.<number>} coordExtent\n * @param {string} axisType\n */\nvar ParallelAxis = function (dim, scale, coordExtent, axisType, axisIndex) {\n  Axis.call(this, dim, scale, coordExtent);\n  /**\n   * Axis type\n   *  - 'category'\n   *  - 'value'\n   *  - 'time'\n   *  - 'log'\n   * @type {string}\n   */\n\n  this.type = axisType || 'value';\n  /**\n   * @type {number}\n   * @readOnly\n   */\n\n  this.axisIndex = axisIndex;\n};\n\nParallelAxis.prototype = {\n  constructor: ParallelAxis,\n\n  /**\n   * Axis model\n   * @param {module:echarts/coord/parallel/AxisModel}\n   */\n  model: null,\n\n  /**\n   * @override\n   */\n  isHorizontal: function () {\n    return this.coordinateSystem.getModel().get('layout') !== 'horizontal';\n  }\n};\nzrUtil.inherits(ParallelAxis, Axis);\nvar _default = ParallelAxis;\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar Component = require(\"../../model/Component\");\n\nrequire(\"./AxisModel\");\n\nvar _default = Component.extend({\n  type: 'parallel',\n  dependencies: ['parallelAxis'],\n\n  /**\n   * @type {module:echarts/coord/parallel/Parallel}\n   */\n  coordinateSystem: null,\n\n  /**\n   * Each item like: 'dim0', 'dim1', 'dim2', ...\n   * @type {Array.<string>}\n   * @readOnly\n   */\n  dimensions: null,\n\n  /**\n   * Coresponding to dimensions.\n   * @type {Array.<number>}\n   * @readOnly\n   */\n  parallelAxisIndex: null,\n  layoutMode: 'box',\n  defaultOption: {\n    zlevel: 0,\n    z: 0,\n    left: 80,\n    top: 60,\n    right: 80,\n    bottom: 60,\n    // width: {totalWidth} - left - right,\n    // height: {totalHeight} - top - bottom,\n    layout: 'horizontal',\n    // 'horizontal' or 'vertical'\n    // FIXME\n    // naming?\n    axisExpandable: false,\n    axisExpandCenter: null,\n    axisExpandCount: 0,\n    axisExpandWidth: 50,\n    // FIXME '10%' ?\n    axisExpandRate: 17,\n    axisExpandDebounce: 50,\n    // [out, in, jumpTarget]. In percentage. If use [null, 0.05], null means full.\n    // Do not doc to user until necessary.\n    axisExpandSlideTriggerArea: [-0.15, 0.05, 0.4],\n    axisExpandTriggerOn: 'click',\n    // 'mousemove' or 'click'\n    parallelAxisDefault: null\n  },\n\n  /**\n   * @override\n   */\n  init: function () {\n    Component.prototype.init.apply(this, arguments);\n    this.mergeOption({});\n  },\n\n  /**\n   * @override\n   */\n  mergeOption: function (newOption) {\n    var thisOption = this.option;\n    newOption && zrUtil.merge(thisOption, newOption, true);\n\n    this._initDimensions();\n  },\n\n  /**\n   * Whether series or axis is in this coordinate system.\n   * @param {module:echarts/model/Series|module:echarts/coord/parallel/AxisModel} model\n   * @param {module:echarts/model/Global} ecModel\n   */\n  contains: function (model, ecModel) {\n    var parallelIndex = model.get('parallelIndex');\n    return parallelIndex != null && ecModel.getComponent('parallel', parallelIndex) === this;\n  },\n  setAxisExpand: function (opt) {\n    zrUtil.each(['axisExpandable', 'axisExpandCenter', 'axisExpandCount', 'axisExpandWidth', 'axisExpandWindow'], function (name) {\n      if (opt.hasOwnProperty(name)) {\n        this.option[name] = opt[name];\n      }\n    }, this);\n  },\n\n  /**\n   * @private\n   */\n  _initDimensions: function () {\n    var dimensions = this.dimensions = [];\n    var parallelAxisIndex = this.parallelAxisIndex = [];\n    var axisModels = zrUtil.filter(this.dependentModels.parallelAxis, function (axisModel) {\n      // Can not use this.contains here, because\n      // initialization has not been completed yet.\n      return (axisModel.get('parallelIndex') || 0) === this.componentIndex;\n    }, this);\n    zrUtil.each(axisModels, function (axisModel) {\n      dimensions.push('dim' + axisModel.get('dim'));\n      parallelAxisIndex.push(axisModel.componentIndex);\n    });\n  }\n});\n\nmodule.exports = _default;","var Parallel = require(\"./Parallel\");\n\nvar CoordinateSystem = require(\"../../CoordinateSystem\");\n\n/**\n * Parallel coordinate system creater.\n */\nfunction create(ecModel, api) {\n  var coordSysList = [];\n  ecModel.eachComponent('parallel', function (parallelModel, idx) {\n    var coordSys = new Parallel(parallelModel, ecModel, api);\n    coordSys.name = 'parallel_' + idx;\n    coordSys.resize(parallelModel, api);\n    parallelModel.coordinateSystem = coordSys;\n    coordSys.model = parallelModel;\n    coordSysList.push(coordSys);\n  }); // Inject the coordinateSystems into seriesModel\n\n  ecModel.eachSeries(function (seriesModel) {\n    if (seriesModel.get('coordinateSystem') === 'parallel') {\n      var parallelModel = ecModel.queryComponents({\n        mainType: 'parallel',\n        index: seriesModel.get('parallelIndex'),\n        id: seriesModel.get('parallelId')\n      })[0];\n      seriesModel.coordinateSystem = parallelModel.coordinateSystem;\n    }\n  });\n  return coordSysList;\n}\n\nCoordinateSystem.register('parallel', {\n  create: create\n});","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar modelUtil = require(\"../../util/model\");\n\nfunction _default(option) {\n  createParallelIfNeeded(option);\n  mergeAxisOptionFromParallel(option);\n}\n/**\n * Create a parallel coordinate if not exists.\n * @inner\n */\n\n\nfunction createParallelIfNeeded(option) {\n  if (option.parallel) {\n    return;\n  }\n\n  var hasParallelSeries = false;\n  zrUtil.each(option.series, function (seriesOpt) {\n    if (seriesOpt && seriesOpt.type === 'parallel') {\n      hasParallelSeries = true;\n    }\n  });\n\n  if (hasParallelSeries) {\n    option.parallel = [{}];\n  }\n}\n/**\n * Merge aixs definition from parallel option (if exists) to axis option.\n * @inner\n */\n\n\nfunction mergeAxisOptionFromParallel(option) {\n  var axes = modelUtil.normalizeToArray(option.parallelAxis);\n  zrUtil.each(axes, function (axisOption) {\n    if (!zrUtil.isObject(axisOption)) {\n      return;\n    }\n\n    var parallelIndex = axisOption.parallelIndex || 0;\n    var parallelOption = modelUtil.normalizeToArray(option.parallel)[parallelIndex];\n\n    if (parallelOption && parallelOption.parallelAxisDefault) {\n      zrUtil.merge(axisOption, parallelOption.parallelAxisDefault, false);\n    }\n  });\n}\n\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar Axis = require(\"../Axis\");\n\nfunction AngleAxis(scale, angleExtent) {\n  angleExtent = angleExtent || [0, 360];\n  Axis.call(this, 'angle', scale, angleExtent);\n  /**\n   * Axis type\n   *  - 'category'\n   *  - 'value'\n   *  - 'time'\n   *  - 'log'\n   * @type {string}\n   */\n\n  this.type = 'category';\n}\n\nAngleAxis.prototype = {\n  constructor: AngleAxis,\n\n  /**\n   * @override\n   */\n  pointToData: function (point, clamp) {\n    return this.polar.pointToData(point, clamp)[this.dim === 'radius' ? 0 : 1];\n  },\n  dataToAngle: Axis.prototype.dataToCoord,\n  angleToData: Axis.prototype.coordToData\n};\nzrUtil.inherits(AngleAxis, Axis);\nvar _default = AngleAxis;\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar ComponentModel = require(\"../../model/Component\");\n\nvar axisModelCreator = require(\"../axisModelCreator\");\n\nvar axisModelCommonMixin = require(\"../axisModelCommonMixin\");\n\nvar PolarAxisModel = ComponentModel.extend({\n  type: 'polarAxis',\n\n  /**\n   * @type {module:echarts/coord/polar/AngleAxis|module:echarts/coord/polar/RadiusAxis}\n   */\n  axis: null,\n\n  /**\n   * @override\n   */\n  getCoordSysModel: function () {\n    return this.ecModel.queryComponents({\n      mainType: 'polar',\n      index: this.option.polarIndex,\n      id: this.option.polarId\n    })[0];\n  }\n});\nzrUtil.merge(PolarAxisModel.prototype, axisModelCommonMixin);\nvar polarAxisDefaultExtendedOption = {\n  angle: {\n    // polarIndex: 0,\n    // polarId: '',\n    startAngle: 90,\n    clockwise: true,\n    splitNumber: 12,\n    axisLabel: {\n      rotate: false\n    }\n  },\n  radius: {\n    // polarIndex: 0,\n    // polarId: '',\n    splitNumber: 5\n  }\n};\n\nfunction getAxisType(axisDim, option) {\n  // Default axis with data is category axis\n  return option.type || (option.data ? 'category' : 'value');\n}\n\naxisModelCreator('angle', PolarAxisModel, getAxisType, polarAxisDefaultExtendedOption.angle);\naxisModelCreator('radius', PolarAxisModel, getAxisType, polarAxisDefaultExtendedOption.radius);","var RadiusAxis = require(\"./RadiusAxis\");\n\nvar AngleAxis = require(\"./AngleAxis\");\n\n/**\n * @module echarts/coord/polar/Polar\n */\n\n/**\n * @alias {module:echarts/coord/polar/Polar}\n * @constructor\n * @param {string} name\n */\nvar Polar = function (name) {\n  /**\n   * @type {string}\n   */\n  this.name = name || '';\n  /**\n   * x of polar center\n   * @type {number}\n   */\n\n  this.cx = 0;\n  /**\n   * y of polar center\n   * @type {number}\n   */\n\n  this.cy = 0;\n  /**\n   * @type {module:echarts/coord/polar/RadiusAxis}\n   * @private\n   */\n\n  this._radiusAxis = new RadiusAxis();\n  /**\n   * @type {module:echarts/coord/polar/AngleAxis}\n   * @private\n   */\n\n  this._angleAxis = new AngleAxis();\n  this._radiusAxis.polar = this._angleAxis.polar = this;\n};\n\nPolar.prototype = {\n  type: 'polar',\n  axisPointerEnabled: true,\n  constructor: Polar,\n\n  /**\n   * @param {Array.<string>}\n   * @readOnly\n   */\n  dimensions: ['radius', 'angle'],\n\n  /**\n   * @type {module:echarts/coord/PolarModel}\n   */\n  model: null,\n\n  /**\n   * If contain coord\n   * @param {Array.<number>} point\n   * @return {boolean}\n   */\n  containPoint: function (point) {\n    var coord = this.pointToCoord(point);\n    return this._radiusAxis.contain(coord[0]) && this._angleAxis.contain(coord[1]);\n  },\n\n  /**\n   * If contain data\n   * @param {Array.<number>} data\n   * @return {boolean}\n   */\n  containData: function (data) {\n    return this._radiusAxis.containData(data[0]) && this._angleAxis.containData(data[1]);\n  },\n\n  /**\n   * @param {string} dim\n   * @return {module:echarts/coord/polar/AngleAxis|module:echarts/coord/polar/RadiusAxis}\n   */\n  getAxis: function (dim) {\n    return this['_' + dim + 'Axis'];\n  },\n\n  /**\n   * @return {Array.<module:echarts/coord/Axis>}\n   */\n  getAxes: function () {\n    return [this._radiusAxis, this._angleAxis];\n  },\n\n  /**\n   * Get axes by type of scale\n   * @param {string} scaleType\n   * @return {module:echarts/coord/polar/AngleAxis|module:echarts/coord/polar/RadiusAxis}\n   */\n  getAxesByScale: function (scaleType) {\n    var axes = [];\n    var angleAxis = this._angleAxis;\n    var radiusAxis = this._radiusAxis;\n    angleAxis.scale.type === scaleType && axes.push(angleAxis);\n    radiusAxis.scale.type === scaleType && axes.push(radiusAxis);\n    return axes;\n  },\n\n  /**\n   * @return {module:echarts/coord/polar/AngleAxis}\n   */\n  getAngleAxis: function () {\n    return this._angleAxis;\n  },\n\n  /**\n   * @return {module:echarts/coord/polar/RadiusAxis}\n   */\n  getRadiusAxis: function () {\n    return this._radiusAxis;\n  },\n\n  /**\n   * @param {module:echarts/coord/polar/Axis}\n   * @return {module:echarts/coord/polar/Axis}\n   */\n  getOtherAxis: function (axis) {\n    var angleAxis = this._angleAxis;\n    return axis === angleAxis ? this._radiusAxis : angleAxis;\n  },\n\n  /**\n   * Base axis will be used on stacking.\n   *\n   * @return {module:echarts/coord/polar/Axis}\n   */\n  getBaseAxis: function () {\n    return this.getAxesByScale('ordinal')[0] || this.getAxesByScale('time')[0] || this.getAngleAxis();\n  },\n\n  /**\n   * @param {string} [dim] 'radius' or 'angle' or 'auto' or null/undefined\n   * @return {Object} {baseAxes: [], otherAxes: []}\n   */\n  getTooltipAxes: function (dim) {\n    var baseAxis = dim != null && dim !== 'auto' ? this.getAxis(dim) : this.getBaseAxis();\n    return {\n      baseAxes: [baseAxis],\n      otherAxes: [this.getOtherAxis(baseAxis)]\n    };\n  },\n\n  /**\n   * Convert a single data item to (x, y) point.\n   * Parameter data is an array which the first element is radius and the second is angle\n   * @param {Array.<number>} data\n   * @param {boolean} [clamp=false]\n   * @return {Array.<number>}\n   */\n  dataToPoint: function (data, clamp) {\n    return this.coordToPoint([this._radiusAxis.dataToRadius(data[0], clamp), this._angleAxis.dataToAngle(data[1], clamp)]);\n  },\n\n  /**\n   * Convert a (x, y) point to data\n   * @param {Array.<number>} point\n   * @param {boolean} [clamp=false]\n   * @return {Array.<number>}\n   */\n  pointToData: function (point, clamp) {\n    var coord = this.pointToCoord(point);\n    return [this._radiusAxis.radiusToData(coord[0], clamp), this._angleAxis.angleToData(coord[1], clamp)];\n  },\n\n  /**\n   * Convert a (x, y) point to (radius, angle) coord\n   * @param {Array.<number>} point\n   * @return {Array.<number>}\n   */\n  pointToCoord: function (point) {\n    var dx = point[0] - this.cx;\n    var dy = point[1] - this.cy;\n    var angleAxis = this.getAngleAxis();\n    var extent = angleAxis.getExtent();\n    var minAngle = Math.min(extent[0], extent[1]);\n    var maxAngle = Math.max(extent[0], extent[1]); // Fix fixed extent in polarCreator\n    // FIXME\n\n    angleAxis.inverse ? minAngle = maxAngle - 360 : maxAngle = minAngle + 360;\n    var radius = Math.sqrt(dx * dx + dy * dy);\n    dx /= radius;\n    dy /= radius;\n    var radian = Math.atan2(-dy, dx) / Math.PI * 180; // move to angleExtent\n\n    var dir = radian < minAngle ? 1 : -1;\n\n    while (radian < minAngle || radian > maxAngle) {\n      radian += dir * 360;\n    }\n\n    return [radius, radian];\n  },\n\n  /**\n   * Convert a (radius, angle) coord to (x, y) point\n   * @param {Array.<number>} coord\n   * @return {Array.<number>}\n   */\n  coordToPoint: function (coord) {\n    var radius = coord[0];\n    var radian = coord[1] / 180 * Math.PI;\n    var x = Math.cos(radian) * radius + this.cx; // Inverse the y\n\n    var y = -Math.sin(radian) * radius + this.cy;\n    return [x, y];\n  }\n};\nvar _default = Polar;\nmodule.exports = _default;","var echarts = require(\"../../echarts\");\n\nrequire(\"./AxisModel\");\n\nvar _default = echarts.extendComponentModel({\n  type: 'polar',\n  dependencies: ['polarAxis', 'angleAxis'],\n\n  /**\n   * @type {module:echarts/coord/polar/Polar}\n   */\n  coordinateSystem: null,\n\n  /**\n   * @param {string} axisType\n   * @return {module:echarts/coord/polar/AxisModel}\n   */\n  findAxisModel: function (axisType) {\n    var foundAxisModel;\n    var ecModel = this.ecModel;\n    ecModel.eachComponent(axisType, function (axisModel) {\n      if (axisModel.getCoordSysModel() === this) {\n        foundAxisModel = axisModel;\n      }\n    }, this);\n    return foundAxisModel;\n  },\n  defaultOption: {\n    zlevel: 0,\n    z: 0,\n    center: ['50%', '50%'],\n    radius: '80%'\n  }\n});\n\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar Axis = require(\"../Axis\");\n\nfunction RadiusAxis(scale, radiusExtent) {\n  Axis.call(this, 'radius', scale, radiusExtent);\n  /**\n   * Axis type\n   *  - 'category'\n   *  - 'value'\n   *  - 'time'\n   *  - 'log'\n   * @type {string}\n   */\n\n  this.type = 'category';\n}\n\nRadiusAxis.prototype = {\n  constructor: RadiusAxis,\n\n  /**\n   * @override\n   */\n  pointToData: function (point, clamp) {\n    return this.polar.pointToData(point, clamp)[this.dim === 'radius' ? 0 : 1];\n  },\n  dataToRadius: Axis.prototype.dataToCoord,\n  radiusToData: Axis.prototype.coordToData\n};\nzrUtil.inherits(RadiusAxis, Axis);\nvar _default = RadiusAxis;\nmodule.exports = _default;","var _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar Polar = require(\"./Polar\");\n\nvar _number = require(\"../../util/number\");\n\nvar parsePercent = _number.parsePercent;\n\nvar _axisHelper = require(\"../../coord/axisHelper\");\n\nvar createScaleByModel = _axisHelper.createScaleByModel;\nvar niceScaleExtent = _axisHelper.niceScaleExtent;\n\nvar CoordinateSystem = require(\"../../CoordinateSystem\");\n\nrequire(\"./PolarModel\");\n\n// TODO Axis scale\n// 依赖 PolarModel 做预处理\n\n/**\n * Resize method bound to the polar\n * @param {module:echarts/coord/polar/PolarModel} polarModel\n * @param {module:echarts/ExtensionAPI} api\n */\nfunction resizePolar(polar, polarModel, api) {\n  var center = polarModel.get('center');\n  var width = api.getWidth();\n  var height = api.getHeight();\n  polar.cx = parsePercent(center[0], width);\n  polar.cy = parsePercent(center[1], height);\n  var radiusAxis = polar.getRadiusAxis();\n  var size = Math.min(width, height) / 2;\n  var radius = parsePercent(polarModel.get('radius'), size);\n  radiusAxis.inverse ? radiusAxis.setExtent(radius, 0) : radiusAxis.setExtent(0, radius);\n}\n/**\n * Update polar\n */\n\n\nfunction updatePolarScale(ecModel, api) {\n  var polar = this;\n  var angleAxis = polar.getAngleAxis();\n  var radiusAxis = polar.getRadiusAxis(); // Reset scale\n\n  angleAxis.scale.setExtent(Infinity, -Infinity);\n  radiusAxis.scale.setExtent(Infinity, -Infinity);\n  ecModel.eachSeries(function (seriesModel) {\n    if (seriesModel.coordinateSystem === polar) {\n      var data = seriesModel.getData();\n      zrUtil.each(data.mapDimension('radius', true), function (dim) {\n        radiusAxis.scale.unionExtentFromData(data, dim);\n      });\n      zrUtil.each(data.mapDimension('angle', true), function (dim) {\n        angleAxis.scale.unionExtentFromData(data, dim);\n      });\n    }\n  });\n  niceScaleExtent(angleAxis.scale, angleAxis.model);\n  niceScaleExtent(radiusAxis.scale, radiusAxis.model); // Fix extent of category angle axis\n\n  if (angleAxis.type === 'category' && !angleAxis.onBand) {\n    var extent = angleAxis.getExtent();\n    var diff = 360 / angleAxis.scale.count();\n    angleAxis.inverse ? extent[1] += diff : extent[1] -= diff;\n    angleAxis.setExtent(extent[0], extent[1]);\n  }\n}\n/**\n * Set common axis properties\n * @param {module:echarts/coord/polar/AngleAxis|module:echarts/coord/polar/RadiusAxis}\n * @param {module:echarts/coord/polar/AxisModel}\n * @inner\n */\n\n\nfunction setAxis(axis, axisModel) {\n  axis.type = axisModel.get('type');\n  axis.scale = createScaleByModel(axisModel);\n  axis.onBand = axisModel.get('boundaryGap') && axis.type === 'category';\n  axis.inverse = axisModel.get('inverse');\n\n  if (axisModel.mainType === 'angleAxis') {\n    axis.inverse ^= axisModel.get('clockwise');\n    var startAngle = axisModel.get('startAngle');\n    axis.setExtent(startAngle, startAngle + (axis.inverse ? -360 : 360));\n  } // Inject axis instance\n\n\n  axisModel.axis = axis;\n  axis.model = axisModel;\n}\n\nvar polarCreator = {\n  dimensions: Polar.prototype.dimensions,\n  create: function (ecModel, api) {\n    var polarList = [];\n    ecModel.eachComponent('polar', function (polarModel, idx) {\n      var polar = new Polar(idx); // Inject resize and update method\n\n      polar.update = updatePolarScale;\n      var radiusAxis = polar.getRadiusAxis();\n      var angleAxis = polar.getAngleAxis();\n      var radiusAxisModel = polarModel.findAxisModel('radiusAxis');\n      var angleAxisModel = polarModel.findAxisModel('angleAxis');\n      setAxis(radiusAxis, radiusAxisModel);\n      setAxis(angleAxis, angleAxisModel);\n      resizePolar(polar, polarModel, api);\n      polarList.push(polar);\n      polarModel.coordinateSystem = polar;\n      polar.model = polarModel;\n    }); // Inject coordinateSystem to series\n\n    ecModel.eachSeries(function (seriesModel) {\n      if (seriesModel.get('coordinateSystem') === 'polar') {\n        var polarModel = ecModel.queryComponents({\n          mainType: 'polar',\n          index: seriesModel.get('polarIndex'),\n          id: seriesModel.get('polarId')\n        })[0];\n        seriesModel.coordinateSystem = polarModel.coordinateSystem;\n      }\n    });\n    return polarList;\n  }\n};\nCoordinateSystem.register('polar', polarCreator);","var zrUtil = require(\"zrender/lib/core/util\");\n\nfunction dataToCoordSize(dataSize, dataItem) {\n  // dataItem is necessary in log axis.\n  return zrUtil.map(['Radius', 'Angle'], function (dim, dimIdx) {\n    var axis = this['get' + dim + 'Axis']();\n    var val = dataItem[dimIdx];\n    var halfSize = dataSize[dimIdx] / 2;\n    var method = 'dataTo' + dim;\n    var result = axis.type === 'category' ? axis.getBandWidth() : Math.abs(axis[method](val - halfSize) - axis[method](val + halfSize));\n\n    if (dim === 'Angle') {\n      result = result * Math.PI / 180;\n    }\n\n    return result;\n  }, this);\n}\n\nfunction _default(coordSys) {\n  var radiusAxis = coordSys.getRadiusAxis();\n  var angleAxis = coordSys.getAngleAxis();\n  var radius = radiusAxis.getExtent();\n  radius[0] > radius[1] && radius.reverse();\n  return {\n    coordSys: {\n      type: 'polar',\n      cx: coordSys.cx,\n      cy: coordSys.cy,\n      r: radius[1],\n      r0: radius[0]\n    },\n    api: {\n      coord: zrUtil.bind(function (data) {\n        var radius = radiusAxis.dataToRadius(data[0]);\n        var angle = angleAxis.dataToAngle(data[1]);\n        var coord = coordSys.coordToPoint([radius, angle]);\n        coord.push(radius, angle * Math.PI / 180);\n        return coord;\n      }),\n      size: zrUtil.bind(dataToCoordSize, coordSys)\n    }\n  };\n}\n\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar Axis = require(\"../Axis\");\n\nfunction IndicatorAxis(dim, scale, radiusExtent) {\n  Axis.call(this, dim, scale, radiusExtent);\n  /**\n   * Axis type\n   *  - 'category'\n   *  - 'value'\n   *  - 'time'\n   *  - 'log'\n   * @type {string}\n   */\n\n  this.type = 'value';\n  this.angle = 0;\n  /**\n   * Indicator name\n   * @type {string}\n   */\n\n  this.name = '';\n  /**\n   * @type {module:echarts/model/Model}\n   */\n\n  this.model;\n}\n\nzrUtil.inherits(IndicatorAxis, Axis);\nvar _default = IndicatorAxis;\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar IndicatorAxis = require(\"./IndicatorAxis\");\n\nvar IntervalScale = require(\"../../scale/Interval\");\n\nvar numberUtil = require(\"../../util/number\");\n\nvar _axisHelper = require(\"../axisHelper\");\n\nvar getScaleExtent = _axisHelper.getScaleExtent;\nvar niceScaleExtent = _axisHelper.niceScaleExtent;\n\nvar CoordinateSystem = require(\"../../CoordinateSystem\");\n\n// TODO clockwise\nfunction Radar(radarModel, ecModel, api) {\n  this._model = radarModel;\n  /**\n   * Radar dimensions\n   * @type {Array.<string>}\n   */\n\n  this.dimensions = [];\n  this._indicatorAxes = zrUtil.map(radarModel.getIndicatorModels(), function (indicatorModel, idx) {\n    var dim = 'indicator_' + idx;\n    var indicatorAxis = new IndicatorAxis(dim, new IntervalScale());\n    indicatorAxis.name = indicatorModel.get('name'); // Inject model and axis\n\n    indicatorAxis.model = indicatorModel;\n    indicatorModel.axis = indicatorAxis;\n    this.dimensions.push(dim);\n    return indicatorAxis;\n  }, this);\n  this.resize(radarModel, api);\n  /**\n   * @type {number}\n   * @readOnly\n   */\n\n  this.cx;\n  /**\n   * @type {number}\n   * @readOnly\n   */\n\n  this.cy;\n  /**\n   * @type {number}\n   * @readOnly\n   */\n\n  this.r;\n  /**\n   * @type {number}\n   * @readOnly\n   */\n\n  this.startAngle;\n}\n\nRadar.prototype.getIndicatorAxes = function () {\n  return this._indicatorAxes;\n};\n\nRadar.prototype.dataToPoint = function (value, indicatorIndex) {\n  var indicatorAxis = this._indicatorAxes[indicatorIndex];\n  return this.coordToPoint(indicatorAxis.dataToCoord(value), indicatorIndex);\n};\n\nRadar.prototype.coordToPoint = function (coord, indicatorIndex) {\n  var indicatorAxis = this._indicatorAxes[indicatorIndex];\n  var angle = indicatorAxis.angle;\n  var x = this.cx + coord * Math.cos(angle);\n  var y = this.cy - coord * Math.sin(angle);\n  return [x, y];\n};\n\nRadar.prototype.pointToData = function (pt) {\n  var dx = pt[0] - this.cx;\n  var dy = pt[1] - this.cy;\n  var radius = Math.sqrt(dx * dx + dy * dy);\n  dx /= radius;\n  dy /= radius;\n  var radian = Math.atan2(-dy, dx); // Find the closest angle\n  // FIXME index can calculated directly\n\n  var minRadianDiff = Infinity;\n  var closestAxis;\n  var closestAxisIdx = -1;\n\n  for (var i = 0; i < this._indicatorAxes.length; i++) {\n    var indicatorAxis = this._indicatorAxes[i];\n    var diff = Math.abs(radian - indicatorAxis.angle);\n\n    if (diff < minRadianDiff) {\n      closestAxis = indicatorAxis;\n      closestAxisIdx = i;\n      minRadianDiff = diff;\n    }\n  }\n\n  return [closestAxisIdx, +(closestAxis && closestAxis.coodToData(radius))];\n};\n\nRadar.prototype.resize = function (radarModel, api) {\n  var center = radarModel.get('center');\n  var viewWidth = api.getWidth();\n  var viewHeight = api.getHeight();\n  var viewSize = Math.min(viewWidth, viewHeight) / 2;\n  this.cx = numberUtil.parsePercent(center[0], viewWidth);\n  this.cy = numberUtil.parsePercent(center[1], viewHeight);\n  this.startAngle = radarModel.get('startAngle') * Math.PI / 180;\n  this.r = numberUtil.parsePercent(radarModel.get('radius'), viewSize);\n  zrUtil.each(this._indicatorAxes, function (indicatorAxis, idx) {\n    indicatorAxis.setExtent(0, this.r);\n    var angle = this.startAngle + idx * Math.PI * 2 / this._indicatorAxes.length; // Normalize to [-PI, PI]\n\n    angle = Math.atan2(Math.sin(angle), Math.cos(angle));\n    indicatorAxis.angle = angle;\n  }, this);\n};\n\nRadar.prototype.update = function (ecModel, api) {\n  var indicatorAxes = this._indicatorAxes;\n  var radarModel = this._model;\n  zrUtil.each(indicatorAxes, function (indicatorAxis) {\n    indicatorAxis.scale.setExtent(Infinity, -Infinity);\n  });\n  ecModel.eachSeriesByType('radar', function (radarSeries, idx) {\n    if (radarSeries.get('coordinateSystem') !== 'radar' || ecModel.getComponent('radar', radarSeries.get('radarIndex')) !== radarModel) {\n      return;\n    }\n\n    var data = radarSeries.getData();\n    zrUtil.each(indicatorAxes, function (indicatorAxis) {\n      indicatorAxis.scale.unionExtentFromData(data, data.mapDimension(indicatorAxis.dim));\n    });\n  }, this);\n  var splitNumber = radarModel.get('splitNumber');\n\n  function increaseInterval(interval) {\n    var exp10 = Math.pow(10, Math.floor(Math.log(interval) / Math.LN10)); // Increase interval\n\n    var f = interval / exp10;\n\n    if (f === 2) {\n      f = 5;\n    } else {\n      // f is 2 or 5\n      f *= 2;\n    }\n\n    return f * exp10;\n  } // Force all the axis fixing the maxSplitNumber.\n\n\n  zrUtil.each(indicatorAxes, function (indicatorAxis, idx) {\n    var rawExtent = getScaleExtent(indicatorAxis.scale, indicatorAxis.model);\n    niceScaleExtent(indicatorAxis.scale, indicatorAxis.model);\n    var axisModel = indicatorAxis.model;\n    var scale = indicatorAxis.scale;\n    var fixedMin = axisModel.getMin();\n    var fixedMax = axisModel.getMax();\n    var interval = scale.getInterval();\n\n    if (fixedMin != null && fixedMax != null) {\n      // User set min, max, divide to get new interval\n      scale.setExtent(+fixedMin, +fixedMax);\n      scale.setInterval((fixedMax - fixedMin) / splitNumber);\n    } else if (fixedMin != null) {\n      var max; // User set min, expand extent on the other side\n\n      do {\n        max = fixedMin + interval * splitNumber;\n        scale.setExtent(+fixedMin, max); // Interval must been set after extent\n        // FIXME\n\n        scale.setInterval(interval);\n        interval = increaseInterval(interval);\n      } while (max < rawExtent[1] && isFinite(max) && isFinite(rawExtent[1]));\n    } else if (fixedMax != null) {\n      var min; // User set min, expand extent on the other side\n\n      do {\n        min = fixedMax - interval * splitNumber;\n        scale.setExtent(min, +fixedMax);\n        scale.setInterval(interval);\n        interval = increaseInterval(interval);\n      } while (min > rawExtent[0] && isFinite(min) && isFinite(rawExtent[0]));\n    } else {\n      var nicedSplitNumber = scale.getTicks().length - 1;\n\n      if (nicedSplitNumber > splitNumber) {\n        interval = increaseInterval(interval);\n      } // PENDING\n\n\n      var center = Math.round((rawExtent[0] + rawExtent[1]) / 2 / interval) * interval;\n      var halfSplitNumber = Math.round(splitNumber / 2);\n      scale.setExtent(numberUtil.round(center - halfSplitNumber * interval), numberUtil.round(center + (splitNumber - halfSplitNumber) * interval));\n      scale.setInterval(interval);\n    }\n  });\n};\n/**\n * Radar dimensions is based on the data\n * @type {Array}\n */\n\n\nRadar.dimensions = [];\n\nRadar.create = function (ecModel, api) {\n  var radarList = [];\n  ecModel.eachComponent('radar', function (radarModel) {\n    var radar = new Radar(radarModel, ecModel, api);\n    radarList.push(radar);\n    radarModel.coordinateSystem = radar;\n  });\n  ecModel.eachSeriesByType('radar', function (radarSeries) {\n    if (radarSeries.get('coordinateSystem') === 'radar') {\n      // Inject coordinate system\n      radarSeries.coordinateSystem = radarList[radarSeries.get('radarIndex') || 0];\n    }\n  });\n  return radarList;\n};\n\nCoordinateSystem.register('radar', Radar);\nvar _default = Radar;\nmodule.exports = _default;","var echarts = require(\"../../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar axisDefault = require(\"../axisDefault\");\n\nvar Model = require(\"../../model/Model\");\n\nvar axisModelCommonMixin = require(\"../axisModelCommonMixin\");\n\nvar valueAxisDefault = axisDefault.valueAxis;\n\nfunction defaultsShow(opt, show) {\n  return zrUtil.defaults({\n    show: show\n  }, opt);\n}\n\nvar RadarModel = echarts.extendComponentModel({\n  type: 'radar',\n  optionUpdated: function () {\n    var boundaryGap = this.get('boundaryGap');\n    var splitNumber = this.get('splitNumber');\n    var scale = this.get('scale');\n    var axisLine = this.get('axisLine');\n    var axisTick = this.get('axisTick');\n    var axisLabel = this.get('axisLabel');\n    var nameTextStyle = this.get('name');\n    var showName = this.get('name.show');\n    var nameFormatter = this.get('name.formatter');\n    var nameGap = this.get('nameGap');\n    var triggerEvent = this.get('triggerEvent');\n    var indicatorModels = zrUtil.map(this.get('indicator') || [], function (indicatorOpt) {\n      // PENDING\n      if (indicatorOpt.max != null && indicatorOpt.max > 0 && !indicatorOpt.min) {\n        indicatorOpt.min = 0;\n      } else if (indicatorOpt.min != null && indicatorOpt.min < 0 && !indicatorOpt.max) {\n        indicatorOpt.max = 0;\n      }\n\n      var iNameTextStyle = nameTextStyle;\n\n      if (indicatorOpt.color != null) {\n        iNameTextStyle = zrUtil.defaults({\n          color: indicatorOpt.color\n        }, nameTextStyle);\n      } // Use same configuration\n\n\n      indicatorOpt = zrUtil.merge(zrUtil.clone(indicatorOpt), {\n        boundaryGap: boundaryGap,\n        splitNumber: splitNumber,\n        scale: scale,\n        axisLine: axisLine,\n        axisTick: axisTick,\n        axisLabel: axisLabel,\n        // Competitable with 2 and use text\n        name: indicatorOpt.text,\n        nameLocation: 'end',\n        nameGap: nameGap,\n        // min: 0,\n        nameTextStyle: iNameTextStyle,\n        triggerEvent: triggerEvent\n      }, false);\n\n      if (!showName) {\n        indicatorOpt.name = '';\n      }\n\n      if (typeof nameFormatter === 'string') {\n        var indName = indicatorOpt.name;\n        indicatorOpt.name = nameFormatter.replace('{value}', indName != null ? indName : '');\n      } else if (typeof nameFormatter === 'function') {\n        indicatorOpt.name = nameFormatter(indicatorOpt.name, indicatorOpt);\n      }\n\n      var model = zrUtil.extend(new Model(indicatorOpt, null, this.ecModel), axisModelCommonMixin); // For triggerEvent.\n\n      model.mainType = 'radar';\n      model.componentIndex = this.componentIndex;\n      return model;\n    }, this);\n\n    this.getIndicatorModels = function () {\n      return indicatorModels;\n    };\n  },\n  defaultOption: {\n    zlevel: 0,\n    z: 0,\n    center: ['50%', '50%'],\n    radius: '75%',\n    startAngle: 90,\n    name: {\n      show: true // formatter: null\n      // textStyle: {}\n\n    },\n    boundaryGap: [0, 0],\n    splitNumber: 5,\n    nameGap: 15,\n    scale: false,\n    // Polygon or circle\n    shape: 'polygon',\n    axisLine: zrUtil.merge({\n      lineStyle: {\n        color: '#bbb'\n      }\n    }, valueAxisDefault.axisLine),\n    axisLabel: defaultsShow(valueAxisDefault.axisLabel, false),\n    axisTick: defaultsShow(valueAxisDefault.axisTick, false),\n    splitLine: defaultsShow(valueAxisDefault.splitLine, true),\n    splitArea: defaultsShow(valueAxisDefault.splitArea, true),\n    // {text, min, max}\n    indicator: []\n  }\n});\nvar _default = RadarModel;\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar ComponentModel = require(\"../../model/Component\");\n\nvar axisModelCreator = require(\"../axisModelCreator\");\n\nvar axisModelCommonMixin = require(\"../axisModelCommonMixin\");\n\nvar AxisModel = ComponentModel.extend({\n  type: 'singleAxis',\n  layoutMode: 'box',\n\n  /**\n   * @type {module:echarts/coord/single/SingleAxis}\n   */\n  axis: null,\n\n  /**\n   * @type {module:echarts/coord/single/Single}\n   */\n  coordinateSystem: null,\n\n  /**\n   * @override\n   */\n  getCoordSysModel: function () {\n    return this;\n  }\n});\nvar defaultOption = {\n  left: '5%',\n  top: '5%',\n  right: '5%',\n  bottom: '5%',\n  type: 'value',\n  position: 'bottom',\n  orient: 'horizontal',\n  axisLine: {\n    show: true,\n    lineStyle: {\n      width: 2,\n      type: 'solid'\n    }\n  },\n  // Single coordinate system and single axis is the,\n  // which is used as the parent tooltip model.\n  // same model, so we set default tooltip show as true.\n  tooltip: {\n    show: true\n  },\n  axisTick: {\n    show: true,\n    length: 6,\n    lineStyle: {\n      width: 2\n    }\n  },\n  axisLabel: {\n    show: true,\n    interval: 'auto'\n  },\n  splitLine: {\n    show: true,\n    lineStyle: {\n      type: 'dashed',\n      opacity: 0.2\n    }\n  }\n};\n\nfunction getAxisType(axisName, option) {\n  return option.type || (option.data ? 'category' : 'value');\n}\n\nzrUtil.merge(AxisModel.prototype, axisModelCommonMixin);\naxisModelCreator('single', AxisModel, getAxisType, defaultOption);\nvar _default = AxisModel;\nmodule.exports = _default;","var SingleAxis = require(\"./SingleAxis\");\n\nvar axisHelper = require(\"../axisHelper\");\n\nvar _layout = require(\"../../util/layout\");\n\nvar getLayoutRect = _layout.getLayoutRect;\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar each = _util.each;\n\n/**\n * Single coordinates system.\n */\n\n/**\n * Create a single coordinates system.\n *\n * @param {module:echarts/coord/single/AxisModel} axisModel\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n */\nfunction Single(axisModel, ecModel, api) {\n  /**\n   * @type {string}\n   * @readOnly\n   */\n  this.dimension = 'single';\n  /**\n   * Add it just for draw tooltip.\n   *\n   * @type {Array.<string>}\n   * @readOnly\n   */\n\n  this.dimensions = ['single'];\n  /**\n   * @private\n   * @type {module:echarts/coord/single/SingleAxis}.\n   */\n\n  this._axis = null;\n  /**\n   * @private\n   * @type {module:zrender/core/BoundingRect}\n   */\n\n  this._rect;\n\n  this._init(axisModel, ecModel, api);\n  /**\n   * @type {module:echarts/coord/single/AxisModel}\n   */\n\n\n  this.model = axisModel;\n}\n\nSingle.prototype = {\n  type: 'singleAxis',\n  axisPointerEnabled: true,\n  constructor: Single,\n\n  /**\n   * Initialize single coordinate system.\n   *\n   * @param  {module:echarts/coord/single/AxisModel} axisModel\n   * @param  {module:echarts/model/Global} ecModel\n   * @param  {module:echarts/ExtensionAPI} api\n   * @private\n   */\n  _init: function (axisModel, ecModel, api) {\n    var dim = this.dimension;\n    var axis = new SingleAxis(dim, axisHelper.createScaleByModel(axisModel), [0, 0], axisModel.get('type'), axisModel.get('position'));\n    var isCategory = axis.type === 'category';\n    axis.onBand = isCategory && axisModel.get('boundaryGap');\n    axis.inverse = axisModel.get('inverse');\n    axis.orient = axisModel.get('orient');\n    axisModel.axis = axis;\n    axis.model = axisModel;\n    axis.coordinateSystem = this;\n    this._axis = axis;\n  },\n\n  /**\n   * Update axis scale after data processed\n   * @param  {module:echarts/model/Global} ecModel\n   * @param  {module:echarts/ExtensionAPI} api\n   */\n  update: function (ecModel, api) {\n    ecModel.eachSeries(function (seriesModel) {\n      if (seriesModel.coordinateSystem === this) {\n        var data = seriesModel.getData();\n        each(data.mapDimension(this.dimension, true), function (dim) {\n          this._axis.scale.unionExtentFromData(data, dim);\n        }, this);\n        axisHelper.niceScaleExtent(this._axis.scale, this._axis.model);\n      }\n    }, this);\n  },\n\n  /**\n   * Resize the single coordinate system.\n   *\n   * @param  {module:echarts/coord/single/AxisModel} axisModel\n   * @param  {module:echarts/ExtensionAPI} api\n   */\n  resize: function (axisModel, api) {\n    this._rect = getLayoutRect({\n      left: axisModel.get('left'),\n      top: axisModel.get('top'),\n      right: axisModel.get('right'),\n      bottom: axisModel.get('bottom'),\n      width: axisModel.get('width'),\n      height: axisModel.get('height')\n    }, {\n      width: api.getWidth(),\n      height: api.getHeight()\n    });\n\n    this._adjustAxis();\n  },\n\n  /**\n   * @return {module:zrender/core/BoundingRect}\n   */\n  getRect: function () {\n    return this._rect;\n  },\n\n  /**\n   * @private\n   */\n  _adjustAxis: function () {\n    var rect = this._rect;\n    var axis = this._axis;\n    var isHorizontal = axis.isHorizontal();\n    var extent = isHorizontal ? [0, rect.width] : [0, rect.height];\n    var idx = axis.reverse ? 1 : 0;\n    axis.setExtent(extent[idx], extent[1 - idx]);\n\n    this._updateAxisTransform(axis, isHorizontal ? rect.x : rect.y);\n  },\n\n  /**\n   * @param  {module:echarts/coord/single/SingleAxis} axis\n   * @param  {number} coordBase\n   */\n  _updateAxisTransform: function (axis, coordBase) {\n    var axisExtent = axis.getExtent();\n    var extentSum = axisExtent[0] + axisExtent[1];\n    var isHorizontal = axis.isHorizontal();\n    axis.toGlobalCoord = isHorizontal ? function (coord) {\n      return coord + coordBase;\n    } : function (coord) {\n      return extentSum - coord + coordBase;\n    };\n    axis.toLocalCoord = isHorizontal ? function (coord) {\n      return coord - coordBase;\n    } : function (coord) {\n      return extentSum - coord + coordBase;\n    };\n  },\n\n  /**\n   * Get axis.\n   *\n   * @return {module:echarts/coord/single/SingleAxis}\n   */\n  getAxis: function () {\n    return this._axis;\n  },\n\n  /**\n   * Get axis, add it just for draw tooltip.\n   *\n   * @return {[type]} [description]\n   */\n  getBaseAxis: function () {\n    return this._axis;\n  },\n\n  /**\n   * @return {Array.<module:echarts/coord/Axis>}\n   */\n  getAxes: function () {\n    return [this._axis];\n  },\n\n  /**\n   * @return {Object} {baseAxes: [], otherAxes: []}\n   */\n  getTooltipAxes: function () {\n    return {\n      baseAxes: [this.getAxis()]\n    };\n  },\n\n  /**\n   * If contain point.\n   *\n   * @param  {Array.<number>} point\n   * @return {boolean}\n   */\n  containPoint: function (point) {\n    var rect = this.getRect();\n    var axis = this.getAxis();\n    var orient = axis.orient;\n\n    if (orient === 'horizontal') {\n      return axis.contain(axis.toLocalCoord(point[0])) && point[1] >= rect.y && point[1] <= rect.y + rect.height;\n    } else {\n      return axis.contain(axis.toLocalCoord(point[1])) && point[0] >= rect.y && point[0] <= rect.y + rect.height;\n    }\n  },\n\n  /**\n   * @param {Array.<number>} point\n   * @return {Array.<number>}\n   */\n  pointToData: function (point) {\n    var axis = this.getAxis();\n    return [axis.coordToData(axis.toLocalCoord(point[axis.orient === 'horizontal' ? 0 : 1]))];\n  },\n\n  /**\n   * Convert the series data to concrete point.\n   *\n   * @param  {number|Array.<number>} val\n   * @return {Array.<number>}\n   */\n  dataToPoint: function (val) {\n    var axis = this.getAxis();\n    var rect = this.getRect();\n    var pt = [];\n    var idx = axis.orient === 'horizontal' ? 0 : 1;\n\n    if (val instanceof Array) {\n      val = val[0];\n    }\n\n    pt[idx] = axis.toGlobalCoord(axis.dataToCoord(+val));\n    pt[1 - idx] = idx === 0 ? rect.y + rect.height / 2 : rect.x + rect.width / 2;\n    return pt;\n  }\n};\nvar _default = Single;\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar Axis = require(\"../Axis\");\n\n/**\n * @constructor  module:echarts/coord/single/SingleAxis\n * @extends {module:echarts/coord/Axis}\n * @param {string} dim\n * @param {*} scale\n * @param {Array.<number>} coordExtent\n * @param {string} axisType\n * @param {string} position\n */\nvar SingleAxis = function (dim, scale, coordExtent, axisType, position) {\n  Axis.call(this, dim, scale, coordExtent);\n  /**\n   * Axis type\n   * - 'category'\n   * - 'value'\n   * - 'time'\n   * - 'log'\n   * @type {string}\n   */\n\n  this.type = axisType || 'value';\n  /**\n   * Axis position\n   *  - 'top'\n   *  - 'bottom'\n   *  - 'left'\n   *  - 'right'\n   *  @type {string}\n   */\n\n  this.position = position || 'bottom';\n  /**\n   * Axis orient\n   *  - 'horizontal'\n   *  - 'vertical'\n   * @type {[type]}\n   */\n\n  this.orient = null;\n  /**\n   * @type {number}\n   */\n\n  this._labelInterval = null;\n};\n\nSingleAxis.prototype = {\n  constructor: SingleAxis,\n\n  /**\n   * Axis model\n   * @type {module:echarts/coord/single/AxisModel}\n   */\n  model: null,\n\n  /**\n   * Judge the orient of the axis.\n   * @return {boolean}\n   */\n  isHorizontal: function () {\n    var position = this.position;\n    return position === 'top' || position === 'bottom';\n  },\n\n  /**\n   * @override\n   */\n  pointToData: function (point, clamp) {\n    return this.coordinateSystem.pointToData(point, clamp)[0];\n  },\n\n  /**\n   * Convert the local coord(processed by dataToCoord())\n   * to global coord(concrete pixel coord).\n   * designated by module:echarts/coord/single/Single.\n   * @type {Function}\n   */\n  toGlobalCoord: null,\n\n  /**\n   * Convert the global coord to local coord.\n   * designated by module:echarts/coord/single/Single.\n   * @type {Function}\n   */\n  toLocalCoord: null\n};\nzrUtil.inherits(SingleAxis, Axis);\nvar _default = SingleAxis;\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\nfunction dataToCoordSize(dataSize, dataItem) {\n  // dataItem is necessary in log axis.\n  var axis = this.getAxis();\n  var val = dataItem instanceof Array ? dataItem[0] : dataItem;\n  var halfSize = (dataSize instanceof Array ? dataSize[0] : dataSize) / 2;\n  return axis.type === 'category' ? axis.getBandWidth() : Math.abs(axis.dataToCoord(val - halfSize) - axis.dataToCoord(val + halfSize));\n}\n\nfunction _default(coordSys) {\n  var rect = coordSys.getRect();\n  return {\n    coordSys: {\n      type: 'singleAxis',\n      x: rect.x,\n      y: rect.y,\n      width: rect.width,\n      height: rect.height\n    },\n    api: {\n      coord: function (val) {\n        // do not provide \"out\" param\n        return coordSys.dataToPoint(val);\n      },\n      size: zrUtil.bind(dataToCoordSize, coordSys)\n    }\n  };\n}\n\nmodule.exports = _default;","var Single = require(\"./Single\");\n\nvar CoordinateSystem = require(\"../../CoordinateSystem\");\n\n/**\n * Single coordinate system creator.\n */\n\n/**\n * Create single coordinate system and inject it into seriesModel.\n *\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n * @return {Array.<module:echarts/coord/single/Single>}\n */\nfunction create(ecModel, api) {\n  var singles = [];\n  ecModel.eachComponent('singleAxis', function (axisModel, idx) {\n    var single = new Single(axisModel, ecModel, api);\n    single.name = 'single_' + idx;\n    single.resize(axisModel, api);\n    axisModel.coordinateSystem = single;\n    singles.push(single);\n  });\n  ecModel.eachSeries(function (seriesModel) {\n    if (seriesModel.get('coordinateSystem') === 'singleAxis') {\n      var singleAxisModel = ecModel.queryComponents({\n        mainType: 'singleAxis',\n        index: seriesModel.get('singleAxisIndex'),\n        id: seriesModel.get('singleAxisId')\n      })[0];\n      seriesModel.coordinateSystem = singleAxisModel && singleAxisModel.coordinateSystem;\n    }\n  });\n  return singles;\n}\n\nCoordinateSystem.register('single', {\n  create: create,\n  dimensions: Single.prototype.dimensions\n});","function defaultKeyGetter(item) {\n  return item;\n}\n/**\n * @param {Array} oldArr\n * @param {Array} newArr\n * @param {Function} oldKeyGetter\n * @param {Function} newKeyGetter\n * @param {Object} [context] Can be visited by this.context in callback.\n */\n\n\nfunction DataDiffer(oldArr, newArr, oldKeyGetter, newKeyGetter, context) {\n  this._old = oldArr;\n  this._new = newArr;\n  this._oldKeyGetter = oldKeyGetter || defaultKeyGetter;\n  this._newKeyGetter = newKeyGetter || defaultKeyGetter;\n  this.context = context;\n}\n\nDataDiffer.prototype = {\n  constructor: DataDiffer,\n\n  /**\n   * Callback function when add a data\n   */\n  add: function (func) {\n    this._add = func;\n    return this;\n  },\n\n  /**\n   * Callback function when update a data\n   */\n  update: function (func) {\n    this._update = func;\n    return this;\n  },\n\n  /**\n   * Callback function when remove a data\n   */\n  remove: function (func) {\n    this._remove = func;\n    return this;\n  },\n  execute: function () {\n    var oldArr = this._old;\n    var newArr = this._new;\n    var oldDataIndexMap = {};\n    var newDataIndexMap = {};\n    var oldDataKeyArr = [];\n    var newDataKeyArr = [];\n    var i;\n    initIndexMap(oldArr, oldDataIndexMap, oldDataKeyArr, '_oldKeyGetter', this);\n    initIndexMap(newArr, newDataIndexMap, newDataKeyArr, '_newKeyGetter', this); // Travel by inverted order to make sure order consistency\n    // when duplicate keys exists (consider newDataIndex.pop() below).\n    // For performance consideration, these code below do not look neat.\n\n    for (i = 0; i < oldArr.length; i++) {\n      var key = oldDataKeyArr[i];\n      var idx = newDataIndexMap[key]; // idx can never be empty array here. see 'set null' logic below.\n\n      if (idx != null) {\n        // Consider there is duplicate key (for example, use dataItem.name as key).\n        // We should make sure every item in newArr and oldArr can be visited.\n        var len = idx.length;\n\n        if (len) {\n          len === 1 && (newDataIndexMap[key] = null);\n          idx = idx.unshift();\n        } else {\n          newDataIndexMap[key] = null;\n        }\n\n        this._update && this._update(idx, i);\n      } else {\n        this._remove && this._remove(i);\n      }\n    }\n\n    for (var i = 0; i < newDataKeyArr.length; i++) {\n      var key = newDataKeyArr[i];\n\n      if (newDataIndexMap.hasOwnProperty(key)) {\n        var idx = newDataIndexMap[key];\n\n        if (idx == null) {\n          continue;\n        } // idx can never be empty array here. see 'set null' logic above.\n\n\n        if (!idx.length) {\n          this._add && this._add(idx);\n        } else {\n          for (var j = 0, len = idx.length; j < len; j++) {\n            this._add && this._add(idx[j]);\n          }\n        }\n      }\n    }\n  }\n};\n\nfunction initIndexMap(arr, map, keyArr, keyGetterName, dataDiffer) {\n  for (var i = 0; i < arr.length; i++) {\n    // Add prefix to avoid conflict with Object.prototype.\n    var key = '_ec_' + dataDiffer[keyGetterName](arr[i], i);\n    var existence = map[key];\n\n    if (existence == null) {\n      keyArr.push(key);\n      map[key] = i;\n    } else {\n      if (!existence.length) {\n        map[key] = existence = [existence];\n      }\n\n      existence.push(i);\n    }\n  }\n}\n\nvar _default = DataDiffer;\nmodule.exports = _default;","var _config = require(\"../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar _clazz = require(\"../util/clazz\");\n\nvar enableClassCheck = _clazz.enableClassCheck;\n\n/**\n * Graph data structure\n *\n * @module echarts/data/Graph\n * @author Yi Shen(https://www.github.com/pissang)\n */\n// id may be function name of Object, add a prefix to avoid this problem.\nfunction generateNodeKey(id) {\n  return '_EC_' + id;\n}\n/**\n * @alias module:echarts/data/Graph\n * @constructor\n * @param {boolean} directed\n */\n\n\nvar Graph = function (directed) {\n  /**\n   * 是否是有向图\n   * @type {boolean}\n   * @private\n   */\n  this._directed = directed || false;\n  /**\n   * @type {Array.<module:echarts/data/Graph.Node>}\n   * @readOnly\n   */\n\n  this.nodes = [];\n  /**\n   * @type {Array.<module:echarts/data/Graph.Edge>}\n   * @readOnly\n   */\n\n  this.edges = [];\n  /**\n   * @type {Object.<string, module:echarts/data/Graph.Node>}\n   * @private\n   */\n\n  this._nodesMap = {};\n  /**\n   * @type {Object.<string, module:echarts/data/Graph.Edge>}\n   * @private\n   */\n\n  this._edgesMap = {};\n  /**\n   * @type {module:echarts/data/List}\n   * @readOnly\n   */\n\n  this.data;\n  /**\n   * @type {module:echarts/data/List}\n   * @readOnly\n   */\n\n  this.edgeData;\n};\n\nvar graphProto = Graph.prototype;\n/**\n * @type {string}\n */\n\ngraphProto.type = 'graph';\n/**\n * If is directed graph\n * @return {boolean}\n */\n\ngraphProto.isDirected = function () {\n  return this._directed;\n};\n/**\n * Add a new node\n * @param {string} id\n * @param {number} [dataIndex]\n */\n\n\ngraphProto.addNode = function (id, dataIndex) {\n  id = id || '' + dataIndex;\n  var nodesMap = this._nodesMap;\n\n  if (nodesMap[generateNodeKey(id)]) {\n    return;\n  }\n\n  var node = new Node(id, dataIndex);\n  node.hostGraph = this;\n  this.nodes.push(node);\n  nodesMap[generateNodeKey(id)] = node;\n  return node;\n};\n/**\n * Get node by data index\n * @param  {number} dataIndex\n * @return {module:echarts/data/Graph~Node}\n */\n\n\ngraphProto.getNodeByIndex = function (dataIndex) {\n  var rawIdx = this.data.getRawIndex(dataIndex);\n  return this.nodes[rawIdx];\n};\n/**\n * Get node by id\n * @param  {string} id\n * @return {module:echarts/data/Graph.Node}\n */\n\n\ngraphProto.getNodeById = function (id) {\n  return this._nodesMap[generateNodeKey(id)];\n};\n/**\n * Add a new edge\n * @param {number|string|module:echarts/data/Graph.Node} n1\n * @param {number|string|module:echarts/data/Graph.Node} n2\n * @param {number} [dataIndex=-1]\n * @return {module:echarts/data/Graph.Edge}\n */\n\n\ngraphProto.addEdge = function (n1, n2, dataIndex) {\n  var nodesMap = this._nodesMap;\n  var edgesMap = this._edgesMap; // PNEDING\n\n  if (typeof n1 === 'number') {\n    n1 = this.nodes[n1];\n  }\n\n  if (typeof n2 === 'number') {\n    n2 = this.nodes[n2];\n  }\n\n  if (!Node.isInstance(n1)) {\n    n1 = nodesMap[generateNodeKey(n1)];\n  }\n\n  if (!Node.isInstance(n2)) {\n    n2 = nodesMap[generateNodeKey(n2)];\n  }\n\n  if (!n1 || !n2) {\n    return;\n  }\n\n  var key = n1.id + '-' + n2.id; // PENDING\n\n  if (edgesMap[key]) {\n    return;\n  }\n\n  var edge = new Edge(n1, n2, dataIndex);\n  edge.hostGraph = this;\n\n  if (this._directed) {\n    n1.outEdges.push(edge);\n    n2.inEdges.push(edge);\n  }\n\n  n1.edges.push(edge);\n\n  if (n1 !== n2) {\n    n2.edges.push(edge);\n  }\n\n  this.edges.push(edge);\n  edgesMap[key] = edge;\n  return edge;\n};\n/**\n * Get edge by data index\n * @param  {number} dataIndex\n * @return {module:echarts/data/Graph~Node}\n */\n\n\ngraphProto.getEdgeByIndex = function (dataIndex) {\n  var rawIdx = this.edgeData.getRawIndex(dataIndex);\n  return this.edges[rawIdx];\n};\n/**\n * Get edge by two linked nodes\n * @param  {module:echarts/data/Graph.Node|string} n1\n * @param  {module:echarts/data/Graph.Node|string} n2\n * @return {module:echarts/data/Graph.Edge}\n */\n\n\ngraphProto.getEdge = function (n1, n2) {\n  if (Node.isInstance(n1)) {\n    n1 = n1.id;\n  }\n\n  if (Node.isInstance(n2)) {\n    n2 = n2.id;\n  }\n\n  var edgesMap = this._edgesMap;\n\n  if (this._directed) {\n    return edgesMap[n1 + '-' + n2];\n  } else {\n    return edgesMap[n1 + '-' + n2] || edgesMap[n2 + '-' + n1];\n  }\n};\n/**\n * Iterate all nodes\n * @param  {Function} cb\n * @param  {*} [context]\n */\n\n\ngraphProto.eachNode = function (cb, context) {\n  var nodes = this.nodes;\n  var len = nodes.length;\n\n  for (var i = 0; i < len; i++) {\n    if (nodes[i].dataIndex >= 0) {\n      cb.call(context, nodes[i], i);\n    }\n  }\n};\n/**\n * Iterate all edges\n * @param  {Function} cb\n * @param  {*} [context]\n */\n\n\ngraphProto.eachEdge = function (cb, context) {\n  var edges = this.edges;\n  var len = edges.length;\n\n  for (var i = 0; i < len; i++) {\n    if (edges[i].dataIndex >= 0 && edges[i].node1.dataIndex >= 0 && edges[i].node2.dataIndex >= 0) {\n      cb.call(context, edges[i], i);\n    }\n  }\n};\n/**\n * Breadth first traverse\n * @param {Function} cb\n * @param {module:echarts/data/Graph.Node} startNode\n * @param {string} [direction='none'] 'none'|'in'|'out'\n * @param {*} [context]\n */\n\n\ngraphProto.breadthFirstTraverse = function (cb, startNode, direction, context) {\n  if (!Node.isInstance(startNode)) {\n    startNode = this._nodesMap[generateNodeKey(startNode)];\n  }\n\n  if (!startNode) {\n    return;\n  }\n\n  var edgeType = direction === 'out' ? 'outEdges' : direction === 'in' ? 'inEdges' : 'edges';\n\n  for (var i = 0; i < this.nodes.length; i++) {\n    this.nodes[i].__visited = false;\n  }\n\n  if (cb.call(context, startNode, null)) {\n    return;\n  }\n\n  var queue = [startNode];\n\n  while (queue.length) {\n    var currentNode = queue.shift();\n    var edges = currentNode[edgeType];\n\n    for (var i = 0; i < edges.length; i++) {\n      var e = edges[i];\n      var otherNode = e.node1 === currentNode ? e.node2 : e.node1;\n\n      if (!otherNode.__visited) {\n        if (cb.call(context, otherNode, currentNode)) {\n          // Stop traversing\n          return;\n        }\n\n        queue.push(otherNode);\n        otherNode.__visited = true;\n      }\n    }\n  }\n}; // TODO\n// graphProto.depthFirstTraverse = function (\n//     cb, startNode, direction, context\n// ) {\n// };\n// Filter update\n\n\ngraphProto.update = function () {\n  var data = this.data;\n  var edgeData = this.edgeData;\n  var nodes = this.nodes;\n  var edges = this.edges;\n\n  for (var i = 0, len = nodes.length; i < len; i++) {\n    nodes[i].dataIndex = -1;\n  }\n\n  for (var i = 0, len = data.count(); i < len; i++) {\n    nodes[data.getRawIndex(i)].dataIndex = i;\n  }\n\n  edgeData.filterSelf(function (idx) {\n    var edge = edges[edgeData.getRawIndex(idx)];\n    return edge.node1.dataIndex >= 0 && edge.node2.dataIndex >= 0;\n  }); // Update edge\n\n  for (var i = 0, len = edges.length; i < len; i++) {\n    edges[i].dataIndex = -1;\n  }\n\n  for (var i = 0, len = edgeData.count(); i < len; i++) {\n    edges[edgeData.getRawIndex(i)].dataIndex = i;\n  }\n};\n/**\n * @return {module:echarts/data/Graph}\n */\n\n\ngraphProto.clone = function () {\n  var graph = new Graph(this._directed);\n  var nodes = this.nodes;\n  var edges = this.edges;\n\n  for (var i = 0; i < nodes.length; i++) {\n    graph.addNode(nodes[i].id, nodes[i].dataIndex);\n  }\n\n  for (var i = 0; i < edges.length; i++) {\n    var e = edges[i];\n    graph.addEdge(e.node1.id, e.node2.id, e.dataIndex);\n  }\n\n  return graph;\n};\n/**\n * @alias module:echarts/data/Graph.Node\n */\n\n\nfunction Node(id, dataIndex) {\n  /**\n  * @type {string}\n  */\n  this.id = id == null ? '' : id;\n  /**\n  * @type {Array.<module:echarts/data/Graph.Edge>}\n  */\n\n  this.inEdges = [];\n  /**\n  * @type {Array.<module:echarts/data/Graph.Edge>}\n  */\n\n  this.outEdges = [];\n  /**\n  * @type {Array.<module:echarts/data/Graph.Edge>}\n  */\n\n  this.edges = [];\n  /**\n   * @type {module:echarts/data/Graph}\n   */\n\n  this.hostGraph;\n  /**\n   * @type {number}\n   */\n\n  this.dataIndex = dataIndex == null ? -1 : dataIndex;\n}\n\nNode.prototype = {\n  constructor: Node,\n\n  /**\n   * @return {number}\n   */\n  degree: function () {\n    return this.edges.length;\n  },\n\n  /**\n   * @return {number}\n   */\n  inDegree: function () {\n    return this.inEdges.length;\n  },\n\n  /**\n  * @return {number}\n  */\n  outDegree: function () {\n    return this.outEdges.length;\n  },\n\n  /**\n   * @param {string} [path]\n   * @return {module:echarts/model/Model}\n   */\n  getModel: function (path) {\n    if (this.dataIndex < 0) {\n      return;\n    }\n\n    var graph = this.hostGraph;\n    var itemModel = graph.data.getItemModel(this.dataIndex);\n    return itemModel.getModel(path);\n  }\n};\n/**\n * 图边\n * @alias module:echarts/data/Graph.Edge\n * @param {module:echarts/data/Graph.Node} n1\n * @param {module:echarts/data/Graph.Node} n2\n * @param {number} [dataIndex=-1]\n */\n\nfunction Edge(n1, n2, dataIndex) {\n  /**\n   * 节点1，如果是有向图则为源节点\n   * @type {module:echarts/data/Graph.Node}\n   */\n  this.node1 = n1;\n  /**\n   * 节点2，如果是有向图则为目标节点\n   * @type {module:echarts/data/Graph.Node}\n   */\n\n  this.node2 = n2;\n  this.dataIndex = dataIndex == null ? -1 : dataIndex;\n}\n/**\n * @param {string} [path]\n * @return {module:echarts/model/Model}\n */\n\n\nEdge.prototype.getModel = function (path) {\n  if (this.dataIndex < 0) {\n    return;\n  }\n\n  var graph = this.hostGraph;\n  var itemModel = graph.edgeData.getItemModel(this.dataIndex);\n  return itemModel.getModel(path);\n};\n\nvar createGraphDataProxyMixin = function (hostName, dataName) {\n  return {\n    /**\n     * @param {string=} [dimension='value'] Default 'value'. can be 'a', 'b', 'c', 'd', 'e'.\n     * @return {number}\n     */\n    getValue: function (dimension) {\n      var data = this[hostName][dataName];\n      return data.get(data.getDimension(dimension || 'value'), this.dataIndex);\n    },\n\n    /**\n     * @param {Object|string} key\n     * @param {*} [value]\n     */\n    setVisual: function (key, value) {\n      this.dataIndex >= 0 && this[hostName][dataName].setItemVisual(this.dataIndex, key, value);\n    },\n\n    /**\n     * @param {string} key\n     * @return {boolean}\n     */\n    getVisual: function (key, ignoreParent) {\n      return this[hostName][dataName].getItemVisual(this.dataIndex, key, ignoreParent);\n    },\n\n    /**\n     * @param {Object} layout\n     * @return {boolean} [merge=false]\n     */\n    setLayout: function (layout, merge) {\n      this.dataIndex >= 0 && this[hostName][dataName].setItemLayout(this.dataIndex, layout, merge);\n    },\n\n    /**\n     * @return {Object}\n     */\n    getLayout: function () {\n      return this[hostName][dataName].getItemLayout(this.dataIndex);\n    },\n\n    /**\n     * @return {module:zrender/Element}\n     */\n    getGraphicEl: function () {\n      return this[hostName][dataName].getItemGraphicEl(this.dataIndex);\n    },\n\n    /**\n     * @return {number}\n     */\n    getRawIndex: function () {\n      return this[hostName][dataName].getRawIndex(this.dataIndex);\n    }\n  };\n};\n\nzrUtil.mixin(Node, createGraphDataProxyMixin('hostGraph', 'data'));\nzrUtil.mixin(Edge, createGraphDataProxyMixin('hostGraph', 'edgeData'));\nGraph.Node = Node;\nGraph.Edge = Edge;\nenableClassCheck(Node);\nenableClassCheck(Edge);\nvar _default = Graph;\nmodule.exports = _default;","var _config = require(\"../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar Model = require(\"../model/Model\");\n\nvar DataDiffer = require(\"./DataDiffer\");\n\nvar Source = require(\"./Source\");\n\nvar _dataProvider = require(\"./helper/dataProvider\");\n\nvar defaultDimValueGetters = _dataProvider.defaultDimValueGetters;\nvar DefaultDataProvider = _dataProvider.DefaultDataProvider;\n\nvar _dimensionHelper = require(\"./helper/dimensionHelper\");\n\nvar summarizeDimensions = _dimensionHelper.summarizeDimensions;\n\n/**\n * List for data storage\n * @module echarts/data/List\n */\nvar isObject = zrUtil.isObject;\nvar UNDEFINED = 'undefined';\nvar globalObj = typeof window === UNDEFINED ? global : window; // Use prefix to avoid index to be the same as otherIdList[idx],\n// which will cause weird udpate animation.\n\nvar ID_PREFIX = 'e\\0\\0';\nvar dataCtors = {\n  'float': typeof globalObj.Float64Array === UNDEFINED ? Array : globalObj.Float64Array,\n  'int': typeof globalObj.Int32Array === UNDEFINED ? Array : globalObj.Int32Array,\n  // Ordinal data type can be string or int\n  'ordinal': Array,\n  'number': Array,\n  'time': Array\n};\n\nfunction getIndicesCtor(list) {\n  var CtorUint32Array = typeof globalObj.Uint32Array === UNDEFINED ? Array : globalObj.Uint32Array;\n  var CtorUint16Array = typeof globalObj.Uint16Array === UNDEFINED ? Array : globalObj.Uint16Array; // The possible max value in this._indicies is always this._rawCount despite of filtering.\n\n  return list._rawCount > 65535 ? CtorUint32Array : CtorUint16Array;\n}\n\nfunction cloneChunk(originalChunk) {\n  var Ctor = originalChunk.constructor; // Only shallow clone is enough when Array.\n\n  return Ctor === Array ? originalChunk.slice() : new Ctor(originalChunk);\n}\n\nvar TRANSFERABLE_PROPERTIES = ['stackedOn', 'hasItemOption', '_nameList', '_idList', '_rawData', '_rawExtent', '_chunkSize', '_chunkCount', '_dimValueGetter', '_count', '_rawCount', '_nameDimIdx', '_idDimIdx'];\n\nfunction transferProperties(a, b) {\n  zrUtil.each(TRANSFERABLE_PROPERTIES.concat(b.__wrappedMethods || []), function (propName) {\n    if (b.hasOwnProperty(propName)) {\n      a[propName] = b[propName];\n    }\n  });\n  a.__wrappedMethods = b.__wrappedMethods;\n}\n/**\n * @constructor\n * @alias module:echarts/data/List\n *\n * @param {Array.<string|Object>} dimensions\n *      For example, ['someDimName', {name: 'someDimName', type: 'someDimType'}, ...].\n *      Dimensions should be concrete names like x, y, z, lng, lat, angle, radius\n *      Spetial fields: {\n *          ordinalMeta: <module:echarts/data/OrdinalMeta>\n *      }\n * @param {module:echarts/model/Model} hostModel\n */\n\n\nvar List = function (dimensions, hostModel) {\n  dimensions = dimensions || ['x', 'y'];\n  var dimensionInfos = {};\n  var dimensionNames = [];\n\n  for (var i = 0; i < dimensions.length; i++) {\n    var dimensionName;\n    var dimensionInfo = {};\n\n    if (typeof dimensions[i] === 'string') {\n      dimensionName = dimensions[i];\n      dimensionInfo = {\n        name: dimensionName,\n        coordDim: dimensionName,\n        coordDimIndex: 0,\n        stackable: false,\n        // Type can be 'float', 'int', 'number'\n        // Default is float64\n        type: 'float'\n      };\n    } else {\n      dimensionInfo = dimensions[i];\n      dimensionName = dimensionInfo.name;\n      dimensionInfo.type = dimensionInfo.type || 'float';\n\n      if (!dimensionInfo.coordDim) {\n        dimensionInfo.coordDim = dimensionName;\n        dimensionInfo.coordDimIndex = 0;\n      }\n    }\n\n    dimensionInfo.otherDims = dimensionInfo.otherDims || {};\n    dimensionNames.push(dimensionName);\n    dimensionInfos[dimensionName] = dimensionInfo;\n    dimensionInfo.index = i;\n  }\n  /**\n   * @readOnly\n   * @type {Array.<string>}\n   */\n\n\n  this.dimensions = dimensionNames;\n  /**\n   * Infomation of each data dimension, like data type.\n   * @type {Object}\n   */\n\n  this._dimensionInfos = dimensionInfos;\n  /**\n   * @type {module:echarts/model/Model}\n   */\n\n  this.hostModel = hostModel;\n  /**\n   * @type {module:echarts/model/Model}\n   */\n\n  this.dataType;\n  /**\n   * Indices stores the indices of data subset after filtered.\n   * This data subset will be used in chart.\n   * @type {Array.<number>}\n   * @readOnly\n   */\n\n  this._indices = null;\n  this._count = 0;\n  this._rawCount = 0;\n  /**\n   * Data storage\n   * @type {Object.<key, Array.<TypedArray|Array>>}\n   * @private\n   */\n\n  this._storage = {};\n  /**\n   * @type {Array.<string>}\n   */\n\n  this._nameList = [];\n  /**\n   * @type {Array.<string>}\n   */\n\n  this._idList = [];\n  /**\n   * Models of data option is stored sparse for optimizing memory cost\n   * @type {Array.<module:echarts/model/Model>}\n   * @private\n   */\n\n  this._optionModels = [];\n  /**\n   * @param {module:echarts/data/List}\n   */\n\n  this.stackedOn = null;\n  /**\n   * Global visual properties after visual coding\n   * @type {Object}\n   * @private\n   */\n\n  this._visual = {};\n  /**\n   * Globel layout properties.\n   * @type {Object}\n   * @private\n   */\n\n  this._layout = {};\n  /**\n   * Item visual properties after visual coding\n   * @type {Array.<Object>}\n   * @private\n   */\n\n  this._itemVisuals = [];\n  /**\n   * Key: visual type, Value: boolean\n   * @type {Object}\n   * @readOnly\n   */\n\n  this.hasItemVisual = {};\n  /**\n   * Item layout properties after layout\n   * @type {Array.<Object>}\n   * @private\n   */\n\n  this._itemLayouts = [];\n  /**\n   * Graphic elemnents\n   * @type {Array.<module:zrender/Element>}\n   * @private\n   */\n\n  this._graphicEls = [];\n  /**\n   * Max size of each chunk.\n   * @type {number}\n   * @private\n   */\n\n  this._chunkSize = 1e5;\n  /**\n   * @type {number}\n   * @private\n   */\n\n  this._chunkCount = 0;\n  /**\n   * @type {Array.<Array|Object>}\n   * @private\n   */\n\n  this._rawData;\n  /**\n   * Raw extent will not be cloned, but only transfered.\n   * It will not be calculated util needed.\n   * key: dim,\n   * value: {end: number, extent: Array.<number>}\n   * @type {Object}\n   * @private\n   */\n\n  this._rawExtent = {};\n  /**\n   * @type {Object}\n   * @private\n   */\n\n  this._extent = {};\n  /**\n   * key: dim\n   * value: extent\n   * @type {Object}\n   * @private\n   */\n\n  this._approximateExtent = {};\n  /**\n   * Cache summary info for fast visit. See \"dimensionHelper\".\n   * @type {Object}\n   * @private\n   */\n\n  this._dimensionsSummary = summarizeDimensions(this);\n};\n\nvar listProto = List.prototype;\nlistProto.type = 'list';\n/**\n * If each data item has it's own option\n * @type {boolean}\n */\n\nlistProto.hasItemOption = true;\n/**\n * Get dimension name\n * @param {string|number} dim\n *        Dimension can be concrete names like x, y, z, lng, lat, angle, radius\n *        Or a ordinal number. For example getDimensionInfo(0) will return 'x' or 'lng' or 'radius'\n * @return {string} Concrete dim name.\n */\n\nlistProto.getDimension = function (dim) {\n  if (!isNaN(dim)) {\n    dim = this.dimensions[dim] || dim;\n  }\n\n  return dim;\n};\n/**\n * Get type and stackable info of particular dimension\n * @param {string|number} dim\n *        Dimension can be concrete names like x, y, z, lng, lat, angle, radius\n *        Or a ordinal number. For example getDimensionInfo(0) will return 'x' or 'lng' or 'radius'\n */\n\n\nlistProto.getDimensionInfo = function (dim) {\n  // Do not clone, because there may be categories in dimInfo.\n  return this._dimensionInfos[this.getDimension(dim)];\n};\n/**\n * @return {Array.<string>} concrete dimension name list on coord.\n */\n\n\nlistProto.getDimensionsOnCoord = function () {\n  return this._dimensionsSummary.dataDimsOnCoord.slice();\n};\n/**\n * @param {string} coordDim\n * @param {number|Array} [idx=0] A coordDim may map to more than one data dim.\n *        If idx is `true`, return a array of all mapped dims.\n * @return {string|Array.<string>} concrete data dim.\n *        If idx is number, and not found, return null/undefined.\n *        If idx is `true`, and not found, return empty array.\n */\n\n\nlistProto.mapDimension = function (coordDim, idx) {\n  var dims = this._dimensionsSummary.encode[coordDim];\n  return idx === true ? dims && dims.slice() || [] : dims ? dims[idx || 0] : null;\n};\n/**\n * Initialize from data\n * @param {Array.<Object|number|Array>} data source or data or data provider.\n * @param {Array.<string>} [nameLIst] The name of a datum is used on data diff and\n *        defualt label/tooltip.\n *        A name can be specified in encode.itemName,\n *        or dataItem.name (only for series option data),\n *        or provided in nameList from outside.\n * @param {Function} [dimValueGetter] (dataItem, dimName, dataIndex, dimIndex) => number\n */\n\n\nlistProto.initData = function (data, nameList, dimValueGetter) {\n  var notProvider = Source.isInstance(data) || zrUtil.isArrayLike(data);\n\n  if (notProvider) {\n    data = new DefaultDataProvider(data, this.dimensions.length);\n  }\n\n  this._rawData = data; // Clear\n\n  this._storage = {};\n  this._indices = null;\n  this._nameList = nameList || [];\n  this._idList = [];\n  this._nameRepeatCount = {};\n\n  if (!dimValueGetter) {\n    this.hasItemOption = false;\n  }\n  /**\n   * @readOnly\n   */\n\n\n  this.defaultDimValueGetter = defaultDimValueGetters[this._rawData.getSource().sourceFormat]; // Default dim value getter\n\n  this._dimValueGetter = dimValueGetter = dimValueGetter || this.defaultDimValueGetter; // Reset raw extent.\n\n  this._rawExtent = {};\n\n  this._initDataFromProvider(0, data.count()); // If data has no item option.\n\n\n  if (data.pure) {\n    this.hasItemOption = false;\n  }\n};\n\nlistProto.getProvider = function () {\n  return this._rawData;\n};\n\nlistProto.appendData = function (data) {\n  var rawData = this._rawData;\n  var start = this.count();\n  rawData.appendData(data);\n  var end = rawData.count();\n\n  if (!rawData.persistent) {\n    end += start;\n  }\n\n  this._initDataFromProvider(start, end);\n};\n\nlistProto._initDataFromProvider = function (start, end) {\n  // Optimize.\n  if (start >= end) {\n    return;\n  }\n\n  var chunkSize = this._chunkSize;\n  var rawData = this._rawData;\n  var storage = this._storage;\n  var dimensions = this.dimensions;\n  var dimensionInfoMap = this._dimensionInfos;\n  var nameList = this._nameList;\n  var idList = this._idList;\n  var rawExtent = this._rawExtent;\n  var nameRepeatCount = this._nameRepeatCount = {};\n  var nameDimIdx;\n  var chunkCount = this._chunkCount;\n  var lastChunkIndex = chunkCount - 1;\n\n  for (var i = 0; i < dimensions.length; i++) {\n    var dim = dimensions[i];\n\n    if (!rawExtent[dim]) {\n      rawExtent[dim] = [Infinity, -Infinity];\n    }\n\n    var dimInfo = dimensionInfoMap[dim];\n\n    if (dimInfo.otherDims.itemName === 0) {\n      nameDimIdx = this._nameDimIdx = i;\n    }\n\n    if (dimInfo.otherDims.itemId === 0) {\n      this._idDimIdx = i;\n    }\n\n    var DataCtor = dataCtors[dimInfo.type];\n\n    if (!storage[dim]) {\n      storage[dim] = [];\n    }\n\n    var resizeChunkArray = storage[dim][lastChunkIndex];\n\n    if (resizeChunkArray && resizeChunkArray.length < chunkSize) {\n      var newStore = new DataCtor(Math.min(end - lastChunkIndex * chunkSize, chunkSize)); // The cost of the copy is probably inconsiderable\n      // within the initial chunkSize.\n\n      for (var j = 0; j < resizeChunkArray.length; j++) {\n        newStore[j] = resizeChunkArray[j];\n      }\n\n      storage[dim][lastChunkIndex] = newStore;\n    } // Create new chunks.\n\n\n    for (var k = chunkCount * chunkSize; k < end; k += chunkSize) {\n      storage[dim].push(new DataCtor(Math.min(end - k, chunkSize)));\n    }\n\n    this._chunkCount = storage[dim].length;\n  }\n\n  for (var idx = start; idx < end; idx++) {\n    // NOTICE: Try not to write things into dataItem\n    var dataItem = rawData.getItem(idx); // Each data item is value\n    // [1, 2]\n    // 2\n    // Bar chart, line chart which uses category axis\n    // only gives the 'y' value. 'x' value is the indices of category\n    // Use a tempValue to normalize the value to be a (x, y) value\n\n    var chunkIndex = Math.floor(idx / chunkSize);\n    var chunkOffset = idx % chunkSize; // Store the data by dimensions\n\n    for (var k = 0; k < dimensions.length; k++) {\n      var dim = dimensions[k];\n      var dimStorage = storage[dim][chunkIndex]; // PENDING NULL is empty or zero\n\n      var val = this._dimValueGetter(dataItem, dim, idx, k);\n\n      dimStorage[chunkOffset] = val;\n\n      if (val < rawExtent[dim][0]) {\n        rawExtent[dim][0] = val;\n      }\n\n      if (val > rawExtent[dim][1]) {\n        rawExtent[dim][1] = val;\n      }\n    } // ??? FIXME not check by pure but sourceFormat?\n    // TODO refactor these logic.\n\n\n    if (!rawData.pure) {\n      var name = nameList[idx];\n\n      if (dataItem && !name) {\n        if (nameDimIdx != null) {\n          name = this._getNameFromStore(idx);\n        } else if (dataItem.name != null) {\n          // There is no other place to persistent dataItem.name,\n          // so save it to nameList.\n          nameList[idx] = name = dataItem.name;\n        }\n      } // Try using the id in option\n      // id or name is used on dynamical data, mapping old and new items.\n\n\n      var id = dataItem == null ? null : dataItem.id;\n\n      if (id == null && name != null) {\n        // Use name as id and add counter to avoid same name\n        nameRepeatCount[name] = nameRepeatCount[name] || 0;\n        id = name;\n\n        if (nameRepeatCount[name] > 0) {\n          id += '__ec__' + nameRepeatCount[name];\n        }\n\n        nameRepeatCount[name]++;\n      }\n\n      id != null && (idList[idx] = id);\n    }\n  }\n\n  if (!rawData.persistent && rawData.clean) {\n    // Clean unused data if data source is typed array.\n    rawData.clean();\n  }\n\n  this._rawCount = this._count = end; // Reset data extent\n\n  this._extent = {};\n}; // TODO refactor\n\n\nlistProto._getNameFromStore = function (rawIndex) {\n  var nameDimIdx = this._nameDimIdx;\n\n  if (nameDimIdx != null) {\n    var chunkSize = this._chunkSize;\n    var chunkIndex = Math.floor(rawIndex / chunkSize);\n    var chunkOffset = rawIndex % chunkSize;\n    var dim = this.dimensions[nameDimIdx];\n    var ordinalMeta = this._dimensionInfos[dim].ordinalMeta;\n\n    if (ordinalMeta) {\n      return ordinalMeta.categories[rawIndex];\n    } else {\n      var chunk = this._storage[dim][chunkIndex];\n      return chunk && chunk[chunkOffset];\n    }\n  }\n}; // TODO refactor\n\n\nlistProto._getIdFromStore = function (rawIndex) {\n  var idDimIdx = this._idDimIdx;\n\n  if (idDimIdx != null) {\n    var chunkSize = this._chunkSize;\n    var chunkIndex = Math.floor(rawIndex / chunkSize);\n    var chunkOffset = rawIndex % chunkSize;\n    var dim = this.dimensions[idDimIdx];\n    var ordinalMeta = this._dimensionInfos[dim].ordinalMeta;\n\n    if (ordinalMeta) {\n      return ordinalMeta.categories[rawIndex];\n    } else {\n      var chunk = this._storage[dim][chunkIndex];\n      return chunk && chunk[chunkOffset];\n    }\n  }\n};\n/**\n * @return {number}\n */\n\n\nlistProto.count = function () {\n  return this._count;\n};\n\nlistProto.getIndices = function () {\n  if (this._indices) {\n    var Ctor = this._indices.constructor;\n    return new Ctor(this._indices.buffer, 0, this._count);\n  }\n\n  var Ctor = getIndicesCtor(this);\n  var arr = new Ctor(this.count());\n\n  for (var i = 0; i < arr.length; i++) {\n    arr[i] = i;\n  }\n\n  return arr;\n};\n/**\n * Get value. Return NaN if idx is out of range.\n * @param {string} dim Dim must be concrete name.\n * @param {number} idx\n * @param {boolean} stack\n * @return {number}\n */\n\n\nlistProto.get = function (dim, idx, stack) {\n  if (!(idx >= 0 && idx < this._count)) {\n    return NaN;\n  }\n\n  var storage = this._storage;\n\n  if (!storage[dim]) {\n    // TODO Warn ?\n    return NaN;\n  }\n\n  idx = this.getRawIndex(idx);\n  var chunkIndex = Math.floor(idx / this._chunkSize);\n  var chunkOffset = idx % this._chunkSize;\n  var chunkStore = storage[dim][chunkIndex];\n  var value = chunkStore[chunkOffset]; // FIXME ordinal data type is not stackable\n\n  if (stack) {\n    var dimensionInfo = this._dimensionInfos[dim];\n\n    if (dimensionInfo && dimensionInfo.stackable) {\n      var stackedOn = this.stackedOn;\n\n      while (stackedOn) {\n        // Get no stacked data of stacked on\n        var stackedValue = stackedOn.get(dim, idx); // Considering positive stack, negative stack and empty data\n\n        if (value >= 0 && stackedValue > 0 || // Positive stack\n        value <= 0 && stackedValue < 0 // Negative stack\n        ) {\n            value += stackedValue;\n          }\n\n        stackedOn = stackedOn.stackedOn;\n      }\n    }\n  }\n\n  return value;\n}; // FIXME Use `get` on chrome maybe slow(in filterSelf and selectRange).\n// Hack a much simpler _getFast\n\n\nlistProto._getFast = function (dim, rawIdx) {\n  var chunkIndex = Math.floor(rawIdx / this._chunkSize);\n  var chunkOffset = rawIdx % this._chunkSize;\n  var chunkStore = this._storage[dim][chunkIndex];\n  return chunkStore[chunkOffset];\n};\n/**\n * Get value for multi dimensions.\n * @param {Array.<string>} [dimensions] If ignored, using all dimensions.\n * @param {number} idx\n * @param {boolean} stack\n * @return {number}\n */\n\n\nlistProto.getValues = function (dimensions, idx, stack) {\n  var values = [];\n\n  if (!zrUtil.isArray(dimensions)) {\n    stack = idx;\n    idx = dimensions;\n    dimensions = this.dimensions;\n  }\n\n  for (var i = 0, len = dimensions.length; i < len; i++) {\n    values.push(this.get(dimensions[i], idx, stack));\n  }\n\n  return values;\n};\n/**\n * If value is NaN. Inlcuding '-'\n * Only check the coord dimensions.\n * @param {string} dim\n * @param {number} idx\n * @return {number}\n */\n\n\nlistProto.hasValue = function (idx) {\n  var dataDimsOnCoord = this._dimensionsSummary.dataDimsOnCoord;\n  var dimensionInfos = this._dimensionInfos;\n\n  for (var i = 0, len = dataDimsOnCoord.length; i < len; i++) {\n    if ( // Ordinal type can be string or number\n    dimensionInfos[dataDimsOnCoord[i]].type !== 'ordinal' // FIXME check ordinal when using index?\n    && isNaN(this.get(dataDimsOnCoord[i], idx))) {\n      return false;\n    }\n  }\n\n  return true;\n};\n/**\n * Get extent of data in one dimension\n * @param {string} dim\n * @param {boolean} stack\n */\n\n\nlistProto.getDataExtent = function (dim, stack) {\n  // Make sure use concrete dim as cache name.\n  dim = this.getDimension(dim);\n  var dimData = this._storage[dim];\n  var initialExtent = [Infinity, -Infinity];\n  stack = (stack || false) && this.isStacked(dim);\n\n  if (!dimData) {\n    return initialExtent;\n  } // Make more strict checkings to ensure hitting cache.\n\n\n  var currEnd = this.count();\n  var cacheName = [dim, !!stack].join('_'); // Consider the most cases when using data zoom, `getDataExtent`\n  // happened before filtering. We cache raw extent, which is not\n  // necessary to be cleared and recalculated when restore data.\n\n  var useRaw = !this._indices && !stack;\n  var dimExtent;\n\n  if (useRaw) {\n    return this._rawExtent[dim].slice();\n  }\n\n  dimExtent = this._extent[cacheName];\n\n  if (dimExtent) {\n    return dimExtent.slice();\n  }\n\n  dimExtent = initialExtent;\n  var min = dimExtent[0];\n  var max = dimExtent[1];\n\n  for (var i = 0; i < currEnd; i++) {\n    var value = stack ? this.get(dim, i, true) : this._getFast(dim, this.getRawIndex(i));\n    value < min && (min = value);\n    value > max && (max = value);\n  }\n\n  dimExtent = [min, max];\n  this._extent[cacheName] = dimExtent;\n  return dimExtent;\n};\n/**\n * Optimize for the scenario that data is filtered by a given extent.\n * Consider that if data amount is more than hundreds of thousand,\n * extent calculation will cost more than 10ms and the cache will\n * be erased because of the filtering.\n */\n\n\nlistProto.getApproximateExtent = function (dim, stack) {\n  dim = this.getDimension(dim);\n  return this._approximateExtent[dim] || this.getDataExtent(dim, stack);\n};\n\nlistProto.setApproximateExtent = function (extent, dim, stack) {\n  dim = this.getDimension(dim);\n  this._approximateExtent[dim] = extent.slice();\n};\n\nlistProto.isStacked = function (concreteDim) {\n  var dimensionInfo = this._dimensionInfos[concreteDim];\n  return dimensionInfo && dimensionInfo.stackable && this.stackedOn;\n};\n/**\n * Get sum of data in one dimension\n * @param {string} dim\n * @param {boolean} stack\n */\n\n\nlistProto.getSum = function (dim, stack) {\n  var dimData = this._storage[dim];\n  var sum = 0;\n\n  if (dimData) {\n    for (var i = 0, len = this.count(); i < len; i++) {\n      var value = this.get(dim, i, stack);\n\n      if (!isNaN(value)) {\n        sum += value;\n      }\n    }\n  }\n\n  return sum;\n};\n/**\n * Retreive the index with given value\n * @param {number} idx\n * @param {number} value\n * @return {number}\n */\n// FIXME Precision of float value\n\n\nlistProto.indexOf = function (dim, value) {\n  var storage = this._storage;\n  var dimData = storage[dim];\n  var chunkSize = this._chunkSize;\n\n  if (dimData) {\n    for (var i = 0, len = this.count(); i < len; i++) {\n      var chunkIndex = Math.floor(i / chunkSize);\n      var chunkOffset = i % chunkSize;\n\n      if (dimData[chunkIndex][chunkOffset] === value) {\n        return i;\n      }\n    }\n  }\n\n  return -1;\n};\n/**\n * Retreive the index with given name\n * @param {number} idx\n * @param {number} name\n * @return {number}\n */\n\n\nlistProto.indexOfName = function (name) {\n  for (var i = 0, len = this.count(); i < len; i++) {\n    if (this.getName(i) === name) {\n      return i;\n    }\n  }\n\n  return -1;\n};\n/**\n * Retreive the index with given raw data index\n * @param {number} idx\n * @param {number} name\n * @return {number}\n */\n\n\nlistProto.indexOfRawIndex = function (rawIndex) {\n  if (!this._indices) {\n    return rawIndex;\n  }\n\n  if (rawIndex >= this._rawCount || rawIndex < 0) {\n    return -1;\n  } // Indices are ascending\n\n\n  var indices = this._indices; // If rawIndex === dataIndex\n\n  var rawDataIndex = indices[rawIndex];\n\n  if (rawDataIndex != null && rawDataIndex < this._count && rawDataIndex === rawIndex) {\n    return rawIndex;\n  }\n\n  var left = 0;\n  var right = this._count - 1;\n\n  while (left <= right) {\n    var mid = (left + right) / 2 | 0;\n\n    if (indices[mid] < rawIndex) {\n      left = mid + 1;\n    } else if (indices[mid] > rawIndex) {\n      right = mid - 1;\n    } else {\n      return mid;\n    }\n  }\n\n  return -1;\n};\n/**\n * Retreive the index of nearest value\n * @param {string} dim\n * @param {number} value\n * @param {boolean} stack If given value is after stacked\n * @param {number} [maxDistance=Infinity]\n * @return {Array.<number>} Considere multiple points has the same value.\n */\n\n\nlistProto.indicesOfNearest = function (dim, value, stack, maxDistance) {\n  var storage = this._storage;\n  var dimData = storage[dim];\n  var nearestIndices = [];\n\n  if (!dimData) {\n    return nearestIndices;\n  }\n\n  if (maxDistance == null) {\n    maxDistance = Infinity;\n  }\n\n  var minDist = Number.MAX_VALUE;\n  var minDiff = -1;\n\n  for (var i = 0, len = this.count(); i < len; i++) {\n    var diff = value - this.get(dim, i, stack);\n    var dist = Math.abs(diff);\n\n    if (diff <= maxDistance && dist <= minDist) {\n      // For the case of two data are same on xAxis, which has sequence data.\n      // Show the nearest index\n      // https://github.com/ecomfe/echarts/issues/2869\n      if (dist < minDist || diff >= 0 && minDiff < 0) {\n        minDist = dist;\n        minDiff = diff;\n        nearestIndices.length = 0;\n      }\n\n      nearestIndices.push(i);\n    }\n  }\n\n  return nearestIndices;\n};\n/**\n * Get raw data index\n * @param {number} idx\n * @return {number}\n */\n\n\nlistProto.getRawIndex = getRawIndexWithoutIndices;\n\nfunction getRawIndexWithoutIndices(idx) {\n  return idx;\n}\n\nfunction getRawIndexWithIndices(idx) {\n  if (idx < this._count && idx >= 0) {\n    return this._indices[idx];\n  }\n\n  return -1;\n}\n/**\n * Get raw data item\n * @param {number} idx\n * @return {number}\n */\n\n\nlistProto.getRawDataItem = function (idx) {\n  if (!this._rawData.persistent) {\n    var val = [];\n\n    for (var i = 0; i < this.dimensions.length; i++) {\n      var dim = this.dimensions[i];\n      val.push(this.get(dim, idx));\n    }\n\n    return val;\n  } else {\n    return this._rawData.getItem(this.getRawIndex(idx));\n  }\n};\n/**\n * @param {number} idx\n * @param {boolean} [notDefaultIdx=false]\n * @return {string}\n */\n\n\nlistProto.getName = function (idx) {\n  var rawIndex = this.getRawIndex(idx);\n  return this._nameList[rawIndex] || this._getNameFromStore(rawIndex) || '';\n};\n/**\n * @param {number} idx\n * @param {boolean} [notDefaultIdx=false]\n * @return {string}\n */\n\n\nlistProto.getId = function (idx) {\n  return getId(this, this.getRawIndex(idx));\n};\n\nfunction getId(list, rawIndex) {\n  var id = list._idList[rawIndex];\n\n  if (id == null) {\n    id = list._getIdFromStore(rawIndex);\n  }\n\n  if (id == null) {\n    // FIXME Check the usage in graph, should not use prefix.\n    id = ID_PREFIX + rawIndex;\n  }\n\n  return id;\n}\n\nfunction normalizeDimensions(dimensions) {\n  if (!zrUtil.isArray(dimensions)) {\n    dimensions = [dimensions];\n  }\n\n  return dimensions;\n}\n\nfunction validateDimensions(list, dims) {\n  for (var i = 0; i < dims.length; i++) {\n    // stroage may be empty when no data, so use\n    // dimensionInfos to check.\n    if (!list._dimensionInfos[dims[i]]) {\n      console.error('Unkown dimension ' + dims[i]);\n    }\n  }\n}\n/**\n * Data iteration\n * @param {string|Array.<string>}\n * @param {Function} cb\n * @param {boolean} [stack=false]\n * @param {*} [context=this]\n *\n * @example\n *  list.each('x', function (x, idx) {});\n *  list.each(['x', 'y'], function (x, y, idx) {});\n *  list.each(function (idx) {})\n */\n\n\nlistProto.each = function (dims, cb, stack, context) {\n  'use strict';\n\n  if (!this._count) {\n    return;\n  }\n\n  if (typeof dims === 'function') {\n    context = stack;\n    stack = cb;\n    cb = dims;\n    dims = [];\n  }\n\n  dims = zrUtil.map(normalizeDimensions(dims), this.getDimension, this);\n  var dimSize = dims.length;\n  context = context || this;\n\n  for (var i = 0; i < this.count(); i++) {\n    // Simple optimization\n    switch (dimSize) {\n      case 0:\n        cb.call(context, i);\n        break;\n\n      case 1:\n        cb.call(context, this.get(dims[0], i, stack), i);\n        break;\n\n      case 2:\n        cb.call(context, this.get(dims[0], i, stack), this.get(dims[1], i, stack), i);\n        break;\n\n      default:\n        var k = 0;\n        var value = [];\n\n        for (; k < dimSize; k++) {\n          value[k] = this.get(dims[k], i, stack);\n        } // Index\n\n\n        value[k] = i;\n        cb.apply(context, value);\n    }\n  }\n};\n/**\n * Data filter\n * @param {string|Array.<string>}\n * @param {Function} cb\n * @param {boolean} [stack=false]\n * @param {*} [context=this]\n */\n\n\nlistProto.filterSelf = function (dimensions, cb, stack, context) {\n  'use strict';\n\n  if (!this._count) {\n    return;\n  }\n\n  if (typeof dimensions === 'function') {\n    context = stack;\n    stack = cb;\n    cb = dimensions;\n    dimensions = [];\n  }\n\n  stack = stack || false;\n  context = context || this;\n  dimensions = zrUtil.map(normalizeDimensions(dimensions), this.getDimension, this);\n  var count = this.count();\n  var Ctor = getIndicesCtor(this);\n  var newIndices = new Ctor(count);\n  var value = [];\n  var dimSize = dimensions.length;\n  var offset = 0;\n  var dim0 = dimensions[0];\n\n  for (var i = 0; i < count; i++) {\n    var keep;\n    var rawIdx = this.getRawIndex(i); // Simple optimization\n\n    if (dimSize === 0) {\n      keep = cb.call(context, i);\n    } else if (dimSize === 1) {\n      var val = stack ? this.get(dim0, i, true) : this._getFast(dim0, rawIdx);\n      keep = cb.call(context, val, i);\n    } else {\n      for (var k = 0; k < dimSize; k++) {\n        value[k] = stack ? this.get(dimensions[k], i, true) : this._getFast(dim0, rawIdx);\n      }\n\n      value[k] = i;\n      keep = cb.apply(context, value);\n    }\n\n    if (keep) {\n      newIndices[offset++] = rawIdx;\n    }\n  } // Set indices after filtered.\n\n\n  if (offset < count) {\n    this._indices = newIndices;\n  }\n\n  this._count = offset; // Reset data extent\n\n  this._extent = {};\n  this.getRawIndex = this._indices ? getRawIndexWithIndices : getRawIndexWithoutIndices;\n  return this;\n};\n/**\n * Select data in range. (For optimization of filter)\n * (Manually inline code, support 5 million data filtering in data zoom.)\n */\n\n\nlistProto.selectRange = function (range, stack) {\n  'use strict';\n\n  if (!this._count) {\n    return;\n  }\n\n  stack = stack || false;\n  var dimensions = [];\n\n  for (var dim in range) {\n    if (range.hasOwnProperty(dim)) {\n      dimensions.push(dim);\n    }\n  }\n\n  var dimSize = dimensions.length;\n\n  if (!dimSize) {\n    return;\n  }\n\n  var originalCount = this.count();\n  var Ctor = getIndicesCtor(this);\n  var newIndices = new Ctor(originalCount);\n  var offset = 0;\n  var dim0 = dimensions[0];\n  var min = range[dim0][0];\n  var max = range[dim0][1];\n  var quickFinished = false;\n\n  if (!this._indices && !stack) {\n    // Extreme optimization for common case. About 2x faster in chrome.\n    var idx = 0;\n\n    if (dimSize === 1) {\n      var dimStorage = this._storage[dimensions[0]];\n\n      for (var k = 0; k < this._chunkCount; k++) {\n        var chunkStorage = dimStorage[k];\n        var len = Math.min(this._count - k * this._chunkSize, this._chunkSize);\n\n        for (var i = 0; i < len; i++) {\n          var val = chunkStorage[i];\n\n          if (val >= min && val <= max) {\n            newIndices[offset++] = idx;\n          }\n\n          idx++;\n        }\n      }\n\n      quickFinished = true;\n    } else if (dimSize === 2) {\n      var dimStorage = this._storage[dim0];\n      var dimStorage2 = this._storage[dimensions[1]];\n      var min2 = range[dimensions[1]][0];\n      var max2 = range[dimensions[1]][1];\n\n      for (var k = 0; k < this._chunkCount; k++) {\n        var chunkStorage = dimStorage[k];\n        var chunkStorage2 = dimStorage2[k];\n        var len = Math.min(this._count - k * this._chunkSize, this._chunkSize);\n\n        for (var i = 0; i < len; i++) {\n          var val = chunkStorage[i];\n          var val2 = chunkStorage2[i];\n\n          if (val >= min && val <= max && val2 >= min2 && val2 <= max2) {\n            newIndices[offset++] = idx;\n          }\n\n          idx++;\n        }\n      }\n\n      quickFinished = true;\n    }\n  }\n\n  if (!quickFinished) {\n    if (dimSize === 1) {\n      stack = stack || this.isStacked(dim0);\n\n      for (var i = 0; i < originalCount; i++) {\n        var rawIndex = this.getRawIndex(i);\n        var val = stack ? this.get(dim0, i, true) : this._getFast(dim0, rawIndex);\n\n        if (val >= min && val <= max) {\n          newIndices[offset++] = rawIndex;\n        }\n      }\n    } else {\n      for (var i = 0; i < originalCount; i++) {\n        var keep = true;\n        var rawIndex = this.getRawIndex(i);\n\n        for (var k = 0; k < dimSize; k++) {\n          var dimk = dimensions[k];\n          var val = stack ? this.get(dimk, i, true) : this._getFast(dim, rawIndex);\n\n          if (val < range[dimk][0] || val > range[dimk][1]) {\n            keep = false;\n          }\n        }\n\n        if (keep) {\n          newIndices[offset++] = this.getRawIndex(i);\n        }\n      }\n    }\n  } // Set indices after filtered.\n\n\n  if (offset < originalCount) {\n    this._indices = newIndices;\n  }\n\n  this._count = offset; // Reset data extent\n\n  this._extent = {};\n  this.getRawIndex = this._indices ? getRawIndexWithIndices : getRawIndexWithoutIndices;\n  return this;\n};\n/**\n * Data mapping to a plain array\n * @param {string|Array.<string>} [dimensions]\n * @param {Function} cb\n * @param {boolean} [stack=false]\n * @param {*} [context=this]\n * @return {Array}\n */\n\n\nlistProto.mapArray = function (dimensions, cb, stack, context) {\n  'use strict';\n\n  if (typeof dimensions === 'function') {\n    context = stack;\n    stack = cb;\n    cb = dimensions;\n    dimensions = [];\n  }\n\n  var result = [];\n  this.each(dimensions, function () {\n    result.push(cb && cb.apply(this, arguments));\n  }, stack, context);\n  return result;\n}; // Data in excludeDimensions is copied, otherwise transfered.\n\n\nfunction cloneListForMapAndSample(original, excludeDimensions) {\n  var allDimensions = original.dimensions;\n  var list = new List(zrUtil.map(allDimensions, original.getDimensionInfo, original), original.hostModel); // FIXME If needs stackedOn, value may already been stacked\n\n  transferProperties(list, original);\n  var storage = list._storage = {};\n  var originalStorage = original._storage; // Init storage\n\n  for (var i = 0; i < allDimensions.length; i++) {\n    var dim = allDimensions[i];\n\n    if (originalStorage[dim]) {\n      storage[dim] = zrUtil.indexOf(excludeDimensions, dim) >= 0 ? cloneDimStore(originalStorage[dim]) // Direct reference for other dimensions\n      : originalStorage[dim];\n    }\n  }\n\n  return list;\n}\n\nfunction cloneDimStore(originalDimStore) {\n  var newDimStore = new Array(originalDimStore.length);\n\n  for (var j = 0; j < originalDimStore.length; j++) {\n    newDimStore[j] = cloneChunk(originalDimStore[j]);\n  }\n\n  return newDimStore;\n}\n/**\n * Data mapping to a new List with given dimensions\n * @param {string|Array.<string>} dimensions\n * @param {Function} cb\n * @param {boolean} [stack=false]\n * @param {*} [context=this]\n * @return {Array}\n */\n\n\nlistProto.map = function (dimensions, cb, stack, context) {\n  'use strict';\n\n  dimensions = zrUtil.map(normalizeDimensions(dimensions), this.getDimension, this);\n  var list = cloneListForMapAndSample(this, dimensions); // Following properties are all immutable.\n  // So we can reference to the same value\n\n  list._indices = this._indices;\n  list.getRawIndex = list._indices ? getRawIndexWithIndices : getRawIndexWithoutIndices;\n  var storage = list._storage;\n  var tmpRetValue = [];\n  var chunkSize = this._chunkSize;\n  var dimSize = dimensions.length;\n  var dataCount = this.count();\n  var values = [];\n\n  for (var dataIndex = 0; dataIndex < dataCount; dataIndex++) {\n    for (var dimIndex = 0; dimIndex < dimSize; dimIndex++) {\n      values[dimIndex] = this.get(dimensions[dimIndex], dataIndex, stack);\n    }\n\n    values[dimSize] = dataIndex;\n    var retValue = cb && cb.apply(context, values);\n\n    if (retValue != null) {\n      // a number or string (in oridinal dimension)?\n      if (typeof retValue !== 'object') {\n        tmpRetValue[0] = retValue;\n        retValue = tmpRetValue;\n      }\n\n      var rawIndex = this.getRawIndex(dataIndex);\n      var chunkIndex = Math.floor(rawIndex / chunkSize);\n      var chunkOffset = rawIndex % chunkSize;\n\n      for (var i = 0; i < retValue.length; i++) {\n        var dim = dimensions[i];\n        var dimStore = storage[dim];\n\n        if (dimStore) {\n          dimStore[chunkIndex][chunkOffset] = retValue[i];\n        }\n      }\n    }\n  }\n\n  return list;\n};\n/**\n * Large data down sampling on given dimension\n * @param {string} dimension\n * @param {number} rate\n * @param {Function} sampleValue\n * @param {Function} sampleIndex Sample index for name and id\n */\n\n\nlistProto.downSample = function (dimension, rate, sampleValue, sampleIndex) {\n  var list = cloneListForMapAndSample(this, [dimension]);\n  var targetStorage = list._storage;\n  var frameValues = [];\n  var frameSize = Math.floor(1 / rate);\n  var dimStore = targetStorage[dimension];\n  var len = this.count();\n  var chunkSize = this._chunkSize;\n  var newIndices = new (getIndicesCtor(this))(len);\n  var offset = 0;\n\n  for (var i = 0; i < len; i += frameSize) {\n    // Last frame\n    if (frameSize > len - i) {\n      frameSize = len - i;\n      frameValues.length = frameSize;\n    }\n\n    for (var k = 0; k < frameSize; k++) {\n      var dataIdx = this.getRawIndex(i + k);\n      var originalChunkIndex = Math.floor(dataIdx / chunkSize);\n      var originalChunkOffset = dataIdx % chunkSize;\n      frameValues[k] = dimStore[originalChunkIndex][originalChunkOffset];\n    }\n\n    var value = sampleValue(frameValues);\n    var sampleFrameIdx = this.getRawIndex(Math.min(i + sampleIndex(frameValues, value) || 0, len - 1));\n    var sampleChunkIndex = Math.floor(sampleFrameIdx / chunkSize);\n    var sampleChunkOffset = sampleFrameIdx % chunkSize; // Only write value on the filtered data\n\n    dimStore[sampleChunkIndex][sampleChunkOffset] = value;\n    newIndices[offset++] = sampleFrameIdx;\n  }\n\n  list._count = offset;\n  list._indices = newIndices;\n  list.getRawIndex = getRawIndexWithIndices;\n  return list;\n};\n/**\n * Get model of one data item.\n *\n * @param {number} idx\n */\n// FIXME Model proxy ?\n\n\nlistProto.getItemModel = function (idx) {\n  var hostModel = this.hostModel;\n  return new Model(this.getRawDataItem(idx), hostModel, hostModel && hostModel.ecModel);\n};\n/**\n * Create a data differ\n * @param {module:echarts/data/List} otherList\n * @return {module:echarts/data/DataDiffer}\n */\n\n\nlistProto.diff = function (otherList) {\n  var thisList = this;\n  return new DataDiffer(otherList ? otherList.getIndices() : [], this.getIndices(), function (idx) {\n    return getId(otherList, idx);\n  }, function (idx) {\n    return getId(thisList, idx);\n  });\n};\n/**\n * Get visual property.\n * @param {string} key\n */\n\n\nlistProto.getVisual = function (key) {\n  var visual = this._visual;\n  return visual && visual[key];\n};\n/**\n * Set visual property\n * @param {string|Object} key\n * @param {*} [value]\n *\n * @example\n *  setVisual('color', color);\n *  setVisual({\n *      'color': color\n *  });\n */\n\n\nlistProto.setVisual = function (key, val) {\n  if (isObject(key)) {\n    for (var name in key) {\n      if (key.hasOwnProperty(name)) {\n        this.setVisual(name, key[name]);\n      }\n    }\n\n    return;\n  }\n\n  this._visual = this._visual || {};\n  this._visual[key] = val;\n};\n/**\n * Set layout property.\n * @param {string|Object} key\n * @param {*} [val]\n */\n\n\nlistProto.setLayout = function (key, val) {\n  if (isObject(key)) {\n    for (var name in key) {\n      if (key.hasOwnProperty(name)) {\n        this.setLayout(name, key[name]);\n      }\n    }\n\n    return;\n  }\n\n  this._layout[key] = val;\n};\n/**\n * Get layout property.\n * @param  {string} key.\n * @return {*}\n */\n\n\nlistProto.getLayout = function (key) {\n  return this._layout[key];\n};\n/**\n * Get layout of single data item\n * @param {number} idx\n */\n\n\nlistProto.getItemLayout = function (idx) {\n  return this._itemLayouts[idx];\n};\n/**\n * Set layout of single data item\n * @param {number} idx\n * @param {Object} layout\n * @param {boolean=} [merge=false]\n */\n\n\nlistProto.setItemLayout = function (idx, layout, merge) {\n  this._itemLayouts[idx] = merge ? zrUtil.extend(this._itemLayouts[idx] || {}, layout) : layout;\n};\n/**\n * Clear all layout of single data item\n */\n\n\nlistProto.clearItemLayouts = function () {\n  this._itemLayouts.length = 0;\n};\n/**\n * Get visual property of single data item\n * @param {number} idx\n * @param {string} key\n * @param {boolean} [ignoreParent=false]\n */\n\n\nlistProto.getItemVisual = function (idx, key, ignoreParent) {\n  var itemVisual = this._itemVisuals[idx];\n  var val = itemVisual && itemVisual[key];\n\n  if (val == null && !ignoreParent) {\n    // Use global visual property\n    return this.getVisual(key);\n  }\n\n  return val;\n};\n/**\n * Set visual property of single data item\n *\n * @param {number} idx\n * @param {string|Object} key\n * @param {*} [value]\n *\n * @example\n *  setItemVisual(0, 'color', color);\n *  setItemVisual(0, {\n *      'color': color\n *  });\n */\n\n\nlistProto.setItemVisual = function (idx, key, value) {\n  var itemVisual = this._itemVisuals[idx] || {};\n  var hasItemVisual = this.hasItemVisual;\n  this._itemVisuals[idx] = itemVisual;\n\n  if (isObject(key)) {\n    for (var name in key) {\n      if (key.hasOwnProperty(name)) {\n        itemVisual[name] = key[name];\n        hasItemVisual[name] = true;\n      }\n    }\n\n    return;\n  }\n\n  itemVisual[key] = value;\n  hasItemVisual[key] = true;\n};\n/**\n * Clear itemVisuals and list visual.\n */\n\n\nlistProto.clearAllVisual = function () {\n  this._visual = {};\n  this._itemVisuals = [];\n  this.hasItemVisual = {};\n};\n\nvar setItemDataAndSeriesIndex = function (child) {\n  child.seriesIndex = this.seriesIndex;\n  child.dataIndex = this.dataIndex;\n  child.dataType = this.dataType;\n};\n/**\n * Set graphic element relative to data. It can be set as null\n * @param {number} idx\n * @param {module:zrender/Element} [el]\n */\n\n\nlistProto.setItemGraphicEl = function (idx, el) {\n  var hostModel = this.hostModel;\n\n  if (el) {\n    // Add data index and series index for indexing the data by element\n    // Useful in tooltip\n    el.dataIndex = idx;\n    el.dataType = this.dataType;\n    el.seriesIndex = hostModel && hostModel.seriesIndex;\n\n    if (el.type === 'group') {\n      el.traverse(setItemDataAndSeriesIndex, el);\n    }\n  }\n\n  this._graphicEls[idx] = el;\n};\n/**\n * @param {number} idx\n * @return {module:zrender/Element}\n */\n\n\nlistProto.getItemGraphicEl = function (idx) {\n  return this._graphicEls[idx];\n};\n/**\n * @param {Function} cb\n * @param {*} context\n */\n\n\nlistProto.eachItemGraphicEl = function (cb, context) {\n  zrUtil.each(this._graphicEls, function (el, idx) {\n    if (el) {\n      cb && cb.call(context, el, idx);\n    }\n  });\n};\n/**\n * Shallow clone a new list except visual and layout properties, and graph elements.\n * New list only change the indices.\n */\n\n\nlistProto.cloneShallow = function (list) {\n  if (!list) {\n    var dimensionInfoList = zrUtil.map(this.dimensions, this.getDimensionInfo, this);\n    list = new List(dimensionInfoList, this.hostModel);\n  } // FIXME\n\n\n  list._storage = this._storage;\n  transferProperties(list, this); // Clone will not change the data extent and indices\n\n  if (this._indices) {\n    var Ctor = this._indices.constructor;\n    list._indices = new Ctor(this._indices);\n  } else {\n    list._indices = null;\n  }\n\n  list.getRawIndex = list._indices ? getRawIndexWithIndices : getRawIndexWithoutIndices;\n  list._extent = zrUtil.clone(this._extent);\n  list._approximateExtent = zrUtil.clone(this._approximateExtent);\n  return list;\n};\n/**\n * Wrap some method to add more feature\n * @param {string} methodName\n * @param {Function} injectFunction\n */\n\n\nlistProto.wrapMethod = function (methodName, injectFunction) {\n  var originalMethod = this[methodName];\n\n  if (typeof originalMethod !== 'function') {\n    return;\n  }\n\n  this.__wrappedMethods = this.__wrappedMethods || [];\n\n  this.__wrappedMethods.push(methodName);\n\n  this[methodName] = function () {\n    var res = originalMethod.apply(this, arguments);\n    return injectFunction.apply(this, [res].concat(zrUtil.slice(arguments)));\n  };\n}; // Methods that create a new list based on this list should be listed here.\n// Notice that those method should `RETURN` the new list.\n\n\nlistProto.TRANSFERABLE_METHODS = ['cloneShallow', 'downSample', 'map']; // Methods that change indices of this list should be listed here.\n\nlistProto.CHANGABLE_METHODS = ['filterSelf', 'selectRange'];\nvar _default = List;\nmodule.exports = _default;","var _util = require(\"zrender/lib/core/util\");\n\nvar createHashMap = _util.createHashMap;\nvar isObject = _util.isObject;\nvar map = _util.map;\n\n/**\n * @constructor\n * @param {Object} [opt]\n * @param {Object} [opt.categories=[]]\n * @param {Object} [opt.needCollect=false]\n * @param {Object} [opt.deduplication=false]\n */\nfunction OrdinalMeta(opt) {\n  /**\n   * @readOnly\n   * @type {Array.<string>}\n   */\n  this.categories = opt.categories || [];\n  /**\n   * @private\n   * @type {boolean}\n   */\n\n  this._needCollect = opt.needCollect;\n  /**\n   * @private\n   * @type {boolean}\n   */\n\n  this._deduplication = opt.deduplication;\n  /**\n   * @private\n   * @type {boolean}\n   */\n\n  this._map;\n}\n/**\n * @param {module:echarts/model/Model} axisModel\n * @return {module:echarts/data/OrdinalMeta}\n */\n\n\nOrdinalMeta.createByAxisModel = function (axisModel) {\n  var option = axisModel.option;\n  var data = option.data;\n  var categories = data && map(data, getName);\n  return new OrdinalMeta({\n    categories: categories,\n    needCollect: !categories,\n    // deduplication is default in axis.\n    deduplication: option.dedplication !== false\n  });\n};\n\nvar proto = OrdinalMeta.prototype;\n/**\n * @param {string} category\n * @return {number} ordinal\n */\n\nproto.getOrdinal = function (category) {\n  return getOrCreateMap(this).get(category);\n};\n/**\n * @param {*} category\n * @return {number} The ordinal. If not found, return NaN.\n */\n\n\nproto.parseAndCollect = function (category) {\n  var index;\n  var needCollect = this._needCollect; // The value of category dim can be the index of the given category set.\n  // This feature is only supported when !needCollect, because we should\n  // consider a common case: a value is 2017, which is a number but is\n  // expected to be tread as a category. This case usually happen in dataset,\n  // where it happent to be no need of the index feature.\n\n  if (typeof category !== 'string' && !needCollect) {\n    return category;\n  } // Optimize for the scenario:\n  // category is ['2012-01-01', '2012-01-02', ...], where the input\n  // data has been ensured not duplicate and is large data.\n  // Notice, if a dataset dimension provide categroies, usually echarts\n  // should remove duplication except user tell echarts dont do that\n  // (set axis.deduplication = false), because echarts do not know whether\n  // the values in the category dimension has duplication (consider the\n  // parallel-aqi example)\n\n\n  if (needCollect && !this._deduplication) {\n    index = this.categories.length;\n    this.categories[index] = category;\n    return index;\n  }\n\n  var map = getOrCreateMap(this);\n  index = map.get(category);\n\n  if (index == null) {\n    if (needCollect) {\n      index = this.categories.length;\n      this.categories[index] = category;\n      map.set(category, index);\n    } else {\n      index = NaN;\n    }\n  }\n\n  return index;\n}; // Consider big data, do not create map until needed.\n\n\nfunction getOrCreateMap(ordinalMeta) {\n  return ordinalMeta._map || (ordinalMeta._map = createHashMap(ordinalMeta.categories));\n}\n\nfunction getName(obj) {\n  if (isObject(obj) && obj.value != null) {\n    return obj.value;\n  } else {\n    return obj + '';\n  }\n}\n\nvar _default = OrdinalMeta;\nmodule.exports = _default;","var _util = require(\"zrender/lib/core/util\");\n\nvar createHashMap = _util.createHashMap;\nvar isTypedArray = _util.isTypedArray;\n\nvar _clazz = require(\"../util/clazz\");\n\nvar enableClassCheck = _clazz.enableClassCheck;\n\nvar _sourceType = require(\"./helper/sourceType\");\n\nvar SOURCE_FORMAT_ORIGINAL = _sourceType.SOURCE_FORMAT_ORIGINAL;\nvar SERIES_LAYOUT_BY_COLUMN = _sourceType.SERIES_LAYOUT_BY_COLUMN;\nvar SOURCE_FORMAT_UNKNOWN = _sourceType.SOURCE_FORMAT_UNKNOWN;\nvar SOURCE_FORMAT_TYPED_ARRAY = _sourceType.SOURCE_FORMAT_TYPED_ARRAY;\nvar SOURCE_FORMAT_KEYED_COLUMNS = _sourceType.SOURCE_FORMAT_KEYED_COLUMNS;\n\n/**\n * [sourceFormat]\n *\n * + \"original\":\n * This format is only used in series.data, where\n * itemStyle can be specified in data item.\n *\n * + \"arrayRows\":\n * [\n *     ['product', 'score', 'amount'],\n *     ['Matcha Latte', 89.3, 95.8],\n *     ['Milk Tea', 92.1, 89.4],\n *     ['Cheese Cocoa', 94.4, 91.2],\n *     ['Walnut Brownie', 85.4, 76.9]\n * ]\n *\n * + \"objectRows\":\n * [\n *     {product: 'Matcha Latte', score: 89.3, amount: 95.8},\n *     {product: 'Milk Tea', score: 92.1, amount: 89.4},\n *     {product: 'Cheese Cocoa', score: 94.4, amount: 91.2},\n *     {product: 'Walnut Brownie', score: 85.4, amount: 76.9}\n * ]\n *\n * + \"keyedColumns\":\n * {\n *     'product': ['Matcha Latte', 'Milk Tea', 'Cheese Cocoa', 'Walnut Brownie'],\n *     'count': [823, 235, 1042, 988],\n *     'score': [95.8, 81.4, 91.2, 76.9]\n * }\n *\n * + \"typedArray\"\n *\n * + \"unknown\"\n */\n\n/**\n * @constructor\n * @param {Object} fields\n * @param {string} fields.sourceFormat\n * @param {Array|Object} fields.fromDataset\n * @param {Array|Object} [fields.data]\n * @param {string} [seriesLayoutBy='column']\n * @param {Array.<Object|string>} [dimensionsDefine]\n * @param {Objet|HashMap} [encodeDefine]\n * @param {number} [startIndex=0]\n * @param {number} [dimensionsDetectCount]\n */\nfunction Source(fields) {\n  /**\n   * @type {boolean}\n   */\n  this.fromDataset = fields.fromDataset;\n  /**\n   * Not null/undefined.\n   * @type {Array|Object}\n   */\n\n  this.data = fields.data || (fields.sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS ? {} : []);\n  /**\n   * See also \"detectSourceFormat\".\n   * Not null/undefined.\n   * @type {string}\n   */\n\n  this.sourceFormat = fields.sourceFormat || SOURCE_FORMAT_UNKNOWN;\n  /**\n   * 'row' or 'column'\n   * Not null/undefined.\n   * @type {string} seriesLayoutBy\n   */\n\n  this.seriesLayoutBy = fields.seriesLayoutBy || SERIES_LAYOUT_BY_COLUMN;\n  /**\n   * dimensions definition in option.\n   * can be null/undefined.\n   * @type {Array.<Object|string>}\n   */\n\n  this.dimensionsDefine = fields.dimensionsDefine;\n  /**\n   * encode definition in option.\n   * can be null/undefined.\n   * @type {Objet|HashMap}\n   */\n\n  this.encodeDefine = fields.encodeDefine && createHashMap(fields.encodeDefine);\n  /**\n   * Not null/undefined, uint.\n   * @type {number}\n   */\n\n  this.startIndex = fields.startIndex || 0;\n  /**\n   * Can be null/undefined (when unknown), uint.\n   * @type {number}\n   */\n\n  this.dimensionsDetectCount = fields.dimensionsDetectCount;\n}\n/**\n * Wrap original series data for some compatibility cases.\n */\n\n\nSource.seriesDataToSource = function (data) {\n  return new Source({\n    data: data,\n    sourceFormat: isTypedArray(data) ? SOURCE_FORMAT_TYPED_ARRAY : SOURCE_FORMAT_ORIGINAL,\n    fromDataset: false\n  });\n};\n\nenableClassCheck(Source);\nvar _default = Source;\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar Model = require(\"../model/Model\");\n\nvar linkList = require(\"./helper/linkList\");\n\nvar List = require(\"./List\");\n\nvar createDimensions = require(\"./helper/createDimensions\");\n\n/**\n * Tree data structure\n *\n * @module echarts/data/Tree\n */\n\n/**\n * @constructor module:echarts/data/Tree~TreeNode\n * @param {string} name\n * @param {module:echarts/data/Tree} hostTree\n */\nvar TreeNode = function (name, hostTree) {\n  /**\n   * @type {string}\n   */\n  this.name = name || '';\n  /**\n   * Depth of node\n   *\n   * @type {number}\n   * @readOnly\n   */\n\n  this.depth = 0;\n  /**\n   * Height of the subtree rooted at this node.\n   * @type {number}\n   * @readOnly\n   */\n\n  this.height = 0;\n  /**\n   * @type {module:echarts/data/Tree~TreeNode}\n   * @readOnly\n   */\n\n  this.parentNode = null;\n  /**\n   * Reference to list item.\n   * Do not persistent dataIndex outside,\n   * besause it may be changed by list.\n   * If dataIndex -1,\n   * this node is logical deleted (filtered) in list.\n   *\n   * @type {Object}\n   * @readOnly\n   */\n\n  this.dataIndex = -1;\n  /**\n   * @type {Array.<module:echarts/data/Tree~TreeNode>}\n   * @readOnly\n   */\n\n  this.children = [];\n  /**\n   * @type {Array.<module:echarts/data/Tree~TreeNode>}\n   * @pubilc\n   */\n\n  this.viewChildren = [];\n  /**\n   * @type {moduel:echarts/data/Tree}\n   * @readOnly\n   */\n\n  this.hostTree = hostTree;\n};\n\nTreeNode.prototype = {\n  constructor: TreeNode,\n\n  /**\n   * The node is removed.\n   * @return {boolean} is removed.\n   */\n  isRemoved: function () {\n    return this.dataIndex < 0;\n  },\n\n  /**\n   * Travel this subtree (include this node).\n   * Usage:\n   *    node.eachNode(function () { ... }); // preorder\n   *    node.eachNode('preorder', function () { ... }); // preorder\n   *    node.eachNode('postorder', function () { ... }); // postorder\n   *    node.eachNode(\n   *        {order: 'postorder', attr: 'viewChildren'},\n   *        function () { ... }\n   *    ); // postorder\n   *\n   * @param {(Object|string)} options If string, means order.\n   * @param {string=} options.order 'preorder' or 'postorder'\n   * @param {string=} options.attr 'children' or 'viewChildren'\n   * @param {Function} cb If in preorder and return false,\n   *                      its subtree will not be visited.\n   * @param {Object} [context]\n   */\n  eachNode: function (options, cb, context) {\n    if (typeof options === 'function') {\n      context = cb;\n      cb = options;\n      options = null;\n    }\n\n    options = options || {};\n\n    if (zrUtil.isString(options)) {\n      options = {\n        order: options\n      };\n    }\n\n    var order = options.order || 'preorder';\n    var children = this[options.attr || 'children'];\n    var suppressVisitSub;\n    order === 'preorder' && (suppressVisitSub = cb.call(context, this));\n\n    for (var i = 0; !suppressVisitSub && i < children.length; i++) {\n      children[i].eachNode(options, cb, context);\n    }\n\n    order === 'postorder' && cb.call(context, this);\n  },\n\n  /**\n   * Update depth and height of this subtree.\n   *\n   * @param  {number} depth\n   */\n  updateDepthAndHeight: function (depth) {\n    var height = 0;\n    this.depth = depth;\n\n    for (var i = 0; i < this.children.length; i++) {\n      var child = this.children[i];\n      child.updateDepthAndHeight(depth + 1);\n\n      if (child.height > height) {\n        height = child.height;\n      }\n    }\n\n    this.height = height + 1;\n  },\n\n  /**\n   * @param  {string} id\n   * @return {module:echarts/data/Tree~TreeNode}\n   */\n  getNodeById: function (id) {\n    if (this.getId() === id) {\n      return this;\n    }\n\n    for (var i = 0, children = this.children, len = children.length; i < len; i++) {\n      var res = children[i].getNodeById(id);\n\n      if (res) {\n        return res;\n      }\n    }\n  },\n\n  /**\n   * @param {module:echarts/data/Tree~TreeNode} node\n   * @return {boolean}\n   */\n  contains: function (node) {\n    if (node === this) {\n      return true;\n    }\n\n    for (var i = 0, children = this.children, len = children.length; i < len; i++) {\n      var res = children[i].contains(node);\n\n      if (res) {\n        return res;\n      }\n    }\n  },\n\n  /**\n   * @param {boolean} includeSelf Default false.\n   * @return {Array.<module:echarts/data/Tree~TreeNode>} order: [root, child, grandchild, ...]\n   */\n  getAncestors: function (includeSelf) {\n    var ancestors = [];\n    var node = includeSelf ? this : this.parentNode;\n\n    while (node) {\n      ancestors.push(node);\n      node = node.parentNode;\n    }\n\n    ancestors.reverse();\n    return ancestors;\n  },\n\n  /**\n   * @param {string|Array=} [dimension='value'] Default 'value'. can be 0, 1, 2, 3\n   * @return {number} Value.\n   */\n  getValue: function (dimension) {\n    var data = this.hostTree.data;\n    return data.get(data.getDimension(dimension || 'value'), this.dataIndex);\n  },\n\n  /**\n   * @param {Object} layout\n   * @param {boolean=} [merge=false]\n   */\n  setLayout: function (layout, merge) {\n    this.dataIndex >= 0 && this.hostTree.data.setItemLayout(this.dataIndex, layout, merge);\n  },\n\n  /**\n   * @return {Object} layout\n   */\n  getLayout: function () {\n    return this.hostTree.data.getItemLayout(this.dataIndex);\n  },\n\n  /**\n   * @param {string} [path]\n   * @return {module:echarts/model/Model}\n   */\n  getModel: function (path) {\n    if (this.dataIndex < 0) {\n      return;\n    }\n\n    var hostTree = this.hostTree;\n    var itemModel = hostTree.data.getItemModel(this.dataIndex);\n    var levelModel = this.getLevelModel();\n    var leavesModel;\n\n    if (!levelModel && (this.children.length === 0 || this.children.length !== 0 && this.isExpand === false)) {\n      leavesModel = this.getLeavesModel();\n    }\n\n    return itemModel.getModel(path, (levelModel || leavesModel || hostTree.hostModel).getModel(path));\n  },\n\n  /**\n   * @return {module:echarts/model/Model}\n   */\n  getLevelModel: function () {\n    return (this.hostTree.levelModels || [])[this.depth];\n  },\n\n  /**\n   * @return {module:echarts/model/Model}\n   */\n  getLeavesModel: function () {\n    return this.hostTree.leavesModel;\n  },\n\n  /**\n   * @example\n   *  setItemVisual('color', color);\n   *  setItemVisual({\n   *      'color': color\n   *  });\n   */\n  setVisual: function (key, value) {\n    this.dataIndex >= 0 && this.hostTree.data.setItemVisual(this.dataIndex, key, value);\n  },\n\n  /**\n   * Get item visual\n   */\n  getVisual: function (key, ignoreParent) {\n    return this.hostTree.data.getItemVisual(this.dataIndex, key, ignoreParent);\n  },\n\n  /**\n   * @public\n   * @return {number}\n   */\n  getRawIndex: function () {\n    return this.hostTree.data.getRawIndex(this.dataIndex);\n  },\n\n  /**\n   * @public\n   * @return {string}\n   */\n  getId: function () {\n    return this.hostTree.data.getId(this.dataIndex);\n  },\n\n  /**\n   * if this is an ancestor of another node\n   *\n   * @public\n   * @param {TreeNode} node another node\n   * @return {boolean} if is ancestor\n   */\n  isAncestorOf: function (node) {\n    var parent = node.parentNode;\n\n    while (parent) {\n      if (parent === this) {\n        return true;\n      }\n\n      parent = parent.parentNode;\n    }\n\n    return false;\n  },\n\n  /**\n   * if this is an descendant of another node\n   *\n   * @public\n   * @param {TreeNode} node another node\n   * @return {boolean} if is descendant\n   */\n  isDescendantOf: function (node) {\n    return node !== this && node.isAncestorOf(this);\n  }\n};\n/**\n * @constructor\n * @alias module:echarts/data/Tree\n * @param {module:echarts/model/Model} hostModel\n * @param {Array.<Object>} levelOptions\n * @param {Object} leavesOption\n */\n\nfunction Tree(hostModel, levelOptions, leavesOption) {\n  /**\n   * @type {module:echarts/data/Tree~TreeNode}\n   * @readOnly\n   */\n  this.root;\n  /**\n   * @type {module:echarts/data/List}\n   * @readOnly\n   */\n\n  this.data;\n  /**\n   * Index of each item is the same as the raw index of coresponding list item.\n   * @private\n   * @type {Array.<module:echarts/data/Tree~TreeNode}\n   */\n\n  this._nodes = [];\n  /**\n   * @private\n   * @readOnly\n   * @type {module:echarts/model/Model}\n   */\n\n  this.hostModel = hostModel;\n  /**\n   * @private\n   * @readOnly\n   * @type {Array.<module:echarts/model/Model}\n   */\n\n  this.levelModels = zrUtil.map(levelOptions || [], function (levelDefine) {\n    return new Model(levelDefine, hostModel, hostModel.ecModel);\n  });\n  this.leavesModel = new Model(leavesOption || {}, hostModel, hostModel.ecModel);\n}\n\nTree.prototype = {\n  constructor: Tree,\n  type: 'tree',\n\n  /**\n   * Travel this subtree (include this node).\n   * Usage:\n   *    node.eachNode(function () { ... }); // preorder\n   *    node.eachNode('preorder', function () { ... }); // preorder\n   *    node.eachNode('postorder', function () { ... }); // postorder\n   *    node.eachNode(\n   *        {order: 'postorder', attr: 'viewChildren'},\n   *        function () { ... }\n   *    ); // postorder\n   *\n   * @param {(Object|string)} options If string, means order.\n   * @param {string=} options.order 'preorder' or 'postorder'\n   * @param {string=} options.attr 'children' or 'viewChildren'\n   * @param {Function} cb\n   * @param {Object}   [context]\n   */\n  eachNode: function (options, cb, context) {\n    this.root.eachNode(options, cb, context);\n  },\n\n  /**\n   * @param {number} dataIndex\n   * @return {module:echarts/data/Tree~TreeNode}\n   */\n  getNodeByDataIndex: function (dataIndex) {\n    var rawIndex = this.data.getRawIndex(dataIndex);\n    return this._nodes[rawIndex];\n  },\n\n  /**\n   * @param {string} name\n   * @return {module:echarts/data/Tree~TreeNode}\n   */\n  getNodeByName: function (name) {\n    return this.root.getNodeByName(name);\n  },\n\n  /**\n   * Update item available by list,\n   * when list has been performed options like 'filterSelf' or 'map'.\n   */\n  update: function () {\n    var data = this.data;\n    var nodes = this._nodes;\n\n    for (var i = 0, len = nodes.length; i < len; i++) {\n      nodes[i].dataIndex = -1;\n    }\n\n    for (var i = 0, len = data.count(); i < len; i++) {\n      nodes[data.getRawIndex(i)].dataIndex = i;\n    }\n  },\n\n  /**\n   * Clear all layouts\n   */\n  clearLayouts: function () {\n    this.data.clearItemLayouts();\n  }\n};\n/**\n * data node format:\n * {\n *     name: ...\n *     value: ...\n *     children: [\n *         {\n *             name: ...\n *             value: ...\n *             children: ...\n *         },\n *         ...\n *     ]\n * }\n *\n * @static\n * @param {Object} dataRoot Root node.\n * @param {module:echarts/model/Model} hostModel\n * @param {Object} treeOptions\n * @param {Array.<Object>} treeOptions.levels\n * @param {Array.<Object>} treeOptions.leaves\n * @return module:echarts/data/Tree\n */\n\nTree.createTree = function (dataRoot, hostModel, treeOptions) {\n  var tree = new Tree(hostModel, treeOptions.levels, treeOptions.leaves);\n  var listData = [];\n  var dimMax = 1;\n  buildHierarchy(dataRoot);\n\n  function buildHierarchy(dataNode, parentNode) {\n    var value = dataNode.value;\n    dimMax = Math.max(dimMax, zrUtil.isArray(value) ? value.length : 1);\n    listData.push(dataNode);\n    var node = new TreeNode(dataNode.name, tree);\n    parentNode ? addChild(node, parentNode) : tree.root = node;\n\n    tree._nodes.push(node);\n\n    var children = dataNode.children;\n\n    if (children) {\n      for (var i = 0; i < children.length; i++) {\n        buildHierarchy(children[i], node);\n      }\n    }\n  }\n\n  tree.root.updateDepthAndHeight(0);\n  var dimensionsInfo = createDimensions(listData, {\n    coordDimensions: ['value'],\n    dimensionsCount: dimMax\n  });\n  var list = new List(dimensionsInfo, hostModel);\n  list.initData(listData);\n  linkList({\n    mainData: list,\n    struct: tree,\n    structAttr: 'tree'\n  });\n  tree.update();\n  return tree;\n};\n/**\n * It is needed to consider the mess of 'list', 'hostModel' when creating a TreeNote,\n * so this function is not ready and not necessary to be public.\n *\n * @param {(module:echarts/data/Tree~TreeNode|Object)} child\n */\n\n\nfunction addChild(child, node) {\n  var children = node.children;\n\n  if (child.parentNode === node) {\n    return;\n  }\n\n  children.push(child);\n  child.parentNode = node;\n}\n\nvar _default = Tree;\nmodule.exports = _default;","var _util = require(\"zrender/lib/core/util\");\n\nvar createHashMap = _util.createHashMap;\nvar each = _util.each;\nvar isString = _util.isString;\nvar defaults = _util.defaults;\nvar extend = _util.extend;\nvar isObject = _util.isObject;\nvar clone = _util.clone;\n\nvar _model = require(\"../../util/model\");\n\nvar normalizeToArray = _model.normalizeToArray;\n\nvar _sourceHelper = require(\"./sourceHelper\");\n\nvar guessOrdinal = _sourceHelper.guessOrdinal;\n\nvar Source = require(\"../Source\");\n\nvar _dimensionHelper = require(\"./dimensionHelper\");\n\nvar OTHER_DIMENSIONS = _dimensionHelper.OTHER_DIMENSIONS;\n\n/**\n * @deprecated\n * Use `echarts/data/helper/createDimensions` instead.\n */\n\n/**\n * @see {module:echarts/test/ut/spec/data/completeDimensions}\n *\n * Complete the dimensions array, by user defined `dimension` and `encode`,\n * and guessing from the data structure.\n * If no 'value' dimension specified, the first no-named dimension will be\n * named as 'value'.\n *\n * @param {Array.<string>} sysDims Necessary dimensions, like ['x', 'y'], which\n *      provides not only dim template, but also default order.\n *      properties: 'name', 'type', 'displayName'.\n *      `name` of each item provides default coord name.\n *      [{dimsDef: [string...]}, ...] can be specified to give names.\n *      [{ordinalMeta}] can be specified.\n * @param {module:echarts/data/Source|Array|Object} source or data (for compatibal with pervious)\n * @param {Object} [opt]\n * @param {Array.<Object|string>} [opt.dimsDef] option.series.dimensions User defined dimensions\n *      For example: ['asdf', {name, type}, ...].\n * @param {Object|HashMap} [opt.encodeDef] option.series.encode {x: 2, y: [3, 1], tooltip: [1, 2], label: 3}\n * @param {string} [opt.extraPrefix] Prefix of name when filling the left dimensions.\n * @param {string} [opt.extraFromZero] If specified, extra dim names will be:\n *                      extraPrefix + 0, extraPrefix + extraBaseIndex + 1 ...\n *                      If not specified, extra dim names will be:\n *                      extraPrefix, extraPrefix + 0, extraPrefix + 1 ...\n * @param {number} [opt.dimCount] If not specified, guess by the first data item.\n * @param {number} [opt.encodeDefaulter] If not specified, auto find the next available data dim.\n * @return {Array.<Object>} [{\n *      name: string mandatory,\n *      displayName: string, the origin name in dimsDef, see source helper.\n *                 If displayName given, the tooltip will displayed vertically.\n *      coordDim: string mandatory,\n *      isSysCoord: boolean True if the coord is from sys dimension.\n *      coordDimIndex: number mandatory,\n *      type: string optional,\n *      otherDims: { never null/undefined\n *          tooltip: number optional,\n *          label: number optional,\n *          itemName: number optional,\n *          seriesName: number optional,\n *      },\n *      isExtraCoord: boolean true or undefined.\n *      other props ...\n * }]\n */\nfunction completeDimensions(sysDims, source, opt) {\n  if (!Source.isInstance(source)) {\n    source = Source.seriesDataToSource(source);\n  }\n\n  opt = opt || {};\n  sysDims = (sysDims || []).slice();\n  var dimsDef = (opt.dimsDef || []).slice();\n  var encodeDef = createHashMap(opt.encodeDef);\n  var dataDimNameMap = createHashMap();\n  var coordDimNameMap = createHashMap(); // var valueCandidate;\n\n  var result = [];\n  var dimCount = getDimCount(source, sysDims, dimsDef, opt.dimCount); // Apply user defined dims (`name` and `type`) and init result.\n\n  for (var i = 0; i < dimCount; i++) {\n    var dimDefItem = dimsDef[i] = extend({}, isObject(dimsDef[i]) ? dimsDef[i] : {\n      name: dimsDef[i]\n    });\n    var userDimName = dimDefItem.name;\n    var resultItem = result[i] = {\n      otherDims: {}\n    }; // Name will be applied later for avoiding duplication.\n\n    if (userDimName != null && dataDimNameMap.get(userDimName) == null) {\n      // Only if `series.dimensions` is defined in option\n      // displayName, will be set, and dimension will be diplayed vertically in\n      // tooltip by default.\n      resultItem.name = resultItem.displayName = userDimName;\n      dataDimNameMap.set(userDimName, i);\n    }\n\n    dimDefItem.type != null && (resultItem.type = dimDefItem.type);\n    dimDefItem.displayName != null && (resultItem.displayName = dimDefItem.displayName);\n  } // Set `coordDim` and `coordDimIndex` by `encodeDef` and normalize `encodeDef`.\n\n\n  encodeDef.each(function (dataDims, coordDim) {\n    dataDims = normalizeToArray(dataDims).slice();\n    var validDataDims = encodeDef.set(coordDim, []);\n    each(dataDims, function (resultDimIdx, idx) {\n      // The input resultDimIdx can be dim name or index.\n      isString(resultDimIdx) && (resultDimIdx = dataDimNameMap.get(resultDimIdx));\n\n      if (resultDimIdx != null && resultDimIdx < dimCount) {\n        validDataDims[idx] = resultDimIdx;\n        applyDim(result[resultDimIdx], coordDim, idx);\n      }\n    });\n  }); // Apply templetes and default order from `sysDims`.\n\n  var availDimIdx = 0;\n  each(sysDims, function (sysDimItem, sysDimIndex) {\n    var coordDim;\n    var sysDimItem;\n    var sysDimItemDimsDef;\n    var sysDimItemOtherDims;\n\n    if (isString(sysDimItem)) {\n      coordDim = sysDimItem;\n      sysDimItem = {};\n    } else {\n      coordDim = sysDimItem.name;\n      var ordinalMeta = sysDimItem.ordinalMeta;\n      sysDimItem.ordinalMeta = null;\n      sysDimItem = clone(sysDimItem);\n      sysDimItem.ordinalMeta = ordinalMeta; // `coordDimIndex` should not be set directly.\n\n      sysDimItemDimsDef = sysDimItem.dimsDef;\n      sysDimItemOtherDims = sysDimItem.otherDims;\n      sysDimItem.name = sysDimItem.coordDim = sysDimItem.coordDimIndex = sysDimItem.dimsDef = sysDimItem.otherDims = null;\n    }\n\n    var dataDims = normalizeToArray(encodeDef.get(coordDim)); // dimensions provides default dim sequences.\n\n    if (!dataDims.length) {\n      for (var i = 0; i < (sysDimItemDimsDef && sysDimItemDimsDef.length || 1); i++) {\n        while (availDimIdx < result.length && result[availDimIdx].coordDim != null) {\n          availDimIdx++;\n        }\n\n        availDimIdx < result.length && dataDims.push(availDimIdx++);\n      }\n    } // Apply templates.\n\n\n    each(dataDims, function (resultDimIdx, coordDimIndex) {\n      var resultItem = result[resultDimIdx];\n      applyDim(defaults(resultItem, sysDimItem), coordDim, coordDimIndex);\n\n      if (resultItem.name == null && sysDimItemDimsDef) {\n        resultItem.name = resultItem.displayName = sysDimItemDimsDef[coordDimIndex];\n      }\n\n      resultItem.isSysCoord = true; // FIXME refactor, currently only used in case: {otherDims: {tooltip: false}}\n\n      sysDimItemOtherDims && defaults(resultItem.otherDims, sysDimItemOtherDims);\n    });\n  });\n\n  function applyDim(resultItem, coordDim, coordDimIndex) {\n    if (OTHER_DIMENSIONS.get(coordDim) != null) {\n      resultItem.otherDims[coordDim] = coordDimIndex;\n    } else {\n      resultItem.coordDim = coordDim;\n      resultItem.coordDimIndex = coordDimIndex;\n      coordDimNameMap.set(coordDim, true);\n    }\n  } // Make sure the first extra dim is 'value'.\n\n\n  var extra = opt.extraPrefix || 'value'; // Set dim `name` and other `coordDim` and other props.\n\n  for (var resultDimIdx = 0; resultDimIdx < dimCount; resultDimIdx++) {\n    var resultItem = result[resultDimIdx] = result[resultDimIdx] || {};\n    var coordDim = resultItem.coordDim;\n    coordDim == null && (resultItem.coordDim = genName(extra, coordDimNameMap, opt.extraFromZero), resultItem.coordDimIndex = 0, resultItem.isExtraCoord = true);\n    resultItem.name == null && (resultItem.name = genName(resultItem.coordDim, dataDimNameMap));\n\n    if (resultItem.type == null && guessOrdinal(source, resultDimIdx, resultItem.name)) {\n      resultItem.type = 'ordinal';\n    }\n  }\n\n  return result;\n} // ??? TODO\n// Originally detect dimCount by data[0]. Should we\n// optimize it to only by sysDims and dimensions and encode.\n// So only necessary dims will be initialized.\n// But\n// (1) custom series should be considered. where other dims\n// may be visited.\n// (2) sometimes user need to calcualte bubble size or use visualMap\n// on other dimensions besides coordSys needed.\n\n\nfunction getDimCount(source, sysDims, dimsDef, dimCount) {\n  if (dimCount == null) {\n    dimCount = Math.max(source.dimensionsDetectCount || 1, sysDims.length, dimsDef.length);\n    each(sysDims, function (sysDimItem) {\n      var sysDimItemDimsDef = sysDimItem.dimsDef;\n      sysDimItemDimsDef && (dimCount = Math.max(dimCount, sysDimItemDimsDef.length));\n    });\n  }\n\n  return dimCount;\n}\n\nfunction genName(name, map, fromZero) {\n  if (fromZero || map.get(name) != null) {\n    var i = 0;\n\n    while (map.get(name + i) != null) {\n      i++;\n    }\n\n    name += i;\n  }\n\n  map.set(name, true);\n  return name;\n}\n\nvar _default = completeDimensions;\nmodule.exports = _default;","var completeDimensions = require(\"./completeDimensions\");\n\n/**\n * Substitute `completeDimensions`.\n * `completeDimensions` is to be deprecated.\n */\n\n/**\n * @param {module:echarts/data/Source|module:echarts/data/List} source or data.\n * @param {Object|Array} [opt]\n * @param {Array.<string|Object>} [opt.coordDimensions=[]]\n * @param {number} [opt.dimensionsCount]\n * @param {string} [opt.extraPrefix]\n * @param {boolean} [opt.extraFromZero]\n * @param {Array.<string|Object>} [opt.dimensionsDefine=source.dimensionsDefine] Overwrite source define.\n * @param {Object|HashMap} [opt.encodeDefine=source.encodeDefine] Overwrite source define.\n * @return {Array.<Object>} dimensionsInfo\n */\nfunction _default(source, opt) {\n  opt = opt || {};\n  return completeDimensions(opt.coordDimensions || [], source, {\n    dimsDef: opt.dimensionsDefine || source.dimensionsDefine,\n    encodeDef: opt.encodeDefine || source.encodeDefine,\n    dimCount: opt.dimensionsCount,\n    extraPrefix: opt.extraPrefix,\n    extraFromZero: opt.extraFromZero\n  });\n}\n\nmodule.exports = _default;","var _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar isTypedArray = _util.isTypedArray;\nvar extend = _util.extend;\nvar assert = _util.assert;\nvar each = _util.each;\nvar isObject = _util.isObject;\n\nvar _model = require(\"../../util/model\");\n\nvar getDataItemValue = _model.getDataItemValue;\nvar isDataItemOption = _model.isDataItemOption;\n\nvar _number = require(\"../../util/number\");\n\nvar parseDate = _number.parseDate;\n\nvar Source = require(\"../Source\");\n\nvar _sourceType = require(\"./sourceType\");\n\nvar SOURCE_FORMAT_TYPED_ARRAY = _sourceType.SOURCE_FORMAT_TYPED_ARRAY;\nvar SOURCE_FORMAT_ARRAY_ROWS = _sourceType.SOURCE_FORMAT_ARRAY_ROWS;\nvar SOURCE_FORMAT_ORIGINAL = _sourceType.SOURCE_FORMAT_ORIGINAL;\nvar SOURCE_FORMAT_OBJECT_ROWS = _sourceType.SOURCE_FORMAT_OBJECT_ROWS;\n\n// TODO\n// ??? refactor? check the outer usage of data provider.\n// merge with defaultDimValueGetter?\n\n/**\n * If normal array used, mutable chunk size is supported.\n * If typed array used, chunk size must be fixed.\n */\nfunction DefaultDataProvider(source, dimSize) {\n  if (!Source.isInstance(source)) {\n    source = Source.seriesDataToSource(source);\n  }\n\n  this._source = source;\n  var data = this._data = source.data;\n  var sourceFormat = source.sourceFormat; // Typed array. TODO IE10+?\n\n  if (sourceFormat === SOURCE_FORMAT_TYPED_ARRAY) {\n    this._offset = 0;\n    this._dimSize = dimSize;\n    this._data = data;\n  }\n\n  var methods = providerMethods[sourceFormat === SOURCE_FORMAT_ARRAY_ROWS ? sourceFormat + '_' + source.seriesLayoutBy : sourceFormat];\n  extend(this, methods);\n}\n\nvar providerProto = DefaultDataProvider.prototype; // If data is pure without style configuration\n\nproviderProto.pure = false; // If data is persistent and will not be released after use.\n\nproviderProto.persistent = true; // ???! FIXME legacy data provider do not has method getSource\n\nproviderProto.getSource = function () {\n  return this._source;\n};\n\nvar providerMethods = {\n  'arrayRows_column': {\n    pure: true,\n    count: function () {\n      return Math.max(0, this._data.length - this._source.startIndex);\n    },\n    getItem: function (idx) {\n      return this._data[idx + this._source.startIndex];\n    },\n    appendData: appendDataSimply\n  },\n  'arrayRows_row': {\n    pure: true,\n    count: function () {\n      var row = this._data[0];\n      return row ? Math.max(0, row.length - this._source.startIndex) : 0;\n    },\n    getItem: function (idx) {\n      idx += this._source.startIndex;\n      var item = [];\n      var data = this._data;\n\n      for (var i = 0; i < data.length; i++) {\n        var row = data[i];\n        item.push(row ? row[idx] : null);\n      }\n\n      return item;\n    },\n    appendData: function () {\n      throw new Error('Do not support appendData when set seriesLayoutBy: \"row\".');\n    }\n  },\n  'objectRows': {\n    pure: true,\n    count: countSimply,\n    getItem: getItemSimply,\n    appendData: appendDataSimply\n  },\n  'keyedColumns': {\n    pure: true,\n    count: function () {\n      var dimName = this._source.dimensionsDefine[0].name;\n      var col = this._data[dimName];\n      return col ? col.length : 0;\n    },\n    getItem: function (idx) {\n      var item = [];\n      var dims = this._source.dimensionsDefine;\n\n      for (var i = 0; i < dims.length; i++) {\n        var col = this._data[dims[i].name];\n        item.push(col ? col[idx] : null);\n      }\n\n      return item;\n    },\n    appendData: function (newData) {\n      var data = this._data;\n      each(newData, function (newCol, key) {\n        var oldCol = data[key] || (data[key] = []);\n\n        for (var i = 0; i < (newCol || []).length; i++) {\n          oldCol.push(newCol[i]);\n        }\n      });\n    }\n  },\n  'original': {\n    count: countSimply,\n    getItem: getItemSimply,\n    appendData: appendDataSimply\n  },\n  'typedArray': {\n    persistent: false,\n    pure: true,\n    count: function () {\n      return this._data ? this._data.length / this._dimSize : 0;\n    },\n    getItem: function (idx) {\n      idx = idx - this._offset;\n      var item = [];\n      var offset = this._dimSize * idx;\n\n      for (var i = 0; i < this._dimSize; i++) {\n        item[i] = this._data[offset + i];\n      }\n\n      return item;\n    },\n    appendData: function (newData) {\n      this._data = newData;\n    },\n    // Clean self if data is already used.\n    clean: function () {\n      // PENDING\n      this._offset += this.count();\n      this._data = null;\n    }\n  }\n};\n\nfunction countSimply() {\n  return this._data.length;\n}\n\nfunction getItemSimply(idx) {\n  return this._data[idx];\n}\n\nfunction appendDataSimply(newData) {\n  for (var i = 0; i < newData.length; i++) {\n    this._data.push(newData[i]);\n  }\n}\n\nvar rawValueGetters = {\n  arrayRows: getRawValueSimply,\n  objectRows: function (dataItem, dataIndex, dimIndex, dimName) {\n    return dimIndex != null ? dataItem[dimName] : dataItem;\n  },\n  keyedColumns: getRawValueSimply,\n  original: function (dataItem, dataIndex, dimIndex, dimName) {\n    // FIXME\n    // In some case (markpoint in geo (geo-map.html)), dataItem\n    // is {coord: [...]}\n    var value = getDataItemValue(dataItem);\n    return dimIndex == null || !(value instanceof Array) ? value : value[dimIndex];\n  },\n  typedArray: getRawValueSimply\n};\n\nfunction getRawValueSimply(dataItem, dataIndex, dimIndex, dimName) {\n  return dimIndex != null ? dataItem[dimIndex] : dataItem;\n}\n\nvar defaultDimValueGetters = {\n  arrayRows: getDimValueSimply,\n  objectRows: function (dataItem, dimName, dataIndex, dimIndex) {\n    return converDataValue(dataItem[dimName], this._dimensionInfos[dimName]);\n  },\n  keyedColumns: getDimValueSimply,\n  original: function (dataItem, dimName, dataIndex, dimIndex) {\n    // Performance sensitive, do not use modelUtil.getDataItemValue.\n    // If dataItem is an plain object with no value field, the var `value`\n    // will be assigned with the object, but it will be tread correctly\n    // in the `convertDataValue`.\n    var value = dataItem && (dataItem.value == null ? dataItem : dataItem.value); // If any dataItem is like { value: 10 }\n\n    if (!this._rawData.pure && isDataItemOption(dataItem)) {\n      this.hasItemOption = true;\n    }\n\n    return converDataValue(value instanceof Array ? value[dimIndex] // If value is a single number or something else not array.\n    : value, this._dimensionInfos[dimName]);\n  },\n  typedArray: function (dataItem, dimName, dataIndex, dimIndex) {\n    return dataItem[dimIndex];\n  }\n};\n\nfunction getDimValueSimply(dataItem, dimName, dataIndex, dimIndex) {\n  return converDataValue(dataItem[dimIndex], this._dimensionInfos[dimName]);\n}\n/**\n * This helper method convert value in data.\n * @param {string|number|Date} value\n * @param {Object|string} [dimInfo] If string (like 'x'), dimType defaults 'number'.\n *        If \"dimInfo.ordinalParseAndSave\", ordinal value can be parsed.\n */\n\n\nfunction converDataValue(value, dimInfo) {\n  // Performance sensitive.\n  var dimType = dimInfo && dimInfo.type;\n\n  if (dimType === 'ordinal') {\n    // If given value is a category string\n    var ordinalMeta = dimInfo && dimInfo.ordinalMeta;\n    return ordinalMeta ? ordinalMeta.parseAndCollect(value) : value;\n  }\n\n  if (dimType === 'time' // spead up when using timestamp\n  && typeof value !== 'number' && value != null && value !== '-') {\n    value = +parseDate(value);\n  } // dimType defaults 'number'.\n  // If dimType is not ordinal and value is null or undefined or NaN or '-',\n  // parse to NaN.\n\n\n  return value == null || value === '' ? NaN // If string (like '-'), using '+' parse to NaN\n  // If object, also parse to NaN\n  : +value;\n} // ??? FIXME can these logic be more neat: getRawValue, getRawDataItem,\n// Consider persistent.\n// Caution: why use raw value to display on label or tooltip?\n// A reason is to avoid format. For example time value we do not know\n// how to format is expected. More over, if stack is used, calculated\n// value may be 0.91000000001, which have brings trouble to display.\n// TODO: consider how to treat null/undefined/NaN when display?\n\n/**\n * @param {module:echarts/data/List} data\n * @param {number} dataIndex\n * @param {string|number} [dim] dimName or dimIndex\n * @return {Array.<number>|string|number} can be null/undefined.\n */\n\n\nfunction retrieveRawValue(data, dataIndex, dim) {\n  if (!data) {\n    return;\n  } // Consider data may be not persistent.\n\n\n  var dataItem = data.getRawDataItem(dataIndex);\n\n  if (dataItem == null) {\n    return;\n  }\n\n  var sourceFormat = data.getProvider().getSource().sourceFormat;\n  var dimName;\n  var dimIndex;\n  var dimInfo = data.getDimensionInfo(dim);\n\n  if (dimInfo) {\n    dimName = dimInfo.name;\n    dimIndex = dimInfo.index;\n  }\n\n  return rawValueGetters[sourceFormat](dataItem, dataIndex, dimIndex, dimName);\n}\n/**\n * Compatible with some cases (in pie, map) like:\n * data: [{name: 'xx', value: 5, selected: true}, ...]\n * where only sourceFormat is 'original' and 'objectRows' supported.\n *\n * ??? TODO\n * Supported detail options in data item when using 'arrayRows'.\n *\n * @param {module:echarts/data/List} data\n * @param {number} dataIndex\n * @param {string} attr like 'selected'\n */\n\n\nfunction retrieveRawAttr(data, dataIndex, attr) {\n  if (!data) {\n    return;\n  }\n\n  var sourceFormat = data.getProvider().getSource().sourceFormat;\n\n  if (sourceFormat !== SOURCE_FORMAT_ORIGINAL && sourceFormat !== SOURCE_FORMAT_OBJECT_ROWS) {\n    return;\n  }\n\n  var dataItem = data.getRawDataItem(dataIndex);\n\n  if (sourceFormat === SOURCE_FORMAT_ORIGINAL && !isObject(dataItem)) {\n    dataItem = null;\n  }\n\n  if (dataItem) {\n    return dataItem[attr];\n  }\n}\n\nexports.DefaultDataProvider = DefaultDataProvider;\nexports.defaultDimValueGetters = defaultDimValueGetters;\nexports.retrieveRawValue = retrieveRawValue;\nexports.retrieveRawAttr = retrieveRawAttr;","var _util = require(\"zrender/lib/core/util\");\n\nvar each = _util.each;\nvar createHashMap = _util.createHashMap;\nvar assert = _util.assert;\n\nvar _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\nvar OTHER_DIMENSIONS = createHashMap(['tooltip', 'label', 'itemName', 'itemId', 'seriesName']);\n\nfunction summarizeDimensions(data) {\n  var summary = {};\n  var encode = summary.encode = {};\n  var coordDimMap = summary.coordDimMap = createHashMap();\n  var defaultedLabel = [];\n  each(data.dimensions, function (dimName) {\n    var dimItem = data.getDimensionInfo(dimName);\n    var coordDim = dimItem.coordDim;\n\n    if (coordDim) {\n      var coordDimArr = encode[coordDim];\n\n      if (!encode.hasOwnProperty(coordDim)) {\n        coordDimArr = encode[coordDim] = [];\n      }\n\n      coordDimArr[dimItem.coordDimIndex] = dimName;\n\n      if (dimItem.isSysCoord && mayLabelDimType(dimItem.type)) {\n        // Use the last coord dim (and label friendly) as default label,\n        // because both show x, y on label is not look good, and usually\n        // y axis is more focusd conventionally.\n        defaultedLabel[0] = dimName;\n      }\n\n      coordDimMap.set(coordDim, 1);\n    }\n\n    OTHER_DIMENSIONS.each(function (v, otherDim) {\n      var otherDimArr = encode[otherDim];\n\n      if (!encode.hasOwnProperty(otherDim)) {\n        otherDimArr = encode[otherDim] = [];\n      }\n\n      var dimIndex = dimItem.otherDims[otherDim];\n\n      if (dimIndex != null && dimIndex !== false) {\n        otherDimArr[dimIndex] = dimItem.name;\n      }\n    });\n  });\n  var dataDimsOnCoord = [];\n  coordDimMap.each(function (v, coordDim) {\n    dataDimsOnCoord = dataDimsOnCoord.concat(encode[coordDim]);\n  });\n  summary.dataDimsOnCoord = dataDimsOnCoord;\n  var encodeLabel = encode.label; // FIXME `encode.label` is not recommanded, because formatter can not be set\n  // in this way. Use label.formatter instead. May be remove this approach someday.\n\n  if (encodeLabel && encodeLabel.length) {\n    defaultedLabel = encodeLabel.slice();\n  }\n\n  var defaultedTooltip = defaultedLabel.slice();\n  var encodeTooltip = encode.tooltip;\n\n  if (encodeTooltip && encodeTooltip.length) {\n    defaultedTooltip = encodeTooltip.slice();\n  }\n\n  encode.defaultedLabel = defaultedLabel;\n  encode.defaultedTooltip = defaultedTooltip;\n  return summary;\n}\n\nfunction getDimensionTypeByAxis(axisType) {\n  return axisType === 'category' ? 'ordinal' : axisType === 'time' ? 'time' : 'float';\n}\n\nfunction mayLabelDimType(dimType) {\n  // In most cases, ordinal and time do not suitable for label.\n  // Ordinal info can be displayed on axis. Time is too long.\n  return !(dimType === 'ordinal' || dimType === 'time');\n} // function findTheLastDimMayLabel(data) {\n//     // Get last value dim\n//     var dimensions = data.dimensions.slice();\n//     var valueType;\n//     var valueDim;\n//     while (dimensions.length && (\n//         valueDim = dimensions.pop(),\n//         valueType = data.getDimensionInfo(valueDim).type,\n//         valueType === 'ordinal' || valueType === 'time'\n//     )) {} // jshint ignore:line\n//     return valueDim;\n// }\n\n\nexports.OTHER_DIMENSIONS = OTHER_DIMENSIONS;\nexports.summarizeDimensions = summarizeDimensions;\nexports.getDimensionTypeByAxis = getDimensionTypeByAxis;","var zrUtil = require(\"zrender/lib/core/util\");\n\n/**\n * Link lists and struct (graph or tree)\n */\nvar each = zrUtil.each;\nvar DATAS = '\\0__link_datas';\nvar MAIN_DATA = '\\0__link_mainData'; // Caution:\n// In most case, either list or its shallow clones (see list.cloneShallow)\n// is active in echarts process. So considering heap memory consumption,\n// we do not clone tree or graph, but share them among list and its shallow clones.\n// But in some rare case, we have to keep old list (like do animation in chart). So\n// please take care that both the old list and the new list share the same tree/graph.\n\n/**\n * @param {Object} opt\n * @param {module:echarts/data/List} opt.mainData\n * @param {Object} [opt.struct] For example, instance of Graph or Tree.\n * @param {string} [opt.structAttr] designation: list[structAttr] = struct;\n * @param {Object} [opt.datas] {dataType: data},\n *                 like: {node: nodeList, edge: edgeList}.\n *                 Should contain mainData.\n * @param {Object} [opt.datasAttr] {dataType: attr},\n *                 designation: struct[datasAttr[dataType]] = list;\n */\n\nfunction linkList(opt) {\n  var mainData = opt.mainData;\n  var datas = opt.datas;\n\n  if (!datas) {\n    datas = {\n      main: mainData\n    };\n    opt.datasAttr = {\n      main: 'data'\n    };\n  }\n\n  opt.datas = opt.mainData = null;\n  linkAll(mainData, datas, opt); // Porxy data original methods.\n\n  each(datas, function (data) {\n    each(mainData.TRANSFERABLE_METHODS, function (methodName) {\n      data.wrapMethod(methodName, zrUtil.curry(transferInjection, opt));\n    });\n  }); // Beyond transfer, additional features should be added to `cloneShallow`.\n\n  mainData.wrapMethod('cloneShallow', zrUtil.curry(cloneShallowInjection, opt)); // Only mainData trigger change, because struct.update may trigger\n  // another changable methods, which may bring about dead lock.\n\n  each(mainData.CHANGABLE_METHODS, function (methodName) {\n    mainData.wrapMethod(methodName, zrUtil.curry(changeInjection, opt));\n  }); // Make sure datas contains mainData.\n\n  zrUtil.assert(datas[mainData.dataType] === mainData);\n}\n\nfunction transferInjection(opt, res) {\n  if (isMainData(this)) {\n    // Transfer datas to new main data.\n    var datas = zrUtil.extend({}, this[DATAS]);\n    datas[this.dataType] = res;\n    linkAll(res, datas, opt);\n  } else {\n    // Modify the reference in main data to point newData.\n    linkSingle(res, this.dataType, this[MAIN_DATA], opt);\n  }\n\n  return res;\n}\n\nfunction changeInjection(opt, res) {\n  opt.struct && opt.struct.update(this);\n  return res;\n}\n\nfunction cloneShallowInjection(opt, res) {\n  // cloneShallow, which brings about some fragilities, may be inappropriate\n  // to be exposed as an API. So for implementation simplicity we can make\n  // the restriction that cloneShallow of not-mainData should not be invoked\n  // outside, but only be invoked here.\n  each(res[DATAS], function (data, dataType) {\n    data !== res && linkSingle(data.cloneShallow(), dataType, res, opt);\n  });\n  return res;\n}\n/**\n * Supplement method to List.\n *\n * @public\n * @param {string} [dataType] If not specified, return mainData.\n * @return {module:echarts/data/List}\n */\n\n\nfunction getLinkedData(dataType) {\n  var mainData = this[MAIN_DATA];\n  return dataType == null || mainData == null ? mainData : mainData[DATAS][dataType];\n}\n\nfunction isMainData(data) {\n  return data[MAIN_DATA] === data;\n}\n\nfunction linkAll(mainData, datas, opt) {\n  mainData[DATAS] = {};\n  each(datas, function (data, dataType) {\n    linkSingle(data, dataType, mainData, opt);\n  });\n}\n\nfunction linkSingle(data, dataType, mainData, opt) {\n  mainData[DATAS][dataType] = data;\n  data[MAIN_DATA] = mainData;\n  data.dataType = dataType;\n\n  if (opt.struct) {\n    data[opt.structAttr] = opt.struct;\n    opt.struct[opt.datasAttr[dataType]] = data;\n  } // Supplement method.\n\n\n  data.getLinkedData = getLinkedData;\n}\n\nvar _default = linkList;\nmodule.exports = _default;","var _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar _model = require(\"../../util/model\");\n\nvar makeInner = _model.makeInner;\nvar getDataItemValue = _model.getDataItemValue;\n\nvar _referHelper = require(\"../../model/referHelper\");\n\nvar getCoordSysDefineBySeries = _referHelper.getCoordSysDefineBySeries;\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar createHashMap = _util.createHashMap;\nvar each = _util.each;\nvar map = _util.map;\nvar isArray = _util.isArray;\nvar isString = _util.isString;\nvar isObject = _util.isObject;\nvar isTypedArray = _util.isTypedArray;\nvar isArrayLike = _util.isArrayLike;\nvar extend = _util.extend;\nvar assert = _util.assert;\n\nvar Source = require(\"../Source\");\n\nvar _sourceType = require(\"./sourceType\");\n\nvar SOURCE_FORMAT_ORIGINAL = _sourceType.SOURCE_FORMAT_ORIGINAL;\nvar SOURCE_FORMAT_ARRAY_ROWS = _sourceType.SOURCE_FORMAT_ARRAY_ROWS;\nvar SOURCE_FORMAT_OBJECT_ROWS = _sourceType.SOURCE_FORMAT_OBJECT_ROWS;\nvar SOURCE_FORMAT_KEYED_COLUMNS = _sourceType.SOURCE_FORMAT_KEYED_COLUMNS;\nvar SOURCE_FORMAT_UNKNOWN = _sourceType.SOURCE_FORMAT_UNKNOWN;\nvar SOURCE_FORMAT_TYPED_ARRAY = _sourceType.SOURCE_FORMAT_TYPED_ARRAY;\nvar SERIES_LAYOUT_BY_ROW = _sourceType.SERIES_LAYOUT_BY_ROW;\nvar inner = makeInner();\n/**\n * @see {module:echarts/data/Source}\n * @param {module:echarts/component/dataset/DatasetModel} datasetModel\n * @return {string} sourceFormat\n */\n\nfunction detectSourceFormat(datasetModel) {\n  var data = datasetModel.option.source;\n  var sourceFormat = SOURCE_FORMAT_UNKNOWN;\n\n  if (isTypedArray(data)) {\n    sourceFormat = SOURCE_FORMAT_TYPED_ARRAY;\n  } else if (isArray(data)) {\n    // FIXME Whether tolerate null in top level array?\n    for (var i = 0, len = data.length; i < len; i++) {\n      var item = data[i];\n\n      if (item == null) {\n        continue;\n      } else if (isArray(item)) {\n        sourceFormat = SOURCE_FORMAT_ARRAY_ROWS;\n        break;\n      } else if (isObject(item)) {\n        sourceFormat = SOURCE_FORMAT_OBJECT_ROWS;\n        break;\n      }\n    }\n  } else if (isObject(data)) {\n    for (var key in data) {\n      if (data.hasOwnProperty(key) && isArrayLike(data[key])) {\n        sourceFormat = SOURCE_FORMAT_KEYED_COLUMNS;\n        break;\n      }\n    }\n  } else if (data != null) {\n    throw new Error('Invalid data');\n  }\n\n  inner(datasetModel).sourceFormat = sourceFormat;\n}\n/**\n * [Scenarios]:\n * (1) Provide source data directly:\n *     series: {\n *         encode: {...},\n *         dimensions: [...]\n *         seriesLayoutBy: 'row',\n *         data: [[...]]\n *     }\n * (2) Refer to datasetModel.\n *     series: [{\n *         encode: {...}\n *         // Ignore datasetIndex means `datasetIndex: 0`\n *         // and the dimensions defination in dataset is used\n *     }, {\n *         encode: {...},\n *         seriesLayoutBy: 'column',\n *         datasetIndex: 1\n *     }]\n *\n * Get data from series itself or datset.\n * @return {module:echarts/data/Source} source\n */\n\n\nfunction getSource(seriesModel) {\n  return inner(seriesModel).source;\n}\n/**\n * MUST be called before mergeOption of all series.\n * @param {module:echarts/model/Global} ecModel\n */\n\n\nfunction resetSourceDefaulter(ecModel) {\n  // `datasetMap` is used to make default encode.\n  inner(ecModel).datasetMap = createHashMap();\n}\n/**\n * [Caution]:\n * MUST be called after series option merged and\n * before \"series.getInitailData()\" called.\n *\n * [The rule of making default encode]:\n * Category axis (if exists) alway map to the first dimension.\n * Each other axis occupies a subsequent dimension.\n *\n * [Why make default encode]:\n * Simplify the typing of encode in option, avoiding the case like that:\n * series: [{encode: {x: 0, y: 1}}, {encode: {x: 0, y: 2}}, {encode: {x: 0, y: 3}}],\n * where the \"y\" have to be manually typed as \"1, 2, 3, ...\".\n *\n * @param {module:echarts/model/Series} seriesModel\n */\n\n\nfunction prepareSource(seriesModel) {\n  var seriesOption = seriesModel.option;\n  var data = seriesOption.data;\n  var sourceFormat = isTypedArray(data) ? SOURCE_FORMAT_TYPED_ARRAY : SOURCE_FORMAT_ORIGINAL;\n  var fromDataset = false;\n  var seriesLayoutBy = seriesOption.seriesLayoutBy;\n  var sourceHeader = seriesOption.sourceHeader;\n  var dimensionsDefine = seriesOption.dimensions;\n  var datasetModel = getDatasetModel(seriesModel);\n\n  if (datasetModel) {\n    var datasetOption = datasetModel.option;\n    data = datasetOption.source;\n    sourceFormat = inner(datasetModel).sourceFormat;\n    fromDataset = true; // These settings from series has higher priority.\n\n    seriesLayoutBy = seriesLayoutBy || datasetOption.seriesLayoutBy;\n    sourceHeader == null && (sourceHeader = datasetOption.sourceHeader);\n    dimensionsDefine = dimensionsDefine || datasetOption.dimensions;\n  }\n\n  var completeResult = completeBySourceData(data, sourceFormat, seriesLayoutBy, sourceHeader, dimensionsDefine); // Note: dataset option does not have `encode`.\n\n  var encodeDefine = seriesOption.encode;\n\n  if (!encodeDefine && datasetModel) {\n    encodeDefine = makeDefaultEncode(seriesModel, datasetModel, data, sourceFormat, seriesLayoutBy, completeResult);\n  }\n\n  inner(seriesModel).source = new Source({\n    data: data,\n    fromDataset: fromDataset,\n    seriesLayoutBy: seriesLayoutBy,\n    sourceFormat: sourceFormat,\n    dimensionsDefine: completeResult.dimensionsDefine,\n    startIndex: completeResult.startIndex,\n    dimensionsDetectCount: completeResult.dimensionsDetectCount,\n    encodeDefine: encodeDefine\n  });\n} // return {startIndex, dimensionsDefine, dimensionsCount}\n\n\nfunction completeBySourceData(data, sourceFormat, seriesLayoutBy, sourceHeader, dimensionsDefine) {\n  if (!data) {\n    return {\n      dimensionsDefine: normalizeDimensionsDefine(dimensionsDefine)\n    };\n  }\n\n  var dimensionsDetectCount;\n  var startIndex;\n  var findPotentialName;\n\n  if (sourceFormat === SOURCE_FORMAT_ARRAY_ROWS) {\n    // Rule: Most of the first line are string: it is header.\n    // Caution: consider a line with 5 string and 1 number,\n    // it still can not be sure it is a head, because the\n    // 5 string may be 5 values of category columns.\n    if (sourceHeader === 'auto' || sourceHeader == null) {\n      arrayRowsTravelFirst(function (val) {\n        // '-' is regarded as null/undefined.\n        if (val != null && val !== '-') {\n          if (isString(val)) {\n            startIndex == null && (startIndex = 1);\n          } else {\n            startIndex = 0;\n          }\n        } // 10 is an experience number, avoid long loop.\n\n      }, seriesLayoutBy, data, 10);\n    } else {\n      startIndex = sourceHeader ? 1 : 0;\n    }\n\n    if (!dimensionsDefine && startIndex === 1) {\n      dimensionsDefine = [];\n      arrayRowsTravelFirst(function (val, index) {\n        dimensionsDefine[index] = val != null ? val : '';\n      }, seriesLayoutBy, data);\n    }\n\n    dimensionsDetectCount = dimensionsDefine ? dimensionsDefine.length : seriesLayoutBy === SERIES_LAYOUT_BY_ROW ? data.length : data[0] ? data[0].length : null;\n  } else if (sourceFormat === SOURCE_FORMAT_OBJECT_ROWS) {\n    if (!dimensionsDefine) {\n      dimensionsDefine = objectRowsCollectDimensions(data);\n      findPotentialName = true;\n    }\n  } else if (sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS) {\n    if (!dimensionsDefine) {\n      dimensionsDefine = [];\n      findPotentialName = true;\n      each(data, function (colArr, key) {\n        dimensionsDefine.push(key);\n      });\n    }\n  } else if (sourceFormat === SOURCE_FORMAT_ORIGINAL) {\n    var value0 = getDataItemValue(data[0]);\n    dimensionsDetectCount = isArray(value0) && value0.length || 1;\n  } else if (sourceFormat === SOURCE_FORMAT_TYPED_ARRAY) {}\n\n  var potentialNameDimIndex;\n\n  if (findPotentialName) {\n    each(dimensionsDefine, function (dim, idx) {\n      if ((isObject(dim) ? dim.name : dim) === 'name') {\n        potentialNameDimIndex = idx;\n      }\n    });\n  }\n\n  return {\n    startIndex: startIndex,\n    dimensionsDefine: normalizeDimensionsDefine(dimensionsDefine),\n    dimensionsDetectCount: dimensionsDetectCount,\n    potentialNameDimIndex: potentialNameDimIndex // TODO: potentialIdDimIdx\n\n  };\n} // Consider dimensions defined like ['A', 'price', 'B', 'price', 'C', 'price'],\n// which is reasonable. But dimension name is duplicated.\n// Returns undefined or an array contains only object without null/undefiend or string.\n\n\nfunction normalizeDimensionsDefine(dimensionsDefine) {\n  if (!dimensionsDefine) {\n    // The meaning of null/undefined is different from empty array.\n    return;\n  }\n\n  var nameMap = createHashMap();\n  return map(dimensionsDefine, function (item, index) {\n    item = extend({}, isObject(item) ? item : {\n      name: item\n    }); // User can set null in dimensions.\n    // We dont auto specify name, othewise a given name may\n    // cause it be refered unexpectedly.\n\n    if (item.name == null) {\n      return item;\n    } // Also consider number form like 2012.\n\n\n    item.name += ''; // User may also specify displayName.\n    // displayName will always exists except user not\n    // specified or dim name is not specified or detected.\n    // (A auto generated dim name will not be used as\n    // displayName).\n\n    if (item.displayName == null) {\n      item.displayName = item.name;\n    }\n\n    var exist = nameMap.get(item.name);\n\n    if (!exist) {\n      nameMap.set(item.name, {\n        count: 1\n      });\n    } else {\n      item.name += '-' + exist.count++;\n    }\n\n    return item;\n  });\n}\n\nfunction arrayRowsTravelFirst(cb, seriesLayoutBy, data, maxLoop) {\n  maxLoop == null && (maxLoop = Infinity);\n\n  if (seriesLayoutBy === SERIES_LAYOUT_BY_ROW) {\n    for (var i = 0; i < data.length && i < maxLoop; i++) {\n      cb(data[i] ? data[i][0] : null, i);\n    }\n  } else {\n    var value0 = data[0] || [];\n\n    for (var i = 0; i < value0.length && i < maxLoop; i++) {\n      cb(value0[i], i);\n    }\n  }\n}\n\nfunction objectRowsCollectDimensions(data) {\n  var firstIndex = 0;\n  var obj;\n\n  while (firstIndex < data.length && !(obj = data[firstIndex++])) {} // jshint ignore: line\n\n\n  if (obj) {\n    var dimensions = [];\n    each(obj, function (value, key) {\n      dimensions.push(key);\n    });\n    return dimensions;\n  }\n} // ??? TODO merge to completedimensions, where also has\n// default encode making logic. And the default rule\n// should depends on series? consider 'map'.\n\n\nfunction makeDefaultEncode(seriesModel, datasetModel, data, sourceFormat, seriesLayoutBy, completeResult) {\n  var coordSysDefine = getCoordSysDefineBySeries(seriesModel);\n  var encode = {}; // var encodeTooltip = [];\n  // var encodeLabel = [];\n\n  var encodeItemName = [];\n  var encodeSeriesName = [];\n  var seriesType = seriesModel.subType; // ??? TODO refactor: provide by series itself.\n  // Consider the case: 'map' series is based on geo coordSys,\n  // 'graph', 'heatmap' can be based on cartesian. But can not\n  // give default rule simply here.\n\n  var nSeriesMap = createHashMap(['pie', 'map', 'funnel']);\n  var cSeriesMap = createHashMap(['line', 'bar', 'pictorialBar', 'scatter', 'effectScatter', 'candlestick', 'boxplot']); // Usually in this case series will use the first data\n  // dimension as the \"value\" dimension, or other default\n  // processes respectively.\n\n  if (coordSysDefine && cSeriesMap.get(seriesType) != null) {\n    var ecModel = seriesModel.ecModel;\n    var datasetMap = inner(ecModel).datasetMap;\n    var key = datasetModel.uid + '_' + seriesLayoutBy;\n    var datasetRecord = datasetMap.get(key) || datasetMap.set(key, {\n      categoryWayDim: 1,\n      valueWayDim: 0\n    }); // TODO\n    // Auto detect first time axis and do arrangement.\n\n    each(coordSysDefine.coordSysDims, function (coordDim) {\n      // In value way.\n      if (coordSysDefine.firstCategoryDimIndex == null) {\n        var dataDim = datasetRecord.valueWayDim++;\n        encode[coordDim] = dataDim; // ??? TODO give a better default series name rule?\n        // especially when encode x y specified.\n        // consider: when mutiple series share one dimension\n        // category axis, series name should better use\n        // the other dimsion name. On the other hand, use\n        // both dimensions name.\n\n        encodeSeriesName.push(dataDim); // encodeTooltip.push(dataDim);\n        // encodeLabel.push(dataDim);\n      } // In category way, category axis.\n      else if (coordSysDefine.categoryAxisMap.get(coordDim)) {\n          encode[coordDim] = 0;\n          encodeItemName.push(0);\n        } // In category way, non-category axis.\n        else {\n            var dataDim = datasetRecord.categoryWayDim++;\n            encode[coordDim] = dataDim; // encodeTooltip.push(dataDim);\n            // encodeLabel.push(dataDim);\n\n            encodeSeriesName.push(dataDim);\n          }\n    });\n  } // Do not make a complex rule! Hard to code maintain and not necessary.\n  // ??? TODO refactor: provide by series itself.\n  // [{name: ..., value: ...}, ...] like:\n  else if (nSeriesMap.get(seriesType) != null) {\n      // Find the first not ordinal. (5 is an experience value)\n      var firstNotOrdinal;\n\n      for (var i = 0; i < 5 && firstNotOrdinal == null; i++) {\n        if (!doGuessOrdinal(data, sourceFormat, seriesLayoutBy, completeResult.dimensionsDefine, completeResult.startIndex, i)) {\n          firstNotOrdinal = i;\n        }\n      }\n\n      if (firstNotOrdinal != null) {\n        encode.value = firstNotOrdinal;\n        var nameDimIndex = completeResult.potentialNameDimIndex || Math.max(firstNotOrdinal - 1, 0); // By default, label use itemName in charts.\n        // So we dont set encodeLabel here.\n\n        encodeSeriesName.push(nameDimIndex);\n        encodeItemName.push(nameDimIndex); // encodeTooltip.push(firstNotOrdinal);\n      }\n    } // encodeTooltip.length && (encode.tooltip = encodeTooltip);\n  // encodeLabel.length && (encode.label = encodeLabel);\n\n\n  encodeItemName.length && (encode.itemName = encodeItemName);\n  encodeSeriesName.length && (encode.seriesName = encodeSeriesName);\n  return encode;\n}\n/**\n * If return null/undefined, indicate that should not use datasetModel.\n */\n\n\nfunction getDatasetModel(seriesModel) {\n  var option = seriesModel.option; // Caution: consider the scenario:\n  // A dataset is declared and a series is not expected to use the dataset,\n  // and at the beginning `setOption({series: { noData })` (just prepare other\n  // option but no data), then `setOption({series: {data: [...]}); In this case,\n  // the user should set an empty array to avoid that dataset is used by default.\n\n  var thisData = option.data;\n\n  if (!thisData) {\n    return seriesModel.ecModel.getComponent('dataset', option.datasetIndex || 0);\n  }\n}\n/**\n * The rule should not be complex, otherwise user might not\n * be able to known where the data is wrong.\n * The code is ugly, but how to make it neat?\n *\n * @param {module:echars/data/Source} source\n * @param {number} dimIndex\n * @return {boolean} Whether ordinal.\n */\n\n\nfunction guessOrdinal(source, dimIndex) {\n  return doGuessOrdinal(source.data, source.sourceFormat, source.seriesLayoutBy, source.dimensionsDefine, source.startIndex, dimIndex);\n} // dimIndex may be overflow source data.\n\n\nfunction doGuessOrdinal(data, sourceFormat, seriesLayoutBy, dimensionsDefine, startIndex, dimIndex) {\n  var result; // Experience value.\n\n  var maxLoop = 5;\n\n  if (isTypedArray(data)) {\n    return false;\n  } // When sourceType is 'objectRows' or 'keyedColumns', dimensionsDefine\n  // always exists in source.\n\n\n  var dimName;\n\n  if (dimensionsDefine) {\n    dimName = dimensionsDefine[dimIndex];\n    dimName = isObject(dimName) ? dimName.name : dimName;\n  }\n\n  if (sourceFormat === SOURCE_FORMAT_ARRAY_ROWS) {\n    if (seriesLayoutBy === SERIES_LAYOUT_BY_ROW) {\n      var sample = data[dimIndex];\n\n      for (var i = 0; i < (sample || []).length && i < maxLoop; i++) {\n        if ((result = detectValue(sample[startIndex + i])) != null) {\n          return result;\n        }\n      }\n    } else {\n      for (var i = 0; i < data.length && i < maxLoop; i++) {\n        var row = data[startIndex + i];\n\n        if (row && (result = detectValue(row[dimIndex])) != null) {\n          return result;\n        }\n      }\n    }\n  } else if (sourceFormat === SOURCE_FORMAT_OBJECT_ROWS) {\n    if (!dimName) {\n      return;\n    }\n\n    for (var i = 0; i < data.length && i < maxLoop; i++) {\n      var item = data[i];\n\n      if (item && (result = detectValue(item[dimName])) != null) {\n        return result;\n      }\n    }\n  } else if (sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS) {\n    if (!dimName) {\n      return;\n    }\n\n    var sample = data[dimName];\n\n    if (!sample || isTypedArray(sample)) {\n      return false;\n    }\n\n    for (var i = 0; i < sample.length && i < maxLoop; i++) {\n      if ((result = detectValue(sample[i])) != null) {\n        return result;\n      }\n    }\n  } else if (sourceFormat === SOURCE_FORMAT_ORIGINAL) {\n    for (var i = 0; i < data.length && i < maxLoop; i++) {\n      var item = data[i];\n      var val = getDataItemValue(item);\n\n      if (!isArray(val)) {\n        return false;\n      }\n\n      if ((result = detectValue(val[dimIndex])) != null) {\n        return result;\n      }\n    }\n  }\n\n  function detectValue(val) {\n    // Consider usage convenience, '1', '2' will be treated as \"number\".\n    // `isFinit('')` get `true`.\n    if (val != null && isFinite(val) && val !== '') {\n      return false;\n    } else if (isString(val) && val !== '-') {\n      return true;\n    }\n  }\n\n  return false;\n}\n\nexports.detectSourceFormat = detectSourceFormat;\nexports.getSource = getSource;\nexports.resetSourceDefaulter = resetSourceDefaulter;\nexports.prepareSource = prepareSource;\nexports.guessOrdinal = guessOrdinal;","// Avoid typo.\nvar SOURCE_FORMAT_ORIGINAL = 'original';\nvar SOURCE_FORMAT_ARRAY_ROWS = 'arrayRows';\nvar SOURCE_FORMAT_OBJECT_ROWS = 'objectRows';\nvar SOURCE_FORMAT_KEYED_COLUMNS = 'keyedColumns';\nvar SOURCE_FORMAT_UNKNOWN = 'unknown'; // ??? CHANGE A NAME\n\nvar SOURCE_FORMAT_TYPED_ARRAY = 'typedArray';\nvar SERIES_LAYOUT_BY_COLUMN = 'column';\nvar SERIES_LAYOUT_BY_ROW = 'row';\nexports.SOURCE_FORMAT_ORIGINAL = SOURCE_FORMAT_ORIGINAL;\nexports.SOURCE_FORMAT_ARRAY_ROWS = SOURCE_FORMAT_ARRAY_ROWS;\nexports.SOURCE_FORMAT_OBJECT_ROWS = SOURCE_FORMAT_OBJECT_ROWS;\nexports.SOURCE_FORMAT_KEYED_COLUMNS = SOURCE_FORMAT_KEYED_COLUMNS;\nexports.SOURCE_FORMAT_UNKNOWN = SOURCE_FORMAT_UNKNOWN;\nexports.SOURCE_FORMAT_TYPED_ARRAY = SOURCE_FORMAT_TYPED_ARRAY;\nexports.SERIES_LAYOUT_BY_COLUMN = SERIES_LAYOUT_BY_COLUMN;\nexports.SERIES_LAYOUT_BY_ROW = SERIES_LAYOUT_BY_ROW;","var _config = require(\"./config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar zrender = require(\"zrender/lib/zrender\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar colorTool = require(\"zrender/lib/tool/color\");\n\nvar env = require(\"zrender/lib/core/env\");\n\nvar timsort = require(\"zrender/lib/core/timsort\");\n\nvar Eventful = require(\"zrender/lib/mixin/Eventful\");\n\nvar GlobalModel = require(\"./model/Global\");\n\nvar ExtensionAPI = require(\"./ExtensionAPI\");\n\nvar CoordinateSystemManager = require(\"./CoordinateSystem\");\n\nvar OptionManager = require(\"./model/OptionManager\");\n\nvar backwardCompat = require(\"./preprocessor/backwardCompat\");\n\nvar ComponentModel = require(\"./model/Component\");\n\nvar SeriesModel = require(\"./model/Series\");\n\nvar ComponentView = require(\"./view/Component\");\n\nvar ChartView = require(\"./view/Chart\");\n\nvar graphic = require(\"./util/graphic\");\n\nvar modelUtil = require(\"./util/model\");\n\nvar _throttle = require(\"./util/throttle\");\n\nvar throttle = _throttle.throttle;\n\nvar seriesColor = require(\"./visual/seriesColor\");\n\nvar aria = require(\"./visual/aria\");\n\nvar loadingDefault = require(\"./loading/default\");\n\nvar Scheduler = require(\"./stream/Scheduler\");\n\nvar lightTheme = require(\"./theme/light\");\n\nvar darkTheme = require(\"./theme/dark\");\n\n/*!\n * ECharts, a free, powerful charting and visualization library.\n *\n * Copyright (c) 2017, Baidu Inc.\n * All rights reserved.\n *\n * LICENSE\n * https://github.com/ecomfe/echarts/blob/master/LICENSE.txt\n */\nvar assert = zrUtil.assert;\nvar each = zrUtil.each;\nvar isFunction = zrUtil.isFunction;\nvar isObject = zrUtil.isObject;\nvar parseClassType = ComponentModel.parseClassType;\nvar version = '4.0.2';\nvar dependencies = {\n  zrender: '4.0.1'\n};\nvar TEST_FRAME_REMAIN_TIME = 1;\nvar PRIORITY_PROCESSOR_FILTER = 1000;\nvar PRIORITY_PROCESSOR_STATISTIC = 5000;\nvar PRIORITY_VISUAL_LAYOUT = 1000;\nvar PRIORITY_VISUAL_GLOBAL = 2000;\nvar PRIORITY_VISUAL_CHART = 3000;\nvar PRIORITY_VISUAL_COMPONENT = 4000; // FIXME\n// necessary?\n\nvar PRIORITY_VISUAL_BRUSH = 5000;\nvar PRIORITY = {\n  PROCESSOR: {\n    FILTER: PRIORITY_PROCESSOR_FILTER,\n    STATISTIC: PRIORITY_PROCESSOR_STATISTIC\n  },\n  VISUAL: {\n    LAYOUT: PRIORITY_VISUAL_LAYOUT,\n    GLOBAL: PRIORITY_VISUAL_GLOBAL,\n    CHART: PRIORITY_VISUAL_CHART,\n    COMPONENT: PRIORITY_VISUAL_COMPONENT,\n    BRUSH: PRIORITY_VISUAL_BRUSH\n  }\n}; // Main process have three entries: `setOption`, `dispatchAction` and `resize`,\n// where they must not be invoked nestedly, except the only case: invoke\n// dispatchAction with updateMethod \"none\" in main process.\n// This flag is used to carry out this rule.\n// All events will be triggered out side main process (i.e. when !this[IN_MAIN_PROCESS]).\n\nvar IN_MAIN_PROCESS = '__flagInMainProcess';\nvar HAS_GRADIENT_OR_PATTERN_BG = '__hasGradientOrPatternBg';\nvar OPTION_UPDATED = '__optionUpdated';\nvar ACTION_REG = /^[a-zA-Z0-9_]+$/;\n\nfunction createRegisterEventWithLowercaseName(method) {\n  return function (eventName, handler, context) {\n    // Event name is all lowercase\n    eventName = eventName && eventName.toLowerCase();\n    Eventful.prototype[method].call(this, eventName, handler, context);\n  };\n}\n/**\n * @module echarts~MessageCenter\n */\n\n\nfunction MessageCenter() {\n  Eventful.call(this);\n}\n\nMessageCenter.prototype.on = createRegisterEventWithLowercaseName('on');\nMessageCenter.prototype.off = createRegisterEventWithLowercaseName('off');\nMessageCenter.prototype.one = createRegisterEventWithLowercaseName('one');\nzrUtil.mixin(MessageCenter, Eventful);\n/**\n * @module echarts~ECharts\n */\n\nfunction ECharts(dom, theme, opts) {\n  opts = opts || {}; // Get theme by name\n\n  if (typeof theme === 'string') {\n    theme = themeStorage[theme];\n  }\n  /**\n   * @type {string}\n   */\n\n\n  this.id;\n  /**\n   * Group id\n   * @type {string}\n   */\n\n  this.group;\n  /**\n   * @type {HTMLElement}\n   * @private\n   */\n\n  this._dom = dom;\n  var defaultRenderer = 'canvas';\n\n  /**\n   * @type {module:zrender/ZRender}\n   * @private\n   */\n  var zr = this._zr = zrender.init(dom, {\n    renderer: opts.renderer || defaultRenderer,\n    devicePixelRatio: opts.devicePixelRatio,\n    width: opts.width,\n    height: opts.height\n  });\n  /**\n   * Expect 60 pfs.\n   * @type {Function}\n   * @private\n   */\n\n  this._throttledZrFlush = throttle(zrUtil.bind(zr.flush, zr), 17);\n  var theme = zrUtil.clone(theme);\n  theme && backwardCompat(theme, true);\n  /**\n   * @type {Object}\n   * @private\n   */\n\n  this._theme = theme;\n  /**\n   * @type {Array.<module:echarts/view/Chart>}\n   * @private\n   */\n\n  this._chartsViews = [];\n  /**\n   * @type {Object.<string, module:echarts/view/Chart>}\n   * @private\n   */\n\n  this._chartsMap = {};\n  /**\n   * @type {Array.<module:echarts/view/Component>}\n   * @private\n   */\n\n  this._componentsViews = [];\n  /**\n   * @type {Object.<string, module:echarts/view/Component>}\n   * @private\n   */\n\n  this._componentsMap = {};\n  /**\n   * @type {module:echarts/CoordinateSystem}\n   * @private\n   */\n\n  this._coordSysMgr = new CoordinateSystemManager();\n  /**\n   * @type {module:echarts/ExtensionAPI}\n   * @private\n   */\n\n  var api = this._api = createExtensionAPI(this);\n  /**\n   * @type {module:echarts/stream/Scheduler}\n   */\n\n  this._scheduler = new Scheduler(this, api);\n  Eventful.call(this);\n  /**\n   * @type {module:echarts~MessageCenter}\n   * @private\n   */\n\n  this._messageCenter = new MessageCenter(); // this._scheduler = new Scheduler();\n  // Init mouse events\n\n  this._initEvents(); // In case some people write `window.onresize = chart.resize`\n\n\n  this.resize = zrUtil.bind(this.resize, this); // Can't dispatch action during rendering procedure\n\n  this._pendingActions = []; // Sort on demand\n\n  function prioritySortFunc(a, b) {\n    return a.__prio - b.__prio;\n  }\n\n  timsort(visualFuncs, prioritySortFunc);\n  timsort(dataProcessorFuncs, prioritySortFunc);\n  zr.animation.on('frame', this._onframe, this); // ECharts instance can be used as value.\n\n  zrUtil.setAsPrimitive(this);\n}\n\nvar echartsProto = ECharts.prototype;\n\nechartsProto._onframe = function () {\n  if (this._disposed) {\n    return;\n  }\n\n  var scheduler = this._scheduler; // Lazy update\n\n  if (this[OPTION_UPDATED]) {\n    var silent = this[OPTION_UPDATED].silent;\n    this[IN_MAIN_PROCESS] = true;\n    prepare(this);\n    updateMethods.update.call(this);\n    this[IN_MAIN_PROCESS] = false;\n    this[OPTION_UPDATED] = false;\n    flushPendingActions.call(this, silent);\n    triggerUpdatedEvent.call(this, silent);\n  } // Avoid do both lazy update and progress in one frame.\n  else if (scheduler.unfinished) {\n      // Stream progress.\n      var remainTime = TEST_FRAME_REMAIN_TIME;\n      var ecModel = this._model;\n      var api = this._api;\n      scheduler.unfinished = false;\n\n      do {\n        var startTime = +new Date();\n        scheduler.performSeriesTasks(ecModel); // Currently dataProcessorFuncs do not check threshold.\n\n        scheduler.performDataProcessorTasks(dataProcessorFuncs, ecModel);\n        updateStreamModes(this, ecModel); // Do not update coordinate system here. Because that coord system update in\n        // each frame is not a good user experience. So we follow the rule that\n        // the extent of the coordinate system is determin in the first frame (the\n        // frame is executed immedietely after task reset.\n        // this._coordSysMgr.update(ecModel, api);\n        // console.log('--- ec frame visual ---', remainTime);\n\n        scheduler.performVisualTasks(visualFuncs, ecModel);\n        renderSeries(this, this._model, api, 'remain');\n        remainTime -= +new Date() - startTime;\n      } while (remainTime > 0 && scheduler.unfinished);\n\n      if (!scheduler.unfinished) {\n        this._zr && this._zr.flush();\n        this.trigger('finished');\n      } // Else, zr flushing be ensue within the same frame,\n      // because zr flushing is after onframe event.\n\n    }\n};\n/**\n * @return {HTMLElement}\n */\n\n\nechartsProto.getDom = function () {\n  return this._dom;\n};\n/**\n * @return {module:zrender~ZRender}\n */\n\n\nechartsProto.getZr = function () {\n  return this._zr;\n};\n/**\n * Usage:\n * chart.setOption(option, notMerge, lazyUpdate);\n * chart.setOption(option, {\n *     notMerge: ...,\n *     lazyUpdate: ...,\n *     silent: ...\n * });\n *\n * @param {Object} option\n * @param {Object|boolean} [opts] opts or notMerge.\n * @param {boolean} [opts.notMerge=false]\n * @param {boolean} [opts.lazyUpdate=false] Useful when setOption frequently.\n */\n\n\nechartsProto.setOption = function (option, notMerge, lazyUpdate) {\n  var silent;\n\n  if (isObject(notMerge)) {\n    lazyUpdate = notMerge.lazyUpdate;\n    silent = notMerge.silent;\n    notMerge = notMerge.notMerge;\n  }\n\n  this[IN_MAIN_PROCESS] = true;\n\n  if (!this._model || notMerge) {\n    var optionManager = new OptionManager(this._api);\n    var theme = this._theme;\n    var ecModel = this._model = new GlobalModel(null, null, theme, optionManager);\n    ecModel.scheduler = this._scheduler;\n    ecModel.init(null, null, theme, optionManager);\n  }\n\n  this._model.setOption(option, optionPreprocessorFuncs);\n\n  if (lazyUpdate) {\n    this[OPTION_UPDATED] = {\n      silent: silent\n    };\n    this[IN_MAIN_PROCESS] = false;\n  } else {\n    prepare(this);\n    updateMethods.update.call(this); // Ensure zr refresh sychronously, and then pixel in canvas can be\n    // fetched after `setOption`.\n\n    this._zr.flush();\n\n    this[OPTION_UPDATED] = false;\n    this[IN_MAIN_PROCESS] = false;\n    flushPendingActions.call(this, silent);\n    triggerUpdatedEvent.call(this, silent);\n  }\n};\n/**\n * @DEPRECATED\n */\n\n\nechartsProto.setTheme = function () {\n  console.log('ECharts#setTheme() is DEPRECATED in ECharts 3.0');\n};\n/**\n * @return {module:echarts/model/Global}\n */\n\n\nechartsProto.getModel = function () {\n  return this._model;\n};\n/**\n * @return {Object}\n */\n\n\nechartsProto.getOption = function () {\n  return this._model && this._model.getOption();\n};\n/**\n * @return {number}\n */\n\n\nechartsProto.getWidth = function () {\n  return this._zr.getWidth();\n};\n/**\n * @return {number}\n */\n\n\nechartsProto.getHeight = function () {\n  return this._zr.getHeight();\n};\n/**\n * @return {number}\n */\n\n\nechartsProto.getDevicePixelRatio = function () {\n  return this._zr.painter.dpr || window.devicePixelRatio || 1;\n};\n/**\n * Get canvas which has all thing rendered\n * @param {Object} opts\n * @param {string} [opts.backgroundColor]\n * @return {string}\n */\n\n\nechartsProto.getRenderedCanvas = function (opts) {\n  if (!env.canvasSupported) {\n    return;\n  }\n\n  opts = opts || {};\n  opts.pixelRatio = opts.pixelRatio || 1;\n  opts.backgroundColor = opts.backgroundColor || this._model.get('backgroundColor');\n  var zr = this._zr;\n  var list = zr.storage.getDisplayList(); // Stop animations\n\n  zrUtil.each(list, function (el) {\n    el.stopAnimation(true);\n  });\n  return zr.painter.getRenderedCanvas(opts);\n};\n/**\n * Get svg data url\n * @return {string}\n */\n\n\nechartsProto.getSvgDataUrl = function () {\n  if (!env.svgSupported) {\n    return;\n  }\n\n  var zr = this._zr;\n  var list = zr.storage.getDisplayList(); // Stop animations\n\n  zrUtil.each(list, function (el) {\n    el.stopAnimation(true);\n  });\n  return zr.painter.pathToSvg();\n};\n/**\n * @return {string}\n * @param {Object} opts\n * @param {string} [opts.type='png']\n * @param {string} [opts.pixelRatio=1]\n * @param {string} [opts.backgroundColor]\n * @param {string} [opts.excludeComponents]\n */\n\n\nechartsProto.getDataURL = function (opts) {\n  opts = opts || {};\n  var excludeComponents = opts.excludeComponents;\n  var ecModel = this._model;\n  var excludesComponentViews = [];\n  var self = this;\n  each(excludeComponents, function (componentType) {\n    ecModel.eachComponent({\n      mainType: componentType\n    }, function (component) {\n      var view = self._componentsMap[component.__viewId];\n\n      if (!view.group.ignore) {\n        excludesComponentViews.push(view);\n        view.group.ignore = true;\n      }\n    });\n  });\n  var url = this._zr.painter.getType() === 'svg' ? this.getSvgDataUrl() : this.getRenderedCanvas(opts).toDataURL('image/' + (opts && opts.type || 'png'));\n  each(excludesComponentViews, function (view) {\n    view.group.ignore = false;\n  });\n  return url;\n};\n/**\n * @return {string}\n * @param {Object} opts\n * @param {string} [opts.type='png']\n * @param {string} [opts.pixelRatio=1]\n * @param {string} [opts.backgroundColor]\n */\n\n\nechartsProto.getConnectedDataURL = function (opts) {\n  if (!env.canvasSupported) {\n    return;\n  }\n\n  var groupId = this.group;\n  var mathMin = Math.min;\n  var mathMax = Math.max;\n  var MAX_NUMBER = Infinity;\n\n  if (connectedGroups[groupId]) {\n    var left = MAX_NUMBER;\n    var top = MAX_NUMBER;\n    var right = -MAX_NUMBER;\n    var bottom = -MAX_NUMBER;\n    var canvasList = [];\n    var dpr = opts && opts.pixelRatio || 1;\n    zrUtil.each(instances, function (chart, id) {\n      if (chart.group === groupId) {\n        var canvas = chart.getRenderedCanvas(zrUtil.clone(opts));\n        var boundingRect = chart.getDom().getBoundingClientRect();\n        left = mathMin(boundingRect.left, left);\n        top = mathMin(boundingRect.top, top);\n        right = mathMax(boundingRect.right, right);\n        bottom = mathMax(boundingRect.bottom, bottom);\n        canvasList.push({\n          dom: canvas,\n          left: boundingRect.left,\n          top: boundingRect.top\n        });\n      }\n    });\n    left *= dpr;\n    top *= dpr;\n    right *= dpr;\n    bottom *= dpr;\n    var width = right - left;\n    var height = bottom - top;\n    var targetCanvas = zrUtil.createCanvas();\n    targetCanvas.width = width;\n    targetCanvas.height = height;\n    var zr = zrender.init(targetCanvas);\n    each(canvasList, function (item) {\n      var img = new graphic.Image({\n        style: {\n          x: item.left * dpr - left,\n          y: item.top * dpr - top,\n          image: item.dom\n        }\n      });\n      zr.add(img);\n    });\n    zr.refreshImmediately();\n    return targetCanvas.toDataURL('image/' + (opts && opts.type || 'png'));\n  } else {\n    return this.getDataURL(opts);\n  }\n};\n/**\n * Convert from logical coordinate system to pixel coordinate system.\n * See CoordinateSystem#convertToPixel.\n * @param {string|Object} finder\n *        If string, e.g., 'geo', means {geoIndex: 0}.\n *        If Object, could contain some of these properties below:\n *        {\n *            seriesIndex / seriesId / seriesName,\n *            geoIndex / geoId, geoName,\n *            bmapIndex / bmapId / bmapName,\n *            xAxisIndex / xAxisId / xAxisName,\n *            yAxisIndex / yAxisId / yAxisName,\n *            gridIndex / gridId / gridName,\n *            ... (can be extended)\n *        }\n * @param {Array|number} value\n * @return {Array|number} result\n */\n\n\nechartsProto.convertToPixel = zrUtil.curry(doConvertPixel, 'convertToPixel');\n/**\n * Convert from pixel coordinate system to logical coordinate system.\n * See CoordinateSystem#convertFromPixel.\n * @param {string|Object} finder\n *        If string, e.g., 'geo', means {geoIndex: 0}.\n *        If Object, could contain some of these properties below:\n *        {\n *            seriesIndex / seriesId / seriesName,\n *            geoIndex / geoId / geoName,\n *            bmapIndex / bmapId / bmapName,\n *            xAxisIndex / xAxisId / xAxisName,\n *            yAxisIndex / yAxisId / yAxisName\n *            gridIndex / gridId / gridName,\n *            ... (can be extended)\n *        }\n * @param {Array|number} value\n * @return {Array|number} result\n */\n\nechartsProto.convertFromPixel = zrUtil.curry(doConvertPixel, 'convertFromPixel');\n\nfunction doConvertPixel(methodName, finder, value) {\n  var ecModel = this._model;\n\n  var coordSysList = this._coordSysMgr.getCoordinateSystems();\n\n  var result;\n  finder = modelUtil.parseFinder(ecModel, finder);\n\n  for (var i = 0; i < coordSysList.length; i++) {\n    var coordSys = coordSysList[i];\n\n    if (coordSys[methodName] && (result = coordSys[methodName](ecModel, finder, value)) != null) {\n      return result;\n    }\n  }\n}\n/**\n * Is the specified coordinate systems or components contain the given pixel point.\n * @param {string|Object} finder\n *        If string, e.g., 'geo', means {geoIndex: 0}.\n *        If Object, could contain some of these properties below:\n *        {\n *            seriesIndex / seriesId / seriesName,\n *            geoIndex / geoId / geoName,\n *            bmapIndex / bmapId / bmapName,\n *            xAxisIndex / xAxisId / xAxisName,\n *            yAxisIndex / yAxisId / yAxisName,\n *            gridIndex / gridId / gridName,\n *            ... (can be extended)\n *        }\n * @param {Array|number} value\n * @return {boolean} result\n */\n\n\nechartsProto.containPixel = function (finder, value) {\n  var ecModel = this._model;\n  var result;\n  finder = modelUtil.parseFinder(ecModel, finder);\n  zrUtil.each(finder, function (models, key) {\n    key.indexOf('Models') >= 0 && zrUtil.each(models, function (model) {\n      var coordSys = model.coordinateSystem;\n\n      if (coordSys && coordSys.containPoint) {\n        result |= !!coordSys.containPoint(value);\n      } else if (key === 'seriesModels') {\n        var view = this._chartsMap[model.__viewId];\n\n        if (view && view.containPoint) {\n          result |= view.containPoint(value, model);\n        } else {}\n      } else {}\n    }, this);\n  }, this);\n  return !!result;\n};\n/**\n * Get visual from series or data.\n * @param {string|Object} finder\n *        If string, e.g., 'series', means {seriesIndex: 0}.\n *        If Object, could contain some of these properties below:\n *        {\n *            seriesIndex / seriesId / seriesName,\n *            dataIndex / dataIndexInside\n *        }\n *        If dataIndex is not specified, series visual will be fetched,\n *        but not data item visual.\n *        If all of seriesIndex, seriesId, seriesName are not specified,\n *        visual will be fetched from first series.\n * @param {string} visualType 'color', 'symbol', 'symbolSize'\n */\n\n\nechartsProto.getVisual = function (finder, visualType) {\n  var ecModel = this._model;\n  finder = modelUtil.parseFinder(ecModel, finder, {\n    defaultMainType: 'series'\n  });\n  var seriesModel = finder.seriesModel;\n  var data = seriesModel.getData();\n  var dataIndexInside = finder.hasOwnProperty('dataIndexInside') ? finder.dataIndexInside : finder.hasOwnProperty('dataIndex') ? data.indexOfRawIndex(finder.dataIndex) : null;\n  return dataIndexInside != null ? data.getItemVisual(dataIndexInside, visualType) : data.getVisual(visualType);\n};\n/**\n * Get view of corresponding component model\n * @param  {module:echarts/model/Component} componentModel\n * @return {module:echarts/view/Component}\n */\n\n\nechartsProto.getViewOfComponentModel = function (componentModel) {\n  return this._componentsMap[componentModel.__viewId];\n};\n/**\n * Get view of corresponding series model\n * @param  {module:echarts/model/Series} seriesModel\n * @return {module:echarts/view/Chart}\n */\n\n\nechartsProto.getViewOfSeriesModel = function (seriesModel) {\n  return this._chartsMap[seriesModel.__viewId];\n};\n\nvar updateMethods = {\n  prepareAndUpdate: function (payload) {\n    prepare(this);\n    updateMethods.update.call(this, payload);\n  },\n\n  /**\n   * @param {Object} payload\n   * @private\n   */\n  update: function (payload) {\n    // console.profile && console.profile('update');\n    var ecModel = this._model;\n    var api = this._api;\n    var zr = this._zr;\n    var coordSysMgr = this._coordSysMgr;\n    var scheduler = this._scheduler; // update before setOption\n\n    if (!ecModel) {\n      return;\n    }\n\n    ecModel.restoreData(payload);\n    scheduler.performSeriesTasks(ecModel); // TODO\n    // Save total ecModel here for undo/redo (after restoring data and before processing data).\n    // Undo (restoration of total ecModel) can be carried out in 'action' or outside API call.\n    // Create new coordinate system each update\n    // In LineView may save the old coordinate system and use it to get the orignal point\n\n    coordSysMgr.create(ecModel, api);\n    scheduler.performDataProcessorTasks(dataProcessorFuncs, ecModel, payload); // Current stream render is not supported in data process. So we can update\n    // stream modes after data processing, where the filtered data is used to\n    // deteming whether use progressive rendering.\n\n    updateStreamModes(this, ecModel);\n    stackSeriesData(ecModel);\n    coordSysMgr.update(ecModel, api);\n    clearColorPalette(ecModel);\n    scheduler.performVisualTasks(visualFuncs, ecModel, payload);\n    render(this, ecModel, api, payload); // Set background\n\n    var backgroundColor = ecModel.get('backgroundColor') || 'transparent';\n    var painter = zr.painter; // TODO all use clearColor ?\n\n    if (painter.isSingleCanvas && painter.isSingleCanvas()) {\n      zr.configLayer(0, {\n        clearColor: backgroundColor\n      });\n    } else {\n      // In IE8\n      if (!env.canvasSupported) {\n        var colorArr = colorTool.parse(backgroundColor);\n        backgroundColor = colorTool.stringify(colorArr, 'rgb');\n\n        if (colorArr[3] === 0) {\n          backgroundColor = 'transparent';\n        }\n      }\n\n      if (backgroundColor.colorStops || backgroundColor.image) {\n        // Gradient background\n        // FIXME Fixed layer？\n        zr.configLayer(0, {\n          clearColor: backgroundColor\n        });\n        this[HAS_GRADIENT_OR_PATTERN_BG] = true;\n        this._dom.style.background = 'transparent';\n      } else {\n        if (this[HAS_GRADIENT_OR_PATTERN_BG]) {\n          zr.configLayer(0, {\n            clearColor: null\n          });\n        }\n\n        this[HAS_GRADIENT_OR_PATTERN_BG] = false;\n        this._dom.style.background = backgroundColor;\n      }\n    }\n\n    performPostUpdateFuncs(ecModel, api); // console.profile && console.profileEnd('update');\n  },\n\n  /**\n   * @param {Object} payload\n   * @private\n   */\n  updateTransform: function (payload) {\n    var ecModel = this._model;\n    var ecIns = this;\n    var api = this._api; // update before setOption\n\n    if (!ecModel) {\n      return;\n    } // ChartView.markUpdateMethod(payload, 'updateTransform');\n\n\n    var componentDirtyList = [];\n    ecModel.eachComponent(function (componentType, componentModel) {\n      var componentView = ecIns.getViewOfComponentModel(componentModel);\n\n      if (componentView && componentView.__alive) {\n        if (componentView.updateTransform) {\n          var result = componentView.updateTransform(componentModel, ecModel, api, payload);\n          result && result.update && componentDirtyList.push(componentView);\n        } else {\n          componentDirtyList.push(componentView);\n        }\n      }\n    });\n    var seriesDirtyMap = zrUtil.createHashMap();\n    ecModel.eachSeries(function (seriesModel) {\n      var chartView = ecIns._chartsMap[seriesModel.__viewId];\n\n      if (chartView.updateTransform) {\n        var result = chartView.updateTransform(seriesModel, ecModel, api, payload);\n        result && result.update && seriesDirtyMap.set(seriesModel.uid, 1);\n      } else {\n        seriesDirtyMap.set(seriesModel.uid, 1);\n      }\n    });\n    clearColorPalette(ecModel); // Keep pipe to the exist pipeline because it depends on the render task of the full pipeline.\n    // this._scheduler.performVisualTasks(visualFuncs, ecModel, payload, 'layout', true);\n\n    this._scheduler.performVisualTasks(visualFuncs, ecModel, payload, {\n      setDirty: true,\n      dirtyMap: seriesDirtyMap\n    }); // Currently, not call render of components. Geo render cost a lot.\n    // renderComponents(ecIns, ecModel, api, payload, componentDirtyList);\n\n\n    renderSeries(ecIns, ecModel, api, payload, seriesDirtyMap);\n    performPostUpdateFuncs(ecModel, this._api);\n  },\n\n  /**\n   * @param {Object} payload\n   * @private\n   */\n  updateView: function (payload) {\n    var ecModel = this._model; // update before setOption\n\n    if (!ecModel) {\n      return;\n    }\n\n    ChartView.markUpdateMethod(payload, 'updateView');\n    clearColorPalette(ecModel); // Keep pipe to the exist pipeline because it depends on the render task of the full pipeline.\n\n    this._scheduler.performVisualTasks(visualFuncs, ecModel, payload, {\n      setDirty: true\n    });\n\n    render(this, this._model, this._api, payload);\n    performPostUpdateFuncs(ecModel, this._api);\n  },\n\n  /**\n   * @param {Object} payload\n   * @private\n   */\n  updateVisual: function (payload) {\n    updateMethods.update.call(this, payload); // var ecModel = this._model;\n    // // update before setOption\n    // if (!ecModel) {\n    //     return;\n    // }\n    // ChartView.markUpdateMethod(payload, 'updateVisual');\n    // clearColorPalette(ecModel);\n    // // Keep pipe to the exist pipeline because it depends on the render task of the full pipeline.\n    // this._scheduler.performVisualTasks(visualFuncs, ecModel, payload, {visualType: 'visual', setDirty: true});\n    // render(this, this._model, this._api, payload);\n    // performPostUpdateFuncs(ecModel, this._api);\n  },\n\n  /**\n   * @param {Object} payload\n   * @private\n   */\n  updateLayout: function (payload) {\n    updateMethods.update.call(this, payload); // var ecModel = this._model;\n    // // update before setOption\n    // if (!ecModel) {\n    //     return;\n    // }\n    // ChartView.markUpdateMethod(payload, 'updateLayout');\n    // // Keep pipe to the exist pipeline because it depends on the render task of the full pipeline.\n    // // this._scheduler.performVisualTasks(visualFuncs, ecModel, payload, 'layout', true);\n    // this._scheduler.performVisualTasks(visualFuncs, ecModel, payload, {setDirty: true});\n    // render(this, this._model, this._api, payload);\n    // performPostUpdateFuncs(ecModel, this._api);\n  }\n};\n\nfunction prepare(ecIns) {\n  var ecModel = ecIns._model;\n  var scheduler = ecIns._scheduler;\n  scheduler.restorePipelines(ecModel);\n  scheduler.prepareStageTasks(dataProcessorFuncs);\n  scheduler.prepareStageTasks(visualFuncs);\n  prepareView(ecIns, 'component', ecModel, scheduler);\n  prepareView(ecIns, 'chart', ecModel, scheduler);\n  scheduler.plan();\n}\n/**\n * @private\n */\n\n\nfunction updateDirectly(ecIns, method, payload, mainType, subType) {\n  var ecModel = ecIns._model; // broadcast\n\n  if (!mainType) {\n    // FIXME\n    // Chart will not be update directly here, except set dirty.\n    // But there is no such scenario now.\n    each(ecIns._componentsViews.concat(ecIns._chartsViews), callView);\n    return;\n  }\n\n  var query = {};\n  query[mainType + 'Id'] = payload[mainType + 'Id'];\n  query[mainType + 'Index'] = payload[mainType + 'Index'];\n  query[mainType + 'Name'] = payload[mainType + 'Name'];\n  var condition = {\n    mainType: mainType,\n    query: query\n  };\n  subType && (condition.subType = subType); // subType may be '' by parseClassType;\n  // If dispatchAction before setOption, do nothing.\n\n  ecModel && ecModel.eachComponent(condition, function (model, index) {\n    callView(ecIns[mainType === 'series' ? '_chartsMap' : '_componentsMap'][model.__viewId]);\n  }, ecIns);\n\n  function callView(view) {\n    view && view.__alive && view[method] && view[method](view.__model, ecModel, ecIns._api, payload);\n  }\n}\n/**\n * Resize the chart\n * @param {Object} opts\n * @param {number} [opts.width] Can be 'auto' (the same as null/undefined)\n * @param {number} [opts.height] Can be 'auto' (the same as null/undefined)\n * @param {boolean} [opts.silent=false]\n */\n\n\nechartsProto.resize = function (opts) {\n  this._zr.resize(opts);\n\n  var ecModel = this._model; // Resize loading effect\n\n  this._loadingFX && this._loadingFX.resize();\n\n  if (!ecModel) {\n    return;\n  }\n\n  var optionChanged = ecModel.resetOption('media');\n  refresh(this, optionChanged, opts && opts.silent);\n};\n\nfunction refresh(ecIns, needPrepare, silent) {\n  ecIns[IN_MAIN_PROCESS] = true;\n  needPrepare && prepare(ecIns);\n  updateMethods.update.call(ecIns);\n  ecIns[IN_MAIN_PROCESS] = false;\n  flushPendingActions.call(ecIns, silent);\n  triggerUpdatedEvent.call(ecIns, silent);\n}\n\nfunction updateStreamModes(ecIns, ecModel) {\n  var chartsMap = ecIns._chartsMap;\n  var scheduler = ecIns._scheduler;\n  ecModel.eachSeries(function (seriesModel) {\n    scheduler.updateStreamModes(seriesModel, chartsMap[seriesModel.__viewId]);\n  });\n}\n/**\n * Show loading effect\n * @param  {string} [name='default']\n * @param  {Object} [cfg]\n */\n\n\nechartsProto.showLoading = function (name, cfg) {\n  if (isObject(name)) {\n    cfg = name;\n    name = '';\n  }\n\n  name = name || 'default';\n  this.hideLoading();\n\n  if (!loadingEffects[name]) {\n    return;\n  }\n\n  var el = loadingEffects[name](this._api, cfg);\n  var zr = this._zr;\n  this._loadingFX = el;\n  zr.add(el);\n};\n/**\n * Hide loading effect\n */\n\n\nechartsProto.hideLoading = function () {\n  this._loadingFX && this._zr.remove(this._loadingFX);\n  this._loadingFX = null;\n};\n/**\n * @param {Object} eventObj\n * @return {Object}\n */\n\n\nechartsProto.makeActionFromEvent = function (eventObj) {\n  var payload = zrUtil.extend({}, eventObj);\n  payload.type = eventActionMap[eventObj.type];\n  return payload;\n};\n/**\n * @pubilc\n * @param {Object} payload\n * @param {string} [payload.type] Action type\n * @param {Object|boolean} [opt] If pass boolean, means opt.silent\n * @param {boolean} [opt.silent=false] Whether trigger events.\n * @param {boolean} [opt.flush=undefined]\n *                  true: Flush immediately, and then pixel in canvas can be fetched\n *                      immediately. Caution: it might affect performance.\n *                  false: Not not flush.\n *                  undefined: Auto decide whether perform flush.\n */\n\n\nechartsProto.dispatchAction = function (payload, opt) {\n  if (!isObject(opt)) {\n    opt = {\n      silent: !!opt\n    };\n  }\n\n  if (!actions[payload.type]) {\n    return;\n  } // Avoid dispatch action before setOption. Especially in `connect`.\n\n\n  if (!this._model) {\n    return;\n  } // May dispatchAction in rendering procedure\n\n\n  if (this[IN_MAIN_PROCESS]) {\n    this._pendingActions.push(payload);\n\n    return;\n  }\n\n  doDispatchAction.call(this, payload, opt.silent);\n\n  if (opt.flush) {\n    this._zr.flush(true);\n  } else if (opt.flush !== false && env.browser.weChat) {\n    // In WeChat embeded browser, `requestAnimationFrame` and `setInterval`\n    // hang when sliding page (on touch event), which cause that zr does not\n    // refresh util user interaction finished, which is not expected.\n    // But `dispatchAction` may be called too frequently when pan on touch\n    // screen, which impacts performance if do not throttle them.\n    this._throttledZrFlush();\n  }\n\n  flushPendingActions.call(this, opt.silent);\n  triggerUpdatedEvent.call(this, opt.silent);\n};\n\nfunction doDispatchAction(payload, silent) {\n  var payloadType = payload.type;\n  var escapeConnect = payload.escapeConnect;\n  var actionWrap = actions[payloadType];\n  var actionInfo = actionWrap.actionInfo;\n  var cptType = (actionInfo.update || 'update').split(':');\n  var updateMethod = cptType.pop();\n  cptType = cptType[0] != null && parseClassType(cptType[0]);\n  this[IN_MAIN_PROCESS] = true;\n  var payloads = [payload];\n  var batched = false; // Batch action\n\n  if (payload.batch) {\n    batched = true;\n    payloads = zrUtil.map(payload.batch, function (item) {\n      item = zrUtil.defaults(zrUtil.extend({}, item), payload);\n      item.batch = null;\n      return item;\n    });\n  }\n\n  var eventObjBatch = [];\n  var eventObj;\n  var isHighDown = payloadType === 'highlight' || payloadType === 'downplay';\n  each(payloads, function (batchItem) {\n    // Action can specify the event by return it.\n    eventObj = actionWrap.action(batchItem, this._model, this._api); // Emit event outside\n\n    eventObj = eventObj || zrUtil.extend({}, batchItem); // Convert type to eventType\n\n    eventObj.type = actionInfo.event || eventObj.type;\n    eventObjBatch.push(eventObj); // light update does not perform data process, layout and visual.\n\n    if (isHighDown) {\n      // method, payload, mainType, subType\n      updateDirectly(this, updateMethod, batchItem, 'series');\n    } else if (cptType) {\n      updateDirectly(this, updateMethod, batchItem, cptType.main, cptType.sub);\n    }\n  }, this);\n\n  if (updateMethod !== 'none' && !isHighDown && !cptType) {\n    // Still dirty\n    if (this[OPTION_UPDATED]) {\n      // FIXME Pass payload ?\n      prepare(this);\n      updateMethods.update.call(this, payload);\n      this[OPTION_UPDATED] = false;\n    } else {\n      updateMethods[updateMethod].call(this, payload);\n    }\n  } // Follow the rule of action batch\n\n\n  if (batched) {\n    eventObj = {\n      type: actionInfo.event || payloadType,\n      escapeConnect: escapeConnect,\n      batch: eventObjBatch\n    };\n  } else {\n    eventObj = eventObjBatch[0];\n  }\n\n  this[IN_MAIN_PROCESS] = false;\n  !silent && this._messageCenter.trigger(eventObj.type, eventObj);\n}\n\nfunction flushPendingActions(silent) {\n  var pendingActions = this._pendingActions;\n\n  while (pendingActions.length) {\n    var payload = pendingActions.shift();\n    doDispatchAction.call(this, payload, silent);\n  }\n}\n\nfunction triggerUpdatedEvent(silent) {\n  !silent && this.trigger('updated');\n}\n/**\n * @param {Object} params\n * @param {number} params.seriesIndex\n * @param {Array|TypedArray} params.data\n */\n\n\nechartsProto.appendData = function (params) {\n  var seriesIndex = params.seriesIndex;\n  var ecModel = this.getModel();\n  var seriesModel = ecModel.getSeriesByIndex(seriesIndex);\n  seriesModel.appendData(params);\n  this._scheduler.unfinished = true;\n};\n/**\n * Register event\n * @method\n */\n\n\nechartsProto.on = createRegisterEventWithLowercaseName('on');\nechartsProto.off = createRegisterEventWithLowercaseName('off');\nechartsProto.one = createRegisterEventWithLowercaseName('one');\n/**\n * Prepare view instances of charts and components\n * @param  {module:echarts/model/Global} ecModel\n * @private\n */\n\nfunction prepareView(ecIns, type, ecModel, scheduler) {\n  var isComponent = type === 'component';\n  var viewList = isComponent ? ecIns._componentsViews : ecIns._chartsViews;\n  var viewMap = isComponent ? ecIns._componentsMap : ecIns._chartsMap;\n  var zr = ecIns._zr;\n  var api = ecIns._api;\n\n  for (var i = 0; i < viewList.length; i++) {\n    viewList[i].__alive = false;\n  }\n\n  isComponent ? ecModel.eachComponent(function (componentType, model) {\n    componentType !== 'series' && doPrepare(model);\n  }) : ecModel.eachSeries(doPrepare);\n\n  function doPrepare(model) {\n    // Consider: id same and type changed.\n    var viewId = '_ec_' + model.id + '_' + model.type;\n    var view = viewMap[viewId];\n\n    if (!view) {\n      var classType = parseClassType(model.type);\n      var Clazz = isComponent ? ComponentView.getClass(classType.main, classType.sub) : ChartView.getClass(classType.sub);\n      view = new Clazz();\n      view.init(ecModel, api);\n      viewMap[viewId] = view;\n      viewList.push(view);\n      zr.add(view.group);\n    }\n\n    model.__viewId = view.__id = viewId;\n    view.__alive = true;\n    view.__model = model;\n    view.group.__ecComponentInfo = {\n      mainType: model.mainType,\n      index: model.componentIndex\n    };\n    !isComponent && scheduler.prepareView(view, model, ecModel, api);\n  }\n\n  for (var i = 0; i < viewList.length;) {\n    var view = viewList[i];\n\n    if (!view.__alive) {\n      !isComponent && view.renderTask.dispose();\n      zr.remove(view.group);\n      view.dispose(ecModel, api);\n      viewList.splice(i, 1);\n      delete viewMap[view.__id];\n      view.__id = view.group.__ecComponentInfo = null;\n    } else {\n      i++;\n    }\n  }\n}\n/**\n * @private\n */\n\n\nfunction stackSeriesData(ecModel) {\n  var stackedDataMap = {};\n  ecModel.eachSeries(function (series) {\n    var stack = series.get('stack');\n    var data = series.getData();\n\n    if (stack && data.type === 'list') {\n      var previousStack = stackedDataMap[stack]; // Avoid conflict with Object.prototype\n\n      if (stackedDataMap.hasOwnProperty(stack) && previousStack) {\n        data.stackedOn = previousStack;\n      }\n\n      stackedDataMap[stack] = data;\n    }\n  });\n} // /**\n//  * Encode visual infomation from data after data processing\n//  *\n//  * @param {module:echarts/model/Global} ecModel\n//  * @param {object} layout\n//  * @param {boolean} [layoutFilter] `true`: only layout,\n//  *                                 `false`: only not layout,\n//  *                                 `null`/`undefined`: all.\n//  * @param {string} taskBaseTag\n//  * @private\n//  */\n// function startVisualEncoding(ecIns, ecModel, api, payload, layoutFilter) {\n//     each(visualFuncs, function (visual, index) {\n//         var isLayout = visual.isLayout;\n//         if (layoutFilter == null\n//             || (layoutFilter === false && !isLayout)\n//             || (layoutFilter === true && isLayout)\n//         ) {\n//             visual.func(ecModel, api, payload);\n//         }\n//     });\n// }\n\n\nfunction clearColorPalette(ecModel) {\n  ecModel.clearColorPalette();\n  ecModel.eachSeries(function (seriesModel) {\n    seriesModel.clearColorPalette();\n  });\n}\n\nfunction render(ecIns, ecModel, api, payload) {\n  renderComponents(ecIns, ecModel, api, payload);\n  each(ecIns._chartsViews, function (chart) {\n    chart.__alive = false;\n  });\n  renderSeries(ecIns, ecModel, api, payload); // Remove groups of unrendered charts\n\n  each(ecIns._chartsViews, function (chart) {\n    if (!chart.__alive) {\n      chart.remove(ecModel, api);\n    }\n  });\n}\n\nfunction renderComponents(ecIns, ecModel, api, payload, dirtyList) {\n  each(dirtyList || ecIns._componentsViews, function (componentView) {\n    var componentModel = componentView.__model;\n    componentView.render(componentModel, ecModel, api, payload);\n    updateZ(componentModel, componentView);\n  });\n}\n/**\n * Render each chart and component\n * @private\n */\n\n\nfunction renderSeries(ecIns, ecModel, api, payload, dirtyMap) {\n  // Render all charts\n  var scheduler = ecIns._scheduler;\n  var unfinished;\n  ecModel.eachSeries(function (seriesModel) {\n    var chartView = ecIns._chartsMap[seriesModel.__viewId];\n    chartView.__alive = true;\n    var renderTask = chartView.renderTask;\n    scheduler.updatePayload(renderTask, payload);\n\n    if (dirtyMap && dirtyMap.get(seriesModel.uid)) {\n      renderTask.dirty();\n    }\n\n    unfinished |= renderTask.perform(scheduler.getPerformArgs(renderTask));\n    chartView.group.silent = !!seriesModel.get('silent');\n    updateZ(seriesModel, chartView);\n    updateBlend(seriesModel, chartView);\n  });\n  scheduler.unfinished |= unfinished; // If use hover layer\n\n  updateHoverLayerStatus(ecIns._zr, ecModel); // Add aria\n\n  aria(ecIns._zr.dom, ecModel);\n}\n\nfunction performPostUpdateFuncs(ecModel, api) {\n  each(postUpdateFuncs, function (func) {\n    func(ecModel, api);\n  });\n}\n\nvar MOUSE_EVENT_NAMES = ['click', 'dblclick', 'mouseover', 'mouseout', 'mousemove', 'mousedown', 'mouseup', 'globalout', 'contextmenu'];\n/**\n * @private\n */\n\nechartsProto._initEvents = function () {\n  each(MOUSE_EVENT_NAMES, function (eveName) {\n    this._zr.on(eveName, function (e) {\n      var ecModel = this.getModel();\n      var el = e.target;\n      var params; // no e.target when 'globalout'.\n\n      if (eveName === 'globalout') {\n        params = {};\n      } else if (el && el.dataIndex != null) {\n        var dataModel = el.dataModel || ecModel.getSeriesByIndex(el.seriesIndex);\n        params = dataModel && dataModel.getDataParams(el.dataIndex, el.dataType) || {};\n      } // If element has custom eventData of components\n      else if (el && el.eventData) {\n          params = zrUtil.extend({}, el.eventData);\n        }\n\n      if (params) {\n        params.event = e;\n        params.type = eveName;\n        this.trigger(eveName, params);\n      }\n    }, this);\n  }, this);\n  each(eventActionMap, function (actionType, eventType) {\n    this._messageCenter.on(eventType, function (event) {\n      this.trigger(eventType, event);\n    }, this);\n  }, this);\n};\n/**\n * @return {boolean}\n */\n\n\nechartsProto.isDisposed = function () {\n  return this._disposed;\n};\n/**\n * Clear\n */\n\n\nechartsProto.clear = function () {\n  this.setOption({\n    series: []\n  }, true);\n};\n/**\n * Dispose instance\n */\n\n\nechartsProto.dispose = function () {\n  if (this._disposed) {\n    return;\n  }\n\n  this._disposed = true;\n  modelUtil.setAttribute(this.getDom(), DOM_ATTRIBUTE_KEY, '');\n  var api = this._api;\n  var ecModel = this._model;\n  each(this._componentsViews, function (component) {\n    component.dispose(ecModel, api);\n  });\n  each(this._chartsViews, function (chart) {\n    chart.dispose(ecModel, api);\n  }); // Dispose after all views disposed\n\n  this._zr.dispose();\n\n  delete instances[this.id];\n};\n\nzrUtil.mixin(ECharts, Eventful);\n\nfunction updateHoverLayerStatus(zr, ecModel) {\n  var storage = zr.storage;\n  var elCount = 0;\n  storage.traverse(function (el) {\n    if (!el.isGroup) {\n      elCount++;\n    }\n  });\n\n  if (elCount > ecModel.get('hoverLayerThreshold') && !env.node) {\n    storage.traverse(function (el) {\n      if (!el.isGroup) {\n        // Don't switch back.\n        el.useHoverLayer = true;\n      }\n    });\n  }\n}\n/**\n * Update chart progressive and blend.\n * @param {module:echarts/model/Series|module:echarts/model/Component} model\n * @param {module:echarts/view/Component|module:echarts/view/Chart} view\n */\n\n\nfunction updateBlend(seriesModel, chartView) {\n  var blendMode = seriesModel.get('blendMode') || null;\n  chartView.group.traverse(function (el) {\n    // FIXME marker and other components\n    if (!el.isGroup) {\n      // Only set if blendMode is changed. In case element is incremental and don't wan't to rerender.\n      if (el.style.blend !== blendMode) {\n        el.setStyle('blend', blendMode);\n      }\n    }\n\n    if (el.eachPendingDisplayable) {\n      el.eachPendingDisplayable(function (displayable) {\n        displayable.setStyle('blend', blendMode);\n      });\n    }\n  });\n}\n/**\n * @param {module:echarts/model/Series|module:echarts/model/Component} model\n * @param {module:echarts/view/Component|module:echarts/view/Chart} view\n */\n\n\nfunction updateZ(model, view) {\n  var z = model.get('z');\n  var zlevel = model.get('zlevel'); // Set z and zlevel\n\n  view.group.traverse(function (el) {\n    if (el.type !== 'group') {\n      z != null && (el.z = z);\n      zlevel != null && (el.zlevel = zlevel);\n    }\n  });\n}\n\nfunction createExtensionAPI(ecInstance) {\n  var coordSysMgr = ecInstance._coordSysMgr;\n  return zrUtil.extend(new ExtensionAPI(ecInstance), {\n    // Inject methods\n    getCoordinateSystems: zrUtil.bind(coordSysMgr.getCoordinateSystems, coordSysMgr),\n    getComponentByElement: function (el) {\n      while (el) {\n        var modelInfo = el.__ecComponentInfo;\n\n        if (modelInfo != null) {\n          return ecInstance._model.getComponent(modelInfo.mainType, modelInfo.index);\n        }\n\n        el = el.parent;\n      }\n    }\n  });\n}\n/**\n * @type {Object} key: actionType.\n * @inner\n */\n\n\nvar actions = {};\n/**\n * Map eventType to actionType\n * @type {Object}\n */\n\nvar eventActionMap = {};\n/**\n * Data processor functions of each stage\n * @type {Array.<Object.<string, Function>>}\n * @inner\n */\n\nvar dataProcessorFuncs = [];\n/**\n * @type {Array.<Function>}\n * @inner\n */\n\nvar optionPreprocessorFuncs = [];\n/**\n * @type {Array.<Function>}\n * @inner\n */\n\nvar postUpdateFuncs = [];\n/**\n * Visual encoding functions of each stage\n * @type {Array.<Object.<string, Function>>}\n */\n\nvar visualFuncs = [];\n/**\n * Theme storage\n * @type {Object.<key, Object>}\n */\n\nvar themeStorage = {};\n/**\n * Loading effects\n */\n\nvar loadingEffects = {};\nvar instances = {};\nvar connectedGroups = {};\nvar idBase = new Date() - 0;\nvar groupIdBase = new Date() - 0;\nvar DOM_ATTRIBUTE_KEY = '_echarts_instance_';\nvar mapDataStores = {};\n\nfunction enableConnect(chart) {\n  var STATUS_PENDING = 0;\n  var STATUS_UPDATING = 1;\n  var STATUS_UPDATED = 2;\n  var STATUS_KEY = '__connectUpdateStatus';\n\n  function updateConnectedChartsStatus(charts, status) {\n    for (var i = 0; i < charts.length; i++) {\n      var otherChart = charts[i];\n      otherChart[STATUS_KEY] = status;\n    }\n  }\n\n  each(eventActionMap, function (actionType, eventType) {\n    chart._messageCenter.on(eventType, function (event) {\n      if (connectedGroups[chart.group] && chart[STATUS_KEY] !== STATUS_PENDING) {\n        if (event && event.escapeConnect) {\n          return;\n        }\n\n        var action = chart.makeActionFromEvent(event);\n        var otherCharts = [];\n        each(instances, function (otherChart) {\n          if (otherChart !== chart && otherChart.group === chart.group) {\n            otherCharts.push(otherChart);\n          }\n        });\n        updateConnectedChartsStatus(otherCharts, STATUS_PENDING);\n        each(otherCharts, function (otherChart) {\n          if (otherChart[STATUS_KEY] !== STATUS_UPDATING) {\n            otherChart.dispatchAction(action);\n          }\n        });\n        updateConnectedChartsStatus(otherCharts, STATUS_UPDATED);\n      }\n    });\n  });\n}\n/**\n * @param {HTMLElement} dom\n * @param {Object} [theme]\n * @param {Object} opts\n * @param {number} [opts.devicePixelRatio] Use window.devicePixelRatio by default\n * @param {string} [opts.renderer] Currently only 'canvas' is supported.\n * @param {number} [opts.width] Use clientWidth of the input `dom` by default.\n *                              Can be 'auto' (the same as null/undefined)\n * @param {number} [opts.height] Use clientHeight of the input `dom` by default.\n *                               Can be 'auto' (the same as null/undefined)\n */\n\n\nfunction init(dom, theme, opts) {\n  var existInstance = getInstanceByDom(dom);\n\n  if (existInstance) {\n    return existInstance;\n  }\n\n  var chart = new ECharts(dom, theme, opts);\n  chart.id = 'ec_' + idBase++;\n  instances[chart.id] = chart;\n  modelUtil.setAttribute(dom, DOM_ATTRIBUTE_KEY, chart.id);\n  enableConnect(chart);\n  return chart;\n}\n/**\n * @return {string|Array.<module:echarts~ECharts>} groupId\n */\n\n\nfunction connect(groupId) {\n  // Is array of charts\n  if (zrUtil.isArray(groupId)) {\n    var charts = groupId;\n    groupId = null; // If any chart has group\n\n    each(charts, function (chart) {\n      if (chart.group != null) {\n        groupId = chart.group;\n      }\n    });\n    groupId = groupId || 'g_' + groupIdBase++;\n    each(charts, function (chart) {\n      chart.group = groupId;\n    });\n  }\n\n  connectedGroups[groupId] = true;\n  return groupId;\n}\n/**\n * @DEPRECATED\n * @return {string} groupId\n */\n\n\nfunction disConnect(groupId) {\n  connectedGroups[groupId] = false;\n}\n/**\n * @return {string} groupId\n */\n\n\nvar disconnect = disConnect;\n/**\n * Dispose a chart instance\n * @param  {module:echarts~ECharts|HTMLDomElement|string} chart\n */\n\nfunction dispose(chart) {\n  if (typeof chart === 'string') {\n    chart = instances[chart];\n  } else if (!(chart instanceof ECharts)) {\n    // Try to treat as dom\n    chart = getInstanceByDom(chart);\n  }\n\n  if (chart instanceof ECharts && !chart.isDisposed()) {\n    chart.dispose();\n  }\n}\n/**\n * @param  {HTMLElement} dom\n * @return {echarts~ECharts}\n */\n\n\nfunction getInstanceByDom(dom) {\n  return instances[modelUtil.getAttribute(dom, DOM_ATTRIBUTE_KEY)];\n}\n/**\n * @param {string} key\n * @return {echarts~ECharts}\n */\n\n\nfunction getInstanceById(key) {\n  return instances[key];\n}\n/**\n * Register theme\n */\n\n\nfunction registerTheme(name, theme) {\n  themeStorage[name] = theme;\n}\n/**\n * Register option preprocessor\n * @param {Function} preprocessorFunc\n */\n\n\nfunction registerPreprocessor(preprocessorFunc) {\n  optionPreprocessorFuncs.push(preprocessorFunc);\n}\n/**\n * @param {number} [priority=1000]\n * @param {Object|Function} processor\n */\n\n\nfunction registerProcessor(priority, processor) {\n  normalizeRegister(dataProcessorFuncs, priority, processor, PRIORITY_PROCESSOR_FILTER);\n}\n/**\n * Register postUpdater\n * @param {Function} postUpdateFunc\n */\n\n\nfunction registerPostUpdate(postUpdateFunc) {\n  postUpdateFuncs.push(postUpdateFunc);\n}\n/**\n * Usage:\n * registerAction('someAction', 'someEvent', function () { ... });\n * registerAction('someAction', function () { ... });\n * registerAction(\n *     {type: 'someAction', event: 'someEvent', update: 'updateView'},\n *     function () { ... }\n * );\n *\n * @param {(string|Object)} actionInfo\n * @param {string} actionInfo.type\n * @param {string} [actionInfo.event]\n * @param {string} [actionInfo.update]\n * @param {string} [eventName]\n * @param {Function} action\n */\n\n\nfunction registerAction(actionInfo, eventName, action) {\n  if (typeof eventName === 'function') {\n    action = eventName;\n    eventName = '';\n  }\n\n  var actionType = isObject(actionInfo) ? actionInfo.type : [actionInfo, actionInfo = {\n    event: eventName\n  }][0]; // Event name is all lowercase\n\n  actionInfo.event = (actionInfo.event || actionType).toLowerCase();\n  eventName = actionInfo.event; // Validate action type and event name.\n\n  assert(ACTION_REG.test(actionType) && ACTION_REG.test(eventName));\n\n  if (!actions[actionType]) {\n    actions[actionType] = {\n      action: action,\n      actionInfo: actionInfo\n    };\n  }\n\n  eventActionMap[eventName] = actionType;\n}\n/**\n * @param {string} type\n * @param {*} CoordinateSystem\n */\n\n\nfunction registerCoordinateSystem(type, CoordinateSystem) {\n  CoordinateSystemManager.register(type, CoordinateSystem);\n}\n/**\n * Get dimensions of specified coordinate system.\n * @param {string} type\n * @return {Array.<string|Object>}\n */\n\n\nfunction getCoordinateSystemDimensions(type) {\n  var coordSysCreator = CoordinateSystemManager.get(type);\n\n  if (coordSysCreator) {\n    return coordSysCreator.getDimensionsInfo ? coordSysCreator.getDimensionsInfo() : coordSysCreator.dimensions.slice();\n  }\n}\n/**\n * Layout is a special stage of visual encoding\n * Most visual encoding like color are common for different chart\n * But each chart has it's own layout algorithm\n *\n * @param {number} [priority=1000]\n * @param {Function} layoutTask\n */\n\n\nfunction registerLayout(priority, layoutTask) {\n  normalizeRegister(visualFuncs, priority, layoutTask, PRIORITY_VISUAL_LAYOUT, 'layout');\n}\n/**\n * @param {number} [priority=3000]\n * @param {module:echarts/stream/Task} visualTask\n */\n\n\nfunction registerVisual(priority, visualTask) {\n  normalizeRegister(visualFuncs, priority, visualTask, PRIORITY_VISUAL_CHART, 'visual');\n}\n/**\n * @param {Object|Function} fn: {seriesType, createOnAllSeries, performRawSeries, reset}\n */\n\n\nfunction normalizeRegister(targetList, priority, fn, defaultPriority, visualType) {\n  if (isFunction(priority) || isObject(priority)) {\n    fn = priority;\n    priority = defaultPriority;\n  }\n\n  var stageHandler = Scheduler.wrapStageHandler(fn, visualType);\n  stageHandler.__prio = priority;\n  stageHandler.__raw = fn;\n  targetList.push(stageHandler);\n  return stageHandler;\n}\n/**\n * @param {string} name\n */\n\n\nfunction registerLoading(name, loadingFx) {\n  loadingEffects[name] = loadingFx;\n}\n/**\n * @param {Object} opts\n * @param {string} [superClass]\n */\n\n\nfunction extendComponentModel(opts\n/*, superClass*/\n) {\n  // var Clazz = ComponentModel;\n  // if (superClass) {\n  //     var classType = parseClassType(superClass);\n  //     Clazz = ComponentModel.getClass(classType.main, classType.sub, true);\n  // }\n  return ComponentModel.extend(opts);\n}\n/**\n * @param {Object} opts\n * @param {string} [superClass]\n */\n\n\nfunction extendComponentView(opts\n/*, superClass*/\n) {\n  // var Clazz = ComponentView;\n  // if (superClass) {\n  //     var classType = parseClassType(superClass);\n  //     Clazz = ComponentView.getClass(classType.main, classType.sub, true);\n  // }\n  return ComponentView.extend(opts);\n}\n/**\n * @param {Object} opts\n * @param {string} [superClass]\n */\n\n\nfunction extendSeriesModel(opts\n/*, superClass*/\n) {\n  // var Clazz = SeriesModel;\n  // if (superClass) {\n  //     superClass = 'series.' + superClass.replace('series.', '');\n  //     var classType = parseClassType(superClass);\n  //     Clazz = ComponentModel.getClass(classType.main, classType.sub, true);\n  // }\n  return SeriesModel.extend(opts);\n}\n/**\n * @param {Object} opts\n * @param {string} [superClass]\n */\n\n\nfunction extendChartView(opts\n/*, superClass*/\n) {\n  // var Clazz = ChartView;\n  // if (superClass) {\n  //     superClass = superClass.replace('series.', '');\n  //     var classType = parseClassType(superClass);\n  //     Clazz = ChartView.getClass(classType.main, true);\n  // }\n  return ChartView.extend(opts);\n}\n/**\n * ZRender need a canvas context to do measureText.\n * But in node environment canvas may be created by node-canvas.\n * So we need to specify how to create a canvas instead of using document.createElement('canvas')\n *\n * Be careful of using it in the browser.\n *\n * @param {Function} creator\n * @example\n *     var Canvas = require('canvas');\n *     var echarts = require('echarts');\n *     echarts.setCanvasCreator(function () {\n *         // Small size is enough.\n *         return new Canvas(32, 32);\n *     });\n */\n\n\nfunction setCanvasCreator(creator) {\n  zrUtil.$override('createCanvas', creator);\n}\n/**\n * @param {string} mapName\n * @param {Object|string} geoJson\n * @param {Object} [specialAreas]\n *\n * @example\n *     $.get('USA.json', function (geoJson) {\n *         echarts.registerMap('USA', geoJson);\n *         // Or\n *         echarts.registerMap('USA', {\n *             geoJson: geoJson,\n *             specialAreas: {}\n *         })\n *     });\n */\n\n\nfunction registerMap(mapName, geoJson, specialAreas) {\n  if (geoJson.geoJson && !geoJson.features) {\n    specialAreas = geoJson.specialAreas;\n    geoJson = geoJson.geoJson;\n  }\n\n  if (typeof geoJson === 'string') {\n    geoJson = typeof JSON !== 'undefined' && JSON.parse ? JSON.parse(geoJson) : new Function('return (' + geoJson + ');')();\n  }\n\n  mapDataStores[mapName] = {\n    geoJson: geoJson,\n    specialAreas: specialAreas\n  };\n}\n/**\n * @param {string} mapName\n * @return {Object}\n */\n\n\nfunction getMap(mapName) {\n  return mapDataStores[mapName];\n}\n\nregisterVisual(PRIORITY_VISUAL_GLOBAL, seriesColor);\nregisterPreprocessor(backwardCompat);\nregisterLoading('default', loadingDefault); // Default actions\n\nregisterAction({\n  type: 'highlight',\n  event: 'highlight',\n  update: 'highlight'\n}, zrUtil.noop);\nregisterAction({\n  type: 'downplay',\n  event: 'downplay',\n  update: 'downplay'\n}, zrUtil.noop); // Default theme\n\nregisterTheme('light', lightTheme);\nregisterTheme('dark', darkTheme); // For backward compatibility, where the namespace `dataTool` will\n// be mounted on `echarts` is the extension `dataTool` is imported.\n\nvar dataTool = {};\nexports.version = version;\nexports.dependencies = dependencies;\nexports.PRIORITY = PRIORITY;\nexports.init = init;\nexports.connect = connect;\nexports.disConnect = disConnect;\nexports.disconnect = disconnect;\nexports.dispose = dispose;\nexports.getInstanceByDom = getInstanceByDom;\nexports.getInstanceById = getInstanceById;\nexports.registerTheme = registerTheme;\nexports.registerPreprocessor = registerPreprocessor;\nexports.registerProcessor = registerProcessor;\nexports.registerPostUpdate = registerPostUpdate;\nexports.registerAction = registerAction;\nexports.registerCoordinateSystem = registerCoordinateSystem;\nexports.getCoordinateSystemDimensions = getCoordinateSystemDimensions;\nexports.registerLayout = registerLayout;\nexports.registerVisual = registerVisual;\nexports.registerLoading = registerLoading;\nexports.extendComponentModel = extendComponentModel;\nexports.extendComponentView = extendComponentView;\nexports.extendSeriesModel = extendSeriesModel;\nexports.extendChartView = extendChartView;\nexports.setCanvasCreator = setCanvasCreator;\nexports.registerMap = registerMap;\nexports.getMap = getMap;\nexports.dataTool = dataTool;\nvar ___ec_export = require(\"./export\");\n(function () {\n    for (var key in ___ec_export) {\n        if (___ec_export.hasOwnProperty(key)) {\n            exports[key] = ___ec_export[key];\n        }\n    }\n})();","var zrender = require(\"zrender/lib/zrender\");\n\nexports.zrender = zrender;\n\nvar matrix = require(\"zrender/lib/core/matrix\");\n\nexports.matrix = matrix;\n\nvar vector = require(\"zrender/lib/core/vector\");\n\nexports.vector = vector;\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar colorTool = require(\"zrender/lib/tool/color\");\n\nexports.color = colorTool;\n\nvar graphic = require(\"./util/graphic\");\n\nexports.graphic = graphic;\n\nvar numberUtil = require(\"./util/number\");\n\nexports.number = numberUtil;\n\nvar formatUtil = require(\"./util/format\");\n\nexports.format = formatUtil;\n\nvar _throttle = require(\"./util/throttle\");\n\nvar throttle = _throttle.throttle;\nexports.throttle = _throttle.throttle;\n\nvar ecHelper = require(\"./helper\");\n\nexports.helper = ecHelper;\n\nvar parseGeoJSON = require(\"./coord/geo/parseGeoJson\");\n\nexports.parseGeoJSON = parseGeoJSON;\n\nvar _List = require(\"./data/List\");\n\nexports.List = _List;\n\nvar _Model = require(\"./model/Model\");\n\nexports.Model = _Model;\n\nvar _Axis = require(\"./coord/Axis\");\n\nexports.Axis = _Axis;\n\nvar _env = require(\"zrender/lib/core/env\");\n\nexports.env = _env;\n\n/**\n * Do not mount those modules on 'src/echarts' for better tree shaking.\n */\nvar parseGeoJson = parseGeoJSON;\nvar ecUtil = {};\nzrUtil.each(['map', 'each', 'filter', 'indexOf', 'inherits', 'reduce', 'filter', 'bind', 'curry', 'isArray', 'isString', 'isObject', 'isFunction', 'extend', 'defaults', 'clone', 'merge'], function (name) {\n  ecUtil[name] = zrUtil[name];\n});\nexports.parseGeoJson = parseGeoJson;\nexports.util = ecUtil;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar createListFromArray = require(\"./chart/helper/createListFromArray\");\n\nvar axisHelper = require(\"./coord/axisHelper\");\n\nvar axisModelCommonMixin = require(\"./coord/axisModelCommonMixin\");\n\nvar Model = require(\"./model/Model\");\n\nvar _layout = require(\"./util/layout\");\n\nvar getLayoutRect = _layout.getLayoutRect;\nexports.getLayoutRect = _layout.getLayoutRect;\n\nvar _completeDimensions = require(\"./data/helper/completeDimensions\");\n\nexports.completeDimensions = _completeDimensions;\n\nvar _createDimensions = require(\"./data/helper/createDimensions\");\n\nexports.createDimensions = _createDimensions;\n\nvar _symbol = require(\"./util/symbol\");\n\nexports.createSymbol = _symbol.createSymbol;\n\n// import createGraphFromNodeEdge from './chart/helper/createGraphFromNodeEdge';\n\n/**\n * Create a muti dimension List structure from seriesModel.\n * @param  {module:echarts/model/Model} seriesModel\n * @return {module:echarts/data/List} list\n */\nfunction createList(seriesModel) {\n  return createListFromArray(seriesModel.getSource(), seriesModel);\n} // export function createGraph(seriesModel) {\n//     var nodes = seriesModel.get('data');\n//     var links = seriesModel.get('links');\n//     return createGraphFromNodeEdge(nodes, links, seriesModel);\n// }\n\n\n/**\n * Create scale\n * @param {Array.<number>} dataExtent\n * @param {Object|module:echarts/Model} option\n */\nfunction createScale(dataExtent, option) {\n  var axisModel = option;\n\n  if (!Model.isInstance(option)) {\n    axisModel = new Model(option);\n    zrUtil.mixin(axisModel, axisModelCommonMixin);\n  }\n\n  var scale = axisHelper.createScaleByModel(axisModel);\n  scale.setExtent(dataExtent[0], dataExtent[1]);\n  axisHelper.niceScaleExtent(scale, axisModel);\n  return scale;\n}\n/**\n * Mixin common methods to axis model,\n *\n * Inlcude methods\n * `getFormattedLabels() => Array.<string>`\n * `getCategories() => Array.<string>`\n * `getMin(origin: boolean) => number`\n * `getMax(origin: boolean) => number`\n * `getNeedCrossZero() => boolean`\n * `setRange(start: number, end: number)`\n * `resetRange()`\n */\n\n\nfunction mixinAxisModelCommonMethods(Model) {\n  zrUtil.mixin(Model, axisModelCommonMixin);\n}\n\nexports.createList = createList;\nexports.createScale = createScale;\nexports.mixinAxisModelCommonMethods = mixinAxisModelCommonMethods;","var _default = {\n  toolbox: {\n    brush: {\n      title: {\n        rect: '矩形选择',\n        polygon: '圈选',\n        lineX: '横向选择',\n        lineY: '纵向选择',\n        keep: '保持选择',\n        clear: '清除选择'\n      }\n    },\n    dataView: {\n      title: '数据视图',\n      lang: ['数据视图', '关闭', '刷新']\n    },\n    dataZoom: {\n      title: {\n        zoom: '区域缩放',\n        back: '区域缩放还原'\n      }\n    },\n    magicType: {\n      title: {\n        line: '切换为折线图',\n        bar: '切换为柱状图',\n        stack: '切换为堆叠',\n        tiled: '切换为平铺'\n      }\n    },\n    restore: {\n      title: '还原'\n    },\n    saveAsImage: {\n      title: '保存为图片',\n      lang: ['右键另存为图片']\n    }\n  },\n  series: {\n    typeNames: {\n      pie: '饼图',\n      bar: '柱状图',\n      line: '折线图',\n      scatter: '散点图',\n      effectScatter: '涟漪散点图',\n      radar: '雷达图',\n      tree: '树图',\n      treemap: '矩形树图',\n      boxplot: '箱型图',\n      candlestick: 'K线图',\n      k: 'K线图',\n      heatmap: '热力图',\n      map: '地图',\n      parallel: '平行坐标图',\n      lines: '线图',\n      graph: '关系图',\n      sankey: '桑基图',\n      funnel: '漏斗图',\n      gauge: '仪表盘图',\n      pictorialBar: '象形柱图',\n      themeRiver: '主题河流图',\n      sunburst: '旭日图'\n    }\n  },\n  aria: {\n    general: {\n      withTitle: '这是一个关于“{title}”的图表。',\n      withoutTitle: '这是一个图表，'\n    },\n    series: {\n      single: {\n        prefix: '',\n        withName: '图表类型是{seriesType}，表示{seriesName}。',\n        withoutName: '图表类型是{seriesType}。'\n      },\n      multiple: {\n        prefix: '它由{seriesCount}个图表系列组成。',\n        withName: '第{seriesId}个系列是一个表示{seriesName}的{seriesType}，',\n        withoutName: '第{seriesId}个系列是一个{seriesType}，',\n        separator: {\n          middle: '；',\n          end: '。'\n        }\n      }\n    },\n    data: {\n      allData: '其数据是——',\n      partialData: '其中，前{displayCnt}项是——',\n      withName: '{name}的数据是{value}',\n      withoutName: '{value}',\n      separator: {\n        middle: '，',\n        end: ''\n      }\n    }\n  }\n};\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar _number = require(\"../util/number\");\n\nvar parsePercent = _number.parsePercent;\nvar STACK_PREFIX = '__ec_stack_';\n\nfunction getSeriesStackId(seriesModel) {\n  return seriesModel.get('stack') || STACK_PREFIX + seriesModel.seriesIndex;\n}\n\nfunction getAxisKey(axis) {\n  return axis.dim + axis.index;\n}\n/**\n * @param {Object} opt\n * @param {module:echarts/coord/Axis} opt.axis Only support category axis currently.\n * @param {number} opt.count Positive interger.\n * @param {number} [opt.barWidth]\n * @param {number} [opt.barMaxWidth]\n * @param {number} [opt.barGap]\n * @param {number} [opt.barCategoryGap]\n * @return {Object} {width, offset, offsetCenter} If axis.type is not 'category', return undefined.\n */\n\n\nfunction getLayoutOnAxis(opt, api) {\n  var params = [];\n  var baseAxis = opt.axis;\n  var axisKey = 'axis0';\n\n  if (baseAxis.type !== 'category') {\n    return;\n  }\n\n  var bandWidth = baseAxis.getBandWidth();\n\n  for (var i = 0; i < opt.count || 0; i++) {\n    params.push(zrUtil.defaults({\n      bandWidth: bandWidth,\n      axisKey: axisKey,\n      stackId: STACK_PREFIX + i\n    }, opt));\n  }\n\n  var widthAndOffsets = doCalBarWidthAndOffset(params, api);\n  var result = [];\n\n  for (var i = 0; i < opt.count; i++) {\n    var item = widthAndOffsets[axisKey][STACK_PREFIX + i];\n    item.offsetCenter = item.offset + item.width / 2;\n    result.push(item);\n  }\n\n  return result;\n}\n\nfunction calBarWidthAndOffset(barSeries, api) {\n  var seriesInfoList = zrUtil.map(barSeries, function (seriesModel) {\n    var data = seriesModel.getData();\n    var cartesian = seriesModel.coordinateSystem;\n    var baseAxis = cartesian.getBaseAxis();\n    var axisExtent = baseAxis.getExtent();\n    var bandWidth = baseAxis.type === 'category' ? baseAxis.getBandWidth() : Math.abs(axisExtent[1] - axisExtent[0]) / data.count();\n    var barWidth = parsePercent(seriesModel.get('barWidth'), bandWidth);\n    var barMaxWidth = parsePercent(seriesModel.get('barMaxWidth'), bandWidth);\n    var barGap = seriesModel.get('barGap');\n    var barCategoryGap = seriesModel.get('barCategoryGap');\n    return {\n      bandWidth: bandWidth,\n      barWidth: barWidth,\n      barMaxWidth: barMaxWidth,\n      barGap: barGap,\n      barCategoryGap: barCategoryGap,\n      axisKey: getAxisKey(baseAxis),\n      stackId: getSeriesStackId(seriesModel)\n    };\n  });\n  return doCalBarWidthAndOffset(seriesInfoList, api);\n}\n\nfunction doCalBarWidthAndOffset(seriesInfoList, api) {\n  // Columns info on each category axis. Key is cartesian name\n  var columnsMap = {};\n  zrUtil.each(seriesInfoList, function (seriesInfo, idx) {\n    var axisKey = seriesInfo.axisKey;\n    var bandWidth = seriesInfo.bandWidth;\n    var columnsOnAxis = columnsMap[axisKey] || {\n      bandWidth: bandWidth,\n      remainedWidth: bandWidth,\n      autoWidthCount: 0,\n      categoryGap: '20%',\n      gap: '30%',\n      stacks: {}\n    };\n    var stacks = columnsOnAxis.stacks;\n    columnsMap[axisKey] = columnsOnAxis;\n    var stackId = seriesInfo.stackId;\n\n    if (!stacks[stackId]) {\n      columnsOnAxis.autoWidthCount++;\n    }\n\n    stacks[stackId] = stacks[stackId] || {\n      width: 0,\n      maxWidth: 0\n    }; // Caution: In a single coordinate system, these barGrid attributes\n    // will be shared by series. Consider that they have default values,\n    // only the attributes set on the last series will work.\n    // Do not change this fact unless there will be a break change.\n    // TODO\n\n    var barWidth = seriesInfo.barWidth;\n\n    if (barWidth && !stacks[stackId].width) {\n      // See #6312, do not restrict width.\n      stacks[stackId].width = barWidth;\n      barWidth = Math.min(columnsOnAxis.remainedWidth, barWidth);\n      columnsOnAxis.remainedWidth -= barWidth;\n    }\n\n    var barMaxWidth = seriesInfo.barMaxWidth;\n    barMaxWidth && (stacks[stackId].maxWidth = barMaxWidth);\n    var barGap = seriesInfo.barGap;\n    barGap != null && (columnsOnAxis.gap = barGap);\n    var barCategoryGap = seriesInfo.barCategoryGap;\n    barCategoryGap != null && (columnsOnAxis.categoryGap = barCategoryGap);\n  });\n  var result = {};\n  zrUtil.each(columnsMap, function (columnsOnAxis, coordSysName) {\n    result[coordSysName] = {};\n    var stacks = columnsOnAxis.stacks;\n    var bandWidth = columnsOnAxis.bandWidth;\n    var categoryGap = parsePercent(columnsOnAxis.categoryGap, bandWidth);\n    var barGapPercent = parsePercent(columnsOnAxis.gap, 1);\n    var remainedWidth = columnsOnAxis.remainedWidth;\n    var autoWidthCount = columnsOnAxis.autoWidthCount;\n    var autoWidth = (remainedWidth - categoryGap) / (autoWidthCount + (autoWidthCount - 1) * barGapPercent);\n    autoWidth = Math.max(autoWidth, 0); // Find if any auto calculated bar exceeded maxBarWidth\n\n    zrUtil.each(stacks, function (column, stack) {\n      var maxWidth = column.maxWidth;\n\n      if (maxWidth && maxWidth < autoWidth) {\n        maxWidth = Math.min(maxWidth, remainedWidth);\n\n        if (column.width) {\n          maxWidth = Math.min(maxWidth, column.width);\n        }\n\n        remainedWidth -= maxWidth;\n        column.width = maxWidth;\n        autoWidthCount--;\n      }\n    }); // Recalculate width again\n\n    autoWidth = (remainedWidth - categoryGap) / (autoWidthCount + (autoWidthCount - 1) * barGapPercent);\n    autoWidth = Math.max(autoWidth, 0);\n    var widthSum = 0;\n    var lastColumn;\n    zrUtil.each(stacks, function (column, idx) {\n      if (!column.width) {\n        column.width = autoWidth;\n      }\n\n      lastColumn = column;\n      widthSum += column.width * (1 + barGapPercent);\n    });\n\n    if (lastColumn) {\n      widthSum -= lastColumn.width * barGapPercent;\n    }\n\n    var offset = -widthSum / 2;\n    zrUtil.each(stacks, function (column, stackId) {\n      result[coordSysName][stackId] = result[coordSysName][stackId] || {\n        offset: offset,\n        width: column.width\n      };\n      offset += column.width * (1 + barGapPercent);\n    });\n  });\n  return result;\n}\n/**\n * @param {string} seriesType\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n */\n\n\nfunction layout(seriesType, ecModel, api) {\n  var barWidthAndOffset = calBarWidthAndOffset(zrUtil.filter(ecModel.getSeriesByType(seriesType), function (seriesModel) {\n    return !ecModel.isSeriesFiltered(seriesModel) && seriesModel.coordinateSystem && seriesModel.coordinateSystem.type === 'cartesian2d';\n  }));\n  var lastStackCoords = {};\n  var lastStackCoordsOrigin = {};\n  ecModel.eachSeriesByType(seriesType, function (seriesModel) {\n    // Check series coordinate, do layout for cartesian2d only\n    if (seriesModel.coordinateSystem.type !== 'cartesian2d') {\n      return;\n    }\n\n    var data = seriesModel.getData();\n    var cartesian = seriesModel.coordinateSystem;\n    var baseAxis = cartesian.getBaseAxis();\n    var stackId = getSeriesStackId(seriesModel);\n    var columnLayoutInfo = barWidthAndOffset[getAxisKey(baseAxis)][stackId];\n    var columnOffset = columnLayoutInfo.offset;\n    var columnWidth = columnLayoutInfo.width;\n    var valueAxis = cartesian.getOtherAxis(baseAxis);\n    var barMinHeight = seriesModel.get('barMinHeight') || 0;\n    var valueAxisStart = baseAxis.onZero ? valueAxis.toGlobalCoord(valueAxis.dataToCoord(0)) : valueAxis.getGlobalExtent()[0];\n    var coordDims = [data.mapDimension('x'), data.mapDimension('y')];\n    var coords = data.mapArray(coordDims, function (x, y) {\n      return cartesian.dataToPoint([x, y]);\n    }, true);\n    lastStackCoords[stackId] = lastStackCoords[stackId] || [];\n    lastStackCoordsOrigin[stackId] = lastStackCoordsOrigin[stackId] || []; // Fix #4243\n\n    data.setLayout({\n      offset: columnOffset,\n      size: columnWidth\n    });\n    data.each(data.mapDimension(valueAxis.dim), function (value, idx) {\n      if (isNaN(value)) {\n        return;\n      }\n\n      if (!lastStackCoords[stackId][idx]) {\n        lastStackCoords[stackId][idx] = {\n          p: valueAxisStart,\n          // Positive stack\n          n: valueAxisStart // Negative stack\n\n        };\n        lastStackCoordsOrigin[stackId][idx] = {\n          p: valueAxisStart,\n          // Positive stack\n          n: valueAxisStart // Negative stack\n\n        };\n      }\n\n      var sign = value >= 0 ? 'p' : 'n';\n      var coord = coords[idx];\n      var lastCoord = lastStackCoords[stackId][idx][sign];\n      var lastCoordOrigin = lastStackCoordsOrigin[stackId][idx][sign];\n      var x;\n      var y;\n      var width;\n      var height;\n\n      if (valueAxis.isHorizontal()) {\n        x = lastCoord;\n        y = coord[1] + columnOffset;\n        width = coord[0] - lastCoordOrigin;\n        height = columnWidth;\n        lastStackCoordsOrigin[stackId][idx][sign] += width;\n\n        if (Math.abs(width) < barMinHeight) {\n          width = (width < 0 ? -1 : 1) * barMinHeight;\n        }\n\n        lastStackCoords[stackId][idx][sign] += width;\n      } else {\n        x = coord[0] + columnOffset;\n        y = lastCoord;\n        width = columnWidth;\n        height = coord[1] - lastCoordOrigin;\n        lastStackCoordsOrigin[stackId][idx][sign] += height;\n\n        if (Math.abs(height) < barMinHeight) {\n          // Include zero to has a positive bar\n          height = (height <= 0 ? -1 : 1) * barMinHeight;\n        }\n\n        lastStackCoords[stackId][idx][sign] += height;\n      }\n\n      data.setItemLayout(idx, {\n        x: x,\n        y: y,\n        width: width,\n        height: height\n      });\n    }, true);\n  }, this);\n}\n\nexports.getLayoutOnAxis = getLayoutOnAxis;\nexports.calBarWidthAndOffset = calBarWidthAndOffset;\nexports.layout = layout;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar _number = require(\"../util/number\");\n\nvar parsePercent = _number.parsePercent;\n\nfunction getSeriesStackId(seriesModel) {\n  return seriesModel.get('stack') || '__ec_stack_' + seriesModel.seriesIndex;\n}\n\nfunction getAxisKey(axis) {\n  return axis.dim;\n}\n/**\n * @param {string} seriesType\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n */\n\n\nfunction barLayoutPolar(seriesType, ecModel, api) {\n  var width = api.getWidth();\n  var height = api.getHeight();\n  var lastStackCoords = {};\n  var lastStackCoordsOrigin = {};\n  var barWidthAndOffset = calRadialBar(zrUtil.filter(ecModel.getSeriesByType(seriesType), function (seriesModel) {\n    return !ecModel.isSeriesFiltered(seriesModel) && seriesModel.coordinateSystem && seriesModel.coordinateSystem.type === 'polar';\n  }));\n  ecModel.eachSeriesByType(seriesType, function (seriesModel) {\n    // Check series coordinate, do layout for polar only\n    if (seriesModel.coordinateSystem.type !== 'polar') {\n      return;\n    }\n\n    var data = seriesModel.getData();\n    var polar = seriesModel.coordinateSystem;\n    var angleAxis = polar.getAngleAxis();\n    var baseAxis = polar.getBaseAxis();\n    var stackId = getSeriesStackId(seriesModel);\n    var columnLayoutInfo = barWidthAndOffset[getAxisKey(baseAxis)][stackId];\n    var columnOffset = columnLayoutInfo.offset;\n    var columnWidth = columnLayoutInfo.width;\n    var valueAxis = polar.getOtherAxis(baseAxis);\n    var center = seriesModel.get('center') || ['50%', '50%'];\n    var cx = parsePercent(center[0], width);\n    var cy = parsePercent(center[1], height);\n    var barMinHeight = seriesModel.get('barMinHeight') || 0;\n    var barMinAngle = seriesModel.get('barMinAngle') || 0;\n    var valueAxisStart = valueAxis.getExtent()[0];\n    var valueMax = valueAxis.model.get('max');\n    var valueMin = valueAxis.model.get('min');\n    var coordDims = [data.mapDimension('radius'), data.mapDimension('angle')];\n    var coords = data.mapArray(coordDims, function (radius, angle) {\n      return polar.dataToPoint([radius, angle]);\n    }, true);\n    lastStackCoords[stackId] = lastStackCoords[stackId] || [];\n    lastStackCoordsOrigin[stackId] = lastStackCoordsOrigin[stackId] || []; // Fix #4243\n\n    data.each(data.mapDimension(valueAxis.dim), function (value, idx) {\n      if (isNaN(value)) {\n        return;\n      }\n\n      if (!lastStackCoords[stackId][idx]) {\n        lastStackCoords[stackId][idx] = {\n          p: valueAxisStart,\n          // Positive stack\n          n: valueAxisStart // Negative stack\n\n        };\n        lastStackCoordsOrigin[stackId][idx] = {\n          p: valueAxisStart,\n          // Positive stack\n          n: valueAxisStart // Negative stack\n\n        };\n      }\n\n      var sign = value >= 0 ? 'p' : 'n';\n      var coord = polar.pointToCoord(coords[idx]);\n      var lastCoordOrigin = lastStackCoordsOrigin[stackId][idx][sign];\n      var r0;\n      var r;\n      var startAngle;\n      var endAngle;\n\n      if (valueAxis.dim === 'radius') {\n        // radial sector\n        r0 = lastCoordOrigin;\n        r = coord[0];\n        startAngle = (-coord[1] + columnOffset) * Math.PI / 180;\n        endAngle = startAngle + columnWidth * Math.PI / 180;\n\n        if (Math.abs(r) < barMinHeight) {\n          r = r0 + (r < 0 ? -1 : 1) * barMinHeight;\n        }\n\n        lastStackCoordsOrigin[stackId][idx][sign] = r;\n      } else {\n        // tangential sector\n        r0 = coord[0] + columnOffset;\n        r = r0 + columnWidth; // clamp data if min or max is defined for valueAxis\n\n        if (valueMax != null) {\n          value = Math.min(value, valueMax);\n        }\n\n        if (valueMin != null) {\n          value = Math.max(value, valueMin);\n        }\n\n        var angle = angleAxis.dataToAngle(value);\n\n        if (Math.abs(angle - lastCoordOrigin) < barMinAngle) {\n          angle = lastCoordOrigin - (value < 0 ? -1 : 1) * barMinAngle;\n        }\n\n        startAngle = -lastCoordOrigin * Math.PI / 180;\n        endAngle = -angle * Math.PI / 180; // if the previous stack is at the end of the ring,\n        // add a round to differentiate it from origin\n\n        var extent = angleAxis.getExtent();\n        var stackCoord = angle;\n\n        if (stackCoord === extent[0] && value > 0) {\n          stackCoord = extent[1];\n        } else if (stackCoord === extent[1] && value < 0) {\n          stackCoord = extent[0];\n        }\n\n        lastStackCoordsOrigin[stackId][idx][sign] = stackCoord;\n      }\n\n      data.setItemLayout(idx, {\n        cx: cx,\n        cy: cy,\n        r0: r0,\n        r: r,\n        startAngle: startAngle,\n        endAngle: endAngle\n      });\n    }, true);\n  }, this);\n}\n/**\n * Calculate bar width and offset for radial bar charts\n */\n\n\nfunction calRadialBar(barSeries, api) {\n  // Columns info on each category axis. Key is polar name\n  var columnsMap = {};\n  zrUtil.each(barSeries, function (seriesModel, idx) {\n    var data = seriesModel.getData();\n    var polar = seriesModel.coordinateSystem;\n    var baseAxis = polar.getBaseAxis();\n    var axisExtent = baseAxis.getExtent();\n    var bandWidth = baseAxis.type === 'category' ? baseAxis.getBandWidth() : Math.abs(axisExtent[1] - axisExtent[0]) / data.count();\n    var columnsOnAxis = columnsMap[getAxisKey(baseAxis)] || {\n      bandWidth: bandWidth,\n      remainedWidth: bandWidth,\n      autoWidthCount: 0,\n      categoryGap: '20%',\n      gap: '30%',\n      stacks: {}\n    };\n    var stacks = columnsOnAxis.stacks;\n    columnsMap[getAxisKey(baseAxis)] = columnsOnAxis;\n    var stackId = getSeriesStackId(seriesModel);\n\n    if (!stacks[stackId]) {\n      columnsOnAxis.autoWidthCount++;\n    }\n\n    stacks[stackId] = stacks[stackId] || {\n      width: 0,\n      maxWidth: 0\n    };\n    var barWidth = parsePercent(seriesModel.get('barWidth'), bandWidth);\n    var barMaxWidth = parsePercent(seriesModel.get('barMaxWidth'), bandWidth);\n    var barGap = seriesModel.get('barGap');\n    var barCategoryGap = seriesModel.get('barCategoryGap');\n\n    if (barWidth && !stacks[stackId].width) {\n      barWidth = Math.min(columnsOnAxis.remainedWidth, barWidth);\n      stacks[stackId].width = barWidth;\n      columnsOnAxis.remainedWidth -= barWidth;\n    }\n\n    barMaxWidth && (stacks[stackId].maxWidth = barMaxWidth);\n    barGap != null && (columnsOnAxis.gap = barGap);\n    barCategoryGap != null && (columnsOnAxis.categoryGap = barCategoryGap);\n  });\n  var result = {};\n  zrUtil.each(columnsMap, function (columnsOnAxis, coordSysName) {\n    result[coordSysName] = {};\n    var stacks = columnsOnAxis.stacks;\n    var bandWidth = columnsOnAxis.bandWidth;\n    var categoryGap = parsePercent(columnsOnAxis.categoryGap, bandWidth);\n    var barGapPercent = parsePercent(columnsOnAxis.gap, 1);\n    var remainedWidth = columnsOnAxis.remainedWidth;\n    var autoWidthCount = columnsOnAxis.autoWidthCount;\n    var autoWidth = (remainedWidth - categoryGap) / (autoWidthCount + (autoWidthCount - 1) * barGapPercent);\n    autoWidth = Math.max(autoWidth, 0); // Find if any auto calculated bar exceeded maxBarWidth\n\n    zrUtil.each(stacks, function (column, stack) {\n      var maxWidth = column.maxWidth;\n\n      if (maxWidth && maxWidth < autoWidth) {\n        maxWidth = Math.min(maxWidth, remainedWidth);\n\n        if (column.width) {\n          maxWidth = Math.min(maxWidth, column.width);\n        }\n\n        remainedWidth -= maxWidth;\n        column.width = maxWidth;\n        autoWidthCount--;\n      }\n    }); // Recalculate width again\n\n    autoWidth = (remainedWidth - categoryGap) / (autoWidthCount + (autoWidthCount - 1) * barGapPercent);\n    autoWidth = Math.max(autoWidth, 0);\n    var widthSum = 0;\n    var lastColumn;\n    zrUtil.each(stacks, function (column, idx) {\n      if (!column.width) {\n        column.width = autoWidth;\n      }\n\n      lastColumn = column;\n      widthSum += column.width * (1 + barGapPercent);\n    });\n\n    if (lastColumn) {\n      widthSum -= lastColumn.width * barGapPercent;\n    }\n\n    var offset = -widthSum / 2;\n    zrUtil.each(stacks, function (column, stackId) {\n      result[coordSysName][stackId] = result[coordSysName][stackId] || {\n        offset: offset,\n        width: column.width\n      };\n      offset += column.width * (1 + barGapPercent);\n    });\n  });\n  return result;\n}\n\nvar _default = barLayoutPolar;\nmodule.exports = _default;","var _util = require(\"zrender/lib/core/util\");\n\nvar map = _util.map;\n\nvar createRenderPlanner = require(\"../chart/helper/createRenderPlanner\");\n\nfunction _default(seriesType) {\n  return {\n    seriesType: seriesType,\n    plan: createRenderPlanner(),\n    reset: function (seriesModel) {\n      var data = seriesModel.getData();\n      var coordSys = seriesModel.coordinateSystem;\n      var pipelineContext = seriesModel.pipelineContext;\n      var isLargeRender = pipelineContext.large;\n\n      if (!coordSys) {\n        return;\n      }\n\n      var dims = map(coordSys.dimensions, function (dim) {\n        return data.getDimension(data.mapDimension(dim));\n      }).slice(0, 2);\n      var dimLen = dims.length;\n\n      function progress(params, data) {\n        var segCount = params.end - params.start;\n        var points = isLargeRender && new Float32Array(segCount * dimLen);\n\n        for (var i = params.start, offset = 0, tmpIn = [], tmpOut = []; i < params.end; i++) {\n          var point;\n\n          if (dimLen === 1) {\n            var x = data.get(dims[0], i, true);\n            point = !isNaN(x) && coordSys.dataToPoint(x, null, tmpOut);\n          } else {\n            var x = tmpIn[0] = data.get(dims[0], i, true);\n            var y = tmpIn[1] = data.get(dims[1], i, true); // Also {Array.<number>}, not undefined to avoid if...else... statement\n\n            point = !isNaN(x) && !isNaN(y) && coordSys.dataToPoint(tmpIn, null, tmpOut);\n          }\n\n          if (isLargeRender) {\n            points[offset++] = point ? point[0] : NaN;\n            points[offset++] = point ? point[1] : NaN;\n          } else {\n            data.setItemLayout(i, point && point.slice() || [NaN, NaN]);\n          }\n        }\n\n        isLargeRender && data.setLayout('symbolPoints', points);\n      }\n\n      return dimLen && {\n        progress: progress\n      };\n    }\n  };\n}\n\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar graphic = require(\"../util/graphic\");\n\nvar PI = Math.PI;\n/**\n * @param {module:echarts/ExtensionAPI} api\n * @param {Object} [opts]\n * @param {string} [opts.text]\n * @param {string} [opts.color]\n * @param {string} [opts.textColor]\n * @return {module:zrender/Element}\n */\n\nfunction _default(api, opts) {\n  opts = opts || {};\n  zrUtil.defaults(opts, {\n    text: 'loading',\n    color: '#c23531',\n    textColor: '#000',\n    maskColor: 'rgba(255, 255, 255, 0.8)',\n    zlevel: 0\n  });\n  var mask = new graphic.Rect({\n    style: {\n      fill: opts.maskColor\n    },\n    zlevel: opts.zlevel,\n    z: 10000\n  });\n  var arc = new graphic.Arc({\n    shape: {\n      startAngle: -PI / 2,\n      endAngle: -PI / 2 + 0.1,\n      r: 10\n    },\n    style: {\n      stroke: opts.color,\n      lineCap: 'round',\n      lineWidth: 5\n    },\n    zlevel: opts.zlevel,\n    z: 10001\n  });\n  var labelRect = new graphic.Rect({\n    style: {\n      fill: 'none',\n      text: opts.text,\n      textPosition: 'right',\n      textDistance: 10,\n      textFill: opts.textColor\n    },\n    zlevel: opts.zlevel,\n    z: 10001\n  });\n  arc.animateShape(true).when(1000, {\n    endAngle: PI * 3 / 2\n  }).start('circularInOut');\n  arc.animateShape(true).when(1000, {\n    startAngle: PI * 3 / 2\n  }).delay(300).start('circularInOut');\n  var group = new graphic.Group();\n  group.add(arc);\n  group.add(labelRect);\n  group.add(mask); // Inject resize\n\n  group.resize = function () {\n    var cx = api.getWidth() / 2;\n    var cy = api.getHeight() / 2;\n    arc.setShape({\n      cx: cx,\n      cy: cy\n    });\n    var r = arc.shape.r;\n    labelRect.setShape({\n      x: cx - r,\n      y: cy - r,\n      width: r * 2,\n      height: r * 2\n    });\n    mask.setShape({\n      x: 0,\n      y: 0,\n      width: api.getWidth(),\n      height: api.getHeight()\n    });\n  };\n\n  group.resize();\n  return group;\n}\n\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar Model = require(\"./Model\");\n\nvar componentUtil = require(\"../util/component\");\n\nvar _clazz = require(\"../util/clazz\");\n\nvar enableClassManagement = _clazz.enableClassManagement;\nvar parseClassType = _clazz.parseClassType;\n\nvar _model = require(\"../util/model\");\n\nvar makeInner = _model.makeInner;\n\nvar layout = require(\"../util/layout\");\n\nvar boxLayoutMixin = require(\"./mixin/boxLayout\");\n\n/**\n * Component model\n *\n * @module echarts/model/Component\n */\nvar inner = makeInner();\n/**\n * @alias module:echarts/model/Component\n * @constructor\n * @param {Object} option\n * @param {module:echarts/model/Model} parentModel\n * @param {module:echarts/model/Model} ecModel\n */\n\nvar ComponentModel = Model.extend({\n  type: 'component',\n\n  /**\n   * @readOnly\n   * @type {string}\n   */\n  id: '',\n\n  /**\n   * Because simplified concept is probably better, series.name (or component.name)\n   * has been having too many resposibilities:\n   * (1) Generating id (which requires name in option should not be modified).\n   * (2) As an index to mapping series when merging option or calling API (a name\n   * can refer to more then one components, which is convinient is some case).\n   * (3) Display.\n   * @readOnly\n   */\n  name: '',\n\n  /**\n   * @readOnly\n   * @type {string}\n   */\n  mainType: '',\n\n  /**\n   * @readOnly\n   * @type {string}\n   */\n  subType: '',\n\n  /**\n   * @readOnly\n   * @type {number}\n   */\n  componentIndex: 0,\n\n  /**\n   * @type {Object}\n   * @protected\n   */\n  defaultOption: null,\n\n  /**\n   * @type {module:echarts/model/Global}\n   * @readOnly\n   */\n  ecModel: null,\n\n  /**\n   * key: componentType\n   * value:  Component model list, can not be null.\n   * @type {Object.<string, Array.<module:echarts/model/Model>>}\n   * @readOnly\n   */\n  dependentModels: [],\n\n  /**\n   * @type {string}\n   * @readOnly\n   */\n  uid: null,\n\n  /**\n   * Support merge layout params.\n   * Only support 'box' now (left/right/top/bottom/width/height).\n   * @type {string|Object} Object can be {ignoreSize: true}\n   * @readOnly\n   */\n  layoutMode: null,\n  $constructor: function (option, parentModel, ecModel, extraOpt) {\n    Model.call(this, option, parentModel, ecModel, extraOpt);\n    this.uid = componentUtil.getUID('ec_cpt_model');\n  },\n  init: function (option, parentModel, ecModel, extraOpt) {\n    this.mergeDefaultAndTheme(option, ecModel);\n  },\n  mergeDefaultAndTheme: function (option, ecModel) {\n    var layoutMode = this.layoutMode;\n    var inputPositionParams = layoutMode ? layout.getLayoutParams(option) : {};\n    var themeModel = ecModel.getTheme();\n    zrUtil.merge(option, themeModel.get(this.mainType));\n    zrUtil.merge(option, this.getDefaultOption());\n\n    if (layoutMode) {\n      layout.mergeLayoutParam(option, inputPositionParams, layoutMode);\n    }\n  },\n  mergeOption: function (option, extraOpt) {\n    zrUtil.merge(this.option, option, true);\n    var layoutMode = this.layoutMode;\n\n    if (layoutMode) {\n      layout.mergeLayoutParam(this.option, option, layoutMode);\n    }\n  },\n  // Hooker after init or mergeOption\n  optionUpdated: function (newCptOption, isInit) {},\n  getDefaultOption: function () {\n    var fields = inner(this);\n\n    if (!fields.defaultOption) {\n      var optList = [];\n      var Class = this.constructor;\n\n      while (Class) {\n        var opt = Class.prototype.defaultOption;\n        opt && optList.push(opt);\n        Class = Class.superClass;\n      }\n\n      var defaultOption = {};\n\n      for (var i = optList.length - 1; i >= 0; i--) {\n        defaultOption = zrUtil.merge(defaultOption, optList[i], true);\n      }\n\n      fields.defaultOption = defaultOption;\n    }\n\n    return fields.defaultOption;\n  },\n  getReferringComponents: function (mainType) {\n    return this.ecModel.queryComponents({\n      mainType: mainType,\n      index: this.get(mainType + 'Index', true),\n      id: this.get(mainType + 'Id', true)\n    });\n  }\n}); // Reset ComponentModel.extend, add preConstruct.\n// clazzUtil.enableClassExtend(\n//     ComponentModel,\n//     function (option, parentModel, ecModel, extraOpt) {\n//         // Set dependentModels, componentIndex, name, id, mainType, subType.\n//         zrUtil.extend(this, extraOpt);\n//         this.uid = componentUtil.getUID('componentModel');\n//         // this.setReadOnly([\n//         //     'type', 'id', 'uid', 'name', 'mainType', 'subType',\n//         //     'dependentModels', 'componentIndex'\n//         // ]);\n//     }\n// );\n// Add capability of registerClass, getClass, hasClass, registerSubTypeDefaulter and so on.\n\nenableClassManagement(ComponentModel, {\n  registerWhenExtend: true\n});\ncomponentUtil.enableSubTypeDefaulter(ComponentModel); // Add capability of ComponentModel.topologicalTravel.\n\ncomponentUtil.enableTopologicalTravel(ComponentModel, getDependencies);\n\nfunction getDependencies(componentType) {\n  var deps = [];\n  zrUtil.each(ComponentModel.getClassesByMainType(componentType), function (Clazz) {\n    deps = deps.concat(Clazz.prototype.dependencies || []);\n  }); // Ensure main type.\n\n  deps = zrUtil.map(deps, function (type) {\n    return parseClassType(type).main;\n  }); // Hack dataset for convenience.\n\n  if (componentType !== 'dataset' && zrUtil.indexOf(deps, 'dataset') <= 0) {\n    deps.unshift('dataset');\n  }\n\n  return deps;\n}\n\nzrUtil.mixin(ComponentModel, boxLayoutMixin);\nvar _default = ComponentModel;\nmodule.exports = _default;","var _config = require(\"../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar each = _util.each;\nvar filter = _util.filter;\nvar map = _util.map;\nvar isArray = _util.isArray;\nvar indexOf = _util.indexOf;\nvar isObject = _util.isObject;\nvar isString = _util.isString;\nvar createHashMap = _util.createHashMap;\nvar assert = _util.assert;\nvar clone = _util.clone;\nvar merge = _util.merge;\nvar extend = _util.extend;\nvar mixin = _util.mixin;\n\nvar modelUtil = require(\"../util/model\");\n\nvar Model = require(\"./Model\");\n\nvar ComponentModel = require(\"./Component\");\n\nvar globalDefault = require(\"./globalDefault\");\n\nvar colorPaletteMixin = require(\"./mixin/colorPalette\");\n\nvar _sourceHelper = require(\"../data/helper/sourceHelper\");\n\nvar resetSourceDefaulter = _sourceHelper.resetSourceDefaulter;\n\n/**\n * ECharts global model\n *\n * @module {echarts/model/Global}\n */\n\n/**\n * Caution: If the mechanism should be changed some day, these cases\n * should be considered:\n *\n * (1) In `merge option` mode, if using the same option to call `setOption`\n * many times, the result should be the same (try our best to ensure that).\n * (2) In `merge option` mode, if a component has no id/name specified, it\n * will be merged by index, and the result sequence of the components is\n * consistent to the original sequence.\n * (3) `reset` feature (in toolbox). Find detailed info in comments about\n * `mergeOption` in module:echarts/model/OptionManager.\n */\nvar OPTION_INNER_KEY = '\\0_ec_inner';\n/**\n * @alias module:echarts/model/Global\n *\n * @param {Object} option\n * @param {module:echarts/model/Model} parentModel\n * @param {Object} theme\n */\n\nvar GlobalModel = Model.extend({\n  constructor: GlobalModel,\n  init: function (option, parentModel, theme, optionManager) {\n    theme = theme || {};\n    this.option = null; // Mark as not initialized.\n\n    /**\n     * @type {module:echarts/model/Model}\n     * @private\n     */\n\n    this._theme = new Model(theme);\n    /**\n     * @type {module:echarts/model/OptionManager}\n     */\n\n    this._optionManager = optionManager;\n  },\n  setOption: function (option, optionPreprocessorFuncs) {\n    assert(!(OPTION_INNER_KEY in option), 'please use chart.getOption()');\n\n    this._optionManager.setOption(option, optionPreprocessorFuncs);\n\n    this.resetOption(null);\n  },\n\n  /**\n   * @param {string} type null/undefined: reset all.\n   *                      'recreate': force recreate all.\n   *                      'timeline': only reset timeline option\n   *                      'media': only reset media query option\n   * @return {boolean} Whether option changed.\n   */\n  resetOption: function (type) {\n    var optionChanged = false;\n    var optionManager = this._optionManager;\n\n    if (!type || type === 'recreate') {\n      var baseOption = optionManager.mountOption(type === 'recreate');\n\n      if (!this.option || type === 'recreate') {\n        initBase.call(this, baseOption);\n      } else {\n        this.restoreData();\n        this.mergeOption(baseOption);\n      }\n\n      optionChanged = true;\n    }\n\n    if (type === 'timeline' || type === 'media') {\n      this.restoreData();\n    }\n\n    if (!type || type === 'recreate' || type === 'timeline') {\n      var timelineOption = optionManager.getTimelineOption(this);\n      timelineOption && (this.mergeOption(timelineOption), optionChanged = true);\n    }\n\n    if (!type || type === 'recreate' || type === 'media') {\n      var mediaOptions = optionManager.getMediaOption(this, this._api);\n\n      if (mediaOptions.length) {\n        each(mediaOptions, function (mediaOption) {\n          this.mergeOption(mediaOption, optionChanged = true);\n        }, this);\n      }\n    }\n\n    return optionChanged;\n  },\n\n  /**\n   * @protected\n   */\n  mergeOption: function (newOption) {\n    var option = this.option;\n    var componentsMap = this._componentsMap;\n    var newCptTypes = [];\n    resetSourceDefaulter(this); // If no component class, merge directly.\n    // For example: color, animaiton options, etc.\n\n    each(newOption, function (componentOption, mainType) {\n      if (componentOption == null) {\n        return;\n      }\n\n      if (!ComponentModel.hasClass(mainType)) {\n        // globalSettingTask.dirty();\n        option[mainType] = option[mainType] == null ? clone(componentOption) : merge(option[mainType], componentOption, true);\n      } else if (mainType) {\n        newCptTypes.push(mainType);\n      }\n    });\n    ComponentModel.topologicalTravel(newCptTypes, ComponentModel.getAllClassMainTypes(), visitComponent, this);\n\n    function visitComponent(mainType, dependencies) {\n      var newCptOptionList = modelUtil.normalizeToArray(newOption[mainType]);\n      var mapResult = modelUtil.mappingToExists(componentsMap.get(mainType), newCptOptionList);\n      modelUtil.makeIdAndName(mapResult); // Set mainType and complete subType.\n\n      each(mapResult, function (item, index) {\n        var opt = item.option;\n\n        if (isObject(opt)) {\n          item.keyInfo.mainType = mainType;\n          item.keyInfo.subType = determineSubType(mainType, opt, item.exist);\n        }\n      });\n      var dependentModels = getComponentsByTypes(componentsMap, dependencies);\n      option[mainType] = [];\n      componentsMap.set(mainType, []);\n      each(mapResult, function (resultItem, index) {\n        var componentModel = resultItem.exist;\n        var newCptOption = resultItem.option;\n        assert(isObject(newCptOption) || componentModel, 'Empty component definition'); // Consider where is no new option and should be merged using {},\n        // see removeEdgeAndAdd in topologicalTravel and\n        // ComponentModel.getAllClassMainTypes.\n\n        if (!newCptOption) {\n          componentModel.mergeOption({}, this);\n          componentModel.optionUpdated({}, false);\n        } else {\n          var ComponentModelClass = ComponentModel.getClass(mainType, resultItem.keyInfo.subType, true);\n\n          if (componentModel && componentModel instanceof ComponentModelClass) {\n            componentModel.name = resultItem.keyInfo.name; // componentModel.settingTask && componentModel.settingTask.dirty();\n\n            componentModel.mergeOption(newCptOption, this);\n            componentModel.optionUpdated(newCptOption, false);\n          } else {\n            // PENDING Global as parent ?\n            var extraOpt = extend({\n              dependentModels: dependentModels,\n              componentIndex: index\n            }, resultItem.keyInfo);\n            componentModel = new ComponentModelClass(newCptOption, this, this, extraOpt);\n            extend(componentModel, extraOpt);\n            componentModel.init(newCptOption, this, this, extraOpt); // Call optionUpdated after init.\n            // newCptOption has been used as componentModel.option\n            // and may be merged with theme and default, so pass null\n            // to avoid confusion.\n\n            componentModel.optionUpdated(null, true);\n          }\n        }\n\n        componentsMap.get(mainType)[index] = componentModel;\n        option[mainType][index] = componentModel.option;\n      }, this); // Backup series for filtering.\n\n      if (mainType === 'series') {\n        createSeriesIndices(this, componentsMap.get('series'));\n      }\n    }\n\n    this._seriesIndicesMap = createHashMap(this._seriesIndices = this._seriesIndices || []);\n  },\n\n  /**\n   * Get option for output (cloned option and inner info removed)\n   * @public\n   * @return {Object}\n   */\n  getOption: function () {\n    var option = clone(this.option);\n    each(option, function (opts, mainType) {\n      if (ComponentModel.hasClass(mainType)) {\n        var opts = modelUtil.normalizeToArray(opts);\n\n        for (var i = opts.length - 1; i >= 0; i--) {\n          // Remove options with inner id.\n          if (modelUtil.isIdInner(opts[i])) {\n            opts.splice(i, 1);\n          }\n        }\n\n        option[mainType] = opts;\n      }\n    });\n    delete option[OPTION_INNER_KEY];\n    return option;\n  },\n\n  /**\n   * @return {module:echarts/model/Model}\n   */\n  getTheme: function () {\n    return this._theme;\n  },\n\n  /**\n   * @param {string} mainType\n   * @param {number} [idx=0]\n   * @return {module:echarts/model/Component}\n   */\n  getComponent: function (mainType, idx) {\n    var list = this._componentsMap.get(mainType);\n\n    if (list) {\n      return list[idx || 0];\n    }\n  },\n\n  /**\n   * If none of index and id and name used, return all components with mainType.\n   * @param {Object} condition\n   * @param {string} condition.mainType\n   * @param {string} [condition.subType] If ignore, only query by mainType\n   * @param {number|Array.<number>} [condition.index] Either input index or id or name.\n   * @param {string|Array.<string>} [condition.id] Either input index or id or name.\n   * @param {string|Array.<string>} [condition.name] Either input index or id or name.\n   * @return {Array.<module:echarts/model/Component>}\n   */\n  queryComponents: function (condition) {\n    var mainType = condition.mainType;\n\n    if (!mainType) {\n      return [];\n    }\n\n    var index = condition.index;\n    var id = condition.id;\n    var name = condition.name;\n\n    var cpts = this._componentsMap.get(mainType);\n\n    if (!cpts || !cpts.length) {\n      return [];\n    }\n\n    var result;\n\n    if (index != null) {\n      if (!isArray(index)) {\n        index = [index];\n      }\n\n      result = filter(map(index, function (idx) {\n        return cpts[idx];\n      }), function (val) {\n        return !!val;\n      });\n    } else if (id != null) {\n      var isIdArray = isArray(id);\n      result = filter(cpts, function (cpt) {\n        return isIdArray && indexOf(id, cpt.id) >= 0 || !isIdArray && cpt.id === id;\n      });\n    } else if (name != null) {\n      var isNameArray = isArray(name);\n      result = filter(cpts, function (cpt) {\n        return isNameArray && indexOf(name, cpt.name) >= 0 || !isNameArray && cpt.name === name;\n      });\n    } else {\n      // Return all components with mainType\n      result = cpts.slice();\n    }\n\n    return filterBySubType(result, condition);\n  },\n\n  /**\n   * The interface is different from queryComponents,\n   * which is convenient for inner usage.\n   *\n   * @usage\n   * var result = findComponents(\n   *     {mainType: 'dataZoom', query: {dataZoomId: 'abc'}}\n   * );\n   * var result = findComponents(\n   *     {mainType: 'series', subType: 'pie', query: {seriesName: 'uio'}}\n   * );\n   * var result = findComponents(\n   *     {mainType: 'series'},\n   *     function (model, index) {...}\n   * );\n   * // result like [component0, componnet1, ...]\n   *\n   * @param {Object} condition\n   * @param {string} condition.mainType Mandatory.\n   * @param {string} [condition.subType] Optional.\n   * @param {Object} [condition.query] like {xxxIndex, xxxId, xxxName},\n   *        where xxx is mainType.\n   *        If query attribute is null/undefined or has no index/id/name,\n   *        do not filtering by query conditions, which is convenient for\n   *        no-payload situations or when target of action is global.\n   * @param {Function} [condition.filter] parameter: component, return boolean.\n   * @return {Array.<module:echarts/model/Component>}\n   */\n  findComponents: function (condition) {\n    var query = condition.query;\n    var mainType = condition.mainType;\n    var queryCond = getQueryCond(query);\n    var result = queryCond ? this.queryComponents(queryCond) : this._componentsMap.get(mainType);\n    return doFilter(filterBySubType(result, condition));\n\n    function getQueryCond(q) {\n      var indexAttr = mainType + 'Index';\n      var idAttr = mainType + 'Id';\n      var nameAttr = mainType + 'Name';\n      return q && (q[indexAttr] != null || q[idAttr] != null || q[nameAttr] != null) ? {\n        mainType: mainType,\n        // subType will be filtered finally.\n        index: q[indexAttr],\n        id: q[idAttr],\n        name: q[nameAttr]\n      } : null;\n    }\n\n    function doFilter(res) {\n      return condition.filter ? filter(res, condition.filter) : res;\n    }\n  },\n\n  /**\n   * @usage\n   * eachComponent('legend', function (legendModel, index) {\n   *     ...\n   * });\n   * eachComponent(function (componentType, model, index) {\n   *     // componentType does not include subType\n   *     // (componentType is 'xxx' but not 'xxx.aa')\n   * });\n   * eachComponent(\n   *     {mainType: 'dataZoom', query: {dataZoomId: 'abc'}},\n   *     function (model, index) {...}\n   * );\n   * eachComponent(\n   *     {mainType: 'series', subType: 'pie', query: {seriesName: 'uio'}},\n   *     function (model, index) {...}\n   * );\n   *\n   * @param {string|Object=} mainType When mainType is object, the definition\n   *                                  is the same as the method 'findComponents'.\n   * @param {Function} cb\n   * @param {*} context\n   */\n  eachComponent: function (mainType, cb, context) {\n    var componentsMap = this._componentsMap;\n\n    if (typeof mainType === 'function') {\n      context = cb;\n      cb = mainType;\n      componentsMap.each(function (components, componentType) {\n        each(components, function (component, index) {\n          cb.call(context, componentType, component, index);\n        });\n      });\n    } else if (isString(mainType)) {\n      each(componentsMap.get(mainType), cb, context);\n    } else if (isObject(mainType)) {\n      var queryResult = this.findComponents(mainType);\n      each(queryResult, cb, context);\n    }\n  },\n\n  /**\n   * @param {string} name\n   * @return {Array.<module:echarts/model/Series>}\n   */\n  getSeriesByName: function (name) {\n    var series = this._componentsMap.get('series');\n\n    return filter(series, function (oneSeries) {\n      return oneSeries.name === name;\n    });\n  },\n\n  /**\n   * @param {number} seriesIndex\n   * @return {module:echarts/model/Series}\n   */\n  getSeriesByIndex: function (seriesIndex) {\n    return this._componentsMap.get('series')[seriesIndex];\n  },\n\n  /**\n   * @param {string} subType\n   * @return {Array.<module:echarts/model/Series>}\n   */\n  getSeriesByType: function (subType) {\n    var series = this._componentsMap.get('series');\n\n    return filter(series, function (oneSeries) {\n      return oneSeries.subType === subType;\n    });\n  },\n\n  /**\n   * @return {Array.<module:echarts/model/Series>}\n   */\n  getSeries: function () {\n    return this._componentsMap.get('series').slice();\n  },\n\n  /**\n   * @return {number}\n   */\n  getSeriesCount: function () {\n    return this._componentsMap.get('series').length;\n  },\n\n  /**\n   * After filtering, series may be different\n   * frome raw series.\n   *\n   * @param {Function} cb\n   * @param {*} context\n   */\n  eachSeries: function (cb, context) {\n    assertSeriesInitialized(this);\n    each(this._seriesIndices, function (rawSeriesIndex) {\n      var series = this._componentsMap.get('series')[rawSeriesIndex];\n\n      cb.call(context, series, rawSeriesIndex);\n    }, this);\n  },\n\n  /**\n   * Iterate raw series before filtered.\n   *\n   * @param {Function} cb\n   * @param {*} context\n   */\n  eachRawSeries: function (cb, context) {\n    each(this._componentsMap.get('series'), cb, context);\n  },\n\n  /**\n   * After filtering, series may be different.\n   * frome raw series.\n   *\n   * @parma {string} subType\n   * @param {Function} cb\n   * @param {*} context\n   */\n  eachSeriesByType: function (subType, cb, context) {\n    assertSeriesInitialized(this);\n    each(this._seriesIndices, function (rawSeriesIndex) {\n      var series = this._componentsMap.get('series')[rawSeriesIndex];\n\n      if (series.subType === subType) {\n        cb.call(context, series, rawSeriesIndex);\n      }\n    }, this);\n  },\n\n  /**\n   * Iterate raw series before filtered of given type.\n   *\n   * @parma {string} subType\n   * @param {Function} cb\n   * @param {*} context\n   */\n  eachRawSeriesByType: function (subType, cb, context) {\n    return each(this.getSeriesByType(subType), cb, context);\n  },\n\n  /**\n   * @param {module:echarts/model/Series} seriesModel\n   */\n  isSeriesFiltered: function (seriesModel) {\n    assertSeriesInitialized(this);\n    return this._seriesIndicesMap.get(seriesModel.componentIndex) == null;\n  },\n\n  /**\n   * @return {Array.<number>}\n   */\n  getCurrentSeriesIndices: function () {\n    return (this._seriesIndices || []).slice();\n  },\n\n  /**\n   * @param {Function} cb\n   * @param {*} context\n   */\n  filterSeries: function (cb, context) {\n    assertSeriesInitialized(this);\n    var filteredSeries = filter(this._componentsMap.get('series'), cb, context);\n    createSeriesIndices(this, filteredSeries);\n  },\n  restoreData: function (payload) {\n    var componentsMap = this._componentsMap;\n    createSeriesIndices(this, componentsMap.get('series'));\n    var componentTypes = [];\n    componentsMap.each(function (components, componentType) {\n      componentTypes.push(componentType);\n    });\n    ComponentModel.topologicalTravel(componentTypes, ComponentModel.getAllClassMainTypes(), function (componentType, dependencies) {\n      each(componentsMap.get(componentType), function (component) {\n        (componentType !== 'series' || !isNotTargetSeries(component, payload)) && component.restoreData();\n      });\n    });\n  }\n});\n\nfunction isNotTargetSeries(seriesModel, payload) {\n  if (payload) {\n    var index = payload.seiresIndex;\n    var id = payload.seriesId;\n    var name = payload.seriesName;\n    return index != null && seriesModel.componentIndex !== index || id != null && seriesModel.id !== id || name != null && seriesModel.name !== name;\n  }\n}\n/**\n * @inner\n */\n\n\nfunction mergeTheme(option, theme) {\n  each(theme, function (themeItem, name) {\n    // 如果有 component model 则把具体的 merge 逻辑交给该 model 处理\n    if (!ComponentModel.hasClass(name)) {\n      if (typeof themeItem === 'object') {\n        option[name] = !option[name] ? clone(themeItem) : merge(option[name], themeItem, false);\n      } else {\n        if (option[name] == null) {\n          option[name] = themeItem;\n        }\n      }\n    }\n  });\n}\n\nfunction initBase(baseOption) {\n  baseOption = baseOption; // Using OPTION_INNER_KEY to mark that this option can not be used outside,\n  // i.e. `chart.setOption(chart.getModel().option);` is forbiden.\n\n  this.option = {};\n  this.option[OPTION_INNER_KEY] = 1;\n  /**\n   * Init with series: [], in case of calling findSeries method\n   * before series initialized.\n   * @type {Object.<string, Array.<module:echarts/model/Model>>}\n   * @private\n   */\n\n  this._componentsMap = createHashMap({\n    series: []\n  });\n  /**\n   * Mapping between filtered series list and raw series list.\n   * key: filtered series indices, value: raw series indices.\n   * @type {Array.<nubmer>}\n   * @private\n   */\n\n  this._seriesIndices;\n  this._seriesIndicesMap;\n  mergeTheme(baseOption, this._theme.option); // TODO Needs clone when merging to the unexisted property\n\n  merge(baseOption, globalDefault, false);\n  this.mergeOption(baseOption);\n}\n/**\n * @inner\n * @param {Array.<string>|string} types model types\n * @return {Object} key: {string} type, value: {Array.<Object>} models\n */\n\n\nfunction getComponentsByTypes(componentsMap, types) {\n  if (!isArray(types)) {\n    types = types ? [types] : [];\n  }\n\n  var ret = {};\n  each(types, function (type) {\n    ret[type] = (componentsMap.get(type) || []).slice();\n  });\n  return ret;\n}\n/**\n * @inner\n */\n\n\nfunction determineSubType(mainType, newCptOption, existComponent) {\n  var subType = newCptOption.type ? newCptOption.type : existComponent ? existComponent.subType // Use determineSubType only when there is no existComponent.\n  : ComponentModel.determineSubType(mainType, newCptOption); // tooltip, markline, markpoint may always has no subType\n\n  return subType;\n}\n/**\n * @inner\n */\n\n\nfunction createSeriesIndices(ecModel, seriesModels) {\n  ecModel._seriesIndicesMap = createHashMap(ecModel._seriesIndices = map(seriesModels, function (series) {\n    return series.componentIndex;\n  }) || []);\n}\n/**\n * @inner\n */\n\n\nfunction filterBySubType(components, condition) {\n  // Using hasOwnProperty for restrict. Consider\n  // subType is undefined in user payload.\n  return condition.hasOwnProperty('subType') ? filter(components, function (cpt) {\n    return cpt.subType === condition.subType;\n  }) : components;\n}\n/**\n * @inner\n */\n\n\nfunction assertSeriesInitialized(ecModel) {}\n\nmixin(GlobalModel, colorPaletteMixin);\nvar _default = GlobalModel;\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar env = require(\"zrender/lib/core/env\");\n\nvar _model = require(\"../util/model\");\n\nvar makeInner = _model.makeInner;\n\nvar _clazz = require(\"../util/clazz\");\n\nvar enableClassExtend = _clazz.enableClassExtend;\nvar enableClassCheck = _clazz.enableClassCheck;\n\nvar lineStyleMixin = require(\"./mixin/lineStyle\");\n\nvar areaStyleMixin = require(\"./mixin/areaStyle\");\n\nvar textStyleMixin = require(\"./mixin/textStyle\");\n\nvar itemStyleMixin = require(\"./mixin/itemStyle\");\n\n/**\n * @module echarts/model/Model\n */\nvar mixin = zrUtil.mixin;\nvar inner = makeInner();\n/**\n * @alias module:echarts/model/Model\n * @constructor\n * @param {Object} option\n * @param {module:echarts/model/Model} [parentModel]\n * @param {module:echarts/model/Global} [ecModel]\n */\n\nfunction Model(option, parentModel, ecModel) {\n  /**\n   * @type {module:echarts/model/Model}\n   * @readOnly\n   */\n  this.parentModel = parentModel;\n  /**\n   * @type {module:echarts/model/Global}\n   * @readOnly\n   */\n\n  this.ecModel = ecModel;\n  /**\n   * @type {Object}\n   * @protected\n   */\n\n  this.option = option; // Simple optimization\n  // if (this.init) {\n  //     if (arguments.length <= 4) {\n  //         this.init(option, parentModel, ecModel, extraOpt);\n  //     }\n  //     else {\n  //         this.init.apply(this, arguments);\n  //     }\n  // }\n}\n\nModel.prototype = {\n  constructor: Model,\n\n  /**\n   * Model 的初始化函数\n   * @param {Object} option\n   */\n  init: null,\n\n  /**\n   * 从新的 Option merge\n   */\n  mergeOption: function (option) {\n    zrUtil.merge(this.option, option, true);\n  },\n\n  /**\n   * @param {string|Array.<string>} path\n   * @param {boolean} [ignoreParent=false]\n   * @return {*}\n   */\n  get: function (path, ignoreParent) {\n    if (path == null) {\n      return this.option;\n    }\n\n    return doGet(this.option, this.parsePath(path), !ignoreParent && getParent(this, path));\n  },\n\n  /**\n   * @param {string} key\n   * @param {boolean} [ignoreParent=false]\n   * @return {*}\n   */\n  getShallow: function (key, ignoreParent) {\n    var option = this.option;\n    var val = option == null ? option : option[key];\n    var parentModel = !ignoreParent && getParent(this, key);\n\n    if (val == null && parentModel) {\n      val = parentModel.getShallow(key);\n    }\n\n    return val;\n  },\n\n  /**\n   * @param {string|Array.<string>} [path]\n   * @param {module:echarts/model/Model} [parentModel]\n   * @return {module:echarts/model/Model}\n   */\n  getModel: function (path, parentModel) {\n    var obj = path == null ? this.option : doGet(this.option, path = this.parsePath(path));\n    var thisParentModel;\n    parentModel = parentModel || (thisParentModel = getParent(this, path)) && thisParentModel.getModel(path);\n    return new Model(obj, parentModel, this.ecModel);\n  },\n\n  /**\n   * If model has option\n   */\n  isEmpty: function () {\n    return this.option == null;\n  },\n  restoreData: function () {},\n  // Pending\n  clone: function () {\n    var Ctor = this.constructor;\n    return new Ctor(zrUtil.clone(this.option));\n  },\n  setReadOnly: function (properties) {// clazzUtil.setReadOnly(this, properties);\n  },\n  // If path is null/undefined, return null/undefined.\n  parsePath: function (path) {\n    if (typeof path === 'string') {\n      path = path.split('.');\n    }\n\n    return path;\n  },\n\n  /**\n   * @param {Function} getParentMethod\n   *        param {Array.<string>|string} path\n   *        return {module:echarts/model/Model}\n   */\n  customizeGetParent: function (getParentMethod) {\n    inner(this).getParent = getParentMethod;\n  },\n  isAnimationEnabled: function () {\n    if (!env.node) {\n      if (this.option.animation != null) {\n        return !!this.option.animation;\n      } else if (this.parentModel) {\n        return this.parentModel.isAnimationEnabled();\n      }\n    }\n  }\n};\n\nfunction doGet(obj, pathArr, parentModel) {\n  for (var i = 0; i < pathArr.length; i++) {\n    // Ignore empty\n    if (!pathArr[i]) {\n      continue;\n    } // obj could be number/string/... (like 0)\n\n\n    obj = obj && typeof obj === 'object' ? obj[pathArr[i]] : null;\n\n    if (obj == null) {\n      break;\n    }\n  }\n\n  if (obj == null && parentModel) {\n    obj = parentModel.get(pathArr);\n  }\n\n  return obj;\n} // `path` can be null/undefined\n\n\nfunction getParent(model, path) {\n  var getParentMethod = inner(model).getParent;\n  return getParentMethod ? getParentMethod.call(model, path) : model.parentModel;\n} // Enable Model.extend.\n\n\nenableClassExtend(Model);\nenableClassCheck(Model);\nmixin(Model, lineStyleMixin);\nmixin(Model, areaStyleMixin);\nmixin(Model, textStyleMixin);\nmixin(Model, itemStyleMixin);\nvar _default = Model;\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar modelUtil = require(\"../util/model\");\n\nvar ComponentModel = require(\"./Component\");\n\n/**\n * ECharts option manager\n *\n * @module {echarts/model/OptionManager}\n */\nvar each = zrUtil.each;\nvar clone = zrUtil.clone;\nvar map = zrUtil.map;\nvar merge = zrUtil.merge;\nvar QUERY_REG = /^(min|max)?(.+)$/;\n/**\n * TERM EXPLANATIONS:\n *\n * [option]:\n *\n *     An object that contains definitions of components. For example:\n *     var option = {\n *         title: {...},\n *         legend: {...},\n *         visualMap: {...},\n *         series: [\n *             {data: [...]},\n *             {data: [...]},\n *             ...\n *         ]\n *     };\n *\n * [rawOption]:\n *\n *     An object input to echarts.setOption. 'rawOption' may be an\n *     'option', or may be an object contains multi-options. For example:\n *     var option = {\n *         baseOption: {\n *             title: {...},\n *             legend: {...},\n *             series: [\n *                 {data: [...]},\n *                 {data: [...]},\n *                 ...\n *             ]\n *         },\n *         timeline: {...},\n *         options: [\n *             {title: {...}, series: {data: [...]}},\n *             {title: {...}, series: {data: [...]}},\n *             ...\n *         ],\n *         media: [\n *             {\n *                 query: {maxWidth: 320},\n *                 option: {series: {x: 20}, visualMap: {show: false}}\n *             },\n *             {\n *                 query: {minWidth: 320, maxWidth: 720},\n *                 option: {series: {x: 500}, visualMap: {show: true}}\n *             },\n *             {\n *                 option: {series: {x: 1200}, visualMap: {show: true}}\n *             }\n *         ]\n *     };\n *\n * @alias module:echarts/model/OptionManager\n * @param {module:echarts/ExtensionAPI} api\n */\n\nfunction OptionManager(api) {\n  /**\n   * @private\n   * @type {module:echarts/ExtensionAPI}\n   */\n  this._api = api;\n  /**\n   * @private\n   * @type {Array.<number>}\n   */\n\n  this._timelineOptions = [];\n  /**\n   * @private\n   * @type {Array.<Object>}\n   */\n\n  this._mediaList = [];\n  /**\n   * @private\n   * @type {Object}\n   */\n\n  this._mediaDefault;\n  /**\n   * -1, means default.\n   * empty means no media.\n   * @private\n   * @type {Array.<number>}\n   */\n\n  this._currentMediaIndices = [];\n  /**\n   * @private\n   * @type {Object}\n   */\n\n  this._optionBackup;\n  /**\n   * @private\n   * @type {Object}\n   */\n\n  this._newBaseOption;\n} // timeline.notMerge is not supported in ec3. Firstly there is rearly\n// case that notMerge is needed. Secondly supporting 'notMerge' requires\n// rawOption cloned and backuped when timeline changed, which does no\n// good to performance. What's more, that both timeline and setOption\n// method supply 'notMerge' brings complex and some problems.\n// Consider this case:\n// (step1) chart.setOption({timeline: {notMerge: false}, ...}, false);\n// (step2) chart.setOption({timeline: {notMerge: true}, ...}, false);\n\n\nOptionManager.prototype = {\n  constructor: OptionManager,\n\n  /**\n   * @public\n   * @param {Object} rawOption Raw option.\n   * @param {module:echarts/model/Global} ecModel\n   * @param {Array.<Function>} optionPreprocessorFuncs\n   * @return {Object} Init option\n   */\n  setOption: function (rawOption, optionPreprocessorFuncs) {\n    if (rawOption) {\n      // That set dat primitive is dangerous if user reuse the data when setOption again.\n      zrUtil.each(modelUtil.normalizeToArray(rawOption.series), function (series) {\n        series && series.data && zrUtil.isTypedArray(series.data) && zrUtil.setAsPrimitive(series.data);\n      });\n    } // Caution: some series modify option data, if do not clone,\n    // it should ensure that the repeat modify correctly\n    // (create a new object when modify itself).\n\n\n    rawOption = clone(rawOption, true); // FIXME\n    // 如果 timeline options 或者 media 中设置了某个属性，而baseOption中没有设置，则进行警告。\n\n    var oldOptionBackup = this._optionBackup;\n    var newParsedOption = parseRawOption.call(this, rawOption, optionPreprocessorFuncs, !oldOptionBackup);\n    this._newBaseOption = newParsedOption.baseOption; // For setOption at second time (using merge mode);\n\n    if (oldOptionBackup) {\n      // Only baseOption can be merged.\n      mergeOption(oldOptionBackup.baseOption, newParsedOption.baseOption); // For simplicity, timeline options and media options do not support merge,\n      // that is, if you `setOption` twice and both has timeline options, the latter\n      // timeline opitons will not be merged to the formers, but just substitude them.\n\n      if (newParsedOption.timelineOptions.length) {\n        oldOptionBackup.timelineOptions = newParsedOption.timelineOptions;\n      }\n\n      if (newParsedOption.mediaList.length) {\n        oldOptionBackup.mediaList = newParsedOption.mediaList;\n      }\n\n      if (newParsedOption.mediaDefault) {\n        oldOptionBackup.mediaDefault = newParsedOption.mediaDefault;\n      }\n    } else {\n      this._optionBackup = newParsedOption;\n    }\n  },\n\n  /**\n   * @param {boolean} isRecreate\n   * @return {Object}\n   */\n  mountOption: function (isRecreate) {\n    var optionBackup = this._optionBackup; // TODO\n    // 如果没有reset功能则不clone。\n\n    this._timelineOptions = map(optionBackup.timelineOptions, clone);\n    this._mediaList = map(optionBackup.mediaList, clone);\n    this._mediaDefault = clone(optionBackup.mediaDefault);\n    this._currentMediaIndices = [];\n    return clone(isRecreate // this._optionBackup.baseOption, which is created at the first `setOption`\n    // called, and is merged into every new option by inner method `mergeOption`\n    // each time `setOption` called, can be only used in `isRecreate`, because\n    // its reliability is under suspicion. In other cases option merge is\n    // performed by `model.mergeOption`.\n    ? optionBackup.baseOption : this._newBaseOption);\n  },\n\n  /**\n   * @param {module:echarts/model/Global} ecModel\n   * @return {Object}\n   */\n  getTimelineOption: function (ecModel) {\n    var option;\n    var timelineOptions = this._timelineOptions;\n\n    if (timelineOptions.length) {\n      // getTimelineOption can only be called after ecModel inited,\n      // so we can get currentIndex from timelineModel.\n      var timelineModel = ecModel.getComponent('timeline');\n\n      if (timelineModel) {\n        option = clone(timelineOptions[timelineModel.getCurrentIndex()], true);\n      }\n    }\n\n    return option;\n  },\n\n  /**\n   * @param {module:echarts/model/Global} ecModel\n   * @return {Array.<Object>}\n   */\n  getMediaOption: function (ecModel) {\n    var ecWidth = this._api.getWidth();\n\n    var ecHeight = this._api.getHeight();\n\n    var mediaList = this._mediaList;\n    var mediaDefault = this._mediaDefault;\n    var indices = [];\n    var result = []; // No media defined.\n\n    if (!mediaList.length && !mediaDefault) {\n      return result;\n    } // Multi media may be applied, the latter defined media has higher priority.\n\n\n    for (var i = 0, len = mediaList.length; i < len; i++) {\n      if (applyMediaQuery(mediaList[i].query, ecWidth, ecHeight)) {\n        indices.push(i);\n      }\n    } // FIXME\n    // 是否mediaDefault应该强制用户设置，否则可能修改不能回归。\n\n\n    if (!indices.length && mediaDefault) {\n      indices = [-1];\n    }\n\n    if (indices.length && !indicesEquals(indices, this._currentMediaIndices)) {\n      result = map(indices, function (index) {\n        return clone(index === -1 ? mediaDefault.option : mediaList[index].option);\n      });\n    } // Otherwise return nothing.\n\n\n    this._currentMediaIndices = indices;\n    return result;\n  }\n};\n\nfunction parseRawOption(rawOption, optionPreprocessorFuncs, isNew) {\n  var timelineOptions = [];\n  var mediaList = [];\n  var mediaDefault;\n  var baseOption; // Compatible with ec2.\n\n  var timelineOpt = rawOption.timeline;\n\n  if (rawOption.baseOption) {\n    baseOption = rawOption.baseOption;\n  } // For timeline\n\n\n  if (timelineOpt || rawOption.options) {\n    baseOption = baseOption || {};\n    timelineOptions = (rawOption.options || []).slice();\n  } // For media query\n\n\n  if (rawOption.media) {\n    baseOption = baseOption || {};\n    var media = rawOption.media;\n    each(media, function (singleMedia) {\n      if (singleMedia && singleMedia.option) {\n        if (singleMedia.query) {\n          mediaList.push(singleMedia);\n        } else if (!mediaDefault) {\n          // Use the first media default.\n          mediaDefault = singleMedia;\n        }\n      }\n    });\n  } // For normal option\n\n\n  if (!baseOption) {\n    baseOption = rawOption;\n  } // Set timelineOpt to baseOption in ec3,\n  // which is convenient for merge option.\n\n\n  if (!baseOption.timeline) {\n    baseOption.timeline = timelineOpt;\n  } // Preprocess.\n\n\n  each([baseOption].concat(timelineOptions).concat(zrUtil.map(mediaList, function (media) {\n    return media.option;\n  })), function (option) {\n    each(optionPreprocessorFuncs, function (preProcess) {\n      preProcess(option, isNew);\n    });\n  });\n  return {\n    baseOption: baseOption,\n    timelineOptions: timelineOptions,\n    mediaDefault: mediaDefault,\n    mediaList: mediaList\n  };\n}\n/**\n * @see <http://www.w3.org/TR/css3-mediaqueries/#media1>\n * Support: width, height, aspectRatio\n * Can use max or min as prefix.\n */\n\n\nfunction applyMediaQuery(query, ecWidth, ecHeight) {\n  var realMap = {\n    width: ecWidth,\n    height: ecHeight,\n    aspectratio: ecWidth / ecHeight // lowser case for convenientce.\n\n  };\n  var applicatable = true;\n  zrUtil.each(query, function (value, attr) {\n    var matched = attr.match(QUERY_REG);\n\n    if (!matched || !matched[1] || !matched[2]) {\n      return;\n    }\n\n    var operator = matched[1];\n    var realAttr = matched[2].toLowerCase();\n\n    if (!compare(realMap[realAttr], value, operator)) {\n      applicatable = false;\n    }\n  });\n  return applicatable;\n}\n\nfunction compare(real, expect, operator) {\n  if (operator === 'min') {\n    return real >= expect;\n  } else if (operator === 'max') {\n    return real <= expect;\n  } else {\n    // Equals\n    return real === expect;\n  }\n}\n\nfunction indicesEquals(indices1, indices2) {\n  // indices is always order by asc and has only finite number.\n  return indices1.join(',') === indices2.join(',');\n}\n/**\n * Consider case:\n * `chart.setOption(opt1);`\n * Then user do some interaction like dataZoom, dataView changing.\n * `chart.setOption(opt2);`\n * Then user press 'reset button' in toolbox.\n *\n * After doing that all of the interaction effects should be reset, the\n * chart should be the same as the result of invoke\n * `chart.setOption(opt1); chart.setOption(opt2);`.\n *\n * Although it is not able ensure that\n * `chart.setOption(opt1); chart.setOption(opt2);` is equivalents to\n * `chart.setOption(merge(opt1, opt2));` exactly,\n * this might be the only simple way to implement that feature.\n *\n * MEMO: We've considered some other approaches:\n * 1. Each model handle its self restoration but not uniform treatment.\n *     (Too complex in logic and error-prone)\n * 2. Use a shadow ecModel. (Performace expensive)\n */\n\n\nfunction mergeOption(oldOption, newOption) {\n  newOption = newOption || {};\n  each(newOption, function (newCptOpt, mainType) {\n    if (newCptOpt == null) {\n      return;\n    }\n\n    var oldCptOpt = oldOption[mainType];\n\n    if (!ComponentModel.hasClass(mainType)) {\n      oldOption[mainType] = merge(oldCptOpt, newCptOpt, true);\n    } else {\n      newCptOpt = modelUtil.normalizeToArray(newCptOpt);\n      oldCptOpt = modelUtil.normalizeToArray(oldCptOpt);\n      var mapResult = modelUtil.mappingToExists(oldCptOpt, newCptOpt);\n      oldOption[mainType] = map(mapResult, function (item) {\n        return item.option && item.exist ? merge(item.exist, item.option, true) : item.exist || item.option;\n      });\n    }\n  });\n}\n\nvar _default = OptionManager;\nmodule.exports = _default;","var _config = require(\"../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar env = require(\"zrender/lib/core/env\");\n\nvar _format = require(\"../util/format\");\n\nvar formatTime = _format.formatTime;\nvar encodeHTML = _format.encodeHTML;\nvar addCommas = _format.addCommas;\nvar getTooltipMarker = _format.getTooltipMarker;\n\nvar modelUtil = require(\"../util/model\");\n\nvar ComponentModel = require(\"./Component\");\n\nvar colorPaletteMixin = require(\"./mixin/colorPalette\");\n\nvar dataFormatMixin = require(\"../model/mixin/dataFormat\");\n\nvar _layout = require(\"../util/layout\");\n\nvar getLayoutParams = _layout.getLayoutParams;\nvar mergeLayoutParam = _layout.mergeLayoutParam;\n\nvar _task = require(\"../stream/task\");\n\nvar createTask = _task.createTask;\n\nvar _sourceHelper = require(\"../data/helper/sourceHelper\");\n\nvar prepareSource = _sourceHelper.prepareSource;\nvar getSource = _sourceHelper.getSource;\n\nvar _dataProvider = require(\"../data/helper/dataProvider\");\n\nvar retrieveRawValue = _dataProvider.retrieveRawValue;\nvar inner = modelUtil.makeInner();\nvar SeriesModel = ComponentModel.extend({\n  type: 'series.__base__',\n\n  /**\n   * @readOnly\n   */\n  seriesIndex: 0,\n  // coodinateSystem will be injected in the echarts/CoordinateSystem\n  coordinateSystem: null,\n\n  /**\n   * @type {Object}\n   * @protected\n   */\n  defaultOption: null,\n\n  /**\n   * Data provided for legend\n   * @type {Function}\n   */\n  // PENDING\n  legendDataProvider: null,\n\n  /**\n   * Access path of color for visual\n   */\n  visualColorAccessPath: 'itemStyle.color',\n\n  /**\n   * Support merge layout params.\n   * Only support 'box' now (left/right/top/bottom/width/height).\n   * @type {string|Object} Object can be {ignoreSize: true}\n   * @readOnly\n   */\n  layoutMode: null,\n  init: function (option, parentModel, ecModel, extraOpt) {\n    /**\n     * @type {number}\n     * @readOnly\n     */\n    this.seriesIndex = this.componentIndex;\n    this.dataTask = createTask({\n      count: dataTaskCount,\n      reset: dataTaskReset\n    });\n    this.dataTask.context = {\n      model: this\n    };\n    this.mergeDefaultAndTheme(option, ecModel);\n    prepareSource(this);\n    var data = this.getInitialData(option, ecModel);\n    wrapData(data, this);\n    this.dataTask.context.data = data;\n\n    /**\n     * @type {module:echarts/data/List|module:echarts/data/Tree|module:echarts/data/Graph}\n     * @private\n     */\n    inner(this).dataBeforeProcessed = data; // If we reverse the order (make data firstly, and then make\n    // dataBeforeProcessed by cloneShallow), cloneShallow will\n    // cause data.graph.data !== data when using\n    // module:echarts/data/Graph or module:echarts/data/Tree.\n    // See module:echarts/data/helper/linkList\n    // Theoretically, it is unreasonable to call `seriesModel.getData()` in the model\n    // init or merge stage, because the data can be restored. So we do not `restoreData`\n    // and `setData` here, which forbids calling `seriesModel.getData()` in this stage.\n    // Call `seriesModel.getRawData()` instead.\n    // this.restoreData();\n\n    autoSeriesName(this);\n  },\n\n  /**\n   * Util for merge default and theme to option\n   * @param  {Object} option\n   * @param  {module:echarts/model/Global} ecModel\n   */\n  mergeDefaultAndTheme: function (option, ecModel) {\n    var layoutMode = this.layoutMode;\n    var inputPositionParams = layoutMode ? getLayoutParams(option) : {}; // Backward compat: using subType on theme.\n    // But if name duplicate between series subType\n    // (for example: parallel) add component mainType,\n    // add suffix 'Series'.\n\n    var themeSubType = this.subType;\n\n    if (ComponentModel.hasClass(themeSubType)) {\n      themeSubType += 'Series';\n    }\n\n    zrUtil.merge(option, ecModel.getTheme().get(this.subType));\n    zrUtil.merge(option, this.getDefaultOption()); // Default label emphasis `show`\n\n    modelUtil.defaultEmphasis(option, 'label', ['show']);\n    this.fillDataTextStyle(option.data);\n\n    if (layoutMode) {\n      mergeLayoutParam(option, inputPositionParams, layoutMode);\n    }\n  },\n  mergeOption: function (newSeriesOption, ecModel) {\n    // this.settingTask.dirty();\n    newSeriesOption = zrUtil.merge(this.option, newSeriesOption, true);\n    this.fillDataTextStyle(newSeriesOption.data);\n    var layoutMode = this.layoutMode;\n\n    if (layoutMode) {\n      mergeLayoutParam(this.option, newSeriesOption, layoutMode);\n    }\n\n    prepareSource(this);\n    var data = this.getInitialData(newSeriesOption, ecModel);\n    wrapData(data, this);\n    this.dataTask.dirty();\n    this.dataTask.context.data = data;\n    inner(this).dataBeforeProcessed = data;\n    autoSeriesName(this);\n  },\n  fillDataTextStyle: function (data) {\n    // Default data label emphasis `show`\n    // FIXME Tree structure data ?\n    // FIXME Performance ?\n    if (data) {\n      var props = ['show'];\n\n      for (var i = 0; i < data.length; i++) {\n        if (data[i] && data[i].label) {\n          modelUtil.defaultEmphasis(data[i], 'label', props);\n        }\n      }\n    }\n  },\n\n  /**\n   * Init a data structure from data related option in series\n   * Must be overwritten\n   */\n  getInitialData: function () {},\n\n  /**\n   * Append data to list\n   * @param {Object} params\n   * @param {Array|TypedArray} params.data\n   */\n  appendData: function (params) {\n    // FIXME ???\n    // (1) If data from dataset, forbidden append.\n    // (2) support append data of dataset.\n    var data = this.getRawData();\n    data.appendData(params.data);\n  },\n\n  /**\n   * Consider some method like `filter`, `map` need make new data,\n   * We should make sure that `seriesModel.getData()` get correct\n   * data in the stream procedure. So we fetch data from upstream\n   * each time `task.perform` called.\n   * @param {string} [dataType]\n   * @return {module:echarts/data/List}\n   */\n  getData: function (dataType) {\n    var task = getCurrentTask(this);\n\n    if (task) {\n      var data = task.context.data;\n      return dataType == null ? data : data.getLinkedData(dataType);\n    } else {\n      // When series is not alive (that may happen when click toolbox\n      // restore or setOption with not merge mode), series data may\n      // be still need to judge animation or something when graphic\n      // elements want to know whether fade out.\n      return inner(this).data;\n    }\n  },\n\n  /**\n   * @param {module:echarts/data/List} data\n   */\n  setData: function (data) {\n    var task = getCurrentTask(this);\n\n    if (task) {\n      var context = task.context; // Consider case: filter, data sample.\n\n      if (context.data !== data && task.isOverallFilter) {\n        task.setOutputEnd(data.count());\n      }\n\n      context.outputData = data; // Caution: setData should update context.data,\n      // Because getData may be called multiply in a\n      // single stage and expect to get the data just\n      // set. (For example, AxisProxy, x y both call\n      // getData and setDate sequentially).\n      // So the context.data should be fetched from\n      // upstream each time when a stage starts to be\n      // performed.\n\n      if (task !== this.dataTask) {\n        context.data = data;\n      }\n    }\n\n    inner(this).data = data;\n  },\n\n  /**\n   * @see {module:echarts/data/helper/sourceHelper#getSource}\n   * @return {module:echarts/data/Source} source\n   */\n  getSource: function () {\n    return getSource(this);\n  },\n\n  /**\n   * Get data before processed\n   * @return {module:echarts/data/List}\n   */\n  getRawData: function () {\n    return inner(this).dataBeforeProcessed;\n  },\n\n  /**\n   * Get base axis if has coordinate system and has axis.\n   * By default use coordSys.getBaseAxis();\n   * Can be overrided for some chart.\n   * @return {type} description\n   */\n  getBaseAxis: function () {\n    var coordSys = this.coordinateSystem;\n    return coordSys && coordSys.getBaseAxis && coordSys.getBaseAxis();\n  },\n  // FIXME\n\n  /**\n   * Default tooltip formatter\n   *\n   * @param {number} dataIndex\n   * @param {boolean} [multipleSeries=false]\n   * @param {number} [dataType]\n   */\n  formatTooltip: function (dataIndex, multipleSeries, dataType) {\n    function formatArrayValue(value) {\n      // ??? TODO refactor these logic.\n      // check: category-no-encode-has-axis-data in dataset.html\n      var vertially = zrUtil.reduce(value, function (vertially, val, idx) {\n        var dimItem = data.getDimensionInfo(idx);\n        return vertially |= dimItem && dimItem.tooltip !== false && dimItem.displayName != null;\n      }, 0);\n      var result = [];\n      tooltipDims.length ? zrUtil.each(tooltipDims, function (dim) {\n        setEachItem(retrieveRawValue(data, dataIndex, dim), dim);\n      }) // By default, all dims is used on tooltip.\n      : zrUtil.each(value, setEachItem);\n\n      function setEachItem(val, dim) {\n        var dimInfo = data.getDimensionInfo(dim); // If `dimInfo.tooltip` is not set, show tooltip.\n\n        if (!dimInfo || dimInfo.otherDims.tooltip === false) {\n          return;\n        }\n\n        var dimType = dimInfo.type;\n        var dimHead = getTooltipMarker({\n          color: color,\n          type: 'subItem'\n        });\n        var valStr = (vertially ? dimHead + encodeHTML(dimInfo.displayName || '-') + ': ' : '') + // FIXME should not format time for raw data?\n        encodeHTML(dimType === 'ordinal' ? val + '' : dimType === 'time' ? multipleSeries ? '' : formatTime('yyyy/MM/dd hh:mm:ss', val) : addCommas(val));\n        valStr && result.push(valStr);\n      }\n\n      return (vertially ? '<br/>' : '') + result.join(vertially ? '<br/>' : ', ');\n    }\n\n    function formatSingleValue(val) {\n      return encodeHTML(addCommas(val));\n    }\n\n    var data = this.getData();\n    var tooltipDims = data.mapDimension('defaultedTooltip', true);\n    var tooltipDimLen = tooltipDims.length;\n    var value = this.getRawValue(dataIndex);\n    var isValueArr = zrUtil.isArray(value);\n    var color = data.getItemVisual(dataIndex, 'color');\n\n    if (zrUtil.isObject(color) && color.colorStops) {\n      color = (color.colorStops[0] || {}).color;\n    }\n\n    color = color || 'transparent'; // Complicated rule for pretty tooltip.\n\n    var formattedValue = tooltipDimLen > 1 || isValueArr && !tooltipDimLen ? formatArrayValue(value) : tooltipDimLen ? formatSingleValue(retrieveRawValue(data, dataIndex, tooltipDims[0])) : formatSingleValue(isValueArr ? value[0] : value);\n    var colorEl = getTooltipMarker(color);\n    var name = data.getName(dataIndex);\n    var seriesName = this.name;\n\n    if (seriesName === modelUtil.DEFAULT_COMPONENT_NAME) {\n      // Not show '-'\n      seriesName = '';\n    }\n\n    seriesName = seriesName ? encodeHTML(seriesName) + (!multipleSeries ? '<br/>' : ': ') : '';\n    return !multipleSeries ? seriesName + colorEl + (name ? encodeHTML(name) + ': ' + formattedValue : formattedValue) : colorEl + seriesName + formattedValue;\n  },\n\n  /**\n   * @return {boolean}\n   */\n  isAnimationEnabled: function () {\n    if (env.node) {\n      return false;\n    }\n\n    var animationEnabled = this.getShallow('animation');\n\n    if (animationEnabled) {\n      if (this.getData().count() > this.getShallow('animationThreshold')) {\n        animationEnabled = false;\n      }\n    }\n\n    return animationEnabled;\n  },\n  restoreData: function () {\n    this.dataTask.dirty();\n  },\n  getColorFromPalette: function (name, scope, requestColorNum) {\n    var ecModel = this.ecModel; // PENDING\n\n    var color = colorPaletteMixin.getColorFromPalette.call(this, name, scope, requestColorNum);\n\n    if (!color) {\n      color = ecModel.getColorFromPalette(name, scope, requestColorNum);\n    }\n\n    return color;\n  },\n\n  /**\n   * Use `data.mapDimension(coordDim, true)` instead.\n   * @deprecated\n   */\n  coordDimToDataDim: function (coordDim) {\n    return this.getRawData().mapDimension(coordDim, true);\n  },\n\n  /**\n   * Get progressive rendering count each step\n   * @return {number}\n   */\n  getProgressive: function () {\n    return this.get('progressive');\n  },\n\n  /**\n   * Get progressive rendering count each step\n   * @return {number}\n   */\n  getProgressiveThreshold: function () {\n    return this.get('progressiveThreshold');\n  },\n\n  /**\n   * Get data indices for show tooltip content. See tooltip.\n   * @abstract\n   * @param {Array.<string>|string} dim\n   * @param {Array.<number>} value\n   * @param {module:echarts/coord/single/SingleAxis} baseAxis\n   * @return {Object} {dataIndices, nestestValue}.\n   */\n  getAxisTooltipData: null,\n\n  /**\n   * See tooltip.\n   * @abstract\n   * @param {number} dataIndex\n   * @return {Array.<number>} Point of tooltip. null/undefined can be returned.\n   */\n  getTooltipPosition: null,\n\n  /**\n   * @see {module:echarts/stream/Scheduler}\n   */\n  pipeTask: null,\n\n  /**\n   * Convinient for override in extended class.\n   * @protected\n   * @type {Function}\n   */\n  preventIncremental: null,\n\n  /**\n   * @public\n   * @readOnly\n   * @type {Object}\n   */\n  pipelineContext: null\n});\nzrUtil.mixin(SeriesModel, dataFormatMixin);\nzrUtil.mixin(SeriesModel, colorPaletteMixin);\n/**\n * MUST be called after `prepareSource` called\n * Here we need to make auto series, especially for auto legend. But we\n * do not modify series.name in option to avoid side effects.\n */\n\nfunction autoSeriesName(seriesModel) {\n  // User specified name has higher priority, otherwise it may cause\n  // series can not be queried unexpectedly.\n  var name = seriesModel.name;\n\n  if (modelUtil.DEFAULT_COMPONENT_NAME === name) {\n    seriesModel.name = getSeriesAutoName(seriesModel) || name;\n  }\n}\n\nfunction getSeriesAutoName(seriesModel) {\n  var data = seriesModel.getRawData();\n  var dataDims = data.mapDimension('seriesName', true);\n  var nameArr = [];\n  zrUtil.each(dataDims, function (dataDim) {\n    var dimInfo = data.getDimensionInfo(dataDim);\n    dimInfo.displayName && nameArr.push(dimInfo.displayName);\n  });\n  return nameArr.join(' ');\n}\n\nfunction dataTaskCount(context) {\n  return context.model.getRawData().count();\n}\n\nfunction dataTaskReset(context) {\n  var seriesModel = context.model;\n  seriesModel.setData(seriesModel.getRawData().cloneShallow());\n  return dataTaskProgress;\n}\n\nfunction dataTaskProgress(param, context) {\n  // Avoid repead cloneShallow when data just created in reset.\n  if (param.end > context.outputData.count()) {\n    context.model.getRawData().cloneShallow(context.outputData);\n  }\n} // TODO refactor\n\n\nfunction wrapData(data, seriesModel) {\n  zrUtil.each(data.CHANGABLE_METHODS, function (methodName) {\n    data.wrapMethod(methodName, zrUtil.curry(onDataSelfChange, seriesModel));\n  });\n}\n\nfunction onDataSelfChange(seriesModel) {\n  var task = getCurrentTask(seriesModel);\n\n  if (task) {\n    // Consider case: filter, selectRange\n    task.setOutputEnd(this.count());\n  }\n}\n\nfunction getCurrentTask(seriesModel) {\n  var scheduler = (seriesModel.ecModel || {}).scheduler;\n  var pipeline = scheduler && scheduler.getPipeline(seriesModel.uid);\n\n  if (pipeline) {\n    // When pipline finished, the currrentTask keep the last\n    // task (renderTask).\n    var task = pipeline.currentTask;\n\n    if (task) {\n      var agentStubMap = task.agentStubMap;\n\n      if (agentStubMap) {\n        task = agentStubMap.get(seriesModel.uid);\n      }\n    }\n\n    return task;\n  }\n}\n\nvar _default = SeriesModel;\nmodule.exports = _default;","var platform = ''; // Navigator not exists in node\n\nif (typeof navigator !== 'undefined') {\n  platform = navigator.platform || '';\n}\n\nvar _default = {\n  // 全图默认背景\n  // backgroundColor: 'rgba(0,0,0,0)',\n  // https://dribbble.com/shots/1065960-Infographic-Pie-chart-visualization\n  // color: ['#5793f3', '#d14a61', '#fd9c35', '#675bba', '#fec42c', '#dd4444', '#d4df5a', '#cd4870'],\n  // 浅色\n  // color: ['#bcd3bb', '#e88f70', '#edc1a5', '#9dc5c8', '#e1e8c8', '#7b7c68', '#e5b5b5', '#f0b489', '#928ea8', '#bda29a'],\n  // color: ['#cc5664', '#9bd6ec', '#ea946e', '#8acaaa', '#f1ec64', '#ee8686', '#a48dc1', '#5da6bc', '#b9dcae'],\n  // 深色\n  color: ['#c23531', '#2f4554', '#61a0a8', '#d48265', '#91c7ae', '#749f83', '#ca8622', '#bda29a', '#6e7074', '#546570', '#c4ccd3'],\n  gradientColor: ['#f6efa6', '#d88273', '#bf444c'],\n  // 默认需要 Grid 配置项\n  // grid: {},\n  // 主题，主题\n  textStyle: {\n    // color: '#000',\n    // decoration: 'none',\n    // PENDING\n    fontFamily: platform.match(/^Win/) ? 'Microsoft YaHei' : 'sans-serif',\n    // fontFamily: 'Arial, Verdana, sans-serif',\n    fontSize: 12,\n    fontStyle: 'normal',\n    fontWeight: 'normal'\n  },\n  // http://blogs.adobe.com/webplatform/2014/02/24/using-blend-modes-in-html-canvas/\n  // https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/globalCompositeOperation\n  // Default is source-over\n  blendMode: null,\n  animation: 'auto',\n  animationDuration: 1000,\n  animationDurationUpdate: 300,\n  animationEasing: 'exponentialOut',\n  animationEasingUpdate: 'cubicOut',\n  animationThreshold: 2000,\n  // Configuration for progressive/incremental rendering\n  progressiveThreshold: 3000,\n  progressive: 400,\n  // Threshold of if use single hover layer to optimize.\n  // It is recommended that `hoverLayerThreshold` is equivalent to or less than\n  // `progressiveThreshold`, otherwise hover will cause restart of progressive,\n  // which is unexpected.\n  // see example <echarts/test/heatmap-large.html>.\n  hoverLayerThreshold: 3000,\n  // See: module:echarts/scale/Time\n  useUTC: false\n};\nmodule.exports = _default;","var makeStyleMapper = require(\"./makeStyleMapper\");\n\nvar getAreaStyle = makeStyleMapper([['fill', 'color'], ['shadowBlur'], ['shadowOffsetX'], ['shadowOffsetY'], ['opacity'], ['shadowColor']]);\nvar _default = {\n  getAreaStyle: function (excludes, includes) {\n    return getAreaStyle(this, excludes, includes);\n  }\n};\nmodule.exports = _default;","var _default = {\n  getBoxLayoutParams: function () {\n    return {\n      left: this.get('left'),\n      top: this.get('top'),\n      right: this.get('right'),\n      bottom: this.get('bottom'),\n      width: this.get('width'),\n      height: this.get('height')\n    };\n  }\n};\nmodule.exports = _default;","var _model = require(\"../../util/model\");\n\nvar makeInner = _model.makeInner;\nvar normalizeToArray = _model.normalizeToArray;\nvar inner = makeInner();\n\nfunction getNearestColorPalette(colors, requestColorNum) {\n  var paletteNum = colors.length; // TODO colors must be in order\n\n  for (var i = 0; i < paletteNum; i++) {\n    if (colors[i].length > requestColorNum) {\n      return colors[i];\n    }\n  }\n\n  return colors[paletteNum - 1];\n}\n\nvar _default = {\n  clearColorPalette: function () {\n    inner(this).colorIdx = 0;\n    inner(this).colorNameMap = {};\n  },\n  getColorFromPalette: function (name, scope, requestColorNum) {\n    scope = scope || this;\n    var scopeFields = inner(scope);\n    var colorIdx = scopeFields.colorIdx || 0;\n    var colorNameMap = scopeFields.colorNameMap = scopeFields.colorNameMap || {}; // Use `hasOwnProperty` to avoid conflict with Object.prototype.\n\n    if (colorNameMap.hasOwnProperty(name)) {\n      return colorNameMap[name];\n    }\n\n    var defaultColorPalette = normalizeToArray(this.get('color', true));\n    var layeredColorPalette = this.get('colorLayer', true);\n    var colorPalette = requestColorNum == null || !layeredColorPalette ? defaultColorPalette : getNearestColorPalette(layeredColorPalette, requestColorNum); // In case can't find in layered color palette.\n\n    colorPalette = colorPalette || defaultColorPalette;\n\n    if (!colorPalette || !colorPalette.length) {\n      return;\n    }\n\n    var color = colorPalette[colorIdx];\n\n    if (name) {\n      colorNameMap[name] = color;\n    }\n\n    scopeFields.colorIdx = (colorIdx + 1) % colorPalette.length;\n    return color;\n  }\n};\nmodule.exports = _default;","var _dataProvider = require(\"../../data/helper/dataProvider\");\n\nvar retrieveRawValue = _dataProvider.retrieveRawValue;\n\nvar _format = require(\"../../util/format\");\n\nvar getTooltipMarker = _format.getTooltipMarker;\nvar formatTpl = _format.formatTpl;\nvar DIMENSION_LABEL_REG = /\\{@(.+?)\\}/g; // PENDING A little ugly\n\nvar _default = {\n  /**\n   * Get params for formatter\n   * @param {number} dataIndex\n   * @param {string} [dataType]\n   * @return {Object}\n   */\n  getDataParams: function (dataIndex, dataType) {\n    var data = this.getData(dataType);\n    var rawValue = this.getRawValue(dataIndex, dataType);\n    var rawDataIndex = data.getRawIndex(dataIndex);\n    var name = data.getName(dataIndex, true);\n    var itemOpt = data.getRawDataItem(dataIndex);\n    var color = data.getItemVisual(dataIndex, 'color');\n    return {\n      componentType: this.mainType,\n      componentSubType: this.subType,\n      seriesType: this.mainType === 'series' ? this.subType : null,\n      seriesIndex: this.seriesIndex,\n      seriesId: this.id,\n      seriesName: this.name,\n      name: name,\n      dataIndex: rawDataIndex,\n      data: itemOpt,\n      dataType: dataType,\n      value: rawValue,\n      color: color,\n      marker: getTooltipMarker(color),\n      // Param name list for mapping `a`, `b`, `c`, `d`, `e`\n      $vars: ['seriesName', 'name', 'value']\n    };\n  },\n\n  /**\n   * Format label\n   * @param {number} dataIndex\n   * @param {string} [status='normal'] 'normal' or 'emphasis'\n   * @param {string} [dataType]\n   * @param {number} [dimIndex]\n   * @param {string} [labelProp='label']\n   * @return {string} If not formatter, return null/undefined\n   */\n  getFormattedLabel: function (dataIndex, status, dataType, dimIndex, labelProp) {\n    status = status || 'normal';\n    var data = this.getData(dataType);\n    var itemModel = data.getItemModel(dataIndex);\n    var params = this.getDataParams(dataIndex, dataType);\n\n    if (dimIndex != null && params.value instanceof Array) {\n      params.value = params.value[dimIndex];\n    }\n\n    var formatter = itemModel.get(status === 'normal' ? [labelProp || 'label', 'formatter'] : [status, labelProp || 'label', 'formatter']);\n\n    if (typeof formatter === 'function') {\n      params.status = status;\n      return formatter(params);\n    } else if (typeof formatter === 'string') {\n      var str = formatTpl(formatter, params); // Support 'aaa{@[3]}bbb{@product}ccc'.\n      // Do not support '}' in dim name util have to.\n\n      return str.replace(DIMENSION_LABEL_REG, function (origin, dim) {\n        var len = dim.length;\n\n        if (dim.charAt(0) === '[' && dim.charAt(len - 1) === ']') {\n          dim = +dim.slice(1, len - 1); // Also: '[]' => 0\n        }\n\n        return retrieveRawValue(data, dataIndex, dim);\n      });\n    }\n  },\n\n  /**\n   * Get raw value in option\n   * @param {number} idx\n   * @param {string} [dataType]\n   * @return {Array|number|string}\n   */\n  getRawValue: function (idx, dataType) {\n    return retrieveRawValue(this.getData(dataType), idx);\n  },\n\n  /**\n   * Should be implemented.\n   * @param {number} dataIndex\n   * @param {boolean} [multipleSeries=false]\n   * @param {number} [dataType]\n   * @return {string} tooltip string\n   */\n  formatTooltip: function () {// Empty function\n  }\n};\nmodule.exports = _default;","var makeStyleMapper = require(\"./makeStyleMapper\");\n\nvar getItemStyle = makeStyleMapper([['fill', 'color'], ['stroke', 'borderColor'], ['lineWidth', 'borderWidth'], ['opacity'], ['shadowBlur'], ['shadowOffsetX'], ['shadowOffsetY'], ['shadowColor'], ['textPosition'], ['textAlign']]);\nvar _default = {\n  getItemStyle: function (excludes, includes) {\n    var style = getItemStyle(this, excludes, includes);\n    var lineDash = this.getBorderLineDash();\n    lineDash && (style.lineDash = lineDash);\n    return style;\n  },\n  getBorderLineDash: function () {\n    var lineType = this.get('borderType');\n    return lineType === 'solid' || lineType == null ? null : lineType === 'dashed' ? [5, 5] : [1, 1];\n  }\n};\nmodule.exports = _default;","var makeStyleMapper = require(\"./makeStyleMapper\");\n\nvar getLineStyle = makeStyleMapper([['lineWidth', 'width'], ['stroke', 'color'], ['opacity'], ['shadowBlur'], ['shadowOffsetX'], ['shadowOffsetY'], ['shadowColor']]);\nvar _default = {\n  getLineStyle: function (excludes) {\n    var style = getLineStyle(this, excludes);\n    var lineDash = this.getLineDash(style.lineWidth);\n    lineDash && (style.lineDash = lineDash);\n    return style;\n  },\n  getLineDash: function (lineWidth) {\n    if (lineWidth == null) {\n      lineWidth = 1;\n    }\n\n    var lineType = this.get('type');\n    var dotSize = Math.max(lineWidth, 2);\n    var dashSize = lineWidth * 4;\n    return lineType === 'solid' || lineType == null ? null : lineType === 'dashed' ? [dashSize, dashSize] : [dotSize, dotSize];\n  }\n};\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\n// TODO Parse shadow style\n// TODO Only shallow path support\nfunction _default(properties) {\n  // Normalize\n  for (var i = 0; i < properties.length; i++) {\n    if (!properties[i][1]) {\n      properties[i][1] = properties[i][0];\n    }\n  }\n\n  return function (model, excludes, includes) {\n    var style = {};\n\n    for (var i = 0; i < properties.length; i++) {\n      var propName = properties[i][1];\n\n      if (excludes && zrUtil.indexOf(excludes, propName) >= 0 || includes && zrUtil.indexOf(includes, propName) < 0) {\n        continue;\n      }\n\n      var val = model.getShallow(propName);\n\n      if (val != null) {\n        style[properties[i][0]] = val;\n      }\n    }\n\n    return style;\n  };\n}\n\nmodule.exports = _default;","var textContain = require(\"zrender/lib/contain/text\");\n\nvar graphicUtil = require(\"../../util/graphic\");\n\nvar PATH_COLOR = ['textStyle', 'color'];\nvar _default = {\n  /**\n   * Get color property or get color from option.textStyle.color\n   * @param {boolean} [isEmphasis]\n   * @return {string}\n   */\n  getTextColor: function (isEmphasis) {\n    var ecModel = this.ecModel;\n    return this.getShallow('color') || (!isEmphasis && ecModel ? ecModel.get(PATH_COLOR) : null);\n  },\n\n  /**\n   * Create font string from fontStyle, fontWeight, fontSize, fontFamily\n   * @return {string}\n   */\n  getFont: function () {\n    return graphicUtil.getFont({\n      fontStyle: this.getShallow('fontStyle'),\n      fontWeight: this.getShallow('fontWeight'),\n      fontSize: this.getShallow('fontSize'),\n      fontFamily: this.getShallow('fontFamily')\n    }, this.ecModel);\n  },\n  getTextRect: function (text) {\n    return textContain.getBoundingRect(text, this.getFont(), this.getShallow('align'), this.getShallow('verticalAlign') || this.getShallow('baseline'), this.getShallow('padding'), this.getShallow('rich'), this.getShallow('truncateText'));\n  }\n};\nmodule.exports = _default;","var _config = require(\"../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar createHashMap = _util.createHashMap;\nvar retrieve = _util.retrieve;\nvar each = _util.each;\n\n/**\n * Helper for model references.\n * There are many manners to refer axis/coordSys.\n */\n// TODO\n// merge relevant logic to this file?\n// check: \"modelHelper\" of tooltip and \"BrushTargetManager\".\n\n/**\n * @return {Object} For example:\n * {\n *     coordSysName: 'cartesian2d',\n *     coordSysDims: ['x', 'y', ...],\n *     axisMap: HashMap({\n *         x: xAxisModel,\n *         y: yAxisModel\n *     }),\n *     categoryAxisMap: HashMap({\n *         x: xAxisModel,\n *         y: undefined\n *     }),\n *     // It also indicate that whether there is category axis.\n *     firstCategoryDimIndex: 1,\n *     // To replace user specified encode.\n * }\n */\nfunction getCoordSysDefineBySeries(seriesModel) {\n  var coordSysName = seriesModel.get('coordinateSystem');\n  var result = {\n    coordSysName: coordSysName,\n    coordSysDims: [],\n    axisMap: createHashMap(),\n    categoryAxisMap: createHashMap()\n  };\n  var fetch = fetchers[coordSysName];\n\n  if (fetch) {\n    fetch(seriesModel, result, result.axisMap, result.categoryAxisMap);\n    return result;\n  }\n}\n\nvar fetchers = {\n  cartesian2d: function (seriesModel, result, axisMap, categoryAxisMap) {\n    var xAxisModel = seriesModel.getReferringComponents('xAxis')[0];\n    var yAxisModel = seriesModel.getReferringComponents('yAxis')[0];\n    result.coordSysDims = ['x', 'y'];\n    axisMap.set('x', xAxisModel);\n    axisMap.set('y', yAxisModel);\n\n    if (isCategory(xAxisModel)) {\n      categoryAxisMap.set('x', xAxisModel);\n      result.firstCategoryDimIndex = 0;\n    }\n\n    if (isCategory(yAxisModel)) {\n      categoryAxisMap.set('y', yAxisModel);\n      result.firstCategoryDimIndex = 1;\n    }\n  },\n  singleAxis: function (seriesModel, result, axisMap, categoryAxisMap) {\n    var singleAxisModel = seriesModel.getReferringComponents('singleAxis')[0];\n    result.coordSysDims = ['single'];\n    axisMap.set('single', singleAxisModel);\n\n    if (isCategory(singleAxisModel)) {\n      categoryAxisMap.set('single', singleAxisModel);\n      result.firstCategoryDimIndex = 0;\n    }\n  },\n  polar: function (seriesModel, result, axisMap, categoryAxisMap) {\n    var polarModel = seriesModel.getReferringComponents('polar')[0];\n    var radiusAxisModel = polarModel.findAxisModel('radiusAxis');\n    var angleAxisModel = polarModel.findAxisModel('angleAxis');\n    result.coordSysDims = ['radius', 'angle'];\n    axisMap.set('radius', radiusAxisModel);\n    axisMap.set('angle', angleAxisModel);\n\n    if (isCategory(radiusAxisModel)) {\n      categoryAxisMap.set('radius', radiusAxisModel);\n      result.firstCategoryDimIndex = 0;\n    }\n\n    if (isCategory(angleAxisModel)) {\n      categoryAxisMap.set('angle', angleAxisModel);\n      result.firstCategoryDimIndex = 1;\n    }\n  },\n  geo: function (seriesModel, result, axisMap, categoryAxisMap) {\n    result.coordSysDims = ['lng', 'lat'];\n  },\n  parallel: function (seriesModel, result, axisMap, categoryAxisMap) {\n    var ecModel = seriesModel.ecModel;\n    var parallelModel = ecModel.getComponent('parallel', seriesModel.get('parallelIndex'));\n    var coordSysDims = result.coordSysDims = parallelModel.dimensions.slice();\n    each(parallelModel.parallelAxisIndex, function (axisIndex, index) {\n      var axisModel = ecModel.getComponent('parallelAxis', axisIndex);\n      var axisDim = coordSysDims[index];\n      axisMap.set(axisDim, axisModel);\n\n      if (isCategory(axisModel) && result.firstCategoryDimIndex == null) {\n        categoryAxisMap.set(axisDim, axisModel);\n        result.firstCategoryDimIndex = index;\n      }\n    });\n  }\n};\n\nfunction isCategory(axisModel) {\n  return axisModel.get('type') === 'category';\n}\n\nexports.getCoordSysDefineBySeries = getCoordSysDefineBySeries;","var _util = require(\"zrender/lib/core/util\");\n\nvar each = _util.each;\nvar isArray = _util.isArray;\nvar isObject = _util.isObject;\n\nvar compatStyle = require(\"./helper/compatStyle\");\n\nvar _model = require(\"../util/model\");\n\nvar normalizeToArray = _model.normalizeToArray;\n\n// Compatitable with 2.0\nfunction get(opt, path) {\n  path = path.split(',');\n  var obj = opt;\n\n  for (var i = 0; i < path.length; i++) {\n    obj = obj && obj[path[i]];\n\n    if (obj == null) {\n      break;\n    }\n  }\n\n  return obj;\n}\n\nfunction set(opt, path, val, overwrite) {\n  path = path.split(',');\n  var obj = opt;\n  var key;\n\n  for (var i = 0; i < path.length - 1; i++) {\n    key = path[i];\n\n    if (obj[key] == null) {\n      obj[key] = {};\n    }\n\n    obj = obj[key];\n  }\n\n  if (overwrite || obj[path[i]] == null) {\n    obj[path[i]] = val;\n  }\n}\n\nfunction compatLayoutProperties(option) {\n  each(LAYOUT_PROPERTIES, function (prop) {\n    if (prop[0] in option && !(prop[1] in option)) {\n      option[prop[1]] = option[prop[0]];\n    }\n  });\n}\n\nvar LAYOUT_PROPERTIES = [['x', 'left'], ['y', 'top'], ['x2', 'right'], ['y2', 'bottom']];\nvar COMPATITABLE_COMPONENTS = ['grid', 'geo', 'parallel', 'legend', 'toolbox', 'title', 'visualMap', 'dataZoom', 'timeline'];\n\nfunction _default(option, isTheme) {\n  compatStyle(option, isTheme); // Make sure series array for model initialization.\n\n  option.series = normalizeToArray(option.series);\n  each(option.series, function (seriesOpt) {\n    if (!isObject(seriesOpt)) {\n      return;\n    }\n\n    var seriesType = seriesOpt.type;\n\n    if (seriesType === 'pie' || seriesType === 'gauge') {\n      if (seriesOpt.clockWise != null) {\n        seriesOpt.clockwise = seriesOpt.clockWise;\n      }\n    }\n\n    if (seriesType === 'gauge') {\n      var pointerColor = get(seriesOpt, 'pointer.color');\n      pointerColor != null && set(seriesOpt, 'itemStyle.normal.color', pointerColor);\n    }\n\n    compatLayoutProperties(seriesOpt);\n  }); // dataRange has changed to visualMap\n\n  if (option.dataRange) {\n    option.visualMap = option.dataRange;\n  }\n\n  each(COMPATITABLE_COMPONENTS, function (componentName) {\n    var options = option[componentName];\n\n    if (options) {\n      if (!isArray(options)) {\n        options = [options];\n      }\n\n      each(options, function (option) {\n        compatLayoutProperties(option);\n      });\n    }\n  });\n}\n\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar modelUtil = require(\"../../util/model\");\n\nvar each = zrUtil.each;\nvar isObject = zrUtil.isObject;\nvar POSSIBLE_STYLES = ['areaStyle', 'lineStyle', 'nodeStyle', 'linkStyle', 'chordStyle', 'label', 'labelLine'];\n\nfunction compatEC2ItemStyle(opt) {\n  var itemStyleOpt = opt && opt.itemStyle;\n\n  if (!itemStyleOpt) {\n    return;\n  }\n\n  for (var i = 0, len = POSSIBLE_STYLES.length; i < len; i++) {\n    var styleName = POSSIBLE_STYLES[i];\n    var normalItemStyleOpt = itemStyleOpt.normal;\n    var emphasisItemStyleOpt = itemStyleOpt.emphasis;\n\n    if (normalItemStyleOpt && normalItemStyleOpt[styleName]) {\n      opt[styleName] = opt[styleName] || {};\n\n      if (!opt[styleName].normal) {\n        opt[styleName].normal = normalItemStyleOpt[styleName];\n      } else {\n        zrUtil.merge(opt[styleName].normal, normalItemStyleOpt[styleName]);\n      }\n\n      normalItemStyleOpt[styleName] = null;\n    }\n\n    if (emphasisItemStyleOpt && emphasisItemStyleOpt[styleName]) {\n      opt[styleName] = opt[styleName] || {};\n\n      if (!opt[styleName].emphasis) {\n        opt[styleName].emphasis = emphasisItemStyleOpt[styleName];\n      } else {\n        zrUtil.merge(opt[styleName].emphasis, emphasisItemStyleOpt[styleName]);\n      }\n\n      emphasisItemStyleOpt[styleName] = null;\n    }\n  }\n}\n\nfunction convertNormalEmphasis(opt, optType, useExtend) {\n  if (opt && opt[optType] && (opt[optType].normal || opt[optType].emphasis)) {\n    var normalOpt = opt[optType].normal;\n    var emphasisOpt = opt[optType].emphasis;\n\n    if (normalOpt) {\n      // Timeline controlStyle has other properties besides normal and emphasis\n      if (useExtend) {\n        opt[optType].normal = opt[optType].emphasis = null;\n        zrUtil.defaults(opt[optType], normalOpt);\n      } else {\n        opt[optType] = normalOpt;\n      }\n    }\n\n    if (emphasisOpt) {\n      opt.emphasis = opt.emphasis || {};\n      opt.emphasis[optType] = emphasisOpt;\n    }\n  }\n}\n\nfunction removeEC3NormalStatus(opt) {\n  convertNormalEmphasis(opt, 'itemStyle');\n  convertNormalEmphasis(opt, 'lineStyle');\n  convertNormalEmphasis(opt, 'areaStyle');\n  convertNormalEmphasis(opt, 'label');\n  convertNormalEmphasis(opt, 'labelLine'); // treemap\n\n  convertNormalEmphasis(opt, 'upperLabel'); // graph\n\n  convertNormalEmphasis(opt, 'edgeLabel');\n}\n\nfunction compatTextStyle(labelOpt) {\n  var textStyle = isObject(labelOpt) && labelOpt.textStyle;\n\n  if (textStyle) {\n    for (var i = 0, len = modelUtil.TEXT_STYLE_OPTIONS.length; i < len; i++) {\n      var propName = modelUtil.TEXT_STYLE_OPTIONS[i];\n\n      if (textStyle.hasOwnProperty(propName)) {\n        labelOpt[propName] = textStyle[propName];\n      }\n    }\n  }\n}\n\nfunction compatEC3CommonStyles(opt) {\n  if (opt) {\n    removeEC3NormalStatus(opt);\n    compatTextStyle(opt.label);\n    opt.emphasis && compatTextStyle(opt.emphasis.label);\n  }\n}\n\nfunction processSeries(seriesOpt) {\n  if (!isObject(seriesOpt)) {\n    return;\n  }\n\n  compatEC2ItemStyle(seriesOpt);\n  removeEC3NormalStatus(seriesOpt);\n  compatTextStyle(seriesOpt.label); // treemap\n\n  compatTextStyle(seriesOpt.upperLabel); // graph\n\n  compatTextStyle(seriesOpt.edgeLabel);\n\n  if (seriesOpt.emphasis) {\n    compatTextStyle(seriesOpt.emphasis.label); // treemap\n\n    compatTextStyle(seriesOpt.emphasis.upperLabel); // graph\n\n    compatTextStyle(seriesOpt.emphasis.edgeLabel);\n  }\n\n  var markPoint = seriesOpt.markPoint;\n\n  if (markPoint) {\n    compatEC2ItemStyle(markPoint);\n    compatEC3CommonStyles(markPoint);\n  }\n\n  var markLine = seriesOpt.markLine;\n\n  if (markLine) {\n    compatEC2ItemStyle(markLine);\n    compatEC3CommonStyles(markLine);\n  }\n\n  var markArea = seriesOpt.markArea;\n\n  if (markArea) {\n    compatEC3CommonStyles(markArea);\n  }\n\n  var data = seriesOpt.data; // Break with ec3: if `setOption` again, there may be no `type` in option,\n  // then the backward compat based on option type will not be performed.\n\n  if (seriesOpt.type === 'graph') {\n    data = data || seriesOpt.nodes;\n    var edgeData = seriesOpt.links || seriesOpt.edges;\n\n    if (edgeData && !zrUtil.isTypedArray(edgeData)) {\n      for (var i = 0; i < edgeData.length; i++) {\n        compatEC3CommonStyles(edgeData[i]);\n      }\n    }\n\n    zrUtil.each(seriesOpt.categories, function (opt) {\n      removeEC3NormalStatus(opt);\n    });\n  }\n\n  if (data && !zrUtil.isTypedArray(data)) {\n    for (var i = 0; i < data.length; i++) {\n      compatEC3CommonStyles(data[i]);\n    }\n  } // mark point data\n\n\n  var markPoint = seriesOpt.markPoint;\n\n  if (markPoint && markPoint.data) {\n    var mpData = markPoint.data;\n\n    for (var i = 0; i < mpData.length; i++) {\n      compatEC3CommonStyles(mpData[i]);\n    }\n  } // mark line data\n\n\n  var markLine = seriesOpt.markLine;\n\n  if (markLine && markLine.data) {\n    var mlData = markLine.data;\n\n    for (var i = 0; i < mlData.length; i++) {\n      if (zrUtil.isArray(mlData[i])) {\n        compatEC3CommonStyles(mlData[i][0]);\n        compatEC3CommonStyles(mlData[i][1]);\n      } else {\n        compatEC3CommonStyles(mlData[i]);\n      }\n    }\n  } // Series\n\n\n  if (seriesOpt.type === 'gauge') {\n    compatTextStyle(seriesOpt, 'axisLabel');\n    compatTextStyle(seriesOpt, 'title');\n    compatTextStyle(seriesOpt, 'detail');\n  } else if (seriesOpt.type === 'treemap') {\n    convertNormalEmphasis(seriesOpt.breadcrumb, 'itemStyle');\n    zrUtil.each(seriesOpt.levels, function (opt) {\n      removeEC3NormalStatus(opt);\n    });\n  } // sunburst starts from ec4, so it does not need to compat levels.\n\n}\n\nfunction toArr(o) {\n  return zrUtil.isArray(o) ? o : o ? [o] : [];\n}\n\nfunction toObj(o) {\n  return (zrUtil.isArray(o) ? o[0] : o) || {};\n}\n\nfunction _default(option, isTheme) {\n  each(toArr(option.series), function (seriesOpt) {\n    isObject(seriesOpt) && processSeries(seriesOpt);\n  });\n  var axes = ['xAxis', 'yAxis', 'radiusAxis', 'angleAxis', 'singleAxis', 'parallelAxis', 'radar'];\n  isTheme && axes.push('valueAxis', 'categoryAxis', 'logAxis', 'timeAxis');\n  each(axes, function (axisName) {\n    each(toArr(option[axisName]), function (axisOpt) {\n      if (axisOpt) {\n        compatTextStyle(axisOpt, 'axisLabel');\n        compatTextStyle(axisOpt.axisPointer, 'label');\n      }\n    });\n  });\n  each(toArr(option.parallel), function (parallelOpt) {\n    var parallelAxisDefault = parallelOpt && parallelOpt.parallelAxisDefault;\n    compatTextStyle(parallelAxisDefault, 'axisLabel');\n    compatTextStyle(parallelAxisDefault && parallelAxisDefault.axisPointer, 'label');\n  });\n  each(toArr(option.calendar), function (calendarOpt) {\n    convertNormalEmphasis(calendarOpt, 'itemStyle');\n    compatTextStyle(calendarOpt, 'dayLabel');\n    compatTextStyle(calendarOpt, 'monthLabel');\n    compatTextStyle(calendarOpt, 'yearLabel');\n  }); // radar.name.textStyle\n\n  each(toArr(option.radar), function (radarOpt) {\n    compatTextStyle(radarOpt, 'name');\n  });\n  each(toArr(option.geo), function (geoOpt) {\n    if (isObject(geoOpt)) {\n      compatEC3CommonStyles(geoOpt);\n      each(toArr(geoOpt.regions), function (regionObj) {\n        compatEC3CommonStyles(regionObj);\n      });\n    }\n  });\n  each(toArr(option.timeline), function (timelineOpt) {\n    compatEC3CommonStyles(timelineOpt);\n    convertNormalEmphasis(timelineOpt, 'label');\n    convertNormalEmphasis(timelineOpt, 'itemStyle');\n    convertNormalEmphasis(timelineOpt, 'controlStyle', true);\n    convertNormalEmphasis(timelineOpt, 'checkpointStyle');\n    var data = timelineOpt.data;\n    zrUtil.isArray(data) && zrUtil.each(data, function (item) {\n      if (zrUtil.isObject(item)) {\n        convertNormalEmphasis(item, 'label');\n        convertNormalEmphasis(item, 'itemStyle');\n      }\n    });\n  });\n  each(toArr(option.toolbox), function (toolboxOpt) {\n    convertNormalEmphasis(toolboxOpt, 'iconStyle');\n    each(toolboxOpt.feature, function (featureOpt) {\n      convertNormalEmphasis(featureOpt, 'iconStyle');\n    });\n  });\n  compatTextStyle(toObj(option.axisPointer), 'label');\n  compatTextStyle(toObj(option.tooltip).axisPointer, 'label');\n}\n\nmodule.exports = _default;","function _default(seriesType) {\n  return {\n    seriesType: seriesType,\n    reset: function (seriesModel, ecModel) {\n      var legendModels = ecModel.findComponents({\n        mainType: 'legend'\n      });\n\n      if (!legendModels || !legendModels.length) {\n        return;\n      }\n\n      var data = seriesModel.getData();\n      data.filterSelf(function (idx) {\n        var name = data.getName(idx); // If in any legend component the status is not selected.\n\n        for (var i = 0; i < legendModels.length; i++) {\n          if (!legendModels[i].isSelected(name)) {\n            return false;\n          }\n        }\n\n        return true;\n      }, this);\n    }\n  };\n}\n\nmodule.exports = _default;","var samplers = {\n  average: function (frame) {\n    var sum = 0;\n    var count = 0;\n\n    for (var i = 0; i < frame.length; i++) {\n      if (!isNaN(frame[i])) {\n        sum += frame[i];\n        count++;\n      }\n    } // Return NaN if count is 0\n\n\n    return count === 0 ? NaN : sum / count;\n  },\n  sum: function (frame) {\n    var sum = 0;\n\n    for (var i = 0; i < frame.length; i++) {\n      // Ignore NaN\n      sum += frame[i] || 0;\n    }\n\n    return sum;\n  },\n  max: function (frame) {\n    var max = -Infinity;\n\n    for (var i = 0; i < frame.length; i++) {\n      frame[i] > max && (max = frame[i]);\n    }\n\n    return max;\n  },\n  min: function (frame) {\n    var min = Infinity;\n\n    for (var i = 0; i < frame.length; i++) {\n      frame[i] < min && (min = frame[i]);\n    }\n\n    return min;\n  },\n  // TODO\n  // Median\n  nearest: function (frame) {\n    return frame[0];\n  }\n};\n\nvar indexSampler = function (frame, value) {\n  return Math.round(frame.length / 2);\n};\n\nfunction _default(seriesType) {\n  return {\n    seriesType: seriesType,\n    reset: function (seriesModel, ecModel, api) {\n      var data = seriesModel.getData();\n      var sampling = seriesModel.get('sampling');\n      var coordSys = seriesModel.coordinateSystem; // Only cartesian2d support down sampling\n\n      if (coordSys.type === 'cartesian2d' && sampling) {\n        var baseAxis = coordSys.getBaseAxis();\n        var valueAxis = coordSys.getOtherAxis(baseAxis);\n        var extent = baseAxis.getExtent(); // Coordinste system has been resized\n\n        var size = extent[1] - extent[0];\n        var rate = Math.round(data.count() / size);\n\n        if (rate > 1) {\n          var sampler;\n\n          if (typeof sampling === 'string') {\n            sampler = samplers[sampling];\n          } else if (typeof sampling === 'function') {\n            sampler = sampling;\n          }\n\n          if (sampler) {\n            seriesModel.setData(data.downSample(valueAxis.dim, 1 / rate, sampler, indexSampler));\n          }\n        }\n      }\n    }\n  };\n}\n\nmodule.exports = _default;","var numberUtil = require(\"../util/number\");\n\nvar formatUtil = require(\"../util/format\");\n\nvar Scale = require(\"./Scale\");\n\nvar helper = require(\"./helper\");\n\n/**\n * Interval scale\n * @module echarts/scale/Interval\n */\nvar roundNumber = numberUtil.round;\n/**\n * @alias module:echarts/coord/scale/Interval\n * @constructor\n */\n\nvar IntervalScale = Scale.extend({\n  type: 'interval',\n  _interval: 0,\n  _intervalPrecision: 2,\n  setExtent: function (start, end) {\n    var thisExtent = this._extent; //start,end may be a Number like '25',so...\n\n    if (!isNaN(start)) {\n      thisExtent[0] = parseFloat(start);\n    }\n\n    if (!isNaN(end)) {\n      thisExtent[1] = parseFloat(end);\n    }\n  },\n  unionExtent: function (other) {\n    var extent = this._extent;\n    other[0] < extent[0] && (extent[0] = other[0]);\n    other[1] > extent[1] && (extent[1] = other[1]); // unionExtent may called by it's sub classes\n\n    IntervalScale.prototype.setExtent.call(this, extent[0], extent[1]);\n  },\n\n  /**\n   * Get interval\n   */\n  getInterval: function () {\n    return this._interval;\n  },\n\n  /**\n   * Set interval\n   */\n  setInterval: function (interval) {\n    this._interval = interval; // Dropped auto calculated niceExtent and use user setted extent\n    // We assume user wan't to set both interval, min, max to get a better result\n\n    this._niceExtent = this._extent.slice();\n    this._intervalPrecision = helper.getIntervalPrecision(interval);\n  },\n\n  /**\n   * @return {Array.<number>}\n   */\n  getTicks: function () {\n    return helper.intervalScaleGetTicks(this._interval, this._extent, this._niceExtent, this._intervalPrecision);\n  },\n\n  /**\n   * @return {Array.<string>}\n   */\n  getTicksLabels: function () {\n    var labels = [];\n    var ticks = this.getTicks();\n\n    for (var i = 0; i < ticks.length; i++) {\n      labels.push(this.getLabel(ticks[i]));\n    }\n\n    return labels;\n  },\n\n  /**\n   * @param {number} data\n   * @param {Object} [opt]\n   * @param {number|string} [opt.precision] If 'auto', use nice presision.\n   * @param {boolean} [opt.pad] returns 1.50 but not 1.5 if precision is 2.\n   * @return {string}\n   */\n  getLabel: function (data, opt) {\n    if (data == null) {\n      return '';\n    }\n\n    var precision = opt && opt.precision;\n\n    if (precision == null) {\n      precision = numberUtil.getPrecisionSafe(data) || 0;\n    } else if (precision === 'auto') {\n      // Should be more precise then tick.\n      precision = this._intervalPrecision;\n    } // (1) If `precision` is set, 12.005 should be display as '12.00500'.\n    // (2) Use roundNumber (toFixed) to avoid scientific notation like '3.5e-7'.\n\n\n    data = roundNumber(data, precision, true);\n    return formatUtil.addCommas(data);\n  },\n\n  /**\n   * Update interval and extent of intervals for nice ticks\n   *\n   * @param {number} [splitNumber = 5] Desired number of ticks\n   * @param {number} [minInterval]\n   * @param {number} [maxInterval]\n   */\n  niceTicks: function (splitNumber, minInterval, maxInterval) {\n    splitNumber = splitNumber || 5;\n    var extent = this._extent;\n    var span = extent[1] - extent[0];\n\n    if (!isFinite(span)) {\n      return;\n    } // User may set axis min 0 and data are all negative\n    // FIXME If it needs to reverse ?\n\n\n    if (span < 0) {\n      span = -span;\n      extent.reverse();\n    }\n\n    var result = helper.intervalScaleNiceTicks(extent, splitNumber, minInterval, maxInterval);\n    this._intervalPrecision = result.intervalPrecision;\n    this._interval = result.interval;\n    this._niceExtent = result.niceTickExtent;\n  },\n\n  /**\n   * Nice extent.\n   * @param {Object} opt\n   * @param {number} [opt.splitNumber = 5] Given approx tick number\n   * @param {boolean} [opt.fixMin=false]\n   * @param {boolean} [opt.fixMax=false]\n   * @param {boolean} [opt.minInterval]\n   * @param {boolean} [opt.maxInterval]\n   */\n  niceExtent: function (opt) {\n    var extent = this._extent; // If extent start and end are same, expand them\n\n    if (extent[0] === extent[1]) {\n      if (extent[0] !== 0) {\n        // Expand extent\n        var expandSize = extent[0]; // In the fowllowing case\n        //      Axis has been fixed max 100\n        //      Plus data are all 100 and axis extent are [100, 100].\n        // Extend to the both side will cause expanded max is larger than fixed max.\n        // So only expand to the smaller side.\n\n        if (!opt.fixMax) {\n          extent[1] += expandSize / 2;\n          extent[0] -= expandSize / 2;\n        } else {\n          extent[0] -= expandSize / 2;\n        }\n      } else {\n        extent[1] = 1;\n      }\n    }\n\n    var span = extent[1] - extent[0]; // If there are no data and extent are [Infinity, -Infinity]\n\n    if (!isFinite(span)) {\n      extent[0] = 0;\n      extent[1] = 1;\n    }\n\n    this.niceTicks(opt.splitNumber, opt.minInterval, opt.maxInterval); // var extent = this._extent;\n\n    var interval = this._interval;\n\n    if (!opt.fixMin) {\n      extent[0] = roundNumber(Math.floor(extent[0] / interval) * interval);\n    }\n\n    if (!opt.fixMax) {\n      extent[1] = roundNumber(Math.ceil(extent[1] / interval) * interval);\n    }\n  }\n});\n/**\n * @return {module:echarts/scale/Time}\n */\n\nIntervalScale.create = function () {\n  return new IntervalScale();\n};\n\nvar _default = IntervalScale;\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar Scale = require(\"./Scale\");\n\nvar numberUtil = require(\"../util/number\");\n\nvar IntervalScale = require(\"./Interval\");\n\n/**\n * Log scale\n * @module echarts/scale/Log\n */\n// Use some method of IntervalScale\nvar scaleProto = Scale.prototype;\nvar intervalScaleProto = IntervalScale.prototype;\nvar getPrecisionSafe = numberUtil.getPrecisionSafe;\nvar roundingErrorFix = numberUtil.round;\nvar mathFloor = Math.floor;\nvar mathCeil = Math.ceil;\nvar mathPow = Math.pow;\nvar mathLog = Math.log;\nvar LogScale = Scale.extend({\n  type: 'log',\n  base: 10,\n  $constructor: function () {\n    Scale.apply(this, arguments);\n    this._originalScale = new IntervalScale();\n  },\n\n  /**\n   * @return {Array.<number>}\n   */\n  getTicks: function () {\n    var originalScale = this._originalScale;\n    var extent = this._extent;\n    var originalExtent = originalScale.getExtent();\n    return zrUtil.map(intervalScaleProto.getTicks.call(this), function (val) {\n      var powVal = numberUtil.round(mathPow(this.base, val)); // Fix #4158\n\n      powVal = val === extent[0] && originalScale.__fixMin ? fixRoundingError(powVal, originalExtent[0]) : powVal;\n      powVal = val === extent[1] && originalScale.__fixMax ? fixRoundingError(powVal, originalExtent[1]) : powVal;\n      return powVal;\n    }, this);\n  },\n\n  /**\n   * @param {number} val\n   * @return {string}\n   */\n  getLabel: intervalScaleProto.getLabel,\n\n  /**\n   * @param  {number} val\n   * @return {number}\n   */\n  scale: function (val) {\n    val = scaleProto.scale.call(this, val);\n    return mathPow(this.base, val);\n  },\n\n  /**\n   * @param {number} start\n   * @param {number} end\n   */\n  setExtent: function (start, end) {\n    var base = this.base;\n    start = mathLog(start) / mathLog(base);\n    end = mathLog(end) / mathLog(base);\n    intervalScaleProto.setExtent.call(this, start, end);\n  },\n\n  /**\n   * @return {number} end\n   */\n  getExtent: function () {\n    var base = this.base;\n    var extent = scaleProto.getExtent.call(this);\n    extent[0] = mathPow(base, extent[0]);\n    extent[1] = mathPow(base, extent[1]); // Fix #4158\n\n    var originalScale = this._originalScale;\n    var originalExtent = originalScale.getExtent();\n    originalScale.__fixMin && (extent[0] = fixRoundingError(extent[0], originalExtent[0]));\n    originalScale.__fixMax && (extent[1] = fixRoundingError(extent[1], originalExtent[1]));\n    return extent;\n  },\n\n  /**\n   * @param  {Array.<number>} extent\n   */\n  unionExtent: function (extent) {\n    this._originalScale.unionExtent(extent);\n\n    var base = this.base;\n    extent[0] = mathLog(extent[0]) / mathLog(base);\n    extent[1] = mathLog(extent[1]) / mathLog(base);\n    scaleProto.unionExtent.call(this, extent);\n  },\n\n  /**\n   * @override\n   */\n  unionExtentFromData: function (data, dim) {\n    this.unionExtent(data.getApproximateExtent(dim, true, function (val) {\n      return val > 0;\n    }));\n  },\n\n  /**\n   * Update interval and extent of intervals for nice ticks\n   * @param  {number} [approxTickNum = 10] Given approx tick number\n   */\n  niceTicks: function (approxTickNum) {\n    approxTickNum = approxTickNum || 10;\n    var extent = this._extent;\n    var span = extent[1] - extent[0];\n\n    if (span === Infinity || span <= 0) {\n      return;\n    }\n\n    var interval = numberUtil.quantity(span);\n    var err = approxTickNum / span * interval; // Filter ticks to get closer to the desired count.\n\n    if (err <= 0.5) {\n      interval *= 10;\n    } // Interval should be integer\n\n\n    while (!isNaN(interval) && Math.abs(interval) < 1 && Math.abs(interval) > 0) {\n      interval *= 10;\n    }\n\n    var niceExtent = [numberUtil.round(mathCeil(extent[0] / interval) * interval), numberUtil.round(mathFloor(extent[1] / interval) * interval)];\n    this._interval = interval;\n    this._niceExtent = niceExtent;\n  },\n\n  /**\n   * Nice extent.\n   * @override\n   */\n  niceExtent: function (opt) {\n    intervalScaleProto.niceExtent.call(this, opt);\n    var originalScale = this._originalScale;\n    originalScale.__fixMin = opt.fixMin;\n    originalScale.__fixMax = opt.fixMax;\n  }\n});\nzrUtil.each(['contain', 'normalize'], function (methodName) {\n  LogScale.prototype[methodName] = function (val) {\n    val = mathLog(val) / mathLog(this.base);\n    return scaleProto[methodName].call(this, val);\n  };\n});\n\nLogScale.create = function () {\n  return new LogScale();\n};\n\nfunction fixRoundingError(val, originalVal) {\n  return roundingErrorFix(val, getPrecisionSafe(originalVal));\n}\n\nvar _default = LogScale;\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar Scale = require(\"./Scale\");\n\nvar OrdinalMeta = require(\"../data/OrdinalMeta\");\n\n/**\n * Linear continuous scale\n * @module echarts/coord/scale/Ordinal\n *\n * http://en.wikipedia.org/wiki/Level_of_measurement\n */\n// FIXME only one data\nvar scaleProto = Scale.prototype;\nvar OrdinalScale = Scale.extend({\n  type: 'ordinal',\n\n  /**\n   * @param {module:echarts/data/OrdianlMeta|Array.<string>} ordinalMeta\n   */\n  init: function (ordinalMeta, extent) {\n    // Caution: Should not use instanceof, consider ec-extensions using\n    // import approach to get OrdinalMeta class.\n    if (!ordinalMeta || zrUtil.isArray(ordinalMeta)) {\n      ordinalMeta = new OrdinalMeta({\n        categories: ordinalMeta\n      });\n    }\n\n    this._ordinalMeta = ordinalMeta;\n    this._extent = extent || [0, ordinalMeta.categories.length - 1];\n  },\n  parse: function (val) {\n    return typeof val === 'string' ? this._ordinalMeta.getOrdinal(val) // val might be float.\n    : Math.round(val);\n  },\n  contain: function (rank) {\n    rank = this.parse(rank);\n    return scaleProto.contain.call(this, rank) && this._ordinalMeta.categories[rank] != null;\n  },\n\n  /**\n   * Normalize given rank or name to linear [0, 1]\n   * @param {number|string} [val]\n   * @return {number}\n   */\n  normalize: function (val) {\n    return scaleProto.normalize.call(this, this.parse(val));\n  },\n  scale: function (val) {\n    return Math.round(scaleProto.scale.call(this, val));\n  },\n\n  /**\n   * @return {Array}\n   */\n  getTicks: function () {\n    var ticks = [];\n    var extent = this._extent;\n    var rank = extent[0];\n\n    while (rank <= extent[1]) {\n      ticks.push(rank);\n      rank++;\n    }\n\n    return ticks;\n  },\n\n  /**\n   * Get item on rank n\n   * @param {number} n\n   * @return {string}\n   */\n  getLabel: function (n) {\n    return this._ordinalMeta.categories[n];\n  },\n\n  /**\n   * @return {number}\n   */\n  count: function () {\n    return this._extent[1] - this._extent[0] + 1;\n  },\n\n  /**\n   * @override\n   */\n  unionExtentFromData: function (data, dim) {\n    this.unionExtent(data.getApproximateExtent(dim, false));\n  },\n  niceTicks: zrUtil.noop,\n  niceExtent: zrUtil.noop\n});\n/**\n * @return {module:echarts/scale/Time}\n */\n\nOrdinalScale.create = function () {\n  return new OrdinalScale();\n};\n\nvar _default = OrdinalScale;\nmodule.exports = _default;","var clazzUtil = require(\"../util/clazz\");\n\n/**\n * // Scale class management\n * @module echarts/scale/Scale\n */\n\n/**\n * @param {Object} [setting]\n */\nfunction Scale(setting) {\n  this._setting = setting || {};\n  /**\n   * Extent\n   * @type {Array.<number>}\n   * @protected\n   */\n\n  this._extent = [Infinity, -Infinity];\n  /**\n   * Step is calculated in adjustExtent\n   * @type {Array.<number>}\n   * @protected\n   */\n\n  this._interval = 0;\n  this.init && this.init.apply(this, arguments);\n}\n/**\n * Parse input val to valid inner number.\n * @param {*} val\n * @return {number}\n */\n\n\nScale.prototype.parse = function (val) {\n  // Notice: This would be a trap here, If the implementation\n  // of this method depends on extent, and this method is used\n  // before extent set (like in dataZoom), it would be wrong.\n  // Nevertheless, parse does not depend on extent generally.\n  return val;\n};\n\nScale.prototype.getSetting = function (name) {\n  return this._setting[name];\n};\n\nScale.prototype.contain = function (val) {\n  var extent = this._extent;\n  return val >= extent[0] && val <= extent[1];\n};\n/**\n * Normalize value to linear [0, 1], return 0.5 if extent span is 0\n * @param {number} val\n * @return {number}\n */\n\n\nScale.prototype.normalize = function (val) {\n  var extent = this._extent;\n\n  if (extent[1] === extent[0]) {\n    return 0.5;\n  }\n\n  return (val - extent[0]) / (extent[1] - extent[0]);\n};\n/**\n * Scale normalized value\n * @param {number} val\n * @return {number}\n */\n\n\nScale.prototype.scale = function (val) {\n  var extent = this._extent;\n  return val * (extent[1] - extent[0]) + extent[0];\n};\n/**\n * Set extent from data\n * @param {Array.<number>} other\n */\n\n\nScale.prototype.unionExtent = function (other) {\n  var extent = this._extent;\n  other[0] < extent[0] && (extent[0] = other[0]);\n  other[1] > extent[1] && (extent[1] = other[1]); // not setExtent because in log axis it may transformed to power\n  // this.setExtent(extent[0], extent[1]);\n};\n/**\n * Set extent from data\n * @param {module:echarts/data/List} data\n * @param {string} dim\n */\n\n\nScale.prototype.unionExtentFromData = function (data, dim) {\n  this.unionExtent(data.getApproximateExtent(dim, true));\n};\n/**\n * Get extent\n * @return {Array.<number>}\n */\n\n\nScale.prototype.getExtent = function () {\n  return this._extent.slice();\n};\n/**\n * Set extent\n * @param {number} start\n * @param {number} end\n */\n\n\nScale.prototype.setExtent = function (start, end) {\n  var thisExtent = this._extent;\n\n  if (!isNaN(start)) {\n    thisExtent[0] = start;\n  }\n\n  if (!isNaN(end)) {\n    thisExtent[1] = end;\n  }\n};\n/**\n * @return {Array.<string>}\n */\n\n\nScale.prototype.getTicksLabels = function () {\n  var labels = [];\n  var ticks = this.getTicks();\n\n  for (var i = 0; i < ticks.length; i++) {\n    labels.push(this.getLabel(ticks[i]));\n  }\n\n  return labels;\n};\n/**\n * When axis extent depends on data and no data exists,\n * axis ticks should not be drawn, which is named 'blank'.\n */\n\n\nScale.prototype.isBlank = function () {\n  return this._isBlank;\n},\n/**\n * When axis extent depends on data and no data exists,\n * axis ticks should not be drawn, which is named 'blank'.\n */\nScale.prototype.setBlank = function (isBlank) {\n  this._isBlank = isBlank;\n};\nclazzUtil.enableClassExtend(Scale);\nclazzUtil.enableClassManagement(Scale, {\n  registerWhenExtend: true\n});\nvar _default = Scale;\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar numberUtil = require(\"../util/number\");\n\nvar formatUtil = require(\"../util/format\");\n\nvar scaleHelper = require(\"./helper\");\n\nvar IntervalScale = require(\"./Interval\");\n\n// [About UTC and local time zone]:\n// In most cases, `number.parseDate` will treat input data string as local time\n// (except time zone is specified in time string). And `format.formateTime` returns\n// local time by default. option.useUTC is false by default. This design have\n// concidered these common case:\n// (1) Time that is persistent in server is in UTC, but it is needed to be diplayed\n// in local time by default.\n// (2) By default, the input data string (e.g., '2011-01-02') should be displayed\n// as its original time, without any time difference.\nvar intervalScaleProto = IntervalScale.prototype;\nvar mathCeil = Math.ceil;\nvar mathFloor = Math.floor;\nvar ONE_SECOND = 1000;\nvar ONE_MINUTE = ONE_SECOND * 60;\nvar ONE_HOUR = ONE_MINUTE * 60;\nvar ONE_DAY = ONE_HOUR * 24; // FIXME 公用？\n\nvar bisect = function (a, x, lo, hi) {\n  while (lo < hi) {\n    var mid = lo + hi >>> 1;\n\n    if (a[mid][1] < x) {\n      lo = mid + 1;\n    } else {\n      hi = mid;\n    }\n  }\n\n  return lo;\n};\n/**\n * @alias module:echarts/coord/scale/Time\n * @constructor\n */\n\n\nvar TimeScale = IntervalScale.extend({\n  type: 'time',\n\n  /**\n   * @override\n   */\n  getLabel: function (val) {\n    var stepLvl = this._stepLvl;\n    var date = new Date(val);\n    return formatUtil.formatTime(stepLvl[0], date, this.getSetting('useUTC'));\n  },\n\n  /**\n   * @override\n   */\n  niceExtent: function (opt) {\n    var extent = this._extent; // If extent start and end are same, expand them\n\n    if (extent[0] === extent[1]) {\n      // Expand extent\n      extent[0] -= ONE_DAY;\n      extent[1] += ONE_DAY;\n    } // If there are no data and extent are [Infinity, -Infinity]\n\n\n    if (extent[1] === -Infinity && extent[0] === Infinity) {\n      var d = new Date();\n      extent[1] = +new Date(d.getFullYear(), d.getMonth(), d.getDate());\n      extent[0] = extent[1] - ONE_DAY;\n    }\n\n    this.niceTicks(opt.splitNumber, opt.minInterval, opt.maxInterval); // var extent = this._extent;\n\n    var interval = this._interval;\n\n    if (!opt.fixMin) {\n      extent[0] = numberUtil.round(mathFloor(extent[0] / interval) * interval);\n    }\n\n    if (!opt.fixMax) {\n      extent[1] = numberUtil.round(mathCeil(extent[1] / interval) * interval);\n    }\n  },\n\n  /**\n   * @override\n   */\n  niceTicks: function (approxTickNum, minInterval, maxInterval) {\n    approxTickNum = approxTickNum || 10;\n    var extent = this._extent;\n    var span = extent[1] - extent[0];\n    var approxInterval = span / approxTickNum;\n\n    if (minInterval != null && approxInterval < minInterval) {\n      approxInterval = minInterval;\n    }\n\n    if (maxInterval != null && approxInterval > maxInterval) {\n      approxInterval = maxInterval;\n    }\n\n    var scaleLevelsLen = scaleLevels.length;\n    var idx = bisect(scaleLevels, approxInterval, 0, scaleLevelsLen);\n    var level = scaleLevels[Math.min(idx, scaleLevelsLen - 1)];\n    var interval = level[1]; // Same with interval scale if span is much larger than 1 year\n\n    if (level[0] === 'year') {\n      var yearSpan = span / interval; // From \"Nice Numbers for Graph Labels\" of Graphic Gems\n      // var niceYearSpan = numberUtil.nice(yearSpan, false);\n\n      var yearStep = numberUtil.nice(yearSpan / approxTickNum, true);\n      interval *= yearStep;\n    }\n\n    var timezoneOffset = this.getSetting('useUTC') ? 0 : new Date(+extent[0] || +extent[1]).getTimezoneOffset() * 60 * 1000;\n    var niceExtent = [Math.round(mathCeil((extent[0] - timezoneOffset) / interval) * interval + timezoneOffset), Math.round(mathFloor((extent[1] - timezoneOffset) / interval) * interval + timezoneOffset)];\n    scaleHelper.fixExtent(niceExtent, extent);\n    this._stepLvl = level; // Interval will be used in getTicks\n\n    this._interval = interval;\n    this._niceExtent = niceExtent;\n  },\n  parse: function (val) {\n    // val might be float.\n    return +numberUtil.parseDate(val);\n  }\n});\nzrUtil.each(['contain', 'normalize'], function (methodName) {\n  TimeScale.prototype[methodName] = function (val) {\n    return intervalScaleProto[methodName].call(this, this.parse(val));\n  };\n}); // Steps from d3\n\nvar scaleLevels = [// Format              interval\n['hh:mm:ss', ONE_SECOND], // 1s\n['hh:mm:ss', ONE_SECOND * 5], // 5s\n['hh:mm:ss', ONE_SECOND * 10], // 10s\n['hh:mm:ss', ONE_SECOND * 15], // 15s\n['hh:mm:ss', ONE_SECOND * 30], // 30s\n['hh:mm\\nMM-dd', ONE_MINUTE], // 1m\n['hh:mm\\nMM-dd', ONE_MINUTE * 5], // 5m\n['hh:mm\\nMM-dd', ONE_MINUTE * 10], // 10m\n['hh:mm\\nMM-dd', ONE_MINUTE * 15], // 15m\n['hh:mm\\nMM-dd', ONE_MINUTE * 30], // 30m\n['hh:mm\\nMM-dd', ONE_HOUR], // 1h\n['hh:mm\\nMM-dd', ONE_HOUR * 2], // 2h\n['hh:mm\\nMM-dd', ONE_HOUR * 6], // 6h\n['hh:mm\\nMM-dd', ONE_HOUR * 12], // 12h\n['MM-dd\\nyyyy', ONE_DAY], // 1d\n['MM-dd\\nyyyy', ONE_DAY * 2], // 2d\n['MM-dd\\nyyyy', ONE_DAY * 3], // 3d\n['MM-dd\\nyyyy', ONE_DAY * 4], // 4d\n['MM-dd\\nyyyy', ONE_DAY * 5], // 5d\n['MM-dd\\nyyyy', ONE_DAY * 6], // 6d\n['week', ONE_DAY * 7], // 7d\n['MM-dd\\nyyyy', ONE_DAY * 10], // 10d\n['week', ONE_DAY * 14], // 2w\n['week', ONE_DAY * 21], // 3w\n['month', ONE_DAY * 31], // 1M\n['week', ONE_DAY * 42], // 6w\n['month', ONE_DAY * 62], // 2M\n['week', ONE_DAY * 42], // 10w\n['quarter', ONE_DAY * 380 / 4], // 3M\n['month', ONE_DAY * 31 * 4], // 4M\n['month', ONE_DAY * 31 * 5], // 5M\n['half-year', ONE_DAY * 380 / 2], // 6M\n['month', ONE_DAY * 31 * 8], // 8M\n['month', ONE_DAY * 31 * 10], // 10M\n['year', ONE_DAY * 380] // 1Y\n];\n/**\n * @param {module:echarts/model/Model}\n * @return {module:echarts/scale/Time}\n */\n\nTimeScale.create = function (model) {\n  return new TimeScale({\n    useUTC: model.ecModel.get('useUTC')\n  });\n};\n\nvar _default = TimeScale;\nmodule.exports = _default;","var numberUtil = require(\"../util/number\");\n\n/**\n * For testable.\n */\nvar roundNumber = numberUtil.round;\n/**\n * @param {Array.<number>} extent Both extent[0] and extent[1] should be valid number.\n *                                Should be extent[0] < extent[1].\n * @param {number} splitNumber splitNumber should be >= 1.\n * @param {number} [minInterval]\n * @param {number} [maxInterval]\n * @return {Object} {interval, intervalPrecision, niceTickExtent}\n */\n\nfunction intervalScaleNiceTicks(extent, splitNumber, minInterval, maxInterval) {\n  var result = {};\n  var span = extent[1] - extent[0];\n  var interval = result.interval = numberUtil.nice(span / splitNumber, true);\n\n  if (minInterval != null && interval < minInterval) {\n    interval = result.interval = minInterval;\n  }\n\n  if (maxInterval != null && interval > maxInterval) {\n    interval = result.interval = maxInterval;\n  } // Tow more digital for tick.\n\n\n  var precision = result.intervalPrecision = getIntervalPrecision(interval); // Niced extent inside original extent\n\n  var niceTickExtent = result.niceTickExtent = [roundNumber(Math.ceil(extent[0] / interval) * interval, precision), roundNumber(Math.floor(extent[1] / interval) * interval, precision)];\n  fixExtent(niceTickExtent, extent);\n  return result;\n}\n/**\n * @param {number} interval\n * @return {number} interval precision\n */\n\n\nfunction getIntervalPrecision(interval) {\n  // Tow more digital for tick.\n  return numberUtil.getPrecisionSafe(interval) + 2;\n}\n\nfunction clamp(niceTickExtent, idx, extent) {\n  niceTickExtent[idx] = Math.max(Math.min(niceTickExtent[idx], extent[1]), extent[0]);\n} // In some cases (e.g., splitNumber is 1), niceTickExtent may be out of extent.\n\n\nfunction fixExtent(niceTickExtent, extent) {\n  !isFinite(niceTickExtent[0]) && (niceTickExtent[0] = extent[0]);\n  !isFinite(niceTickExtent[1]) && (niceTickExtent[1] = extent[1]);\n  clamp(niceTickExtent, 0, extent);\n  clamp(niceTickExtent, 1, extent);\n\n  if (niceTickExtent[0] > niceTickExtent[1]) {\n    niceTickExtent[0] = niceTickExtent[1];\n  }\n}\n\nfunction intervalScaleGetTicks(interval, extent, niceTickExtent, intervalPrecision) {\n  var ticks = []; // If interval is 0, return [];\n\n  if (!interval) {\n    return ticks;\n  } // Consider this case: using dataZoom toolbox, zoom and zoom.\n\n\n  var safeLimit = 10000;\n\n  if (extent[0] < niceTickExtent[0]) {\n    ticks.push(extent[0]);\n  }\n\n  var tick = niceTickExtent[0];\n\n  while (tick <= niceTickExtent[1]) {\n    ticks.push(tick); // Avoid rounding error\n\n    tick = roundNumber(tick + interval, intervalPrecision);\n\n    if (tick === ticks[ticks.length - 1]) {\n      // Consider out of safe float point, e.g.,\n      // -3711126.9907707 + 2e-10 === -3711126.9907707\n      break;\n    }\n\n    if (ticks.length > safeLimit) {\n      return [];\n    }\n  } // Consider this case: the last item of ticks is smaller\n  // than niceTickExtent[1] and niceTickExtent[1] === extent[1].\n\n\n  if (extent[1] > (ticks.length ? ticks[ticks.length - 1] : niceTickExtent[1])) {\n    ticks.push(extent[1]);\n  }\n\n  return ticks;\n}\n\nexports.intervalScaleNiceTicks = intervalScaleNiceTicks;\nexports.getIntervalPrecision = getIntervalPrecision;\nexports.fixExtent = fixExtent;\nexports.intervalScaleGetTicks = intervalScaleGetTicks;","var _util = require(\"zrender/lib/core/util\");\n\nvar each = _util.each;\nvar isFunction = _util.isFunction;\nvar createHashMap = _util.createHashMap;\nvar noop = _util.noop;\n\nvar _task = require(\"./task\");\n\nvar createTask = _task.createTask;\n\nvar _component = require(\"../util/component\");\n\nvar getUID = _component.getUID;\n\nvar GlobalModel = require(\"../model/Global\");\n\nvar ExtensionAPI = require(\"../ExtensionAPI\");\n\nvar _model = require(\"../util/model\");\n\nvar normalizeToArray = _model.normalizeToArray;\n\n/**\n * @module echarts/stream/Scheduler\n */\n\n/**\n * @constructor\n */\nfunction Scheduler(ecInstance, api) {\n  // this._pipelineMap = createHashMap();\n  this.ecInstance = ecInstance;\n  this.api = api;\n  this.unfinished;\n  /**\n   * @private\n   * @type {\n   *     [handlerUID: string]: {\n   *         seriesTaskMap?: {\n   *             [seriesUID: string]: Task\n   *         },\n   *         overallTask?: Task\n   *     }\n   * }\n   */\n\n  this._stageTaskMap = createHashMap();\n}\n\nvar proto = Scheduler.prototype; // If seriesModel provided, incremental threshold is check by series data.\n\nproto.getPerformArgs = function (task, isBlock) {\n  // For overall task\n  if (!task.__pipeline) {\n    return;\n  }\n\n  var pipeline = this._pipelineMap.get(task.__pipeline.id);\n\n  var pCtx = pipeline.context;\n  var incremental = !isBlock && pipeline.progressiveEnabled && (!pCtx || pCtx.incrementalRender) && task.__idxInPipeline > pipeline.bockIndex;\n  return {\n    step: incremental ? pipeline.step : null\n  };\n};\n\nproto.getPipeline = function (pipelineId) {\n  return this._pipelineMap.get(pipelineId);\n};\n/**\n * Current, progressive rendering starts from visual and layout.\n * Always detect render mode in the same stage, avoiding that incorrect\n * detection caused by data filtering.\n * Caution:\n * `updateStreamModes` use `seriesModel.getData()`.\n */\n\n\nproto.updateStreamModes = function (seriesModel, view) {\n  var pipeline = this._pipelineMap.get(seriesModel.uid);\n\n  var data = seriesModel.getData();\n  var dataLen = data.count();\n  var incrementalRender = pipeline.progressiveEnabled && view.incrementalPrepareRender && dataLen >= pipeline.threshold;\n  var large = seriesModel.get('large') && dataLen >= seriesModel.get('largeThreshold');\n  seriesModel.pipelineContext = pipeline.context = {\n    incrementalRender: incrementalRender,\n    large: large\n  };\n};\n\nproto.restorePipelines = function (ecModel) {\n  var scheduler = this;\n  var pipelineMap = scheduler._pipelineMap = createHashMap();\n  ecModel.eachSeries(function (seriesModel) {\n    var progressive = seriesModel.getProgressive();\n    var pipelineId = seriesModel.uid;\n    pipelineMap.set(pipelineId, {\n      id: pipelineId,\n      head: null,\n      tail: null,\n      threshold: seriesModel.getProgressiveThreshold(),\n      progressiveEnabled: progressive && !(seriesModel.preventIncremental && seriesModel.preventIncremental()),\n      bockIndex: -1,\n      step: progressive || 700,\n      // ??? Temporarily number\n      count: 0\n    });\n    pipe(scheduler, seriesModel, seriesModel.dataTask);\n  });\n};\n\nproto.prepareStageTasks = function (stageHandlers, useClearVisual) {\n  var stageTaskMap = this._stageTaskMap;\n  var ecModel = this.ecInstance.getModel();\n  var api = this.api;\n  each(stageHandlers, function (handler) {\n    var record = stageTaskMap.get(handler.uid) || stageTaskMap.set(handler.uid, []);\n    handler.reset && createSeriesStageTask(this, handler, record, ecModel, api);\n    handler.overallReset && createOverallStageTask(this, handler, record, ecModel, api);\n  }, this);\n};\n\nproto.prepareView = function (view, model, ecModel, api) {\n  var renderTask = view.renderTask;\n  var context = renderTask.context;\n  context.model = model;\n  context.ecModel = ecModel;\n  context.api = api;\n  renderTask.__block = !view.incrementalPrepareRender;\n  pipe(this, model, renderTask);\n};\n\nproto.performDataProcessorTasks = function (stageHandlers, ecModel, payload) {\n  // If we do not use `block` here, it should be considered when to update modes.\n  performStageTasks(this, stageHandlers, ecModel, payload, {\n    block: true\n  });\n}; // opt\n// opt.visualType: 'visual' or 'layout'\n// opt.setDirty\n\n\nproto.performVisualTasks = function (stageHandlers, ecModel, payload, opt) {\n  performStageTasks(this, stageHandlers, ecModel, payload, opt);\n};\n\nfunction performStageTasks(scheduler, stageHandlers, ecModel, payload, opt) {\n  opt = opt || {};\n  var unfinished;\n  each(stageHandlers, function (stageHandler, idx) {\n    if (opt.visualType && opt.visualType !== stageHandler.visualType) {\n      return;\n    }\n\n    var stageHandlerRecord = scheduler._stageTaskMap.get(stageHandler.uid);\n\n    var seriesTaskMap = stageHandlerRecord.seriesTaskMap;\n    var overallTask = stageHandlerRecord.overallTask;\n\n    if (overallTask) {\n      var overallNeedDirty;\n      var agentStubMap = overallTask.agentStubMap;\n      agentStubMap.each(function (stub) {\n        if (needSetDirty(opt, stub)) {\n          stub.dirty();\n          overallNeedDirty = true;\n        }\n      });\n      overallNeedDirty && overallTask.dirty();\n      updatePayload(overallTask, payload);\n      var performArgs = scheduler.getPerformArgs(overallTask, opt.block); // Execute stubs firstly, which may set the overall task dirty,\n      // then execute the overall task. And stub will call seriesModel.setData,\n      // which ensures that in the overallTask seriesModel.getData() will not\n      // return incorrect data.\n\n      agentStubMap.each(function (stub) {\n        stub.perform(performArgs);\n      });\n      unfinished |= overallTask.perform(performArgs);\n    } else if (seriesTaskMap) {\n      seriesTaskMap.each(function (task, pipelineId) {\n        if (needSetDirty(opt, task)) {\n          task.dirty();\n        }\n\n        var performArgs = scheduler.getPerformArgs(task, opt.block);\n        performArgs.skip = !stageHandler.performRawSeries && ecModel.isSeriesFiltered(task.context.model);\n        updatePayload(task, payload);\n        unfinished |= task.perform(performArgs);\n      });\n    }\n  });\n\n  function needSetDirty(opt, task) {\n    return opt.setDirty && (!opt.dirtyMap || opt.dirtyMap.get(task.__pipeline.id));\n  }\n\n  scheduler.unfinished |= unfinished;\n}\n\nproto.performSeriesTasks = function (ecModel) {\n  var unfinished;\n  ecModel.eachSeries(function (seriesModel) {\n    // Progress to the end for dataInit and dataRestore.\n    unfinished |= seriesModel.dataTask.perform();\n  });\n  this.unfinished |= unfinished;\n};\n\nproto.plan = function () {\n  // Travel pipelines, check block.\n  this._pipelineMap.each(function (pipeline) {\n    var task = pipeline.tail;\n\n    do {\n      if (task.__block) {\n        pipeline.bockIndex = task.__idxInPipeline;\n        break;\n      }\n\n      task = task.getUpstream();\n    } while (task);\n  });\n};\n\nvar updatePayload = proto.updatePayload = function (task, payload) {\n  payload !== 'remain' && (task.context.payload = payload);\n};\n\nfunction createSeriesStageTask(scheduler, stageHandler, stageHandlerRecord, ecModel, api) {\n  var seriesTaskMap = stageHandlerRecord.seriesTaskMap || (stageHandlerRecord.seriesTaskMap = createHashMap());\n  var seriesType = stageHandler.seriesType;\n  var getTargetSeries = stageHandler.getTargetSeries; // If a stageHandler should cover all series, `createOnAllSeries` should be declared mandatorily,\n  // to avoid some typo or abuse. Otherwise if an extension do not specify a `seriesType`,\n  // it works but it may cause other irrelevant charts blocked.\n\n  if (stageHandler.createOnAllSeries) {\n    ecModel.eachRawSeries(create);\n  } else if (seriesType) {\n    ecModel.eachRawSeriesByType(seriesType, create);\n  } else if (getTargetSeries) {\n    getTargetSeries(ecModel, api).each(create);\n  }\n\n  function create(seriesModel) {\n    var pipelineId = seriesModel.uid; // Init tasks for each seriesModel only once.\n    // Reuse original task instance.\n\n    var task = seriesTaskMap.get(pipelineId) || seriesTaskMap.set(pipelineId, createTask({\n      plan: seriesTaskPlan,\n      reset: seriesTaskReset,\n      count: seriesTaskCount\n    }));\n    task.context = {\n      model: seriesModel,\n      ecModel: ecModel,\n      api: api,\n      useClearVisual: stageHandler.isVisual && !stageHandler.isLayout,\n      plan: stageHandler.plan,\n      reset: stageHandler.reset,\n      scheduler: scheduler\n    };\n    pipe(scheduler, seriesModel, task);\n  } // Clear unused series tasks.\n\n\n  var pipelineMap = scheduler._pipelineMap;\n  seriesTaskMap.each(function (task, pipelineId) {\n    if (!pipelineMap.get(pipelineId)) {\n      task.dispose();\n      seriesTaskMap.removeKey(pipelineId);\n    }\n  });\n}\n\nfunction createOverallStageTask(scheduler, stageHandler, stageHandlerRecord, ecModel, api) {\n  var overallTask = stageHandlerRecord.overallTask = stageHandlerRecord.overallTask // For overall task, the function only be called on reset stage.\n  || createTask({\n    reset: overallTaskReset\n  });\n  overallTask.context = {\n    ecModel: ecModel,\n    api: api,\n    overallReset: stageHandler.overallReset,\n    scheduler: scheduler\n  }; // Reuse orignal stubs.\n\n  var agentStubMap = overallTask.agentStubMap = overallTask.agentStubMap || createHashMap();\n  var seriesType = stageHandler.seriesType;\n  var getTargetSeries = stageHandler.getTargetSeries;\n  var overallProgress = true;\n  var isOverallFilter = stageHandler.isOverallFilter; // An overall task with seriesType detected or has `getTargetSeries`, we add\n  // stub in each pipelines, it will set the overall task dirty when the pipeline\n  // progress. Moreover, to avoid call the overall task each frame (too frequent),\n  // we set the pipeline block.\n\n  if (seriesType) {\n    ecModel.eachRawSeriesByType(seriesType, createStub);\n  } else if (getTargetSeries) {\n    getTargetSeries(ecModel, api).each(createStub);\n  } // Otherwise, (usually it is legancy case), the overall task will only be\n  // executed when upstream dirty. Otherwise the progressive rendering of all\n  // pipelines will be disabled unexpectedly. But it still needs stubs to receive\n  // dirty info from upsteam.\n  else {\n      overallProgress = false;\n      each(ecModel.getSeries(), createStub);\n    }\n\n  function createStub(seriesModel) {\n    var pipelineId = seriesModel.uid;\n    var stub = agentStubMap.get(pipelineId) || agentStubMap.set(pipelineId, createTask({\n      reset: stubReset,\n      onDirty: stubOnDirty\n    }));\n    stub.context = {\n      model: seriesModel,\n      overallProgress: overallProgress,\n      isOverallFilter: isOverallFilter\n    };\n    stub.agent = overallTask;\n    stub.__block = overallProgress;\n    pipe(scheduler, seriesModel, stub);\n  } // Clear unused stubs.\n\n\n  var pipelineMap = scheduler._pipelineMap;\n  agentStubMap.each(function (stub, pipelineId) {\n    if (!pipelineMap.get(pipelineId)) {\n      stub.dispose();\n      agentStubMap.removeKey(pipelineId);\n    }\n  });\n}\n\nfunction overallTaskReset(context) {\n  context.overallReset(context.ecModel, context.api, context.payload);\n}\n\nfunction stubReset(context, upstreamContext) {\n  return context.overallProgress && stubProgress;\n}\n\nfunction stubProgress() {\n  this.agent.dirty();\n  this.getDownstream().dirty();\n}\n\nfunction stubOnDirty() {\n  this.agent && this.agent.dirty();\n}\n\nfunction seriesTaskPlan(context) {\n  return context.plan && context.plan(context.model, context.ecModel, context.api, context.payload);\n}\n\nfunction seriesTaskReset(context) {\n  if (context.useClearVisual) {\n    context.data.clearAllVisual();\n  }\n\n  var resetDefines = context.resetDefines = normalizeToArray(context.reset(context.model, context.ecModel, context.api, context.payload));\n\n  if (resetDefines.length) {\n    return seriesTaskProgress;\n  }\n}\n\nfunction seriesTaskProgress(params, context) {\n  var data = context.data;\n  var resetDefines = context.resetDefines;\n\n  for (var k = 0; k < resetDefines.length; k++) {\n    var resetDefine = resetDefines[k];\n\n    if (resetDefine && resetDefine.dataEach) {\n      for (var i = params.start; i < params.end; i++) {\n        resetDefine.dataEach(data, i);\n      }\n    } else if (resetDefine && resetDefine.progress) {\n      resetDefine.progress(params, data);\n    }\n  }\n}\n\nfunction seriesTaskCount(context) {\n  return context.data.count();\n}\n\nfunction pipe(scheduler, seriesModel, task) {\n  var pipelineId = seriesModel.uid;\n\n  var pipeline = scheduler._pipelineMap.get(pipelineId);\n\n  !pipeline.head && (pipeline.head = task);\n  pipeline.tail && pipeline.tail.pipe(task);\n  pipeline.tail = task;\n  task.__idxInPipeline = pipeline.count++;\n  task.__pipeline = pipeline;\n}\n\nScheduler.wrapStageHandler = function (stageHandler, visualType) {\n  if (isFunction(stageHandler)) {\n    stageHandler = {\n      overallReset: stageHandler,\n      seriesType: detectSeriseType(stageHandler)\n    };\n  }\n\n  stageHandler.uid = getUID('stageHandler');\n  visualType && (stageHandler.visualType = visualType);\n  return stageHandler;\n};\n/**\n * Only some legacy stage handlers (usually in echarts extensions) are pure function.\n * To ensure that they can work normally, they should work in block mode, that is,\n * they should not be started util the previous tasks finished. So they cause the\n * progressive rendering disabled. We try to detect the series type, to narrow down\n * the block range to only the series type they concern, but not all series.\n */\n\n\nfunction detectSeriseType(legacyFunc) {\n  seriesType = null;\n\n  try {\n    // Assume there is no async when calling `eachSeriesByType`.\n    legacyFunc(ecModelMock, apiMock);\n  } catch (e) {}\n\n  return seriesType;\n}\n\nvar ecModelMock = {};\nvar apiMock = {};\nvar seriesType;\nmockMethods(ecModelMock, GlobalModel);\nmockMethods(apiMock, ExtensionAPI);\n\necModelMock.eachSeriesByType = ecModelMock.eachRawSeriesByType = function (type) {\n  seriesType = type;\n};\n\necModelMock.eachComponent = function (cond) {\n  if (cond.mainType === 'series' && cond.subType) {\n    seriesType = cond.subType;\n  }\n};\n\nfunction mockMethods(target, Clz) {\n  for (var name in Clz.prototype) {\n    // Do not use hasOwnProperty\n    target[name] = noop;\n  }\n}\n\nvar _default = Scheduler;\nmodule.exports = _default;","var _util = require(\"zrender/lib/core/util\");\n\nvar assert = _util.assert;\n\nvar _config = require(\"../config\");\n\nvar __DEV__ = _config.__DEV__;\n\n/**\n * @param {Object} define\n * @return See the return of `createTask`.\n */\nfunction createTask(define) {\n  return new Task(define);\n}\n/**\n * @constructor\n * @param {Object} define\n * @param {Function} define.reset Custom reset\n * @param {Function} [define.plan] Returns 'reset' indicate reset immediately.\n * @param {Function} [define.count] count is used to determin data task.\n * @param {Function} [define.onDirty] count is used to determin data task.\n */\n\n\nfunction Task(define) {\n  define = define || {};\n  this._reset = define.reset;\n  this._plan = define.plan;\n  this._count = define.count;\n  this._onDirty = define.onDirty;\n  this._dirty = true; // Context must be specified implicitly, to\n  // avoid miss update context when model changed.\n\n  this.context;\n}\n\nvar taskProto = Task.prototype;\n/**\n * @param {Object} performArgs\n * @param {number} [performArgs.step] Specified step.\n * @param {number} [performArgs.skip] Skip customer perform call.\n */\n\ntaskProto.perform = function (performArgs) {\n  var upTask = this._upstream;\n  var skip = performArgs && performArgs.skip; // TODO some refactor.\n  // Pull data. Must pull data each time, because context.data\n  // may be updated by Series.setData.\n\n  if (this._dirty && upTask) {\n    var context = this.context;\n    context.data = context.outputData = upTask.context.outputData;\n  }\n\n  if (this.__pipeline) {\n    this.__pipeline.currentTask = this;\n  }\n\n  var planResult;\n\n  if (this._plan && !skip) {\n    planResult = this._plan(this.context);\n  }\n\n  if (this._dirty || planResult === 'reset') {\n    this._dirty = false;\n    reset(this, skip);\n  }\n\n  var step = performArgs && performArgs.step;\n\n  if (upTask) {\n    // ??? FIXME move to schedueler?\n    // this._dueEnd = Math.max(upTask._outputDueEnd, this._dueEnd);\n    this._dueEnd = upTask._outputDueEnd;\n  } // DataTask or overallTask\n  else {\n      this._dueEnd = this._count ? this._count(this.context) : Infinity;\n    } // Note: Stubs, that its host overall task let it has progress, has progress.\n  // If no progress, pass index from upstream to downstream each time plan called.\n\n\n  if (this._progress) {\n    var start = this._dueIndex;\n    var end = Math.min(step != null ? this._dueIndex + step : Infinity, this._dueEnd);\n    !skip && start < end && this._progress({\n      start: start,\n      end: end\n    }, this.context);\n    this._dueIndex = end; // If no `outputDueEnd`, assume that output data and\n    // input data is the same, so use `dueIndex` as `outputDueEnd`.\n\n    var outputDueEnd = this._settedOutputEnd != null ? this._settedOutputEnd : end;\n    this._outputDueEnd = outputDueEnd;\n  } else {\n    // (1) Some overall task has no progress.\n    // (2) Stubs, that its host overall task do not let it has progress, has no progress.\n    // This should always be performed so it can be passed to downstream.\n    this._dueIndex = this._outputDueEnd = this._settedOutputEnd != null ? this._settedOutputEnd : this._dueEnd;\n  }\n\n  return this.unfinished();\n};\n\ntaskProto.dirty = function () {\n  this._dirty = true;\n  this._onDirty && this._onDirty(this.context);\n};\n/**\n * @param {Object} [params]\n */\n\n\nfunction reset(taskIns, skip) {\n  taskIns._dueIndex = taskIns._outputDueEnd = taskIns._dueEnd = 0;\n  taskIns._settedOutputEnd = null;\n  taskIns._progress = !skip && taskIns._reset && taskIns._reset(taskIns.context);\n  var downstream = taskIns._downstream;\n  downstream && downstream.dirty();\n}\n/**\n * @return {boolean}\n */\n\n\ntaskProto.unfinished = function () {\n  return this._progress && this._dueIndex < this._dueEnd;\n};\n/**\n * @param {Object} downTask The downstream task.\n * @return {Object} The downstream task.\n */\n\n\ntaskProto.pipe = function (downTask) {\n  // If already downstream, do not dirty downTask.\n  if (this._downstream !== downTask || this._dirty) {\n    this._downstream = downTask;\n    downTask._upstream = this;\n    downTask.dirty();\n  }\n};\n\ntaskProto.dispose = function () {\n  if (this._disposed) {\n    return;\n  }\n\n  this._upstream && (this._upstream._downstream = null);\n  this._downstream && (this._downstream._upstream = null);\n  this._dirty = false;\n  this._disposed = true;\n};\n\ntaskProto.getUpstream = function () {\n  return this._upstream;\n};\n\ntaskProto.getDownstream = function () {\n  return this._downstream;\n};\n\ntaskProto.setOutputEnd = function (end) {\n  // ??? FIXME: check\n  // This only happend in dataTask, dataZoom, map, currently.\n  // where dataZoom do not set end each time, but only set\n  // when reset. So we should record the setted end, in case\n  // that the stub of dataZoom perform again and earse the\n  // setted end by upstream.\n  this._outputDueEnd = this._settedOutputEnd = end; // this._outputDueEnd = end;\n};\n\nexports.createTask = createTask;","var contrastColor = '#eee';\n\nvar axisCommon = function () {\n  return {\n    axisLine: {\n      lineStyle: {\n        color: contrastColor\n      }\n    },\n    axisTick: {\n      lineStyle: {\n        color: contrastColor\n      }\n    },\n    axisLabel: {\n      textStyle: {\n        color: contrastColor\n      }\n    },\n    splitLine: {\n      lineStyle: {\n        type: 'dashed',\n        color: '#aaa'\n      }\n    },\n    splitArea: {\n      areaStyle: {\n        color: contrastColor\n      }\n    }\n  };\n};\n\nvar colorPalette = ['#dd6b66', '#759aa0', '#e69d87', '#8dc1a9', '#ea7e53', '#eedd78', '#73a373', '#73b9bc', '#7289ab', '#91ca8c', '#f49f42'];\nvar theme = {\n  color: colorPalette,\n  backgroundColor: '#333',\n  tooltip: {\n    axisPointer: {\n      lineStyle: {\n        color: contrastColor\n      },\n      crossStyle: {\n        color: contrastColor\n      }\n    }\n  },\n  legend: {\n    textStyle: {\n      color: contrastColor\n    }\n  },\n  textStyle: {\n    color: contrastColor\n  },\n  title: {\n    textStyle: {\n      color: contrastColor\n    }\n  },\n  toolbox: {\n    iconStyle: {\n      normal: {\n        borderColor: contrastColor\n      }\n    }\n  },\n  dataZoom: {\n    textStyle: {\n      color: contrastColor\n    }\n  },\n  visualMap: {\n    textStyle: {\n      color: contrastColor\n    }\n  },\n  timeline: {\n    lineStyle: {\n      color: contrastColor\n    },\n    itemStyle: {\n      normal: {\n        color: colorPalette[1]\n      }\n    },\n    label: {\n      normal: {\n        textStyle: {\n          color: contrastColor\n        }\n      }\n    },\n    controlStyle: {\n      normal: {\n        color: contrastColor,\n        borderColor: contrastColor\n      }\n    }\n  },\n  timeAxis: axisCommon(),\n  logAxis: axisCommon(),\n  valueAxis: axisCommon(),\n  categoryAxis: axisCommon(),\n  line: {\n    symbol: 'circle'\n  },\n  graph: {\n    color: colorPalette\n  },\n  gauge: {\n    title: {\n      textStyle: {\n        color: contrastColor\n      }\n    }\n  },\n  candlestick: {\n    itemStyle: {\n      normal: {\n        color: '#FD1050',\n        color0: '#0CF49B',\n        borderColor: '#FD1050',\n        borderColor0: '#0CF49B'\n      }\n    }\n  }\n};\ntheme.categoryAxis.splitLine.show = false;\nvar _default = theme;\nmodule.exports = _default;","var colorAll = ['#37A2DA', '#32C5E9', '#67E0E3', '#9FE6B8', '#FFDB5C', '#ff9f7f', '#fb7293', '#E062AE', '#E690D1', '#e7bcf3', '#9d96f5', '#8378EA', '#96BFFF'];\nvar _default = {\n  color: colorAll,\n  colorLayer: [['#37A2DA', '#ffd85c', '#fd7b5f'], ['#37A2DA', '#67E0E3', '#FFDB5C', '#ff9f7f', '#E062AE', '#9d96f5'], ['#37A2DA', '#32C5E9', '#9FE6B8', '#FFDB5C', '#ff9f7f', '#fb7293', '#e7bcf3', '#8378EA', '#96BFFF'], colorAll]\n};\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\n/**\n * @param {number} [time=500] Time in ms\n * @param {string} [easing='linear']\n * @param {number} [delay=0]\n * @param {Function} [callback]\n *\n * @example\n *  // Animate position\n *  animation\n *      .createWrap()\n *      .add(el1, {position: [10, 10]})\n *      .add(el2, {shape: {width: 500}, style: {fill: 'red'}}, 400)\n *      .done(function () { // done })\n *      .start('cubicOut');\n */\nfunction createWrap() {\n  var storage = [];\n  var elExistsMap = {};\n  var doneCallback;\n  return {\n    /**\n     * Caution: a el can only be added once, otherwise 'done'\n     * might not be called. This method checks this (by el.id),\n     * suppresses adding and returns false when existing el found.\n     *\n     * @param {modele:zrender/Element} el\n     * @param {Object} target\n     * @param {number} [time=500]\n     * @param {number} [delay=0]\n     * @param {string} [easing='linear']\n     * @return {boolean} Whether adding succeeded.\n     *\n     * @example\n     *     add(el, target, time, delay, easing);\n     *     add(el, target, time, easing);\n     *     add(el, target, time);\n     *     add(el, target);\n     */\n    add: function (el, target, time, delay, easing) {\n      if (zrUtil.isString(delay)) {\n        easing = delay;\n        delay = 0;\n      }\n\n      if (elExistsMap[el.id]) {\n        return false;\n      }\n\n      elExistsMap[el.id] = 1;\n      storage.push({\n        el: el,\n        target: target,\n        time: time,\n        delay: delay,\n        easing: easing\n      });\n      return true;\n    },\n\n    /**\n     * Only execute when animation finished. Will not execute when any\n     * of 'stop' or 'stopAnimation' called.\n     *\n     * @param {Function} callback\n     */\n    done: function (callback) {\n      doneCallback = callback;\n      return this;\n    },\n\n    /**\n     * Will stop exist animation firstly.\n     */\n    start: function () {\n      var count = storage.length;\n\n      for (var i = 0, len = storage.length; i < len; i++) {\n        var item = storage[i];\n        item.el.animateTo(item.target, item.time, item.delay, item.easing, done);\n      }\n\n      return this;\n\n      function done() {\n        count--;\n\n        if (!count) {\n          storage.length = 0;\n          elExistsMap = {};\n          doneCallback && doneCallback();\n        }\n      }\n    }\n  };\n}\n\nexports.createWrap = createWrap;","var zrUtil = require(\"zrender/lib/core/util\");\n\n/**\n * nest helper used to group by the array.\n * can specified the keys and sort the keys.\n */\nfunction nest() {\n  var keysFunction = [];\n  var sortKeysFunction = [];\n  /**\n   * map an Array into the mapObject.\n   * @param {Array} array\n   * @param {number} depth\n   */\n\n  function map(array, depth) {\n    if (depth >= keysFunction.length) {\n      return array;\n    }\n\n    var i = -1;\n    var n = array.length;\n    var keyFunction = keysFunction[depth++];\n    var mapObject = {};\n    var valuesByKey = {};\n\n    while (++i < n) {\n      var keyValue = keyFunction(array[i]);\n      var values = valuesByKey[keyValue];\n\n      if (values) {\n        values.push(array[i]);\n      } else {\n        valuesByKey[keyValue] = [array[i]];\n      }\n    }\n\n    zrUtil.each(valuesByKey, function (value, key) {\n      mapObject[key] = map(value, depth);\n    });\n    return mapObject;\n  }\n  /**\n   * transform the Map Object to multidimensional Array\n   * @param {Object} map\n   * @param {number} depth\n   */\n\n\n  function entriesMap(mapObject, depth) {\n    if (depth >= keysFunction.length) {\n      return mapObject;\n    }\n\n    var array = [];\n    var sortKeyFunction = sortKeysFunction[depth++];\n    zrUtil.each(mapObject, function (value, key) {\n      array.push({\n        key: key,\n        values: entriesMap(value, depth)\n      });\n    });\n\n    if (sortKeyFunction) {\n      return array.sort(function (a, b) {\n        return sortKeyFunction(a.key, b.key);\n      });\n    } else {\n      return array;\n    }\n  }\n\n  return {\n    /**\n     * specified the key to groupby the arrays.\n     * users can specified one more keys.\n     * @param {Function} d\n     */\n    key: function (d) {\n      keysFunction.push(d);\n      return this;\n    },\n\n    /**\n     * specified the comparator to sort the keys\n     * @param {Function} order\n     */\n    sortKeys: function (order) {\n      sortKeysFunction[keysFunction.length - 1] = order;\n      return this;\n    },\n\n    /**\n     * the array to be grouped by.\n     * @param {Array} array\n     */\n    entries: function (array) {\n      return entriesMap(map(array, 0), 0);\n    }\n  };\n}\n\nmodule.exports = nest;","var _config = require(\"../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar TYPE_DELIMITER = '.';\nvar IS_CONTAINER = '___EC__COMPONENT__CONTAINER___';\n/**\n * Notice, parseClassType('') should returns {main: '', sub: ''}\n * @public\n */\n\nfunction parseClassType(componentType) {\n  var ret = {\n    main: '',\n    sub: ''\n  };\n\n  if (componentType) {\n    componentType = componentType.split(TYPE_DELIMITER);\n    ret.main = componentType[0] || '';\n    ret.sub = componentType[1] || '';\n  }\n\n  return ret;\n}\n/**\n * @public\n */\n\n\nfunction checkClassType(componentType) {\n  zrUtil.assert(/^[a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)?$/.test(componentType), 'componentType \"' + componentType + '\" illegal');\n}\n/**\n * @public\n */\n\n\nfunction enableClassExtend(RootClass, mandatoryMethods) {\n  RootClass.$constructor = RootClass;\n\n  RootClass.extend = function (proto) {\n    var superClass = this;\n\n    var ExtendedClass = function () {\n      if (!proto.$constructor) {\n        superClass.apply(this, arguments);\n      } else {\n        proto.$constructor.apply(this, arguments);\n      }\n    };\n\n    zrUtil.extend(ExtendedClass.prototype, proto);\n    ExtendedClass.extend = this.extend;\n    ExtendedClass.superCall = superCall;\n    ExtendedClass.superApply = superApply;\n    zrUtil.inherits(ExtendedClass, this);\n    ExtendedClass.superClass = superClass;\n    return ExtendedClass;\n  };\n}\n\nvar classBase = 0;\n/**\n * Can not use instanceof, consider different scope by\n * cross domain or es module import in ec extensions.\n * Mount a method \"isInstance()\" to Clz.\n */\n\nfunction enableClassCheck(Clz) {\n  var classAttr = ['__\\0is_clz', classBase++, Math.random().toFixed(3)].join('_');\n  Clz.prototype[classAttr] = true;\n\n  Clz.isInstance = function (obj) {\n    return !!(obj && obj[classAttr]);\n  };\n} // superCall should have class info, which can not be fetch from 'this'.\n// Consider this case:\n// class A has method f,\n// class B inherits class A, overrides method f, f call superApply('f'),\n// class C inherits class B, do not overrides method f,\n// then when method of class C is called, dead loop occured.\n\n\nfunction superCall(context, methodName) {\n  var args = zrUtil.slice(arguments, 2);\n  return this.superClass.prototype[methodName].apply(context, args);\n}\n\nfunction superApply(context, methodName, args) {\n  return this.superClass.prototype[methodName].apply(context, args);\n}\n/**\n * @param {Object} entity\n * @param {Object} options\n * @param {boolean} [options.registerWhenExtend]\n * @public\n */\n\n\nfunction enableClassManagement(entity, options) {\n  options = options || {};\n  /**\n   * Component model classes\n   * key: componentType,\n   * value:\n   *     componentClass, when componentType is 'xxx'\n   *     or Object.<subKey, componentClass>, when componentType is 'xxx.yy'\n   * @type {Object}\n   */\n\n  var storage = {};\n\n  entity.registerClass = function (Clazz, componentType) {\n    if (componentType) {\n      checkClassType(componentType);\n      componentType = parseClassType(componentType);\n\n      if (!componentType.sub) {\n        storage[componentType.main] = Clazz;\n      } else if (componentType.sub !== IS_CONTAINER) {\n        var container = makeContainer(componentType);\n        container[componentType.sub] = Clazz;\n      }\n    }\n\n    return Clazz;\n  };\n\n  entity.getClass = function (componentMainType, subType, throwWhenNotFound) {\n    var Clazz = storage[componentMainType];\n\n    if (Clazz && Clazz[IS_CONTAINER]) {\n      Clazz = subType ? Clazz[subType] : null;\n    }\n\n    if (throwWhenNotFound && !Clazz) {\n      throw new Error(!subType ? componentMainType + '.' + 'type should be specified.' : 'Component ' + componentMainType + '.' + (subType || '') + ' not exists. Load it first.');\n    }\n\n    return Clazz;\n  };\n\n  entity.getClassesByMainType = function (componentType) {\n    componentType = parseClassType(componentType);\n    var result = [];\n    var obj = storage[componentType.main];\n\n    if (obj && obj[IS_CONTAINER]) {\n      zrUtil.each(obj, function (o, type) {\n        type !== IS_CONTAINER && result.push(o);\n      });\n    } else {\n      result.push(obj);\n    }\n\n    return result;\n  };\n\n  entity.hasClass = function (componentType) {\n    // Just consider componentType.main.\n    componentType = parseClassType(componentType);\n    return !!storage[componentType.main];\n  };\n  /**\n   * @return {Array.<string>} Like ['aa', 'bb'], but can not be ['aa.xx']\n   */\n\n\n  entity.getAllClassMainTypes = function () {\n    var types = [];\n    zrUtil.each(storage, function (obj, type) {\n      types.push(type);\n    });\n    return types;\n  };\n  /**\n   * If a main type is container and has sub types\n   * @param  {string}  mainType\n   * @return {boolean}\n   */\n\n\n  entity.hasSubTypes = function (componentType) {\n    componentType = parseClassType(componentType);\n    var obj = storage[componentType.main];\n    return obj && obj[IS_CONTAINER];\n  };\n\n  entity.parseClassType = parseClassType;\n\n  function makeContainer(componentType) {\n    var container = storage[componentType.main];\n\n    if (!container || !container[IS_CONTAINER]) {\n      container = storage[componentType.main] = {};\n      container[IS_CONTAINER] = true;\n    }\n\n    return container;\n  }\n\n  if (options.registerWhenExtend) {\n    var originalExtend = entity.extend;\n\n    if (originalExtend) {\n      entity.extend = function (proto) {\n        var ExtendedClass = originalExtend.call(this, proto);\n        return entity.registerClass(ExtendedClass, proto.type);\n      };\n    }\n  }\n\n  return entity;\n}\n/**\n * @param {string|Array.<string>} properties\n */\n\n\nfunction setReadOnly(obj, properties) {// FIXME It seems broken in IE8 simulation of IE11\n  // if (!zrUtil.isArray(properties)) {\n  //     properties = properties != null ? [properties] : [];\n  // }\n  // zrUtil.each(properties, function (prop) {\n  //     var value = obj[prop];\n  //     Object.defineProperty\n  //         && Object.defineProperty(obj, prop, {\n  //             value: value, writable: false\n  //         });\n  //     zrUtil.isArray(obj[prop])\n  //         && Object.freeze\n  //         && Object.freeze(obj[prop]);\n  // });\n}\n\nexports.parseClassType = parseClassType;\nexports.enableClassExtend = enableClassExtend;\nexports.enableClassCheck = enableClassCheck;\nexports.enableClassManagement = enableClassManagement;\nexports.setReadOnly = setReadOnly;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar _clazz = require(\"./clazz\");\n\nvar parseClassType = _clazz.parseClassType;\nvar base = 0;\n/**\n * @public\n * @param {string} type\n * @return {string}\n */\n\nfunction getUID(type) {\n  // Considering the case of crossing js context,\n  // use Math.random to make id as unique as possible.\n  return [type || '', base++, Math.random().toFixed(5)].join('_');\n}\n/**\n * @inner\n */\n\n\nfunction enableSubTypeDefaulter(entity) {\n  var subTypeDefaulters = {};\n\n  entity.registerSubTypeDefaulter = function (componentType, defaulter) {\n    componentType = parseClassType(componentType);\n    subTypeDefaulters[componentType.main] = defaulter;\n  };\n\n  entity.determineSubType = function (componentType, option) {\n    var type = option.type;\n\n    if (!type) {\n      var componentTypeMain = parseClassType(componentType).main;\n\n      if (entity.hasSubTypes(componentType) && subTypeDefaulters[componentTypeMain]) {\n        type = subTypeDefaulters[componentTypeMain](option);\n      }\n    }\n\n    return type;\n  };\n\n  return entity;\n}\n/**\n * Topological travel on Activity Network (Activity On Vertices).\n * Dependencies is defined in Model.prototype.dependencies, like ['xAxis', 'yAxis'].\n *\n * If 'xAxis' or 'yAxis' is absent in componentTypeList, just ignore it in topology.\n *\n * If there is circle dependencey, Error will be thrown.\n *\n */\n\n\nfunction enableTopologicalTravel(entity, dependencyGetter) {\n  /**\n   * @public\n   * @param {Array.<string>} targetNameList Target Component type list.\n   *                                           Can be ['aa', 'bb', 'aa.xx']\n   * @param {Array.<string>} fullNameList By which we can build dependency graph.\n   * @param {Function} callback Params: componentType, dependencies.\n   * @param {Object} context Scope of callback.\n   */\n  entity.topologicalTravel = function (targetNameList, fullNameList, callback, context) {\n    if (!targetNameList.length) {\n      return;\n    }\n\n    var result = makeDepndencyGraph(fullNameList);\n    var graph = result.graph;\n    var stack = result.noEntryList;\n    var targetNameSet = {};\n    zrUtil.each(targetNameList, function (name) {\n      targetNameSet[name] = true;\n    });\n\n    while (stack.length) {\n      var currComponentType = stack.pop();\n      var currVertex = graph[currComponentType];\n      var isInTargetNameSet = !!targetNameSet[currComponentType];\n\n      if (isInTargetNameSet) {\n        callback.call(context, currComponentType, currVertex.originalDeps.slice());\n        delete targetNameSet[currComponentType];\n      }\n\n      zrUtil.each(currVertex.successor, isInTargetNameSet ? removeEdgeAndAdd : removeEdge);\n    }\n\n    zrUtil.each(targetNameSet, function () {\n      throw new Error('Circle dependency may exists');\n    });\n\n    function removeEdge(succComponentType) {\n      graph[succComponentType].entryCount--;\n\n      if (graph[succComponentType].entryCount === 0) {\n        stack.push(succComponentType);\n      }\n    } // Consider this case: legend depends on series, and we call\n    // chart.setOption({series: [...]}), where only series is in option.\n    // If we do not have 'removeEdgeAndAdd', legendModel.mergeOption will\n    // not be called, but only sereis.mergeOption is called. Thus legend\n    // have no chance to update its local record about series (like which\n    // name of series is available in legend).\n\n\n    function removeEdgeAndAdd(succComponentType) {\n      targetNameSet[succComponentType] = true;\n      removeEdge(succComponentType);\n    }\n  };\n  /**\n   * DepndencyGraph: {Object}\n   * key: conponentType,\n   * value: {\n   *     successor: [conponentTypes...],\n   *     originalDeps: [conponentTypes...],\n   *     entryCount: {number}\n   * }\n   */\n\n\n  function makeDepndencyGraph(fullNameList) {\n    var graph = {};\n    var noEntryList = [];\n    zrUtil.each(fullNameList, function (name) {\n      var thisItem = createDependencyGraphItem(graph, name);\n      var originalDeps = thisItem.originalDeps = dependencyGetter(name);\n      var availableDeps = getAvailableDependencies(originalDeps, fullNameList);\n      thisItem.entryCount = availableDeps.length;\n\n      if (thisItem.entryCount === 0) {\n        noEntryList.push(name);\n      }\n\n      zrUtil.each(availableDeps, function (dependentName) {\n        if (zrUtil.indexOf(thisItem.predecessor, dependentName) < 0) {\n          thisItem.predecessor.push(dependentName);\n        }\n\n        var thatItem = createDependencyGraphItem(graph, dependentName);\n\n        if (zrUtil.indexOf(thatItem.successor, dependentName) < 0) {\n          thatItem.successor.push(name);\n        }\n      });\n    });\n    return {\n      graph: graph,\n      noEntryList: noEntryList\n    };\n  }\n\n  function createDependencyGraphItem(graph, name) {\n    if (!graph[name]) {\n      graph[name] = {\n        predecessor: [],\n        successor: []\n      };\n    }\n\n    return graph[name];\n  }\n\n  function getAvailableDependencies(originalDeps, fullNameList) {\n    var availableDeps = [];\n    zrUtil.each(originalDeps, function (dep) {\n      zrUtil.indexOf(fullNameList, dep) >= 0 && availableDeps.push(dep);\n    });\n    return availableDeps;\n  }\n}\n\nexports.getUID = getUID;\nexports.enableSubTypeDefaulter = enableSubTypeDefaulter;\nexports.enableTopologicalTravel = enableTopologicalTravel;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar textContain = require(\"zrender/lib/contain/text\");\n\nvar numberUtil = require(\"./number\");\n\n/**\n * 每三位默认加,格式化\n * @param {string|number} x\n * @return {string}\n */\nfunction addCommas(x) {\n  if (isNaN(x)) {\n    return '-';\n  }\n\n  x = (x + '').split('.');\n  return x[0].replace(/(\\d{1,3})(?=(?:\\d{3})+(?!\\d))/g, '$1,') + (x.length > 1 ? '.' + x[1] : '');\n}\n/**\n * @param {string} str\n * @param {boolean} [upperCaseFirst=false]\n * @return {string} str\n */\n\n\nfunction toCamelCase(str, upperCaseFirst) {\n  str = (str || '').toLowerCase().replace(/-(.)/g, function (match, group1) {\n    return group1.toUpperCase();\n  });\n\n  if (upperCaseFirst && str) {\n    str = str.charAt(0).toUpperCase() + str.slice(1);\n  }\n\n  return str;\n}\n\nvar normalizeCssArray = zrUtil.normalizeCssArray;\n\nfunction encodeHTML(source) {\n  return String(source).replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/\"/g, '&quot;').replace(/'/g, '&#39;');\n}\n\nvar TPL_VAR_ALIAS = ['a', 'b', 'c', 'd', 'e', 'f', 'g'];\n\nvar wrapVar = function (varName, seriesIdx) {\n  return '{' + varName + (seriesIdx == null ? '' : seriesIdx) + '}';\n};\n/**\n * Template formatter\n * @param {string} tpl\n * @param {Array.<Object>|Object} paramsList\n * @param {boolean} [encode=false]\n * @return {string}\n */\n\n\nfunction formatTpl(tpl, paramsList, encode) {\n  if (!zrUtil.isArray(paramsList)) {\n    paramsList = [paramsList];\n  }\n\n  var seriesLen = paramsList.length;\n\n  if (!seriesLen) {\n    return '';\n  }\n\n  var $vars = paramsList[0].$vars || [];\n\n  for (var i = 0; i < $vars.length; i++) {\n    var alias = TPL_VAR_ALIAS[i];\n    tpl = tpl.replace(wrapVar(alias), wrapVar(alias, 0));\n  }\n\n  for (var seriesIdx = 0; seriesIdx < seriesLen; seriesIdx++) {\n    for (var k = 0; k < $vars.length; k++) {\n      var val = paramsList[seriesIdx][$vars[k]];\n      tpl = tpl.replace(wrapVar(TPL_VAR_ALIAS[k], seriesIdx), encode ? encodeHTML(val) : val);\n    }\n  }\n\n  return tpl;\n}\n/**\n * simple Template formatter\n *\n * @param {string} tpl\n * @param {Object} param\n * @param {boolean} [encode=false]\n * @return {string}\n */\n\n\nfunction formatTplSimple(tpl, param, encode) {\n  zrUtil.each(param, function (value, key) {\n    tpl = tpl.replace('{' + key + '}', encode ? encodeHTML(value) : value);\n  });\n  return tpl;\n}\n/**\n * @param {Object|string} [opt] If string, means color.\n * @param {string} [opt.color]\n * @param {string} [opt.extraCssText]\n * @param {string} [opt.type='item'] 'item' or 'subItem'\n * @return {string}\n */\n\n\nfunction getTooltipMarker(opt, extraCssText) {\n  opt = zrUtil.isString(opt) ? {\n    color: opt,\n    extraCssText: extraCssText\n  } : opt || {};\n  var color = opt.color;\n  var type = opt.type;\n  var extraCssText = opt.extraCssText;\n\n  if (!color) {\n    return '';\n  }\n\n  return type === 'subItem' ? '<span style=\"display:inline-block;vertical-align:middle;margin-right:8px;margin-left:3px;' + 'border-radius:4px;width:4px;height:4px;background-color:' + encodeHTML(color) + ';' + (extraCssText || '') + '\"></span>' : '<span style=\"display:inline-block;margin-right:5px;' + 'border-radius:10px;width:10px;height:10px;background-color:' + encodeHTML(color) + ';' + (extraCssText || '') + '\"></span>';\n}\n/**\n * @param {string} str\n * @return {string}\n * @inner\n */\n\n\nvar s2d = function (str) {\n  return str < 10 ? '0' + str : str;\n};\n/**\n * ISO Date format\n * @param {string} tpl\n * @param {number} value\n * @param {boolean} [isUTC=false] Default in local time.\n *           see `module:echarts/scale/Time`\n *           and `module:echarts/util/number#parseDate`.\n * @inner\n */\n\n\nfunction formatTime(tpl, value, isUTC) {\n  if (tpl === 'week' || tpl === 'month' || tpl === 'quarter' || tpl === 'half-year' || tpl === 'year') {\n    tpl = 'MM-dd\\nyyyy';\n  }\n\n  var date = numberUtil.parseDate(value);\n  var utc = isUTC ? 'UTC' : '';\n  var y = date['get' + utc + 'FullYear']();\n  var M = date['get' + utc + 'Month']() + 1;\n  var d = date['get' + utc + 'Date']();\n  var h = date['get' + utc + 'Hours']();\n  var m = date['get' + utc + 'Minutes']();\n  var s = date['get' + utc + 'Seconds']();\n  tpl = tpl.replace('MM', s2d(M)).replace('M', M).replace('yyyy', y).replace('yy', y % 100).replace('dd', s2d(d)).replace('d', d).replace('hh', s2d(h)).replace('h', h).replace('mm', s2d(m)).replace('m', m).replace('ss', s2d(s)).replace('s', s);\n  return tpl;\n}\n/**\n * Capital first\n * @param {string} str\n * @return {string}\n */\n\n\nfunction capitalFirst(str) {\n  return str ? str.charAt(0).toUpperCase() + str.substr(1) : str;\n}\n\nvar truncateText = textContain.truncateText;\nvar getTextRect = textContain.getBoundingRect;\nexports.addCommas = addCommas;\nexports.toCamelCase = toCamelCase;\nexports.normalizeCssArray = normalizeCssArray;\nexports.encodeHTML = encodeHTML;\nexports.formatTpl = formatTpl;\nexports.formatTplSimple = formatTplSimple;\nexports.getTooltipMarker = getTooltipMarker;\nexports.formatTime = formatTime;\nexports.capitalFirst = capitalFirst;\nexports.truncateText = truncateText;\nexports.getTextRect = getTextRect;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar pathTool = require(\"zrender/lib/tool/path\");\n\nvar colorTool = require(\"zrender/lib/tool/color\");\n\nvar matrix = require(\"zrender/lib/core/matrix\");\n\nvar vector = require(\"zrender/lib/core/vector\");\n\nvar Path = require(\"zrender/lib/graphic/Path\");\n\nvar Transformable = require(\"zrender/lib/mixin/Transformable\");\n\nvar ZImage = require(\"zrender/lib/graphic/Image\");\n\nexports.Image = ZImage;\n\nvar Group = require(\"zrender/lib/container/Group\");\n\nexports.Group = Group;\n\nvar Text = require(\"zrender/lib/graphic/Text\");\n\nexports.Text = Text;\n\nvar Circle = require(\"zrender/lib/graphic/shape/Circle\");\n\nexports.Circle = Circle;\n\nvar Sector = require(\"zrender/lib/graphic/shape/Sector\");\n\nexports.Sector = Sector;\n\nvar Ring = require(\"zrender/lib/graphic/shape/Ring\");\n\nexports.Ring = Ring;\n\nvar Polygon = require(\"zrender/lib/graphic/shape/Polygon\");\n\nexports.Polygon = Polygon;\n\nvar Polyline = require(\"zrender/lib/graphic/shape/Polyline\");\n\nexports.Polyline = Polyline;\n\nvar Rect = require(\"zrender/lib/graphic/shape/Rect\");\n\nexports.Rect = Rect;\n\nvar Line = require(\"zrender/lib/graphic/shape/Line\");\n\nexports.Line = Line;\n\nvar BezierCurve = require(\"zrender/lib/graphic/shape/BezierCurve\");\n\nexports.BezierCurve = BezierCurve;\n\nvar Arc = require(\"zrender/lib/graphic/shape/Arc\");\n\nexports.Arc = Arc;\n\nvar CompoundPath = require(\"zrender/lib/graphic/CompoundPath\");\n\nexports.CompoundPath = CompoundPath;\n\nvar LinearGradient = require(\"zrender/lib/graphic/LinearGradient\");\n\nexports.LinearGradient = LinearGradient;\n\nvar RadialGradient = require(\"zrender/lib/graphic/RadialGradient\");\n\nexports.RadialGradient = RadialGradient;\n\nvar BoundingRect = require(\"zrender/lib/core/BoundingRect\");\n\nexports.BoundingRect = BoundingRect;\n\nvar IncrementalDisplayable = require(\"zrender/lib/graphic/IncrementalDisplayable\");\n\nexports.IncrementalDisplayable = IncrementalDisplayable;\nvar round = Math.round;\nvar mathMax = Math.max;\nvar mathMin = Math.min;\nvar EMPTY_OBJ = {};\n/**\n * Extend shape with parameters\n */\n\nfunction extendShape(opts) {\n  return Path.extend(opts);\n}\n/**\n * Extend path\n */\n\n\nfunction extendPath(pathData, opts) {\n  return pathTool.extendFromString(pathData, opts);\n}\n/**\n * Create a path element from path data string\n * @param {string} pathData\n * @param {Object} opts\n * @param {module:zrender/core/BoundingRect} rect\n * @param {string} [layout=cover] 'center' or 'cover'\n */\n\n\nfunction makePath(pathData, opts, rect, layout) {\n  var path = pathTool.createFromString(pathData, opts);\n  var boundingRect = path.getBoundingRect();\n\n  if (rect) {\n    if (layout === 'center') {\n      rect = centerGraphic(rect, boundingRect);\n    }\n\n    resizePath(path, rect);\n  }\n\n  return path;\n}\n/**\n * Create a image element from image url\n * @param {string} imageUrl image url\n * @param {Object} opts options\n * @param {module:zrender/core/BoundingRect} rect constrain rect\n * @param {string} [layout=cover] 'center' or 'cover'\n */\n\n\nfunction makeImage(imageUrl, rect, layout) {\n  var path = new ZImage({\n    style: {\n      image: imageUrl,\n      x: rect.x,\n      y: rect.y,\n      width: rect.width,\n      height: rect.height\n    },\n    onload: function (img) {\n      if (layout === 'center') {\n        var boundingRect = {\n          width: img.width,\n          height: img.height\n        };\n        path.setStyle(centerGraphic(rect, boundingRect));\n      }\n    }\n  });\n  return path;\n}\n/**\n * Get position of centered element in bounding box.\n *\n * @param  {Object} rect         element local bounding box\n * @param  {Object} boundingRect constraint bounding box\n * @return {Object} element position containing x, y, width, and height\n */\n\n\nfunction centerGraphic(rect, boundingRect) {\n  // Set rect to center, keep width / height ratio.\n  var aspect = boundingRect.width / boundingRect.height;\n  var width = rect.height * aspect;\n  var height;\n\n  if (width <= rect.width) {\n    height = rect.height;\n  } else {\n    width = rect.width;\n    height = width / aspect;\n  }\n\n  var cx = rect.x + rect.width / 2;\n  var cy = rect.y + rect.height / 2;\n  return {\n    x: cx - width / 2,\n    y: cy - height / 2,\n    width: width,\n    height: height\n  };\n}\n\nvar mergePath = pathTool.mergePath;\n/**\n * Resize a path to fit the rect\n * @param {module:zrender/graphic/Path} path\n * @param {Object} rect\n */\n\nfunction resizePath(path, rect) {\n  if (!path.applyTransform) {\n    return;\n  }\n\n  var pathRect = path.getBoundingRect();\n  var m = pathRect.calculateTransform(rect);\n  path.applyTransform(m);\n}\n/**\n * Sub pixel optimize line for canvas\n *\n * @param {Object} param\n * @param {Object} [param.shape]\n * @param {number} [param.shape.x1]\n * @param {number} [param.shape.y1]\n * @param {number} [param.shape.x2]\n * @param {number} [param.shape.y2]\n * @param {Object} [param.style]\n * @param {number} [param.style.lineWidth]\n * @return {Object} Modified param\n */\n\n\nfunction subPixelOptimizeLine(param) {\n  var shape = param.shape;\n  var lineWidth = param.style.lineWidth;\n\n  if (round(shape.x1 * 2) === round(shape.x2 * 2)) {\n    shape.x1 = shape.x2 = subPixelOptimize(shape.x1, lineWidth, true);\n  }\n\n  if (round(shape.y1 * 2) === round(shape.y2 * 2)) {\n    shape.y1 = shape.y2 = subPixelOptimize(shape.y1, lineWidth, true);\n  }\n\n  return param;\n}\n/**\n * Sub pixel optimize rect for canvas\n *\n * @param {Object} param\n * @param {Object} [param.shape]\n * @param {number} [param.shape.x]\n * @param {number} [param.shape.y]\n * @param {number} [param.shape.width]\n * @param {number} [param.shape.height]\n * @param {Object} [param.style]\n * @param {number} [param.style.lineWidth]\n * @return {Object} Modified param\n */\n\n\nfunction subPixelOptimizeRect(param) {\n  var shape = param.shape;\n  var lineWidth = param.style.lineWidth;\n  var originX = shape.x;\n  var originY = shape.y;\n  var originWidth = shape.width;\n  var originHeight = shape.height;\n  shape.x = subPixelOptimize(shape.x, lineWidth, true);\n  shape.y = subPixelOptimize(shape.y, lineWidth, true);\n  shape.width = Math.max(subPixelOptimize(originX + originWidth, lineWidth, false) - shape.x, originWidth === 0 ? 0 : 1);\n  shape.height = Math.max(subPixelOptimize(originY + originHeight, lineWidth, false) - shape.y, originHeight === 0 ? 0 : 1);\n  return param;\n}\n/**\n * Sub pixel optimize for canvas\n *\n * @param {number} position Coordinate, such as x, y\n * @param {number} lineWidth Should be nonnegative integer.\n * @param {boolean=} positiveOrNegative Default false (negative).\n * @return {number} Optimized position.\n */\n\n\nfunction subPixelOptimize(position, lineWidth, positiveOrNegative) {\n  // Assure that (position + lineWidth / 2) is near integer edge,\n  // otherwise line will be fuzzy in canvas.\n  var doubledPosition = round(position * 2);\n  return (doubledPosition + round(lineWidth)) % 2 === 0 ? doubledPosition / 2 : (doubledPosition + (positiveOrNegative ? 1 : -1)) / 2;\n}\n\nfunction hasFillOrStroke(fillOrStroke) {\n  return fillOrStroke != null && fillOrStroke != 'none';\n}\n\nfunction liftColor(color) {\n  return typeof color === 'string' ? colorTool.lift(color, -0.1) : color;\n}\n/**\n * @private\n */\n\n\nfunction cacheElementStl(el) {\n  if (el.__hoverStlDirty) {\n    var stroke = el.style.stroke;\n    var fill = el.style.fill; // Create hoverStyle on mouseover\n\n    var hoverStyle = el.__hoverStl;\n    hoverStyle.fill = hoverStyle.fill || (hasFillOrStroke(fill) ? liftColor(fill) : null);\n    hoverStyle.stroke = hoverStyle.stroke || (hasFillOrStroke(stroke) ? liftColor(stroke) : null);\n    var normalStyle = {};\n\n    for (var name in hoverStyle) {\n      // See comment in `doSingleEnterHover`.\n      if (hoverStyle[name] != null) {\n        normalStyle[name] = el.style[name];\n      }\n    }\n\n    el.__normalStl = normalStyle;\n    el.__hoverStlDirty = false;\n  }\n}\n/**\n * @private\n */\n\n\nfunction doSingleEnterHover(el) {\n  if (el.__isHover) {\n    return;\n  }\n\n  cacheElementStl(el);\n\n  if (el.useHoverLayer) {\n    el.__zr && el.__zr.addHover(el, el.__hoverStl);\n  } else {\n    var style = el.style;\n    var insideRollbackOpt = style.insideRollbackOpt; // Consider case: only `position: 'top'` is set on emphasis, then text\n    // color should be returned to `autoColor`, rather than remain '#fff'.\n    // So we should rollback then apply again after style merging.\n\n    insideRollbackOpt && rollbackInsideStyle(style); // styles can be:\n    // {\n    //    label: {\n    //        show: false,\n    //        position: 'outside',\n    //        fontSize: 18\n    //    },\n    //    emphasis: {\n    //        label: {\n    //            show: true\n    //        }\n    //    }\n    // },\n    // where properties of `emphasis` may not appear in `normal`. We previously use\n    // module:echarts/util/model#defaultEmphasis to merge `normal` to `emphasis`.\n    // But consider rich text and setOption in merge mode, it is impossible to cover\n    // all properties in merge. So we use merge mode when setting style here, where\n    // only properties that is not `null/undefined` can be set. The disadventage:\n    // null/undefined can not be used to remove style any more in `emphasis`.\n\n    style.extendFrom(el.__hoverStl); // Do not save `insideRollback`.\n\n    if (insideRollbackOpt) {\n      applyInsideStyle(style, style.insideOriginalTextPosition, insideRollbackOpt); // textFill may be rollbacked to null.\n\n      if (style.textFill == null) {\n        style.textFill = insideRollbackOpt.autoColor;\n      }\n    }\n\n    el.dirty(false);\n    el.z2 += 1;\n  }\n\n  el.__isHover = true;\n}\n/**\n * @inner\n */\n\n\nfunction doSingleLeaveHover(el) {\n  if (!el.__isHover) {\n    return;\n  }\n\n  var normalStl = el.__normalStl;\n\n  if (el.useHoverLayer) {\n    el.__zr && el.__zr.removeHover(el);\n  } else {\n    // Consider null/undefined value, should use\n    // `setStyle` but not `extendFrom(stl, true)`.\n    normalStl && el.setStyle(normalStl);\n    el.z2 -= 1;\n  }\n\n  el.__isHover = false;\n}\n/**\n * @inner\n */\n\n\nfunction doEnterHover(el) {\n  el.type === 'group' ? el.traverse(function (child) {\n    if (child.type !== 'group') {\n      doSingleEnterHover(child);\n    }\n  }) : doSingleEnterHover(el);\n}\n\nfunction doLeaveHover(el) {\n  el.type === 'group' ? el.traverse(function (child) {\n    if (child.type !== 'group') {\n      doSingleLeaveHover(child);\n    }\n  }) : doSingleLeaveHover(el);\n}\n/**\n * @inner\n */\n\n\nfunction setElementHoverStl(el, hoverStl) {\n  // If element has sepcified hoverStyle, then use it instead of given hoverStyle\n  // Often used when item group has a label element and it's hoverStyle is different\n  el.__hoverStl = el.hoverStyle || hoverStl || {};\n  el.__hoverStlDirty = true;\n\n  if (el.__isHover) {\n    cacheElementStl(el);\n  }\n}\n/**\n * @inner\n */\n\n\nfunction onElementMouseOver(e) {\n  if (this.__hoverSilentOnTouch && e.zrByTouch) {\n    return;\n  } // Only if element is not in emphasis status\n\n\n  !this.__isEmphasis && doEnterHover(this);\n}\n/**\n * @inner\n */\n\n\nfunction onElementMouseOut(e) {\n  if (this.__hoverSilentOnTouch && e.zrByTouch) {\n    return;\n  } // Only if element is not in emphasis status\n\n\n  !this.__isEmphasis && doLeaveHover(this);\n}\n/**\n * @inner\n */\n\n\nfunction enterEmphasis() {\n  this.__isEmphasis = true;\n  doEnterHover(this);\n}\n/**\n * @inner\n */\n\n\nfunction leaveEmphasis() {\n  this.__isEmphasis = false;\n  doLeaveHover(this);\n}\n/**\n * Set hover style of element.\n * This method can be called repeatly without side-effects.\n * @param {module:zrender/Element} el\n * @param {Object} [hoverStyle]\n * @param {Object} [opt]\n * @param {boolean} [opt.hoverSilentOnTouch=false]\n *        In touch device, mouseover event will be trigger on touchstart event\n *        (see module:zrender/dom/HandlerProxy). By this mechanism, we can\n *        conviniently use hoverStyle when tap on touch screen without additional\n *        code for compatibility.\n *        But if the chart/component has select feature, which usually also use\n *        hoverStyle, there might be conflict between 'select-highlight' and\n *        'hover-highlight' especially when roam is enabled (see geo for example).\n *        In this case, hoverSilentOnTouch should be used to disable hover-highlight\n *        on touch device.\n */\n\n\nfunction setHoverStyle(el, hoverStyle, opt) {\n  el.__hoverSilentOnTouch = opt && opt.hoverSilentOnTouch;\n  el.type === 'group' ? el.traverse(function (child) {\n    if (child.type !== 'group') {\n      setElementHoverStl(child, hoverStyle);\n    }\n  }) : setElementHoverStl(el, hoverStyle); // Duplicated function will be auto-ignored, see Eventful.js.\n\n  el.on('mouseover', onElementMouseOver).on('mouseout', onElementMouseOut); // Emphasis, normal can be triggered manually\n\n  el.on('emphasis', enterEmphasis).on('normal', leaveEmphasis);\n}\n/**\n * @param {Object|module:zrender/graphic/Style} normalStyle\n * @param {Object} emphasisStyle\n * @param {module:echarts/model/Model} normalModel\n * @param {module:echarts/model/Model} emphasisModel\n * @param {Object} opt Check `opt` of `setTextStyleCommon` to find other props.\n * @param {string|Function} [opt.defaultText]\n * @param {module:echarts/model/Model} [opt.labelFetcher] Fetch text by\n *      `opt.labelFetcher.getFormattedLabel(opt.labelDataIndex, 'normal'/'emphasis', null, opt.labelDimIndex)`\n * @param {module:echarts/model/Model} [opt.labelDataIndex] Fetch text by\n *      `opt.textFetcher.getFormattedLabel(opt.labelDataIndex, 'normal'/'emphasis', null, opt.labelDimIndex)`\n * @param {module:echarts/model/Model} [opt.labelDimIndex] Fetch text by\n *      `opt.textFetcher.getFormattedLabel(opt.labelDataIndex, 'normal'/'emphasis', null, opt.labelDimIndex)`\n * @param {Object} [normalSpecified]\n * @param {Object} [emphasisSpecified]\n */\n\n\nfunction setLabelStyle(normalStyle, emphasisStyle, normalModel, emphasisModel, opt, normalSpecified, emphasisSpecified) {\n  opt = opt || EMPTY_OBJ;\n  var labelFetcher = opt.labelFetcher;\n  var labelDataIndex = opt.labelDataIndex;\n  var labelDimIndex = opt.labelDimIndex; // This scenario, `label.normal.show = true; label.emphasis.show = false`,\n  // is not supported util someone requests.\n\n  var showNormal = normalModel.getShallow('show');\n  var showEmphasis = emphasisModel.getShallow('show'); // Consider performance, only fetch label when necessary.\n  // If `normal.show` is `false` and `emphasis.show` is `true` and `emphasis.formatter` is not set,\n  // label should be displayed, where text is fetched by `normal.formatter` or `opt.defaultText`.\n\n  var baseText;\n\n  if (showNormal || showEmphasis) {\n    if (labelFetcher) {\n      baseText = labelFetcher.getFormattedLabel(labelDataIndex, 'normal', null, labelDimIndex);\n    }\n\n    if (baseText == null) {\n      baseText = zrUtil.isFunction(opt.defaultText) ? opt.defaultText(labelDataIndex, opt) : opt.defaultText;\n    }\n  }\n\n  var normalStyleText = showNormal ? baseText : null;\n  var emphasisStyleText = showEmphasis ? zrUtil.retrieve2(labelFetcher ? labelFetcher.getFormattedLabel(labelDataIndex, 'emphasis', null, labelDimIndex) : null, baseText) : null; // Optimize: If style.text is null, text will not be drawn.\n\n  if (normalStyleText != null || emphasisStyleText != null) {\n    // Always set `textStyle` even if `normalStyle.text` is null, because default\n    // values have to be set on `normalStyle`.\n    // If we set default values on `emphasisStyle`, consider case:\n    // Firstly, `setOption(... label: {normal: {text: null}, emphasis: {show: true}} ...);`\n    // Secondly, `setOption(... label: {noraml: {show: true, text: 'abc', color: 'red'} ...);`\n    // Then the 'red' will not work on emphasis.\n    setTextStyle(normalStyle, normalModel, normalSpecified, opt);\n    setTextStyle(emphasisStyle, emphasisModel, emphasisSpecified, opt, true);\n  }\n\n  normalStyle.text = normalStyleText;\n  emphasisStyle.text = emphasisStyleText;\n}\n/**\n * Set basic textStyle properties.\n * @param {Object|module:zrender/graphic/Style} textStyle\n * @param {module:echarts/model/Model} model\n * @param {Object} [specifiedTextStyle] Can be overrided by settings in model.\n * @param {Object} [opt] See `opt` of `setTextStyleCommon`.\n * @param {boolean} [isEmphasis]\n */\n\n\nfunction setTextStyle(textStyle, textStyleModel, specifiedTextStyle, opt, isEmphasis) {\n  setTextStyleCommon(textStyle, textStyleModel, opt, isEmphasis);\n  specifiedTextStyle && zrUtil.extend(textStyle, specifiedTextStyle);\n  textStyle.host && textStyle.host.dirty && textStyle.host.dirty(false);\n  return textStyle;\n}\n/**\n * Set text option in the style.\n * @deprecated\n * @param {Object} textStyle\n * @param {module:echarts/model/Model} labelModel\n * @param {string|boolean} defaultColor Default text color.\n *        If set as false, it will be processed as a emphasis style.\n */\n\n\nfunction setText(textStyle, labelModel, defaultColor) {\n  var opt = {\n    isRectText: true\n  };\n  var isEmphasis;\n\n  if (defaultColor === false) {\n    isEmphasis = true;\n  } else {\n    // Support setting color as 'auto' to get visual color.\n    opt.autoColor = defaultColor;\n  }\n\n  setTextStyleCommon(textStyle, labelModel, opt, isEmphasis);\n  textStyle.host && textStyle.host.dirty && textStyle.host.dirty(false);\n}\n/**\n * {\n *      disableBox: boolean, Whether diable drawing box of block (outer most).\n *      isRectText: boolean,\n *      autoColor: string, specify a color when color is 'auto',\n *              for textFill, textStroke, textBackgroundColor, and textBorderColor.\n *              If autoColor specified, it is used as default textFill.\n *      useInsideStyle:\n *              `true`: Use inside style (textFill, textStroke, textStrokeWidth)\n *                  if `textFill` is not specified.\n *              `false`: Do not use inside style.\n *              `null/undefined`: use inside style if `isRectText` is true and\n *                  `textFill` is not specified and textPosition contains `'inside'`.\n *      forceRich: boolean\n * }\n */\n\n\nfunction setTextStyleCommon(textStyle, textStyleModel, opt, isEmphasis) {\n  // Consider there will be abnormal when merge hover style to normal style if given default value.\n  opt = opt || EMPTY_OBJ;\n\n  if (opt.isRectText) {\n    var textPosition = textStyleModel.getShallow('position') || (isEmphasis ? null : 'inside'); // 'outside' is not a valid zr textPostion value, but used\n    // in bar series, and magric type should be considered.\n\n    textPosition === 'outside' && (textPosition = 'top');\n    textStyle.textPosition = textPosition;\n    textStyle.textOffset = textStyleModel.getShallow('offset');\n    var labelRotate = textStyleModel.getShallow('rotate');\n    labelRotate != null && (labelRotate *= Math.PI / 180);\n    textStyle.textRotation = labelRotate;\n    textStyle.textDistance = zrUtil.retrieve2(textStyleModel.getShallow('distance'), isEmphasis ? null : 5);\n  }\n\n  var ecModel = textStyleModel.ecModel;\n  var globalTextStyle = ecModel && ecModel.option.textStyle; // Consider case:\n  // {\n  //     data: [{\n  //         value: 12,\n  //         label: {\n  //             rich: {\n  //                 // no 'a' here but using parent 'a'.\n  //             }\n  //         }\n  //     }],\n  //     rich: {\n  //         a: { ... }\n  //     }\n  // }\n\n  var richItemNames = getRichItemNames(textStyleModel);\n  var richResult;\n\n  if (richItemNames) {\n    richResult = {};\n\n    for (var name in richItemNames) {\n      if (richItemNames.hasOwnProperty(name)) {\n        // Cascade is supported in rich.\n        var richTextStyle = textStyleModel.getModel(['rich', name]); // In rich, never `disableBox`.\n\n        setTokenTextStyle(richResult[name] = {}, richTextStyle, globalTextStyle, opt, isEmphasis);\n      }\n    }\n  }\n\n  textStyle.rich = richResult;\n  setTokenTextStyle(textStyle, textStyleModel, globalTextStyle, opt, isEmphasis, true);\n\n  if (opt.forceRich && !opt.textStyle) {\n    opt.textStyle = {};\n  }\n\n  return textStyle;\n} // Consider case:\n// {\n//     data: [{\n//         value: 12,\n//         label: {\n//             rich: {\n//                 // no 'a' here but using parent 'a'.\n//             }\n//         }\n//     }],\n//     rich: {\n//         a: { ... }\n//     }\n// }\n\n\nfunction getRichItemNames(textStyleModel) {\n  // Use object to remove duplicated names.\n  var richItemNameMap;\n\n  while (textStyleModel && textStyleModel !== textStyleModel.ecModel) {\n    var rich = (textStyleModel.option || EMPTY_OBJ).rich;\n\n    if (rich) {\n      richItemNameMap = richItemNameMap || {};\n\n      for (var name in rich) {\n        if (rich.hasOwnProperty(name)) {\n          richItemNameMap[name] = 1;\n        }\n      }\n    }\n\n    textStyleModel = textStyleModel.parentModel;\n  }\n\n  return richItemNameMap;\n}\n\nfunction setTokenTextStyle(textStyle, textStyleModel, globalTextStyle, opt, isEmphasis, isBlock) {\n  // In merge mode, default value should not be given.\n  globalTextStyle = !isEmphasis && globalTextStyle || EMPTY_OBJ;\n  textStyle.textFill = getAutoColor(textStyleModel.getShallow('color'), opt) || globalTextStyle.color;\n  textStyle.textStroke = getAutoColor(textStyleModel.getShallow('textBorderColor'), opt) || globalTextStyle.textBorderColor;\n  textStyle.textStrokeWidth = zrUtil.retrieve2(textStyleModel.getShallow('textBorderWidth'), globalTextStyle.textBorderWidth);\n\n  if (!isEmphasis) {\n    if (isBlock) {\n      // Always set `insideRollback`, for clearing previous.\n      var originalTextPosition = textStyle.textPosition;\n      textStyle.insideRollback = applyInsideStyle(textStyle, originalTextPosition, opt); // Save original textPosition, because style.textPosition will be repalced by\n      // real location (like [10, 30]) in zrender.\n\n      textStyle.insideOriginalTextPosition = originalTextPosition;\n      textStyle.insideRollbackOpt = opt;\n    } // Set default finally.\n\n\n    if (textStyle.textFill == null) {\n      textStyle.textFill = opt.autoColor;\n    }\n  } // Do not use `getFont` here, because merge should be supported, where\n  // part of these properties may be changed in emphasis style, and the\n  // others should remain their original value got from normal style.\n\n\n  textStyle.fontStyle = textStyleModel.getShallow('fontStyle') || globalTextStyle.fontStyle;\n  textStyle.fontWeight = textStyleModel.getShallow('fontWeight') || globalTextStyle.fontWeight;\n  textStyle.fontSize = textStyleModel.getShallow('fontSize') || globalTextStyle.fontSize;\n  textStyle.fontFamily = textStyleModel.getShallow('fontFamily') || globalTextStyle.fontFamily;\n  textStyle.textAlign = textStyleModel.getShallow('align');\n  textStyle.textVerticalAlign = textStyleModel.getShallow('verticalAlign') || textStyleModel.getShallow('baseline');\n  textStyle.textLineHeight = textStyleModel.getShallow('lineHeight');\n  textStyle.textWidth = textStyleModel.getShallow('width');\n  textStyle.textHeight = textStyleModel.getShallow('height');\n  textStyle.textTag = textStyleModel.getShallow('tag');\n\n  if (!isBlock || !opt.disableBox) {\n    textStyle.textBackgroundColor = getAutoColor(textStyleModel.getShallow('backgroundColor'), opt);\n    textStyle.textPadding = textStyleModel.getShallow('padding');\n    textStyle.textBorderColor = getAutoColor(textStyleModel.getShallow('borderColor'), opt);\n    textStyle.textBorderWidth = textStyleModel.getShallow('borderWidth');\n    textStyle.textBorderRadius = textStyleModel.getShallow('borderRadius');\n    textStyle.textBoxShadowColor = textStyleModel.getShallow('shadowColor');\n    textStyle.textBoxShadowBlur = textStyleModel.getShallow('shadowBlur');\n    textStyle.textBoxShadowOffsetX = textStyleModel.getShallow('shadowOffsetX');\n    textStyle.textBoxShadowOffsetY = textStyleModel.getShallow('shadowOffsetY');\n  }\n\n  textStyle.textShadowColor = textStyleModel.getShallow('textShadowColor') || globalTextStyle.textShadowColor;\n  textStyle.textShadowBlur = textStyleModel.getShallow('textShadowBlur') || globalTextStyle.textShadowBlur;\n  textStyle.textShadowOffsetX = textStyleModel.getShallow('textShadowOffsetX') || globalTextStyle.textShadowOffsetX;\n  textStyle.textShadowOffsetY = textStyleModel.getShallow('textShadowOffsetY') || globalTextStyle.textShadowOffsetY;\n}\n\nfunction getAutoColor(color, opt) {\n  return color !== 'auto' ? color : opt && opt.autoColor ? opt.autoColor : null;\n}\n\nfunction applyInsideStyle(textStyle, textPosition, opt) {\n  var useInsideStyle = opt.useInsideStyle;\n  var insideRollback;\n\n  if (textStyle.textFill == null && useInsideStyle !== false && (useInsideStyle === true || opt.isRectText && textPosition // textPosition can be [10, 30]\n  && typeof textPosition === 'string' && textPosition.indexOf('inside') >= 0)) {\n    insideRollback = {\n      textFill: null,\n      textStroke: textStyle.textStroke,\n      textStrokeWidth: textStyle.textStrokeWidth\n    };\n    textStyle.textFill = '#fff'; // Consider text with #fff overflow its container.\n\n    if (textStyle.textStroke == null) {\n      textStyle.textStroke = opt.autoColor;\n      textStyle.textStrokeWidth == null && (textStyle.textStrokeWidth = 2);\n    }\n  }\n\n  return insideRollback;\n}\n\nfunction rollbackInsideStyle(style) {\n  var insideRollback = style.insideRollback;\n\n  if (insideRollback) {\n    style.textFill = insideRollback.textFill;\n    style.textStroke = insideRollback.textStroke;\n    style.textStrokeWidth = insideRollback.textStrokeWidth;\n  }\n}\n\nfunction getFont(opt, ecModel) {\n  // ecModel or default text style model.\n  var gTextStyleModel = ecModel || ecModel.getModel('textStyle');\n  return zrUtil.trim([// FIXME in node-canvas fontWeight is before fontStyle\n  opt.fontStyle || gTextStyleModel && gTextStyleModel.getShallow('fontStyle') || '', opt.fontWeight || gTextStyleModel && gTextStyleModel.getShallow('fontWeight') || '', (opt.fontSize || gTextStyleModel && gTextStyleModel.getShallow('fontSize') || 12) + 'px', opt.fontFamily || gTextStyleModel && gTextStyleModel.getShallow('fontFamily') || 'sans-serif'].join(' '));\n}\n\nfunction animateOrSetProps(isUpdate, el, props, animatableModel, dataIndex, cb) {\n  if (typeof dataIndex === 'function') {\n    cb = dataIndex;\n    dataIndex = null;\n  } // Do not check 'animation' property directly here. Consider this case:\n  // animation model is an `itemModel`, whose does not have `isAnimationEnabled`\n  // but its parent model (`seriesModel`) does.\n\n\n  var animationEnabled = animatableModel && animatableModel.isAnimationEnabled();\n\n  if (animationEnabled) {\n    var postfix = isUpdate ? 'Update' : '';\n    var duration = animatableModel.getShallow('animationDuration' + postfix);\n    var animationEasing = animatableModel.getShallow('animationEasing' + postfix);\n    var animationDelay = animatableModel.getShallow('animationDelay' + postfix);\n\n    if (typeof animationDelay === 'function') {\n      animationDelay = animationDelay(dataIndex, animatableModel.getAnimationDelayParams ? animatableModel.getAnimationDelayParams(el, dataIndex) : null);\n    }\n\n    if (typeof duration === 'function') {\n      duration = duration(dataIndex);\n    }\n\n    duration > 0 ? el.animateTo(props, duration, animationDelay || 0, animationEasing, cb, !!cb) : (el.stopAnimation(), el.attr(props), cb && cb());\n  } else {\n    el.stopAnimation();\n    el.attr(props);\n    cb && cb();\n  }\n}\n/**\n * Update graphic element properties with or without animation according to the\n * configuration in series.\n *\n * Caution: this method will stop previous animation.\n * So if do not use this method to one element twice before\n * animation starts, unless you know what you are doing.\n *\n * @param {module:zrender/Element} el\n * @param {Object} props\n * @param {module:echarts/model/Model} [animatableModel]\n * @param {number} [dataIndex]\n * @param {Function} [cb]\n * @example\n *     graphic.updateProps(el, {\n *         position: [100, 100]\n *     }, seriesModel, dataIndex, function () { console.log('Animation done!'); });\n *     // Or\n *     graphic.updateProps(el, {\n *         position: [100, 100]\n *     }, seriesModel, function () { console.log('Animation done!'); });\n */\n\n\nfunction updateProps(el, props, animatableModel, dataIndex, cb) {\n  animateOrSetProps(true, el, props, animatableModel, dataIndex, cb);\n}\n/**\n * Init graphic element properties with or without animation according to the\n * configuration in series.\n *\n * Caution: this method will stop previous animation.\n * So if do not use this method to one element twice before\n * animation starts, unless you know what you are doing.\n *\n * @param {module:zrender/Element} el\n * @param {Object} props\n * @param {module:echarts/model/Model} [animatableModel]\n * @param {number} [dataIndex]\n * @param {Function} cb\n */\n\n\nfunction initProps(el, props, animatableModel, dataIndex, cb) {\n  animateOrSetProps(false, el, props, animatableModel, dataIndex, cb);\n}\n/**\n * Get transform matrix of target (param target),\n * in coordinate of its ancestor (param ancestor)\n *\n * @param {module:zrender/mixin/Transformable} target\n * @param {module:zrender/mixin/Transformable} [ancestor]\n */\n\n\nfunction getTransform(target, ancestor) {\n  var mat = matrix.identity([]);\n\n  while (target && target !== ancestor) {\n    matrix.mul(mat, target.getLocalTransform(), mat);\n    target = target.parent;\n  }\n\n  return mat;\n}\n/**\n * Apply transform to an vertex.\n * @param {Array.<number>} target [x, y]\n * @param {Array.<number>|TypedArray.<number>|Object} transform Can be:\n *      + Transform matrix: like [1, 0, 0, 1, 0, 0]\n *      + {position, rotation, scale}, the same as `zrender/Transformable`.\n * @param {boolean=} invert Whether use invert matrix.\n * @return {Array.<number>} [x, y]\n */\n\n\nfunction applyTransform(target, transform, invert) {\n  if (transform && !zrUtil.isArrayLike(transform)) {\n    transform = Transformable.getLocalTransform(transform);\n  }\n\n  if (invert) {\n    transform = matrix.invert([], transform);\n  }\n\n  return vector.applyTransform([], target, transform);\n}\n/**\n * @param {string} direction 'left' 'right' 'top' 'bottom'\n * @param {Array.<number>} transform Transform matrix: like [1, 0, 0, 1, 0, 0]\n * @param {boolean=} invert Whether use invert matrix.\n * @return {string} Transformed direction. 'left' 'right' 'top' 'bottom'\n */\n\n\nfunction transformDirection(direction, transform, invert) {\n  // Pick a base, ensure that transform result will not be (0, 0).\n  var hBase = transform[4] === 0 || transform[5] === 0 || transform[0] === 0 ? 1 : Math.abs(2 * transform[4] / transform[0]);\n  var vBase = transform[4] === 0 || transform[5] === 0 || transform[2] === 0 ? 1 : Math.abs(2 * transform[4] / transform[2]);\n  var vertex = [direction === 'left' ? -hBase : direction === 'right' ? hBase : 0, direction === 'top' ? -vBase : direction === 'bottom' ? vBase : 0];\n  vertex = applyTransform(vertex, transform, invert);\n  return Math.abs(vertex[0]) > Math.abs(vertex[1]) ? vertex[0] > 0 ? 'right' : 'left' : vertex[1] > 0 ? 'bottom' : 'top';\n}\n/**\n * Apply group transition animation from g1 to g2.\n * If no animatableModel, no animation.\n */\n\n\nfunction groupTransition(g1, g2, animatableModel, cb) {\n  if (!g1 || !g2) {\n    return;\n  }\n\n  function getElMap(g) {\n    var elMap = {};\n    g.traverse(function (el) {\n      if (!el.isGroup && el.anid) {\n        elMap[el.anid] = el;\n      }\n    });\n    return elMap;\n  }\n\n  function getAnimatableProps(el) {\n    var obj = {\n      position: vector.clone(el.position),\n      rotation: el.rotation\n    };\n\n    if (el.shape) {\n      obj.shape = zrUtil.extend({}, el.shape);\n    }\n\n    return obj;\n  }\n\n  var elMap1 = getElMap(g1);\n  g2.traverse(function (el) {\n    if (!el.isGroup && el.anid) {\n      var oldEl = elMap1[el.anid];\n\n      if (oldEl) {\n        var newProp = getAnimatableProps(el);\n        el.attr(getAnimatableProps(oldEl));\n        updateProps(el, newProp, animatableModel, el.dataIndex);\n      } // else {\n      //     if (el.previousProps) {\n      //         graphic.updateProps\n      //     }\n      // }\n\n    }\n  });\n}\n/**\n * @param {Array.<Array.<number>>} points Like: [[23, 44], [53, 66], ...]\n * @param {Object} rect {x, y, width, height}\n * @return {Array.<Array.<number>>} A new clipped points.\n */\n\n\nfunction clipPointsByRect(points, rect) {\n  return zrUtil.map(points, function (point) {\n    var x = point[0];\n    x = mathMax(x, rect.x);\n    x = mathMin(x, rect.x + rect.width);\n    var y = point[1];\n    y = mathMax(y, rect.y);\n    y = mathMin(y, rect.y + rect.height);\n    return [x, y];\n  });\n}\n/**\n * @param {Object} targetRect {x, y, width, height}\n * @param {Object} rect {x, y, width, height}\n * @return {Object} A new clipped rect. If rect size are negative, return undefined.\n */\n\n\nfunction clipRectByRect(targetRect, rect) {\n  var x = mathMax(targetRect.x, rect.x);\n  var x2 = mathMin(targetRect.x + targetRect.width, rect.x + rect.width);\n  var y = mathMax(targetRect.y, rect.y);\n  var y2 = mathMin(targetRect.y + targetRect.height, rect.y + rect.height);\n\n  if (x2 >= x && y2 >= y) {\n    return {\n      x: x,\n      y: y,\n      width: x2 - x,\n      height: y2 - y\n    };\n  }\n}\n/**\n * @param {string} iconStr Support 'image://' or 'path://' or direct svg path.\n * @param {Object} [opt] Properties of `module:zrender/Element`, except `style`.\n * @param {Object} [rect] {x, y, width, height}\n * @return {module:zrender/Element} Icon path or image element.\n */\n\n\nfunction createIcon(iconStr, opt, rect) {\n  opt = zrUtil.extend({\n    rectHover: true\n  }, opt);\n  var style = opt.style = {\n    strokeNoScale: true\n  };\n  rect = rect || {\n    x: -1,\n    y: -1,\n    width: 2,\n    height: 2\n  };\n\n  if (iconStr) {\n    return iconStr.indexOf('image://') === 0 ? (style.image = iconStr.slice(8), zrUtil.defaults(style, rect), new ZImage(opt)) : makePath(iconStr.replace('path://', ''), opt, rect, 'center');\n  }\n}\n\nexports.extendShape = extendShape;\nexports.extendPath = extendPath;\nexports.makePath = makePath;\nexports.makeImage = makeImage;\nexports.mergePath = mergePath;\nexports.resizePath = resizePath;\nexports.subPixelOptimizeLine = subPixelOptimizeLine;\nexports.subPixelOptimizeRect = subPixelOptimizeRect;\nexports.subPixelOptimize = subPixelOptimize;\nexports.setHoverStyle = setHoverStyle;\nexports.setLabelStyle = setLabelStyle;\nexports.setTextStyle = setTextStyle;\nexports.setText = setText;\nexports.getFont = getFont;\nexports.updateProps = updateProps;\nexports.initProps = initProps;\nexports.getTransform = getTransform;\nexports.applyTransform = applyTransform;\nexports.transformDirection = transformDirection;\nexports.groupTransition = groupTransition;\nexports.clipPointsByRect = clipPointsByRect;\nexports.clipRectByRect = clipRectByRect;\nexports.createIcon = createIcon;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar BoundingRect = require(\"zrender/lib/core/BoundingRect\");\n\nvar _number = require(\"./number\");\n\nvar parsePercent = _number.parsePercent;\n\nvar formatUtil = require(\"./format\");\n\n// Layout helpers for each component positioning\nvar each = zrUtil.each;\n/**\n * @public\n */\n\nvar LOCATION_PARAMS = ['left', 'right', 'top', 'bottom', 'width', 'height'];\n/**\n * @public\n */\n\nvar HV_NAMES = [['width', 'left', 'right'], ['height', 'top', 'bottom']];\n\nfunction boxLayout(orient, group, gap, maxWidth, maxHeight) {\n  var x = 0;\n  var y = 0;\n\n  if (maxWidth == null) {\n    maxWidth = Infinity;\n  }\n\n  if (maxHeight == null) {\n    maxHeight = Infinity;\n  }\n\n  var currentLineMaxSize = 0;\n  group.eachChild(function (child, idx) {\n    var position = child.position;\n    var rect = child.getBoundingRect();\n    var nextChild = group.childAt(idx + 1);\n    var nextChildRect = nextChild && nextChild.getBoundingRect();\n    var nextX;\n    var nextY;\n\n    if (orient === 'horizontal') {\n      var moveX = rect.width + (nextChildRect ? -nextChildRect.x + rect.x : 0);\n      nextX = x + moveX; // Wrap when width exceeds maxWidth or meet a `newline` group\n      // FIXME compare before adding gap?\n\n      if (nextX > maxWidth || child.newline) {\n        x = 0;\n        nextX = moveX;\n        y += currentLineMaxSize + gap;\n        currentLineMaxSize = rect.height;\n      } else {\n        // FIXME: consider rect.y is not `0`?\n        currentLineMaxSize = Math.max(currentLineMaxSize, rect.height);\n      }\n    } else {\n      var moveY = rect.height + (nextChildRect ? -nextChildRect.y + rect.y : 0);\n      nextY = y + moveY; // Wrap when width exceeds maxHeight or meet a `newline` group\n\n      if (nextY > maxHeight || child.newline) {\n        x += currentLineMaxSize + gap;\n        y = 0;\n        nextY = moveY;\n        currentLineMaxSize = rect.width;\n      } else {\n        currentLineMaxSize = Math.max(currentLineMaxSize, rect.width);\n      }\n    }\n\n    if (child.newline) {\n      return;\n    }\n\n    position[0] = x;\n    position[1] = y;\n    orient === 'horizontal' ? x = nextX + gap : y = nextY + gap;\n  });\n}\n/**\n * VBox or HBox layouting\n * @param {string} orient\n * @param {module:zrender/container/Group} group\n * @param {number} gap\n * @param {number} [width=Infinity]\n * @param {number} [height=Infinity]\n */\n\n\nvar box = boxLayout;\n/**\n * VBox layouting\n * @param {module:zrender/container/Group} group\n * @param {number} gap\n * @param {number} [width=Infinity]\n * @param {number} [height=Infinity]\n */\n\nvar vbox = zrUtil.curry(boxLayout, 'vertical');\n/**\n * HBox layouting\n * @param {module:zrender/container/Group} group\n * @param {number} gap\n * @param {number} [width=Infinity]\n * @param {number} [height=Infinity]\n */\n\nvar hbox = zrUtil.curry(boxLayout, 'horizontal');\n/**\n * If x or x2 is not specified or 'center' 'left' 'right',\n * the width would be as long as possible.\n * If y or y2 is not specified or 'middle' 'top' 'bottom',\n * the height would be as long as possible.\n *\n * @param {Object} positionInfo\n * @param {number|string} [positionInfo.x]\n * @param {number|string} [positionInfo.y]\n * @param {number|string} [positionInfo.x2]\n * @param {number|string} [positionInfo.y2]\n * @param {Object} containerRect {width, height}\n * @param {string|number} margin\n * @return {Object} {width, height}\n */\n\nfunction getAvailableSize(positionInfo, containerRect, margin) {\n  var containerWidth = containerRect.width;\n  var containerHeight = containerRect.height;\n  var x = parsePercent(positionInfo.x, containerWidth);\n  var y = parsePercent(positionInfo.y, containerHeight);\n  var x2 = parsePercent(positionInfo.x2, containerWidth);\n  var y2 = parsePercent(positionInfo.y2, containerHeight);\n  (isNaN(x) || isNaN(parseFloat(positionInfo.x))) && (x = 0);\n  (isNaN(x2) || isNaN(parseFloat(positionInfo.x2))) && (x2 = containerWidth);\n  (isNaN(y) || isNaN(parseFloat(positionInfo.y))) && (y = 0);\n  (isNaN(y2) || isNaN(parseFloat(positionInfo.y2))) && (y2 = containerHeight);\n  margin = formatUtil.normalizeCssArray(margin || 0);\n  return {\n    width: Math.max(x2 - x - margin[1] - margin[3], 0),\n    height: Math.max(y2 - y - margin[0] - margin[2], 0)\n  };\n}\n/**\n * Parse position info.\n *\n * @param {Object} positionInfo\n * @param {number|string} [positionInfo.left]\n * @param {number|string} [positionInfo.top]\n * @param {number|string} [positionInfo.right]\n * @param {number|string} [positionInfo.bottom]\n * @param {number|string} [positionInfo.width]\n * @param {number|string} [positionInfo.height]\n * @param {number|string} [positionInfo.aspect] Aspect is width / height\n * @param {Object} containerRect\n * @param {string|number} [margin]\n *\n * @return {module:zrender/core/BoundingRect}\n */\n\n\nfunction getLayoutRect(positionInfo, containerRect, margin) {\n  margin = formatUtil.normalizeCssArray(margin || 0);\n  var containerWidth = containerRect.width;\n  var containerHeight = containerRect.height;\n  var left = parsePercent(positionInfo.left, containerWidth);\n  var top = parsePercent(positionInfo.top, containerHeight);\n  var right = parsePercent(positionInfo.right, containerWidth);\n  var bottom = parsePercent(positionInfo.bottom, containerHeight);\n  var width = parsePercent(positionInfo.width, containerWidth);\n  var height = parsePercent(positionInfo.height, containerHeight);\n  var verticalMargin = margin[2] + margin[0];\n  var horizontalMargin = margin[1] + margin[3];\n  var aspect = positionInfo.aspect; // If width is not specified, calculate width from left and right\n\n  if (isNaN(width)) {\n    width = containerWidth - right - horizontalMargin - left;\n  }\n\n  if (isNaN(height)) {\n    height = containerHeight - bottom - verticalMargin - top;\n  }\n\n  if (aspect != null) {\n    // If width and height are not given\n    // 1. Graph should not exceeds the container\n    // 2. Aspect must be keeped\n    // 3. Graph should take the space as more as possible\n    // FIXME\n    // Margin is not considered, because there is no case that both\n    // using margin and aspect so far.\n    if (isNaN(width) && isNaN(height)) {\n      if (aspect > containerWidth / containerHeight) {\n        width = containerWidth * 0.8;\n      } else {\n        height = containerHeight * 0.8;\n      }\n    } // Calculate width or height with given aspect\n\n\n    if (isNaN(width)) {\n      width = aspect * height;\n    }\n\n    if (isNaN(height)) {\n      height = width / aspect;\n    }\n  } // If left is not specified, calculate left from right and width\n\n\n  if (isNaN(left)) {\n    left = containerWidth - right - width - horizontalMargin;\n  }\n\n  if (isNaN(top)) {\n    top = containerHeight - bottom - height - verticalMargin;\n  } // Align left and top\n\n\n  switch (positionInfo.left || positionInfo.right) {\n    case 'center':\n      left = containerWidth / 2 - width / 2 - margin[3];\n      break;\n\n    case 'right':\n      left = containerWidth - width - horizontalMargin;\n      break;\n  }\n\n  switch (positionInfo.top || positionInfo.bottom) {\n    case 'middle':\n    case 'center':\n      top = containerHeight / 2 - height / 2 - margin[0];\n      break;\n\n    case 'bottom':\n      top = containerHeight - height - verticalMargin;\n      break;\n  } // If something is wrong and left, top, width, height are calculated as NaN\n\n\n  left = left || 0;\n  top = top || 0;\n\n  if (isNaN(width)) {\n    // Width may be NaN if only one value is given except width\n    width = containerWidth - horizontalMargin - left - (right || 0);\n  }\n\n  if (isNaN(height)) {\n    // Height may be NaN if only one value is given except height\n    height = containerHeight - verticalMargin - top - (bottom || 0);\n  }\n\n  var rect = new BoundingRect(left + margin[3], top + margin[0], width, height);\n  rect.margin = margin;\n  return rect;\n}\n/**\n * Position a zr element in viewport\n *  Group position is specified by either\n *  {left, top}, {right, bottom}\n *  If all properties exists, right and bottom will be igonred.\n *\n * Logic:\n *     1. Scale (against origin point in parent coord)\n *     2. Rotate (against origin point in parent coord)\n *     3. Traslate (with el.position by this method)\n * So this method only fixes the last step 'Traslate', which does not affect\n * scaling and rotating.\n *\n * If be called repeatly with the same input el, the same result will be gotten.\n *\n * @param {module:zrender/Element} el Should have `getBoundingRect` method.\n * @param {Object} positionInfo\n * @param {number|string} [positionInfo.left]\n * @param {number|string} [positionInfo.top]\n * @param {number|string} [positionInfo.right]\n * @param {number|string} [positionInfo.bottom]\n * @param {number|string} [positionInfo.width] Only for opt.boundingModel: 'raw'\n * @param {number|string} [positionInfo.height] Only for opt.boundingModel: 'raw'\n * @param {Object} containerRect\n * @param {string|number} margin\n * @param {Object} [opt]\n * @param {Array.<number>} [opt.hv=[1,1]] Only horizontal or only vertical.\n * @param {Array.<number>} [opt.boundingMode='all']\n *        Specify how to calculate boundingRect when locating.\n *        'all': Position the boundingRect that is transformed and uioned\n *               both itself and its descendants.\n *               This mode simplies confine the elements in the bounding\n *               of their container (e.g., using 'right: 0').\n *        'raw': Position the boundingRect that is not transformed and only itself.\n *               This mode is useful when you want a element can overflow its\n *               container. (Consider a rotated circle needs to be located in a corner.)\n *               In this mode positionInfo.width/height can only be number.\n */\n\n\nfunction positionElement(el, positionInfo, containerRect, margin, opt) {\n  var h = !opt || !opt.hv || opt.hv[0];\n  var v = !opt || !opt.hv || opt.hv[1];\n  var boundingMode = opt && opt.boundingMode || 'all';\n\n  if (!h && !v) {\n    return;\n  }\n\n  var rect;\n\n  if (boundingMode === 'raw') {\n    rect = el.type === 'group' ? new BoundingRect(0, 0, +positionInfo.width || 0, +positionInfo.height || 0) : el.getBoundingRect();\n  } else {\n    rect = el.getBoundingRect();\n\n    if (el.needLocalTransform()) {\n      var transform = el.getLocalTransform(); // Notice: raw rect may be inner object of el,\n      // which should not be modified.\n\n      rect = rect.clone();\n      rect.applyTransform(transform);\n    }\n  } // The real width and height can not be specified but calculated by the given el.\n\n\n  positionInfo = getLayoutRect(zrUtil.defaults({\n    width: rect.width,\n    height: rect.height\n  }, positionInfo), containerRect, margin); // Because 'tranlate' is the last step in transform\n  // (see zrender/core/Transformable#getLocalTransform),\n  // we can just only modify el.position to get final result.\n\n  var elPos = el.position;\n  var dx = h ? positionInfo.x - rect.x : 0;\n  var dy = v ? positionInfo.y - rect.y : 0;\n  el.attr('position', boundingMode === 'raw' ? [dx, dy] : [elPos[0] + dx, elPos[1] + dy]);\n}\n/**\n * @param {Object} option Contains some of the properties in HV_NAMES.\n * @param {number} hvIdx 0: horizontal; 1: vertical.\n */\n\n\nfunction sizeCalculable(option, hvIdx) {\n  return option[HV_NAMES[hvIdx][0]] != null || option[HV_NAMES[hvIdx][1]] != null && option[HV_NAMES[hvIdx][2]] != null;\n}\n/**\n * Consider Case:\n * When defulat option has {left: 0, width: 100}, and we set {right: 0}\n * through setOption or media query, using normal zrUtil.merge will cause\n * {right: 0} does not take effect.\n *\n * @example\n * ComponentModel.extend({\n *     init: function () {\n *         ...\n *         var inputPositionParams = layout.getLayoutParams(option);\n *         this.mergeOption(inputPositionParams);\n *     },\n *     mergeOption: function (newOption) {\n *         newOption && zrUtil.merge(thisOption, newOption, true);\n *         layout.mergeLayoutParam(thisOption, newOption);\n *     }\n * });\n *\n * @param {Object} targetOption\n * @param {Object} newOption\n * @param {Object|string} [opt]\n * @param {boolean|Array.<boolean>} [opt.ignoreSize=false] Used for the components\n *  that width (or height) should not be calculated by left and right (or top and bottom).\n */\n\n\nfunction mergeLayoutParam(targetOption, newOption, opt) {\n  !zrUtil.isObject(opt) && (opt = {});\n  var ignoreSize = opt.ignoreSize;\n  !zrUtil.isArray(ignoreSize) && (ignoreSize = [ignoreSize, ignoreSize]);\n  var hResult = merge(HV_NAMES[0], 0);\n  var vResult = merge(HV_NAMES[1], 1);\n  copy(HV_NAMES[0], targetOption, hResult);\n  copy(HV_NAMES[1], targetOption, vResult);\n\n  function merge(names, hvIdx) {\n    var newParams = {};\n    var newValueCount = 0;\n    var merged = {};\n    var mergedValueCount = 0;\n    var enoughParamNumber = 2;\n    each(names, function (name) {\n      merged[name] = targetOption[name];\n    });\n    each(names, function (name) {\n      // Consider case: newOption.width is null, which is\n      // set by user for removing width setting.\n      hasProp(newOption, name) && (newParams[name] = merged[name] = newOption[name]);\n      hasValue(newParams, name) && newValueCount++;\n      hasValue(merged, name) && mergedValueCount++;\n    });\n\n    if (ignoreSize[hvIdx]) {\n      // Only one of left/right is premitted to exist.\n      if (hasValue(newOption, names[1])) {\n        merged[names[2]] = null;\n      } else if (hasValue(newOption, names[2])) {\n        merged[names[1]] = null;\n      }\n\n      return merged;\n    } // Case: newOption: {width: ..., right: ...},\n    // or targetOption: {right: ...} and newOption: {width: ...},\n    // There is no conflict when merged only has params count\n    // little than enoughParamNumber.\n\n\n    if (mergedValueCount === enoughParamNumber || !newValueCount) {\n      return merged;\n    } // Case: newOption: {width: ..., right: ...},\n    // Than we can make sure user only want those two, and ignore\n    // all origin params in targetOption.\n    else if (newValueCount >= enoughParamNumber) {\n        return newParams;\n      } else {\n        // Chose another param from targetOption by priority.\n        for (var i = 0; i < names.length; i++) {\n          var name = names[i];\n\n          if (!hasProp(newParams, name) && hasProp(targetOption, name)) {\n            newParams[name] = targetOption[name];\n            break;\n          }\n        }\n\n        return newParams;\n      }\n  }\n\n  function hasProp(obj, name) {\n    return obj.hasOwnProperty(name);\n  }\n\n  function hasValue(obj, name) {\n    return obj[name] != null && obj[name] !== 'auto';\n  }\n\n  function copy(names, target, source) {\n    each(names, function (name) {\n      target[name] = source[name];\n    });\n  }\n}\n/**\n * Retrieve 'left', 'right', 'top', 'bottom', 'width', 'height' from object.\n * @param {Object} source\n * @return {Object} Result contains those props.\n */\n\n\nfunction getLayoutParams(source) {\n  return copyLayoutParams({}, source);\n}\n/**\n * Retrieve 'left', 'right', 'top', 'bottom', 'width', 'height' from object.\n * @param {Object} source\n * @return {Object} Result contains those props.\n */\n\n\nfunction copyLayoutParams(target, source) {\n  source && target && each(LOCATION_PARAMS, function (name) {\n    source.hasOwnProperty(name) && (target[name] = source[name]);\n  });\n  return target;\n}\n\nexports.LOCATION_PARAMS = LOCATION_PARAMS;\nexports.HV_NAMES = HV_NAMES;\nexports.box = box;\nexports.vbox = vbox;\nexports.hbox = hbox;\nexports.getAvailableSize = getAvailableSize;\nexports.getLayoutRect = getLayoutRect;\nexports.positionElement = positionElement;\nexports.sizeCalculable = sizeCalculable;\nexports.mergeLayoutParam = mergeLayoutParam;\nexports.getLayoutParams = getLayoutParams;\nexports.copyLayoutParams = copyLayoutParams;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar each = zrUtil.each;\nvar isObject = zrUtil.isObject;\nvar isArray = zrUtil.isArray;\n/**\n * name may be displayed on screen, so use '-'.\n * But we should make sure it is not duplicated\n * with user specified name, so use '\\0';\n */\n\nvar DEFAULT_COMPONENT_NAME = '\\0-';\n/**\n * If value is not array, then translate it to array.\n * @param  {*} value\n * @return {Array} [value] or value\n */\n\nfunction normalizeToArray(value) {\n  return value instanceof Array ? value : value == null ? [] : [value];\n}\n/**\n * Sync default option between normal and emphasis like `position` and `show`\n * In case some one will write code like\n *     label: {\n *          show: false,\n *          position: 'outside',\n *          fontSize: 18\n *     },\n *     emphasis: {\n *          label: { show: true }\n *     }\n * @param {Object} opt\n * @param {string} key\n * @param {Array.<string>} subOpts\n */\n\n\nfunction defaultEmphasis(opt, key, subOpts) {\n  if (opt) {\n    opt[key] = opt[key] || {};\n    opt.emphasis = opt.emphasis || {};\n    opt.emphasis[key] = opt.emphasis[key] || {}; // Default emphasis option from normal\n\n    for (var i = 0, len = subOpts.length; i < len; i++) {\n      var subOptName = subOpts[i];\n\n      if (!opt.emphasis[key].hasOwnProperty(subOptName) && opt[key].hasOwnProperty(subOptName)) {\n        opt.emphasis[key][subOptName] = opt[key][subOptName];\n      }\n    }\n  }\n}\n\nvar TEXT_STYLE_OPTIONS = ['fontStyle', 'fontWeight', 'fontSize', 'fontFamily', 'rich', 'tag', 'color', 'textBorderColor', 'textBorderWidth', 'width', 'height', 'lineHeight', 'align', 'verticalAlign', 'baseline', 'shadowColor', 'shadowBlur', 'shadowOffsetX', 'shadowOffsetY', 'textShadowColor', 'textShadowBlur', 'textShadowOffsetX', 'textShadowOffsetY', 'backgroundColor', 'borderColor', 'borderWidth', 'borderRadius', 'padding']; // modelUtil.LABEL_OPTIONS = modelUtil.TEXT_STYLE_OPTIONS.concat([\n//     'position', 'offset', 'rotate', 'origin', 'show', 'distance', 'formatter',\n//     'fontStyle', 'fontWeight', 'fontSize', 'fontFamily',\n//     // FIXME: deprecated, check and remove it.\n//     'textStyle'\n// ]);\n\n/**\n * The method do not ensure performance.\n * data could be [12, 2323, {value: 223}, [1221, 23], {value: [2, 23]}]\n * This helper method retieves value from data.\n * @param {string|number|Date|Array|Object} dataItem\n * @return {number|string|Date|Array.<number|string|Date>}\n */\n\nfunction getDataItemValue(dataItem) {\n  return isObject(dataItem) && !isArray(dataItem) && !(dataItem instanceof Date) ? dataItem.value : dataItem;\n}\n/**\n * data could be [12, 2323, {value: 223}, [1221, 23], {value: [2, 23]}]\n * This helper method determine if dataItem has extra option besides value\n * @param {string|number|Date|Array|Object} dataItem\n */\n\n\nfunction isDataItemOption(dataItem) {\n  return isObject(dataItem) && !(dataItem instanceof Array); // // markLine data can be array\n  // && !(dataItem[0] && isObject(dataItem[0]) && !(dataItem[0] instanceof Array));\n}\n/**\n * Mapping to exists for merge.\n *\n * @public\n * @param {Array.<Object>|Array.<module:echarts/model/Component>} exists\n * @param {Object|Array.<Object>} newCptOptions\n * @return {Array.<Object>} Result, like [{exist: ..., option: ...}, {}],\n *                          index of which is the same as exists.\n */\n\n\nfunction mappingToExists(exists, newCptOptions) {\n  // Mapping by the order by original option (but not order of\n  // new option) in merge mode. Because we should ensure\n  // some specified index (like xAxisIndex) is consistent with\n  // original option, which is easy to understand, espatially in\n  // media query. And in most case, merge option is used to\n  // update partial option but not be expected to change order.\n  newCptOptions = (newCptOptions || []).slice();\n  var result = zrUtil.map(exists || [], function (obj, index) {\n    return {\n      exist: obj\n    };\n  }); // Mapping by id or name if specified.\n\n  each(newCptOptions, function (cptOption, index) {\n    if (!isObject(cptOption)) {\n      return;\n    } // id has highest priority.\n\n\n    for (var i = 0; i < result.length; i++) {\n      if (!result[i].option // Consider name: two map to one.\n      && cptOption.id != null && result[i].exist.id === cptOption.id + '') {\n        result[i].option = cptOption;\n        newCptOptions[index] = null;\n        return;\n      }\n    }\n\n    for (var i = 0; i < result.length; i++) {\n      var exist = result[i].exist;\n\n      if (!result[i].option // Consider name: two map to one.\n      // Can not match when both ids exist but different.\n      && (exist.id == null || cptOption.id == null) && cptOption.name != null && !isIdInner(cptOption) && !isIdInner(exist) && exist.name === cptOption.name + '') {\n        result[i].option = cptOption;\n        newCptOptions[index] = null;\n        return;\n      }\n    }\n  }); // Otherwise mapping by index.\n\n  each(newCptOptions, function (cptOption, index) {\n    if (!isObject(cptOption)) {\n      return;\n    }\n\n    var i = 0;\n\n    for (; i < result.length; i++) {\n      var exist = result[i].exist;\n\n      if (!result[i].option // Existing model that already has id should be able to\n      // mapped to (because after mapping performed model may\n      // be assigned with a id, whish should not affect next\n      // mapping), except those has inner id.\n      && !isIdInner(exist) // Caution:\n      // Do not overwrite id. But name can be overwritten,\n      // because axis use name as 'show label text'.\n      // 'exist' always has id and name and we dont\n      // need to check it.\n      && cptOption.id == null) {\n        result[i].option = cptOption;\n        break;\n      }\n    }\n\n    if (i >= result.length) {\n      result.push({\n        option: cptOption\n      });\n    }\n  });\n  return result;\n}\n/**\n * Make id and name for mapping result (result of mappingToExists)\n * into `keyInfo` field.\n *\n * @public\n * @param {Array.<Object>} Result, like [{exist: ..., option: ...}, {}],\n *                          which order is the same as exists.\n * @return {Array.<Object>} The input.\n */\n\n\nfunction makeIdAndName(mapResult) {\n  // We use this id to hash component models and view instances\n  // in echarts. id can be specified by user, or auto generated.\n  // The id generation rule ensures new view instance are able\n  // to mapped to old instance when setOption are called in\n  // no-merge mode. So we generate model id by name and plus\n  // type in view id.\n  // name can be duplicated among components, which is convenient\n  // to specify multi components (like series) by one name.\n  // Ensure that each id is distinct.\n  var idMap = zrUtil.createHashMap();\n  each(mapResult, function (item, index) {\n    var existCpt = item.exist;\n    existCpt && idMap.set(existCpt.id, item);\n  });\n  each(mapResult, function (item, index) {\n    var opt = item.option;\n    zrUtil.assert(!opt || opt.id == null || !idMap.get(opt.id) || idMap.get(opt.id) === item, 'id duplicates: ' + (opt && opt.id));\n    opt && opt.id != null && idMap.set(opt.id, item);\n    !item.keyInfo && (item.keyInfo = {});\n  }); // Make name and id.\n\n  each(mapResult, function (item, index) {\n    var existCpt = item.exist;\n    var opt = item.option;\n    var keyInfo = item.keyInfo;\n\n    if (!isObject(opt)) {\n      return;\n    } // name can be overwitten. Consider case: axis.name = '20km'.\n    // But id generated by name will not be changed, which affect\n    // only in that case: setOption with 'not merge mode' and view\n    // instance will be recreated, which can be accepted.\n\n\n    keyInfo.name = opt.name != null ? opt.name + '' : existCpt ? existCpt.name : DEFAULT_COMPONENT_NAME;\n\n    if (existCpt) {\n      keyInfo.id = existCpt.id;\n    } else if (opt.id != null) {\n      keyInfo.id = opt.id + '';\n    } else {\n      // Consider this situatoin:\n      //  optionA: [{name: 'a'}, {name: 'a'}, {..}]\n      //  optionB [{..}, {name: 'a'}, {name: 'a'}]\n      // Series with the same name between optionA and optionB\n      // should be mapped.\n      var idNum = 0;\n\n      do {\n        keyInfo.id = '\\0' + keyInfo.name + '\\0' + idNum++;\n      } while (idMap.get(keyInfo.id));\n    }\n\n    idMap.set(keyInfo.id, item);\n  });\n}\n/**\n * @public\n * @param {Object} cptOption\n * @return {boolean}\n */\n\n\nfunction isIdInner(cptOption) {\n  return isObject(cptOption) && cptOption.id && (cptOption.id + '').indexOf('\\0_ec_\\0') === 0;\n}\n/**\n * A helper for removing duplicate items between batchA and batchB,\n * and in themselves, and categorize by series.\n *\n * @param {Array.<Object>} batchA Like: [{seriesId: 2, dataIndex: [32, 4, 5]}, ...]\n * @param {Array.<Object>} batchB Like: [{seriesId: 2, dataIndex: [32, 4, 5]}, ...]\n * @return {Array.<Array.<Object>, Array.<Object>>} result: [resultBatchA, resultBatchB]\n */\n\n\nfunction compressBatches(batchA, batchB) {\n  var mapA = {};\n  var mapB = {};\n  makeMap(batchA || [], mapA);\n  makeMap(batchB || [], mapB, mapA);\n  return [mapToArray(mapA), mapToArray(mapB)];\n\n  function makeMap(sourceBatch, map, otherMap) {\n    for (var i = 0, len = sourceBatch.length; i < len; i++) {\n      var seriesId = sourceBatch[i].seriesId;\n      var dataIndices = normalizeToArray(sourceBatch[i].dataIndex);\n      var otherDataIndices = otherMap && otherMap[seriesId];\n\n      for (var j = 0, lenj = dataIndices.length; j < lenj; j++) {\n        var dataIndex = dataIndices[j];\n\n        if (otherDataIndices && otherDataIndices[dataIndex]) {\n          otherDataIndices[dataIndex] = null;\n        } else {\n          (map[seriesId] || (map[seriesId] = {}))[dataIndex] = 1;\n        }\n      }\n    }\n  }\n\n  function mapToArray(map, isData) {\n    var result = [];\n\n    for (var i in map) {\n      if (map.hasOwnProperty(i) && map[i] != null) {\n        if (isData) {\n          result.push(+i);\n        } else {\n          var dataIndices = mapToArray(map[i], true);\n          dataIndices.length && result.push({\n            seriesId: i,\n            dataIndex: dataIndices\n          });\n        }\n      }\n    }\n\n    return result;\n  }\n}\n/**\n * @param {module:echarts/data/List} data\n * @param {Object} payload Contains dataIndex (means rawIndex) / dataIndexInside / name\n *                         each of which can be Array or primary type.\n * @return {number|Array.<number>} dataIndex If not found, return undefined/null.\n */\n\n\nfunction queryDataIndex(data, payload) {\n  if (payload.dataIndexInside != null) {\n    return payload.dataIndexInside;\n  } else if (payload.dataIndex != null) {\n    return zrUtil.isArray(payload.dataIndex) ? zrUtil.map(payload.dataIndex, function (value) {\n      return data.indexOfRawIndex(value);\n    }) : data.indexOfRawIndex(payload.dataIndex);\n  } else if (payload.name != null) {\n    return zrUtil.isArray(payload.name) ? zrUtil.map(payload.name, function (value) {\n      return data.indexOfName(value);\n    }) : data.indexOfName(payload.name);\n  }\n}\n/**\n * Enable property storage to any host object.\n * Notice: Serialization is not supported.\n *\n * For example:\n * var inner = zrUitl.makeInner();\n *\n * function some1(hostObj) {\n *      inner(hostObj).someProperty = 1212;\n *      ...\n * }\n * function some2() {\n *      var fields = inner(this);\n *      fields.someProperty1 = 1212;\n *      fields.someProperty2 = 'xx';\n *      ...\n * }\n *\n * @return {Function}\n */\n\n\nfunction makeInner() {\n  // Consider different scope by es module import.\n  var key = '__\\0ec_inner_' + innerUniqueIndex++ + '_' + Math.random().toFixed(5);\n  return function (hostObj) {\n    return hostObj[key] || (hostObj[key] = {});\n  };\n}\n\nvar innerUniqueIndex = 0;\n/**\n * @param {module:echarts/model/Global} ecModel\n * @param {string|Object} finder\n *        If string, e.g., 'geo', means {geoIndex: 0}.\n *        If Object, could contain some of these properties below:\n *        {\n *            seriesIndex, seriesId, seriesName,\n *            geoIndex, geoId, geoName,\n *            bmapIndex, bmapId, bmapName,\n *            xAxisIndex, xAxisId, xAxisName,\n *            yAxisIndex, yAxisId, yAxisName,\n *            gridIndex, gridId, gridName,\n *            ... (can be extended)\n *        }\n *        Each properties can be number|string|Array.<number>|Array.<string>\n *        For example, a finder could be\n *        {\n *            seriesIndex: 3,\n *            geoId: ['aa', 'cc'],\n *            gridName: ['xx', 'rr']\n *        }\n *        xxxIndex can be set as 'all' (means all xxx) or 'none' (means not specify)\n *        If nothing or null/undefined specified, return nothing.\n * @param {Object} [opt]\n * @param {string} [opt.defaultMainType]\n * @param {Array.<string>} [opt.includeMainTypes]\n * @return {Object} result like:\n *        {\n *            seriesModels: [seriesModel1, seriesModel2],\n *            seriesModel: seriesModel1, // The first model\n *            geoModels: [geoModel1, geoModel2],\n *            geoModel: geoModel1, // The first model\n *            ...\n *        }\n */\n\nfunction parseFinder(ecModel, finder, opt) {\n  if (zrUtil.isString(finder)) {\n    var obj = {};\n    obj[finder + 'Index'] = 0;\n    finder = obj;\n  }\n\n  var defaultMainType = opt && opt.defaultMainType;\n\n  if (defaultMainType && !has(finder, defaultMainType + 'Index') && !has(finder, defaultMainType + 'Id') && !has(finder, defaultMainType + 'Name')) {\n    finder[defaultMainType + 'Index'] = 0;\n  }\n\n  var result = {};\n  each(finder, function (value, key) {\n    var value = finder[key]; // Exclude 'dataIndex' and other illgal keys.\n\n    if (key === 'dataIndex' || key === 'dataIndexInside') {\n      result[key] = value;\n      return;\n    }\n\n    var parsedKey = key.match(/^(\\w+)(Index|Id|Name)$/) || [];\n    var mainType = parsedKey[1];\n    var queryType = (parsedKey[2] || '').toLowerCase();\n\n    if (!mainType || !queryType || value == null || queryType === 'index' && value === 'none' || opt && opt.includeMainTypes && zrUtil.indexOf(opt.includeMainTypes, mainType) < 0) {\n      return;\n    }\n\n    var queryParam = {\n      mainType: mainType\n    };\n\n    if (queryType !== 'index' || value !== 'all') {\n      queryParam[queryType] = value;\n    }\n\n    var models = ecModel.queryComponents(queryParam);\n    result[mainType + 'Models'] = models;\n    result[mainType + 'Model'] = models[0];\n  });\n  return result;\n}\n\nfunction has(obj, prop) {\n  return obj && obj.hasOwnProperty(prop);\n}\n\nfunction setAttribute(dom, key, value) {\n  dom.setAttribute ? dom.setAttribute(key, value) : dom[key] = value;\n}\n\nfunction getAttribute(dom, key) {\n  return dom.getAttribute ? dom.getAttribute(key) : dom[key];\n}\n\nexports.DEFAULT_COMPONENT_NAME = DEFAULT_COMPONENT_NAME;\nexports.normalizeToArray = normalizeToArray;\nexports.defaultEmphasis = defaultEmphasis;\nexports.TEXT_STYLE_OPTIONS = TEXT_STYLE_OPTIONS;\nexports.getDataItemValue = getDataItemValue;\nexports.isDataItemOption = isDataItemOption;\nexports.mappingToExists = mappingToExists;\nexports.makeIdAndName = makeIdAndName;\nexports.isIdInner = isIdInner;\nexports.compressBatches = compressBatches;\nexports.queryDataIndex = queryDataIndex;\nexports.makeInner = makeInner;\nexports.parseFinder = parseFinder;\nexports.setAttribute = setAttribute;\nexports.getAttribute = getAttribute;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar RADIAN_EPSILON = 1e-4;\n\nfunction _trim(str) {\n  return str.replace(/^\\s+/, '').replace(/\\s+$/, '');\n}\n/**\n * Linear mapping a value from domain to range\n * @memberOf module:echarts/util/number\n * @param  {(number|Array.<number>)} val\n * @param  {Array.<number>} domain Domain extent domain[0] can be bigger than domain[1]\n * @param  {Array.<number>} range  Range extent range[0] can be bigger than range[1]\n * @param  {boolean} clamp\n * @return {(number|Array.<number>}\n */\n\n\nfunction linearMap(val, domain, range, clamp) {\n  var subDomain = domain[1] - domain[0];\n  var subRange = range[1] - range[0];\n\n  if (subDomain === 0) {\n    return subRange === 0 ? range[0] : (range[0] + range[1]) / 2;\n  } // Avoid accuracy problem in edge, such as\n  // 146.39 - 62.83 === 83.55999999999999.\n  // See echarts/test/ut/spec/util/number.js#linearMap#accuracyError\n  // It is a little verbose for efficiency considering this method\n  // is a hotspot.\n\n\n  if (clamp) {\n    if (subDomain > 0) {\n      if (val <= domain[0]) {\n        return range[0];\n      } else if (val >= domain[1]) {\n        return range[1];\n      }\n    } else {\n      if (val >= domain[0]) {\n        return range[0];\n      } else if (val <= domain[1]) {\n        return range[1];\n      }\n    }\n  } else {\n    if (val === domain[0]) {\n      return range[0];\n    }\n\n    if (val === domain[1]) {\n      return range[1];\n    }\n  }\n\n  return (val - domain[0]) / subDomain * subRange + range[0];\n}\n/**\n * Convert a percent string to absolute number.\n * Returns NaN if percent is not a valid string or number\n * @memberOf module:echarts/util/number\n * @param {string|number} percent\n * @param {number} all\n * @return {number}\n */\n\n\nfunction parsePercent(percent, all) {\n  switch (percent) {\n    case 'center':\n    case 'middle':\n      percent = '50%';\n      break;\n\n    case 'left':\n    case 'top':\n      percent = '0%';\n      break;\n\n    case 'right':\n    case 'bottom':\n      percent = '100%';\n      break;\n  }\n\n  if (typeof percent === 'string') {\n    if (_trim(percent).match(/%$/)) {\n      return parseFloat(percent) / 100 * all;\n    }\n\n    return parseFloat(percent);\n  }\n\n  return percent == null ? NaN : +percent;\n}\n/**\n * (1) Fix rounding error of float numbers.\n * (2) Support return string to avoid scientific notation like '3.5e-7'.\n *\n * @param {number} x\n * @param {number} [precision]\n * @param {boolean} [returnStr]\n * @return {number|string}\n */\n\n\nfunction round(x, precision, returnStr) {\n  if (precision == null) {\n    precision = 10;\n  } // Avoid range error\n\n\n  precision = Math.min(Math.max(0, precision), 20);\n  x = (+x).toFixed(precision);\n  return returnStr ? x : +x;\n}\n\nfunction asc(arr) {\n  arr.sort(function (a, b) {\n    return a - b;\n  });\n  return arr;\n}\n/**\n * Get precision\n * @param {number} val\n */\n\n\nfunction getPrecision(val) {\n  val = +val;\n\n  if (isNaN(val)) {\n    return 0;\n  } // It is much faster than methods converting number to string as follows\n  //      var tmp = val.toString();\n  //      return tmp.length - 1 - tmp.indexOf('.');\n  // especially when precision is low\n\n\n  var e = 1;\n  var count = 0;\n\n  while (Math.round(val * e) / e !== val) {\n    e *= 10;\n    count++;\n  }\n\n  return count;\n}\n/**\n * @param {string|number} val\n * @return {number}\n */\n\n\nfunction getPrecisionSafe(val) {\n  var str = val.toString(); // Consider scientific notation: '3.4e-12' '3.4e+12'\n\n  var eIndex = str.indexOf('e');\n\n  if (eIndex > 0) {\n    var precision = +str.slice(eIndex + 1);\n    return precision < 0 ? -precision : 0;\n  } else {\n    var dotIndex = str.indexOf('.');\n    return dotIndex < 0 ? 0 : str.length - 1 - dotIndex;\n  }\n}\n/**\n * Minimal dicernible data precisioin according to a single pixel.\n *\n * @param {Array.<number>} dataExtent\n * @param {Array.<number>} pixelExtent\n * @return {number} precision\n */\n\n\nfunction getPixelPrecision(dataExtent, pixelExtent) {\n  var log = Math.log;\n  var LN10 = Math.LN10;\n  var dataQuantity = Math.floor(log(dataExtent[1] - dataExtent[0]) / LN10);\n  var sizeQuantity = Math.round(log(Math.abs(pixelExtent[1] - pixelExtent[0])) / LN10); // toFixed() digits argument must be between 0 and 20.\n\n  var precision = Math.min(Math.max(-dataQuantity + sizeQuantity, 0), 20);\n  return !isFinite(precision) ? 20 : precision;\n}\n/**\n * Get a data of given precision, assuring the sum of percentages\n * in valueList is 1.\n * The largest remainer method is used.\n * https://en.wikipedia.org/wiki/Largest_remainder_method\n *\n * @param {Array.<number>} valueList a list of all data\n * @param {number} idx index of the data to be processed in valueList\n * @param {number} precision integer number showing digits of precision\n * @return {number} percent ranging from 0 to 100\n */\n\n\nfunction getPercentWithPrecision(valueList, idx, precision) {\n  if (!valueList[idx]) {\n    return 0;\n  }\n\n  var sum = zrUtil.reduce(valueList, function (acc, val) {\n    return acc + (isNaN(val) ? 0 : val);\n  }, 0);\n\n  if (sum === 0) {\n    return 0;\n  }\n\n  var digits = Math.pow(10, precision);\n  var votesPerQuota = zrUtil.map(valueList, function (val) {\n    return (isNaN(val) ? 0 : val) / sum * digits * 100;\n  });\n  var targetSeats = digits * 100;\n  var seats = zrUtil.map(votesPerQuota, function (votes) {\n    // Assign automatic seats.\n    return Math.floor(votes);\n  });\n  var currentSum = zrUtil.reduce(seats, function (acc, val) {\n    return acc + val;\n  }, 0);\n  var remainder = zrUtil.map(votesPerQuota, function (votes, idx) {\n    return votes - seats[idx];\n  }); // Has remainding votes.\n\n  while (currentSum < targetSeats) {\n    // Find next largest remainder.\n    var max = Number.NEGATIVE_INFINITY;\n    var maxId = null;\n\n    for (var i = 0, len = remainder.length; i < len; ++i) {\n      if (remainder[i] > max) {\n        max = remainder[i];\n        maxId = i;\n      }\n    } // Add a vote to max remainder.\n\n\n    ++seats[maxId];\n    remainder[maxId] = 0;\n    ++currentSum;\n  }\n\n  return seats[idx] / digits;\n} // Number.MAX_SAFE_INTEGER, ie do not support.\n\n\nvar MAX_SAFE_INTEGER = 9007199254740991;\n/**\n * To 0 - 2 * PI, considering negative radian.\n * @param {number} radian\n * @return {number}\n */\n\nfunction remRadian(radian) {\n  var pi2 = Math.PI * 2;\n  return (radian % pi2 + pi2) % pi2;\n}\n/**\n * @param {type} radian\n * @return {boolean}\n */\n\n\nfunction isRadianAroundZero(val) {\n  return val > -RADIAN_EPSILON && val < RADIAN_EPSILON;\n}\n\nvar TIME_REG = /^(?:(\\d{4})(?:[-\\/](\\d{1,2})(?:[-\\/](\\d{1,2})(?:[T ](\\d{1,2})(?::(\\d\\d)(?::(\\d\\d)(?:[.,](\\d+))?)?)?(Z|[\\+\\-]\\d\\d:?\\d\\d)?)?)?)?)?$/; // jshint ignore:line\n\n/**\n * @param {string|Date|number} value These values can be accepted:\n *   + An instance of Date, represent a time in its own time zone.\n *   + Or string in a subset of ISO 8601, only including:\n *     + only year, month, date: '2012-03', '2012-03-01', '2012-03-01 05', '2012-03-01 05:06',\n *     + separated with T or space: '2012-03-01T12:22:33.123', '2012-03-01 12:22:33.123',\n *     + time zone: '2012-03-01T12:22:33Z', '2012-03-01T12:22:33+8000', '2012-03-01T12:22:33-05:00',\n *     all of which will be treated as local time if time zone is not specified\n *     (see <https://momentjs.com/>).\n *   + Or other string format, including (all of which will be treated as loacal time):\n *     '2012', '2012-3-1', '2012/3/1', '2012/03/01',\n *     '2009/6/12 2:00', '2009/6/12 2:05:08', '2009/6/12 2:05:08.123'\n *   + a timestamp, which represent a time in UTC.\n * @return {Date} date\n */\n\nfunction parseDate(value) {\n  if (value instanceof Date) {\n    return value;\n  } else if (typeof value === 'string') {\n    // Different browsers parse date in different way, so we parse it manually.\n    // Some other issues:\n    // new Date('1970-01-01') is UTC,\n    // new Date('1970/01/01') and new Date('1970-1-01') is local.\n    // See issue #3623\n    var match = TIME_REG.exec(value);\n\n    if (!match) {\n      // return Invalid Date.\n      return new Date(NaN);\n    } // Use local time when no timezone offset specifed.\n\n\n    if (!match[8]) {\n      // match[n] can only be string or undefined.\n      // But take care of '12' + 1 => '121'.\n      return new Date(+match[1], +(match[2] || 1) - 1, +match[3] || 1, +match[4] || 0, +(match[5] || 0), +match[6] || 0, +match[7] || 0);\n    } // Timezoneoffset of Javascript Date has considered DST (Daylight Saving Time,\n    // https://tc39.github.io/ecma262/#sec-daylight-saving-time-adjustment).\n    // For example, system timezone is set as \"Time Zone: America/Toronto\",\n    // then these code will get different result:\n    // `new Date(1478411999999).getTimezoneOffset();  // get 240`\n    // `new Date(1478412000000).getTimezoneOffset();  // get 300`\n    // So we should not use `new Date`, but use `Date.UTC`.\n    else {\n        var hour = +match[4] || 0;\n\n        if (match[8].toUpperCase() !== 'Z') {\n          hour -= match[8].slice(0, 3);\n        }\n\n        return new Date(Date.UTC(+match[1], +(match[2] || 1) - 1, +match[3] || 1, hour, +(match[5] || 0), +match[6] || 0, +match[7] || 0));\n      }\n  } else if (value == null) {\n    return new Date(NaN);\n  }\n\n  return new Date(Math.round(value));\n}\n/**\n * Quantity of a number. e.g. 0.1, 1, 10, 100\n *\n * @param  {number} val\n * @return {number}\n */\n\n\nfunction quantity(val) {\n  return Math.pow(10, quantityExponent(val));\n}\n\nfunction quantityExponent(val) {\n  return Math.floor(Math.log(val) / Math.LN10);\n}\n/**\n * find a “nice” number approximately equal to x. Round the number if round = true,\n * take ceiling if round = false. The primary observation is that the “nicest”\n * numbers in decimal are 1, 2, and 5, and all power-of-ten multiples of these numbers.\n *\n * See \"Nice Numbers for Graph Labels\" of Graphic Gems.\n *\n * @param  {number} val Non-negative value.\n * @param  {boolean} round\n * @return {number}\n */\n\n\nfunction nice(val, round) {\n  var exponent = quantityExponent(val);\n  var exp10 = Math.pow(10, exponent);\n  var f = val / exp10; // 1 <= f < 10\n\n  var nf;\n\n  if (round) {\n    if (f < 1.5) {\n      nf = 1;\n    } else if (f < 2.5) {\n      nf = 2;\n    } else if (f < 4) {\n      nf = 3;\n    } else if (f < 7) {\n      nf = 5;\n    } else {\n      nf = 10;\n    }\n  } else {\n    if (f < 1) {\n      nf = 1;\n    } else if (f < 2) {\n      nf = 2;\n    } else if (f < 3) {\n      nf = 3;\n    } else if (f < 5) {\n      nf = 5;\n    } else {\n      nf = 10;\n    }\n  }\n\n  val = nf * exp10; // Fix 3 * 0.1 === 0.30000000000000004 issue (see IEEE 754).\n  // 20 is the uppper bound of toFixed.\n\n  return exponent >= -20 ? +val.toFixed(exponent < 0 ? -exponent : 0) : val;\n}\n/**\n * Order intervals asc, and split them when overlap.\n * expect(numberUtil.reformIntervals([\n *     {interval: [18, 62], close: [1, 1]},\n *     {interval: [-Infinity, -70], close: [0, 0]},\n *     {interval: [-70, -26], close: [1, 1]},\n *     {interval: [-26, 18], close: [1, 1]},\n *     {interval: [62, 150], close: [1, 1]},\n *     {interval: [106, 150], close: [1, 1]},\n *     {interval: [150, Infinity], close: [0, 0]}\n * ])).toEqual([\n *     {interval: [-Infinity, -70], close: [0, 0]},\n *     {interval: [-70, -26], close: [1, 1]},\n *     {interval: [-26, 18], close: [0, 1]},\n *     {interval: [18, 62], close: [0, 1]},\n *     {interval: [62, 150], close: [0, 1]},\n *     {interval: [150, Infinity], close: [0, 0]}\n * ]);\n * @param {Array.<Object>} list, where `close` mean open or close\n *        of the interval, and Infinity can be used.\n * @return {Array.<Object>} The origin list, which has been reformed.\n */\n\n\nfunction reformIntervals(list) {\n  list.sort(function (a, b) {\n    return littleThan(a, b, 0) ? -1 : 1;\n  });\n  var curr = -Infinity;\n  var currClose = 1;\n\n  for (var i = 0; i < list.length;) {\n    var interval = list[i].interval;\n    var close = list[i].close;\n\n    for (var lg = 0; lg < 2; lg++) {\n      if (interval[lg] <= curr) {\n        interval[lg] = curr;\n        close[lg] = !lg ? 1 - currClose : 1;\n      }\n\n      curr = interval[lg];\n      currClose = close[lg];\n    }\n\n    if (interval[0] === interval[1] && close[0] * close[1] !== 1) {\n      list.splice(i, 1);\n    } else {\n      i++;\n    }\n  }\n\n  return list;\n\n  function littleThan(a, b, lg) {\n    return a.interval[lg] < b.interval[lg] || a.interval[lg] === b.interval[lg] && (a.close[lg] - b.close[lg] === (!lg ? 1 : -1) || !lg && littleThan(a, b, 1));\n  }\n}\n/**\n * parseFloat NaNs numeric-cast false positives (null|true|false|\"\")\n * ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n * subtraction forces infinities to NaN\n *\n * @param {*} v\n * @return {boolean}\n */\n\n\nfunction isNumeric(v) {\n  return v - parseFloat(v) >= 0;\n}\n\nexports.linearMap = linearMap;\nexports.parsePercent = parsePercent;\nexports.round = round;\nexports.asc = asc;\nexports.getPrecision = getPrecision;\nexports.getPrecisionSafe = getPrecisionSafe;\nexports.getPixelPrecision = getPixelPrecision;\nexports.getPercentWithPrecision = getPercentWithPrecision;\nexports.MAX_SAFE_INTEGER = MAX_SAFE_INTEGER;\nexports.remRadian = remRadian;\nexports.isRadianAroundZero = isRadianAroundZero;\nexports.parseDate = parseDate;\nexports.quantity = quantity;\nexports.nice = nice;\nexports.reformIntervals = reformIntervals;\nexports.isNumeric = isNumeric;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar graphic = require(\"./graphic\");\n\nvar BoundingRect = require(\"zrender/lib/core/BoundingRect\");\n\n// Symbol factory\n\n/**\n * Triangle shape\n * @inner\n */\nvar Triangle = graphic.extendShape({\n  type: 'triangle',\n  shape: {\n    cx: 0,\n    cy: 0,\n    width: 0,\n    height: 0\n  },\n  buildPath: function (path, shape) {\n    var cx = shape.cx;\n    var cy = shape.cy;\n    var width = shape.width / 2;\n    var height = shape.height / 2;\n    path.moveTo(cx, cy - height);\n    path.lineTo(cx + width, cy + height);\n    path.lineTo(cx - width, cy + height);\n    path.closePath();\n  }\n});\n/**\n * Diamond shape\n * @inner\n */\n\nvar Diamond = graphic.extendShape({\n  type: 'diamond',\n  shape: {\n    cx: 0,\n    cy: 0,\n    width: 0,\n    height: 0\n  },\n  buildPath: function (path, shape) {\n    var cx = shape.cx;\n    var cy = shape.cy;\n    var width = shape.width / 2;\n    var height = shape.height / 2;\n    path.moveTo(cx, cy - height);\n    path.lineTo(cx + width, cy);\n    path.lineTo(cx, cy + height);\n    path.lineTo(cx - width, cy);\n    path.closePath();\n  }\n});\n/**\n * Pin shape\n * @inner\n */\n\nvar Pin = graphic.extendShape({\n  type: 'pin',\n  shape: {\n    // x, y on the cusp\n    x: 0,\n    y: 0,\n    width: 0,\n    height: 0\n  },\n  buildPath: function (path, shape) {\n    var x = shape.x;\n    var y = shape.y;\n    var w = shape.width / 5 * 3; // Height must be larger than width\n\n    var h = Math.max(w, shape.height);\n    var r = w / 2; // Dist on y with tangent point and circle center\n\n    var dy = r * r / (h - r);\n    var cy = y - h + r + dy;\n    var angle = Math.asin(dy / r); // Dist on x with tangent point and circle center\n\n    var dx = Math.cos(angle) * r;\n    var tanX = Math.sin(angle);\n    var tanY = Math.cos(angle);\n    var cpLen = r * 0.6;\n    var cpLen2 = r * 0.7;\n    path.moveTo(x - dx, cy + dy);\n    path.arc(x, cy, r, Math.PI - angle, Math.PI * 2 + angle);\n    path.bezierCurveTo(x + dx - tanX * cpLen, cy + dy + tanY * cpLen, x, y - cpLen2, x, y);\n    path.bezierCurveTo(x, y - cpLen2, x - dx + tanX * cpLen, cy + dy + tanY * cpLen, x - dx, cy + dy);\n    path.closePath();\n  }\n});\n/**\n * Arrow shape\n * @inner\n */\n\nvar Arrow = graphic.extendShape({\n  type: 'arrow',\n  shape: {\n    x: 0,\n    y: 0,\n    width: 0,\n    height: 0\n  },\n  buildPath: function (ctx, shape) {\n    var height = shape.height;\n    var width = shape.width;\n    var x = shape.x;\n    var y = shape.y;\n    var dx = width / 3 * 2;\n    ctx.moveTo(x, y);\n    ctx.lineTo(x + dx, y + height);\n    ctx.lineTo(x, y + height / 4 * 3);\n    ctx.lineTo(x - dx, y + height);\n    ctx.lineTo(x, y);\n    ctx.closePath();\n  }\n});\n/**\n * Map of path contructors\n * @type {Object.<string, module:zrender/graphic/Path>}\n */\n\nvar symbolCtors = {\n  line: graphic.Line,\n  rect: graphic.Rect,\n  roundRect: graphic.Rect,\n  square: graphic.Rect,\n  circle: graphic.Circle,\n  diamond: Diamond,\n  pin: Pin,\n  arrow: Arrow,\n  triangle: Triangle\n};\nvar symbolShapeMakers = {\n  line: function (x, y, w, h, shape) {\n    // FIXME\n    shape.x1 = x;\n    shape.y1 = y + h / 2;\n    shape.x2 = x + w;\n    shape.y2 = y + h / 2;\n  },\n  rect: function (x, y, w, h, shape) {\n    shape.x = x;\n    shape.y = y;\n    shape.width = w;\n    shape.height = h;\n  },\n  roundRect: function (x, y, w, h, shape) {\n    shape.x = x;\n    shape.y = y;\n    shape.width = w;\n    shape.height = h;\n    shape.r = Math.min(w, h) / 4;\n  },\n  square: function (x, y, w, h, shape) {\n    var size = Math.min(w, h);\n    shape.x = x;\n    shape.y = y;\n    shape.width = size;\n    shape.height = size;\n  },\n  circle: function (x, y, w, h, shape) {\n    // Put circle in the center of square\n    shape.cx = x + w / 2;\n    shape.cy = y + h / 2;\n    shape.r = Math.min(w, h) / 2;\n  },\n  diamond: function (x, y, w, h, shape) {\n    shape.cx = x + w / 2;\n    shape.cy = y + h / 2;\n    shape.width = w;\n    shape.height = h;\n  },\n  pin: function (x, y, w, h, shape) {\n    shape.x = x + w / 2;\n    shape.y = y + h / 2;\n    shape.width = w;\n    shape.height = h;\n  },\n  arrow: function (x, y, w, h, shape) {\n    shape.x = x + w / 2;\n    shape.y = y + h / 2;\n    shape.width = w;\n    shape.height = h;\n  },\n  triangle: function (x, y, w, h, shape) {\n    shape.cx = x + w / 2;\n    shape.cy = y + h / 2;\n    shape.width = w;\n    shape.height = h;\n  }\n};\nvar symbolBuildProxies = {};\nzrUtil.each(symbolCtors, function (Ctor, name) {\n  symbolBuildProxies[name] = new Ctor();\n});\nvar SymbolClz = graphic.extendShape({\n  type: 'symbol',\n  shape: {\n    symbolType: '',\n    x: 0,\n    y: 0,\n    width: 0,\n    height: 0\n  },\n  beforeBrush: function () {\n    var style = this.style;\n    var shape = this.shape; // FIXME\n\n    if (shape.symbolType === 'pin' && style.textPosition === 'inside') {\n      style.textPosition = ['50%', '40%'];\n      style.textAlign = 'center';\n      style.textVerticalAlign = 'middle';\n    }\n  },\n  buildPath: function (ctx, shape, inBundle) {\n    var symbolType = shape.symbolType;\n    var proxySymbol = symbolBuildProxies[symbolType];\n\n    if (shape.symbolType !== 'none') {\n      if (!proxySymbol) {\n        // Default rect\n        symbolType = 'rect';\n        proxySymbol = symbolBuildProxies[symbolType];\n      }\n\n      symbolShapeMakers[symbolType](shape.x, shape.y, shape.width, shape.height, proxySymbol.shape);\n      proxySymbol.buildPath(ctx, proxySymbol.shape, inBundle);\n    }\n  }\n}); // Provide setColor helper method to avoid determine if set the fill or stroke outside\n\nfunction symbolPathSetColor(color, innerColor) {\n  if (this.type !== 'image') {\n    var symbolStyle = this.style;\n    var symbolShape = this.shape;\n\n    if (symbolShape && symbolShape.symbolType === 'line') {\n      symbolStyle.stroke = color;\n    } else if (this.__isEmptyBrush) {\n      symbolStyle.stroke = color;\n      symbolStyle.fill = innerColor || '#fff';\n    } else {\n      // FIXME 判断图形默认是填充还是描边，使用 onlyStroke ?\n      symbolStyle.fill && (symbolStyle.fill = color);\n      symbolStyle.stroke && (symbolStyle.stroke = color);\n    }\n\n    this.dirty(false);\n  }\n}\n/**\n * Create a symbol element with given symbol configuration: shape, x, y, width, height, color\n * @param {string} symbolType\n * @param {number} x\n * @param {number} y\n * @param {number} w\n * @param {number} h\n * @param {string} color\n * @param {boolean} [keepAspect=false] whether to keep the ratio of w/h,\n *                            for path and image only.\n */\n\n\nfunction createSymbol(symbolType, x, y, w, h, color, keepAspect) {\n  // TODO Support image object, DynamicImage.\n  var isEmpty = symbolType.indexOf('empty') === 0;\n\n  if (isEmpty) {\n    symbolType = symbolType.substr(5, 1).toLowerCase() + symbolType.substr(6);\n  }\n\n  var symbolPath;\n\n  if (symbolType.indexOf('image://') === 0) {\n    symbolPath = graphic.makeImage(symbolType.slice(8), new BoundingRect(x, y, w, h), keepAspect ? 'center' : 'cover');\n  } else if (symbolType.indexOf('path://') === 0) {\n    symbolPath = graphic.makePath(symbolType.slice(7), {}, new BoundingRect(x, y, w, h), keepAspect ? 'center' : 'cover');\n  } else {\n    symbolPath = new SymbolClz({\n      shape: {\n        symbolType: symbolType,\n        x: x,\n        y: y,\n        width: w,\n        height: h\n      }\n    });\n  }\n\n  symbolPath.__isEmptyBrush = isEmpty;\n  symbolPath.setColor = symbolPathSetColor;\n  symbolPath.setColor(color);\n  return symbolPath;\n}\n\nexports.createSymbol = createSymbol;","var ORIGIN_METHOD = '\\0__throttleOriginMethod';\nvar RATE = '\\0__throttleRate';\nvar THROTTLE_TYPE = '\\0__throttleType';\n/**\n * @public\n * @param {(Function)} fn\n * @param {number} [delay=0] Unit: ms.\n * @param {boolean} [debounce=false]\n *        true: If call interval less than `delay`, only the last call works.\n *        false: If call interval less than `delay, call works on fixed rate.\n * @return {(Function)} throttled fn.\n */\n\nfunction throttle(fn, delay, debounce) {\n  var currCall;\n  var lastCall = 0;\n  var lastExec = 0;\n  var timer = null;\n  var diff;\n  var scope;\n  var args;\n  var debounceNextCall;\n  delay = delay || 0;\n\n  function exec() {\n    lastExec = new Date().getTime();\n    timer = null;\n    fn.apply(scope, args || []);\n  }\n\n  var cb = function () {\n    currCall = new Date().getTime();\n    scope = this;\n    args = arguments;\n    var thisDelay = debounceNextCall || delay;\n    var thisDebounce = debounceNextCall || debounce;\n    debounceNextCall = null;\n    diff = currCall - (thisDebounce ? lastCall : lastExec) - thisDelay;\n    clearTimeout(timer);\n\n    if (thisDebounce) {\n      timer = setTimeout(exec, thisDelay);\n    } else {\n      if (diff >= 0) {\n        exec();\n      } else {\n        timer = setTimeout(exec, -diff);\n      }\n    }\n\n    lastCall = currCall;\n  };\n  /**\n   * Clear throttle.\n   * @public\n   */\n\n\n  cb.clear = function () {\n    if (timer) {\n      clearTimeout(timer);\n      timer = null;\n    }\n  };\n  /**\n   * Enable debounce once.\n   */\n\n\n  cb.debounceNextCall = function (debounceDelay) {\n    debounceNextCall = debounceDelay;\n  };\n\n  return cb;\n}\n/**\n * Create throttle method or update throttle rate.\n *\n * @example\n * ComponentView.prototype.render = function () {\n *     ...\n *     throttle.createOrUpdate(\n *         this,\n *         '_dispatchAction',\n *         this.model.get('throttle'),\n *         'fixRate'\n *     );\n * };\n * ComponentView.prototype.remove = function () {\n *     throttle.clear(this, '_dispatchAction');\n * };\n * ComponentView.prototype.dispose = function () {\n *     throttle.clear(this, '_dispatchAction');\n * };\n *\n * @public\n * @param {Object} obj\n * @param {string} fnAttr\n * @param {number} [rate]\n * @param {string} [throttleType='fixRate'] 'fixRate' or 'debounce'\n * @return {Function} throttled function.\n */\n\n\nfunction createOrUpdate(obj, fnAttr, rate, throttleType) {\n  var fn = obj[fnAttr];\n\n  if (!fn) {\n    return;\n  }\n\n  var originFn = fn[ORIGIN_METHOD] || fn;\n  var lastThrottleType = fn[THROTTLE_TYPE];\n  var lastRate = fn[RATE];\n\n  if (lastRate !== rate || lastThrottleType !== throttleType) {\n    if (rate == null || !throttleType) {\n      return obj[fnAttr] = originFn;\n    }\n\n    fn = obj[fnAttr] = throttle(originFn, rate, throttleType === 'debounce');\n    fn[ORIGIN_METHOD] = originFn;\n    fn[THROTTLE_TYPE] = throttleType;\n    fn[RATE] = rate;\n  }\n\n  return fn;\n}\n/**\n * Clear throttle. Example see throttle.createOrUpdate.\n *\n * @public\n * @param {Object} obj\n * @param {string} fnAttr\n */\n\n\nfunction clear(obj, fnAttr) {\n  var fn = obj[fnAttr];\n\n  if (fn && fn[ORIGIN_METHOD]) {\n    obj[fnAttr] = fn[ORIGIN_METHOD];\n  }\n}\n\nexports.throttle = throttle;\nexports.createOrUpdate = createOrUpdate;\nexports.clear = clear;","var _util = require(\"zrender/lib/core/util\");\n\nvar each = _util.each;\n\nvar Group = require(\"zrender/lib/container/Group\");\n\nvar componentUtil = require(\"../util/component\");\n\nvar clazzUtil = require(\"../util/clazz\");\n\nvar modelUtil = require(\"../util/model\");\n\nvar _task = require(\"../stream/task\");\n\nvar createTask = _task.createTask;\n\nvar createRenderPlanner = require(\"../chart/helper/createRenderPlanner\");\n\nvar inner = modelUtil.makeInner();\nvar renderPlanner = createRenderPlanner();\n\nfunction Chart() {\n  /**\n   * @type {module:zrender/container/Group}\n   * @readOnly\n   */\n  this.group = new Group();\n  /**\n   * @type {string}\n   * @readOnly\n   */\n\n  this.uid = componentUtil.getUID('viewChart');\n  this.renderTask = createTask({\n    plan: renderTaskPlan,\n    reset: renderTaskReset\n  });\n  this.renderTask.context = {\n    view: this\n  };\n}\n\nChart.prototype = {\n  type: 'chart',\n\n  /**\n   * Init the chart.\n   * @param  {module:echarts/model/Global} ecModel\n   * @param  {module:echarts/ExtensionAPI} api\n   */\n  init: function (ecModel, api) {},\n\n  /**\n   * Render the chart.\n   * @param  {module:echarts/model/Series} seriesModel\n   * @param  {module:echarts/model/Global} ecModel\n   * @param  {module:echarts/ExtensionAPI} api\n   * @param  {Object} payload\n   */\n  render: function (seriesModel, ecModel, api, payload) {},\n\n  /**\n   * Highlight series or specified data item.\n   * @param  {module:echarts/model/Series} seriesModel\n   * @param  {module:echarts/model/Global} ecModel\n   * @param  {module:echarts/ExtensionAPI} api\n   * @param  {Object} payload\n   */\n  highlight: function (seriesModel, ecModel, api, payload) {\n    toggleHighlight(seriesModel.getData(), payload, 'emphasis');\n  },\n\n  /**\n   * Downplay series or specified data item.\n   * @param  {module:echarts/model/Series} seriesModel\n   * @param  {module:echarts/model/Global} ecModel\n   * @param  {module:echarts/ExtensionAPI} api\n   * @param  {Object} payload\n   */\n  downplay: function (seriesModel, ecModel, api, payload) {\n    toggleHighlight(seriesModel.getData(), payload, 'normal');\n  },\n\n  /**\n   * Remove self.\n   * @param  {module:echarts/model/Global} ecModel\n   * @param  {module:echarts/ExtensionAPI} api\n   */\n  remove: function (ecModel, api) {\n    this.group.removeAll();\n  },\n\n  /**\n   * Dispose self.\n   * @param  {module:echarts/model/Global} ecModel\n   * @param  {module:echarts/ExtensionAPI} api\n   */\n  dispose: function () {},\n\n  /**\n   * Rendering preparation in progressive mode.\n   * @param  {module:echarts/model/Series} seriesModel\n   * @param  {module:echarts/model/Global} ecModel\n   * @param  {module:echarts/ExtensionAPI} api\n   * @param  {Object} payload\n   */\n  incrementalPrepareRender: null,\n\n  /**\n   * Render in progressive mode.\n   * @param  {module:echarts/model/Series} seriesModel\n   * @param  {module:echarts/model/Global} ecModel\n   * @param  {module:echarts/ExtensionAPI} api\n   * @param  {Object} payload\n   */\n  incrementalRender: null,\n\n  /**\n   * Update transform directly.\n   * @param  {module:echarts/model/Series} seriesModel\n   * @param  {module:echarts/model/Global} ecModel\n   * @param  {module:echarts/ExtensionAPI} api\n   * @param  {Object} payload\n   * @return {Object} {update: true}\n   */\n  updateTransform: null\n  /**\n   * The view contains the given point.\n   * @interface\n   * @param {Array.<number>} point\n   * @return {boolean}\n   */\n  // containPoint: function () {}\n\n};\nvar chartProto = Chart.prototype;\n\nchartProto.updateView = chartProto.updateLayout = chartProto.updateVisual = function (seriesModel, ecModel, api, payload) {\n  this.render(seriesModel, ecModel, api, payload);\n};\n/**\n * Set state of single element\n * @param  {module:zrender/Element} el\n * @param  {string} state\n */\n\n\nfunction elSetState(el, state) {\n  if (el) {\n    el.trigger(state);\n\n    if (el.type === 'group') {\n      for (var i = 0; i < el.childCount(); i++) {\n        elSetState(el.childAt(i), state);\n      }\n    }\n  }\n}\n/**\n * @param  {module:echarts/data/List} data\n * @param  {Object} payload\n * @param  {string} state 'normal'|'emphasis'\n */\n\n\nfunction toggleHighlight(data, payload, state) {\n  var dataIndex = modelUtil.queryDataIndex(data, payload);\n\n  if (dataIndex != null) {\n    each(modelUtil.normalizeToArray(dataIndex), function (dataIdx) {\n      elSetState(data.getItemGraphicEl(dataIdx), state);\n    });\n  } else {\n    data.eachItemGraphicEl(function (el) {\n      elSetState(el, state);\n    });\n  }\n} // Enable Chart.extend.\n\n\nclazzUtil.enableClassExtend(Chart, ['dispose']); // Add capability of registerClass, getClass, hasClass, registerSubTypeDefaulter and so on.\n\nclazzUtil.enableClassManagement(Chart, {\n  registerWhenExtend: true\n});\n\nChart.markUpdateMethod = function (payload, methodName) {\n  inner(payload).updateMethod = methodName;\n};\n\nfunction renderTaskPlan(context) {\n  return renderPlanner(context.model);\n}\n\nfunction renderTaskReset(context) {\n  var seriesModel = context.model;\n  var ecModel = context.ecModel;\n  var api = context.api;\n  var payload = context.payload; // ???! remove updateView updateVisual\n\n  var incremental = seriesModel.pipelineContext.incrementalRender;\n  var view = context.view;\n  var updateMethod = payload && inner(payload).updateMethod;\n  var methodName = incremental && view.incrementalPrepareRender ? 'incrementalPrepareRender' : updateMethod && view[updateMethod] ? updateMethod : 'render';\n  view[methodName](seriesModel, ecModel, api, payload);\n  return incremental ? renderTaskProgress : null;\n}\n\nfunction renderTaskProgress(params, context) {\n  context.view.incrementalRender(params, context.model, context.ecModel, context.api, context.payload);\n}\n\nvar _default = Chart;\nmodule.exports = _default;","var Group = require(\"zrender/lib/container/Group\");\n\nvar componentUtil = require(\"../util/component\");\n\nvar clazzUtil = require(\"../util/clazz\");\n\nvar Component = function () {\n  /**\n   * @type {module:zrender/container/Group}\n   * @readOnly\n   */\n  this.group = new Group();\n  /**\n   * @type {string}\n   * @readOnly\n   */\n\n  this.uid = componentUtil.getUID('viewComponent');\n};\n\nComponent.prototype = {\n  constructor: Component,\n  init: function (ecModel, api) {},\n  render: function (componentModel, ecModel, api, payload) {},\n  dispose: function () {}\n};\nvar componentProto = Component.prototype;\n\ncomponentProto.updateView = componentProto.updateLayout = componentProto.updateVisual = function (seriesModel, ecModel, api, payload) {// Do nothing;\n}; // Enable Component.extend.\n\n\nclazzUtil.enableClassExtend(Component); // Enable capability of registerClass, getClass, hasClass, registerSubTypeDefaulter and so on.\n\nclazzUtil.enableClassManagement(Component, {\n  registerWhenExtend: true\n});\nvar _default = Component;\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar zrColor = require(\"zrender/lib/tool/color\");\n\nvar _number = require(\"../util/number\");\n\nvar linearMap = _number.linearMap;\nvar each = zrUtil.each;\nvar isObject = zrUtil.isObject;\nvar CATEGORY_DEFAULT_VISUAL_INDEX = -1;\n/**\n * @param {Object} option\n * @param {string} [option.type] See visualHandlers.\n * @param {string} [option.mappingMethod] 'linear' or 'piecewise' or 'category' or 'fixed'\n * @param {Array.<number>=} [option.dataExtent] [minExtent, maxExtent],\n *                                              required when mappingMethod is 'linear'\n * @param {Array.<Object>=} [option.pieceList] [\n *                                             {value: someValue},\n *                                             {interval: [min1, max1], visual: {...}},\n *                                             {interval: [min2, max2]}\n *                                             ],\n *                                            required when mappingMethod is 'piecewise'.\n *                                            Visual for only each piece can be specified.\n * @param {Array.<string|Object>=} [option.categories] ['cate1', 'cate2']\n *                                            required when mappingMethod is 'category'.\n *                                            If no option.categories, categories is set\n *                                            as [0, 1, 2, ...].\n * @param {boolean} [option.loop=false] Whether loop mapping when mappingMethod is 'category'.\n * @param {(Array|Object|*)} [option.visual]  Visual data.\n *                                            when mappingMethod is 'category',\n *                                            visual data can be array or object\n *                                            (like: {cate1: '#222', none: '#fff'})\n *                                            or primary types (which represents\n *                                            defualt category visual), otherwise visual\n *                                            can be array or primary (which will be\n *                                            normalized to array).\n *\n */\n\nvar VisualMapping = function (option) {\n  var mappingMethod = option.mappingMethod;\n  var visualType = option.type;\n  /**\n   * @readOnly\n   * @type {Object}\n   */\n\n  var thisOption = this.option = zrUtil.clone(option);\n  /**\n   * @readOnly\n   * @type {string}\n   */\n\n  this.type = visualType;\n  /**\n   * @readOnly\n   * @type {string}\n   */\n\n  this.mappingMethod = mappingMethod;\n  /**\n   * @private\n   * @type {Function}\n   */\n\n  this._normalizeData = normalizers[mappingMethod];\n  var visualHandler = visualHandlers[visualType];\n  /**\n   * @public\n   * @type {Function}\n   */\n\n  this.applyVisual = visualHandler.applyVisual;\n  /**\n   * @public\n   * @type {Function}\n   */\n\n  this.getColorMapper = visualHandler.getColorMapper;\n  /**\n   * @private\n   * @type {Function}\n   */\n\n  this._doMap = visualHandler._doMap[mappingMethod];\n\n  if (mappingMethod === 'piecewise') {\n    normalizeVisualRange(thisOption);\n    preprocessForPiecewise(thisOption);\n  } else if (mappingMethod === 'category') {\n    thisOption.categories ? preprocessForSpecifiedCategory(thisOption) // categories is ordinal when thisOption.categories not specified,\n    // which need no more preprocess except normalize visual.\n    : normalizeVisualRange(thisOption, true);\n  } else {\n    // mappingMethod === 'linear' or 'fixed'\n    zrUtil.assert(mappingMethod !== 'linear' || thisOption.dataExtent);\n    normalizeVisualRange(thisOption);\n  }\n};\n\nVisualMapping.prototype = {\n  constructor: VisualMapping,\n  mapValueToVisual: function (value) {\n    var normalized = this._normalizeData(value);\n\n    return this._doMap(normalized, value);\n  },\n  getNormalizer: function () {\n    return zrUtil.bind(this._normalizeData, this);\n  }\n};\nvar visualHandlers = VisualMapping.visualHandlers = {\n  color: {\n    applyVisual: makeApplyVisual('color'),\n\n    /**\n     * Create a mapper function\n     * @return {Function}\n     */\n    getColorMapper: function () {\n      var thisOption = this.option;\n      return zrUtil.bind(thisOption.mappingMethod === 'category' ? function (value, isNormalized) {\n        !isNormalized && (value = this._normalizeData(value));\n        return doMapCategory.call(this, value);\n      } : function (value, isNormalized, out) {\n        // If output rgb array\n        // which will be much faster and useful in pixel manipulation\n        var returnRGBArray = !!out;\n        !isNormalized && (value = this._normalizeData(value));\n        out = zrColor.fastLerp(value, thisOption.parsedVisual, out);\n        return returnRGBArray ? out : zrColor.stringify(out, 'rgba');\n      }, this);\n    },\n    _doMap: {\n      linear: function (normalized) {\n        return zrColor.stringify(zrColor.fastLerp(normalized, this.option.parsedVisual), 'rgba');\n      },\n      category: doMapCategory,\n      piecewise: function (normalized, value) {\n        var result = getSpecifiedVisual.call(this, value);\n\n        if (result == null) {\n          result = zrColor.stringify(zrColor.fastLerp(normalized, this.option.parsedVisual), 'rgba');\n        }\n\n        return result;\n      },\n      fixed: doMapFixed\n    }\n  },\n  colorHue: makePartialColorVisualHandler(function (color, value) {\n    return zrColor.modifyHSL(color, value);\n  }),\n  colorSaturation: makePartialColorVisualHandler(function (color, value) {\n    return zrColor.modifyHSL(color, null, value);\n  }),\n  colorLightness: makePartialColorVisualHandler(function (color, value) {\n    return zrColor.modifyHSL(color, null, null, value);\n  }),\n  colorAlpha: makePartialColorVisualHandler(function (color, value) {\n    return zrColor.modifyAlpha(color, value);\n  }),\n  opacity: {\n    applyVisual: makeApplyVisual('opacity'),\n    _doMap: makeDoMap([0, 1])\n  },\n  symbol: {\n    applyVisual: function (value, getter, setter) {\n      var symbolCfg = this.mapValueToVisual(value);\n\n      if (zrUtil.isString(symbolCfg)) {\n        setter('symbol', symbolCfg);\n      } else if (isObject(symbolCfg)) {\n        for (var name in symbolCfg) {\n          if (symbolCfg.hasOwnProperty(name)) {\n            setter(name, symbolCfg[name]);\n          }\n        }\n      }\n    },\n    _doMap: {\n      linear: doMapToArray,\n      category: doMapCategory,\n      piecewise: function (normalized, value) {\n        var result = getSpecifiedVisual.call(this, value);\n\n        if (result == null) {\n          result = doMapToArray.call(this, normalized);\n        }\n\n        return result;\n      },\n      fixed: doMapFixed\n    }\n  },\n  symbolSize: {\n    applyVisual: makeApplyVisual('symbolSize'),\n    _doMap: makeDoMap([0, 1])\n  }\n};\n\nfunction preprocessForPiecewise(thisOption) {\n  var pieceList = thisOption.pieceList;\n  thisOption.hasSpecialVisual = false;\n  zrUtil.each(pieceList, function (piece, index) {\n    piece.originIndex = index; // piece.visual is \"result visual value\" but not\n    // a visual range, so it does not need to be normalized.\n\n    if (piece.visual != null) {\n      thisOption.hasSpecialVisual = true;\n    }\n  });\n}\n\nfunction preprocessForSpecifiedCategory(thisOption) {\n  // Hash categories.\n  var categories = thisOption.categories;\n  var visual = thisOption.visual;\n  var categoryMap = thisOption.categoryMap = {};\n  each(categories, function (cate, index) {\n    categoryMap[cate] = index;\n  }); // Process visual map input.\n\n  if (!zrUtil.isArray(visual)) {\n    var visualArr = [];\n\n    if (zrUtil.isObject(visual)) {\n      each(visual, function (v, cate) {\n        var index = categoryMap[cate];\n        visualArr[index != null ? index : CATEGORY_DEFAULT_VISUAL_INDEX] = v;\n      });\n    } else {\n      // Is primary type, represents default visual.\n      visualArr[CATEGORY_DEFAULT_VISUAL_INDEX] = visual;\n    }\n\n    visual = setVisualToOption(thisOption, visualArr);\n  } // Remove categories that has no visual,\n  // then we can mapping them to CATEGORY_DEFAULT_VISUAL_INDEX.\n\n\n  for (var i = categories.length - 1; i >= 0; i--) {\n    if (visual[i] == null) {\n      delete categoryMap[categories[i]];\n      categories.pop();\n    }\n  }\n}\n\nfunction normalizeVisualRange(thisOption, isCategory) {\n  var visual = thisOption.visual;\n  var visualArr = [];\n\n  if (zrUtil.isObject(visual)) {\n    each(visual, function (v) {\n      visualArr.push(v);\n    });\n  } else if (visual != null) {\n    visualArr.push(visual);\n  }\n\n  var doNotNeedPair = {\n    color: 1,\n    symbol: 1\n  };\n\n  if (!isCategory && visualArr.length === 1 && !doNotNeedPair.hasOwnProperty(thisOption.type)) {\n    // Do not care visualArr.length === 0, which is illegal.\n    visualArr[1] = visualArr[0];\n  }\n\n  setVisualToOption(thisOption, visualArr);\n}\n\nfunction makePartialColorVisualHandler(applyValue) {\n  return {\n    applyVisual: function (value, getter, setter) {\n      value = this.mapValueToVisual(value); // Must not be array value\n\n      setter('color', applyValue(getter('color'), value));\n    },\n    _doMap: makeDoMap([0, 1])\n  };\n}\n\nfunction doMapToArray(normalized) {\n  var visual = this.option.visual;\n  return visual[Math.round(linearMap(normalized, [0, 1], [0, visual.length - 1], true))] || {};\n}\n\nfunction makeApplyVisual(visualType) {\n  return function (value, getter, setter) {\n    setter(visualType, this.mapValueToVisual(value));\n  };\n}\n\nfunction doMapCategory(normalized) {\n  var visual = this.option.visual;\n  return visual[this.option.loop && normalized !== CATEGORY_DEFAULT_VISUAL_INDEX ? normalized % visual.length : normalized];\n}\n\nfunction doMapFixed() {\n  return this.option.visual[0];\n}\n\nfunction makeDoMap(sourceExtent) {\n  return {\n    linear: function (normalized) {\n      return linearMap(normalized, sourceExtent, this.option.visual, true);\n    },\n    category: doMapCategory,\n    piecewise: function (normalized, value) {\n      var result = getSpecifiedVisual.call(this, value);\n\n      if (result == null) {\n        result = linearMap(normalized, sourceExtent, this.option.visual, true);\n      }\n\n      return result;\n    },\n    fixed: doMapFixed\n  };\n}\n\nfunction getSpecifiedVisual(value) {\n  var thisOption = this.option;\n  var pieceList = thisOption.pieceList;\n\n  if (thisOption.hasSpecialVisual) {\n    var pieceIndex = VisualMapping.findPieceIndex(value, pieceList);\n    var piece = pieceList[pieceIndex];\n\n    if (piece && piece.visual) {\n      return piece.visual[this.type];\n    }\n  }\n}\n\nfunction setVisualToOption(thisOption, visualArr) {\n  thisOption.visual = visualArr;\n\n  if (thisOption.type === 'color') {\n    thisOption.parsedVisual = zrUtil.map(visualArr, function (item) {\n      return zrColor.parse(item);\n    });\n  }\n\n  return visualArr;\n}\n/**\n * Normalizers by mapping methods.\n */\n\n\nvar normalizers = {\n  linear: function (value) {\n    return linearMap(value, this.option.dataExtent, [0, 1], true);\n  },\n  piecewise: function (value) {\n    var pieceList = this.option.pieceList;\n    var pieceIndex = VisualMapping.findPieceIndex(value, pieceList, true);\n\n    if (pieceIndex != null) {\n      return linearMap(pieceIndex, [0, pieceList.length - 1], [0, 1], true);\n    }\n  },\n  category: function (value) {\n    var index = this.option.categories ? this.option.categoryMap[value] : value; // ordinal\n\n    return index == null ? CATEGORY_DEFAULT_VISUAL_INDEX : index;\n  },\n  fixed: zrUtil.noop\n};\n/**\n * List available visual types.\n *\n * @public\n * @return {Array.<string>}\n */\n\nVisualMapping.listVisualTypes = function () {\n  var visualTypes = [];\n  zrUtil.each(visualHandlers, function (handler, key) {\n    visualTypes.push(key);\n  });\n  return visualTypes;\n};\n/**\n * @public\n */\n\n\nVisualMapping.addVisualHandler = function (name, handler) {\n  visualHandlers[name] = handler;\n};\n/**\n * @public\n */\n\n\nVisualMapping.isValidType = function (visualType) {\n  return visualHandlers.hasOwnProperty(visualType);\n};\n/**\n * Convinent method.\n * Visual can be Object or Array or primary type.\n *\n * @public\n */\n\n\nVisualMapping.eachVisual = function (visual, callback, context) {\n  if (zrUtil.isObject(visual)) {\n    zrUtil.each(visual, callback, context);\n  } else {\n    callback.call(context, visual);\n  }\n};\n\nVisualMapping.mapVisual = function (visual, callback, context) {\n  var isPrimary;\n  var newVisual = zrUtil.isArray(visual) ? [] : zrUtil.isObject(visual) ? {} : (isPrimary = true, null);\n  VisualMapping.eachVisual(visual, function (v, key) {\n    var newVal = callback.call(context, v, key);\n    isPrimary ? newVisual = newVal : newVisual[key] = newVal;\n  });\n  return newVisual;\n};\n/**\n * @public\n * @param {Object} obj\n * @return {Object} new object containers visual values.\n *                 If no visuals, return null.\n */\n\n\nVisualMapping.retrieveVisuals = function (obj) {\n  var ret = {};\n  var hasVisual;\n  obj && each(visualHandlers, function (h, visualType) {\n    if (obj.hasOwnProperty(visualType)) {\n      ret[visualType] = obj[visualType];\n      hasVisual = true;\n    }\n  });\n  return hasVisual ? ret : null;\n};\n/**\n * Give order to visual types, considering colorSaturation, colorAlpha depends on color.\n *\n * @public\n * @param {(Object|Array)} visualTypes If Object, like: {color: ..., colorSaturation: ...}\n *                                     IF Array, like: ['color', 'symbol', 'colorSaturation']\n * @return {Array.<string>} Sorted visual types.\n */\n\n\nVisualMapping.prepareVisualTypes = function (visualTypes) {\n  if (isObject(visualTypes)) {\n    var types = [];\n    each(visualTypes, function (item, type) {\n      types.push(type);\n    });\n    visualTypes = types;\n  } else if (zrUtil.isArray(visualTypes)) {\n    visualTypes = visualTypes.slice();\n  } else {\n    return [];\n  }\n\n  visualTypes.sort(function (type1, type2) {\n    // color should be front of colorSaturation, colorAlpha, ...\n    // symbol and symbolSize do not matter.\n    return type2 === 'color' && type1 !== 'color' && type1.indexOf('color') === 0 ? 1 : -1;\n  });\n  return visualTypes;\n};\n/**\n * 'color', 'colorSaturation', 'colorAlpha', ... are depends on 'color'.\n * Other visuals are only depends on themself.\n *\n * @public\n * @param {string} visualType1\n * @param {string} visualType2\n * @return {boolean}\n */\n\n\nVisualMapping.dependsOn = function (visualType1, visualType2) {\n  return visualType2 === 'color' ? !!(visualType1 && visualType1.indexOf(visualType2) === 0) : visualType1 === visualType2;\n};\n/**\n * @param {number} value\n * @param {Array.<Object>} pieceList [{value: ..., interval: [min, max]}, ...]\n *                         Always from small to big.\n * @param {boolean} [findClosestWhenOutside=false]\n * @return {number} index\n */\n\n\nVisualMapping.findPieceIndex = function (value, pieceList, findClosestWhenOutside) {\n  var possibleI;\n  var abs = Infinity; // value has the higher priority.\n\n  for (var i = 0, len = pieceList.length; i < len; i++) {\n    var pieceValue = pieceList[i].value;\n\n    if (pieceValue != null) {\n      if (pieceValue === value // FIXME\n      // It is supposed to compare value according to value type of dimension,\n      // but currently value type can exactly be string or number.\n      // Compromise for numeric-like string (like '12'), especially\n      // in the case that visualMap.categories is ['22', '33'].\n      || typeof pieceValue === 'string' && pieceValue === value + '') {\n        return i;\n      }\n\n      findClosestWhenOutside && updatePossible(pieceValue, i);\n    }\n  }\n\n  for (var i = 0, len = pieceList.length; i < len; i++) {\n    var piece = pieceList[i];\n    var interval = piece.interval;\n    var close = piece.close;\n\n    if (interval) {\n      if (interval[0] === -Infinity) {\n        if (littleThan(close[1], value, interval[1])) {\n          return i;\n        }\n      } else if (interval[1] === Infinity) {\n        if (littleThan(close[0], interval[0], value)) {\n          return i;\n        }\n      } else if (littleThan(close[0], interval[0], value) && littleThan(close[1], value, interval[1])) {\n        return i;\n      }\n\n      findClosestWhenOutside && updatePossible(interval[0], i);\n      findClosestWhenOutside && updatePossible(interval[1], i);\n    }\n  }\n\n  if (findClosestWhenOutside) {\n    return value === Infinity ? pieceList.length - 1 : value === -Infinity ? 0 : possibleI;\n  }\n\n  function updatePossible(val, index) {\n    var newAbs = Math.abs(val - value);\n\n    if (newAbs < abs) {\n      abs = newAbs;\n      possibleI = index;\n    }\n  }\n};\n\nfunction littleThan(close, a, b) {\n  return close ? a <= b : a < b;\n}\n\nvar _default = VisualMapping;\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar lang = require(\"../lang\");\n\nvar _dataProvider = require(\"../data/helper/dataProvider\");\n\nvar retrieveRawValue = _dataProvider.retrieveRawValue;\n\nfunction _default(dom, ecModel) {\n  var ariaModel = ecModel.getModel('aria');\n\n  if (!ariaModel.get('show')) {\n    return;\n  } else if (ariaModel.get('description')) {\n    dom.setAttribute('aria-label', ariaModel.get('description'));\n    return;\n  }\n\n  var seriesCnt = 0;\n  ecModel.eachSeries(function (seriesModel, idx) {\n    ++seriesCnt;\n  }, this);\n  var maxDataCnt = ariaModel.get('data.maxCount') || 10;\n  var maxSeriesCnt = ariaModel.get('series.maxCount') || 10;\n  var displaySeriesCnt = Math.min(seriesCnt, maxSeriesCnt);\n  var ariaLabel;\n\n  if (seriesCnt < 1) {\n    // No series, no aria label\n    return;\n  } else {\n    var title = getTitle();\n\n    if (title) {\n      ariaLabel = replace(getConfig('general.withTitle'), {\n        title: title\n      });\n    } else {\n      ariaLabel = getConfig('general.withoutTitle');\n    }\n\n    var seriesLabels = [];\n    var prefix = seriesCnt > 1 ? 'series.multiple.prefix' : 'series.single.prefix';\n    ariaLabel += replace(getConfig(prefix), {\n      seriesCount: seriesCnt\n    });\n    ecModel.eachSeries(function (seriesModel, idx) {\n      if (idx < displaySeriesCnt) {\n        var seriesLabel;\n        var seriesName = seriesModel.get('name');\n        var seriesTpl = 'series.' + (seriesCnt > 1 ? 'multiple' : 'single') + '.';\n        seriesLabel = getConfig(seriesName ? seriesTpl + 'withName' : seriesTpl + 'withoutName');\n        seriesLabel = replace(seriesLabel, {\n          seriesId: seriesModel.seriesIndex,\n          seriesName: seriesModel.get('name'),\n          seriesType: getSeriesTypeName(seriesModel.subType)\n        });\n        var data = seriesModel.getData();\n        window.data = data;\n\n        if (data.count() > maxDataCnt) {\n          // Show part of data\n          seriesLabel += replace(getConfig('data.partialData'), {\n            displayCnt: maxDataCnt\n          });\n        } else {\n          seriesLabel += getConfig('data.allData');\n        }\n\n        var dataLabels = [];\n\n        for (var i = 0; i < data.count(); i++) {\n          if (i < maxDataCnt) {\n            var name = data.getName(i);\n            var value = retrieveRawValue(data, i);\n            dataLabels.push(replace(name ? getConfig('data.withName') : getConfig('data.withoutName'), {\n              name: name,\n              value: value\n            }));\n          }\n        }\n\n        seriesLabel += dataLabels.join(getConfig('data.separator.middle')) + getConfig('data.separator.end');\n        seriesLabels.push(seriesLabel);\n      }\n    });\n    ariaLabel += seriesLabels.join(getConfig('series.multiple.separator.middle')) + getConfig('series.multiple.separator.end');\n    dom.setAttribute('aria-label', ariaLabel);\n  }\n\n  function replace(str, keyValues) {\n    if (typeof str !== 'string') {\n      return str;\n    }\n\n    var result = str;\n    zrUtil.each(keyValues, function (value, key) {\n      result = result.replace(new RegExp('\\\\{\\\\s*' + key + '\\\\s*\\\\}', 'g'), value);\n    });\n    return result;\n  }\n\n  function getConfig(path) {\n    var userConfig = ariaModel.get(path);\n\n    if (userConfig == null) {\n      var pathArr = path.split('.');\n      var result = lang.aria;\n\n      for (var i = 0; i < pathArr.length; ++i) {\n        result = result[pathArr[i]];\n      }\n\n      return result;\n    } else {\n      return userConfig;\n    }\n  }\n\n  function getTitle() {\n    var title = ecModel.getModel('title').option;\n\n    if (title && title.length) {\n      title = title[0];\n    }\n\n    return title && title.text;\n  }\n\n  function getSeriesTypeName(type) {\n    return lang.series.typeNames[type] || '自定义图';\n  }\n}\n\nmodule.exports = _default;","var _util = require(\"zrender/lib/core/util\");\n\nvar createHashMap = _util.createHashMap;\n\n// Pick color from palette for each data item.\n// Applicable for charts that require applying color palette\n// in data level (like pie, funnel, chord).\nfunction _default(seriesType) {\n  return {\n    getTargetSeries: function (ecModel) {\n      // Pie and funnel may use diferrent scope\n      var paletteScope = {};\n      var seiresModelMap = createHashMap();\n      ecModel.eachSeriesByType(seriesType, function (seriesModel) {\n        seriesModel.__paletteScope = paletteScope;\n        seiresModelMap.set(seriesModel.uid, seriesModel);\n      });\n      return seiresModelMap;\n    },\n    reset: function (seriesModel, ecModel) {\n      var dataAll = seriesModel.getRawData();\n      var idxMap = {};\n      var data = seriesModel.getData();\n      data.each(function (idx) {\n        var rawIdx = data.getRawIndex(idx);\n        idxMap[rawIdx] = idx;\n      });\n      dataAll.each(function (rawIdx) {\n        var filteredIdx = idxMap[rawIdx]; // If series.itemStyle.normal.color is a function. itemVisual may be encoded\n\n        var singleDataColor = filteredIdx != null && data.getItemVisual(filteredIdx, 'color', true);\n\n        if (!singleDataColor) {\n          // FIXME Performance\n          var itemModel = dataAll.getItemModel(rawIdx);\n          var color = itemModel.get('itemStyle.color') || seriesModel.getColorFromPalette(dataAll.getName(rawIdx), seriesModel.__paletteScope, dataAll.count()); // Legend may use the visual info in data before processed\n\n          dataAll.setItemVisual(rawIdx, 'color', color); // Data is not filtered\n\n          if (filteredIdx != null) {\n            data.setItemVisual(filteredIdx, 'color', color);\n          }\n        } else {\n          // Set data all color for legend\n          dataAll.setItemVisual(rawIdx, 'color', singleDataColor);\n        }\n      });\n    }\n  };\n}\n\nmodule.exports = _default;","var Gradient = require(\"zrender/lib/graphic/Gradient\");\n\nvar _default = {\n  createOnAllSeries: true,\n  performRawSeries: true,\n  reset: function (seriesModel, ecModel) {\n    var data = seriesModel.getData();\n    var colorAccessPath = (seriesModel.visualColorAccessPath || 'itemStyle.color').split('.');\n    var color = seriesModel.get(colorAccessPath) // Set in itemStyle\n    || seriesModel.getColorFromPalette( // TODO series count changed.\n    seriesModel.get('name'), null, ecModel.getSeriesCount()); // Default color\n    // FIXME Set color function or use the platte color\n\n    data.setVisual('color', color); // Only visible series has each data be visual encoded\n\n    if (!ecModel.isSeriesFiltered(seriesModel)) {\n      if (typeof color === 'function' && !(color instanceof Gradient)) {\n        data.each(function (idx) {\n          data.setItemVisual(idx, 'color', color(seriesModel.getDataParams(idx)));\n        });\n      } // itemStyle in each data item\n\n\n      var dataEach = function (data, idx) {\n        var itemModel = data.getItemModel(idx);\n        var color = itemModel.get(colorAccessPath, true);\n\n        if (color != null) {\n          data.setItemVisual(idx, 'color', color);\n        }\n      };\n\n      return {\n        dataEach: data.hasItemOption ? dataEach : null\n      };\n    }\n  }\n};\nmodule.exports = _default;","function _default(seriesType, defaultSymbolType, legendSymbol) {\n  // Encoding visual for all series include which is filtered for legend drawing\n  return {\n    seriesType: seriesType,\n    performRawSeries: true,\n    reset: function (seriesModel, ecModel, api) {\n      var data = seriesModel.getData();\n      var symbolType = seriesModel.get('symbol') || defaultSymbolType;\n      var symbolSize = seriesModel.get('symbolSize');\n      data.setVisual({\n        legendSymbol: legendSymbol || symbolType,\n        symbol: symbolType,\n        symbolSize: symbolSize\n      }); // Only visible series has each data be visual encoded\n\n      if (ecModel.isSeriesFiltered(seriesModel)) {\n        return;\n      }\n\n      var hasCallback = typeof symbolSize === 'function';\n\n      function dataEach(data, idx) {\n        if (typeof symbolSize === 'function') {\n          var rawValue = seriesModel.getRawValue(idx); // FIXME\n\n          var params = seriesModel.getDataParams(idx);\n          data.setItemVisual(idx, 'symbolSize', symbolSize(rawValue, params));\n        }\n\n        if (data.hasItemOption) {\n          var itemModel = data.getItemModel(idx);\n          var itemSymbolType = itemModel.getShallow('symbol', true);\n          var itemSymbolSize = itemModel.getShallow('symbolSize', true); // If has item symbol\n\n          if (itemSymbolType != null) {\n            data.setItemVisual(idx, 'symbol', itemSymbolType);\n          }\n\n          if (itemSymbolSize != null) {\n            // PENDING Transform symbolSize ?\n            data.setItemVisual(idx, 'symbolSize', itemSymbolSize);\n          }\n        }\n      }\n\n      return {\n        dataEach: data.hasItemOption || hasCallback ? dataEach : null\n      };\n    }\n  };\n}\n\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\n/**\n * @file Visual mapping.\n */\nvar visualDefault = {\n  /**\n   * @public\n   */\n  get: function (visualType, key, isCategory) {\n    var value = zrUtil.clone((defaultOption[visualType] || {})[key]);\n    return isCategory ? zrUtil.isArray(value) ? value[value.length - 1] : value : value;\n  }\n};\nvar defaultOption = {\n  color: {\n    active: ['#006edd', '#e0ffff'],\n    inactive: ['rgba(0,0,0,0)']\n  },\n  colorHue: {\n    active: [0, 360],\n    inactive: [0, 0]\n  },\n  colorSaturation: {\n    active: [0.3, 1],\n    inactive: [0, 0]\n  },\n  colorLightness: {\n    active: [0.9, 0.5],\n    inactive: [0, 0]\n  },\n  colorAlpha: {\n    active: [0.3, 1],\n    inactive: [0, 0]\n  },\n  opacity: {\n    active: [0.3, 1],\n    inactive: [0, 0]\n  },\n  symbol: {\n    active: ['circle', 'roundRect', 'diamond'],\n    inactive: ['none']\n  },\n  symbolSize: {\n    active: [10, 50],\n    inactive: [0, 0]\n  }\n};\nvar _default = visualDefault;\nmodule.exports = _default;","var zrUtil = require(\"zrender/lib/core/util\");\n\nvar VisualMapping = require(\"./VisualMapping\");\n\n/**\n * @file Visual solution, for consistent option specification.\n */\nvar each = zrUtil.each;\n\nfunction hasKeys(obj) {\n  if (obj) {\n    for (var name in obj) {\n      if (obj.hasOwnProperty(name)) {\n        return true;\n      }\n    }\n  }\n}\n/**\n * @param {Object} option\n * @param {Array.<string>} stateList\n * @param {Function} [supplementVisualOption]\n * @return {Object} visualMappings <state, <visualType, module:echarts/visual/VisualMapping>>\n */\n\n\nfunction createVisualMappings(option, stateList, supplementVisualOption) {\n  var visualMappings = {};\n  each(stateList, function (state) {\n    var mappings = visualMappings[state] = createMappings();\n    each(option[state], function (visualData, visualType) {\n      if (!VisualMapping.isValidType(visualType)) {\n        return;\n      }\n\n      var mappingOption = {\n        type: visualType,\n        visual: visualData\n      };\n      supplementVisualOption && supplementVisualOption(mappingOption, state);\n      mappings[visualType] = new VisualMapping(mappingOption); // Prepare a alpha for opacity, for some case that opacity\n      // is not supported, such as rendering using gradient color.\n\n      if (visualType === 'opacity') {\n        mappingOption = zrUtil.clone(mappingOption);\n        mappingOption.type = 'colorAlpha';\n        mappings.__hidden.__alphaForOpacity = new VisualMapping(mappingOption);\n      }\n    });\n  });\n  return visualMappings;\n\n  function createMappings() {\n    var Creater = function () {}; // Make sure hidden fields will not be visited by\n    // object iteration (with hasOwnProperty checking).\n\n\n    Creater.prototype.__hidden = Creater.prototype;\n    var obj = new Creater();\n    return obj;\n  }\n}\n/**\n * @param {Object} thisOption\n * @param {Object} newOption\n * @param {Array.<string>} keys\n */\n\n\nfunction replaceVisualOption(thisOption, newOption, keys) {\n  // Visual attributes merge is not supported, otherwise it\n  // brings overcomplicated merge logic. See #2853. So if\n  // newOption has anyone of these keys, all of these keys\n  // will be reset. Otherwise, all keys remain.\n  var has;\n  zrUtil.each(keys, function (key) {\n    if (newOption.hasOwnProperty(key) && hasKeys(newOption[key])) {\n      has = true;\n    }\n  });\n  has && zrUtil.each(keys, function (key) {\n    if (newOption.hasOwnProperty(key) && hasKeys(newOption[key])) {\n      thisOption[key] = zrUtil.clone(newOption[key]);\n    } else {\n      delete thisOption[key];\n    }\n  });\n}\n/**\n * @param {Array.<string>} stateList\n * @param {Object} visualMappings <state, Object.<visualType, module:echarts/visual/VisualMapping>>\n * @param {module:echarts/data/List} list\n * @param {Function} getValueState param: valueOrIndex, return: state.\n * @param {object} [scope] Scope for getValueState\n * @param {string} [dimension] Concrete dimension, if used.\n */\n// ???! handle brush?\n\n\nfunction applyVisual(stateList, visualMappings, data, getValueState, scope, dimension) {\n  var visualTypesMap = {};\n  zrUtil.each(stateList, function (state) {\n    var visualTypes = VisualMapping.prepareVisualTypes(visualMappings[state]);\n    visualTypesMap[state] = visualTypes;\n  });\n  var dataIndex;\n\n  function getVisual(key) {\n    return data.getItemVisual(dataIndex, key);\n  }\n\n  function setVisual(key, value) {\n    data.setItemVisual(dataIndex, key, value);\n  }\n\n  if (dimension == null) {\n    data.each(eachItem, true);\n  } else {\n    data.each([dimension], eachItem, true);\n  }\n\n  function eachItem(valueOrIndex, index) {\n    dataIndex = dimension == null ? valueOrIndex : index;\n    var rawDataItem = data.getRawDataItem(dataIndex); // Consider performance\n\n    if (rawDataItem && rawDataItem.visualMap === false) {\n      return;\n    }\n\n    var valueState = getValueState.call(scope, valueOrIndex);\n    var mappings = visualMappings[valueState];\n    var visualTypes = visualTypesMap[valueState];\n\n    for (var i = 0, len = visualTypes.length; i < len; i++) {\n      var type = visualTypes[i];\n      mappings[type] && mappings[type].applyVisual(valueOrIndex, getVisual, setVisual);\n    }\n  }\n}\n/**\n * @param {module:echarts/data/List} data\n * @param {Array.<string>} stateList\n * @param {Object} visualMappings <state, Object.<visualType, module:echarts/visual/VisualMapping>>\n * @param {Function} getValueState param: valueOrIndex, return: state.\n * @param {number} [dim] dimension or dimension index.\n */\n\n\nfunction incrementalApplyVisual(stateList, visualMappings, getValueState, dim) {\n  var visualTypesMap = {};\n  zrUtil.each(stateList, function (state) {\n    var visualTypes = VisualMapping.prepareVisualTypes(visualMappings[state]);\n    visualTypesMap[state] = visualTypes;\n  });\n\n  function progress(params, data) {\n    if (dim != null) {\n      dim = data.getDimension(dim);\n    }\n\n    function getVisual(key) {\n      return data.getItemVisual(dataIndex, key);\n    }\n\n    function setVisual(key, value) {\n      data.setItemVisual(dataIndex, key, value);\n    }\n\n    for (var dataIndex = params.start; dataIndex < params.end; dataIndex++) {\n      var rawDataItem = data.getRawDataItem(dataIndex); // Consider performance\n\n      if (rawDataItem && rawDataItem.visualMap === false) {\n        return;\n      }\n\n      var value = dim != null ? data.get(dim, dataIndex, true) : dataIndex;\n      var valueState = getValueState(value);\n      var mappings = visualMappings[valueState];\n      var visualTypes = visualTypesMap[valueState];\n\n      for (var i = 0, len = visualTypes.length; i < len; i++) {\n        var type = visualTypes[i];\n        mappings[type] && mappings[type].applyVisual(value, getVisual, setVisual);\n      }\n    }\n  }\n\n  return {\n    progress: progress\n  };\n}\n\nexports.createVisualMappings = createVisualMappings;\nexports.replaceVisualOption = replaceVisualOption;\nexports.applyVisual = applyVisual;\nexports.incrementalApplyVisual = incrementalApplyVisual;","/* @preserve\n * Leaflet 1.6.0, a JS library for interactive maps. http://leafletjs.com\n * (c) 2010-2019 Vladimir Agafonkin, (c) 2010-2011 CloudMade\n */\n\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n\ttypeof define === 'function' && define.amd ? define(['exports'], factory) :\n\t(factory((global.L = {})));\n}(this, (function (exports) { 'use strict';\n\nvar version = \"1.6.0\";\n\n/*\r\n * @namespace Util\r\n *\r\n * Various utility functions, used by Leaflet internally.\r\n */\r\n\r\nvar freeze = Object.freeze;\r\nObject.freeze = function (obj) { return obj; };\r\n\r\n// @function extend(dest: Object, src?: Object): Object\r\n// Merges the properties of the `src` object (or multiple objects) into `dest` object and returns the latter. Has an `L.extend` shortcut.\r\nfunction extend(dest) {\r\n\tvar i, j, len, src;\r\n\r\n\tfor (j = 1, len = arguments.length; j < len; j++) {\r\n\t\tsrc = arguments[j];\r\n\t\tfor (i in src) {\r\n\t\t\tdest[i] = src[i];\r\n\t\t}\r\n\t}\r\n\treturn dest;\r\n}\r\n\r\n// @function create(proto: Object, properties?: Object): Object\r\n// Compatibility polyfill for [Object.create](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/create)\r\nvar create = Object.create || (function () {\r\n\tfunction F() {}\r\n\treturn function (proto) {\r\n\t\tF.prototype = proto;\r\n\t\treturn new F();\r\n\t};\r\n})();\r\n\r\n// @function bind(fn: Function, …): Function\r\n// Returns a new function bound to the arguments passed, like [Function.prototype.bind](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Function/bind).\r\n// Has a `L.bind()` shortcut.\r\nfunction bind(fn, obj) {\r\n\tvar slice = Array.prototype.slice;\r\n\r\n\tif (fn.bind) {\r\n\t\treturn fn.bind.apply(fn, slice.call(arguments, 1));\r\n\t}\r\n\r\n\tvar args = slice.call(arguments, 2);\r\n\r\n\treturn function () {\r\n\t\treturn fn.apply(obj, args.length ? args.concat(slice.call(arguments)) : arguments);\r\n\t};\r\n}\r\n\r\n// @property lastId: Number\r\n// Last unique ID used by [`stamp()`](#util-stamp)\r\nvar lastId = 0;\r\n\r\n// @function stamp(obj: Object): Number\r\n// Returns the unique ID of an object, assigning it one if it doesn't have it.\r\nfunction stamp(obj) {\r\n\t/*eslint-disable */\r\n\tobj._leaflet_id = obj._leaflet_id || ++lastId;\r\n\treturn obj._leaflet_id;\r\n\t/* eslint-enable */\r\n}\r\n\r\n// @function throttle(fn: Function, time: Number, context: Object): Function\r\n// Returns a function which executes function `fn` with the given scope `context`\r\n// (so that the `this` keyword refers to `context` inside `fn`'s code). The function\r\n// `fn` will be called no more than one time per given amount of `time`. The arguments\r\n// received by the bound function will be any arguments passed when binding the\r\n// function, followed by any arguments passed when invoking the bound function.\r\n// Has an `L.throttle` shortcut.\r\nfunction throttle(fn, time, context) {\r\n\tvar lock, args, wrapperFn, later;\r\n\r\n\tlater = function () {\r\n\t\t// reset lock and call if queued\r\n\t\tlock = false;\r\n\t\tif (args) {\r\n\t\t\twrapperFn.apply(context, args);\r\n\t\t\targs = false;\r\n\t\t}\r\n\t};\r\n\r\n\twrapperFn = function () {\r\n\t\tif (lock) {\r\n\t\t\t// called too soon, queue to call later\r\n\t\t\targs = arguments;\r\n\r\n\t\t} else {\r\n\t\t\t// call and lock until later\r\n\t\t\tfn.apply(context, arguments);\r\n\t\t\tsetTimeout(later, time);\r\n\t\t\tlock = true;\r\n\t\t}\r\n\t};\r\n\r\n\treturn wrapperFn;\r\n}\r\n\r\n// @function wrapNum(num: Number, range: Number[], includeMax?: Boolean): Number\r\n// Returns the number `num` modulo `range` in such a way so it lies within\r\n// `range[0]` and `range[1]`. The returned value will be always smaller than\r\n// `range[1]` unless `includeMax` is set to `true`.\r\nfunction wrapNum(x, range, includeMax) {\r\n\tvar max = range[1],\r\n\t    min = range[0],\r\n\t    d = max - min;\r\n\treturn x === max && includeMax ? x : ((x - min) % d + d) % d + min;\r\n}\r\n\r\n// @function falseFn(): Function\r\n// Returns a function which always returns `false`.\r\nfunction falseFn() { return false; }\r\n\r\n// @function formatNum(num: Number, digits?: Number): Number\r\n// Returns the number `num` rounded to `digits` decimals, or to 6 decimals by default.\r\nfunction formatNum(num, digits) {\r\n\tvar pow = Math.pow(10, (digits === undefined ? 6 : digits));\r\n\treturn Math.round(num * pow) / pow;\r\n}\r\n\r\n// @function trim(str: String): String\r\n// Compatibility polyfill for [String.prototype.trim](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String/Trim)\r\nfunction trim(str) {\r\n\treturn str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\r\n}\r\n\r\n// @function splitWords(str: String): String[]\r\n// Trims and splits the string on whitespace and returns the array of parts.\r\nfunction splitWords(str) {\r\n\treturn trim(str).split(/\\s+/);\r\n}\r\n\r\n// @function setOptions(obj: Object, options: Object): Object\r\n// Merges the given properties to the `options` of the `obj` object, returning the resulting options. See `Class options`. Has an `L.setOptions` shortcut.\r\nfunction setOptions(obj, options) {\r\n\tif (!obj.hasOwnProperty('options')) {\r\n\t\tobj.options = obj.options ? create(obj.options) : {};\r\n\t}\r\n\tfor (var i in options) {\r\n\t\tobj.options[i] = options[i];\r\n\t}\r\n\treturn obj.options;\r\n}\r\n\r\n// @function getParamString(obj: Object, existingUrl?: String, uppercase?: Boolean): String\r\n// Converts an object into a parameter URL string, e.g. `{a: \"foo\", b: \"bar\"}`\r\n// translates to `'?a=foo&b=bar'`. If `existingUrl` is set, the parameters will\r\n// be appended at the end. If `uppercase` is `true`, the parameter names will\r\n// be uppercased (e.g. `'?A=foo&B=bar'`)\r\nfunction getParamString(obj, existingUrl, uppercase) {\r\n\tvar params = [];\r\n\tfor (var i in obj) {\r\n\t\tparams.push(encodeURIComponent(uppercase ? i.toUpperCase() : i) + '=' + encodeURIComponent(obj[i]));\r\n\t}\r\n\treturn ((!existingUrl || existingUrl.indexOf('?') === -1) ? '?' : '&') + params.join('&');\r\n}\r\n\r\nvar templateRe = /\\{ *([\\w_-]+) *\\}/g;\r\n\r\n// @function template(str: String, data: Object): String\r\n// Simple templating facility, accepts a template string of the form `'Hello {a}, {b}'`\r\n// and a data object like `{a: 'foo', b: 'bar'}`, returns evaluated string\r\n// `('Hello foo, bar')`. You can also specify functions instead of strings for\r\n// data values — they will be evaluated passing `data` as an argument.\r\nfunction template(str, data) {\r\n\treturn str.replace(templateRe, function (str, key) {\r\n\t\tvar value = data[key];\r\n\r\n\t\tif (value === undefined) {\r\n\t\t\tthrow new Error('No value provided for variable ' + str);\r\n\r\n\t\t} else if (typeof value === 'function') {\r\n\t\t\tvalue = value(data);\r\n\t\t}\r\n\t\treturn value;\r\n\t});\r\n}\r\n\r\n// @function isArray(obj): Boolean\r\n// Compatibility polyfill for [Array.isArray](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray)\r\nvar isArray = Array.isArray || function (obj) {\r\n\treturn (Object.prototype.toString.call(obj) === '[object Array]');\r\n};\r\n\r\n// @function indexOf(array: Array, el: Object): Number\r\n// Compatibility polyfill for [Array.prototype.indexOf](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf)\r\nfunction indexOf(array, el) {\r\n\tfor (var i = 0; i < array.length; i++) {\r\n\t\tif (array[i] === el) { return i; }\r\n\t}\r\n\treturn -1;\r\n}\r\n\r\n// @property emptyImageUrl: String\r\n// Data URI string containing a base64-encoded empty GIF image.\r\n// Used as a hack to free memory from unused images on WebKit-powered\r\n// mobile devices (by setting image `src` to this string).\r\nvar emptyImageUrl = 'data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=';\r\n\r\n// inspired by http://paulirish.com/2011/requestanimationframe-for-smart-animating/\r\n\r\nfunction getPrefixed(name) {\r\n\treturn window['webkit' + name] || window['moz' + name] || window['ms' + name];\r\n}\r\n\r\nvar lastTime = 0;\r\n\r\n// fallback for IE 7-8\r\nfunction timeoutDefer(fn) {\r\n\tvar time = +new Date(),\r\n\t    timeToCall = Math.max(0, 16 - (time - lastTime));\r\n\r\n\tlastTime = time + timeToCall;\r\n\treturn window.setTimeout(fn, timeToCall);\r\n}\r\n\r\nvar requestFn = window.requestAnimationFrame || getPrefixed('RequestAnimationFrame') || timeoutDefer;\r\nvar cancelFn = window.cancelAnimationFrame || getPrefixed('CancelAnimationFrame') ||\r\n\t\tgetPrefixed('CancelRequestAnimationFrame') || function (id) { window.clearTimeout(id); };\r\n\r\n// @function requestAnimFrame(fn: Function, context?: Object, immediate?: Boolean): Number\r\n// Schedules `fn` to be executed when the browser repaints. `fn` is bound to\r\n// `context` if given. When `immediate` is set, `fn` is called immediately if\r\n// the browser doesn't have native support for\r\n// [`window.requestAnimationFrame`](https://developer.mozilla.org/docs/Web/API/window/requestAnimationFrame),\r\n// otherwise it's delayed. Returns a request ID that can be used to cancel the request.\r\nfunction requestAnimFrame(fn, context, immediate) {\r\n\tif (immediate && requestFn === timeoutDefer) {\r\n\t\tfn.call(context);\r\n\t} else {\r\n\t\treturn requestFn.call(window, bind(fn, context));\r\n\t}\r\n}\r\n\r\n// @function cancelAnimFrame(id: Number): undefined\r\n// Cancels a previous `requestAnimFrame`. See also [window.cancelAnimationFrame](https://developer.mozilla.org/docs/Web/API/window/cancelAnimationFrame).\r\nfunction cancelAnimFrame(id) {\r\n\tif (id) {\r\n\t\tcancelFn.call(window, id);\r\n\t}\r\n}\r\n\n\nvar Util = (Object.freeze || Object)({\n\tfreeze: freeze,\n\textend: extend,\n\tcreate: create,\n\tbind: bind,\n\tlastId: lastId,\n\tstamp: stamp,\n\tthrottle: throttle,\n\twrapNum: wrapNum,\n\tfalseFn: falseFn,\n\tformatNum: formatNum,\n\ttrim: trim,\n\tsplitWords: splitWords,\n\tsetOptions: setOptions,\n\tgetParamString: getParamString,\n\ttemplate: template,\n\tisArray: isArray,\n\tindexOf: indexOf,\n\temptyImageUrl: emptyImageUrl,\n\trequestFn: requestFn,\n\tcancelFn: cancelFn,\n\trequestAnimFrame: requestAnimFrame,\n\tcancelAnimFrame: cancelAnimFrame\n});\n\n// @class Class\r\n// @aka L.Class\r\n\r\n// @section\r\n// @uninheritable\r\n\r\n// Thanks to John Resig and Dean Edwards for inspiration!\r\n\r\nfunction Class() {}\r\n\r\nClass.extend = function (props) {\r\n\r\n\t// @function extend(props: Object): Function\r\n\t// [Extends the current class](#class-inheritance) given the properties to be included.\r\n\t// Returns a Javascript function that is a class constructor (to be called with `new`).\r\n\tvar NewClass = function () {\r\n\r\n\t\t// call the constructor\r\n\t\tif (this.initialize) {\r\n\t\t\tthis.initialize.apply(this, arguments);\r\n\t\t}\r\n\r\n\t\t// call all constructor hooks\r\n\t\tthis.callInitHooks();\r\n\t};\r\n\r\n\tvar parentProto = NewClass.__super__ = this.prototype;\r\n\r\n\tvar proto = create(parentProto);\r\n\tproto.constructor = NewClass;\r\n\r\n\tNewClass.prototype = proto;\r\n\r\n\t// inherit parent's statics\r\n\tfor (var i in this) {\r\n\t\tif (this.hasOwnProperty(i) && i !== 'prototype' && i !== '__super__') {\r\n\t\t\tNewClass[i] = this[i];\r\n\t\t}\r\n\t}\r\n\r\n\t// mix static properties into the class\r\n\tif (props.statics) {\r\n\t\textend(NewClass, props.statics);\r\n\t\tdelete props.statics;\r\n\t}\r\n\r\n\t// mix includes into the prototype\r\n\tif (props.includes) {\r\n\t\tcheckDeprecatedMixinEvents(props.includes);\r\n\t\textend.apply(null, [proto].concat(props.includes));\r\n\t\tdelete props.includes;\r\n\t}\r\n\r\n\t// merge options\r\n\tif (proto.options) {\r\n\t\tprops.options = extend(create(proto.options), props.options);\r\n\t}\r\n\r\n\t// mix given properties into the prototype\r\n\textend(proto, props);\r\n\r\n\tproto._initHooks = [];\r\n\r\n\t// add method for calling all hooks\r\n\tproto.callInitHooks = function () {\r\n\r\n\t\tif (this._initHooksCalled) { return; }\r\n\r\n\t\tif (parentProto.callInitHooks) {\r\n\t\t\tparentProto.callInitHooks.call(this);\r\n\t\t}\r\n\r\n\t\tthis._initHooksCalled = true;\r\n\r\n\t\tfor (var i = 0, len = proto._initHooks.length; i < len; i++) {\r\n\t\t\tproto._initHooks[i].call(this);\r\n\t\t}\r\n\t};\r\n\r\n\treturn NewClass;\r\n};\r\n\r\n\r\n// @function include(properties: Object): this\r\n// [Includes a mixin](#class-includes) into the current class.\r\nClass.include = function (props) {\r\n\textend(this.prototype, props);\r\n\treturn this;\r\n};\r\n\r\n// @function mergeOptions(options: Object): this\r\n// [Merges `options`](#class-options) into the defaults of the class.\r\nClass.mergeOptions = function (options) {\r\n\textend(this.prototype.options, options);\r\n\treturn this;\r\n};\r\n\r\n// @function addInitHook(fn: Function): this\r\n// Adds a [constructor hook](#class-constructor-hooks) to the class.\r\nClass.addInitHook = function (fn) { // (Function) || (String, args...)\r\n\tvar args = Array.prototype.slice.call(arguments, 1);\r\n\r\n\tvar init = typeof fn === 'function' ? fn : function () {\r\n\t\tthis[fn].apply(this, args);\r\n\t};\r\n\r\n\tthis.prototype._initHooks = this.prototype._initHooks || [];\r\n\tthis.prototype._initHooks.push(init);\r\n\treturn this;\r\n};\r\n\r\nfunction checkDeprecatedMixinEvents(includes) {\r\n\tif (typeof L === 'undefined' || !L || !L.Mixin) { return; }\r\n\r\n\tincludes = isArray(includes) ? includes : [includes];\r\n\r\n\tfor (var i = 0; i < includes.length; i++) {\r\n\t\tif (includes[i] === L.Mixin.Events) {\r\n\t\t\tconsole.warn('Deprecated include of L.Mixin.Events: ' +\r\n\t\t\t\t'this property will be removed in future releases, ' +\r\n\t\t\t\t'please inherit from L.Evented instead.', new Error().stack);\r\n\t\t}\r\n\t}\r\n}\n\n/*\r\n * @class Evented\r\n * @aka L.Evented\r\n * @inherits Class\r\n *\r\n * A set of methods shared between event-powered classes (like `Map` and `Marker`). Generally, events allow you to execute some function when something happens with an object (e.g. the user clicks on the map, causing the map to fire `'click'` event).\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * map.on('click', function(e) {\r\n * \talert(e.latlng);\r\n * } );\r\n * ```\r\n *\r\n * Leaflet deals with event listeners by reference, so if you want to add a listener and then remove it, define it as a function:\r\n *\r\n * ```js\r\n * function onClick(e) { ... }\r\n *\r\n * map.on('click', onClick);\r\n * map.off('click', onClick);\r\n * ```\r\n */\r\n\r\nvar Events = {\r\n\t/* @method on(type: String, fn: Function, context?: Object): this\r\n\t * Adds a listener function (`fn`) to a particular event type of the object. You can optionally specify the context of the listener (object the this keyword will point to). You can also pass several space-separated types (e.g. `'click dblclick'`).\r\n\t *\r\n\t * @alternative\r\n\t * @method on(eventMap: Object): this\r\n\t * Adds a set of type/listener pairs, e.g. `{click: onClick, mousemove: onMouseMove}`\r\n\t */\r\n\ton: function (types, fn, context) {\r\n\r\n\t\t// types can be a map of types/handlers\r\n\t\tif (typeof types === 'object') {\r\n\t\t\tfor (var type in types) {\r\n\t\t\t\t// we don't process space-separated events here for performance;\r\n\t\t\t\t// it's a hot path since Layer uses the on(obj) syntax\r\n\t\t\t\tthis._on(type, types[type], fn);\r\n\t\t\t}\r\n\r\n\t\t} else {\r\n\t\t\t// types can be a string of space-separated words\r\n\t\t\ttypes = splitWords(types);\r\n\r\n\t\t\tfor (var i = 0, len = types.length; i < len; i++) {\r\n\t\t\t\tthis._on(types[i], fn, context);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t/* @method off(type: String, fn?: Function, context?: Object): this\r\n\t * Removes a previously added listener function. If no function is specified, it will remove all the listeners of that particular event from the object. Note that if you passed a custom context to `on`, you must pass the same context to `off` in order to remove the listener.\r\n\t *\r\n\t * @alternative\r\n\t * @method off(eventMap: Object): this\r\n\t * Removes a set of type/listener pairs.\r\n\t *\r\n\t * @alternative\r\n\t * @method off: this\r\n\t * Removes all listeners to all events on the object. This includes implicitly attached events.\r\n\t */\r\n\toff: function (types, fn, context) {\r\n\r\n\t\tif (!types) {\r\n\t\t\t// clear all listeners if called without arguments\r\n\t\t\tdelete this._events;\r\n\r\n\t\t} else if (typeof types === 'object') {\r\n\t\t\tfor (var type in types) {\r\n\t\t\t\tthis._off(type, types[type], fn);\r\n\t\t\t}\r\n\r\n\t\t} else {\r\n\t\t\ttypes = splitWords(types);\r\n\r\n\t\t\tfor (var i = 0, len = types.length; i < len; i++) {\r\n\t\t\t\tthis._off(types[i], fn, context);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// attach listener (without syntactic sugar now)\r\n\t_on: function (type, fn, context) {\r\n\t\tthis._events = this._events || {};\r\n\r\n\t\t/* get/init listeners for type */\r\n\t\tvar typeListeners = this._events[type];\r\n\t\tif (!typeListeners) {\r\n\t\t\ttypeListeners = [];\r\n\t\t\tthis._events[type] = typeListeners;\r\n\t\t}\r\n\r\n\t\tif (context === this) {\r\n\t\t\t// Less memory footprint.\r\n\t\t\tcontext = undefined;\r\n\t\t}\r\n\t\tvar newListener = {fn: fn, ctx: context},\r\n\t\t    listeners = typeListeners;\r\n\r\n\t\t// check if fn already there\r\n\t\tfor (var i = 0, len = listeners.length; i < len; i++) {\r\n\t\t\tif (listeners[i].fn === fn && listeners[i].ctx === context) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlisteners.push(newListener);\r\n\t},\r\n\r\n\t_off: function (type, fn, context) {\r\n\t\tvar listeners,\r\n\t\t    i,\r\n\t\t    len;\r\n\r\n\t\tif (!this._events) { return; }\r\n\r\n\t\tlisteners = this._events[type];\r\n\r\n\t\tif (!listeners) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (!fn) {\r\n\t\t\t// Set all removed listeners to noop so they are not called if remove happens in fire\r\n\t\t\tfor (i = 0, len = listeners.length; i < len; i++) {\r\n\t\t\t\tlisteners[i].fn = falseFn;\r\n\t\t\t}\r\n\t\t\t// clear all listeners for a type if function isn't specified\r\n\t\t\tdelete this._events[type];\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (context === this) {\r\n\t\t\tcontext = undefined;\r\n\t\t}\r\n\r\n\t\tif (listeners) {\r\n\r\n\t\t\t// find fn and remove it\r\n\t\t\tfor (i = 0, len = listeners.length; i < len; i++) {\r\n\t\t\t\tvar l = listeners[i];\r\n\t\t\t\tif (l.ctx !== context) { continue; }\r\n\t\t\t\tif (l.fn === fn) {\r\n\r\n\t\t\t\t\t// set the removed listener to noop so that's not called if remove happens in fire\r\n\t\t\t\t\tl.fn = falseFn;\r\n\r\n\t\t\t\t\tif (this._firingCount) {\r\n\t\t\t\t\t\t/* copy array in case events are being fired */\r\n\t\t\t\t\t\tthis._events[type] = listeners = listeners.slice();\r\n\t\t\t\t\t}\r\n\t\t\t\t\tlisteners.splice(i, 1);\r\n\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t// @method fire(type: String, data?: Object, propagate?: Boolean): this\r\n\t// Fires an event of the specified type. You can optionally provide an data\r\n\t// object — the first argument of the listener function will contain its\r\n\t// properties. The event can optionally be propagated to event parents.\r\n\tfire: function (type, data, propagate) {\r\n\t\tif (!this.listens(type, propagate)) { return this; }\r\n\r\n\t\tvar event = extend({}, data, {\r\n\t\t\ttype: type,\r\n\t\t\ttarget: this,\r\n\t\t\tsourceTarget: data && data.sourceTarget || this\r\n\t\t});\r\n\r\n\t\tif (this._events) {\r\n\t\t\tvar listeners = this._events[type];\r\n\r\n\t\t\tif (listeners) {\r\n\t\t\t\tthis._firingCount = (this._firingCount + 1) || 1;\r\n\t\t\t\tfor (var i = 0, len = listeners.length; i < len; i++) {\r\n\t\t\t\t\tvar l = listeners[i];\r\n\t\t\t\t\tl.fn.call(l.ctx || this, event);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis._firingCount--;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (propagate) {\r\n\t\t\t// propagate the event to parents (set with addEventParent)\r\n\t\t\tthis._propagateEvent(event);\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method listens(type: String): Boolean\r\n\t// Returns `true` if a particular event type has any listeners attached to it.\r\n\tlistens: function (type, propagate) {\r\n\t\tvar listeners = this._events && this._events[type];\r\n\t\tif (listeners && listeners.length) { return true; }\r\n\r\n\t\tif (propagate) {\r\n\t\t\t// also check parents for listeners if event propagates\r\n\t\t\tfor (var id in this._eventParents) {\r\n\t\t\t\tif (this._eventParents[id].listens(type, propagate)) { return true; }\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn false;\r\n\t},\r\n\r\n\t// @method once(…): this\r\n\t// Behaves as [`on(…)`](#evented-on), except the listener will only get fired once and then removed.\r\n\tonce: function (types, fn, context) {\r\n\r\n\t\tif (typeof types === 'object') {\r\n\t\t\tfor (var type in types) {\r\n\t\t\t\tthis.once(type, types[type], fn);\r\n\t\t\t}\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\tvar handler = bind(function () {\r\n\t\t\tthis\r\n\t\t\t    .off(types, fn, context)\r\n\t\t\t    .off(types, handler, context);\r\n\t\t}, this);\r\n\r\n\t\t// add a listener that's executed once and removed after that\r\n\t\treturn this\r\n\t\t    .on(types, fn, context)\r\n\t\t    .on(types, handler, context);\r\n\t},\r\n\r\n\t// @method addEventParent(obj: Evented): this\r\n\t// Adds an event parent - an `Evented` that will receive propagated events\r\n\taddEventParent: function (obj) {\r\n\t\tthis._eventParents = this._eventParents || {};\r\n\t\tthis._eventParents[stamp(obj)] = obj;\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method removeEventParent(obj: Evented): this\r\n\t// Removes an event parent, so it will stop receiving propagated events\r\n\tremoveEventParent: function (obj) {\r\n\t\tif (this._eventParents) {\r\n\t\t\tdelete this._eventParents[stamp(obj)];\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t_propagateEvent: function (e) {\r\n\t\tfor (var id in this._eventParents) {\r\n\t\t\tthis._eventParents[id].fire(e.type, extend({\r\n\t\t\t\tlayer: e.target,\r\n\t\t\t\tpropagatedFrom: e.target\r\n\t\t\t}, e), true);\r\n\t\t}\r\n\t}\r\n};\r\n\r\n// aliases; we should ditch those eventually\r\n\r\n// @method addEventListener(…): this\r\n// Alias to [`on(…)`](#evented-on)\r\nEvents.addEventListener = Events.on;\r\n\r\n// @method removeEventListener(…): this\r\n// Alias to [`off(…)`](#evented-off)\r\n\r\n// @method clearAllEventListeners(…): this\r\n// Alias to [`off()`](#evented-off)\r\nEvents.removeEventListener = Events.clearAllEventListeners = Events.off;\r\n\r\n// @method addOneTimeEventListener(…): this\r\n// Alias to [`once(…)`](#evented-once)\r\nEvents.addOneTimeEventListener = Events.once;\r\n\r\n// @method fireEvent(…): this\r\n// Alias to [`fire(…)`](#evented-fire)\r\nEvents.fireEvent = Events.fire;\r\n\r\n// @method hasEventListeners(…): Boolean\r\n// Alias to [`listens(…)`](#evented-listens)\r\nEvents.hasEventListeners = Events.listens;\r\n\r\nvar Evented = Class.extend(Events);\n\n/*\r\n * @class Point\r\n * @aka L.Point\r\n *\r\n * Represents a point with `x` and `y` coordinates in pixels.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * var point = L.point(200, 300);\r\n * ```\r\n *\r\n * All Leaflet methods and options that accept `Point` objects also accept them in a simple Array form (unless noted otherwise), so these lines are equivalent:\r\n *\r\n * ```js\r\n * map.panBy([200, 300]);\r\n * map.panBy(L.point(200, 300));\r\n * ```\r\n *\r\n * Note that `Point` does not inherit from Leafet's `Class` object,\r\n * which means new classes can't inherit from it, and new methods\r\n * can't be added to it with the `include` function.\r\n */\r\n\r\nfunction Point(x, y, round) {\r\n\t// @property x: Number; The `x` coordinate of the point\r\n\tthis.x = (round ? Math.round(x) : x);\r\n\t// @property y: Number; The `y` coordinate of the point\r\n\tthis.y = (round ? Math.round(y) : y);\r\n}\r\n\r\nvar trunc = Math.trunc || function (v) {\r\n\treturn v > 0 ? Math.floor(v) : Math.ceil(v);\r\n};\r\n\r\nPoint.prototype = {\r\n\r\n\t// @method clone(): Point\r\n\t// Returns a copy of the current point.\r\n\tclone: function () {\r\n\t\treturn new Point(this.x, this.y);\r\n\t},\r\n\r\n\t// @method add(otherPoint: Point): Point\r\n\t// Returns the result of addition of the current and the given points.\r\n\tadd: function (point) {\r\n\t\t// non-destructive, returns a new point\r\n\t\treturn this.clone()._add(toPoint(point));\r\n\t},\r\n\r\n\t_add: function (point) {\r\n\t\t// destructive, used directly for performance in situations where it's safe to modify existing point\r\n\t\tthis.x += point.x;\r\n\t\tthis.y += point.y;\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method subtract(otherPoint: Point): Point\r\n\t// Returns the result of subtraction of the given point from the current.\r\n\tsubtract: function (point) {\r\n\t\treturn this.clone()._subtract(toPoint(point));\r\n\t},\r\n\r\n\t_subtract: function (point) {\r\n\t\tthis.x -= point.x;\r\n\t\tthis.y -= point.y;\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method divideBy(num: Number): Point\r\n\t// Returns the result of division of the current point by the given number.\r\n\tdivideBy: function (num) {\r\n\t\treturn this.clone()._divideBy(num);\r\n\t},\r\n\r\n\t_divideBy: function (num) {\r\n\t\tthis.x /= num;\r\n\t\tthis.y /= num;\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method multiplyBy(num: Number): Point\r\n\t// Returns the result of multiplication of the current point by the given number.\r\n\tmultiplyBy: function (num) {\r\n\t\treturn this.clone()._multiplyBy(num);\r\n\t},\r\n\r\n\t_multiplyBy: function (num) {\r\n\t\tthis.x *= num;\r\n\t\tthis.y *= num;\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method scaleBy(scale: Point): Point\r\n\t// Multiply each coordinate of the current point by each coordinate of\r\n\t// `scale`. In linear algebra terms, multiply the point by the\r\n\t// [scaling matrix](https://en.wikipedia.org/wiki/Scaling_%28geometry%29#Matrix_representation)\r\n\t// defined by `scale`.\r\n\tscaleBy: function (point) {\r\n\t\treturn new Point(this.x * point.x, this.y * point.y);\r\n\t},\r\n\r\n\t// @method unscaleBy(scale: Point): Point\r\n\t// Inverse of `scaleBy`. Divide each coordinate of the current point by\r\n\t// each coordinate of `scale`.\r\n\tunscaleBy: function (point) {\r\n\t\treturn new Point(this.x / point.x, this.y / point.y);\r\n\t},\r\n\r\n\t// @method round(): Point\r\n\t// Returns a copy of the current point with rounded coordinates.\r\n\tround: function () {\r\n\t\treturn this.clone()._round();\r\n\t},\r\n\r\n\t_round: function () {\r\n\t\tthis.x = Math.round(this.x);\r\n\t\tthis.y = Math.round(this.y);\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method floor(): Point\r\n\t// Returns a copy of the current point with floored coordinates (rounded down).\r\n\tfloor: function () {\r\n\t\treturn this.clone()._floor();\r\n\t},\r\n\r\n\t_floor: function () {\r\n\t\tthis.x = Math.floor(this.x);\r\n\t\tthis.y = Math.floor(this.y);\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method ceil(): Point\r\n\t// Returns a copy of the current point with ceiled coordinates (rounded up).\r\n\tceil: function () {\r\n\t\treturn this.clone()._ceil();\r\n\t},\r\n\r\n\t_ceil: function () {\r\n\t\tthis.x = Math.ceil(this.x);\r\n\t\tthis.y = Math.ceil(this.y);\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method trunc(): Point\r\n\t// Returns a copy of the current point with truncated coordinates (rounded towards zero).\r\n\ttrunc: function () {\r\n\t\treturn this.clone()._trunc();\r\n\t},\r\n\r\n\t_trunc: function () {\r\n\t\tthis.x = trunc(this.x);\r\n\t\tthis.y = trunc(this.y);\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method distanceTo(otherPoint: Point): Number\r\n\t// Returns the cartesian distance between the current and the given points.\r\n\tdistanceTo: function (point) {\r\n\t\tpoint = toPoint(point);\r\n\r\n\t\tvar x = point.x - this.x,\r\n\t\t    y = point.y - this.y;\r\n\r\n\t\treturn Math.sqrt(x * x + y * y);\r\n\t},\r\n\r\n\t// @method equals(otherPoint: Point): Boolean\r\n\t// Returns `true` if the given point has the same coordinates.\r\n\tequals: function (point) {\r\n\t\tpoint = toPoint(point);\r\n\r\n\t\treturn point.x === this.x &&\r\n\t\t       point.y === this.y;\r\n\t},\r\n\r\n\t// @method contains(otherPoint: Point): Boolean\r\n\t// Returns `true` if both coordinates of the given point are less than the corresponding current point coordinates (in absolute values).\r\n\tcontains: function (point) {\r\n\t\tpoint = toPoint(point);\r\n\r\n\t\treturn Math.abs(point.x) <= Math.abs(this.x) &&\r\n\t\t       Math.abs(point.y) <= Math.abs(this.y);\r\n\t},\r\n\r\n\t// @method toString(): String\r\n\t// Returns a string representation of the point for debugging purposes.\r\n\ttoString: function () {\r\n\t\treturn 'Point(' +\r\n\t\t        formatNum(this.x) + ', ' +\r\n\t\t        formatNum(this.y) + ')';\r\n\t}\r\n};\r\n\r\n// @factory L.point(x: Number, y: Number, round?: Boolean)\r\n// Creates a Point object with the given `x` and `y` coordinates. If optional `round` is set to true, rounds the `x` and `y` values.\r\n\r\n// @alternative\r\n// @factory L.point(coords: Number[])\r\n// Expects an array of the form `[x, y]` instead.\r\n\r\n// @alternative\r\n// @factory L.point(coords: Object)\r\n// Expects a plain object of the form `{x: Number, y: Number}` instead.\r\nfunction toPoint(x, y, round) {\r\n\tif (x instanceof Point) {\r\n\t\treturn x;\r\n\t}\r\n\tif (isArray(x)) {\r\n\t\treturn new Point(x[0], x[1]);\r\n\t}\r\n\tif (x === undefined || x === null) {\r\n\t\treturn x;\r\n\t}\r\n\tif (typeof x === 'object' && 'x' in x && 'y' in x) {\r\n\t\treturn new Point(x.x, x.y);\r\n\t}\r\n\treturn new Point(x, y, round);\r\n}\n\n/*\r\n * @class Bounds\r\n * @aka L.Bounds\r\n *\r\n * Represents a rectangular area in pixel coordinates.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * var p1 = L.point(10, 10),\r\n * p2 = L.point(40, 60),\r\n * bounds = L.bounds(p1, p2);\r\n * ```\r\n *\r\n * All Leaflet methods that accept `Bounds` objects also accept them in a simple Array form (unless noted otherwise), so the bounds example above can be passed like this:\r\n *\r\n * ```js\r\n * otherBounds.intersects([[10, 10], [40, 60]]);\r\n * ```\r\n *\r\n * Note that `Bounds` does not inherit from Leafet's `Class` object,\r\n * which means new classes can't inherit from it, and new methods\r\n * can't be added to it with the `include` function.\r\n */\r\n\r\nfunction Bounds(a, b) {\r\n\tif (!a) { return; }\r\n\r\n\tvar points = b ? [a, b] : a;\r\n\r\n\tfor (var i = 0, len = points.length; i < len; i++) {\r\n\t\tthis.extend(points[i]);\r\n\t}\r\n}\r\n\r\nBounds.prototype = {\r\n\t// @method extend(point: Point): this\r\n\t// Extends the bounds to contain the given point.\r\n\textend: function (point) { // (Point)\r\n\t\tpoint = toPoint(point);\r\n\r\n\t\t// @property min: Point\r\n\t\t// The top left corner of the rectangle.\r\n\t\t// @property max: Point\r\n\t\t// The bottom right corner of the rectangle.\r\n\t\tif (!this.min && !this.max) {\r\n\t\t\tthis.min = point.clone();\r\n\t\t\tthis.max = point.clone();\r\n\t\t} else {\r\n\t\t\tthis.min.x = Math.min(point.x, this.min.x);\r\n\t\t\tthis.max.x = Math.max(point.x, this.max.x);\r\n\t\t\tthis.min.y = Math.min(point.y, this.min.y);\r\n\t\t\tthis.max.y = Math.max(point.y, this.max.y);\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method getCenter(round?: Boolean): Point\r\n\t// Returns the center point of the bounds.\r\n\tgetCenter: function (round) {\r\n\t\treturn new Point(\r\n\t\t        (this.min.x + this.max.x) / 2,\r\n\t\t        (this.min.y + this.max.y) / 2, round);\r\n\t},\r\n\r\n\t// @method getBottomLeft(): Point\r\n\t// Returns the bottom-left point of the bounds.\r\n\tgetBottomLeft: function () {\r\n\t\treturn new Point(this.min.x, this.max.y);\r\n\t},\r\n\r\n\t// @method getTopRight(): Point\r\n\t// Returns the top-right point of the bounds.\r\n\tgetTopRight: function () { // -> Point\r\n\t\treturn new Point(this.max.x, this.min.y);\r\n\t},\r\n\r\n\t// @method getTopLeft(): Point\r\n\t// Returns the top-left point of the bounds (i.e. [`this.min`](#bounds-min)).\r\n\tgetTopLeft: function () {\r\n\t\treturn this.min; // left, top\r\n\t},\r\n\r\n\t// @method getBottomRight(): Point\r\n\t// Returns the bottom-right point of the bounds (i.e. [`this.max`](#bounds-max)).\r\n\tgetBottomRight: function () {\r\n\t\treturn this.max; // right, bottom\r\n\t},\r\n\r\n\t// @method getSize(): Point\r\n\t// Returns the size of the given bounds\r\n\tgetSize: function () {\r\n\t\treturn this.max.subtract(this.min);\r\n\t},\r\n\r\n\t// @method contains(otherBounds: Bounds): Boolean\r\n\t// Returns `true` if the rectangle contains the given one.\r\n\t// @alternative\r\n\t// @method contains(point: Point): Boolean\r\n\t// Returns `true` if the rectangle contains the given point.\r\n\tcontains: function (obj) {\r\n\t\tvar min, max;\r\n\r\n\t\tif (typeof obj[0] === 'number' || obj instanceof Point) {\r\n\t\t\tobj = toPoint(obj);\r\n\t\t} else {\r\n\t\t\tobj = toBounds(obj);\r\n\t\t}\r\n\r\n\t\tif (obj instanceof Bounds) {\r\n\t\t\tmin = obj.min;\r\n\t\t\tmax = obj.max;\r\n\t\t} else {\r\n\t\t\tmin = max = obj;\r\n\t\t}\r\n\r\n\t\treturn (min.x >= this.min.x) &&\r\n\t\t       (max.x <= this.max.x) &&\r\n\t\t       (min.y >= this.min.y) &&\r\n\t\t       (max.y <= this.max.y);\r\n\t},\r\n\r\n\t// @method intersects(otherBounds: Bounds): Boolean\r\n\t// Returns `true` if the rectangle intersects the given bounds. Two bounds\r\n\t// intersect if they have at least one point in common.\r\n\tintersects: function (bounds) { // (Bounds) -> Boolean\r\n\t\tbounds = toBounds(bounds);\r\n\r\n\t\tvar min = this.min,\r\n\t\t    max = this.max,\r\n\t\t    min2 = bounds.min,\r\n\t\t    max2 = bounds.max,\r\n\t\t    xIntersects = (max2.x >= min.x) && (min2.x <= max.x),\r\n\t\t    yIntersects = (max2.y >= min.y) && (min2.y <= max.y);\r\n\r\n\t\treturn xIntersects && yIntersects;\r\n\t},\r\n\r\n\t// @method overlaps(otherBounds: Bounds): Boolean\r\n\t// Returns `true` if the rectangle overlaps the given bounds. Two bounds\r\n\t// overlap if their intersection is an area.\r\n\toverlaps: function (bounds) { // (Bounds) -> Boolean\r\n\t\tbounds = toBounds(bounds);\r\n\r\n\t\tvar min = this.min,\r\n\t\t    max = this.max,\r\n\t\t    min2 = bounds.min,\r\n\t\t    max2 = bounds.max,\r\n\t\t    xOverlaps = (max2.x > min.x) && (min2.x < max.x),\r\n\t\t    yOverlaps = (max2.y > min.y) && (min2.y < max.y);\r\n\r\n\t\treturn xOverlaps && yOverlaps;\r\n\t},\r\n\r\n\tisValid: function () {\r\n\t\treturn !!(this.min && this.max);\r\n\t}\r\n};\r\n\r\n\r\n// @factory L.bounds(corner1: Point, corner2: Point)\r\n// Creates a Bounds object from two corners coordinate pairs.\r\n// @alternative\r\n// @factory L.bounds(points: Point[])\r\n// Creates a Bounds object from the given array of points.\r\nfunction toBounds(a, b) {\r\n\tif (!a || a instanceof Bounds) {\r\n\t\treturn a;\r\n\t}\r\n\treturn new Bounds(a, b);\r\n}\n\n/*\r\n * @class LatLngBounds\r\n * @aka L.LatLngBounds\r\n *\r\n * Represents a rectangular geographical area on a map.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * var corner1 = L.latLng(40.712, -74.227),\r\n * corner2 = L.latLng(40.774, -74.125),\r\n * bounds = L.latLngBounds(corner1, corner2);\r\n * ```\r\n *\r\n * All Leaflet methods that accept LatLngBounds objects also accept them in a simple Array form (unless noted otherwise), so the bounds example above can be passed like this:\r\n *\r\n * ```js\r\n * map.fitBounds([\r\n * \t[40.712, -74.227],\r\n * \t[40.774, -74.125]\r\n * ]);\r\n * ```\r\n *\r\n * Caution: if the area crosses the antimeridian (often confused with the International Date Line), you must specify corners _outside_ the [-180, 180] degrees longitude range.\r\n *\r\n * Note that `LatLngBounds` does not inherit from Leafet's `Class` object,\r\n * which means new classes can't inherit from it, and new methods\r\n * can't be added to it with the `include` function.\r\n */\r\n\r\nfunction LatLngBounds(corner1, corner2) { // (LatLng, LatLng) or (LatLng[])\r\n\tif (!corner1) { return; }\r\n\r\n\tvar latlngs = corner2 ? [corner1, corner2] : corner1;\r\n\r\n\tfor (var i = 0, len = latlngs.length; i < len; i++) {\r\n\t\tthis.extend(latlngs[i]);\r\n\t}\r\n}\r\n\r\nLatLngBounds.prototype = {\r\n\r\n\t// @method extend(latlng: LatLng): this\r\n\t// Extend the bounds to contain the given point\r\n\r\n\t// @alternative\r\n\t// @method extend(otherBounds: LatLngBounds): this\r\n\t// Extend the bounds to contain the given bounds\r\n\textend: function (obj) {\r\n\t\tvar sw = this._southWest,\r\n\t\t    ne = this._northEast,\r\n\t\t    sw2, ne2;\r\n\r\n\t\tif (obj instanceof LatLng) {\r\n\t\t\tsw2 = obj;\r\n\t\t\tne2 = obj;\r\n\r\n\t\t} else if (obj instanceof LatLngBounds) {\r\n\t\t\tsw2 = obj._southWest;\r\n\t\t\tne2 = obj._northEast;\r\n\r\n\t\t\tif (!sw2 || !ne2) { return this; }\r\n\r\n\t\t} else {\r\n\t\t\treturn obj ? this.extend(toLatLng(obj) || toLatLngBounds(obj)) : this;\r\n\t\t}\r\n\r\n\t\tif (!sw && !ne) {\r\n\t\t\tthis._southWest = new LatLng(sw2.lat, sw2.lng);\r\n\t\t\tthis._northEast = new LatLng(ne2.lat, ne2.lng);\r\n\t\t} else {\r\n\t\t\tsw.lat = Math.min(sw2.lat, sw.lat);\r\n\t\t\tsw.lng = Math.min(sw2.lng, sw.lng);\r\n\t\t\tne.lat = Math.max(ne2.lat, ne.lat);\r\n\t\t\tne.lng = Math.max(ne2.lng, ne.lng);\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method pad(bufferRatio: Number): LatLngBounds\r\n\t// Returns bounds created by extending or retracting the current bounds by a given ratio in each direction.\r\n\t// For example, a ratio of 0.5 extends the bounds by 50% in each direction.\r\n\t// Negative values will retract the bounds.\r\n\tpad: function (bufferRatio) {\r\n\t\tvar sw = this._southWest,\r\n\t\t    ne = this._northEast,\r\n\t\t    heightBuffer = Math.abs(sw.lat - ne.lat) * bufferRatio,\r\n\t\t    widthBuffer = Math.abs(sw.lng - ne.lng) * bufferRatio;\r\n\r\n\t\treturn new LatLngBounds(\r\n\t\t        new LatLng(sw.lat - heightBuffer, sw.lng - widthBuffer),\r\n\t\t        new LatLng(ne.lat + heightBuffer, ne.lng + widthBuffer));\r\n\t},\r\n\r\n\t// @method getCenter(): LatLng\r\n\t// Returns the center point of the bounds.\r\n\tgetCenter: function () {\r\n\t\treturn new LatLng(\r\n\t\t        (this._southWest.lat + this._northEast.lat) / 2,\r\n\t\t        (this._southWest.lng + this._northEast.lng) / 2);\r\n\t},\r\n\r\n\t// @method getSouthWest(): LatLng\r\n\t// Returns the south-west point of the bounds.\r\n\tgetSouthWest: function () {\r\n\t\treturn this._southWest;\r\n\t},\r\n\r\n\t// @method getNorthEast(): LatLng\r\n\t// Returns the north-east point of the bounds.\r\n\tgetNorthEast: function () {\r\n\t\treturn this._northEast;\r\n\t},\r\n\r\n\t// @method getNorthWest(): LatLng\r\n\t// Returns the north-west point of the bounds.\r\n\tgetNorthWest: function () {\r\n\t\treturn new LatLng(this.getNorth(), this.getWest());\r\n\t},\r\n\r\n\t// @method getSouthEast(): LatLng\r\n\t// Returns the south-east point of the bounds.\r\n\tgetSouthEast: function () {\r\n\t\treturn new LatLng(this.getSouth(), this.getEast());\r\n\t},\r\n\r\n\t// @method getWest(): Number\r\n\t// Returns the west longitude of the bounds\r\n\tgetWest: function () {\r\n\t\treturn this._southWest.lng;\r\n\t},\r\n\r\n\t// @method getSouth(): Number\r\n\t// Returns the south latitude of the bounds\r\n\tgetSouth: function () {\r\n\t\treturn this._southWest.lat;\r\n\t},\r\n\r\n\t// @method getEast(): Number\r\n\t// Returns the east longitude of the bounds\r\n\tgetEast: function () {\r\n\t\treturn this._northEast.lng;\r\n\t},\r\n\r\n\t// @method getNorth(): Number\r\n\t// Returns the north latitude of the bounds\r\n\tgetNorth: function () {\r\n\t\treturn this._northEast.lat;\r\n\t},\r\n\r\n\t// @method contains(otherBounds: LatLngBounds): Boolean\r\n\t// Returns `true` if the rectangle contains the given one.\r\n\r\n\t// @alternative\r\n\t// @method contains (latlng: LatLng): Boolean\r\n\t// Returns `true` if the rectangle contains the given point.\r\n\tcontains: function (obj) { // (LatLngBounds) or (LatLng) -> Boolean\r\n\t\tif (typeof obj[0] === 'number' || obj instanceof LatLng || 'lat' in obj) {\r\n\t\t\tobj = toLatLng(obj);\r\n\t\t} else {\r\n\t\t\tobj = toLatLngBounds(obj);\r\n\t\t}\r\n\r\n\t\tvar sw = this._southWest,\r\n\t\t    ne = this._northEast,\r\n\t\t    sw2, ne2;\r\n\r\n\t\tif (obj instanceof LatLngBounds) {\r\n\t\t\tsw2 = obj.getSouthWest();\r\n\t\t\tne2 = obj.getNorthEast();\r\n\t\t} else {\r\n\t\t\tsw2 = ne2 = obj;\r\n\t\t}\r\n\r\n\t\treturn (sw2.lat >= sw.lat) && (ne2.lat <= ne.lat) &&\r\n\t\t       (sw2.lng >= sw.lng) && (ne2.lng <= ne.lng);\r\n\t},\r\n\r\n\t// @method intersects(otherBounds: LatLngBounds): Boolean\r\n\t// Returns `true` if the rectangle intersects the given bounds. Two bounds intersect if they have at least one point in common.\r\n\tintersects: function (bounds) {\r\n\t\tbounds = toLatLngBounds(bounds);\r\n\r\n\t\tvar sw = this._southWest,\r\n\t\t    ne = this._northEast,\r\n\t\t    sw2 = bounds.getSouthWest(),\r\n\t\t    ne2 = bounds.getNorthEast(),\r\n\r\n\t\t    latIntersects = (ne2.lat >= sw.lat) && (sw2.lat <= ne.lat),\r\n\t\t    lngIntersects = (ne2.lng >= sw.lng) && (sw2.lng <= ne.lng);\r\n\r\n\t\treturn latIntersects && lngIntersects;\r\n\t},\r\n\r\n\t// @method overlaps(otherBounds: Bounds): Boolean\r\n\t// Returns `true` if the rectangle overlaps the given bounds. Two bounds overlap if their intersection is an area.\r\n\toverlaps: function (bounds) {\r\n\t\tbounds = toLatLngBounds(bounds);\r\n\r\n\t\tvar sw = this._southWest,\r\n\t\t    ne = this._northEast,\r\n\t\t    sw2 = bounds.getSouthWest(),\r\n\t\t    ne2 = bounds.getNorthEast(),\r\n\r\n\t\t    latOverlaps = (ne2.lat > sw.lat) && (sw2.lat < ne.lat),\r\n\t\t    lngOverlaps = (ne2.lng > sw.lng) && (sw2.lng < ne.lng);\r\n\r\n\t\treturn latOverlaps && lngOverlaps;\r\n\t},\r\n\r\n\t// @method toBBoxString(): String\r\n\t// Returns a string with bounding box coordinates in a 'southwest_lng,southwest_lat,northeast_lng,northeast_lat' format. Useful for sending requests to web services that return geo data.\r\n\ttoBBoxString: function () {\r\n\t\treturn [this.getWest(), this.getSouth(), this.getEast(), this.getNorth()].join(',');\r\n\t},\r\n\r\n\t// @method equals(otherBounds: LatLngBounds, maxMargin?: Number): Boolean\r\n\t// Returns `true` if the rectangle is equivalent (within a small margin of error) to the given bounds. The margin of error can be overridden by setting `maxMargin` to a small number.\r\n\tequals: function (bounds, maxMargin) {\r\n\t\tif (!bounds) { return false; }\r\n\r\n\t\tbounds = toLatLngBounds(bounds);\r\n\r\n\t\treturn this._southWest.equals(bounds.getSouthWest(), maxMargin) &&\r\n\t\t       this._northEast.equals(bounds.getNorthEast(), maxMargin);\r\n\t},\r\n\r\n\t// @method isValid(): Boolean\r\n\t// Returns `true` if the bounds are properly initialized.\r\n\tisValid: function () {\r\n\t\treturn !!(this._southWest && this._northEast);\r\n\t}\r\n};\r\n\r\n// TODO International date line?\r\n\r\n// @factory L.latLngBounds(corner1: LatLng, corner2: LatLng)\r\n// Creates a `LatLngBounds` object by defining two diagonally opposite corners of the rectangle.\r\n\r\n// @alternative\r\n// @factory L.latLngBounds(latlngs: LatLng[])\r\n// Creates a `LatLngBounds` object defined by the geographical points it contains. Very useful for zooming the map to fit a particular set of locations with [`fitBounds`](#map-fitbounds).\r\nfunction toLatLngBounds(a, b) {\r\n\tif (a instanceof LatLngBounds) {\r\n\t\treturn a;\r\n\t}\r\n\treturn new LatLngBounds(a, b);\r\n}\n\n/* @class LatLng\r\n * @aka L.LatLng\r\n *\r\n * Represents a geographical point with a certain latitude and longitude.\r\n *\r\n * @example\r\n *\r\n * ```\r\n * var latlng = L.latLng(50.5, 30.5);\r\n * ```\r\n *\r\n * All Leaflet methods that accept LatLng objects also accept them in a simple Array form and simple object form (unless noted otherwise), so these lines are equivalent:\r\n *\r\n * ```\r\n * map.panTo([50, 30]);\r\n * map.panTo({lon: 30, lat: 50});\r\n * map.panTo({lat: 50, lng: 30});\r\n * map.panTo(L.latLng(50, 30));\r\n * ```\r\n *\r\n * Note that `LatLng` does not inherit from Leaflet's `Class` object,\r\n * which means new classes can't inherit from it, and new methods\r\n * can't be added to it with the `include` function.\r\n */\r\n\r\nfunction LatLng(lat, lng, alt) {\r\n\tif (isNaN(lat) || isNaN(lng)) {\r\n\t\tthrow new Error('Invalid LatLng object: (' + lat + ', ' + lng + ')');\r\n\t}\r\n\r\n\t// @property lat: Number\r\n\t// Latitude in degrees\r\n\tthis.lat = +lat;\r\n\r\n\t// @property lng: Number\r\n\t// Longitude in degrees\r\n\tthis.lng = +lng;\r\n\r\n\t// @property alt: Number\r\n\t// Altitude in meters (optional)\r\n\tif (alt !== undefined) {\r\n\t\tthis.alt = +alt;\r\n\t}\r\n}\r\n\r\nLatLng.prototype = {\r\n\t// @method equals(otherLatLng: LatLng, maxMargin?: Number): Boolean\r\n\t// Returns `true` if the given `LatLng` point is at the same position (within a small margin of error). The margin of error can be overridden by setting `maxMargin` to a small number.\r\n\tequals: function (obj, maxMargin) {\r\n\t\tif (!obj) { return false; }\r\n\r\n\t\tobj = toLatLng(obj);\r\n\r\n\t\tvar margin = Math.max(\r\n\t\t        Math.abs(this.lat - obj.lat),\r\n\t\t        Math.abs(this.lng - obj.lng));\r\n\r\n\t\treturn margin <= (maxMargin === undefined ? 1.0E-9 : maxMargin);\r\n\t},\r\n\r\n\t// @method toString(): String\r\n\t// Returns a string representation of the point (for debugging purposes).\r\n\ttoString: function (precision) {\r\n\t\treturn 'LatLng(' +\r\n\t\t        formatNum(this.lat, precision) + ', ' +\r\n\t\t        formatNum(this.lng, precision) + ')';\r\n\t},\r\n\r\n\t// @method distanceTo(otherLatLng: LatLng): Number\r\n\t// Returns the distance (in meters) to the given `LatLng` calculated using the [Spherical Law of Cosines](https://en.wikipedia.org/wiki/Spherical_law_of_cosines).\r\n\tdistanceTo: function (other) {\r\n\t\treturn Earth.distance(this, toLatLng(other));\r\n\t},\r\n\r\n\t// @method wrap(): LatLng\r\n\t// Returns a new `LatLng` object with the longitude wrapped so it's always between -180 and +180 degrees.\r\n\twrap: function () {\r\n\t\treturn Earth.wrapLatLng(this);\r\n\t},\r\n\r\n\t// @method toBounds(sizeInMeters: Number): LatLngBounds\r\n\t// Returns a new `LatLngBounds` object in which each boundary is `sizeInMeters/2` meters apart from the `LatLng`.\r\n\ttoBounds: function (sizeInMeters) {\r\n\t\tvar latAccuracy = 180 * sizeInMeters / 40075017,\r\n\t\t    lngAccuracy = latAccuracy / Math.cos((Math.PI / 180) * this.lat);\r\n\r\n\t\treturn toLatLngBounds(\r\n\t\t        [this.lat - latAccuracy, this.lng - lngAccuracy],\r\n\t\t        [this.lat + latAccuracy, this.lng + lngAccuracy]);\r\n\t},\r\n\r\n\tclone: function () {\r\n\t\treturn new LatLng(this.lat, this.lng, this.alt);\r\n\t}\r\n};\r\n\r\n\r\n\r\n// @factory L.latLng(latitude: Number, longitude: Number, altitude?: Number): LatLng\r\n// Creates an object representing a geographical point with the given latitude and longitude (and optionally altitude).\r\n\r\n// @alternative\r\n// @factory L.latLng(coords: Array): LatLng\r\n// Expects an array of the form `[Number, Number]` or `[Number, Number, Number]` instead.\r\n\r\n// @alternative\r\n// @factory L.latLng(coords: Object): LatLng\r\n// Expects an plain object of the form `{lat: Number, lng: Number}` or `{lat: Number, lng: Number, alt: Number}` instead.\r\n\r\nfunction toLatLng(a, b, c) {\r\n\tif (a instanceof LatLng) {\r\n\t\treturn a;\r\n\t}\r\n\tif (isArray(a) && typeof a[0] !== 'object') {\r\n\t\tif (a.length === 3) {\r\n\t\t\treturn new LatLng(a[0], a[1], a[2]);\r\n\t\t}\r\n\t\tif (a.length === 2) {\r\n\t\t\treturn new LatLng(a[0], a[1]);\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\tif (a === undefined || a === null) {\r\n\t\treturn a;\r\n\t}\r\n\tif (typeof a === 'object' && 'lat' in a) {\r\n\t\treturn new LatLng(a.lat, 'lng' in a ? a.lng : a.lon, a.alt);\r\n\t}\r\n\tif (b === undefined) {\r\n\t\treturn null;\r\n\t}\r\n\treturn new LatLng(a, b, c);\r\n}\n\n/*\r\n * @namespace CRS\r\n * @crs L.CRS.Base\r\n * Object that defines coordinate reference systems for projecting\r\n * geographical points into pixel (screen) coordinates and back (and to\r\n * coordinates in other units for [WMS](https://en.wikipedia.org/wiki/Web_Map_Service) services). See\r\n * [spatial reference system](http://en.wikipedia.org/wiki/Coordinate_reference_system).\r\n *\r\n * Leaflet defines the most usual CRSs by default. If you want to use a\r\n * CRS not defined by default, take a look at the\r\n * [Proj4Leaflet](https://github.com/kartena/Proj4Leaflet) plugin.\r\n *\r\n * Note that the CRS instances do not inherit from Leafet's `Class` object,\r\n * and can't be instantiated. Also, new classes can't inherit from them,\r\n * and methods can't be added to them with the `include` function.\r\n */\r\n\r\nvar CRS = {\r\n\t// @method latLngToPoint(latlng: LatLng, zoom: Number): Point\r\n\t// Projects geographical coordinates into pixel coordinates for a given zoom.\r\n\tlatLngToPoint: function (latlng, zoom) {\r\n\t\tvar projectedPoint = this.projection.project(latlng),\r\n\t\t    scale = this.scale(zoom);\r\n\r\n\t\treturn this.transformation._transform(projectedPoint, scale);\r\n\t},\r\n\r\n\t// @method pointToLatLng(point: Point, zoom: Number): LatLng\r\n\t// The inverse of `latLngToPoint`. Projects pixel coordinates on a given\r\n\t// zoom into geographical coordinates.\r\n\tpointToLatLng: function (point, zoom) {\r\n\t\tvar scale = this.scale(zoom),\r\n\t\t    untransformedPoint = this.transformation.untransform(point, scale);\r\n\r\n\t\treturn this.projection.unproject(untransformedPoint);\r\n\t},\r\n\r\n\t// @method project(latlng: LatLng): Point\r\n\t// Projects geographical coordinates into coordinates in units accepted for\r\n\t// this CRS (e.g. meters for EPSG:3857, for passing it to WMS services).\r\n\tproject: function (latlng) {\r\n\t\treturn this.projection.project(latlng);\r\n\t},\r\n\r\n\t// @method unproject(point: Point): LatLng\r\n\t// Given a projected coordinate returns the corresponding LatLng.\r\n\t// The inverse of `project`.\r\n\tunproject: function (point) {\r\n\t\treturn this.projection.unproject(point);\r\n\t},\r\n\r\n\t// @method scale(zoom: Number): Number\r\n\t// Returns the scale used when transforming projected coordinates into\r\n\t// pixel coordinates for a particular zoom. For example, it returns\r\n\t// `256 * 2^zoom` for Mercator-based CRS.\r\n\tscale: function (zoom) {\r\n\t\treturn 256 * Math.pow(2, zoom);\r\n\t},\r\n\r\n\t// @method zoom(scale: Number): Number\r\n\t// Inverse of `scale()`, returns the zoom level corresponding to a scale\r\n\t// factor of `scale`.\r\n\tzoom: function (scale) {\r\n\t\treturn Math.log(scale / 256) / Math.LN2;\r\n\t},\r\n\r\n\t// @method getProjectedBounds(zoom: Number): Bounds\r\n\t// Returns the projection's bounds scaled and transformed for the provided `zoom`.\r\n\tgetProjectedBounds: function (zoom) {\r\n\t\tif (this.infinite) { return null; }\r\n\r\n\t\tvar b = this.projection.bounds,\r\n\t\t    s = this.scale(zoom),\r\n\t\t    min = this.transformation.transform(b.min, s),\r\n\t\t    max = this.transformation.transform(b.max, s);\r\n\r\n\t\treturn new Bounds(min, max);\r\n\t},\r\n\r\n\t// @method distance(latlng1: LatLng, latlng2: LatLng): Number\r\n\t// Returns the distance between two geographical coordinates.\r\n\r\n\t// @property code: String\r\n\t// Standard code name of the CRS passed into WMS services (e.g. `'EPSG:3857'`)\r\n\t//\r\n\t// @property wrapLng: Number[]\r\n\t// An array of two numbers defining whether the longitude (horizontal) coordinate\r\n\t// axis wraps around a given range and how. Defaults to `[-180, 180]` in most\r\n\t// geographical CRSs. If `undefined`, the longitude axis does not wrap around.\r\n\t//\r\n\t// @property wrapLat: Number[]\r\n\t// Like `wrapLng`, but for the latitude (vertical) axis.\r\n\r\n\t// wrapLng: [min, max],\r\n\t// wrapLat: [min, max],\r\n\r\n\t// @property infinite: Boolean\r\n\t// If true, the coordinate space will be unbounded (infinite in both axes)\r\n\tinfinite: false,\r\n\r\n\t// @method wrapLatLng(latlng: LatLng): LatLng\r\n\t// Returns a `LatLng` where lat and lng has been wrapped according to the\r\n\t// CRS's `wrapLat` and `wrapLng` properties, if they are outside the CRS's bounds.\r\n\twrapLatLng: function (latlng) {\r\n\t\tvar lng = this.wrapLng ? wrapNum(latlng.lng, this.wrapLng, true) : latlng.lng,\r\n\t\t    lat = this.wrapLat ? wrapNum(latlng.lat, this.wrapLat, true) : latlng.lat,\r\n\t\t    alt = latlng.alt;\r\n\r\n\t\treturn new LatLng(lat, lng, alt);\r\n\t},\r\n\r\n\t// @method wrapLatLngBounds(bounds: LatLngBounds): LatLngBounds\r\n\t// Returns a `LatLngBounds` with the same size as the given one, ensuring\r\n\t// that its center is within the CRS's bounds.\r\n\t// Only accepts actual `L.LatLngBounds` instances, not arrays.\r\n\twrapLatLngBounds: function (bounds) {\r\n\t\tvar center = bounds.getCenter(),\r\n\t\t    newCenter = this.wrapLatLng(center),\r\n\t\t    latShift = center.lat - newCenter.lat,\r\n\t\t    lngShift = center.lng - newCenter.lng;\r\n\r\n\t\tif (latShift === 0 && lngShift === 0) {\r\n\t\t\treturn bounds;\r\n\t\t}\r\n\r\n\t\tvar sw = bounds.getSouthWest(),\r\n\t\t    ne = bounds.getNorthEast(),\r\n\t\t    newSw = new LatLng(sw.lat - latShift, sw.lng - lngShift),\r\n\t\t    newNe = new LatLng(ne.lat - latShift, ne.lng - lngShift);\r\n\r\n\t\treturn new LatLngBounds(newSw, newNe);\r\n\t}\r\n};\n\n/*\n * @namespace CRS\n * @crs L.CRS.Earth\n *\n * Serves as the base for CRS that are global such that they cover the earth.\n * Can only be used as the base for other CRS and cannot be used directly,\n * since it does not have a `code`, `projection` or `transformation`. `distance()` returns\n * meters.\n */\n\nvar Earth = extend({}, CRS, {\n\twrapLng: [-180, 180],\n\n\t// Mean Earth Radius, as recommended for use by\n\t// the International Union of Geodesy and Geophysics,\n\t// see http://rosettacode.org/wiki/Haversine_formula\n\tR: 6371000,\n\n\t// distance between two geographical points using spherical law of cosines approximation\n\tdistance: function (latlng1, latlng2) {\n\t\tvar rad = Math.PI / 180,\n\t\t    lat1 = latlng1.lat * rad,\n\t\t    lat2 = latlng2.lat * rad,\n\t\t    sinDLat = Math.sin((latlng2.lat - latlng1.lat) * rad / 2),\n\t\t    sinDLon = Math.sin((latlng2.lng - latlng1.lng) * rad / 2),\n\t\t    a = sinDLat * sinDLat + Math.cos(lat1) * Math.cos(lat2) * sinDLon * sinDLon,\n\t\t    c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n\t\treturn this.R * c;\n\t}\n});\n\n/*\r\n * @namespace Projection\r\n * @projection L.Projection.SphericalMercator\r\n *\r\n * Spherical Mercator projection — the most common projection for online maps,\r\n * used by almost all free and commercial tile providers. Assumes that Earth is\r\n * a sphere. Used by the `EPSG:3857` CRS.\r\n */\r\n\r\nvar earthRadius = 6378137;\r\n\r\nvar SphericalMercator = {\r\n\r\n\tR: earthRadius,\r\n\tMAX_LATITUDE: 85.0511287798,\r\n\r\n\tproject: function (latlng) {\r\n\t\tvar d = Math.PI / 180,\r\n\t\t    max = this.MAX_LATITUDE,\r\n\t\t    lat = Math.max(Math.min(max, latlng.lat), -max),\r\n\t\t    sin = Math.sin(lat * d);\r\n\r\n\t\treturn new Point(\r\n\t\t\tthis.R * latlng.lng * d,\r\n\t\t\tthis.R * Math.log((1 + sin) / (1 - sin)) / 2);\r\n\t},\r\n\r\n\tunproject: function (point) {\r\n\t\tvar d = 180 / Math.PI;\r\n\r\n\t\treturn new LatLng(\r\n\t\t\t(2 * Math.atan(Math.exp(point.y / this.R)) - (Math.PI / 2)) * d,\r\n\t\t\tpoint.x * d / this.R);\r\n\t},\r\n\r\n\tbounds: (function () {\r\n\t\tvar d = earthRadius * Math.PI;\r\n\t\treturn new Bounds([-d, -d], [d, d]);\r\n\t})()\r\n};\n\n/*\r\n * @class Transformation\r\n * @aka L.Transformation\r\n *\r\n * Represents an affine transformation: a set of coefficients `a`, `b`, `c`, `d`\r\n * for transforming a point of a form `(x, y)` into `(a*x + b, c*y + d)` and doing\r\n * the reverse. Used by Leaflet in its projections code.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * var transformation = L.transformation(2, 5, -1, 10),\r\n * \tp = L.point(1, 2),\r\n * \tp2 = transformation.transform(p), //  L.point(7, 8)\r\n * \tp3 = transformation.untransform(p2); //  L.point(1, 2)\r\n * ```\r\n */\r\n\r\n\r\n// factory new L.Transformation(a: Number, b: Number, c: Number, d: Number)\r\n// Creates a `Transformation` object with the given coefficients.\r\nfunction Transformation(a, b, c, d) {\r\n\tif (isArray(a)) {\r\n\t\t// use array properties\r\n\t\tthis._a = a[0];\r\n\t\tthis._b = a[1];\r\n\t\tthis._c = a[2];\r\n\t\tthis._d = a[3];\r\n\t\treturn;\r\n\t}\r\n\tthis._a = a;\r\n\tthis._b = b;\r\n\tthis._c = c;\r\n\tthis._d = d;\r\n}\r\n\r\nTransformation.prototype = {\r\n\t// @method transform(point: Point, scale?: Number): Point\r\n\t// Returns a transformed point, optionally multiplied by the given scale.\r\n\t// Only accepts actual `L.Point` instances, not arrays.\r\n\ttransform: function (point, scale) { // (Point, Number) -> Point\r\n\t\treturn this._transform(point.clone(), scale);\r\n\t},\r\n\r\n\t// destructive transform (faster)\r\n\t_transform: function (point, scale) {\r\n\t\tscale = scale || 1;\r\n\t\tpoint.x = scale * (this._a * point.x + this._b);\r\n\t\tpoint.y = scale * (this._c * point.y + this._d);\r\n\t\treturn point;\r\n\t},\r\n\r\n\t// @method untransform(point: Point, scale?: Number): Point\r\n\t// Returns the reverse transformation of the given point, optionally divided\r\n\t// by the given scale. Only accepts actual `L.Point` instances, not arrays.\r\n\tuntransform: function (point, scale) {\r\n\t\tscale = scale || 1;\r\n\t\treturn new Point(\r\n\t\t        (point.x / scale - this._b) / this._a,\r\n\t\t        (point.y / scale - this._d) / this._c);\r\n\t}\r\n};\r\n\r\n// factory L.transformation(a: Number, b: Number, c: Number, d: Number)\r\n\r\n// @factory L.transformation(a: Number, b: Number, c: Number, d: Number)\r\n// Instantiates a Transformation object with the given coefficients.\r\n\r\n// @alternative\r\n// @factory L.transformation(coefficients: Array): Transformation\r\n// Expects an coefficients array of the form\r\n// `[a: Number, b: Number, c: Number, d: Number]`.\r\n\r\nfunction toTransformation(a, b, c, d) {\r\n\treturn new Transformation(a, b, c, d);\r\n}\n\n/*\r\n * @namespace CRS\r\n * @crs L.CRS.EPSG3857\r\n *\r\n * The most common CRS for online maps, used by almost all free and commercial\r\n * tile providers. Uses Spherical Mercator projection. Set in by default in\r\n * Map's `crs` option.\r\n */\r\n\r\nvar EPSG3857 = extend({}, Earth, {\r\n\tcode: 'EPSG:3857',\r\n\tprojection: SphericalMercator,\r\n\r\n\ttransformation: (function () {\r\n\t\tvar scale = 0.5 / (Math.PI * SphericalMercator.R);\r\n\t\treturn toTransformation(scale, 0.5, -scale, 0.5);\r\n\t}())\r\n});\r\n\r\nvar EPSG900913 = extend({}, EPSG3857, {\r\n\tcode: 'EPSG:900913'\r\n});\n\n// @namespace SVG; @section\n// There are several static functions which can be called without instantiating L.SVG:\n\n// @function create(name: String): SVGElement\n// Returns a instance of [SVGElement](https://developer.mozilla.org/docs/Web/API/SVGElement),\n// corresponding to the class name passed. For example, using 'line' will return\n// an instance of [SVGLineElement](https://developer.mozilla.org/docs/Web/API/SVGLineElement).\nfunction svgCreate(name) {\n\treturn document.createElementNS('http://www.w3.org/2000/svg', name);\n}\n\n// @function pointsToPath(rings: Point[], closed: Boolean): String\n// Generates a SVG path string for multiple rings, with each ring turning\n// into \"M..L..L..\" instructions\nfunction pointsToPath(rings, closed) {\n\tvar str = '',\n\ti, j, len, len2, points, p;\n\n\tfor (i = 0, len = rings.length; i < len; i++) {\n\t\tpoints = rings[i];\n\n\t\tfor (j = 0, len2 = points.length; j < len2; j++) {\n\t\t\tp = points[j];\n\t\t\tstr += (j ? 'L' : 'M') + p.x + ' ' + p.y;\n\t\t}\n\n\t\t// closes the ring for polygons; \"x\" is VML syntax\n\t\tstr += closed ? (svg ? 'z' : 'x') : '';\n\t}\n\n\t// SVG complains about empty path strings\n\treturn str || 'M0 0';\n}\n\n/*\r\n * @namespace Browser\r\n * @aka L.Browser\r\n *\r\n * A namespace with static properties for browser/feature detection used by Leaflet internally.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * if (L.Browser.ielt9) {\r\n *   alert('Upgrade your browser, dude!');\r\n * }\r\n * ```\r\n */\r\n\r\nvar style$1 = document.documentElement.style;\r\n\r\n// @property ie: Boolean; `true` for all Internet Explorer versions (not Edge).\r\nvar ie = 'ActiveXObject' in window;\r\n\r\n// @property ielt9: Boolean; `true` for Internet Explorer versions less than 9.\r\nvar ielt9 = ie && !document.addEventListener;\r\n\r\n// @property edge: Boolean; `true` for the Edge web browser.\r\nvar edge = 'msLaunchUri' in navigator && !('documentMode' in document);\r\n\r\n// @property webkit: Boolean;\r\n// `true` for webkit-based browsers like Chrome and Safari (including mobile versions).\r\nvar webkit = userAgentContains('webkit');\r\n\r\n// @property android: Boolean\r\n// `true` for any browser running on an Android platform.\r\nvar android = userAgentContains('android');\r\n\r\n// @property android23: Boolean; `true` for browsers running on Android 2 or Android 3.\r\nvar android23 = userAgentContains('android 2') || userAgentContains('android 3');\r\n\r\n/* See https://stackoverflow.com/a/17961266 for details on detecting stock Android */\r\nvar webkitVer = parseInt(/WebKit\\/([0-9]+)|$/.exec(navigator.userAgent)[1], 10); // also matches AppleWebKit\r\n// @property androidStock: Boolean; `true` for the Android stock browser (i.e. not Chrome)\r\nvar androidStock = android && userAgentContains('Google') && webkitVer < 537 && !('AudioNode' in window);\r\n\r\n// @property opera: Boolean; `true` for the Opera browser\r\nvar opera = !!window.opera;\r\n\r\n// @property chrome: Boolean; `true` for the Chrome browser.\r\nvar chrome = userAgentContains('chrome');\r\n\r\n// @property gecko: Boolean; `true` for gecko-based browsers like Firefox.\r\nvar gecko = userAgentContains('gecko') && !webkit && !opera && !ie;\r\n\r\n// @property safari: Boolean; `true` for the Safari browser.\r\nvar safari = !chrome && userAgentContains('safari');\r\n\r\nvar phantom = userAgentContains('phantom');\r\n\r\n// @property opera12: Boolean\r\n// `true` for the Opera browser supporting CSS transforms (version 12 or later).\r\nvar opera12 = 'OTransition' in style$1;\r\n\r\n// @property win: Boolean; `true` when the browser is running in a Windows platform\r\nvar win = navigator.platform.indexOf('Win') === 0;\r\n\r\n// @property ie3d: Boolean; `true` for all Internet Explorer versions supporting CSS transforms.\r\nvar ie3d = ie && ('transition' in style$1);\r\n\r\n// @property webkit3d: Boolean; `true` for webkit-based browsers supporting CSS transforms.\r\nvar webkit3d = ('WebKitCSSMatrix' in window) && ('m11' in new window.WebKitCSSMatrix()) && !android23;\r\n\r\n// @property gecko3d: Boolean; `true` for gecko-based browsers supporting CSS transforms.\r\nvar gecko3d = 'MozPerspective' in style$1;\r\n\r\n// @property any3d: Boolean\r\n// `true` for all browsers supporting CSS transforms.\r\nvar any3d = !window.L_DISABLE_3D && (ie3d || webkit3d || gecko3d) && !opera12 && !phantom;\r\n\r\n// @property mobile: Boolean; `true` for all browsers running in a mobile device.\r\nvar mobile = typeof orientation !== 'undefined' || userAgentContains('mobile');\r\n\r\n// @property mobileWebkit: Boolean; `true` for all webkit-based browsers in a mobile device.\r\nvar mobileWebkit = mobile && webkit;\r\n\r\n// @property mobileWebkit3d: Boolean\r\n// `true` for all webkit-based browsers in a mobile device supporting CSS transforms.\r\nvar mobileWebkit3d = mobile && webkit3d;\r\n\r\n// @property msPointer: Boolean\r\n// `true` for browsers implementing the Microsoft touch events model (notably IE10).\r\nvar msPointer = !window.PointerEvent && window.MSPointerEvent;\r\n\r\n// @property pointer: Boolean\r\n// `true` for all browsers supporting [pointer events](https://msdn.microsoft.com/en-us/library/dn433244%28v=vs.85%29.aspx).\r\nvar pointer = !webkit && !!(window.PointerEvent || msPointer);\r\n\r\n// @property touch: Boolean\r\n// `true` for all browsers supporting [touch events](https://developer.mozilla.org/docs/Web/API/Touch_events).\r\n// This does not necessarily mean that the browser is running in a computer with\r\n// a touchscreen, it only means that the browser is capable of understanding\r\n// touch events.\r\nvar touch = !window.L_NO_TOUCH && (pointer || 'ontouchstart' in window ||\r\n\t\t(window.DocumentTouch && document instanceof window.DocumentTouch));\r\n\r\n// @property mobileOpera: Boolean; `true` for the Opera browser in a mobile device.\r\nvar mobileOpera = mobile && opera;\r\n\r\n// @property mobileGecko: Boolean\r\n// `true` for gecko-based browsers running in a mobile device.\r\nvar mobileGecko = mobile && gecko;\r\n\r\n// @property retina: Boolean\r\n// `true` for browsers on a high-resolution \"retina\" screen or on any screen when browser's display zoom is more than 100%.\r\nvar retina = (window.devicePixelRatio || (window.screen.deviceXDPI / window.screen.logicalXDPI)) > 1;\r\n\r\n// @property passiveEvents: Boolean\r\n// `true` for browsers that support passive events.\r\nvar passiveEvents = (function () {\r\n\tvar supportsPassiveOption = false;\r\n\ttry {\r\n\t\tvar opts = Object.defineProperty({}, 'passive', {\r\n\t\t\tget: function () {\r\n\t\t\t\tsupportsPassiveOption = true;\r\n\t\t\t}\r\n\t\t});\r\n\t\twindow.addEventListener('testPassiveEventSupport', falseFn, opts);\r\n\t\twindow.removeEventListener('testPassiveEventSupport', falseFn, opts);\r\n\t} catch (e) {\r\n\t\t// Errors can safely be ignored since this is only a browser support test.\r\n\t}\r\n\treturn supportsPassiveOption;\r\n});\r\n\r\n// @property canvas: Boolean\r\n// `true` when the browser supports [`<canvas>`](https://developer.mozilla.org/docs/Web/API/Canvas_API).\r\nvar canvas = (function () {\r\n\treturn !!document.createElement('canvas').getContext;\r\n}());\r\n\r\n// @property svg: Boolean\r\n// `true` when the browser supports [SVG](https://developer.mozilla.org/docs/Web/SVG).\r\nvar svg = !!(document.createElementNS && svgCreate('svg').createSVGRect);\r\n\r\n// @property vml: Boolean\r\n// `true` if the browser supports [VML](https://en.wikipedia.org/wiki/Vector_Markup_Language).\r\nvar vml = !svg && (function () {\r\n\ttry {\r\n\t\tvar div = document.createElement('div');\r\n\t\tdiv.innerHTML = '<v:shape adj=\"1\"/>';\r\n\r\n\t\tvar shape = div.firstChild;\r\n\t\tshape.style.behavior = 'url(#default#VML)';\r\n\r\n\t\treturn shape && (typeof shape.adj === 'object');\r\n\r\n\t} catch (e) {\r\n\t\treturn false;\r\n\t}\r\n}());\r\n\r\n\r\nfunction userAgentContains(str) {\r\n\treturn navigator.userAgent.toLowerCase().indexOf(str) >= 0;\r\n}\r\n\n\nvar Browser = (Object.freeze || Object)({\n\tie: ie,\n\tielt9: ielt9,\n\tedge: edge,\n\twebkit: webkit,\n\tandroid: android,\n\tandroid23: android23,\n\tandroidStock: androidStock,\n\topera: opera,\n\tchrome: chrome,\n\tgecko: gecko,\n\tsafari: safari,\n\tphantom: phantom,\n\topera12: opera12,\n\twin: win,\n\tie3d: ie3d,\n\twebkit3d: webkit3d,\n\tgecko3d: gecko3d,\n\tany3d: any3d,\n\tmobile: mobile,\n\tmobileWebkit: mobileWebkit,\n\tmobileWebkit3d: mobileWebkit3d,\n\tmsPointer: msPointer,\n\tpointer: pointer,\n\ttouch: touch,\n\tmobileOpera: mobileOpera,\n\tmobileGecko: mobileGecko,\n\tretina: retina,\n\tpassiveEvents: passiveEvents,\n\tcanvas: canvas,\n\tsvg: svg,\n\tvml: vml\n});\n\n/*\n * Extends L.DomEvent to provide touch support for Internet Explorer and Windows-based devices.\n */\n\n\nvar POINTER_DOWN =   msPointer ? 'MSPointerDown'   : 'pointerdown';\nvar POINTER_MOVE =   msPointer ? 'MSPointerMove'   : 'pointermove';\nvar POINTER_UP =     msPointer ? 'MSPointerUp'     : 'pointerup';\nvar POINTER_CANCEL = msPointer ? 'MSPointerCancel' : 'pointercancel';\nvar TAG_WHITE_LIST = ['INPUT', 'SELECT', 'OPTION'];\n\nvar _pointers = {};\nvar _pointerDocListener = false;\n\n// DomEvent.DoubleTap needs to know about this\nvar _pointersCount = 0;\n\n// Provides a touch events wrapper for (ms)pointer events.\n// ref http://www.w3.org/TR/pointerevents/ https://www.w3.org/Bugs/Public/show_bug.cgi?id=22890\n\nfunction addPointerListener(obj, type, handler, id) {\n\tif (type === 'touchstart') {\n\t\t_addPointerStart(obj, handler, id);\n\n\t} else if (type === 'touchmove') {\n\t\t_addPointerMove(obj, handler, id);\n\n\t} else if (type === 'touchend') {\n\t\t_addPointerEnd(obj, handler, id);\n\t}\n\n\treturn this;\n}\n\nfunction removePointerListener(obj, type, id) {\n\tvar handler = obj['_leaflet_' + type + id];\n\n\tif (type === 'touchstart') {\n\t\tobj.removeEventListener(POINTER_DOWN, handler, false);\n\n\t} else if (type === 'touchmove') {\n\t\tobj.removeEventListener(POINTER_MOVE, handler, false);\n\n\t} else if (type === 'touchend') {\n\t\tobj.removeEventListener(POINTER_UP, handler, false);\n\t\tobj.removeEventListener(POINTER_CANCEL, handler, false);\n\t}\n\n\treturn this;\n}\n\nfunction _addPointerStart(obj, handler, id) {\n\tvar onDown = bind(function (e) {\n\t\tif (e.pointerType !== 'mouse' && e.MSPOINTER_TYPE_MOUSE && e.pointerType !== e.MSPOINTER_TYPE_MOUSE) {\n\t\t\t// In IE11, some touch events needs to fire for form controls, or\n\t\t\t// the controls will stop working. We keep a whitelist of tag names that\n\t\t\t// need these events. For other target tags, we prevent default on the event.\n\t\t\tif (TAG_WHITE_LIST.indexOf(e.target.tagName) < 0) {\n\t\t\t\tpreventDefault(e);\n\t\t\t} else {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\t_handlePointer(e, handler);\n\t});\n\n\tobj['_leaflet_touchstart' + id] = onDown;\n\tobj.addEventListener(POINTER_DOWN, onDown, false);\n\n\t// need to keep track of what pointers and how many are active to provide e.touches emulation\n\tif (!_pointerDocListener) {\n\t\t// we listen documentElement as any drags that end by moving the touch off the screen get fired there\n\t\tdocument.documentElement.addEventListener(POINTER_DOWN, _globalPointerDown, true);\n\t\tdocument.documentElement.addEventListener(POINTER_MOVE, _globalPointerMove, true);\n\t\tdocument.documentElement.addEventListener(POINTER_UP, _globalPointerUp, true);\n\t\tdocument.documentElement.addEventListener(POINTER_CANCEL, _globalPointerUp, true);\n\n\t\t_pointerDocListener = true;\n\t}\n}\n\nfunction _globalPointerDown(e) {\n\t_pointers[e.pointerId] = e;\n\t_pointersCount++;\n}\n\nfunction _globalPointerMove(e) {\n\tif (_pointers[e.pointerId]) {\n\t\t_pointers[e.pointerId] = e;\n\t}\n}\n\nfunction _globalPointerUp(e) {\n\tdelete _pointers[e.pointerId];\n\t_pointersCount--;\n}\n\nfunction _handlePointer(e, handler) {\n\te.touches = [];\n\tfor (var i in _pointers) {\n\t\te.touches.push(_pointers[i]);\n\t}\n\te.changedTouches = [e];\n\n\thandler(e);\n}\n\nfunction _addPointerMove(obj, handler, id) {\n\tvar onMove = function (e) {\n\t\t// don't fire touch moves when mouse isn't down\n\t\tif ((e.pointerType === e.MSPOINTER_TYPE_MOUSE || e.pointerType === 'mouse') && e.buttons === 0) { return; }\n\n\t\t_handlePointer(e, handler);\n\t};\n\n\tobj['_leaflet_touchmove' + id] = onMove;\n\tobj.addEventListener(POINTER_MOVE, onMove, false);\n}\n\nfunction _addPointerEnd(obj, handler, id) {\n\tvar onUp = function (e) {\n\t\t_handlePointer(e, handler);\n\t};\n\n\tobj['_leaflet_touchend' + id] = onUp;\n\tobj.addEventListener(POINTER_UP, onUp, false);\n\tobj.addEventListener(POINTER_CANCEL, onUp, false);\n}\n\n/*\r\n * Extends the event handling code with double tap support for mobile browsers.\r\n */\r\n\r\nvar _touchstart = msPointer ? 'MSPointerDown' : pointer ? 'pointerdown' : 'touchstart';\r\nvar _touchend = msPointer ? 'MSPointerUp' : pointer ? 'pointerup' : 'touchend';\r\nvar _pre = '_leaflet_';\r\n\r\n// inspired by Zepto touch code by Thomas Fuchs\r\nfunction addDoubleTapListener(obj, handler, id) {\r\n\tvar last, touch$$1,\r\n\t    doubleTap = false,\r\n\t    delay = 250;\r\n\r\n\tfunction onTouchStart(e) {\r\n\t\tvar count;\r\n\r\n\t\tif (pointer) {\r\n\t\t\tif ((!edge) || e.pointerType === 'mouse') { return; }\r\n\t\t\tcount = _pointersCount;\r\n\t\t} else {\r\n\t\t\tcount = e.touches.length;\r\n\t\t}\r\n\r\n\t\tif (count > 1) { return; }\r\n\r\n\t\tvar now = Date.now(),\r\n\t\t    delta = now - (last || now);\r\n\r\n\t\ttouch$$1 = e.touches ? e.touches[0] : e;\r\n\t\tdoubleTap = (delta > 0 && delta <= delay);\r\n\t\tlast = now;\r\n\t}\r\n\r\n\tfunction onTouchEnd(e) {\r\n\t\tif (doubleTap && !touch$$1.cancelBubble) {\r\n\t\t\tif (pointer) {\r\n\t\t\t\tif ((!edge) || e.pointerType === 'mouse') { return; }\r\n\t\t\t\t// work around .type being readonly with MSPointer* events\r\n\t\t\t\tvar newTouch = {},\r\n\t\t\t\t    prop, i;\r\n\r\n\t\t\t\tfor (i in touch$$1) {\r\n\t\t\t\t\tprop = touch$$1[i];\r\n\t\t\t\t\tnewTouch[i] = prop && prop.bind ? prop.bind(touch$$1) : prop;\r\n\t\t\t\t}\r\n\t\t\t\ttouch$$1 = newTouch;\r\n\t\t\t}\r\n\t\t\ttouch$$1.type = 'dblclick';\r\n\t\t\ttouch$$1.button = 0;\r\n\t\t\thandler(touch$$1);\r\n\t\t\tlast = null;\r\n\t\t}\r\n\t}\r\n\r\n\tobj[_pre + _touchstart + id] = onTouchStart;\r\n\tobj[_pre + _touchend + id] = onTouchEnd;\r\n\tobj[_pre + 'dblclick' + id] = handler;\r\n\r\n\tobj.addEventListener(_touchstart, onTouchStart, passiveEvents ? {passive: false} : false);\r\n\tobj.addEventListener(_touchend, onTouchEnd, passiveEvents ? {passive: false} : false);\r\n\r\n\t// On some platforms (notably, chrome<55 on win10 + touchscreen + mouse),\r\n\t// the browser doesn't fire touchend/pointerup events but does fire\r\n\t// native dblclicks. See #4127.\r\n\t// Edge 14 also fires native dblclicks, but only for pointerType mouse, see #5180.\r\n\tobj.addEventListener('dblclick', handler, false);\r\n\r\n\treturn this;\r\n}\r\n\r\nfunction removeDoubleTapListener(obj, id) {\r\n\tvar touchstart = obj[_pre + _touchstart + id],\r\n\t    touchend = obj[_pre + _touchend + id],\r\n\t    dblclick = obj[_pre + 'dblclick' + id];\r\n\r\n\tobj.removeEventListener(_touchstart, touchstart, passiveEvents ? {passive: false} : false);\r\n\tobj.removeEventListener(_touchend, touchend, passiveEvents ? {passive: false} : false);\r\n\tif (!edge) {\r\n\t\tobj.removeEventListener('dblclick', dblclick, false);\r\n\t}\r\n\r\n\treturn this;\r\n}\n\n/*\r\n * @namespace DomUtil\r\n *\r\n * Utility functions to work with the [DOM](https://developer.mozilla.org/docs/Web/API/Document_Object_Model)\r\n * tree, used by Leaflet internally.\r\n *\r\n * Most functions expecting or returning a `HTMLElement` also work for\r\n * SVG elements. The only difference is that classes refer to CSS classes\r\n * in HTML and SVG classes in SVG.\r\n */\r\n\r\n\r\n// @property TRANSFORM: String\r\n// Vendor-prefixed transform style name (e.g. `'webkitTransform'` for WebKit).\r\nvar TRANSFORM = testProp(\r\n\t['transform', 'webkitTransform', 'OTransform', 'MozTransform', 'msTransform']);\r\n\r\n// webkitTransition comes first because some browser versions that drop vendor prefix don't do\r\n// the same for the transitionend event, in particular the Android 4.1 stock browser\r\n\r\n// @property TRANSITION: String\r\n// Vendor-prefixed transition style name.\r\nvar TRANSITION = testProp(\r\n\t['webkitTransition', 'transition', 'OTransition', 'MozTransition', 'msTransition']);\r\n\r\n// @property TRANSITION_END: String\r\n// Vendor-prefixed transitionend event name.\r\nvar TRANSITION_END =\r\n\tTRANSITION === 'webkitTransition' || TRANSITION === 'OTransition' ? TRANSITION + 'End' : 'transitionend';\r\n\r\n\r\n// @function get(id: String|HTMLElement): HTMLElement\r\n// Returns an element given its DOM id, or returns the element itself\r\n// if it was passed directly.\r\nfunction get(id) {\r\n\treturn typeof id === 'string' ? document.getElementById(id) : id;\r\n}\r\n\r\n// @function getStyle(el: HTMLElement, styleAttrib: String): String\r\n// Returns the value for a certain style attribute on an element,\r\n// including computed values or values set through CSS.\r\nfunction getStyle(el, style) {\r\n\tvar value = el.style[style] || (el.currentStyle && el.currentStyle[style]);\r\n\r\n\tif ((!value || value === 'auto') && document.defaultView) {\r\n\t\tvar css = document.defaultView.getComputedStyle(el, null);\r\n\t\tvalue = css ? css[style] : null;\r\n\t}\r\n\treturn value === 'auto' ? null : value;\r\n}\r\n\r\n// @function create(tagName: String, className?: String, container?: HTMLElement): HTMLElement\r\n// Creates an HTML element with `tagName`, sets its class to `className`, and optionally appends it to `container` element.\r\nfunction create$1(tagName, className, container) {\r\n\tvar el = document.createElement(tagName);\r\n\tel.className = className || '';\r\n\r\n\tif (container) {\r\n\t\tcontainer.appendChild(el);\r\n\t}\r\n\treturn el;\r\n}\r\n\r\n// @function remove(el: HTMLElement)\r\n// Removes `el` from its parent element\r\nfunction remove(el) {\r\n\tvar parent = el.parentNode;\r\n\tif (parent) {\r\n\t\tparent.removeChild(el);\r\n\t}\r\n}\r\n\r\n// @function empty(el: HTMLElement)\r\n// Removes all of `el`'s children elements from `el`\r\nfunction empty(el) {\r\n\twhile (el.firstChild) {\r\n\t\tel.removeChild(el.firstChild);\r\n\t}\r\n}\r\n\r\n// @function toFront(el: HTMLElement)\r\n// Makes `el` the last child of its parent, so it renders in front of the other children.\r\nfunction toFront(el) {\r\n\tvar parent = el.parentNode;\r\n\tif (parent && parent.lastChild !== el) {\r\n\t\tparent.appendChild(el);\r\n\t}\r\n}\r\n\r\n// @function toBack(el: HTMLElement)\r\n// Makes `el` the first child of its parent, so it renders behind the other children.\r\nfunction toBack(el) {\r\n\tvar parent = el.parentNode;\r\n\tif (parent && parent.firstChild !== el) {\r\n\t\tparent.insertBefore(el, parent.firstChild);\r\n\t}\r\n}\r\n\r\n// @function hasClass(el: HTMLElement, name: String): Boolean\r\n// Returns `true` if the element's class attribute contains `name`.\r\nfunction hasClass(el, name) {\r\n\tif (el.classList !== undefined) {\r\n\t\treturn el.classList.contains(name);\r\n\t}\r\n\tvar className = getClass(el);\r\n\treturn className.length > 0 && new RegExp('(^|\\\\s)' + name + '(\\\\s|$)').test(className);\r\n}\r\n\r\n// @function addClass(el: HTMLElement, name: String)\r\n// Adds `name` to the element's class attribute.\r\nfunction addClass(el, name) {\r\n\tif (el.classList !== undefined) {\r\n\t\tvar classes = splitWords(name);\r\n\t\tfor (var i = 0, len = classes.length; i < len; i++) {\r\n\t\t\tel.classList.add(classes[i]);\r\n\t\t}\r\n\t} else if (!hasClass(el, name)) {\r\n\t\tvar className = getClass(el);\r\n\t\tsetClass(el, (className ? className + ' ' : '') + name);\r\n\t}\r\n}\r\n\r\n// @function removeClass(el: HTMLElement, name: String)\r\n// Removes `name` from the element's class attribute.\r\nfunction removeClass(el, name) {\r\n\tif (el.classList !== undefined) {\r\n\t\tel.classList.remove(name);\r\n\t} else {\r\n\t\tsetClass(el, trim((' ' + getClass(el) + ' ').replace(' ' + name + ' ', ' ')));\r\n\t}\r\n}\r\n\r\n// @function setClass(el: HTMLElement, name: String)\r\n// Sets the element's class.\r\nfunction setClass(el, name) {\r\n\tif (el.className.baseVal === undefined) {\r\n\t\tel.className = name;\r\n\t} else {\r\n\t\t// in case of SVG element\r\n\t\tel.className.baseVal = name;\r\n\t}\r\n}\r\n\r\n// @function getClass(el: HTMLElement): String\r\n// Returns the element's class.\r\nfunction getClass(el) {\r\n\t// Check if the element is an SVGElementInstance and use the correspondingElement instead\r\n\t// (Required for linked SVG elements in IE11.)\r\n\tif (el.correspondingElement) {\r\n\t\tel = el.correspondingElement;\r\n\t}\r\n\treturn el.className.baseVal === undefined ? el.className : el.className.baseVal;\r\n}\r\n\r\n// @function setOpacity(el: HTMLElement, opacity: Number)\r\n// Set the opacity of an element (including old IE support).\r\n// `opacity` must be a number from `0` to `1`.\r\nfunction setOpacity(el, value) {\r\n\tif ('opacity' in el.style) {\r\n\t\tel.style.opacity = value;\r\n\t} else if ('filter' in el.style) {\r\n\t\t_setOpacityIE(el, value);\r\n\t}\r\n}\r\n\r\nfunction _setOpacityIE(el, value) {\r\n\tvar filter = false,\r\n\t    filterName = 'DXImageTransform.Microsoft.Alpha';\r\n\r\n\t// filters collection throws an error if we try to retrieve a filter that doesn't exist\r\n\ttry {\r\n\t\tfilter = el.filters.item(filterName);\r\n\t} catch (e) {\r\n\t\t// don't set opacity to 1 if we haven't already set an opacity,\r\n\t\t// it isn't needed and breaks transparent pngs.\r\n\t\tif (value === 1) { return; }\r\n\t}\r\n\r\n\tvalue = Math.round(value * 100);\r\n\r\n\tif (filter) {\r\n\t\tfilter.Enabled = (value !== 100);\r\n\t\tfilter.Opacity = value;\r\n\t} else {\r\n\t\tel.style.filter += ' progid:' + filterName + '(opacity=' + value + ')';\r\n\t}\r\n}\r\n\r\n// @function testProp(props: String[]): String|false\r\n// Goes through the array of style names and returns the first name\r\n// that is a valid style name for an element. If no such name is found,\r\n// it returns false. Useful for vendor-prefixed styles like `transform`.\r\nfunction testProp(props) {\r\n\tvar style = document.documentElement.style;\r\n\r\n\tfor (var i = 0; i < props.length; i++) {\r\n\t\tif (props[i] in style) {\r\n\t\t\treturn props[i];\r\n\t\t}\r\n\t}\r\n\treturn false;\r\n}\r\n\r\n// @function setTransform(el: HTMLElement, offset: Point, scale?: Number)\r\n// Resets the 3D CSS transform of `el` so it is translated by `offset` pixels\r\n// and optionally scaled by `scale`. Does not have an effect if the\r\n// browser doesn't support 3D CSS transforms.\r\nfunction setTransform(el, offset, scale) {\r\n\tvar pos = offset || new Point(0, 0);\r\n\r\n\tel.style[TRANSFORM] =\r\n\t\t(ie3d ?\r\n\t\t\t'translate(' + pos.x + 'px,' + pos.y + 'px)' :\r\n\t\t\t'translate3d(' + pos.x + 'px,' + pos.y + 'px,0)') +\r\n\t\t(scale ? ' scale(' + scale + ')' : '');\r\n}\r\n\r\n// @function setPosition(el: HTMLElement, position: Point)\r\n// Sets the position of `el` to coordinates specified by `position`,\r\n// using CSS translate or top/left positioning depending on the browser\r\n// (used by Leaflet internally to position its layers).\r\nfunction setPosition(el, point) {\r\n\r\n\t/*eslint-disable */\r\n\tel._leaflet_pos = point;\r\n\t/* eslint-enable */\r\n\r\n\tif (any3d) {\r\n\t\tsetTransform(el, point);\r\n\t} else {\r\n\t\tel.style.left = point.x + 'px';\r\n\t\tel.style.top = point.y + 'px';\r\n\t}\r\n}\r\n\r\n// @function getPosition(el: HTMLElement): Point\r\n// Returns the coordinates of an element previously positioned with setPosition.\r\nfunction getPosition(el) {\r\n\t// this method is only used for elements previously positioned using setPosition,\r\n\t// so it's safe to cache the position for performance\r\n\r\n\treturn el._leaflet_pos || new Point(0, 0);\r\n}\r\n\r\n// @function disableTextSelection()\r\n// Prevents the user from generating `selectstart` DOM events, usually generated\r\n// when the user drags the mouse through a page with text. Used internally\r\n// by Leaflet to override the behaviour of any click-and-drag interaction on\r\n// the map. Affects drag interactions on the whole document.\r\n\r\n// @function enableTextSelection()\r\n// Cancels the effects of a previous [`L.DomUtil.disableTextSelection`](#domutil-disabletextselection).\r\nvar disableTextSelection;\r\nvar enableTextSelection;\r\nvar _userSelect;\r\nif ('onselectstart' in document) {\r\n\tdisableTextSelection = function () {\r\n\t\ton(window, 'selectstart', preventDefault);\r\n\t};\r\n\tenableTextSelection = function () {\r\n\t\toff(window, 'selectstart', preventDefault);\r\n\t};\r\n} else {\r\n\tvar userSelectProperty = testProp(\r\n\t\t['userSelect', 'WebkitUserSelect', 'OUserSelect', 'MozUserSelect', 'msUserSelect']);\r\n\r\n\tdisableTextSelection = function () {\r\n\t\tif (userSelectProperty) {\r\n\t\t\tvar style = document.documentElement.style;\r\n\t\t\t_userSelect = style[userSelectProperty];\r\n\t\t\tstyle[userSelectProperty] = 'none';\r\n\t\t}\r\n\t};\r\n\tenableTextSelection = function () {\r\n\t\tif (userSelectProperty) {\r\n\t\t\tdocument.documentElement.style[userSelectProperty] = _userSelect;\r\n\t\t\t_userSelect = undefined;\r\n\t\t}\r\n\t};\r\n}\r\n\r\n// @function disableImageDrag()\r\n// As [`L.DomUtil.disableTextSelection`](#domutil-disabletextselection), but\r\n// for `dragstart` DOM events, usually generated when the user drags an image.\r\nfunction disableImageDrag() {\r\n\ton(window, 'dragstart', preventDefault);\r\n}\r\n\r\n// @function enableImageDrag()\r\n// Cancels the effects of a previous [`L.DomUtil.disableImageDrag`](#domutil-disabletextselection).\r\nfunction enableImageDrag() {\r\n\toff(window, 'dragstart', preventDefault);\r\n}\r\n\r\nvar _outlineElement;\nvar _outlineStyle;\r\n// @function preventOutline(el: HTMLElement)\r\n// Makes the [outline](https://developer.mozilla.org/docs/Web/CSS/outline)\r\n// of the element `el` invisible. Used internally by Leaflet to prevent\r\n// focusable elements from displaying an outline when the user performs a\r\n// drag interaction on them.\r\nfunction preventOutline(element) {\r\n\twhile (element.tabIndex === -1) {\r\n\t\telement = element.parentNode;\r\n\t}\r\n\tif (!element.style) { return; }\r\n\trestoreOutline();\r\n\t_outlineElement = element;\r\n\t_outlineStyle = element.style.outline;\r\n\telement.style.outline = 'none';\r\n\ton(window, 'keydown', restoreOutline);\r\n}\r\n\r\n// @function restoreOutline()\r\n// Cancels the effects of a previous [`L.DomUtil.preventOutline`]().\r\nfunction restoreOutline() {\r\n\tif (!_outlineElement) { return; }\r\n\t_outlineElement.style.outline = _outlineStyle;\r\n\t_outlineElement = undefined;\r\n\t_outlineStyle = undefined;\r\n\toff(window, 'keydown', restoreOutline);\r\n}\r\n\r\n// @function getSizedParentNode(el: HTMLElement): HTMLElement\r\n// Finds the closest parent node which size (width and height) is not null.\r\nfunction getSizedParentNode(element) {\r\n\tdo {\r\n\t\telement = element.parentNode;\r\n\t} while ((!element.offsetWidth || !element.offsetHeight) && element !== document.body);\r\n\treturn element;\r\n}\r\n\r\n// @function getScale(el: HTMLElement): Object\r\n// Computes the CSS scale currently applied on the element.\r\n// Returns an object with `x` and `y` members as horizontal and vertical scales respectively,\r\n// and `boundingClientRect` as the result of [`getBoundingClientRect()`](https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect).\r\nfunction getScale(element) {\r\n\tvar rect = element.getBoundingClientRect(); // Read-only in old browsers.\r\n\r\n\treturn {\r\n\t\tx: rect.width / element.offsetWidth || 1,\r\n\t\ty: rect.height / element.offsetHeight || 1,\r\n\t\tboundingClientRect: rect\r\n\t};\r\n}\r\n\n\nvar DomUtil = (Object.freeze || Object)({\n\tTRANSFORM: TRANSFORM,\n\tTRANSITION: TRANSITION,\n\tTRANSITION_END: TRANSITION_END,\n\tget: get,\n\tgetStyle: getStyle,\n\tcreate: create$1,\n\tremove: remove,\n\tempty: empty,\n\ttoFront: toFront,\n\ttoBack: toBack,\n\thasClass: hasClass,\n\taddClass: addClass,\n\tremoveClass: removeClass,\n\tsetClass: setClass,\n\tgetClass: getClass,\n\tsetOpacity: setOpacity,\n\ttestProp: testProp,\n\tsetTransform: setTransform,\n\tsetPosition: setPosition,\n\tgetPosition: getPosition,\n\tdisableTextSelection: disableTextSelection,\n\tenableTextSelection: enableTextSelection,\n\tdisableImageDrag: disableImageDrag,\n\tenableImageDrag: enableImageDrag,\n\tpreventOutline: preventOutline,\n\trestoreOutline: restoreOutline,\n\tgetSizedParentNode: getSizedParentNode,\n\tgetScale: getScale\n});\n\n/*\r\n * @namespace DomEvent\r\n * Utility functions to work with the [DOM events](https://developer.mozilla.org/docs/Web/API/Event), used by Leaflet internally.\r\n */\r\n\r\n// Inspired by John Resig, Dean Edwards and YUI addEvent implementations.\r\n\r\n// @function on(el: HTMLElement, types: String, fn: Function, context?: Object): this\r\n// Adds a listener function (`fn`) to a particular DOM event type of the\r\n// element `el`. You can optionally specify the context of the listener\r\n// (object the `this` keyword will point to). You can also pass several\r\n// space-separated types (e.g. `'click dblclick'`).\r\n\r\n// @alternative\r\n// @function on(el: HTMLElement, eventMap: Object, context?: Object): this\r\n// Adds a set of type/listener pairs, e.g. `{click: onClick, mousemove: onMouseMove}`\r\nfunction on(obj, types, fn, context) {\r\n\r\n\tif (typeof types === 'object') {\r\n\t\tfor (var type in types) {\r\n\t\t\taddOne(obj, type, types[type], fn);\r\n\t\t}\r\n\t} else {\r\n\t\ttypes = splitWords(types);\r\n\r\n\t\tfor (var i = 0, len = types.length; i < len; i++) {\r\n\t\t\taddOne(obj, types[i], fn, context);\r\n\t\t}\r\n\t}\r\n\r\n\treturn this;\r\n}\r\n\r\nvar eventsKey = '_leaflet_events';\r\n\r\n// @function off(el: HTMLElement, types: String, fn: Function, context?: Object): this\r\n// Removes a previously added listener function.\r\n// Note that if you passed a custom context to on, you must pass the same\r\n// context to `off` in order to remove the listener.\r\n\r\n// @alternative\r\n// @function off(el: HTMLElement, eventMap: Object, context?: Object): this\r\n// Removes a set of type/listener pairs, e.g. `{click: onClick, mousemove: onMouseMove}`\r\nfunction off(obj, types, fn, context) {\r\n\r\n\tif (typeof types === 'object') {\r\n\t\tfor (var type in types) {\r\n\t\t\tremoveOne(obj, type, types[type], fn);\r\n\t\t}\r\n\t} else if (types) {\r\n\t\ttypes = splitWords(types);\r\n\r\n\t\tfor (var i = 0, len = types.length; i < len; i++) {\r\n\t\t\tremoveOne(obj, types[i], fn, context);\r\n\t\t}\r\n\t} else {\r\n\t\tfor (var j in obj[eventsKey]) {\r\n\t\t\tremoveOne(obj, j, obj[eventsKey][j]);\r\n\t\t}\r\n\t\tdelete obj[eventsKey];\r\n\t}\r\n\r\n\treturn this;\r\n}\r\n\r\nfunction addOne(obj, type, fn, context) {\r\n\tvar id = type + stamp(fn) + (context ? '_' + stamp(context) : '');\r\n\r\n\tif (obj[eventsKey] && obj[eventsKey][id]) { return this; }\r\n\r\n\tvar handler = function (e) {\r\n\t\treturn fn.call(context || obj, e || window.event);\r\n\t};\r\n\r\n\tvar originalHandler = handler;\r\n\r\n\tif (pointer && type.indexOf('touch') === 0) {\r\n\t\t// Needs DomEvent.Pointer.js\r\n\t\taddPointerListener(obj, type, handler, id);\r\n\r\n\t} else if (touch && (type === 'dblclick') && addDoubleTapListener &&\r\n\t           !(pointer && chrome)) {\r\n\t\t// Chrome >55 does not need the synthetic dblclicks from addDoubleTapListener\r\n\t\t// See #5180\r\n\t\taddDoubleTapListener(obj, handler, id);\r\n\r\n\t} else if ('addEventListener' in obj) {\r\n\r\n\t\tif (type === 'mousewheel') {\r\n\t\t\tobj.addEventListener('onwheel' in obj ? 'wheel' : 'mousewheel', handler, passiveEvents ? {passive: false} : false);\r\n\r\n\t\t} else if ((type === 'mouseenter') || (type === 'mouseleave')) {\r\n\t\t\thandler = function (e) {\r\n\t\t\t\te = e || window.event;\r\n\t\t\t\tif (isExternalTarget(obj, e)) {\r\n\t\t\t\t\toriginalHandler(e);\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t\tobj.addEventListener(type === 'mouseenter' ? 'mouseover' : 'mouseout', handler, false);\r\n\r\n\t\t} else {\r\n\t\t\tif (type === 'click' && android) {\r\n\t\t\t\thandler = function (e) {\r\n\t\t\t\t\tfilterClick(e, originalHandler);\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t\tobj.addEventListener(type, handler, false);\r\n\t\t}\r\n\r\n\t} else if ('attachEvent' in obj) {\r\n\t\tobj.attachEvent('on' + type, handler);\r\n\t}\r\n\r\n\tobj[eventsKey] = obj[eventsKey] || {};\r\n\tobj[eventsKey][id] = handler;\r\n}\r\n\r\nfunction removeOne(obj, type, fn, context) {\r\n\r\n\tvar id = type + stamp(fn) + (context ? '_' + stamp(context) : ''),\r\n\t    handler = obj[eventsKey] && obj[eventsKey][id];\r\n\r\n\tif (!handler) { return this; }\r\n\r\n\tif (pointer && type.indexOf('touch') === 0) {\r\n\t\tremovePointerListener(obj, type, id);\r\n\r\n\t} else if (touch && (type === 'dblclick') && removeDoubleTapListener &&\r\n\t           !(pointer && chrome)) {\r\n\t\tremoveDoubleTapListener(obj, id);\r\n\r\n\t} else if ('removeEventListener' in obj) {\r\n\r\n\t\tif (type === 'mousewheel') {\r\n\t\t\tobj.removeEventListener('onwheel' in obj ? 'wheel' : 'mousewheel', handler, passiveEvents ? {passive: false} : false);\r\n\r\n\t\t} else {\r\n\t\t\tobj.removeEventListener(\r\n\t\t\t\ttype === 'mouseenter' ? 'mouseover' :\r\n\t\t\t\ttype === 'mouseleave' ? 'mouseout' : type, handler, false);\r\n\t\t}\r\n\r\n\t} else if ('detachEvent' in obj) {\r\n\t\tobj.detachEvent('on' + type, handler);\r\n\t}\r\n\r\n\tobj[eventsKey][id] = null;\r\n}\r\n\r\n// @function stopPropagation(ev: DOMEvent): this\r\n// Stop the given event from propagation to parent elements. Used inside the listener functions:\r\n// ```js\r\n// L.DomEvent.on(div, 'click', function (ev) {\r\n// \tL.DomEvent.stopPropagation(ev);\r\n// });\r\n// ```\r\nfunction stopPropagation(e) {\r\n\r\n\tif (e.stopPropagation) {\r\n\t\te.stopPropagation();\r\n\t} else if (e.originalEvent) {  // In case of Leaflet event.\r\n\t\te.originalEvent._stopped = true;\r\n\t} else {\r\n\t\te.cancelBubble = true;\r\n\t}\r\n\tskipped(e);\r\n\r\n\treturn this;\r\n}\r\n\r\n// @function disableScrollPropagation(el: HTMLElement): this\r\n// Adds `stopPropagation` to the element's `'mousewheel'` events (plus browser variants).\r\nfunction disableScrollPropagation(el) {\r\n\taddOne(el, 'mousewheel', stopPropagation);\r\n\treturn this;\r\n}\r\n\r\n// @function disableClickPropagation(el: HTMLElement): this\r\n// Adds `stopPropagation` to the element's `'click'`, `'doubleclick'`,\r\n// `'mousedown'` and `'touchstart'` events (plus browser variants).\r\nfunction disableClickPropagation(el) {\r\n\ton(el, 'mousedown touchstart dblclick', stopPropagation);\r\n\taddOne(el, 'click', fakeStop);\r\n\treturn this;\r\n}\r\n\r\n// @function preventDefault(ev: DOMEvent): this\r\n// Prevents the default action of the DOM Event `ev` from happening (such as\r\n// following a link in the href of the a element, or doing a POST request\r\n// with page reload when a `<form>` is submitted).\r\n// Use it inside listener functions.\r\nfunction preventDefault(e) {\r\n\tif (e.preventDefault) {\r\n\t\te.preventDefault();\r\n\t} else {\r\n\t\te.returnValue = false;\r\n\t}\r\n\treturn this;\r\n}\r\n\r\n// @function stop(ev: DOMEvent): this\r\n// Does `stopPropagation` and `preventDefault` at the same time.\r\nfunction stop(e) {\r\n\tpreventDefault(e);\r\n\tstopPropagation(e);\r\n\treturn this;\r\n}\r\n\r\n// @function getMousePosition(ev: DOMEvent, container?: HTMLElement): Point\r\n// Gets normalized mouse position from a DOM event relative to the\r\n// `container` (border excluded) or to the whole page if not specified.\r\nfunction getMousePosition(e, container) {\r\n\tif (!container) {\r\n\t\treturn new Point(e.clientX, e.clientY);\r\n\t}\r\n\r\n\tvar scale = getScale(container),\r\n\t    offset = scale.boundingClientRect; // left and top  values are in page scale (like the event clientX/Y)\r\n\r\n\treturn new Point(\r\n\t\t// offset.left/top values are in page scale (like clientX/Y),\r\n\t\t// whereas clientLeft/Top (border width) values are the original values (before CSS scale applies).\r\n\t\t(e.clientX - offset.left) / scale.x - container.clientLeft,\r\n\t\t(e.clientY - offset.top) / scale.y - container.clientTop\r\n\t);\r\n}\r\n\r\n// Chrome on Win scrolls double the pixels as in other platforms (see #4538),\r\n// and Firefox scrolls device pixels, not CSS pixels\r\nvar wheelPxFactor =\r\n\t(win && chrome) ? 2 * window.devicePixelRatio :\r\n\tgecko ? window.devicePixelRatio : 1;\r\n\r\n// @function getWheelDelta(ev: DOMEvent): Number\r\n// Gets normalized wheel delta from a mousewheel DOM event, in vertical\r\n// pixels scrolled (negative if scrolling down).\r\n// Events from pointing devices without precise scrolling are mapped to\r\n// a best guess of 60 pixels.\r\nfunction getWheelDelta(e) {\r\n\treturn (edge) ? e.wheelDeltaY / 2 : // Don't trust window-geometry-based delta\r\n\t       (e.deltaY && e.deltaMode === 0) ? -e.deltaY / wheelPxFactor : // Pixels\r\n\t       (e.deltaY && e.deltaMode === 1) ? -e.deltaY * 20 : // Lines\r\n\t       (e.deltaY && e.deltaMode === 2) ? -e.deltaY * 60 : // Pages\r\n\t       (e.deltaX || e.deltaZ) ? 0 :\t// Skip horizontal/depth wheel events\r\n\t       e.wheelDelta ? (e.wheelDeltaY || e.wheelDelta) / 2 : // Legacy IE pixels\r\n\t       (e.detail && Math.abs(e.detail) < 32765) ? -e.detail * 20 : // Legacy Moz lines\r\n\t       e.detail ? e.detail / -32765 * 60 : // Legacy Moz pages\r\n\t       0;\r\n}\r\n\r\nvar skipEvents = {};\r\n\r\nfunction fakeStop(e) {\r\n\t// fakes stopPropagation by setting a special event flag, checked/reset with skipped(e)\r\n\tskipEvents[e.type] = true;\r\n}\r\n\r\nfunction skipped(e) {\r\n\tvar events = skipEvents[e.type];\r\n\t// reset when checking, as it's only used in map container and propagates outside of the map\r\n\tskipEvents[e.type] = false;\r\n\treturn events;\r\n}\r\n\r\n// check if element really left/entered the event target (for mouseenter/mouseleave)\r\nfunction isExternalTarget(el, e) {\r\n\r\n\tvar related = e.relatedTarget;\r\n\r\n\tif (!related) { return true; }\r\n\r\n\ttry {\r\n\t\twhile (related && (related !== el)) {\r\n\t\t\trelated = related.parentNode;\r\n\t\t}\r\n\t} catch (err) {\r\n\t\treturn false;\r\n\t}\r\n\treturn (related !== el);\r\n}\r\n\r\nvar lastClick;\r\n\r\n// this is a horrible workaround for a bug in Android where a single touch triggers two click events\r\nfunction filterClick(e, handler) {\r\n\tvar timeStamp = (e.timeStamp || (e.originalEvent && e.originalEvent.timeStamp)),\r\n\t    elapsed = lastClick && (timeStamp - lastClick);\r\n\r\n\t// are they closer together than 500ms yet more than 100ms?\r\n\t// Android typically triggers them ~300ms apart while multiple listeners\r\n\t// on the same event should be triggered far faster;\r\n\t// or check if click is simulated on the element, and if it is, reject any non-simulated events\r\n\r\n\tif ((elapsed && elapsed > 100 && elapsed < 500) || (e.target._simulatedClick && !e._simulated)) {\r\n\t\tstop(e);\r\n\t\treturn;\r\n\t}\r\n\tlastClick = timeStamp;\r\n\r\n\thandler(e);\r\n}\r\n\r\n\r\n\n\nvar DomEvent = (Object.freeze || Object)({\n\ton: on,\n\toff: off,\n\tstopPropagation: stopPropagation,\n\tdisableScrollPropagation: disableScrollPropagation,\n\tdisableClickPropagation: disableClickPropagation,\n\tpreventDefault: preventDefault,\n\tstop: stop,\n\tgetMousePosition: getMousePosition,\n\tgetWheelDelta: getWheelDelta,\n\tfakeStop: fakeStop,\n\tskipped: skipped,\n\tisExternalTarget: isExternalTarget,\n\taddListener: on,\n\tremoveListener: off\n});\n\n/*\n * @class PosAnimation\n * @aka L.PosAnimation\n * @inherits Evented\n * Used internally for panning animations, utilizing CSS3 Transitions for modern browsers and a timer fallback for IE6-9.\n *\n * @example\n * ```js\n * var fx = new L.PosAnimation();\n * fx.run(el, [300, 500], 0.5);\n * ```\n *\n * @constructor L.PosAnimation()\n * Creates a `PosAnimation` object.\n *\n */\n\nvar PosAnimation = Evented.extend({\n\n\t// @method run(el: HTMLElement, newPos: Point, duration?: Number, easeLinearity?: Number)\n\t// Run an animation of a given element to a new position, optionally setting\n\t// duration in seconds (`0.25` by default) and easing linearity factor (3rd\n\t// argument of the [cubic bezier curve](http://cubic-bezier.com/#0,0,.5,1),\n\t// `0.5` by default).\n\trun: function (el, newPos, duration, easeLinearity) {\n\t\tthis.stop();\n\n\t\tthis._el = el;\n\t\tthis._inProgress = true;\n\t\tthis._duration = duration || 0.25;\n\t\tthis._easeOutPower = 1 / Math.max(easeLinearity || 0.5, 0.2);\n\n\t\tthis._startPos = getPosition(el);\n\t\tthis._offset = newPos.subtract(this._startPos);\n\t\tthis._startTime = +new Date();\n\n\t\t// @event start: Event\n\t\t// Fired when the animation starts\n\t\tthis.fire('start');\n\n\t\tthis._animate();\n\t},\n\n\t// @method stop()\n\t// Stops the animation (if currently running).\n\tstop: function () {\n\t\tif (!this._inProgress) { return; }\n\n\t\tthis._step(true);\n\t\tthis._complete();\n\t},\n\n\t_animate: function () {\n\t\t// animation loop\n\t\tthis._animId = requestAnimFrame(this._animate, this);\n\t\tthis._step();\n\t},\n\n\t_step: function (round) {\n\t\tvar elapsed = (+new Date()) - this._startTime,\n\t\t    duration = this._duration * 1000;\n\n\t\tif (elapsed < duration) {\n\t\t\tthis._runFrame(this._easeOut(elapsed / duration), round);\n\t\t} else {\n\t\t\tthis._runFrame(1);\n\t\t\tthis._complete();\n\t\t}\n\t},\n\n\t_runFrame: function (progress, round) {\n\t\tvar pos = this._startPos.add(this._offset.multiplyBy(progress));\n\t\tif (round) {\n\t\t\tpos._round();\n\t\t}\n\t\tsetPosition(this._el, pos);\n\n\t\t// @event step: Event\n\t\t// Fired continuously during the animation.\n\t\tthis.fire('step');\n\t},\n\n\t_complete: function () {\n\t\tcancelAnimFrame(this._animId);\n\n\t\tthis._inProgress = false;\n\t\t// @event end: Event\n\t\t// Fired when the animation ends.\n\t\tthis.fire('end');\n\t},\n\n\t_easeOut: function (t) {\n\t\treturn 1 - Math.pow(1 - t, this._easeOutPower);\n\t}\n});\n\n/*\r\n * @class Map\r\n * @aka L.Map\r\n * @inherits Evented\r\n *\r\n * The central class of the API — it is used to create a map on a page and manipulate it.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * // initialize the map on the \"map\" div with a given center and zoom\r\n * var map = L.map('map', {\r\n * \tcenter: [51.505, -0.09],\r\n * \tzoom: 13\r\n * });\r\n * ```\r\n *\r\n */\r\n\r\nvar Map = Evented.extend({\r\n\r\n\toptions: {\r\n\t\t// @section Map State Options\r\n\t\t// @option crs: CRS = L.CRS.EPSG3857\r\n\t\t// The [Coordinate Reference System](#crs) to use. Don't change this if you're not\r\n\t\t// sure what it means.\r\n\t\tcrs: EPSG3857,\r\n\r\n\t\t// @option center: LatLng = undefined\r\n\t\t// Initial geographic center of the map\r\n\t\tcenter: undefined,\r\n\r\n\t\t// @option zoom: Number = undefined\r\n\t\t// Initial map zoom level\r\n\t\tzoom: undefined,\r\n\r\n\t\t// @option minZoom: Number = *\r\n\t\t// Minimum zoom level of the map.\r\n\t\t// If not specified and at least one `GridLayer` or `TileLayer` is in the map,\r\n\t\t// the lowest of their `minZoom` options will be used instead.\r\n\t\tminZoom: undefined,\r\n\r\n\t\t// @option maxZoom: Number = *\r\n\t\t// Maximum zoom level of the map.\r\n\t\t// If not specified and at least one `GridLayer` or `TileLayer` is in the map,\r\n\t\t// the highest of their `maxZoom` options will be used instead.\r\n\t\tmaxZoom: undefined,\r\n\r\n\t\t// @option layers: Layer[] = []\r\n\t\t// Array of layers that will be added to the map initially\r\n\t\tlayers: [],\r\n\r\n\t\t// @option maxBounds: LatLngBounds = null\r\n\t\t// When this option is set, the map restricts the view to the given\r\n\t\t// geographical bounds, bouncing the user back if the user tries to pan\r\n\t\t// outside the view. To set the restriction dynamically, use\r\n\t\t// [`setMaxBounds`](#map-setmaxbounds) method.\r\n\t\tmaxBounds: undefined,\r\n\r\n\t\t// @option renderer: Renderer = *\r\n\t\t// The default method for drawing vector layers on the map. `L.SVG`\r\n\t\t// or `L.Canvas` by default depending on browser support.\r\n\t\trenderer: undefined,\r\n\r\n\r\n\t\t// @section Animation Options\r\n\t\t// @option zoomAnimation: Boolean = true\r\n\t\t// Whether the map zoom animation is enabled. By default it's enabled\r\n\t\t// in all browsers that support CSS3 Transitions except Android.\r\n\t\tzoomAnimation: true,\r\n\r\n\t\t// @option zoomAnimationThreshold: Number = 4\r\n\t\t// Won't animate zoom if the zoom difference exceeds this value.\r\n\t\tzoomAnimationThreshold: 4,\r\n\r\n\t\t// @option fadeAnimation: Boolean = true\r\n\t\t// Whether the tile fade animation is enabled. By default it's enabled\r\n\t\t// in all browsers that support CSS3 Transitions except Android.\r\n\t\tfadeAnimation: true,\r\n\r\n\t\t// @option markerZoomAnimation: Boolean = true\r\n\t\t// Whether markers animate their zoom with the zoom animation, if disabled\r\n\t\t// they will disappear for the length of the animation. By default it's\r\n\t\t// enabled in all browsers that support CSS3 Transitions except Android.\r\n\t\tmarkerZoomAnimation: true,\r\n\r\n\t\t// @option transform3DLimit: Number = 2^23\r\n\t\t// Defines the maximum size of a CSS translation transform. The default\r\n\t\t// value should not be changed unless a web browser positions layers in\r\n\t\t// the wrong place after doing a large `panBy`.\r\n\t\ttransform3DLimit: 8388608, // Precision limit of a 32-bit float\r\n\r\n\t\t// @section Interaction Options\r\n\t\t// @option zoomSnap: Number = 1\r\n\t\t// Forces the map's zoom level to always be a multiple of this, particularly\r\n\t\t// right after a [`fitBounds()`](#map-fitbounds) or a pinch-zoom.\r\n\t\t// By default, the zoom level snaps to the nearest integer; lower values\r\n\t\t// (e.g. `0.5` or `0.1`) allow for greater granularity. A value of `0`\r\n\t\t// means the zoom level will not be snapped after `fitBounds` or a pinch-zoom.\r\n\t\tzoomSnap: 1,\r\n\r\n\t\t// @option zoomDelta: Number = 1\r\n\t\t// Controls how much the map's zoom level will change after a\r\n\t\t// [`zoomIn()`](#map-zoomin), [`zoomOut()`](#map-zoomout), pressing `+`\r\n\t\t// or `-` on the keyboard, or using the [zoom controls](#control-zoom).\r\n\t\t// Values smaller than `1` (e.g. `0.5`) allow for greater granularity.\r\n\t\tzoomDelta: 1,\r\n\r\n\t\t// @option trackResize: Boolean = true\r\n\t\t// Whether the map automatically handles browser window resize to update itself.\r\n\t\ttrackResize: true\r\n\t},\r\n\r\n\tinitialize: function (id, options) { // (HTMLElement or String, Object)\r\n\t\toptions = setOptions(this, options);\r\n\r\n\t\t// Make sure to assign internal flags at the beginning,\r\n\t\t// to avoid inconsistent state in some edge cases.\r\n\t\tthis._handlers = [];\r\n\t\tthis._layers = {};\r\n\t\tthis._zoomBoundLayers = {};\r\n\t\tthis._sizeChanged = true;\r\n\r\n\t\tthis._initContainer(id);\r\n\t\tthis._initLayout();\r\n\r\n\t\t// hack for https://github.com/Leaflet/Leaflet/issues/1980\r\n\t\tthis._onResize = bind(this._onResize, this);\r\n\r\n\t\tthis._initEvents();\r\n\r\n\t\tif (options.maxBounds) {\r\n\t\t\tthis.setMaxBounds(options.maxBounds);\r\n\t\t}\r\n\r\n\t\tif (options.zoom !== undefined) {\r\n\t\t\tthis._zoom = this._limitZoom(options.zoom);\r\n\t\t}\r\n\r\n\t\tif (options.center && options.zoom !== undefined) {\r\n\t\t\tthis.setView(toLatLng(options.center), options.zoom, {reset: true});\r\n\t\t}\r\n\r\n\t\tthis.callInitHooks();\r\n\r\n\t\t// don't animate on browsers without hardware-accelerated transitions or old Android/Opera\r\n\t\tthis._zoomAnimated = TRANSITION && any3d && !mobileOpera &&\r\n\t\t\t\tthis.options.zoomAnimation;\r\n\r\n\t\t// zoom transitions run with the same duration for all layers, so if one of transitionend events\r\n\t\t// happens after starting zoom animation (propagating to the map pane), we know that it ended globally\r\n\t\tif (this._zoomAnimated) {\r\n\t\t\tthis._createAnimProxy();\r\n\t\t\ton(this._proxy, TRANSITION_END, this._catchTransitionEnd, this);\r\n\t\t}\r\n\r\n\t\tthis._addLayers(this.options.layers);\r\n\t},\r\n\r\n\r\n\t// @section Methods for modifying map state\r\n\r\n\t// @method setView(center: LatLng, zoom: Number, options?: Zoom/pan options): this\r\n\t// Sets the view of the map (geographical center and zoom) with the given\r\n\t// animation options.\r\n\tsetView: function (center, zoom, options) {\r\n\r\n\t\tzoom = zoom === undefined ? this._zoom : this._limitZoom(zoom);\r\n\t\tcenter = this._limitCenter(toLatLng(center), zoom, this.options.maxBounds);\r\n\t\toptions = options || {};\r\n\r\n\t\tthis._stop();\r\n\r\n\t\tif (this._loaded && !options.reset && options !== true) {\r\n\r\n\t\t\tif (options.animate !== undefined) {\r\n\t\t\t\toptions.zoom = extend({animate: options.animate}, options.zoom);\r\n\t\t\t\toptions.pan = extend({animate: options.animate, duration: options.duration}, options.pan);\r\n\t\t\t}\r\n\r\n\t\t\t// try animating pan or zoom\r\n\t\t\tvar moved = (this._zoom !== zoom) ?\r\n\t\t\t\tthis._tryAnimatedZoom && this._tryAnimatedZoom(center, zoom, options.zoom) :\r\n\t\t\t\tthis._tryAnimatedPan(center, options.pan);\r\n\r\n\t\t\tif (moved) {\r\n\t\t\t\t// prevent resize handler call, the view will refresh after animation anyway\r\n\t\t\t\tclearTimeout(this._sizeTimer);\r\n\t\t\t\treturn this;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// animation didn't start, just reset the map view\r\n\t\tthis._resetView(center, zoom);\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method setZoom(zoom: Number, options?: Zoom/pan options): this\r\n\t// Sets the zoom of the map.\r\n\tsetZoom: function (zoom, options) {\r\n\t\tif (!this._loaded) {\r\n\t\t\tthis._zoom = zoom;\r\n\t\t\treturn this;\r\n\t\t}\r\n\t\treturn this.setView(this.getCenter(), zoom, {zoom: options});\r\n\t},\r\n\r\n\t// @method zoomIn(delta?: Number, options?: Zoom options): this\r\n\t// Increases the zoom of the map by `delta` ([`zoomDelta`](#map-zoomdelta) by default).\r\n\tzoomIn: function (delta, options) {\r\n\t\tdelta = delta || (any3d ? this.options.zoomDelta : 1);\r\n\t\treturn this.setZoom(this._zoom + delta, options);\r\n\t},\r\n\r\n\t// @method zoomOut(delta?: Number, options?: Zoom options): this\r\n\t// Decreases the zoom of the map by `delta` ([`zoomDelta`](#map-zoomdelta) by default).\r\n\tzoomOut: function (delta, options) {\r\n\t\tdelta = delta || (any3d ? this.options.zoomDelta : 1);\r\n\t\treturn this.setZoom(this._zoom - delta, options);\r\n\t},\r\n\r\n\t// @method setZoomAround(latlng: LatLng, zoom: Number, options: Zoom options): this\r\n\t// Zooms the map while keeping a specified geographical point on the map\r\n\t// stationary (e.g. used internally for scroll zoom and double-click zoom).\r\n\t// @alternative\r\n\t// @method setZoomAround(offset: Point, zoom: Number, options: Zoom options): this\r\n\t// Zooms the map while keeping a specified pixel on the map (relative to the top-left corner) stationary.\r\n\tsetZoomAround: function (latlng, zoom, options) {\r\n\t\tvar scale = this.getZoomScale(zoom),\r\n\t\t    viewHalf = this.getSize().divideBy(2),\r\n\t\t    containerPoint = latlng instanceof Point ? latlng : this.latLngToContainerPoint(latlng),\r\n\r\n\t\t    centerOffset = containerPoint.subtract(viewHalf).multiplyBy(1 - 1 / scale),\r\n\t\t    newCenter = this.containerPointToLatLng(viewHalf.add(centerOffset));\r\n\r\n\t\treturn this.setView(newCenter, zoom, {zoom: options});\r\n\t},\r\n\r\n\t_getBoundsCenterZoom: function (bounds, options) {\r\n\r\n\t\toptions = options || {};\r\n\t\tbounds = bounds.getBounds ? bounds.getBounds() : toLatLngBounds(bounds);\r\n\r\n\t\tvar paddingTL = toPoint(options.paddingTopLeft || options.padding || [0, 0]),\r\n\t\t    paddingBR = toPoint(options.paddingBottomRight || options.padding || [0, 0]),\r\n\r\n\t\t    zoom = this.getBoundsZoom(bounds, false, paddingTL.add(paddingBR));\r\n\r\n\t\tzoom = (typeof options.maxZoom === 'number') ? Math.min(options.maxZoom, zoom) : zoom;\r\n\r\n\t\tif (zoom === Infinity) {\r\n\t\t\treturn {\r\n\t\t\t\tcenter: bounds.getCenter(),\r\n\t\t\t\tzoom: zoom\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tvar paddingOffset = paddingBR.subtract(paddingTL).divideBy(2),\r\n\r\n\t\t    swPoint = this.project(bounds.getSouthWest(), zoom),\r\n\t\t    nePoint = this.project(bounds.getNorthEast(), zoom),\r\n\t\t    center = this.unproject(swPoint.add(nePoint).divideBy(2).add(paddingOffset), zoom);\r\n\r\n\t\treturn {\r\n\t\t\tcenter: center,\r\n\t\t\tzoom: zoom\r\n\t\t};\r\n\t},\r\n\r\n\t// @method fitBounds(bounds: LatLngBounds, options?: fitBounds options): this\r\n\t// Sets a map view that contains the given geographical bounds with the\r\n\t// maximum zoom level possible.\r\n\tfitBounds: function (bounds, options) {\r\n\r\n\t\tbounds = toLatLngBounds(bounds);\r\n\r\n\t\tif (!bounds.isValid()) {\r\n\t\t\tthrow new Error('Bounds are not valid.');\r\n\t\t}\r\n\r\n\t\tvar target = this._getBoundsCenterZoom(bounds, options);\r\n\t\treturn this.setView(target.center, target.zoom, options);\r\n\t},\r\n\r\n\t// @method fitWorld(options?: fitBounds options): this\r\n\t// Sets a map view that mostly contains the whole world with the maximum\r\n\t// zoom level possible.\r\n\tfitWorld: function (options) {\r\n\t\treturn this.fitBounds([[-90, -180], [90, 180]], options);\r\n\t},\r\n\r\n\t// @method panTo(latlng: LatLng, options?: Pan options): this\r\n\t// Pans the map to a given center.\r\n\tpanTo: function (center, options) { // (LatLng)\r\n\t\treturn this.setView(center, this._zoom, {pan: options});\r\n\t},\r\n\r\n\t// @method panBy(offset: Point, options?: Pan options): this\r\n\t// Pans the map by a given number of pixels (animated).\r\n\tpanBy: function (offset, options) {\r\n\t\toffset = toPoint(offset).round();\r\n\t\toptions = options || {};\r\n\r\n\t\tif (!offset.x && !offset.y) {\r\n\t\t\treturn this.fire('moveend');\r\n\t\t}\r\n\t\t// If we pan too far, Chrome gets issues with tiles\r\n\t\t// and makes them disappear or appear in the wrong place (slightly offset) #2602\r\n\t\tif (options.animate !== true && !this.getSize().contains(offset)) {\r\n\t\t\tthis._resetView(this.unproject(this.project(this.getCenter()).add(offset)), this.getZoom());\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\tif (!this._panAnim) {\r\n\t\t\tthis._panAnim = new PosAnimation();\r\n\r\n\t\t\tthis._panAnim.on({\r\n\t\t\t\t'step': this._onPanTransitionStep,\r\n\t\t\t\t'end': this._onPanTransitionEnd\r\n\t\t\t}, this);\r\n\t\t}\r\n\r\n\t\t// don't fire movestart if animating inertia\r\n\t\tif (!options.noMoveStart) {\r\n\t\t\tthis.fire('movestart');\r\n\t\t}\r\n\r\n\t\t// animate pan unless animate: false specified\r\n\t\tif (options.animate !== false) {\r\n\t\t\taddClass(this._mapPane, 'leaflet-pan-anim');\r\n\r\n\t\t\tvar newPos = this._getMapPanePos().subtract(offset).round();\r\n\t\t\tthis._panAnim.run(this._mapPane, newPos, options.duration || 0.25, options.easeLinearity);\r\n\t\t} else {\r\n\t\t\tthis._rawPanBy(offset);\r\n\t\t\tthis.fire('move').fire('moveend');\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method flyTo(latlng: LatLng, zoom?: Number, options?: Zoom/pan options): this\r\n\t// Sets the view of the map (geographical center and zoom) performing a smooth\r\n\t// pan-zoom animation.\r\n\tflyTo: function (targetCenter, targetZoom, options) {\r\n\r\n\t\toptions = options || {};\r\n\t\tif (options.animate === false || !any3d) {\r\n\t\t\treturn this.setView(targetCenter, targetZoom, options);\r\n\t\t}\r\n\r\n\t\tthis._stop();\r\n\r\n\t\tvar from = this.project(this.getCenter()),\r\n\t\t    to = this.project(targetCenter),\r\n\t\t    size = this.getSize(),\r\n\t\t    startZoom = this._zoom;\r\n\r\n\t\ttargetCenter = toLatLng(targetCenter);\r\n\t\ttargetZoom = targetZoom === undefined ? startZoom : targetZoom;\r\n\r\n\t\tvar w0 = Math.max(size.x, size.y),\r\n\t\t    w1 = w0 * this.getZoomScale(startZoom, targetZoom),\r\n\t\t    u1 = (to.distanceTo(from)) || 1,\r\n\t\t    rho = 1.42,\r\n\t\t    rho2 = rho * rho;\r\n\r\n\t\tfunction r(i) {\r\n\t\t\tvar s1 = i ? -1 : 1,\r\n\t\t\t    s2 = i ? w1 : w0,\r\n\t\t\t    t1 = w1 * w1 - w0 * w0 + s1 * rho2 * rho2 * u1 * u1,\r\n\t\t\t    b1 = 2 * s2 * rho2 * u1,\r\n\t\t\t    b = t1 / b1,\r\n\t\t\t    sq = Math.sqrt(b * b + 1) - b;\r\n\r\n\t\t\t    // workaround for floating point precision bug when sq = 0, log = -Infinite,\r\n\t\t\t    // thus triggering an infinite loop in flyTo\r\n\t\t\t    var log = sq < 0.000000001 ? -18 : Math.log(sq);\r\n\r\n\t\t\treturn log;\r\n\t\t}\r\n\r\n\t\tfunction sinh(n) { return (Math.exp(n) - Math.exp(-n)) / 2; }\r\n\t\tfunction cosh(n) { return (Math.exp(n) + Math.exp(-n)) / 2; }\r\n\t\tfunction tanh(n) { return sinh(n) / cosh(n); }\r\n\r\n\t\tvar r0 = r(0);\r\n\r\n\t\tfunction w(s) { return w0 * (cosh(r0) / cosh(r0 + rho * s)); }\r\n\t\tfunction u(s) { return w0 * (cosh(r0) * tanh(r0 + rho * s) - sinh(r0)) / rho2; }\r\n\r\n\t\tfunction easeOut(t) { return 1 - Math.pow(1 - t, 1.5); }\r\n\r\n\t\tvar start = Date.now(),\r\n\t\t    S = (r(1) - r0) / rho,\r\n\t\t    duration = options.duration ? 1000 * options.duration : 1000 * S * 0.8;\r\n\r\n\t\tfunction frame() {\r\n\t\t\tvar t = (Date.now() - start) / duration,\r\n\t\t\t    s = easeOut(t) * S;\r\n\r\n\t\t\tif (t <= 1) {\r\n\t\t\t\tthis._flyToFrame = requestAnimFrame(frame, this);\r\n\r\n\t\t\t\tthis._move(\r\n\t\t\t\t\tthis.unproject(from.add(to.subtract(from).multiplyBy(u(s) / u1)), startZoom),\r\n\t\t\t\t\tthis.getScaleZoom(w0 / w(s), startZoom),\r\n\t\t\t\t\t{flyTo: true});\r\n\r\n\t\t\t} else {\r\n\t\t\t\tthis\r\n\t\t\t\t\t._move(targetCenter, targetZoom)\r\n\t\t\t\t\t._moveEnd(true);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis._moveStart(true, options.noMoveStart);\r\n\r\n\t\tframe.call(this);\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method flyToBounds(bounds: LatLngBounds, options?: fitBounds options): this\r\n\t// Sets the view of the map with a smooth animation like [`flyTo`](#map-flyto),\r\n\t// but takes a bounds parameter like [`fitBounds`](#map-fitbounds).\r\n\tflyToBounds: function (bounds, options) {\r\n\t\tvar target = this._getBoundsCenterZoom(bounds, options);\r\n\t\treturn this.flyTo(target.center, target.zoom, options);\r\n\t},\r\n\r\n\t// @method setMaxBounds(bounds: Bounds): this\r\n\t// Restricts the map view to the given bounds (see the [maxBounds](#map-maxbounds) option).\r\n\tsetMaxBounds: function (bounds) {\r\n\t\tbounds = toLatLngBounds(bounds);\r\n\r\n\t\tif (!bounds.isValid()) {\r\n\t\t\tthis.options.maxBounds = null;\r\n\t\t\treturn this.off('moveend', this._panInsideMaxBounds);\r\n\t\t} else if (this.options.maxBounds) {\r\n\t\t\tthis.off('moveend', this._panInsideMaxBounds);\r\n\t\t}\r\n\r\n\t\tthis.options.maxBounds = bounds;\r\n\r\n\t\tif (this._loaded) {\r\n\t\t\tthis._panInsideMaxBounds();\r\n\t\t}\r\n\r\n\t\treturn this.on('moveend', this._panInsideMaxBounds);\r\n\t},\r\n\r\n\t// @method setMinZoom(zoom: Number): this\r\n\t// Sets the lower limit for the available zoom levels (see the [minZoom](#map-minzoom) option).\r\n\tsetMinZoom: function (zoom) {\r\n\t\tvar oldZoom = this.options.minZoom;\r\n\t\tthis.options.minZoom = zoom;\r\n\r\n\t\tif (this._loaded && oldZoom !== zoom) {\r\n\t\t\tthis.fire('zoomlevelschange');\r\n\r\n\t\t\tif (this.getZoom() < this.options.minZoom) {\r\n\t\t\t\treturn this.setZoom(zoom);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method setMaxZoom(zoom: Number): this\r\n\t// Sets the upper limit for the available zoom levels (see the [maxZoom](#map-maxzoom) option).\r\n\tsetMaxZoom: function (zoom) {\r\n\t\tvar oldZoom = this.options.maxZoom;\r\n\t\tthis.options.maxZoom = zoom;\r\n\r\n\t\tif (this._loaded && oldZoom !== zoom) {\r\n\t\t\tthis.fire('zoomlevelschange');\r\n\r\n\t\t\tif (this.getZoom() > this.options.maxZoom) {\r\n\t\t\t\treturn this.setZoom(zoom);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method panInsideBounds(bounds: LatLngBounds, options?: Pan options): this\r\n\t// Pans the map to the closest view that would lie inside the given bounds (if it's not already), controlling the animation using the options specific, if any.\r\n\tpanInsideBounds: function (bounds, options) {\r\n\t\tthis._enforcingBounds = true;\r\n\t\tvar center = this.getCenter(),\r\n\t\t    newCenter = this._limitCenter(center, this._zoom, toLatLngBounds(bounds));\r\n\r\n\t\tif (!center.equals(newCenter)) {\r\n\t\t\tthis.panTo(newCenter, options);\r\n\t\t}\r\n\r\n\t\tthis._enforcingBounds = false;\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method panInside(latlng: LatLng, options?: options): this\r\n\t// Pans the map the minimum amount to make the `latlng` visible. Use\r\n\t// `padding`, `paddingTopLeft` and `paddingTopRight` options to fit\r\n\t// the display to more restricted bounds, like [`fitBounds`](#map-fitbounds).\r\n\t// If `latlng` is already within the (optionally padded) display bounds,\r\n\t// the map will not be panned.\r\n\tpanInside: function (latlng, options) {\r\n\t\toptions = options || {};\r\n\r\n\t\tvar paddingTL = toPoint(options.paddingTopLeft || options.padding || [0, 0]),\r\n\t\t    paddingBR = toPoint(options.paddingBottomRight || options.padding || [0, 0]),\r\n\t\t    center = this.getCenter(),\r\n\t\t    pixelCenter = this.project(center),\r\n\t\t    pixelPoint = this.project(latlng),\r\n\t\t    pixelBounds = this.getPixelBounds(),\r\n\t\t    halfPixelBounds = pixelBounds.getSize().divideBy(2),\r\n\t\t    paddedBounds = toBounds([pixelBounds.min.add(paddingTL), pixelBounds.max.subtract(paddingBR)]);\r\n\r\n\t\tif (!paddedBounds.contains(pixelPoint)) {\r\n\t\t\tthis._enforcingBounds = true;\r\n\t\t\tvar diff = pixelCenter.subtract(pixelPoint),\r\n\t\t\t    newCenter = toPoint(pixelPoint.x + diff.x, pixelPoint.y + diff.y);\r\n\r\n\t\t\tif (pixelPoint.x < paddedBounds.min.x || pixelPoint.x > paddedBounds.max.x) {\r\n\t\t\t\tnewCenter.x = pixelCenter.x - diff.x;\r\n\t\t\t\tif (diff.x > 0) {\r\n\t\t\t\t\tnewCenter.x += halfPixelBounds.x - paddingTL.x;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tnewCenter.x -= halfPixelBounds.x - paddingBR.x;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (pixelPoint.y < paddedBounds.min.y || pixelPoint.y > paddedBounds.max.y) {\r\n\t\t\t\tnewCenter.y = pixelCenter.y - diff.y;\r\n\t\t\t\tif (diff.y > 0) {\r\n\t\t\t\t\tnewCenter.y += halfPixelBounds.y - paddingTL.y;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tnewCenter.y -= halfPixelBounds.y - paddingBR.y;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tthis.panTo(this.unproject(newCenter), options);\r\n\t\t\tthis._enforcingBounds = false;\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method invalidateSize(options: Zoom/pan options): this\r\n\t// Checks if the map container size changed and updates the map if so —\r\n\t// call it after you've changed the map size dynamically, also animating\r\n\t// pan by default. If `options.pan` is `false`, panning will not occur.\r\n\t// If `options.debounceMoveend` is `true`, it will delay `moveend` event so\r\n\t// that it doesn't happen often even if the method is called many\r\n\t// times in a row.\r\n\r\n\t// @alternative\r\n\t// @method invalidateSize(animate: Boolean): this\r\n\t// Checks if the map container size changed and updates the map if so —\r\n\t// call it after you've changed the map size dynamically, also animating\r\n\t// pan by default.\r\n\tinvalidateSize: function (options) {\r\n\t\tif (!this._loaded) { return this; }\r\n\r\n\t\toptions = extend({\r\n\t\t\tanimate: false,\r\n\t\t\tpan: true\r\n\t\t}, options === true ? {animate: true} : options);\r\n\r\n\t\tvar oldSize = this.getSize();\r\n\t\tthis._sizeChanged = true;\r\n\t\tthis._lastCenter = null;\r\n\r\n\t\tvar newSize = this.getSize(),\r\n\t\t    oldCenter = oldSize.divideBy(2).round(),\r\n\t\t    newCenter = newSize.divideBy(2).round(),\r\n\t\t    offset = oldCenter.subtract(newCenter);\r\n\r\n\t\tif (!offset.x && !offset.y) { return this; }\r\n\r\n\t\tif (options.animate && options.pan) {\r\n\t\t\tthis.panBy(offset);\r\n\r\n\t\t} else {\r\n\t\t\tif (options.pan) {\r\n\t\t\t\tthis._rawPanBy(offset);\r\n\t\t\t}\r\n\r\n\t\t\tthis.fire('move');\r\n\r\n\t\t\tif (options.debounceMoveend) {\r\n\t\t\t\tclearTimeout(this._sizeTimer);\r\n\t\t\t\tthis._sizeTimer = setTimeout(bind(this.fire, this, 'moveend'), 200);\r\n\t\t\t} else {\r\n\t\t\t\tthis.fire('moveend');\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// @section Map state change events\r\n\t\t// @event resize: ResizeEvent\r\n\t\t// Fired when the map is resized.\r\n\t\treturn this.fire('resize', {\r\n\t\t\toldSize: oldSize,\r\n\t\t\tnewSize: newSize\r\n\t\t});\r\n\t},\r\n\r\n\t// @section Methods for modifying map state\r\n\t// @method stop(): this\r\n\t// Stops the currently running `panTo` or `flyTo` animation, if any.\r\n\tstop: function () {\r\n\t\tthis.setZoom(this._limitZoom(this._zoom));\r\n\t\tif (!this.options.zoomSnap) {\r\n\t\t\tthis.fire('viewreset');\r\n\t\t}\r\n\t\treturn this._stop();\r\n\t},\r\n\r\n\t// @section Geolocation methods\r\n\t// @method locate(options?: Locate options): this\r\n\t// Tries to locate the user using the Geolocation API, firing a [`locationfound`](#map-locationfound)\r\n\t// event with location data on success or a [`locationerror`](#map-locationerror) event on failure,\r\n\t// and optionally sets the map view to the user's location with respect to\r\n\t// detection accuracy (or to the world view if geolocation failed).\r\n\t// Note that, if your page doesn't use HTTPS, this method will fail in\r\n\t// modern browsers ([Chrome 50 and newer](https://sites.google.com/a/chromium.org/dev/Home/chromium-security/deprecating-powerful-features-on-insecure-origins))\r\n\t// See `Locate options` for more details.\r\n\tlocate: function (options) {\r\n\r\n\t\toptions = this._locateOptions = extend({\r\n\t\t\ttimeout: 10000,\r\n\t\t\twatch: false\r\n\t\t\t// setView: false\r\n\t\t\t// maxZoom: <Number>\r\n\t\t\t// maximumAge: 0\r\n\t\t\t// enableHighAccuracy: false\r\n\t\t}, options);\r\n\r\n\t\tif (!('geolocation' in navigator)) {\r\n\t\t\tthis._handleGeolocationError({\r\n\t\t\t\tcode: 0,\r\n\t\t\t\tmessage: 'Geolocation not supported.'\r\n\t\t\t});\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\tvar onResponse = bind(this._handleGeolocationResponse, this),\r\n\t\t    onError = bind(this._handleGeolocationError, this);\r\n\r\n\t\tif (options.watch) {\r\n\t\t\tthis._locationWatchId =\r\n\t\t\t        navigator.geolocation.watchPosition(onResponse, onError, options);\r\n\t\t} else {\r\n\t\t\tnavigator.geolocation.getCurrentPosition(onResponse, onError, options);\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method stopLocate(): this\r\n\t// Stops watching location previously initiated by `map.locate({watch: true})`\r\n\t// and aborts resetting the map view if map.locate was called with\r\n\t// `{setView: true}`.\r\n\tstopLocate: function () {\r\n\t\tif (navigator.geolocation && navigator.geolocation.clearWatch) {\r\n\t\t\tnavigator.geolocation.clearWatch(this._locationWatchId);\r\n\t\t}\r\n\t\tif (this._locateOptions) {\r\n\t\t\tthis._locateOptions.setView = false;\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t_handleGeolocationError: function (error) {\r\n\t\tvar c = error.code,\r\n\t\t    message = error.message ||\r\n\t\t            (c === 1 ? 'permission denied' :\r\n\t\t            (c === 2 ? 'position unavailable' : 'timeout'));\r\n\r\n\t\tif (this._locateOptions.setView && !this._loaded) {\r\n\t\t\tthis.fitWorld();\r\n\t\t}\r\n\r\n\t\t// @section Location events\r\n\t\t// @event locationerror: ErrorEvent\r\n\t\t// Fired when geolocation (using the [`locate`](#map-locate) method) failed.\r\n\t\tthis.fire('locationerror', {\r\n\t\t\tcode: c,\r\n\t\t\tmessage: 'Geolocation error: ' + message + '.'\r\n\t\t});\r\n\t},\r\n\r\n\t_handleGeolocationResponse: function (pos) {\r\n\t\tvar lat = pos.coords.latitude,\r\n\t\t    lng = pos.coords.longitude,\r\n\t\t    latlng = new LatLng(lat, lng),\r\n\t\t    bounds = latlng.toBounds(pos.coords.accuracy * 2),\r\n\t\t    options = this._locateOptions;\r\n\r\n\t\tif (options.setView) {\r\n\t\t\tvar zoom = this.getBoundsZoom(bounds);\r\n\t\t\tthis.setView(latlng, options.maxZoom ? Math.min(zoom, options.maxZoom) : zoom);\r\n\t\t}\r\n\r\n\t\tvar data = {\r\n\t\t\tlatlng: latlng,\r\n\t\t\tbounds: bounds,\r\n\t\t\ttimestamp: pos.timestamp\r\n\t\t};\r\n\r\n\t\tfor (var i in pos.coords) {\r\n\t\t\tif (typeof pos.coords[i] === 'number') {\r\n\t\t\t\tdata[i] = pos.coords[i];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// @event locationfound: LocationEvent\r\n\t\t// Fired when geolocation (using the [`locate`](#map-locate) method)\r\n\t\t// went successfully.\r\n\t\tthis.fire('locationfound', data);\r\n\t},\r\n\r\n\t// TODO Appropriate docs section?\r\n\t// @section Other Methods\r\n\t// @method addHandler(name: String, HandlerClass: Function): this\r\n\t// Adds a new `Handler` to the map, given its name and constructor function.\r\n\taddHandler: function (name, HandlerClass) {\r\n\t\tif (!HandlerClass) { return this; }\r\n\r\n\t\tvar handler = this[name] = new HandlerClass(this);\r\n\r\n\t\tthis._handlers.push(handler);\r\n\r\n\t\tif (this.options[name]) {\r\n\t\t\thandler.enable();\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method remove(): this\r\n\t// Destroys the map and clears all related event listeners.\r\n\tremove: function () {\r\n\r\n\t\tthis._initEvents(true);\r\n\r\n\t\tif (this._containerId !== this._container._leaflet_id) {\r\n\t\t\tthrow new Error('Map container is being reused by another instance');\r\n\t\t}\r\n\r\n\t\ttry {\r\n\t\t\t// throws error in IE6-8\r\n\t\t\tdelete this._container._leaflet_id;\r\n\t\t\tdelete this._containerId;\r\n\t\t} catch (e) {\r\n\t\t\t/*eslint-disable */\r\n\t\t\tthis._container._leaflet_id = undefined;\r\n\t\t\t/* eslint-enable */\r\n\t\t\tthis._containerId = undefined;\r\n\t\t}\r\n\r\n\t\tif (this._locationWatchId !== undefined) {\r\n\t\t\tthis.stopLocate();\r\n\t\t}\r\n\r\n\t\tthis._stop();\r\n\r\n\t\tremove(this._mapPane);\r\n\r\n\t\tif (this._clearControlPos) {\r\n\t\t\tthis._clearControlPos();\r\n\t\t}\r\n\t\tif (this._resizeRequest) {\r\n\t\t\tcancelAnimFrame(this._resizeRequest);\r\n\t\t\tthis._resizeRequest = null;\r\n\t\t}\r\n\r\n\t\tthis._clearHandlers();\r\n\r\n\t\tif (this._loaded) {\r\n\t\t\t// @section Map state change events\r\n\t\t\t// @event unload: Event\r\n\t\t\t// Fired when the map is destroyed with [remove](#map-remove) method.\r\n\t\t\tthis.fire('unload');\r\n\t\t}\r\n\r\n\t\tvar i;\r\n\t\tfor (i in this._layers) {\r\n\t\t\tthis._layers[i].remove();\r\n\t\t}\r\n\t\tfor (i in this._panes) {\r\n\t\t\tremove(this._panes[i]);\r\n\t\t}\r\n\r\n\t\tthis._layers = [];\r\n\t\tthis._panes = [];\r\n\t\tdelete this._mapPane;\r\n\t\tdelete this._renderer;\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @section Other Methods\r\n\t// @method createPane(name: String, container?: HTMLElement): HTMLElement\r\n\t// Creates a new [map pane](#map-pane) with the given name if it doesn't exist already,\r\n\t// then returns it. The pane is created as a child of `container`, or\r\n\t// as a child of the main map pane if not set.\r\n\tcreatePane: function (name, container) {\r\n\t\tvar className = 'leaflet-pane' + (name ? ' leaflet-' + name.replace('Pane', '') + '-pane' : ''),\r\n\t\t    pane = create$1('div', className, container || this._mapPane);\r\n\r\n\t\tif (name) {\r\n\t\t\tthis._panes[name] = pane;\r\n\t\t}\r\n\t\treturn pane;\r\n\t},\r\n\r\n\t// @section Methods for Getting Map State\r\n\r\n\t// @method getCenter(): LatLng\r\n\t// Returns the geographical center of the map view\r\n\tgetCenter: function () {\r\n\t\tthis._checkIfLoaded();\r\n\r\n\t\tif (this._lastCenter && !this._moved()) {\r\n\t\t\treturn this._lastCenter;\r\n\t\t}\r\n\t\treturn this.layerPointToLatLng(this._getCenterLayerPoint());\r\n\t},\r\n\r\n\t// @method getZoom(): Number\r\n\t// Returns the current zoom level of the map view\r\n\tgetZoom: function () {\r\n\t\treturn this._zoom;\r\n\t},\r\n\r\n\t// @method getBounds(): LatLngBounds\r\n\t// Returns the geographical bounds visible in the current map view\r\n\tgetBounds: function () {\r\n\t\tvar bounds = this.getPixelBounds(),\r\n\t\t    sw = this.unproject(bounds.getBottomLeft()),\r\n\t\t    ne = this.unproject(bounds.getTopRight());\r\n\r\n\t\treturn new LatLngBounds(sw, ne);\r\n\t},\r\n\r\n\t// @method getMinZoom(): Number\r\n\t// Returns the minimum zoom level of the map (if set in the `minZoom` option of the map or of any layers), or `0` by default.\r\n\tgetMinZoom: function () {\r\n\t\treturn this.options.minZoom === undefined ? this._layersMinZoom || 0 : this.options.minZoom;\r\n\t},\r\n\r\n\t// @method getMaxZoom(): Number\r\n\t// Returns the maximum zoom level of the map (if set in the `maxZoom` option of the map or of any layers).\r\n\tgetMaxZoom: function () {\r\n\t\treturn this.options.maxZoom === undefined ?\r\n\t\t\t(this._layersMaxZoom === undefined ? Infinity : this._layersMaxZoom) :\r\n\t\t\tthis.options.maxZoom;\r\n\t},\r\n\r\n\t// @method getBoundsZoom(bounds: LatLngBounds, inside?: Boolean, padding?: Point): Number\r\n\t// Returns the maximum zoom level on which the given bounds fit to the map\r\n\t// view in its entirety. If `inside` (optional) is set to `true`, the method\r\n\t// instead returns the minimum zoom level on which the map view fits into\r\n\t// the given bounds in its entirety.\r\n\tgetBoundsZoom: function (bounds, inside, padding) { // (LatLngBounds[, Boolean, Point]) -> Number\r\n\t\tbounds = toLatLngBounds(bounds);\r\n\t\tpadding = toPoint(padding || [0, 0]);\r\n\r\n\t\tvar zoom = this.getZoom() || 0,\r\n\t\t    min = this.getMinZoom(),\r\n\t\t    max = this.getMaxZoom(),\r\n\t\t    nw = bounds.getNorthWest(),\r\n\t\t    se = bounds.getSouthEast(),\r\n\t\t    size = this.getSize().subtract(padding),\r\n\t\t    boundsSize = toBounds(this.project(se, zoom), this.project(nw, zoom)).getSize(),\r\n\t\t    snap = any3d ? this.options.zoomSnap : 1,\r\n\t\t    scalex = size.x / boundsSize.x,\r\n\t\t    scaley = size.y / boundsSize.y,\r\n\t\t    scale = inside ? Math.max(scalex, scaley) : Math.min(scalex, scaley);\r\n\r\n\t\tzoom = this.getScaleZoom(scale, zoom);\r\n\r\n\t\tif (snap) {\r\n\t\t\tzoom = Math.round(zoom / (snap / 100)) * (snap / 100); // don't jump if within 1% of a snap level\r\n\t\t\tzoom = inside ? Math.ceil(zoom / snap) * snap : Math.floor(zoom / snap) * snap;\r\n\t\t}\r\n\r\n\t\treturn Math.max(min, Math.min(max, zoom));\r\n\t},\r\n\r\n\t// @method getSize(): Point\r\n\t// Returns the current size of the map container (in pixels).\r\n\tgetSize: function () {\r\n\t\tif (!this._size || this._sizeChanged) {\r\n\t\t\tthis._size = new Point(\r\n\t\t\t\tthis._container.clientWidth || 0,\r\n\t\t\t\tthis._container.clientHeight || 0);\r\n\r\n\t\t\tthis._sizeChanged = false;\r\n\t\t}\r\n\t\treturn this._size.clone();\r\n\t},\r\n\r\n\t// @method getPixelBounds(): Bounds\r\n\t// Returns the bounds of the current map view in projected pixel\r\n\t// coordinates (sometimes useful in layer and overlay implementations).\r\n\tgetPixelBounds: function (center, zoom) {\r\n\t\tvar topLeftPoint = this._getTopLeftPoint(center, zoom);\r\n\t\treturn new Bounds(topLeftPoint, topLeftPoint.add(this.getSize()));\r\n\t},\r\n\r\n\t// TODO: Check semantics - isn't the pixel origin the 0,0 coord relative to\r\n\t// the map pane? \"left point of the map layer\" can be confusing, specially\r\n\t// since there can be negative offsets.\r\n\t// @method getPixelOrigin(): Point\r\n\t// Returns the projected pixel coordinates of the top left point of\r\n\t// the map layer (useful in custom layer and overlay implementations).\r\n\tgetPixelOrigin: function () {\r\n\t\tthis._checkIfLoaded();\r\n\t\treturn this._pixelOrigin;\r\n\t},\r\n\r\n\t// @method getPixelWorldBounds(zoom?: Number): Bounds\r\n\t// Returns the world's bounds in pixel coordinates for zoom level `zoom`.\r\n\t// If `zoom` is omitted, the map's current zoom level is used.\r\n\tgetPixelWorldBounds: function (zoom) {\r\n\t\treturn this.options.crs.getProjectedBounds(zoom === undefined ? this.getZoom() : zoom);\r\n\t},\r\n\r\n\t// @section Other Methods\r\n\r\n\t// @method getPane(pane: String|HTMLElement): HTMLElement\r\n\t// Returns a [map pane](#map-pane), given its name or its HTML element (its identity).\r\n\tgetPane: function (pane) {\r\n\t\treturn typeof pane === 'string' ? this._panes[pane] : pane;\r\n\t},\r\n\r\n\t// @method getPanes(): Object\r\n\t// Returns a plain object containing the names of all [panes](#map-pane) as keys and\r\n\t// the panes as values.\r\n\tgetPanes: function () {\r\n\t\treturn this._panes;\r\n\t},\r\n\r\n\t// @method getContainer: HTMLElement\r\n\t// Returns the HTML element that contains the map.\r\n\tgetContainer: function () {\r\n\t\treturn this._container;\r\n\t},\r\n\r\n\r\n\t// @section Conversion Methods\r\n\r\n\t// @method getZoomScale(toZoom: Number, fromZoom: Number): Number\r\n\t// Returns the scale factor to be applied to a map transition from zoom level\r\n\t// `fromZoom` to `toZoom`. Used internally to help with zoom animations.\r\n\tgetZoomScale: function (toZoom, fromZoom) {\r\n\t\t// TODO replace with universal implementation after refactoring projections\r\n\t\tvar crs = this.options.crs;\r\n\t\tfromZoom = fromZoom === undefined ? this._zoom : fromZoom;\r\n\t\treturn crs.scale(toZoom) / crs.scale(fromZoom);\r\n\t},\r\n\r\n\t// @method getScaleZoom(scale: Number, fromZoom: Number): Number\r\n\t// Returns the zoom level that the map would end up at, if it is at `fromZoom`\r\n\t// level and everything is scaled by a factor of `scale`. Inverse of\r\n\t// [`getZoomScale`](#map-getZoomScale).\r\n\tgetScaleZoom: function (scale, fromZoom) {\r\n\t\tvar crs = this.options.crs;\r\n\t\tfromZoom = fromZoom === undefined ? this._zoom : fromZoom;\r\n\t\tvar zoom = crs.zoom(scale * crs.scale(fromZoom));\r\n\t\treturn isNaN(zoom) ? Infinity : zoom;\r\n\t},\r\n\r\n\t// @method project(latlng: LatLng, zoom: Number): Point\r\n\t// Projects a geographical coordinate `LatLng` according to the projection\r\n\t// of the map's CRS, then scales it according to `zoom` and the CRS's\r\n\t// `Transformation`. The result is pixel coordinate relative to\r\n\t// the CRS origin.\r\n\tproject: function (latlng, zoom) {\r\n\t\tzoom = zoom === undefined ? this._zoom : zoom;\r\n\t\treturn this.options.crs.latLngToPoint(toLatLng(latlng), zoom);\r\n\t},\r\n\r\n\t// @method unproject(point: Point, zoom: Number): LatLng\r\n\t// Inverse of [`project`](#map-project).\r\n\tunproject: function (point, zoom) {\r\n\t\tzoom = zoom === undefined ? this._zoom : zoom;\r\n\t\treturn this.options.crs.pointToLatLng(toPoint(point), zoom);\r\n\t},\r\n\r\n\t// @method layerPointToLatLng(point: Point): LatLng\r\n\t// Given a pixel coordinate relative to the [origin pixel](#map-getpixelorigin),\r\n\t// returns the corresponding geographical coordinate (for the current zoom level).\r\n\tlayerPointToLatLng: function (point) {\r\n\t\tvar projectedPoint = toPoint(point).add(this.getPixelOrigin());\r\n\t\treturn this.unproject(projectedPoint);\r\n\t},\r\n\r\n\t// @method latLngToLayerPoint(latlng: LatLng): Point\r\n\t// Given a geographical coordinate, returns the corresponding pixel coordinate\r\n\t// relative to the [origin pixel](#map-getpixelorigin).\r\n\tlatLngToLayerPoint: function (latlng) {\r\n\t\tvar projectedPoint = this.project(toLatLng(latlng))._round();\r\n\t\treturn projectedPoint._subtract(this.getPixelOrigin());\r\n\t},\r\n\r\n\t// @method wrapLatLng(latlng: LatLng): LatLng\r\n\t// Returns a `LatLng` where `lat` and `lng` has been wrapped according to the\r\n\t// map's CRS's `wrapLat` and `wrapLng` properties, if they are outside the\r\n\t// CRS's bounds.\r\n\t// By default this means longitude is wrapped around the dateline so its\r\n\t// value is between -180 and +180 degrees.\r\n\twrapLatLng: function (latlng) {\r\n\t\treturn this.options.crs.wrapLatLng(toLatLng(latlng));\r\n\t},\r\n\r\n\t// @method wrapLatLngBounds(bounds: LatLngBounds): LatLngBounds\r\n\t// Returns a `LatLngBounds` with the same size as the given one, ensuring that\r\n\t// its center is within the CRS's bounds.\r\n\t// By default this means the center longitude is wrapped around the dateline so its\r\n\t// value is between -180 and +180 degrees, and the majority of the bounds\r\n\t// overlaps the CRS's bounds.\r\n\twrapLatLngBounds: function (latlng) {\r\n\t\treturn this.options.crs.wrapLatLngBounds(toLatLngBounds(latlng));\r\n\t},\r\n\r\n\t// @method distance(latlng1: LatLng, latlng2: LatLng): Number\r\n\t// Returns the distance between two geographical coordinates according to\r\n\t// the map's CRS. By default this measures distance in meters.\r\n\tdistance: function (latlng1, latlng2) {\r\n\t\treturn this.options.crs.distance(toLatLng(latlng1), toLatLng(latlng2));\r\n\t},\r\n\r\n\t// @method containerPointToLayerPoint(point: Point): Point\r\n\t// Given a pixel coordinate relative to the map container, returns the corresponding\r\n\t// pixel coordinate relative to the [origin pixel](#map-getpixelorigin).\r\n\tcontainerPointToLayerPoint: function (point) { // (Point)\r\n\t\treturn toPoint(point).subtract(this._getMapPanePos());\r\n\t},\r\n\r\n\t// @method layerPointToContainerPoint(point: Point): Point\r\n\t// Given a pixel coordinate relative to the [origin pixel](#map-getpixelorigin),\r\n\t// returns the corresponding pixel coordinate relative to the map container.\r\n\tlayerPointToContainerPoint: function (point) { // (Point)\r\n\t\treturn toPoint(point).add(this._getMapPanePos());\r\n\t},\r\n\r\n\t// @method containerPointToLatLng(point: Point): LatLng\r\n\t// Given a pixel coordinate relative to the map container, returns\r\n\t// the corresponding geographical coordinate (for the current zoom level).\r\n\tcontainerPointToLatLng: function (point) {\r\n\t\tvar layerPoint = this.containerPointToLayerPoint(toPoint(point));\r\n\t\treturn this.layerPointToLatLng(layerPoint);\r\n\t},\r\n\r\n\t// @method latLngToContainerPoint(latlng: LatLng): Point\r\n\t// Given a geographical coordinate, returns the corresponding pixel coordinate\r\n\t// relative to the map container.\r\n\tlatLngToContainerPoint: function (latlng) {\r\n\t\treturn this.layerPointToContainerPoint(this.latLngToLayerPoint(toLatLng(latlng)));\r\n\t},\r\n\r\n\t// @method mouseEventToContainerPoint(ev: MouseEvent): Point\r\n\t// Given a MouseEvent object, returns the pixel coordinate relative to the\r\n\t// map container where the event took place.\r\n\tmouseEventToContainerPoint: function (e) {\r\n\t\treturn getMousePosition(e, this._container);\r\n\t},\r\n\r\n\t// @method mouseEventToLayerPoint(ev: MouseEvent): Point\r\n\t// Given a MouseEvent object, returns the pixel coordinate relative to\r\n\t// the [origin pixel](#map-getpixelorigin) where the event took place.\r\n\tmouseEventToLayerPoint: function (e) {\r\n\t\treturn this.containerPointToLayerPoint(this.mouseEventToContainerPoint(e));\r\n\t},\r\n\r\n\t// @method mouseEventToLatLng(ev: MouseEvent): LatLng\r\n\t// Given a MouseEvent object, returns geographical coordinate where the\r\n\t// event took place.\r\n\tmouseEventToLatLng: function (e) { // (MouseEvent)\r\n\t\treturn this.layerPointToLatLng(this.mouseEventToLayerPoint(e));\r\n\t},\r\n\r\n\r\n\t// map initialization methods\r\n\r\n\t_initContainer: function (id) {\r\n\t\tvar container = this._container = get(id);\r\n\r\n\t\tif (!container) {\r\n\t\t\tthrow new Error('Map container not found.');\r\n\t\t} else if (container._leaflet_id) {\r\n\t\t\tthrow new Error('Map container is already initialized.');\r\n\t\t}\r\n\r\n\t\ton(container, 'scroll', this._onScroll, this);\r\n\t\tthis._containerId = stamp(container);\r\n\t},\r\n\r\n\t_initLayout: function () {\r\n\t\tvar container = this._container;\r\n\r\n\t\tthis._fadeAnimated = this.options.fadeAnimation && any3d;\r\n\r\n\t\taddClass(container, 'leaflet-container' +\r\n\t\t\t(touch ? ' leaflet-touch' : '') +\r\n\t\t\t(retina ? ' leaflet-retina' : '') +\r\n\t\t\t(ielt9 ? ' leaflet-oldie' : '') +\r\n\t\t\t(safari ? ' leaflet-safari' : '') +\r\n\t\t\t(this._fadeAnimated ? ' leaflet-fade-anim' : ''));\r\n\r\n\t\tvar position = getStyle(container, 'position');\r\n\r\n\t\tif (position !== 'absolute' && position !== 'relative' && position !== 'fixed') {\r\n\t\t\tcontainer.style.position = 'relative';\r\n\t\t}\r\n\r\n\t\tthis._initPanes();\r\n\r\n\t\tif (this._initControlPos) {\r\n\t\t\tthis._initControlPos();\r\n\t\t}\r\n\t},\r\n\r\n\t_initPanes: function () {\r\n\t\tvar panes = this._panes = {};\r\n\t\tthis._paneRenderers = {};\r\n\r\n\t\t// @section\r\n\t\t//\r\n\t\t// Panes are DOM elements used to control the ordering of layers on the map. You\r\n\t\t// can access panes with [`map.getPane`](#map-getpane) or\r\n\t\t// [`map.getPanes`](#map-getpanes) methods. New panes can be created with the\r\n\t\t// [`map.createPane`](#map-createpane) method.\r\n\t\t//\r\n\t\t// Every map has the following default panes that differ only in zIndex.\r\n\t\t//\r\n\t\t// @pane mapPane: HTMLElement = 'auto'\r\n\t\t// Pane that contains all other map panes\r\n\r\n\t\tthis._mapPane = this.createPane('mapPane', this._container);\r\n\t\tsetPosition(this._mapPane, new Point(0, 0));\r\n\r\n\t\t// @pane tilePane: HTMLElement = 200\r\n\t\t// Pane for `GridLayer`s and `TileLayer`s\r\n\t\tthis.createPane('tilePane');\r\n\t\t// @pane overlayPane: HTMLElement = 400\r\n\t\t// Pane for vectors (`Path`s, like `Polyline`s and `Polygon`s), `ImageOverlay`s and `VideoOverlay`s\r\n\t\tthis.createPane('shadowPane');\r\n\t\t// @pane shadowPane: HTMLElement = 500\r\n\t\t// Pane for overlay shadows (e.g. `Marker` shadows)\r\n\t\tthis.createPane('overlayPane');\r\n\t\t// @pane markerPane: HTMLElement = 600\r\n\t\t// Pane for `Icon`s of `Marker`s\r\n\t\tthis.createPane('markerPane');\r\n\t\t// @pane tooltipPane: HTMLElement = 650\r\n\t\t// Pane for `Tooltip`s.\r\n\t\tthis.createPane('tooltipPane');\r\n\t\t// @pane popupPane: HTMLElement = 700\r\n\t\t// Pane for `Popup`s.\r\n\t\tthis.createPane('popupPane');\r\n\r\n\t\tif (!this.options.markerZoomAnimation) {\r\n\t\t\taddClass(panes.markerPane, 'leaflet-zoom-hide');\r\n\t\t\taddClass(panes.shadowPane, 'leaflet-zoom-hide');\r\n\t\t}\r\n\t},\r\n\r\n\r\n\t// private methods that modify map state\r\n\r\n\t// @section Map state change events\r\n\t_resetView: function (center, zoom) {\r\n\t\tsetPosition(this._mapPane, new Point(0, 0));\r\n\r\n\t\tvar loading = !this._loaded;\r\n\t\tthis._loaded = true;\r\n\t\tzoom = this._limitZoom(zoom);\r\n\r\n\t\tthis.fire('viewprereset');\r\n\r\n\t\tvar zoomChanged = this._zoom !== zoom;\r\n\t\tthis\r\n\t\t\t._moveStart(zoomChanged, false)\r\n\t\t\t._move(center, zoom)\r\n\t\t\t._moveEnd(zoomChanged);\r\n\r\n\t\t// @event viewreset: Event\r\n\t\t// Fired when the map needs to redraw its content (this usually happens\r\n\t\t// on map zoom or load). Very useful for creating custom overlays.\r\n\t\tthis.fire('viewreset');\r\n\r\n\t\t// @event load: Event\r\n\t\t// Fired when the map is initialized (when its center and zoom are set\r\n\t\t// for the first time).\r\n\t\tif (loading) {\r\n\t\t\tthis.fire('load');\r\n\t\t}\r\n\t},\r\n\r\n\t_moveStart: function (zoomChanged, noMoveStart) {\r\n\t\t// @event zoomstart: Event\r\n\t\t// Fired when the map zoom is about to change (e.g. before zoom animation).\r\n\t\t// @event movestart: Event\r\n\t\t// Fired when the view of the map starts changing (e.g. user starts dragging the map).\r\n\t\tif (zoomChanged) {\r\n\t\t\tthis.fire('zoomstart');\r\n\t\t}\r\n\t\tif (!noMoveStart) {\r\n\t\t\tthis.fire('movestart');\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t_move: function (center, zoom, data) {\r\n\t\tif (zoom === undefined) {\r\n\t\t\tzoom = this._zoom;\r\n\t\t}\r\n\t\tvar zoomChanged = this._zoom !== zoom;\r\n\r\n\t\tthis._zoom = zoom;\r\n\t\tthis._lastCenter = center;\r\n\t\tthis._pixelOrigin = this._getNewPixelOrigin(center);\r\n\r\n\t\t// @event zoom: Event\r\n\t\t// Fired repeatedly during any change in zoom level, including zoom\r\n\t\t// and fly animations.\r\n\t\tif (zoomChanged || (data && data.pinch)) {\t// Always fire 'zoom' if pinching because #3530\r\n\t\t\tthis.fire('zoom', data);\r\n\t\t}\r\n\r\n\t\t// @event move: Event\r\n\t\t// Fired repeatedly during any movement of the map, including pan and\r\n\t\t// fly animations.\r\n\t\treturn this.fire('move', data);\r\n\t},\r\n\r\n\t_moveEnd: function (zoomChanged) {\r\n\t\t// @event zoomend: Event\r\n\t\t// Fired when the map has changed, after any animations.\r\n\t\tif (zoomChanged) {\r\n\t\t\tthis.fire('zoomend');\r\n\t\t}\r\n\r\n\t\t// @event moveend: Event\r\n\t\t// Fired when the center of the map stops changing (e.g. user stopped\r\n\t\t// dragging the map).\r\n\t\treturn this.fire('moveend');\r\n\t},\r\n\r\n\t_stop: function () {\r\n\t\tcancelAnimFrame(this._flyToFrame);\r\n\t\tif (this._panAnim) {\r\n\t\t\tthis._panAnim.stop();\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t_rawPanBy: function (offset) {\r\n\t\tsetPosition(this._mapPane, this._getMapPanePos().subtract(offset));\r\n\t},\r\n\r\n\t_getZoomSpan: function () {\r\n\t\treturn this.getMaxZoom() - this.getMinZoom();\r\n\t},\r\n\r\n\t_panInsideMaxBounds: function () {\r\n\t\tif (!this._enforcingBounds) {\r\n\t\t\tthis.panInsideBounds(this.options.maxBounds);\r\n\t\t}\r\n\t},\r\n\r\n\t_checkIfLoaded: function () {\r\n\t\tif (!this._loaded) {\r\n\t\t\tthrow new Error('Set map center and zoom first.');\r\n\t\t}\r\n\t},\r\n\r\n\t// DOM event handling\r\n\r\n\t// @section Interaction events\r\n\t_initEvents: function (remove$$1) {\r\n\t\tthis._targets = {};\r\n\t\tthis._targets[stamp(this._container)] = this;\r\n\r\n\t\tvar onOff = remove$$1 ? off : on;\r\n\r\n\t\t// @event click: MouseEvent\r\n\t\t// Fired when the user clicks (or taps) the map.\r\n\t\t// @event dblclick: MouseEvent\r\n\t\t// Fired when the user double-clicks (or double-taps) the map.\r\n\t\t// @event mousedown: MouseEvent\r\n\t\t// Fired when the user pushes the mouse button on the map.\r\n\t\t// @event mouseup: MouseEvent\r\n\t\t// Fired when the user releases the mouse button on the map.\r\n\t\t// @event mouseover: MouseEvent\r\n\t\t// Fired when the mouse enters the map.\r\n\t\t// @event mouseout: MouseEvent\r\n\t\t// Fired when the mouse leaves the map.\r\n\t\t// @event mousemove: MouseEvent\r\n\t\t// Fired while the mouse moves over the map.\r\n\t\t// @event contextmenu: MouseEvent\r\n\t\t// Fired when the user pushes the right mouse button on the map, prevents\r\n\t\t// default browser context menu from showing if there are listeners on\r\n\t\t// this event. Also fired on mobile when the user holds a single touch\r\n\t\t// for a second (also called long press).\r\n\t\t// @event keypress: KeyboardEvent\r\n\t\t// Fired when the user presses a key from the keyboard that produces a character value while the map is focused.\r\n\t\t// @event keydown: KeyboardEvent\r\n\t\t// Fired when the user presses a key from the keyboard while the map is focused. Unlike the `keypress` event,\r\n\t\t// the `keydown` event is fired for keys that produce a character value and for keys\r\n\t\t// that do not produce a character value.\r\n\t\t// @event keyup: KeyboardEvent\r\n\t\t// Fired when the user releases a key from the keyboard while the map is focused.\r\n\t\tonOff(this._container, 'click dblclick mousedown mouseup ' +\r\n\t\t\t'mouseover mouseout mousemove contextmenu keypress keydown keyup', this._handleDOMEvent, this);\r\n\r\n\t\tif (this.options.trackResize) {\r\n\t\t\tonOff(window, 'resize', this._onResize, this);\r\n\t\t}\r\n\r\n\t\tif (any3d && this.options.transform3DLimit) {\r\n\t\t\t(remove$$1 ? this.off : this.on).call(this, 'moveend', this._onMoveEnd);\r\n\t\t}\r\n\t},\r\n\r\n\t_onResize: function () {\r\n\t\tcancelAnimFrame(this._resizeRequest);\r\n\t\tthis._resizeRequest = requestAnimFrame(\r\n\t\t        function () { this.invalidateSize({debounceMoveend: true}); }, this);\r\n\t},\r\n\r\n\t_onScroll: function () {\r\n\t\tthis._container.scrollTop  = 0;\r\n\t\tthis._container.scrollLeft = 0;\r\n\t},\r\n\r\n\t_onMoveEnd: function () {\r\n\t\tvar pos = this._getMapPanePos();\r\n\t\tif (Math.max(Math.abs(pos.x), Math.abs(pos.y)) >= this.options.transform3DLimit) {\r\n\t\t\t// https://bugzilla.mozilla.org/show_bug.cgi?id=1203873 but Webkit also have\r\n\t\t\t// a pixel offset on very high values, see: http://jsfiddle.net/dg6r5hhb/\r\n\t\t\tthis._resetView(this.getCenter(), this.getZoom());\r\n\t\t}\r\n\t},\r\n\r\n\t_findEventTargets: function (e, type) {\r\n\t\tvar targets = [],\r\n\t\t    target,\r\n\t\t    isHover = type === 'mouseout' || type === 'mouseover',\r\n\t\t    src = e.target || e.srcElement,\r\n\t\t    dragging = false;\r\n\r\n\t\twhile (src) {\r\n\t\t\ttarget = this._targets[stamp(src)];\r\n\t\t\tif (target && (type === 'click' || type === 'preclick') && !e._simulated && this._draggableMoved(target)) {\r\n\t\t\t\t// Prevent firing click after you just dragged an object.\r\n\t\t\t\tdragging = true;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tif (target && target.listens(type, true)) {\r\n\t\t\t\tif (isHover && !isExternalTarget(src, e)) { break; }\r\n\t\t\t\ttargets.push(target);\r\n\t\t\t\tif (isHover) { break; }\r\n\t\t\t}\r\n\t\t\tif (src === this._container) { break; }\r\n\t\t\tsrc = src.parentNode;\r\n\t\t}\r\n\t\tif (!targets.length && !dragging && !isHover && isExternalTarget(src, e)) {\r\n\t\t\ttargets = [this];\r\n\t\t}\r\n\t\treturn targets;\r\n\t},\r\n\r\n\t_handleDOMEvent: function (e) {\r\n\t\tif (!this._loaded || skipped(e)) { return; }\r\n\r\n\t\tvar type = e.type;\r\n\r\n\t\tif (type === 'mousedown' || type === 'keypress' || type === 'keyup' || type === 'keydown') {\r\n\t\t\t// prevents outline when clicking on keyboard-focusable element\r\n\t\t\tpreventOutline(e.target || e.srcElement);\r\n\t\t}\r\n\r\n\t\tthis._fireDOMEvent(e, type);\r\n\t},\r\n\r\n\t_mouseEvents: ['click', 'dblclick', 'mouseover', 'mouseout', 'contextmenu'],\r\n\r\n\t_fireDOMEvent: function (e, type, targets) {\r\n\r\n\t\tif (e.type === 'click') {\r\n\t\t\t// Fire a synthetic 'preclick' event which propagates up (mainly for closing popups).\r\n\t\t\t// @event preclick: MouseEvent\r\n\t\t\t// Fired before mouse click on the map (sometimes useful when you\r\n\t\t\t// want something to happen on click before any existing click\r\n\t\t\t// handlers start running).\r\n\t\t\tvar synth = extend({}, e);\r\n\t\t\tsynth.type = 'preclick';\r\n\t\t\tthis._fireDOMEvent(synth, synth.type, targets);\r\n\t\t}\r\n\r\n\t\tif (e._stopped) { return; }\r\n\r\n\t\t// Find the layer the event is propagating from and its parents.\r\n\t\ttargets = (targets || []).concat(this._findEventTargets(e, type));\r\n\r\n\t\tif (!targets.length) { return; }\r\n\r\n\t\tvar target = targets[0];\r\n\t\tif (type === 'contextmenu' && target.listens(type, true)) {\r\n\t\t\tpreventDefault(e);\r\n\t\t}\r\n\r\n\t\tvar data = {\r\n\t\t\toriginalEvent: e\r\n\t\t};\r\n\r\n\t\tif (e.type !== 'keypress' && e.type !== 'keydown' && e.type !== 'keyup') {\r\n\t\t\tvar isMarker = target.getLatLng && (!target._radius || target._radius <= 10);\r\n\t\t\tdata.containerPoint = isMarker ?\r\n\t\t\t\tthis.latLngToContainerPoint(target.getLatLng()) : this.mouseEventToContainerPoint(e);\r\n\t\t\tdata.layerPoint = this.containerPointToLayerPoint(data.containerPoint);\r\n\t\t\tdata.latlng = isMarker ? target.getLatLng() : this.layerPointToLatLng(data.layerPoint);\r\n\t\t}\r\n\r\n\t\tfor (var i = 0; i < targets.length; i++) {\r\n\t\t\ttargets[i].fire(type, data, true);\r\n\t\t\tif (data.originalEvent._stopped ||\r\n\t\t\t\t(targets[i].options.bubblingMouseEvents === false && indexOf(this._mouseEvents, type) !== -1)) { return; }\r\n\t\t}\r\n\t},\r\n\r\n\t_draggableMoved: function (obj) {\r\n\t\tobj = obj.dragging && obj.dragging.enabled() ? obj : this;\r\n\t\treturn (obj.dragging && obj.dragging.moved()) || (this.boxZoom && this.boxZoom.moved());\r\n\t},\r\n\r\n\t_clearHandlers: function () {\r\n\t\tfor (var i = 0, len = this._handlers.length; i < len; i++) {\r\n\t\t\tthis._handlers[i].disable();\r\n\t\t}\r\n\t},\r\n\r\n\t// @section Other Methods\r\n\r\n\t// @method whenReady(fn: Function, context?: Object): this\r\n\t// Runs the given function `fn` when the map gets initialized with\r\n\t// a view (center and zoom) and at least one layer, or immediately\r\n\t// if it's already initialized, optionally passing a function context.\r\n\twhenReady: function (callback, context) {\r\n\t\tif (this._loaded) {\r\n\t\t\tcallback.call(context || this, {target: this});\r\n\t\t} else {\r\n\t\t\tthis.on('load', callback, context);\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\r\n\t// private methods for getting map state\r\n\r\n\t_getMapPanePos: function () {\r\n\t\treturn getPosition(this._mapPane) || new Point(0, 0);\r\n\t},\r\n\r\n\t_moved: function () {\r\n\t\tvar pos = this._getMapPanePos();\r\n\t\treturn pos && !pos.equals([0, 0]);\r\n\t},\r\n\r\n\t_getTopLeftPoint: function (center, zoom) {\r\n\t\tvar pixelOrigin = center && zoom !== undefined ?\r\n\t\t\tthis._getNewPixelOrigin(center, zoom) :\r\n\t\t\tthis.getPixelOrigin();\r\n\t\treturn pixelOrigin.subtract(this._getMapPanePos());\r\n\t},\r\n\r\n\t_getNewPixelOrigin: function (center, zoom) {\r\n\t\tvar viewHalf = this.getSize()._divideBy(2);\r\n\t\treturn this.project(center, zoom)._subtract(viewHalf)._add(this._getMapPanePos())._round();\r\n\t},\r\n\r\n\t_latLngToNewLayerPoint: function (latlng, zoom, center) {\r\n\t\tvar topLeft = this._getNewPixelOrigin(center, zoom);\r\n\t\treturn this.project(latlng, zoom)._subtract(topLeft);\r\n\t},\r\n\r\n\t_latLngBoundsToNewLayerBounds: function (latLngBounds, zoom, center) {\r\n\t\tvar topLeft = this._getNewPixelOrigin(center, zoom);\r\n\t\treturn toBounds([\r\n\t\t\tthis.project(latLngBounds.getSouthWest(), zoom)._subtract(topLeft),\r\n\t\t\tthis.project(latLngBounds.getNorthWest(), zoom)._subtract(topLeft),\r\n\t\t\tthis.project(latLngBounds.getSouthEast(), zoom)._subtract(topLeft),\r\n\t\t\tthis.project(latLngBounds.getNorthEast(), zoom)._subtract(topLeft)\r\n\t\t]);\r\n\t},\r\n\r\n\t// layer point of the current center\r\n\t_getCenterLayerPoint: function () {\r\n\t\treturn this.containerPointToLayerPoint(this.getSize()._divideBy(2));\r\n\t},\r\n\r\n\t// offset of the specified place to the current center in pixels\r\n\t_getCenterOffset: function (latlng) {\r\n\t\treturn this.latLngToLayerPoint(latlng).subtract(this._getCenterLayerPoint());\r\n\t},\r\n\r\n\t// adjust center for view to get inside bounds\r\n\t_limitCenter: function (center, zoom, bounds) {\r\n\r\n\t\tif (!bounds) { return center; }\r\n\r\n\t\tvar centerPoint = this.project(center, zoom),\r\n\t\t    viewHalf = this.getSize().divideBy(2),\r\n\t\t    viewBounds = new Bounds(centerPoint.subtract(viewHalf), centerPoint.add(viewHalf)),\r\n\t\t    offset = this._getBoundsOffset(viewBounds, bounds, zoom);\r\n\r\n\t\t// If offset is less than a pixel, ignore.\r\n\t\t// This prevents unstable projections from getting into\r\n\t\t// an infinite loop of tiny offsets.\r\n\t\tif (offset.round().equals([0, 0])) {\r\n\t\t\treturn center;\r\n\t\t}\r\n\r\n\t\treturn this.unproject(centerPoint.add(offset), zoom);\r\n\t},\r\n\r\n\t// adjust offset for view to get inside bounds\r\n\t_limitOffset: function (offset, bounds) {\r\n\t\tif (!bounds) { return offset; }\r\n\r\n\t\tvar viewBounds = this.getPixelBounds(),\r\n\t\t    newBounds = new Bounds(viewBounds.min.add(offset), viewBounds.max.add(offset));\r\n\r\n\t\treturn offset.add(this._getBoundsOffset(newBounds, bounds));\r\n\t},\r\n\r\n\t// returns offset needed for pxBounds to get inside maxBounds at a specified zoom\r\n\t_getBoundsOffset: function (pxBounds, maxBounds, zoom) {\r\n\t\tvar projectedMaxBounds = toBounds(\r\n\t\t        this.project(maxBounds.getNorthEast(), zoom),\r\n\t\t        this.project(maxBounds.getSouthWest(), zoom)\r\n\t\t    ),\r\n\t\t    minOffset = projectedMaxBounds.min.subtract(pxBounds.min),\r\n\t\t    maxOffset = projectedMaxBounds.max.subtract(pxBounds.max),\r\n\r\n\t\t    dx = this._rebound(minOffset.x, -maxOffset.x),\r\n\t\t    dy = this._rebound(minOffset.y, -maxOffset.y);\r\n\r\n\t\treturn new Point(dx, dy);\r\n\t},\r\n\r\n\t_rebound: function (left, right) {\r\n\t\treturn left + right > 0 ?\r\n\t\t\tMath.round(left - right) / 2 :\r\n\t\t\tMath.max(0, Math.ceil(left)) - Math.max(0, Math.floor(right));\r\n\t},\r\n\r\n\t_limitZoom: function (zoom) {\r\n\t\tvar min = this.getMinZoom(),\r\n\t\t    max = this.getMaxZoom(),\r\n\t\t    snap = any3d ? this.options.zoomSnap : 1;\r\n\t\tif (snap) {\r\n\t\t\tzoom = Math.round(zoom / snap) * snap;\r\n\t\t}\r\n\t\treturn Math.max(min, Math.min(max, zoom));\r\n\t},\r\n\r\n\t_onPanTransitionStep: function () {\r\n\t\tthis.fire('move');\r\n\t},\r\n\r\n\t_onPanTransitionEnd: function () {\r\n\t\tremoveClass(this._mapPane, 'leaflet-pan-anim');\r\n\t\tthis.fire('moveend');\r\n\t},\r\n\r\n\t_tryAnimatedPan: function (center, options) {\r\n\t\t// difference between the new and current centers in pixels\r\n\t\tvar offset = this._getCenterOffset(center)._trunc();\r\n\r\n\t\t// don't animate too far unless animate: true specified in options\r\n\t\tif ((options && options.animate) !== true && !this.getSize().contains(offset)) { return false; }\r\n\r\n\t\tthis.panBy(offset, options);\r\n\r\n\t\treturn true;\r\n\t},\r\n\r\n\t_createAnimProxy: function () {\r\n\r\n\t\tvar proxy = this._proxy = create$1('div', 'leaflet-proxy leaflet-zoom-animated');\r\n\t\tthis._panes.mapPane.appendChild(proxy);\r\n\r\n\t\tthis.on('zoomanim', function (e) {\r\n\t\t\tvar prop = TRANSFORM,\r\n\t\t\t    transform = this._proxy.style[prop];\r\n\r\n\t\t\tsetTransform(this._proxy, this.project(e.center, e.zoom), this.getZoomScale(e.zoom, 1));\r\n\r\n\t\t\t// workaround for case when transform is the same and so transitionend event is not fired\r\n\t\t\tif (transform === this._proxy.style[prop] && this._animatingZoom) {\r\n\t\t\t\tthis._onZoomTransitionEnd();\r\n\t\t\t}\r\n\t\t}, this);\r\n\r\n\t\tthis.on('load moveend', this._animMoveEnd, this);\r\n\r\n\t\tthis._on('unload', this._destroyAnimProxy, this);\r\n\t},\r\n\r\n\t_destroyAnimProxy: function () {\r\n\t\tremove(this._proxy);\r\n\t\tthis.off('load moveend', this._animMoveEnd, this);\r\n\t\tdelete this._proxy;\r\n\t},\r\n\r\n\t_animMoveEnd: function () {\r\n\t\tvar c = this.getCenter(),\r\n\t\t    z = this.getZoom();\r\n\t\tsetTransform(this._proxy, this.project(c, z), this.getZoomScale(z, 1));\r\n\t},\r\n\r\n\t_catchTransitionEnd: function (e) {\r\n\t\tif (this._animatingZoom && e.propertyName.indexOf('transform') >= 0) {\r\n\t\t\tthis._onZoomTransitionEnd();\r\n\t\t}\r\n\t},\r\n\r\n\t_nothingToAnimate: function () {\r\n\t\treturn !this._container.getElementsByClassName('leaflet-zoom-animated').length;\r\n\t},\r\n\r\n\t_tryAnimatedZoom: function (center, zoom, options) {\r\n\r\n\t\tif (this._animatingZoom) { return true; }\r\n\r\n\t\toptions = options || {};\r\n\r\n\t\t// don't animate if disabled, not supported or zoom difference is too large\r\n\t\tif (!this._zoomAnimated || options.animate === false || this._nothingToAnimate() ||\r\n\t\t        Math.abs(zoom - this._zoom) > this.options.zoomAnimationThreshold) { return false; }\r\n\r\n\t\t// offset is the pixel coords of the zoom origin relative to the current center\r\n\t\tvar scale = this.getZoomScale(zoom),\r\n\t\t    offset = this._getCenterOffset(center)._divideBy(1 - 1 / scale);\r\n\r\n\t\t// don't animate if the zoom origin isn't within one screen from the current center, unless forced\r\n\t\tif (options.animate !== true && !this.getSize().contains(offset)) { return false; }\r\n\r\n\t\trequestAnimFrame(function () {\r\n\t\t\tthis\r\n\t\t\t    ._moveStart(true, false)\r\n\t\t\t    ._animateZoom(center, zoom, true);\r\n\t\t}, this);\r\n\r\n\t\treturn true;\r\n\t},\r\n\r\n\t_animateZoom: function (center, zoom, startAnim, noUpdate) {\r\n\t\tif (!this._mapPane) { return; }\r\n\r\n\t\tif (startAnim) {\r\n\t\t\tthis._animatingZoom = true;\r\n\r\n\t\t\t// remember what center/zoom to set after animation\r\n\t\t\tthis._animateToCenter = center;\r\n\t\t\tthis._animateToZoom = zoom;\r\n\r\n\t\t\taddClass(this._mapPane, 'leaflet-zoom-anim');\r\n\t\t}\r\n\r\n\t\t// @section Other Events\r\n\t\t// @event zoomanim: ZoomAnimEvent\r\n\t\t// Fired at least once per zoom animation. For continuous zoom, like pinch zooming, fired once per frame during zoom.\r\n\t\tthis.fire('zoomanim', {\r\n\t\t\tcenter: center,\r\n\t\t\tzoom: zoom,\r\n\t\t\tnoUpdate: noUpdate\r\n\t\t});\r\n\r\n\t\t// Work around webkit not firing 'transitionend', see https://github.com/Leaflet/Leaflet/issues/3689, 2693\r\n\t\tsetTimeout(bind(this._onZoomTransitionEnd, this), 250);\r\n\t},\r\n\r\n\t_onZoomTransitionEnd: function () {\r\n\t\tif (!this._animatingZoom) { return; }\r\n\r\n\t\tif (this._mapPane) {\r\n\t\t\tremoveClass(this._mapPane, 'leaflet-zoom-anim');\r\n\t\t}\r\n\r\n\t\tthis._animatingZoom = false;\r\n\r\n\t\tthis._move(this._animateToCenter, this._animateToZoom);\r\n\r\n\t\t// This anim frame should prevent an obscure iOS webkit tile loading race condition.\r\n\t\trequestAnimFrame(function () {\r\n\t\t\tthis._moveEnd(true);\r\n\t\t}, this);\r\n\t}\r\n});\r\n\r\n// @section\r\n\r\n// @factory L.map(id: String, options?: Map options)\r\n// Instantiates a map object given the DOM ID of a `<div>` element\r\n// and optionally an object literal with `Map options`.\r\n//\r\n// @alternative\r\n// @factory L.map(el: HTMLElement, options?: Map options)\r\n// Instantiates a map object given an instance of a `<div>` HTML element\r\n// and optionally an object literal with `Map options`.\r\nfunction createMap(id, options) {\r\n\treturn new Map(id, options);\r\n}\n\n/*\r\n * @class Control\r\n * @aka L.Control\r\n * @inherits Class\r\n *\r\n * L.Control is a base class for implementing map controls. Handles positioning.\r\n * All other controls extend from this class.\r\n */\r\n\r\nvar Control = Class.extend({\r\n\t// @section\r\n\t// @aka Control options\r\n\toptions: {\r\n\t\t// @option position: String = 'topright'\r\n\t\t// The position of the control (one of the map corners). Possible values are `'topleft'`,\r\n\t\t// `'topright'`, `'bottomleft'` or `'bottomright'`\r\n\t\tposition: 'topright'\r\n\t},\r\n\r\n\tinitialize: function (options) {\r\n\t\tsetOptions(this, options);\r\n\t},\r\n\r\n\t/* @section\r\n\t * Classes extending L.Control will inherit the following methods:\r\n\t *\r\n\t * @method getPosition: string\r\n\t * Returns the position of the control.\r\n\t */\r\n\tgetPosition: function () {\r\n\t\treturn this.options.position;\r\n\t},\r\n\r\n\t// @method setPosition(position: string): this\r\n\t// Sets the position of the control.\r\n\tsetPosition: function (position) {\r\n\t\tvar map = this._map;\r\n\r\n\t\tif (map) {\r\n\t\t\tmap.removeControl(this);\r\n\t\t}\r\n\r\n\t\tthis.options.position = position;\r\n\r\n\t\tif (map) {\r\n\t\t\tmap.addControl(this);\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method getContainer: HTMLElement\r\n\t// Returns the HTMLElement that contains the control.\r\n\tgetContainer: function () {\r\n\t\treturn this._container;\r\n\t},\r\n\r\n\t// @method addTo(map: Map): this\r\n\t// Adds the control to the given map.\r\n\taddTo: function (map) {\r\n\t\tthis.remove();\r\n\t\tthis._map = map;\r\n\r\n\t\tvar container = this._container = this.onAdd(map),\r\n\t\t    pos = this.getPosition(),\r\n\t\t    corner = map._controlCorners[pos];\r\n\r\n\t\taddClass(container, 'leaflet-control');\r\n\r\n\t\tif (pos.indexOf('bottom') !== -1) {\r\n\t\t\tcorner.insertBefore(container, corner.firstChild);\r\n\t\t} else {\r\n\t\t\tcorner.appendChild(container);\r\n\t\t}\r\n\r\n\t\tthis._map.on('unload', this.remove, this);\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method remove: this\r\n\t// Removes the control from the map it is currently active on.\r\n\tremove: function () {\r\n\t\tif (!this._map) {\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\tremove(this._container);\r\n\r\n\t\tif (this.onRemove) {\r\n\t\t\tthis.onRemove(this._map);\r\n\t\t}\r\n\r\n\t\tthis._map.off('unload', this.remove, this);\r\n\t\tthis._map = null;\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t_refocusOnMap: function (e) {\r\n\t\t// if map exists and event is not a keyboard event\r\n\t\tif (this._map && e && e.screenX > 0 && e.screenY > 0) {\r\n\t\t\tthis._map.getContainer().focus();\r\n\t\t}\r\n\t}\r\n});\r\n\r\nvar control = function (options) {\r\n\treturn new Control(options);\r\n};\r\n\r\n/* @section Extension methods\r\n * @uninheritable\r\n *\r\n * Every control should extend from `L.Control` and (re-)implement the following methods.\r\n *\r\n * @method onAdd(map: Map): HTMLElement\r\n * Should return the container DOM element for the control and add listeners on relevant map events. Called on [`control.addTo(map)`](#control-addTo).\r\n *\r\n * @method onRemove(map: Map)\r\n * Optional method. Should contain all clean up code that removes the listeners previously added in [`onAdd`](#control-onadd). Called on [`control.remove()`](#control-remove).\r\n */\r\n\r\n/* @namespace Map\r\n * @section Methods for Layers and Controls\r\n */\r\nMap.include({\r\n\t// @method addControl(control: Control): this\r\n\t// Adds the given control to the map\r\n\taddControl: function (control) {\r\n\t\tcontrol.addTo(this);\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method removeControl(control: Control): this\r\n\t// Removes the given control from the map\r\n\tremoveControl: function (control) {\r\n\t\tcontrol.remove();\r\n\t\treturn this;\r\n\t},\r\n\r\n\t_initControlPos: function () {\r\n\t\tvar corners = this._controlCorners = {},\r\n\t\t    l = 'leaflet-',\r\n\t\t    container = this._controlContainer =\r\n\t\t            create$1('div', l + 'control-container', this._container);\r\n\r\n\t\tfunction createCorner(vSide, hSide) {\r\n\t\t\tvar className = l + vSide + ' ' + l + hSide;\r\n\r\n\t\t\tcorners[vSide + hSide] = create$1('div', className, container);\r\n\t\t}\r\n\r\n\t\tcreateCorner('top', 'left');\r\n\t\tcreateCorner('top', 'right');\r\n\t\tcreateCorner('bottom', 'left');\r\n\t\tcreateCorner('bottom', 'right');\r\n\t},\r\n\r\n\t_clearControlPos: function () {\r\n\t\tfor (var i in this._controlCorners) {\r\n\t\t\tremove(this._controlCorners[i]);\r\n\t\t}\r\n\t\tremove(this._controlContainer);\r\n\t\tdelete this._controlCorners;\r\n\t\tdelete this._controlContainer;\r\n\t}\r\n});\n\n/*\r\n * @class Control.Layers\r\n * @aka L.Control.Layers\r\n * @inherits Control\r\n *\r\n * The layers control gives users the ability to switch between different base layers and switch overlays on/off (check out the [detailed example](http://leafletjs.com/examples/layers-control/)). Extends `Control`.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * var baseLayers = {\r\n * \t\"Mapbox\": mapbox,\r\n * \t\"OpenStreetMap\": osm\r\n * };\r\n *\r\n * var overlays = {\r\n * \t\"Marker\": marker,\r\n * \t\"Roads\": roadsLayer\r\n * };\r\n *\r\n * L.control.layers(baseLayers, overlays).addTo(map);\r\n * ```\r\n *\r\n * The `baseLayers` and `overlays` parameters are object literals with layer names as keys and `Layer` objects as values:\r\n *\r\n * ```js\r\n * {\r\n *     \"<someName1>\": layer1,\r\n *     \"<someName2>\": layer2\r\n * }\r\n * ```\r\n *\r\n * The layer names can contain HTML, which allows you to add additional styling to the items:\r\n *\r\n * ```js\r\n * {\"<img src='my-layer-icon' /> <span class='my-layer-item'>My Layer</span>\": myLayer}\r\n * ```\r\n */\r\n\r\nvar Layers = Control.extend({\r\n\t// @section\r\n\t// @aka Control.Layers options\r\n\toptions: {\r\n\t\t// @option collapsed: Boolean = true\r\n\t\t// If `true`, the control will be collapsed into an icon and expanded on mouse hover or touch.\r\n\t\tcollapsed: true,\r\n\t\tposition: 'topright',\r\n\r\n\t\t// @option autoZIndex: Boolean = true\r\n\t\t// If `true`, the control will assign zIndexes in increasing order to all of its layers so that the order is preserved when switching them on/off.\r\n\t\tautoZIndex: true,\r\n\r\n\t\t// @option hideSingleBase: Boolean = false\r\n\t\t// If `true`, the base layers in the control will be hidden when there is only one.\r\n\t\thideSingleBase: false,\r\n\r\n\t\t// @option sortLayers: Boolean = false\r\n\t\t// Whether to sort the layers. When `false`, layers will keep the order\r\n\t\t// in which they were added to the control.\r\n\t\tsortLayers: false,\r\n\r\n\t\t// @option sortFunction: Function = *\r\n\t\t// A [compare function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/sort)\r\n\t\t// that will be used for sorting the layers, when `sortLayers` is `true`.\r\n\t\t// The function receives both the `L.Layer` instances and their names, as in\r\n\t\t// `sortFunction(layerA, layerB, nameA, nameB)`.\r\n\t\t// By default, it sorts layers alphabetically by their name.\r\n\t\tsortFunction: function (layerA, layerB, nameA, nameB) {\r\n\t\t\treturn nameA < nameB ? -1 : (nameB < nameA ? 1 : 0);\r\n\t\t}\r\n\t},\r\n\r\n\tinitialize: function (baseLayers, overlays, options) {\r\n\t\tsetOptions(this, options);\r\n\r\n\t\tthis._layerControlInputs = [];\r\n\t\tthis._layers = [];\r\n\t\tthis._lastZIndex = 0;\r\n\t\tthis._handlingClick = false;\r\n\r\n\t\tfor (var i in baseLayers) {\r\n\t\t\tthis._addLayer(baseLayers[i], i);\r\n\t\t}\r\n\r\n\t\tfor (i in overlays) {\r\n\t\t\tthis._addLayer(overlays[i], i, true);\r\n\t\t}\r\n\t},\r\n\r\n\tonAdd: function (map) {\r\n\t\tthis._initLayout();\r\n\t\tthis._update();\r\n\r\n\t\tthis._map = map;\r\n\t\tmap.on('zoomend', this._checkDisabledLayers, this);\r\n\r\n\t\tfor (var i = 0; i < this._layers.length; i++) {\r\n\t\t\tthis._layers[i].layer.on('add remove', this._onLayerChange, this);\r\n\t\t}\r\n\r\n\t\treturn this._container;\r\n\t},\r\n\r\n\taddTo: function (map) {\r\n\t\tControl.prototype.addTo.call(this, map);\r\n\t\t// Trigger expand after Layers Control has been inserted into DOM so that is now has an actual height.\r\n\t\treturn this._expandIfNotCollapsed();\r\n\t},\r\n\r\n\tonRemove: function () {\r\n\t\tthis._map.off('zoomend', this._checkDisabledLayers, this);\r\n\r\n\t\tfor (var i = 0; i < this._layers.length; i++) {\r\n\t\t\tthis._layers[i].layer.off('add remove', this._onLayerChange, this);\r\n\t\t}\r\n\t},\r\n\r\n\t// @method addBaseLayer(layer: Layer, name: String): this\r\n\t// Adds a base layer (radio button entry) with the given name to the control.\r\n\taddBaseLayer: function (layer, name) {\r\n\t\tthis._addLayer(layer, name);\r\n\t\treturn (this._map) ? this._update() : this;\r\n\t},\r\n\r\n\t// @method addOverlay(layer: Layer, name: String): this\r\n\t// Adds an overlay (checkbox entry) with the given name to the control.\r\n\taddOverlay: function (layer, name) {\r\n\t\tthis._addLayer(layer, name, true);\r\n\t\treturn (this._map) ? this._update() : this;\r\n\t},\r\n\r\n\t// @method removeLayer(layer: Layer): this\r\n\t// Remove the given layer from the control.\r\n\tremoveLayer: function (layer) {\r\n\t\tlayer.off('add remove', this._onLayerChange, this);\r\n\r\n\t\tvar obj = this._getLayer(stamp(layer));\r\n\t\tif (obj) {\r\n\t\t\tthis._layers.splice(this._layers.indexOf(obj), 1);\r\n\t\t}\r\n\t\treturn (this._map) ? this._update() : this;\r\n\t},\r\n\r\n\t// @method expand(): this\r\n\t// Expand the control container if collapsed.\r\n\texpand: function () {\r\n\t\taddClass(this._container, 'leaflet-control-layers-expanded');\r\n\t\tthis._section.style.height = null;\r\n\t\tvar acceptableHeight = this._map.getSize().y - (this._container.offsetTop + 50);\r\n\t\tif (acceptableHeight < this._section.clientHeight) {\r\n\t\t\taddClass(this._section, 'leaflet-control-layers-scrollbar');\r\n\t\t\tthis._section.style.height = acceptableHeight + 'px';\r\n\t\t} else {\r\n\t\t\tremoveClass(this._section, 'leaflet-control-layers-scrollbar');\r\n\t\t}\r\n\t\tthis._checkDisabledLayers();\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method collapse(): this\r\n\t// Collapse the control container if expanded.\r\n\tcollapse: function () {\r\n\t\tremoveClass(this._container, 'leaflet-control-layers-expanded');\r\n\t\treturn this;\r\n\t},\r\n\r\n\t_initLayout: function () {\r\n\t\tvar className = 'leaflet-control-layers',\r\n\t\t    container = this._container = create$1('div', className),\r\n\t\t    collapsed = this.options.collapsed;\r\n\r\n\t\t// makes this work on IE touch devices by stopping it from firing a mouseout event when the touch is released\r\n\t\tcontainer.setAttribute('aria-haspopup', true);\r\n\r\n\t\tdisableClickPropagation(container);\r\n\t\tdisableScrollPropagation(container);\r\n\r\n\t\tvar section = this._section = create$1('section', className + '-list');\r\n\r\n\t\tif (collapsed) {\r\n\t\t\tthis._map.on('click', this.collapse, this);\r\n\r\n\t\t\tif (!android) {\r\n\t\t\t\ton(container, {\r\n\t\t\t\t\tmouseenter: this.expand,\r\n\t\t\t\t\tmouseleave: this.collapse\r\n\t\t\t\t}, this);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar link = this._layersLink = create$1('a', className + '-toggle', container);\r\n\t\tlink.href = '#';\r\n\t\tlink.title = 'Layers';\r\n\r\n\t\tif (touch) {\r\n\t\t\ton(link, 'click', stop);\r\n\t\t\ton(link, 'click', this.expand, this);\r\n\t\t} else {\r\n\t\t\ton(link, 'focus', this.expand, this);\r\n\t\t}\r\n\r\n\t\tif (!collapsed) {\r\n\t\t\tthis.expand();\r\n\t\t}\r\n\r\n\t\tthis._baseLayersList = create$1('div', className + '-base', section);\r\n\t\tthis._separator = create$1('div', className + '-separator', section);\r\n\t\tthis._overlaysList = create$1('div', className + '-overlays', section);\r\n\r\n\t\tcontainer.appendChild(section);\r\n\t},\r\n\r\n\t_getLayer: function (id) {\r\n\t\tfor (var i = 0; i < this._layers.length; i++) {\r\n\r\n\t\t\tif (this._layers[i] && stamp(this._layers[i].layer) === id) {\r\n\t\t\t\treturn this._layers[i];\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t_addLayer: function (layer, name, overlay) {\r\n\t\tif (this._map) {\r\n\t\t\tlayer.on('add remove', this._onLayerChange, this);\r\n\t\t}\r\n\r\n\t\tthis._layers.push({\r\n\t\t\tlayer: layer,\r\n\t\t\tname: name,\r\n\t\t\toverlay: overlay\r\n\t\t});\r\n\r\n\t\tif (this.options.sortLayers) {\r\n\t\t\tthis._layers.sort(bind(function (a, b) {\r\n\t\t\t\treturn this.options.sortFunction(a.layer, b.layer, a.name, b.name);\r\n\t\t\t}, this));\r\n\t\t}\r\n\r\n\t\tif (this.options.autoZIndex && layer.setZIndex) {\r\n\t\t\tthis._lastZIndex++;\r\n\t\t\tlayer.setZIndex(this._lastZIndex);\r\n\t\t}\r\n\r\n\t\tthis._expandIfNotCollapsed();\r\n\t},\r\n\r\n\t_update: function () {\r\n\t\tif (!this._container) { return this; }\r\n\r\n\t\tempty(this._baseLayersList);\r\n\t\tempty(this._overlaysList);\r\n\r\n\t\tthis._layerControlInputs = [];\r\n\t\tvar baseLayersPresent, overlaysPresent, i, obj, baseLayersCount = 0;\r\n\r\n\t\tfor (i = 0; i < this._layers.length; i++) {\r\n\t\t\tobj = this._layers[i];\r\n\t\t\tthis._addItem(obj);\r\n\t\t\toverlaysPresent = overlaysPresent || obj.overlay;\r\n\t\t\tbaseLayersPresent = baseLayersPresent || !obj.overlay;\r\n\t\t\tbaseLayersCount += !obj.overlay ? 1 : 0;\r\n\t\t}\r\n\r\n\t\t// Hide base layers section if there's only one layer.\r\n\t\tif (this.options.hideSingleBase) {\r\n\t\t\tbaseLayersPresent = baseLayersPresent && baseLayersCount > 1;\r\n\t\t\tthis._baseLayersList.style.display = baseLayersPresent ? '' : 'none';\r\n\t\t}\r\n\r\n\t\tthis._separator.style.display = overlaysPresent && baseLayersPresent ? '' : 'none';\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t_onLayerChange: function (e) {\r\n\t\tif (!this._handlingClick) {\r\n\t\t\tthis._update();\r\n\t\t}\r\n\r\n\t\tvar obj = this._getLayer(stamp(e.target));\r\n\r\n\t\t// @namespace Map\r\n\t\t// @section Layer events\r\n\t\t// @event baselayerchange: LayersControlEvent\r\n\t\t// Fired when the base layer is changed through the [layer control](#control-layers).\r\n\t\t// @event overlayadd: LayersControlEvent\r\n\t\t// Fired when an overlay is selected through the [layer control](#control-layers).\r\n\t\t// @event overlayremove: LayersControlEvent\r\n\t\t// Fired when an overlay is deselected through the [layer control](#control-layers).\r\n\t\t// @namespace Control.Layers\r\n\t\tvar type = obj.overlay ?\r\n\t\t\t(e.type === 'add' ? 'overlayadd' : 'overlayremove') :\r\n\t\t\t(e.type === 'add' ? 'baselayerchange' : null);\r\n\r\n\t\tif (type) {\r\n\t\t\tthis._map.fire(type, obj);\r\n\t\t}\r\n\t},\r\n\r\n\t// IE7 bugs out if you create a radio dynamically, so you have to do it this hacky way (see http://bit.ly/PqYLBe)\r\n\t_createRadioElement: function (name, checked) {\r\n\r\n\t\tvar radioHtml = '<input type=\"radio\" class=\"leaflet-control-layers-selector\" name=\"' +\r\n\t\t\t\tname + '\"' + (checked ? ' checked=\"checked\"' : '') + '/>';\r\n\r\n\t\tvar radioFragment = document.createElement('div');\r\n\t\tradioFragment.innerHTML = radioHtml;\r\n\r\n\t\treturn radioFragment.firstChild;\r\n\t},\r\n\r\n\t_addItem: function (obj) {\r\n\t\tvar label = document.createElement('label'),\r\n\t\t    checked = this._map.hasLayer(obj.layer),\r\n\t\t    input;\r\n\r\n\t\tif (obj.overlay) {\r\n\t\t\tinput = document.createElement('input');\r\n\t\t\tinput.type = 'checkbox';\r\n\t\t\tinput.className = 'leaflet-control-layers-selector';\r\n\t\t\tinput.defaultChecked = checked;\r\n\t\t} else {\r\n\t\t\tinput = this._createRadioElement('leaflet-base-layers_' + stamp(this), checked);\r\n\t\t}\r\n\r\n\t\tthis._layerControlInputs.push(input);\r\n\t\tinput.layerId = stamp(obj.layer);\r\n\r\n\t\ton(input, 'click', this._onInputClick, this);\r\n\r\n\t\tvar name = document.createElement('span');\r\n\t\tname.innerHTML = ' ' + obj.name;\r\n\r\n\t\t// Helps from preventing layer control flicker when checkboxes are disabled\r\n\t\t// https://github.com/Leaflet/Leaflet/issues/2771\r\n\t\tvar holder = document.createElement('div');\r\n\r\n\t\tlabel.appendChild(holder);\r\n\t\tholder.appendChild(input);\r\n\t\tholder.appendChild(name);\r\n\r\n\t\tvar container = obj.overlay ? this._overlaysList : this._baseLayersList;\r\n\t\tcontainer.appendChild(label);\r\n\r\n\t\tthis._checkDisabledLayers();\r\n\t\treturn label;\r\n\t},\r\n\r\n\t_onInputClick: function () {\r\n\t\tvar inputs = this._layerControlInputs,\r\n\t\t    input, layer;\r\n\t\tvar addedLayers = [],\r\n\t\t    removedLayers = [];\r\n\r\n\t\tthis._handlingClick = true;\r\n\r\n\t\tfor (var i = inputs.length - 1; i >= 0; i--) {\r\n\t\t\tinput = inputs[i];\r\n\t\t\tlayer = this._getLayer(input.layerId).layer;\r\n\r\n\t\t\tif (input.checked) {\r\n\t\t\t\taddedLayers.push(layer);\r\n\t\t\t} else if (!input.checked) {\r\n\t\t\t\tremovedLayers.push(layer);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Bugfix issue 2318: Should remove all old layers before readding new ones\r\n\t\tfor (i = 0; i < removedLayers.length; i++) {\r\n\t\t\tif (this._map.hasLayer(removedLayers[i])) {\r\n\t\t\t\tthis._map.removeLayer(removedLayers[i]);\r\n\t\t\t}\r\n\t\t}\r\n\t\tfor (i = 0; i < addedLayers.length; i++) {\r\n\t\t\tif (!this._map.hasLayer(addedLayers[i])) {\r\n\t\t\t\tthis._map.addLayer(addedLayers[i]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis._handlingClick = false;\r\n\r\n\t\tthis._refocusOnMap();\r\n\t},\r\n\r\n\t_checkDisabledLayers: function () {\r\n\t\tvar inputs = this._layerControlInputs,\r\n\t\t    input,\r\n\t\t    layer,\r\n\t\t    zoom = this._map.getZoom();\r\n\r\n\t\tfor (var i = inputs.length - 1; i >= 0; i--) {\r\n\t\t\tinput = inputs[i];\r\n\t\t\tlayer = this._getLayer(input.layerId).layer;\r\n\t\t\tinput.disabled = (layer.options.minZoom !== undefined && zoom < layer.options.minZoom) ||\r\n\t\t\t                 (layer.options.maxZoom !== undefined && zoom > layer.options.maxZoom);\r\n\r\n\t\t}\r\n\t},\r\n\r\n\t_expandIfNotCollapsed: function () {\r\n\t\tif (this._map && !this.options.collapsed) {\r\n\t\t\tthis.expand();\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t_expand: function () {\r\n\t\t// Backward compatibility, remove me in 1.1.\r\n\t\treturn this.expand();\r\n\t},\r\n\r\n\t_collapse: function () {\r\n\t\t// Backward compatibility, remove me in 1.1.\r\n\t\treturn this.collapse();\r\n\t}\r\n\r\n});\r\n\r\n\r\n// @factory L.control.layers(baselayers?: Object, overlays?: Object, options?: Control.Layers options)\r\n// Creates a layers control with the given layers. Base layers will be switched with radio buttons, while overlays will be switched with checkboxes. Note that all base layers should be passed in the base layers object, but only one should be added to the map during map instantiation.\r\nvar layers = function (baseLayers, overlays, options) {\r\n\treturn new Layers(baseLayers, overlays, options);\r\n};\n\n/*\r\n * @class Control.Zoom\r\n * @aka L.Control.Zoom\r\n * @inherits Control\r\n *\r\n * A basic zoom control with two buttons (zoom in and zoom out). It is put on the map by default unless you set its [`zoomControl` option](#map-zoomcontrol) to `false`. Extends `Control`.\r\n */\r\n\r\nvar Zoom = Control.extend({\r\n\t// @section\r\n\t// @aka Control.Zoom options\r\n\toptions: {\r\n\t\tposition: 'topleft',\r\n\r\n\t\t// @option zoomInText: String = '+'\r\n\t\t// The text set on the 'zoom in' button.\r\n\t\tzoomInText: '+',\r\n\r\n\t\t// @option zoomInTitle: String = 'Zoom in'\r\n\t\t// The title set on the 'zoom in' button.\r\n\t\tzoomInTitle: 'Zoom in',\r\n\r\n\t\t// @option zoomOutText: String = '&#x2212;'\r\n\t\t// The text set on the 'zoom out' button.\r\n\t\tzoomOutText: '&#x2212;',\r\n\r\n\t\t// @option zoomOutTitle: String = 'Zoom out'\r\n\t\t// The title set on the 'zoom out' button.\r\n\t\tzoomOutTitle: 'Zoom out'\r\n\t},\r\n\r\n\tonAdd: function (map) {\r\n\t\tvar zoomName = 'leaflet-control-zoom',\r\n\t\t    container = create$1('div', zoomName + ' leaflet-bar'),\r\n\t\t    options = this.options;\r\n\r\n\t\tthis._zoomInButton  = this._createButton(options.zoomInText, options.zoomInTitle,\r\n\t\t        zoomName + '-in',  container, this._zoomIn);\r\n\t\tthis._zoomOutButton = this._createButton(options.zoomOutText, options.zoomOutTitle,\r\n\t\t        zoomName + '-out', container, this._zoomOut);\r\n\r\n\t\tthis._updateDisabled();\r\n\t\tmap.on('zoomend zoomlevelschange', this._updateDisabled, this);\r\n\r\n\t\treturn container;\r\n\t},\r\n\r\n\tonRemove: function (map) {\r\n\t\tmap.off('zoomend zoomlevelschange', this._updateDisabled, this);\r\n\t},\r\n\r\n\tdisable: function () {\r\n\t\tthis._disabled = true;\r\n\t\tthis._updateDisabled();\r\n\t\treturn this;\r\n\t},\r\n\r\n\tenable: function () {\r\n\t\tthis._disabled = false;\r\n\t\tthis._updateDisabled();\r\n\t\treturn this;\r\n\t},\r\n\r\n\t_zoomIn: function (e) {\r\n\t\tif (!this._disabled && this._map._zoom < this._map.getMaxZoom()) {\r\n\t\t\tthis._map.zoomIn(this._map.options.zoomDelta * (e.shiftKey ? 3 : 1));\r\n\t\t}\r\n\t},\r\n\r\n\t_zoomOut: function (e) {\r\n\t\tif (!this._disabled && this._map._zoom > this._map.getMinZoom()) {\r\n\t\t\tthis._map.zoomOut(this._map.options.zoomDelta * (e.shiftKey ? 3 : 1));\r\n\t\t}\r\n\t},\r\n\r\n\t_createButton: function (html, title, className, container, fn) {\r\n\t\tvar link = create$1('a', className, container);\r\n\t\tlink.innerHTML = html;\r\n\t\tlink.href = '#';\r\n\t\tlink.title = title;\r\n\r\n\t\t/*\r\n\t\t * Will force screen readers like VoiceOver to read this as \"Zoom in - button\"\r\n\t\t */\r\n\t\tlink.setAttribute('role', 'button');\r\n\t\tlink.setAttribute('aria-label', title);\r\n\r\n\t\tdisableClickPropagation(link);\r\n\t\ton(link, 'click', stop);\r\n\t\ton(link, 'click', fn, this);\r\n\t\ton(link, 'click', this._refocusOnMap, this);\r\n\r\n\t\treturn link;\r\n\t},\r\n\r\n\t_updateDisabled: function () {\r\n\t\tvar map = this._map,\r\n\t\t    className = 'leaflet-disabled';\r\n\r\n\t\tremoveClass(this._zoomInButton, className);\r\n\t\tremoveClass(this._zoomOutButton, className);\r\n\r\n\t\tif (this._disabled || map._zoom === map.getMinZoom()) {\r\n\t\t\taddClass(this._zoomOutButton, className);\r\n\t\t}\r\n\t\tif (this._disabled || map._zoom === map.getMaxZoom()) {\r\n\t\t\taddClass(this._zoomInButton, className);\r\n\t\t}\r\n\t}\r\n});\r\n\r\n// @namespace Map\r\n// @section Control options\r\n// @option zoomControl: Boolean = true\r\n// Whether a [zoom control](#control-zoom) is added to the map by default.\r\nMap.mergeOptions({\r\n\tzoomControl: true\r\n});\r\n\r\nMap.addInitHook(function () {\r\n\tif (this.options.zoomControl) {\r\n\t\t// @section Controls\r\n\t\t// @property zoomControl: Control.Zoom\r\n\t\t// The default zoom control (only available if the\r\n\t\t// [`zoomControl` option](#map-zoomcontrol) was `true` when creating the map).\r\n\t\tthis.zoomControl = new Zoom();\r\n\t\tthis.addControl(this.zoomControl);\r\n\t}\r\n});\r\n\r\n// @namespace Control.Zoom\r\n// @factory L.control.zoom(options: Control.Zoom options)\r\n// Creates a zoom control\r\nvar zoom = function (options) {\r\n\treturn new Zoom(options);\r\n};\n\n/*\n * @class Control.Scale\n * @aka L.Control.Scale\n * @inherits Control\n *\n * A simple scale control that shows the scale of the current center of screen in metric (m/km) and imperial (mi/ft) systems. Extends `Control`.\n *\n * @example\n *\n * ```js\n * L.control.scale().addTo(map);\n * ```\n */\n\nvar Scale = Control.extend({\n\t// @section\n\t// @aka Control.Scale options\n\toptions: {\n\t\tposition: 'bottomleft',\n\n\t\t// @option maxWidth: Number = 100\n\t\t// Maximum width of the control in pixels. The width is set dynamically to show round values (e.g. 100, 200, 500).\n\t\tmaxWidth: 100,\n\n\t\t// @option metric: Boolean = True\n\t\t// Whether to show the metric scale line (m/km).\n\t\tmetric: true,\n\n\t\t// @option imperial: Boolean = True\n\t\t// Whether to show the imperial scale line (mi/ft).\n\t\timperial: true\n\n\t\t// @option updateWhenIdle: Boolean = false\n\t\t// If `true`, the control is updated on [`moveend`](#map-moveend), otherwise it's always up-to-date (updated on [`move`](#map-move)).\n\t},\n\n\tonAdd: function (map) {\n\t\tvar className = 'leaflet-control-scale',\n\t\t    container = create$1('div', className),\n\t\t    options = this.options;\n\n\t\tthis._addScales(options, className + '-line', container);\n\n\t\tmap.on(options.updateWhenIdle ? 'moveend' : 'move', this._update, this);\n\t\tmap.whenReady(this._update, this);\n\n\t\treturn container;\n\t},\n\n\tonRemove: function (map) {\n\t\tmap.off(this.options.updateWhenIdle ? 'moveend' : 'move', this._update, this);\n\t},\n\n\t_addScales: function (options, className, container) {\n\t\tif (options.metric) {\n\t\t\tthis._mScale = create$1('div', className, container);\n\t\t}\n\t\tif (options.imperial) {\n\t\t\tthis._iScale = create$1('div', className, container);\n\t\t}\n\t},\n\n\t_update: function () {\n\t\tvar map = this._map,\n\t\t    y = map.getSize().y / 2;\n\n\t\tvar maxMeters = map.distance(\n\t\t\tmap.containerPointToLatLng([0, y]),\n\t\t\tmap.containerPointToLatLng([this.options.maxWidth, y]));\n\n\t\tthis._updateScales(maxMeters);\n\t},\n\n\t_updateScales: function (maxMeters) {\n\t\tif (this.options.metric && maxMeters) {\n\t\t\tthis._updateMetric(maxMeters);\n\t\t}\n\t\tif (this.options.imperial && maxMeters) {\n\t\t\tthis._updateImperial(maxMeters);\n\t\t}\n\t},\n\n\t_updateMetric: function (maxMeters) {\n\t\tvar meters = this._getRoundNum(maxMeters),\n\t\t    label = meters < 1000 ? meters + ' m' : (meters / 1000) + ' km';\n\n\t\tthis._updateScale(this._mScale, label, meters / maxMeters);\n\t},\n\n\t_updateImperial: function (maxMeters) {\n\t\tvar maxFeet = maxMeters * 3.2808399,\n\t\t    maxMiles, miles, feet;\n\n\t\tif (maxFeet > 5280) {\n\t\t\tmaxMiles = maxFeet / 5280;\n\t\t\tmiles = this._getRoundNum(maxMiles);\n\t\t\tthis._updateScale(this._iScale, miles + ' mi', miles / maxMiles);\n\n\t\t} else {\n\t\t\tfeet = this._getRoundNum(maxFeet);\n\t\t\tthis._updateScale(this._iScale, feet + ' ft', feet / maxFeet);\n\t\t}\n\t},\n\n\t_updateScale: function (scale, text, ratio) {\n\t\tscale.style.width = Math.round(this.options.maxWidth * ratio) + 'px';\n\t\tscale.innerHTML = text;\n\t},\n\n\t_getRoundNum: function (num) {\n\t\tvar pow10 = Math.pow(10, (Math.floor(num) + '').length - 1),\n\t\t    d = num / pow10;\n\n\t\td = d >= 10 ? 10 :\n\t\t    d >= 5 ? 5 :\n\t\t    d >= 3 ? 3 :\n\t\t    d >= 2 ? 2 : 1;\n\n\t\treturn pow10 * d;\n\t}\n});\n\n\n// @factory L.control.scale(options?: Control.Scale options)\n// Creates an scale control with the given options.\nvar scale = function (options) {\n\treturn new Scale(options);\n};\n\n/*\r\n * @class Control.Attribution\r\n * @aka L.Control.Attribution\r\n * @inherits Control\r\n *\r\n * The attribution control allows you to display attribution data in a small text box on a map. It is put on the map by default unless you set its [`attributionControl` option](#map-attributioncontrol) to `false`, and it fetches attribution texts from layers with the [`getAttribution` method](#layer-getattribution) automatically. Extends Control.\r\n */\r\n\r\nvar Attribution = Control.extend({\r\n\t// @section\r\n\t// @aka Control.Attribution options\r\n\toptions: {\r\n\t\tposition: 'bottomright',\r\n\r\n\t\t// @option prefix: String = 'Leaflet'\r\n\t\t// The HTML text shown before the attributions. Pass `false` to disable.\r\n\t\tprefix: '<a href=\"https://leafletjs.com\" title=\"A JS library for interactive maps\">Leaflet</a>'\r\n\t},\r\n\r\n\tinitialize: function (options) {\r\n\t\tsetOptions(this, options);\r\n\r\n\t\tthis._attributions = {};\r\n\t},\r\n\r\n\tonAdd: function (map) {\r\n\t\tmap.attributionControl = this;\r\n\t\tthis._container = create$1('div', 'leaflet-control-attribution');\r\n\t\tdisableClickPropagation(this._container);\r\n\r\n\t\t// TODO ugly, refactor\r\n\t\tfor (var i in map._layers) {\r\n\t\t\tif (map._layers[i].getAttribution) {\r\n\t\t\t\tthis.addAttribution(map._layers[i].getAttribution());\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis._update();\r\n\r\n\t\treturn this._container;\r\n\t},\r\n\r\n\t// @method setPrefix(prefix: String): this\r\n\t// Sets the text before the attributions.\r\n\tsetPrefix: function (prefix) {\r\n\t\tthis.options.prefix = prefix;\r\n\t\tthis._update();\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method addAttribution(text: String): this\r\n\t// Adds an attribution text (e.g. `'Vector data &copy; Mapbox'`).\r\n\taddAttribution: function (text) {\r\n\t\tif (!text) { return this; }\r\n\r\n\t\tif (!this._attributions[text]) {\r\n\t\t\tthis._attributions[text] = 0;\r\n\t\t}\r\n\t\tthis._attributions[text]++;\r\n\r\n\t\tthis._update();\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method removeAttribution(text: String): this\r\n\t// Removes an attribution text.\r\n\tremoveAttribution: function (text) {\r\n\t\tif (!text) { return this; }\r\n\r\n\t\tif (this._attributions[text]) {\r\n\t\t\tthis._attributions[text]--;\r\n\t\t\tthis._update();\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t_update: function () {\r\n\t\tif (!this._map) { return; }\r\n\r\n\t\tvar attribs = [];\r\n\r\n\t\tfor (var i in this._attributions) {\r\n\t\t\tif (this._attributions[i]) {\r\n\t\t\t\tattribs.push(i);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar prefixAndAttribs = [];\r\n\r\n\t\tif (this.options.prefix) {\r\n\t\t\tprefixAndAttribs.push(this.options.prefix);\r\n\t\t}\r\n\t\tif (attribs.length) {\r\n\t\t\tprefixAndAttribs.push(attribs.join(', '));\r\n\t\t}\r\n\r\n\t\tthis._container.innerHTML = prefixAndAttribs.join(' | ');\r\n\t}\r\n});\r\n\r\n// @namespace Map\r\n// @section Control options\r\n// @option attributionControl: Boolean = true\r\n// Whether a [attribution control](#control-attribution) is added to the map by default.\r\nMap.mergeOptions({\r\n\tattributionControl: true\r\n});\r\n\r\nMap.addInitHook(function () {\r\n\tif (this.options.attributionControl) {\r\n\t\tnew Attribution().addTo(this);\r\n\t}\r\n});\r\n\r\n// @namespace Control.Attribution\r\n// @factory L.control.attribution(options: Control.Attribution options)\r\n// Creates an attribution control.\r\nvar attribution = function (options) {\r\n\treturn new Attribution(options);\r\n};\n\nControl.Layers = Layers;\nControl.Zoom = Zoom;\nControl.Scale = Scale;\nControl.Attribution = Attribution;\n\ncontrol.layers = layers;\ncontrol.zoom = zoom;\ncontrol.scale = scale;\ncontrol.attribution = attribution;\n\n/*\n\tL.Handler is a base class for handler classes that are used internally to inject\n\tinteraction features like dragging to classes like Map and Marker.\n*/\n\n// @class Handler\n// @aka L.Handler\n// Abstract class for map interaction handlers\n\nvar Handler = Class.extend({\n\tinitialize: function (map) {\n\t\tthis._map = map;\n\t},\n\n\t// @method enable(): this\n\t// Enables the handler\n\tenable: function () {\n\t\tif (this._enabled) { return this; }\n\n\t\tthis._enabled = true;\n\t\tthis.addHooks();\n\t\treturn this;\n\t},\n\n\t// @method disable(): this\n\t// Disables the handler\n\tdisable: function () {\n\t\tif (!this._enabled) { return this; }\n\n\t\tthis._enabled = false;\n\t\tthis.removeHooks();\n\t\treturn this;\n\t},\n\n\t// @method enabled(): Boolean\n\t// Returns `true` if the handler is enabled\n\tenabled: function () {\n\t\treturn !!this._enabled;\n\t}\n\n\t// @section Extension methods\n\t// Classes inheriting from `Handler` must implement the two following methods:\n\t// @method addHooks()\n\t// Called when the handler is enabled, should add event hooks.\n\t// @method removeHooks()\n\t// Called when the handler is disabled, should remove the event hooks added previously.\n});\n\n// @section There is static function which can be called without instantiating L.Handler:\n// @function addTo(map: Map, name: String): this\n// Adds a new Handler to the given map with the given name.\nHandler.addTo = function (map, name) {\n\tmap.addHandler(name, this);\n\treturn this;\n};\n\nvar Mixin = {Events: Events};\n\n/*\r\n * @class Draggable\r\n * @aka L.Draggable\r\n * @inherits Evented\r\n *\r\n * A class for making DOM elements draggable (including touch support).\r\n * Used internally for map and marker dragging. Only works for elements\r\n * that were positioned with [`L.DomUtil.setPosition`](#domutil-setposition).\r\n *\r\n * @example\r\n * ```js\r\n * var draggable = new L.Draggable(elementToDrag);\r\n * draggable.enable();\r\n * ```\r\n */\r\n\r\nvar START = touch ? 'touchstart mousedown' : 'mousedown';\r\nvar END = {\r\n\tmousedown: 'mouseup',\r\n\ttouchstart: 'touchend',\r\n\tpointerdown: 'touchend',\r\n\tMSPointerDown: 'touchend'\r\n};\r\nvar MOVE = {\r\n\tmousedown: 'mousemove',\r\n\ttouchstart: 'touchmove',\r\n\tpointerdown: 'touchmove',\r\n\tMSPointerDown: 'touchmove'\r\n};\r\n\r\n\r\nvar Draggable = Evented.extend({\r\n\r\n\toptions: {\r\n\t\t// @section\r\n\t\t// @aka Draggable options\r\n\t\t// @option clickTolerance: Number = 3\r\n\t\t// The max number of pixels a user can shift the mouse pointer during a click\r\n\t\t// for it to be considered a valid click (as opposed to a mouse drag).\r\n\t\tclickTolerance: 3\r\n\t},\r\n\r\n\t// @constructor L.Draggable(el: HTMLElement, dragHandle?: HTMLElement, preventOutline?: Boolean, options?: Draggable options)\r\n\t// Creates a `Draggable` object for moving `el` when you start dragging the `dragHandle` element (equals `el` itself by default).\r\n\tinitialize: function (element, dragStartTarget, preventOutline$$1, options) {\r\n\t\tsetOptions(this, options);\r\n\r\n\t\tthis._element = element;\r\n\t\tthis._dragStartTarget = dragStartTarget || element;\r\n\t\tthis._preventOutline = preventOutline$$1;\r\n\t},\r\n\r\n\t// @method enable()\r\n\t// Enables the dragging ability\r\n\tenable: function () {\r\n\t\tif (this._enabled) { return; }\r\n\r\n\t\ton(this._dragStartTarget, START, this._onDown, this);\r\n\r\n\t\tthis._enabled = true;\r\n\t},\r\n\r\n\t// @method disable()\r\n\t// Disables the dragging ability\r\n\tdisable: function () {\r\n\t\tif (!this._enabled) { return; }\r\n\r\n\t\t// If we're currently dragging this draggable,\r\n\t\t// disabling it counts as first ending the drag.\r\n\t\tif (Draggable._dragging === this) {\r\n\t\t\tthis.finishDrag();\r\n\t\t}\r\n\r\n\t\toff(this._dragStartTarget, START, this._onDown, this);\r\n\r\n\t\tthis._enabled = false;\r\n\t\tthis._moved = false;\r\n\t},\r\n\r\n\t_onDown: function (e) {\r\n\t\t// Ignore simulated events, since we handle both touch and\r\n\t\t// mouse explicitly; otherwise we risk getting duplicates of\r\n\t\t// touch events, see #4315.\r\n\t\t// Also ignore the event if disabled; this happens in IE11\r\n\t\t// under some circumstances, see #3666.\r\n\t\tif (e._simulated || !this._enabled) { return; }\r\n\r\n\t\tthis._moved = false;\r\n\r\n\t\tif (hasClass(this._element, 'leaflet-zoom-anim')) { return; }\r\n\r\n\t\tif (Draggable._dragging || e.shiftKey || ((e.which !== 1) && (e.button !== 1) && !e.touches)) { return; }\r\n\t\tDraggable._dragging = this;  // Prevent dragging multiple objects at once.\r\n\r\n\t\tif (this._preventOutline) {\r\n\t\t\tpreventOutline(this._element);\r\n\t\t}\r\n\r\n\t\tdisableImageDrag();\r\n\t\tdisableTextSelection();\r\n\r\n\t\tif (this._moving) { return; }\r\n\r\n\t\t// @event down: Event\r\n\t\t// Fired when a drag is about to start.\r\n\t\tthis.fire('down');\r\n\r\n\t\tvar first = e.touches ? e.touches[0] : e,\r\n\t\t    sizedParent = getSizedParentNode(this._element);\r\n\r\n\t\tthis._startPoint = new Point(first.clientX, first.clientY);\r\n\r\n\t\t// Cache the scale, so that we can continuously compensate for it during drag (_onMove).\r\n\t\tthis._parentScale = getScale(sizedParent);\r\n\r\n\t\ton(document, MOVE[e.type], this._onMove, this);\r\n\t\ton(document, END[e.type], this._onUp, this);\r\n\t},\r\n\r\n\t_onMove: function (e) {\r\n\t\t// Ignore simulated events, since we handle both touch and\r\n\t\t// mouse explicitly; otherwise we risk getting duplicates of\r\n\t\t// touch events, see #4315.\r\n\t\t// Also ignore the event if disabled; this happens in IE11\r\n\t\t// under some circumstances, see #3666.\r\n\t\tif (e._simulated || !this._enabled) { return; }\r\n\r\n\t\tif (e.touches && e.touches.length > 1) {\r\n\t\t\tthis._moved = true;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar first = (e.touches && e.touches.length === 1 ? e.touches[0] : e),\r\n\t\t    offset = new Point(first.clientX, first.clientY)._subtract(this._startPoint);\r\n\r\n\t\tif (!offset.x && !offset.y) { return; }\r\n\t\tif (Math.abs(offset.x) + Math.abs(offset.y) < this.options.clickTolerance) { return; }\r\n\r\n\t\t// We assume that the parent container's position, border and scale do not change for the duration of the drag.\r\n\t\t// Therefore there is no need to account for the position and border (they are eliminated by the subtraction)\r\n\t\t// and we can use the cached value for the scale.\r\n\t\toffset.x /= this._parentScale.x;\r\n\t\toffset.y /= this._parentScale.y;\r\n\r\n\t\tpreventDefault(e);\r\n\r\n\t\tif (!this._moved) {\r\n\t\t\t// @event dragstart: Event\r\n\t\t\t// Fired when a drag starts\r\n\t\t\tthis.fire('dragstart');\r\n\r\n\t\t\tthis._moved = true;\r\n\t\t\tthis._startPos = getPosition(this._element).subtract(offset);\r\n\r\n\t\t\taddClass(document.body, 'leaflet-dragging');\r\n\r\n\t\t\tthis._lastTarget = e.target || e.srcElement;\r\n\t\t\t// IE and Edge do not give the <use> element, so fetch it\r\n\t\t\t// if necessary\r\n\t\t\tif ((window.SVGElementInstance) && (this._lastTarget instanceof SVGElementInstance)) {\r\n\t\t\t\tthis._lastTarget = this._lastTarget.correspondingUseElement;\r\n\t\t\t}\r\n\t\t\taddClass(this._lastTarget, 'leaflet-drag-target');\r\n\t\t}\r\n\r\n\t\tthis._newPos = this._startPos.add(offset);\r\n\t\tthis._moving = true;\r\n\r\n\t\tcancelAnimFrame(this._animRequest);\r\n\t\tthis._lastEvent = e;\r\n\t\tthis._animRequest = requestAnimFrame(this._updatePosition, this, true);\r\n\t},\r\n\r\n\t_updatePosition: function () {\r\n\t\tvar e = {originalEvent: this._lastEvent};\r\n\r\n\t\t// @event predrag: Event\r\n\t\t// Fired continuously during dragging *before* each corresponding\r\n\t\t// update of the element's position.\r\n\t\tthis.fire('predrag', e);\r\n\t\tsetPosition(this._element, this._newPos);\r\n\r\n\t\t// @event drag: Event\r\n\t\t// Fired continuously during dragging.\r\n\t\tthis.fire('drag', e);\r\n\t},\r\n\r\n\t_onUp: function (e) {\r\n\t\t// Ignore simulated events, since we handle both touch and\r\n\t\t// mouse explicitly; otherwise we risk getting duplicates of\r\n\t\t// touch events, see #4315.\r\n\t\t// Also ignore the event if disabled; this happens in IE11\r\n\t\t// under some circumstances, see #3666.\r\n\t\tif (e._simulated || !this._enabled) { return; }\r\n\t\tthis.finishDrag();\r\n\t},\r\n\r\n\tfinishDrag: function () {\r\n\t\tremoveClass(document.body, 'leaflet-dragging');\r\n\r\n\t\tif (this._lastTarget) {\r\n\t\t\tremoveClass(this._lastTarget, 'leaflet-drag-target');\r\n\t\t\tthis._lastTarget = null;\r\n\t\t}\r\n\r\n\t\tfor (var i in MOVE) {\r\n\t\t\toff(document, MOVE[i], this._onMove, this);\r\n\t\t\toff(document, END[i], this._onUp, this);\r\n\t\t}\r\n\r\n\t\tenableImageDrag();\r\n\t\tenableTextSelection();\r\n\r\n\t\tif (this._moved && this._moving) {\r\n\t\t\t// ensure drag is not fired after dragend\r\n\t\t\tcancelAnimFrame(this._animRequest);\r\n\r\n\t\t\t// @event dragend: DragEndEvent\r\n\t\t\t// Fired when the drag ends.\r\n\t\t\tthis.fire('dragend', {\r\n\t\t\t\tdistance: this._newPos.distanceTo(this._startPos)\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis._moving = false;\r\n\t\tDraggable._dragging = false;\r\n\t}\r\n\r\n});\n\n/*\r\n * @namespace LineUtil\r\n *\r\n * Various utility functions for polyline points processing, used by Leaflet internally to make polylines lightning-fast.\r\n */\r\n\r\n// Simplify polyline with vertex reduction and Douglas-Peucker simplification.\r\n// Improves rendering performance dramatically by lessening the number of points to draw.\r\n\r\n// @function simplify(points: Point[], tolerance: Number): Point[]\r\n// Dramatically reduces the number of points in a polyline while retaining\r\n// its shape and returns a new array of simplified points, using the\r\n// [Douglas-Peucker algorithm](http://en.wikipedia.org/wiki/Douglas-Peucker_algorithm).\r\n// Used for a huge performance boost when processing/displaying Leaflet polylines for\r\n// each zoom level and also reducing visual noise. tolerance affects the amount of\r\n// simplification (lesser value means higher quality but slower and with more points).\r\n// Also released as a separated micro-library [Simplify.js](http://mourner.github.com/simplify-js/).\r\nfunction simplify(points, tolerance) {\r\n\tif (!tolerance || !points.length) {\r\n\t\treturn points.slice();\r\n\t}\r\n\r\n\tvar sqTolerance = tolerance * tolerance;\r\n\r\n\t    // stage 1: vertex reduction\r\n\t    points = _reducePoints(points, sqTolerance);\r\n\r\n\t    // stage 2: Douglas-Peucker simplification\r\n\t    points = _simplifyDP(points, sqTolerance);\r\n\r\n\treturn points;\r\n}\r\n\r\n// @function pointToSegmentDistance(p: Point, p1: Point, p2: Point): Number\r\n// Returns the distance between point `p` and segment `p1` to `p2`.\r\nfunction pointToSegmentDistance(p, p1, p2) {\r\n\treturn Math.sqrt(_sqClosestPointOnSegment(p, p1, p2, true));\r\n}\r\n\r\n// @function closestPointOnSegment(p: Point, p1: Point, p2: Point): Number\r\n// Returns the closest point from a point `p` on a segment `p1` to `p2`.\r\nfunction closestPointOnSegment(p, p1, p2) {\r\n\treturn _sqClosestPointOnSegment(p, p1, p2);\r\n}\r\n\r\n// Douglas-Peucker simplification, see http://en.wikipedia.org/wiki/Douglas-Peucker_algorithm\r\nfunction _simplifyDP(points, sqTolerance) {\r\n\r\n\tvar len = points.length,\r\n\t    ArrayConstructor = typeof Uint8Array !== undefined + '' ? Uint8Array : Array,\r\n\t    markers = new ArrayConstructor(len);\r\n\r\n\t    markers[0] = markers[len - 1] = 1;\r\n\r\n\t_simplifyDPStep(points, markers, sqTolerance, 0, len - 1);\r\n\r\n\tvar i,\r\n\t    newPoints = [];\r\n\r\n\tfor (i = 0; i < len; i++) {\r\n\t\tif (markers[i]) {\r\n\t\t\tnewPoints.push(points[i]);\r\n\t\t}\r\n\t}\r\n\r\n\treturn newPoints;\r\n}\r\n\r\nfunction _simplifyDPStep(points, markers, sqTolerance, first, last) {\r\n\r\n\tvar maxSqDist = 0,\r\n\tindex, i, sqDist;\r\n\r\n\tfor (i = first + 1; i <= last - 1; i++) {\r\n\t\tsqDist = _sqClosestPointOnSegment(points[i], points[first], points[last], true);\r\n\r\n\t\tif (sqDist > maxSqDist) {\r\n\t\t\tindex = i;\r\n\t\t\tmaxSqDist = sqDist;\r\n\t\t}\r\n\t}\r\n\r\n\tif (maxSqDist > sqTolerance) {\r\n\t\tmarkers[index] = 1;\r\n\r\n\t\t_simplifyDPStep(points, markers, sqTolerance, first, index);\r\n\t\t_simplifyDPStep(points, markers, sqTolerance, index, last);\r\n\t}\r\n}\r\n\r\n// reduce points that are too close to each other to a single point\r\nfunction _reducePoints(points, sqTolerance) {\r\n\tvar reducedPoints = [points[0]];\r\n\r\n\tfor (var i = 1, prev = 0, len = points.length; i < len; i++) {\r\n\t\tif (_sqDist(points[i], points[prev]) > sqTolerance) {\r\n\t\t\treducedPoints.push(points[i]);\r\n\t\t\tprev = i;\r\n\t\t}\r\n\t}\r\n\tif (prev < len - 1) {\r\n\t\treducedPoints.push(points[len - 1]);\r\n\t}\r\n\treturn reducedPoints;\r\n}\r\n\r\nvar _lastCode;\r\n\r\n// @function clipSegment(a: Point, b: Point, bounds: Bounds, useLastCode?: Boolean, round?: Boolean): Point[]|Boolean\r\n// Clips the segment a to b by rectangular bounds with the\r\n// [Cohen-Sutherland algorithm](https://en.wikipedia.org/wiki/Cohen%E2%80%93Sutherland_algorithm)\r\n// (modifying the segment points directly!). Used by Leaflet to only show polyline\r\n// points that are on the screen or near, increasing performance.\r\nfunction clipSegment(a, b, bounds, useLastCode, round) {\r\n\tvar codeA = useLastCode ? _lastCode : _getBitCode(a, bounds),\r\n\t    codeB = _getBitCode(b, bounds),\r\n\r\n\t    codeOut, p, newCode;\r\n\r\n\t    // save 2nd code to avoid calculating it on the next segment\r\n\t    _lastCode = codeB;\r\n\r\n\twhile (true) {\r\n\t\t// if a,b is inside the clip window (trivial accept)\r\n\t\tif (!(codeA | codeB)) {\r\n\t\t\treturn [a, b];\r\n\t\t}\r\n\r\n\t\t// if a,b is outside the clip window (trivial reject)\r\n\t\tif (codeA & codeB) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// other cases\r\n\t\tcodeOut = codeA || codeB;\r\n\t\tp = _getEdgeIntersection(a, b, codeOut, bounds, round);\r\n\t\tnewCode = _getBitCode(p, bounds);\r\n\r\n\t\tif (codeOut === codeA) {\r\n\t\t\ta = p;\r\n\t\t\tcodeA = newCode;\r\n\t\t} else {\r\n\t\t\tb = p;\r\n\t\t\tcodeB = newCode;\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction _getEdgeIntersection(a, b, code, bounds, round) {\r\n\tvar dx = b.x - a.x,\r\n\t    dy = b.y - a.y,\r\n\t    min = bounds.min,\r\n\t    max = bounds.max,\r\n\t    x, y;\r\n\r\n\tif (code & 8) { // top\r\n\t\tx = a.x + dx * (max.y - a.y) / dy;\r\n\t\ty = max.y;\r\n\r\n\t} else if (code & 4) { // bottom\r\n\t\tx = a.x + dx * (min.y - a.y) / dy;\r\n\t\ty = min.y;\r\n\r\n\t} else if (code & 2) { // right\r\n\t\tx = max.x;\r\n\t\ty = a.y + dy * (max.x - a.x) / dx;\r\n\r\n\t} else if (code & 1) { // left\r\n\t\tx = min.x;\r\n\t\ty = a.y + dy * (min.x - a.x) / dx;\r\n\t}\r\n\r\n\treturn new Point(x, y, round);\r\n}\r\n\r\nfunction _getBitCode(p, bounds) {\r\n\tvar code = 0;\r\n\r\n\tif (p.x < bounds.min.x) { // left\r\n\t\tcode |= 1;\r\n\t} else if (p.x > bounds.max.x) { // right\r\n\t\tcode |= 2;\r\n\t}\r\n\r\n\tif (p.y < bounds.min.y) { // bottom\r\n\t\tcode |= 4;\r\n\t} else if (p.y > bounds.max.y) { // top\r\n\t\tcode |= 8;\r\n\t}\r\n\r\n\treturn code;\r\n}\r\n\r\n// square distance (to avoid unnecessary Math.sqrt calls)\r\nfunction _sqDist(p1, p2) {\r\n\tvar dx = p2.x - p1.x,\r\n\t    dy = p2.y - p1.y;\r\n\treturn dx * dx + dy * dy;\r\n}\r\n\r\n// return closest point on segment or distance to that point\r\nfunction _sqClosestPointOnSegment(p, p1, p2, sqDist) {\r\n\tvar x = p1.x,\r\n\t    y = p1.y,\r\n\t    dx = p2.x - x,\r\n\t    dy = p2.y - y,\r\n\t    dot = dx * dx + dy * dy,\r\n\t    t;\r\n\r\n\tif (dot > 0) {\r\n\t\tt = ((p.x - x) * dx + (p.y - y) * dy) / dot;\r\n\r\n\t\tif (t > 1) {\r\n\t\t\tx = p2.x;\r\n\t\t\ty = p2.y;\r\n\t\t} else if (t > 0) {\r\n\t\t\tx += dx * t;\r\n\t\t\ty += dy * t;\r\n\t\t}\r\n\t}\r\n\r\n\tdx = p.x - x;\r\n\tdy = p.y - y;\r\n\r\n\treturn sqDist ? dx * dx + dy * dy : new Point(x, y);\r\n}\r\n\r\n\r\n// @function isFlat(latlngs: LatLng[]): Boolean\r\n// Returns true if `latlngs` is a flat array, false is nested.\r\nfunction isFlat(latlngs) {\r\n\treturn !isArray(latlngs[0]) || (typeof latlngs[0][0] !== 'object' && typeof latlngs[0][0] !== 'undefined');\r\n}\r\n\r\nfunction _flat(latlngs) {\r\n\tconsole.warn('Deprecated use of _flat, please use L.LineUtil.isFlat instead.');\r\n\treturn isFlat(latlngs);\r\n}\r\n\n\nvar LineUtil = (Object.freeze || Object)({\n\tsimplify: simplify,\n\tpointToSegmentDistance: pointToSegmentDistance,\n\tclosestPointOnSegment: closestPointOnSegment,\n\tclipSegment: clipSegment,\n\t_getEdgeIntersection: _getEdgeIntersection,\n\t_getBitCode: _getBitCode,\n\t_sqClosestPointOnSegment: _sqClosestPointOnSegment,\n\tisFlat: isFlat,\n\t_flat: _flat\n});\n\n/*\r\n * @namespace PolyUtil\r\n * Various utility functions for polygon geometries.\r\n */\r\n\r\n/* @function clipPolygon(points: Point[], bounds: Bounds, round?: Boolean): Point[]\r\n * Clips the polygon geometry defined by the given `points` by the given bounds (using the [Sutherland-Hodgman algorithm](https://en.wikipedia.org/wiki/Sutherland%E2%80%93Hodgman_algorithm)).\r\n * Used by Leaflet to only show polygon points that are on the screen or near, increasing\r\n * performance. Note that polygon points needs different algorithm for clipping\r\n * than polyline, so there's a separate method for it.\r\n */\r\nfunction clipPolygon(points, bounds, round) {\r\n\tvar clippedPoints,\r\n\t    edges = [1, 4, 2, 8],\r\n\t    i, j, k,\r\n\t    a, b,\r\n\t    len, edge, p;\r\n\r\n\tfor (i = 0, len = points.length; i < len; i++) {\r\n\t\tpoints[i]._code = _getBitCode(points[i], bounds);\r\n\t}\r\n\r\n\t// for each edge (left, bottom, right, top)\r\n\tfor (k = 0; k < 4; k++) {\r\n\t\tedge = edges[k];\r\n\t\tclippedPoints = [];\r\n\r\n\t\tfor (i = 0, len = points.length, j = len - 1; i < len; j = i++) {\r\n\t\t\ta = points[i];\r\n\t\t\tb = points[j];\r\n\r\n\t\t\t// if a is inside the clip window\r\n\t\t\tif (!(a._code & edge)) {\r\n\t\t\t\t// if b is outside the clip window (a->b goes out of screen)\r\n\t\t\t\tif (b._code & edge) {\r\n\t\t\t\t\tp = _getEdgeIntersection(b, a, edge, bounds, round);\r\n\t\t\t\t\tp._code = _getBitCode(p, bounds);\r\n\t\t\t\t\tclippedPoints.push(p);\r\n\t\t\t\t}\r\n\t\t\t\tclippedPoints.push(a);\r\n\r\n\t\t\t// else if b is inside the clip window (a->b enters the screen)\r\n\t\t\t} else if (!(b._code & edge)) {\r\n\t\t\t\tp = _getEdgeIntersection(b, a, edge, bounds, round);\r\n\t\t\t\tp._code = _getBitCode(p, bounds);\r\n\t\t\t\tclippedPoints.push(p);\r\n\t\t\t}\r\n\t\t}\r\n\t\tpoints = clippedPoints;\r\n\t}\r\n\r\n\treturn points;\r\n}\r\n\n\nvar PolyUtil = (Object.freeze || Object)({\n\tclipPolygon: clipPolygon\n});\n\n/*\r\n * @namespace Projection\r\n * @section\r\n * Leaflet comes with a set of already defined Projections out of the box:\r\n *\r\n * @projection L.Projection.LonLat\r\n *\r\n * Equirectangular, or Plate Carree projection — the most simple projection,\r\n * mostly used by GIS enthusiasts. Directly maps `x` as longitude, and `y` as\r\n * latitude. Also suitable for flat worlds, e.g. game maps. Used by the\r\n * `EPSG:4326` and `Simple` CRS.\r\n */\r\n\r\nvar LonLat = {\r\n\tproject: function (latlng) {\r\n\t\treturn new Point(latlng.lng, latlng.lat);\r\n\t},\r\n\r\n\tunproject: function (point) {\r\n\t\treturn new LatLng(point.y, point.x);\r\n\t},\r\n\r\n\tbounds: new Bounds([-180, -90], [180, 90])\r\n};\n\n/*\r\n * @namespace Projection\r\n * @projection L.Projection.Mercator\r\n *\r\n * Elliptical Mercator projection — more complex than Spherical Mercator. Assumes that Earth is an ellipsoid. Used by the EPSG:3395 CRS.\r\n */\r\n\r\nvar Mercator = {\r\n\tR: 6378137,\r\n\tR_MINOR: 6356752.314245179,\r\n\r\n\tbounds: new Bounds([-20037508.34279, -15496570.73972], [20037508.34279, 18764656.23138]),\r\n\r\n\tproject: function (latlng) {\r\n\t\tvar d = Math.PI / 180,\r\n\t\t    r = this.R,\r\n\t\t    y = latlng.lat * d,\r\n\t\t    tmp = this.R_MINOR / r,\r\n\t\t    e = Math.sqrt(1 - tmp * tmp),\r\n\t\t    con = e * Math.sin(y);\r\n\r\n\t\tvar ts = Math.tan(Math.PI / 4 - y / 2) / Math.pow((1 - con) / (1 + con), e / 2);\r\n\t\ty = -r * Math.log(Math.max(ts, 1E-10));\r\n\r\n\t\treturn new Point(latlng.lng * d * r, y);\r\n\t},\r\n\r\n\tunproject: function (point) {\r\n\t\tvar d = 180 / Math.PI,\r\n\t\t    r = this.R,\r\n\t\t    tmp = this.R_MINOR / r,\r\n\t\t    e = Math.sqrt(1 - tmp * tmp),\r\n\t\t    ts = Math.exp(-point.y / r),\r\n\t\t    phi = Math.PI / 2 - 2 * Math.atan(ts);\r\n\r\n\t\tfor (var i = 0, dphi = 0.1, con; i < 15 && Math.abs(dphi) > 1e-7; i++) {\r\n\t\t\tcon = e * Math.sin(phi);\r\n\t\t\tcon = Math.pow((1 - con) / (1 + con), e / 2);\r\n\t\t\tdphi = Math.PI / 2 - 2 * Math.atan(ts * con) - phi;\r\n\t\t\tphi += dphi;\r\n\t\t}\r\n\r\n\t\treturn new LatLng(phi * d, point.x * d / r);\r\n\t}\r\n};\n\n/*\n * @class Projection\n\n * An object with methods for projecting geographical coordinates of the world onto\n * a flat surface (and back). See [Map projection](http://en.wikipedia.org/wiki/Map_projection).\n\n * @property bounds: Bounds\n * The bounds (specified in CRS units) where the projection is valid\n\n * @method project(latlng: LatLng): Point\n * Projects geographical coordinates into a 2D point.\n * Only accepts actual `L.LatLng` instances, not arrays.\n\n * @method unproject(point: Point): LatLng\n * The inverse of `project`. Projects a 2D point into a geographical location.\n * Only accepts actual `L.Point` instances, not arrays.\n\n * Note that the projection instances do not inherit from Leafet's `Class` object,\n * and can't be instantiated. Also, new classes can't inherit from them,\n * and methods can't be added to them with the `include` function.\n\n */\n\n\n\n\nvar index = (Object.freeze || Object)({\n\tLonLat: LonLat,\n\tMercator: Mercator,\n\tSphericalMercator: SphericalMercator\n});\n\n/*\r\n * @namespace CRS\r\n * @crs L.CRS.EPSG3395\r\n *\r\n * Rarely used by some commercial tile providers. Uses Elliptical Mercator projection.\r\n */\r\nvar EPSG3395 = extend({}, Earth, {\r\n\tcode: 'EPSG:3395',\r\n\tprojection: Mercator,\r\n\r\n\ttransformation: (function () {\r\n\t\tvar scale = 0.5 / (Math.PI * Mercator.R);\r\n\t\treturn toTransformation(scale, 0.5, -scale, 0.5);\r\n\t}())\r\n});\n\n/*\r\n * @namespace CRS\r\n * @crs L.CRS.EPSG4326\r\n *\r\n * A common CRS among GIS enthusiasts. Uses simple Equirectangular projection.\r\n *\r\n * Leaflet 1.0.x complies with the [TMS coordinate scheme for EPSG:4326](https://wiki.osgeo.org/wiki/Tile_Map_Service_Specification#global-geodetic),\r\n * which is a breaking change from 0.7.x behaviour.  If you are using a `TileLayer`\r\n * with this CRS, ensure that there are two 256x256 pixel tiles covering the\r\n * whole earth at zoom level zero, and that the tile coordinate origin is (-180,+90),\r\n * or (-180,-90) for `TileLayer`s with [the `tms` option](#tilelayer-tms) set.\r\n */\r\n\r\nvar EPSG4326 = extend({}, Earth, {\r\n\tcode: 'EPSG:4326',\r\n\tprojection: LonLat,\r\n\ttransformation: toTransformation(1 / 180, 1, -1 / 180, 0.5)\r\n});\n\n/*\n * @namespace CRS\n * @crs L.CRS.Simple\n *\n * A simple CRS that maps longitude and latitude into `x` and `y` directly.\n * May be used for maps of flat surfaces (e.g. game maps). Note that the `y`\n * axis should still be inverted (going from bottom to top). `distance()` returns\n * simple euclidean distance.\n */\n\nvar Simple = extend({}, CRS, {\n\tprojection: LonLat,\n\ttransformation: toTransformation(1, 0, -1, 0),\n\n\tscale: function (zoom) {\n\t\treturn Math.pow(2, zoom);\n\t},\n\n\tzoom: function (scale) {\n\t\treturn Math.log(scale) / Math.LN2;\n\t},\n\n\tdistance: function (latlng1, latlng2) {\n\t\tvar dx = latlng2.lng - latlng1.lng,\n\t\t    dy = latlng2.lat - latlng1.lat;\n\n\t\treturn Math.sqrt(dx * dx + dy * dy);\n\t},\n\n\tinfinite: true\n});\n\nCRS.Earth = Earth;\nCRS.EPSG3395 = EPSG3395;\nCRS.EPSG3857 = EPSG3857;\nCRS.EPSG900913 = EPSG900913;\nCRS.EPSG4326 = EPSG4326;\nCRS.Simple = Simple;\n\n/*\n * @class Layer\n * @inherits Evented\n * @aka L.Layer\n * @aka ILayer\n *\n * A set of methods from the Layer base class that all Leaflet layers use.\n * Inherits all methods, options and events from `L.Evented`.\n *\n * @example\n *\n * ```js\n * var layer = L.marker(latlng).addTo(map);\n * layer.addTo(map);\n * layer.remove();\n * ```\n *\n * @event add: Event\n * Fired after the layer is added to a map\n *\n * @event remove: Event\n * Fired after the layer is removed from a map\n */\n\n\nvar Layer = Evented.extend({\n\n\t// Classes extending `L.Layer` will inherit the following options:\n\toptions: {\n\t\t// @option pane: String = 'overlayPane'\n\t\t// By default the layer will be added to the map's [overlay pane](#map-overlaypane). Overriding this option will cause the layer to be placed on another pane by default.\n\t\tpane: 'overlayPane',\n\n\t\t// @option attribution: String = null\n\t\t// String to be shown in the attribution control, e.g. \"© OpenStreetMap contributors\". It describes the layer data and is often a legal obligation towards copyright holders and tile providers.\n\t\tattribution: null,\n\n\t\tbubblingMouseEvents: true\n\t},\n\n\t/* @section\n\t * Classes extending `L.Layer` will inherit the following methods:\n\t *\n\t * @method addTo(map: Map|LayerGroup): this\n\t * Adds the layer to the given map or layer group.\n\t */\n\taddTo: function (map) {\n\t\tmap.addLayer(this);\n\t\treturn this;\n\t},\n\n\t// @method remove: this\n\t// Removes the layer from the map it is currently active on.\n\tremove: function () {\n\t\treturn this.removeFrom(this._map || this._mapToAdd);\n\t},\n\n\t// @method removeFrom(map: Map): this\n\t// Removes the layer from the given map\n\tremoveFrom: function (obj) {\n\t\tif (obj) {\n\t\t\tobj.removeLayer(this);\n\t\t}\n\t\treturn this;\n\t},\n\n\t// @method getPane(name? : String): HTMLElement\n\t// Returns the `HTMLElement` representing the named pane on the map. If `name` is omitted, returns the pane for this layer.\n\tgetPane: function (name) {\n\t\treturn this._map.getPane(name ? (this.options[name] || name) : this.options.pane);\n\t},\n\n\taddInteractiveTarget: function (targetEl) {\n\t\tthis._map._targets[stamp(targetEl)] = this;\n\t\treturn this;\n\t},\n\n\tremoveInteractiveTarget: function (targetEl) {\n\t\tdelete this._map._targets[stamp(targetEl)];\n\t\treturn this;\n\t},\n\n\t// @method getAttribution: String\n\t// Used by the `attribution control`, returns the [attribution option](#gridlayer-attribution).\n\tgetAttribution: function () {\n\t\treturn this.options.attribution;\n\t},\n\n\t_layerAdd: function (e) {\n\t\tvar map = e.target;\n\n\t\t// check in case layer gets added and then removed before the map is ready\n\t\tif (!map.hasLayer(this)) { return; }\n\n\t\tthis._map = map;\n\t\tthis._zoomAnimated = map._zoomAnimated;\n\n\t\tif (this.getEvents) {\n\t\t\tvar events = this.getEvents();\n\t\t\tmap.on(events, this);\n\t\t\tthis.once('remove', function () {\n\t\t\t\tmap.off(events, this);\n\t\t\t}, this);\n\t\t}\n\n\t\tthis.onAdd(map);\n\n\t\tif (this.getAttribution && map.attributionControl) {\n\t\t\tmap.attributionControl.addAttribution(this.getAttribution());\n\t\t}\n\n\t\tthis.fire('add');\n\t\tmap.fire('layeradd', {layer: this});\n\t}\n});\n\n/* @section Extension methods\n * @uninheritable\n *\n * Every layer should extend from `L.Layer` and (re-)implement the following methods.\n *\n * @method onAdd(map: Map): this\n * Should contain code that creates DOM elements for the layer, adds them to `map panes` where they should belong and puts listeners on relevant map events. Called on [`map.addLayer(layer)`](#map-addlayer).\n *\n * @method onRemove(map: Map): this\n * Should contain all clean up code that removes the layer's elements from the DOM and removes listeners previously added in [`onAdd`](#layer-onadd). Called on [`map.removeLayer(layer)`](#map-removelayer).\n *\n * @method getEvents(): Object\n * This optional method should return an object like `{ viewreset: this._reset }` for [`addEventListener`](#evented-addeventlistener). The event handlers in this object will be automatically added and removed from the map with your layer.\n *\n * @method getAttribution(): String\n * This optional method should return a string containing HTML to be shown on the `Attribution control` whenever the layer is visible.\n *\n * @method beforeAdd(map: Map): this\n * Optional method. Called on [`map.addLayer(layer)`](#map-addlayer), before the layer is added to the map, before events are initialized, without waiting until the map is in a usable state. Use for early initialization only.\n */\n\n\n/* @namespace Map\n * @section Layer events\n *\n * @event layeradd: LayerEvent\n * Fired when a new layer is added to the map.\n *\n * @event layerremove: LayerEvent\n * Fired when some layer is removed from the map\n *\n * @section Methods for Layers and Controls\n */\nMap.include({\n\t// @method addLayer(layer: Layer): this\n\t// Adds the given layer to the map\n\taddLayer: function (layer) {\n\t\tif (!layer._layerAdd) {\n\t\t\tthrow new Error('The provided object is not a Layer.');\n\t\t}\n\n\t\tvar id = stamp(layer);\n\t\tif (this._layers[id]) { return this; }\n\t\tthis._layers[id] = layer;\n\n\t\tlayer._mapToAdd = this;\n\n\t\tif (layer.beforeAdd) {\n\t\t\tlayer.beforeAdd(this);\n\t\t}\n\n\t\tthis.whenReady(layer._layerAdd, layer);\n\n\t\treturn this;\n\t},\n\n\t// @method removeLayer(layer: Layer): this\n\t// Removes the given layer from the map.\n\tremoveLayer: function (layer) {\n\t\tvar id = stamp(layer);\n\n\t\tif (!this._layers[id]) { return this; }\n\n\t\tif (this._loaded) {\n\t\t\tlayer.onRemove(this);\n\t\t}\n\n\t\tif (layer.getAttribution && this.attributionControl) {\n\t\t\tthis.attributionControl.removeAttribution(layer.getAttribution());\n\t\t}\n\n\t\tdelete this._layers[id];\n\n\t\tif (this._loaded) {\n\t\t\tthis.fire('layerremove', {layer: layer});\n\t\t\tlayer.fire('remove');\n\t\t}\n\n\t\tlayer._map = layer._mapToAdd = null;\n\n\t\treturn this;\n\t},\n\n\t// @method hasLayer(layer: Layer): Boolean\n\t// Returns `true` if the given layer is currently added to the map\n\thasLayer: function (layer) {\n\t\treturn !!layer && (stamp(layer) in this._layers);\n\t},\n\n\t/* @method eachLayer(fn: Function, context?: Object): this\n\t * Iterates over the layers of the map, optionally specifying context of the iterator function.\n\t * ```\n\t * map.eachLayer(function(layer){\n\t *     layer.bindPopup('Hello');\n\t * });\n\t * ```\n\t */\n\teachLayer: function (method, context) {\n\t\tfor (var i in this._layers) {\n\t\t\tmethod.call(context, this._layers[i]);\n\t\t}\n\t\treturn this;\n\t},\n\n\t_addLayers: function (layers) {\n\t\tlayers = layers ? (isArray(layers) ? layers : [layers]) : [];\n\n\t\tfor (var i = 0, len = layers.length; i < len; i++) {\n\t\t\tthis.addLayer(layers[i]);\n\t\t}\n\t},\n\n\t_addZoomLimit: function (layer) {\n\t\tif (isNaN(layer.options.maxZoom) || !isNaN(layer.options.minZoom)) {\n\t\t\tthis._zoomBoundLayers[stamp(layer)] = layer;\n\t\t\tthis._updateZoomLevels();\n\t\t}\n\t},\n\n\t_removeZoomLimit: function (layer) {\n\t\tvar id = stamp(layer);\n\n\t\tif (this._zoomBoundLayers[id]) {\n\t\t\tdelete this._zoomBoundLayers[id];\n\t\t\tthis._updateZoomLevels();\n\t\t}\n\t},\n\n\t_updateZoomLevels: function () {\n\t\tvar minZoom = Infinity,\n\t\t    maxZoom = -Infinity,\n\t\t    oldZoomSpan = this._getZoomSpan();\n\n\t\tfor (var i in this._zoomBoundLayers) {\n\t\t\tvar options = this._zoomBoundLayers[i].options;\n\n\t\t\tminZoom = options.minZoom === undefined ? minZoom : Math.min(minZoom, options.minZoom);\n\t\t\tmaxZoom = options.maxZoom === undefined ? maxZoom : Math.max(maxZoom, options.maxZoom);\n\t\t}\n\n\t\tthis._layersMaxZoom = maxZoom === -Infinity ? undefined : maxZoom;\n\t\tthis._layersMinZoom = minZoom === Infinity ? undefined : minZoom;\n\n\t\t// @section Map state change events\n\t\t// @event zoomlevelschange: Event\n\t\t// Fired when the number of zoomlevels on the map is changed due\n\t\t// to adding or removing a layer.\n\t\tif (oldZoomSpan !== this._getZoomSpan()) {\n\t\t\tthis.fire('zoomlevelschange');\n\t\t}\n\n\t\tif (this.options.maxZoom === undefined && this._layersMaxZoom && this.getZoom() > this._layersMaxZoom) {\n\t\t\tthis.setZoom(this._layersMaxZoom);\n\t\t}\n\t\tif (this.options.minZoom === undefined && this._layersMinZoom && this.getZoom() < this._layersMinZoom) {\n\t\t\tthis.setZoom(this._layersMinZoom);\n\t\t}\n\t}\n});\n\n/*\r\n * @class LayerGroup\r\n * @aka L.LayerGroup\r\n * @inherits Layer\r\n *\r\n * Used to group several layers and handle them as one. If you add it to the map,\r\n * any layers added or removed from the group will be added/removed on the map as\r\n * well. Extends `Layer`.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * L.layerGroup([marker1, marker2])\r\n * \t.addLayer(polyline)\r\n * \t.addTo(map);\r\n * ```\r\n */\r\n\r\nvar LayerGroup = Layer.extend({\r\n\r\n\tinitialize: function (layers, options) {\r\n\t\tsetOptions(this, options);\r\n\r\n\t\tthis._layers = {};\r\n\r\n\t\tvar i, len;\r\n\r\n\t\tif (layers) {\r\n\t\t\tfor (i = 0, len = layers.length; i < len; i++) {\r\n\t\t\t\tthis.addLayer(layers[i]);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t// @method addLayer(layer: Layer): this\r\n\t// Adds the given layer to the group.\r\n\taddLayer: function (layer) {\r\n\t\tvar id = this.getLayerId(layer);\r\n\r\n\t\tthis._layers[id] = layer;\r\n\r\n\t\tif (this._map) {\r\n\t\t\tthis._map.addLayer(layer);\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method removeLayer(layer: Layer): this\r\n\t// Removes the given layer from the group.\r\n\t// @alternative\r\n\t// @method removeLayer(id: Number): this\r\n\t// Removes the layer with the given internal ID from the group.\r\n\tremoveLayer: function (layer) {\r\n\t\tvar id = layer in this._layers ? layer : this.getLayerId(layer);\r\n\r\n\t\tif (this._map && this._layers[id]) {\r\n\t\t\tthis._map.removeLayer(this._layers[id]);\r\n\t\t}\r\n\r\n\t\tdelete this._layers[id];\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method hasLayer(layer: Layer): Boolean\r\n\t// Returns `true` if the given layer is currently added to the group.\r\n\t// @alternative\r\n\t// @method hasLayer(id: Number): Boolean\r\n\t// Returns `true` if the given internal ID is currently added to the group.\r\n\thasLayer: function (layer) {\r\n\t\treturn !!layer && (layer in this._layers || this.getLayerId(layer) in this._layers);\r\n\t},\r\n\r\n\t// @method clearLayers(): this\r\n\t// Removes all the layers from the group.\r\n\tclearLayers: function () {\r\n\t\treturn this.eachLayer(this.removeLayer, this);\r\n\t},\r\n\r\n\t// @method invoke(methodName: String, …): this\r\n\t// Calls `methodName` on every layer contained in this group, passing any\r\n\t// additional parameters. Has no effect if the layers contained do not\r\n\t// implement `methodName`.\r\n\tinvoke: function (methodName) {\r\n\t\tvar args = Array.prototype.slice.call(arguments, 1),\r\n\t\t    i, layer;\r\n\r\n\t\tfor (i in this._layers) {\r\n\t\t\tlayer = this._layers[i];\r\n\r\n\t\t\tif (layer[methodName]) {\r\n\t\t\t\tlayer[methodName].apply(layer, args);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\tonAdd: function (map) {\r\n\t\tthis.eachLayer(map.addLayer, map);\r\n\t},\r\n\r\n\tonRemove: function (map) {\r\n\t\tthis.eachLayer(map.removeLayer, map);\r\n\t},\r\n\r\n\t// @method eachLayer(fn: Function, context?: Object): this\r\n\t// Iterates over the layers of the group, optionally specifying context of the iterator function.\r\n\t// ```js\r\n\t// group.eachLayer(function (layer) {\r\n\t// \tlayer.bindPopup('Hello');\r\n\t// });\r\n\t// ```\r\n\teachLayer: function (method, context) {\r\n\t\tfor (var i in this._layers) {\r\n\t\t\tmethod.call(context, this._layers[i]);\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method getLayer(id: Number): Layer\r\n\t// Returns the layer with the given internal ID.\r\n\tgetLayer: function (id) {\r\n\t\treturn this._layers[id];\r\n\t},\r\n\r\n\t// @method getLayers(): Layer[]\r\n\t// Returns an array of all the layers added to the group.\r\n\tgetLayers: function () {\r\n\t\tvar layers = [];\r\n\t\tthis.eachLayer(layers.push, layers);\r\n\t\treturn layers;\r\n\t},\r\n\r\n\t// @method setZIndex(zIndex: Number): this\r\n\t// Calls `setZIndex` on every layer contained in this group, passing the z-index.\r\n\tsetZIndex: function (zIndex) {\r\n\t\treturn this.invoke('setZIndex', zIndex);\r\n\t},\r\n\r\n\t// @method getLayerId(layer: Layer): Number\r\n\t// Returns the internal ID for a layer\r\n\tgetLayerId: function (layer) {\r\n\t\treturn stamp(layer);\r\n\t}\r\n});\r\n\r\n\r\n// @factory L.layerGroup(layers?: Layer[], options?: Object)\r\n// Create a layer group, optionally given an initial set of layers and an `options` object.\r\nvar layerGroup = function (layers, options) {\r\n\treturn new LayerGroup(layers, options);\r\n};\n\n/*\r\n * @class FeatureGroup\r\n * @aka L.FeatureGroup\r\n * @inherits LayerGroup\r\n *\r\n * Extended `LayerGroup` that makes it easier to do the same thing to all its member layers:\r\n *  * [`bindPopup`](#layer-bindpopup) binds a popup to all of the layers at once (likewise with [`bindTooltip`](#layer-bindtooltip))\r\n *  * Events are propagated to the `FeatureGroup`, so if the group has an event\r\n * handler, it will handle events from any of the layers. This includes mouse events\r\n * and custom events.\r\n *  * Has `layeradd` and `layerremove` events\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * L.featureGroup([marker1, marker2, polyline])\r\n * \t.bindPopup('Hello world!')\r\n * \t.on('click', function() { alert('Clicked on a member of the group!'); })\r\n * \t.addTo(map);\r\n * ```\r\n */\r\n\r\nvar FeatureGroup = LayerGroup.extend({\r\n\r\n\taddLayer: function (layer) {\r\n\t\tif (this.hasLayer(layer)) {\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\tlayer.addEventParent(this);\r\n\r\n\t\tLayerGroup.prototype.addLayer.call(this, layer);\r\n\r\n\t\t// @event layeradd: LayerEvent\r\n\t\t// Fired when a layer is added to this `FeatureGroup`\r\n\t\treturn this.fire('layeradd', {layer: layer});\r\n\t},\r\n\r\n\tremoveLayer: function (layer) {\r\n\t\tif (!this.hasLayer(layer)) {\r\n\t\t\treturn this;\r\n\t\t}\r\n\t\tif (layer in this._layers) {\r\n\t\t\tlayer = this._layers[layer];\r\n\t\t}\r\n\r\n\t\tlayer.removeEventParent(this);\r\n\r\n\t\tLayerGroup.prototype.removeLayer.call(this, layer);\r\n\r\n\t\t// @event layerremove: LayerEvent\r\n\t\t// Fired when a layer is removed from this `FeatureGroup`\r\n\t\treturn this.fire('layerremove', {layer: layer});\r\n\t},\r\n\r\n\t// @method setStyle(style: Path options): this\r\n\t// Sets the given path options to each layer of the group that has a `setStyle` method.\r\n\tsetStyle: function (style) {\r\n\t\treturn this.invoke('setStyle', style);\r\n\t},\r\n\r\n\t// @method bringToFront(): this\r\n\t// Brings the layer group to the top of all other layers\r\n\tbringToFront: function () {\r\n\t\treturn this.invoke('bringToFront');\r\n\t},\r\n\r\n\t// @method bringToBack(): this\r\n\t// Brings the layer group to the back of all other layers\r\n\tbringToBack: function () {\r\n\t\treturn this.invoke('bringToBack');\r\n\t},\r\n\r\n\t// @method getBounds(): LatLngBounds\r\n\t// Returns the LatLngBounds of the Feature Group (created from bounds and coordinates of its children).\r\n\tgetBounds: function () {\r\n\t\tvar bounds = new LatLngBounds();\r\n\r\n\t\tfor (var id in this._layers) {\r\n\t\t\tvar layer = this._layers[id];\r\n\t\t\tbounds.extend(layer.getBounds ? layer.getBounds() : layer.getLatLng());\r\n\t\t}\r\n\t\treturn bounds;\r\n\t}\r\n});\r\n\r\n// @factory L.featureGroup(layers: Layer[])\r\n// Create a feature group, optionally given an initial set of layers.\r\nvar featureGroup = function (layers) {\r\n\treturn new FeatureGroup(layers);\r\n};\n\n/*\r\n * @class Icon\r\n * @aka L.Icon\r\n *\r\n * Represents an icon to provide when creating a marker.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * var myIcon = L.icon({\r\n *     iconUrl: 'my-icon.png',\r\n *     iconRetinaUrl: 'my-icon@2x.png',\r\n *     iconSize: [38, 95],\r\n *     iconAnchor: [22, 94],\r\n *     popupAnchor: [-3, -76],\r\n *     shadowUrl: 'my-icon-shadow.png',\r\n *     shadowRetinaUrl: 'my-icon-shadow@2x.png',\r\n *     shadowSize: [68, 95],\r\n *     shadowAnchor: [22, 94]\r\n * });\r\n *\r\n * L.marker([50.505, 30.57], {icon: myIcon}).addTo(map);\r\n * ```\r\n *\r\n * `L.Icon.Default` extends `L.Icon` and is the blue icon Leaflet uses for markers by default.\r\n *\r\n */\r\n\r\nvar Icon = Class.extend({\r\n\r\n\t/* @section\r\n\t * @aka Icon options\r\n\t *\r\n\t * @option iconUrl: String = null\r\n\t * **(required)** The URL to the icon image (absolute or relative to your script path).\r\n\t *\r\n\t * @option iconRetinaUrl: String = null\r\n\t * The URL to a retina sized version of the icon image (absolute or relative to your\r\n\t * script path). Used for Retina screen devices.\r\n\t *\r\n\t * @option iconSize: Point = null\r\n\t * Size of the icon image in pixels.\r\n\t *\r\n\t * @option iconAnchor: Point = null\r\n\t * The coordinates of the \"tip\" of the icon (relative to its top left corner). The icon\r\n\t * will be aligned so that this point is at the marker's geographical location. Centered\r\n\t * by default if size is specified, also can be set in CSS with negative margins.\r\n\t *\r\n\t * @option popupAnchor: Point = [0, 0]\r\n\t * The coordinates of the point from which popups will \"open\", relative to the icon anchor.\r\n\t *\r\n\t * @option tooltipAnchor: Point = [0, 0]\r\n\t * The coordinates of the point from which tooltips will \"open\", relative to the icon anchor.\r\n\t *\r\n\t * @option shadowUrl: String = null\r\n\t * The URL to the icon shadow image. If not specified, no shadow image will be created.\r\n\t *\r\n\t * @option shadowRetinaUrl: String = null\r\n\t *\r\n\t * @option shadowSize: Point = null\r\n\t * Size of the shadow image in pixels.\r\n\t *\r\n\t * @option shadowAnchor: Point = null\r\n\t * The coordinates of the \"tip\" of the shadow (relative to its top left corner) (the same\r\n\t * as iconAnchor if not specified).\r\n\t *\r\n\t * @option className: String = ''\r\n\t * A custom class name to assign to both icon and shadow images. Empty by default.\r\n\t */\r\n\r\n\toptions: {\r\n\t\tpopupAnchor: [0, 0],\r\n\t\ttooltipAnchor: [0, 0]\r\n\t},\r\n\r\n\tinitialize: function (options) {\r\n\t\tsetOptions(this, options);\r\n\t},\r\n\r\n\t// @method createIcon(oldIcon?: HTMLElement): HTMLElement\r\n\t// Called internally when the icon has to be shown, returns a `<img>` HTML element\r\n\t// styled according to the options.\r\n\tcreateIcon: function (oldIcon) {\r\n\t\treturn this._createIcon('icon', oldIcon);\r\n\t},\r\n\r\n\t// @method createShadow(oldIcon?: HTMLElement): HTMLElement\r\n\t// As `createIcon`, but for the shadow beneath it.\r\n\tcreateShadow: function (oldIcon) {\r\n\t\treturn this._createIcon('shadow', oldIcon);\r\n\t},\r\n\r\n\t_createIcon: function (name, oldIcon) {\r\n\t\tvar src = this._getIconUrl(name);\r\n\r\n\t\tif (!src) {\r\n\t\t\tif (name === 'icon') {\r\n\t\t\t\tthrow new Error('iconUrl not set in Icon options (see the docs).');\r\n\t\t\t}\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tvar img = this._createImg(src, oldIcon && oldIcon.tagName === 'IMG' ? oldIcon : null);\r\n\t\tthis._setIconStyles(img, name);\r\n\r\n\t\treturn img;\r\n\t},\r\n\r\n\t_setIconStyles: function (img, name) {\r\n\t\tvar options = this.options;\r\n\t\tvar sizeOption = options[name + 'Size'];\r\n\r\n\t\tif (typeof sizeOption === 'number') {\r\n\t\t\tsizeOption = [sizeOption, sizeOption];\r\n\t\t}\r\n\r\n\t\tvar size = toPoint(sizeOption),\r\n\t\t    anchor = toPoint(name === 'shadow' && options.shadowAnchor || options.iconAnchor ||\r\n\t\t            size && size.divideBy(2, true));\r\n\r\n\t\timg.className = 'leaflet-marker-' + name + ' ' + (options.className || '');\r\n\r\n\t\tif (anchor) {\r\n\t\t\timg.style.marginLeft = (-anchor.x) + 'px';\r\n\t\t\timg.style.marginTop  = (-anchor.y) + 'px';\r\n\t\t}\r\n\r\n\t\tif (size) {\r\n\t\t\timg.style.width  = size.x + 'px';\r\n\t\t\timg.style.height = size.y + 'px';\r\n\t\t}\r\n\t},\r\n\r\n\t_createImg: function (src, el) {\r\n\t\tel = el || document.createElement('img');\r\n\t\tel.src = src;\r\n\t\treturn el;\r\n\t},\r\n\r\n\t_getIconUrl: function (name) {\r\n\t\treturn retina && this.options[name + 'RetinaUrl'] || this.options[name + 'Url'];\r\n\t}\r\n});\r\n\r\n\r\n// @factory L.icon(options: Icon options)\r\n// Creates an icon instance with the given options.\r\nfunction icon(options) {\r\n\treturn new Icon(options);\r\n}\n\n/*\n * @miniclass Icon.Default (Icon)\n * @aka L.Icon.Default\n * @section\n *\n * A trivial subclass of `Icon`, represents the icon to use in `Marker`s when\n * no icon is specified. Points to the blue marker image distributed with Leaflet\n * releases.\n *\n * In order to customize the default icon, just change the properties of `L.Icon.Default.prototype.options`\n * (which is a set of `Icon options`).\n *\n * If you want to _completely_ replace the default icon, override the\n * `L.Marker.prototype.options.icon` with your own icon instead.\n */\n\nvar IconDefault = Icon.extend({\n\n\toptions: {\n\t\ticonUrl:       'marker-icon.png',\n\t\ticonRetinaUrl: 'marker-icon-2x.png',\n\t\tshadowUrl:     'marker-shadow.png',\n\t\ticonSize:    [25, 41],\n\t\ticonAnchor:  [12, 41],\n\t\tpopupAnchor: [1, -34],\n\t\ttooltipAnchor: [16, -28],\n\t\tshadowSize:  [41, 41]\n\t},\n\n\t_getIconUrl: function (name) {\n\t\tif (!IconDefault.imagePath) {\t// Deprecated, backwards-compatibility only\n\t\t\tIconDefault.imagePath = this._detectIconPath();\n\t\t}\n\n\t\t// @option imagePath: String\n\t\t// `Icon.Default` will try to auto-detect the location of the\n\t\t// blue icon images. If you are placing these images in a non-standard\n\t\t// way, set this option to point to the right path.\n\t\treturn (this.options.imagePath || IconDefault.imagePath) + Icon.prototype._getIconUrl.call(this, name);\n\t},\n\n\t_detectIconPath: function () {\n\t\tvar el = create$1('div',  'leaflet-default-icon-path', document.body);\n\t\tvar path = getStyle(el, 'background-image') ||\n\t\t           getStyle(el, 'backgroundImage');\t// IE8\n\n\t\tdocument.body.removeChild(el);\n\n\t\tif (path === null || path.indexOf('url') !== 0) {\n\t\t\tpath = '';\n\t\t} else {\n\t\t\tpath = path.replace(/^url\\([\"']?/, '').replace(/marker-icon\\.png[\"']?\\)$/, '');\n\t\t}\n\n\t\treturn path;\n\t}\n});\n\n/*\n * L.Handler.MarkerDrag is used internally by L.Marker to make the markers draggable.\n */\n\n\n/* @namespace Marker\n * @section Interaction handlers\n *\n * Interaction handlers are properties of a marker instance that allow you to control interaction behavior in runtime, enabling or disabling certain features such as dragging (see `Handler` methods). Example:\n *\n * ```js\n * marker.dragging.disable();\n * ```\n *\n * @property dragging: Handler\n * Marker dragging handler (by both mouse and touch). Only valid when the marker is on the map (Otherwise set [`marker.options.draggable`](#marker-draggable)).\n */\n\nvar MarkerDrag = Handler.extend({\n\tinitialize: function (marker) {\n\t\tthis._marker = marker;\n\t},\n\n\taddHooks: function () {\n\t\tvar icon = this._marker._icon;\n\n\t\tif (!this._draggable) {\n\t\t\tthis._draggable = new Draggable(icon, icon, true);\n\t\t}\n\n\t\tthis._draggable.on({\n\t\t\tdragstart: this._onDragStart,\n\t\t\tpredrag: this._onPreDrag,\n\t\t\tdrag: this._onDrag,\n\t\t\tdragend: this._onDragEnd\n\t\t}, this).enable();\n\n\t\taddClass(icon, 'leaflet-marker-draggable');\n\t},\n\n\tremoveHooks: function () {\n\t\tthis._draggable.off({\n\t\t\tdragstart: this._onDragStart,\n\t\t\tpredrag: this._onPreDrag,\n\t\t\tdrag: this._onDrag,\n\t\t\tdragend: this._onDragEnd\n\t\t}, this).disable();\n\n\t\tif (this._marker._icon) {\n\t\t\tremoveClass(this._marker._icon, 'leaflet-marker-draggable');\n\t\t}\n\t},\n\n\tmoved: function () {\n\t\treturn this._draggable && this._draggable._moved;\n\t},\n\n\t_adjustPan: function (e) {\n\t\tvar marker = this._marker,\n\t\t    map = marker._map,\n\t\t    speed = this._marker.options.autoPanSpeed,\n\t\t    padding = this._marker.options.autoPanPadding,\n\t\t    iconPos = getPosition(marker._icon),\n\t\t    bounds = map.getPixelBounds(),\n\t\t    origin = map.getPixelOrigin();\n\n\t\tvar panBounds = toBounds(\n\t\t\tbounds.min._subtract(origin).add(padding),\n\t\t\tbounds.max._subtract(origin).subtract(padding)\n\t\t);\n\n\t\tif (!panBounds.contains(iconPos)) {\n\t\t\t// Compute incremental movement\n\t\t\tvar movement = toPoint(\n\t\t\t\t(Math.max(panBounds.max.x, iconPos.x) - panBounds.max.x) / (bounds.max.x - panBounds.max.x) -\n\t\t\t\t(Math.min(panBounds.min.x, iconPos.x) - panBounds.min.x) / (bounds.min.x - panBounds.min.x),\n\n\t\t\t\t(Math.max(panBounds.max.y, iconPos.y) - panBounds.max.y) / (bounds.max.y - panBounds.max.y) -\n\t\t\t\t(Math.min(panBounds.min.y, iconPos.y) - panBounds.min.y) / (bounds.min.y - panBounds.min.y)\n\t\t\t).multiplyBy(speed);\n\n\t\t\tmap.panBy(movement, {animate: false});\n\n\t\t\tthis._draggable._newPos._add(movement);\n\t\t\tthis._draggable._startPos._add(movement);\n\n\t\t\tsetPosition(marker._icon, this._draggable._newPos);\n\t\t\tthis._onDrag(e);\n\n\t\t\tthis._panRequest = requestAnimFrame(this._adjustPan.bind(this, e));\n\t\t}\n\t},\n\n\t_onDragStart: function () {\n\t\t// @section Dragging events\n\t\t// @event dragstart: Event\n\t\t// Fired when the user starts dragging the marker.\n\n\t\t// @event movestart: Event\n\t\t// Fired when the marker starts moving (because of dragging).\n\n\t\tthis._oldLatLng = this._marker.getLatLng();\n\t\tthis._marker\n\t\t    .closePopup()\n\t\t    .fire('movestart')\n\t\t    .fire('dragstart');\n\t},\n\n\t_onPreDrag: function (e) {\n\t\tif (this._marker.options.autoPan) {\n\t\t\tcancelAnimFrame(this._panRequest);\n\t\t\tthis._panRequest = requestAnimFrame(this._adjustPan.bind(this, e));\n\t\t}\n\t},\n\n\t_onDrag: function (e) {\n\t\tvar marker = this._marker,\n\t\t    shadow = marker._shadow,\n\t\t    iconPos = getPosition(marker._icon),\n\t\t    latlng = marker._map.layerPointToLatLng(iconPos);\n\n\t\t// update shadow position\n\t\tif (shadow) {\n\t\t\tsetPosition(shadow, iconPos);\n\t\t}\n\n\t\tmarker._latlng = latlng;\n\t\te.latlng = latlng;\n\t\te.oldLatLng = this._oldLatLng;\n\n\t\t// @event drag: Event\n\t\t// Fired repeatedly while the user drags the marker.\n\t\tmarker\n\t\t    .fire('move', e)\n\t\t    .fire('drag', e);\n\t},\n\n\t_onDragEnd: function (e) {\n\t\t// @event dragend: DragEndEvent\n\t\t// Fired when the user stops dragging the marker.\n\n\t\t cancelAnimFrame(this._panRequest);\n\n\t\t// @event moveend: Event\n\t\t// Fired when the marker stops moving (because of dragging).\n\t\tdelete this._oldLatLng;\n\t\tthis._marker\n\t\t    .fire('moveend')\n\t\t    .fire('dragend', e);\n\t}\n});\n\n/*\r\n * @class Marker\r\n * @inherits Interactive layer\r\n * @aka L.Marker\r\n * L.Marker is used to display clickable/draggable icons on the map. Extends `Layer`.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * L.marker([50.5, 30.5]).addTo(map);\r\n * ```\r\n */\r\n\r\nvar Marker = Layer.extend({\r\n\r\n\t// @section\r\n\t// @aka Marker options\r\n\toptions: {\r\n\t\t// @option icon: Icon = *\r\n\t\t// Icon instance to use for rendering the marker.\r\n\t\t// See [Icon documentation](#L.Icon) for details on how to customize the marker icon.\r\n\t\t// If not specified, a common instance of `L.Icon.Default` is used.\r\n\t\ticon: new IconDefault(),\r\n\r\n\t\t// Option inherited from \"Interactive layer\" abstract class\r\n\t\tinteractive: true,\r\n\r\n\t\t// @option keyboard: Boolean = true\r\n\t\t// Whether the marker can be tabbed to with a keyboard and clicked by pressing enter.\r\n\t\tkeyboard: true,\r\n\r\n\t\t// @option title: String = ''\r\n\t\t// Text for the browser tooltip that appear on marker hover (no tooltip by default).\r\n\t\ttitle: '',\r\n\r\n\t\t// @option alt: String = ''\r\n\t\t// Text for the `alt` attribute of the icon image (useful for accessibility).\r\n\t\talt: '',\r\n\r\n\t\t// @option zIndexOffset: Number = 0\r\n\t\t// By default, marker images zIndex is set automatically based on its latitude. Use this option if you want to put the marker on top of all others (or below), specifying a high value like `1000` (or high negative value, respectively).\r\n\t\tzIndexOffset: 0,\r\n\r\n\t\t// @option opacity: Number = 1.0\r\n\t\t// The opacity of the marker.\r\n\t\topacity: 1,\r\n\r\n\t\t// @option riseOnHover: Boolean = false\r\n\t\t// If `true`, the marker will get on top of others when you hover the mouse over it.\r\n\t\triseOnHover: false,\r\n\r\n\t\t// @option riseOffset: Number = 250\r\n\t\t// The z-index offset used for the `riseOnHover` feature.\r\n\t\triseOffset: 250,\r\n\r\n\t\t// @option pane: String = 'markerPane'\r\n\t\t// `Map pane` where the markers icon will be added.\r\n\t\tpane: 'markerPane',\r\n\r\n\t\t// @option pane: String = 'shadowPane'\r\n\t\t// `Map pane` where the markers shadow will be added.\r\n\t\tshadowPane: 'shadowPane',\r\n\r\n\t\t// @option bubblingMouseEvents: Boolean = false\r\n\t\t// When `true`, a mouse event on this marker will trigger the same event on the map\r\n\t\t// (unless [`L.DomEvent.stopPropagation`](#domevent-stoppropagation) is used).\r\n\t\tbubblingMouseEvents: false,\r\n\r\n\t\t// @section Draggable marker options\r\n\t\t// @option draggable: Boolean = false\r\n\t\t// Whether the marker is draggable with mouse/touch or not.\r\n\t\tdraggable: false,\r\n\r\n\t\t// @option autoPan: Boolean = false\r\n\t\t// Whether to pan the map when dragging this marker near its edge or not.\r\n\t\tautoPan: false,\r\n\r\n\t\t// @option autoPanPadding: Point = Point(50, 50)\r\n\t\t// Distance (in pixels to the left/right and to the top/bottom) of the\r\n\t\t// map edge to start panning the map.\r\n\t\tautoPanPadding: [50, 50],\r\n\r\n\t\t// @option autoPanSpeed: Number = 10\r\n\t\t// Number of pixels the map should pan by.\r\n\t\tautoPanSpeed: 10\r\n\t},\r\n\r\n\t/* @section\r\n\t *\r\n\t * In addition to [shared layer methods](#Layer) like `addTo()` and `remove()` and [popup methods](#Popup) like bindPopup() you can also use the following methods:\r\n\t */\r\n\r\n\tinitialize: function (latlng, options) {\r\n\t\tsetOptions(this, options);\r\n\t\tthis._latlng = toLatLng(latlng);\r\n\t},\r\n\r\n\tonAdd: function (map) {\r\n\t\tthis._zoomAnimated = this._zoomAnimated && map.options.markerZoomAnimation;\r\n\r\n\t\tif (this._zoomAnimated) {\r\n\t\t\tmap.on('zoomanim', this._animateZoom, this);\r\n\t\t}\r\n\r\n\t\tthis._initIcon();\r\n\t\tthis.update();\r\n\t},\r\n\r\n\tonRemove: function (map) {\r\n\t\tif (this.dragging && this.dragging.enabled()) {\r\n\t\t\tthis.options.draggable = true;\r\n\t\t\tthis.dragging.removeHooks();\r\n\t\t}\r\n\t\tdelete this.dragging;\r\n\r\n\t\tif (this._zoomAnimated) {\r\n\t\t\tmap.off('zoomanim', this._animateZoom, this);\r\n\t\t}\r\n\r\n\t\tthis._removeIcon();\r\n\t\tthis._removeShadow();\r\n\t},\r\n\r\n\tgetEvents: function () {\r\n\t\treturn {\r\n\t\t\tzoom: this.update,\r\n\t\t\tviewreset: this.update\r\n\t\t};\r\n\t},\r\n\r\n\t// @method getLatLng: LatLng\r\n\t// Returns the current geographical position of the marker.\r\n\tgetLatLng: function () {\r\n\t\treturn this._latlng;\r\n\t},\r\n\r\n\t// @method setLatLng(latlng: LatLng): this\r\n\t// Changes the marker position to the given point.\r\n\tsetLatLng: function (latlng) {\r\n\t\tvar oldLatLng = this._latlng;\r\n\t\tthis._latlng = toLatLng(latlng);\r\n\t\tthis.update();\r\n\r\n\t\t// @event move: Event\r\n\t\t// Fired when the marker is moved via [`setLatLng`](#marker-setlatlng) or by [dragging](#marker-dragging). Old and new coordinates are included in event arguments as `oldLatLng`, `latlng`.\r\n\t\treturn this.fire('move', {oldLatLng: oldLatLng, latlng: this._latlng});\r\n\t},\r\n\r\n\t// @method setZIndexOffset(offset: Number): this\r\n\t// Changes the [zIndex offset](#marker-zindexoffset) of the marker.\r\n\tsetZIndexOffset: function (offset) {\r\n\t\tthis.options.zIndexOffset = offset;\r\n\t\treturn this.update();\r\n\t},\r\n\r\n\t// @method getIcon: Icon\r\n\t// Returns the current icon used by the marker\r\n\tgetIcon: function () {\r\n\t\treturn this.options.icon;\r\n\t},\r\n\r\n\t// @method setIcon(icon: Icon): this\r\n\t// Changes the marker icon.\r\n\tsetIcon: function (icon) {\r\n\r\n\t\tthis.options.icon = icon;\r\n\r\n\t\tif (this._map) {\r\n\t\t\tthis._initIcon();\r\n\t\t\tthis.update();\r\n\t\t}\r\n\r\n\t\tif (this._popup) {\r\n\t\t\tthis.bindPopup(this._popup, this._popup.options);\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\tgetElement: function () {\r\n\t\treturn this._icon;\r\n\t},\r\n\r\n\tupdate: function () {\r\n\r\n\t\tif (this._icon && this._map) {\r\n\t\t\tvar pos = this._map.latLngToLayerPoint(this._latlng).round();\r\n\t\t\tthis._setPos(pos);\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t_initIcon: function () {\r\n\t\tvar options = this.options,\r\n\t\t    classToAdd = 'leaflet-zoom-' + (this._zoomAnimated ? 'animated' : 'hide');\r\n\r\n\t\tvar icon = options.icon.createIcon(this._icon),\r\n\t\t    addIcon = false;\r\n\r\n\t\t// if we're not reusing the icon, remove the old one and init new one\r\n\t\tif (icon !== this._icon) {\r\n\t\t\tif (this._icon) {\r\n\t\t\t\tthis._removeIcon();\r\n\t\t\t}\r\n\t\t\taddIcon = true;\r\n\r\n\t\t\tif (options.title) {\r\n\t\t\t\ticon.title = options.title;\r\n\t\t\t}\r\n\r\n\t\t\tif (icon.tagName === 'IMG') {\r\n\t\t\t\ticon.alt = options.alt || '';\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\taddClass(icon, classToAdd);\r\n\r\n\t\tif (options.keyboard) {\r\n\t\t\ticon.tabIndex = '0';\r\n\t\t}\r\n\r\n\t\tthis._icon = icon;\r\n\r\n\t\tif (options.riseOnHover) {\r\n\t\t\tthis.on({\r\n\t\t\t\tmouseover: this._bringToFront,\r\n\t\t\t\tmouseout: this._resetZIndex\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tvar newShadow = options.icon.createShadow(this._shadow),\r\n\t\t    addShadow = false;\r\n\r\n\t\tif (newShadow !== this._shadow) {\r\n\t\t\tthis._removeShadow();\r\n\t\t\taddShadow = true;\r\n\t\t}\r\n\r\n\t\tif (newShadow) {\r\n\t\t\taddClass(newShadow, classToAdd);\r\n\t\t\tnewShadow.alt = '';\r\n\t\t}\r\n\t\tthis._shadow = newShadow;\r\n\r\n\r\n\t\tif (options.opacity < 1) {\r\n\t\t\tthis._updateOpacity();\r\n\t\t}\r\n\r\n\r\n\t\tif (addIcon) {\r\n\t\t\tthis.getPane().appendChild(this._icon);\r\n\t\t}\r\n\t\tthis._initInteraction();\r\n\t\tif (newShadow && addShadow) {\r\n\t\t\tthis.getPane(options.shadowPane).appendChild(this._shadow);\r\n\t\t}\r\n\t},\r\n\r\n\t_removeIcon: function () {\r\n\t\tif (this.options.riseOnHover) {\r\n\t\t\tthis.off({\r\n\t\t\t\tmouseover: this._bringToFront,\r\n\t\t\t\tmouseout: this._resetZIndex\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tremove(this._icon);\r\n\t\tthis.removeInteractiveTarget(this._icon);\r\n\r\n\t\tthis._icon = null;\r\n\t},\r\n\r\n\t_removeShadow: function () {\r\n\t\tif (this._shadow) {\r\n\t\t\tremove(this._shadow);\r\n\t\t}\r\n\t\tthis._shadow = null;\r\n\t},\r\n\r\n\t_setPos: function (pos) {\r\n\r\n\t\tif (this._icon) {\r\n\t\t\tsetPosition(this._icon, pos);\r\n\t\t}\r\n\r\n\t\tif (this._shadow) {\r\n\t\t\tsetPosition(this._shadow, pos);\r\n\t\t}\r\n\r\n\t\tthis._zIndex = pos.y + this.options.zIndexOffset;\r\n\r\n\t\tthis._resetZIndex();\r\n\t},\r\n\r\n\t_updateZIndex: function (offset) {\r\n\t\tif (this._icon) {\r\n\t\t\tthis._icon.style.zIndex = this._zIndex + offset;\r\n\t\t}\r\n\t},\r\n\r\n\t_animateZoom: function (opt) {\r\n\t\tvar pos = this._map._latLngToNewLayerPoint(this._latlng, opt.zoom, opt.center).round();\r\n\r\n\t\tthis._setPos(pos);\r\n\t},\r\n\r\n\t_initInteraction: function () {\r\n\r\n\t\tif (!this.options.interactive) { return; }\r\n\r\n\t\taddClass(this._icon, 'leaflet-interactive');\r\n\r\n\t\tthis.addInteractiveTarget(this._icon);\r\n\r\n\t\tif (MarkerDrag) {\r\n\t\t\tvar draggable = this.options.draggable;\r\n\t\t\tif (this.dragging) {\r\n\t\t\t\tdraggable = this.dragging.enabled();\r\n\t\t\t\tthis.dragging.disable();\r\n\t\t\t}\r\n\r\n\t\t\tthis.dragging = new MarkerDrag(this);\r\n\r\n\t\t\tif (draggable) {\r\n\t\t\t\tthis.dragging.enable();\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t// @method setOpacity(opacity: Number): this\r\n\t// Changes the opacity of the marker.\r\n\tsetOpacity: function (opacity) {\r\n\t\tthis.options.opacity = opacity;\r\n\t\tif (this._map) {\r\n\t\t\tthis._updateOpacity();\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t_updateOpacity: function () {\r\n\t\tvar opacity = this.options.opacity;\r\n\r\n\t\tif (this._icon) {\r\n\t\t\tsetOpacity(this._icon, opacity);\r\n\t\t}\r\n\r\n\t\tif (this._shadow) {\r\n\t\t\tsetOpacity(this._shadow, opacity);\r\n\t\t}\r\n\t},\r\n\r\n\t_bringToFront: function () {\r\n\t\tthis._updateZIndex(this.options.riseOffset);\r\n\t},\r\n\r\n\t_resetZIndex: function () {\r\n\t\tthis._updateZIndex(0);\r\n\t},\r\n\r\n\t_getPopupAnchor: function () {\r\n\t\treturn this.options.icon.options.popupAnchor;\r\n\t},\r\n\r\n\t_getTooltipAnchor: function () {\r\n\t\treturn this.options.icon.options.tooltipAnchor;\r\n\t}\r\n});\r\n\r\n\r\n// factory L.marker(latlng: LatLng, options? : Marker options)\r\n\r\n// @factory L.marker(latlng: LatLng, options? : Marker options)\r\n// Instantiates a Marker object given a geographical point and optionally an options object.\r\nfunction marker(latlng, options) {\r\n\treturn new Marker(latlng, options);\r\n}\n\n/*\n * @class Path\n * @aka L.Path\n * @inherits Interactive layer\n *\n * An abstract class that contains options and constants shared between vector\n * overlays (Polygon, Polyline, Circle). Do not use it directly. Extends `Layer`.\n */\n\nvar Path = Layer.extend({\n\n\t// @section\n\t// @aka Path options\n\toptions: {\n\t\t// @option stroke: Boolean = true\n\t\t// Whether to draw stroke along the path. Set it to `false` to disable borders on polygons or circles.\n\t\tstroke: true,\n\n\t\t// @option color: String = '#3388ff'\n\t\t// Stroke color\n\t\tcolor: '#3388ff',\n\n\t\t// @option weight: Number = 3\n\t\t// Stroke width in pixels\n\t\tweight: 3,\n\n\t\t// @option opacity: Number = 1.0\n\t\t// Stroke opacity\n\t\topacity: 1,\n\n\t\t// @option lineCap: String= 'round'\n\t\t// A string that defines [shape to be used at the end](https://developer.mozilla.org/docs/Web/SVG/Attribute/stroke-linecap) of the stroke.\n\t\tlineCap: 'round',\n\n\t\t// @option lineJoin: String = 'round'\n\t\t// A string that defines [shape to be used at the corners](https://developer.mozilla.org/docs/Web/SVG/Attribute/stroke-linejoin) of the stroke.\n\t\tlineJoin: 'round',\n\n\t\t// @option dashArray: String = null\n\t\t// A string that defines the stroke [dash pattern](https://developer.mozilla.org/docs/Web/SVG/Attribute/stroke-dasharray). Doesn't work on `Canvas`-powered layers in [some old browsers](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/setLineDash#Browser_compatibility).\n\t\tdashArray: null,\n\n\t\t// @option dashOffset: String = null\n\t\t// A string that defines the [distance into the dash pattern to start the dash](https://developer.mozilla.org/docs/Web/SVG/Attribute/stroke-dashoffset). Doesn't work on `Canvas`-powered layers in [some old browsers](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/setLineDash#Browser_compatibility).\n\t\tdashOffset: null,\n\n\t\t// @option fill: Boolean = depends\n\t\t// Whether to fill the path with color. Set it to `false` to disable filling on polygons or circles.\n\t\tfill: false,\n\n\t\t// @option fillColor: String = *\n\t\t// Fill color. Defaults to the value of the [`color`](#path-color) option\n\t\tfillColor: null,\n\n\t\t// @option fillOpacity: Number = 0.2\n\t\t// Fill opacity.\n\t\tfillOpacity: 0.2,\n\n\t\t// @option fillRule: String = 'evenodd'\n\t\t// A string that defines [how the inside of a shape](https://developer.mozilla.org/docs/Web/SVG/Attribute/fill-rule) is determined.\n\t\tfillRule: 'evenodd',\n\n\t\t// className: '',\n\n\t\t// Option inherited from \"Interactive layer\" abstract class\n\t\tinteractive: true,\n\n\t\t// @option bubblingMouseEvents: Boolean = true\n\t\t// When `true`, a mouse event on this path will trigger the same event on the map\n\t\t// (unless [`L.DomEvent.stopPropagation`](#domevent-stoppropagation) is used).\n\t\tbubblingMouseEvents: true\n\t},\n\n\tbeforeAdd: function (map) {\n\t\t// Renderer is set here because we need to call renderer.getEvents\n\t\t// before this.getEvents.\n\t\tthis._renderer = map.getRenderer(this);\n\t},\n\n\tonAdd: function () {\n\t\tthis._renderer._initPath(this);\n\t\tthis._reset();\n\t\tthis._renderer._addPath(this);\n\t},\n\n\tonRemove: function () {\n\t\tthis._renderer._removePath(this);\n\t},\n\n\t// @method redraw(): this\n\t// Redraws the layer. Sometimes useful after you changed the coordinates that the path uses.\n\tredraw: function () {\n\t\tif (this._map) {\n\t\t\tthis._renderer._updatePath(this);\n\t\t}\n\t\treturn this;\n\t},\n\n\t// @method setStyle(style: Path options): this\n\t// Changes the appearance of a Path based on the options in the `Path options` object.\n\tsetStyle: function (style) {\n\t\tsetOptions(this, style);\n\t\tif (this._renderer) {\n\t\t\tthis._renderer._updateStyle(this);\n\t\t\tif (this.options.stroke && style && style.hasOwnProperty('weight')) {\n\t\t\t\tthis._updateBounds();\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t},\n\n\t// @method bringToFront(): this\n\t// Brings the layer to the top of all path layers.\n\tbringToFront: function () {\n\t\tif (this._renderer) {\n\t\t\tthis._renderer._bringToFront(this);\n\t\t}\n\t\treturn this;\n\t},\n\n\t// @method bringToBack(): this\n\t// Brings the layer to the bottom of all path layers.\n\tbringToBack: function () {\n\t\tif (this._renderer) {\n\t\t\tthis._renderer._bringToBack(this);\n\t\t}\n\t\treturn this;\n\t},\n\n\tgetElement: function () {\n\t\treturn this._path;\n\t},\n\n\t_reset: function () {\n\t\t// defined in child classes\n\t\tthis._project();\n\t\tthis._update();\n\t},\n\n\t_clickTolerance: function () {\n\t\t// used when doing hit detection for Canvas layers\n\t\treturn (this.options.stroke ? this.options.weight / 2 : 0) + this._renderer.options.tolerance;\n\t}\n});\n\n/*\n * @class CircleMarker\n * @aka L.CircleMarker\n * @inherits Path\n *\n * A circle of a fixed size with radius specified in pixels. Extends `Path`.\n */\n\nvar CircleMarker = Path.extend({\n\n\t// @section\n\t// @aka CircleMarker options\n\toptions: {\n\t\tfill: true,\n\n\t\t// @option radius: Number = 10\n\t\t// Radius of the circle marker, in pixels\n\t\tradius: 10\n\t},\n\n\tinitialize: function (latlng, options) {\n\t\tsetOptions(this, options);\n\t\tthis._latlng = toLatLng(latlng);\n\t\tthis._radius = this.options.radius;\n\t},\n\n\t// @method setLatLng(latLng: LatLng): this\n\t// Sets the position of a circle marker to a new location.\n\tsetLatLng: function (latlng) {\n\t\tvar oldLatLng = this._latlng;\n\t\tthis._latlng = toLatLng(latlng);\n\t\tthis.redraw();\n\n\t\t// @event move: Event\n\t\t// Fired when the marker is moved via [`setLatLng`](#circlemarker-setlatlng). Old and new coordinates are included in event arguments as `oldLatLng`, `latlng`.\n\t\treturn this.fire('move', {oldLatLng: oldLatLng, latlng: this._latlng});\n\t},\n\n\t// @method getLatLng(): LatLng\n\t// Returns the current geographical position of the circle marker\n\tgetLatLng: function () {\n\t\treturn this._latlng;\n\t},\n\n\t// @method setRadius(radius: Number): this\n\t// Sets the radius of a circle marker. Units are in pixels.\n\tsetRadius: function (radius) {\n\t\tthis.options.radius = this._radius = radius;\n\t\treturn this.redraw();\n\t},\n\n\t// @method getRadius(): Number\n\t// Returns the current radius of the circle\n\tgetRadius: function () {\n\t\treturn this._radius;\n\t},\n\n\tsetStyle : function (options) {\n\t\tvar radius = options && options.radius || this._radius;\n\t\tPath.prototype.setStyle.call(this, options);\n\t\tthis.setRadius(radius);\n\t\treturn this;\n\t},\n\n\t_project: function () {\n\t\tthis._point = this._map.latLngToLayerPoint(this._latlng);\n\t\tthis._updateBounds();\n\t},\n\n\t_updateBounds: function () {\n\t\tvar r = this._radius,\n\t\t    r2 = this._radiusY || r,\n\t\t    w = this._clickTolerance(),\n\t\t    p = [r + w, r2 + w];\n\t\tthis._pxBounds = new Bounds(this._point.subtract(p), this._point.add(p));\n\t},\n\n\t_update: function () {\n\t\tif (this._map) {\n\t\t\tthis._updatePath();\n\t\t}\n\t},\n\n\t_updatePath: function () {\n\t\tthis._renderer._updateCircle(this);\n\t},\n\n\t_empty: function () {\n\t\treturn this._radius && !this._renderer._bounds.intersects(this._pxBounds);\n\t},\n\n\t// Needed by the `Canvas` renderer for interactivity\n\t_containsPoint: function (p) {\n\t\treturn p.distanceTo(this._point) <= this._radius + this._clickTolerance();\n\t}\n});\n\n\n// @factory L.circleMarker(latlng: LatLng, options?: CircleMarker options)\n// Instantiates a circle marker object given a geographical point, and an optional options object.\nfunction circleMarker(latlng, options) {\n\treturn new CircleMarker(latlng, options);\n}\n\n/*\n * @class Circle\n * @aka L.Circle\n * @inherits CircleMarker\n *\n * A class for drawing circle overlays on a map. Extends `CircleMarker`.\n *\n * It's an approximation and starts to diverge from a real circle closer to poles (due to projection distortion).\n *\n * @example\n *\n * ```js\n * L.circle([50.5, 30.5], {radius: 200}).addTo(map);\n * ```\n */\n\nvar Circle = CircleMarker.extend({\n\n\tinitialize: function (latlng, options, legacyOptions) {\n\t\tif (typeof options === 'number') {\n\t\t\t// Backwards compatibility with 0.7.x factory (latlng, radius, options?)\n\t\t\toptions = extend({}, legacyOptions, {radius: options});\n\t\t}\n\t\tsetOptions(this, options);\n\t\tthis._latlng = toLatLng(latlng);\n\n\t\tif (isNaN(this.options.radius)) { throw new Error('Circle radius cannot be NaN'); }\n\n\t\t// @section\n\t\t// @aka Circle options\n\t\t// @option radius: Number; Radius of the circle, in meters.\n\t\tthis._mRadius = this.options.radius;\n\t},\n\n\t// @method setRadius(radius: Number): this\n\t// Sets the radius of a circle. Units are in meters.\n\tsetRadius: function (radius) {\n\t\tthis._mRadius = radius;\n\t\treturn this.redraw();\n\t},\n\n\t// @method getRadius(): Number\n\t// Returns the current radius of a circle. Units are in meters.\n\tgetRadius: function () {\n\t\treturn this._mRadius;\n\t},\n\n\t// @method getBounds(): LatLngBounds\n\t// Returns the `LatLngBounds` of the path.\n\tgetBounds: function () {\n\t\tvar half = [this._radius, this._radiusY || this._radius];\n\n\t\treturn new LatLngBounds(\n\t\t\tthis._map.layerPointToLatLng(this._point.subtract(half)),\n\t\t\tthis._map.layerPointToLatLng(this._point.add(half)));\n\t},\n\n\tsetStyle: Path.prototype.setStyle,\n\n\t_project: function () {\n\n\t\tvar lng = this._latlng.lng,\n\t\t    lat = this._latlng.lat,\n\t\t    map = this._map,\n\t\t    crs = map.options.crs;\n\n\t\tif (crs.distance === Earth.distance) {\n\t\t\tvar d = Math.PI / 180,\n\t\t\t    latR = (this._mRadius / Earth.R) / d,\n\t\t\t    top = map.project([lat + latR, lng]),\n\t\t\t    bottom = map.project([lat - latR, lng]),\n\t\t\t    p = top.add(bottom).divideBy(2),\n\t\t\t    lat2 = map.unproject(p).lat,\n\t\t\t    lngR = Math.acos((Math.cos(latR * d) - Math.sin(lat * d) * Math.sin(lat2 * d)) /\n\t\t\t            (Math.cos(lat * d) * Math.cos(lat2 * d))) / d;\n\n\t\t\tif (isNaN(lngR) || lngR === 0) {\n\t\t\t\tlngR = latR / Math.cos(Math.PI / 180 * lat); // Fallback for edge case, #2425\n\t\t\t}\n\n\t\t\tthis._point = p.subtract(map.getPixelOrigin());\n\t\t\tthis._radius = isNaN(lngR) ? 0 : p.x - map.project([lat2, lng - lngR]).x;\n\t\t\tthis._radiusY = p.y - top.y;\n\n\t\t} else {\n\t\t\tvar latlng2 = crs.unproject(crs.project(this._latlng).subtract([this._mRadius, 0]));\n\n\t\t\tthis._point = map.latLngToLayerPoint(this._latlng);\n\t\t\tthis._radius = this._point.x - map.latLngToLayerPoint(latlng2).x;\n\t\t}\n\n\t\tthis._updateBounds();\n\t}\n});\n\n// @factory L.circle(latlng: LatLng, options?: Circle options)\n// Instantiates a circle object given a geographical point, and an options object\n// which contains the circle radius.\n// @alternative\n// @factory L.circle(latlng: LatLng, radius: Number, options?: Circle options)\n// Obsolete way of instantiating a circle, for compatibility with 0.7.x code.\n// Do not use in new applications or plugins.\nfunction circle(latlng, options, legacyOptions) {\n\treturn new Circle(latlng, options, legacyOptions);\n}\n\n/*\n * @class Polyline\n * @aka L.Polyline\n * @inherits Path\n *\n * A class for drawing polyline overlays on a map. Extends `Path`.\n *\n * @example\n *\n * ```js\n * // create a red polyline from an array of LatLng points\n * var latlngs = [\n * \t[45.51, -122.68],\n * \t[37.77, -122.43],\n * \t[34.04, -118.2]\n * ];\n *\n * var polyline = L.polyline(latlngs, {color: 'red'}).addTo(map);\n *\n * // zoom the map to the polyline\n * map.fitBounds(polyline.getBounds());\n * ```\n *\n * You can also pass a multi-dimensional array to represent a `MultiPolyline` shape:\n *\n * ```js\n * // create a red polyline from an array of arrays of LatLng points\n * var latlngs = [\n * \t[[45.51, -122.68],\n * \t [37.77, -122.43],\n * \t [34.04, -118.2]],\n * \t[[40.78, -73.91],\n * \t [41.83, -87.62],\n * \t [32.76, -96.72]]\n * ];\n * ```\n */\n\n\nvar Polyline = Path.extend({\n\n\t// @section\n\t// @aka Polyline options\n\toptions: {\n\t\t// @option smoothFactor: Number = 1.0\n\t\t// How much to simplify the polyline on each zoom level. More means\n\t\t// better performance and smoother look, and less means more accurate representation.\n\t\tsmoothFactor: 1.0,\n\n\t\t// @option noClip: Boolean = false\n\t\t// Disable polyline clipping.\n\t\tnoClip: false\n\t},\n\n\tinitialize: function (latlngs, options) {\n\t\tsetOptions(this, options);\n\t\tthis._setLatLngs(latlngs);\n\t},\n\n\t// @method getLatLngs(): LatLng[]\n\t// Returns an array of the points in the path, or nested arrays of points in case of multi-polyline.\n\tgetLatLngs: function () {\n\t\treturn this._latlngs;\n\t},\n\n\t// @method setLatLngs(latlngs: LatLng[]): this\n\t// Replaces all the points in the polyline with the given array of geographical points.\n\tsetLatLngs: function (latlngs) {\n\t\tthis._setLatLngs(latlngs);\n\t\treturn this.redraw();\n\t},\n\n\t// @method isEmpty(): Boolean\n\t// Returns `true` if the Polyline has no LatLngs.\n\tisEmpty: function () {\n\t\treturn !this._latlngs.length;\n\t},\n\n\t// @method closestLayerPoint(p: Point): Point\n\t// Returns the point closest to `p` on the Polyline.\n\tclosestLayerPoint: function (p) {\n\t\tvar minDistance = Infinity,\n\t\t    minPoint = null,\n\t\t    closest = _sqClosestPointOnSegment,\n\t\t    p1, p2;\n\n\t\tfor (var j = 0, jLen = this._parts.length; j < jLen; j++) {\n\t\t\tvar points = this._parts[j];\n\n\t\t\tfor (var i = 1, len = points.length; i < len; i++) {\n\t\t\t\tp1 = points[i - 1];\n\t\t\t\tp2 = points[i];\n\n\t\t\t\tvar sqDist = closest(p, p1, p2, true);\n\n\t\t\t\tif (sqDist < minDistance) {\n\t\t\t\t\tminDistance = sqDist;\n\t\t\t\t\tminPoint = closest(p, p1, p2);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (minPoint) {\n\t\t\tminPoint.distance = Math.sqrt(minDistance);\n\t\t}\n\t\treturn minPoint;\n\t},\n\n\t// @method getCenter(): LatLng\n\t// Returns the center ([centroid](http://en.wikipedia.org/wiki/Centroid)) of the polyline.\n\tgetCenter: function () {\n\t\t// throws error when not yet added to map as this center calculation requires projected coordinates\n\t\tif (!this._map) {\n\t\t\tthrow new Error('Must add layer to map before using getCenter()');\n\t\t}\n\n\t\tvar i, halfDist, segDist, dist, p1, p2, ratio,\n\t\t    points = this._rings[0],\n\t\t    len = points.length;\n\n\t\tif (!len) { return null; }\n\n\t\t// polyline centroid algorithm; only uses the first ring if there are multiple\n\n\t\tfor (i = 0, halfDist = 0; i < len - 1; i++) {\n\t\t\thalfDist += points[i].distanceTo(points[i + 1]) / 2;\n\t\t}\n\n\t\t// The line is so small in the current view that all points are on the same pixel.\n\t\tif (halfDist === 0) {\n\t\t\treturn this._map.layerPointToLatLng(points[0]);\n\t\t}\n\n\t\tfor (i = 0, dist = 0; i < len - 1; i++) {\n\t\t\tp1 = points[i];\n\t\t\tp2 = points[i + 1];\n\t\t\tsegDist = p1.distanceTo(p2);\n\t\t\tdist += segDist;\n\n\t\t\tif (dist > halfDist) {\n\t\t\t\tratio = (dist - halfDist) / segDist;\n\t\t\t\treturn this._map.layerPointToLatLng([\n\t\t\t\t\tp2.x - ratio * (p2.x - p1.x),\n\t\t\t\t\tp2.y - ratio * (p2.y - p1.y)\n\t\t\t\t]);\n\t\t\t}\n\t\t}\n\t},\n\n\t// @method getBounds(): LatLngBounds\n\t// Returns the `LatLngBounds` of the path.\n\tgetBounds: function () {\n\t\treturn this._bounds;\n\t},\n\n\t// @method addLatLng(latlng: LatLng, latlngs? LatLng[]): this\n\t// Adds a given point to the polyline. By default, adds to the first ring of\n\t// the polyline in case of a multi-polyline, but can be overridden by passing\n\t// a specific ring as a LatLng array (that you can earlier access with [`getLatLngs`](#polyline-getlatlngs)).\n\taddLatLng: function (latlng, latlngs) {\n\t\tlatlngs = latlngs || this._defaultShape();\n\t\tlatlng = toLatLng(latlng);\n\t\tlatlngs.push(latlng);\n\t\tthis._bounds.extend(latlng);\n\t\treturn this.redraw();\n\t},\n\n\t_setLatLngs: function (latlngs) {\n\t\tthis._bounds = new LatLngBounds();\n\t\tthis._latlngs = this._convertLatLngs(latlngs);\n\t},\n\n\t_defaultShape: function () {\n\t\treturn isFlat(this._latlngs) ? this._latlngs : this._latlngs[0];\n\t},\n\n\t// recursively convert latlngs input into actual LatLng instances; calculate bounds along the way\n\t_convertLatLngs: function (latlngs) {\n\t\tvar result = [],\n\t\t    flat = isFlat(latlngs);\n\n\t\tfor (var i = 0, len = latlngs.length; i < len; i++) {\n\t\t\tif (flat) {\n\t\t\t\tresult[i] = toLatLng(latlngs[i]);\n\t\t\t\tthis._bounds.extend(result[i]);\n\t\t\t} else {\n\t\t\t\tresult[i] = this._convertLatLngs(latlngs[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t},\n\n\t_project: function () {\n\t\tvar pxBounds = new Bounds();\n\t\tthis._rings = [];\n\t\tthis._projectLatlngs(this._latlngs, this._rings, pxBounds);\n\n\t\tif (this._bounds.isValid() && pxBounds.isValid()) {\n\t\t\tthis._rawPxBounds = pxBounds;\n\t\t\tthis._updateBounds();\n\t\t}\n\t},\n\n\t_updateBounds: function () {\n\t\tvar w = this._clickTolerance(),\n\t\t    p = new Point(w, w);\n\t\tthis._pxBounds = new Bounds([\n\t\t\tthis._rawPxBounds.min.subtract(p),\n\t\t\tthis._rawPxBounds.max.add(p)\n\t\t]);\n\t},\n\n\t// recursively turns latlngs into a set of rings with projected coordinates\n\t_projectLatlngs: function (latlngs, result, projectedBounds) {\n\t\tvar flat = latlngs[0] instanceof LatLng,\n\t\t    len = latlngs.length,\n\t\t    i, ring;\n\n\t\tif (flat) {\n\t\t\tring = [];\n\t\t\tfor (i = 0; i < len; i++) {\n\t\t\t\tring[i] = this._map.latLngToLayerPoint(latlngs[i]);\n\t\t\t\tprojectedBounds.extend(ring[i]);\n\t\t\t}\n\t\t\tresult.push(ring);\n\t\t} else {\n\t\t\tfor (i = 0; i < len; i++) {\n\t\t\t\tthis._projectLatlngs(latlngs[i], result, projectedBounds);\n\t\t\t}\n\t\t}\n\t},\n\n\t// clip polyline by renderer bounds so that we have less to render for performance\n\t_clipPoints: function () {\n\t\tvar bounds = this._renderer._bounds;\n\n\t\tthis._parts = [];\n\t\tif (!this._pxBounds || !this._pxBounds.intersects(bounds)) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.options.noClip) {\n\t\t\tthis._parts = this._rings;\n\t\t\treturn;\n\t\t}\n\n\t\tvar parts = this._parts,\n\t\t    i, j, k, len, len2, segment, points;\n\n\t\tfor (i = 0, k = 0, len = this._rings.length; i < len; i++) {\n\t\t\tpoints = this._rings[i];\n\n\t\t\tfor (j = 0, len2 = points.length; j < len2 - 1; j++) {\n\t\t\t\tsegment = clipSegment(points[j], points[j + 1], bounds, j, true);\n\n\t\t\t\tif (!segment) { continue; }\n\n\t\t\t\tparts[k] = parts[k] || [];\n\t\t\t\tparts[k].push(segment[0]);\n\n\t\t\t\t// if segment goes out of screen, or it's the last one, it's the end of the line part\n\t\t\t\tif ((segment[1] !== points[j + 1]) || (j === len2 - 2)) {\n\t\t\t\t\tparts[k].push(segment[1]);\n\t\t\t\t\tk++;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// simplify each clipped part of the polyline for performance\n\t_simplifyPoints: function () {\n\t\tvar parts = this._parts,\n\t\t    tolerance = this.options.smoothFactor;\n\n\t\tfor (var i = 0, len = parts.length; i < len; i++) {\n\t\t\tparts[i] = simplify(parts[i], tolerance);\n\t\t}\n\t},\n\n\t_update: function () {\n\t\tif (!this._map) { return; }\n\n\t\tthis._clipPoints();\n\t\tthis._simplifyPoints();\n\t\tthis._updatePath();\n\t},\n\n\t_updatePath: function () {\n\t\tthis._renderer._updatePoly(this);\n\t},\n\n\t// Needed by the `Canvas` renderer for interactivity\n\t_containsPoint: function (p, closed) {\n\t\tvar i, j, k, len, len2, part,\n\t\t    w = this._clickTolerance();\n\n\t\tif (!this._pxBounds || !this._pxBounds.contains(p)) { return false; }\n\n\t\t// hit detection for polylines\n\t\tfor (i = 0, len = this._parts.length; i < len; i++) {\n\t\t\tpart = this._parts[i];\n\n\t\t\tfor (j = 0, len2 = part.length, k = len2 - 1; j < len2; k = j++) {\n\t\t\t\tif (!closed && (j === 0)) { continue; }\n\n\t\t\t\tif (pointToSegmentDistance(p, part[k], part[j]) <= w) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n});\n\n// @factory L.polyline(latlngs: LatLng[], options?: Polyline options)\n// Instantiates a polyline object given an array of geographical points and\n// optionally an options object. You can create a `Polyline` object with\n// multiple separate lines (`MultiPolyline`) by passing an array of arrays\n// of geographic points.\nfunction polyline(latlngs, options) {\n\treturn new Polyline(latlngs, options);\n}\n\n// Retrocompat. Allow plugins to support Leaflet versions before and after 1.1.\nPolyline._flat = _flat;\n\n/*\n * @class Polygon\n * @aka L.Polygon\n * @inherits Polyline\n *\n * A class for drawing polygon overlays on a map. Extends `Polyline`.\n *\n * Note that points you pass when creating a polygon shouldn't have an additional last point equal to the first one — it's better to filter out such points.\n *\n *\n * @example\n *\n * ```js\n * // create a red polygon from an array of LatLng points\n * var latlngs = [[37, -109.05],[41, -109.03],[41, -102.05],[37, -102.04]];\n *\n * var polygon = L.polygon(latlngs, {color: 'red'}).addTo(map);\n *\n * // zoom the map to the polygon\n * map.fitBounds(polygon.getBounds());\n * ```\n *\n * You can also pass an array of arrays of latlngs, with the first array representing the outer shape and the other arrays representing holes in the outer shape:\n *\n * ```js\n * var latlngs = [\n *   [[37, -109.05],[41, -109.03],[41, -102.05],[37, -102.04]], // outer ring\n *   [[37.29, -108.58],[40.71, -108.58],[40.71, -102.50],[37.29, -102.50]] // hole\n * ];\n * ```\n *\n * Additionally, you can pass a multi-dimensional array to represent a MultiPolygon shape.\n *\n * ```js\n * var latlngs = [\n *   [ // first polygon\n *     [[37, -109.05],[41, -109.03],[41, -102.05],[37, -102.04]], // outer ring\n *     [[37.29, -108.58],[40.71, -108.58],[40.71, -102.50],[37.29, -102.50]] // hole\n *   ],\n *   [ // second polygon\n *     [[41, -111.03],[45, -111.04],[45, -104.05],[41, -104.05]]\n *   ]\n * ];\n * ```\n */\n\nvar Polygon = Polyline.extend({\n\n\toptions: {\n\t\tfill: true\n\t},\n\n\tisEmpty: function () {\n\t\treturn !this._latlngs.length || !this._latlngs[0].length;\n\t},\n\n\tgetCenter: function () {\n\t\t// throws error when not yet added to map as this center calculation requires projected coordinates\n\t\tif (!this._map) {\n\t\t\tthrow new Error('Must add layer to map before using getCenter()');\n\t\t}\n\n\t\tvar i, j, p1, p2, f, area, x, y, center,\n\t\t    points = this._rings[0],\n\t\t    len = points.length;\n\n\t\tif (!len) { return null; }\n\n\t\t// polygon centroid algorithm; only uses the first ring if there are multiple\n\n\t\tarea = x = y = 0;\n\n\t\tfor (i = 0, j = len - 1; i < len; j = i++) {\n\t\t\tp1 = points[i];\n\t\t\tp2 = points[j];\n\n\t\t\tf = p1.y * p2.x - p2.y * p1.x;\n\t\t\tx += (p1.x + p2.x) * f;\n\t\t\ty += (p1.y + p2.y) * f;\n\t\t\tarea += f * 3;\n\t\t}\n\n\t\tif (area === 0) {\n\t\t\t// Polygon is so small that all points are on same pixel.\n\t\t\tcenter = points[0];\n\t\t} else {\n\t\t\tcenter = [x / area, y / area];\n\t\t}\n\t\treturn this._map.layerPointToLatLng(center);\n\t},\n\n\t_convertLatLngs: function (latlngs) {\n\t\tvar result = Polyline.prototype._convertLatLngs.call(this, latlngs),\n\t\t    len = result.length;\n\n\t\t// remove last point if it equals first one\n\t\tif (len >= 2 && result[0] instanceof LatLng && result[0].equals(result[len - 1])) {\n\t\t\tresult.pop();\n\t\t}\n\t\treturn result;\n\t},\n\n\t_setLatLngs: function (latlngs) {\n\t\tPolyline.prototype._setLatLngs.call(this, latlngs);\n\t\tif (isFlat(this._latlngs)) {\n\t\t\tthis._latlngs = [this._latlngs];\n\t\t}\n\t},\n\n\t_defaultShape: function () {\n\t\treturn isFlat(this._latlngs[0]) ? this._latlngs[0] : this._latlngs[0][0];\n\t},\n\n\t_clipPoints: function () {\n\t\t// polygons need a different clipping algorithm so we redefine that\n\n\t\tvar bounds = this._renderer._bounds,\n\t\t    w = this.options.weight,\n\t\t    p = new Point(w, w);\n\n\t\t// increase clip padding by stroke width to avoid stroke on clip edges\n\t\tbounds = new Bounds(bounds.min.subtract(p), bounds.max.add(p));\n\n\t\tthis._parts = [];\n\t\tif (!this._pxBounds || !this._pxBounds.intersects(bounds)) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.options.noClip) {\n\t\t\tthis._parts = this._rings;\n\t\t\treturn;\n\t\t}\n\n\t\tfor (var i = 0, len = this._rings.length, clipped; i < len; i++) {\n\t\t\tclipped = clipPolygon(this._rings[i], bounds, true);\n\t\t\tif (clipped.length) {\n\t\t\t\tthis._parts.push(clipped);\n\t\t\t}\n\t\t}\n\t},\n\n\t_updatePath: function () {\n\t\tthis._renderer._updatePoly(this, true);\n\t},\n\n\t// Needed by the `Canvas` renderer for interactivity\n\t_containsPoint: function (p) {\n\t\tvar inside = false,\n\t\t    part, p1, p2, i, j, k, len, len2;\n\n\t\tif (!this._pxBounds || !this._pxBounds.contains(p)) { return false; }\n\n\t\t// ray casting algorithm for detecting if point is in polygon\n\t\tfor (i = 0, len = this._parts.length; i < len; i++) {\n\t\t\tpart = this._parts[i];\n\n\t\t\tfor (j = 0, len2 = part.length, k = len2 - 1; j < len2; k = j++) {\n\t\t\t\tp1 = part[j];\n\t\t\t\tp2 = part[k];\n\n\t\t\t\tif (((p1.y > p.y) !== (p2.y > p.y)) && (p.x < (p2.x - p1.x) * (p.y - p1.y) / (p2.y - p1.y) + p1.x)) {\n\t\t\t\t\tinside = !inside;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// also check if it's on polygon stroke\n\t\treturn inside || Polyline.prototype._containsPoint.call(this, p, true);\n\t}\n\n});\n\n\n// @factory L.polygon(latlngs: LatLng[], options?: Polyline options)\nfunction polygon(latlngs, options) {\n\treturn new Polygon(latlngs, options);\n}\n\n/*\r\n * @class GeoJSON\r\n * @aka L.GeoJSON\r\n * @inherits FeatureGroup\r\n *\r\n * Represents a GeoJSON object or an array of GeoJSON objects. Allows you to parse\r\n * GeoJSON data and display it on the map. Extends `FeatureGroup`.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * L.geoJSON(data, {\r\n * \tstyle: function (feature) {\r\n * \t\treturn {color: feature.properties.color};\r\n * \t}\r\n * }).bindPopup(function (layer) {\r\n * \treturn layer.feature.properties.description;\r\n * }).addTo(map);\r\n * ```\r\n */\r\n\r\nvar GeoJSON = FeatureGroup.extend({\r\n\r\n\t/* @section\r\n\t * @aka GeoJSON options\r\n\t *\r\n\t * @option pointToLayer: Function = *\r\n\t * A `Function` defining how GeoJSON points spawn Leaflet layers. It is internally\r\n\t * called when data is added, passing the GeoJSON point feature and its `LatLng`.\r\n\t * The default is to spawn a default `Marker`:\r\n\t * ```js\r\n\t * function(geoJsonPoint, latlng) {\r\n\t * \treturn L.marker(latlng);\r\n\t * }\r\n\t * ```\r\n\t *\r\n\t * @option style: Function = *\r\n\t * A `Function` defining the `Path options` for styling GeoJSON lines and polygons,\r\n\t * called internally when data is added.\r\n\t * The default value is to not override any defaults:\r\n\t * ```js\r\n\t * function (geoJsonFeature) {\r\n\t * \treturn {}\r\n\t * }\r\n\t * ```\r\n\t *\r\n\t * @option onEachFeature: Function = *\r\n\t * A `Function` that will be called once for each created `Feature`, after it has\r\n\t * been created and styled. Useful for attaching events and popups to features.\r\n\t * The default is to do nothing with the newly created layers:\r\n\t * ```js\r\n\t * function (feature, layer) {}\r\n\t * ```\r\n\t *\r\n\t * @option filter: Function = *\r\n\t * A `Function` that will be used to decide whether to include a feature or not.\r\n\t * The default is to include all features:\r\n\t * ```js\r\n\t * function (geoJsonFeature) {\r\n\t * \treturn true;\r\n\t * }\r\n\t * ```\r\n\t * Note: dynamically changing the `filter` option will have effect only on newly\r\n\t * added data. It will _not_ re-evaluate already included features.\r\n\t *\r\n\t * @option coordsToLatLng: Function = *\r\n\t * A `Function` that will be used for converting GeoJSON coordinates to `LatLng`s.\r\n\t * The default is the `coordsToLatLng` static method.\r\n\t *\r\n\t * @option markersInheritOptions: Boolean = false\r\n\t * Whether default Markers for \"Point\" type Features inherit from group options.\r\n\t */\r\n\r\n\tinitialize: function (geojson, options) {\r\n\t\tsetOptions(this, options);\r\n\r\n\t\tthis._layers = {};\r\n\r\n\t\tif (geojson) {\r\n\t\t\tthis.addData(geojson);\r\n\t\t}\r\n\t},\r\n\r\n\t// @method addData( <GeoJSON> data ): this\r\n\t// Adds a GeoJSON object to the layer.\r\n\taddData: function (geojson) {\r\n\t\tvar features = isArray(geojson) ? geojson : geojson.features,\r\n\t\t    i, len, feature;\r\n\r\n\t\tif (features) {\r\n\t\t\tfor (i = 0, len = features.length; i < len; i++) {\r\n\t\t\t\t// only add this if geometry or geometries are set and not null\r\n\t\t\t\tfeature = features[i];\r\n\t\t\t\tif (feature.geometries || feature.geometry || feature.features || feature.coordinates) {\r\n\t\t\t\t\tthis.addData(feature);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\tvar options = this.options;\r\n\r\n\t\tif (options.filter && !options.filter(geojson)) { return this; }\r\n\r\n\t\tvar layer = geometryToLayer(geojson, options);\r\n\t\tif (!layer) {\r\n\t\t\treturn this;\r\n\t\t}\r\n\t\tlayer.feature = asFeature(geojson);\r\n\r\n\t\tlayer.defaultOptions = layer.options;\r\n\t\tthis.resetStyle(layer);\r\n\r\n\t\tif (options.onEachFeature) {\r\n\t\t\toptions.onEachFeature(geojson, layer);\r\n\t\t}\r\n\r\n\t\treturn this.addLayer(layer);\r\n\t},\r\n\r\n\t// @method resetStyle( <Path> layer? ): this\r\n\t// Resets the given vector layer's style to the original GeoJSON style, useful for resetting style after hover events.\r\n\t// If `layer` is omitted, the style of all features in the current layer is reset.\r\n\tresetStyle: function (layer) {\r\n\t\tif (layer === undefined) {\r\n\t\t\treturn this.eachLayer(this.resetStyle, this);\r\n\t\t}\r\n\t\t// reset any custom styles\r\n\t\tlayer.options = extend({}, layer.defaultOptions);\r\n\t\tthis._setLayerStyle(layer, this.options.style);\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method setStyle( <Function> style ): this\r\n\t// Changes styles of GeoJSON vector layers with the given style function.\r\n\tsetStyle: function (style) {\r\n\t\treturn this.eachLayer(function (layer) {\r\n\t\t\tthis._setLayerStyle(layer, style);\r\n\t\t}, this);\r\n\t},\r\n\r\n\t_setLayerStyle: function (layer, style) {\r\n\t\tif (layer.setStyle) {\r\n\t\t\tif (typeof style === 'function') {\r\n\t\t\t\tstyle = style(layer.feature);\r\n\t\t\t}\r\n\t\t\tlayer.setStyle(style);\r\n\t\t}\r\n\t}\r\n});\r\n\r\n// @section\r\n// There are several static functions which can be called without instantiating L.GeoJSON:\r\n\r\n// @function geometryToLayer(featureData: Object, options?: GeoJSON options): Layer\r\n// Creates a `Layer` from a given GeoJSON feature. Can use a custom\r\n// [`pointToLayer`](#geojson-pointtolayer) and/or [`coordsToLatLng`](#geojson-coordstolatlng)\r\n// functions if provided as options.\r\nfunction geometryToLayer(geojson, options) {\r\n\r\n\tvar geometry = geojson.type === 'Feature' ? geojson.geometry : geojson,\r\n\t    coords = geometry ? geometry.coordinates : null,\r\n\t    layers = [],\r\n\t    pointToLayer = options && options.pointToLayer,\r\n\t    _coordsToLatLng = options && options.coordsToLatLng || coordsToLatLng,\r\n\t    latlng, latlngs, i, len;\r\n\r\n\tif (!coords && !geometry) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\tswitch (geometry.type) {\r\n\tcase 'Point':\r\n\t\tlatlng = _coordsToLatLng(coords);\r\n\t\treturn _pointToLayer(pointToLayer, geojson, latlng, options);\r\n\r\n\tcase 'MultiPoint':\r\n\t\tfor (i = 0, len = coords.length; i < len; i++) {\r\n\t\t\tlatlng = _coordsToLatLng(coords[i]);\r\n\t\t\tlayers.push(_pointToLayer(pointToLayer, geojson, latlng, options));\r\n\t\t}\r\n\t\treturn new FeatureGroup(layers);\r\n\r\n\tcase 'LineString':\r\n\tcase 'MultiLineString':\r\n\t\tlatlngs = coordsToLatLngs(coords, geometry.type === 'LineString' ? 0 : 1, _coordsToLatLng);\r\n\t\treturn new Polyline(latlngs, options);\r\n\r\n\tcase 'Polygon':\r\n\tcase 'MultiPolygon':\r\n\t\tlatlngs = coordsToLatLngs(coords, geometry.type === 'Polygon' ? 1 : 2, _coordsToLatLng);\r\n\t\treturn new Polygon(latlngs, options);\r\n\r\n\tcase 'GeometryCollection':\r\n\t\tfor (i = 0, len = geometry.geometries.length; i < len; i++) {\r\n\t\t\tvar layer = geometryToLayer({\r\n\t\t\t\tgeometry: geometry.geometries[i],\r\n\t\t\t\ttype: 'Feature',\r\n\t\t\t\tproperties: geojson.properties\r\n\t\t\t}, options);\r\n\r\n\t\t\tif (layer) {\r\n\t\t\t\tlayers.push(layer);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn new FeatureGroup(layers);\r\n\r\n\tdefault:\r\n\t\tthrow new Error('Invalid GeoJSON object.');\r\n\t}\r\n}\r\n\r\nfunction _pointToLayer(pointToLayerFn, geojson, latlng, options) {\r\n\treturn pointToLayerFn ?\r\n\t\tpointToLayerFn(geojson, latlng) :\r\n\t\tnew Marker(latlng, options && options.markersInheritOptions && options);\r\n}\r\n\r\n// @function coordsToLatLng(coords: Array): LatLng\r\n// Creates a `LatLng` object from an array of 2 numbers (longitude, latitude)\r\n// or 3 numbers (longitude, latitude, altitude) used in GeoJSON for points.\r\nfunction coordsToLatLng(coords) {\r\n\treturn new LatLng(coords[1], coords[0], coords[2]);\r\n}\r\n\r\n// @function coordsToLatLngs(coords: Array, levelsDeep?: Number, coordsToLatLng?: Function): Array\r\n// Creates a multidimensional array of `LatLng`s from a GeoJSON coordinates array.\r\n// `levelsDeep` specifies the nesting level (0 is for an array of points, 1 for an array of arrays of points, etc., 0 by default).\r\n// Can use a custom [`coordsToLatLng`](#geojson-coordstolatlng) function.\r\nfunction coordsToLatLngs(coords, levelsDeep, _coordsToLatLng) {\r\n\tvar latlngs = [];\r\n\r\n\tfor (var i = 0, len = coords.length, latlng; i < len; i++) {\r\n\t\tlatlng = levelsDeep ?\r\n\t\t\tcoordsToLatLngs(coords[i], levelsDeep - 1, _coordsToLatLng) :\r\n\t\t\t(_coordsToLatLng || coordsToLatLng)(coords[i]);\r\n\r\n\t\tlatlngs.push(latlng);\r\n\t}\r\n\r\n\treturn latlngs;\r\n}\r\n\r\n// @function latLngToCoords(latlng: LatLng, precision?: Number): Array\r\n// Reverse of [`coordsToLatLng`](#geojson-coordstolatlng)\r\nfunction latLngToCoords(latlng, precision) {\r\n\tprecision = typeof precision === 'number' ? precision : 6;\r\n\treturn latlng.alt !== undefined ?\r\n\t\t[formatNum(latlng.lng, precision), formatNum(latlng.lat, precision), formatNum(latlng.alt, precision)] :\r\n\t\t[formatNum(latlng.lng, precision), formatNum(latlng.lat, precision)];\r\n}\r\n\r\n// @function latLngsToCoords(latlngs: Array, levelsDeep?: Number, closed?: Boolean): Array\r\n// Reverse of [`coordsToLatLngs`](#geojson-coordstolatlngs)\r\n// `closed` determines whether the first point should be appended to the end of the array to close the feature, only used when `levelsDeep` is 0. False by default.\r\nfunction latLngsToCoords(latlngs, levelsDeep, closed, precision) {\r\n\tvar coords = [];\r\n\r\n\tfor (var i = 0, len = latlngs.length; i < len; i++) {\r\n\t\tcoords.push(levelsDeep ?\r\n\t\t\tlatLngsToCoords(latlngs[i], levelsDeep - 1, closed, precision) :\r\n\t\t\tlatLngToCoords(latlngs[i], precision));\r\n\t}\r\n\r\n\tif (!levelsDeep && closed) {\r\n\t\tcoords.push(coords[0]);\r\n\t}\r\n\r\n\treturn coords;\r\n}\r\n\r\nfunction getFeature(layer, newGeometry) {\r\n\treturn layer.feature ?\r\n\t\textend({}, layer.feature, {geometry: newGeometry}) :\r\n\t\tasFeature(newGeometry);\r\n}\r\n\r\n// @function asFeature(geojson: Object): Object\r\n// Normalize GeoJSON geometries/features into GeoJSON features.\r\nfunction asFeature(geojson) {\r\n\tif (geojson.type === 'Feature' || geojson.type === 'FeatureCollection') {\r\n\t\treturn geojson;\r\n\t}\r\n\r\n\treturn {\r\n\t\ttype: 'Feature',\r\n\t\tproperties: {},\r\n\t\tgeometry: geojson\r\n\t};\r\n}\r\n\r\nvar PointToGeoJSON = {\r\n\ttoGeoJSON: function (precision) {\r\n\t\treturn getFeature(this, {\r\n\t\t\ttype: 'Point',\r\n\t\t\tcoordinates: latLngToCoords(this.getLatLng(), precision)\r\n\t\t});\r\n\t}\r\n};\r\n\r\n// @namespace Marker\r\n// @section Other methods\r\n// @method toGeoJSON(precision?: Number): Object\r\n// `precision` is the number of decimal places for coordinates.\r\n// The default value is 6 places.\r\n// Returns a [`GeoJSON`](http://en.wikipedia.org/wiki/GeoJSON) representation of the marker (as a GeoJSON `Point` Feature).\r\nMarker.include(PointToGeoJSON);\r\n\r\n// @namespace CircleMarker\r\n// @method toGeoJSON(precision?: Number): Object\r\n// `precision` is the number of decimal places for coordinates.\r\n// The default value is 6 places.\r\n// Returns a [`GeoJSON`](http://en.wikipedia.org/wiki/GeoJSON) representation of the circle marker (as a GeoJSON `Point` Feature).\r\nCircle.include(PointToGeoJSON);\r\nCircleMarker.include(PointToGeoJSON);\r\n\r\n\r\n// @namespace Polyline\r\n// @method toGeoJSON(precision?: Number): Object\r\n// `precision` is the number of decimal places for coordinates.\r\n// The default value is 6 places.\r\n// Returns a [`GeoJSON`](http://en.wikipedia.org/wiki/GeoJSON) representation of the polyline (as a GeoJSON `LineString` or `MultiLineString` Feature).\r\nPolyline.include({\r\n\ttoGeoJSON: function (precision) {\r\n\t\tvar multi = !isFlat(this._latlngs);\r\n\r\n\t\tvar coords = latLngsToCoords(this._latlngs, multi ? 1 : 0, false, precision);\r\n\r\n\t\treturn getFeature(this, {\r\n\t\t\ttype: (multi ? 'Multi' : '') + 'LineString',\r\n\t\t\tcoordinates: coords\r\n\t\t});\r\n\t}\r\n});\r\n\r\n// @namespace Polygon\r\n// @method toGeoJSON(precision?: Number): Object\r\n// `precision` is the number of decimal places for coordinates.\r\n// The default value is 6 places.\r\n// Returns a [`GeoJSON`](http://en.wikipedia.org/wiki/GeoJSON) representation of the polygon (as a GeoJSON `Polygon` or `MultiPolygon` Feature).\r\nPolygon.include({\r\n\ttoGeoJSON: function (precision) {\r\n\t\tvar holes = !isFlat(this._latlngs),\r\n\t\t    multi = holes && !isFlat(this._latlngs[0]);\r\n\r\n\t\tvar coords = latLngsToCoords(this._latlngs, multi ? 2 : holes ? 1 : 0, true, precision);\r\n\r\n\t\tif (!holes) {\r\n\t\t\tcoords = [coords];\r\n\t\t}\r\n\r\n\t\treturn getFeature(this, {\r\n\t\t\ttype: (multi ? 'Multi' : '') + 'Polygon',\r\n\t\t\tcoordinates: coords\r\n\t\t});\r\n\t}\r\n});\r\n\r\n\r\n// @namespace LayerGroup\r\nLayerGroup.include({\r\n\ttoMultiPoint: function (precision) {\r\n\t\tvar coords = [];\r\n\r\n\t\tthis.eachLayer(function (layer) {\r\n\t\t\tcoords.push(layer.toGeoJSON(precision).geometry.coordinates);\r\n\t\t});\r\n\r\n\t\treturn getFeature(this, {\r\n\t\t\ttype: 'MultiPoint',\r\n\t\t\tcoordinates: coords\r\n\t\t});\r\n\t},\r\n\r\n\t// @method toGeoJSON(precision?: Number): Object\r\n\t// `precision` is the number of decimal places for coordinates.\r\n\t// The default value is 6 places.\r\n\t// Returns a [`GeoJSON`](http://en.wikipedia.org/wiki/GeoJSON) representation of the layer group (as a GeoJSON `FeatureCollection`, `GeometryCollection`, or `MultiPoint`).\r\n\ttoGeoJSON: function (precision) {\r\n\r\n\t\tvar type = this.feature && this.feature.geometry && this.feature.geometry.type;\r\n\r\n\t\tif (type === 'MultiPoint') {\r\n\t\t\treturn this.toMultiPoint(precision);\r\n\t\t}\r\n\r\n\t\tvar isGeometryCollection = type === 'GeometryCollection',\r\n\t\t    jsons = [];\r\n\r\n\t\tthis.eachLayer(function (layer) {\r\n\t\t\tif (layer.toGeoJSON) {\r\n\t\t\t\tvar json = layer.toGeoJSON(precision);\r\n\t\t\t\tif (isGeometryCollection) {\r\n\t\t\t\t\tjsons.push(json.geometry);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvar feature = asFeature(json);\r\n\t\t\t\t\t// Squash nested feature collections\r\n\t\t\t\t\tif (feature.type === 'FeatureCollection') {\r\n\t\t\t\t\t\tjsons.push.apply(jsons, feature.features);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tjsons.push(feature);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif (isGeometryCollection) {\r\n\t\t\treturn getFeature(this, {\r\n\t\t\t\tgeometries: jsons,\r\n\t\t\t\ttype: 'GeometryCollection'\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\ttype: 'FeatureCollection',\r\n\t\t\tfeatures: jsons\r\n\t\t};\r\n\t}\r\n});\r\n\r\n// @namespace GeoJSON\r\n// @factory L.geoJSON(geojson?: Object, options?: GeoJSON options)\r\n// Creates a GeoJSON layer. Optionally accepts an object in\r\n// [GeoJSON format](https://tools.ietf.org/html/rfc7946) to display on the map\r\n// (you can alternatively add it later with `addData` method) and an `options` object.\r\nfunction geoJSON(geojson, options) {\r\n\treturn new GeoJSON(geojson, options);\r\n}\r\n\r\n// Backward compatibility.\r\nvar geoJson = geoJSON;\n\n/*\r\n * @class ImageOverlay\r\n * @aka L.ImageOverlay\r\n * @inherits Interactive layer\r\n *\r\n * Used to load and display a single image over specific bounds of the map. Extends `Layer`.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * var imageUrl = 'http://www.lib.utexas.edu/maps/historical/newark_nj_1922.jpg',\r\n * \timageBounds = [[40.712216, -74.22655], [40.773941, -74.12544]];\r\n * L.imageOverlay(imageUrl, imageBounds).addTo(map);\r\n * ```\r\n */\r\n\r\nvar ImageOverlay = Layer.extend({\r\n\r\n\t// @section\r\n\t// @aka ImageOverlay options\r\n\toptions: {\r\n\t\t// @option opacity: Number = 1.0\r\n\t\t// The opacity of the image overlay.\r\n\t\topacity: 1,\r\n\r\n\t\t// @option alt: String = ''\r\n\t\t// Text for the `alt` attribute of the image (useful for accessibility).\r\n\t\talt: '',\r\n\r\n\t\t// @option interactive: Boolean = false\r\n\t\t// If `true`, the image overlay will emit [mouse events](#interactive-layer) when clicked or hovered.\r\n\t\tinteractive: false,\r\n\r\n\t\t// @option crossOrigin: Boolean|String = false\r\n\t\t// Whether the crossOrigin attribute will be added to the image.\r\n\t\t// If a String is provided, the image will have its crossOrigin attribute set to the String provided. This is needed if you want to access image pixel data.\r\n\t\t// Refer to [CORS Settings](https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_settings_attributes) for valid String values.\r\n\t\tcrossOrigin: false,\r\n\r\n\t\t// @option errorOverlayUrl: String = ''\r\n\t\t// URL to the overlay image to show in place of the overlay that failed to load.\r\n\t\terrorOverlayUrl: '',\r\n\r\n\t\t// @option zIndex: Number = 1\r\n\t\t// The explicit [zIndex](https://developer.mozilla.org/docs/Web/CSS/CSS_Positioning/Understanding_z_index) of the overlay layer.\r\n\t\tzIndex: 1,\r\n\r\n\t\t// @option className: String = ''\r\n\t\t// A custom class name to assign to the image. Empty by default.\r\n\t\tclassName: ''\r\n\t},\r\n\r\n\tinitialize: function (url, bounds, options) { // (String, LatLngBounds, Object)\r\n\t\tthis._url = url;\r\n\t\tthis._bounds = toLatLngBounds(bounds);\r\n\r\n\t\tsetOptions(this, options);\r\n\t},\r\n\r\n\tonAdd: function () {\r\n\t\tif (!this._image) {\r\n\t\t\tthis._initImage();\r\n\r\n\t\t\tif (this.options.opacity < 1) {\r\n\t\t\t\tthis._updateOpacity();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this.options.interactive) {\r\n\t\t\taddClass(this._image, 'leaflet-interactive');\r\n\t\t\tthis.addInteractiveTarget(this._image);\r\n\t\t}\r\n\r\n\t\tthis.getPane().appendChild(this._image);\r\n\t\tthis._reset();\r\n\t},\r\n\r\n\tonRemove: function () {\r\n\t\tremove(this._image);\r\n\t\tif (this.options.interactive) {\r\n\t\t\tthis.removeInteractiveTarget(this._image);\r\n\t\t}\r\n\t},\r\n\r\n\t// @method setOpacity(opacity: Number): this\r\n\t// Sets the opacity of the overlay.\r\n\tsetOpacity: function (opacity) {\r\n\t\tthis.options.opacity = opacity;\r\n\r\n\t\tif (this._image) {\r\n\t\t\tthis._updateOpacity();\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\tsetStyle: function (styleOpts) {\r\n\t\tif (styleOpts.opacity) {\r\n\t\t\tthis.setOpacity(styleOpts.opacity);\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method bringToFront(): this\r\n\t// Brings the layer to the top of all overlays.\r\n\tbringToFront: function () {\r\n\t\tif (this._map) {\r\n\t\t\ttoFront(this._image);\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method bringToBack(): this\r\n\t// Brings the layer to the bottom of all overlays.\r\n\tbringToBack: function () {\r\n\t\tif (this._map) {\r\n\t\t\ttoBack(this._image);\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method setUrl(url: String): this\r\n\t// Changes the URL of the image.\r\n\tsetUrl: function (url) {\r\n\t\tthis._url = url;\r\n\r\n\t\tif (this._image) {\r\n\t\t\tthis._image.src = url;\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method setBounds(bounds: LatLngBounds): this\r\n\t// Update the bounds that this ImageOverlay covers\r\n\tsetBounds: function (bounds) {\r\n\t\tthis._bounds = toLatLngBounds(bounds);\r\n\r\n\t\tif (this._map) {\r\n\t\t\tthis._reset();\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\tgetEvents: function () {\r\n\t\tvar events = {\r\n\t\t\tzoom: this._reset,\r\n\t\t\tviewreset: this._reset\r\n\t\t};\r\n\r\n\t\tif (this._zoomAnimated) {\r\n\t\t\tevents.zoomanim = this._animateZoom;\r\n\t\t}\r\n\r\n\t\treturn events;\r\n\t},\r\n\r\n\t// @method setZIndex(value: Number): this\r\n\t// Changes the [zIndex](#imageoverlay-zindex) of the image overlay.\r\n\tsetZIndex: function (value) {\r\n\t\tthis.options.zIndex = value;\r\n\t\tthis._updateZIndex();\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method getBounds(): LatLngBounds\r\n\t// Get the bounds that this ImageOverlay covers\r\n\tgetBounds: function () {\r\n\t\treturn this._bounds;\r\n\t},\r\n\r\n\t// @method getElement(): HTMLElement\r\n\t// Returns the instance of [`HTMLImageElement`](https://developer.mozilla.org/docs/Web/API/HTMLImageElement)\r\n\t// used by this overlay.\r\n\tgetElement: function () {\r\n\t\treturn this._image;\r\n\t},\r\n\r\n\t_initImage: function () {\r\n\t\tvar wasElementSupplied = this._url.tagName === 'IMG';\r\n\t\tvar img = this._image = wasElementSupplied ? this._url : create$1('img');\r\n\r\n\t\taddClass(img, 'leaflet-image-layer');\r\n\t\tif (this._zoomAnimated) { addClass(img, 'leaflet-zoom-animated'); }\r\n\t\tif (this.options.className) { addClass(img, this.options.className); }\r\n\r\n\t\timg.onselectstart = falseFn;\r\n\t\timg.onmousemove = falseFn;\r\n\r\n\t\t// @event load: Event\r\n\t\t// Fired when the ImageOverlay layer has loaded its image\r\n\t\timg.onload = bind(this.fire, this, 'load');\r\n\t\timg.onerror = bind(this._overlayOnError, this, 'error');\r\n\r\n\t\tif (this.options.crossOrigin || this.options.crossOrigin === '') {\r\n\t\t\timg.crossOrigin = this.options.crossOrigin === true ? '' : this.options.crossOrigin;\r\n\t\t}\r\n\r\n\t\tif (this.options.zIndex) {\r\n\t\t\tthis._updateZIndex();\r\n\t\t}\r\n\r\n\t\tif (wasElementSupplied) {\r\n\t\t\tthis._url = img.src;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\timg.src = this._url;\r\n\t\timg.alt = this.options.alt;\r\n\t},\r\n\r\n\t_animateZoom: function (e) {\r\n\t\tvar scale = this._map.getZoomScale(e.zoom),\r\n\t\t    offset = this._map._latLngBoundsToNewLayerBounds(this._bounds, e.zoom, e.center).min;\r\n\r\n\t\tsetTransform(this._image, offset, scale);\r\n\t},\r\n\r\n\t_reset: function () {\r\n\t\tvar image = this._image,\r\n\t\t    bounds = new Bounds(\r\n\t\t        this._map.latLngToLayerPoint(this._bounds.getNorthWest()),\r\n\t\t        this._map.latLngToLayerPoint(this._bounds.getSouthEast())),\r\n\t\t    size = bounds.getSize();\r\n\r\n\t\tsetPosition(image, bounds.min);\r\n\r\n\t\timage.style.width  = size.x + 'px';\r\n\t\timage.style.height = size.y + 'px';\r\n\t},\r\n\r\n\t_updateOpacity: function () {\r\n\t\tsetOpacity(this._image, this.options.opacity);\r\n\t},\r\n\r\n\t_updateZIndex: function () {\r\n\t\tif (this._image && this.options.zIndex !== undefined && this.options.zIndex !== null) {\r\n\t\t\tthis._image.style.zIndex = this.options.zIndex;\r\n\t\t}\r\n\t},\r\n\r\n\t_overlayOnError: function () {\r\n\t\t// @event error: Event\r\n\t\t// Fired when the ImageOverlay layer fails to load its image\r\n\t\tthis.fire('error');\r\n\r\n\t\tvar errorUrl = this.options.errorOverlayUrl;\r\n\t\tif (errorUrl && this._url !== errorUrl) {\r\n\t\t\tthis._url = errorUrl;\r\n\t\t\tthis._image.src = errorUrl;\r\n\t\t}\r\n\t}\r\n});\r\n\r\n// @factory L.imageOverlay(imageUrl: String, bounds: LatLngBounds, options?: ImageOverlay options)\r\n// Instantiates an image overlay object given the URL of the image and the\r\n// geographical bounds it is tied to.\r\nvar imageOverlay = function (url, bounds, options) {\r\n\treturn new ImageOverlay(url, bounds, options);\r\n};\n\n/*\r\n * @class VideoOverlay\r\n * @aka L.VideoOverlay\r\n * @inherits ImageOverlay\r\n *\r\n * Used to load and display a video player over specific bounds of the map. Extends `ImageOverlay`.\r\n *\r\n * A video overlay uses the [`<video>`](https://developer.mozilla.org/docs/Web/HTML/Element/video)\r\n * HTML5 element.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * var videoUrl = 'https://www.mapbox.com/bites/00188/patricia_nasa.webm',\r\n * \tvideoBounds = [[ 32, -130], [ 13, -100]];\r\n * L.videoOverlay(videoUrl, videoBounds ).addTo(map);\r\n * ```\r\n */\r\n\r\nvar VideoOverlay = ImageOverlay.extend({\r\n\r\n\t// @section\r\n\t// @aka VideoOverlay options\r\n\toptions: {\r\n\t\t// @option autoplay: Boolean = true\r\n\t\t// Whether the video starts playing automatically when loaded.\r\n\t\tautoplay: true,\r\n\r\n\t\t// @option loop: Boolean = true\r\n\t\t// Whether the video will loop back to the beginning when played.\r\n\t\tloop: true,\r\n\r\n\t\t// @option keepAspectRatio: Boolean = true\r\n\t\t// Whether the video will save aspect ratio after the projection.\r\n\t\t// Relevant for supported browsers. Browser compatibility- https://developer.mozilla.org/en-US/docs/Web/CSS/object-fit\r\n\t\tkeepAspectRatio: true\r\n\t},\r\n\r\n\t_initImage: function () {\r\n\t\tvar wasElementSupplied = this._url.tagName === 'VIDEO';\r\n\t\tvar vid = this._image = wasElementSupplied ? this._url : create$1('video');\r\n\r\n\t\taddClass(vid, 'leaflet-image-layer');\r\n\t\tif (this._zoomAnimated) { addClass(vid, 'leaflet-zoom-animated'); }\r\n\t\tif (this.options.className) { addClass(vid, this.options.className); }\r\n\r\n\t\tvid.onselectstart = falseFn;\r\n\t\tvid.onmousemove = falseFn;\r\n\r\n\t\t// @event load: Event\r\n\t\t// Fired when the video has finished loading the first frame\r\n\t\tvid.onloadeddata = bind(this.fire, this, 'load');\r\n\r\n\t\tif (wasElementSupplied) {\r\n\t\t\tvar sourceElements = vid.getElementsByTagName('source');\r\n\t\t\tvar sources = [];\r\n\t\t\tfor (var j = 0; j < sourceElements.length; j++) {\r\n\t\t\t\tsources.push(sourceElements[j].src);\r\n\t\t\t}\r\n\r\n\t\t\tthis._url = (sourceElements.length > 0) ? sources : [vid.src];\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (!isArray(this._url)) { this._url = [this._url]; }\r\n\r\n\t\tif (!this.options.keepAspectRatio && vid.style.hasOwnProperty('objectFit')) { vid.style['objectFit'] = 'fill'; }\r\n\t\tvid.autoplay = !!this.options.autoplay;\r\n\t\tvid.loop = !!this.options.loop;\r\n\t\tfor (var i = 0; i < this._url.length; i++) {\r\n\t\t\tvar source = create$1('source');\r\n\t\t\tsource.src = this._url[i];\r\n\t\t\tvid.appendChild(source);\r\n\t\t}\r\n\t}\r\n\r\n\t// @method getElement(): HTMLVideoElement\r\n\t// Returns the instance of [`HTMLVideoElement`](https://developer.mozilla.org/docs/Web/API/HTMLVideoElement)\r\n\t// used by this overlay.\r\n});\r\n\r\n\r\n// @factory L.videoOverlay(video: String|Array|HTMLVideoElement, bounds: LatLngBounds, options?: VideoOverlay options)\r\n// Instantiates an image overlay object given the URL of the video (or array of URLs, or even a video element) and the\r\n// geographical bounds it is tied to.\r\n\r\nfunction videoOverlay(video, bounds, options) {\r\n\treturn new VideoOverlay(video, bounds, options);\r\n}\n\n/*\n * @class SVGOverlay\n * @aka L.SVGOverlay\n * @inherits ImageOverlay\n *\n * Used to load, display and provide DOM access to an SVG file over specific bounds of the map. Extends `ImageOverlay`.\n *\n * An SVG overlay uses the [`<svg>`](https://developer.mozilla.org/docs/Web/SVG/Element/svg) element.\n *\n * @example\n *\n * ```js\n * var svgElement = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n * svgElement.setAttribute('xmlns', \"http://www.w3.org/2000/svg\");\n * svgElement.setAttribute('viewBox', \"0 0 200 200\");\n * svgElement.innerHTML = '<rect width=\"200\" height=\"200\"/><rect x=\"75\" y=\"23\" width=\"50\" height=\"50\" style=\"fill:red\"/><rect x=\"75\" y=\"123\" width=\"50\" height=\"50\" style=\"fill:#0013ff\"/>';\n * var svgElementBounds = [ [ 32, -130 ], [ 13, -100 ] ];\n * L.svgOverlay(svgElement, svgElementBounds).addTo(map);\n * ```\n */\n\nvar SVGOverlay = ImageOverlay.extend({\n\t_initImage: function () {\n\t\tvar el = this._image = this._url;\n\n\t\taddClass(el, 'leaflet-image-layer');\n\t\tif (this._zoomAnimated) { addClass(el, 'leaflet-zoom-animated'); }\n\t\tif (this.options.className) { addClass(el, this.options.className); }\n\n\t\tel.onselectstart = falseFn;\n\t\tel.onmousemove = falseFn;\n\t}\n\n\t// @method getElement(): SVGElement\n\t// Returns the instance of [`SVGElement`](https://developer.mozilla.org/docs/Web/API/SVGElement)\n\t// used by this overlay.\n});\n\n\n// @factory L.svgOverlay(svg: String|SVGElement, bounds: LatLngBounds, options?: SVGOverlay options)\n// Instantiates an image overlay object given an SVG element and the geographical bounds it is tied to.\n// A viewBox attribute is required on the SVG element to zoom in and out properly.\n\nfunction svgOverlay(el, bounds, options) {\n\treturn new SVGOverlay(el, bounds, options);\n}\n\n/*\r\n * @class DivOverlay\r\n * @inherits Layer\r\n * @aka L.DivOverlay\r\n * Base model for L.Popup and L.Tooltip. Inherit from it for custom popup like plugins.\r\n */\r\n\r\n// @namespace DivOverlay\r\nvar DivOverlay = Layer.extend({\r\n\r\n\t// @section\r\n\t// @aka DivOverlay options\r\n\toptions: {\r\n\t\t// @option offset: Point = Point(0, 7)\r\n\t\t// The offset of the popup position. Useful to control the anchor\r\n\t\t// of the popup when opening it on some overlays.\r\n\t\toffset: [0, 7],\r\n\r\n\t\t// @option className: String = ''\r\n\t\t// A custom CSS class name to assign to the popup.\r\n\t\tclassName: '',\r\n\r\n\t\t// @option pane: String = 'popupPane'\r\n\t\t// `Map pane` where the popup will be added.\r\n\t\tpane: 'popupPane'\r\n\t},\r\n\r\n\tinitialize: function (options, source) {\r\n\t\tsetOptions(this, options);\r\n\r\n\t\tthis._source = source;\r\n\t},\r\n\r\n\tonAdd: function (map) {\r\n\t\tthis._zoomAnimated = map._zoomAnimated;\r\n\r\n\t\tif (!this._container) {\r\n\t\t\tthis._initLayout();\r\n\t\t}\r\n\r\n\t\tif (map._fadeAnimated) {\r\n\t\t\tsetOpacity(this._container, 0);\r\n\t\t}\r\n\r\n\t\tclearTimeout(this._removeTimeout);\r\n\t\tthis.getPane().appendChild(this._container);\r\n\t\tthis.update();\r\n\r\n\t\tif (map._fadeAnimated) {\r\n\t\t\tsetOpacity(this._container, 1);\r\n\t\t}\r\n\r\n\t\tthis.bringToFront();\r\n\t},\r\n\r\n\tonRemove: function (map) {\r\n\t\tif (map._fadeAnimated) {\r\n\t\t\tsetOpacity(this._container, 0);\r\n\t\t\tthis._removeTimeout = setTimeout(bind(remove, undefined, this._container), 200);\r\n\t\t} else {\r\n\t\t\tremove(this._container);\r\n\t\t}\r\n\t},\r\n\r\n\t// @namespace Popup\r\n\t// @method getLatLng: LatLng\r\n\t// Returns the geographical point of popup.\r\n\tgetLatLng: function () {\r\n\t\treturn this._latlng;\r\n\t},\r\n\r\n\t// @method setLatLng(latlng: LatLng): this\r\n\t// Sets the geographical point where the popup will open.\r\n\tsetLatLng: function (latlng) {\r\n\t\tthis._latlng = toLatLng(latlng);\r\n\t\tif (this._map) {\r\n\t\t\tthis._updatePosition();\r\n\t\t\tthis._adjustPan();\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method getContent: String|HTMLElement\r\n\t// Returns the content of the popup.\r\n\tgetContent: function () {\r\n\t\treturn this._content;\r\n\t},\r\n\r\n\t// @method setContent(htmlContent: String|HTMLElement|Function): this\r\n\t// Sets the HTML content of the popup. If a function is passed the source layer will be passed to the function. The function should return a `String` or `HTMLElement` to be used in the popup.\r\n\tsetContent: function (content) {\r\n\t\tthis._content = content;\r\n\t\tthis.update();\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method getElement: String|HTMLElement\r\n\t// Alias for [getContent()](#popup-getcontent)\r\n\tgetElement: function () {\r\n\t\treturn this._container;\r\n\t},\r\n\r\n\t// @method update: null\r\n\t// Updates the popup content, layout and position. Useful for updating the popup after something inside changed, e.g. image loaded.\r\n\tupdate: function () {\r\n\t\tif (!this._map) { return; }\r\n\r\n\t\tthis._container.style.visibility = 'hidden';\r\n\r\n\t\tthis._updateContent();\r\n\t\tthis._updateLayout();\r\n\t\tthis._updatePosition();\r\n\r\n\t\tthis._container.style.visibility = '';\r\n\r\n\t\tthis._adjustPan();\r\n\t},\r\n\r\n\tgetEvents: function () {\r\n\t\tvar events = {\r\n\t\t\tzoom: this._updatePosition,\r\n\t\t\tviewreset: this._updatePosition\r\n\t\t};\r\n\r\n\t\tif (this._zoomAnimated) {\r\n\t\t\tevents.zoomanim = this._animateZoom;\r\n\t\t}\r\n\t\treturn events;\r\n\t},\r\n\r\n\t// @method isOpen: Boolean\r\n\t// Returns `true` when the popup is visible on the map.\r\n\tisOpen: function () {\r\n\t\treturn !!this._map && this._map.hasLayer(this);\r\n\t},\r\n\r\n\t// @method bringToFront: this\r\n\t// Brings this popup in front of other popups (in the same map pane).\r\n\tbringToFront: function () {\r\n\t\tif (this._map) {\r\n\t\t\ttoFront(this._container);\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method bringToBack: this\r\n\t// Brings this popup to the back of other popups (in the same map pane).\r\n\tbringToBack: function () {\r\n\t\tif (this._map) {\r\n\t\t\ttoBack(this._container);\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t_prepareOpen: function (parent, layer, latlng) {\r\n\t\tif (!(layer instanceof Layer)) {\r\n\t\t\tlatlng = layer;\r\n\t\t\tlayer = parent;\r\n\t\t}\r\n\r\n\t\tif (layer instanceof FeatureGroup) {\r\n\t\t\tfor (var id in parent._layers) {\r\n\t\t\t\tlayer = parent._layers[id];\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (!latlng) {\r\n\t\t\tif (layer.getCenter) {\r\n\t\t\t\tlatlng = layer.getCenter();\r\n\t\t\t} else if (layer.getLatLng) {\r\n\t\t\t\tlatlng = layer.getLatLng();\r\n\t\t\t} else {\r\n\t\t\t\tthrow new Error('Unable to get source layer LatLng.');\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// set overlay source to this layer\r\n\t\tthis._source = layer;\r\n\r\n\t\t// update the overlay (content, layout, ect...)\r\n\t\tthis.update();\r\n\r\n\t\treturn latlng;\r\n\t},\r\n\r\n\t_updateContent: function () {\r\n\t\tif (!this._content) { return; }\r\n\r\n\t\tvar node = this._contentNode;\r\n\t\tvar content = (typeof this._content === 'function') ? this._content(this._source || this) : this._content;\r\n\r\n\t\tif (typeof content === 'string') {\r\n\t\t\tnode.innerHTML = content;\r\n\t\t} else {\r\n\t\t\twhile (node.hasChildNodes()) {\r\n\t\t\t\tnode.removeChild(node.firstChild);\r\n\t\t\t}\r\n\t\t\tnode.appendChild(content);\r\n\t\t}\r\n\t\tthis.fire('contentupdate');\r\n\t},\r\n\r\n\t_updatePosition: function () {\r\n\t\tif (!this._map) { return; }\r\n\r\n\t\tvar pos = this._map.latLngToLayerPoint(this._latlng),\r\n\t\t    offset = toPoint(this.options.offset),\r\n\t\t    anchor = this._getAnchor();\r\n\r\n\t\tif (this._zoomAnimated) {\r\n\t\t\tsetPosition(this._container, pos.add(anchor));\r\n\t\t} else {\r\n\t\t\toffset = offset.add(pos).add(anchor);\r\n\t\t}\r\n\r\n\t\tvar bottom = this._containerBottom = -offset.y,\r\n\t\t    left = this._containerLeft = -Math.round(this._containerWidth / 2) + offset.x;\r\n\r\n\t\t// bottom position the popup in case the height of the popup changes (images loading etc)\r\n\t\tthis._container.style.bottom = bottom + 'px';\r\n\t\tthis._container.style.left = left + 'px';\r\n\t},\r\n\r\n\t_getAnchor: function () {\r\n\t\treturn [0, 0];\r\n\t}\r\n\r\n});\n\n/*\r\n * @class Popup\r\n * @inherits DivOverlay\r\n * @aka L.Popup\r\n * Used to open popups in certain places of the map. Use [Map.openPopup](#map-openpopup) to\r\n * open popups while making sure that only one popup is open at one time\r\n * (recommended for usability), or use [Map.addLayer](#map-addlayer) to open as many as you want.\r\n *\r\n * @example\r\n *\r\n * If you want to just bind a popup to marker click and then open it, it's really easy:\r\n *\r\n * ```js\r\n * marker.bindPopup(popupContent).openPopup();\r\n * ```\r\n * Path overlays like polylines also have a `bindPopup` method.\r\n * Here's a more complicated way to open a popup on a map:\r\n *\r\n * ```js\r\n * var popup = L.popup()\r\n * \t.setLatLng(latlng)\r\n * \t.setContent('<p>Hello world!<br />This is a nice popup.</p>')\r\n * \t.openOn(map);\r\n * ```\r\n */\r\n\r\n\r\n// @namespace Popup\r\nvar Popup = DivOverlay.extend({\r\n\r\n\t// @section\r\n\t// @aka Popup options\r\n\toptions: {\r\n\t\t// @option maxWidth: Number = 300\r\n\t\t// Max width of the popup, in pixels.\r\n\t\tmaxWidth: 300,\r\n\r\n\t\t// @option minWidth: Number = 50\r\n\t\t// Min width of the popup, in pixels.\r\n\t\tminWidth: 50,\r\n\r\n\t\t// @option maxHeight: Number = null\r\n\t\t// If set, creates a scrollable container of the given height\r\n\t\t// inside a popup if its content exceeds it.\r\n\t\tmaxHeight: null,\r\n\r\n\t\t// @option autoPan: Boolean = true\r\n\t\t// Set it to `false` if you don't want the map to do panning animation\r\n\t\t// to fit the opened popup.\r\n\t\tautoPan: true,\r\n\r\n\t\t// @option autoPanPaddingTopLeft: Point = null\r\n\t\t// The margin between the popup and the top left corner of the map\r\n\t\t// view after autopanning was performed.\r\n\t\tautoPanPaddingTopLeft: null,\r\n\r\n\t\t// @option autoPanPaddingBottomRight: Point = null\r\n\t\t// The margin between the popup and the bottom right corner of the map\r\n\t\t// view after autopanning was performed.\r\n\t\tautoPanPaddingBottomRight: null,\r\n\r\n\t\t// @option autoPanPadding: Point = Point(5, 5)\r\n\t\t// Equivalent of setting both top left and bottom right autopan padding to the same value.\r\n\t\tautoPanPadding: [5, 5],\r\n\r\n\t\t// @option keepInView: Boolean = false\r\n\t\t// Set it to `true` if you want to prevent users from panning the popup\r\n\t\t// off of the screen while it is open.\r\n\t\tkeepInView: false,\r\n\r\n\t\t// @option closeButton: Boolean = true\r\n\t\t// Controls the presence of a close button in the popup.\r\n\t\tcloseButton: true,\r\n\r\n\t\t// @option autoClose: Boolean = true\r\n\t\t// Set it to `false` if you want to override the default behavior of\r\n\t\t// the popup closing when another popup is opened.\r\n\t\tautoClose: true,\r\n\r\n\t\t// @option closeOnEscapeKey: Boolean = true\r\n\t\t// Set it to `false` if you want to override the default behavior of\r\n\t\t// the ESC key for closing of the popup.\r\n\t\tcloseOnEscapeKey: true,\r\n\r\n\t\t// @option closeOnClick: Boolean = *\r\n\t\t// Set it if you want to override the default behavior of the popup closing when user clicks\r\n\t\t// on the map. Defaults to the map's [`closePopupOnClick`](#map-closepopuponclick) option.\r\n\r\n\t\t// @option className: String = ''\r\n\t\t// A custom CSS class name to assign to the popup.\r\n\t\tclassName: ''\r\n\t},\r\n\r\n\t// @namespace Popup\r\n\t// @method openOn(map: Map): this\r\n\t// Adds the popup to the map and closes the previous one. The same as `map.openPopup(popup)`.\r\n\topenOn: function (map) {\r\n\t\tmap.openPopup(this);\r\n\t\treturn this;\r\n\t},\r\n\r\n\tonAdd: function (map) {\r\n\t\tDivOverlay.prototype.onAdd.call(this, map);\r\n\r\n\t\t// @namespace Map\r\n\t\t// @section Popup events\r\n\t\t// @event popupopen: PopupEvent\r\n\t\t// Fired when a popup is opened in the map\r\n\t\tmap.fire('popupopen', {popup: this});\r\n\r\n\t\tif (this._source) {\r\n\t\t\t// @namespace Layer\r\n\t\t\t// @section Popup events\r\n\t\t\t// @event popupopen: PopupEvent\r\n\t\t\t// Fired when a popup bound to this layer is opened\r\n\t\t\tthis._source.fire('popupopen', {popup: this}, true);\r\n\t\t\t// For non-path layers, we toggle the popup when clicking\r\n\t\t\t// again the layer, so prevent the map to reopen it.\r\n\t\t\tif (!(this._source instanceof Path)) {\r\n\t\t\t\tthis._source.on('preclick', stopPropagation);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tonRemove: function (map) {\r\n\t\tDivOverlay.prototype.onRemove.call(this, map);\r\n\r\n\t\t// @namespace Map\r\n\t\t// @section Popup events\r\n\t\t// @event popupclose: PopupEvent\r\n\t\t// Fired when a popup in the map is closed\r\n\t\tmap.fire('popupclose', {popup: this});\r\n\r\n\t\tif (this._source) {\r\n\t\t\t// @namespace Layer\r\n\t\t\t// @section Popup events\r\n\t\t\t// @event popupclose: PopupEvent\r\n\t\t\t// Fired when a popup bound to this layer is closed\r\n\t\t\tthis._source.fire('popupclose', {popup: this}, true);\r\n\t\t\tif (!(this._source instanceof Path)) {\r\n\t\t\t\tthis._source.off('preclick', stopPropagation);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tgetEvents: function () {\r\n\t\tvar events = DivOverlay.prototype.getEvents.call(this);\r\n\r\n\t\tif (this.options.closeOnClick !== undefined ? this.options.closeOnClick : this._map.options.closePopupOnClick) {\r\n\t\t\tevents.preclick = this._close;\r\n\t\t}\r\n\r\n\t\tif (this.options.keepInView) {\r\n\t\t\tevents.moveend = this._adjustPan;\r\n\t\t}\r\n\r\n\t\treturn events;\r\n\t},\r\n\r\n\t_close: function () {\r\n\t\tif (this._map) {\r\n\t\t\tthis._map.closePopup(this);\r\n\t\t}\r\n\t},\r\n\r\n\t_initLayout: function () {\r\n\t\tvar prefix = 'leaflet-popup',\r\n\t\t    container = this._container = create$1('div',\r\n\t\t\tprefix + ' ' + (this.options.className || '') +\r\n\t\t\t' leaflet-zoom-animated');\r\n\r\n\t\tvar wrapper = this._wrapper = create$1('div', prefix + '-content-wrapper', container);\r\n\t\tthis._contentNode = create$1('div', prefix + '-content', wrapper);\r\n\r\n\t\tdisableClickPropagation(wrapper);\r\n\t\tdisableScrollPropagation(this._contentNode);\r\n\t\ton(wrapper, 'contextmenu', stopPropagation);\r\n\r\n\t\tthis._tipContainer = create$1('div', prefix + '-tip-container', container);\r\n\t\tthis._tip = create$1('div', prefix + '-tip', this._tipContainer);\r\n\r\n\t\tif (this.options.closeButton) {\r\n\t\t\tvar closeButton = this._closeButton = create$1('a', prefix + '-close-button', container);\r\n\t\t\tcloseButton.href = '#close';\r\n\t\t\tcloseButton.innerHTML = '&#215;';\r\n\r\n\t\t\ton(closeButton, 'click', this._onCloseButtonClick, this);\r\n\t\t}\r\n\t},\r\n\r\n\t_updateLayout: function () {\r\n\t\tvar container = this._contentNode,\r\n\t\t    style = container.style;\r\n\r\n\t\tstyle.width = '';\r\n\t\tstyle.whiteSpace = 'nowrap';\r\n\r\n\t\tvar width = container.offsetWidth;\r\n\t\twidth = Math.min(width, this.options.maxWidth);\r\n\t\twidth = Math.max(width, this.options.minWidth);\r\n\r\n\t\tstyle.width = (width + 1) + 'px';\r\n\t\tstyle.whiteSpace = '';\r\n\r\n\t\tstyle.height = '';\r\n\r\n\t\tvar height = container.offsetHeight,\r\n\t\t    maxHeight = this.options.maxHeight,\r\n\t\t    scrolledClass = 'leaflet-popup-scrolled';\r\n\r\n\t\tif (maxHeight && height > maxHeight) {\r\n\t\t\tstyle.height = maxHeight + 'px';\r\n\t\t\taddClass(container, scrolledClass);\r\n\t\t} else {\r\n\t\t\tremoveClass(container, scrolledClass);\r\n\t\t}\r\n\r\n\t\tthis._containerWidth = this._container.offsetWidth;\r\n\t},\r\n\r\n\t_animateZoom: function (e) {\r\n\t\tvar pos = this._map._latLngToNewLayerPoint(this._latlng, e.zoom, e.center),\r\n\t\t    anchor = this._getAnchor();\r\n\t\tsetPosition(this._container, pos.add(anchor));\r\n\t},\r\n\r\n\t_adjustPan: function () {\r\n\t\tif (!this.options.autoPan) { return; }\r\n\t\tif (this._map._panAnim) { this._map._panAnim.stop(); }\r\n\r\n\t\tvar map = this._map,\r\n\t\t    marginBottom = parseInt(getStyle(this._container, 'marginBottom'), 10) || 0,\r\n\t\t    containerHeight = this._container.offsetHeight + marginBottom,\r\n\t\t    containerWidth = this._containerWidth,\r\n\t\t    layerPos = new Point(this._containerLeft, -containerHeight - this._containerBottom);\r\n\r\n\t\tlayerPos._add(getPosition(this._container));\r\n\r\n\t\tvar containerPos = map.layerPointToContainerPoint(layerPos),\r\n\t\t    padding = toPoint(this.options.autoPanPadding),\r\n\t\t    paddingTL = toPoint(this.options.autoPanPaddingTopLeft || padding),\r\n\t\t    paddingBR = toPoint(this.options.autoPanPaddingBottomRight || padding),\r\n\t\t    size = map.getSize(),\r\n\t\t    dx = 0,\r\n\t\t    dy = 0;\r\n\r\n\t\tif (containerPos.x + containerWidth + paddingBR.x > size.x) { // right\r\n\t\t\tdx = containerPos.x + containerWidth - size.x + paddingBR.x;\r\n\t\t}\r\n\t\tif (containerPos.x - dx - paddingTL.x < 0) { // left\r\n\t\t\tdx = containerPos.x - paddingTL.x;\r\n\t\t}\r\n\t\tif (containerPos.y + containerHeight + paddingBR.y > size.y) { // bottom\r\n\t\t\tdy = containerPos.y + containerHeight - size.y + paddingBR.y;\r\n\t\t}\r\n\t\tif (containerPos.y - dy - paddingTL.y < 0) { // top\r\n\t\t\tdy = containerPos.y - paddingTL.y;\r\n\t\t}\r\n\r\n\t\t// @namespace Map\r\n\t\t// @section Popup events\r\n\t\t// @event autopanstart: Event\r\n\t\t// Fired when the map starts autopanning when opening a popup.\r\n\t\tif (dx || dy) {\r\n\t\t\tmap\r\n\t\t\t    .fire('autopanstart')\r\n\t\t\t    .panBy([dx, dy]);\r\n\t\t}\r\n\t},\r\n\r\n\t_onCloseButtonClick: function (e) {\r\n\t\tthis._close();\r\n\t\tstop(e);\r\n\t},\r\n\r\n\t_getAnchor: function () {\r\n\t\t// Where should we anchor the popup on the source layer?\r\n\t\treturn toPoint(this._source && this._source._getPopupAnchor ? this._source._getPopupAnchor() : [0, 0]);\r\n\t}\r\n\r\n});\r\n\r\n// @namespace Popup\r\n// @factory L.popup(options?: Popup options, source?: Layer)\r\n// Instantiates a `Popup` object given an optional `options` object that describes its appearance and location and an optional `source` object that is used to tag the popup with a reference to the Layer to which it refers.\r\nvar popup = function (options, source) {\r\n\treturn new Popup(options, source);\r\n};\r\n\r\n\r\n/* @namespace Map\r\n * @section Interaction Options\r\n * @option closePopupOnClick: Boolean = true\r\n * Set it to `false` if you don't want popups to close when user clicks the map.\r\n */\r\nMap.mergeOptions({\r\n\tclosePopupOnClick: true\r\n});\r\n\r\n\r\n// @namespace Map\r\n// @section Methods for Layers and Controls\r\nMap.include({\r\n\t// @method openPopup(popup: Popup): this\r\n\t// Opens the specified popup while closing the previously opened (to make sure only one is opened at one time for usability).\r\n\t// @alternative\r\n\t// @method openPopup(content: String|HTMLElement, latlng: LatLng, options?: Popup options): this\r\n\t// Creates a popup with the specified content and options and opens it in the given point on a map.\r\n\topenPopup: function (popup, latlng, options) {\r\n\t\tif (!(popup instanceof Popup)) {\r\n\t\t\tpopup = new Popup(options).setContent(popup);\r\n\t\t}\r\n\r\n\t\tif (latlng) {\r\n\t\t\tpopup.setLatLng(latlng);\r\n\t\t}\r\n\r\n\t\tif (this.hasLayer(popup)) {\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\tif (this._popup && this._popup.options.autoClose) {\r\n\t\t\tthis.closePopup();\r\n\t\t}\r\n\r\n\t\tthis._popup = popup;\r\n\t\treturn this.addLayer(popup);\r\n\t},\r\n\r\n\t// @method closePopup(popup?: Popup): this\r\n\t// Closes the popup previously opened with [openPopup](#map-openpopup) (or the given one).\r\n\tclosePopup: function (popup) {\r\n\t\tif (!popup || popup === this._popup) {\r\n\t\t\tpopup = this._popup;\r\n\t\t\tthis._popup = null;\r\n\t\t}\r\n\t\tif (popup) {\r\n\t\t\tthis.removeLayer(popup);\r\n\t\t}\r\n\t\treturn this;\r\n\t}\r\n});\r\n\r\n/*\r\n * @namespace Layer\r\n * @section Popup methods example\r\n *\r\n * All layers share a set of methods convenient for binding popups to it.\r\n *\r\n * ```js\r\n * var layer = L.Polygon(latlngs).bindPopup('Hi There!').addTo(map);\r\n * layer.openPopup();\r\n * layer.closePopup();\r\n * ```\r\n *\r\n * Popups will also be automatically opened when the layer is clicked on and closed when the layer is removed from the map or another popup is opened.\r\n */\r\n\r\n// @section Popup methods\r\nLayer.include({\r\n\r\n\t// @method bindPopup(content: String|HTMLElement|Function|Popup, options?: Popup options): this\r\n\t// Binds a popup to the layer with the passed `content` and sets up the\r\n\t// necessary event listeners. If a `Function` is passed it will receive\r\n\t// the layer as the first argument and should return a `String` or `HTMLElement`.\r\n\tbindPopup: function (content, options) {\r\n\r\n\t\tif (content instanceof Popup) {\r\n\t\t\tsetOptions(content, options);\r\n\t\t\tthis._popup = content;\r\n\t\t\tcontent._source = this;\r\n\t\t} else {\r\n\t\t\tif (!this._popup || options) {\r\n\t\t\t\tthis._popup = new Popup(options, this);\r\n\t\t\t}\r\n\t\t\tthis._popup.setContent(content);\r\n\t\t}\r\n\r\n\t\tif (!this._popupHandlersAdded) {\r\n\t\t\tthis.on({\r\n\t\t\t\tclick: this._openPopup,\r\n\t\t\t\tkeypress: this._onKeyPress,\r\n\t\t\t\tremove: this.closePopup,\r\n\t\t\t\tmove: this._movePopup\r\n\t\t\t});\r\n\t\t\tthis._popupHandlersAdded = true;\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method unbindPopup(): this\r\n\t// Removes the popup previously bound with `bindPopup`.\r\n\tunbindPopup: function () {\r\n\t\tif (this._popup) {\r\n\t\t\tthis.off({\r\n\t\t\t\tclick: this._openPopup,\r\n\t\t\t\tkeypress: this._onKeyPress,\r\n\t\t\t\tremove: this.closePopup,\r\n\t\t\t\tmove: this._movePopup\r\n\t\t\t});\r\n\t\t\tthis._popupHandlersAdded = false;\r\n\t\t\tthis._popup = null;\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method openPopup(latlng?: LatLng): this\r\n\t// Opens the bound popup at the specified `latlng` or at the default popup anchor if no `latlng` is passed.\r\n\topenPopup: function (layer, latlng) {\r\n\t\tif (this._popup && this._map) {\r\n\t\t\tlatlng = this._popup._prepareOpen(this, layer, latlng);\r\n\r\n\t\t\t// open the popup on the map\r\n\t\t\tthis._map.openPopup(this._popup, latlng);\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method closePopup(): this\r\n\t// Closes the popup bound to this layer if it is open.\r\n\tclosePopup: function () {\r\n\t\tif (this._popup) {\r\n\t\t\tthis._popup._close();\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method togglePopup(): this\r\n\t// Opens or closes the popup bound to this layer depending on its current state.\r\n\ttogglePopup: function (target) {\r\n\t\tif (this._popup) {\r\n\t\t\tif (this._popup._map) {\r\n\t\t\t\tthis.closePopup();\r\n\t\t\t} else {\r\n\t\t\t\tthis.openPopup(target);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method isPopupOpen(): boolean\r\n\t// Returns `true` if the popup bound to this layer is currently open.\r\n\tisPopupOpen: function () {\r\n\t\treturn (this._popup ? this._popup.isOpen() : false);\r\n\t},\r\n\r\n\t// @method setPopupContent(content: String|HTMLElement|Popup): this\r\n\t// Sets the content of the popup bound to this layer.\r\n\tsetPopupContent: function (content) {\r\n\t\tif (this._popup) {\r\n\t\t\tthis._popup.setContent(content);\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method getPopup(): Popup\r\n\t// Returns the popup bound to this layer.\r\n\tgetPopup: function () {\r\n\t\treturn this._popup;\r\n\t},\r\n\r\n\t_openPopup: function (e) {\r\n\t\tvar layer = e.layer || e.target;\r\n\r\n\t\tif (!this._popup) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (!this._map) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// prevent map click\r\n\t\tstop(e);\r\n\r\n\t\t// if this inherits from Path its a vector and we can just\r\n\t\t// open the popup at the new location\r\n\t\tif (layer instanceof Path) {\r\n\t\t\tthis.openPopup(e.layer || e.target, e.latlng);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// otherwise treat it like a marker and figure out\r\n\t\t// if we should toggle it open/closed\r\n\t\tif (this._map.hasLayer(this._popup) && this._popup._source === layer) {\r\n\t\t\tthis.closePopup();\r\n\t\t} else {\r\n\t\t\tthis.openPopup(layer, e.latlng);\r\n\t\t}\r\n\t},\r\n\r\n\t_movePopup: function (e) {\r\n\t\tthis._popup.setLatLng(e.latlng);\r\n\t},\r\n\r\n\t_onKeyPress: function (e) {\r\n\t\tif (e.originalEvent.keyCode === 13) {\r\n\t\t\tthis._openPopup(e);\r\n\t\t}\r\n\t}\r\n});\n\n/*\n * @class Tooltip\n * @inherits DivOverlay\n * @aka L.Tooltip\n * Used to display small texts on top of map layers.\n *\n * @example\n *\n * ```js\n * marker.bindTooltip(\"my tooltip text\").openTooltip();\n * ```\n * Note about tooltip offset. Leaflet takes two options in consideration\n * for computing tooltip offsetting:\n * - the `offset` Tooltip option: it defaults to [0, 0], and it's specific to one tooltip.\n *   Add a positive x offset to move the tooltip to the right, and a positive y offset to\n *   move it to the bottom. Negatives will move to the left and top.\n * - the `tooltipAnchor` Icon option: this will only be considered for Marker. You\n *   should adapt this value if you use a custom icon.\n */\n\n\n// @namespace Tooltip\nvar Tooltip = DivOverlay.extend({\n\n\t// @section\n\t// @aka Tooltip options\n\toptions: {\n\t\t// @option pane: String = 'tooltipPane'\n\t\t// `Map pane` where the tooltip will be added.\n\t\tpane: 'tooltipPane',\n\n\t\t// @option offset: Point = Point(0, 0)\n\t\t// Optional offset of the tooltip position.\n\t\toffset: [0, 0],\n\n\t\t// @option direction: String = 'auto'\n\t\t// Direction where to open the tooltip. Possible values are: `right`, `left`,\n\t\t// `top`, `bottom`, `center`, `auto`.\n\t\t// `auto` will dynamically switch between `right` and `left` according to the tooltip\n\t\t// position on the map.\n\t\tdirection: 'auto',\n\n\t\t// @option permanent: Boolean = false\n\t\t// Whether to open the tooltip permanently or only on mouseover.\n\t\tpermanent: false,\n\n\t\t// @option sticky: Boolean = false\n\t\t// If true, the tooltip will follow the mouse instead of being fixed at the feature center.\n\t\tsticky: false,\n\n\t\t// @option interactive: Boolean = false\n\t\t// If true, the tooltip will listen to the feature events.\n\t\tinteractive: false,\n\n\t\t// @option opacity: Number = 0.9\n\t\t// Tooltip container opacity.\n\t\topacity: 0.9\n\t},\n\n\tonAdd: function (map) {\n\t\tDivOverlay.prototype.onAdd.call(this, map);\n\t\tthis.setOpacity(this.options.opacity);\n\n\t\t// @namespace Map\n\t\t// @section Tooltip events\n\t\t// @event tooltipopen: TooltipEvent\n\t\t// Fired when a tooltip is opened in the map.\n\t\tmap.fire('tooltipopen', {tooltip: this});\n\n\t\tif (this._source) {\n\t\t\t// @namespace Layer\n\t\t\t// @section Tooltip events\n\t\t\t// @event tooltipopen: TooltipEvent\n\t\t\t// Fired when a tooltip bound to this layer is opened.\n\t\t\tthis._source.fire('tooltipopen', {tooltip: this}, true);\n\t\t}\n\t},\n\n\tonRemove: function (map) {\n\t\tDivOverlay.prototype.onRemove.call(this, map);\n\n\t\t// @namespace Map\n\t\t// @section Tooltip events\n\t\t// @event tooltipclose: TooltipEvent\n\t\t// Fired when a tooltip in the map is closed.\n\t\tmap.fire('tooltipclose', {tooltip: this});\n\n\t\tif (this._source) {\n\t\t\t// @namespace Layer\n\t\t\t// @section Tooltip events\n\t\t\t// @event tooltipclose: TooltipEvent\n\t\t\t// Fired when a tooltip bound to this layer is closed.\n\t\t\tthis._source.fire('tooltipclose', {tooltip: this}, true);\n\t\t}\n\t},\n\n\tgetEvents: function () {\n\t\tvar events = DivOverlay.prototype.getEvents.call(this);\n\n\t\tif (touch && !this.options.permanent) {\n\t\t\tevents.preclick = this._close;\n\t\t}\n\n\t\treturn events;\n\t},\n\n\t_close: function () {\n\t\tif (this._map) {\n\t\t\tthis._map.closeTooltip(this);\n\t\t}\n\t},\n\n\t_initLayout: function () {\n\t\tvar prefix = 'leaflet-tooltip',\n\t\t    className = prefix + ' ' + (this.options.className || '') + ' leaflet-zoom-' + (this._zoomAnimated ? 'animated' : 'hide');\n\n\t\tthis._contentNode = this._container = create$1('div', className);\n\t},\n\n\t_updateLayout: function () {},\n\n\t_adjustPan: function () {},\n\n\t_setPosition: function (pos) {\n\t\tvar map = this._map,\n\t\t    container = this._container,\n\t\t    centerPoint = map.latLngToContainerPoint(map.getCenter()),\n\t\t    tooltipPoint = map.layerPointToContainerPoint(pos),\n\t\t    direction = this.options.direction,\n\t\t    tooltipWidth = container.offsetWidth,\n\t\t    tooltipHeight = container.offsetHeight,\n\t\t    offset = toPoint(this.options.offset),\n\t\t    anchor = this._getAnchor();\n\n\t\tif (direction === 'top') {\n\t\t\tpos = pos.add(toPoint(-tooltipWidth / 2 + offset.x, -tooltipHeight + offset.y + anchor.y, true));\n\t\t} else if (direction === 'bottom') {\n\t\t\tpos = pos.subtract(toPoint(tooltipWidth / 2 - offset.x, -offset.y, true));\n\t\t} else if (direction === 'center') {\n\t\t\tpos = pos.subtract(toPoint(tooltipWidth / 2 + offset.x, tooltipHeight / 2 - anchor.y + offset.y, true));\n\t\t} else if (direction === 'right' || direction === 'auto' && tooltipPoint.x < centerPoint.x) {\n\t\t\tdirection = 'right';\n\t\t\tpos = pos.add(toPoint(offset.x + anchor.x, anchor.y - tooltipHeight / 2 + offset.y, true));\n\t\t} else {\n\t\t\tdirection = 'left';\n\t\t\tpos = pos.subtract(toPoint(tooltipWidth + anchor.x - offset.x, tooltipHeight / 2 - anchor.y - offset.y, true));\n\t\t}\n\n\t\tremoveClass(container, 'leaflet-tooltip-right');\n\t\tremoveClass(container, 'leaflet-tooltip-left');\n\t\tremoveClass(container, 'leaflet-tooltip-top');\n\t\tremoveClass(container, 'leaflet-tooltip-bottom');\n\t\taddClass(container, 'leaflet-tooltip-' + direction);\n\t\tsetPosition(container, pos);\n\t},\n\n\t_updatePosition: function () {\n\t\tvar pos = this._map.latLngToLayerPoint(this._latlng);\n\t\tthis._setPosition(pos);\n\t},\n\n\tsetOpacity: function (opacity) {\n\t\tthis.options.opacity = opacity;\n\n\t\tif (this._container) {\n\t\t\tsetOpacity(this._container, opacity);\n\t\t}\n\t},\n\n\t_animateZoom: function (e) {\n\t\tvar pos = this._map._latLngToNewLayerPoint(this._latlng, e.zoom, e.center);\n\t\tthis._setPosition(pos);\n\t},\n\n\t_getAnchor: function () {\n\t\t// Where should we anchor the tooltip on the source layer?\n\t\treturn toPoint(this._source && this._source._getTooltipAnchor && !this.options.sticky ? this._source._getTooltipAnchor() : [0, 0]);\n\t}\n\n});\n\n// @namespace Tooltip\n// @factory L.tooltip(options?: Tooltip options, source?: Layer)\n// Instantiates a Tooltip object given an optional `options` object that describes its appearance and location and an optional `source` object that is used to tag the tooltip with a reference to the Layer to which it refers.\nvar tooltip = function (options, source) {\n\treturn new Tooltip(options, source);\n};\n\n// @namespace Map\n// @section Methods for Layers and Controls\nMap.include({\n\n\t// @method openTooltip(tooltip: Tooltip): this\n\t// Opens the specified tooltip.\n\t// @alternative\n\t// @method openTooltip(content: String|HTMLElement, latlng: LatLng, options?: Tooltip options): this\n\t// Creates a tooltip with the specified content and options and open it.\n\topenTooltip: function (tooltip, latlng, options) {\n\t\tif (!(tooltip instanceof Tooltip)) {\n\t\t\ttooltip = new Tooltip(options).setContent(tooltip);\n\t\t}\n\n\t\tif (latlng) {\n\t\t\ttooltip.setLatLng(latlng);\n\t\t}\n\n\t\tif (this.hasLayer(tooltip)) {\n\t\t\treturn this;\n\t\t}\n\n\t\treturn this.addLayer(tooltip);\n\t},\n\n\t// @method closeTooltip(tooltip?: Tooltip): this\n\t// Closes the tooltip given as parameter.\n\tcloseTooltip: function (tooltip) {\n\t\tif (tooltip) {\n\t\t\tthis.removeLayer(tooltip);\n\t\t}\n\t\treturn this;\n\t}\n\n});\n\n/*\n * @namespace Layer\n * @section Tooltip methods example\n *\n * All layers share a set of methods convenient for binding tooltips to it.\n *\n * ```js\n * var layer = L.Polygon(latlngs).bindTooltip('Hi There!').addTo(map);\n * layer.openTooltip();\n * layer.closeTooltip();\n * ```\n */\n\n// @section Tooltip methods\nLayer.include({\n\n\t// @method bindTooltip(content: String|HTMLElement|Function|Tooltip, options?: Tooltip options): this\n\t// Binds a tooltip to the layer with the passed `content` and sets up the\n\t// necessary event listeners. If a `Function` is passed it will receive\n\t// the layer as the first argument and should return a `String` or `HTMLElement`.\n\tbindTooltip: function (content, options) {\n\n\t\tif (content instanceof Tooltip) {\n\t\t\tsetOptions(content, options);\n\t\t\tthis._tooltip = content;\n\t\t\tcontent._source = this;\n\t\t} else {\n\t\t\tif (!this._tooltip || options) {\n\t\t\t\tthis._tooltip = new Tooltip(options, this);\n\t\t\t}\n\t\t\tthis._tooltip.setContent(content);\n\n\t\t}\n\n\t\tthis._initTooltipInteractions();\n\n\t\tif (this._tooltip.options.permanent && this._map && this._map.hasLayer(this)) {\n\t\t\tthis.openTooltip();\n\t\t}\n\n\t\treturn this;\n\t},\n\n\t// @method unbindTooltip(): this\n\t// Removes the tooltip previously bound with `bindTooltip`.\n\tunbindTooltip: function () {\n\t\tif (this._tooltip) {\n\t\t\tthis._initTooltipInteractions(true);\n\t\t\tthis.closeTooltip();\n\t\t\tthis._tooltip = null;\n\t\t}\n\t\treturn this;\n\t},\n\n\t_initTooltipInteractions: function (remove$$1) {\n\t\tif (!remove$$1 && this._tooltipHandlersAdded) { return; }\n\t\tvar onOff = remove$$1 ? 'off' : 'on',\n\t\t    events = {\n\t\t\tremove: this.closeTooltip,\n\t\t\tmove: this._moveTooltip\n\t\t    };\n\t\tif (!this._tooltip.options.permanent) {\n\t\t\tevents.mouseover = this._openTooltip;\n\t\t\tevents.mouseout = this.closeTooltip;\n\t\t\tif (this._tooltip.options.sticky) {\n\t\t\t\tevents.mousemove = this._moveTooltip;\n\t\t\t}\n\t\t\tif (touch) {\n\t\t\t\tevents.click = this._openTooltip;\n\t\t\t}\n\t\t} else {\n\t\t\tevents.add = this._openTooltip;\n\t\t}\n\t\tthis[onOff](events);\n\t\tthis._tooltipHandlersAdded = !remove$$1;\n\t},\n\n\t// @method openTooltip(latlng?: LatLng): this\n\t// Opens the bound tooltip at the specified `latlng` or at the default tooltip anchor if no `latlng` is passed.\n\topenTooltip: function (layer, latlng) {\n\t\tif (this._tooltip && this._map) {\n\t\t\tlatlng = this._tooltip._prepareOpen(this, layer, latlng);\n\n\t\t\t// open the tooltip on the map\n\t\t\tthis._map.openTooltip(this._tooltip, latlng);\n\n\t\t\t// Tooltip container may not be defined if not permanent and never\n\t\t\t// opened.\n\t\t\tif (this._tooltip.options.interactive && this._tooltip._container) {\n\t\t\t\taddClass(this._tooltip._container, 'leaflet-clickable');\n\t\t\t\tthis.addInteractiveTarget(this._tooltip._container);\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\t// @method closeTooltip(): this\n\t// Closes the tooltip bound to this layer if it is open.\n\tcloseTooltip: function () {\n\t\tif (this._tooltip) {\n\t\t\tthis._tooltip._close();\n\t\t\tif (this._tooltip.options.interactive && this._tooltip._container) {\n\t\t\t\tremoveClass(this._tooltip._container, 'leaflet-clickable');\n\t\t\t\tthis.removeInteractiveTarget(this._tooltip._container);\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t},\n\n\t// @method toggleTooltip(): this\n\t// Opens or closes the tooltip bound to this layer depending on its current state.\n\ttoggleTooltip: function (target) {\n\t\tif (this._tooltip) {\n\t\t\tif (this._tooltip._map) {\n\t\t\t\tthis.closeTooltip();\n\t\t\t} else {\n\t\t\t\tthis.openTooltip(target);\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t},\n\n\t// @method isTooltipOpen(): boolean\n\t// Returns `true` if the tooltip bound to this layer is currently open.\n\tisTooltipOpen: function () {\n\t\treturn this._tooltip.isOpen();\n\t},\n\n\t// @method setTooltipContent(content: String|HTMLElement|Tooltip): this\n\t// Sets the content of the tooltip bound to this layer.\n\tsetTooltipContent: function (content) {\n\t\tif (this._tooltip) {\n\t\t\tthis._tooltip.setContent(content);\n\t\t}\n\t\treturn this;\n\t},\n\n\t// @method getTooltip(): Tooltip\n\t// Returns the tooltip bound to this layer.\n\tgetTooltip: function () {\n\t\treturn this._tooltip;\n\t},\n\n\t_openTooltip: function (e) {\n\t\tvar layer = e.layer || e.target;\n\n\t\tif (!this._tooltip || !this._map) {\n\t\t\treturn;\n\t\t}\n\t\tthis.openTooltip(layer, this._tooltip.options.sticky ? e.latlng : undefined);\n\t},\n\n\t_moveTooltip: function (e) {\n\t\tvar latlng = e.latlng, containerPoint, layerPoint;\n\t\tif (this._tooltip.options.sticky && e.originalEvent) {\n\t\t\tcontainerPoint = this._map.mouseEventToContainerPoint(e.originalEvent);\n\t\t\tlayerPoint = this._map.containerPointToLayerPoint(containerPoint);\n\t\t\tlatlng = this._map.layerPointToLatLng(layerPoint);\n\t\t}\n\t\tthis._tooltip.setLatLng(latlng);\n\t}\n});\n\n/*\n * @class DivIcon\n * @aka L.DivIcon\n * @inherits Icon\n *\n * Represents a lightweight icon for markers that uses a simple `<div>`\n * element instead of an image. Inherits from `Icon` but ignores the `iconUrl` and shadow options.\n *\n * @example\n * ```js\n * var myIcon = L.divIcon({className: 'my-div-icon'});\n * // you can set .my-div-icon styles in CSS\n *\n * L.marker([50.505, 30.57], {icon: myIcon}).addTo(map);\n * ```\n *\n * By default, it has a 'leaflet-div-icon' CSS class and is styled as a little white square with a shadow.\n */\n\nvar DivIcon = Icon.extend({\n\toptions: {\n\t\t// @section\n\t\t// @aka DivIcon options\n\t\ticonSize: [12, 12], // also can be set through CSS\n\n\t\t// iconAnchor: (Point),\n\t\t// popupAnchor: (Point),\n\n\t\t// @option html: String|HTMLElement = ''\n\t\t// Custom HTML code to put inside the div element, empty by default. Alternatively,\n\t\t// an instance of `HTMLElement`.\n\t\thtml: false,\n\n\t\t// @option bgPos: Point = [0, 0]\n\t\t// Optional relative position of the background, in pixels\n\t\tbgPos: null,\n\n\t\tclassName: 'leaflet-div-icon'\n\t},\n\n\tcreateIcon: function (oldIcon) {\n\t\tvar div = (oldIcon && oldIcon.tagName === 'DIV') ? oldIcon : document.createElement('div'),\n\t\t    options = this.options;\n\n\t\tif (options.html instanceof Element) {\n\t\t\tempty(div);\n\t\t\tdiv.appendChild(options.html);\n\t\t} else {\n\t\t\tdiv.innerHTML = options.html !== false ? options.html : '';\n\t\t}\n\n\t\tif (options.bgPos) {\n\t\t\tvar bgPos = toPoint(options.bgPos);\n\t\t\tdiv.style.backgroundPosition = (-bgPos.x) + 'px ' + (-bgPos.y) + 'px';\n\t\t}\n\t\tthis._setIconStyles(div, 'icon');\n\n\t\treturn div;\n\t},\n\n\tcreateShadow: function () {\n\t\treturn null;\n\t}\n});\n\n// @factory L.divIcon(options: DivIcon options)\n// Creates a `DivIcon` instance with the given options.\nfunction divIcon(options) {\n\treturn new DivIcon(options);\n}\n\nIcon.Default = IconDefault;\n\n/*\n * @class GridLayer\n * @inherits Layer\n * @aka L.GridLayer\n *\n * Generic class for handling a tiled grid of HTML elements. This is the base class for all tile layers and replaces `TileLayer.Canvas`.\n * GridLayer can be extended to create a tiled grid of HTML elements like `<canvas>`, `<img>` or `<div>`. GridLayer will handle creating and animating these DOM elements for you.\n *\n *\n * @section Synchronous usage\n * @example\n *\n * To create a custom layer, extend GridLayer and implement the `createTile()` method, which will be passed a `Point` object with the `x`, `y`, and `z` (zoom level) coordinates to draw your tile.\n *\n * ```js\n * var CanvasLayer = L.GridLayer.extend({\n *     createTile: function(coords){\n *         // create a <canvas> element for drawing\n *         var tile = L.DomUtil.create('canvas', 'leaflet-tile');\n *\n *         // setup tile width and height according to the options\n *         var size = this.getTileSize();\n *         tile.width = size.x;\n *         tile.height = size.y;\n *\n *         // get a canvas context and draw something on it using coords.x, coords.y and coords.z\n *         var ctx = tile.getContext('2d');\n *\n *         // return the tile so it can be rendered on screen\n *         return tile;\n *     }\n * });\n * ```\n *\n * @section Asynchronous usage\n * @example\n *\n * Tile creation can also be asynchronous, this is useful when using a third-party drawing library. Once the tile is finished drawing it can be passed to the `done()` callback.\n *\n * ```js\n * var CanvasLayer = L.GridLayer.extend({\n *     createTile: function(coords, done){\n *         var error;\n *\n *         // create a <canvas> element for drawing\n *         var tile = L.DomUtil.create('canvas', 'leaflet-tile');\n *\n *         // setup tile width and height according to the options\n *         var size = this.getTileSize();\n *         tile.width = size.x;\n *         tile.height = size.y;\n *\n *         // draw something asynchronously and pass the tile to the done() callback\n *         setTimeout(function() {\n *             done(error, tile);\n *         }, 1000);\n *\n *         return tile;\n *     }\n * });\n * ```\n *\n * @section\n */\n\n\nvar GridLayer = Layer.extend({\n\n\t// @section\n\t// @aka GridLayer options\n\toptions: {\n\t\t// @option tileSize: Number|Point = 256\n\t\t// Width and height of tiles in the grid. Use a number if width and height are equal, or `L.point(width, height)` otherwise.\n\t\ttileSize: 256,\n\n\t\t// @option opacity: Number = 1.0\n\t\t// Opacity of the tiles. Can be used in the `createTile()` function.\n\t\topacity: 1,\n\n\t\t// @option updateWhenIdle: Boolean = (depends)\n\t\t// Load new tiles only when panning ends.\n\t\t// `true` by default on mobile browsers, in order to avoid too many requests and keep smooth navigation.\n\t\t// `false` otherwise in order to display new tiles _during_ panning, since it is easy to pan outside the\n\t\t// [`keepBuffer`](#gridlayer-keepbuffer) option in desktop browsers.\n\t\tupdateWhenIdle: mobile,\n\n\t\t// @option updateWhenZooming: Boolean = true\n\t\t// By default, a smooth zoom animation (during a [touch zoom](#map-touchzoom) or a [`flyTo()`](#map-flyto)) will update grid layers every integer zoom level. Setting this option to `false` will update the grid layer only when the smooth animation ends.\n\t\tupdateWhenZooming: true,\n\n\t\t// @option updateInterval: Number = 200\n\t\t// Tiles will not update more than once every `updateInterval` milliseconds when panning.\n\t\tupdateInterval: 200,\n\n\t\t// @option zIndex: Number = 1\n\t\t// The explicit zIndex of the tile layer.\n\t\tzIndex: 1,\n\n\t\t// @option bounds: LatLngBounds = undefined\n\t\t// If set, tiles will only be loaded inside the set `LatLngBounds`.\n\t\tbounds: null,\n\n\t\t// @option minZoom: Number = 0\n\t\t// The minimum zoom level down to which this layer will be displayed (inclusive).\n\t\tminZoom: 0,\n\n\t\t// @option maxZoom: Number = undefined\n\t\t// The maximum zoom level up to which this layer will be displayed (inclusive).\n\t\tmaxZoom: undefined,\n\n\t\t// @option maxNativeZoom: Number = undefined\n\t\t// Maximum zoom number the tile source has available. If it is specified,\n\t\t// the tiles on all zoom levels higher than `maxNativeZoom` will be loaded\n\t\t// from `maxNativeZoom` level and auto-scaled.\n\t\tmaxNativeZoom: undefined,\n\n\t\t// @option minNativeZoom: Number = undefined\n\t\t// Minimum zoom number the tile source has available. If it is specified,\n\t\t// the tiles on all zoom levels lower than `minNativeZoom` will be loaded\n\t\t// from `minNativeZoom` level and auto-scaled.\n\t\tminNativeZoom: undefined,\n\n\t\t// @option noWrap: Boolean = false\n\t\t// Whether the layer is wrapped around the antimeridian. If `true`, the\n\t\t// GridLayer will only be displayed once at low zoom levels. Has no\n\t\t// effect when the [map CRS](#map-crs) doesn't wrap around. Can be used\n\t\t// in combination with [`bounds`](#gridlayer-bounds) to prevent requesting\n\t\t// tiles outside the CRS limits.\n\t\tnoWrap: false,\n\n\t\t// @option pane: String = 'tilePane'\n\t\t// `Map pane` where the grid layer will be added.\n\t\tpane: 'tilePane',\n\n\t\t// @option className: String = ''\n\t\t// A custom class name to assign to the tile layer. Empty by default.\n\t\tclassName: '',\n\n\t\t// @option keepBuffer: Number = 2\n\t\t// When panning the map, keep this many rows and columns of tiles before unloading them.\n\t\tkeepBuffer: 2\n\t},\n\n\tinitialize: function (options) {\n\t\tsetOptions(this, options);\n\t},\n\n\tonAdd: function () {\n\t\tthis._initContainer();\n\n\t\tthis._levels = {};\n\t\tthis._tiles = {};\n\n\t\tthis._resetView();\n\t\tthis._update();\n\t},\n\n\tbeforeAdd: function (map) {\n\t\tmap._addZoomLimit(this);\n\t},\n\n\tonRemove: function (map) {\n\t\tthis._removeAllTiles();\n\t\tremove(this._container);\n\t\tmap._removeZoomLimit(this);\n\t\tthis._container = null;\n\t\tthis._tileZoom = undefined;\n\t},\n\n\t// @method bringToFront: this\n\t// Brings the tile layer to the top of all tile layers.\n\tbringToFront: function () {\n\t\tif (this._map) {\n\t\t\ttoFront(this._container);\n\t\t\tthis._setAutoZIndex(Math.max);\n\t\t}\n\t\treturn this;\n\t},\n\n\t// @method bringToBack: this\n\t// Brings the tile layer to the bottom of all tile layers.\n\tbringToBack: function () {\n\t\tif (this._map) {\n\t\t\ttoBack(this._container);\n\t\t\tthis._setAutoZIndex(Math.min);\n\t\t}\n\t\treturn this;\n\t},\n\n\t// @method getContainer: HTMLElement\n\t// Returns the HTML element that contains the tiles for this layer.\n\tgetContainer: function () {\n\t\treturn this._container;\n\t},\n\n\t// @method setOpacity(opacity: Number): this\n\t// Changes the [opacity](#gridlayer-opacity) of the grid layer.\n\tsetOpacity: function (opacity) {\n\t\tthis.options.opacity = opacity;\n\t\tthis._updateOpacity();\n\t\treturn this;\n\t},\n\n\t// @method setZIndex(zIndex: Number): this\n\t// Changes the [zIndex](#gridlayer-zindex) of the grid layer.\n\tsetZIndex: function (zIndex) {\n\t\tthis.options.zIndex = zIndex;\n\t\tthis._updateZIndex();\n\n\t\treturn this;\n\t},\n\n\t// @method isLoading: Boolean\n\t// Returns `true` if any tile in the grid layer has not finished loading.\n\tisLoading: function () {\n\t\treturn this._loading;\n\t},\n\n\t// @method redraw: this\n\t// Causes the layer to clear all the tiles and request them again.\n\tredraw: function () {\n\t\tif (this._map) {\n\t\t\tthis._removeAllTiles();\n\t\t\tthis._update();\n\t\t}\n\t\treturn this;\n\t},\n\n\tgetEvents: function () {\n\t\tvar events = {\n\t\t\tviewprereset: this._invalidateAll,\n\t\t\tviewreset: this._resetView,\n\t\t\tzoom: this._resetView,\n\t\t\tmoveend: this._onMoveEnd\n\t\t};\n\n\t\tif (!this.options.updateWhenIdle) {\n\t\t\t// update tiles on move, but not more often than once per given interval\n\t\t\tif (!this._onMove) {\n\t\t\t\tthis._onMove = throttle(this._onMoveEnd, this.options.updateInterval, this);\n\t\t\t}\n\n\t\t\tevents.move = this._onMove;\n\t\t}\n\n\t\tif (this._zoomAnimated) {\n\t\t\tevents.zoomanim = this._animateZoom;\n\t\t}\n\n\t\treturn events;\n\t},\n\n\t// @section Extension methods\n\t// Layers extending `GridLayer` shall reimplement the following method.\n\t// @method createTile(coords: Object, done?: Function): HTMLElement\n\t// Called only internally, must be overridden by classes extending `GridLayer`.\n\t// Returns the `HTMLElement` corresponding to the given `coords`. If the `done` callback\n\t// is specified, it must be called when the tile has finished loading and drawing.\n\tcreateTile: function () {\n\t\treturn document.createElement('div');\n\t},\n\n\t// @section\n\t// @method getTileSize: Point\n\t// Normalizes the [tileSize option](#gridlayer-tilesize) into a point. Used by the `createTile()` method.\n\tgetTileSize: function () {\n\t\tvar s = this.options.tileSize;\n\t\treturn s instanceof Point ? s : new Point(s, s);\n\t},\n\n\t_updateZIndex: function () {\n\t\tif (this._container && this.options.zIndex !== undefined && this.options.zIndex !== null) {\n\t\t\tthis._container.style.zIndex = this.options.zIndex;\n\t\t}\n\t},\n\n\t_setAutoZIndex: function (compare) {\n\t\t// go through all other layers of the same pane, set zIndex to max + 1 (front) or min - 1 (back)\n\n\t\tvar layers = this.getPane().children,\n\t\t    edgeZIndex = -compare(-Infinity, Infinity); // -Infinity for max, Infinity for min\n\n\t\tfor (var i = 0, len = layers.length, zIndex; i < len; i++) {\n\n\t\t\tzIndex = layers[i].style.zIndex;\n\n\t\t\tif (layers[i] !== this._container && zIndex) {\n\t\t\t\tedgeZIndex = compare(edgeZIndex, +zIndex);\n\t\t\t}\n\t\t}\n\n\t\tif (isFinite(edgeZIndex)) {\n\t\t\tthis.options.zIndex = edgeZIndex + compare(-1, 1);\n\t\t\tthis._updateZIndex();\n\t\t}\n\t},\n\n\t_updateOpacity: function () {\n\t\tif (!this._map) { return; }\n\n\t\t// IE doesn't inherit filter opacity properly, so we're forced to set it on tiles\n\t\tif (ielt9) { return; }\n\n\t\tsetOpacity(this._container, this.options.opacity);\n\n\t\tvar now = +new Date(),\n\t\t    nextFrame = false,\n\t\t    willPrune = false;\n\n\t\tfor (var key in this._tiles) {\n\t\t\tvar tile = this._tiles[key];\n\t\t\tif (!tile.current || !tile.loaded) { continue; }\n\n\t\t\tvar fade = Math.min(1, (now - tile.loaded) / 200);\n\n\t\t\tsetOpacity(tile.el, fade);\n\t\t\tif (fade < 1) {\n\t\t\t\tnextFrame = true;\n\t\t\t} else {\n\t\t\t\tif (tile.active) {\n\t\t\t\t\twillPrune = true;\n\t\t\t\t} else {\n\t\t\t\t\tthis._onOpaqueTile(tile);\n\t\t\t\t}\n\t\t\t\ttile.active = true;\n\t\t\t}\n\t\t}\n\n\t\tif (willPrune && !this._noPrune) { this._pruneTiles(); }\n\n\t\tif (nextFrame) {\n\t\t\tcancelAnimFrame(this._fadeFrame);\n\t\t\tthis._fadeFrame = requestAnimFrame(this._updateOpacity, this);\n\t\t}\n\t},\n\n\t_onOpaqueTile: falseFn,\n\n\t_initContainer: function () {\n\t\tif (this._container) { return; }\n\n\t\tthis._container = create$1('div', 'leaflet-layer ' + (this.options.className || ''));\n\t\tthis._updateZIndex();\n\n\t\tif (this.options.opacity < 1) {\n\t\t\tthis._updateOpacity();\n\t\t}\n\n\t\tthis.getPane().appendChild(this._container);\n\t},\n\n\t_updateLevels: function () {\n\n\t\tvar zoom = this._tileZoom,\n\t\t    maxZoom = this.options.maxZoom;\n\n\t\tif (zoom === undefined) { return undefined; }\n\n\t\tfor (var z in this._levels) {\n\t\t\tif (this._levels[z].el.children.length || z === zoom) {\n\t\t\t\tthis._levels[z].el.style.zIndex = maxZoom - Math.abs(zoom - z);\n\t\t\t\tthis._onUpdateLevel(z);\n\t\t\t} else {\n\t\t\t\tremove(this._levels[z].el);\n\t\t\t\tthis._removeTilesAtZoom(z);\n\t\t\t\tthis._onRemoveLevel(z);\n\t\t\t\tdelete this._levels[z];\n\t\t\t}\n\t\t}\n\n\t\tvar level = this._levels[zoom],\n\t\t    map = this._map;\n\n\t\tif (!level) {\n\t\t\tlevel = this._levels[zoom] = {};\n\n\t\t\tlevel.el = create$1('div', 'leaflet-tile-container leaflet-zoom-animated', this._container);\n\t\t\tlevel.el.style.zIndex = maxZoom;\n\n\t\t\tlevel.origin = map.project(map.unproject(map.getPixelOrigin()), zoom).round();\n\t\t\tlevel.zoom = zoom;\n\n\t\t\tthis._setZoomTransform(level, map.getCenter(), map.getZoom());\n\n\t\t\t// force the browser to consider the newly added element for transition\n\t\t\tfalseFn(level.el.offsetWidth);\n\n\t\t\tthis._onCreateLevel(level);\n\t\t}\n\n\t\tthis._level = level;\n\n\t\treturn level;\n\t},\n\n\t_onUpdateLevel: falseFn,\n\n\t_onRemoveLevel: falseFn,\n\n\t_onCreateLevel: falseFn,\n\n\t_pruneTiles: function () {\n\t\tif (!this._map) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar key, tile;\n\n\t\tvar zoom = this._map.getZoom();\n\t\tif (zoom > this.options.maxZoom ||\n\t\t\tzoom < this.options.minZoom) {\n\t\t\tthis._removeAllTiles();\n\t\t\treturn;\n\t\t}\n\n\t\tfor (key in this._tiles) {\n\t\t\ttile = this._tiles[key];\n\t\t\ttile.retain = tile.current;\n\t\t}\n\n\t\tfor (key in this._tiles) {\n\t\t\ttile = this._tiles[key];\n\t\t\tif (tile.current && !tile.active) {\n\t\t\t\tvar coords = tile.coords;\n\t\t\t\tif (!this._retainParent(coords.x, coords.y, coords.z, coords.z - 5)) {\n\t\t\t\t\tthis._retainChildren(coords.x, coords.y, coords.z, coords.z + 2);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfor (key in this._tiles) {\n\t\t\tif (!this._tiles[key].retain) {\n\t\t\t\tthis._removeTile(key);\n\t\t\t}\n\t\t}\n\t},\n\n\t_removeTilesAtZoom: function (zoom) {\n\t\tfor (var key in this._tiles) {\n\t\t\tif (this._tiles[key].coords.z !== zoom) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tthis._removeTile(key);\n\t\t}\n\t},\n\n\t_removeAllTiles: function () {\n\t\tfor (var key in this._tiles) {\n\t\t\tthis._removeTile(key);\n\t\t}\n\t},\n\n\t_invalidateAll: function () {\n\t\tfor (var z in this._levels) {\n\t\t\tremove(this._levels[z].el);\n\t\t\tthis._onRemoveLevel(z);\n\t\t\tdelete this._levels[z];\n\t\t}\n\t\tthis._removeAllTiles();\n\n\t\tthis._tileZoom = undefined;\n\t},\n\n\t_retainParent: function (x, y, z, minZoom) {\n\t\tvar x2 = Math.floor(x / 2),\n\t\t    y2 = Math.floor(y / 2),\n\t\t    z2 = z - 1,\n\t\t    coords2 = new Point(+x2, +y2);\n\t\tcoords2.z = +z2;\n\n\t\tvar key = this._tileCoordsToKey(coords2),\n\t\t    tile = this._tiles[key];\n\n\t\tif (tile && tile.active) {\n\t\t\ttile.retain = true;\n\t\t\treturn true;\n\n\t\t} else if (tile && tile.loaded) {\n\t\t\ttile.retain = true;\n\t\t}\n\n\t\tif (z2 > minZoom) {\n\t\t\treturn this._retainParent(x2, y2, z2, minZoom);\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t_retainChildren: function (x, y, z, maxZoom) {\n\n\t\tfor (var i = 2 * x; i < 2 * x + 2; i++) {\n\t\t\tfor (var j = 2 * y; j < 2 * y + 2; j++) {\n\n\t\t\t\tvar coords = new Point(i, j);\n\t\t\t\tcoords.z = z + 1;\n\n\t\t\t\tvar key = this._tileCoordsToKey(coords),\n\t\t\t\t    tile = this._tiles[key];\n\n\t\t\t\tif (tile && tile.active) {\n\t\t\t\t\ttile.retain = true;\n\t\t\t\t\tcontinue;\n\n\t\t\t\t} else if (tile && tile.loaded) {\n\t\t\t\t\ttile.retain = true;\n\t\t\t\t}\n\n\t\t\t\tif (z + 1 < maxZoom) {\n\t\t\t\t\tthis._retainChildren(i, j, z + 1, maxZoom);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t_resetView: function (e) {\n\t\tvar animating = e && (e.pinch || e.flyTo);\n\t\tthis._setView(this._map.getCenter(), this._map.getZoom(), animating, animating);\n\t},\n\n\t_animateZoom: function (e) {\n\t\tthis._setView(e.center, e.zoom, true, e.noUpdate);\n\t},\n\n\t_clampZoom: function (zoom) {\n\t\tvar options = this.options;\n\n\t\tif (undefined !== options.minNativeZoom && zoom < options.minNativeZoom) {\n\t\t\treturn options.minNativeZoom;\n\t\t}\n\n\t\tif (undefined !== options.maxNativeZoom && options.maxNativeZoom < zoom) {\n\t\t\treturn options.maxNativeZoom;\n\t\t}\n\n\t\treturn zoom;\n\t},\n\n\t_setView: function (center, zoom, noPrune, noUpdate) {\n\t\tvar tileZoom = this._clampZoom(Math.round(zoom));\n\t\tif ((this.options.maxZoom !== undefined && tileZoom > this.options.maxZoom) ||\n\t\t    (this.options.minZoom !== undefined && tileZoom < this.options.minZoom)) {\n\t\t\ttileZoom = undefined;\n\t\t}\n\n\t\tvar tileZoomChanged = this.options.updateWhenZooming && (tileZoom !== this._tileZoom);\n\n\t\tif (!noUpdate || tileZoomChanged) {\n\n\t\t\tthis._tileZoom = tileZoom;\n\n\t\t\tif (this._abortLoading) {\n\t\t\t\tthis._abortLoading();\n\t\t\t}\n\n\t\t\tthis._updateLevels();\n\t\t\tthis._resetGrid();\n\n\t\t\tif (tileZoom !== undefined) {\n\t\t\t\tthis._update(center);\n\t\t\t}\n\n\t\t\tif (!noPrune) {\n\t\t\t\tthis._pruneTiles();\n\t\t\t}\n\n\t\t\t// Flag to prevent _updateOpacity from pruning tiles during\n\t\t\t// a zoom anim or a pinch gesture\n\t\t\tthis._noPrune = !!noPrune;\n\t\t}\n\n\t\tthis._setZoomTransforms(center, zoom);\n\t},\n\n\t_setZoomTransforms: function (center, zoom) {\n\t\tfor (var i in this._levels) {\n\t\t\tthis._setZoomTransform(this._levels[i], center, zoom);\n\t\t}\n\t},\n\n\t_setZoomTransform: function (level, center, zoom) {\n\t\tvar scale = this._map.getZoomScale(zoom, level.zoom),\n\t\t    translate = level.origin.multiplyBy(scale)\n\t\t        .subtract(this._map._getNewPixelOrigin(center, zoom)).round();\n\n\t\tif (any3d) {\n\t\t\tsetTransform(level.el, translate, scale);\n\t\t} else {\n\t\t\tsetPosition(level.el, translate);\n\t\t}\n\t},\n\n\t_resetGrid: function () {\n\t\tvar map = this._map,\n\t\t    crs = map.options.crs,\n\t\t    tileSize = this._tileSize = this.getTileSize(),\n\t\t    tileZoom = this._tileZoom;\n\n\t\tvar bounds = this._map.getPixelWorldBounds(this._tileZoom);\n\t\tif (bounds) {\n\t\t\tthis._globalTileRange = this._pxBoundsToTileRange(bounds);\n\t\t}\n\n\t\tthis._wrapX = crs.wrapLng && !this.options.noWrap && [\n\t\t\tMath.floor(map.project([0, crs.wrapLng[0]], tileZoom).x / tileSize.x),\n\t\t\tMath.ceil(map.project([0, crs.wrapLng[1]], tileZoom).x / tileSize.y)\n\t\t];\n\t\tthis._wrapY = crs.wrapLat && !this.options.noWrap && [\n\t\t\tMath.floor(map.project([crs.wrapLat[0], 0], tileZoom).y / tileSize.x),\n\t\t\tMath.ceil(map.project([crs.wrapLat[1], 0], tileZoom).y / tileSize.y)\n\t\t];\n\t},\n\n\t_onMoveEnd: function () {\n\t\tif (!this._map || this._map._animatingZoom) { return; }\n\n\t\tthis._update();\n\t},\n\n\t_getTiledPixelBounds: function (center) {\n\t\tvar map = this._map,\n\t\t    mapZoom = map._animatingZoom ? Math.max(map._animateToZoom, map.getZoom()) : map.getZoom(),\n\t\t    scale = map.getZoomScale(mapZoom, this._tileZoom),\n\t\t    pixelCenter = map.project(center, this._tileZoom).floor(),\n\t\t    halfSize = map.getSize().divideBy(scale * 2);\n\n\t\treturn new Bounds(pixelCenter.subtract(halfSize), pixelCenter.add(halfSize));\n\t},\n\n\t// Private method to load tiles in the grid's active zoom level according to map bounds\n\t_update: function (center) {\n\t\tvar map = this._map;\n\t\tif (!map) { return; }\n\t\tvar zoom = this._clampZoom(map.getZoom());\n\n\t\tif (center === undefined) { center = map.getCenter(); }\n\t\tif (this._tileZoom === undefined) { return; }\t// if out of minzoom/maxzoom\n\n\t\tvar pixelBounds = this._getTiledPixelBounds(center),\n\t\t    tileRange = this._pxBoundsToTileRange(pixelBounds),\n\t\t    tileCenter = tileRange.getCenter(),\n\t\t    queue = [],\n\t\t    margin = this.options.keepBuffer,\n\t\t    noPruneRange = new Bounds(tileRange.getBottomLeft().subtract([margin, -margin]),\n\t\t                              tileRange.getTopRight().add([margin, -margin]));\n\n\t\t// Sanity check: panic if the tile range contains Infinity somewhere.\n\t\tif (!(isFinite(tileRange.min.x) &&\n\t\t      isFinite(tileRange.min.y) &&\n\t\t      isFinite(tileRange.max.x) &&\n\t\t      isFinite(tileRange.max.y))) { throw new Error('Attempted to load an infinite number of tiles'); }\n\n\t\tfor (var key in this._tiles) {\n\t\t\tvar c = this._tiles[key].coords;\n\t\t\tif (c.z !== this._tileZoom || !noPruneRange.contains(new Point(c.x, c.y))) {\n\t\t\t\tthis._tiles[key].current = false;\n\t\t\t}\n\t\t}\n\n\t\t// _update just loads more tiles. If the tile zoom level differs too much\n\t\t// from the map's, let _setView reset levels and prune old tiles.\n\t\tif (Math.abs(zoom - this._tileZoom) > 1) { this._setView(center, zoom); return; }\n\n\t\t// create a queue of coordinates to load tiles from\n\t\tfor (var j = tileRange.min.y; j <= tileRange.max.y; j++) {\n\t\t\tfor (var i = tileRange.min.x; i <= tileRange.max.x; i++) {\n\t\t\t\tvar coords = new Point(i, j);\n\t\t\t\tcoords.z = this._tileZoom;\n\n\t\t\t\tif (!this._isValidTile(coords)) { continue; }\n\n\t\t\t\tvar tile = this._tiles[this._tileCoordsToKey(coords)];\n\t\t\t\tif (tile) {\n\t\t\t\t\ttile.current = true;\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push(coords);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// sort tile queue to load tiles in order of their distance to center\n\t\tqueue.sort(function (a, b) {\n\t\t\treturn a.distanceTo(tileCenter) - b.distanceTo(tileCenter);\n\t\t});\n\n\t\tif (queue.length !== 0) {\n\t\t\t// if it's the first batch of tiles to load\n\t\t\tif (!this._loading) {\n\t\t\t\tthis._loading = true;\n\t\t\t\t// @event loading: Event\n\t\t\t\t// Fired when the grid layer starts loading tiles.\n\t\t\t\tthis.fire('loading');\n\t\t\t}\n\n\t\t\t// create DOM fragment to append tiles in one batch\n\t\t\tvar fragment = document.createDocumentFragment();\n\n\t\t\tfor (i = 0; i < queue.length; i++) {\n\t\t\t\tthis._addTile(queue[i], fragment);\n\t\t\t}\n\n\t\t\tthis._level.el.appendChild(fragment);\n\t\t}\n\t},\n\n\t_isValidTile: function (coords) {\n\t\tvar crs = this._map.options.crs;\n\n\t\tif (!crs.infinite) {\n\t\t\t// don't load tile if it's out of bounds and not wrapped\n\t\t\tvar bounds = this._globalTileRange;\n\t\t\tif ((!crs.wrapLng && (coords.x < bounds.min.x || coords.x > bounds.max.x)) ||\n\t\t\t    (!crs.wrapLat && (coords.y < bounds.min.y || coords.y > bounds.max.y))) { return false; }\n\t\t}\n\n\t\tif (!this.options.bounds) { return true; }\n\n\t\t// don't load tile if it doesn't intersect the bounds in options\n\t\tvar tileBounds = this._tileCoordsToBounds(coords);\n\t\treturn toLatLngBounds(this.options.bounds).overlaps(tileBounds);\n\t},\n\n\t_keyToBounds: function (key) {\n\t\treturn this._tileCoordsToBounds(this._keyToTileCoords(key));\n\t},\n\n\t_tileCoordsToNwSe: function (coords) {\n\t\tvar map = this._map,\n\t\t    tileSize = this.getTileSize(),\n\t\t    nwPoint = coords.scaleBy(tileSize),\n\t\t    sePoint = nwPoint.add(tileSize),\n\t\t    nw = map.unproject(nwPoint, coords.z),\n\t\t    se = map.unproject(sePoint, coords.z);\n\t\treturn [nw, se];\n\t},\n\n\t// converts tile coordinates to its geographical bounds\n\t_tileCoordsToBounds: function (coords) {\n\t\tvar bp = this._tileCoordsToNwSe(coords),\n\t\t    bounds = new LatLngBounds(bp[0], bp[1]);\n\n\t\tif (!this.options.noWrap) {\n\t\t\tbounds = this._map.wrapLatLngBounds(bounds);\n\t\t}\n\t\treturn bounds;\n\t},\n\t// converts tile coordinates to key for the tile cache\n\t_tileCoordsToKey: function (coords) {\n\t\treturn coords.x + ':' + coords.y + ':' + coords.z;\n\t},\n\n\t// converts tile cache key to coordinates\n\t_keyToTileCoords: function (key) {\n\t\tvar k = key.split(':'),\n\t\t    coords = new Point(+k[0], +k[1]);\n\t\tcoords.z = +k[2];\n\t\treturn coords;\n\t},\n\n\t_removeTile: function (key) {\n\t\tvar tile = this._tiles[key];\n\t\tif (!tile) { return; }\n\n\t\tremove(tile.el);\n\n\t\tdelete this._tiles[key];\n\n\t\t// @event tileunload: TileEvent\n\t\t// Fired when a tile is removed (e.g. when a tile goes off the screen).\n\t\tthis.fire('tileunload', {\n\t\t\ttile: tile.el,\n\t\t\tcoords: this._keyToTileCoords(key)\n\t\t});\n\t},\n\n\t_initTile: function (tile) {\n\t\taddClass(tile, 'leaflet-tile');\n\n\t\tvar tileSize = this.getTileSize();\n\t\ttile.style.width = tileSize.x + 'px';\n\t\ttile.style.height = tileSize.y + 'px';\n\n\t\ttile.onselectstart = falseFn;\n\t\ttile.onmousemove = falseFn;\n\n\t\t// update opacity on tiles in IE7-8 because of filter inheritance problems\n\t\tif (ielt9 && this.options.opacity < 1) {\n\t\t\tsetOpacity(tile, this.options.opacity);\n\t\t}\n\n\t\t// without this hack, tiles disappear after zoom on Chrome for Android\n\t\t// https://github.com/Leaflet/Leaflet/issues/2078\n\t\tif (android && !android23) {\n\t\t\ttile.style.WebkitBackfaceVisibility = 'hidden';\n\t\t}\n\t},\n\n\t_addTile: function (coords, container) {\n\t\tvar tilePos = this._getTilePos(coords),\n\t\t    key = this._tileCoordsToKey(coords);\n\n\t\tvar tile = this.createTile(this._wrapCoords(coords), bind(this._tileReady, this, coords));\n\n\t\tthis._initTile(tile);\n\n\t\t// if createTile is defined with a second argument (\"done\" callback),\n\t\t// we know that tile is async and will be ready later; otherwise\n\t\tif (this.createTile.length < 2) {\n\t\t\t// mark tile as ready, but delay one frame for opacity animation to happen\n\t\t\trequestAnimFrame(bind(this._tileReady, this, coords, null, tile));\n\t\t}\n\n\t\tsetPosition(tile, tilePos);\n\n\t\t// save tile in cache\n\t\tthis._tiles[key] = {\n\t\t\tel: tile,\n\t\t\tcoords: coords,\n\t\t\tcurrent: true\n\t\t};\n\n\t\tcontainer.appendChild(tile);\n\t\t// @event tileloadstart: TileEvent\n\t\t// Fired when a tile is requested and starts loading.\n\t\tthis.fire('tileloadstart', {\n\t\t\ttile: tile,\n\t\t\tcoords: coords\n\t\t});\n\t},\n\n\t_tileReady: function (coords, err, tile) {\n\t\tif (err) {\n\t\t\t// @event tileerror: TileErrorEvent\n\t\t\t// Fired when there is an error loading a tile.\n\t\t\tthis.fire('tileerror', {\n\t\t\t\terror: err,\n\t\t\t\ttile: tile,\n\t\t\t\tcoords: coords\n\t\t\t});\n\t\t}\n\n\t\tvar key = this._tileCoordsToKey(coords);\n\n\t\ttile = this._tiles[key];\n\t\tif (!tile) { return; }\n\n\t\ttile.loaded = +new Date();\n\t\tif (this._map._fadeAnimated) {\n\t\t\tsetOpacity(tile.el, 0);\n\t\t\tcancelAnimFrame(this._fadeFrame);\n\t\t\tthis._fadeFrame = requestAnimFrame(this._updateOpacity, this);\n\t\t} else {\n\t\t\ttile.active = true;\n\t\t\tthis._pruneTiles();\n\t\t}\n\n\t\tif (!err) {\n\t\t\taddClass(tile.el, 'leaflet-tile-loaded');\n\n\t\t\t// @event tileload: TileEvent\n\t\t\t// Fired when a tile loads.\n\t\t\tthis.fire('tileload', {\n\t\t\t\ttile: tile.el,\n\t\t\t\tcoords: coords\n\t\t\t});\n\t\t}\n\n\t\tif (this._noTilesToLoad()) {\n\t\t\tthis._loading = false;\n\t\t\t// @event load: Event\n\t\t\t// Fired when the grid layer loaded all visible tiles.\n\t\t\tthis.fire('load');\n\n\t\t\tif (ielt9 || !this._map._fadeAnimated) {\n\t\t\t\trequestAnimFrame(this._pruneTiles, this);\n\t\t\t} else {\n\t\t\t\t// Wait a bit more than 0.2 secs (the duration of the tile fade-in)\n\t\t\t\t// to trigger a pruning.\n\t\t\t\tsetTimeout(bind(this._pruneTiles, this), 250);\n\t\t\t}\n\t\t}\n\t},\n\n\t_getTilePos: function (coords) {\n\t\treturn coords.scaleBy(this.getTileSize()).subtract(this._level.origin);\n\t},\n\n\t_wrapCoords: function (coords) {\n\t\tvar newCoords = new Point(\n\t\t\tthis._wrapX ? wrapNum(coords.x, this._wrapX) : coords.x,\n\t\t\tthis._wrapY ? wrapNum(coords.y, this._wrapY) : coords.y);\n\t\tnewCoords.z = coords.z;\n\t\treturn newCoords;\n\t},\n\n\t_pxBoundsToTileRange: function (bounds) {\n\t\tvar tileSize = this.getTileSize();\n\t\treturn new Bounds(\n\t\t\tbounds.min.unscaleBy(tileSize).floor(),\n\t\t\tbounds.max.unscaleBy(tileSize).ceil().subtract([1, 1]));\n\t},\n\n\t_noTilesToLoad: function () {\n\t\tfor (var key in this._tiles) {\n\t\t\tif (!this._tiles[key].loaded) { return false; }\n\t\t}\n\t\treturn true;\n\t}\n});\n\n// @factory L.gridLayer(options?: GridLayer options)\n// Creates a new instance of GridLayer with the supplied options.\nfunction gridLayer(options) {\n\treturn new GridLayer(options);\n}\n\n/*\r\n * @class TileLayer\r\n * @inherits GridLayer\r\n * @aka L.TileLayer\r\n * Used to load and display tile layers on the map. Note that most tile servers require attribution, which you can set under `Layer`. Extends `GridLayer`.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png?{foo}', {foo: 'bar', attribution: 'Map data &copy; <a href=\"https://www.openstreetmap.org/\">OpenStreetMap</a> contributors, <a href=\"https://creativecommons.org/licenses/by-sa/2.0/\">CC-BY-SA</a>'}).addTo(map);\r\n * ```\r\n *\r\n * @section URL template\r\n * @example\r\n *\r\n * A string of the following form:\r\n *\r\n * ```\r\n * 'http://{s}.somedomain.com/blabla/{z}/{x}/{y}{r}.png'\r\n * ```\r\n *\r\n * `{s}` means one of the available subdomains (used sequentially to help with browser parallel requests per domain limitation; subdomain values are specified in options; `a`, `b` or `c` by default, can be omitted), `{z}` — zoom level, `{x}` and `{y}` — tile coordinates. `{r}` can be used to add \"&commat;2x\" to the URL to load retina tiles.\r\n *\r\n * You can use custom keys in the template, which will be [evaluated](#util-template) from TileLayer options, like this:\r\n *\r\n * ```\r\n * L.tileLayer('http://{s}.somedomain.com/{foo}/{z}/{x}/{y}.png', {foo: 'bar'});\r\n * ```\r\n */\r\n\r\n\r\nvar TileLayer = GridLayer.extend({\r\n\r\n\t// @section\r\n\t// @aka TileLayer options\r\n\toptions: {\r\n\t\t// @option minZoom: Number = 0\r\n\t\t// The minimum zoom level down to which this layer will be displayed (inclusive).\r\n\t\tminZoom: 0,\r\n\r\n\t\t// @option maxZoom: Number = 18\r\n\t\t// The maximum zoom level up to which this layer will be displayed (inclusive).\r\n\t\tmaxZoom: 18,\r\n\r\n\t\t// @option subdomains: String|String[] = 'abc'\r\n\t\t// Subdomains of the tile service. Can be passed in the form of one string (where each letter is a subdomain name) or an array of strings.\r\n\t\tsubdomains: 'abc',\r\n\r\n\t\t// @option errorTileUrl: String = ''\r\n\t\t// URL to the tile image to show in place of the tile that failed to load.\r\n\t\terrorTileUrl: '',\r\n\r\n\t\t// @option zoomOffset: Number = 0\r\n\t\t// The zoom number used in tile URLs will be offset with this value.\r\n\t\tzoomOffset: 0,\r\n\r\n\t\t// @option tms: Boolean = false\r\n\t\t// If `true`, inverses Y axis numbering for tiles (turn this on for [TMS](https://en.wikipedia.org/wiki/Tile_Map_Service) services).\r\n\t\ttms: false,\r\n\r\n\t\t// @option zoomReverse: Boolean = false\r\n\t\t// If set to true, the zoom number used in tile URLs will be reversed (`maxZoom - zoom` instead of `zoom`)\r\n\t\tzoomReverse: false,\r\n\r\n\t\t// @option detectRetina: Boolean = false\r\n\t\t// If `true` and user is on a retina display, it will request four tiles of half the specified size and a bigger zoom level in place of one to utilize the high resolution.\r\n\t\tdetectRetina: false,\r\n\r\n\t\t// @option crossOrigin: Boolean|String = false\r\n\t\t// Whether the crossOrigin attribute will be added to the tiles.\r\n\t\t// If a String is provided, all tiles will have their crossOrigin attribute set to the String provided. This is needed if you want to access tile pixel data.\r\n\t\t// Refer to [CORS Settings](https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_settings_attributes) for valid String values.\r\n\t\tcrossOrigin: false\r\n\t},\r\n\r\n\tinitialize: function (url, options) {\r\n\r\n\t\tthis._url = url;\r\n\r\n\t\toptions = setOptions(this, options);\r\n\r\n\t\t// detecting retina displays, adjusting tileSize and zoom levels\r\n\t\tif (options.detectRetina && retina && options.maxZoom > 0) {\r\n\r\n\t\t\toptions.tileSize = Math.floor(options.tileSize / 2);\r\n\r\n\t\t\tif (!options.zoomReverse) {\r\n\t\t\t\toptions.zoomOffset++;\r\n\t\t\t\toptions.maxZoom--;\r\n\t\t\t} else {\r\n\t\t\t\toptions.zoomOffset--;\r\n\t\t\t\toptions.minZoom++;\r\n\t\t\t}\r\n\r\n\t\t\toptions.minZoom = Math.max(0, options.minZoom);\r\n\t\t}\r\n\r\n\t\tif (typeof options.subdomains === 'string') {\r\n\t\t\toptions.subdomains = options.subdomains.split('');\r\n\t\t}\r\n\r\n\t\t// for https://github.com/Leaflet/Leaflet/issues/137\r\n\t\tif (!android) {\r\n\t\t\tthis.on('tileunload', this._onTileRemove);\r\n\t\t}\r\n\t},\r\n\r\n\t// @method setUrl(url: String, noRedraw?: Boolean): this\r\n\t// Updates the layer's URL template and redraws it (unless `noRedraw` is set to `true`).\r\n\t// If the URL does not change, the layer will not be redrawn unless\r\n\t// the noRedraw parameter is set to false.\r\n\tsetUrl: function (url, noRedraw) {\r\n\t\tif (this._url === url && noRedraw === undefined) {\r\n\t\t\tnoRedraw = true;\r\n\t\t}\r\n\r\n\t\tthis._url = url;\r\n\r\n\t\tif (!noRedraw) {\r\n\t\t\tthis.redraw();\r\n\t\t}\r\n\t\treturn this;\r\n\t},\r\n\r\n\t// @method createTile(coords: Object, done?: Function): HTMLElement\r\n\t// Called only internally, overrides GridLayer's [`createTile()`](#gridlayer-createtile)\r\n\t// to return an `<img>` HTML element with the appropriate image URL given `coords`. The `done`\r\n\t// callback is called when the tile has been loaded.\r\n\tcreateTile: function (coords, done) {\r\n\t\tvar tile = document.createElement('img');\r\n\r\n\t\ton(tile, 'load', bind(this._tileOnLoad, this, done, tile));\r\n\t\ton(tile, 'error', bind(this._tileOnError, this, done, tile));\r\n\r\n\t\tif (this.options.crossOrigin || this.options.crossOrigin === '') {\r\n\t\t\ttile.crossOrigin = this.options.crossOrigin === true ? '' : this.options.crossOrigin;\r\n\t\t}\r\n\r\n\t\t/*\r\n\t\t Alt tag is set to empty string to keep screen readers from reading URL and for compliance reasons\r\n\t\t http://www.w3.org/TR/WCAG20-TECHS/H67\r\n\t\t*/\r\n\t\ttile.alt = '';\r\n\r\n\t\t/*\r\n\t\t Set role=\"presentation\" to force screen readers to ignore this\r\n\t\t https://www.w3.org/TR/wai-aria/roles#textalternativecomputation\r\n\t\t*/\r\n\t\ttile.setAttribute('role', 'presentation');\r\n\r\n\t\ttile.src = this.getTileUrl(coords);\r\n\r\n\t\treturn tile;\r\n\t},\r\n\r\n\t// @section Extension methods\r\n\t// @uninheritable\r\n\t// Layers extending `TileLayer` might reimplement the following method.\r\n\t// @method getTileUrl(coords: Object): String\r\n\t// Called only internally, returns the URL for a tile given its coordinates.\r\n\t// Classes extending `TileLayer` can override this function to provide custom tile URL naming schemes.\r\n\tgetTileUrl: function (coords) {\r\n\t\tvar data = {\r\n\t\t\tr: retina ? '@2x' : '',\r\n\t\t\ts: this._getSubdomain(coords),\r\n\t\t\tx: coords.x,\r\n\t\t\ty: coords.y,\r\n\t\t\tz: this._getZoomForUrl()\r\n\t\t};\r\n\t\tif (this._map && !this._map.options.crs.infinite) {\r\n\t\t\tvar invertedY = this._globalTileRange.max.y - coords.y;\r\n\t\t\tif (this.options.tms) {\r\n\t\t\t\tdata['y'] = invertedY;\r\n\t\t\t}\r\n\t\t\tdata['-y'] = invertedY;\r\n\t\t}\r\n\r\n\t\treturn template(this._url, extend(data, this.options));\r\n\t},\r\n\r\n\t_tileOnLoad: function (done, tile) {\r\n\t\t// For https://github.com/Leaflet/Leaflet/issues/3332\r\n\t\tif (ielt9) {\r\n\t\t\tsetTimeout(bind(done, this, null, tile), 0);\r\n\t\t} else {\r\n\t\t\tdone(null, tile);\r\n\t\t}\r\n\t},\r\n\r\n\t_tileOnError: function (done, tile, e) {\r\n\t\tvar errorUrl = this.options.errorTileUrl;\r\n\t\tif (errorUrl && tile.getAttribute('src') !== errorUrl) {\r\n\t\t\ttile.src = errorUrl;\r\n\t\t}\r\n\t\tdone(e, tile);\r\n\t},\r\n\r\n\t_onTileRemove: function (e) {\r\n\t\te.tile.onload = null;\r\n\t},\r\n\r\n\t_getZoomForUrl: function () {\r\n\t\tvar zoom = this._tileZoom,\r\n\t\tmaxZoom = this.options.maxZoom,\r\n\t\tzoomReverse = this.options.zoomReverse,\r\n\t\tzoomOffset = this.options.zoomOffset;\r\n\r\n\t\tif (zoomReverse) {\r\n\t\t\tzoom = maxZoom - zoom;\r\n\t\t}\r\n\r\n\t\treturn zoom + zoomOffset;\r\n\t},\r\n\r\n\t_getSubdomain: function (tilePoint) {\r\n\t\tvar index = Math.abs(tilePoint.x + tilePoint.y) % this.options.subdomains.length;\r\n\t\treturn this.options.subdomains[index];\r\n\t},\r\n\r\n\t// stops loading all tiles in the background layer\r\n\t_abortLoading: function () {\r\n\t\tvar i, tile;\r\n\t\tfor (i in this._tiles) {\r\n\t\t\tif (this._tiles[i].coords.z !== this._tileZoom) {\r\n\t\t\t\ttile = this._tiles[i].el;\r\n\r\n\t\t\t\ttile.onload = falseFn;\r\n\t\t\t\ttile.onerror = falseFn;\r\n\r\n\t\t\t\tif (!tile.complete) {\r\n\t\t\t\t\ttile.src = emptyImageUrl;\r\n\t\t\t\t\tremove(tile);\r\n\t\t\t\t\tdelete this._tiles[i];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t_removeTile: function (key) {\r\n\t\tvar tile = this._tiles[key];\r\n\t\tif (!tile) { return; }\r\n\r\n\t\t// Cancels any pending http requests associated with the tile\r\n\t\t// unless we're on Android's stock browser,\r\n\t\t// see https://github.com/Leaflet/Leaflet/issues/137\r\n\t\tif (!androidStock) {\r\n\t\t\ttile.el.setAttribute('src', emptyImageUrl);\r\n\t\t}\r\n\r\n\t\treturn GridLayer.prototype._removeTile.call(this, key);\r\n\t},\r\n\r\n\t_tileReady: function (coords, err, tile) {\r\n\t\tif (!this._map || (tile && tile.getAttribute('src') === emptyImageUrl)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\treturn GridLayer.prototype._tileReady.call(this, coords, err, tile);\r\n\t}\r\n});\r\n\r\n\r\n// @factory L.tilelayer(urlTemplate: String, options?: TileLayer options)\r\n// Instantiates a tile layer object given a `URL template` and optionally an options object.\r\n\r\nfunction tileLayer(url, options) {\r\n\treturn new TileLayer(url, options);\r\n}\n\n/*\r\n * @class TileLayer.WMS\r\n * @inherits TileLayer\r\n * @aka L.TileLayer.WMS\r\n * Used to display [WMS](https://en.wikipedia.org/wiki/Web_Map_Service) services as tile layers on the map. Extends `TileLayer`.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * var nexrad = L.tileLayer.wms(\"http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r.cgi\", {\r\n * \tlayers: 'nexrad-n0r-900913',\r\n * \tformat: 'image/png',\r\n * \ttransparent: true,\r\n * \tattribution: \"Weather data © 2012 IEM Nexrad\"\r\n * });\r\n * ```\r\n */\r\n\r\nvar TileLayerWMS = TileLayer.extend({\r\n\r\n\t// @section\r\n\t// @aka TileLayer.WMS options\r\n\t// If any custom options not documented here are used, they will be sent to the\r\n\t// WMS server as extra parameters in each request URL. This can be useful for\r\n\t// [non-standard vendor WMS parameters](http://docs.geoserver.org/stable/en/user/services/wms/vendor.html).\r\n\tdefaultWmsParams: {\r\n\t\tservice: 'WMS',\r\n\t\trequest: 'GetMap',\r\n\r\n\t\t// @option layers: String = ''\r\n\t\t// **(required)** Comma-separated list of WMS layers to show.\r\n\t\tlayers: '',\r\n\r\n\t\t// @option styles: String = ''\r\n\t\t// Comma-separated list of WMS styles.\r\n\t\tstyles: '',\r\n\r\n\t\t// @option format: String = 'image/jpeg'\r\n\t\t// WMS image format (use `'image/png'` for layers with transparency).\r\n\t\tformat: 'image/jpeg',\r\n\r\n\t\t// @option transparent: Boolean = false\r\n\t\t// If `true`, the WMS service will return images with transparency.\r\n\t\ttransparent: false,\r\n\r\n\t\t// @option version: String = '1.1.1'\r\n\t\t// Version of the WMS service to use\r\n\t\tversion: '1.1.1'\r\n\t},\r\n\r\n\toptions: {\r\n\t\t// @option crs: CRS = null\r\n\t\t// Coordinate Reference System to use for the WMS requests, defaults to\r\n\t\t// map CRS. Don't change this if you're not sure what it means.\r\n\t\tcrs: null,\r\n\r\n\t\t// @option uppercase: Boolean = false\r\n\t\t// If `true`, WMS request parameter keys will be uppercase.\r\n\t\tuppercase: false\r\n\t},\r\n\r\n\tinitialize: function (url, options) {\r\n\r\n\t\tthis._url = url;\r\n\r\n\t\tvar wmsParams = extend({}, this.defaultWmsParams);\r\n\r\n\t\t// all keys that are not TileLayer options go to WMS params\r\n\t\tfor (var i in options) {\r\n\t\t\tif (!(i in this.options)) {\r\n\t\t\t\twmsParams[i] = options[i];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\toptions = setOptions(this, options);\r\n\r\n\t\tvar realRetina = options.detectRetina && retina ? 2 : 1;\r\n\t\tvar tileSize = this.getTileSize();\r\n\t\twmsParams.width = tileSize.x * realRetina;\r\n\t\twmsParams.height = tileSize.y * realRetina;\r\n\r\n\t\tthis.wmsParams = wmsParams;\r\n\t},\r\n\r\n\tonAdd: function (map) {\r\n\r\n\t\tthis._crs = this.options.crs || map.options.crs;\r\n\t\tthis._wmsVersion = parseFloat(this.wmsParams.version);\r\n\r\n\t\tvar projectionKey = this._wmsVersion >= 1.3 ? 'crs' : 'srs';\r\n\t\tthis.wmsParams[projectionKey] = this._crs.code;\r\n\r\n\t\tTileLayer.prototype.onAdd.call(this, map);\r\n\t},\r\n\r\n\tgetTileUrl: function (coords) {\r\n\r\n\t\tvar tileBounds = this._tileCoordsToNwSe(coords),\r\n\t\t    crs = this._crs,\r\n\t\t    bounds = toBounds(crs.project(tileBounds[0]), crs.project(tileBounds[1])),\r\n\t\t    min = bounds.min,\r\n\t\t    max = bounds.max,\r\n\t\t    bbox = (this._wmsVersion >= 1.3 && this._crs === EPSG4326 ?\r\n\t\t    [min.y, min.x, max.y, max.x] :\r\n\t\t    [min.x, min.y, max.x, max.y]).join(','),\r\n\t\t    url = TileLayer.prototype.getTileUrl.call(this, coords);\r\n\t\treturn url +\r\n\t\t\tgetParamString(this.wmsParams, url, this.options.uppercase) +\r\n\t\t\t(this.options.uppercase ? '&BBOX=' : '&bbox=') + bbox;\r\n\t},\r\n\r\n\t// @method setParams(params: Object, noRedraw?: Boolean): this\r\n\t// Merges an object with the new parameters and re-requests tiles on the current screen (unless `noRedraw` was set to true).\r\n\tsetParams: function (params, noRedraw) {\r\n\r\n\t\textend(this.wmsParams, params);\r\n\r\n\t\tif (!noRedraw) {\r\n\t\t\tthis.redraw();\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t}\r\n});\r\n\r\n\r\n// @factory L.tileLayer.wms(baseUrl: String, options: TileLayer.WMS options)\r\n// Instantiates a WMS tile layer object given a base URL of the WMS service and a WMS parameters/options object.\r\nfunction tileLayerWMS(url, options) {\r\n\treturn new TileLayerWMS(url, options);\r\n}\n\nTileLayer.WMS = TileLayerWMS;\ntileLayer.wms = tileLayerWMS;\n\n/*\n * @class Renderer\n * @inherits Layer\n * @aka L.Renderer\n *\n * Base class for vector renderer implementations (`SVG`, `Canvas`). Handles the\n * DOM container of the renderer, its bounds, and its zoom animation.\n *\n * A `Renderer` works as an implicit layer group for all `Path`s - the renderer\n * itself can be added or removed to the map. All paths use a renderer, which can\n * be implicit (the map will decide the type of renderer and use it automatically)\n * or explicit (using the [`renderer`](#path-renderer) option of the path).\n *\n * Do not use this class directly, use `SVG` and `Canvas` instead.\n *\n * @event update: Event\n * Fired when the renderer updates its bounds, center and zoom, for example when\n * its map has moved\n */\n\nvar Renderer = Layer.extend({\n\n\t// @section\n\t// @aka Renderer options\n\toptions: {\n\t\t// @option padding: Number = 0.1\n\t\t// How much to extend the clip area around the map view (relative to its size)\n\t\t// e.g. 0.1 would be 10% of map view in each direction\n\t\tpadding: 0.1,\n\n\t\t// @option tolerance: Number = 0\n\t\t// How much to extend click tolerance round a path/object on the map\n\t\ttolerance : 0\n\t},\n\n\tinitialize: function (options) {\n\t\tsetOptions(this, options);\n\t\tstamp(this);\n\t\tthis._layers = this._layers || {};\n\t},\n\n\tonAdd: function () {\n\t\tif (!this._container) {\n\t\t\tthis._initContainer(); // defined by renderer implementations\n\n\t\t\tif (this._zoomAnimated) {\n\t\t\t\taddClass(this._container, 'leaflet-zoom-animated');\n\t\t\t}\n\t\t}\n\n\t\tthis.getPane().appendChild(this._container);\n\t\tthis._update();\n\t\tthis.on('update', this._updatePaths, this);\n\t},\n\n\tonRemove: function () {\n\t\tthis.off('update', this._updatePaths, this);\n\t\tthis._destroyContainer();\n\t},\n\n\tgetEvents: function () {\n\t\tvar events = {\n\t\t\tviewreset: this._reset,\n\t\t\tzoom: this._onZoom,\n\t\t\tmoveend: this._update,\n\t\t\tzoomend: this._onZoomEnd\n\t\t};\n\t\tif (this._zoomAnimated) {\n\t\t\tevents.zoomanim = this._onAnimZoom;\n\t\t}\n\t\treturn events;\n\t},\n\n\t_onAnimZoom: function (ev) {\n\t\tthis._updateTransform(ev.center, ev.zoom);\n\t},\n\n\t_onZoom: function () {\n\t\tthis._updateTransform(this._map.getCenter(), this._map.getZoom());\n\t},\n\n\t_updateTransform: function (center, zoom) {\n\t\tvar scale = this._map.getZoomScale(zoom, this._zoom),\n\t\t    position = getPosition(this._container),\n\t\t    viewHalf = this._map.getSize().multiplyBy(0.5 + this.options.padding),\n\t\t    currentCenterPoint = this._map.project(this._center, zoom),\n\t\t    destCenterPoint = this._map.project(center, zoom),\n\t\t    centerOffset = destCenterPoint.subtract(currentCenterPoint),\n\n\t\t    topLeftOffset = viewHalf.multiplyBy(-scale).add(position).add(viewHalf).subtract(centerOffset);\n\n\t\tif (any3d) {\n\t\t\tsetTransform(this._container, topLeftOffset, scale);\n\t\t} else {\n\t\t\tsetPosition(this._container, topLeftOffset);\n\t\t}\n\t},\n\n\t_reset: function () {\n\t\tthis._update();\n\t\tthis._updateTransform(this._center, this._zoom);\n\n\t\tfor (var id in this._layers) {\n\t\t\tthis._layers[id]._reset();\n\t\t}\n\t},\n\n\t_onZoomEnd: function () {\n\t\tfor (var id in this._layers) {\n\t\t\tthis._layers[id]._project();\n\t\t}\n\t},\n\n\t_updatePaths: function () {\n\t\tfor (var id in this._layers) {\n\t\t\tthis._layers[id]._update();\n\t\t}\n\t},\n\n\t_update: function () {\n\t\t// Update pixel bounds of renderer container (for positioning/sizing/clipping later)\n\t\t// Subclasses are responsible of firing the 'update' event.\n\t\tvar p = this.options.padding,\n\t\t    size = this._map.getSize(),\n\t\t    min = this._map.containerPointToLayerPoint(size.multiplyBy(-p)).round();\n\n\t\tthis._bounds = new Bounds(min, min.add(size.multiplyBy(1 + p * 2)).round());\n\n\t\tthis._center = this._map.getCenter();\n\t\tthis._zoom = this._map.getZoom();\n\t}\n});\n\n/*\n * @class Canvas\n * @inherits Renderer\n * @aka L.Canvas\n *\n * Allows vector layers to be displayed with [`<canvas>`](https://developer.mozilla.org/docs/Web/API/Canvas_API).\n * Inherits `Renderer`.\n *\n * Due to [technical limitations](http://caniuse.com/#search=canvas), Canvas is not\n * available in all web browsers, notably IE8, and overlapping geometries might\n * not display properly in some edge cases.\n *\n * @example\n *\n * Use Canvas by default for all paths in the map:\n *\n * ```js\n * var map = L.map('map', {\n * \trenderer: L.canvas()\n * });\n * ```\n *\n * Use a Canvas renderer with extra padding for specific vector geometries:\n *\n * ```js\n * var map = L.map('map');\n * var myRenderer = L.canvas({ padding: 0.5 });\n * var line = L.polyline( coordinates, { renderer: myRenderer } );\n * var circle = L.circle( center, { renderer: myRenderer } );\n * ```\n */\n\nvar Canvas = Renderer.extend({\n\tgetEvents: function () {\n\t\tvar events = Renderer.prototype.getEvents.call(this);\n\t\tevents.viewprereset = this._onViewPreReset;\n\t\treturn events;\n\t},\n\n\t_onViewPreReset: function () {\n\t\t// Set a flag so that a viewprereset+moveend+viewreset only updates&redraws once\n\t\tthis._postponeUpdatePaths = true;\n\t},\n\n\tonAdd: function () {\n\t\tRenderer.prototype.onAdd.call(this);\n\n\t\t// Redraw vectors since canvas is cleared upon removal,\n\t\t// in case of removing the renderer itself from the map.\n\t\tthis._draw();\n\t},\n\n\t_initContainer: function () {\n\t\tvar container = this._container = document.createElement('canvas');\n\n\t\ton(container, 'mousemove', this._onMouseMove, this);\n\t\ton(container, 'click dblclick mousedown mouseup contextmenu', this._onClick, this);\n\t\ton(container, 'mouseout', this._handleMouseOut, this);\n\n\t\tthis._ctx = container.getContext('2d');\n\t},\n\n\t_destroyContainer: function () {\n\t\tcancelAnimFrame(this._redrawRequest);\n\t\tdelete this._ctx;\n\t\tremove(this._container);\n\t\toff(this._container);\n\t\tdelete this._container;\n\t},\n\n\t_updatePaths: function () {\n\t\tif (this._postponeUpdatePaths) { return; }\n\n\t\tvar layer;\n\t\tthis._redrawBounds = null;\n\t\tfor (var id in this._layers) {\n\t\t\tlayer = this._layers[id];\n\t\t\tlayer._update();\n\t\t}\n\t\tthis._redraw();\n\t},\n\n\t_update: function () {\n\t\tif (this._map._animatingZoom && this._bounds) { return; }\n\n\t\tRenderer.prototype._update.call(this);\n\n\t\tvar b = this._bounds,\n\t\t    container = this._container,\n\t\t    size = b.getSize(),\n\t\t    m = retina ? 2 : 1;\n\n\t\tsetPosition(container, b.min);\n\n\t\t// set canvas size (also clearing it); use double size on retina\n\t\tcontainer.width = m * size.x;\n\t\tcontainer.height = m * size.y;\n\t\tcontainer.style.width = size.x + 'px';\n\t\tcontainer.style.height = size.y + 'px';\n\n\t\tif (retina) {\n\t\t\tthis._ctx.scale(2, 2);\n\t\t}\n\n\t\t// translate so we use the same path coordinates after canvas element moves\n\t\tthis._ctx.translate(-b.min.x, -b.min.y);\n\n\t\t// Tell paths to redraw themselves\n\t\tthis.fire('update');\n\t},\n\n\t_reset: function () {\n\t\tRenderer.prototype._reset.call(this);\n\n\t\tif (this._postponeUpdatePaths) {\n\t\t\tthis._postponeUpdatePaths = false;\n\t\t\tthis._updatePaths();\n\t\t}\n\t},\n\n\t_initPath: function (layer) {\n\t\tthis._updateDashArray(layer);\n\t\tthis._layers[stamp(layer)] = layer;\n\n\t\tvar order = layer._order = {\n\t\t\tlayer: layer,\n\t\t\tprev: this._drawLast,\n\t\t\tnext: null\n\t\t};\n\t\tif (this._drawLast) { this._drawLast.next = order; }\n\t\tthis._drawLast = order;\n\t\tthis._drawFirst = this._drawFirst || this._drawLast;\n\t},\n\n\t_addPath: function (layer) {\n\t\tthis._requestRedraw(layer);\n\t},\n\n\t_removePath: function (layer) {\n\t\tvar order = layer._order;\n\t\tvar next = order.next;\n\t\tvar prev = order.prev;\n\n\t\tif (next) {\n\t\t\tnext.prev = prev;\n\t\t} else {\n\t\t\tthis._drawLast = prev;\n\t\t}\n\t\tif (prev) {\n\t\t\tprev.next = next;\n\t\t} else {\n\t\t\tthis._drawFirst = next;\n\t\t}\n\n\t\tdelete layer._order;\n\n\t\tdelete this._layers[stamp(layer)];\n\n\t\tthis._requestRedraw(layer);\n\t},\n\n\t_updatePath: function (layer) {\n\t\t// Redraw the union of the layer's old pixel\n\t\t// bounds and the new pixel bounds.\n\t\tthis._extendRedrawBounds(layer);\n\t\tlayer._project();\n\t\tlayer._update();\n\t\t// The redraw will extend the redraw bounds\n\t\t// with the new pixel bounds.\n\t\tthis._requestRedraw(layer);\n\t},\n\n\t_updateStyle: function (layer) {\n\t\tthis._updateDashArray(layer);\n\t\tthis._requestRedraw(layer);\n\t},\n\n\t_updateDashArray: function (layer) {\n\t\tif (typeof layer.options.dashArray === 'string') {\n\t\t\tvar parts = layer.options.dashArray.split(/[, ]+/),\n\t\t\t    dashArray = [],\n\t\t\t    dashValue,\n\t\t\t    i;\n\t\t\tfor (i = 0; i < parts.length; i++) {\n\t\t\t\tdashValue = Number(parts[i]);\n\t\t\t\t// Ignore dash array containing invalid lengths\n\t\t\t\tif (isNaN(dashValue)) { return; }\n\t\t\t\tdashArray.push(dashValue);\n\t\t\t}\n\t\t\tlayer.options._dashArray = dashArray;\n\t\t} else {\n\t\t\tlayer.options._dashArray = layer.options.dashArray;\n\t\t}\n\t},\n\n\t_requestRedraw: function (layer) {\n\t\tif (!this._map) { return; }\n\n\t\tthis._extendRedrawBounds(layer);\n\t\tthis._redrawRequest = this._redrawRequest || requestAnimFrame(this._redraw, this);\n\t},\n\n\t_extendRedrawBounds: function (layer) {\n\t\tif (layer._pxBounds) {\n\t\t\tvar padding = (layer.options.weight || 0) + 1;\n\t\t\tthis._redrawBounds = this._redrawBounds || new Bounds();\n\t\t\tthis._redrawBounds.extend(layer._pxBounds.min.subtract([padding, padding]));\n\t\t\tthis._redrawBounds.extend(layer._pxBounds.max.add([padding, padding]));\n\t\t}\n\t},\n\n\t_redraw: function () {\n\t\tthis._redrawRequest = null;\n\n\t\tif (this._redrawBounds) {\n\t\t\tthis._redrawBounds.min._floor();\n\t\t\tthis._redrawBounds.max._ceil();\n\t\t}\n\n\t\tthis._clear(); // clear layers in redraw bounds\n\t\tthis._draw(); // draw layers\n\n\t\tthis._redrawBounds = null;\n\t},\n\n\t_clear: function () {\n\t\tvar bounds = this._redrawBounds;\n\t\tif (bounds) {\n\t\t\tvar size = bounds.getSize();\n\t\t\tthis._ctx.clearRect(bounds.min.x, bounds.min.y, size.x, size.y);\n\t\t} else {\n\t\t\tthis._ctx.clearRect(0, 0, this._container.width, this._container.height);\n\t\t}\n\t},\n\n\t_draw: function () {\n\t\tvar layer, bounds = this._redrawBounds;\n\t\tthis._ctx.save();\n\t\tif (bounds) {\n\t\t\tvar size = bounds.getSize();\n\t\t\tthis._ctx.beginPath();\n\t\t\tthis._ctx.rect(bounds.min.x, bounds.min.y, size.x, size.y);\n\t\t\tthis._ctx.clip();\n\t\t}\n\n\t\tthis._drawing = true;\n\n\t\tfor (var order = this._drawFirst; order; order = order.next) {\n\t\t\tlayer = order.layer;\n\t\t\tif (!bounds || (layer._pxBounds && layer._pxBounds.intersects(bounds))) {\n\t\t\t\tlayer._updatePath();\n\t\t\t}\n\t\t}\n\n\t\tthis._drawing = false;\n\n\t\tthis._ctx.restore();  // Restore state before clipping.\n\t},\n\n\t_updatePoly: function (layer, closed) {\n\t\tif (!this._drawing) { return; }\n\n\t\tvar i, j, len2, p,\n\t\t    parts = layer._parts,\n\t\t    len = parts.length,\n\t\t    ctx = this._ctx;\n\n\t\tif (!len) { return; }\n\n\t\tctx.beginPath();\n\n\t\tfor (i = 0; i < len; i++) {\n\t\t\tfor (j = 0, len2 = parts[i].length; j < len2; j++) {\n\t\t\t\tp = parts[i][j];\n\t\t\t\tctx[j ? 'lineTo' : 'moveTo'](p.x, p.y);\n\t\t\t}\n\t\t\tif (closed) {\n\t\t\t\tctx.closePath();\n\t\t\t}\n\t\t}\n\n\t\tthis._fillStroke(ctx, layer);\n\n\t\t// TODO optimization: 1 fill/stroke for all features with equal style instead of 1 for each feature\n\t},\n\n\t_updateCircle: function (layer) {\n\n\t\tif (!this._drawing || layer._empty()) { return; }\n\n\t\tvar p = layer._point,\n\t\t    ctx = this._ctx,\n\t\t    r = Math.max(Math.round(layer._radius), 1),\n\t\t    s = (Math.max(Math.round(layer._radiusY), 1) || r) / r;\n\n\t\tif (s !== 1) {\n\t\t\tctx.save();\n\t\t\tctx.scale(1, s);\n\t\t}\n\n\t\tctx.beginPath();\n\t\tctx.arc(p.x, p.y / s, r, 0, Math.PI * 2, false);\n\n\t\tif (s !== 1) {\n\t\t\tctx.restore();\n\t\t}\n\n\t\tthis._fillStroke(ctx, layer);\n\t},\n\n\t_fillStroke: function (ctx, layer) {\n\t\tvar options = layer.options;\n\n\t\tif (options.fill) {\n\t\t\tctx.globalAlpha = options.fillOpacity;\n\t\t\tctx.fillStyle = options.fillColor || options.color;\n\t\t\tctx.fill(options.fillRule || 'evenodd');\n\t\t}\n\n\t\tif (options.stroke && options.weight !== 0) {\n\t\t\tif (ctx.setLineDash) {\n\t\t\t\tctx.setLineDash(layer.options && layer.options._dashArray || []);\n\t\t\t}\n\t\t\tctx.globalAlpha = options.opacity;\n\t\t\tctx.lineWidth = options.weight;\n\t\t\tctx.strokeStyle = options.color;\n\t\t\tctx.lineCap = options.lineCap;\n\t\t\tctx.lineJoin = options.lineJoin;\n\t\t\tctx.stroke();\n\t\t}\n\t},\n\n\t// Canvas obviously doesn't have mouse events for individual drawn objects,\n\t// so we emulate that by calculating what's under the mouse on mousemove/click manually\n\n\t_onClick: function (e) {\n\t\tvar point = this._map.mouseEventToLayerPoint(e), layer, clickedLayer;\n\n\t\tfor (var order = this._drawFirst; order; order = order.next) {\n\t\t\tlayer = order.layer;\n\t\t\tif (layer.options.interactive && layer._containsPoint(point) && !this._map._draggableMoved(layer)) {\n\t\t\t\tclickedLayer = layer;\n\t\t\t}\n\t\t}\n\t\tif (clickedLayer)  {\n\t\t\tfakeStop(e);\n\t\t\tthis._fireEvent([clickedLayer], e);\n\t\t}\n\t},\n\n\t_onMouseMove: function (e) {\n\t\tif (!this._map || this._map.dragging.moving() || this._map._animatingZoom) { return; }\n\n\t\tvar point = this._map.mouseEventToLayerPoint(e);\n\t\tthis._handleMouseHover(e, point);\n\t},\n\n\n\t_handleMouseOut: function (e) {\n\t\tvar layer = this._hoveredLayer;\n\t\tif (layer) {\n\t\t\t// if we're leaving the layer, fire mouseout\n\t\t\tremoveClass(this._container, 'leaflet-interactive');\n\t\t\tthis._fireEvent([layer], e, 'mouseout');\n\t\t\tthis._hoveredLayer = null;\n\t\t\tthis._mouseHoverThrottled = false;\n\t\t}\n\t},\n\n\t_handleMouseHover: function (e, point) {\n\t\tif (this._mouseHoverThrottled) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar layer, candidateHoveredLayer;\n\n\t\tfor (var order = this._drawFirst; order; order = order.next) {\n\t\t\tlayer = order.layer;\n\t\t\tif (layer.options.interactive && layer._containsPoint(point)) {\n\t\t\t\tcandidateHoveredLayer = layer;\n\t\t\t}\n\t\t}\n\n\t\tif (candidateHoveredLayer !== this._hoveredLayer) {\n\t\t\tthis._handleMouseOut(e);\n\n\t\t\tif (candidateHoveredLayer) {\n\t\t\t\taddClass(this._container, 'leaflet-interactive'); // change cursor\n\t\t\t\tthis._fireEvent([candidateHoveredLayer], e, 'mouseover');\n\t\t\t\tthis._hoveredLayer = candidateHoveredLayer;\n\t\t\t}\n\t\t}\n\n\t\tif (this._hoveredLayer) {\n\t\t\tthis._fireEvent([this._hoveredLayer], e);\n\t\t}\n\n\t\tthis._mouseHoverThrottled = true;\n\t\tsetTimeout(L.bind(function () {\n\t\t\tthis._mouseHoverThrottled = false;\n\t\t}, this), 32);\n\t},\n\n\t_fireEvent: function (layers, e, type) {\n\t\tthis._map._fireDOMEvent(e, type || e.type, layers);\n\t},\n\n\t_bringToFront: function (layer) {\n\t\tvar order = layer._order;\n\n\t\tif (!order) { return; }\n\n\t\tvar next = order.next;\n\t\tvar prev = order.prev;\n\n\t\tif (next) {\n\t\t\tnext.prev = prev;\n\t\t} else {\n\t\t\t// Already last\n\t\t\treturn;\n\t\t}\n\t\tif (prev) {\n\t\t\tprev.next = next;\n\t\t} else if (next) {\n\t\t\t// Update first entry unless this is the\n\t\t\t// single entry\n\t\t\tthis._drawFirst = next;\n\t\t}\n\n\t\torder.prev = this._drawLast;\n\t\tthis._drawLast.next = order;\n\n\t\torder.next = null;\n\t\tthis._drawLast = order;\n\n\t\tthis._requestRedraw(layer);\n\t},\n\n\t_bringToBack: function (layer) {\n\t\tvar order = layer._order;\n\n\t\tif (!order) { return; }\n\n\t\tvar next = order.next;\n\t\tvar prev = order.prev;\n\n\t\tif (prev) {\n\t\t\tprev.next = next;\n\t\t} else {\n\t\t\t// Already first\n\t\t\treturn;\n\t\t}\n\t\tif (next) {\n\t\t\tnext.prev = prev;\n\t\t} else if (prev) {\n\t\t\t// Update last entry unless this is the\n\t\t\t// single entry\n\t\t\tthis._drawLast = prev;\n\t\t}\n\n\t\torder.prev = null;\n\n\t\torder.next = this._drawFirst;\n\t\tthis._drawFirst.prev = order;\n\t\tthis._drawFirst = order;\n\n\t\tthis._requestRedraw(layer);\n\t}\n});\n\n// @factory L.canvas(options?: Renderer options)\n// Creates a Canvas renderer with the given options.\nfunction canvas$1(options) {\n\treturn canvas ? new Canvas(options) : null;\n}\n\n/*\n * Thanks to Dmitry Baranovsky and his Raphael library for inspiration!\n */\n\n\nvar vmlCreate = (function () {\n\ttry {\n\t\tdocument.namespaces.add('lvml', 'urn:schemas-microsoft-com:vml');\n\t\treturn function (name) {\n\t\t\treturn document.createElement('<lvml:' + name + ' class=\"lvml\">');\n\t\t};\n\t} catch (e) {\n\t\treturn function (name) {\n\t\t\treturn document.createElement('<' + name + ' xmlns=\"urn:schemas-microsoft.com:vml\" class=\"lvml\">');\n\t\t};\n\t}\n})();\n\n\n/*\n * @class SVG\n *\n *\n * VML was deprecated in 2012, which means VML functionality exists only for backwards compatibility\n * with old versions of Internet Explorer.\n */\n\n// mixin to redefine some SVG methods to handle VML syntax which is similar but with some differences\nvar vmlMixin = {\n\n\t_initContainer: function () {\n\t\tthis._container = create$1('div', 'leaflet-vml-container');\n\t},\n\n\t_update: function () {\n\t\tif (this._map._animatingZoom) { return; }\n\t\tRenderer.prototype._update.call(this);\n\t\tthis.fire('update');\n\t},\n\n\t_initPath: function (layer) {\n\t\tvar container = layer._container = vmlCreate('shape');\n\n\t\taddClass(container, 'leaflet-vml-shape ' + (this.options.className || ''));\n\n\t\tcontainer.coordsize = '1 1';\n\n\t\tlayer._path = vmlCreate('path');\n\t\tcontainer.appendChild(layer._path);\n\n\t\tthis._updateStyle(layer);\n\t\tthis._layers[stamp(layer)] = layer;\n\t},\n\n\t_addPath: function (layer) {\n\t\tvar container = layer._container;\n\t\tthis._container.appendChild(container);\n\n\t\tif (layer.options.interactive) {\n\t\t\tlayer.addInteractiveTarget(container);\n\t\t}\n\t},\n\n\t_removePath: function (layer) {\n\t\tvar container = layer._container;\n\t\tremove(container);\n\t\tlayer.removeInteractiveTarget(container);\n\t\tdelete this._layers[stamp(layer)];\n\t},\n\n\t_updateStyle: function (layer) {\n\t\tvar stroke = layer._stroke,\n\t\t    fill = layer._fill,\n\t\t    options = layer.options,\n\t\t    container = layer._container;\n\n\t\tcontainer.stroked = !!options.stroke;\n\t\tcontainer.filled = !!options.fill;\n\n\t\tif (options.stroke) {\n\t\t\tif (!stroke) {\n\t\t\t\tstroke = layer._stroke = vmlCreate('stroke');\n\t\t\t}\n\t\t\tcontainer.appendChild(stroke);\n\t\t\tstroke.weight = options.weight + 'px';\n\t\t\tstroke.color = options.color;\n\t\t\tstroke.opacity = options.opacity;\n\n\t\t\tif (options.dashArray) {\n\t\t\t\tstroke.dashStyle = isArray(options.dashArray) ?\n\t\t\t\t    options.dashArray.join(' ') :\n\t\t\t\t    options.dashArray.replace(/( *, *)/g, ' ');\n\t\t\t} else {\n\t\t\t\tstroke.dashStyle = '';\n\t\t\t}\n\t\t\tstroke.endcap = options.lineCap.replace('butt', 'flat');\n\t\t\tstroke.joinstyle = options.lineJoin;\n\n\t\t} else if (stroke) {\n\t\t\tcontainer.removeChild(stroke);\n\t\t\tlayer._stroke = null;\n\t\t}\n\n\t\tif (options.fill) {\n\t\t\tif (!fill) {\n\t\t\t\tfill = layer._fill = vmlCreate('fill');\n\t\t\t}\n\t\t\tcontainer.appendChild(fill);\n\t\t\tfill.color = options.fillColor || options.color;\n\t\t\tfill.opacity = options.fillOpacity;\n\n\t\t} else if (fill) {\n\t\t\tcontainer.removeChild(fill);\n\t\t\tlayer._fill = null;\n\t\t}\n\t},\n\n\t_updateCircle: function (layer) {\n\t\tvar p = layer._point.round(),\n\t\t    r = Math.round(layer._radius),\n\t\t    r2 = Math.round(layer._radiusY || r);\n\n\t\tthis._setPath(layer, layer._empty() ? 'M0 0' :\n\t\t\t'AL ' + p.x + ',' + p.y + ' ' + r + ',' + r2 + ' 0,' + (65535 * 360));\n\t},\n\n\t_setPath: function (layer, path) {\n\t\tlayer._path.v = path;\n\t},\n\n\t_bringToFront: function (layer) {\n\t\ttoFront(layer._container);\n\t},\n\n\t_bringToBack: function (layer) {\n\t\ttoBack(layer._container);\n\t}\n};\n\nvar create$2 = vml ? vmlCreate : svgCreate;\n\n/*\n * @class SVG\n * @inherits Renderer\n * @aka L.SVG\n *\n * Allows vector layers to be displayed with [SVG](https://developer.mozilla.org/docs/Web/SVG).\n * Inherits `Renderer`.\n *\n * Due to [technical limitations](http://caniuse.com/#search=svg), SVG is not\n * available in all web browsers, notably Android 2.x and 3.x.\n *\n * Although SVG is not available on IE7 and IE8, these browsers support\n * [VML](https://en.wikipedia.org/wiki/Vector_Markup_Language)\n * (a now deprecated technology), and the SVG renderer will fall back to VML in\n * this case.\n *\n * @example\n *\n * Use SVG by default for all paths in the map:\n *\n * ```js\n * var map = L.map('map', {\n * \trenderer: L.svg()\n * });\n * ```\n *\n * Use a SVG renderer with extra padding for specific vector geometries:\n *\n * ```js\n * var map = L.map('map');\n * var myRenderer = L.svg({ padding: 0.5 });\n * var line = L.polyline( coordinates, { renderer: myRenderer } );\n * var circle = L.circle( center, { renderer: myRenderer } );\n * ```\n */\n\nvar SVG = Renderer.extend({\n\n\tgetEvents: function () {\n\t\tvar events = Renderer.prototype.getEvents.call(this);\n\t\tevents.zoomstart = this._onZoomStart;\n\t\treturn events;\n\t},\n\n\t_initContainer: function () {\n\t\tthis._container = create$2('svg');\n\n\t\t// makes it possible to click through svg root; we'll reset it back in individual paths\n\t\tthis._container.setAttribute('pointer-events', 'none');\n\n\t\tthis._rootGroup = create$2('g');\n\t\tthis._container.appendChild(this._rootGroup);\n\t},\n\n\t_destroyContainer: function () {\n\t\tremove(this._container);\n\t\toff(this._container);\n\t\tdelete this._container;\n\t\tdelete this._rootGroup;\n\t\tdelete this._svgSize;\n\t},\n\n\t_onZoomStart: function () {\n\t\t// Drag-then-pinch interactions might mess up the center and zoom.\n\t\t// In this case, the easiest way to prevent this is re-do the renderer\n\t\t//   bounds and padding when the zooming starts.\n\t\tthis._update();\n\t},\n\n\t_update: function () {\n\t\tif (this._map._animatingZoom && this._bounds) { return; }\n\n\t\tRenderer.prototype._update.call(this);\n\n\t\tvar b = this._bounds,\n\t\t    size = b.getSize(),\n\t\t    container = this._container;\n\n\t\t// set size of svg-container if changed\n\t\tif (!this._svgSize || !this._svgSize.equals(size)) {\n\t\t\tthis._svgSize = size;\n\t\t\tcontainer.setAttribute('width', size.x);\n\t\t\tcontainer.setAttribute('height', size.y);\n\t\t}\n\n\t\t// movement: update container viewBox so that we don't have to change coordinates of individual layers\n\t\tsetPosition(container, b.min);\n\t\tcontainer.setAttribute('viewBox', [b.min.x, b.min.y, size.x, size.y].join(' '));\n\n\t\tthis.fire('update');\n\t},\n\n\t// methods below are called by vector layers implementations\n\n\t_initPath: function (layer) {\n\t\tvar path = layer._path = create$2('path');\n\n\t\t// @namespace Path\n\t\t// @option className: String = null\n\t\t// Custom class name set on an element. Only for SVG renderer.\n\t\tif (layer.options.className) {\n\t\t\taddClass(path, layer.options.className);\n\t\t}\n\n\t\tif (layer.options.interactive) {\n\t\t\taddClass(path, 'leaflet-interactive');\n\t\t}\n\n\t\tthis._updateStyle(layer);\n\t\tthis._layers[stamp(layer)] = layer;\n\t},\n\n\t_addPath: function (layer) {\n\t\tif (!this._rootGroup) { this._initContainer(); }\n\t\tthis._rootGroup.appendChild(layer._path);\n\t\tlayer.addInteractiveTarget(layer._path);\n\t},\n\n\t_removePath: function (layer) {\n\t\tremove(layer._path);\n\t\tlayer.removeInteractiveTarget(layer._path);\n\t\tdelete this._layers[stamp(layer)];\n\t},\n\n\t_updatePath: function (layer) {\n\t\tlayer._project();\n\t\tlayer._update();\n\t},\n\n\t_updateStyle: function (layer) {\n\t\tvar path = layer._path,\n\t\t    options = layer.options;\n\n\t\tif (!path) { return; }\n\n\t\tif (options.stroke) {\n\t\t\tpath.setAttribute('stroke', options.color);\n\t\t\tpath.setAttribute('stroke-opacity', options.opacity);\n\t\t\tpath.setAttribute('stroke-width', options.weight);\n\t\t\tpath.setAttribute('stroke-linecap', options.lineCap);\n\t\t\tpath.setAttribute('stroke-linejoin', options.lineJoin);\n\n\t\t\tif (options.dashArray) {\n\t\t\t\tpath.setAttribute('stroke-dasharray', options.dashArray);\n\t\t\t} else {\n\t\t\t\tpath.removeAttribute('stroke-dasharray');\n\t\t\t}\n\n\t\t\tif (options.dashOffset) {\n\t\t\t\tpath.setAttribute('stroke-dashoffset', options.dashOffset);\n\t\t\t} else {\n\t\t\t\tpath.removeAttribute('stroke-dashoffset');\n\t\t\t}\n\t\t} else {\n\t\t\tpath.setAttribute('stroke', 'none');\n\t\t}\n\n\t\tif (options.fill) {\n\t\t\tpath.setAttribute('fill', options.fillColor || options.color);\n\t\t\tpath.setAttribute('fill-opacity', options.fillOpacity);\n\t\t\tpath.setAttribute('fill-rule', options.fillRule || 'evenodd');\n\t\t} else {\n\t\t\tpath.setAttribute('fill', 'none');\n\t\t}\n\t},\n\n\t_updatePoly: function (layer, closed) {\n\t\tthis._setPath(layer, pointsToPath(layer._parts, closed));\n\t},\n\n\t_updateCircle: function (layer) {\n\t\tvar p = layer._point,\n\t\t    r = Math.max(Math.round(layer._radius), 1),\n\t\t    r2 = Math.max(Math.round(layer._radiusY), 1) || r,\n\t\t    arc = 'a' + r + ',' + r2 + ' 0 1,0 ';\n\n\t\t// drawing a circle with two half-arcs\n\t\tvar d = layer._empty() ? 'M0 0' :\n\t\t\t'M' + (p.x - r) + ',' + p.y +\n\t\t\tarc + (r * 2) + ',0 ' +\n\t\t\tarc + (-r * 2) + ',0 ';\n\n\t\tthis._setPath(layer, d);\n\t},\n\n\t_setPath: function (layer, path) {\n\t\tlayer._path.setAttribute('d', path);\n\t},\n\n\t// SVG does not have the concept of zIndex so we resort to changing the DOM order of elements\n\t_bringToFront: function (layer) {\n\t\ttoFront(layer._path);\n\t},\n\n\t_bringToBack: function (layer) {\n\t\ttoBack(layer._path);\n\t}\n});\n\nif (vml) {\n\tSVG.include(vmlMixin);\n}\n\n// @namespace SVG\n// @factory L.svg(options?: Renderer options)\n// Creates a SVG renderer with the given options.\nfunction svg$1(options) {\n\treturn svg || vml ? new SVG(options) : null;\n}\n\nMap.include({\n\t// @namespace Map; @method getRenderer(layer: Path): Renderer\n\t// Returns the instance of `Renderer` that should be used to render the given\n\t// `Path`. It will ensure that the `renderer` options of the map and paths\n\t// are respected, and that the renderers do exist on the map.\n\tgetRenderer: function (layer) {\n\t\t// @namespace Path; @option renderer: Renderer\n\t\t// Use this specific instance of `Renderer` for this path. Takes\n\t\t// precedence over the map's [default renderer](#map-renderer).\n\t\tvar renderer = layer.options.renderer || this._getPaneRenderer(layer.options.pane) || this.options.renderer || this._renderer;\n\n\t\tif (!renderer) {\n\t\t\trenderer = this._renderer = this._createRenderer();\n\t\t}\n\n\t\tif (!this.hasLayer(renderer)) {\n\t\t\tthis.addLayer(renderer);\n\t\t}\n\t\treturn renderer;\n\t},\n\n\t_getPaneRenderer: function (name) {\n\t\tif (name === 'overlayPane' || name === undefined) {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar renderer = this._paneRenderers[name];\n\t\tif (renderer === undefined) {\n\t\t\trenderer = this._createRenderer({pane: name});\n\t\t\tthis._paneRenderers[name] = renderer;\n\t\t}\n\t\treturn renderer;\n\t},\n\n\t_createRenderer: function (options) {\n\t\t// @namespace Map; @option preferCanvas: Boolean = false\n\t\t// Whether `Path`s should be rendered on a `Canvas` renderer.\n\t\t// By default, all `Path`s are rendered in a `SVG` renderer.\n\t\treturn (this.options.preferCanvas && canvas$1(options)) || svg$1(options);\n\t}\n});\n\n/*\n * L.Rectangle extends Polygon and creates a rectangle when passed a LatLngBounds object.\n */\n\n/*\n * @class Rectangle\n * @aka L.Rectangle\n * @inherits Polygon\n *\n * A class for drawing rectangle overlays on a map. Extends `Polygon`.\n *\n * @example\n *\n * ```js\n * // define rectangle geographical bounds\n * var bounds = [[54.559322, -5.767822], [56.1210604, -3.021240]];\n *\n * // create an orange rectangle\n * L.rectangle(bounds, {color: \"#ff7800\", weight: 1}).addTo(map);\n *\n * // zoom the map to the rectangle bounds\n * map.fitBounds(bounds);\n * ```\n *\n */\n\n\nvar Rectangle = Polygon.extend({\n\tinitialize: function (latLngBounds, options) {\n\t\tPolygon.prototype.initialize.call(this, this._boundsToLatLngs(latLngBounds), options);\n\t},\n\n\t// @method setBounds(latLngBounds: LatLngBounds): this\n\t// Redraws the rectangle with the passed bounds.\n\tsetBounds: function (latLngBounds) {\n\t\treturn this.setLatLngs(this._boundsToLatLngs(latLngBounds));\n\t},\n\n\t_boundsToLatLngs: function (latLngBounds) {\n\t\tlatLngBounds = toLatLngBounds(latLngBounds);\n\t\treturn [\n\t\t\tlatLngBounds.getSouthWest(),\n\t\t\tlatLngBounds.getNorthWest(),\n\t\t\tlatLngBounds.getNorthEast(),\n\t\t\tlatLngBounds.getSouthEast()\n\t\t];\n\t}\n});\n\n\n// @factory L.rectangle(latLngBounds: LatLngBounds, options?: Polyline options)\nfunction rectangle(latLngBounds, options) {\n\treturn new Rectangle(latLngBounds, options);\n}\n\nSVG.create = create$2;\nSVG.pointsToPath = pointsToPath;\n\nGeoJSON.geometryToLayer = geometryToLayer;\nGeoJSON.coordsToLatLng = coordsToLatLng;\nGeoJSON.coordsToLatLngs = coordsToLatLngs;\nGeoJSON.latLngToCoords = latLngToCoords;\nGeoJSON.latLngsToCoords = latLngsToCoords;\nGeoJSON.getFeature = getFeature;\nGeoJSON.asFeature = asFeature;\n\n/*\n * L.Handler.BoxZoom is used to add shift-drag zoom interaction to the map\n * (zoom to a selected bounding box), enabled by default.\n */\n\n// @namespace Map\n// @section Interaction Options\nMap.mergeOptions({\n\t// @option boxZoom: Boolean = true\n\t// Whether the map can be zoomed to a rectangular area specified by\n\t// dragging the mouse while pressing the shift key.\n\tboxZoom: true\n});\n\nvar BoxZoom = Handler.extend({\n\tinitialize: function (map) {\n\t\tthis._map = map;\n\t\tthis._container = map._container;\n\t\tthis._pane = map._panes.overlayPane;\n\t\tthis._resetStateTimeout = 0;\n\t\tmap.on('unload', this._destroy, this);\n\t},\n\n\taddHooks: function () {\n\t\ton(this._container, 'mousedown', this._onMouseDown, this);\n\t},\n\n\tremoveHooks: function () {\n\t\toff(this._container, 'mousedown', this._onMouseDown, this);\n\t},\n\n\tmoved: function () {\n\t\treturn this._moved;\n\t},\n\n\t_destroy: function () {\n\t\tremove(this._pane);\n\t\tdelete this._pane;\n\t},\n\n\t_resetState: function () {\n\t\tthis._resetStateTimeout = 0;\n\t\tthis._moved = false;\n\t},\n\n\t_clearDeferredResetState: function () {\n\t\tif (this._resetStateTimeout !== 0) {\n\t\t\tclearTimeout(this._resetStateTimeout);\n\t\t\tthis._resetStateTimeout = 0;\n\t\t}\n\t},\n\n\t_onMouseDown: function (e) {\n\t\tif (!e.shiftKey || ((e.which !== 1) && (e.button !== 1))) { return false; }\n\n\t\t// Clear the deferred resetState if it hasn't executed yet, otherwise it\n\t\t// will interrupt the interaction and orphan a box element in the container.\n\t\tthis._clearDeferredResetState();\n\t\tthis._resetState();\n\n\t\tdisableTextSelection();\n\t\tdisableImageDrag();\n\n\t\tthis._startPoint = this._map.mouseEventToContainerPoint(e);\n\n\t\ton(document, {\n\t\t\tcontextmenu: stop,\n\t\t\tmousemove: this._onMouseMove,\n\t\t\tmouseup: this._onMouseUp,\n\t\t\tkeydown: this._onKeyDown\n\t\t}, this);\n\t},\n\n\t_onMouseMove: function (e) {\n\t\tif (!this._moved) {\n\t\t\tthis._moved = true;\n\n\t\t\tthis._box = create$1('div', 'leaflet-zoom-box', this._container);\n\t\t\taddClass(this._container, 'leaflet-crosshair');\n\n\t\t\tthis._map.fire('boxzoomstart');\n\t\t}\n\n\t\tthis._point = this._map.mouseEventToContainerPoint(e);\n\n\t\tvar bounds = new Bounds(this._point, this._startPoint),\n\t\t    size = bounds.getSize();\n\n\t\tsetPosition(this._box, bounds.min);\n\n\t\tthis._box.style.width  = size.x + 'px';\n\t\tthis._box.style.height = size.y + 'px';\n\t},\n\n\t_finish: function () {\n\t\tif (this._moved) {\n\t\t\tremove(this._box);\n\t\t\tremoveClass(this._container, 'leaflet-crosshair');\n\t\t}\n\n\t\tenableTextSelection();\n\t\tenableImageDrag();\n\n\t\toff(document, {\n\t\t\tcontextmenu: stop,\n\t\t\tmousemove: this._onMouseMove,\n\t\t\tmouseup: this._onMouseUp,\n\t\t\tkeydown: this._onKeyDown\n\t\t}, this);\n\t},\n\n\t_onMouseUp: function (e) {\n\t\tif ((e.which !== 1) && (e.button !== 1)) { return; }\n\n\t\tthis._finish();\n\n\t\tif (!this._moved) { return; }\n\t\t// Postpone to next JS tick so internal click event handling\n\t\t// still see it as \"moved\".\n\t\tthis._clearDeferredResetState();\n\t\tthis._resetStateTimeout = setTimeout(bind(this._resetState, this), 0);\n\n\t\tvar bounds = new LatLngBounds(\n\t\t        this._map.containerPointToLatLng(this._startPoint),\n\t\t        this._map.containerPointToLatLng(this._point));\n\n\t\tthis._map\n\t\t\t.fitBounds(bounds)\n\t\t\t.fire('boxzoomend', {boxZoomBounds: bounds});\n\t},\n\n\t_onKeyDown: function (e) {\n\t\tif (e.keyCode === 27) {\n\t\t\tthis._finish();\n\t\t}\n\t}\n});\n\n// @section Handlers\n// @property boxZoom: Handler\n// Box (shift-drag with mouse) zoom handler.\nMap.addInitHook('addHandler', 'boxZoom', BoxZoom);\n\n/*\n * L.Handler.DoubleClickZoom is used to handle double-click zoom on the map, enabled by default.\n */\n\n// @namespace Map\n// @section Interaction Options\n\nMap.mergeOptions({\n\t// @option doubleClickZoom: Boolean|String = true\n\t// Whether the map can be zoomed in by double clicking on it and\n\t// zoomed out by double clicking while holding shift. If passed\n\t// `'center'`, double-click zoom will zoom to the center of the\n\t//  view regardless of where the mouse was.\n\tdoubleClickZoom: true\n});\n\nvar DoubleClickZoom = Handler.extend({\n\taddHooks: function () {\n\t\tthis._map.on('dblclick', this._onDoubleClick, this);\n\t},\n\n\tremoveHooks: function () {\n\t\tthis._map.off('dblclick', this._onDoubleClick, this);\n\t},\n\n\t_onDoubleClick: function (e) {\n\t\tvar map = this._map,\n\t\t    oldZoom = map.getZoom(),\n\t\t    delta = map.options.zoomDelta,\n\t\t    zoom = e.originalEvent.shiftKey ? oldZoom - delta : oldZoom + delta;\n\n\t\tif (map.options.doubleClickZoom === 'center') {\n\t\t\tmap.setZoom(zoom);\n\t\t} else {\n\t\t\tmap.setZoomAround(e.containerPoint, zoom);\n\t\t}\n\t}\n});\n\n// @section Handlers\n//\n// Map properties include interaction handlers that allow you to control\n// interaction behavior in runtime, enabling or disabling certain features such\n// as dragging or touch zoom (see `Handler` methods). For example:\n//\n// ```js\n// map.doubleClickZoom.disable();\n// ```\n//\n// @property doubleClickZoom: Handler\n// Double click zoom handler.\nMap.addInitHook('addHandler', 'doubleClickZoom', DoubleClickZoom);\n\n/*\n * L.Handler.MapDrag is used to make the map draggable (with panning inertia), enabled by default.\n */\n\n// @namespace Map\n// @section Interaction Options\nMap.mergeOptions({\n\t// @option dragging: Boolean = true\n\t// Whether the map be draggable with mouse/touch or not.\n\tdragging: true,\n\n\t// @section Panning Inertia Options\n\t// @option inertia: Boolean = *\n\t// If enabled, panning of the map will have an inertia effect where\n\t// the map builds momentum while dragging and continues moving in\n\t// the same direction for some time. Feels especially nice on touch\n\t// devices. Enabled by default unless running on old Android devices.\n\tinertia: !android23,\n\n\t// @option inertiaDeceleration: Number = 3000\n\t// The rate with which the inertial movement slows down, in pixels/second².\n\tinertiaDeceleration: 3400, // px/s^2\n\n\t// @option inertiaMaxSpeed: Number = Infinity\n\t// Max speed of the inertial movement, in pixels/second.\n\tinertiaMaxSpeed: Infinity, // px/s\n\n\t// @option easeLinearity: Number = 0.2\n\teaseLinearity: 0.2,\n\n\t// TODO refactor, move to CRS\n\t// @option worldCopyJump: Boolean = false\n\t// With this option enabled, the map tracks when you pan to another \"copy\"\n\t// of the world and seamlessly jumps to the original one so that all overlays\n\t// like markers and vector layers are still visible.\n\tworldCopyJump: false,\n\n\t// @option maxBoundsViscosity: Number = 0.0\n\t// If `maxBounds` is set, this option will control how solid the bounds\n\t// are when dragging the map around. The default value of `0.0` allows the\n\t// user to drag outside the bounds at normal speed, higher values will\n\t// slow down map dragging outside bounds, and `1.0` makes the bounds fully\n\t// solid, preventing the user from dragging outside the bounds.\n\tmaxBoundsViscosity: 0.0\n});\n\nvar Drag = Handler.extend({\n\taddHooks: function () {\n\t\tif (!this._draggable) {\n\t\t\tvar map = this._map;\n\n\t\t\tthis._draggable = new Draggable(map._mapPane, map._container);\n\n\t\t\tthis._draggable.on({\n\t\t\t\tdragstart: this._onDragStart,\n\t\t\t\tdrag: this._onDrag,\n\t\t\t\tdragend: this._onDragEnd\n\t\t\t}, this);\n\n\t\t\tthis._draggable.on('predrag', this._onPreDragLimit, this);\n\t\t\tif (map.options.worldCopyJump) {\n\t\t\t\tthis._draggable.on('predrag', this._onPreDragWrap, this);\n\t\t\t\tmap.on('zoomend', this._onZoomEnd, this);\n\n\t\t\t\tmap.whenReady(this._onZoomEnd, this);\n\t\t\t}\n\t\t}\n\t\taddClass(this._map._container, 'leaflet-grab leaflet-touch-drag');\n\t\tthis._draggable.enable();\n\t\tthis._positions = [];\n\t\tthis._times = [];\n\t},\n\n\tremoveHooks: function () {\n\t\tremoveClass(this._map._container, 'leaflet-grab');\n\t\tremoveClass(this._map._container, 'leaflet-touch-drag');\n\t\tthis._draggable.disable();\n\t},\n\n\tmoved: function () {\n\t\treturn this._draggable && this._draggable._moved;\n\t},\n\n\tmoving: function () {\n\t\treturn this._draggable && this._draggable._moving;\n\t},\n\n\t_onDragStart: function () {\n\t\tvar map = this._map;\n\n\t\tmap._stop();\n\t\tif (this._map.options.maxBounds && this._map.options.maxBoundsViscosity) {\n\t\t\tvar bounds = toLatLngBounds(this._map.options.maxBounds);\n\n\t\t\tthis._offsetLimit = toBounds(\n\t\t\t\tthis._map.latLngToContainerPoint(bounds.getNorthWest()).multiplyBy(-1),\n\t\t\t\tthis._map.latLngToContainerPoint(bounds.getSouthEast()).multiplyBy(-1)\n\t\t\t\t\t.add(this._map.getSize()));\n\n\t\t\tthis._viscosity = Math.min(1.0, Math.max(0.0, this._map.options.maxBoundsViscosity));\n\t\t} else {\n\t\t\tthis._offsetLimit = null;\n\t\t}\n\n\t\tmap\n\t\t    .fire('movestart')\n\t\t    .fire('dragstart');\n\n\t\tif (map.options.inertia) {\n\t\t\tthis._positions = [];\n\t\t\tthis._times = [];\n\t\t}\n\t},\n\n\t_onDrag: function (e) {\n\t\tif (this._map.options.inertia) {\n\t\t\tvar time = this._lastTime = +new Date(),\n\t\t\t    pos = this._lastPos = this._draggable._absPos || this._draggable._newPos;\n\n\t\t\tthis._positions.push(pos);\n\t\t\tthis._times.push(time);\n\n\t\t\tthis._prunePositions(time);\n\t\t}\n\n\t\tthis._map\n\t\t    .fire('move', e)\n\t\t    .fire('drag', e);\n\t},\n\n\t_prunePositions: function (time) {\n\t\twhile (this._positions.length > 1 && time - this._times[0] > 50) {\n\t\t\tthis._positions.shift();\n\t\t\tthis._times.shift();\n\t\t}\n\t},\n\n\t_onZoomEnd: function () {\n\t\tvar pxCenter = this._map.getSize().divideBy(2),\n\t\t    pxWorldCenter = this._map.latLngToLayerPoint([0, 0]);\n\n\t\tthis._initialWorldOffset = pxWorldCenter.subtract(pxCenter).x;\n\t\tthis._worldWidth = this._map.getPixelWorldBounds().getSize().x;\n\t},\n\n\t_viscousLimit: function (value, threshold) {\n\t\treturn value - (value - threshold) * this._viscosity;\n\t},\n\n\t_onPreDragLimit: function () {\n\t\tif (!this._viscosity || !this._offsetLimit) { return; }\n\n\t\tvar offset = this._draggable._newPos.subtract(this._draggable._startPos);\n\n\t\tvar limit = this._offsetLimit;\n\t\tif (offset.x < limit.min.x) { offset.x = this._viscousLimit(offset.x, limit.min.x); }\n\t\tif (offset.y < limit.min.y) { offset.y = this._viscousLimit(offset.y, limit.min.y); }\n\t\tif (offset.x > limit.max.x) { offset.x = this._viscousLimit(offset.x, limit.max.x); }\n\t\tif (offset.y > limit.max.y) { offset.y = this._viscousLimit(offset.y, limit.max.y); }\n\n\t\tthis._draggable._newPos = this._draggable._startPos.add(offset);\n\t},\n\n\t_onPreDragWrap: function () {\n\t\t// TODO refactor to be able to adjust map pane position after zoom\n\t\tvar worldWidth = this._worldWidth,\n\t\t    halfWidth = Math.round(worldWidth / 2),\n\t\t    dx = this._initialWorldOffset,\n\t\t    x = this._draggable._newPos.x,\n\t\t    newX1 = (x - halfWidth + dx) % worldWidth + halfWidth - dx,\n\t\t    newX2 = (x + halfWidth + dx) % worldWidth - halfWidth - dx,\n\t\t    newX = Math.abs(newX1 + dx) < Math.abs(newX2 + dx) ? newX1 : newX2;\n\n\t\tthis._draggable._absPos = this._draggable._newPos.clone();\n\t\tthis._draggable._newPos.x = newX;\n\t},\n\n\t_onDragEnd: function (e) {\n\t\tvar map = this._map,\n\t\t    options = map.options,\n\n\t\t    noInertia = !options.inertia || this._times.length < 2;\n\n\t\tmap.fire('dragend', e);\n\n\t\tif (noInertia) {\n\t\t\tmap.fire('moveend');\n\n\t\t} else {\n\t\t\tthis._prunePositions(+new Date());\n\n\t\t\tvar direction = this._lastPos.subtract(this._positions[0]),\n\t\t\t    duration = (this._lastTime - this._times[0]) / 1000,\n\t\t\t    ease = options.easeLinearity,\n\n\t\t\t    speedVector = direction.multiplyBy(ease / duration),\n\t\t\t    speed = speedVector.distanceTo([0, 0]),\n\n\t\t\t    limitedSpeed = Math.min(options.inertiaMaxSpeed, speed),\n\t\t\t    limitedSpeedVector = speedVector.multiplyBy(limitedSpeed / speed),\n\n\t\t\t    decelerationDuration = limitedSpeed / (options.inertiaDeceleration * ease),\n\t\t\t    offset = limitedSpeedVector.multiplyBy(-decelerationDuration / 2).round();\n\n\t\t\tif (!offset.x && !offset.y) {\n\t\t\t\tmap.fire('moveend');\n\n\t\t\t} else {\n\t\t\t\toffset = map._limitOffset(offset, map.options.maxBounds);\n\n\t\t\t\trequestAnimFrame(function () {\n\t\t\t\t\tmap.panBy(offset, {\n\t\t\t\t\t\tduration: decelerationDuration,\n\t\t\t\t\t\teaseLinearity: ease,\n\t\t\t\t\t\tnoMoveStart: true,\n\t\t\t\t\t\tanimate: true\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n});\n\n// @section Handlers\n// @property dragging: Handler\n// Map dragging handler (by both mouse and touch).\nMap.addInitHook('addHandler', 'dragging', Drag);\n\n/*\n * L.Map.Keyboard is handling keyboard interaction with the map, enabled by default.\n */\n\n// @namespace Map\n// @section Keyboard Navigation Options\nMap.mergeOptions({\n\t// @option keyboard: Boolean = true\n\t// Makes the map focusable and allows users to navigate the map with keyboard\n\t// arrows and `+`/`-` keys.\n\tkeyboard: true,\n\n\t// @option keyboardPanDelta: Number = 80\n\t// Amount of pixels to pan when pressing an arrow key.\n\tkeyboardPanDelta: 80\n});\n\nvar Keyboard = Handler.extend({\n\n\tkeyCodes: {\n\t\tleft:    [37],\n\t\tright:   [39],\n\t\tdown:    [40],\n\t\tup:      [38],\n\t\tzoomIn:  [187, 107, 61, 171],\n\t\tzoomOut: [189, 109, 54, 173]\n\t},\n\n\tinitialize: function (map) {\n\t\tthis._map = map;\n\n\t\tthis._setPanDelta(map.options.keyboardPanDelta);\n\t\tthis._setZoomDelta(map.options.zoomDelta);\n\t},\n\n\taddHooks: function () {\n\t\tvar container = this._map._container;\n\n\t\t// make the container focusable by tabbing\n\t\tif (container.tabIndex <= 0) {\n\t\t\tcontainer.tabIndex = '0';\n\t\t}\n\n\t\ton(container, {\n\t\t\tfocus: this._onFocus,\n\t\t\tblur: this._onBlur,\n\t\t\tmousedown: this._onMouseDown\n\t\t}, this);\n\n\t\tthis._map.on({\n\t\t\tfocus: this._addHooks,\n\t\t\tblur: this._removeHooks\n\t\t}, this);\n\t},\n\n\tremoveHooks: function () {\n\t\tthis._removeHooks();\n\n\t\toff(this._map._container, {\n\t\t\tfocus: this._onFocus,\n\t\t\tblur: this._onBlur,\n\t\t\tmousedown: this._onMouseDown\n\t\t}, this);\n\n\t\tthis._map.off({\n\t\t\tfocus: this._addHooks,\n\t\t\tblur: this._removeHooks\n\t\t}, this);\n\t},\n\n\t_onMouseDown: function () {\n\t\tif (this._focused) { return; }\n\n\t\tvar body = document.body,\n\t\t    docEl = document.documentElement,\n\t\t    top = body.scrollTop || docEl.scrollTop,\n\t\t    left = body.scrollLeft || docEl.scrollLeft;\n\n\t\tthis._map._container.focus();\n\n\t\twindow.scrollTo(left, top);\n\t},\n\n\t_onFocus: function () {\n\t\tthis._focused = true;\n\t\tthis._map.fire('focus');\n\t},\n\n\t_onBlur: function () {\n\t\tthis._focused = false;\n\t\tthis._map.fire('blur');\n\t},\n\n\t_setPanDelta: function (panDelta) {\n\t\tvar keys = this._panKeys = {},\n\t\t    codes = this.keyCodes,\n\t\t    i, len;\n\n\t\tfor (i = 0, len = codes.left.length; i < len; i++) {\n\t\t\tkeys[codes.left[i]] = [-1 * panDelta, 0];\n\t\t}\n\t\tfor (i = 0, len = codes.right.length; i < len; i++) {\n\t\t\tkeys[codes.right[i]] = [panDelta, 0];\n\t\t}\n\t\tfor (i = 0, len = codes.down.length; i < len; i++) {\n\t\t\tkeys[codes.down[i]] = [0, panDelta];\n\t\t}\n\t\tfor (i = 0, len = codes.up.length; i < len; i++) {\n\t\t\tkeys[codes.up[i]] = [0, -1 * panDelta];\n\t\t}\n\t},\n\n\t_setZoomDelta: function (zoomDelta) {\n\t\tvar keys = this._zoomKeys = {},\n\t\t    codes = this.keyCodes,\n\t\t    i, len;\n\n\t\tfor (i = 0, len = codes.zoomIn.length; i < len; i++) {\n\t\t\tkeys[codes.zoomIn[i]] = zoomDelta;\n\t\t}\n\t\tfor (i = 0, len = codes.zoomOut.length; i < len; i++) {\n\t\t\tkeys[codes.zoomOut[i]] = -zoomDelta;\n\t\t}\n\t},\n\n\t_addHooks: function () {\n\t\ton(document, 'keydown', this._onKeyDown, this);\n\t},\n\n\t_removeHooks: function () {\n\t\toff(document, 'keydown', this._onKeyDown, this);\n\t},\n\n\t_onKeyDown: function (e) {\n\t\tif (e.altKey || e.ctrlKey || e.metaKey) { return; }\n\n\t\tvar key = e.keyCode,\n\t\t    map = this._map,\n\t\t    offset;\n\n\t\tif (key in this._panKeys) {\n\t\t\tif (!map._panAnim || !map._panAnim._inProgress) {\n\t\t\t\toffset = this._panKeys[key];\n\t\t\t\tif (e.shiftKey) {\n\t\t\t\t\toffset = toPoint(offset).multiplyBy(3);\n\t\t\t\t}\n\n\t\t\t\tmap.panBy(offset);\n\n\t\t\t\tif (map.options.maxBounds) {\n\t\t\t\t\tmap.panInsideBounds(map.options.maxBounds);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (key in this._zoomKeys) {\n\t\t\tmap.setZoom(map.getZoom() + (e.shiftKey ? 3 : 1) * this._zoomKeys[key]);\n\n\t\t} else if (key === 27 && map._popup && map._popup.options.closeOnEscapeKey) {\n\t\t\tmap.closePopup();\n\n\t\t} else {\n\t\t\treturn;\n\t\t}\n\n\t\tstop(e);\n\t}\n});\n\n// @section Handlers\n// @section Handlers\n// @property keyboard: Handler\n// Keyboard navigation handler.\nMap.addInitHook('addHandler', 'keyboard', Keyboard);\n\n/*\n * L.Handler.ScrollWheelZoom is used by L.Map to enable mouse scroll wheel zoom on the map.\n */\n\n// @namespace Map\n// @section Interaction Options\nMap.mergeOptions({\n\t// @section Mousewheel options\n\t// @option scrollWheelZoom: Boolean|String = true\n\t// Whether the map can be zoomed by using the mouse wheel. If passed `'center'`,\n\t// it will zoom to the center of the view regardless of where the mouse was.\n\tscrollWheelZoom: true,\n\n\t// @option wheelDebounceTime: Number = 40\n\t// Limits the rate at which a wheel can fire (in milliseconds). By default\n\t// user can't zoom via wheel more often than once per 40 ms.\n\twheelDebounceTime: 40,\n\n\t// @option wheelPxPerZoomLevel: Number = 60\n\t// How many scroll pixels (as reported by [L.DomEvent.getWheelDelta](#domevent-getwheeldelta))\n\t// mean a change of one full zoom level. Smaller values will make wheel-zooming\n\t// faster (and vice versa).\n\twheelPxPerZoomLevel: 60\n});\n\nvar ScrollWheelZoom = Handler.extend({\n\taddHooks: function () {\n\t\ton(this._map._container, 'mousewheel', this._onWheelScroll, this);\n\n\t\tthis._delta = 0;\n\t},\n\n\tremoveHooks: function () {\n\t\toff(this._map._container, 'mousewheel', this._onWheelScroll, this);\n\t},\n\n\t_onWheelScroll: function (e) {\n\t\tvar delta = getWheelDelta(e);\n\n\t\tvar debounce = this._map.options.wheelDebounceTime;\n\n\t\tthis._delta += delta;\n\t\tthis._lastMousePos = this._map.mouseEventToContainerPoint(e);\n\n\t\tif (!this._startTime) {\n\t\t\tthis._startTime = +new Date();\n\t\t}\n\n\t\tvar left = Math.max(debounce - (+new Date() - this._startTime), 0);\n\n\t\tclearTimeout(this._timer);\n\t\tthis._timer = setTimeout(bind(this._performZoom, this), left);\n\n\t\tstop(e);\n\t},\n\n\t_performZoom: function () {\n\t\tvar map = this._map,\n\t\t    zoom = map.getZoom(),\n\t\t    snap = this._map.options.zoomSnap || 0;\n\n\t\tmap._stop(); // stop panning and fly animations if any\n\n\t\t// map the delta with a sigmoid function to -4..4 range leaning on -1..1\n\t\tvar d2 = this._delta / (this._map.options.wheelPxPerZoomLevel * 4),\n\t\t    d3 = 4 * Math.log(2 / (1 + Math.exp(-Math.abs(d2)))) / Math.LN2,\n\t\t    d4 = snap ? Math.ceil(d3 / snap) * snap : d3,\n\t\t    delta = map._limitZoom(zoom + (this._delta > 0 ? d4 : -d4)) - zoom;\n\n\t\tthis._delta = 0;\n\t\tthis._startTime = null;\n\n\t\tif (!delta) { return; }\n\n\t\tif (map.options.scrollWheelZoom === 'center') {\n\t\t\tmap.setZoom(zoom + delta);\n\t\t} else {\n\t\t\tmap.setZoomAround(this._lastMousePos, zoom + delta);\n\t\t}\n\t}\n});\n\n// @section Handlers\n// @property scrollWheelZoom: Handler\n// Scroll wheel zoom handler.\nMap.addInitHook('addHandler', 'scrollWheelZoom', ScrollWheelZoom);\n\n/*\n * L.Map.Tap is used to enable mobile hacks like quick taps and long hold.\n */\n\n// @namespace Map\n// @section Interaction Options\nMap.mergeOptions({\n\t// @section Touch interaction options\n\t// @option tap: Boolean = true\n\t// Enables mobile hacks for supporting instant taps (fixing 200ms click\n\t// delay on iOS/Android) and touch holds (fired as `contextmenu` events).\n\ttap: true,\n\n\t// @option tapTolerance: Number = 15\n\t// The max number of pixels a user can shift his finger during touch\n\t// for it to be considered a valid tap.\n\ttapTolerance: 15\n});\n\nvar Tap = Handler.extend({\n\taddHooks: function () {\n\t\ton(this._map._container, 'touchstart', this._onDown, this);\n\t},\n\n\tremoveHooks: function () {\n\t\toff(this._map._container, 'touchstart', this._onDown, this);\n\t},\n\n\t_onDown: function (e) {\n\t\tif (!e.touches) { return; }\n\n\t\tpreventDefault(e);\n\n\t\tthis._fireClick = true;\n\n\t\t// don't simulate click or track longpress if more than 1 touch\n\t\tif (e.touches.length > 1) {\n\t\t\tthis._fireClick = false;\n\t\t\tclearTimeout(this._holdTimeout);\n\t\t\treturn;\n\t\t}\n\n\t\tvar first = e.touches[0],\n\t\t    el = first.target;\n\n\t\tthis._startPos = this._newPos = new Point(first.clientX, first.clientY);\n\n\t\t// if touching a link, highlight it\n\t\tif (el.tagName && el.tagName.toLowerCase() === 'a') {\n\t\t\taddClass(el, 'leaflet-active');\n\t\t}\n\n\t\t// simulate long hold but setting a timeout\n\t\tthis._holdTimeout = setTimeout(bind(function () {\n\t\t\tif (this._isTapValid()) {\n\t\t\t\tthis._fireClick = false;\n\t\t\t\tthis._onUp();\n\t\t\t\tthis._simulateEvent('contextmenu', first);\n\t\t\t}\n\t\t}, this), 1000);\n\n\t\tthis._simulateEvent('mousedown', first);\n\n\t\ton(document, {\n\t\t\ttouchmove: this._onMove,\n\t\t\ttouchend: this._onUp\n\t\t}, this);\n\t},\n\n\t_onUp: function (e) {\n\t\tclearTimeout(this._holdTimeout);\n\n\t\toff(document, {\n\t\t\ttouchmove: this._onMove,\n\t\t\ttouchend: this._onUp\n\t\t}, this);\n\n\t\tif (this._fireClick && e && e.changedTouches) {\n\n\t\t\tvar first = e.changedTouches[0],\n\t\t\t    el = first.target;\n\n\t\t\tif (el && el.tagName && el.tagName.toLowerCase() === 'a') {\n\t\t\t\tremoveClass(el, 'leaflet-active');\n\t\t\t}\n\n\t\t\tthis._simulateEvent('mouseup', first);\n\n\t\t\t// simulate click if the touch didn't move too much\n\t\t\tif (this._isTapValid()) {\n\t\t\t\tthis._simulateEvent('click', first);\n\t\t\t}\n\t\t}\n\t},\n\n\t_isTapValid: function () {\n\t\treturn this._newPos.distanceTo(this._startPos) <= this._map.options.tapTolerance;\n\t},\n\n\t_onMove: function (e) {\n\t\tvar first = e.touches[0];\n\t\tthis._newPos = new Point(first.clientX, first.clientY);\n\t\tthis._simulateEvent('mousemove', first);\n\t},\n\n\t_simulateEvent: function (type, e) {\n\t\tvar simulatedEvent = document.createEvent('MouseEvents');\n\n\t\tsimulatedEvent._simulated = true;\n\t\te.target._simulatedClick = true;\n\n\t\tsimulatedEvent.initMouseEvent(\n\t\t        type, true, true, window, 1,\n\t\t        e.screenX, e.screenY,\n\t\t        e.clientX, e.clientY,\n\t\t        false, false, false, false, 0, null);\n\n\t\te.target.dispatchEvent(simulatedEvent);\n\t}\n});\n\n// @section Handlers\n// @property tap: Handler\n// Mobile touch hacks (quick tap and touch hold) handler.\nif (touch && !pointer) {\n\tMap.addInitHook('addHandler', 'tap', Tap);\n}\n\n/*\n * L.Handler.TouchZoom is used by L.Map to add pinch zoom on supported mobile browsers.\n */\n\n// @namespace Map\n// @section Interaction Options\nMap.mergeOptions({\n\t// @section Touch interaction options\n\t// @option touchZoom: Boolean|String = *\n\t// Whether the map can be zoomed by touch-dragging with two fingers. If\n\t// passed `'center'`, it will zoom to the center of the view regardless of\n\t// where the touch events (fingers) were. Enabled for touch-capable web\n\t// browsers except for old Androids.\n\ttouchZoom: touch && !android23,\n\n\t// @option bounceAtZoomLimits: Boolean = true\n\t// Set it to false if you don't want the map to zoom beyond min/max zoom\n\t// and then bounce back when pinch-zooming.\n\tbounceAtZoomLimits: true\n});\n\nvar TouchZoom = Handler.extend({\n\taddHooks: function () {\n\t\taddClass(this._map._container, 'leaflet-touch-zoom');\n\t\ton(this._map._container, 'touchstart', this._onTouchStart, this);\n\t},\n\n\tremoveHooks: function () {\n\t\tremoveClass(this._map._container, 'leaflet-touch-zoom');\n\t\toff(this._map._container, 'touchstart', this._onTouchStart, this);\n\t},\n\n\t_onTouchStart: function (e) {\n\t\tvar map = this._map;\n\t\tif (!e.touches || e.touches.length !== 2 || map._animatingZoom || this._zooming) { return; }\n\n\t\tvar p1 = map.mouseEventToContainerPoint(e.touches[0]),\n\t\t    p2 = map.mouseEventToContainerPoint(e.touches[1]);\n\n\t\tthis._centerPoint = map.getSize()._divideBy(2);\n\t\tthis._startLatLng = map.containerPointToLatLng(this._centerPoint);\n\t\tif (map.options.touchZoom !== 'center') {\n\t\t\tthis._pinchStartLatLng = map.containerPointToLatLng(p1.add(p2)._divideBy(2));\n\t\t}\n\n\t\tthis._startDist = p1.distanceTo(p2);\n\t\tthis._startZoom = map.getZoom();\n\n\t\tthis._moved = false;\n\t\tthis._zooming = true;\n\n\t\tmap._stop();\n\n\t\ton(document, 'touchmove', this._onTouchMove, this);\n\t\ton(document, 'touchend', this._onTouchEnd, this);\n\n\t\tpreventDefault(e);\n\t},\n\n\t_onTouchMove: function (e) {\n\t\tif (!e.touches || e.touches.length !== 2 || !this._zooming) { return; }\n\n\t\tvar map = this._map,\n\t\t    p1 = map.mouseEventToContainerPoint(e.touches[0]),\n\t\t    p2 = map.mouseEventToContainerPoint(e.touches[1]),\n\t\t    scale = p1.distanceTo(p2) / this._startDist;\n\n\t\tthis._zoom = map.getScaleZoom(scale, this._startZoom);\n\n\t\tif (!map.options.bounceAtZoomLimits && (\n\t\t\t(this._zoom < map.getMinZoom() && scale < 1) ||\n\t\t\t(this._zoom > map.getMaxZoom() && scale > 1))) {\n\t\t\tthis._zoom = map._limitZoom(this._zoom);\n\t\t}\n\n\t\tif (map.options.touchZoom === 'center') {\n\t\t\tthis._center = this._startLatLng;\n\t\t\tif (scale === 1) { return; }\n\t\t} else {\n\t\t\t// Get delta from pinch to center, so centerLatLng is delta applied to initial pinchLatLng\n\t\t\tvar delta = p1._add(p2)._divideBy(2)._subtract(this._centerPoint);\n\t\t\tif (scale === 1 && delta.x === 0 && delta.y === 0) { return; }\n\t\t\tthis._center = map.unproject(map.project(this._pinchStartLatLng, this._zoom).subtract(delta), this._zoom);\n\t\t}\n\n\t\tif (!this._moved) {\n\t\t\tmap._moveStart(true, false);\n\t\t\tthis._moved = true;\n\t\t}\n\n\t\tcancelAnimFrame(this._animRequest);\n\n\t\tvar moveFn = bind(map._move, map, this._center, this._zoom, {pinch: true, round: false});\n\t\tthis._animRequest = requestAnimFrame(moveFn, this, true);\n\n\t\tpreventDefault(e);\n\t},\n\n\t_onTouchEnd: function () {\n\t\tif (!this._moved || !this._zooming) {\n\t\t\tthis._zooming = false;\n\t\t\treturn;\n\t\t}\n\n\t\tthis._zooming = false;\n\t\tcancelAnimFrame(this._animRequest);\n\n\t\toff(document, 'touchmove', this._onTouchMove);\n\t\toff(document, 'touchend', this._onTouchEnd);\n\n\t\t// Pinch updates GridLayers' levels only when zoomSnap is off, so zoomSnap becomes noUpdate.\n\t\tif (this._map.options.zoomAnimation) {\n\t\t\tthis._map._animateZoom(this._center, this._map._limitZoom(this._zoom), true, this._map.options.zoomSnap);\n\t\t} else {\n\t\t\tthis._map._resetView(this._center, this._map._limitZoom(this._zoom));\n\t\t}\n\t}\n});\n\n// @section Handlers\n// @property touchZoom: Handler\n// Touch zoom handler.\nMap.addInitHook('addHandler', 'touchZoom', TouchZoom);\n\nMap.BoxZoom = BoxZoom;\nMap.DoubleClickZoom = DoubleClickZoom;\nMap.Drag = Drag;\nMap.Keyboard = Keyboard;\nMap.ScrollWheelZoom = ScrollWheelZoom;\nMap.Tap = Tap;\nMap.TouchZoom = TouchZoom;\n\nObject.freeze = freeze;\n\nexports.version = version;\nexports.Control = Control;\nexports.control = control;\nexports.Browser = Browser;\nexports.Evented = Evented;\nexports.Mixin = Mixin;\nexports.Util = Util;\nexports.Class = Class;\nexports.Handler = Handler;\nexports.extend = extend;\nexports.bind = bind;\nexports.stamp = stamp;\nexports.setOptions = setOptions;\nexports.DomEvent = DomEvent;\nexports.DomUtil = DomUtil;\nexports.PosAnimation = PosAnimation;\nexports.Draggable = Draggable;\nexports.LineUtil = LineUtil;\nexports.PolyUtil = PolyUtil;\nexports.Point = Point;\nexports.point = toPoint;\nexports.Bounds = Bounds;\nexports.bounds = toBounds;\nexports.Transformation = Transformation;\nexports.transformation = toTransformation;\nexports.Projection = index;\nexports.LatLng = LatLng;\nexports.latLng = toLatLng;\nexports.LatLngBounds = LatLngBounds;\nexports.latLngBounds = toLatLngBounds;\nexports.CRS = CRS;\nexports.GeoJSON = GeoJSON;\nexports.geoJSON = geoJSON;\nexports.geoJson = geoJson;\nexports.Layer = Layer;\nexports.LayerGroup = LayerGroup;\nexports.layerGroup = layerGroup;\nexports.FeatureGroup = FeatureGroup;\nexports.featureGroup = featureGroup;\nexports.ImageOverlay = ImageOverlay;\nexports.imageOverlay = imageOverlay;\nexports.VideoOverlay = VideoOverlay;\nexports.videoOverlay = videoOverlay;\nexports.SVGOverlay = SVGOverlay;\nexports.svgOverlay = svgOverlay;\nexports.DivOverlay = DivOverlay;\nexports.Popup = Popup;\nexports.popup = popup;\nexports.Tooltip = Tooltip;\nexports.tooltip = tooltip;\nexports.Icon = Icon;\nexports.icon = icon;\nexports.DivIcon = DivIcon;\nexports.divIcon = divIcon;\nexports.Marker = Marker;\nexports.marker = marker;\nexports.TileLayer = TileLayer;\nexports.tileLayer = tileLayer;\nexports.GridLayer = GridLayer;\nexports.gridLayer = gridLayer;\nexports.SVG = SVG;\nexports.svg = svg$1;\nexports.Renderer = Renderer;\nexports.Canvas = Canvas;\nexports.canvas = canvas$1;\nexports.Path = Path;\nexports.CircleMarker = CircleMarker;\nexports.circleMarker = circleMarker;\nexports.Circle = Circle;\nexports.circle = circle;\nexports.Polyline = Polyline;\nexports.polyline = polyline;\nexports.Polygon = Polygon;\nexports.polygon = polygon;\nexports.Rectangle = Rectangle;\nexports.rectangle = rectangle;\nexports.Map = Map;\nexports.map = createMap;\n\nvar oldL = window.L;\nexports.noConflict = function() {\n\twindow.L = oldL;\n\treturn this;\n}\n\n// Always export us to window global (see #2364)\nwindow.L = exports;\n\n})));\n//# sourceMappingURL=leaflet-src.js.map\n","var map = {\n\t\"./af\": \"./node_modules/moment/locale/af.js\",\n\t\"./af.js\": \"./node_modules/moment/locale/af.js\",\n\t\"./ar\": \"./node_modules/moment/locale/ar.js\",\n\t\"./ar-dz\": \"./node_modules/moment/locale/ar-dz.js\",\n\t\"./ar-dz.js\": \"./node_modules/moment/locale/ar-dz.js\",\n\t\"./ar-kw\": \"./node_modules/moment/locale/ar-kw.js\",\n\t\"./ar-kw.js\": \"./node_modules/moment/locale/ar-kw.js\",\n\t\"./ar-ly\": \"./node_modules/moment/locale/ar-ly.js\",\n\t\"./ar-ly.js\": \"./node_modules/moment/locale/ar-ly.js\",\n\t\"./ar-ma\": \"./node_modules/moment/locale/ar-ma.js\",\n\t\"./ar-ma.js\": \"./node_modules/moment/locale/ar-ma.js\",\n\t\"./ar-sa\": \"./node_modules/moment/locale/ar-sa.js\",\n\t\"./ar-sa.js\": \"./node_modules/moment/locale/ar-sa.js\",\n\t\"./ar-tn\": \"./node_modules/moment/locale/ar-tn.js\",\n\t\"./ar-tn.js\": \"./node_modules/moment/locale/ar-tn.js\",\n\t\"./ar.js\": \"./node_modules/moment/locale/ar.js\",\n\t\"./az\": \"./node_modules/moment/locale/az.js\",\n\t\"./az.js\": \"./node_modules/moment/locale/az.js\",\n\t\"./be\": \"./node_modules/moment/locale/be.js\",\n\t\"./be.js\": \"./node_modules/moment/locale/be.js\",\n\t\"./bg\": \"./node_modules/moment/locale/bg.js\",\n\t\"./bg.js\": \"./node_modules/moment/locale/bg.js\",\n\t\"./bm\": \"./node_modules/moment/locale/bm.js\",\n\t\"./bm.js\": \"./node_modules/moment/locale/bm.js\",\n\t\"./bn\": \"./node_modules/moment/locale/bn.js\",\n\t\"./bn.js\": \"./node_modules/moment/locale/bn.js\",\n\t\"./bo\": \"./node_modules/moment/locale/bo.js\",\n\t\"./bo.js\": \"./node_modules/moment/locale/bo.js\",\n\t\"./br\": \"./node_modules/moment/locale/br.js\",\n\t\"./br.js\": \"./node_modules/moment/locale/br.js\",\n\t\"./bs\": \"./node_modules/moment/locale/bs.js\",\n\t\"./bs.js\": \"./node_modules/moment/locale/bs.js\",\n\t\"./ca\": \"./node_modules/moment/locale/ca.js\",\n\t\"./ca.js\": \"./node_modules/moment/locale/ca.js\",\n\t\"./cs\": \"./node_modules/moment/locale/cs.js\",\n\t\"./cs.js\": \"./node_modules/moment/locale/cs.js\",\n\t\"./cv\": \"./node_modules/moment/locale/cv.js\",\n\t\"./cv.js\": \"./node_modules/moment/locale/cv.js\",\n\t\"./cy\": \"./node_modules/moment/locale/cy.js\",\n\t\"./cy.js\": \"./node_modules/moment/locale/cy.js\",\n\t\"./da\": \"./node_modules/moment/locale/da.js\",\n\t\"./da.js\": \"./node_modules/moment/locale/da.js\",\n\t\"./de\": \"./node_modules/moment/locale/de.js\",\n\t\"./de-at\": \"./node_modules/moment/locale/de-at.js\",\n\t\"./de-at.js\": \"./node_modules/moment/locale/de-at.js\",\n\t\"./de-ch\": \"./node_modules/moment/locale/de-ch.js\",\n\t\"./de-ch.js\": \"./node_modules/moment/locale/de-ch.js\",\n\t\"./de.js\": \"./node_modules/moment/locale/de.js\",\n\t\"./dv\": \"./node_modules/moment/locale/dv.js\",\n\t\"./dv.js\": \"./node_modules/moment/locale/dv.js\",\n\t\"./el\": \"./node_modules/moment/locale/el.js\",\n\t\"./el.js\": \"./node_modules/moment/locale/el.js\",\n\t\"./en-SG\": \"./node_modules/moment/locale/en-SG.js\",\n\t\"./en-SG.js\": \"./node_modules/moment/locale/en-SG.js\",\n\t\"./en-au\": \"./node_modules/moment/locale/en-au.js\",\n\t\"./en-au.js\": \"./node_modules/moment/locale/en-au.js\",\n\t\"./en-ca\": \"./node_modules/moment/locale/en-ca.js\",\n\t\"./en-ca.js\": \"./node_modules/moment/locale/en-ca.js\",\n\t\"./en-gb\": \"./node_modules/moment/locale/en-gb.js\",\n\t\"./en-gb.js\": \"./node_modules/moment/locale/en-gb.js\",\n\t\"./en-ie\": \"./node_modules/moment/locale/en-ie.js\",\n\t\"./en-ie.js\": \"./node_modules/moment/locale/en-ie.js\",\n\t\"./en-il\": \"./node_modules/moment/locale/en-il.js\",\n\t\"./en-il.js\": \"./node_modules/moment/locale/en-il.js\",\n\t\"./en-nz\": \"./node_modules/moment/locale/en-nz.js\",\n\t\"./en-nz.js\": \"./node_modules/moment/locale/en-nz.js\",\n\t\"./eo\": \"./node_modules/moment/locale/eo.js\",\n\t\"./eo.js\": \"./node_modules/moment/locale/eo.js\",\n\t\"./es\": \"./node_modules/moment/locale/es.js\",\n\t\"./es-do\": \"./node_modules/moment/locale/es-do.js\",\n\t\"./es-do.js\": \"./node_modules/moment/locale/es-do.js\",\n\t\"./es-us\": \"./node_modules/moment/locale/es-us.js\",\n\t\"./es-us.js\": \"./node_modules/moment/locale/es-us.js\",\n\t\"./es.js\": \"./node_modules/moment/locale/es.js\",\n\t\"./et\": \"./node_modules/moment/locale/et.js\",\n\t\"./et.js\": \"./node_modules/moment/locale/et.js\",\n\t\"./eu\": \"./node_modules/moment/locale/eu.js\",\n\t\"./eu.js\": \"./node_modules/moment/locale/eu.js\",\n\t\"./fa\": \"./node_modules/moment/locale/fa.js\",\n\t\"./fa.js\": \"./node_modules/moment/locale/fa.js\",\n\t\"./fi\": \"./node_modules/moment/locale/fi.js\",\n\t\"./fi.js\": \"./node_modules/moment/locale/fi.js\",\n\t\"./fo\": \"./node_modules/moment/locale/fo.js\",\n\t\"./fo.js\": \"./node_modules/moment/locale/fo.js\",\n\t\"./fr\": \"./node_modules/moment/locale/fr.js\",\n\t\"./fr-ca\": \"./node_modules/moment/locale/fr-ca.js\",\n\t\"./fr-ca.js\": \"./node_modules/moment/locale/fr-ca.js\",\n\t\"./fr-ch\": \"./node_modules/moment/locale/fr-ch.js\",\n\t\"./fr-ch.js\": \"./node_modules/moment/locale/fr-ch.js\",\n\t\"./fr.js\": \"./node_modules/moment/locale/fr.js\",\n\t\"./fy\": \"./node_modules/moment/locale/fy.js\",\n\t\"./fy.js\": \"./node_modules/moment/locale/fy.js\",\n\t\"./ga\": \"./node_modules/moment/locale/ga.js\",\n\t\"./ga.js\": \"./node_modules/moment/locale/ga.js\",\n\t\"./gd\": \"./node_modules/moment/locale/gd.js\",\n\t\"./gd.js\": \"./node_modules/moment/locale/gd.js\",\n\t\"./gl\": \"./node_modules/moment/locale/gl.js\",\n\t\"./gl.js\": \"./node_modules/moment/locale/gl.js\",\n\t\"./gom-latn\": \"./node_modules/moment/locale/gom-latn.js\",\n\t\"./gom-latn.js\": \"./node_modules/moment/locale/gom-latn.js\",\n\t\"./gu\": \"./node_modules/moment/locale/gu.js\",\n\t\"./gu.js\": \"./node_modules/moment/locale/gu.js\",\n\t\"./he\": \"./node_modules/moment/locale/he.js\",\n\t\"./he.js\": \"./node_modules/moment/locale/he.js\",\n\t\"./hi\": \"./node_modules/moment/locale/hi.js\",\n\t\"./hi.js\": \"./node_modules/moment/locale/hi.js\",\n\t\"./hr\": \"./node_modules/moment/locale/hr.js\",\n\t\"./hr.js\": \"./node_modules/moment/locale/hr.js\",\n\t\"./hu\": \"./node_modules/moment/locale/hu.js\",\n\t\"./hu.js\": \"./node_modules/moment/locale/hu.js\",\n\t\"./hy-am\": \"./node_modules/moment/locale/hy-am.js\",\n\t\"./hy-am.js\": \"./node_modules/moment/locale/hy-am.js\",\n\t\"./id\": \"./node_modules/moment/locale/id.js\",\n\t\"./id.js\": \"./node_modules/moment/locale/id.js\",\n\t\"./is\": \"./node_modules/moment/locale/is.js\",\n\t\"./is.js\": \"./node_modules/moment/locale/is.js\",\n\t\"./it\": \"./node_modules/moment/locale/it.js\",\n\t\"./it-ch\": \"./node_modules/moment/locale/it-ch.js\",\n\t\"./it-ch.js\": \"./node_modules/moment/locale/it-ch.js\",\n\t\"./it.js\": \"./node_modules/moment/locale/it.js\",\n\t\"./ja\": \"./node_modules/moment/locale/ja.js\",\n\t\"./ja.js\": \"./node_modules/moment/locale/ja.js\",\n\t\"./jv\": \"./node_modules/moment/locale/jv.js\",\n\t\"./jv.js\": \"./node_modules/moment/locale/jv.js\",\n\t\"./ka\": \"./node_modules/moment/locale/ka.js\",\n\t\"./ka.js\": \"./node_modules/moment/locale/ka.js\",\n\t\"./kk\": \"./node_modules/moment/locale/kk.js\",\n\t\"./kk.js\": \"./node_modules/moment/locale/kk.js\",\n\t\"./km\": \"./node_modules/moment/locale/km.js\",\n\t\"./km.js\": \"./node_modules/moment/locale/km.js\",\n\t\"./kn\": \"./node_modules/moment/locale/kn.js\",\n\t\"./kn.js\": \"./node_modules/moment/locale/kn.js\",\n\t\"./ko\": \"./node_modules/moment/locale/ko.js\",\n\t\"./ko.js\": \"./node_modules/moment/locale/ko.js\",\n\t\"./ku\": \"./node_modules/moment/locale/ku.js\",\n\t\"./ku.js\": \"./node_modules/moment/locale/ku.js\",\n\t\"./ky\": \"./node_modules/moment/locale/ky.js\",\n\t\"./ky.js\": \"./node_modules/moment/locale/ky.js\",\n\t\"./lb\": \"./node_modules/moment/locale/lb.js\",\n\t\"./lb.js\": \"./node_modules/moment/locale/lb.js\",\n\t\"./lo\": \"./node_modules/moment/locale/lo.js\",\n\t\"./lo.js\": \"./node_modules/moment/locale/lo.js\",\n\t\"./lt\": \"./node_modules/moment/locale/lt.js\",\n\t\"./lt.js\": \"./node_modules/moment/locale/lt.js\",\n\t\"./lv\": \"./node_modules/moment/locale/lv.js\",\n\t\"./lv.js\": \"./node_modules/moment/locale/lv.js\",\n\t\"./me\": \"./node_modules/moment/locale/me.js\",\n\t\"./me.js\": \"./node_modules/moment/locale/me.js\",\n\t\"./mi\": \"./node_modules/moment/locale/mi.js\",\n\t\"./mi.js\": \"./node_modules/moment/locale/mi.js\",\n\t\"./mk\": \"./node_modules/moment/locale/mk.js\",\n\t\"./mk.js\": \"./node_modules/moment/locale/mk.js\",\n\t\"./ml\": \"./node_modules/moment/locale/ml.js\",\n\t\"./ml.js\": \"./node_modules/moment/locale/ml.js\",\n\t\"./mn\": \"./node_modules/moment/locale/mn.js\",\n\t\"./mn.js\": \"./node_modules/moment/locale/mn.js\",\n\t\"./mr\": \"./node_modules/moment/locale/mr.js\",\n\t\"./mr.js\": \"./node_modules/moment/locale/mr.js\",\n\t\"./ms\": \"./node_modules/moment/locale/ms.js\",\n\t\"./ms-my\": \"./node_modules/moment/locale/ms-my.js\",\n\t\"./ms-my.js\": \"./node_modules/moment/locale/ms-my.js\",\n\t\"./ms.js\": \"./node_modules/moment/locale/ms.js\",\n\t\"./mt\": \"./node_modules/moment/locale/mt.js\",\n\t\"./mt.js\": \"./node_modules/moment/locale/mt.js\",\n\t\"./my\": \"./node_modules/moment/locale/my.js\",\n\t\"./my.js\": \"./node_modules/moment/locale/my.js\",\n\t\"./nb\": \"./node_modules/moment/locale/nb.js\",\n\t\"./nb.js\": \"./node_modules/moment/locale/nb.js\",\n\t\"./ne\": \"./node_modules/moment/locale/ne.js\",\n\t\"./ne.js\": \"./node_modules/moment/locale/ne.js\",\n\t\"./nl\": \"./node_modules/moment/locale/nl.js\",\n\t\"./nl-be\": \"./node_modules/moment/locale/nl-be.js\",\n\t\"./nl-be.js\": \"./node_modules/moment/locale/nl-be.js\",\n\t\"./nl.js\": \"./node_modules/moment/locale/nl.js\",\n\t\"./nn\": \"./node_modules/moment/locale/nn.js\",\n\t\"./nn.js\": \"./node_modules/moment/locale/nn.js\",\n\t\"./pa-in\": \"./node_modules/moment/locale/pa-in.js\",\n\t\"./pa-in.js\": \"./node_modules/moment/locale/pa-in.js\",\n\t\"./pl\": \"./node_modules/moment/locale/pl.js\",\n\t\"./pl.js\": \"./node_modules/moment/locale/pl.js\",\n\t\"./pt\": \"./node_modules/moment/locale/pt.js\",\n\t\"./pt-br\": \"./node_modules/moment/locale/pt-br.js\",\n\t\"./pt-br.js\": \"./node_modules/moment/locale/pt-br.js\",\n\t\"./pt.js\": \"./node_modules/moment/locale/pt.js\",\n\t\"./ro\": \"./node_modules/moment/locale/ro.js\",\n\t\"./ro.js\": \"./node_modules/moment/locale/ro.js\",\n\t\"./ru\": \"./node_modules/moment/locale/ru.js\",\n\t\"./ru.js\": \"./node_modules/moment/locale/ru.js\",\n\t\"./sd\": \"./node_modules/moment/locale/sd.js\",\n\t\"./sd.js\": \"./node_modules/moment/locale/sd.js\",\n\t\"./se\": \"./node_modules/moment/locale/se.js\",\n\t\"./se.js\": \"./node_modules/moment/locale/se.js\",\n\t\"./si\": \"./node_modules/moment/locale/si.js\",\n\t\"./si.js\": \"./node_modules/moment/locale/si.js\",\n\t\"./sk\": \"./node_modules/moment/locale/sk.js\",\n\t\"./sk.js\": \"./node_modules/moment/locale/sk.js\",\n\t\"./sl\": \"./node_modules/moment/locale/sl.js\",\n\t\"./sl.js\": \"./node_modules/moment/locale/sl.js\",\n\t\"./sq\": \"./node_modules/moment/locale/sq.js\",\n\t\"./sq.js\": \"./node_modules/moment/locale/sq.js\",\n\t\"./sr\": \"./node_modules/moment/locale/sr.js\",\n\t\"./sr-cyrl\": \"./node_modules/moment/locale/sr-cyrl.js\",\n\t\"./sr-cyrl.js\": \"./node_modules/moment/locale/sr-cyrl.js\",\n\t\"./sr.js\": \"./node_modules/moment/locale/sr.js\",\n\t\"./ss\": \"./node_modules/moment/locale/ss.js\",\n\t\"./ss.js\": \"./node_modules/moment/locale/ss.js\",\n\t\"./sv\": \"./node_modules/moment/locale/sv.js\",\n\t\"./sv.js\": \"./node_modules/moment/locale/sv.js\",\n\t\"./sw\": \"./node_modules/moment/locale/sw.js\",\n\t\"./sw.js\": \"./node_modules/moment/locale/sw.js\",\n\t\"./ta\": \"./node_modules/moment/locale/ta.js\",\n\t\"./ta.js\": \"./node_modules/moment/locale/ta.js\",\n\t\"./te\": \"./node_modules/moment/locale/te.js\",\n\t\"./te.js\": \"./node_modules/moment/locale/te.js\",\n\t\"./tet\": \"./node_modules/moment/locale/tet.js\",\n\t\"./tet.js\": \"./node_modules/moment/locale/tet.js\",\n\t\"./tg\": \"./node_modules/moment/locale/tg.js\",\n\t\"./tg.js\": \"./node_modules/moment/locale/tg.js\",\n\t\"./th\": \"./node_modules/moment/locale/th.js\",\n\t\"./th.js\": \"./node_modules/moment/locale/th.js\",\n\t\"./tl-ph\": \"./node_modules/moment/locale/tl-ph.js\",\n\t\"./tl-ph.js\": \"./node_modules/moment/locale/tl-ph.js\",\n\t\"./tlh\": \"./node_modules/moment/locale/tlh.js\",\n\t\"./tlh.js\": \"./node_modules/moment/locale/tlh.js\",\n\t\"./tr\": \"./node_modules/moment/locale/tr.js\",\n\t\"./tr.js\": \"./node_modules/moment/locale/tr.js\",\n\t\"./tzl\": \"./node_modules/moment/locale/tzl.js\",\n\t\"./tzl.js\": \"./node_modules/moment/locale/tzl.js\",\n\t\"./tzm\": \"./node_modules/moment/locale/tzm.js\",\n\t\"./tzm-latn\": \"./node_modules/moment/locale/tzm-latn.js\",\n\t\"./tzm-latn.js\": \"./node_modules/moment/locale/tzm-latn.js\",\n\t\"./tzm.js\": \"./node_modules/moment/locale/tzm.js\",\n\t\"./ug-cn\": \"./node_modules/moment/locale/ug-cn.js\",\n\t\"./ug-cn.js\": \"./node_modules/moment/locale/ug-cn.js\",\n\t\"./uk\": \"./node_modules/moment/locale/uk.js\",\n\t\"./uk.js\": \"./node_modules/moment/locale/uk.js\",\n\t\"./ur\": \"./node_modules/moment/locale/ur.js\",\n\t\"./ur.js\": \"./node_modules/moment/locale/ur.js\",\n\t\"./uz\": \"./node_modules/moment/locale/uz.js\",\n\t\"./uz-latn\": \"./node_modules/moment/locale/uz-latn.js\",\n\t\"./uz-latn.js\": \"./node_modules/moment/locale/uz-latn.js\",\n\t\"./uz.js\": \"./node_modules/moment/locale/uz.js\",\n\t\"./vi\": \"./node_modules/moment/locale/vi.js\",\n\t\"./vi.js\": \"./node_modules/moment/locale/vi.js\",\n\t\"./x-pseudo\": \"./node_modules/moment/locale/x-pseudo.js\",\n\t\"./x-pseudo.js\": \"./node_modules/moment/locale/x-pseudo.js\",\n\t\"./yo\": \"./node_modules/moment/locale/yo.js\",\n\t\"./yo.js\": \"./node_modules/moment/locale/yo.js\",\n\t\"./zh-cn\": \"./node_modules/moment/locale/zh-cn.js\",\n\t\"./zh-cn.js\": \"./node_modules/moment/locale/zh-cn.js\",\n\t\"./zh-hk\": \"./node_modules/moment/locale/zh-hk.js\",\n\t\"./zh-hk.js\": \"./node_modules/moment/locale/zh-hk.js\",\n\t\"./zh-tw\": \"./node_modules/moment/locale/zh-tw.js\",\n\t\"./zh-tw.js\": \"./node_modules/moment/locale/zh-tw.js\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"./node_modules/moment/locale sync recursive ^\\\\.\\\\/.*$\";","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var af = moment.defineLocale('af', {\n        months : 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split('_'),\n        monthsShort : 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),\n        weekdays : 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split('_'),\n        weekdaysShort : 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),\n        weekdaysMin : 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),\n        meridiemParse: /vm|nm/i,\n        isPM : function (input) {\n            return /^nm$/i.test(input);\n        },\n        meridiem : function (hours, minutes, isLower) {\n            if (hours < 12) {\n                return isLower ? 'vm' : 'VM';\n            } else {\n                return isLower ? 'nm' : 'NM';\n            }\n        },\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd, D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay : '[Vandag om] LT',\n            nextDay : '[Môre om] LT',\n            nextWeek : 'dddd [om] LT',\n            lastDay : '[Gister om] LT',\n            lastWeek : '[Laas] dddd [om] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'oor %s',\n            past : '%s gelede',\n            s : '\\'n paar sekondes',\n            ss : '%d sekondes',\n            m : '\\'n minuut',\n            mm : '%d minute',\n            h : '\\'n uur',\n            hh : '%d ure',\n            d : '\\'n dag',\n            dd : '%d dae',\n            M : '\\'n maand',\n            MM : '%d maande',\n            y : '\\'n jaar',\n            yy : '%d jaar'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n        ordinal : function (number) {\n            return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); // Thanks to Joris Röling : https://github.com/jjupiter\n        },\n        week : {\n            dow : 1, // Maandag is die eerste dag van die week.\n            doy : 4  // Die week wat die 4de Januarie bevat is die eerste week van die jaar.\n        }\n    });\n\n    return af;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var arDz = moment.defineLocale('ar-dz', {\n        months : 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),\n        monthsShort : 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),\n        weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort : 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin : 'أح_إث_ثلا_أر_خم_جم_سب'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay: '[اليوم على الساعة] LT',\n            nextDay: '[غدا على الساعة] LT',\n            nextWeek: 'dddd [على الساعة] LT',\n            lastDay: '[أمس على الساعة] LT',\n            lastWeek: 'dddd [على الساعة] LT',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'في %s',\n            past : 'منذ %s',\n            s : 'ثوان',\n            ss : '%d ثانية',\n            m : 'دقيقة',\n            mm : '%d دقائق',\n            h : 'ساعة',\n            hh : '%d ساعات',\n            d : 'يوم',\n            dd : '%d أيام',\n            M : 'شهر',\n            MM : '%d أشهر',\n            y : 'سنة',\n            yy : '%d سنوات'\n        },\n        week : {\n            dow : 0, // Sunday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return arDz;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var arKw = moment.defineLocale('ar-kw', {\n        months : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),\n        monthsShort : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),\n        weekdays : 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort : 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay: '[اليوم على الساعة] LT',\n            nextDay: '[غدا على الساعة] LT',\n            nextWeek: 'dddd [على الساعة] LT',\n            lastDay: '[أمس على الساعة] LT',\n            lastWeek: 'dddd [على الساعة] LT',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'في %s',\n            past : 'منذ %s',\n            s : 'ثوان',\n            ss : '%d ثانية',\n            m : 'دقيقة',\n            mm : '%d دقائق',\n            h : 'ساعة',\n            hh : '%d ساعات',\n            d : 'يوم',\n            dd : '%d أيام',\n            M : 'شهر',\n            MM : '%d أشهر',\n            y : 'سنة',\n            yy : '%d سنوات'\n        },\n        week : {\n            dow : 0, // Sunday is the first day of the week.\n            doy : 12  // The week that contains Jan 12th is the first week of the year.\n        }\n    });\n\n    return arKw;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var symbolMap = {\n        '1': '1',\n        '2': '2',\n        '3': '3',\n        '4': '4',\n        '5': '5',\n        '6': '6',\n        '7': '7',\n        '8': '8',\n        '9': '9',\n        '0': '0'\n    }, pluralForm = function (n) {\n        return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5;\n    }, plurals = {\n        s : ['أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'],\n        m : ['أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'],\n        h : ['أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'],\n        d : ['أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'],\n        M : ['أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'],\n        y : ['أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام']\n    }, pluralize = function (u) {\n        return function (number, withoutSuffix, string, isFuture) {\n            var f = pluralForm(number),\n                str = plurals[u][pluralForm(number)];\n            if (f === 2) {\n                str = str[withoutSuffix ? 0 : 1];\n            }\n            return str.replace(/%d/i, number);\n        };\n    }, months = [\n        'يناير',\n        'فبراير',\n        'مارس',\n        'أبريل',\n        'مايو',\n        'يونيو',\n        'يوليو',\n        'أغسطس',\n        'سبتمبر',\n        'أكتوبر',\n        'نوفمبر',\n        'ديسمبر'\n    ];\n\n    var arLy = moment.defineLocale('ar-ly', {\n        months : months,\n        monthsShort : months,\n        weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'D/\\u200FM/\\u200FYYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd D MMMM YYYY HH:mm'\n        },\n        meridiemParse: /ص|م/,\n        isPM : function (input) {\n            return 'م' === input;\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ص';\n            } else {\n                return 'م';\n            }\n        },\n        calendar : {\n            sameDay: '[اليوم عند الساعة] LT',\n            nextDay: '[غدًا عند الساعة] LT',\n            nextWeek: 'dddd [عند الساعة] LT',\n            lastDay: '[أمس عند الساعة] LT',\n            lastWeek: 'dddd [عند الساعة] LT',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'بعد %s',\n            past : 'منذ %s',\n            s : pluralize('s'),\n            ss : pluralize('s'),\n            m : pluralize('m'),\n            mm : pluralize('m'),\n            h : pluralize('h'),\n            hh : pluralize('h'),\n            d : pluralize('d'),\n            dd : pluralize('d'),\n            M : pluralize('M'),\n            MM : pluralize('M'),\n            y : pluralize('y'),\n            yy : pluralize('y')\n        },\n        preparse: function (string) {\n            return string.replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            }).replace(/,/g, '،');\n        },\n        week : {\n            dow : 6, // Saturday is the first day of the week.\n            doy : 12  // The week that contains Jan 12th is the first week of the year.\n        }\n    });\n\n    return arLy;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var arMa = moment.defineLocale('ar-ma', {\n        months : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),\n        monthsShort : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),\n        weekdays : 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort : 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay: '[اليوم على الساعة] LT',\n            nextDay: '[غدا على الساعة] LT',\n            nextWeek: 'dddd [على الساعة] LT',\n            lastDay: '[أمس على الساعة] LT',\n            lastWeek: 'dddd [على الساعة] LT',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'في %s',\n            past : 'منذ %s',\n            s : 'ثوان',\n            ss : '%d ثانية',\n            m : 'دقيقة',\n            mm : '%d دقائق',\n            h : 'ساعة',\n            hh : '%d ساعات',\n            d : 'يوم',\n            dd : '%d أيام',\n            M : 'شهر',\n            MM : '%d أشهر',\n            y : 'سنة',\n            yy : '%d سنوات'\n        },\n        week : {\n            dow : 6, // Saturday is the first day of the week.\n            doy : 12  // The week that contains Jan 12th is the first week of the year.\n        }\n    });\n\n    return arMa;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var symbolMap = {\n        '1': '١',\n        '2': '٢',\n        '3': '٣',\n        '4': '٤',\n        '5': '٥',\n        '6': '٦',\n        '7': '٧',\n        '8': '٨',\n        '9': '٩',\n        '0': '٠'\n    }, numberMap = {\n        '١': '1',\n        '٢': '2',\n        '٣': '3',\n        '٤': '4',\n        '٥': '5',\n        '٦': '6',\n        '٧': '7',\n        '٨': '8',\n        '٩': '9',\n        '٠': '0'\n    };\n\n    var arSa = moment.defineLocale('ar-sa', {\n        months : 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),\n        monthsShort : 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),\n        weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd D MMMM YYYY HH:mm'\n        },\n        meridiemParse: /ص|م/,\n        isPM : function (input) {\n            return 'م' === input;\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ص';\n            } else {\n                return 'م';\n            }\n        },\n        calendar : {\n            sameDay: '[اليوم على الساعة] LT',\n            nextDay: '[غدا على الساعة] LT',\n            nextWeek: 'dddd [على الساعة] LT',\n            lastDay: '[أمس على الساعة] LT',\n            lastWeek: 'dddd [على الساعة] LT',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'في %s',\n            past : 'منذ %s',\n            s : 'ثوان',\n            ss : '%d ثانية',\n            m : 'دقيقة',\n            mm : '%d دقائق',\n            h : 'ساعة',\n            hh : '%d ساعات',\n            d : 'يوم',\n            dd : '%d أيام',\n            M : 'شهر',\n            MM : '%d أشهر',\n            y : 'سنة',\n            yy : '%d سنوات'\n        },\n        preparse: function (string) {\n            return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n                return numberMap[match];\n            }).replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            }).replace(/,/g, '،');\n        },\n        week : {\n            dow : 0, // Sunday is the first day of the week.\n            doy : 6  // The week that contains Jan 6th is the first week of the year.\n        }\n    });\n\n    return arSa;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var arTn = moment.defineLocale('ar-tn', {\n        months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),\n        monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),\n        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm'\n        },\n        calendar: {\n            sameDay: '[اليوم على الساعة] LT',\n            nextDay: '[غدا على الساعة] LT',\n            nextWeek: 'dddd [على الساعة] LT',\n            lastDay: '[أمس على الساعة] LT',\n            lastWeek: 'dddd [على الساعة] LT',\n            sameElse: 'L'\n        },\n        relativeTime: {\n            future: 'في %s',\n            past: 'منذ %s',\n            s: 'ثوان',\n            ss : '%d ثانية',\n            m: 'دقيقة',\n            mm: '%d دقائق',\n            h: 'ساعة',\n            hh: '%d ساعات',\n            d: 'يوم',\n            dd: '%d أيام',\n            M: 'شهر',\n            MM: '%d أشهر',\n            y: 'سنة',\n            yy: '%d سنوات'\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4 // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return arTn;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var symbolMap = {\n        '1': '١',\n        '2': '٢',\n        '3': '٣',\n        '4': '٤',\n        '5': '٥',\n        '6': '٦',\n        '7': '٧',\n        '8': '٨',\n        '9': '٩',\n        '0': '٠'\n    }, numberMap = {\n        '١': '1',\n        '٢': '2',\n        '٣': '3',\n        '٤': '4',\n        '٥': '5',\n        '٦': '6',\n        '٧': '7',\n        '٨': '8',\n        '٩': '9',\n        '٠': '0'\n    }, pluralForm = function (n) {\n        return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5;\n    }, plurals = {\n        s : ['أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'],\n        m : ['أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'],\n        h : ['أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'],\n        d : ['أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'],\n        M : ['أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'],\n        y : ['أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام']\n    }, pluralize = function (u) {\n        return function (number, withoutSuffix, string, isFuture) {\n            var f = pluralForm(number),\n                str = plurals[u][pluralForm(number)];\n            if (f === 2) {\n                str = str[withoutSuffix ? 0 : 1];\n            }\n            return str.replace(/%d/i, number);\n        };\n    }, months = [\n        'يناير',\n        'فبراير',\n        'مارس',\n        'أبريل',\n        'مايو',\n        'يونيو',\n        'يوليو',\n        'أغسطس',\n        'سبتمبر',\n        'أكتوبر',\n        'نوفمبر',\n        'ديسمبر'\n    ];\n\n    var ar = moment.defineLocale('ar', {\n        months : months,\n        monthsShort : months,\n        weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'D/\\u200FM/\\u200FYYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd D MMMM YYYY HH:mm'\n        },\n        meridiemParse: /ص|م/,\n        isPM : function (input) {\n            return 'م' === input;\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ص';\n            } else {\n                return 'م';\n            }\n        },\n        calendar : {\n            sameDay: '[اليوم عند الساعة] LT',\n            nextDay: '[غدًا عند الساعة] LT',\n            nextWeek: 'dddd [عند الساعة] LT',\n            lastDay: '[أمس عند الساعة] LT',\n            lastWeek: 'dddd [عند الساعة] LT',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'بعد %s',\n            past : 'منذ %s',\n            s : pluralize('s'),\n            ss : pluralize('s'),\n            m : pluralize('m'),\n            mm : pluralize('m'),\n            h : pluralize('h'),\n            hh : pluralize('h'),\n            d : pluralize('d'),\n            dd : pluralize('d'),\n            M : pluralize('M'),\n            MM : pluralize('M'),\n            y : pluralize('y'),\n            yy : pluralize('y')\n        },\n        preparse: function (string) {\n            return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n                return numberMap[match];\n            }).replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            }).replace(/,/g, '،');\n        },\n        week : {\n            dow : 6, // Saturday is the first day of the week.\n            doy : 12  // The week that contains Jan 12th is the first week of the year.\n        }\n    });\n\n    return ar;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var suffixes = {\n        1: '-inci',\n        5: '-inci',\n        8: '-inci',\n        70: '-inci',\n        80: '-inci',\n        2: '-nci',\n        7: '-nci',\n        20: '-nci',\n        50: '-nci',\n        3: '-üncü',\n        4: '-üncü',\n        100: '-üncü',\n        6: '-ncı',\n        9: '-uncu',\n        10: '-uncu',\n        30: '-uncu',\n        60: '-ıncı',\n        90: '-ıncı'\n    };\n\n    var az = moment.defineLocale('az', {\n        months : 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split('_'),\n        monthsShort : 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),\n        weekdays : 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split('_'),\n        weekdaysShort : 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),\n        weekdaysMin : 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd, D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay : '[bugün saat] LT',\n            nextDay : '[sabah saat] LT',\n            nextWeek : '[gələn həftə] dddd [saat] LT',\n            lastDay : '[dünən] LT',\n            lastWeek : '[keçən həftə] dddd [saat] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s sonra',\n            past : '%s əvvəl',\n            s : 'birneçə saniyə',\n            ss : '%d saniyə',\n            m : 'bir dəqiqə',\n            mm : '%d dəqiqə',\n            h : 'bir saat',\n            hh : '%d saat',\n            d : 'bir gün',\n            dd : '%d gün',\n            M : 'bir ay',\n            MM : '%d ay',\n            y : 'bir il',\n            yy : '%d il'\n        },\n        meridiemParse: /gecə|səhər|gündüz|axşam/,\n        isPM : function (input) {\n            return /^(gündüz|axşam)$/.test(input);\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'gecə';\n            } else if (hour < 12) {\n                return 'səhər';\n            } else if (hour < 17) {\n                return 'gündüz';\n            } else {\n                return 'axşam';\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,\n        ordinal : function (number) {\n            if (number === 0) {  // special case for zero\n                return number + '-ıncı';\n            }\n            var a = number % 10,\n                b = number % 100 - a,\n                c = number >= 100 ? 100 : null;\n            return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 7th is the first week of the year.\n        }\n    });\n\n    return az;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    function plural(word, num) {\n        var forms = word.split('_');\n        return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]);\n    }\n    function relativeTimeWithPlural(number, withoutSuffix, key) {\n        var format = {\n            'ss': withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n            'mm': withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',\n            'hh': withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін',\n            'dd': 'дзень_дні_дзён',\n            'MM': 'месяц_месяцы_месяцаў',\n            'yy': 'год_гады_гадоў'\n        };\n        if (key === 'm') {\n            return withoutSuffix ? 'хвіліна' : 'хвіліну';\n        }\n        else if (key === 'h') {\n            return withoutSuffix ? 'гадзіна' : 'гадзіну';\n        }\n        else {\n            return number + ' ' + plural(format[key], +number);\n        }\n    }\n\n    var be = moment.defineLocale('be', {\n        months : {\n            format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split('_'),\n            standalone: 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split('_')\n        },\n        monthsShort : 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split('_'),\n        weekdays : {\n            format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split('_'),\n            standalone: 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split('_'),\n            isFormat: /\\[ ?[Ууў] ?(?:мінулую|наступную)? ?\\] ?dddd/\n        },\n        weekdaysShort : 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n        weekdaysMin : 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D MMMM YYYY г.',\n            LLL : 'D MMMM YYYY г., HH:mm',\n            LLLL : 'dddd, D MMMM YYYY г., HH:mm'\n        },\n        calendar : {\n            sameDay: '[Сёння ў] LT',\n            nextDay: '[Заўтра ў] LT',\n            lastDay: '[Учора ў] LT',\n            nextWeek: function () {\n                return '[У] dddd [ў] LT';\n            },\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                    case 3:\n                    case 5:\n                    case 6:\n                        return '[У мінулую] dddd [ў] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                        return '[У мінулы] dddd [ў] LT';\n                }\n            },\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'праз %s',\n            past : '%s таму',\n            s : 'некалькі секунд',\n            m : relativeTimeWithPlural,\n            mm : relativeTimeWithPlural,\n            h : relativeTimeWithPlural,\n            hh : relativeTimeWithPlural,\n            d : 'дзень',\n            dd : relativeTimeWithPlural,\n            M : 'месяц',\n            MM : relativeTimeWithPlural,\n            y : 'год',\n            yy : relativeTimeWithPlural\n        },\n        meridiemParse: /ночы|раніцы|дня|вечара/,\n        isPM : function (input) {\n            return /^(дня|вечара)$/.test(input);\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'ночы';\n            } else if (hour < 12) {\n                return 'раніцы';\n            } else if (hour < 17) {\n                return 'дня';\n            } else {\n                return 'вечара';\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(і|ы|га)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'M':\n                case 'd':\n                case 'DDD':\n                case 'w':\n                case 'W':\n                    return (number % 10 === 2 || number % 10 === 3) && (number % 100 !== 12 && number % 100 !== 13) ? number + '-і' : number + '-ы';\n                case 'D':\n                    return number + '-га';\n                default:\n                    return number;\n            }\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 7th is the first week of the year.\n        }\n    });\n\n    return be;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var bg = moment.defineLocale('bg', {\n        months : 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split('_'),\n        monthsShort : 'янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),\n        weekdays : 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split('_'),\n        weekdaysShort : 'нед_пон_вто_сря_чет_пет_съб'.split('_'),\n        weekdaysMin : 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n        longDateFormat : {\n            LT : 'H:mm',\n            LTS : 'H:mm:ss',\n            L : 'D.MM.YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY H:mm',\n            LLLL : 'dddd, D MMMM YYYY H:mm'\n        },\n        calendar : {\n            sameDay : '[Днес в] LT',\n            nextDay : '[Утре в] LT',\n            nextWeek : 'dddd [в] LT',\n            lastDay : '[Вчера в] LT',\n            lastWeek : function () {\n                switch (this.day()) {\n                    case 0:\n                    case 3:\n                    case 6:\n                        return '[В изминалата] dddd [в] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[В изминалия] dddd [в] LT';\n                }\n            },\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'след %s',\n            past : 'преди %s',\n            s : 'няколко секунди',\n            ss : '%d секунди',\n            m : 'минута',\n            mm : '%d минути',\n            h : 'час',\n            hh : '%d часа',\n            d : 'ден',\n            dd : '%d дни',\n            M : 'месец',\n            MM : '%d месеца',\n            y : 'година',\n            yy : '%d години'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n        ordinal : function (number) {\n            var lastDigit = number % 10,\n                last2Digits = number % 100;\n            if (number === 0) {\n                return number + '-ев';\n            } else if (last2Digits === 0) {\n                return number + '-ен';\n            } else if (last2Digits > 10 && last2Digits < 20) {\n                return number + '-ти';\n            } else if (lastDigit === 1) {\n                return number + '-ви';\n            } else if (lastDigit === 2) {\n                return number + '-ри';\n            } else if (lastDigit === 7 || lastDigit === 8) {\n                return number + '-ми';\n            } else {\n                return number + '-ти';\n            }\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 7th is the first week of the year.\n        }\n    });\n\n    return bg;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var bm = moment.defineLocale('bm', {\n        months : 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo'.split('_'),\n        monthsShort : 'Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des'.split('_'),\n        weekdays : 'Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'),\n        weekdaysShort : 'Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib'.split('_'),\n        weekdaysMin : 'Ka_Nt_Ta_Ar_Al_Ju_Si'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'MMMM [tile] D [san] YYYY',\n            LLL : 'MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',\n            LLLL : 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm'\n        },\n        calendar : {\n            sameDay : '[Bi lɛrɛ] LT',\n            nextDay : '[Sini lɛrɛ] LT',\n            nextWeek : 'dddd [don lɛrɛ] LT',\n            lastDay : '[Kunu lɛrɛ] LT',\n            lastWeek : 'dddd [tɛmɛnen lɛrɛ] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s kɔnɔ',\n            past : 'a bɛ %s bɔ',\n            s : 'sanga dama dama',\n            ss : 'sekondi %d',\n            m : 'miniti kelen',\n            mm : 'miniti %d',\n            h : 'lɛrɛ kelen',\n            hh : 'lɛrɛ %d',\n            d : 'tile kelen',\n            dd : 'tile %d',\n            M : 'kalo kelen',\n            MM : 'kalo %d',\n            y : 'san kelen',\n            yy : 'san %d'\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return bm;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var symbolMap = {\n        '1': '১',\n        '2': '২',\n        '3': '৩',\n        '4': '৪',\n        '5': '৫',\n        '6': '৬',\n        '7': '৭',\n        '8': '৮',\n        '9': '৯',\n        '0': '০'\n    },\n    numberMap = {\n        '১': '1',\n        '২': '2',\n        '৩': '3',\n        '৪': '4',\n        '৫': '5',\n        '৬': '6',\n        '৭': '7',\n        '৮': '8',\n        '৯': '9',\n        '০': '0'\n    };\n\n    var bn = moment.defineLocale('bn', {\n        months : 'জানুয়ারী_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split('_'),\n        monthsShort : 'জানু_ফেব_মার্চ_এপ্র_মে_জুন_জুল_আগ_সেপ্ট_অক্টো_নভে_ডিসে'.split('_'),\n        weekdays : 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split('_'),\n        weekdaysShort : 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),\n        weekdaysMin : 'রবি_সোম_মঙ্গ_বুধ_বৃহঃ_শুক্র_শনি'.split('_'),\n        longDateFormat : {\n            LT : 'A h:mm সময়',\n            LTS : 'A h:mm:ss সময়',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY, A h:mm সময়',\n            LLLL : 'dddd, D MMMM YYYY, A h:mm সময়'\n        },\n        calendar : {\n            sameDay : '[আজ] LT',\n            nextDay : '[আগামীকাল] LT',\n            nextWeek : 'dddd, LT',\n            lastDay : '[গতকাল] LT',\n            lastWeek : '[গত] dddd, LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s পরে',\n            past : '%s আগে',\n            s : 'কয়েক সেকেন্ড',\n            ss : '%d সেকেন্ড',\n            m : 'এক মিনিট',\n            mm : '%d মিনিট',\n            h : 'এক ঘন্টা',\n            hh : '%d ঘন্টা',\n            d : 'এক দিন',\n            dd : '%d দিন',\n            M : 'এক মাস',\n            MM : '%d মাস',\n            y : 'এক বছর',\n            yy : '%d বছর'\n        },\n        preparse: function (string) {\n            return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/,\n        meridiemHour : function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if ((meridiem === 'রাত' && hour >= 4) ||\n                    (meridiem === 'দুপুর' && hour < 5) ||\n                    meridiem === 'বিকাল') {\n                return hour + 12;\n            } else {\n                return hour;\n            }\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'রাত';\n            } else if (hour < 10) {\n                return 'সকাল';\n            } else if (hour < 17) {\n                return 'দুপুর';\n            } else if (hour < 20) {\n                return 'বিকাল';\n            } else {\n                return 'রাত';\n            }\n        },\n        week : {\n            dow : 0, // Sunday is the first day of the week.\n            doy : 6  // The week that contains Jan 6th is the first week of the year.\n        }\n    });\n\n    return bn;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var symbolMap = {\n        '1': '༡',\n        '2': '༢',\n        '3': '༣',\n        '4': '༤',\n        '5': '༥',\n        '6': '༦',\n        '7': '༧',\n        '8': '༨',\n        '9': '༩',\n        '0': '༠'\n    },\n    numberMap = {\n        '༡': '1',\n        '༢': '2',\n        '༣': '3',\n        '༤': '4',\n        '༥': '5',\n        '༦': '6',\n        '༧': '7',\n        '༨': '8',\n        '༩': '9',\n        '༠': '0'\n    };\n\n    var bo = moment.defineLocale('bo', {\n        months : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'),\n        monthsShort : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'),\n        weekdays : 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split('_'),\n        weekdaysShort : 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'),\n        weekdaysMin : 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'),\n        longDateFormat : {\n            LT : 'A h:mm',\n            LTS : 'A h:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY, A h:mm',\n            LLLL : 'dddd, D MMMM YYYY, A h:mm'\n        },\n        calendar : {\n            sameDay : '[དི་རིང] LT',\n            nextDay : '[སང་ཉིན] LT',\n            nextWeek : '[བདུན་ཕྲག་རྗེས་མ], LT',\n            lastDay : '[ཁ་སང] LT',\n            lastWeek : '[བདུན་ཕྲག་མཐའ་མ] dddd, LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s ལ་',\n            past : '%s སྔན་ལ',\n            s : 'ལམ་སང',\n            ss : '%d སྐར་ཆ།',\n            m : 'སྐར་མ་གཅིག',\n            mm : '%d སྐར་མ',\n            h : 'ཆུ་ཚོད་གཅིག',\n            hh : '%d ཆུ་ཚོད',\n            d : 'ཉིན་གཅིག',\n            dd : '%d ཉིན་',\n            M : 'ཟླ་བ་གཅིག',\n            MM : '%d ཟླ་བ',\n            y : 'ལོ་གཅིག',\n            yy : '%d ལོ'\n        },\n        preparse: function (string) {\n            return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,\n        meridiemHour : function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if ((meridiem === 'མཚན་མོ' && hour >= 4) ||\n                    (meridiem === 'ཉིན་གུང' && hour < 5) ||\n                    meridiem === 'དགོང་དག') {\n                return hour + 12;\n            } else {\n                return hour;\n            }\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'མཚན་མོ';\n            } else if (hour < 10) {\n                return 'ཞོགས་ཀས';\n            } else if (hour < 17) {\n                return 'ཉིན་གུང';\n            } else if (hour < 20) {\n                return 'དགོང་དག';\n            } else {\n                return 'མཚན་མོ';\n            }\n        },\n        week : {\n            dow : 0, // Sunday is the first day of the week.\n            doy : 6  // The week that contains Jan 6th is the first week of the year.\n        }\n    });\n\n    return bo;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    function relativeTimeWithMutation(number, withoutSuffix, key) {\n        var format = {\n            'mm': 'munutenn',\n            'MM': 'miz',\n            'dd': 'devezh'\n        };\n        return number + ' ' + mutation(format[key], number);\n    }\n    function specialMutationForYears(number) {\n        switch (lastNumber(number)) {\n            case 1:\n            case 3:\n            case 4:\n            case 5:\n            case 9:\n                return number + ' bloaz';\n            default:\n                return number + ' vloaz';\n        }\n    }\n    function lastNumber(number) {\n        if (number > 9) {\n            return lastNumber(number % 10);\n        }\n        return number;\n    }\n    function mutation(text, number) {\n        if (number === 2) {\n            return softMutation(text);\n        }\n        return text;\n    }\n    function softMutation(text) {\n        var mutationTable = {\n            'm': 'v',\n            'b': 'v',\n            'd': 'z'\n        };\n        if (mutationTable[text.charAt(0)] === undefined) {\n            return text;\n        }\n        return mutationTable[text.charAt(0)] + text.substring(1);\n    }\n\n    var br = moment.defineLocale('br', {\n        months : 'Genver_C\\'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split('_'),\n        monthsShort : 'Gen_C\\'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),\n        weekdays : 'Sul_Lun_Meurzh_Merc\\'her_Yaou_Gwener_Sadorn'.split('_'),\n        weekdaysShort : 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),\n        weekdaysMin : 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'h[e]mm A',\n            LTS : 'h[e]mm:ss A',\n            L : 'DD/MM/YYYY',\n            LL : 'D [a viz] MMMM YYYY',\n            LLL : 'D [a viz] MMMM YYYY h[e]mm A',\n            LLLL : 'dddd, D [a viz] MMMM YYYY h[e]mm A'\n        },\n        calendar : {\n            sameDay : '[Hiziv da] LT',\n            nextDay : '[Warc\\'hoazh da] LT',\n            nextWeek : 'dddd [da] LT',\n            lastDay : '[Dec\\'h da] LT',\n            lastWeek : 'dddd [paset da] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'a-benn %s',\n            past : '%s \\'zo',\n            s : 'un nebeud segondennoù',\n            ss : '%d eilenn',\n            m : 'ur vunutenn',\n            mm : relativeTimeWithMutation,\n            h : 'un eur',\n            hh : '%d eur',\n            d : 'un devezh',\n            dd : relativeTimeWithMutation,\n            M : 'ur miz',\n            MM : relativeTimeWithMutation,\n            y : 'ur bloaz',\n            yy : specialMutationForYears\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(añ|vet)/,\n        ordinal : function (number) {\n            var output = (number === 1) ? 'añ' : 'vet';\n            return number + output;\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return br;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    function translate(number, withoutSuffix, key) {\n        var result = number + ' ';\n        switch (key) {\n            case 'ss':\n                if (number === 1) {\n                    result += 'sekunda';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'sekunde';\n                } else {\n                    result += 'sekundi';\n                }\n                return result;\n            case 'm':\n                return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n            case 'mm':\n                if (number === 1) {\n                    result += 'minuta';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'minute';\n                } else {\n                    result += 'minuta';\n                }\n                return result;\n            case 'h':\n                return withoutSuffix ? 'jedan sat' : 'jednog sata';\n            case 'hh':\n                if (number === 1) {\n                    result += 'sat';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'sata';\n                } else {\n                    result += 'sati';\n                }\n                return result;\n            case 'dd':\n                if (number === 1) {\n                    result += 'dan';\n                } else {\n                    result += 'dana';\n                }\n                return result;\n            case 'MM':\n                if (number === 1) {\n                    result += 'mjesec';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'mjeseca';\n                } else {\n                    result += 'mjeseci';\n                }\n                return result;\n            case 'yy':\n                if (number === 1) {\n                    result += 'godina';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'godine';\n                } else {\n                    result += 'godina';\n                }\n                return result;\n        }\n    }\n\n    var bs = moment.defineLocale('bs', {\n        months : 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split('_'),\n        monthsShort : 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n        monthsParseExact: true,\n        weekdays : 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),\n        weekdaysShort : 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n        weekdaysMin : 'ne_po_ut_sr_če_pe_su'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'H:mm',\n            LTS : 'H:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D. MMMM YYYY',\n            LLL : 'D. MMMM YYYY H:mm',\n            LLLL : 'dddd, D. MMMM YYYY H:mm'\n        },\n        calendar : {\n            sameDay  : '[danas u] LT',\n            nextDay  : '[sutra u] LT',\n            nextWeek : function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[u] [nedjelju] [u] LT';\n                    case 3:\n                        return '[u] [srijedu] [u] LT';\n                    case 6:\n                        return '[u] [subotu] [u] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[u] dddd [u] LT';\n                }\n            },\n            lastDay  : '[jučer u] LT',\n            lastWeek : function () {\n                switch (this.day()) {\n                    case 0:\n                    case 3:\n                        return '[prošlu] dddd [u] LT';\n                    case 6:\n                        return '[prošle] [subote] [u] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[prošli] dddd [u] LT';\n                }\n            },\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'za %s',\n            past   : 'prije %s',\n            s      : 'par sekundi',\n            ss     : translate,\n            m      : translate,\n            mm     : translate,\n            h      : translate,\n            hh     : translate,\n            d      : 'dan',\n            dd     : translate,\n            M      : 'mjesec',\n            MM     : translate,\n            y      : 'godinu',\n            yy     : translate\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 7th is the first week of the year.\n        }\n    });\n\n    return bs;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var ca = moment.defineLocale('ca', {\n        months : {\n            standalone: 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split('_'),\n            format: 'de gener_de febrer_de març_d\\'abril_de maig_de juny_de juliol_d\\'agost_de setembre_d\\'octubre_de novembre_de desembre'.split('_'),\n            isFormat: /D[oD]?(\\s)+MMMM/\n        },\n        monthsShort : 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split('_'),\n        monthsParseExact : true,\n        weekdays : 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split('_'),\n        weekdaysShort : 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),\n        weekdaysMin : 'dg_dl_dt_dc_dj_dv_ds'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'H:mm',\n            LTS : 'H:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM [de] YYYY',\n            ll : 'D MMM YYYY',\n            LLL : 'D MMMM [de] YYYY [a les] H:mm',\n            lll : 'D MMM YYYY, H:mm',\n            LLLL : 'dddd D MMMM [de] YYYY [a les] H:mm',\n            llll : 'ddd D MMM YYYY, H:mm'\n        },\n        calendar : {\n            sameDay : function () {\n                return '[avui a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';\n            },\n            nextDay : function () {\n                return '[demà a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';\n            },\n            nextWeek : function () {\n                return 'dddd [a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';\n            },\n            lastDay : function () {\n                return '[ahir a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';\n            },\n            lastWeek : function () {\n                return '[el] dddd [passat a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';\n            },\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'd\\'aquí %s',\n            past : 'fa %s',\n            s : 'uns segons',\n            ss : '%d segons',\n            m : 'un minut',\n            mm : '%d minuts',\n            h : 'una hora',\n            hh : '%d hores',\n            d : 'un dia',\n            dd : '%d dies',\n            M : 'un mes',\n            MM : '%d mesos',\n            y : 'un any',\n            yy : '%d anys'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n        ordinal : function (number, period) {\n            var output = (number === 1) ? 'r' :\n                (number === 2) ? 'n' :\n                (number === 3) ? 'r' :\n                (number === 4) ? 't' : 'è';\n            if (period === 'w' || period === 'W') {\n                output = 'a';\n            }\n            return number + output;\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return ca;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var months = 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split('_'),\n        monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_');\n\n    var monthsParse = [/^led/i, /^úno/i, /^bře/i, /^dub/i, /^kvě/i, /^(čvn|červen$|června)/i, /^(čvc|červenec|července)/i, /^srp/i, /^zář/i, /^říj/i, /^lis/i, /^pro/i];\n    // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n    // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n    var monthsRegex = /^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;\n\n    function plural(n) {\n        return (n > 1) && (n < 5) && (~~(n / 10) !== 1);\n    }\n    function translate(number, withoutSuffix, key, isFuture) {\n        var result = number + ' ';\n        switch (key) {\n            case 's':  // a few seconds / in a few seconds / a few seconds ago\n                return (withoutSuffix || isFuture) ? 'pár sekund' : 'pár sekundami';\n            case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'sekundy' : 'sekund');\n                } else {\n                    return result + 'sekundami';\n                }\n                break;\n            case 'm':  // a minute / in a minute / a minute ago\n                return withoutSuffix ? 'minuta' : (isFuture ? 'minutu' : 'minutou');\n            case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'minuty' : 'minut');\n                } else {\n                    return result + 'minutami';\n                }\n                break;\n            case 'h':  // an hour / in an hour / an hour ago\n                return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou');\n            case 'hh': // 9 hours / in 9 hours / 9 hours ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'hodiny' : 'hodin');\n                } else {\n                    return result + 'hodinami';\n                }\n                break;\n            case 'd':  // a day / in a day / a day ago\n                return (withoutSuffix || isFuture) ? 'den' : 'dnem';\n            case 'dd': // 9 days / in 9 days / 9 days ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'dny' : 'dní');\n                } else {\n                    return result + 'dny';\n                }\n                break;\n            case 'M':  // a month / in a month / a month ago\n                return (withoutSuffix || isFuture) ? 'měsíc' : 'měsícem';\n            case 'MM': // 9 months / in 9 months / 9 months ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'měsíce' : 'měsíců');\n                } else {\n                    return result + 'měsíci';\n                }\n                break;\n            case 'y':  // a year / in a year / a year ago\n                return (withoutSuffix || isFuture) ? 'rok' : 'rokem';\n            case 'yy': // 9 years / in 9 years / 9 years ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'roky' : 'let');\n                } else {\n                    return result + 'lety';\n                }\n                break;\n        }\n    }\n\n    var cs = moment.defineLocale('cs', {\n        months : months,\n        monthsShort : monthsShort,\n        monthsRegex : monthsRegex,\n        monthsShortRegex : monthsRegex,\n        // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n        // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n        monthsStrictRegex : /^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,\n        monthsShortStrictRegex : /^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,\n        monthsParse : monthsParse,\n        longMonthsParse : monthsParse,\n        shortMonthsParse : monthsParse,\n        weekdays : 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),\n        weekdaysShort : 'ne_po_út_st_čt_pá_so'.split('_'),\n        weekdaysMin : 'ne_po_út_st_čt_pá_so'.split('_'),\n        longDateFormat : {\n            LT: 'H:mm',\n            LTS : 'H:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D. MMMM YYYY',\n            LLL : 'D. MMMM YYYY H:mm',\n            LLLL : 'dddd D. MMMM YYYY H:mm',\n            l : 'D. M. YYYY'\n        },\n        calendar : {\n            sameDay: '[dnes v] LT',\n            nextDay: '[zítra v] LT',\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[v neděli v] LT';\n                    case 1:\n                    case 2:\n                        return '[v] dddd [v] LT';\n                    case 3:\n                        return '[ve středu v] LT';\n                    case 4:\n                        return '[ve čtvrtek v] LT';\n                    case 5:\n                        return '[v pátek v] LT';\n                    case 6:\n                        return '[v sobotu v] LT';\n                }\n            },\n            lastDay: '[včera v] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[minulou neděli v] LT';\n                    case 1:\n                    case 2:\n                        return '[minulé] dddd [v] LT';\n                    case 3:\n                        return '[minulou středu v] LT';\n                    case 4:\n                    case 5:\n                        return '[minulý] dddd [v] LT';\n                    case 6:\n                        return '[minulou sobotu v] LT';\n                }\n            },\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'za %s',\n            past : 'před %s',\n            s : translate,\n            ss : translate,\n            m : translate,\n            mm : translate,\n            h : translate,\n            hh : translate,\n            d : translate,\n            dd : translate,\n            M : translate,\n            MM : translate,\n            y : translate,\n            yy : translate\n        },\n        dayOfMonthOrdinalParse : /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return cs;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var cv = moment.defineLocale('cv', {\n        months : 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split('_'),\n        monthsShort : 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),\n        weekdays : 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split('_'),\n        weekdaysShort : 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'),\n        weekdaysMin : 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD-MM-YYYY',\n            LL : 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',\n            LLL : 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n            LLLL : 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm'\n        },\n        calendar : {\n            sameDay: '[Паян] LT [сехетре]',\n            nextDay: '[Ыран] LT [сехетре]',\n            lastDay: '[Ӗнер] LT [сехетре]',\n            nextWeek: '[Ҫитес] dddd LT [сехетре]',\n            lastWeek: '[Иртнӗ] dddd LT [сехетре]',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : function (output) {\n                var affix = /сехет$/i.exec(output) ? 'рен' : /ҫул$/i.exec(output) ? 'тан' : 'ран';\n                return output + affix;\n            },\n            past : '%s каялла',\n            s : 'пӗр-ик ҫеккунт',\n            ss : '%d ҫеккунт',\n            m : 'пӗр минут',\n            mm : '%d минут',\n            h : 'пӗр сехет',\n            hh : '%d сехет',\n            d : 'пӗр кун',\n            dd : '%d кун',\n            M : 'пӗр уйӑх',\n            MM : '%d уйӑх',\n            y : 'пӗр ҫул',\n            yy : '%d ҫул'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-мӗш/,\n        ordinal : '%d-мӗш',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 7th is the first week of the year.\n        }\n    });\n\n    return cv;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var cy = moment.defineLocale('cy', {\n        months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split('_'),\n        monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split('_'),\n        weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split('_'),\n        weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),\n        weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),\n        weekdaysParseExact : true,\n        // time formats are the same as en-gb\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm'\n        },\n        calendar: {\n            sameDay: '[Heddiw am] LT',\n            nextDay: '[Yfory am] LT',\n            nextWeek: 'dddd [am] LT',\n            lastDay: '[Ddoe am] LT',\n            lastWeek: 'dddd [diwethaf am] LT',\n            sameElse: 'L'\n        },\n        relativeTime: {\n            future: 'mewn %s',\n            past: '%s yn ôl',\n            s: 'ychydig eiliadau',\n            ss: '%d eiliad',\n            m: 'munud',\n            mm: '%d munud',\n            h: 'awr',\n            hh: '%d awr',\n            d: 'diwrnod',\n            dd: '%d diwrnod',\n            M: 'mis',\n            MM: '%d mis',\n            y: 'blwyddyn',\n            yy: '%d flynedd'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,\n        // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh\n        ordinal: function (number) {\n            var b = number,\n                output = '',\n                lookup = [\n                    '', 'af', 'il', 'ydd', 'ydd', 'ed', 'ed', 'ed', 'fed', 'fed', 'fed', // 1af to 10fed\n                    'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'fed' // 11eg to 20fed\n                ];\n            if (b > 20) {\n                if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {\n                    output = 'fed'; // not 30ain, 70ain or 90ain\n                } else {\n                    output = 'ain';\n                }\n            } else if (b > 0) {\n                output = lookup[b];\n            }\n            return number + output;\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return cy;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var da = moment.defineLocale('da', {\n        months : 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split('_'),\n        monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n        weekdays : 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n        weekdaysShort : 'søn_man_tir_ons_tor_fre_lør'.split('_'),\n        weekdaysMin : 'sø_ma_ti_on_to_fr_lø'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D. MMMM YYYY',\n            LLL : 'D. MMMM YYYY HH:mm',\n            LLLL : 'dddd [d.] D. MMMM YYYY [kl.] HH:mm'\n        },\n        calendar : {\n            sameDay : '[i dag kl.] LT',\n            nextDay : '[i morgen kl.] LT',\n            nextWeek : 'på dddd [kl.] LT',\n            lastDay : '[i går kl.] LT',\n            lastWeek : '[i] dddd[s kl.] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'om %s',\n            past : '%s siden',\n            s : 'få sekunder',\n            ss : '%d sekunder',\n            m : 'et minut',\n            mm : '%d minutter',\n            h : 'en time',\n            hh : '%d timer',\n            d : 'en dag',\n            dd : '%d dage',\n            M : 'en måned',\n            MM : '%d måneder',\n            y : 'et år',\n            yy : '%d år'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return da;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var format = {\n            'm': ['eine Minute', 'einer Minute'],\n            'h': ['eine Stunde', 'einer Stunde'],\n            'd': ['ein Tag', 'einem Tag'],\n            'dd': [number + ' Tage', number + ' Tagen'],\n            'M': ['ein Monat', 'einem Monat'],\n            'MM': [number + ' Monate', number + ' Monaten'],\n            'y': ['ein Jahr', 'einem Jahr'],\n            'yy': [number + ' Jahre', number + ' Jahren']\n        };\n        return withoutSuffix ? format[key][0] : format[key][1];\n    }\n\n    var deAt = moment.defineLocale('de-at', {\n        months : 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),\n        monthsShort : 'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n        monthsParseExact : true,\n        weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),\n        weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n        weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D. MMMM YYYY',\n            LLL : 'D. MMMM YYYY HH:mm',\n            LLLL : 'dddd, D. MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay: '[heute um] LT [Uhr]',\n            sameElse: 'L',\n            nextDay: '[morgen um] LT [Uhr]',\n            nextWeek: 'dddd [um] LT [Uhr]',\n            lastDay: '[gestern um] LT [Uhr]',\n            lastWeek: '[letzten] dddd [um] LT [Uhr]'\n        },\n        relativeTime : {\n            future : 'in %s',\n            past : 'vor %s',\n            s : 'ein paar Sekunden',\n            ss : '%d Sekunden',\n            m : processRelativeTime,\n            mm : '%d Minuten',\n            h : processRelativeTime,\n            hh : '%d Stunden',\n            d : processRelativeTime,\n            dd : processRelativeTime,\n            M : processRelativeTime,\n            MM : processRelativeTime,\n            y : processRelativeTime,\n            yy : processRelativeTime\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return deAt;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var format = {\n            'm': ['eine Minute', 'einer Minute'],\n            'h': ['eine Stunde', 'einer Stunde'],\n            'd': ['ein Tag', 'einem Tag'],\n            'dd': [number + ' Tage', number + ' Tagen'],\n            'M': ['ein Monat', 'einem Monat'],\n            'MM': [number + ' Monate', number + ' Monaten'],\n            'y': ['ein Jahr', 'einem Jahr'],\n            'yy': [number + ' Jahre', number + ' Jahren']\n        };\n        return withoutSuffix ? format[key][0] : format[key][1];\n    }\n\n    var deCh = moment.defineLocale('de-ch', {\n        months : 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),\n        monthsShort : 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n        monthsParseExact : true,\n        weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),\n        weekdaysShort : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n        weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D. MMMM YYYY',\n            LLL : 'D. MMMM YYYY HH:mm',\n            LLLL : 'dddd, D. MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay: '[heute um] LT [Uhr]',\n            sameElse: 'L',\n            nextDay: '[morgen um] LT [Uhr]',\n            nextWeek: 'dddd [um] LT [Uhr]',\n            lastDay: '[gestern um] LT [Uhr]',\n            lastWeek: '[letzten] dddd [um] LT [Uhr]'\n        },\n        relativeTime : {\n            future : 'in %s',\n            past : 'vor %s',\n            s : 'ein paar Sekunden',\n            ss : '%d Sekunden',\n            m : processRelativeTime,\n            mm : '%d Minuten',\n            h : processRelativeTime,\n            hh : '%d Stunden',\n            d : processRelativeTime,\n            dd : processRelativeTime,\n            M : processRelativeTime,\n            MM : processRelativeTime,\n            y : processRelativeTime,\n            yy : processRelativeTime\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return deCh;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var format = {\n            'm': ['eine Minute', 'einer Minute'],\n            'h': ['eine Stunde', 'einer Stunde'],\n            'd': ['ein Tag', 'einem Tag'],\n            'dd': [number + ' Tage', number + ' Tagen'],\n            'M': ['ein Monat', 'einem Monat'],\n            'MM': [number + ' Monate', number + ' Monaten'],\n            'y': ['ein Jahr', 'einem Jahr'],\n            'yy': [number + ' Jahre', number + ' Jahren']\n        };\n        return withoutSuffix ? format[key][0] : format[key][1];\n    }\n\n    var de = moment.defineLocale('de', {\n        months : 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),\n        monthsShort : 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n        monthsParseExact : true,\n        weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),\n        weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n        weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D. MMMM YYYY',\n            LLL : 'D. MMMM YYYY HH:mm',\n            LLLL : 'dddd, D. MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay: '[heute um] LT [Uhr]',\n            sameElse: 'L',\n            nextDay: '[morgen um] LT [Uhr]',\n            nextWeek: 'dddd [um] LT [Uhr]',\n            lastDay: '[gestern um] LT [Uhr]',\n            lastWeek: '[letzten] dddd [um] LT [Uhr]'\n        },\n        relativeTime : {\n            future : 'in %s',\n            past : 'vor %s',\n            s : 'ein paar Sekunden',\n            ss : '%d Sekunden',\n            m : processRelativeTime,\n            mm : '%d Minuten',\n            h : processRelativeTime,\n            hh : '%d Stunden',\n            d : processRelativeTime,\n            dd : processRelativeTime,\n            M : processRelativeTime,\n            MM : processRelativeTime,\n            y : processRelativeTime,\n            yy : processRelativeTime\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return de;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var months = [\n        'ޖެނުއަރީ',\n        'ފެބްރުއަރީ',\n        'މާރިޗު',\n        'އޭޕްރީލު',\n        'މޭ',\n        'ޖޫން',\n        'ޖުލައި',\n        'އޯގަސްޓު',\n        'ސެޕްޓެމްބަރު',\n        'އޮކްޓޯބަރު',\n        'ނޮވެމްބަރު',\n        'ޑިސެމްބަރު'\n    ], weekdays = [\n        'އާދިއްތަ',\n        'ހޯމަ',\n        'އަންގާރަ',\n        'ބުދަ',\n        'ބުރާސްފަތި',\n        'ހުކުރު',\n        'ހޮނިހިރު'\n    ];\n\n    var dv = moment.defineLocale('dv', {\n        months : months,\n        monthsShort : months,\n        weekdays : weekdays,\n        weekdaysShort : weekdays,\n        weekdaysMin : 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'),\n        longDateFormat : {\n\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'D/M/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd D MMMM YYYY HH:mm'\n        },\n        meridiemParse: /މކ|މފ/,\n        isPM : function (input) {\n            return 'މފ' === input;\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'މކ';\n            } else {\n                return 'މފ';\n            }\n        },\n        calendar : {\n            sameDay : '[މިއަދު] LT',\n            nextDay : '[މާދަމާ] LT',\n            nextWeek : 'dddd LT',\n            lastDay : '[އިއްޔެ] LT',\n            lastWeek : '[ފާއިތުވި] dddd LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'ތެރޭގައި %s',\n            past : 'ކުރިން %s',\n            s : 'ސިކުންތުކޮޅެއް',\n            ss : 'd% ސިކުންތު',\n            m : 'މިނިޓެއް',\n            mm : 'މިނިޓު %d',\n            h : 'ގަޑިއިރެއް',\n            hh : 'ގަޑިއިރު %d',\n            d : 'ދުވަހެއް',\n            dd : 'ދުވަސް %d',\n            M : 'މަހެއް',\n            MM : 'މަސް %d',\n            y : 'އަހަރެއް',\n            yy : 'އަހަރު %d'\n        },\n        preparse: function (string) {\n            return string.replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string.replace(/,/g, '،');\n        },\n        week : {\n            dow : 7,  // Sunday is the first day of the week.\n            doy : 12  // The week that contains Jan 12th is the first week of the year.\n        }\n    });\n\n    return dv;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    function isFunction(input) {\n        return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]';\n    }\n\n\n    var el = moment.defineLocale('el', {\n        monthsNominativeEl : 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split('_'),\n        monthsGenitiveEl : 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split('_'),\n        months : function (momentToFormat, format) {\n            if (!momentToFormat) {\n                return this._monthsNominativeEl;\n            } else if (typeof format === 'string' && /D/.test(format.substring(0, format.indexOf('MMMM')))) { // if there is a day number before 'MMMM'\n                return this._monthsGenitiveEl[momentToFormat.month()];\n            } else {\n                return this._monthsNominativeEl[momentToFormat.month()];\n            }\n        },\n        monthsShort : 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'),\n        weekdays : 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split('_'),\n        weekdaysShort : 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'),\n        weekdaysMin : 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'),\n        meridiem : function (hours, minutes, isLower) {\n            if (hours > 11) {\n                return isLower ? 'μμ' : 'ΜΜ';\n            } else {\n                return isLower ? 'πμ' : 'ΠΜ';\n            }\n        },\n        isPM : function (input) {\n            return ((input + '').toLowerCase()[0] === 'μ');\n        },\n        meridiemParse : /[ΠΜ]\\.?Μ?\\.?/i,\n        longDateFormat : {\n            LT : 'h:mm A',\n            LTS : 'h:mm:ss A',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY h:mm A',\n            LLLL : 'dddd, D MMMM YYYY h:mm A'\n        },\n        calendarEl : {\n            sameDay : '[Σήμερα {}] LT',\n            nextDay : '[Αύριο {}] LT',\n            nextWeek : 'dddd [{}] LT',\n            lastDay : '[Χθες {}] LT',\n            lastWeek : function () {\n                switch (this.day()) {\n                    case 6:\n                        return '[το προηγούμενο] dddd [{}] LT';\n                    default:\n                        return '[την προηγούμενη] dddd [{}] LT';\n                }\n            },\n            sameElse : 'L'\n        },\n        calendar : function (key, mom) {\n            var output = this._calendarEl[key],\n                hours = mom && mom.hours();\n            if (isFunction(output)) {\n                output = output.apply(mom);\n            }\n            return output.replace('{}', (hours % 12 === 1 ? 'στη' : 'στις'));\n        },\n        relativeTime : {\n            future : 'σε %s',\n            past : '%s πριν',\n            s : 'λίγα δευτερόλεπτα',\n            ss : '%d δευτερόλεπτα',\n            m : 'ένα λεπτό',\n            mm : '%d λεπτά',\n            h : 'μία ώρα',\n            hh : '%d ώρες',\n            d : 'μία μέρα',\n            dd : '%d μέρες',\n            M : 'ένας μήνας',\n            MM : '%d μήνες',\n            y : 'ένας χρόνος',\n            yy : '%d χρόνια'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}η/,\n        ordinal: '%dη',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4st is the first week of the year.\n        }\n    });\n\n    return el;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var enSG = moment.defineLocale('en-SG', {\n        months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n        monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n        weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd, D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay : '[Today at] LT',\n            nextDay : '[Tomorrow at] LT',\n            nextWeek : 'dddd [at] LT',\n            lastDay : '[Yesterday at] LT',\n            lastWeek : '[Last] dddd [at] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'in %s',\n            past : '%s ago',\n            s : 'a few seconds',\n            ss : '%d seconds',\n            m : 'a minute',\n            mm : '%d minutes',\n            h : 'an hour',\n            hh : '%d hours',\n            d : 'a day',\n            dd : '%d days',\n            M : 'a month',\n            MM : '%d months',\n            y : 'a year',\n            yy : '%d years'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal : function (number) {\n            var b = number % 10,\n                output = (~~(number % 100 / 10) === 1) ? 'th' :\n                (b === 1) ? 'st' :\n                (b === 2) ? 'nd' :\n                (b === 3) ? 'rd' : 'th';\n            return number + output;\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return enSG;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var enAu = moment.defineLocale('en-au', {\n        months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n        monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n        weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat : {\n            LT : 'h:mm A',\n            LTS : 'h:mm:ss A',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY h:mm A',\n            LLLL : 'dddd, D MMMM YYYY h:mm A'\n        },\n        calendar : {\n            sameDay : '[Today at] LT',\n            nextDay : '[Tomorrow at] LT',\n            nextWeek : 'dddd [at] LT',\n            lastDay : '[Yesterday at] LT',\n            lastWeek : '[Last] dddd [at] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'in %s',\n            past : '%s ago',\n            s : 'a few seconds',\n            ss : '%d seconds',\n            m : 'a minute',\n            mm : '%d minutes',\n            h : 'an hour',\n            hh : '%d hours',\n            d : 'a day',\n            dd : '%d days',\n            M : 'a month',\n            MM : '%d months',\n            y : 'a year',\n            yy : '%d years'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal : function (number) {\n            var b = number % 10,\n                output = (~~(number % 100 / 10) === 1) ? 'th' :\n                (b === 1) ? 'st' :\n                (b === 2) ? 'nd' :\n                (b === 3) ? 'rd' : 'th';\n            return number + output;\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return enAu;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var enCa = moment.defineLocale('en-ca', {\n        months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n        monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n        weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat : {\n            LT : 'h:mm A',\n            LTS : 'h:mm:ss A',\n            L : 'YYYY-MM-DD',\n            LL : 'MMMM D, YYYY',\n            LLL : 'MMMM D, YYYY h:mm A',\n            LLLL : 'dddd, MMMM D, YYYY h:mm A'\n        },\n        calendar : {\n            sameDay : '[Today at] LT',\n            nextDay : '[Tomorrow at] LT',\n            nextWeek : 'dddd [at] LT',\n            lastDay : '[Yesterday at] LT',\n            lastWeek : '[Last] dddd [at] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'in %s',\n            past : '%s ago',\n            s : 'a few seconds',\n            ss : '%d seconds',\n            m : 'a minute',\n            mm : '%d minutes',\n            h : 'an hour',\n            hh : '%d hours',\n            d : 'a day',\n            dd : '%d days',\n            M : 'a month',\n            MM : '%d months',\n            y : 'a year',\n            yy : '%d years'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal : function (number) {\n            var b = number % 10,\n                output = (~~(number % 100 / 10) === 1) ? 'th' :\n                (b === 1) ? 'st' :\n                (b === 2) ? 'nd' :\n                (b === 3) ? 'rd' : 'th';\n            return number + output;\n        }\n    });\n\n    return enCa;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var enGb = moment.defineLocale('en-gb', {\n        months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n        monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n        weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd, D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay : '[Today at] LT',\n            nextDay : '[Tomorrow at] LT',\n            nextWeek : 'dddd [at] LT',\n            lastDay : '[Yesterday at] LT',\n            lastWeek : '[Last] dddd [at] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'in %s',\n            past : '%s ago',\n            s : 'a few seconds',\n            ss : '%d seconds',\n            m : 'a minute',\n            mm : '%d minutes',\n            h : 'an hour',\n            hh : '%d hours',\n            d : 'a day',\n            dd : '%d days',\n            M : 'a month',\n            MM : '%d months',\n            y : 'a year',\n            yy : '%d years'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal : function (number) {\n            var b = number % 10,\n                output = (~~(number % 100 / 10) === 1) ? 'th' :\n                (b === 1) ? 'st' :\n                (b === 2) ? 'nd' :\n                (b === 3) ? 'rd' : 'th';\n            return number + output;\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return enGb;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var enIe = moment.defineLocale('en-ie', {\n        months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n        monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n        weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay : '[Today at] LT',\n            nextDay : '[Tomorrow at] LT',\n            nextWeek : 'dddd [at] LT',\n            lastDay : '[Yesterday at] LT',\n            lastWeek : '[Last] dddd [at] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'in %s',\n            past : '%s ago',\n            s : 'a few seconds',\n            ss : '%d seconds',\n            m : 'a minute',\n            mm : '%d minutes',\n            h : 'an hour',\n            hh : '%d hours',\n            d : 'a day',\n            dd : '%d days',\n            M : 'a month',\n            MM : '%d months',\n            y : 'a year',\n            yy : '%d years'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal : function (number) {\n            var b = number % 10,\n                output = (~~(number % 100 / 10) === 1) ? 'th' :\n                (b === 1) ? 'st' :\n                (b === 2) ? 'nd' :\n                (b === 3) ? 'rd' : 'th';\n            return number + output;\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return enIe;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var enIl = moment.defineLocale('en-il', {\n        months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n        monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n        weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd, D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay : '[Today at] LT',\n            nextDay : '[Tomorrow at] LT',\n            nextWeek : 'dddd [at] LT',\n            lastDay : '[Yesterday at] LT',\n            lastWeek : '[Last] dddd [at] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'in %s',\n            past : '%s ago',\n            s : 'a few seconds',\n            m : 'a minute',\n            mm : '%d minutes',\n            h : 'an hour',\n            hh : '%d hours',\n            d : 'a day',\n            dd : '%d days',\n            M : 'a month',\n            MM : '%d months',\n            y : 'a year',\n            yy : '%d years'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal : function (number) {\n            var b = number % 10,\n                output = (~~(number % 100 / 10) === 1) ? 'th' :\n                (b === 1) ? 'st' :\n                (b === 2) ? 'nd' :\n                (b === 3) ? 'rd' : 'th';\n            return number + output;\n        }\n    });\n\n    return enIl;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var enNz = moment.defineLocale('en-nz', {\n        months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n        monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n        weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat : {\n            LT : 'h:mm A',\n            LTS : 'h:mm:ss A',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY h:mm A',\n            LLLL : 'dddd, D MMMM YYYY h:mm A'\n        },\n        calendar : {\n            sameDay : '[Today at] LT',\n            nextDay : '[Tomorrow at] LT',\n            nextWeek : 'dddd [at] LT',\n            lastDay : '[Yesterday at] LT',\n            lastWeek : '[Last] dddd [at] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'in %s',\n            past : '%s ago',\n            s : 'a few seconds',\n            ss : '%d seconds',\n            m : 'a minute',\n            mm : '%d minutes',\n            h : 'an hour',\n            hh : '%d hours',\n            d : 'a day',\n            dd : '%d days',\n            M : 'a month',\n            MM : '%d months',\n            y : 'a year',\n            yy : '%d years'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal : function (number) {\n            var b = number % 10,\n                output = (~~(number % 100 / 10) === 1) ? 'th' :\n                (b === 1) ? 'st' :\n                (b === 2) ? 'nd' :\n                (b === 3) ? 'rd' : 'th';\n            return number + output;\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return enNz;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var eo = moment.defineLocale('eo', {\n        months : 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split('_'),\n        monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aŭg_sep_okt_nov_dec'.split('_'),\n        weekdays : 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'),\n        weekdaysShort : 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'),\n        weekdaysMin : 'di_lu_ma_me_ĵa_ve_sa'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'YYYY-MM-DD',\n            LL : 'D[-a de] MMMM, YYYY',\n            LLL : 'D[-a de] MMMM, YYYY HH:mm',\n            LLLL : 'dddd, [la] D[-a de] MMMM, YYYY HH:mm'\n        },\n        meridiemParse: /[ap]\\.t\\.m/i,\n        isPM: function (input) {\n            return input.charAt(0).toLowerCase() === 'p';\n        },\n        meridiem : function (hours, minutes, isLower) {\n            if (hours > 11) {\n                return isLower ? 'p.t.m.' : 'P.T.M.';\n            } else {\n                return isLower ? 'a.t.m.' : 'A.T.M.';\n            }\n        },\n        calendar : {\n            sameDay : '[Hodiaŭ je] LT',\n            nextDay : '[Morgaŭ je] LT',\n            nextWeek : 'dddd [je] LT',\n            lastDay : '[Hieraŭ je] LT',\n            lastWeek : '[pasinta] dddd [je] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'post %s',\n            past : 'antaŭ %s',\n            s : 'sekundoj',\n            ss : '%d sekundoj',\n            m : 'minuto',\n            mm : '%d minutoj',\n            h : 'horo',\n            hh : '%d horoj',\n            d : 'tago',//ne 'diurno', ĉar estas uzita por proksimumo\n            dd : '%d tagoj',\n            M : 'monato',\n            MM : '%d monatoj',\n            y : 'jaro',\n            yy : '%d jaroj'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}a/,\n        ordinal : '%da',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 7th is the first week of the year.\n        }\n    });\n\n    return eo;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'),\n        monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_');\n\n    var monthsParse = [/^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i];\n    var monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n    var esDo = moment.defineLocale('es-do', {\n        months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),\n        monthsShort : function (m, format) {\n            if (!m) {\n                return monthsShortDot;\n            } else if (/-MMM-/.test(format)) {\n                return monthsShort[m.month()];\n            } else {\n                return monthsShortDot[m.month()];\n            }\n        },\n        monthsRegex: monthsRegex,\n        monthsShortRegex: monthsRegex,\n        monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n        monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n        weekdays : 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n        weekdaysShort : 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n        weekdaysMin : 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'h:mm A',\n            LTS : 'h:mm:ss A',\n            L : 'DD/MM/YYYY',\n            LL : 'D [de] MMMM [de] YYYY',\n            LLL : 'D [de] MMMM [de] YYYY h:mm A',\n            LLLL : 'dddd, D [de] MMMM [de] YYYY h:mm A'\n        },\n        calendar : {\n            sameDay : function () {\n                return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n            },\n            nextDay : function () {\n                return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n            },\n            nextWeek : function () {\n                return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n            },\n            lastDay : function () {\n                return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n            },\n            lastWeek : function () {\n                return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n            },\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'en %s',\n            past : 'hace %s',\n            s : 'unos segundos',\n            ss : '%d segundos',\n            m : 'un minuto',\n            mm : '%d minutos',\n            h : 'una hora',\n            hh : '%d horas',\n            d : 'un día',\n            dd : '%d días',\n            M : 'un mes',\n            MM : '%d meses',\n            y : 'un año',\n            yy : '%d años'\n        },\n        dayOfMonthOrdinalParse : /\\d{1,2}º/,\n        ordinal : '%dº',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return esDo;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'),\n        monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_');\n\n    var monthsParse = [/^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i];\n    var monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n    var esUs = moment.defineLocale('es-us', {\n        months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),\n        monthsShort : function (m, format) {\n            if (!m) {\n                return monthsShortDot;\n            } else if (/-MMM-/.test(format)) {\n                return monthsShort[m.month()];\n            } else {\n                return monthsShortDot[m.month()];\n            }\n        },\n        monthsRegex: monthsRegex,\n        monthsShortRegex: monthsRegex,\n        monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n        monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n        weekdays : 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n        weekdaysShort : 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n        weekdaysMin : 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'h:mm A',\n            LTS : 'h:mm:ss A',\n            L : 'MM/DD/YYYY',\n            LL : 'D [de] MMMM [de] YYYY',\n            LLL : 'D [de] MMMM [de] YYYY h:mm A',\n            LLLL : 'dddd, D [de] MMMM [de] YYYY h:mm A'\n        },\n        calendar : {\n            sameDay : function () {\n                return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n            },\n            nextDay : function () {\n                return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n            },\n            nextWeek : function () {\n                return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n            },\n            lastDay : function () {\n                return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n            },\n            lastWeek : function () {\n                return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n            },\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'en %s',\n            past : 'hace %s',\n            s : 'unos segundos',\n            ss : '%d segundos',\n            m : 'un minuto',\n            mm : '%d minutos',\n            h : 'una hora',\n            hh : '%d horas',\n            d : 'un día',\n            dd : '%d días',\n            M : 'un mes',\n            MM : '%d meses',\n            y : 'un año',\n            yy : '%d años'\n        },\n        dayOfMonthOrdinalParse : /\\d{1,2}º/,\n        ordinal : '%dº',\n        week : {\n            dow : 0, // Sunday is the first day of the week.\n            doy : 6  // The week that contains Jan 6th is the first week of the year.\n        }\n    });\n\n    return esUs;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'),\n        monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_');\n\n    var monthsParse = [/^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i];\n    var monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n    var es = moment.defineLocale('es', {\n        months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),\n        monthsShort : function (m, format) {\n            if (!m) {\n                return monthsShortDot;\n            } else if (/-MMM-/.test(format)) {\n                return monthsShort[m.month()];\n            } else {\n                return monthsShortDot[m.month()];\n            }\n        },\n        monthsRegex : monthsRegex,\n        monthsShortRegex : monthsRegex,\n        monthsStrictRegex : /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n        monthsShortStrictRegex : /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n        monthsParse : monthsParse,\n        longMonthsParse : monthsParse,\n        shortMonthsParse : monthsParse,\n        weekdays : 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n        weekdaysShort : 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n        weekdaysMin : 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'H:mm',\n            LTS : 'H:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D [de] MMMM [de] YYYY',\n            LLL : 'D [de] MMMM [de] YYYY H:mm',\n            LLLL : 'dddd, D [de] MMMM [de] YYYY H:mm'\n        },\n        calendar : {\n            sameDay : function () {\n                return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n            },\n            nextDay : function () {\n                return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n            },\n            nextWeek : function () {\n                return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n            },\n            lastDay : function () {\n                return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n            },\n            lastWeek : function () {\n                return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';\n            },\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'en %s',\n            past : 'hace %s',\n            s : 'unos segundos',\n            ss : '%d segundos',\n            m : 'un minuto',\n            mm : '%d minutos',\n            h : 'una hora',\n            hh : '%d horas',\n            d : 'un día',\n            dd : '%d días',\n            M : 'un mes',\n            MM : '%d meses',\n            y : 'un año',\n            yy : '%d años'\n        },\n        dayOfMonthOrdinalParse : /\\d{1,2}º/,\n        ordinal : '%dº',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return es;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var format = {\n            's' : ['mõne sekundi', 'mõni sekund', 'paar sekundit'],\n            'ss': [number + 'sekundi', number + 'sekundit'],\n            'm' : ['ühe minuti', 'üks minut'],\n            'mm': [number + ' minuti', number + ' minutit'],\n            'h' : ['ühe tunni', 'tund aega', 'üks tund'],\n            'hh': [number + ' tunni', number + ' tundi'],\n            'd' : ['ühe päeva', 'üks päev'],\n            'M' : ['kuu aja', 'kuu aega', 'üks kuu'],\n            'MM': [number + ' kuu', number + ' kuud'],\n            'y' : ['ühe aasta', 'aasta', 'üks aasta'],\n            'yy': [number + ' aasta', number + ' aastat']\n        };\n        if (withoutSuffix) {\n            return format[key][2] ? format[key][2] : format[key][1];\n        }\n        return isFuture ? format[key][0] : format[key][1];\n    }\n\n    var et = moment.defineLocale('et', {\n        months        : 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split('_'),\n        monthsShort   : 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'),\n        weekdays      : 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split('_'),\n        weekdaysShort : 'P_E_T_K_N_R_L'.split('_'),\n        weekdaysMin   : 'P_E_T_K_N_R_L'.split('_'),\n        longDateFormat : {\n            LT   : 'H:mm',\n            LTS : 'H:mm:ss',\n            L    : 'DD.MM.YYYY',\n            LL   : 'D. MMMM YYYY',\n            LLL  : 'D. MMMM YYYY H:mm',\n            LLLL : 'dddd, D. MMMM YYYY H:mm'\n        },\n        calendar : {\n            sameDay  : '[Täna,] LT',\n            nextDay  : '[Homme,] LT',\n            nextWeek : '[Järgmine] dddd LT',\n            lastDay  : '[Eile,] LT',\n            lastWeek : '[Eelmine] dddd LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s pärast',\n            past   : '%s tagasi',\n            s      : processRelativeTime,\n            ss     : processRelativeTime,\n            m      : processRelativeTime,\n            mm     : processRelativeTime,\n            h      : processRelativeTime,\n            hh     : processRelativeTime,\n            d      : processRelativeTime,\n            dd     : '%d päeva',\n            M      : processRelativeTime,\n            MM     : processRelativeTime,\n            y      : processRelativeTime,\n            yy     : processRelativeTime\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return et;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var eu = moment.defineLocale('eu', {\n        months : 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split('_'),\n        monthsShort : 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split('_'),\n        monthsParseExact : true,\n        weekdays : 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split('_'),\n        weekdaysShort : 'ig._al._ar._az._og._ol._lr.'.split('_'),\n        weekdaysMin : 'ig_al_ar_az_og_ol_lr'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'YYYY-MM-DD',\n            LL : 'YYYY[ko] MMMM[ren] D[a]',\n            LLL : 'YYYY[ko] MMMM[ren] D[a] HH:mm',\n            LLLL : 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',\n            l : 'YYYY-M-D',\n            ll : 'YYYY[ko] MMM D[a]',\n            lll : 'YYYY[ko] MMM D[a] HH:mm',\n            llll : 'ddd, YYYY[ko] MMM D[a] HH:mm'\n        },\n        calendar : {\n            sameDay : '[gaur] LT[etan]',\n            nextDay : '[bihar] LT[etan]',\n            nextWeek : 'dddd LT[etan]',\n            lastDay : '[atzo] LT[etan]',\n            lastWeek : '[aurreko] dddd LT[etan]',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s barru',\n            past : 'duela %s',\n            s : 'segundo batzuk',\n            ss : '%d segundo',\n            m : 'minutu bat',\n            mm : '%d minutu',\n            h : 'ordu bat',\n            hh : '%d ordu',\n            d : 'egun bat',\n            dd : '%d egun',\n            M : 'hilabete bat',\n            MM : '%d hilabete',\n            y : 'urte bat',\n            yy : '%d urte'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 7th is the first week of the year.\n        }\n    });\n\n    return eu;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var symbolMap = {\n        '1': '۱',\n        '2': '۲',\n        '3': '۳',\n        '4': '۴',\n        '5': '۵',\n        '6': '۶',\n        '7': '۷',\n        '8': '۸',\n        '9': '۹',\n        '0': '۰'\n    }, numberMap = {\n        '۱': '1',\n        '۲': '2',\n        '۳': '3',\n        '۴': '4',\n        '۵': '5',\n        '۶': '6',\n        '۷': '7',\n        '۸': '8',\n        '۹': '9',\n        '۰': '0'\n    };\n\n    var fa = moment.defineLocale('fa', {\n        months : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'),\n        monthsShort : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'),\n        weekdays : 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split('_'),\n        weekdaysShort : 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split('_'),\n        weekdaysMin : 'ی_د_س_چ_پ_ج_ش'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd, D MMMM YYYY HH:mm'\n        },\n        meridiemParse: /قبل از ظهر|بعد از ظهر/,\n        isPM: function (input) {\n            return /بعد از ظهر/.test(input);\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'قبل از ظهر';\n            } else {\n                return 'بعد از ظهر';\n            }\n        },\n        calendar : {\n            sameDay : '[امروز ساعت] LT',\n            nextDay : '[فردا ساعت] LT',\n            nextWeek : 'dddd [ساعت] LT',\n            lastDay : '[دیروز ساعت] LT',\n            lastWeek : 'dddd [پیش] [ساعت] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'در %s',\n            past : '%s پیش',\n            s : 'چند ثانیه',\n            ss : 'ثانیه d%',\n            m : 'یک دقیقه',\n            mm : '%d دقیقه',\n            h : 'یک ساعت',\n            hh : '%d ساعت',\n            d : 'یک روز',\n            dd : '%d روز',\n            M : 'یک ماه',\n            MM : '%d ماه',\n            y : 'یک سال',\n            yy : '%d سال'\n        },\n        preparse: function (string) {\n            return string.replace(/[۰-۹]/g, function (match) {\n                return numberMap[match];\n            }).replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            }).replace(/,/g, '،');\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}م/,\n        ordinal : '%dم',\n        week : {\n            dow : 6, // Saturday is the first day of the week.\n            doy : 12 // The week that contains Jan 12th is the first week of the year.\n        }\n    });\n\n    return fa;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(' '),\n        numbersFuture = [\n            'nolla', 'yhden', 'kahden', 'kolmen', 'neljän', 'viiden', 'kuuden',\n            numbersPast[7], numbersPast[8], numbersPast[9]\n        ];\n    function translate(number, withoutSuffix, key, isFuture) {\n        var result = '';\n        switch (key) {\n            case 's':\n                return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';\n            case 'ss':\n                return isFuture ? 'sekunnin' : 'sekuntia';\n            case 'm':\n                return isFuture ? 'minuutin' : 'minuutti';\n            case 'mm':\n                result = isFuture ? 'minuutin' : 'minuuttia';\n                break;\n            case 'h':\n                return isFuture ? 'tunnin' : 'tunti';\n            case 'hh':\n                result = isFuture ? 'tunnin' : 'tuntia';\n                break;\n            case 'd':\n                return isFuture ? 'päivän' : 'päivä';\n            case 'dd':\n                result = isFuture ? 'päivän' : 'päivää';\n                break;\n            case 'M':\n                return isFuture ? 'kuukauden' : 'kuukausi';\n            case 'MM':\n                result = isFuture ? 'kuukauden' : 'kuukautta';\n                break;\n            case 'y':\n                return isFuture ? 'vuoden' : 'vuosi';\n            case 'yy':\n                result = isFuture ? 'vuoden' : 'vuotta';\n                break;\n        }\n        result = verbalNumber(number, isFuture) + ' ' + result;\n        return result;\n    }\n    function verbalNumber(number, isFuture) {\n        return number < 10 ? (isFuture ? numbersFuture[number] : numbersPast[number]) : number;\n    }\n\n    var fi = moment.defineLocale('fi', {\n        months : 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split('_'),\n        monthsShort : 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split('_'),\n        weekdays : 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split('_'),\n        weekdaysShort : 'su_ma_ti_ke_to_pe_la'.split('_'),\n        weekdaysMin : 'su_ma_ti_ke_to_pe_la'.split('_'),\n        longDateFormat : {\n            LT : 'HH.mm',\n            LTS : 'HH.mm.ss',\n            L : 'DD.MM.YYYY',\n            LL : 'Do MMMM[ta] YYYY',\n            LLL : 'Do MMMM[ta] YYYY, [klo] HH.mm',\n            LLLL : 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',\n            l : 'D.M.YYYY',\n            ll : 'Do MMM YYYY',\n            lll : 'Do MMM YYYY, [klo] HH.mm',\n            llll : 'ddd, Do MMM YYYY, [klo] HH.mm'\n        },\n        calendar : {\n            sameDay : '[tänään] [klo] LT',\n            nextDay : '[huomenna] [klo] LT',\n            nextWeek : 'dddd [klo] LT',\n            lastDay : '[eilen] [klo] LT',\n            lastWeek : '[viime] dddd[na] [klo] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s päästä',\n            past : '%s sitten',\n            s : translate,\n            ss : translate,\n            m : translate,\n            mm : translate,\n            h : translate,\n            hh : translate,\n            d : translate,\n            dd : translate,\n            M : translate,\n            MM : translate,\n            y : translate,\n            yy : translate\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return fi;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var fo = moment.defineLocale('fo', {\n        months : 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split('_'),\n        monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),\n        weekdays : 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split('_'),\n        weekdaysShort : 'sun_mán_týs_mik_hós_frí_ley'.split('_'),\n        weekdaysMin : 'su_má_tý_mi_hó_fr_le'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd D. MMMM, YYYY HH:mm'\n        },\n        calendar : {\n            sameDay : '[Í dag kl.] LT',\n            nextDay : '[Í morgin kl.] LT',\n            nextWeek : 'dddd [kl.] LT',\n            lastDay : '[Í gjár kl.] LT',\n            lastWeek : '[síðstu] dddd [kl] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'um %s',\n            past : '%s síðani',\n            s : 'fá sekund',\n            ss : '%d sekundir',\n            m : 'ein minuttur',\n            mm : '%d minuttir',\n            h : 'ein tími',\n            hh : '%d tímar',\n            d : 'ein dagur',\n            dd : '%d dagar',\n            M : 'ein mánaður',\n            MM : '%d mánaðir',\n            y : 'eitt ár',\n            yy : '%d ár'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return fo;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var frCa = moment.defineLocale('fr-ca', {\n        months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),\n        monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),\n        monthsParseExact : true,\n        weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n        weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n        weekdaysMin : 'di_lu_ma_me_je_ve_sa'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'YYYY-MM-DD',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay : '[Aujourd’hui à] LT',\n            nextDay : '[Demain à] LT',\n            nextWeek : 'dddd [à] LT',\n            lastDay : '[Hier à] LT',\n            lastWeek : 'dddd [dernier à] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'dans %s',\n            past : 'il y a %s',\n            s : 'quelques secondes',\n            ss : '%d secondes',\n            m : 'une minute',\n            mm : '%d minutes',\n            h : 'une heure',\n            hh : '%d heures',\n            d : 'un jour',\n            dd : '%d jours',\n            M : 'un mois',\n            MM : '%d mois',\n            y : 'un an',\n            yy : '%d ans'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n        ordinal : function (number, period) {\n            switch (period) {\n                // Words with masculine grammatical gender: mois, trimestre, jour\n                default:\n                case 'M':\n                case 'Q':\n                case 'D':\n                case 'DDD':\n                case 'd':\n                    return number + (number === 1 ? 'er' : 'e');\n\n                // Words with feminine grammatical gender: semaine\n                case 'w':\n                case 'W':\n                    return number + (number === 1 ? 're' : 'e');\n            }\n        }\n    });\n\n    return frCa;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var frCh = moment.defineLocale('fr-ch', {\n        months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),\n        monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),\n        monthsParseExact : true,\n        weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n        weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n        weekdaysMin : 'di_lu_ma_me_je_ve_sa'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay : '[Aujourd’hui à] LT',\n            nextDay : '[Demain à] LT',\n            nextWeek : 'dddd [à] LT',\n            lastDay : '[Hier à] LT',\n            lastWeek : 'dddd [dernier à] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'dans %s',\n            past : 'il y a %s',\n            s : 'quelques secondes',\n            ss : '%d secondes',\n            m : 'une minute',\n            mm : '%d minutes',\n            h : 'une heure',\n            hh : '%d heures',\n            d : 'un jour',\n            dd : '%d jours',\n            M : 'un mois',\n            MM : '%d mois',\n            y : 'un an',\n            yy : '%d ans'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n        ordinal : function (number, period) {\n            switch (period) {\n                // Words with masculine grammatical gender: mois, trimestre, jour\n                default:\n                case 'M':\n                case 'Q':\n                case 'D':\n                case 'DDD':\n                case 'd':\n                    return number + (number === 1 ? 'er' : 'e');\n\n                // Words with feminine grammatical gender: semaine\n                case 'w':\n                case 'W':\n                    return number + (number === 1 ? 're' : 'e');\n            }\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return frCh;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var fr = moment.defineLocale('fr', {\n        months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),\n        monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),\n        monthsParseExact : true,\n        weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n        weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n        weekdaysMin : 'di_lu_ma_me_je_ve_sa'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay : '[Aujourd’hui à] LT',\n            nextDay : '[Demain à] LT',\n            nextWeek : 'dddd [à] LT',\n            lastDay : '[Hier à] LT',\n            lastWeek : 'dddd [dernier à] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'dans %s',\n            past : 'il y a %s',\n            s : 'quelques secondes',\n            ss : '%d secondes',\n            m : 'une minute',\n            mm : '%d minutes',\n            h : 'une heure',\n            hh : '%d heures',\n            d : 'un jour',\n            dd : '%d jours',\n            M : 'un mois',\n            MM : '%d mois',\n            y : 'un an',\n            yy : '%d ans'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(er|)/,\n        ordinal : function (number, period) {\n            switch (period) {\n                // TODO: Return 'e' when day of month > 1. Move this case inside\n                // block for masculine words below.\n                // See https://github.com/moment/moment/issues/3375\n                case 'D':\n                    return number + (number === 1 ? 'er' : '');\n\n                // Words with masculine grammatical gender: mois, trimestre, jour\n                default:\n                case 'M':\n                case 'Q':\n                case 'DDD':\n                case 'd':\n                    return number + (number === 1 ? 'er' : 'e');\n\n                // Words with feminine grammatical gender: semaine\n                case 'w':\n                case 'W':\n                    return number + (number === 1 ? 're' : 'e');\n            }\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return fr;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var monthsShortWithDots = 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split('_'),\n        monthsShortWithoutDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_');\n\n    var fy = moment.defineLocale('fy', {\n        months : 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split('_'),\n        monthsShort : function (m, format) {\n            if (!m) {\n                return monthsShortWithDots;\n            } else if (/-MMM-/.test(format)) {\n                return monthsShortWithoutDots[m.month()];\n            } else {\n                return monthsShortWithDots[m.month()];\n            }\n        },\n        monthsParseExact : true,\n        weekdays : 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split('_'),\n        weekdaysShort : 'si._mo._ti._wo._to._fr._so.'.split('_'),\n        weekdaysMin : 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD-MM-YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay: '[hjoed om] LT',\n            nextDay: '[moarn om] LT',\n            nextWeek: 'dddd [om] LT',\n            lastDay: '[juster om] LT',\n            lastWeek: '[ôfrûne] dddd [om] LT',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'oer %s',\n            past : '%s lyn',\n            s : 'in pear sekonden',\n            ss : '%d sekonden',\n            m : 'ien minút',\n            mm : '%d minuten',\n            h : 'ien oere',\n            hh : '%d oeren',\n            d : 'ien dei',\n            dd : '%d dagen',\n            M : 'ien moanne',\n            MM : '%d moannen',\n            y : 'ien jier',\n            yy : '%d jierren'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n        ordinal : function (number) {\n            return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de');\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return fy;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n\n    var months = [\n        'Eanáir', 'Feabhra', 'Márta', 'Aibreán', 'Bealtaine', 'Méitheamh', 'Iúil', 'Lúnasa', 'Meán Fómhair', 'Deaireadh Fómhair', 'Samhain', 'Nollaig'\n    ];\n\n    var monthsShort = ['Eaná', 'Feab', 'Márt', 'Aibr', 'Beal', 'Méit', 'Iúil', 'Lúna', 'Meán', 'Deai', 'Samh', 'Noll'];\n\n    var weekdays = ['Dé Domhnaigh', 'Dé Luain', 'Dé Máirt', 'Dé Céadaoin', 'Déardaoin', 'Dé hAoine', 'Dé Satharn'];\n\n    var weekdaysShort = ['Dom', 'Lua', 'Mái', 'Céa', 'Déa', 'hAo', 'Sat'];\n\n    var weekdaysMin = ['Do', 'Lu', 'Má', 'Ce', 'Dé', 'hA', 'Sa'];\n\n    var ga = moment.defineLocale('ga', {\n        months: months,\n        monthsShort: monthsShort,\n        monthsParseExact: true,\n        weekdays: weekdays,\n        weekdaysShort: weekdaysShort,\n        weekdaysMin: weekdaysMin,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm'\n        },\n        calendar: {\n            sameDay: '[Inniu ag] LT',\n            nextDay: '[Amárach ag] LT',\n            nextWeek: 'dddd [ag] LT',\n            lastDay: '[Inné aig] LT',\n            lastWeek: 'dddd [seo caite] [ag] LT',\n            sameElse: 'L'\n        },\n        relativeTime: {\n            future: 'i %s',\n            past: '%s ó shin',\n            s: 'cúpla soicind',\n            ss: '%d soicind',\n            m: 'nóiméad',\n            mm: '%d nóiméad',\n            h: 'uair an chloig',\n            hh: '%d uair an chloig',\n            d: 'lá',\n            dd: '%d lá',\n            M: 'mí',\n            MM: '%d mí',\n            y: 'bliain',\n            yy: '%d bliain'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n        ordinal: function (number) {\n            var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return ga;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var months = [\n        'Am Faoilleach', 'An Gearran', 'Am Màrt', 'An Giblean', 'An Cèitean', 'An t-Ògmhios', 'An t-Iuchar', 'An Lùnastal', 'An t-Sultain', 'An Dàmhair', 'An t-Samhain', 'An Dùbhlachd'\n    ];\n\n    var monthsShort = ['Faoi', 'Gear', 'Màrt', 'Gibl', 'Cèit', 'Ògmh', 'Iuch', 'Lùn', 'Sult', 'Dàmh', 'Samh', 'Dùbh'];\n\n    var weekdays = ['Didòmhnaich', 'Diluain', 'Dimàirt', 'Diciadain', 'Diardaoin', 'Dihaoine', 'Disathairne'];\n\n    var weekdaysShort = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'];\n\n    var weekdaysMin = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa'];\n\n    var gd = moment.defineLocale('gd', {\n        months : months,\n        monthsShort : monthsShort,\n        monthsParseExact : true,\n        weekdays : weekdays,\n        weekdaysShort : weekdaysShort,\n        weekdaysMin : weekdaysMin,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd, D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay : '[An-diugh aig] LT',\n            nextDay : '[A-màireach aig] LT',\n            nextWeek : 'dddd [aig] LT',\n            lastDay : '[An-dè aig] LT',\n            lastWeek : 'dddd [seo chaidh] [aig] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'ann an %s',\n            past : 'bho chionn %s',\n            s : 'beagan diogan',\n            ss : '%d diogan',\n            m : 'mionaid',\n            mm : '%d mionaidean',\n            h : 'uair',\n            hh : '%d uairean',\n            d : 'latha',\n            dd : '%d latha',\n            M : 'mìos',\n            MM : '%d mìosan',\n            y : 'bliadhna',\n            yy : '%d bliadhna'\n        },\n        dayOfMonthOrdinalParse : /\\d{1,2}(d|na|mh)/,\n        ordinal : function (number) {\n            var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n            return number + output;\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return gd;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var gl = moment.defineLocale('gl', {\n        months : 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split('_'),\n        monthsShort : 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split('_'),\n        monthsParseExact: true,\n        weekdays : 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),\n        weekdaysShort : 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),\n        weekdaysMin : 'do_lu_ma_mé_xo_ve_sá'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'H:mm',\n            LTS : 'H:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D [de] MMMM [de] YYYY',\n            LLL : 'D [de] MMMM [de] YYYY H:mm',\n            LLLL : 'dddd, D [de] MMMM [de] YYYY H:mm'\n        },\n        calendar : {\n            sameDay : function () {\n                return '[hoxe ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT';\n            },\n            nextDay : function () {\n                return '[mañá ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT';\n            },\n            nextWeek : function () {\n                return 'dddd [' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT';\n            },\n            lastDay : function () {\n                return '[onte ' + ((this.hours() !== 1) ? 'á' : 'a') + '] LT';\n            },\n            lastWeek : function () {\n                return '[o] dddd [pasado ' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT';\n            },\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : function (str) {\n                if (str.indexOf('un') === 0) {\n                    return 'n' + str;\n                }\n                return 'en ' + str;\n            },\n            past : 'hai %s',\n            s : 'uns segundos',\n            ss : '%d segundos',\n            m : 'un minuto',\n            mm : '%d minutos',\n            h : 'unha hora',\n            hh : '%d horas',\n            d : 'un día',\n            dd : '%d días',\n            M : 'un mes',\n            MM : '%d meses',\n            y : 'un ano',\n            yy : '%d anos'\n        },\n        dayOfMonthOrdinalParse : /\\d{1,2}º/,\n        ordinal : '%dº',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return gl;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var format = {\n            's': ['thodde secondanim', 'thodde second'],\n            'ss': [number + ' secondanim', number + ' second'],\n            'm': ['eka mintan', 'ek minute'],\n            'mm': [number + ' mintanim', number + ' mintam'],\n            'h': ['eka voran', 'ek vor'],\n            'hh': [number + ' voranim', number + ' voram'],\n            'd': ['eka disan', 'ek dis'],\n            'dd': [number + ' disanim', number + ' dis'],\n            'M': ['eka mhoinean', 'ek mhoino'],\n            'MM': [number + ' mhoineanim', number + ' mhoine'],\n            'y': ['eka vorsan', 'ek voros'],\n            'yy': [number + ' vorsanim', number + ' vorsam']\n        };\n        return withoutSuffix ? format[key][0] : format[key][1];\n    }\n\n    var gomLatn = moment.defineLocale('gom-latn', {\n        months : 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split('_'),\n        monthsShort : 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split('_'),\n        monthsParseExact : true,\n        weekdays : 'Aitar_Somar_Mongllar_Budvar_Brestar_Sukrar_Son\\'var'.split('_'),\n        weekdaysShort : 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'),\n        weekdaysMin : 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'A h:mm [vazta]',\n            LTS : 'A h:mm:ss [vazta]',\n            L : 'DD-MM-YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY A h:mm [vazta]',\n            LLLL : 'dddd, MMMM[achea] Do, YYYY, A h:mm [vazta]',\n            llll: 'ddd, D MMM YYYY, A h:mm [vazta]'\n        },\n        calendar : {\n            sameDay: '[Aiz] LT',\n            nextDay: '[Faleam] LT',\n            nextWeek: '[Ieta to] dddd[,] LT',\n            lastDay: '[Kal] LT',\n            lastWeek: '[Fatlo] dddd[,] LT',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : '%s',\n            past : '%s adim',\n            s : processRelativeTime,\n            ss : processRelativeTime,\n            m : processRelativeTime,\n            mm : processRelativeTime,\n            h : processRelativeTime,\n            hh : processRelativeTime,\n            d : processRelativeTime,\n            dd : processRelativeTime,\n            M : processRelativeTime,\n            MM : processRelativeTime,\n            y : processRelativeTime,\n            yy : processRelativeTime\n        },\n        dayOfMonthOrdinalParse : /\\d{1,2}(er)/,\n        ordinal : function (number, period) {\n            switch (period) {\n                // the ordinal 'er' only applies to day of the month\n                case 'D':\n                    return number + 'er';\n                default:\n                case 'M':\n                case 'Q':\n                case 'DDD':\n                case 'd':\n                case 'w':\n                case 'W':\n                    return number;\n            }\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        },\n        meridiemParse: /rati|sokalli|donparam|sanje/,\n        meridiemHour : function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'rati') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'sokalli') {\n                return hour;\n            } else if (meridiem === 'donparam') {\n                return hour > 12 ? hour : hour + 12;\n            } else if (meridiem === 'sanje') {\n                return hour + 12;\n            }\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'rati';\n            } else if (hour < 12) {\n                return 'sokalli';\n            } else if (hour < 16) {\n                return 'donparam';\n            } else if (hour < 20) {\n                return 'sanje';\n            } else {\n                return 'rati';\n            }\n        }\n    });\n\n    return gomLatn;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var symbolMap = {\n            '1': '૧',\n            '2': '૨',\n            '3': '૩',\n            '4': '૪',\n            '5': '૫',\n            '6': '૬',\n            '7': '૭',\n            '8': '૮',\n            '9': '૯',\n            '0': '૦'\n        },\n        numberMap = {\n            '૧': '1',\n            '૨': '2',\n            '૩': '3',\n            '૪': '4',\n            '૫': '5',\n            '૬': '6',\n            '૭': '7',\n            '૮': '8',\n            '૯': '9',\n            '૦': '0'\n        };\n\n    var gu = moment.defineLocale('gu', {\n        months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split('_'),\n        monthsShort: 'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.'.split('_'),\n        monthsParseExact: true,\n        weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split('_'),\n        weekdaysShort: 'રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ'.split('_'),\n        weekdaysMin: 'ર_સો_મં_બુ_ગુ_શુ_શ'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm વાગ્યે',\n            LTS: 'A h:mm:ss વાગ્યે',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, A h:mm વાગ્યે',\n            LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે'\n        },\n        calendar: {\n            sameDay: '[આજ] LT',\n            nextDay: '[કાલે] LT',\n            nextWeek: 'dddd, LT',\n            lastDay: '[ગઇકાલે] LT',\n            lastWeek: '[પાછલા] dddd, LT',\n            sameElse: 'L'\n        },\n        relativeTime: {\n            future: '%s મા',\n            past: '%s પેહલા',\n            s: 'અમુક પળો',\n            ss: '%d સેકંડ',\n            m: 'એક મિનિટ',\n            mm: '%d મિનિટ',\n            h: 'એક કલાક',\n            hh: '%d કલાક',\n            d: 'એક દિવસ',\n            dd: '%d દિવસ',\n            M: 'એક મહિનો',\n            MM: '%d મહિનો',\n            y: 'એક વર્ષ',\n            yy: '%d વર્ષ'\n        },\n        preparse: function (string) {\n            return string.replace(/[૧૨૩૪૫૬૭૮૯૦]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        // Gujarati notation for meridiems are quite fuzzy in practice. While there exists\n        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Gujarati.\n        meridiemParse: /રાત|બપોર|સવાર|સાંજ/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'રાત') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'સવાર') {\n                return hour;\n            } else if (meridiem === 'બપોર') {\n                return hour >= 10 ? hour : hour + 12;\n            } else if (meridiem === 'સાંજ') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'રાત';\n            } else if (hour < 10) {\n                return 'સવાર';\n            } else if (hour < 17) {\n                return 'બપોર';\n            } else if (hour < 20) {\n                return 'સાંજ';\n            } else {\n                return 'રાત';\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6 // The week that contains Jan 6th is the first week of the year.\n        }\n    });\n\n    return gu;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var he = moment.defineLocale('he', {\n        months : 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split('_'),\n        monthsShort : 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split('_'),\n        weekdays : 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),\n        weekdaysShort : 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),\n        weekdaysMin : 'א_ב_ג_ד_ה_ו_ש'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D [ב]MMMM YYYY',\n            LLL : 'D [ב]MMMM YYYY HH:mm',\n            LLLL : 'dddd, D [ב]MMMM YYYY HH:mm',\n            l : 'D/M/YYYY',\n            ll : 'D MMM YYYY',\n            lll : 'D MMM YYYY HH:mm',\n            llll : 'ddd, D MMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay : '[היום ב־]LT',\n            nextDay : '[מחר ב־]LT',\n            nextWeek : 'dddd [בשעה] LT',\n            lastDay : '[אתמול ב־]LT',\n            lastWeek : '[ביום] dddd [האחרון בשעה] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'בעוד %s',\n            past : 'לפני %s',\n            s : 'מספר שניות',\n            ss : '%d שניות',\n            m : 'דקה',\n            mm : '%d דקות',\n            h : 'שעה',\n            hh : function (number) {\n                if (number === 2) {\n                    return 'שעתיים';\n                }\n                return number + ' שעות';\n            },\n            d : 'יום',\n            dd : function (number) {\n                if (number === 2) {\n                    return 'יומיים';\n                }\n                return number + ' ימים';\n            },\n            M : 'חודש',\n            MM : function (number) {\n                if (number === 2) {\n                    return 'חודשיים';\n                }\n                return number + ' חודשים';\n            },\n            y : 'שנה',\n            yy : function (number) {\n                if (number === 2) {\n                    return 'שנתיים';\n                } else if (number % 10 === 0 && number !== 10) {\n                    return number + ' שנה';\n                }\n                return number + ' שנים';\n            }\n        },\n        meridiemParse: /אחה\"צ|לפנה\"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,\n        isPM : function (input) {\n            return /^(אחה\"צ|אחרי הצהריים|בערב)$/.test(input);\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 5) {\n                return 'לפנות בוקר';\n            } else if (hour < 10) {\n                return 'בבוקר';\n            } else if (hour < 12) {\n                return isLower ? 'לפנה\"צ' : 'לפני הצהריים';\n            } else if (hour < 18) {\n                return isLower ? 'אחה\"צ' : 'אחרי הצהריים';\n            } else {\n                return 'בערב';\n            }\n        }\n    });\n\n    return he;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var symbolMap = {\n        '1': '१',\n        '2': '२',\n        '3': '३',\n        '4': '४',\n        '5': '५',\n        '6': '६',\n        '7': '७',\n        '8': '८',\n        '9': '९',\n        '0': '०'\n    },\n    numberMap = {\n        '१': '1',\n        '२': '2',\n        '३': '3',\n        '४': '4',\n        '५': '5',\n        '६': '6',\n        '७': '7',\n        '८': '8',\n        '९': '9',\n        '०': '0'\n    };\n\n    var hi = moment.defineLocale('hi', {\n        months : 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split('_'),\n        monthsShort : 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split('_'),\n        monthsParseExact: true,\n        weekdays : 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n        weekdaysShort : 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),\n        weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split('_'),\n        longDateFormat : {\n            LT : 'A h:mm बजे',\n            LTS : 'A h:mm:ss बजे',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY, A h:mm बजे',\n            LLLL : 'dddd, D MMMM YYYY, A h:mm बजे'\n        },\n        calendar : {\n            sameDay : '[आज] LT',\n            nextDay : '[कल] LT',\n            nextWeek : 'dddd, LT',\n            lastDay : '[कल] LT',\n            lastWeek : '[पिछले] dddd, LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s में',\n            past : '%s पहले',\n            s : 'कुछ ही क्षण',\n            ss : '%d सेकंड',\n            m : 'एक मिनट',\n            mm : '%d मिनट',\n            h : 'एक घंटा',\n            hh : '%d घंटे',\n            d : 'एक दिन',\n            dd : '%d दिन',\n            M : 'एक महीने',\n            MM : '%d महीने',\n            y : 'एक वर्ष',\n            yy : '%d वर्ष'\n        },\n        preparse: function (string) {\n            return string.replace(/[१२३४५६७८९०]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        // Hindi notation for meridiems are quite fuzzy in practice. While there exists\n        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.\n        meridiemParse: /रात|सुबह|दोपहर|शाम/,\n        meridiemHour : function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'रात') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'सुबह') {\n                return hour;\n            } else if (meridiem === 'दोपहर') {\n                return hour >= 10 ? hour : hour + 12;\n            } else if (meridiem === 'शाम') {\n                return hour + 12;\n            }\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'रात';\n            } else if (hour < 10) {\n                return 'सुबह';\n            } else if (hour < 17) {\n                return 'दोपहर';\n            } else if (hour < 20) {\n                return 'शाम';\n            } else {\n                return 'रात';\n            }\n        },\n        week : {\n            dow : 0, // Sunday is the first day of the week.\n            doy : 6  // The week that contains Jan 6th is the first week of the year.\n        }\n    });\n\n    return hi;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    function translate(number, withoutSuffix, key) {\n        var result = number + ' ';\n        switch (key) {\n            case 'ss':\n                if (number === 1) {\n                    result += 'sekunda';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'sekunde';\n                } else {\n                    result += 'sekundi';\n                }\n                return result;\n            case 'm':\n                return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n            case 'mm':\n                if (number === 1) {\n                    result += 'minuta';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'minute';\n                } else {\n                    result += 'minuta';\n                }\n                return result;\n            case 'h':\n                return withoutSuffix ? 'jedan sat' : 'jednog sata';\n            case 'hh':\n                if (number === 1) {\n                    result += 'sat';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'sata';\n                } else {\n                    result += 'sati';\n                }\n                return result;\n            case 'dd':\n                if (number === 1) {\n                    result += 'dan';\n                } else {\n                    result += 'dana';\n                }\n                return result;\n            case 'MM':\n                if (number === 1) {\n                    result += 'mjesec';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'mjeseca';\n                } else {\n                    result += 'mjeseci';\n                }\n                return result;\n            case 'yy':\n                if (number === 1) {\n                    result += 'godina';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'godine';\n                } else {\n                    result += 'godina';\n                }\n                return result;\n        }\n    }\n\n    var hr = moment.defineLocale('hr', {\n        months : {\n            format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split('_'),\n            standalone: 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split('_')\n        },\n        monthsShort : 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split('_'),\n        monthsParseExact: true,\n        weekdays : 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),\n        weekdaysShort : 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n        weekdaysMin : 'ne_po_ut_sr_če_pe_su'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'H:mm',\n            LTS : 'H:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D. MMMM YYYY',\n            LLL : 'D. MMMM YYYY H:mm',\n            LLLL : 'dddd, D. MMMM YYYY H:mm'\n        },\n        calendar : {\n            sameDay  : '[danas u] LT',\n            nextDay  : '[sutra u] LT',\n            nextWeek : function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[u] [nedjelju] [u] LT';\n                    case 3:\n                        return '[u] [srijedu] [u] LT';\n                    case 6:\n                        return '[u] [subotu] [u] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[u] dddd [u] LT';\n                }\n            },\n            lastDay  : '[jučer u] LT',\n            lastWeek : function () {\n                switch (this.day()) {\n                    case 0:\n                    case 3:\n                        return '[prošlu] dddd [u] LT';\n                    case 6:\n                        return '[prošle] [subote] [u] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[prošli] dddd [u] LT';\n                }\n            },\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'za %s',\n            past   : 'prije %s',\n            s      : 'par sekundi',\n            ss     : translate,\n            m      : translate,\n            mm     : translate,\n            h      : translate,\n            hh     : translate,\n            d      : 'dan',\n            dd     : translate,\n            M      : 'mjesec',\n            MM     : translate,\n            y      : 'godinu',\n            yy     : translate\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 7th is the first week of the year.\n        }\n    });\n\n    return hr;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' ');\n    function translate(number, withoutSuffix, key, isFuture) {\n        var num = number;\n        switch (key) {\n            case 's':\n                return (isFuture || withoutSuffix) ? 'néhány másodperc' : 'néhány másodperce';\n            case 'ss':\n                return num + (isFuture || withoutSuffix) ? ' másodperc' : ' másodperce';\n            case 'm':\n                return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');\n            case 'mm':\n                return num + (isFuture || withoutSuffix ? ' perc' : ' perce');\n            case 'h':\n                return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');\n            case 'hh':\n                return num + (isFuture || withoutSuffix ? ' óra' : ' órája');\n            case 'd':\n                return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');\n            case 'dd':\n                return num + (isFuture || withoutSuffix ? ' nap' : ' napja');\n            case 'M':\n                return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n            case 'MM':\n                return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n            case 'y':\n                return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');\n            case 'yy':\n                return num + (isFuture || withoutSuffix ? ' év' : ' éve');\n        }\n        return '';\n    }\n    function week(isFuture) {\n        return (isFuture ? '' : '[múlt] ') + '[' + weekEndings[this.day()] + '] LT[-kor]';\n    }\n\n    var hu = moment.defineLocale('hu', {\n        months : 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split('_'),\n        monthsShort : 'jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec'.split('_'),\n        weekdays : 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),\n        weekdaysShort : 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),\n        weekdaysMin : 'v_h_k_sze_cs_p_szo'.split('_'),\n        longDateFormat : {\n            LT : 'H:mm',\n            LTS : 'H:mm:ss',\n            L : 'YYYY.MM.DD.',\n            LL : 'YYYY. MMMM D.',\n            LLL : 'YYYY. MMMM D. H:mm',\n            LLLL : 'YYYY. MMMM D., dddd H:mm'\n        },\n        meridiemParse: /de|du/i,\n        isPM: function (input) {\n            return input.charAt(1).toLowerCase() === 'u';\n        },\n        meridiem : function (hours, minutes, isLower) {\n            if (hours < 12) {\n                return isLower === true ? 'de' : 'DE';\n            } else {\n                return isLower === true ? 'du' : 'DU';\n            }\n        },\n        calendar : {\n            sameDay : '[ma] LT[-kor]',\n            nextDay : '[holnap] LT[-kor]',\n            nextWeek : function () {\n                return week.call(this, true);\n            },\n            lastDay : '[tegnap] LT[-kor]',\n            lastWeek : function () {\n                return week.call(this, false);\n            },\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s múlva',\n            past : '%s',\n            s : translate,\n            ss : translate,\n            m : translate,\n            mm : translate,\n            h : translate,\n            hh : translate,\n            d : translate,\n            dd : translate,\n            M : translate,\n            MM : translate,\n            y : translate,\n            yy : translate\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return hu;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var hyAm = moment.defineLocale('hy-am', {\n        months : {\n            format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split('_'),\n            standalone: 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split('_')\n        },\n        monthsShort : 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),\n        weekdays : 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split('_'),\n        weekdaysShort : 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n        weekdaysMin : 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D MMMM YYYY թ.',\n            LLL : 'D MMMM YYYY թ., HH:mm',\n            LLLL : 'dddd, D MMMM YYYY թ., HH:mm'\n        },\n        calendar : {\n            sameDay: '[այսօր] LT',\n            nextDay: '[վաղը] LT',\n            lastDay: '[երեկ] LT',\n            nextWeek: function () {\n                return 'dddd [օրը ժամը] LT';\n            },\n            lastWeek: function () {\n                return '[անցած] dddd [օրը ժամը] LT';\n            },\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : '%s հետո',\n            past : '%s առաջ',\n            s : 'մի քանի վայրկյան',\n            ss : '%d վայրկյան',\n            m : 'րոպե',\n            mm : '%d րոպե',\n            h : 'ժամ',\n            hh : '%d ժամ',\n            d : 'օր',\n            dd : '%d օր',\n            M : 'ամիս',\n            MM : '%d ամիս',\n            y : 'տարի',\n            yy : '%d տարի'\n        },\n        meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,\n        isPM: function (input) {\n            return /^(ցերեկվա|երեկոյան)$/.test(input);\n        },\n        meridiem : function (hour) {\n            if (hour < 4) {\n                return 'գիշերվա';\n            } else if (hour < 12) {\n                return 'առավոտվա';\n            } else if (hour < 17) {\n                return 'ցերեկվա';\n            } else {\n                return 'երեկոյան';\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}|\\d{1,2}-(ին|րդ)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'DDD':\n                case 'w':\n                case 'W':\n                case 'DDDo':\n                    if (number === 1) {\n                        return number + '-ին';\n                    }\n                    return number + '-րդ';\n                default:\n                    return number;\n            }\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 7th is the first week of the year.\n        }\n    });\n\n    return hyAm;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var id = moment.defineLocale('id', {\n        months : 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split('_'),\n        monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'),\n        weekdays : 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),\n        weekdaysShort : 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),\n        weekdaysMin : 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),\n        longDateFormat : {\n            LT : 'HH.mm',\n            LTS : 'HH.mm.ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY [pukul] HH.mm',\n            LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'\n        },\n        meridiemParse: /pagi|siang|sore|malam/,\n        meridiemHour : function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'pagi') {\n                return hour;\n            } else if (meridiem === 'siang') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === 'sore' || meridiem === 'malam') {\n                return hour + 12;\n            }\n        },\n        meridiem : function (hours, minutes, isLower) {\n            if (hours < 11) {\n                return 'pagi';\n            } else if (hours < 15) {\n                return 'siang';\n            } else if (hours < 19) {\n                return 'sore';\n            } else {\n                return 'malam';\n            }\n        },\n        calendar : {\n            sameDay : '[Hari ini pukul] LT',\n            nextDay : '[Besok pukul] LT',\n            nextWeek : 'dddd [pukul] LT',\n            lastDay : '[Kemarin pukul] LT',\n            lastWeek : 'dddd [lalu pukul] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'dalam %s',\n            past : '%s yang lalu',\n            s : 'beberapa detik',\n            ss : '%d detik',\n            m : 'semenit',\n            mm : '%d menit',\n            h : 'sejam',\n            hh : '%d jam',\n            d : 'sehari',\n            dd : '%d hari',\n            M : 'sebulan',\n            MM : '%d bulan',\n            y : 'setahun',\n            yy : '%d tahun'\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 7th is the first week of the year.\n        }\n    });\n\n    return id;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    function plural(n) {\n        if (n % 100 === 11) {\n            return true;\n        } else if (n % 10 === 1) {\n            return false;\n        }\n        return true;\n    }\n    function translate(number, withoutSuffix, key, isFuture) {\n        var result = number + ' ';\n        switch (key) {\n            case 's':\n                return withoutSuffix || isFuture ? 'nokkrar sekúndur' : 'nokkrum sekúndum';\n            case 'ss':\n                if (plural(number)) {\n                    return result + (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum');\n                }\n                return result + 'sekúnda';\n            case 'm':\n                return withoutSuffix ? 'mínúta' : 'mínútu';\n            case 'mm':\n                if (plural(number)) {\n                    return result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum');\n                } else if (withoutSuffix) {\n                    return result + 'mínúta';\n                }\n                return result + 'mínútu';\n            case 'hh':\n                if (plural(number)) {\n                    return result + (withoutSuffix || isFuture ? 'klukkustundir' : 'klukkustundum');\n                }\n                return result + 'klukkustund';\n            case 'd':\n                if (withoutSuffix) {\n                    return 'dagur';\n                }\n                return isFuture ? 'dag' : 'degi';\n            case 'dd':\n                if (plural(number)) {\n                    if (withoutSuffix) {\n                        return result + 'dagar';\n                    }\n                    return result + (isFuture ? 'daga' : 'dögum');\n                } else if (withoutSuffix) {\n                    return result + 'dagur';\n                }\n                return result + (isFuture ? 'dag' : 'degi');\n            case 'M':\n                if (withoutSuffix) {\n                    return 'mánuður';\n                }\n                return isFuture ? 'mánuð' : 'mánuði';\n            case 'MM':\n                if (plural(number)) {\n                    if (withoutSuffix) {\n                        return result + 'mánuðir';\n                    }\n                    return result + (isFuture ? 'mánuði' : 'mánuðum');\n                } else if (withoutSuffix) {\n                    return result + 'mánuður';\n                }\n                return result + (isFuture ? 'mánuð' : 'mánuði');\n            case 'y':\n                return withoutSuffix || isFuture ? 'ár' : 'ári';\n            case 'yy':\n                if (plural(number)) {\n                    return result + (withoutSuffix || isFuture ? 'ár' : 'árum');\n                }\n                return result + (withoutSuffix || isFuture ? 'ár' : 'ári');\n        }\n    }\n\n    var is = moment.defineLocale('is', {\n        months : 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split('_'),\n        monthsShort : 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'),\n        weekdays : 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split('_'),\n        weekdaysShort : 'sun_mán_þri_mið_fim_fös_lau'.split('_'),\n        weekdaysMin : 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),\n        longDateFormat : {\n            LT : 'H:mm',\n            LTS : 'H:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D. MMMM YYYY',\n            LLL : 'D. MMMM YYYY [kl.] H:mm',\n            LLLL : 'dddd, D. MMMM YYYY [kl.] H:mm'\n        },\n        calendar : {\n            sameDay : '[í dag kl.] LT',\n            nextDay : '[á morgun kl.] LT',\n            nextWeek : 'dddd [kl.] LT',\n            lastDay : '[í gær kl.] LT',\n            lastWeek : '[síðasta] dddd [kl.] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'eftir %s',\n            past : 'fyrir %s síðan',\n            s : translate,\n            ss : translate,\n            m : translate,\n            mm : translate,\n            h : 'klukkustund',\n            hh : translate,\n            d : translate,\n            dd : translate,\n            M : translate,\n            MM : translate,\n            y : translate,\n            yy : translate\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return is;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var itCh = moment.defineLocale('it-ch', {\n        months : 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split('_'),\n        monthsShort : 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n        weekdays : 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split('_'),\n        weekdaysShort : 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n        weekdaysMin : 'do_lu_ma_me_gi_ve_sa'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay: '[Oggi alle] LT',\n            nextDay: '[Domani alle] LT',\n            nextWeek: 'dddd [alle] LT',\n            lastDay: '[Ieri alle] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[la scorsa] dddd [alle] LT';\n                    default:\n                        return '[lo scorso] dddd [alle] LT';\n                }\n            },\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : function (s) {\n                return ((/^[0-9].+$/).test(s) ? 'tra' : 'in') + ' ' + s;\n            },\n            past : '%s fa',\n            s : 'alcuni secondi',\n            ss : '%d secondi',\n            m : 'un minuto',\n            mm : '%d minuti',\n            h : 'un\\'ora',\n            hh : '%d ore',\n            d : 'un giorno',\n            dd : '%d giorni',\n            M : 'un mese',\n            MM : '%d mesi',\n            y : 'un anno',\n            yy : '%d anni'\n        },\n        dayOfMonthOrdinalParse : /\\d{1,2}º/,\n        ordinal: '%dº',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return itCh;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var it = moment.defineLocale('it', {\n        months : 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split('_'),\n        monthsShort : 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n        weekdays : 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split('_'),\n        weekdaysShort : 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n        weekdaysMin : 'do_lu_ma_me_gi_ve_sa'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay: '[Oggi alle] LT',\n            nextDay: '[Domani alle] LT',\n            nextWeek: 'dddd [alle] LT',\n            lastDay: '[Ieri alle] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[la scorsa] dddd [alle] LT';\n                    default:\n                        return '[lo scorso] dddd [alle] LT';\n                }\n            },\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : function (s) {\n                return ((/^[0-9].+$/).test(s) ? 'tra' : 'in') + ' ' + s;\n            },\n            past : '%s fa',\n            s : 'alcuni secondi',\n            ss : '%d secondi',\n            m : 'un minuto',\n            mm : '%d minuti',\n            h : 'un\\'ora',\n            hh : '%d ore',\n            d : 'un giorno',\n            dd : '%d giorni',\n            M : 'un mese',\n            MM : '%d mesi',\n            y : 'un anno',\n            yy : '%d anni'\n        },\n        dayOfMonthOrdinalParse : /\\d{1,2}º/,\n        ordinal: '%dº',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return it;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var ja = moment.defineLocale('ja', {\n        months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),\n        monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n        weekdays : '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),\n        weekdaysShort : '日_月_火_水_木_金_土'.split('_'),\n        weekdaysMin : '日_月_火_水_木_金_土'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'YYYY/MM/DD',\n            LL : 'YYYY年M月D日',\n            LLL : 'YYYY年M月D日 HH:mm',\n            LLLL : 'YYYY年M月D日 dddd HH:mm',\n            l : 'YYYY/MM/DD',\n            ll : 'YYYY年M月D日',\n            lll : 'YYYY年M月D日 HH:mm',\n            llll : 'YYYY年M月D日(ddd) HH:mm'\n        },\n        meridiemParse: /午前|午後/i,\n        isPM : function (input) {\n            return input === '午後';\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 12) {\n                return '午前';\n            } else {\n                return '午後';\n            }\n        },\n        calendar : {\n            sameDay : '[今日] LT',\n            nextDay : '[明日] LT',\n            nextWeek : function (now) {\n                if (now.week() < this.week()) {\n                    return '[来週]dddd LT';\n                } else {\n                    return 'dddd LT';\n                }\n            },\n            lastDay : '[昨日] LT',\n            lastWeek : function (now) {\n                if (this.week() < now.week()) {\n                    return '[先週]dddd LT';\n                } else {\n                    return 'dddd LT';\n                }\n            },\n            sameElse : 'L'\n        },\n        dayOfMonthOrdinalParse : /\\d{1,2}日/,\n        ordinal : function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'DDD':\n                    return number + '日';\n                default:\n                    return number;\n            }\n        },\n        relativeTime : {\n            future : '%s後',\n            past : '%s前',\n            s : '数秒',\n            ss : '%d秒',\n            m : '1分',\n            mm : '%d分',\n            h : '1時間',\n            hh : '%d時間',\n            d : '1日',\n            dd : '%d日',\n            M : '1ヶ月',\n            MM : '%dヶ月',\n            y : '1年',\n            yy : '%d年'\n        }\n    });\n\n    return ja;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var jv = moment.defineLocale('jv', {\n        months : 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split('_'),\n        monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),\n        weekdays : 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),\n        weekdaysShort : 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),\n        weekdaysMin : 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),\n        longDateFormat : {\n            LT : 'HH.mm',\n            LTS : 'HH.mm.ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY [pukul] HH.mm',\n            LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'\n        },\n        meridiemParse: /enjing|siyang|sonten|ndalu/,\n        meridiemHour : function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'enjing') {\n                return hour;\n            } else if (meridiem === 'siyang') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === 'sonten' || meridiem === 'ndalu') {\n                return hour + 12;\n            }\n        },\n        meridiem : function (hours, minutes, isLower) {\n            if (hours < 11) {\n                return 'enjing';\n            } else if (hours < 15) {\n                return 'siyang';\n            } else if (hours < 19) {\n                return 'sonten';\n            } else {\n                return 'ndalu';\n            }\n        },\n        calendar : {\n            sameDay : '[Dinten puniko pukul] LT',\n            nextDay : '[Mbenjang pukul] LT',\n            nextWeek : 'dddd [pukul] LT',\n            lastDay : '[Kala wingi pukul] LT',\n            lastWeek : 'dddd [kepengker pukul] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'wonten ing %s',\n            past : '%s ingkang kepengker',\n            s : 'sawetawis detik',\n            ss : '%d detik',\n            m : 'setunggal menit',\n            mm : '%d menit',\n            h : 'setunggal jam',\n            hh : '%d jam',\n            d : 'sedinten',\n            dd : '%d dinten',\n            M : 'sewulan',\n            MM : '%d wulan',\n            y : 'setaun',\n            yy : '%d taun'\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 7th is the first week of the year.\n        }\n    });\n\n    return jv;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var ka = moment.defineLocale('ka', {\n        months : {\n            standalone: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split('_'),\n            format: 'იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს'.split('_')\n        },\n        monthsShort : 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),\n        weekdays : {\n            standalone: 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split('_'),\n            format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split('_'),\n            isFormat: /(წინა|შემდეგ)/\n        },\n        weekdaysShort : 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),\n        weekdaysMin : 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),\n        longDateFormat : {\n            LT : 'h:mm A',\n            LTS : 'h:mm:ss A',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY h:mm A',\n            LLLL : 'dddd, D MMMM YYYY h:mm A'\n        },\n        calendar : {\n            sameDay : '[დღეს] LT[-ზე]',\n            nextDay : '[ხვალ] LT[-ზე]',\n            lastDay : '[გუშინ] LT[-ზე]',\n            nextWeek : '[შემდეგ] dddd LT[-ზე]',\n            lastWeek : '[წინა] dddd LT-ზე',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : function (s) {\n                return (/(წამი|წუთი|საათი|წელი)/).test(s) ?\n                    s.replace(/ი$/, 'ში') :\n                    s + 'ში';\n            },\n            past : function (s) {\n                if ((/(წამი|წუთი|საათი|დღე|თვე)/).test(s)) {\n                    return s.replace(/(ი|ე)$/, 'ის წინ');\n                }\n                if ((/წელი/).test(s)) {\n                    return s.replace(/წელი$/, 'წლის წინ');\n                }\n            },\n            s : 'რამდენიმე წამი',\n            ss : '%d წამი',\n            m : 'წუთი',\n            mm : '%d წუთი',\n            h : 'საათი',\n            hh : '%d საათი',\n            d : 'დღე',\n            dd : '%d დღე',\n            M : 'თვე',\n            MM : '%d თვე',\n            y : 'წელი',\n            yy : '%d წელი'\n        },\n        dayOfMonthOrdinalParse: /0|1-ლი|მე-\\d{1,2}|\\d{1,2}-ე/,\n        ordinal : function (number) {\n            if (number === 0) {\n                return number;\n            }\n            if (number === 1) {\n                return number + '-ლი';\n            }\n            if ((number < 20) || (number <= 100 && (number % 20 === 0)) || (number % 100 === 0)) {\n                return 'მე-' + number;\n            }\n            return number + '-ე';\n        },\n        week : {\n            dow : 1,\n            doy : 7\n        }\n    });\n\n    return ka;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var suffixes = {\n        0: '-ші',\n        1: '-ші',\n        2: '-ші',\n        3: '-ші',\n        4: '-ші',\n        5: '-ші',\n        6: '-шы',\n        7: '-ші',\n        8: '-ші',\n        9: '-шы',\n        10: '-шы',\n        20: '-шы',\n        30: '-шы',\n        40: '-шы',\n        50: '-ші',\n        60: '-шы',\n        70: '-ші',\n        80: '-ші',\n        90: '-шы',\n        100: '-ші'\n    };\n\n    var kk = moment.defineLocale('kk', {\n        months : 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split('_'),\n        monthsShort : 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),\n        weekdays : 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split('_'),\n        weekdaysShort : 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'),\n        weekdaysMin : 'жк_дй_сй_ср_бй_жм_сн'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd, D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay : '[Бүгін сағат] LT',\n            nextDay : '[Ертең сағат] LT',\n            nextWeek : 'dddd [сағат] LT',\n            lastDay : '[Кеше сағат] LT',\n            lastWeek : '[Өткен аптаның] dddd [сағат] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s ішінде',\n            past : '%s бұрын',\n            s : 'бірнеше секунд',\n            ss : '%d секунд',\n            m : 'бір минут',\n            mm : '%d минут',\n            h : 'бір сағат',\n            hh : '%d сағат',\n            d : 'бір күн',\n            dd : '%d күн',\n            M : 'бір ай',\n            MM : '%d ай',\n            y : 'бір жыл',\n            yy : '%d жыл'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(ші|шы)/,\n        ordinal : function (number) {\n            var a = number % 10,\n                b = number >= 100 ? 100 : null;\n            return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 7th is the first week of the year.\n        }\n    });\n\n    return kk;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var symbolMap = {\n        '1': '១',\n        '2': '២',\n        '3': '៣',\n        '4': '៤',\n        '5': '៥',\n        '6': '៦',\n        '7': '៧',\n        '8': '៨',\n        '9': '៩',\n        '0': '០'\n    }, numberMap = {\n        '១': '1',\n        '២': '2',\n        '៣': '3',\n        '៤': '4',\n        '៥': '5',\n        '៦': '6',\n        '៧': '7',\n        '៨': '8',\n        '៩': '9',\n        '០': '0'\n    };\n\n    var km = moment.defineLocale('km', {\n        months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n            '_'\n        ),\n        monthsShort: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n            '_'\n        ),\n        weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),\n        weekdaysShort: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n        weekdaysMin: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm'\n        },\n        meridiemParse: /ព្រឹក|ល្ងាច/,\n        isPM: function (input) {\n            return input === 'ល្ងាច';\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ព្រឹក';\n            } else {\n                return 'ល្ងាច';\n            }\n        },\n        calendar: {\n            sameDay: '[ថ្ងៃនេះ ម៉ោង] LT',\n            nextDay: '[ស្អែក ម៉ោង] LT',\n            nextWeek: 'dddd [ម៉ោង] LT',\n            lastDay: '[ម្សិលមិញ ម៉ោង] LT',\n            lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT',\n            sameElse: 'L'\n        },\n        relativeTime: {\n            future: '%sទៀត',\n            past: '%sមុន',\n            s: 'ប៉ុន្មានវិនាទី',\n            ss: '%d វិនាទី',\n            m: 'មួយនាទី',\n            mm: '%d នាទី',\n            h: 'មួយម៉ោង',\n            hh: '%d ម៉ោង',\n            d: 'មួយថ្ងៃ',\n            dd: '%d ថ្ងៃ',\n            M: 'មួយខែ',\n            MM: '%d ខែ',\n            y: 'មួយឆ្នាំ',\n            yy: '%d ឆ្នាំ'\n        },\n        dayOfMonthOrdinalParse : /ទី\\d{1,2}/,\n        ordinal : 'ទី%d',\n        preparse: function (string) {\n            return string.replace(/[១២៣៤៥៦៧៨៩០]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4 // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return km;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var symbolMap = {\n        '1': '೧',\n        '2': '೨',\n        '3': '೩',\n        '4': '೪',\n        '5': '೫',\n        '6': '೬',\n        '7': '೭',\n        '8': '೮',\n        '9': '೯',\n        '0': '೦'\n    },\n    numberMap = {\n        '೧': '1',\n        '೨': '2',\n        '೩': '3',\n        '೪': '4',\n        '೫': '5',\n        '೬': '6',\n        '೭': '7',\n        '೮': '8',\n        '೯': '9',\n        '೦': '0'\n    };\n\n    var kn = moment.defineLocale('kn', {\n        months : 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split('_'),\n        monthsShort : 'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ'.split('_'),\n        monthsParseExact: true,\n        weekdays : 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split('_'),\n        weekdaysShort : 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'),\n        weekdaysMin : 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.split('_'),\n        longDateFormat : {\n            LT : 'A h:mm',\n            LTS : 'A h:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY, A h:mm',\n            LLLL : 'dddd, D MMMM YYYY, A h:mm'\n        },\n        calendar : {\n            sameDay : '[ಇಂದು] LT',\n            nextDay : '[ನಾಳೆ] LT',\n            nextWeek : 'dddd, LT',\n            lastDay : '[ನಿನ್ನೆ] LT',\n            lastWeek : '[ಕೊನೆಯ] dddd, LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s ನಂತರ',\n            past : '%s ಹಿಂದೆ',\n            s : 'ಕೆಲವು ಕ್ಷಣಗಳು',\n            ss : '%d ಸೆಕೆಂಡುಗಳು',\n            m : 'ಒಂದು ನಿಮಿಷ',\n            mm : '%d ನಿಮಿಷ',\n            h : 'ಒಂದು ಗಂಟೆ',\n            hh : '%d ಗಂಟೆ',\n            d : 'ಒಂದು ದಿನ',\n            dd : '%d ದಿನ',\n            M : 'ಒಂದು ತಿಂಗಳು',\n            MM : '%d ತಿಂಗಳು',\n            y : 'ಒಂದು ವರ್ಷ',\n            yy : '%d ವರ್ಷ'\n        },\n        preparse: function (string) {\n            return string.replace(/[೧೨೩೪೫೬೭೮೯೦]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,\n        meridiemHour : function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'ರಾತ್ರಿ') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'ಬೆಳಿಗ್ಗೆ') {\n                return hour;\n            } else if (meridiem === 'ಮಧ್ಯಾಹ್ನ') {\n                return hour >= 10 ? hour : hour + 12;\n            } else if (meridiem === 'ಸಂಜೆ') {\n                return hour + 12;\n            }\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'ರಾತ್ರಿ';\n            } else if (hour < 10) {\n                return 'ಬೆಳಿಗ್ಗೆ';\n            } else if (hour < 17) {\n                return 'ಮಧ್ಯಾಹ್ನ';\n            } else if (hour < 20) {\n                return 'ಸಂಜೆ';\n            } else {\n                return 'ರಾತ್ರಿ';\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(ನೇ)/,\n        ordinal : function (number) {\n            return number + 'ನೇ';\n        },\n        week : {\n            dow : 0, // Sunday is the first day of the week.\n            doy : 6  // The week that contains Jan 6th is the first week of the year.\n        }\n    });\n\n    return kn;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var ko = moment.defineLocale('ko', {\n        months : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),\n        monthsShort : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),\n        weekdays : '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),\n        weekdaysShort : '일_월_화_수_목_금_토'.split('_'),\n        weekdaysMin : '일_월_화_수_목_금_토'.split('_'),\n        longDateFormat : {\n            LT : 'A h:mm',\n            LTS : 'A h:mm:ss',\n            L : 'YYYY.MM.DD.',\n            LL : 'YYYY년 MMMM D일',\n            LLL : 'YYYY년 MMMM D일 A h:mm',\n            LLLL : 'YYYY년 MMMM D일 dddd A h:mm',\n            l : 'YYYY.MM.DD.',\n            ll : 'YYYY년 MMMM D일',\n            lll : 'YYYY년 MMMM D일 A h:mm',\n            llll : 'YYYY년 MMMM D일 dddd A h:mm'\n        },\n        calendar : {\n            sameDay : '오늘 LT',\n            nextDay : '내일 LT',\n            nextWeek : 'dddd LT',\n            lastDay : '어제 LT',\n            lastWeek : '지난주 dddd LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s 후',\n            past : '%s 전',\n            s : '몇 초',\n            ss : '%d초',\n            m : '1분',\n            mm : '%d분',\n            h : '한 시간',\n            hh : '%d시간',\n            d : '하루',\n            dd : '%d일',\n            M : '한 달',\n            MM : '%d달',\n            y : '일 년',\n            yy : '%d년'\n        },\n        dayOfMonthOrdinalParse : /\\d{1,2}(일|월|주)/,\n        ordinal : function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'DDD':\n                    return number + '일';\n                case 'M':\n                    return number + '월';\n                case 'w':\n                case 'W':\n                    return number + '주';\n                default:\n                    return number;\n            }\n        },\n        meridiemParse : /오전|오후/,\n        isPM : function (token) {\n            return token === '오후';\n        },\n        meridiem : function (hour, minute, isUpper) {\n            return hour < 12 ? '오전' : '오후';\n        }\n    });\n\n    return ko;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var symbolMap = {\n        '1': '١',\n        '2': '٢',\n        '3': '٣',\n        '4': '٤',\n        '5': '٥',\n        '6': '٦',\n        '7': '٧',\n        '8': '٨',\n        '9': '٩',\n        '0': '٠'\n    }, numberMap = {\n        '١': '1',\n        '٢': '2',\n        '٣': '3',\n        '٤': '4',\n        '٥': '5',\n        '٦': '6',\n        '٧': '7',\n        '٨': '8',\n        '٩': '9',\n        '٠': '0'\n    },\n    months = [\n        'کانونی دووەم',\n        'شوبات',\n        'ئازار',\n        'نیسان',\n        'ئایار',\n        'حوزەیران',\n        'تەمموز',\n        'ئاب',\n        'ئەیلوول',\n        'تشرینی یەكەم',\n        'تشرینی دووەم',\n        'كانونی یەکەم'\n    ];\n\n\n    var ku = moment.defineLocale('ku', {\n        months : months,\n        monthsShort : months,\n        weekdays : 'یه‌كشه‌ممه‌_دووشه‌ممه‌_سێشه‌ممه‌_چوارشه‌ممه‌_پێنجشه‌ممه‌_هه‌ینی_شه‌ممه‌'.split('_'),\n        weekdaysShort : 'یه‌كشه‌م_دووشه‌م_سێشه‌م_چوارشه‌م_پێنجشه‌م_هه‌ینی_شه‌ممه‌'.split('_'),\n        weekdaysMin : 'ی_د_س_چ_پ_ه_ش'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd, D MMMM YYYY HH:mm'\n        },\n        meridiemParse: /ئێواره‌|به‌یانی/,\n        isPM: function (input) {\n            return /ئێواره‌/.test(input);\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'به‌یانی';\n            } else {\n                return 'ئێواره‌';\n            }\n        },\n        calendar : {\n            sameDay : '[ئه‌مرۆ كاتژمێر] LT',\n            nextDay : '[به‌یانی كاتژمێر] LT',\n            nextWeek : 'dddd [كاتژمێر] LT',\n            lastDay : '[دوێنێ كاتژمێر] LT',\n            lastWeek : 'dddd [كاتژمێر] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'له‌ %s',\n            past : '%s',\n            s : 'چه‌ند چركه‌یه‌ك',\n            ss : 'چركه‌ %d',\n            m : 'یه‌ك خوله‌ك',\n            mm : '%d خوله‌ك',\n            h : 'یه‌ك كاتژمێر',\n            hh : '%d كاتژمێر',\n            d : 'یه‌ك ڕۆژ',\n            dd : '%d ڕۆژ',\n            M : 'یه‌ك مانگ',\n            MM : '%d مانگ',\n            y : 'یه‌ك ساڵ',\n            yy : '%d ساڵ'\n        },\n        preparse: function (string) {\n            return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n                return numberMap[match];\n            }).replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            }).replace(/,/g, '،');\n        },\n        week : {\n            dow : 6, // Saturday is the first day of the week.\n            doy : 12 // The week that contains Jan 12th is the first week of the year.\n        }\n    });\n\n    return ku;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var suffixes = {\n        0: '-чү',\n        1: '-чи',\n        2: '-чи',\n        3: '-чү',\n        4: '-чү',\n        5: '-чи',\n        6: '-чы',\n        7: '-чи',\n        8: '-чи',\n        9: '-чу',\n        10: '-чу',\n        20: '-чы',\n        30: '-чу',\n        40: '-чы',\n        50: '-чү',\n        60: '-чы',\n        70: '-чи',\n        80: '-чи',\n        90: '-чу',\n        100: '-чү'\n    };\n\n    var ky = moment.defineLocale('ky', {\n        months : 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_'),\n        monthsShort : 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split('_'),\n        weekdays : 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split('_'),\n        weekdaysShort : 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'),\n        weekdaysMin : 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd, D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay : '[Бүгүн саат] LT',\n            nextDay : '[Эртең саат] LT',\n            nextWeek : 'dddd [саат] LT',\n            lastDay : '[Кечээ саат] LT',\n            lastWeek : '[Өткөн аптанын] dddd [күнү] [саат] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s ичинде',\n            past : '%s мурун',\n            s : 'бирнече секунд',\n            ss : '%d секунд',\n            m : 'бир мүнөт',\n            mm : '%d мүнөт',\n            h : 'бир саат',\n            hh : '%d саат',\n            d : 'бир күн',\n            dd : '%d күн',\n            M : 'бир ай',\n            MM : '%d ай',\n            y : 'бир жыл',\n            yy : '%d жыл'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(чи|чы|чү|чу)/,\n        ordinal : function (number) {\n            var a = number % 10,\n                b = number >= 100 ? 100 : null;\n            return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 7th is the first week of the year.\n        }\n    });\n\n    return ky;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var format = {\n            'm': ['eng Minutt', 'enger Minutt'],\n            'h': ['eng Stonn', 'enger Stonn'],\n            'd': ['een Dag', 'engem Dag'],\n            'M': ['ee Mount', 'engem Mount'],\n            'y': ['ee Joer', 'engem Joer']\n        };\n        return withoutSuffix ? format[key][0] : format[key][1];\n    }\n    function processFutureTime(string) {\n        var number = string.substr(0, string.indexOf(' '));\n        if (eifelerRegelAppliesToNumber(number)) {\n            return 'a ' + string;\n        }\n        return 'an ' + string;\n    }\n    function processPastTime(string) {\n        var number = string.substr(0, string.indexOf(' '));\n        if (eifelerRegelAppliesToNumber(number)) {\n            return 'viru ' + string;\n        }\n        return 'virun ' + string;\n    }\n    /**\n     * Returns true if the word before the given number loses the '-n' ending.\n     * e.g. 'an 10 Deeg' but 'a 5 Deeg'\n     *\n     * @param number {integer}\n     * @returns {boolean}\n     */\n    function eifelerRegelAppliesToNumber(number) {\n        number = parseInt(number, 10);\n        if (isNaN(number)) {\n            return false;\n        }\n        if (number < 0) {\n            // Negative Number --> always true\n            return true;\n        } else if (number < 10) {\n            // Only 1 digit\n            if (4 <= number && number <= 7) {\n                return true;\n            }\n            return false;\n        } else if (number < 100) {\n            // 2 digits\n            var lastDigit = number % 10, firstDigit = number / 10;\n            if (lastDigit === 0) {\n                return eifelerRegelAppliesToNumber(firstDigit);\n            }\n            return eifelerRegelAppliesToNumber(lastDigit);\n        } else if (number < 10000) {\n            // 3 or 4 digits --> recursively check first digit\n            while (number >= 10) {\n                number = number / 10;\n            }\n            return eifelerRegelAppliesToNumber(number);\n        } else {\n            // Anything larger than 4 digits: recursively check first n-3 digits\n            number = number / 1000;\n            return eifelerRegelAppliesToNumber(number);\n        }\n    }\n\n    var lb = moment.defineLocale('lb', {\n        months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),\n        monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'),\n        monthsParseExact : true,\n        weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split('_'),\n        weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),\n        weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat: {\n            LT: 'H:mm [Auer]',\n            LTS: 'H:mm:ss [Auer]',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY H:mm [Auer]',\n            LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]'\n        },\n        calendar: {\n            sameDay: '[Haut um] LT',\n            sameElse: 'L',\n            nextDay: '[Muer um] LT',\n            nextWeek: 'dddd [um] LT',\n            lastDay: '[Gëschter um] LT',\n            lastWeek: function () {\n                // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule\n                switch (this.day()) {\n                    case 2:\n                    case 4:\n                        return '[Leschten] dddd [um] LT';\n                    default:\n                        return '[Leschte] dddd [um] LT';\n                }\n            }\n        },\n        relativeTime : {\n            future : processFutureTime,\n            past : processPastTime,\n            s : 'e puer Sekonnen',\n            ss : '%d Sekonnen',\n            m : processRelativeTime,\n            mm : '%d Minutten',\n            h : processRelativeTime,\n            hh : '%d Stonnen',\n            d : processRelativeTime,\n            dd : '%d Deeg',\n            M : processRelativeTime,\n            MM : '%d Méint',\n            y : processRelativeTime,\n            yy : '%d Joer'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return lb;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var lo = moment.defineLocale('lo', {\n        months : 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split('_'),\n        monthsShort : 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split('_'),\n        weekdays : 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n        weekdaysShort : 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n        weekdaysMin : 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'ວັນdddd D MMMM YYYY HH:mm'\n        },\n        meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/,\n        isPM: function (input) {\n            return input === 'ຕອນແລງ';\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ຕອນເຊົ້າ';\n            } else {\n                return 'ຕອນແລງ';\n            }\n        },\n        calendar : {\n            sameDay : '[ມື້ນີ້ເວລາ] LT',\n            nextDay : '[ມື້ອື່ນເວລາ] LT',\n            nextWeek : '[ວັນ]dddd[ໜ້າເວລາ] LT',\n            lastDay : '[ມື້ວານນີ້ເວລາ] LT',\n            lastWeek : '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'ອີກ %s',\n            past : '%sຜ່ານມາ',\n            s : 'ບໍ່ເທົ່າໃດວິນາທີ',\n            ss : '%d ວິນາທີ' ,\n            m : '1 ນາທີ',\n            mm : '%d ນາທີ',\n            h : '1 ຊົ່ວໂມງ',\n            hh : '%d ຊົ່ວໂມງ',\n            d : '1 ມື້',\n            dd : '%d ມື້',\n            M : '1 ເດືອນ',\n            MM : '%d ເດືອນ',\n            y : '1 ປີ',\n            yy : '%d ປີ'\n        },\n        dayOfMonthOrdinalParse: /(ທີ່)\\d{1,2}/,\n        ordinal : function (number) {\n            return 'ທີ່' + number;\n        }\n    });\n\n    return lo;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var units = {\n        'ss' : 'sekundė_sekundžių_sekundes',\n        'm' : 'minutė_minutės_minutę',\n        'mm': 'minutės_minučių_minutes',\n        'h' : 'valanda_valandos_valandą',\n        'hh': 'valandos_valandų_valandas',\n        'd' : 'diena_dienos_dieną',\n        'dd': 'dienos_dienų_dienas',\n        'M' : 'mėnuo_mėnesio_mėnesį',\n        'MM': 'mėnesiai_mėnesių_mėnesius',\n        'y' : 'metai_metų_metus',\n        'yy': 'metai_metų_metus'\n    };\n    function translateSeconds(number, withoutSuffix, key, isFuture) {\n        if (withoutSuffix) {\n            return 'kelios sekundės';\n        } else {\n            return isFuture ? 'kelių sekundžių' : 'kelias sekundes';\n        }\n    }\n    function translateSingular(number, withoutSuffix, key, isFuture) {\n        return withoutSuffix ? forms(key)[0] : (isFuture ? forms(key)[1] : forms(key)[2]);\n    }\n    function special(number) {\n        return number % 10 === 0 || (number > 10 && number < 20);\n    }\n    function forms(key) {\n        return units[key].split('_');\n    }\n    function translate(number, withoutSuffix, key, isFuture) {\n        var result = number + ' ';\n        if (number === 1) {\n            return result + translateSingular(number, withoutSuffix, key[0], isFuture);\n        } else if (withoutSuffix) {\n            return result + (special(number) ? forms(key)[1] : forms(key)[0]);\n        } else {\n            if (isFuture) {\n                return result + forms(key)[1];\n            } else {\n                return result + (special(number) ? forms(key)[1] : forms(key)[2]);\n            }\n        }\n    }\n    var lt = moment.defineLocale('lt', {\n        months : {\n            format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split('_'),\n            standalone: 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split('_'),\n            isFormat: /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?|MMMM?(\\[[^\\[\\]]*\\]|\\s)+D[oD]?/\n        },\n        monthsShort : 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),\n        weekdays : {\n            format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split('_'),\n            standalone: 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split('_'),\n            isFormat: /dddd HH:mm/\n        },\n        weekdaysShort : 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'),\n        weekdaysMin : 'S_P_A_T_K_Pn_Š'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'YYYY-MM-DD',\n            LL : 'YYYY [m.] MMMM D [d.]',\n            LLL : 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n            LLLL : 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',\n            l : 'YYYY-MM-DD',\n            ll : 'YYYY [m.] MMMM D [d.]',\n            lll : 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n            llll : 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]'\n        },\n        calendar : {\n            sameDay : '[Šiandien] LT',\n            nextDay : '[Rytoj] LT',\n            nextWeek : 'dddd LT',\n            lastDay : '[Vakar] LT',\n            lastWeek : '[Praėjusį] dddd LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'po %s',\n            past : 'prieš %s',\n            s : translateSeconds,\n            ss : translate,\n            m : translateSingular,\n            mm : translate,\n            h : translateSingular,\n            hh : translate,\n            d : translateSingular,\n            dd : translate,\n            M : translateSingular,\n            MM : translate,\n            y : translateSingular,\n            yy : translate\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-oji/,\n        ordinal : function (number) {\n            return number + '-oji';\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return lt;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var units = {\n        'ss': 'sekundes_sekundēm_sekunde_sekundes'.split('_'),\n        'm': 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n        'mm': 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n        'h': 'stundas_stundām_stunda_stundas'.split('_'),\n        'hh': 'stundas_stundām_stunda_stundas'.split('_'),\n        'd': 'dienas_dienām_diena_dienas'.split('_'),\n        'dd': 'dienas_dienām_diena_dienas'.split('_'),\n        'M': 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n        'MM': 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n        'y': 'gada_gadiem_gads_gadi'.split('_'),\n        'yy': 'gada_gadiem_gads_gadi'.split('_')\n    };\n    /**\n     * @param withoutSuffix boolean true = a length of time; false = before/after a period of time.\n     */\n    function format(forms, number, withoutSuffix) {\n        if (withoutSuffix) {\n            // E.g. \"21 minūte\", \"3 minūtes\".\n            return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3];\n        } else {\n            // E.g. \"21 minūtes\" as in \"pēc 21 minūtes\".\n            // E.g. \"3 minūtēm\" as in \"pēc 3 minūtēm\".\n            return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1];\n        }\n    }\n    function relativeTimeWithPlural(number, withoutSuffix, key) {\n        return number + ' ' + format(units[key], number, withoutSuffix);\n    }\n    function relativeTimeWithSingular(number, withoutSuffix, key) {\n        return format(units[key], number, withoutSuffix);\n    }\n    function relativeSeconds(number, withoutSuffix) {\n        return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm';\n    }\n\n    var lv = moment.defineLocale('lv', {\n        months : 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split('_'),\n        monthsShort : 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'),\n        weekdays : 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split('_'),\n        weekdaysShort : 'Sv_P_O_T_C_Pk_S'.split('_'),\n        weekdaysMin : 'Sv_P_O_T_C_Pk_S'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD.MM.YYYY.',\n            LL : 'YYYY. [gada] D. MMMM',\n            LLL : 'YYYY. [gada] D. MMMM, HH:mm',\n            LLLL : 'YYYY. [gada] D. MMMM, dddd, HH:mm'\n        },\n        calendar : {\n            sameDay : '[Šodien pulksten] LT',\n            nextDay : '[Rīt pulksten] LT',\n            nextWeek : 'dddd [pulksten] LT',\n            lastDay : '[Vakar pulksten] LT',\n            lastWeek : '[Pagājušā] dddd [pulksten] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'pēc %s',\n            past : 'pirms %s',\n            s : relativeSeconds,\n            ss : relativeTimeWithPlural,\n            m : relativeTimeWithSingular,\n            mm : relativeTimeWithPlural,\n            h : relativeTimeWithSingular,\n            hh : relativeTimeWithPlural,\n            d : relativeTimeWithSingular,\n            dd : relativeTimeWithPlural,\n            M : relativeTimeWithSingular,\n            MM : relativeTimeWithPlural,\n            y : relativeTimeWithSingular,\n            yy : relativeTimeWithPlural\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return lv;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var translator = {\n        words: { //Different grammatical cases\n            ss: ['sekund', 'sekunda', 'sekundi'],\n            m: ['jedan minut', 'jednog minuta'],\n            mm: ['minut', 'minuta', 'minuta'],\n            h: ['jedan sat', 'jednog sata'],\n            hh: ['sat', 'sata', 'sati'],\n            dd: ['dan', 'dana', 'dana'],\n            MM: ['mjesec', 'mjeseca', 'mjeseci'],\n            yy: ['godina', 'godine', 'godina']\n        },\n        correctGrammaticalCase: function (number, wordKey) {\n            return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]);\n        },\n        translate: function (number, withoutSuffix, key) {\n            var wordKey = translator.words[key];\n            if (key.length === 1) {\n                return withoutSuffix ? wordKey[0] : wordKey[1];\n            } else {\n                return number + ' ' + translator.correctGrammaticalCase(number, wordKey);\n            }\n        }\n    };\n\n    var me = moment.defineLocale('me', {\n        months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split('_'),\n        monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),\n        monthsParseExact : true,\n        weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),\n        weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS : 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY H:mm',\n            LLLL: 'dddd, D. MMMM YYYY H:mm'\n        },\n        calendar: {\n            sameDay: '[danas u] LT',\n            nextDay: '[sjutra u] LT',\n\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[u] [nedjelju] [u] LT';\n                    case 3:\n                        return '[u] [srijedu] [u] LT';\n                    case 6:\n                        return '[u] [subotu] [u] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[u] dddd [u] LT';\n                }\n            },\n            lastDay  : '[juče u] LT',\n            lastWeek : function () {\n                var lastWeekDays = [\n                    '[prošle] [nedjelje] [u] LT',\n                    '[prošlog] [ponedjeljka] [u] LT',\n                    '[prošlog] [utorka] [u] LT',\n                    '[prošle] [srijede] [u] LT',\n                    '[prošlog] [četvrtka] [u] LT',\n                    '[prošlog] [petka] [u] LT',\n                    '[prošle] [subote] [u] LT'\n                ];\n                return lastWeekDays[this.day()];\n            },\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'za %s',\n            past   : 'prije %s',\n            s      : 'nekoliko sekundi',\n            ss     : translator.translate,\n            m      : translator.translate,\n            mm     : translator.translate,\n            h      : translator.translate,\n            hh     : translator.translate,\n            d      : 'dan',\n            dd     : translator.translate,\n            M      : 'mjesec',\n            MM     : translator.translate,\n            y      : 'godinu',\n            yy     : translator.translate\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 7th is the first week of the year.\n        }\n    });\n\n    return me;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var mi = moment.defineLocale('mi', {\n        months: 'Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea'.split('_'),\n        monthsShort: 'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split('_'),\n        monthsRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n        monthsStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n        monthsShortRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n        monthsShortStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,2}/i,\n        weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'),\n        weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n        weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY [i] HH:mm',\n            LLLL: 'dddd, D MMMM YYYY [i] HH:mm'\n        },\n        calendar: {\n            sameDay: '[i teie mahana, i] LT',\n            nextDay: '[apopo i] LT',\n            nextWeek: 'dddd [i] LT',\n            lastDay: '[inanahi i] LT',\n            lastWeek: 'dddd [whakamutunga i] LT',\n            sameElse: 'L'\n        },\n        relativeTime: {\n            future: 'i roto i %s',\n            past: '%s i mua',\n            s: 'te hēkona ruarua',\n            ss: '%d hēkona',\n            m: 'he meneti',\n            mm: '%d meneti',\n            h: 'te haora',\n            hh: '%d haora',\n            d: 'he ra',\n            dd: '%d ra',\n            M: 'he marama',\n            MM: '%d marama',\n            y: 'he tau',\n            yy: '%d tau'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return mi;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var mk = moment.defineLocale('mk', {\n        months : 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split('_'),\n        monthsShort : 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),\n        weekdays : 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split('_'),\n        weekdaysShort : 'нед_пон_вто_сре_чет_пет_саб'.split('_'),\n        weekdaysMin : 'нe_пo_вт_ср_че_пе_сa'.split('_'),\n        longDateFormat : {\n            LT : 'H:mm',\n            LTS : 'H:mm:ss',\n            L : 'D.MM.YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY H:mm',\n            LLLL : 'dddd, D MMMM YYYY H:mm'\n        },\n        calendar : {\n            sameDay : '[Денес во] LT',\n            nextDay : '[Утре во] LT',\n            nextWeek : '[Во] dddd [во] LT',\n            lastDay : '[Вчера во] LT',\n            lastWeek : function () {\n                switch (this.day()) {\n                    case 0:\n                    case 3:\n                    case 6:\n                        return '[Изминатата] dddd [во] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[Изминатиот] dddd [во] LT';\n                }\n            },\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'после %s',\n            past : 'пред %s',\n            s : 'неколку секунди',\n            ss : '%d секунди',\n            m : 'минута',\n            mm : '%d минути',\n            h : 'час',\n            hh : '%d часа',\n            d : 'ден',\n            dd : '%d дена',\n            M : 'месец',\n            MM : '%d месеци',\n            y : 'година',\n            yy : '%d години'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n        ordinal : function (number) {\n            var lastDigit = number % 10,\n                last2Digits = number % 100;\n            if (number === 0) {\n                return number + '-ев';\n            } else if (last2Digits === 0) {\n                return number + '-ен';\n            } else if (last2Digits > 10 && last2Digits < 20) {\n                return number + '-ти';\n            } else if (lastDigit === 1) {\n                return number + '-ви';\n            } else if (lastDigit === 2) {\n                return number + '-ри';\n            } else if (lastDigit === 7 || lastDigit === 8) {\n                return number + '-ми';\n            } else {\n                return number + '-ти';\n            }\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 7th is the first week of the year.\n        }\n    });\n\n    return mk;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var ml = moment.defineLocale('ml', {\n        months : 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split('_'),\n        monthsShort : 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split('_'),\n        monthsParseExact : true,\n        weekdays : 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split('_'),\n        weekdaysShort : 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'),\n        weekdaysMin : 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'),\n        longDateFormat : {\n            LT : 'A h:mm -നു',\n            LTS : 'A h:mm:ss -നു',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY, A h:mm -നു',\n            LLLL : 'dddd, D MMMM YYYY, A h:mm -നു'\n        },\n        calendar : {\n            sameDay : '[ഇന്ന്] LT',\n            nextDay : '[നാളെ] LT',\n            nextWeek : 'dddd, LT',\n            lastDay : '[ഇന്നലെ] LT',\n            lastWeek : '[കഴിഞ്ഞ] dddd, LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s കഴിഞ്ഞ്',\n            past : '%s മുൻപ്',\n            s : 'അൽപ നിമിഷങ്ങൾ',\n            ss : '%d സെക്കൻഡ്',\n            m : 'ഒരു മിനിറ്റ്',\n            mm : '%d മിനിറ്റ്',\n            h : 'ഒരു മണിക്കൂർ',\n            hh : '%d മണിക്കൂർ',\n            d : 'ഒരു ദിവസം',\n            dd : '%d ദിവസം',\n            M : 'ഒരു മാസം',\n            MM : '%d മാസം',\n            y : 'ഒരു വർഷം',\n            yy : '%d വർഷം'\n        },\n        meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,\n        meridiemHour : function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if ((meridiem === 'രാത്രി' && hour >= 4) ||\n                    meridiem === 'ഉച്ച കഴിഞ്ഞ്' ||\n                    meridiem === 'വൈകുന്നേരം') {\n                return hour + 12;\n            } else {\n                return hour;\n            }\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'രാത്രി';\n            } else if (hour < 12) {\n                return 'രാവിലെ';\n            } else if (hour < 17) {\n                return 'ഉച്ച കഴിഞ്ഞ്';\n            } else if (hour < 20) {\n                return 'വൈകുന്നേരം';\n            } else {\n                return 'രാത്രി';\n            }\n        }\n    });\n\n    return ml;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    function translate(number, withoutSuffix, key, isFuture) {\n        switch (key) {\n            case 's':\n                return withoutSuffix ? 'хэдхэн секунд' : 'хэдхэн секундын';\n            case 'ss':\n                return number + (withoutSuffix ? ' секунд' : ' секундын');\n            case 'm':\n            case 'mm':\n                return number + (withoutSuffix ? ' минут' : ' минутын');\n            case 'h':\n            case 'hh':\n                return number + (withoutSuffix ? ' цаг' : ' цагийн');\n            case 'd':\n            case 'dd':\n                return number + (withoutSuffix ? ' өдөр' : ' өдрийн');\n            case 'M':\n            case 'MM':\n                return number + (withoutSuffix ? ' сар' : ' сарын');\n            case 'y':\n            case 'yy':\n                return number + (withoutSuffix ? ' жил' : ' жилийн');\n            default:\n                return number;\n        }\n    }\n\n    var mn = moment.defineLocale('mn', {\n        months : 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split('_'),\n        monthsShort : '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split('_'),\n        monthsParseExact : true,\n        weekdays : 'Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба'.split('_'),\n        weekdaysShort : 'Ням_Дав_Мяг_Лха_Пүр_Баа_Бям'.split('_'),\n        weekdaysMin : 'Ня_Да_Мя_Лх_Пү_Ба_Бя'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'YYYY-MM-DD',\n            LL : 'YYYY оны MMMMын D',\n            LLL : 'YYYY оны MMMMын D HH:mm',\n            LLLL : 'dddd, YYYY оны MMMMын D HH:mm'\n        },\n        meridiemParse: /ҮӨ|ҮХ/i,\n        isPM : function (input) {\n            return input === 'ҮХ';\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ҮӨ';\n            } else {\n                return 'ҮХ';\n            }\n        },\n        calendar : {\n            sameDay : '[Өнөөдөр] LT',\n            nextDay : '[Маргааш] LT',\n            nextWeek : '[Ирэх] dddd LT',\n            lastDay : '[Өчигдөр] LT',\n            lastWeek : '[Өнгөрсөн] dddd LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s дараа',\n            past : '%s өмнө',\n            s : translate,\n            ss : translate,\n            m : translate,\n            mm : translate,\n            h : translate,\n            hh : translate,\n            d : translate,\n            dd : translate,\n            M : translate,\n            MM : translate,\n            y : translate,\n            yy : translate\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2} өдөр/,\n        ordinal : function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'DDD':\n                    return number + ' өдөр';\n                default:\n                    return number;\n            }\n        }\n    });\n\n    return mn;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var symbolMap = {\n        '1': '१',\n        '2': '२',\n        '3': '३',\n        '4': '४',\n        '5': '५',\n        '6': '६',\n        '7': '७',\n        '8': '८',\n        '9': '९',\n        '0': '०'\n    },\n    numberMap = {\n        '१': '1',\n        '२': '2',\n        '३': '3',\n        '४': '4',\n        '५': '5',\n        '६': '6',\n        '७': '7',\n        '८': '8',\n        '९': '9',\n        '०': '0'\n    };\n\n    function relativeTimeMr(number, withoutSuffix, string, isFuture)\n    {\n        var output = '';\n        if (withoutSuffix) {\n            switch (string) {\n                case 's': output = 'काही सेकंद'; break;\n                case 'ss': output = '%d सेकंद'; break;\n                case 'm': output = 'एक मिनिट'; break;\n                case 'mm': output = '%d मिनिटे'; break;\n                case 'h': output = 'एक तास'; break;\n                case 'hh': output = '%d तास'; break;\n                case 'd': output = 'एक दिवस'; break;\n                case 'dd': output = '%d दिवस'; break;\n                case 'M': output = 'एक महिना'; break;\n                case 'MM': output = '%d महिने'; break;\n                case 'y': output = 'एक वर्ष'; break;\n                case 'yy': output = '%d वर्षे'; break;\n            }\n        }\n        else {\n            switch (string) {\n                case 's': output = 'काही सेकंदां'; break;\n                case 'ss': output = '%d सेकंदां'; break;\n                case 'm': output = 'एका मिनिटा'; break;\n                case 'mm': output = '%d मिनिटां'; break;\n                case 'h': output = 'एका तासा'; break;\n                case 'hh': output = '%d तासां'; break;\n                case 'd': output = 'एका दिवसा'; break;\n                case 'dd': output = '%d दिवसां'; break;\n                case 'M': output = 'एका महिन्या'; break;\n                case 'MM': output = '%d महिन्यां'; break;\n                case 'y': output = 'एका वर्षा'; break;\n                case 'yy': output = '%d वर्षां'; break;\n            }\n        }\n        return output.replace(/%d/i, number);\n    }\n\n    var mr = moment.defineLocale('mr', {\n        months : 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split('_'),\n        monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split('_'),\n        monthsParseExact : true,\n        weekdays : 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n        weekdaysShort : 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'),\n        weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split('_'),\n        longDateFormat : {\n            LT : 'A h:mm वाजता',\n            LTS : 'A h:mm:ss वाजता',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY, A h:mm वाजता',\n            LLLL : 'dddd, D MMMM YYYY, A h:mm वाजता'\n        },\n        calendar : {\n            sameDay : '[आज] LT',\n            nextDay : '[उद्या] LT',\n            nextWeek : 'dddd, LT',\n            lastDay : '[काल] LT',\n            lastWeek: '[मागील] dddd, LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future: '%sमध्ये',\n            past: '%sपूर्वी',\n            s: relativeTimeMr,\n            ss: relativeTimeMr,\n            m: relativeTimeMr,\n            mm: relativeTimeMr,\n            h: relativeTimeMr,\n            hh: relativeTimeMr,\n            d: relativeTimeMr,\n            dd: relativeTimeMr,\n            M: relativeTimeMr,\n            MM: relativeTimeMr,\n            y: relativeTimeMr,\n            yy: relativeTimeMr\n        },\n        preparse: function (string) {\n            return string.replace(/[१२३४५६७८९०]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        meridiemParse: /रात्री|सकाळी|दुपारी|सायंकाळी/,\n        meridiemHour : function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'रात्री') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'सकाळी') {\n                return hour;\n            } else if (meridiem === 'दुपारी') {\n                return hour >= 10 ? hour : hour + 12;\n            } else if (meridiem === 'सायंकाळी') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'रात्री';\n            } else if (hour < 10) {\n                return 'सकाळी';\n            } else if (hour < 17) {\n                return 'दुपारी';\n            } else if (hour < 20) {\n                return 'सायंकाळी';\n            } else {\n                return 'रात्री';\n            }\n        },\n        week : {\n            dow : 0, // Sunday is the first day of the week.\n            doy : 6  // The week that contains Jan 6th is the first week of the year.\n        }\n    });\n\n    return mr;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var msMy = moment.defineLocale('ms-my', {\n        months : 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'),\n        monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n        weekdays : 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n        weekdaysShort : 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n        weekdaysMin : 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n        longDateFormat : {\n            LT : 'HH.mm',\n            LTS : 'HH.mm.ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY [pukul] HH.mm',\n            LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'\n        },\n        meridiemParse: /pagi|tengahari|petang|malam/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'pagi') {\n                return hour;\n            } else if (meridiem === 'tengahari') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === 'petang' || meridiem === 'malam') {\n                return hour + 12;\n            }\n        },\n        meridiem : function (hours, minutes, isLower) {\n            if (hours < 11) {\n                return 'pagi';\n            } else if (hours < 15) {\n                return 'tengahari';\n            } else if (hours < 19) {\n                return 'petang';\n            } else {\n                return 'malam';\n            }\n        },\n        calendar : {\n            sameDay : '[Hari ini pukul] LT',\n            nextDay : '[Esok pukul] LT',\n            nextWeek : 'dddd [pukul] LT',\n            lastDay : '[Kelmarin pukul] LT',\n            lastWeek : 'dddd [lepas pukul] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'dalam %s',\n            past : '%s yang lepas',\n            s : 'beberapa saat',\n            ss : '%d saat',\n            m : 'seminit',\n            mm : '%d minit',\n            h : 'sejam',\n            hh : '%d jam',\n            d : 'sehari',\n            dd : '%d hari',\n            M : 'sebulan',\n            MM : '%d bulan',\n            y : 'setahun',\n            yy : '%d tahun'\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 7th is the first week of the year.\n        }\n    });\n\n    return msMy;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var ms = moment.defineLocale('ms', {\n        months : 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'),\n        monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n        weekdays : 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n        weekdaysShort : 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n        weekdaysMin : 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n        longDateFormat : {\n            LT : 'HH.mm',\n            LTS : 'HH.mm.ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY [pukul] HH.mm',\n            LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'\n        },\n        meridiemParse: /pagi|tengahari|petang|malam/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'pagi') {\n                return hour;\n            } else if (meridiem === 'tengahari') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === 'petang' || meridiem === 'malam') {\n                return hour + 12;\n            }\n        },\n        meridiem : function (hours, minutes, isLower) {\n            if (hours < 11) {\n                return 'pagi';\n            } else if (hours < 15) {\n                return 'tengahari';\n            } else if (hours < 19) {\n                return 'petang';\n            } else {\n                return 'malam';\n            }\n        },\n        calendar : {\n            sameDay : '[Hari ini pukul] LT',\n            nextDay : '[Esok pukul] LT',\n            nextWeek : 'dddd [pukul] LT',\n            lastDay : '[Kelmarin pukul] LT',\n            lastWeek : 'dddd [lepas pukul] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'dalam %s',\n            past : '%s yang lepas',\n            s : 'beberapa saat',\n            ss : '%d saat',\n            m : 'seminit',\n            mm : '%d minit',\n            h : 'sejam',\n            hh : '%d jam',\n            d : 'sehari',\n            dd : '%d hari',\n            M : 'sebulan',\n            MM : '%d bulan',\n            y : 'setahun',\n            yy : '%d tahun'\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 7th is the first week of the year.\n        }\n    });\n\n    return ms;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var mt = moment.defineLocale('mt', {\n        months : 'Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru'.split('_'),\n        monthsShort : 'Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ'.split('_'),\n        weekdays : 'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt'.split('_'),\n        weekdaysShort : 'Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib'.split('_'),\n        weekdaysMin : 'Ħa_Tn_Tl_Er_Ħa_Ġi_Si'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd, D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay : '[Illum fil-]LT',\n            nextDay : '[Għada fil-]LT',\n            nextWeek : 'dddd [fil-]LT',\n            lastDay : '[Il-bieraħ fil-]LT',\n            lastWeek : 'dddd [li għadda] [fil-]LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'f’ %s',\n            past : '%s ilu',\n            s : 'ftit sekondi',\n            ss : '%d sekondi',\n            m : 'minuta',\n            mm : '%d minuti',\n            h : 'siegħa',\n            hh : '%d siegħat',\n            d : 'ġurnata',\n            dd : '%d ġranet',\n            M : 'xahar',\n            MM : '%d xhur',\n            y : 'sena',\n            yy : '%d sni'\n        },\n        dayOfMonthOrdinalParse : /\\d{1,2}º/,\n        ordinal: '%dº',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return mt;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var symbolMap = {\n        '1': '၁',\n        '2': '၂',\n        '3': '၃',\n        '4': '၄',\n        '5': '၅',\n        '6': '၆',\n        '7': '၇',\n        '8': '၈',\n        '9': '၉',\n        '0': '၀'\n    }, numberMap = {\n        '၁': '1',\n        '၂': '2',\n        '၃': '3',\n        '၄': '4',\n        '၅': '5',\n        '၆': '6',\n        '၇': '7',\n        '၈': '8',\n        '၉': '9',\n        '၀': '0'\n    };\n\n    var my = moment.defineLocale('my', {\n        months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split('_'),\n        monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'),\n        weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split('_'),\n        weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n        weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm'\n        },\n        calendar: {\n            sameDay: '[ယနေ.] LT [မှာ]',\n            nextDay: '[မနက်ဖြန်] LT [မှာ]',\n            nextWeek: 'dddd LT [မှာ]',\n            lastDay: '[မနေ.က] LT [မှာ]',\n            lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]',\n            sameElse: 'L'\n        },\n        relativeTime: {\n            future: 'လာမည့် %s မှာ',\n            past: 'လွန်ခဲ့သော %s က',\n            s: 'စက္ကန်.အနည်းငယ်',\n            ss : '%d စက္ကန့်',\n            m: 'တစ်မိနစ်',\n            mm: '%d မိနစ်',\n            h: 'တစ်နာရီ',\n            hh: '%d နာရီ',\n            d: 'တစ်ရက်',\n            dd: '%d ရက်',\n            M: 'တစ်လ',\n            MM: '%d လ',\n            y: 'တစ်နှစ်',\n            yy: '%d နှစ်'\n        },\n        preparse: function (string) {\n            return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4 // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return my;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var nb = moment.defineLocale('nb', {\n        months : 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'),\n        monthsShort : 'jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),\n        monthsParseExact : true,\n        weekdays : 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n        weekdaysShort : 'sø._ma._ti._on._to._fr._lø.'.split('_'),\n        weekdaysMin : 'sø_ma_ti_on_to_fr_lø'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D. MMMM YYYY',\n            LLL : 'D. MMMM YYYY [kl.] HH:mm',\n            LLLL : 'dddd D. MMMM YYYY [kl.] HH:mm'\n        },\n        calendar : {\n            sameDay: '[i dag kl.] LT',\n            nextDay: '[i morgen kl.] LT',\n            nextWeek: 'dddd [kl.] LT',\n            lastDay: '[i går kl.] LT',\n            lastWeek: '[forrige] dddd [kl.] LT',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'om %s',\n            past : '%s siden',\n            s : 'noen sekunder',\n            ss : '%d sekunder',\n            m : 'ett minutt',\n            mm : '%d minutter',\n            h : 'en time',\n            hh : '%d timer',\n            d : 'en dag',\n            dd : '%d dager',\n            M : 'en måned',\n            MM : '%d måneder',\n            y : 'ett år',\n            yy : '%d år'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return nb;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var symbolMap = {\n        '1': '१',\n        '2': '२',\n        '3': '३',\n        '4': '४',\n        '5': '५',\n        '6': '६',\n        '7': '७',\n        '8': '८',\n        '9': '९',\n        '0': '०'\n    },\n    numberMap = {\n        '१': '1',\n        '२': '2',\n        '३': '3',\n        '४': '4',\n        '५': '5',\n        '६': '6',\n        '७': '7',\n        '८': '8',\n        '९': '9',\n        '०': '0'\n    };\n\n    var ne = moment.defineLocale('ne', {\n        months : 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split('_'),\n        monthsShort : 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split('_'),\n        monthsParseExact : true,\n        weekdays : 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split('_'),\n        weekdaysShort : 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'),\n        weekdaysMin : 'आ._सो._मं._बु._बि._शु._श.'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'Aको h:mm बजे',\n            LTS : 'Aको h:mm:ss बजे',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY, Aको h:mm बजे',\n            LLLL : 'dddd, D MMMM YYYY, Aको h:mm बजे'\n        },\n        preparse: function (string) {\n            return string.replace(/[१२३४५६७८९०]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        meridiemParse: /राति|बिहान|दिउँसो|साँझ/,\n        meridiemHour : function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'राति') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'बिहान') {\n                return hour;\n            } else if (meridiem === 'दिउँसो') {\n                return hour >= 10 ? hour : hour + 12;\n            } else if (meridiem === 'साँझ') {\n                return hour + 12;\n            }\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 3) {\n                return 'राति';\n            } else if (hour < 12) {\n                return 'बिहान';\n            } else if (hour < 16) {\n                return 'दिउँसो';\n            } else if (hour < 20) {\n                return 'साँझ';\n            } else {\n                return 'राति';\n            }\n        },\n        calendar : {\n            sameDay : '[आज] LT',\n            nextDay : '[भोलि] LT',\n            nextWeek : '[आउँदो] dddd[,] LT',\n            lastDay : '[हिजो] LT',\n            lastWeek : '[गएको] dddd[,] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%sमा',\n            past : '%s अगाडि',\n            s : 'केही क्षण',\n            ss : '%d सेकेण्ड',\n            m : 'एक मिनेट',\n            mm : '%d मिनेट',\n            h : 'एक घण्टा',\n            hh : '%d घण्टा',\n            d : 'एक दिन',\n            dd : '%d दिन',\n            M : 'एक महिना',\n            MM : '%d महिना',\n            y : 'एक बर्ष',\n            yy : '%d बर्ष'\n        },\n        week : {\n            dow : 0, // Sunday is the first day of the week.\n            doy : 6  // The week that contains Jan 6th is the first week of the year.\n        }\n    });\n\n    return ne;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n        monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_');\n\n    var monthsParse = [/^jan/i, /^feb/i, /^maart|mrt.?$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, /^jul[i.]?$/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i];\n    var monthsRegex = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n    var nlBe = moment.defineLocale('nl-be', {\n        months : 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'),\n        monthsShort : function (m, format) {\n            if (!m) {\n                return monthsShortWithDots;\n            } else if (/-MMM-/.test(format)) {\n                return monthsShortWithoutDots[m.month()];\n            } else {\n                return monthsShortWithDots[m.month()];\n            }\n        },\n\n        monthsRegex: monthsRegex,\n        monthsShortRegex: monthsRegex,\n        monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n        monthsShortStrictRegex: /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n        monthsParse : monthsParse,\n        longMonthsParse : monthsParse,\n        shortMonthsParse : monthsParse,\n\n        weekdays : 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\n        weekdaysShort : 'zo._ma._di._wo._do._vr._za.'.split('_'),\n        weekdaysMin : 'zo_ma_di_wo_do_vr_za'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay: '[vandaag om] LT',\n            nextDay: '[morgen om] LT',\n            nextWeek: 'dddd [om] LT',\n            lastDay: '[gisteren om] LT',\n            lastWeek: '[afgelopen] dddd [om] LT',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'over %s',\n            past : '%s geleden',\n            s : 'een paar seconden',\n            ss : '%d seconden',\n            m : 'één minuut',\n            mm : '%d minuten',\n            h : 'één uur',\n            hh : '%d uur',\n            d : 'één dag',\n            dd : '%d dagen',\n            M : 'één maand',\n            MM : '%d maanden',\n            y : 'één jaar',\n            yy : '%d jaar'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n        ordinal : function (number) {\n            return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de');\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return nlBe;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n        monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_');\n\n    var monthsParse = [/^jan/i, /^feb/i, /^maart|mrt.?$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, /^jul[i.]?$/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i];\n    var monthsRegex = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n    var nl = moment.defineLocale('nl', {\n        months : 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'),\n        monthsShort : function (m, format) {\n            if (!m) {\n                return monthsShortWithDots;\n            } else if (/-MMM-/.test(format)) {\n                return monthsShortWithoutDots[m.month()];\n            } else {\n                return monthsShortWithDots[m.month()];\n            }\n        },\n\n        monthsRegex: monthsRegex,\n        monthsShortRegex: monthsRegex,\n        monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n        monthsShortStrictRegex: /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n        monthsParse : monthsParse,\n        longMonthsParse : monthsParse,\n        shortMonthsParse : monthsParse,\n\n        weekdays : 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\n        weekdaysShort : 'zo._ma._di._wo._do._vr._za.'.split('_'),\n        weekdaysMin : 'zo_ma_di_wo_do_vr_za'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD-MM-YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay: '[vandaag om] LT',\n            nextDay: '[morgen om] LT',\n            nextWeek: 'dddd [om] LT',\n            lastDay: '[gisteren om] LT',\n            lastWeek: '[afgelopen] dddd [om] LT',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'over %s',\n            past : '%s geleden',\n            s : 'een paar seconden',\n            ss : '%d seconden',\n            m : 'één minuut',\n            mm : '%d minuten',\n            h : 'één uur',\n            hh : '%d uur',\n            d : 'één dag',\n            dd : '%d dagen',\n            M : 'één maand',\n            MM : '%d maanden',\n            y : 'één jaar',\n            yy : '%d jaar'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n        ordinal : function (number) {\n            return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de');\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return nl;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var nn = moment.defineLocale('nn', {\n        months : 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'),\n        monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),\n        weekdays : 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),\n        weekdaysShort : 'sun_mån_tys_ons_tor_fre_lau'.split('_'),\n        weekdaysMin : 'su_må_ty_on_to_fr_lø'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D. MMMM YYYY',\n            LLL : 'D. MMMM YYYY [kl.] H:mm',\n            LLLL : 'dddd D. MMMM YYYY [kl.] HH:mm'\n        },\n        calendar : {\n            sameDay: '[I dag klokka] LT',\n            nextDay: '[I morgon klokka] LT',\n            nextWeek: 'dddd [klokka] LT',\n            lastDay: '[I går klokka] LT',\n            lastWeek: '[Føregåande] dddd [klokka] LT',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'om %s',\n            past : '%s sidan',\n            s : 'nokre sekund',\n            ss : '%d sekund',\n            m : 'eit minutt',\n            mm : '%d minutt',\n            h : 'ein time',\n            hh : '%d timar',\n            d : 'ein dag',\n            dd : '%d dagar',\n            M : 'ein månad',\n            MM : '%d månader',\n            y : 'eit år',\n            yy : '%d år'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return nn;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var symbolMap = {\n        '1': '੧',\n        '2': '੨',\n        '3': '੩',\n        '4': '੪',\n        '5': '੫',\n        '6': '੬',\n        '7': '੭',\n        '8': '੮',\n        '9': '੯',\n        '0': '੦'\n    },\n    numberMap = {\n        '੧': '1',\n        '੨': '2',\n        '੩': '3',\n        '੪': '4',\n        '੫': '5',\n        '੬': '6',\n        '੭': '7',\n        '੮': '8',\n        '੯': '9',\n        '੦': '0'\n    };\n\n    var paIn = moment.defineLocale('pa-in', {\n        // There are months name as per Nanakshahi Calendar but they are not used as rigidly in modern Punjabi.\n        months : 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split('_'),\n        monthsShort : 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split('_'),\n        weekdays : 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split('_'),\n        weekdaysShort : 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n        weekdaysMin : 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n        longDateFormat : {\n            LT : 'A h:mm ਵਜੇ',\n            LTS : 'A h:mm:ss ਵਜੇ',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY, A h:mm ਵਜੇ',\n            LLLL : 'dddd, D MMMM YYYY, A h:mm ਵਜੇ'\n        },\n        calendar : {\n            sameDay : '[ਅਜ] LT',\n            nextDay : '[ਕਲ] LT',\n            nextWeek : '[ਅਗਲਾ] dddd, LT',\n            lastDay : '[ਕਲ] LT',\n            lastWeek : '[ਪਿਛਲੇ] dddd, LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s ਵਿੱਚ',\n            past : '%s ਪਿਛਲੇ',\n            s : 'ਕੁਝ ਸਕਿੰਟ',\n            ss : '%d ਸਕਿੰਟ',\n            m : 'ਇਕ ਮਿੰਟ',\n            mm : '%d ਮਿੰਟ',\n            h : 'ਇੱਕ ਘੰਟਾ',\n            hh : '%d ਘੰਟੇ',\n            d : 'ਇੱਕ ਦਿਨ',\n            dd : '%d ਦਿਨ',\n            M : 'ਇੱਕ ਮਹੀਨਾ',\n            MM : '%d ਮਹੀਨੇ',\n            y : 'ਇੱਕ ਸਾਲ',\n            yy : '%d ਸਾਲ'\n        },\n        preparse: function (string) {\n            return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        // Punjabi notation for meridiems are quite fuzzy in practice. While there exists\n        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi.\n        meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,\n        meridiemHour : function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'ਰਾਤ') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'ਸਵੇਰ') {\n                return hour;\n            } else if (meridiem === 'ਦੁਪਹਿਰ') {\n                return hour >= 10 ? hour : hour + 12;\n            } else if (meridiem === 'ਸ਼ਾਮ') {\n                return hour + 12;\n            }\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'ਰਾਤ';\n            } else if (hour < 10) {\n                return 'ਸਵੇਰ';\n            } else if (hour < 17) {\n                return 'ਦੁਪਹਿਰ';\n            } else if (hour < 20) {\n                return 'ਸ਼ਾਮ';\n            } else {\n                return 'ਰਾਤ';\n            }\n        },\n        week : {\n            dow : 0, // Sunday is the first day of the week.\n            doy : 6  // The week that contains Jan 6th is the first week of the year.\n        }\n    });\n\n    return paIn;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split('_'),\n        monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split('_');\n    function plural(n) {\n        return (n % 10 < 5) && (n % 10 > 1) && ((~~(n / 10) % 10) !== 1);\n    }\n    function translate(number, withoutSuffix, key) {\n        var result = number + ' ';\n        switch (key) {\n            case 'ss':\n                return result + (plural(number) ? 'sekundy' : 'sekund');\n            case 'm':\n                return withoutSuffix ? 'minuta' : 'minutę';\n            case 'mm':\n                return result + (plural(number) ? 'minuty' : 'minut');\n            case 'h':\n                return withoutSuffix  ? 'godzina'  : 'godzinę';\n            case 'hh':\n                return result + (plural(number) ? 'godziny' : 'godzin');\n            case 'MM':\n                return result + (plural(number) ? 'miesiące' : 'miesięcy');\n            case 'yy':\n                return result + (plural(number) ? 'lata' : 'lat');\n        }\n    }\n\n    var pl = moment.defineLocale('pl', {\n        months : function (momentToFormat, format) {\n            if (!momentToFormat) {\n                return monthsNominative;\n            } else if (format === '') {\n                // Hack: if format empty we know this is used to generate\n                // RegExp by moment. Give then back both valid forms of months\n                // in RegExp ready format.\n                return '(' + monthsSubjective[momentToFormat.month()] + '|' + monthsNominative[momentToFormat.month()] + ')';\n            } else if (/D MMMM/.test(format)) {\n                return monthsSubjective[momentToFormat.month()];\n            } else {\n                return monthsNominative[momentToFormat.month()];\n            }\n        },\n        monthsShort : 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),\n        weekdays : 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split('_'),\n        weekdaysShort : 'ndz_pon_wt_śr_czw_pt_sob'.split('_'),\n        weekdaysMin : 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd, D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay: '[Dziś o] LT',\n            nextDay: '[Jutro o] LT',\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[W niedzielę o] LT';\n\n                    case 2:\n                        return '[We wtorek o] LT';\n\n                    case 3:\n                        return '[W środę o] LT';\n\n                    case 6:\n                        return '[W sobotę o] LT';\n\n                    default:\n                        return '[W] dddd [o] LT';\n                }\n            },\n            lastDay: '[Wczoraj o] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[W zeszłą niedzielę o] LT';\n                    case 3:\n                        return '[W zeszłą środę o] LT';\n                    case 6:\n                        return '[W zeszłą sobotę o] LT';\n                    default:\n                        return '[W zeszły] dddd [o] LT';\n                }\n            },\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'za %s',\n            past : '%s temu',\n            s : 'kilka sekund',\n            ss : translate,\n            m : translate,\n            mm : translate,\n            h : translate,\n            hh : translate,\n            d : '1 dzień',\n            dd : '%d dni',\n            M : 'miesiąc',\n            MM : translate,\n            y : 'rok',\n            yy : translate\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return pl;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var ptBr = moment.defineLocale('pt-br', {\n        months : 'Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro'.split('_'),\n        monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),\n        weekdays : 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split('_'),\n        weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),\n        weekdaysMin : 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D [de] MMMM [de] YYYY',\n            LLL : 'D [de] MMMM [de] YYYY [às] HH:mm',\n            LLLL : 'dddd, D [de] MMMM [de] YYYY [às] HH:mm'\n        },\n        calendar : {\n            sameDay: '[Hoje às] LT',\n            nextDay: '[Amanhã às] LT',\n            nextWeek: 'dddd [às] LT',\n            lastDay: '[Ontem às] LT',\n            lastWeek: function () {\n                return (this.day() === 0 || this.day() === 6) ?\n                    '[Último] dddd [às] LT' : // Saturday + Sunday\n                    '[Última] dddd [às] LT'; // Monday - Friday\n            },\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'em %s',\n            past : 'há %s',\n            s : 'poucos segundos',\n            ss : '%d segundos',\n            m : 'um minuto',\n            mm : '%d minutos',\n            h : 'uma hora',\n            hh : '%d horas',\n            d : 'um dia',\n            dd : '%d dias',\n            M : 'um mês',\n            MM : '%d meses',\n            y : 'um ano',\n            yy : '%d anos'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal : '%dº'\n    });\n\n    return ptBr;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var pt = moment.defineLocale('pt', {\n        months : 'Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro'.split('_'),\n        monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),\n        weekdays : 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split('_'),\n        weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),\n        weekdaysMin : 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D [de] MMMM [de] YYYY',\n            LLL : 'D [de] MMMM [de] YYYY HH:mm',\n            LLLL : 'dddd, D [de] MMMM [de] YYYY HH:mm'\n        },\n        calendar : {\n            sameDay: '[Hoje às] LT',\n            nextDay: '[Amanhã às] LT',\n            nextWeek: 'dddd [às] LT',\n            lastDay: '[Ontem às] LT',\n            lastWeek: function () {\n                return (this.day() === 0 || this.day() === 6) ?\n                    '[Último] dddd [às] LT' : // Saturday + Sunday\n                    '[Última] dddd [às] LT'; // Monday - Friday\n            },\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'em %s',\n            past : 'há %s',\n            s : 'segundos',\n            ss : '%d segundos',\n            m : 'um minuto',\n            mm : '%d minutos',\n            h : 'uma hora',\n            hh : '%d horas',\n            d : 'um dia',\n            dd : '%d dias',\n            M : 'um mês',\n            MM : '%d meses',\n            y : 'um ano',\n            yy : '%d anos'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal : '%dº',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return pt;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    function relativeTimeWithPlural(number, withoutSuffix, key) {\n        var format = {\n                'ss': 'secunde',\n                'mm': 'minute',\n                'hh': 'ore',\n                'dd': 'zile',\n                'MM': 'luni',\n                'yy': 'ani'\n            },\n            separator = ' ';\n        if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) {\n            separator = ' de ';\n        }\n        return number + separator + format[key];\n    }\n\n    var ro = moment.defineLocale('ro', {\n        months : 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split('_'),\n        monthsShort : 'ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split('_'),\n        monthsParseExact: true,\n        weekdays : 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),\n        weekdaysShort : 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),\n        weekdaysMin : 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),\n        longDateFormat : {\n            LT : 'H:mm',\n            LTS : 'H:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY H:mm',\n            LLLL : 'dddd, D MMMM YYYY H:mm'\n        },\n        calendar : {\n            sameDay: '[azi la] LT',\n            nextDay: '[mâine la] LT',\n            nextWeek: 'dddd [la] LT',\n            lastDay: '[ieri la] LT',\n            lastWeek: '[fosta] dddd [la] LT',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'peste %s',\n            past : '%s în urmă',\n            s : 'câteva secunde',\n            ss : relativeTimeWithPlural,\n            m : 'un minut',\n            mm : relativeTimeWithPlural,\n            h : 'o oră',\n            hh : relativeTimeWithPlural,\n            d : 'o zi',\n            dd : relativeTimeWithPlural,\n            M : 'o lună',\n            MM : relativeTimeWithPlural,\n            y : 'un an',\n            yy : relativeTimeWithPlural\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 7th is the first week of the year.\n        }\n    });\n\n    return ro;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    function plural(word, num) {\n        var forms = word.split('_');\n        return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]);\n    }\n    function relativeTimeWithPlural(number, withoutSuffix, key) {\n        var format = {\n            'ss': withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n            'mm': withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',\n            'hh': 'час_часа_часов',\n            'dd': 'день_дня_дней',\n            'MM': 'месяц_месяца_месяцев',\n            'yy': 'год_года_лет'\n        };\n        if (key === 'm') {\n            return withoutSuffix ? 'минута' : 'минуту';\n        }\n        else {\n            return number + ' ' + plural(format[key], +number);\n        }\n    }\n    var monthsParse = [/^янв/i, /^фев/i, /^мар/i, /^апр/i, /^ма[йя]/i, /^июн/i, /^июл/i, /^авг/i, /^сен/i, /^окт/i, /^ноя/i, /^дек/i];\n\n    // http://new.gramota.ru/spravka/rules/139-prop : § 103\n    // Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637\n    // CLDR data:          http://www.unicode.org/cldr/charts/28/summary/ru.html#1753\n    var ru = moment.defineLocale('ru', {\n        months : {\n            format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split('_'),\n            standalone: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_')\n        },\n        monthsShort : {\n            // по CLDR именно \"июл.\" и \"июн.\", но какой смысл менять букву на точку ?\n            format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split('_'),\n            standalone: 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split('_')\n        },\n        weekdays : {\n            standalone: 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split('_'),\n            format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split('_'),\n            isFormat: /\\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\\] ?dddd/\n        },\n        weekdaysShort : 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n        weekdaysMin : 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n        monthsParse : monthsParse,\n        longMonthsParse : monthsParse,\n        shortMonthsParse : monthsParse,\n\n        // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки\n        monthsRegex: /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n        // копия предыдущего\n        monthsShortRegex: /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n        // полные названия с падежами\n        monthsStrictRegex: /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,\n\n        // Выражение, которое соотвествует только сокращённым формам\n        monthsShortStrictRegex: /^(янв\\.|февр?\\.|мар[т.]|апр\\.|ма[яй]|июн[ья.]|июл[ья.]|авг\\.|сент?\\.|окт\\.|нояб?\\.|дек\\.)/i,\n        longDateFormat : {\n            LT : 'H:mm',\n            LTS : 'H:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D MMMM YYYY г.',\n            LLL : 'D MMMM YYYY г., H:mm',\n            LLLL : 'dddd, D MMMM YYYY г., H:mm'\n        },\n        calendar : {\n            sameDay: '[Сегодня, в] LT',\n            nextDay: '[Завтра, в] LT',\n            lastDay: '[Вчера, в] LT',\n            nextWeek: function (now) {\n                if (now.week() !== this.week()) {\n                    switch (this.day()) {\n                        case 0:\n                            return '[В следующее] dddd, [в] LT';\n                        case 1:\n                        case 2:\n                        case 4:\n                            return '[В следующий] dddd, [в] LT';\n                        case 3:\n                        case 5:\n                        case 6:\n                            return '[В следующую] dddd, [в] LT';\n                    }\n                } else {\n                    if (this.day() === 2) {\n                        return '[Во] dddd, [в] LT';\n                    } else {\n                        return '[В] dddd, [в] LT';\n                    }\n                }\n            },\n            lastWeek: function (now) {\n                if (now.week() !== this.week()) {\n                    switch (this.day()) {\n                        case 0:\n                            return '[В прошлое] dddd, [в] LT';\n                        case 1:\n                        case 2:\n                        case 4:\n                            return '[В прошлый] dddd, [в] LT';\n                        case 3:\n                        case 5:\n                        case 6:\n                            return '[В прошлую] dddd, [в] LT';\n                    }\n                } else {\n                    if (this.day() === 2) {\n                        return '[Во] dddd, [в] LT';\n                    } else {\n                        return '[В] dddd, [в] LT';\n                    }\n                }\n            },\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'через %s',\n            past : '%s назад',\n            s : 'несколько секунд',\n            ss : relativeTimeWithPlural,\n            m : relativeTimeWithPlural,\n            mm : relativeTimeWithPlural,\n            h : 'час',\n            hh : relativeTimeWithPlural,\n            d : 'день',\n            dd : relativeTimeWithPlural,\n            M : 'месяц',\n            MM : relativeTimeWithPlural,\n            y : 'год',\n            yy : relativeTimeWithPlural\n        },\n        meridiemParse: /ночи|утра|дня|вечера/i,\n        isPM : function (input) {\n            return /^(дня|вечера)$/.test(input);\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'ночи';\n            } else if (hour < 12) {\n                return 'утра';\n            } else if (hour < 17) {\n                return 'дня';\n            } else {\n                return 'вечера';\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(й|го|я)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'M':\n                case 'd':\n                case 'DDD':\n                    return number + '-й';\n                case 'D':\n                    return number + '-го';\n                case 'w':\n                case 'W':\n                    return number + '-я';\n                default:\n                    return number;\n            }\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return ru;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var months = [\n        'جنوري',\n        'فيبروري',\n        'مارچ',\n        'اپريل',\n        'مئي',\n        'جون',\n        'جولاءِ',\n        'آگسٽ',\n        'سيپٽمبر',\n        'آڪٽوبر',\n        'نومبر',\n        'ڊسمبر'\n    ];\n    var days = [\n        'آچر',\n        'سومر',\n        'اڱارو',\n        'اربع',\n        'خميس',\n        'جمع',\n        'ڇنڇر'\n    ];\n\n    var sd = moment.defineLocale('sd', {\n        months : months,\n        monthsShort : months,\n        weekdays : days,\n        weekdaysShort : days,\n        weekdaysMin : days,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd، D MMMM YYYY HH:mm'\n        },\n        meridiemParse: /صبح|شام/,\n        isPM : function (input) {\n            return 'شام' === input;\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'صبح';\n            }\n            return 'شام';\n        },\n        calendar : {\n            sameDay : '[اڄ] LT',\n            nextDay : '[سڀاڻي] LT',\n            nextWeek : 'dddd [اڳين هفتي تي] LT',\n            lastDay : '[ڪالهه] LT',\n            lastWeek : '[گزريل هفتي] dddd [تي] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s پوء',\n            past : '%s اڳ',\n            s : 'چند سيڪنڊ',\n            ss : '%d سيڪنڊ',\n            m : 'هڪ منٽ',\n            mm : '%d منٽ',\n            h : 'هڪ ڪلاڪ',\n            hh : '%d ڪلاڪ',\n            d : 'هڪ ڏينهن',\n            dd : '%d ڏينهن',\n            M : 'هڪ مهينو',\n            MM : '%d مهينا',\n            y : 'هڪ سال',\n            yy : '%d سال'\n        },\n        preparse: function (string) {\n            return string.replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string.replace(/,/g, '،');\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return sd;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var se = moment.defineLocale('se', {\n        months : 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split('_'),\n        monthsShort : 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split('_'),\n        weekdays : 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split('_'),\n        weekdaysShort : 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'),\n        weekdaysMin : 's_v_m_g_d_b_L'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'MMMM D. [b.] YYYY',\n            LLL : 'MMMM D. [b.] YYYY [ti.] HH:mm',\n            LLLL : 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm'\n        },\n        calendar : {\n            sameDay: '[otne ti] LT',\n            nextDay: '[ihttin ti] LT',\n            nextWeek: 'dddd [ti] LT',\n            lastDay: '[ikte ti] LT',\n            lastWeek: '[ovddit] dddd [ti] LT',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : '%s geažes',\n            past : 'maŋit %s',\n            s : 'moadde sekunddat',\n            ss: '%d sekunddat',\n            m : 'okta minuhta',\n            mm : '%d minuhtat',\n            h : 'okta diimmu',\n            hh : '%d diimmut',\n            d : 'okta beaivi',\n            dd : '%d beaivvit',\n            M : 'okta mánnu',\n            MM : '%d mánut',\n            y : 'okta jahki',\n            yy : '%d jagit'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return se;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    /*jshint -W100*/\n    var si = moment.defineLocale('si', {\n        months : 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split('_'),\n        monthsShort : 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split('_'),\n        weekdays : 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split('_'),\n        weekdaysShort : 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'),\n        weekdaysMin : 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'a h:mm',\n            LTS : 'a h:mm:ss',\n            L : 'YYYY/MM/DD',\n            LL : 'YYYY MMMM D',\n            LLL : 'YYYY MMMM D, a h:mm',\n            LLLL : 'YYYY MMMM D [වැනි] dddd, a h:mm:ss'\n        },\n        calendar : {\n            sameDay : '[අද] LT[ට]',\n            nextDay : '[හෙට] LT[ට]',\n            nextWeek : 'dddd LT[ට]',\n            lastDay : '[ඊයේ] LT[ට]',\n            lastWeek : '[පසුගිය] dddd LT[ට]',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%sකින්',\n            past : '%sකට පෙර',\n            s : 'තත්පර කිහිපය',\n            ss : 'තත්පර %d',\n            m : 'මිනිත්තුව',\n            mm : 'මිනිත්තු %d',\n            h : 'පැය',\n            hh : 'පැය %d',\n            d : 'දිනය',\n            dd : 'දින %d',\n            M : 'මාසය',\n            MM : 'මාස %d',\n            y : 'වසර',\n            yy : 'වසර %d'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2} වැනි/,\n        ordinal : function (number) {\n            return number + ' වැනි';\n        },\n        meridiemParse : /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,\n        isPM : function (input) {\n            return input === 'ප.ව.' || input === 'පස් වරු';\n        },\n        meridiem : function (hours, minutes, isLower) {\n            if (hours > 11) {\n                return isLower ? 'ප.ව.' : 'පස් වරු';\n            } else {\n                return isLower ? 'පෙ.ව.' : 'පෙර වරු';\n            }\n        }\n    });\n\n    return si;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var months = 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split('_'),\n        monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');\n    function plural(n) {\n        return (n > 1) && (n < 5);\n    }\n    function translate(number, withoutSuffix, key, isFuture) {\n        var result = number + ' ';\n        switch (key) {\n            case 's':  // a few seconds / in a few seconds / a few seconds ago\n                return (withoutSuffix || isFuture) ? 'pár sekúnd' : 'pár sekundami';\n            case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'sekundy' : 'sekúnd');\n                } else {\n                    return result + 'sekundami';\n                }\n                break;\n            case 'm':  // a minute / in a minute / a minute ago\n                return withoutSuffix ? 'minúta' : (isFuture ? 'minútu' : 'minútou');\n            case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'minúty' : 'minút');\n                } else {\n                    return result + 'minútami';\n                }\n                break;\n            case 'h':  // an hour / in an hour / an hour ago\n                return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou');\n            case 'hh': // 9 hours / in 9 hours / 9 hours ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'hodiny' : 'hodín');\n                } else {\n                    return result + 'hodinami';\n                }\n                break;\n            case 'd':  // a day / in a day / a day ago\n                return (withoutSuffix || isFuture) ? 'deň' : 'dňom';\n            case 'dd': // 9 days / in 9 days / 9 days ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'dni' : 'dní');\n                } else {\n                    return result + 'dňami';\n                }\n                break;\n            case 'M':  // a month / in a month / a month ago\n                return (withoutSuffix || isFuture) ? 'mesiac' : 'mesiacom';\n            case 'MM': // 9 months / in 9 months / 9 months ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'mesiace' : 'mesiacov');\n                } else {\n                    return result + 'mesiacmi';\n                }\n                break;\n            case 'y':  // a year / in a year / a year ago\n                return (withoutSuffix || isFuture) ? 'rok' : 'rokom';\n            case 'yy': // 9 years / in 9 years / 9 years ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural(number) ? 'roky' : 'rokov');\n                } else {\n                    return result + 'rokmi';\n                }\n                break;\n        }\n    }\n\n    var sk = moment.defineLocale('sk', {\n        months : months,\n        monthsShort : monthsShort,\n        weekdays : 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),\n        weekdaysShort : 'ne_po_ut_st_št_pi_so'.split('_'),\n        weekdaysMin : 'ne_po_ut_st_št_pi_so'.split('_'),\n        longDateFormat : {\n            LT: 'H:mm',\n            LTS : 'H:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D. MMMM YYYY',\n            LLL : 'D. MMMM YYYY H:mm',\n            LLLL : 'dddd D. MMMM YYYY H:mm'\n        },\n        calendar : {\n            sameDay: '[dnes o] LT',\n            nextDay: '[zajtra o] LT',\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[v nedeľu o] LT';\n                    case 1:\n                    case 2:\n                        return '[v] dddd [o] LT';\n                    case 3:\n                        return '[v stredu o] LT';\n                    case 4:\n                        return '[vo štvrtok o] LT';\n                    case 5:\n                        return '[v piatok o] LT';\n                    case 6:\n                        return '[v sobotu o] LT';\n                }\n            },\n            lastDay: '[včera o] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[minulú nedeľu o] LT';\n                    case 1:\n                    case 2:\n                        return '[minulý] dddd [o] LT';\n                    case 3:\n                        return '[minulú stredu o] LT';\n                    case 4:\n                    case 5:\n                        return '[minulý] dddd [o] LT';\n                    case 6:\n                        return '[minulú sobotu o] LT';\n                }\n            },\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'za %s',\n            past : 'pred %s',\n            s : translate,\n            ss : translate,\n            m : translate,\n            mm : translate,\n            h : translate,\n            hh : translate,\n            d : translate,\n            dd : translate,\n            M : translate,\n            MM : translate,\n            y : translate,\n            yy : translate\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return sk;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var result = number + ' ';\n        switch (key) {\n            case 's':\n                return withoutSuffix || isFuture ? 'nekaj sekund' : 'nekaj sekundami';\n            case 'ss':\n                if (number === 1) {\n                    result += withoutSuffix ? 'sekundo' : 'sekundi';\n                } else if (number === 2) {\n                    result += withoutSuffix || isFuture ? 'sekundi' : 'sekundah';\n                } else if (number < 5) {\n                    result += withoutSuffix || isFuture ? 'sekunde' : 'sekundah';\n                } else {\n                    result += 'sekund';\n                }\n                return result;\n            case 'm':\n                return withoutSuffix ? 'ena minuta' : 'eno minuto';\n            case 'mm':\n                if (number === 1) {\n                    result += withoutSuffix ? 'minuta' : 'minuto';\n                } else if (number === 2) {\n                    result += withoutSuffix || isFuture ? 'minuti' : 'minutama';\n                } else if (number < 5) {\n                    result += withoutSuffix || isFuture ? 'minute' : 'minutami';\n                } else {\n                    result += withoutSuffix || isFuture ? 'minut' : 'minutami';\n                }\n                return result;\n            case 'h':\n                return withoutSuffix ? 'ena ura' : 'eno uro';\n            case 'hh':\n                if (number === 1) {\n                    result += withoutSuffix ? 'ura' : 'uro';\n                } else if (number === 2) {\n                    result += withoutSuffix || isFuture ? 'uri' : 'urama';\n                } else if (number < 5) {\n                    result += withoutSuffix || isFuture ? 'ure' : 'urami';\n                } else {\n                    result += withoutSuffix || isFuture ? 'ur' : 'urami';\n                }\n                return result;\n            case 'd':\n                return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';\n            case 'dd':\n                if (number === 1) {\n                    result += withoutSuffix || isFuture ? 'dan' : 'dnem';\n                } else if (number === 2) {\n                    result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';\n                } else {\n                    result += withoutSuffix || isFuture ? 'dni' : 'dnevi';\n                }\n                return result;\n            case 'M':\n                return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';\n            case 'MM':\n                if (number === 1) {\n                    result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';\n                } else if (number === 2) {\n                    result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';\n                } else if (number < 5) {\n                    result += withoutSuffix || isFuture ? 'mesece' : 'meseci';\n                } else {\n                    result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';\n                }\n                return result;\n            case 'y':\n                return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';\n            case 'yy':\n                if (number === 1) {\n                    result += withoutSuffix || isFuture ? 'leto' : 'letom';\n                } else if (number === 2) {\n                    result += withoutSuffix || isFuture ? 'leti' : 'letoma';\n                } else if (number < 5) {\n                    result += withoutSuffix || isFuture ? 'leta' : 'leti';\n                } else {\n                    result += withoutSuffix || isFuture ? 'let' : 'leti';\n                }\n                return result;\n        }\n    }\n\n    var sl = moment.defineLocale('sl', {\n        months : 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split('_'),\n        monthsShort : 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split('_'),\n        monthsParseExact: true,\n        weekdays : 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),\n        weekdaysShort : 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),\n        weekdaysMin : 'ne_po_to_sr_če_pe_so'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'H:mm',\n            LTS : 'H:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D. MMMM YYYY',\n            LLL : 'D. MMMM YYYY H:mm',\n            LLLL : 'dddd, D. MMMM YYYY H:mm'\n        },\n        calendar : {\n            sameDay  : '[danes ob] LT',\n            nextDay  : '[jutri ob] LT',\n\n            nextWeek : function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[v] [nedeljo] [ob] LT';\n                    case 3:\n                        return '[v] [sredo] [ob] LT';\n                    case 6:\n                        return '[v] [soboto] [ob] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[v] dddd [ob] LT';\n                }\n            },\n            lastDay  : '[včeraj ob] LT',\n            lastWeek : function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[prejšnjo] [nedeljo] [ob] LT';\n                    case 3:\n                        return '[prejšnjo] [sredo] [ob] LT';\n                    case 6:\n                        return '[prejšnjo] [soboto] [ob] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[prejšnji] dddd [ob] LT';\n                }\n            },\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'čez %s',\n            past   : 'pred %s',\n            s      : processRelativeTime,\n            ss     : processRelativeTime,\n            m      : processRelativeTime,\n            mm     : processRelativeTime,\n            h      : processRelativeTime,\n            hh     : processRelativeTime,\n            d      : processRelativeTime,\n            dd     : processRelativeTime,\n            M      : processRelativeTime,\n            MM     : processRelativeTime,\n            y      : processRelativeTime,\n            yy     : processRelativeTime\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 7th is the first week of the year.\n        }\n    });\n\n    return sl;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var sq = moment.defineLocale('sq', {\n        months : 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split('_'),\n        monthsShort : 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),\n        weekdays : 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split('_'),\n        weekdaysShort : 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),\n        weekdaysMin : 'D_H_Ma_Më_E_P_Sh'.split('_'),\n        weekdaysParseExact : true,\n        meridiemParse: /PD|MD/,\n        isPM: function (input) {\n            return input.charAt(0) === 'M';\n        },\n        meridiem : function (hours, minutes, isLower) {\n            return hours < 12 ? 'PD' : 'MD';\n        },\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd, D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay : '[Sot në] LT',\n            nextDay : '[Nesër në] LT',\n            nextWeek : 'dddd [në] LT',\n            lastDay : '[Dje në] LT',\n            lastWeek : 'dddd [e kaluar në] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'në %s',\n            past : '%s më parë',\n            s : 'disa sekonda',\n            ss : '%d sekonda',\n            m : 'një minutë',\n            mm : '%d minuta',\n            h : 'një orë',\n            hh : '%d orë',\n            d : 'një ditë',\n            dd : '%d ditë',\n            M : 'një muaj',\n            MM : '%d muaj',\n            y : 'një vit',\n            yy : '%d vite'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return sq;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var translator = {\n        words: { //Different grammatical cases\n            ss: ['секунда', 'секунде', 'секунди'],\n            m: ['један минут', 'једне минуте'],\n            mm: ['минут', 'минуте', 'минута'],\n            h: ['један сат', 'једног сата'],\n            hh: ['сат', 'сата', 'сати'],\n            dd: ['дан', 'дана', 'дана'],\n            MM: ['месец', 'месеца', 'месеци'],\n            yy: ['година', 'године', 'година']\n        },\n        correctGrammaticalCase: function (number, wordKey) {\n            return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]);\n        },\n        translate: function (number, withoutSuffix, key) {\n            var wordKey = translator.words[key];\n            if (key.length === 1) {\n                return withoutSuffix ? wordKey[0] : wordKey[1];\n            } else {\n                return number + ' ' + translator.correctGrammaticalCase(number, wordKey);\n            }\n        }\n    };\n\n    var srCyrl = moment.defineLocale('sr-cyrl', {\n        months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split('_'),\n        monthsShort: 'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split('_'),\n        monthsParseExact: true,\n        weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'),\n        weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'),\n        weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS : 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY H:mm',\n            LLLL: 'dddd, D. MMMM YYYY H:mm'\n        },\n        calendar: {\n            sameDay: '[данас у] LT',\n            nextDay: '[сутра у] LT',\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[у] [недељу] [у] LT';\n                    case 3:\n                        return '[у] [среду] [у] LT';\n                    case 6:\n                        return '[у] [суботу] [у] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[у] dddd [у] LT';\n                }\n            },\n            lastDay  : '[јуче у] LT',\n            lastWeek : function () {\n                var lastWeekDays = [\n                    '[прошле] [недеље] [у] LT',\n                    '[прошлог] [понедељка] [у] LT',\n                    '[прошлог] [уторка] [у] LT',\n                    '[прошле] [среде] [у] LT',\n                    '[прошлог] [четвртка] [у] LT',\n                    '[прошлог] [петка] [у] LT',\n                    '[прошле] [суботе] [у] LT'\n                ];\n                return lastWeekDays[this.day()];\n            },\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'за %s',\n            past   : 'пре %s',\n            s      : 'неколико секунди',\n            ss     : translator.translate,\n            m      : translator.translate,\n            mm     : translator.translate,\n            h      : translator.translate,\n            hh     : translator.translate,\n            d      : 'дан',\n            dd     : translator.translate,\n            M      : 'месец',\n            MM     : translator.translate,\n            y      : 'годину',\n            yy     : translator.translate\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 7th is the first week of the year.\n        }\n    });\n\n    return srCyrl;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var translator = {\n        words: { //Different grammatical cases\n            ss: ['sekunda', 'sekunde', 'sekundi'],\n            m: ['jedan minut', 'jedne minute'],\n            mm: ['minut', 'minute', 'minuta'],\n            h: ['jedan sat', 'jednog sata'],\n            hh: ['sat', 'sata', 'sati'],\n            dd: ['dan', 'dana', 'dana'],\n            MM: ['mesec', 'meseca', 'meseci'],\n            yy: ['godina', 'godine', 'godina']\n        },\n        correctGrammaticalCase: function (number, wordKey) {\n            return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]);\n        },\n        translate: function (number, withoutSuffix, key) {\n            var wordKey = translator.words[key];\n            if (key.length === 1) {\n                return withoutSuffix ? wordKey[0] : wordKey[1];\n            } else {\n                return number + ' ' + translator.correctGrammaticalCase(number, wordKey);\n            }\n        }\n    };\n\n    var sr = moment.defineLocale('sr', {\n        months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split('_'),\n        monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),\n        monthsParseExact: true,\n        weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split('_'),\n        weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'),\n        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS : 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY H:mm',\n            LLLL: 'dddd, D. MMMM YYYY H:mm'\n        },\n        calendar: {\n            sameDay: '[danas u] LT',\n            nextDay: '[sutra u] LT',\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[u] [nedelju] [u] LT';\n                    case 3:\n                        return '[u] [sredu] [u] LT';\n                    case 6:\n                        return '[u] [subotu] [u] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[u] dddd [u] LT';\n                }\n            },\n            lastDay  : '[juče u] LT',\n            lastWeek : function () {\n                var lastWeekDays = [\n                    '[prošle] [nedelje] [u] LT',\n                    '[prošlog] [ponedeljka] [u] LT',\n                    '[prošlog] [utorka] [u] LT',\n                    '[prošle] [srede] [u] LT',\n                    '[prošlog] [četvrtka] [u] LT',\n                    '[prošlog] [petka] [u] LT',\n                    '[prošle] [subote] [u] LT'\n                ];\n                return lastWeekDays[this.day()];\n            },\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'za %s',\n            past   : 'pre %s',\n            s      : 'nekoliko sekundi',\n            ss     : translator.translate,\n            m      : translator.translate,\n            mm     : translator.translate,\n            h      : translator.translate,\n            hh     : translator.translate,\n            d      : 'dan',\n            dd     : translator.translate,\n            M      : 'mesec',\n            MM     : translator.translate,\n            y      : 'godinu',\n            yy     : translator.translate\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 7th is the first week of the year.\n        }\n    });\n\n    return sr;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var ss = moment.defineLocale('ss', {\n        months : \"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni\".split('_'),\n        monthsShort : 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),\n        weekdays : 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split('_'),\n        weekdaysShort : 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),\n        weekdaysMin : 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'h:mm A',\n            LTS : 'h:mm:ss A',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY h:mm A',\n            LLLL : 'dddd, D MMMM YYYY h:mm A'\n        },\n        calendar : {\n            sameDay : '[Namuhla nga] LT',\n            nextDay : '[Kusasa nga] LT',\n            nextWeek : 'dddd [nga] LT',\n            lastDay : '[Itolo nga] LT',\n            lastWeek : 'dddd [leliphelile] [nga] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'nga %s',\n            past : 'wenteka nga %s',\n            s : 'emizuzwana lomcane',\n            ss : '%d mzuzwana',\n            m : 'umzuzu',\n            mm : '%d emizuzu',\n            h : 'lihora',\n            hh : '%d emahora',\n            d : 'lilanga',\n            dd : '%d emalanga',\n            M : 'inyanga',\n            MM : '%d tinyanga',\n            y : 'umnyaka',\n            yy : '%d iminyaka'\n        },\n        meridiemParse: /ekuseni|emini|entsambama|ebusuku/,\n        meridiem : function (hours, minutes, isLower) {\n            if (hours < 11) {\n                return 'ekuseni';\n            } else if (hours < 15) {\n                return 'emini';\n            } else if (hours < 19) {\n                return 'entsambama';\n            } else {\n                return 'ebusuku';\n            }\n        },\n        meridiemHour : function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'ekuseni') {\n                return hour;\n            } else if (meridiem === 'emini') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') {\n                if (hour === 0) {\n                    return 0;\n                }\n                return hour + 12;\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}/,\n        ordinal : '%d',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return ss;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var sv = moment.defineLocale('sv', {\n        months : 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split('_'),\n        monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n        weekdays : 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),\n        weekdaysShort : 'sön_mån_tis_ons_tor_fre_lör'.split('_'),\n        weekdaysMin : 'sö_må_ti_on_to_fr_lö'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'YYYY-MM-DD',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY [kl.] HH:mm',\n            LLLL : 'dddd D MMMM YYYY [kl.] HH:mm',\n            lll : 'D MMM YYYY HH:mm',\n            llll : 'ddd D MMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay: '[Idag] LT',\n            nextDay: '[Imorgon] LT',\n            lastDay: '[Igår] LT',\n            nextWeek: '[På] dddd LT',\n            lastWeek: '[I] dddd[s] LT',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'om %s',\n            past : 'för %s sedan',\n            s : 'några sekunder',\n            ss : '%d sekunder',\n            m : 'en minut',\n            mm : '%d minuter',\n            h : 'en timme',\n            hh : '%d timmar',\n            d : 'en dag',\n            dd : '%d dagar',\n            M : 'en månad',\n            MM : '%d månader',\n            y : 'ett år',\n            yy : '%d år'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(e|a)/,\n        ordinal : function (number) {\n            var b = number % 10,\n                output = (~~(number % 100 / 10) === 1) ? 'e' :\n                (b === 1) ? 'a' :\n                (b === 2) ? 'a' :\n                (b === 3) ? 'e' : 'e';\n            return number + output;\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return sv;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var sw = moment.defineLocale('sw', {\n        months : 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split('_'),\n        monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),\n        weekdays : 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split('_'),\n        weekdaysShort : 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),\n        weekdaysMin : 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd, D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay : '[leo saa] LT',\n            nextDay : '[kesho saa] LT',\n            nextWeek : '[wiki ijayo] dddd [saat] LT',\n            lastDay : '[jana] LT',\n            lastWeek : '[wiki iliyopita] dddd [saat] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s baadaye',\n            past : 'tokea %s',\n            s : 'hivi punde',\n            ss : 'sekunde %d',\n            m : 'dakika moja',\n            mm : 'dakika %d',\n            h : 'saa limoja',\n            hh : 'masaa %d',\n            d : 'siku moja',\n            dd : 'masiku %d',\n            M : 'mwezi mmoja',\n            MM : 'miezi %d',\n            y : 'mwaka mmoja',\n            yy : 'miaka %d'\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 7th is the first week of the year.\n        }\n    });\n\n    return sw;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var symbolMap = {\n        '1': '௧',\n        '2': '௨',\n        '3': '௩',\n        '4': '௪',\n        '5': '௫',\n        '6': '௬',\n        '7': '௭',\n        '8': '௮',\n        '9': '௯',\n        '0': '௦'\n    }, numberMap = {\n        '௧': '1',\n        '௨': '2',\n        '௩': '3',\n        '௪': '4',\n        '௫': '5',\n        '௬': '6',\n        '௭': '7',\n        '௮': '8',\n        '௯': '9',\n        '௦': '0'\n    };\n\n    var ta = moment.defineLocale('ta', {\n        months : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'),\n        monthsShort : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'),\n        weekdays : 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split('_'),\n        weekdaysShort : 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split('_'),\n        weekdaysMin : 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY, HH:mm',\n            LLLL : 'dddd, D MMMM YYYY, HH:mm'\n        },\n        calendar : {\n            sameDay : '[இன்று] LT',\n            nextDay : '[நாளை] LT',\n            nextWeek : 'dddd, LT',\n            lastDay : '[நேற்று] LT',\n            lastWeek : '[கடந்த வாரம்] dddd, LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s இல்',\n            past : '%s முன்',\n            s : 'ஒரு சில விநாடிகள்',\n            ss : '%d விநாடிகள்',\n            m : 'ஒரு நிமிடம்',\n            mm : '%d நிமிடங்கள்',\n            h : 'ஒரு மணி நேரம்',\n            hh : '%d மணி நேரம்',\n            d : 'ஒரு நாள்',\n            dd : '%d நாட்கள்',\n            M : 'ஒரு மாதம்',\n            MM : '%d மாதங்கள்',\n            y : 'ஒரு வருடம்',\n            yy : '%d ஆண்டுகள்'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}வது/,\n        ordinal : function (number) {\n            return number + 'வது';\n        },\n        preparse: function (string) {\n            return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) {\n                return numberMap[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap[match];\n            });\n        },\n        // refer http://ta.wikipedia.org/s/1er1\n        meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 2) {\n                return ' யாமம்';\n            } else if (hour < 6) {\n                return ' வைகறை';  // வைகறை\n            } else if (hour < 10) {\n                return ' காலை'; // காலை\n            } else if (hour < 14) {\n                return ' நண்பகல்'; // நண்பகல்\n            } else if (hour < 18) {\n                return ' எற்பாடு'; // எற்பாடு\n            } else if (hour < 22) {\n                return ' மாலை'; // மாலை\n            } else {\n                return ' யாமம்';\n            }\n        },\n        meridiemHour : function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'யாமம்') {\n                return hour < 2 ? hour : hour + 12;\n            } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {\n                return hour;\n            } else if (meridiem === 'நண்பகல்') {\n                return hour >= 10 ? hour : hour + 12;\n            } else {\n                return hour + 12;\n            }\n        },\n        week : {\n            dow : 0, // Sunday is the first day of the week.\n            doy : 6  // The week that contains Jan 6th is the first week of the year.\n        }\n    });\n\n    return ta;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var te = moment.defineLocale('te', {\n        months : 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split('_'),\n        monthsShort : 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split('_'),\n        monthsParseExact : true,\n        weekdays : 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split('_'),\n        weekdaysShort : 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'),\n        weekdaysMin : 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'),\n        longDateFormat : {\n            LT : 'A h:mm',\n            LTS : 'A h:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY, A h:mm',\n            LLLL : 'dddd, D MMMM YYYY, A h:mm'\n        },\n        calendar : {\n            sameDay : '[నేడు] LT',\n            nextDay : '[రేపు] LT',\n            nextWeek : 'dddd, LT',\n            lastDay : '[నిన్న] LT',\n            lastWeek : '[గత] dddd, LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s లో',\n            past : '%s క్రితం',\n            s : 'కొన్ని క్షణాలు',\n            ss : '%d సెకన్లు',\n            m : 'ఒక నిమిషం',\n            mm : '%d నిమిషాలు',\n            h : 'ఒక గంట',\n            hh : '%d గంటలు',\n            d : 'ఒక రోజు',\n            dd : '%d రోజులు',\n            M : 'ఒక నెల',\n            MM : '%d నెలలు',\n            y : 'ఒక సంవత్సరం',\n            yy : '%d సంవత్సరాలు'\n        },\n        dayOfMonthOrdinalParse : /\\d{1,2}వ/,\n        ordinal : '%dవ',\n        meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,\n        meridiemHour : function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'రాత్రి') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'ఉదయం') {\n                return hour;\n            } else if (meridiem === 'మధ్యాహ్నం') {\n                return hour >= 10 ? hour : hour + 12;\n            } else if (meridiem === 'సాయంత్రం') {\n                return hour + 12;\n            }\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'రాత్రి';\n            } else if (hour < 10) {\n                return 'ఉదయం';\n            } else if (hour < 17) {\n                return 'మధ్యాహ్నం';\n            } else if (hour < 20) {\n                return 'సాయంత్రం';\n            } else {\n                return 'రాత్రి';\n            }\n        },\n        week : {\n            dow : 0, // Sunday is the first day of the week.\n            doy : 6  // The week that contains Jan 6th is the first week of the year.\n        }\n    });\n\n    return te;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var tet = moment.defineLocale('tet', {\n        months : 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split('_'),\n        monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),\n        weekdays : 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'),\n        weekdaysShort : 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'),\n        weekdaysMin : 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd, D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay: '[Ohin iha] LT',\n            nextDay: '[Aban iha] LT',\n            nextWeek: 'dddd [iha] LT',\n            lastDay: '[Horiseik iha] LT',\n            lastWeek: 'dddd [semana kotuk] [iha] LT',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'iha %s',\n            past : '%s liuba',\n            s : 'minutu balun',\n            ss : 'minutu %d',\n            m : 'minutu ida',\n            mm : 'minutu %d',\n            h : 'oras ida',\n            hh : 'oras %d',\n            d : 'loron ida',\n            dd : 'loron %d',\n            M : 'fulan ida',\n            MM : 'fulan %d',\n            y : 'tinan ida',\n            yy : 'tinan %d'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal : function (number) {\n            var b = number % 10,\n                output = (~~(number % 100 / 10) === 1) ? 'th' :\n                (b === 1) ? 'st' :\n                (b === 2) ? 'nd' :\n                (b === 3) ? 'rd' : 'th';\n            return number + output;\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return tet;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var suffixes = {\n        0: '-ум',\n        1: '-ум',\n        2: '-юм',\n        3: '-юм',\n        4: '-ум',\n        5: '-ум',\n        6: '-ум',\n        7: '-ум',\n        8: '-ум',\n        9: '-ум',\n        10: '-ум',\n        12: '-ум',\n        13: '-ум',\n        20: '-ум',\n        30: '-юм',\n        40: '-ум',\n        50: '-ум',\n        60: '-ум',\n        70: '-ум',\n        80: '-ум',\n        90: '-ум',\n        100: '-ум'\n    };\n\n    var tg = moment.defineLocale('tg', {\n        months : 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split('_'),\n        monthsShort : 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n        weekdays : 'якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split('_'),\n        weekdaysShort : 'яшб_дшб_сшб_чшб_пшб_ҷум_шнб'.split('_'),\n        weekdaysMin : 'яш_дш_сш_чш_пш_ҷм_шб'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd, D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay : '[Имрӯз соати] LT',\n            nextDay : '[Пагоҳ соати] LT',\n            lastDay : '[Дирӯз соати] LT',\n            nextWeek : 'dddd[и] [ҳафтаи оянда соати] LT',\n            lastWeek : 'dddd[и] [ҳафтаи гузашта соати] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'баъди %s',\n            past : '%s пеш',\n            s : 'якчанд сония',\n            m : 'як дақиқа',\n            mm : '%d дақиқа',\n            h : 'як соат',\n            hh : '%d соат',\n            d : 'як рӯз',\n            dd : '%d рӯз',\n            M : 'як моҳ',\n            MM : '%d моҳ',\n            y : 'як сол',\n            yy : '%d сол'\n        },\n        meridiemParse: /шаб|субҳ|рӯз|бегоҳ/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'шаб') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'субҳ') {\n                return hour;\n            } else if (meridiem === 'рӯз') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === 'бегоҳ') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'шаб';\n            } else if (hour < 11) {\n                return 'субҳ';\n            } else if (hour < 16) {\n                return 'рӯз';\n            } else if (hour < 19) {\n                return 'бегоҳ';\n            } else {\n                return 'шаб';\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(ум|юм)/,\n        ordinal: function (number) {\n            var a = number % 10,\n                b = number >= 100 ? 100 : null;\n            return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 1th is the first week of the year.\n        }\n    });\n\n    return tg;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var th = moment.defineLocale('th', {\n        months : 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split('_'),\n        monthsShort : 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split('_'),\n        monthsParseExact: true,\n        weekdays : 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),\n        weekdaysShort : 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference\n        weekdaysMin : 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'H:mm',\n            LTS : 'H:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY เวลา H:mm',\n            LLLL : 'วันddddที่ D MMMM YYYY เวลา H:mm'\n        },\n        meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,\n        isPM: function (input) {\n            return input === 'หลังเที่ยง';\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ก่อนเที่ยง';\n            } else {\n                return 'หลังเที่ยง';\n            }\n        },\n        calendar : {\n            sameDay : '[วันนี้ เวลา] LT',\n            nextDay : '[พรุ่งนี้ เวลา] LT',\n            nextWeek : 'dddd[หน้า เวลา] LT',\n            lastDay : '[เมื่อวานนี้ เวลา] LT',\n            lastWeek : '[วัน]dddd[ที่แล้ว เวลา] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'อีก %s',\n            past : '%sที่แล้ว',\n            s : 'ไม่กี่วินาที',\n            ss : '%d วินาที',\n            m : '1 นาที',\n            mm : '%d นาที',\n            h : '1 ชั่วโมง',\n            hh : '%d ชั่วโมง',\n            d : '1 วัน',\n            dd : '%d วัน',\n            M : '1 เดือน',\n            MM : '%d เดือน',\n            y : '1 ปี',\n            yy : '%d ปี'\n        }\n    });\n\n    return th;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var tlPh = moment.defineLocale('tl-ph', {\n        months : 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split('_'),\n        monthsShort : 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n        weekdays : 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split('_'),\n        weekdaysShort : 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n        weekdaysMin : 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'MM/D/YYYY',\n            LL : 'MMMM D, YYYY',\n            LLL : 'MMMM D, YYYY HH:mm',\n            LLLL : 'dddd, MMMM DD, YYYY HH:mm'\n        },\n        calendar : {\n            sameDay: 'LT [ngayong araw]',\n            nextDay: '[Bukas ng] LT',\n            nextWeek: 'LT [sa susunod na] dddd',\n            lastDay: 'LT [kahapon]',\n            lastWeek: 'LT [noong nakaraang] dddd',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'sa loob ng %s',\n            past : '%s ang nakalipas',\n            s : 'ilang segundo',\n            ss : '%d segundo',\n            m : 'isang minuto',\n            mm : '%d minuto',\n            h : 'isang oras',\n            hh : '%d oras',\n            d : 'isang araw',\n            dd : '%d araw',\n            M : 'isang buwan',\n            MM : '%d buwan',\n            y : 'isang taon',\n            yy : '%d taon'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}/,\n        ordinal : function (number) {\n            return number;\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return tlPh;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');\n\n    function translateFuture(output) {\n        var time = output;\n        time = (output.indexOf('jaj') !== -1) ?\n        time.slice(0, -3) + 'leS' :\n        (output.indexOf('jar') !== -1) ?\n        time.slice(0, -3) + 'waQ' :\n        (output.indexOf('DIS') !== -1) ?\n        time.slice(0, -3) + 'nem' :\n        time + ' pIq';\n        return time;\n    }\n\n    function translatePast(output) {\n        var time = output;\n        time = (output.indexOf('jaj') !== -1) ?\n        time.slice(0, -3) + 'Hu’' :\n        (output.indexOf('jar') !== -1) ?\n        time.slice(0, -3) + 'wen' :\n        (output.indexOf('DIS') !== -1) ?\n        time.slice(0, -3) + 'ben' :\n        time + ' ret';\n        return time;\n    }\n\n    function translate(number, withoutSuffix, string, isFuture) {\n        var numberNoun = numberAsNoun(number);\n        switch (string) {\n            case 'ss':\n                return numberNoun + ' lup';\n            case 'mm':\n                return numberNoun + ' tup';\n            case 'hh':\n                return numberNoun + ' rep';\n            case 'dd':\n                return numberNoun + ' jaj';\n            case 'MM':\n                return numberNoun + ' jar';\n            case 'yy':\n                return numberNoun + ' DIS';\n        }\n    }\n\n    function numberAsNoun(number) {\n        var hundred = Math.floor((number % 1000) / 100),\n        ten = Math.floor((number % 100) / 10),\n        one = number % 10,\n        word = '';\n        if (hundred > 0) {\n            word += numbersNouns[hundred] + 'vatlh';\n        }\n        if (ten > 0) {\n            word += ((word !== '') ? ' ' : '') + numbersNouns[ten] + 'maH';\n        }\n        if (one > 0) {\n            word += ((word !== '') ? ' ' : '') + numbersNouns[one];\n        }\n        return (word === '') ? 'pagh' : word;\n    }\n\n    var tlh = moment.defineLocale('tlh', {\n        months : 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split('_'),\n        monthsShort : 'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split('_'),\n        monthsParseExact : true,\n        weekdays : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n        weekdaysShort : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n        weekdaysMin : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd, D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay: '[DaHjaj] LT',\n            nextDay: '[wa’leS] LT',\n            nextWeek: 'LLL',\n            lastDay: '[wa’Hu’] LT',\n            lastWeek: 'LLL',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : translateFuture,\n            past : translatePast,\n            s : 'puS lup',\n            ss : translate,\n            m : 'wa’ tup',\n            mm : translate,\n            h : 'wa’ rep',\n            hh : translate,\n            d : 'wa’ jaj',\n            dd : translate,\n            M : 'wa’ jar',\n            MM : translate,\n            y : 'wa’ DIS',\n            yy : translate\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return tlh;\n\n})));\n","\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n    var suffixes = {\n        1: '\\'inci',\n        5: '\\'inci',\n        8: '\\'inci',\n        70: '\\'inci',\n        80: '\\'inci',\n        2: '\\'nci',\n        7: '\\'nci',\n        20: '\\'nci',\n        50: '\\'nci',\n        3: '\\'üncü',\n        4: '\\'üncü',\n        100: '\\'üncü',\n        6: '\\'ncı',\n        9: '\\'uncu',\n        10: '\\'uncu',\n        30: '\\'uncu',\n        60: '\\'ıncı',\n        90: '\\'ıncı'\n    };\n\n    var tr = moment.defineLocale('tr', {\n        months : 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split('_'),\n        monthsShort : 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),\n        weekdays : 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split('_'),\n        weekdaysShort : 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'),\n        weekdaysMin : 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd, D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay : '[bugün saat] LT',\n            nextDay : '[yarın saat] LT',\n            nextWeek : '[gelecek] dddd [saat] LT',\n            lastDay : '[dün] LT',\n            lastWeek : '[geçen] dddd [saat] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s sonra',\n            past : '%s önce',\n            s : 'birkaç saniye',\n            ss : '%d saniye',\n            m : 'bir dakika',\n            mm : '%d dakika',\n            h : 'bir saat',\n            hh : '%d saat',\n            d : 'bir gün',\n            dd : '%d gün',\n            M : 'bir ay',\n            MM : '%d ay',\n            y : 'bir yıl',\n            yy : '%d yıl'\n        },\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'Do':\n                case 'DD':\n                    return number;\n                default:\n                    if (number === 0) {  // special case for zero\n                        return number + '\\'ıncı';\n                    }\n                    var a = number % 10,\n                        b = number % 100 - a,\n                        c = number >= 100 ? 100 : null;\n                    return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n            }\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 7th is the first week of the year.\n        }\n    });\n\n    return tr;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals.\n    // This is currently too difficult (maybe even impossible) to add.\n    var tzl = moment.defineLocale('tzl', {\n        months : 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split('_'),\n        monthsShort : 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),\n        weekdays : 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'),\n        weekdaysShort : 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'),\n        weekdaysMin : 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'),\n        longDateFormat : {\n            LT : 'HH.mm',\n            LTS : 'HH.mm.ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D. MMMM [dallas] YYYY',\n            LLL : 'D. MMMM [dallas] YYYY HH.mm',\n            LLLL : 'dddd, [li] D. MMMM [dallas] YYYY HH.mm'\n        },\n        meridiemParse: /d\\'o|d\\'a/i,\n        isPM : function (input) {\n            return 'd\\'o' === input.toLowerCase();\n        },\n        meridiem : function (hours, minutes, isLower) {\n            if (hours > 11) {\n                return isLower ? 'd\\'o' : 'D\\'O';\n            } else {\n                return isLower ? 'd\\'a' : 'D\\'A';\n            }\n        },\n        calendar : {\n            sameDay : '[oxhi à] LT',\n            nextDay : '[demà à] LT',\n            nextWeek : 'dddd [à] LT',\n            lastDay : '[ieiri à] LT',\n            lastWeek : '[sür el] dddd [lasteu à] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'osprei %s',\n            past : 'ja%s',\n            s : processRelativeTime,\n            ss : processRelativeTime,\n            m : processRelativeTime,\n            mm : processRelativeTime,\n            h : processRelativeTime,\n            hh : processRelativeTime,\n            d : processRelativeTime,\n            dd : processRelativeTime,\n            M : processRelativeTime,\n            MM : processRelativeTime,\n            y : processRelativeTime,\n            yy : processRelativeTime\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal : '%d.',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        var format = {\n            's': ['viensas secunds', '\\'iensas secunds'],\n            'ss': [number + ' secunds', '' + number + ' secunds'],\n            'm': ['\\'n míut', '\\'iens míut'],\n            'mm': [number + ' míuts', '' + number + ' míuts'],\n            'h': ['\\'n þora', '\\'iensa þora'],\n            'hh': [number + ' þoras', '' + number + ' þoras'],\n            'd': ['\\'n ziua', '\\'iensa ziua'],\n            'dd': [number + ' ziuas', '' + number + ' ziuas'],\n            'M': ['\\'n mes', '\\'iens mes'],\n            'MM': [number + ' mesen', '' + number + ' mesen'],\n            'y': ['\\'n ar', '\\'iens ar'],\n            'yy': [number + ' ars', '' + number + ' ars']\n        };\n        return isFuture ? format[key][0] : (withoutSuffix ? format[key][0] : format[key][1]);\n    }\n\n    return tzl;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var tzmLatn = moment.defineLocale('tzm-latn', {\n        months : 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'),\n        monthsShort : 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'),\n        weekdays : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n        weekdaysShort : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n        weekdaysMin : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay: '[asdkh g] LT',\n            nextDay: '[aska g] LT',\n            nextWeek: 'dddd [g] LT',\n            lastDay: '[assant g] LT',\n            lastWeek: 'dddd [g] LT',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'dadkh s yan %s',\n            past : 'yan %s',\n            s : 'imik',\n            ss : '%d imik',\n            m : 'minuḍ',\n            mm : '%d minuḍ',\n            h : 'saɛa',\n            hh : '%d tassaɛin',\n            d : 'ass',\n            dd : '%d ossan',\n            M : 'ayowr',\n            MM : '%d iyyirn',\n            y : 'asgas',\n            yy : '%d isgasn'\n        },\n        week : {\n            dow : 6, // Saturday is the first day of the week.\n            doy : 12  // The week that contains Jan 12th is the first week of the year.\n        }\n    });\n\n    return tzmLatn;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var tzm = moment.defineLocale('tzm', {\n        months : 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'),\n        monthsShort : 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'),\n        weekdays : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n        weekdaysShort : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n        weekdaysMin : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay: '[ⴰⵙⴷⵅ ⴴ] LT',\n            nextDay: '[ⴰⵙⴽⴰ ⴴ] LT',\n            nextWeek: 'dddd [ⴴ] LT',\n            lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT',\n            lastWeek: 'dddd [ⴴ] LT',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s',\n            past : 'ⵢⴰⵏ %s',\n            s : 'ⵉⵎⵉⴽ',\n            ss : '%d ⵉⵎⵉⴽ',\n            m : 'ⵎⵉⵏⵓⴺ',\n            mm : '%d ⵎⵉⵏⵓⴺ',\n            h : 'ⵙⴰⵄⴰ',\n            hh : '%d ⵜⴰⵙⵙⴰⵄⵉⵏ',\n            d : 'ⴰⵙⵙ',\n            dd : '%d oⵙⵙⴰⵏ',\n            M : 'ⴰⵢoⵓⵔ',\n            MM : '%d ⵉⵢⵢⵉⵔⵏ',\n            y : 'ⴰⵙⴳⴰⵙ',\n            yy : '%d ⵉⵙⴳⴰⵙⵏ'\n        },\n        week : {\n            dow : 6, // Saturday is the first day of the week.\n            doy : 12  // The week that contains Jan 12th is the first week of the year.\n        }\n    });\n\n    return tzm;\n\n})));\n","//! moment.js language configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var ugCn = moment.defineLocale('ug-cn', {\n        months: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n            '_'\n        ),\n        monthsShort: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n            '_'\n        ),\n        weekdays: 'يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە'.split(\n            '_'\n        ),\n        weekdaysShort: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n        weekdaysMin: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY-MM-DD',\n            LL: 'YYYY-يىلىM-ئاينىڭD-كۈنى',\n            LLL: 'YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n            LLLL: 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm'\n        },\n        meridiemParse: /يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (\n                meridiem === 'يېرىم كېچە' ||\n                meridiem === 'سەھەر' ||\n                meridiem === 'چۈشتىن بۇرۇن'\n            ) {\n                return hour;\n            } else if (meridiem === 'چۈشتىن كېيىن' || meridiem === 'كەچ') {\n                return hour + 12;\n            } else {\n                return hour >= 11 ? hour : hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            var hm = hour * 100 + minute;\n            if (hm < 600) {\n                return 'يېرىم كېچە';\n            } else if (hm < 900) {\n                return 'سەھەر';\n            } else if (hm < 1130) {\n                return 'چۈشتىن بۇرۇن';\n            } else if (hm < 1230) {\n                return 'چۈش';\n            } else if (hm < 1800) {\n                return 'چۈشتىن كېيىن';\n            } else {\n                return 'كەچ';\n            }\n        },\n        calendar: {\n            sameDay: '[بۈگۈن سائەت] LT',\n            nextDay: '[ئەتە سائەت] LT',\n            nextWeek: '[كېلەركى] dddd [سائەت] LT',\n            lastDay: '[تۆنۈگۈن] LT',\n            lastWeek: '[ئالدىنقى] dddd [سائەت] LT',\n            sameElse: 'L'\n        },\n        relativeTime: {\n            future: '%s كېيىن',\n            past: '%s بۇرۇن',\n            s: 'نەچچە سېكونت',\n            ss: '%d سېكونت',\n            m: 'بىر مىنۇت',\n            mm: '%d مىنۇت',\n            h: 'بىر سائەت',\n            hh: '%d سائەت',\n            d: 'بىر كۈن',\n            dd: '%d كۈن',\n            M: 'بىر ئاي',\n            MM: '%d ئاي',\n            y: 'بىر يىل',\n            yy: '%d يىل'\n        },\n\n        dayOfMonthOrdinalParse: /\\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'DDD':\n                    return number + '-كۈنى';\n                case 'w':\n                case 'W':\n                    return number + '-ھەپتە';\n                default:\n                    return number;\n            }\n        },\n        preparse: function (string) {\n            return string.replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string.replace(/,/g, '،');\n        },\n        week: {\n            // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n            dow: 1, // Monday is the first day of the week.\n            doy: 7 // The week that contains Jan 1st is the first week of the year.\n        }\n    });\n\n    return ugCn;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    function plural(word, num) {\n        var forms = word.split('_');\n        return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]);\n    }\n    function relativeTimeWithPlural(number, withoutSuffix, key) {\n        var format = {\n            'ss': withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд',\n            'mm': withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',\n            'hh': withoutSuffix ? 'година_години_годин' : 'годину_години_годин',\n            'dd': 'день_дні_днів',\n            'MM': 'місяць_місяці_місяців',\n            'yy': 'рік_роки_років'\n        };\n        if (key === 'm') {\n            return withoutSuffix ? 'хвилина' : 'хвилину';\n        }\n        else if (key === 'h') {\n            return withoutSuffix ? 'година' : 'годину';\n        }\n        else {\n            return number + ' ' + plural(format[key], +number);\n        }\n    }\n    function weekdaysCaseReplace(m, format) {\n        var weekdays = {\n            'nominative': 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split('_'),\n            'accusative': 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split('_'),\n            'genitive': 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split('_')\n        };\n\n        if (m === true) {\n            return weekdays['nominative'].slice(1, 7).concat(weekdays['nominative'].slice(0, 1));\n        }\n        if (!m) {\n            return weekdays['nominative'];\n        }\n\n        var nounCase = (/(\\[[ВвУу]\\]) ?dddd/).test(format) ?\n            'accusative' :\n            ((/\\[?(?:минулої|наступної)? ?\\] ?dddd/).test(format) ?\n                'genitive' :\n                'nominative');\n        return weekdays[nounCase][m.day()];\n    }\n    function processHoursFunction(str) {\n        return function () {\n            return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';\n        };\n    }\n\n    var uk = moment.defineLocale('uk', {\n        months : {\n            'format': 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split('_'),\n            'standalone': 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split('_')\n        },\n        monthsShort : 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split('_'),\n        weekdays : weekdaysCaseReplace,\n        weekdaysShort : 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n        weekdaysMin : 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD.MM.YYYY',\n            LL : 'D MMMM YYYY р.',\n            LLL : 'D MMMM YYYY р., HH:mm',\n            LLLL : 'dddd, D MMMM YYYY р., HH:mm'\n        },\n        calendar : {\n            sameDay: processHoursFunction('[Сьогодні '),\n            nextDay: processHoursFunction('[Завтра '),\n            lastDay: processHoursFunction('[Вчора '),\n            nextWeek: processHoursFunction('[У] dddd ['),\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                    case 3:\n                    case 5:\n                    case 6:\n                        return processHoursFunction('[Минулої] dddd [').call(this);\n                    case 1:\n                    case 2:\n                    case 4:\n                        return processHoursFunction('[Минулого] dddd [').call(this);\n                }\n            },\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : 'за %s',\n            past : '%s тому',\n            s : 'декілька секунд',\n            ss : relativeTimeWithPlural,\n            m : relativeTimeWithPlural,\n            mm : relativeTimeWithPlural,\n            h : 'годину',\n            hh : relativeTimeWithPlural,\n            d : 'день',\n            dd : relativeTimeWithPlural,\n            M : 'місяць',\n            MM : relativeTimeWithPlural,\n            y : 'рік',\n            yy : relativeTimeWithPlural\n        },\n        // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason\n        meridiemParse: /ночі|ранку|дня|вечора/,\n        isPM: function (input) {\n            return /^(дня|вечора)$/.test(input);\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'ночі';\n            } else if (hour < 12) {\n                return 'ранку';\n            } else if (hour < 17) {\n                return 'дня';\n            } else {\n                return 'вечора';\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(й|го)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'M':\n                case 'd':\n                case 'DDD':\n                case 'w':\n                case 'W':\n                    return number + '-й';\n                case 'D':\n                    return number + '-го';\n                default:\n                    return number;\n            }\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 7th is the first week of the year.\n        }\n    });\n\n    return uk;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var months = [\n        'جنوری',\n        'فروری',\n        'مارچ',\n        'اپریل',\n        'مئی',\n        'جون',\n        'جولائی',\n        'اگست',\n        'ستمبر',\n        'اکتوبر',\n        'نومبر',\n        'دسمبر'\n    ];\n    var days = [\n        'اتوار',\n        'پیر',\n        'منگل',\n        'بدھ',\n        'جمعرات',\n        'جمعہ',\n        'ہفتہ'\n    ];\n\n    var ur = moment.defineLocale('ur', {\n        months : months,\n        monthsShort : months,\n        weekdays : days,\n        weekdaysShort : days,\n        weekdaysMin : days,\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd، D MMMM YYYY HH:mm'\n        },\n        meridiemParse: /صبح|شام/,\n        isPM : function (input) {\n            return 'شام' === input;\n        },\n        meridiem : function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'صبح';\n            }\n            return 'شام';\n        },\n        calendar : {\n            sameDay : '[آج بوقت] LT',\n            nextDay : '[کل بوقت] LT',\n            nextWeek : 'dddd [بوقت] LT',\n            lastDay : '[گذشتہ روز بوقت] LT',\n            lastWeek : '[گذشتہ] dddd [بوقت] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : '%s بعد',\n            past : '%s قبل',\n            s : 'چند سیکنڈ',\n            ss : '%d سیکنڈ',\n            m : 'ایک منٹ',\n            mm : '%d منٹ',\n            h : 'ایک گھنٹہ',\n            hh : '%d گھنٹے',\n            d : 'ایک دن',\n            dd : '%d دن',\n            M : 'ایک ماہ',\n            MM : '%d ماہ',\n            y : 'ایک سال',\n            yy : '%d سال'\n        },\n        preparse: function (string) {\n            return string.replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string.replace(/,/g, '،');\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return ur;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var uzLatn = moment.defineLocale('uz-latn', {\n        months : 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split('_'),\n        monthsShort : 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'),\n        weekdays : 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split('_'),\n        weekdaysShort : 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'),\n        weekdaysMin : 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'D MMMM YYYY, dddd HH:mm'\n        },\n        calendar : {\n            sameDay : '[Bugun soat] LT [da]',\n            nextDay : '[Ertaga] LT [da]',\n            nextWeek : 'dddd [kuni soat] LT [da]',\n            lastDay : '[Kecha soat] LT [da]',\n            lastWeek : '[O\\'tgan] dddd [kuni soat] LT [da]',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'Yaqin %s ichida',\n            past : 'Bir necha %s oldin',\n            s : 'soniya',\n            ss : '%d soniya',\n            m : 'bir daqiqa',\n            mm : '%d daqiqa',\n            h : 'bir soat',\n            hh : '%d soat',\n            d : 'bir kun',\n            dd : '%d kun',\n            M : 'bir oy',\n            MM : '%d oy',\n            y : 'bir yil',\n            yy : '%d yil'\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 7th is the first week of the year.\n        }\n    });\n\n    return uzLatn;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var uz = moment.defineLocale('uz', {\n        months : 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split('_'),\n        monthsShort : 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n        weekdays : 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),\n        weekdaysShort : 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),\n        weekdaysMin : 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'D MMMM YYYY, dddd HH:mm'\n        },\n        calendar : {\n            sameDay : '[Бугун соат] LT [да]',\n            nextDay : '[Эртага] LT [да]',\n            nextWeek : 'dddd [куни соат] LT [да]',\n            lastDay : '[Кеча соат] LT [да]',\n            lastWeek : '[Утган] dddd [куни соат] LT [да]',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'Якин %s ичида',\n            past : 'Бир неча %s олдин',\n            s : 'фурсат',\n            ss : '%d фурсат',\n            m : 'бир дакика',\n            mm : '%d дакика',\n            h : 'бир соат',\n            hh : '%d соат',\n            d : 'бир кун',\n            dd : '%d кун',\n            M : 'бир ой',\n            MM : '%d ой',\n            y : 'бир йил',\n            yy : '%d йил'\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 7  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return uz;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var vi = moment.defineLocale('vi', {\n        months : 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split('_'),\n        monthsShort : 'Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12'.split('_'),\n        monthsParseExact : true,\n        weekdays : 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split('_'),\n        weekdaysShort : 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n        weekdaysMin : 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n        weekdaysParseExact : true,\n        meridiemParse: /sa|ch/i,\n        isPM : function (input) {\n            return /^ch$/i.test(input);\n        },\n        meridiem : function (hours, minutes, isLower) {\n            if (hours < 12) {\n                return isLower ? 'sa' : 'SA';\n            } else {\n                return isLower ? 'ch' : 'CH';\n            }\n        },\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM [năm] YYYY',\n            LLL : 'D MMMM [năm] YYYY HH:mm',\n            LLLL : 'dddd, D MMMM [năm] YYYY HH:mm',\n            l : 'DD/M/YYYY',\n            ll : 'D MMM YYYY',\n            lll : 'D MMM YYYY HH:mm',\n            llll : 'ddd, D MMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay: '[Hôm nay lúc] LT',\n            nextDay: '[Ngày mai lúc] LT',\n            nextWeek: 'dddd [tuần tới lúc] LT',\n            lastDay: '[Hôm qua lúc] LT',\n            lastWeek: 'dddd [tuần rồi lúc] LT',\n            sameElse: 'L'\n        },\n        relativeTime : {\n            future : '%s tới',\n            past : '%s trước',\n            s : 'vài giây',\n            ss : '%d giây' ,\n            m : 'một phút',\n            mm : '%d phút',\n            h : 'một giờ',\n            hh : '%d giờ',\n            d : 'một ngày',\n            dd : '%d ngày',\n            M : 'một tháng',\n            MM : '%d tháng',\n            y : 'một năm',\n            yy : '%d năm'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}/,\n        ordinal : function (number) {\n            return number;\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return vi;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var xPseudo = moment.defineLocale('x-pseudo', {\n        months : 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split('_'),\n        monthsShort : 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split('_'),\n        monthsParseExact : true,\n        weekdays : 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split('_'),\n        weekdaysShort : 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'),\n        weekdaysMin : 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),\n        weekdaysParseExact : true,\n        longDateFormat : {\n            LT : 'HH:mm',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY HH:mm',\n            LLLL : 'dddd, D MMMM YYYY HH:mm'\n        },\n        calendar : {\n            sameDay : '[T~ódá~ý át] LT',\n            nextDay : '[T~ómó~rró~w át] LT',\n            nextWeek : 'dddd [át] LT',\n            lastDay : '[Ý~ést~érdá~ý át] LT',\n            lastWeek : '[L~ást] dddd [át] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'í~ñ %s',\n            past : '%s á~gó',\n            s : 'á ~féw ~sécó~ñds',\n            ss : '%d s~écóñ~ds',\n            m : 'á ~míñ~úté',\n            mm : '%d m~íñú~tés',\n            h : 'á~ñ hó~úr',\n            hh : '%d h~óúrs',\n            d : 'á ~dáý',\n            dd : '%d d~áýs',\n            M : 'á ~móñ~th',\n            MM : '%d m~óñt~hs',\n            y : 'á ~ýéár',\n            yy : '%d ý~éárs'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n        ordinal : function (number) {\n            var b = number % 10,\n                output = (~~(number % 100 / 10) === 1) ? 'th' :\n                (b === 1) ? 'st' :\n                (b === 2) ? 'nd' :\n                (b === 3) ? 'rd' : 'th';\n            return number + output;\n        },\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return xPseudo;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var yo = moment.defineLocale('yo', {\n        months : 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split('_'),\n        monthsShort : 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'),\n        weekdays : 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'),\n        weekdaysShort : 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'),\n        weekdaysMin : 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'),\n        longDateFormat : {\n            LT : 'h:mm A',\n            LTS : 'h:mm:ss A',\n            L : 'DD/MM/YYYY',\n            LL : 'D MMMM YYYY',\n            LLL : 'D MMMM YYYY h:mm A',\n            LLLL : 'dddd, D MMMM YYYY h:mm A'\n        },\n        calendar : {\n            sameDay : '[Ònì ni] LT',\n            nextDay : '[Ọ̀la ni] LT',\n            nextWeek : 'dddd [Ọsẹ̀ tón\\'bọ] [ni] LT',\n            lastDay : '[Àna ni] LT',\n            lastWeek : 'dddd [Ọsẹ̀ tólọ́] [ni] LT',\n            sameElse : 'L'\n        },\n        relativeTime : {\n            future : 'ní %s',\n            past : '%s kọjá',\n            s : 'ìsẹjú aayá die',\n            ss :'aayá %d',\n            m : 'ìsẹjú kan',\n            mm : 'ìsẹjú %d',\n            h : 'wákati kan',\n            hh : 'wákati %d',\n            d : 'ọjọ́ kan',\n            dd : 'ọjọ́ %d',\n            M : 'osù kan',\n            MM : 'osù %d',\n            y : 'ọdún kan',\n            yy : 'ọdún %d'\n        },\n        dayOfMonthOrdinalParse : /ọjọ́\\s\\d{1,2}/,\n        ordinal : 'ọjọ́ %d',\n        week : {\n            dow : 1, // Monday is the first day of the week.\n            doy : 4 // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return yo;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var zhCn = moment.defineLocale('zh-cn', {\n        months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),\n        monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n        weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n        weekdaysShort : '周日_周一_周二_周三_周四_周五_周六'.split('_'),\n        weekdaysMin : '日_一_二_三_四_五_六'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'YYYY/MM/DD',\n            LL : 'YYYY年M月D日',\n            LLL : 'YYYY年M月D日Ah点mm分',\n            LLLL : 'YYYY年M月D日ddddAh点mm分',\n            l : 'YYYY/M/D',\n            ll : 'YYYY年M月D日',\n            lll : 'YYYY年M月D日 HH:mm',\n            llll : 'YYYY年M月D日dddd HH:mm'\n        },\n        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === '凌晨' || meridiem === '早上' ||\n                    meridiem === '上午') {\n                return hour;\n            } else if (meridiem === '下午' || meridiem === '晚上') {\n                return hour + 12;\n            } else {\n                // '中午'\n                return hour >= 11 ? hour : hour + 12;\n            }\n        },\n        meridiem : function (hour, minute, isLower) {\n            var hm = hour * 100 + minute;\n            if (hm < 600) {\n                return '凌晨';\n            } else if (hm < 900) {\n                return '早上';\n            } else if (hm < 1130) {\n                return '上午';\n            } else if (hm < 1230) {\n                return '中午';\n            } else if (hm < 1800) {\n                return '下午';\n            } else {\n                return '晚上';\n            }\n        },\n        calendar : {\n            sameDay : '[今天]LT',\n            nextDay : '[明天]LT',\n            nextWeek : '[下]ddddLT',\n            lastDay : '[昨天]LT',\n            lastWeek : '[上]ddddLT',\n            sameElse : 'L'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(日|月|周)/,\n        ordinal : function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'DDD':\n                    return number + '日';\n                case 'M':\n                    return number + '月';\n                case 'w':\n                case 'W':\n                    return number + '周';\n                default:\n                    return number;\n            }\n        },\n        relativeTime : {\n            future : '%s内',\n            past : '%s前',\n            s : '几秒',\n            ss : '%d 秒',\n            m : '1 分钟',\n            mm : '%d 分钟',\n            h : '1 小时',\n            hh : '%d 小时',\n            d : '1 天',\n            dd : '%d 天',\n            M : '1 个月',\n            MM : '%d 个月',\n            y : '1 年',\n            yy : '%d 年'\n        },\n        week : {\n            // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n            dow : 1, // Monday is the first day of the week.\n            doy : 4  // The week that contains Jan 4th is the first week of the year.\n        }\n    });\n\n    return zhCn;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var zhHk = moment.defineLocale('zh-hk', {\n        months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),\n        monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n        weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n        weekdaysShort : '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n        weekdaysMin : '日_一_二_三_四_五_六'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'YYYY/MM/DD',\n            LL : 'YYYY年M月D日',\n            LLL : 'YYYY年M月D日 HH:mm',\n            LLLL : 'YYYY年M月D日dddd HH:mm',\n            l : 'YYYY/M/D',\n            ll : 'YYYY年M月D日',\n            lll : 'YYYY年M月D日 HH:mm',\n            llll : 'YYYY年M月D日dddd HH:mm'\n        },\n        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n        meridiemHour : function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n                return hour;\n            } else if (meridiem === '中午') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === '下午' || meridiem === '晚上') {\n                return hour + 12;\n            }\n        },\n        meridiem : function (hour, minute, isLower) {\n            var hm = hour * 100 + minute;\n            if (hm < 600) {\n                return '凌晨';\n            } else if (hm < 900) {\n                return '早上';\n            } else if (hm < 1130) {\n                return '上午';\n            } else if (hm < 1230) {\n                return '中午';\n            } else if (hm < 1800) {\n                return '下午';\n            } else {\n                return '晚上';\n            }\n        },\n        calendar : {\n            sameDay : '[今天]LT',\n            nextDay : '[明天]LT',\n            nextWeek : '[下]ddddLT',\n            lastDay : '[昨天]LT',\n            lastWeek : '[上]ddddLT',\n            sameElse : 'L'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n        ordinal : function (number, period) {\n            switch (period) {\n                case 'd' :\n                case 'D' :\n                case 'DDD' :\n                    return number + '日';\n                case 'M' :\n                    return number + '月';\n                case 'w' :\n                case 'W' :\n                    return number + '週';\n                default :\n                    return number;\n            }\n        },\n        relativeTime : {\n            future : '%s內',\n            past : '%s前',\n            s : '幾秒',\n            ss : '%d 秒',\n            m : '1 分鐘',\n            mm : '%d 分鐘',\n            h : '1 小時',\n            hh : '%d 小時',\n            d : '1 天',\n            dd : '%d 天',\n            M : '1 個月',\n            MM : '%d 個月',\n            y : '1 年',\n            yy : '%d 年'\n        }\n    });\n\n    return zhHk;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n   typeof exports === 'object' && typeof module !== 'undefined'\n       && typeof require === 'function' ? factory(require('../moment')) :\n   typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n   factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n    var zhTw = moment.defineLocale('zh-tw', {\n        months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),\n        monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n        weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n        weekdaysShort : '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n        weekdaysMin : '日_一_二_三_四_五_六'.split('_'),\n        longDateFormat : {\n            LT : 'HH:mm',\n            LTS : 'HH:mm:ss',\n            L : 'YYYY/MM/DD',\n            LL : 'YYYY年M月D日',\n            LLL : 'YYYY年M月D日 HH:mm',\n            LLLL : 'YYYY年M月D日dddd HH:mm',\n            l : 'YYYY/M/D',\n            ll : 'YYYY年M月D日',\n            lll : 'YYYY年M月D日 HH:mm',\n            llll : 'YYYY年M月D日dddd HH:mm'\n        },\n        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n        meridiemHour : function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n                return hour;\n            } else if (meridiem === '中午') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === '下午' || meridiem === '晚上') {\n                return hour + 12;\n            }\n        },\n        meridiem : function (hour, minute, isLower) {\n            var hm = hour * 100 + minute;\n            if (hm < 600) {\n                return '凌晨';\n            } else if (hm < 900) {\n                return '早上';\n            } else if (hm < 1130) {\n                return '上午';\n            } else if (hm < 1230) {\n                return '中午';\n            } else if (hm < 1800) {\n                return '下午';\n            } else {\n                return '晚上';\n            }\n        },\n        calendar : {\n            sameDay : '[今天] LT',\n            nextDay : '[明天] LT',\n            nextWeek : '[下]dddd LT',\n            lastDay : '[昨天] LT',\n            lastWeek : '[上]dddd LT',\n            sameElse : 'L'\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n        ordinal : function (number, period) {\n            switch (period) {\n                case 'd' :\n                case 'D' :\n                case 'DDD' :\n                    return number + '日';\n                case 'M' :\n                    return number + '月';\n                case 'w' :\n                case 'W' :\n                    return number + '週';\n                default :\n                    return number;\n            }\n        },\n        relativeTime : {\n            future : '%s內',\n            past : '%s前',\n            s : '幾秒',\n            ss : '%d 秒',\n            m : '1 分鐘',\n            mm : '%d 分鐘',\n            h : '1 小時',\n            hh : '%d 小時',\n            d : '1 天',\n            dd : '%d 天',\n            M : '1 個月',\n            MM : '%d 個月',\n            y : '1 年',\n            yy : '%d 年'\n        }\n    });\n\n    return zhTw;\n\n})));\n","//! moment.js\n\n;(function (global, factory) {\n    typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n    typeof define === 'function' && define.amd ? define(factory) :\n    global.moment = factory()\n}(this, (function () { 'use strict';\n\n    var hookCallback;\n\n    function hooks () {\n        return hookCallback.apply(null, arguments);\n    }\n\n    // This is done to register the method called with moment()\n    // without creating circular dependencies.\n    function setHookCallback (callback) {\n        hookCallback = callback;\n    }\n\n    function isArray(input) {\n        return input instanceof Array || Object.prototype.toString.call(input) === '[object Array]';\n    }\n\n    function isObject(input) {\n        // IE8 will treat undefined and null as object if it wasn't for\n        // input != null\n        return input != null && Object.prototype.toString.call(input) === '[object Object]';\n    }\n\n    function isObjectEmpty(obj) {\n        if (Object.getOwnPropertyNames) {\n            return (Object.getOwnPropertyNames(obj).length === 0);\n        } else {\n            var k;\n            for (k in obj) {\n                if (obj.hasOwnProperty(k)) {\n                    return false;\n                }\n            }\n            return true;\n        }\n    }\n\n    function isUndefined(input) {\n        return input === void 0;\n    }\n\n    function isNumber(input) {\n        return typeof input === 'number' || Object.prototype.toString.call(input) === '[object Number]';\n    }\n\n    function isDate(input) {\n        return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]';\n    }\n\n    function map(arr, fn) {\n        var res = [], i;\n        for (i = 0; i < arr.length; ++i) {\n            res.push(fn(arr[i], i));\n        }\n        return res;\n    }\n\n    function hasOwnProp(a, b) {\n        return Object.prototype.hasOwnProperty.call(a, b);\n    }\n\n    function extend(a, b) {\n        for (var i in b) {\n            if (hasOwnProp(b, i)) {\n                a[i] = b[i];\n            }\n        }\n\n        if (hasOwnProp(b, 'toString')) {\n            a.toString = b.toString;\n        }\n\n        if (hasOwnProp(b, 'valueOf')) {\n            a.valueOf = b.valueOf;\n        }\n\n        return a;\n    }\n\n    function createUTC (input, format, locale, strict) {\n        return createLocalOrUTC(input, format, locale, strict, true).utc();\n    }\n\n    function defaultParsingFlags() {\n        // We need to deep clone this object.\n        return {\n            empty           : false,\n            unusedTokens    : [],\n            unusedInput     : [],\n            overflow        : -2,\n            charsLeftOver   : 0,\n            nullInput       : false,\n            invalidMonth    : null,\n            invalidFormat   : false,\n            userInvalidated : false,\n            iso             : false,\n            parsedDateParts : [],\n            meridiem        : null,\n            rfc2822         : false,\n            weekdayMismatch : false\n        };\n    }\n\n    function getParsingFlags(m) {\n        if (m._pf == null) {\n            m._pf = defaultParsingFlags();\n        }\n        return m._pf;\n    }\n\n    var some;\n    if (Array.prototype.some) {\n        some = Array.prototype.some;\n    } else {\n        some = function (fun) {\n            var t = Object(this);\n            var len = t.length >>> 0;\n\n            for (var i = 0; i < len; i++) {\n                if (i in t && fun.call(this, t[i], i, t)) {\n                    return true;\n                }\n            }\n\n            return false;\n        };\n    }\n\n    function isValid(m) {\n        if (m._isValid == null) {\n            var flags = getParsingFlags(m);\n            var parsedParts = some.call(flags.parsedDateParts, function (i) {\n                return i != null;\n            });\n            var isNowValid = !isNaN(m._d.getTime()) &&\n                flags.overflow < 0 &&\n                !flags.empty &&\n                !flags.invalidMonth &&\n                !flags.invalidWeekday &&\n                !flags.weekdayMismatch &&\n                !flags.nullInput &&\n                !flags.invalidFormat &&\n                !flags.userInvalidated &&\n                (!flags.meridiem || (flags.meridiem && parsedParts));\n\n            if (m._strict) {\n                isNowValid = isNowValid &&\n                    flags.charsLeftOver === 0 &&\n                    flags.unusedTokens.length === 0 &&\n                    flags.bigHour === undefined;\n            }\n\n            if (Object.isFrozen == null || !Object.isFrozen(m)) {\n                m._isValid = isNowValid;\n            }\n            else {\n                return isNowValid;\n            }\n        }\n        return m._isValid;\n    }\n\n    function createInvalid (flags) {\n        var m = createUTC(NaN);\n        if (flags != null) {\n            extend(getParsingFlags(m), flags);\n        }\n        else {\n            getParsingFlags(m).userInvalidated = true;\n        }\n\n        return m;\n    }\n\n    // Plugins that add properties should also add the key here (null value),\n    // so we can properly clone ourselves.\n    var momentProperties = hooks.momentProperties = [];\n\n    function copyConfig(to, from) {\n        var i, prop, val;\n\n        if (!isUndefined(from._isAMomentObject)) {\n            to._isAMomentObject = from._isAMomentObject;\n        }\n        if (!isUndefined(from._i)) {\n            to._i = from._i;\n        }\n        if (!isUndefined(from._f)) {\n            to._f = from._f;\n        }\n        if (!isUndefined(from._l)) {\n            to._l = from._l;\n        }\n        if (!isUndefined(from._strict)) {\n            to._strict = from._strict;\n        }\n        if (!isUndefined(from._tzm)) {\n            to._tzm = from._tzm;\n        }\n        if (!isUndefined(from._isUTC)) {\n            to._isUTC = from._isUTC;\n        }\n        if (!isUndefined(from._offset)) {\n            to._offset = from._offset;\n        }\n        if (!isUndefined(from._pf)) {\n            to._pf = getParsingFlags(from);\n        }\n        if (!isUndefined(from._locale)) {\n            to._locale = from._locale;\n        }\n\n        if (momentProperties.length > 0) {\n            for (i = 0; i < momentProperties.length; i++) {\n                prop = momentProperties[i];\n                val = from[prop];\n                if (!isUndefined(val)) {\n                    to[prop] = val;\n                }\n            }\n        }\n\n        return to;\n    }\n\n    var updateInProgress = false;\n\n    // Moment prototype object\n    function Moment(config) {\n        copyConfig(this, config);\n        this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n        if (!this.isValid()) {\n            this._d = new Date(NaN);\n        }\n        // Prevent infinite loop in case updateOffset creates new moment\n        // objects.\n        if (updateInProgress === false) {\n            updateInProgress = true;\n            hooks.updateOffset(this);\n            updateInProgress = false;\n        }\n    }\n\n    function isMoment (obj) {\n        return obj instanceof Moment || (obj != null && obj._isAMomentObject != null);\n    }\n\n    function absFloor (number) {\n        if (number < 0) {\n            // -0 -> 0\n            return Math.ceil(number) || 0;\n        } else {\n            return Math.floor(number);\n        }\n    }\n\n    function toInt(argumentForCoercion) {\n        var coercedNumber = +argumentForCoercion,\n            value = 0;\n\n        if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n            value = absFloor(coercedNumber);\n        }\n\n        return value;\n    }\n\n    // compare two arrays, return the number of differences\n    function compareArrays(array1, array2, dontConvert) {\n        var len = Math.min(array1.length, array2.length),\n            lengthDiff = Math.abs(array1.length - array2.length),\n            diffs = 0,\n            i;\n        for (i = 0; i < len; i++) {\n            if ((dontConvert && array1[i] !== array2[i]) ||\n                (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) {\n                diffs++;\n            }\n        }\n        return diffs + lengthDiff;\n    }\n\n    function warn(msg) {\n        if (hooks.suppressDeprecationWarnings === false &&\n                (typeof console !==  'undefined') && console.warn) {\n            console.warn('Deprecation warning: ' + msg);\n        }\n    }\n\n    function deprecate(msg, fn) {\n        var firstTime = true;\n\n        return extend(function () {\n            if (hooks.deprecationHandler != null) {\n                hooks.deprecationHandler(null, msg);\n            }\n            if (firstTime) {\n                var args = [];\n                var arg;\n                for (var i = 0; i < arguments.length; i++) {\n                    arg = '';\n                    if (typeof arguments[i] === 'object') {\n                        arg += '\\n[' + i + '] ';\n                        for (var key in arguments[0]) {\n                            arg += key + ': ' + arguments[0][key] + ', ';\n                        }\n                        arg = arg.slice(0, -2); // Remove trailing comma and space\n                    } else {\n                        arg = arguments[i];\n                    }\n                    args.push(arg);\n                }\n                warn(msg + '\\nArguments: ' + Array.prototype.slice.call(args).join('') + '\\n' + (new Error()).stack);\n                firstTime = false;\n            }\n            return fn.apply(this, arguments);\n        }, fn);\n    }\n\n    var deprecations = {};\n\n    function deprecateSimple(name, msg) {\n        if (hooks.deprecationHandler != null) {\n            hooks.deprecationHandler(name, msg);\n        }\n        if (!deprecations[name]) {\n            warn(msg);\n            deprecations[name] = true;\n        }\n    }\n\n    hooks.suppressDeprecationWarnings = false;\n    hooks.deprecationHandler = null;\n\n    function isFunction(input) {\n        return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]';\n    }\n\n    function set (config) {\n        var prop, i;\n        for (i in config) {\n            prop = config[i];\n            if (isFunction(prop)) {\n                this[i] = prop;\n            } else {\n                this['_' + i] = prop;\n            }\n        }\n        this._config = config;\n        // Lenient ordinal parsing accepts just a number in addition to\n        // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n        // TODO: Remove \"ordinalParse\" fallback in next major release.\n        this._dayOfMonthOrdinalParseLenient = new RegExp(\n            (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n                '|' + (/\\d{1,2}/).source);\n    }\n\n    function mergeConfigs(parentConfig, childConfig) {\n        var res = extend({}, parentConfig), prop;\n        for (prop in childConfig) {\n            if (hasOwnProp(childConfig, prop)) {\n                if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n                    res[prop] = {};\n                    extend(res[prop], parentConfig[prop]);\n                    extend(res[prop], childConfig[prop]);\n                } else if (childConfig[prop] != null) {\n                    res[prop] = childConfig[prop];\n                } else {\n                    delete res[prop];\n                }\n            }\n        }\n        for (prop in parentConfig) {\n            if (hasOwnProp(parentConfig, prop) &&\n                    !hasOwnProp(childConfig, prop) &&\n                    isObject(parentConfig[prop])) {\n                // make sure changes to properties don't modify parent config\n                res[prop] = extend({}, res[prop]);\n            }\n        }\n        return res;\n    }\n\n    function Locale(config) {\n        if (config != null) {\n            this.set(config);\n        }\n    }\n\n    var keys;\n\n    if (Object.keys) {\n        keys = Object.keys;\n    } else {\n        keys = function (obj) {\n            var i, res = [];\n            for (i in obj) {\n                if (hasOwnProp(obj, i)) {\n                    res.push(i);\n                }\n            }\n            return res;\n        };\n    }\n\n    var defaultCalendar = {\n        sameDay : '[Today at] LT',\n        nextDay : '[Tomorrow at] LT',\n        nextWeek : 'dddd [at] LT',\n        lastDay : '[Yesterday at] LT',\n        lastWeek : '[Last] dddd [at] LT',\n        sameElse : 'L'\n    };\n\n    function calendar (key, mom, now) {\n        var output = this._calendar[key] || this._calendar['sameElse'];\n        return isFunction(output) ? output.call(mom, now) : output;\n    }\n\n    var defaultLongDateFormat = {\n        LTS  : 'h:mm:ss A',\n        LT   : 'h:mm A',\n        L    : 'MM/DD/YYYY',\n        LL   : 'MMMM D, YYYY',\n        LLL  : 'MMMM D, YYYY h:mm A',\n        LLLL : 'dddd, MMMM D, YYYY h:mm A'\n    };\n\n    function longDateFormat (key) {\n        var format = this._longDateFormat[key],\n            formatUpper = this._longDateFormat[key.toUpperCase()];\n\n        if (format || !formatUpper) {\n            return format;\n        }\n\n        this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) {\n            return val.slice(1);\n        });\n\n        return this._longDateFormat[key];\n    }\n\n    var defaultInvalidDate = 'Invalid date';\n\n    function invalidDate () {\n        return this._invalidDate;\n    }\n\n    var defaultOrdinal = '%d';\n    var defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n    function ordinal (number) {\n        return this._ordinal.replace('%d', number);\n    }\n\n    var defaultRelativeTime = {\n        future : 'in %s',\n        past   : '%s ago',\n        s  : 'a few seconds',\n        ss : '%d seconds',\n        m  : 'a minute',\n        mm : '%d minutes',\n        h  : 'an hour',\n        hh : '%d hours',\n        d  : 'a day',\n        dd : '%d days',\n        M  : 'a month',\n        MM : '%d months',\n        y  : 'a year',\n        yy : '%d years'\n    };\n\n    function relativeTime (number, withoutSuffix, string, isFuture) {\n        var output = this._relativeTime[string];\n        return (isFunction(output)) ?\n            output(number, withoutSuffix, string, isFuture) :\n            output.replace(/%d/i, number);\n    }\n\n    function pastFuture (diff, output) {\n        var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n        return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n    }\n\n    var aliases = {};\n\n    function addUnitAlias (unit, shorthand) {\n        var lowerCase = unit.toLowerCase();\n        aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n    }\n\n    function normalizeUnits(units) {\n        return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined;\n    }\n\n    function normalizeObjectUnits(inputObject) {\n        var normalizedInput = {},\n            normalizedProp,\n            prop;\n\n        for (prop in inputObject) {\n            if (hasOwnProp(inputObject, prop)) {\n                normalizedProp = normalizeUnits(prop);\n                if (normalizedProp) {\n                    normalizedInput[normalizedProp] = inputObject[prop];\n                }\n            }\n        }\n\n        return normalizedInput;\n    }\n\n    var priorities = {};\n\n    function addUnitPriority(unit, priority) {\n        priorities[unit] = priority;\n    }\n\n    function getPrioritizedUnits(unitsObj) {\n        var units = [];\n        for (var u in unitsObj) {\n            units.push({unit: u, priority: priorities[u]});\n        }\n        units.sort(function (a, b) {\n            return a.priority - b.priority;\n        });\n        return units;\n    }\n\n    function zeroFill(number, targetLength, forceSign) {\n        var absNumber = '' + Math.abs(number),\n            zerosToFill = targetLength - absNumber.length,\n            sign = number >= 0;\n        return (sign ? (forceSign ? '+' : '') : '-') +\n            Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber;\n    }\n\n    var formattingTokens = /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g;\n\n    var localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g;\n\n    var formatFunctions = {};\n\n    var formatTokenFunctions = {};\n\n    // token:    'M'\n    // padded:   ['MM', 2]\n    // ordinal:  'Mo'\n    // callback: function () { this.month() + 1 }\n    function addFormatToken (token, padded, ordinal, callback) {\n        var func = callback;\n        if (typeof callback === 'string') {\n            func = function () {\n                return this[callback]();\n            };\n        }\n        if (token) {\n            formatTokenFunctions[token] = func;\n        }\n        if (padded) {\n            formatTokenFunctions[padded[0]] = function () {\n                return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n            };\n        }\n        if (ordinal) {\n            formatTokenFunctions[ordinal] = function () {\n                return this.localeData().ordinal(func.apply(this, arguments), token);\n            };\n        }\n    }\n\n    function removeFormattingTokens(input) {\n        if (input.match(/\\[[\\s\\S]/)) {\n            return input.replace(/^\\[|\\]$/g, '');\n        }\n        return input.replace(/\\\\/g, '');\n    }\n\n    function makeFormatFunction(format) {\n        var array = format.match(formattingTokens), i, length;\n\n        for (i = 0, length = array.length; i < length; i++) {\n            if (formatTokenFunctions[array[i]]) {\n                array[i] = formatTokenFunctions[array[i]];\n            } else {\n                array[i] = removeFormattingTokens(array[i]);\n            }\n        }\n\n        return function (mom) {\n            var output = '', i;\n            for (i = 0; i < length; i++) {\n                output += isFunction(array[i]) ? array[i].call(mom, format) : array[i];\n            }\n            return output;\n        };\n    }\n\n    // format date using native date object\n    function formatMoment(m, format) {\n        if (!m.isValid()) {\n            return m.localeData().invalidDate();\n        }\n\n        format = expandFormat(format, m.localeData());\n        formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format);\n\n        return formatFunctions[format](m);\n    }\n\n    function expandFormat(format, locale) {\n        var i = 5;\n\n        function replaceLongDateFormatTokens(input) {\n            return locale.longDateFormat(input) || input;\n        }\n\n        localFormattingTokens.lastIndex = 0;\n        while (i >= 0 && localFormattingTokens.test(format)) {\n            format = format.replace(localFormattingTokens, replaceLongDateFormatTokens);\n            localFormattingTokens.lastIndex = 0;\n            i -= 1;\n        }\n\n        return format;\n    }\n\n    var match1         = /\\d/;            //       0 - 9\n    var match2         = /\\d\\d/;          //      00 - 99\n    var match3         = /\\d{3}/;         //     000 - 999\n    var match4         = /\\d{4}/;         //    0000 - 9999\n    var match6         = /[+-]?\\d{6}/;    // -999999 - 999999\n    var match1to2      = /\\d\\d?/;         //       0 - 99\n    var match3to4      = /\\d\\d\\d\\d?/;     //     999 - 9999\n    var match5to6      = /\\d\\d\\d\\d\\d\\d?/; //   99999 - 999999\n    var match1to3      = /\\d{1,3}/;       //       0 - 999\n    var match1to4      = /\\d{1,4}/;       //       0 - 9999\n    var match1to6      = /[+-]?\\d{1,6}/;  // -999999 - 999999\n\n    var matchUnsigned  = /\\d+/;           //       0 - inf\n    var matchSigned    = /[+-]?\\d+/;      //    -inf - inf\n\n    var matchOffset    = /Z|[+-]\\d\\d:?\\d\\d/gi; // +00:00 -00:00 +0000 -0000 or Z\n    var matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi; // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n\n    var matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/; // 123456789 123456789.123\n\n    // any word (or two) characters or numbers including two/three word month in arabic.\n    // includes scottish gaelic two word and hyphenated months\n    var matchWord = /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i;\n\n    var regexes = {};\n\n    function addRegexToken (token, regex, strictRegex) {\n        regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) {\n            return (isStrict && strictRegex) ? strictRegex : regex;\n        };\n    }\n\n    function getParseRegexForToken (token, config) {\n        if (!hasOwnProp(regexes, token)) {\n            return new RegExp(unescapeFormat(token));\n        }\n\n        return regexes[token](config._strict, config._locale);\n    }\n\n    // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n    function unescapeFormat(s) {\n        return regexEscape(s.replace('\\\\', '').replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, function (matched, p1, p2, p3, p4) {\n            return p1 || p2 || p3 || p4;\n        }));\n    }\n\n    function regexEscape(s) {\n        return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n    }\n\n    var tokens = {};\n\n    function addParseToken (token, callback) {\n        var i, func = callback;\n        if (typeof token === 'string') {\n            token = [token];\n        }\n        if (isNumber(callback)) {\n            func = function (input, array) {\n                array[callback] = toInt(input);\n            };\n        }\n        for (i = 0; i < token.length; i++) {\n            tokens[token[i]] = func;\n        }\n    }\n\n    function addWeekParseToken (token, callback) {\n        addParseToken(token, function (input, array, config, token) {\n            config._w = config._w || {};\n            callback(input, config._w, config, token);\n        });\n    }\n\n    function addTimeToArrayFromToken(token, input, config) {\n        if (input != null && hasOwnProp(tokens, token)) {\n            tokens[token](input, config._a, config, token);\n        }\n    }\n\n    var YEAR = 0;\n    var MONTH = 1;\n    var DATE = 2;\n    var HOUR = 3;\n    var MINUTE = 4;\n    var SECOND = 5;\n    var MILLISECOND = 6;\n    var WEEK = 7;\n    var WEEKDAY = 8;\n\n    // FORMATTING\n\n    addFormatToken('Y', 0, 0, function () {\n        var y = this.year();\n        return y <= 9999 ? '' + y : '+' + y;\n    });\n\n    addFormatToken(0, ['YY', 2], 0, function () {\n        return this.year() % 100;\n    });\n\n    addFormatToken(0, ['YYYY',   4],       0, 'year');\n    addFormatToken(0, ['YYYYY',  5],       0, 'year');\n    addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n    // ALIASES\n\n    addUnitAlias('year', 'y');\n\n    // PRIORITIES\n\n    addUnitPriority('year', 1);\n\n    // PARSING\n\n    addRegexToken('Y',      matchSigned);\n    addRegexToken('YY',     match1to2, match2);\n    addRegexToken('YYYY',   match1to4, match4);\n    addRegexToken('YYYYY',  match1to6, match6);\n    addRegexToken('YYYYYY', match1to6, match6);\n\n    addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n    addParseToken('YYYY', function (input, array) {\n        array[YEAR] = input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n    });\n    addParseToken('YY', function (input, array) {\n        array[YEAR] = hooks.parseTwoDigitYear(input);\n    });\n    addParseToken('Y', function (input, array) {\n        array[YEAR] = parseInt(input, 10);\n    });\n\n    // HELPERS\n\n    function daysInYear(year) {\n        return isLeapYear(year) ? 366 : 365;\n    }\n\n    function isLeapYear(year) {\n        return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n    }\n\n    // HOOKS\n\n    hooks.parseTwoDigitYear = function (input) {\n        return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n    };\n\n    // MOMENTS\n\n    var getSetYear = makeGetSet('FullYear', true);\n\n    function getIsLeapYear () {\n        return isLeapYear(this.year());\n    }\n\n    function makeGetSet (unit, keepTime) {\n        return function (value) {\n            if (value != null) {\n                set$1(this, unit, value);\n                hooks.updateOffset(this, keepTime);\n                return this;\n            } else {\n                return get(this, unit);\n            }\n        };\n    }\n\n    function get (mom, unit) {\n        return mom.isValid() ?\n            mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() : NaN;\n    }\n\n    function set$1 (mom, unit, value) {\n        if (mom.isValid() && !isNaN(value)) {\n            if (unit === 'FullYear' && isLeapYear(mom.year()) && mom.month() === 1 && mom.date() === 29) {\n                mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value, mom.month(), daysInMonth(value, mom.month()));\n            }\n            else {\n                mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n            }\n        }\n    }\n\n    // MOMENTS\n\n    function stringGet (units) {\n        units = normalizeUnits(units);\n        if (isFunction(this[units])) {\n            return this[units]();\n        }\n        return this;\n    }\n\n\n    function stringSet (units, value) {\n        if (typeof units === 'object') {\n            units = normalizeObjectUnits(units);\n            var prioritized = getPrioritizedUnits(units);\n            for (var i = 0; i < prioritized.length; i++) {\n                this[prioritized[i].unit](units[prioritized[i].unit]);\n            }\n        } else {\n            units = normalizeUnits(units);\n            if (isFunction(this[units])) {\n                return this[units](value);\n            }\n        }\n        return this;\n    }\n\n    function mod(n, x) {\n        return ((n % x) + x) % x;\n    }\n\n    var indexOf;\n\n    if (Array.prototype.indexOf) {\n        indexOf = Array.prototype.indexOf;\n    } else {\n        indexOf = function (o) {\n            // I know\n            var i;\n            for (i = 0; i < this.length; ++i) {\n                if (this[i] === o) {\n                    return i;\n                }\n            }\n            return -1;\n        };\n    }\n\n    function daysInMonth(year, month) {\n        if (isNaN(year) || isNaN(month)) {\n            return NaN;\n        }\n        var modMonth = mod(month, 12);\n        year += (month - modMonth) / 12;\n        return modMonth === 1 ? (isLeapYear(year) ? 29 : 28) : (31 - modMonth % 7 % 2);\n    }\n\n    // FORMATTING\n\n    addFormatToken('M', ['MM', 2], 'Mo', function () {\n        return this.month() + 1;\n    });\n\n    addFormatToken('MMM', 0, 0, function (format) {\n        return this.localeData().monthsShort(this, format);\n    });\n\n    addFormatToken('MMMM', 0, 0, function (format) {\n        return this.localeData().months(this, format);\n    });\n\n    // ALIASES\n\n    addUnitAlias('month', 'M');\n\n    // PRIORITY\n\n    addUnitPriority('month', 8);\n\n    // PARSING\n\n    addRegexToken('M',    match1to2);\n    addRegexToken('MM',   match1to2, match2);\n    addRegexToken('MMM',  function (isStrict, locale) {\n        return locale.monthsShortRegex(isStrict);\n    });\n    addRegexToken('MMMM', function (isStrict, locale) {\n        return locale.monthsRegex(isStrict);\n    });\n\n    addParseToken(['M', 'MM'], function (input, array) {\n        array[MONTH] = toInt(input) - 1;\n    });\n\n    addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n        var month = config._locale.monthsParse(input, token, config._strict);\n        // if we didn't find a month name, mark the date as invalid.\n        if (month != null) {\n            array[MONTH] = month;\n        } else {\n            getParsingFlags(config).invalidMonth = input;\n        }\n    });\n\n    // LOCALES\n\n    var MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/;\n    var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_');\n    function localeMonths (m, format) {\n        if (!m) {\n            return isArray(this._months) ? this._months :\n                this._months['standalone'];\n        }\n        return isArray(this._months) ? this._months[m.month()] :\n            this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format) ? 'format' : 'standalone'][m.month()];\n    }\n\n    var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_');\n    function localeMonthsShort (m, format) {\n        if (!m) {\n            return isArray(this._monthsShort) ? this._monthsShort :\n                this._monthsShort['standalone'];\n        }\n        return isArray(this._monthsShort) ? this._monthsShort[m.month()] :\n            this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()];\n    }\n\n    function handleStrictParse(monthName, format, strict) {\n        var i, ii, mom, llc = monthName.toLocaleLowerCase();\n        if (!this._monthsParse) {\n            // this is not used\n            this._monthsParse = [];\n            this._longMonthsParse = [];\n            this._shortMonthsParse = [];\n            for (i = 0; i < 12; ++i) {\n                mom = createUTC([2000, i]);\n                this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase();\n                this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n            }\n        }\n\n        if (strict) {\n            if (format === 'MMM') {\n                ii = indexOf.call(this._shortMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._longMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        } else {\n            if (format === 'MMM') {\n                ii = indexOf.call(this._shortMonthsParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._longMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._longMonthsParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._shortMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        }\n    }\n\n    function localeMonthsParse (monthName, format, strict) {\n        var i, mom, regex;\n\n        if (this._monthsParseExact) {\n            return handleStrictParse.call(this, monthName, format, strict);\n        }\n\n        if (!this._monthsParse) {\n            this._monthsParse = [];\n            this._longMonthsParse = [];\n            this._shortMonthsParse = [];\n        }\n\n        // TODO: add sorting\n        // Sorting makes sure if one month (or abbr) is a prefix of another\n        // see sorting in computeMonthsParse\n        for (i = 0; i < 12; i++) {\n            // make the regex if we don't have it already\n            mom = createUTC([2000, i]);\n            if (strict && !this._longMonthsParse[i]) {\n                this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i');\n                this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i');\n            }\n            if (!strict && !this._monthsParse[i]) {\n                regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n                this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n            }\n            // test the regex\n            if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) {\n                return i;\n            } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) {\n                return i;\n            } else if (!strict && this._monthsParse[i].test(monthName)) {\n                return i;\n            }\n        }\n    }\n\n    // MOMENTS\n\n    function setMonth (mom, value) {\n        var dayOfMonth;\n\n        if (!mom.isValid()) {\n            // No op\n            return mom;\n        }\n\n        if (typeof value === 'string') {\n            if (/^\\d+$/.test(value)) {\n                value = toInt(value);\n            } else {\n                value = mom.localeData().monthsParse(value);\n                // TODO: Another silent failure?\n                if (!isNumber(value)) {\n                    return mom;\n                }\n            }\n        }\n\n        dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n        mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n        return mom;\n    }\n\n    function getSetMonth (value) {\n        if (value != null) {\n            setMonth(this, value);\n            hooks.updateOffset(this, true);\n            return this;\n        } else {\n            return get(this, 'Month');\n        }\n    }\n\n    function getDaysInMonth () {\n        return daysInMonth(this.year(), this.month());\n    }\n\n    var defaultMonthsShortRegex = matchWord;\n    function monthsShortRegex (isStrict) {\n        if (this._monthsParseExact) {\n            if (!hasOwnProp(this, '_monthsRegex')) {\n                computeMonthsParse.call(this);\n            }\n            if (isStrict) {\n                return this._monthsShortStrictRegex;\n            } else {\n                return this._monthsShortRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_monthsShortRegex')) {\n                this._monthsShortRegex = defaultMonthsShortRegex;\n            }\n            return this._monthsShortStrictRegex && isStrict ?\n                this._monthsShortStrictRegex : this._monthsShortRegex;\n        }\n    }\n\n    var defaultMonthsRegex = matchWord;\n    function monthsRegex (isStrict) {\n        if (this._monthsParseExact) {\n            if (!hasOwnProp(this, '_monthsRegex')) {\n                computeMonthsParse.call(this);\n            }\n            if (isStrict) {\n                return this._monthsStrictRegex;\n            } else {\n                return this._monthsRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_monthsRegex')) {\n                this._monthsRegex = defaultMonthsRegex;\n            }\n            return this._monthsStrictRegex && isStrict ?\n                this._monthsStrictRegex : this._monthsRegex;\n        }\n    }\n\n    function computeMonthsParse () {\n        function cmpLenRev(a, b) {\n            return b.length - a.length;\n        }\n\n        var shortPieces = [], longPieces = [], mixedPieces = [],\n            i, mom;\n        for (i = 0; i < 12; i++) {\n            // make the regex if we don't have it already\n            mom = createUTC([2000, i]);\n            shortPieces.push(this.monthsShort(mom, ''));\n            longPieces.push(this.months(mom, ''));\n            mixedPieces.push(this.months(mom, ''));\n            mixedPieces.push(this.monthsShort(mom, ''));\n        }\n        // Sorting makes sure if one month (or abbr) is a prefix of another it\n        // will match the longer piece.\n        shortPieces.sort(cmpLenRev);\n        longPieces.sort(cmpLenRev);\n        mixedPieces.sort(cmpLenRev);\n        for (i = 0; i < 12; i++) {\n            shortPieces[i] = regexEscape(shortPieces[i]);\n            longPieces[i] = regexEscape(longPieces[i]);\n        }\n        for (i = 0; i < 24; i++) {\n            mixedPieces[i] = regexEscape(mixedPieces[i]);\n        }\n\n        this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n        this._monthsShortRegex = this._monthsRegex;\n        this._monthsStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n        this._monthsShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n    }\n\n    function createDate (y, m, d, h, M, s, ms) {\n        // can't just apply() to create a date:\n        // https://stackoverflow.com/q/181348\n        var date;\n        // the date constructor remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            // preserve leap years using a full 400 year cycle, then reset\n            date = new Date(y + 400, m, d, h, M, s, ms);\n            if (isFinite(date.getFullYear())) {\n                date.setFullYear(y);\n            }\n        } else {\n            date = new Date(y, m, d, h, M, s, ms);\n        }\n\n        return date;\n    }\n\n    function createUTCDate (y) {\n        var date;\n        // the Date.UTC function remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            var args = Array.prototype.slice.call(arguments);\n            // preserve leap years using a full 400 year cycle, then reset\n            args[0] = y + 400;\n            date = new Date(Date.UTC.apply(null, args));\n            if (isFinite(date.getUTCFullYear())) {\n                date.setUTCFullYear(y);\n            }\n        } else {\n            date = new Date(Date.UTC.apply(null, arguments));\n        }\n\n        return date;\n    }\n\n    // start-of-first-week - start-of-year\n    function firstWeekOffset(year, dow, doy) {\n        var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n            fwd = 7 + dow - doy,\n            // first-week day local weekday -- which local weekday is fwd\n            fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n        return -fwdlw + fwd - 1;\n    }\n\n    // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n    function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n        var localWeekday = (7 + weekday - dow) % 7,\n            weekOffset = firstWeekOffset(year, dow, doy),\n            dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n            resYear, resDayOfYear;\n\n        if (dayOfYear <= 0) {\n            resYear = year - 1;\n            resDayOfYear = daysInYear(resYear) + dayOfYear;\n        } else if (dayOfYear > daysInYear(year)) {\n            resYear = year + 1;\n            resDayOfYear = dayOfYear - daysInYear(year);\n        } else {\n            resYear = year;\n            resDayOfYear = dayOfYear;\n        }\n\n        return {\n            year: resYear,\n            dayOfYear: resDayOfYear\n        };\n    }\n\n    function weekOfYear(mom, dow, doy) {\n        var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n            week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n            resWeek, resYear;\n\n        if (week < 1) {\n            resYear = mom.year() - 1;\n            resWeek = week + weeksInYear(resYear, dow, doy);\n        } else if (week > weeksInYear(mom.year(), dow, doy)) {\n            resWeek = week - weeksInYear(mom.year(), dow, doy);\n            resYear = mom.year() + 1;\n        } else {\n            resYear = mom.year();\n            resWeek = week;\n        }\n\n        return {\n            week: resWeek,\n            year: resYear\n        };\n    }\n\n    function weeksInYear(year, dow, doy) {\n        var weekOffset = firstWeekOffset(year, dow, doy),\n            weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n        return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n    }\n\n    // FORMATTING\n\n    addFormatToken('w', ['ww', 2], 'wo', 'week');\n    addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n    // ALIASES\n\n    addUnitAlias('week', 'w');\n    addUnitAlias('isoWeek', 'W');\n\n    // PRIORITIES\n\n    addUnitPriority('week', 5);\n    addUnitPriority('isoWeek', 5);\n\n    // PARSING\n\n    addRegexToken('w',  match1to2);\n    addRegexToken('ww', match1to2, match2);\n    addRegexToken('W',  match1to2);\n    addRegexToken('WW', match1to2, match2);\n\n    addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) {\n        week[token.substr(0, 1)] = toInt(input);\n    });\n\n    // HELPERS\n\n    // LOCALES\n\n    function localeWeek (mom) {\n        return weekOfYear(mom, this._week.dow, this._week.doy).week;\n    }\n\n    var defaultLocaleWeek = {\n        dow : 0, // Sunday is the first day of the week.\n        doy : 6  // The week that contains Jan 6th is the first week of the year.\n    };\n\n    function localeFirstDayOfWeek () {\n        return this._week.dow;\n    }\n\n    function localeFirstDayOfYear () {\n        return this._week.doy;\n    }\n\n    // MOMENTS\n\n    function getSetWeek (input) {\n        var week = this.localeData().week(this);\n        return input == null ? week : this.add((input - week) * 7, 'd');\n    }\n\n    function getSetISOWeek (input) {\n        var week = weekOfYear(this, 1, 4).week;\n        return input == null ? week : this.add((input - week) * 7, 'd');\n    }\n\n    // FORMATTING\n\n    addFormatToken('d', 0, 'do', 'day');\n\n    addFormatToken('dd', 0, 0, function (format) {\n        return this.localeData().weekdaysMin(this, format);\n    });\n\n    addFormatToken('ddd', 0, 0, function (format) {\n        return this.localeData().weekdaysShort(this, format);\n    });\n\n    addFormatToken('dddd', 0, 0, function (format) {\n        return this.localeData().weekdays(this, format);\n    });\n\n    addFormatToken('e', 0, 0, 'weekday');\n    addFormatToken('E', 0, 0, 'isoWeekday');\n\n    // ALIASES\n\n    addUnitAlias('day', 'd');\n    addUnitAlias('weekday', 'e');\n    addUnitAlias('isoWeekday', 'E');\n\n    // PRIORITY\n    addUnitPriority('day', 11);\n    addUnitPriority('weekday', 11);\n    addUnitPriority('isoWeekday', 11);\n\n    // PARSING\n\n    addRegexToken('d',    match1to2);\n    addRegexToken('e',    match1to2);\n    addRegexToken('E',    match1to2);\n    addRegexToken('dd',   function (isStrict, locale) {\n        return locale.weekdaysMinRegex(isStrict);\n    });\n    addRegexToken('ddd',   function (isStrict, locale) {\n        return locale.weekdaysShortRegex(isStrict);\n    });\n    addRegexToken('dddd',   function (isStrict, locale) {\n        return locale.weekdaysRegex(isStrict);\n    });\n\n    addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n        var weekday = config._locale.weekdaysParse(input, token, config._strict);\n        // if we didn't get a weekday name, mark the date as invalid\n        if (weekday != null) {\n            week.d = weekday;\n        } else {\n            getParsingFlags(config).invalidWeekday = input;\n        }\n    });\n\n    addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n        week[token] = toInt(input);\n    });\n\n    // HELPERS\n\n    function parseWeekday(input, locale) {\n        if (typeof input !== 'string') {\n            return input;\n        }\n\n        if (!isNaN(input)) {\n            return parseInt(input, 10);\n        }\n\n        input = locale.weekdaysParse(input);\n        if (typeof input === 'number') {\n            return input;\n        }\n\n        return null;\n    }\n\n    function parseIsoWeekday(input, locale) {\n        if (typeof input === 'string') {\n            return locale.weekdaysParse(input) % 7 || 7;\n        }\n        return isNaN(input) ? null : input;\n    }\n\n    // LOCALES\n    function shiftWeekdays (ws, n) {\n        return ws.slice(n, 7).concat(ws.slice(0, n));\n    }\n\n    var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_');\n    function localeWeekdays (m, format) {\n        var weekdays = isArray(this._weekdays) ? this._weekdays :\n            this._weekdays[(m && m !== true && this._weekdays.isFormat.test(format)) ? 'format' : 'standalone'];\n        return (m === true) ? shiftWeekdays(weekdays, this._week.dow)\n            : (m) ? weekdays[m.day()] : weekdays;\n    }\n\n    var defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_');\n    function localeWeekdaysShort (m) {\n        return (m === true) ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n            : (m) ? this._weekdaysShort[m.day()] : this._weekdaysShort;\n    }\n\n    var defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_');\n    function localeWeekdaysMin (m) {\n        return (m === true) ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n            : (m) ? this._weekdaysMin[m.day()] : this._weekdaysMin;\n    }\n\n    function handleStrictParse$1(weekdayName, format, strict) {\n        var i, ii, mom, llc = weekdayName.toLocaleLowerCase();\n        if (!this._weekdaysParse) {\n            this._weekdaysParse = [];\n            this._shortWeekdaysParse = [];\n            this._minWeekdaysParse = [];\n\n            for (i = 0; i < 7; ++i) {\n                mom = createUTC([2000, 1]).day(i);\n                this._minWeekdaysParse[i] = this.weekdaysMin(mom, '').toLocaleLowerCase();\n                this._shortWeekdaysParse[i] = this.weekdaysShort(mom, '').toLocaleLowerCase();\n                this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n            }\n        }\n\n        if (strict) {\n            if (format === 'dddd') {\n                ii = indexOf.call(this._weekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else if (format === 'ddd') {\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        } else {\n            if (format === 'dddd') {\n                ii = indexOf.call(this._weekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else if (format === 'ddd') {\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._weekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._weekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        }\n    }\n\n    function localeWeekdaysParse (weekdayName, format, strict) {\n        var i, mom, regex;\n\n        if (this._weekdaysParseExact) {\n            return handleStrictParse$1.call(this, weekdayName, format, strict);\n        }\n\n        if (!this._weekdaysParse) {\n            this._weekdaysParse = [];\n            this._minWeekdaysParse = [];\n            this._shortWeekdaysParse = [];\n            this._fullWeekdaysParse = [];\n        }\n\n        for (i = 0; i < 7; i++) {\n            // make the regex if we don't have it already\n\n            mom = createUTC([2000, 1]).day(i);\n            if (strict && !this._fullWeekdaysParse[i]) {\n                this._fullWeekdaysParse[i] = new RegExp('^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$', 'i');\n                this._shortWeekdaysParse[i] = new RegExp('^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$', 'i');\n                this._minWeekdaysParse[i] = new RegExp('^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$', 'i');\n            }\n            if (!this._weekdaysParse[i]) {\n                regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, '');\n                this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n            }\n            // test the regex\n            if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) {\n                return i;\n            } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) {\n                return i;\n            } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) {\n                return i;\n            } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n                return i;\n            }\n        }\n    }\n\n    // MOMENTS\n\n    function getSetDayOfWeek (input) {\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n        var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n        if (input != null) {\n            input = parseWeekday(input, this.localeData());\n            return this.add(input - day, 'd');\n        } else {\n            return day;\n        }\n    }\n\n    function getSetLocaleDayOfWeek (input) {\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n        var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n        return input == null ? weekday : this.add(input - weekday, 'd');\n    }\n\n    function getSetISODayOfWeek (input) {\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n\n        // behaves the same as moment#day except\n        // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n        // as a setter, sunday should belong to the previous week.\n\n        if (input != null) {\n            var weekday = parseIsoWeekday(input, this.localeData());\n            return this.day(this.day() % 7 ? weekday : weekday - 7);\n        } else {\n            return this.day() || 7;\n        }\n    }\n\n    var defaultWeekdaysRegex = matchWord;\n    function weekdaysRegex (isStrict) {\n        if (this._weekdaysParseExact) {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                computeWeekdaysParse.call(this);\n            }\n            if (isStrict) {\n                return this._weekdaysStrictRegex;\n            } else {\n                return this._weekdaysRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                this._weekdaysRegex = defaultWeekdaysRegex;\n            }\n            return this._weekdaysStrictRegex && isStrict ?\n                this._weekdaysStrictRegex : this._weekdaysRegex;\n        }\n    }\n\n    var defaultWeekdaysShortRegex = matchWord;\n    function weekdaysShortRegex (isStrict) {\n        if (this._weekdaysParseExact) {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                computeWeekdaysParse.call(this);\n            }\n            if (isStrict) {\n                return this._weekdaysShortStrictRegex;\n            } else {\n                return this._weekdaysShortRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n                this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n            }\n            return this._weekdaysShortStrictRegex && isStrict ?\n                this._weekdaysShortStrictRegex : this._weekdaysShortRegex;\n        }\n    }\n\n    var defaultWeekdaysMinRegex = matchWord;\n    function weekdaysMinRegex (isStrict) {\n        if (this._weekdaysParseExact) {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                computeWeekdaysParse.call(this);\n            }\n            if (isStrict) {\n                return this._weekdaysMinStrictRegex;\n            } else {\n                return this._weekdaysMinRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n                this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n            }\n            return this._weekdaysMinStrictRegex && isStrict ?\n                this._weekdaysMinStrictRegex : this._weekdaysMinRegex;\n        }\n    }\n\n\n    function computeWeekdaysParse () {\n        function cmpLenRev(a, b) {\n            return b.length - a.length;\n        }\n\n        var minPieces = [], shortPieces = [], longPieces = [], mixedPieces = [],\n            i, mom, minp, shortp, longp;\n        for (i = 0; i < 7; i++) {\n            // make the regex if we don't have it already\n            mom = createUTC([2000, 1]).day(i);\n            minp = this.weekdaysMin(mom, '');\n            shortp = this.weekdaysShort(mom, '');\n            longp = this.weekdays(mom, '');\n            minPieces.push(minp);\n            shortPieces.push(shortp);\n            longPieces.push(longp);\n            mixedPieces.push(minp);\n            mixedPieces.push(shortp);\n            mixedPieces.push(longp);\n        }\n        // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n        // will match the longer piece.\n        minPieces.sort(cmpLenRev);\n        shortPieces.sort(cmpLenRev);\n        longPieces.sort(cmpLenRev);\n        mixedPieces.sort(cmpLenRev);\n        for (i = 0; i < 7; i++) {\n            shortPieces[i] = regexEscape(shortPieces[i]);\n            longPieces[i] = regexEscape(longPieces[i]);\n            mixedPieces[i] = regexEscape(mixedPieces[i]);\n        }\n\n        this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n        this._weekdaysShortRegex = this._weekdaysRegex;\n        this._weekdaysMinRegex = this._weekdaysRegex;\n\n        this._weekdaysStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n        this._weekdaysShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n        this._weekdaysMinStrictRegex = new RegExp('^(' + minPieces.join('|') + ')', 'i');\n    }\n\n    // FORMATTING\n\n    function hFormat() {\n        return this.hours() % 12 || 12;\n    }\n\n    function kFormat() {\n        return this.hours() || 24;\n    }\n\n    addFormatToken('H', ['HH', 2], 0, 'hour');\n    addFormatToken('h', ['hh', 2], 0, hFormat);\n    addFormatToken('k', ['kk', 2], 0, kFormat);\n\n    addFormatToken('hmm', 0, 0, function () {\n        return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n    });\n\n    addFormatToken('hmmss', 0, 0, function () {\n        return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) +\n            zeroFill(this.seconds(), 2);\n    });\n\n    addFormatToken('Hmm', 0, 0, function () {\n        return '' + this.hours() + zeroFill(this.minutes(), 2);\n    });\n\n    addFormatToken('Hmmss', 0, 0, function () {\n        return '' + this.hours() + zeroFill(this.minutes(), 2) +\n            zeroFill(this.seconds(), 2);\n    });\n\n    function meridiem (token, lowercase) {\n        addFormatToken(token, 0, 0, function () {\n            return this.localeData().meridiem(this.hours(), this.minutes(), lowercase);\n        });\n    }\n\n    meridiem('a', true);\n    meridiem('A', false);\n\n    // ALIASES\n\n    addUnitAlias('hour', 'h');\n\n    // PRIORITY\n    addUnitPriority('hour', 13);\n\n    // PARSING\n\n    function matchMeridiem (isStrict, locale) {\n        return locale._meridiemParse;\n    }\n\n    addRegexToken('a',  matchMeridiem);\n    addRegexToken('A',  matchMeridiem);\n    addRegexToken('H',  match1to2);\n    addRegexToken('h',  match1to2);\n    addRegexToken('k',  match1to2);\n    addRegexToken('HH', match1to2, match2);\n    addRegexToken('hh', match1to2, match2);\n    addRegexToken('kk', match1to2, match2);\n\n    addRegexToken('hmm', match3to4);\n    addRegexToken('hmmss', match5to6);\n    addRegexToken('Hmm', match3to4);\n    addRegexToken('Hmmss', match5to6);\n\n    addParseToken(['H', 'HH'], HOUR);\n    addParseToken(['k', 'kk'], function (input, array, config) {\n        var kInput = toInt(input);\n        array[HOUR] = kInput === 24 ? 0 : kInput;\n    });\n    addParseToken(['a', 'A'], function (input, array, config) {\n        config._isPm = config._locale.isPM(input);\n        config._meridiem = input;\n    });\n    addParseToken(['h', 'hh'], function (input, array, config) {\n        array[HOUR] = toInt(input);\n        getParsingFlags(config).bigHour = true;\n    });\n    addParseToken('hmm', function (input, array, config) {\n        var pos = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos));\n        array[MINUTE] = toInt(input.substr(pos));\n        getParsingFlags(config).bigHour = true;\n    });\n    addParseToken('hmmss', function (input, array, config) {\n        var pos1 = input.length - 4;\n        var pos2 = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos1));\n        array[MINUTE] = toInt(input.substr(pos1, 2));\n        array[SECOND] = toInt(input.substr(pos2));\n        getParsingFlags(config).bigHour = true;\n    });\n    addParseToken('Hmm', function (input, array, config) {\n        var pos = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos));\n        array[MINUTE] = toInt(input.substr(pos));\n    });\n    addParseToken('Hmmss', function (input, array, config) {\n        var pos1 = input.length - 4;\n        var pos2 = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos1));\n        array[MINUTE] = toInt(input.substr(pos1, 2));\n        array[SECOND] = toInt(input.substr(pos2));\n    });\n\n    // LOCALES\n\n    function localeIsPM (input) {\n        // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n        // Using charAt should be more compatible.\n        return ((input + '').toLowerCase().charAt(0) === 'p');\n    }\n\n    var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i;\n    function localeMeridiem (hours, minutes, isLower) {\n        if (hours > 11) {\n            return isLower ? 'pm' : 'PM';\n        } else {\n            return isLower ? 'am' : 'AM';\n        }\n    }\n\n\n    // MOMENTS\n\n    // Setting the hour should keep the time, because the user explicitly\n    // specified which hour they want. So trying to maintain the same hour (in\n    // a new timezone) makes sense. Adding/subtracting hours does not follow\n    // this rule.\n    var getSetHour = makeGetSet('Hours', true);\n\n    var baseConfig = {\n        calendar: defaultCalendar,\n        longDateFormat: defaultLongDateFormat,\n        invalidDate: defaultInvalidDate,\n        ordinal: defaultOrdinal,\n        dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n        relativeTime: defaultRelativeTime,\n\n        months: defaultLocaleMonths,\n        monthsShort: defaultLocaleMonthsShort,\n\n        week: defaultLocaleWeek,\n\n        weekdays: defaultLocaleWeekdays,\n        weekdaysMin: defaultLocaleWeekdaysMin,\n        weekdaysShort: defaultLocaleWeekdaysShort,\n\n        meridiemParse: defaultLocaleMeridiemParse\n    };\n\n    // internal storage for locale config files\n    var locales = {};\n    var localeFamilies = {};\n    var globalLocale;\n\n    function normalizeLocale(key) {\n        return key ? key.toLowerCase().replace('_', '-') : key;\n    }\n\n    // pick the locale from the array\n    // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n    // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n    function chooseLocale(names) {\n        var i = 0, j, next, locale, split;\n\n        while (i < names.length) {\n            split = normalizeLocale(names[i]).split('-');\n            j = split.length;\n            next = normalizeLocale(names[i + 1]);\n            next = next ? next.split('-') : null;\n            while (j > 0) {\n                locale = loadLocale(split.slice(0, j).join('-'));\n                if (locale) {\n                    return locale;\n                }\n                if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) {\n                    //the next array item is better than a shallower substring of this one\n                    break;\n                }\n                j--;\n            }\n            i++;\n        }\n        return globalLocale;\n    }\n\n    function loadLocale(name) {\n        var oldLocale = null;\n        // TODO: Find a better way to register and load all the locales in Node\n        if (!locales[name] && (typeof module !== 'undefined') &&\n                module && module.exports) {\n            try {\n                oldLocale = globalLocale._abbr;\n                var aliasedRequire = require;\n                aliasedRequire('./locale/' + name);\n                getSetGlobalLocale(oldLocale);\n            } catch (e) {}\n        }\n        return locales[name];\n    }\n\n    // This function will load locale and then set the global locale.  If\n    // no arguments are passed in, it will simply return the current global\n    // locale key.\n    function getSetGlobalLocale (key, values) {\n        var data;\n        if (key) {\n            if (isUndefined(values)) {\n                data = getLocale(key);\n            }\n            else {\n                data = defineLocale(key, values);\n            }\n\n            if (data) {\n                // moment.duration._locale = moment._locale = data;\n                globalLocale = data;\n            }\n            else {\n                if ((typeof console !==  'undefined') && console.warn) {\n                    //warn user if arguments are passed but the locale could not be set\n                    console.warn('Locale ' + key +  ' not found. Did you forget to load it?');\n                }\n            }\n        }\n\n        return globalLocale._abbr;\n    }\n\n    function defineLocale (name, config) {\n        if (config !== null) {\n            var locale, parentConfig = baseConfig;\n            config.abbr = name;\n            if (locales[name] != null) {\n                deprecateSimple('defineLocaleOverride',\n                        'use moment.updateLocale(localeName, config) to change ' +\n                        'an existing locale. moment.defineLocale(localeName, ' +\n                        'config) should only be used for creating a new locale ' +\n                        'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.');\n                parentConfig = locales[name]._config;\n            } else if (config.parentLocale != null) {\n                if (locales[config.parentLocale] != null) {\n                    parentConfig = locales[config.parentLocale]._config;\n                } else {\n                    locale = loadLocale(config.parentLocale);\n                    if (locale != null) {\n                        parentConfig = locale._config;\n                    } else {\n                        if (!localeFamilies[config.parentLocale]) {\n                            localeFamilies[config.parentLocale] = [];\n                        }\n                        localeFamilies[config.parentLocale].push({\n                            name: name,\n                            config: config\n                        });\n                        return null;\n                    }\n                }\n            }\n            locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n            if (localeFamilies[name]) {\n                localeFamilies[name].forEach(function (x) {\n                    defineLocale(x.name, x.config);\n                });\n            }\n\n            // backwards compat for now: also set the locale\n            // make sure we set the locale AFTER all child locales have been\n            // created, so we won't end up with the child locale set.\n            getSetGlobalLocale(name);\n\n\n            return locales[name];\n        } else {\n            // useful for testing\n            delete locales[name];\n            return null;\n        }\n    }\n\n    function updateLocale(name, config) {\n        if (config != null) {\n            var locale, tmpLocale, parentConfig = baseConfig;\n            // MERGE\n            tmpLocale = loadLocale(name);\n            if (tmpLocale != null) {\n                parentConfig = tmpLocale._config;\n            }\n            config = mergeConfigs(parentConfig, config);\n            locale = new Locale(config);\n            locale.parentLocale = locales[name];\n            locales[name] = locale;\n\n            // backwards compat for now: also set the locale\n            getSetGlobalLocale(name);\n        } else {\n            // pass null for config to unupdate, useful for tests\n            if (locales[name] != null) {\n                if (locales[name].parentLocale != null) {\n                    locales[name] = locales[name].parentLocale;\n                } else if (locales[name] != null) {\n                    delete locales[name];\n                }\n            }\n        }\n        return locales[name];\n    }\n\n    // returns locale data\n    function getLocale (key) {\n        var locale;\n\n        if (key && key._locale && key._locale._abbr) {\n            key = key._locale._abbr;\n        }\n\n        if (!key) {\n            return globalLocale;\n        }\n\n        if (!isArray(key)) {\n            //short-circuit everything else\n            locale = loadLocale(key);\n            if (locale) {\n                return locale;\n            }\n            key = [key];\n        }\n\n        return chooseLocale(key);\n    }\n\n    function listLocales() {\n        return keys(locales);\n    }\n\n    function checkOverflow (m) {\n        var overflow;\n        var a = m._a;\n\n        if (a && getParsingFlags(m).overflow === -2) {\n            overflow =\n                a[MONTH]       < 0 || a[MONTH]       > 11  ? MONTH :\n                a[DATE]        < 1 || a[DATE]        > daysInMonth(a[YEAR], a[MONTH]) ? DATE :\n                a[HOUR]        < 0 || a[HOUR]        > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR :\n                a[MINUTE]      < 0 || a[MINUTE]      > 59  ? MINUTE :\n                a[SECOND]      < 0 || a[SECOND]      > 59  ? SECOND :\n                a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND :\n                -1;\n\n            if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {\n                overflow = DATE;\n            }\n            if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n                overflow = WEEK;\n            }\n            if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n                overflow = WEEKDAY;\n            }\n\n            getParsingFlags(m).overflow = overflow;\n        }\n\n        return m;\n    }\n\n    // Pick the first defined of two or three arguments.\n    function defaults(a, b, c) {\n        if (a != null) {\n            return a;\n        }\n        if (b != null) {\n            return b;\n        }\n        return c;\n    }\n\n    function currentDateArray(config) {\n        // hooks is actually the exported moment object\n        var nowValue = new Date(hooks.now());\n        if (config._useUTC) {\n            return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()];\n        }\n        return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n    }\n\n    // convert an array to a date.\n    // the array should mirror the parameters below\n    // note: all values past the year are optional and will default to the lowest possible value.\n    // [year, month, day , hour, minute, second, millisecond]\n    function configFromArray (config) {\n        var i, date, input = [], currentDate, expectedWeekday, yearToUse;\n\n        if (config._d) {\n            return;\n        }\n\n        currentDate = currentDateArray(config);\n\n        //compute day of the year from weeks and weekdays\n        if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n            dayOfYearFromWeekInfo(config);\n        }\n\n        //if the day of the year is set, figure out what it is\n        if (config._dayOfYear != null) {\n            yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n            if (config._dayOfYear > daysInYear(yearToUse) || config._dayOfYear === 0) {\n                getParsingFlags(config)._overflowDayOfYear = true;\n            }\n\n            date = createUTCDate(yearToUse, 0, config._dayOfYear);\n            config._a[MONTH] = date.getUTCMonth();\n            config._a[DATE] = date.getUTCDate();\n        }\n\n        // Default to current date.\n        // * if no year, month, day of month are given, default to today\n        // * if day of month is given, default month and year\n        // * if month is given, default only year\n        // * if year is given, don't default anything\n        for (i = 0; i < 3 && config._a[i] == null; ++i) {\n            config._a[i] = input[i] = currentDate[i];\n        }\n\n        // Zero out whatever was not defaulted, including time\n        for (; i < 7; i++) {\n            config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i];\n        }\n\n        // Check for 24:00:00.000\n        if (config._a[HOUR] === 24 &&\n                config._a[MINUTE] === 0 &&\n                config._a[SECOND] === 0 &&\n                config._a[MILLISECOND] === 0) {\n            config._nextDay = true;\n            config._a[HOUR] = 0;\n        }\n\n        config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input);\n        expectedWeekday = config._useUTC ? config._d.getUTCDay() : config._d.getDay();\n\n        // Apply timezone offset from input. The actual utcOffset can be changed\n        // with parseZone.\n        if (config._tzm != null) {\n            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n        }\n\n        if (config._nextDay) {\n            config._a[HOUR] = 24;\n        }\n\n        // check for mismatching day of week\n        if (config._w && typeof config._w.d !== 'undefined' && config._w.d !== expectedWeekday) {\n            getParsingFlags(config).weekdayMismatch = true;\n        }\n    }\n\n    function dayOfYearFromWeekInfo(config) {\n        var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow;\n\n        w = config._w;\n        if (w.GG != null || w.W != null || w.E != null) {\n            dow = 1;\n            doy = 4;\n\n            // TODO: We need to take the current isoWeekYear, but that depends on\n            // how we interpret now (local, utc, fixed offset). So create\n            // a now version of current config (take local/utc/offset flags, and\n            // create now).\n            weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(createLocal(), 1, 4).year);\n            week = defaults(w.W, 1);\n            weekday = defaults(w.E, 1);\n            if (weekday < 1 || weekday > 7) {\n                weekdayOverflow = true;\n            }\n        } else {\n            dow = config._locale._week.dow;\n            doy = config._locale._week.doy;\n\n            var curWeek = weekOfYear(createLocal(), dow, doy);\n\n            weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n            // Default to current week.\n            week = defaults(w.w, curWeek.week);\n\n            if (w.d != null) {\n                // weekday -- low day numbers are considered next week\n                weekday = w.d;\n                if (weekday < 0 || weekday > 6) {\n                    weekdayOverflow = true;\n                }\n            } else if (w.e != null) {\n                // local weekday -- counting starts from beginning of week\n                weekday = w.e + dow;\n                if (w.e < 0 || w.e > 6) {\n                    weekdayOverflow = true;\n                }\n            } else {\n                // default to beginning of week\n                weekday = dow;\n            }\n        }\n        if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n            getParsingFlags(config)._overflowWeeks = true;\n        } else if (weekdayOverflow != null) {\n            getParsingFlags(config)._overflowWeekday = true;\n        } else {\n            temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n            config._a[YEAR] = temp.year;\n            config._dayOfYear = temp.dayOfYear;\n        }\n    }\n\n    // iso 8601 regex\n    // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n    var extendedIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/;\n    var basicIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/;\n\n    var tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/;\n\n    var isoDates = [\n        ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n        ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n        ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n        ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n        ['YYYY-DDD', /\\d{4}-\\d{3}/],\n        ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n        ['YYYYYYMMDD', /[+-]\\d{10}/],\n        ['YYYYMMDD', /\\d{8}/],\n        // YYYYMM is NOT allowed by the standard\n        ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n        ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n        ['YYYYDDD', /\\d{7}/]\n    ];\n\n    // iso time formats and regexes\n    var isoTimes = [\n        ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n        ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n        ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n        ['HH:mm', /\\d\\d:\\d\\d/],\n        ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n        ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n        ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n        ['HHmm', /\\d\\d\\d\\d/],\n        ['HH', /\\d\\d/]\n    ];\n\n    var aspNetJsonRegex = /^\\/?Date\\((\\-?\\d+)/i;\n\n    // date from iso format\n    function configFromISO(config) {\n        var i, l,\n            string = config._i,\n            match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n            allowTime, dateFormat, timeFormat, tzFormat;\n\n        if (match) {\n            getParsingFlags(config).iso = true;\n\n            for (i = 0, l = isoDates.length; i < l; i++) {\n                if (isoDates[i][1].exec(match[1])) {\n                    dateFormat = isoDates[i][0];\n                    allowTime = isoDates[i][2] !== false;\n                    break;\n                }\n            }\n            if (dateFormat == null) {\n                config._isValid = false;\n                return;\n            }\n            if (match[3]) {\n                for (i = 0, l = isoTimes.length; i < l; i++) {\n                    if (isoTimes[i][1].exec(match[3])) {\n                        // match[2] should be 'T' or space\n                        timeFormat = (match[2] || ' ') + isoTimes[i][0];\n                        break;\n                    }\n                }\n                if (timeFormat == null) {\n                    config._isValid = false;\n                    return;\n                }\n            }\n            if (!allowTime && timeFormat != null) {\n                config._isValid = false;\n                return;\n            }\n            if (match[4]) {\n                if (tzRegex.exec(match[4])) {\n                    tzFormat = 'Z';\n                } else {\n                    config._isValid = false;\n                    return;\n                }\n            }\n            config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n            configFromStringAndFormat(config);\n        } else {\n            config._isValid = false;\n        }\n    }\n\n    // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n    var rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/;\n\n    function extractFromRFC2822Strings(yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) {\n        var result = [\n            untruncateYear(yearStr),\n            defaultLocaleMonthsShort.indexOf(monthStr),\n            parseInt(dayStr, 10),\n            parseInt(hourStr, 10),\n            parseInt(minuteStr, 10)\n        ];\n\n        if (secondStr) {\n            result.push(parseInt(secondStr, 10));\n        }\n\n        return result;\n    }\n\n    function untruncateYear(yearStr) {\n        var year = parseInt(yearStr, 10);\n        if (year <= 49) {\n            return 2000 + year;\n        } else if (year <= 999) {\n            return 1900 + year;\n        }\n        return year;\n    }\n\n    function preprocessRFC2822(s) {\n        // Remove comments and folding whitespace and replace multiple-spaces with a single space\n        return s.replace(/\\([^)]*\\)|[\\n\\t]/g, ' ').replace(/(\\s\\s+)/g, ' ').replace(/^\\s\\s*/, '').replace(/\\s\\s*$/, '');\n    }\n\n    function checkWeekday(weekdayStr, parsedInput, config) {\n        if (weekdayStr) {\n            // TODO: Replace the vanilla JS Date object with an indepentent day-of-week check.\n            var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n                weekdayActual = new Date(parsedInput[0], parsedInput[1], parsedInput[2]).getDay();\n            if (weekdayProvided !== weekdayActual) {\n                getParsingFlags(config).weekdayMismatch = true;\n                config._isValid = false;\n                return false;\n            }\n        }\n        return true;\n    }\n\n    var obsOffsets = {\n        UT: 0,\n        GMT: 0,\n        EDT: -4 * 60,\n        EST: -5 * 60,\n        CDT: -5 * 60,\n        CST: -6 * 60,\n        MDT: -6 * 60,\n        MST: -7 * 60,\n        PDT: -7 * 60,\n        PST: -8 * 60\n    };\n\n    function calculateOffset(obsOffset, militaryOffset, numOffset) {\n        if (obsOffset) {\n            return obsOffsets[obsOffset];\n        } else if (militaryOffset) {\n            // the only allowed military tz is Z\n            return 0;\n        } else {\n            var hm = parseInt(numOffset, 10);\n            var m = hm % 100, h = (hm - m) / 100;\n            return h * 60 + m;\n        }\n    }\n\n    // date and time from ref 2822 format\n    function configFromRFC2822(config) {\n        var match = rfc2822.exec(preprocessRFC2822(config._i));\n        if (match) {\n            var parsedArray = extractFromRFC2822Strings(match[4], match[3], match[2], match[5], match[6], match[7]);\n            if (!checkWeekday(match[1], parsedArray, config)) {\n                return;\n            }\n\n            config._a = parsedArray;\n            config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n            config._d = createUTCDate.apply(null, config._a);\n            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n            getParsingFlags(config).rfc2822 = true;\n        } else {\n            config._isValid = false;\n        }\n    }\n\n    // date from iso format or fallback\n    function configFromString(config) {\n        var matched = aspNetJsonRegex.exec(config._i);\n\n        if (matched !== null) {\n            config._d = new Date(+matched[1]);\n            return;\n        }\n\n        configFromISO(config);\n        if (config._isValid === false) {\n            delete config._isValid;\n        } else {\n            return;\n        }\n\n        configFromRFC2822(config);\n        if (config._isValid === false) {\n            delete config._isValid;\n        } else {\n            return;\n        }\n\n        // Final attempt, use Input Fallback\n        hooks.createFromInputFallback(config);\n    }\n\n    hooks.createFromInputFallback = deprecate(\n        'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n        'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n        'discouraged and will be removed in an upcoming major release. Please refer to ' +\n        'http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n        function (config) {\n            config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n        }\n    );\n\n    // constant that refers to the ISO standard\n    hooks.ISO_8601 = function () {};\n\n    // constant that refers to the RFC 2822 form\n    hooks.RFC_2822 = function () {};\n\n    // date from string and format string\n    function configFromStringAndFormat(config) {\n        // TODO: Move this to another part of the creation flow to prevent circular deps\n        if (config._f === hooks.ISO_8601) {\n            configFromISO(config);\n            return;\n        }\n        if (config._f === hooks.RFC_2822) {\n            configFromRFC2822(config);\n            return;\n        }\n        config._a = [];\n        getParsingFlags(config).empty = true;\n\n        // This array is used to make a Date, either with `new Date` or `Date.UTC`\n        var string = '' + config._i,\n            i, parsedInput, tokens, token, skipped,\n            stringLength = string.length,\n            totalParsedInputLength = 0;\n\n        tokens = expandFormat(config._f, config._locale).match(formattingTokens) || [];\n\n        for (i = 0; i < tokens.length; i++) {\n            token = tokens[i];\n            parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0];\n            // console.log('token', token, 'parsedInput', parsedInput,\n            //         'regex', getParseRegexForToken(token, config));\n            if (parsedInput) {\n                skipped = string.substr(0, string.indexOf(parsedInput));\n                if (skipped.length > 0) {\n                    getParsingFlags(config).unusedInput.push(skipped);\n                }\n                string = string.slice(string.indexOf(parsedInput) + parsedInput.length);\n                totalParsedInputLength += parsedInput.length;\n            }\n            // don't parse if it's not a known token\n            if (formatTokenFunctions[token]) {\n                if (parsedInput) {\n                    getParsingFlags(config).empty = false;\n                }\n                else {\n                    getParsingFlags(config).unusedTokens.push(token);\n                }\n                addTimeToArrayFromToken(token, parsedInput, config);\n            }\n            else if (config._strict && !parsedInput) {\n                getParsingFlags(config).unusedTokens.push(token);\n            }\n        }\n\n        // add remaining unparsed input length to the string\n        getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength;\n        if (string.length > 0) {\n            getParsingFlags(config).unusedInput.push(string);\n        }\n\n        // clear _12h flag if hour is <= 12\n        if (config._a[HOUR] <= 12 &&\n            getParsingFlags(config).bigHour === true &&\n            config._a[HOUR] > 0) {\n            getParsingFlags(config).bigHour = undefined;\n        }\n\n        getParsingFlags(config).parsedDateParts = config._a.slice(0);\n        getParsingFlags(config).meridiem = config._meridiem;\n        // handle meridiem\n        config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem);\n\n        configFromArray(config);\n        checkOverflow(config);\n    }\n\n\n    function meridiemFixWrap (locale, hour, meridiem) {\n        var isPm;\n\n        if (meridiem == null) {\n            // nothing to do\n            return hour;\n        }\n        if (locale.meridiemHour != null) {\n            return locale.meridiemHour(hour, meridiem);\n        } else if (locale.isPM != null) {\n            // Fallback\n            isPm = locale.isPM(meridiem);\n            if (isPm && hour < 12) {\n                hour += 12;\n            }\n            if (!isPm && hour === 12) {\n                hour = 0;\n            }\n            return hour;\n        } else {\n            // this is not supposed to happen\n            return hour;\n        }\n    }\n\n    // date from string and array of format strings\n    function configFromStringAndArray(config) {\n        var tempConfig,\n            bestMoment,\n\n            scoreToBeat,\n            i,\n            currentScore;\n\n        if (config._f.length === 0) {\n            getParsingFlags(config).invalidFormat = true;\n            config._d = new Date(NaN);\n            return;\n        }\n\n        for (i = 0; i < config._f.length; i++) {\n            currentScore = 0;\n            tempConfig = copyConfig({}, config);\n            if (config._useUTC != null) {\n                tempConfig._useUTC = config._useUTC;\n            }\n            tempConfig._f = config._f[i];\n            configFromStringAndFormat(tempConfig);\n\n            if (!isValid(tempConfig)) {\n                continue;\n            }\n\n            // if there is any input that was not parsed add a penalty for that format\n            currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n            //or tokens\n            currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n            getParsingFlags(tempConfig).score = currentScore;\n\n            if (scoreToBeat == null || currentScore < scoreToBeat) {\n                scoreToBeat = currentScore;\n                bestMoment = tempConfig;\n            }\n        }\n\n        extend(config, bestMoment || tempConfig);\n    }\n\n    function configFromObject(config) {\n        if (config._d) {\n            return;\n        }\n\n        var i = normalizeObjectUnits(config._i);\n        config._a = map([i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond], function (obj) {\n            return obj && parseInt(obj, 10);\n        });\n\n        configFromArray(config);\n    }\n\n    function createFromConfig (config) {\n        var res = new Moment(checkOverflow(prepareConfig(config)));\n        if (res._nextDay) {\n            // Adding is smart enough around DST\n            res.add(1, 'd');\n            res._nextDay = undefined;\n        }\n\n        return res;\n    }\n\n    function prepareConfig (config) {\n        var input = config._i,\n            format = config._f;\n\n        config._locale = config._locale || getLocale(config._l);\n\n        if (input === null || (format === undefined && input === '')) {\n            return createInvalid({nullInput: true});\n        }\n\n        if (typeof input === 'string') {\n            config._i = input = config._locale.preparse(input);\n        }\n\n        if (isMoment(input)) {\n            return new Moment(checkOverflow(input));\n        } else if (isDate(input)) {\n            config._d = input;\n        } else if (isArray(format)) {\n            configFromStringAndArray(config);\n        } else if (format) {\n            configFromStringAndFormat(config);\n        }  else {\n            configFromInput(config);\n        }\n\n        if (!isValid(config)) {\n            config._d = null;\n        }\n\n        return config;\n    }\n\n    function configFromInput(config) {\n        var input = config._i;\n        if (isUndefined(input)) {\n            config._d = new Date(hooks.now());\n        } else if (isDate(input)) {\n            config._d = new Date(input.valueOf());\n        } else if (typeof input === 'string') {\n            configFromString(config);\n        } else if (isArray(input)) {\n            config._a = map(input.slice(0), function (obj) {\n                return parseInt(obj, 10);\n            });\n            configFromArray(config);\n        } else if (isObject(input)) {\n            configFromObject(config);\n        } else if (isNumber(input)) {\n            // from milliseconds\n            config._d = new Date(input);\n        } else {\n            hooks.createFromInputFallback(config);\n        }\n    }\n\n    function createLocalOrUTC (input, format, locale, strict, isUTC) {\n        var c = {};\n\n        if (locale === true || locale === false) {\n            strict = locale;\n            locale = undefined;\n        }\n\n        if ((isObject(input) && isObjectEmpty(input)) ||\n                (isArray(input) && input.length === 0)) {\n            input = undefined;\n        }\n        // object construction must be done this way.\n        // https://github.com/moment/moment/issues/1423\n        c._isAMomentObject = true;\n        c._useUTC = c._isUTC = isUTC;\n        c._l = locale;\n        c._i = input;\n        c._f = format;\n        c._strict = strict;\n\n        return createFromConfig(c);\n    }\n\n    function createLocal (input, format, locale, strict) {\n        return createLocalOrUTC(input, format, locale, strict, false);\n    }\n\n    var prototypeMin = deprecate(\n        'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n        function () {\n            var other = createLocal.apply(null, arguments);\n            if (this.isValid() && other.isValid()) {\n                return other < this ? this : other;\n            } else {\n                return createInvalid();\n            }\n        }\n    );\n\n    var prototypeMax = deprecate(\n        'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n        function () {\n            var other = createLocal.apply(null, arguments);\n            if (this.isValid() && other.isValid()) {\n                return other > this ? this : other;\n            } else {\n                return createInvalid();\n            }\n        }\n    );\n\n    // Pick a moment m from moments so that m[fn](other) is true for all\n    // other. This relies on the function fn to be transitive.\n    //\n    // moments should either be an array of moment objects or an array, whose\n    // first element is an array of moment objects.\n    function pickBy(fn, moments) {\n        var res, i;\n        if (moments.length === 1 && isArray(moments[0])) {\n            moments = moments[0];\n        }\n        if (!moments.length) {\n            return createLocal();\n        }\n        res = moments[0];\n        for (i = 1; i < moments.length; ++i) {\n            if (!moments[i].isValid() || moments[i][fn](res)) {\n                res = moments[i];\n            }\n        }\n        return res;\n    }\n\n    // TODO: Use [].sort instead?\n    function min () {\n        var args = [].slice.call(arguments, 0);\n\n        return pickBy('isBefore', args);\n    }\n\n    function max () {\n        var args = [].slice.call(arguments, 0);\n\n        return pickBy('isAfter', args);\n    }\n\n    var now = function () {\n        return Date.now ? Date.now() : +(new Date());\n    };\n\n    var ordering = ['year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond'];\n\n    function isDurationValid(m) {\n        for (var key in m) {\n            if (!(indexOf.call(ordering, key) !== -1 && (m[key] == null || !isNaN(m[key])))) {\n                return false;\n            }\n        }\n\n        var unitHasDecimal = false;\n        for (var i = 0; i < ordering.length; ++i) {\n            if (m[ordering[i]]) {\n                if (unitHasDecimal) {\n                    return false; // only allow non-integers for smallest unit\n                }\n                if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n                    unitHasDecimal = true;\n                }\n            }\n        }\n\n        return true;\n    }\n\n    function isValid$1() {\n        return this._isValid;\n    }\n\n    function createInvalid$1() {\n        return createDuration(NaN);\n    }\n\n    function Duration (duration) {\n        var normalizedInput = normalizeObjectUnits(duration),\n            years = normalizedInput.year || 0,\n            quarters = normalizedInput.quarter || 0,\n            months = normalizedInput.month || 0,\n            weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n            days = normalizedInput.day || 0,\n            hours = normalizedInput.hour || 0,\n            minutes = normalizedInput.minute || 0,\n            seconds = normalizedInput.second || 0,\n            milliseconds = normalizedInput.millisecond || 0;\n\n        this._isValid = isDurationValid(normalizedInput);\n\n        // representation for dateAddRemove\n        this._milliseconds = +milliseconds +\n            seconds * 1e3 + // 1000\n            minutes * 6e4 + // 1000 * 60\n            hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n        // Because of dateAddRemove treats 24 hours as different from a\n        // day when working around DST, we need to store them separately\n        this._days = +days +\n            weeks * 7;\n        // It is impossible to translate months into days without knowing\n        // which months you are are talking about, so we have to store\n        // it separately.\n        this._months = +months +\n            quarters * 3 +\n            years * 12;\n\n        this._data = {};\n\n        this._locale = getLocale();\n\n        this._bubble();\n    }\n\n    function isDuration (obj) {\n        return obj instanceof Duration;\n    }\n\n    function absRound (number) {\n        if (number < 0) {\n            return Math.round(-1 * number) * -1;\n        } else {\n            return Math.round(number);\n        }\n    }\n\n    // FORMATTING\n\n    function offset (token, separator) {\n        addFormatToken(token, 0, 0, function () {\n            var offset = this.utcOffset();\n            var sign = '+';\n            if (offset < 0) {\n                offset = -offset;\n                sign = '-';\n            }\n            return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2);\n        });\n    }\n\n    offset('Z', ':');\n    offset('ZZ', '');\n\n    // PARSING\n\n    addRegexToken('Z',  matchShortOffset);\n    addRegexToken('ZZ', matchShortOffset);\n    addParseToken(['Z', 'ZZ'], function (input, array, config) {\n        config._useUTC = true;\n        config._tzm = offsetFromString(matchShortOffset, input);\n    });\n\n    // HELPERS\n\n    // timezone chunker\n    // '+10:00' > ['10',  '00']\n    // '-1530'  > ['-15', '30']\n    var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n    function offsetFromString(matcher, string) {\n        var matches = (string || '').match(matcher);\n\n        if (matches === null) {\n            return null;\n        }\n\n        var chunk   = matches[matches.length - 1] || [];\n        var parts   = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n        var minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n        return minutes === 0 ?\n          0 :\n          parts[0] === '+' ? minutes : -minutes;\n    }\n\n    // Return a moment from input, that is local/utc/zone equivalent to model.\n    function cloneWithOffset(input, model) {\n        var res, diff;\n        if (model._isUTC) {\n            res = model.clone();\n            diff = (isMoment(input) || isDate(input) ? input.valueOf() : createLocal(input).valueOf()) - res.valueOf();\n            // Use low-level api, because this fn is low-level api.\n            res._d.setTime(res._d.valueOf() + diff);\n            hooks.updateOffset(res, false);\n            return res;\n        } else {\n            return createLocal(input).local();\n        }\n    }\n\n    function getDateOffset (m) {\n        // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n        // https://github.com/moment/moment/pull/1871\n        return -Math.round(m._d.getTimezoneOffset() / 15) * 15;\n    }\n\n    // HOOKS\n\n    // This function will be called whenever a moment is mutated.\n    // It is intended to keep the offset in sync with the timezone.\n    hooks.updateOffset = function () {};\n\n    // MOMENTS\n\n    // keepLocalTime = true means only change the timezone, without\n    // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n    // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n    // +0200, so we adjust the time as needed, to be valid.\n    //\n    // Keeping the time actually adds/subtracts (one hour)\n    // from the actual represented time. That is why we call updateOffset\n    // a second time. In case it wants us to change the offset again\n    // _changeInProgress == true case, then we have to adjust, because\n    // there is no such time in the given timezone.\n    function getSetOffset (input, keepLocalTime, keepMinutes) {\n        var offset = this._offset || 0,\n            localAdjust;\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n        if (input != null) {\n            if (typeof input === 'string') {\n                input = offsetFromString(matchShortOffset, input);\n                if (input === null) {\n                    return this;\n                }\n            } else if (Math.abs(input) < 16 && !keepMinutes) {\n                input = input * 60;\n            }\n            if (!this._isUTC && keepLocalTime) {\n                localAdjust = getDateOffset(this);\n            }\n            this._offset = input;\n            this._isUTC = true;\n            if (localAdjust != null) {\n                this.add(localAdjust, 'm');\n            }\n            if (offset !== input) {\n                if (!keepLocalTime || this._changeInProgress) {\n                    addSubtract(this, createDuration(input - offset, 'm'), 1, false);\n                } else if (!this._changeInProgress) {\n                    this._changeInProgress = true;\n                    hooks.updateOffset(this, true);\n                    this._changeInProgress = null;\n                }\n            }\n            return this;\n        } else {\n            return this._isUTC ? offset : getDateOffset(this);\n        }\n    }\n\n    function getSetZone (input, keepLocalTime) {\n        if (input != null) {\n            if (typeof input !== 'string') {\n                input = -input;\n            }\n\n            this.utcOffset(input, keepLocalTime);\n\n            return this;\n        } else {\n            return -this.utcOffset();\n        }\n    }\n\n    function setOffsetToUTC (keepLocalTime) {\n        return this.utcOffset(0, keepLocalTime);\n    }\n\n    function setOffsetToLocal (keepLocalTime) {\n        if (this._isUTC) {\n            this.utcOffset(0, keepLocalTime);\n            this._isUTC = false;\n\n            if (keepLocalTime) {\n                this.subtract(getDateOffset(this), 'm');\n            }\n        }\n        return this;\n    }\n\n    function setOffsetToParsedOffset () {\n        if (this._tzm != null) {\n            this.utcOffset(this._tzm, false, true);\n        } else if (typeof this._i === 'string') {\n            var tZone = offsetFromString(matchOffset, this._i);\n            if (tZone != null) {\n                this.utcOffset(tZone);\n            }\n            else {\n                this.utcOffset(0, true);\n            }\n        }\n        return this;\n    }\n\n    function hasAlignedHourOffset (input) {\n        if (!this.isValid()) {\n            return false;\n        }\n        input = input ? createLocal(input).utcOffset() : 0;\n\n        return (this.utcOffset() - input) % 60 === 0;\n    }\n\n    function isDaylightSavingTime () {\n        return (\n            this.utcOffset() > this.clone().month(0).utcOffset() ||\n            this.utcOffset() > this.clone().month(5).utcOffset()\n        );\n    }\n\n    function isDaylightSavingTimeShifted () {\n        if (!isUndefined(this._isDSTShifted)) {\n            return this._isDSTShifted;\n        }\n\n        var c = {};\n\n        copyConfig(c, this);\n        c = prepareConfig(c);\n\n        if (c._a) {\n            var other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n            this._isDSTShifted = this.isValid() &&\n                compareArrays(c._a, other.toArray()) > 0;\n        } else {\n            this._isDSTShifted = false;\n        }\n\n        return this._isDSTShifted;\n    }\n\n    function isLocal () {\n        return this.isValid() ? !this._isUTC : false;\n    }\n\n    function isUtcOffset () {\n        return this.isValid() ? this._isUTC : false;\n    }\n\n    function isUtc () {\n        return this.isValid() ? this._isUTC && this._offset === 0 : false;\n    }\n\n    // ASP.NET json date format regex\n    var aspNetRegex = /^(\\-|\\+)?(?:(\\d*)[. ])?(\\d+)\\:(\\d+)(?:\\:(\\d+)(\\.\\d*)?)?$/;\n\n    // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n    // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n    // and further modified to allow for strings containing both week and day\n    var isoRegex = /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n    function createDuration (input, key) {\n        var duration = input,\n            // matching against regexp is expensive, do it on demand\n            match = null,\n            sign,\n            ret,\n            diffRes;\n\n        if (isDuration(input)) {\n            duration = {\n                ms : input._milliseconds,\n                d  : input._days,\n                M  : input._months\n            };\n        } else if (isNumber(input)) {\n            duration = {};\n            if (key) {\n                duration[key] = input;\n            } else {\n                duration.milliseconds = input;\n            }\n        } else if (!!(match = aspNetRegex.exec(input))) {\n            sign = (match[1] === '-') ? -1 : 1;\n            duration = {\n                y  : 0,\n                d  : toInt(match[DATE])                         * sign,\n                h  : toInt(match[HOUR])                         * sign,\n                m  : toInt(match[MINUTE])                       * sign,\n                s  : toInt(match[SECOND])                       * sign,\n                ms : toInt(absRound(match[MILLISECOND] * 1000)) * sign // the millisecond decimal point is included in the match\n            };\n        } else if (!!(match = isoRegex.exec(input))) {\n            sign = (match[1] === '-') ? -1 : 1;\n            duration = {\n                y : parseIso(match[2], sign),\n                M : parseIso(match[3], sign),\n                w : parseIso(match[4], sign),\n                d : parseIso(match[5], sign),\n                h : parseIso(match[6], sign),\n                m : parseIso(match[7], sign),\n                s : parseIso(match[8], sign)\n            };\n        } else if (duration == null) {// checks for null or undefined\n            duration = {};\n        } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) {\n            diffRes = momentsDifference(createLocal(duration.from), createLocal(duration.to));\n\n            duration = {};\n            duration.ms = diffRes.milliseconds;\n            duration.M = diffRes.months;\n        }\n\n        ret = new Duration(duration);\n\n        if (isDuration(input) && hasOwnProp(input, '_locale')) {\n            ret._locale = input._locale;\n        }\n\n        return ret;\n    }\n\n    createDuration.fn = Duration.prototype;\n    createDuration.invalid = createInvalid$1;\n\n    function parseIso (inp, sign) {\n        // We'd normally use ~~inp for this, but unfortunately it also\n        // converts floats to ints.\n        // inp may be undefined, so careful calling replace on it.\n        var res = inp && parseFloat(inp.replace(',', '.'));\n        // apply sign while we're at it\n        return (isNaN(res) ? 0 : res) * sign;\n    }\n\n    function positiveMomentsDifference(base, other) {\n        var res = {};\n\n        res.months = other.month() - base.month() +\n            (other.year() - base.year()) * 12;\n        if (base.clone().add(res.months, 'M').isAfter(other)) {\n            --res.months;\n        }\n\n        res.milliseconds = +other - +(base.clone().add(res.months, 'M'));\n\n        return res;\n    }\n\n    function momentsDifference(base, other) {\n        var res;\n        if (!(base.isValid() && other.isValid())) {\n            return {milliseconds: 0, months: 0};\n        }\n\n        other = cloneWithOffset(other, base);\n        if (base.isBefore(other)) {\n            res = positiveMomentsDifference(base, other);\n        } else {\n            res = positiveMomentsDifference(other, base);\n            res.milliseconds = -res.milliseconds;\n            res.months = -res.months;\n        }\n\n        return res;\n    }\n\n    // TODO: remove 'name' arg after deprecation is removed\n    function createAdder(direction, name) {\n        return function (val, period) {\n            var dur, tmp;\n            //invert the arguments, but complain about it\n            if (period !== null && !isNaN(+period)) {\n                deprecateSimple(name, 'moment().' + name  + '(period, number) is deprecated. Please use moment().' + name + '(number, period). ' +\n                'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.');\n                tmp = val; val = period; period = tmp;\n            }\n\n            val = typeof val === 'string' ? +val : val;\n            dur = createDuration(val, period);\n            addSubtract(this, dur, direction);\n            return this;\n        };\n    }\n\n    function addSubtract (mom, duration, isAdding, updateOffset) {\n        var milliseconds = duration._milliseconds,\n            days = absRound(duration._days),\n            months = absRound(duration._months);\n\n        if (!mom.isValid()) {\n            // No op\n            return;\n        }\n\n        updateOffset = updateOffset == null ? true : updateOffset;\n\n        if (months) {\n            setMonth(mom, get(mom, 'Month') + months * isAdding);\n        }\n        if (days) {\n            set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n        }\n        if (milliseconds) {\n            mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n        }\n        if (updateOffset) {\n            hooks.updateOffset(mom, days || months);\n        }\n    }\n\n    var add      = createAdder(1, 'add');\n    var subtract = createAdder(-1, 'subtract');\n\n    function getCalendarFormat(myMoment, now) {\n        var diff = myMoment.diff(now, 'days', true);\n        return diff < -6 ? 'sameElse' :\n                diff < -1 ? 'lastWeek' :\n                diff < 0 ? 'lastDay' :\n                diff < 1 ? 'sameDay' :\n                diff < 2 ? 'nextDay' :\n                diff < 7 ? 'nextWeek' : 'sameElse';\n    }\n\n    function calendar$1 (time, formats) {\n        // We want to compare the start of today, vs this.\n        // Getting start-of-today depends on whether we're local/utc/offset or not.\n        var now = time || createLocal(),\n            sod = cloneWithOffset(now, this).startOf('day'),\n            format = hooks.calendarFormat(this, sod) || 'sameElse';\n\n        var output = formats && (isFunction(formats[format]) ? formats[format].call(this, now) : formats[format]);\n\n        return this.format(output || this.localeData().calendar(format, this, createLocal(now)));\n    }\n\n    function clone () {\n        return new Moment(this);\n    }\n\n    function isAfter (input, units) {\n        var localInput = isMoment(input) ? input : createLocal(input);\n        if (!(this.isValid() && localInput.isValid())) {\n            return false;\n        }\n        units = normalizeUnits(units) || 'millisecond';\n        if (units === 'millisecond') {\n            return this.valueOf() > localInput.valueOf();\n        } else {\n            return localInput.valueOf() < this.clone().startOf(units).valueOf();\n        }\n    }\n\n    function isBefore (input, units) {\n        var localInput = isMoment(input) ? input : createLocal(input);\n        if (!(this.isValid() && localInput.isValid())) {\n            return false;\n        }\n        units = normalizeUnits(units) || 'millisecond';\n        if (units === 'millisecond') {\n            return this.valueOf() < localInput.valueOf();\n        } else {\n            return this.clone().endOf(units).valueOf() < localInput.valueOf();\n        }\n    }\n\n    function isBetween (from, to, units, inclusivity) {\n        var localFrom = isMoment(from) ? from : createLocal(from),\n            localTo = isMoment(to) ? to : createLocal(to);\n        if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n            return false;\n        }\n        inclusivity = inclusivity || '()';\n        return (inclusivity[0] === '(' ? this.isAfter(localFrom, units) : !this.isBefore(localFrom, units)) &&\n            (inclusivity[1] === ')' ? this.isBefore(localTo, units) : !this.isAfter(localTo, units));\n    }\n\n    function isSame (input, units) {\n        var localInput = isMoment(input) ? input : createLocal(input),\n            inputMs;\n        if (!(this.isValid() && localInput.isValid())) {\n            return false;\n        }\n        units = normalizeUnits(units) || 'millisecond';\n        if (units === 'millisecond') {\n            return this.valueOf() === localInput.valueOf();\n        } else {\n            inputMs = localInput.valueOf();\n            return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf();\n        }\n    }\n\n    function isSameOrAfter (input, units) {\n        return this.isSame(input, units) || this.isAfter(input, units);\n    }\n\n    function isSameOrBefore (input, units) {\n        return this.isSame(input, units) || this.isBefore(input, units);\n    }\n\n    function diff (input, units, asFloat) {\n        var that,\n            zoneDelta,\n            output;\n\n        if (!this.isValid()) {\n            return NaN;\n        }\n\n        that = cloneWithOffset(input, this);\n\n        if (!that.isValid()) {\n            return NaN;\n        }\n\n        zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n        units = normalizeUnits(units);\n\n        switch (units) {\n            case 'year': output = monthDiff(this, that) / 12; break;\n            case 'month': output = monthDiff(this, that); break;\n            case 'quarter': output = monthDiff(this, that) / 3; break;\n            case 'second': output = (this - that) / 1e3; break; // 1000\n            case 'minute': output = (this - that) / 6e4; break; // 1000 * 60\n            case 'hour': output = (this - that) / 36e5; break; // 1000 * 60 * 60\n            case 'day': output = (this - that - zoneDelta) / 864e5; break; // 1000 * 60 * 60 * 24, negate dst\n            case 'week': output = (this - that - zoneDelta) / 6048e5; break; // 1000 * 60 * 60 * 24 * 7, negate dst\n            default: output = this - that;\n        }\n\n        return asFloat ? output : absFloor(output);\n    }\n\n    function monthDiff (a, b) {\n        // difference in months\n        var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()),\n            // b is in (anchor - 1 month, anchor + 1 month)\n            anchor = a.clone().add(wholeMonthDiff, 'months'),\n            anchor2, adjust;\n\n        if (b - anchor < 0) {\n            anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n            // linear across the month\n            adjust = (b - anchor) / (anchor - anchor2);\n        } else {\n            anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n            // linear across the month\n            adjust = (b - anchor) / (anchor2 - anchor);\n        }\n\n        //check for negative zero, return zero if negative zero\n        return -(wholeMonthDiff + adjust) || 0;\n    }\n\n    hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n    hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n    function toString () {\n        return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n    }\n\n    function toISOString(keepOffset) {\n        if (!this.isValid()) {\n            return null;\n        }\n        var utc = keepOffset !== true;\n        var m = utc ? this.clone().utc() : this;\n        if (m.year() < 0 || m.year() > 9999) {\n            return formatMoment(m, utc ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ');\n        }\n        if (isFunction(Date.prototype.toISOString)) {\n            // native implementation is ~50x faster, use it when we can\n            if (utc) {\n                return this.toDate().toISOString();\n            } else {\n                return new Date(this.valueOf() + this.utcOffset() * 60 * 1000).toISOString().replace('Z', formatMoment(m, 'Z'));\n            }\n        }\n        return formatMoment(m, utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ');\n    }\n\n    /**\n     * Return a human readable representation of a moment that can\n     * also be evaluated to get a new moment which is the same\n     *\n     * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n     */\n    function inspect () {\n        if (!this.isValid()) {\n            return 'moment.invalid(/* ' + this._i + ' */)';\n        }\n        var func = 'moment';\n        var zone = '';\n        if (!this.isLocal()) {\n            func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n            zone = 'Z';\n        }\n        var prefix = '[' + func + '(\"]';\n        var year = (0 <= this.year() && this.year() <= 9999) ? 'YYYY' : 'YYYYYY';\n        var datetime = '-MM-DD[T]HH:mm:ss.SSS';\n        var suffix = zone + '[\")]';\n\n        return this.format(prefix + year + datetime + suffix);\n    }\n\n    function format (inputString) {\n        if (!inputString) {\n            inputString = this.isUtc() ? hooks.defaultFormatUtc : hooks.defaultFormat;\n        }\n        var output = formatMoment(this, inputString);\n        return this.localeData().postformat(output);\n    }\n\n    function from (time, withoutSuffix) {\n        if (this.isValid() &&\n                ((isMoment(time) && time.isValid()) ||\n                 createLocal(time).isValid())) {\n            return createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix);\n        } else {\n            return this.localeData().invalidDate();\n        }\n    }\n\n    function fromNow (withoutSuffix) {\n        return this.from(createLocal(), withoutSuffix);\n    }\n\n    function to (time, withoutSuffix) {\n        if (this.isValid() &&\n                ((isMoment(time) && time.isValid()) ||\n                 createLocal(time).isValid())) {\n            return createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix);\n        } else {\n            return this.localeData().invalidDate();\n        }\n    }\n\n    function toNow (withoutSuffix) {\n        return this.to(createLocal(), withoutSuffix);\n    }\n\n    // If passed a locale key, it will set the locale for this\n    // instance.  Otherwise, it will return the locale configuration\n    // variables for this instance.\n    function locale (key) {\n        var newLocaleData;\n\n        if (key === undefined) {\n            return this._locale._abbr;\n        } else {\n            newLocaleData = getLocale(key);\n            if (newLocaleData != null) {\n                this._locale = newLocaleData;\n            }\n            return this;\n        }\n    }\n\n    var lang = deprecate(\n        'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n        function (key) {\n            if (key === undefined) {\n                return this.localeData();\n            } else {\n                return this.locale(key);\n            }\n        }\n    );\n\n    function localeData () {\n        return this._locale;\n    }\n\n    var MS_PER_SECOND = 1000;\n    var MS_PER_MINUTE = 60 * MS_PER_SECOND;\n    var MS_PER_HOUR = 60 * MS_PER_MINUTE;\n    var MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n    // actual modulo - handles negative numbers (for dates before 1970):\n    function mod$1(dividend, divisor) {\n        return (dividend % divisor + divisor) % divisor;\n    }\n\n    function localStartOfDate(y, m, d) {\n        // the date constructor remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            // preserve leap years using a full 400 year cycle, then reset\n            return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n        } else {\n            return new Date(y, m, d).valueOf();\n        }\n    }\n\n    function utcStartOfDate(y, m, d) {\n        // Date.UTC remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            // preserve leap years using a full 400 year cycle, then reset\n            return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n        } else {\n            return Date.UTC(y, m, d);\n        }\n    }\n\n    function startOf (units) {\n        var time;\n        units = normalizeUnits(units);\n        if (units === undefined || units === 'millisecond' || !this.isValid()) {\n            return this;\n        }\n\n        var startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n        switch (units) {\n            case 'year':\n                time = startOfDate(this.year(), 0, 1);\n                break;\n            case 'quarter':\n                time = startOfDate(this.year(), this.month() - this.month() % 3, 1);\n                break;\n            case 'month':\n                time = startOfDate(this.year(), this.month(), 1);\n                break;\n            case 'week':\n                time = startOfDate(this.year(), this.month(), this.date() - this.weekday());\n                break;\n            case 'isoWeek':\n                time = startOfDate(this.year(), this.month(), this.date() - (this.isoWeekday() - 1));\n                break;\n            case 'day':\n            case 'date':\n                time = startOfDate(this.year(), this.month(), this.date());\n                break;\n            case 'hour':\n                time = this._d.valueOf();\n                time -= mod$1(time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), MS_PER_HOUR);\n                break;\n            case 'minute':\n                time = this._d.valueOf();\n                time -= mod$1(time, MS_PER_MINUTE);\n                break;\n            case 'second':\n                time = this._d.valueOf();\n                time -= mod$1(time, MS_PER_SECOND);\n                break;\n        }\n\n        this._d.setTime(time);\n        hooks.updateOffset(this, true);\n        return this;\n    }\n\n    function endOf (units) {\n        var time;\n        units = normalizeUnits(units);\n        if (units === undefined || units === 'millisecond' || !this.isValid()) {\n            return this;\n        }\n\n        var startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n        switch (units) {\n            case 'year':\n                time = startOfDate(this.year() + 1, 0, 1) - 1;\n                break;\n            case 'quarter':\n                time = startOfDate(this.year(), this.month() - this.month() % 3 + 3, 1) - 1;\n                break;\n            case 'month':\n                time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n                break;\n            case 'week':\n                time = startOfDate(this.year(), this.month(), this.date() - this.weekday() + 7) - 1;\n                break;\n            case 'isoWeek':\n                time = startOfDate(this.year(), this.month(), this.date() - (this.isoWeekday() - 1) + 7) - 1;\n                break;\n            case 'day':\n            case 'date':\n                time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n                break;\n            case 'hour':\n                time = this._d.valueOf();\n                time += MS_PER_HOUR - mod$1(time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), MS_PER_HOUR) - 1;\n                break;\n            case 'minute':\n                time = this._d.valueOf();\n                time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n                break;\n            case 'second':\n                time = this._d.valueOf();\n                time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n                break;\n        }\n\n        this._d.setTime(time);\n        hooks.updateOffset(this, true);\n        return this;\n    }\n\n    function valueOf () {\n        return this._d.valueOf() - ((this._offset || 0) * 60000);\n    }\n\n    function unix () {\n        return Math.floor(this.valueOf() / 1000);\n    }\n\n    function toDate () {\n        return new Date(this.valueOf());\n    }\n\n    function toArray () {\n        var m = this;\n        return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()];\n    }\n\n    function toObject () {\n        var m = this;\n        return {\n            years: m.year(),\n            months: m.month(),\n            date: m.date(),\n            hours: m.hours(),\n            minutes: m.minutes(),\n            seconds: m.seconds(),\n            milliseconds: m.milliseconds()\n        };\n    }\n\n    function toJSON () {\n        // new Date(NaN).toJSON() === null\n        return this.isValid() ? this.toISOString() : null;\n    }\n\n    function isValid$2 () {\n        return isValid(this);\n    }\n\n    function parsingFlags () {\n        return extend({}, getParsingFlags(this));\n    }\n\n    function invalidAt () {\n        return getParsingFlags(this).overflow;\n    }\n\n    function creationData() {\n        return {\n            input: this._i,\n            format: this._f,\n            locale: this._locale,\n            isUTC: this._isUTC,\n            strict: this._strict\n        };\n    }\n\n    // FORMATTING\n\n    addFormatToken(0, ['gg', 2], 0, function () {\n        return this.weekYear() % 100;\n    });\n\n    addFormatToken(0, ['GG', 2], 0, function () {\n        return this.isoWeekYear() % 100;\n    });\n\n    function addWeekYearFormatToken (token, getter) {\n        addFormatToken(0, [token, token.length], 0, getter);\n    }\n\n    addWeekYearFormatToken('gggg',     'weekYear');\n    addWeekYearFormatToken('ggggg',    'weekYear');\n    addWeekYearFormatToken('GGGG',  'isoWeekYear');\n    addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n    // ALIASES\n\n    addUnitAlias('weekYear', 'gg');\n    addUnitAlias('isoWeekYear', 'GG');\n\n    // PRIORITY\n\n    addUnitPriority('weekYear', 1);\n    addUnitPriority('isoWeekYear', 1);\n\n\n    // PARSING\n\n    addRegexToken('G',      matchSigned);\n    addRegexToken('g',      matchSigned);\n    addRegexToken('GG',     match1to2, match2);\n    addRegexToken('gg',     match1to2, match2);\n    addRegexToken('GGGG',   match1to4, match4);\n    addRegexToken('gggg',   match1to4, match4);\n    addRegexToken('GGGGG',  match1to6, match6);\n    addRegexToken('ggggg',  match1to6, match6);\n\n    addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) {\n        week[token.substr(0, 2)] = toInt(input);\n    });\n\n    addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n        week[token] = hooks.parseTwoDigitYear(input);\n    });\n\n    // MOMENTS\n\n    function getSetWeekYear (input) {\n        return getSetWeekYearHelper.call(this,\n                input,\n                this.week(),\n                this.weekday(),\n                this.localeData()._week.dow,\n                this.localeData()._week.doy);\n    }\n\n    function getSetISOWeekYear (input) {\n        return getSetWeekYearHelper.call(this,\n                input, this.isoWeek(), this.isoWeekday(), 1, 4);\n    }\n\n    function getISOWeeksInYear () {\n        return weeksInYear(this.year(), 1, 4);\n    }\n\n    function getWeeksInYear () {\n        var weekInfo = this.localeData()._week;\n        return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n    }\n\n    function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n        var weeksTarget;\n        if (input == null) {\n            return weekOfYear(this, dow, doy).year;\n        } else {\n            weeksTarget = weeksInYear(input, dow, doy);\n            if (week > weeksTarget) {\n                week = weeksTarget;\n            }\n            return setWeekAll.call(this, input, week, weekday, dow, doy);\n        }\n    }\n\n    function setWeekAll(weekYear, week, weekday, dow, doy) {\n        var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n            date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n        this.year(date.getUTCFullYear());\n        this.month(date.getUTCMonth());\n        this.date(date.getUTCDate());\n        return this;\n    }\n\n    // FORMATTING\n\n    addFormatToken('Q', 0, 'Qo', 'quarter');\n\n    // ALIASES\n\n    addUnitAlias('quarter', 'Q');\n\n    // PRIORITY\n\n    addUnitPriority('quarter', 7);\n\n    // PARSING\n\n    addRegexToken('Q', match1);\n    addParseToken('Q', function (input, array) {\n        array[MONTH] = (toInt(input) - 1) * 3;\n    });\n\n    // MOMENTS\n\n    function getSetQuarter (input) {\n        return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3);\n    }\n\n    // FORMATTING\n\n    addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n    // ALIASES\n\n    addUnitAlias('date', 'D');\n\n    // PRIORITY\n    addUnitPriority('date', 9);\n\n    // PARSING\n\n    addRegexToken('D',  match1to2);\n    addRegexToken('DD', match1to2, match2);\n    addRegexToken('Do', function (isStrict, locale) {\n        // TODO: Remove \"ordinalParse\" fallback in next major release.\n        return isStrict ?\n          (locale._dayOfMonthOrdinalParse || locale._ordinalParse) :\n          locale._dayOfMonthOrdinalParseLenient;\n    });\n\n    addParseToken(['D', 'DD'], DATE);\n    addParseToken('Do', function (input, array) {\n        array[DATE] = toInt(input.match(match1to2)[0]);\n    });\n\n    // MOMENTS\n\n    var getSetDayOfMonth = makeGetSet('Date', true);\n\n    // FORMATTING\n\n    addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n    // ALIASES\n\n    addUnitAlias('dayOfYear', 'DDD');\n\n    // PRIORITY\n    addUnitPriority('dayOfYear', 4);\n\n    // PARSING\n\n    addRegexToken('DDD',  match1to3);\n    addRegexToken('DDDD', match3);\n    addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n        config._dayOfYear = toInt(input);\n    });\n\n    // HELPERS\n\n    // MOMENTS\n\n    function getSetDayOfYear (input) {\n        var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1;\n        return input == null ? dayOfYear : this.add((input - dayOfYear), 'd');\n    }\n\n    // FORMATTING\n\n    addFormatToken('m', ['mm', 2], 0, 'minute');\n\n    // ALIASES\n\n    addUnitAlias('minute', 'm');\n\n    // PRIORITY\n\n    addUnitPriority('minute', 14);\n\n    // PARSING\n\n    addRegexToken('m',  match1to2);\n    addRegexToken('mm', match1to2, match2);\n    addParseToken(['m', 'mm'], MINUTE);\n\n    // MOMENTS\n\n    var getSetMinute = makeGetSet('Minutes', false);\n\n    // FORMATTING\n\n    addFormatToken('s', ['ss', 2], 0, 'second');\n\n    // ALIASES\n\n    addUnitAlias('second', 's');\n\n    // PRIORITY\n\n    addUnitPriority('second', 15);\n\n    // PARSING\n\n    addRegexToken('s',  match1to2);\n    addRegexToken('ss', match1to2, match2);\n    addParseToken(['s', 'ss'], SECOND);\n\n    // MOMENTS\n\n    var getSetSecond = makeGetSet('Seconds', false);\n\n    // FORMATTING\n\n    addFormatToken('S', 0, 0, function () {\n        return ~~(this.millisecond() / 100);\n    });\n\n    addFormatToken(0, ['SS', 2], 0, function () {\n        return ~~(this.millisecond() / 10);\n    });\n\n    addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n    addFormatToken(0, ['SSSS', 4], 0, function () {\n        return this.millisecond() * 10;\n    });\n    addFormatToken(0, ['SSSSS', 5], 0, function () {\n        return this.millisecond() * 100;\n    });\n    addFormatToken(0, ['SSSSSS', 6], 0, function () {\n        return this.millisecond() * 1000;\n    });\n    addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n        return this.millisecond() * 10000;\n    });\n    addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n        return this.millisecond() * 100000;\n    });\n    addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n        return this.millisecond() * 1000000;\n    });\n\n\n    // ALIASES\n\n    addUnitAlias('millisecond', 'ms');\n\n    // PRIORITY\n\n    addUnitPriority('millisecond', 16);\n\n    // PARSING\n\n    addRegexToken('S',    match1to3, match1);\n    addRegexToken('SS',   match1to3, match2);\n    addRegexToken('SSS',  match1to3, match3);\n\n    var token;\n    for (token = 'SSSS'; token.length <= 9; token += 'S') {\n        addRegexToken(token, matchUnsigned);\n    }\n\n    function parseMs(input, array) {\n        array[MILLISECOND] = toInt(('0.' + input) * 1000);\n    }\n\n    for (token = 'S'; token.length <= 9; token += 'S') {\n        addParseToken(token, parseMs);\n    }\n    // MOMENTS\n\n    var getSetMillisecond = makeGetSet('Milliseconds', false);\n\n    // FORMATTING\n\n    addFormatToken('z',  0, 0, 'zoneAbbr');\n    addFormatToken('zz', 0, 0, 'zoneName');\n\n    // MOMENTS\n\n    function getZoneAbbr () {\n        return this._isUTC ? 'UTC' : '';\n    }\n\n    function getZoneName () {\n        return this._isUTC ? 'Coordinated Universal Time' : '';\n    }\n\n    var proto = Moment.prototype;\n\n    proto.add               = add;\n    proto.calendar          = calendar$1;\n    proto.clone             = clone;\n    proto.diff              = diff;\n    proto.endOf             = endOf;\n    proto.format            = format;\n    proto.from              = from;\n    proto.fromNow           = fromNow;\n    proto.to                = to;\n    proto.toNow             = toNow;\n    proto.get               = stringGet;\n    proto.invalidAt         = invalidAt;\n    proto.isAfter           = isAfter;\n    proto.isBefore          = isBefore;\n    proto.isBetween         = isBetween;\n    proto.isSame            = isSame;\n    proto.isSameOrAfter     = isSameOrAfter;\n    proto.isSameOrBefore    = isSameOrBefore;\n    proto.isValid           = isValid$2;\n    proto.lang              = lang;\n    proto.locale            = locale;\n    proto.localeData        = localeData;\n    proto.max               = prototypeMax;\n    proto.min               = prototypeMin;\n    proto.parsingFlags      = parsingFlags;\n    proto.set               = stringSet;\n    proto.startOf           = startOf;\n    proto.subtract          = subtract;\n    proto.toArray           = toArray;\n    proto.toObject          = toObject;\n    proto.toDate            = toDate;\n    proto.toISOString       = toISOString;\n    proto.inspect           = inspect;\n    proto.toJSON            = toJSON;\n    proto.toString          = toString;\n    proto.unix              = unix;\n    proto.valueOf           = valueOf;\n    proto.creationData      = creationData;\n    proto.year       = getSetYear;\n    proto.isLeapYear = getIsLeapYear;\n    proto.weekYear    = getSetWeekYear;\n    proto.isoWeekYear = getSetISOWeekYear;\n    proto.quarter = proto.quarters = getSetQuarter;\n    proto.month       = getSetMonth;\n    proto.daysInMonth = getDaysInMonth;\n    proto.week           = proto.weeks        = getSetWeek;\n    proto.isoWeek        = proto.isoWeeks     = getSetISOWeek;\n    proto.weeksInYear    = getWeeksInYear;\n    proto.isoWeeksInYear = getISOWeeksInYear;\n    proto.date       = getSetDayOfMonth;\n    proto.day        = proto.days             = getSetDayOfWeek;\n    proto.weekday    = getSetLocaleDayOfWeek;\n    proto.isoWeekday = getSetISODayOfWeek;\n    proto.dayOfYear  = getSetDayOfYear;\n    proto.hour = proto.hours = getSetHour;\n    proto.minute = proto.minutes = getSetMinute;\n    proto.second = proto.seconds = getSetSecond;\n    proto.millisecond = proto.milliseconds = getSetMillisecond;\n    proto.utcOffset            = getSetOffset;\n    proto.utc                  = setOffsetToUTC;\n    proto.local                = setOffsetToLocal;\n    proto.parseZone            = setOffsetToParsedOffset;\n    proto.hasAlignedHourOffset = hasAlignedHourOffset;\n    proto.isDST                = isDaylightSavingTime;\n    proto.isLocal              = isLocal;\n    proto.isUtcOffset          = isUtcOffset;\n    proto.isUtc                = isUtc;\n    proto.isUTC                = isUtc;\n    proto.zoneAbbr = getZoneAbbr;\n    proto.zoneName = getZoneName;\n    proto.dates  = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth);\n    proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth);\n    proto.years  = deprecate('years accessor is deprecated. Use year instead', getSetYear);\n    proto.zone   = deprecate('moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', getSetZone);\n    proto.isDSTShifted = deprecate('isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', isDaylightSavingTimeShifted);\n\n    function createUnix (input) {\n        return createLocal(input * 1000);\n    }\n\n    function createInZone () {\n        return createLocal.apply(null, arguments).parseZone();\n    }\n\n    function preParsePostFormat (string) {\n        return string;\n    }\n\n    var proto$1 = Locale.prototype;\n\n    proto$1.calendar        = calendar;\n    proto$1.longDateFormat  = longDateFormat;\n    proto$1.invalidDate     = invalidDate;\n    proto$1.ordinal         = ordinal;\n    proto$1.preparse        = preParsePostFormat;\n    proto$1.postformat      = preParsePostFormat;\n    proto$1.relativeTime    = relativeTime;\n    proto$1.pastFuture      = pastFuture;\n    proto$1.set             = set;\n\n    proto$1.months            =        localeMonths;\n    proto$1.monthsShort       =        localeMonthsShort;\n    proto$1.monthsParse       =        localeMonthsParse;\n    proto$1.monthsRegex       = monthsRegex;\n    proto$1.monthsShortRegex  = monthsShortRegex;\n    proto$1.week = localeWeek;\n    proto$1.firstDayOfYear = localeFirstDayOfYear;\n    proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n    proto$1.weekdays       =        localeWeekdays;\n    proto$1.weekdaysMin    =        localeWeekdaysMin;\n    proto$1.weekdaysShort  =        localeWeekdaysShort;\n    proto$1.weekdaysParse  =        localeWeekdaysParse;\n\n    proto$1.weekdaysRegex       =        weekdaysRegex;\n    proto$1.weekdaysShortRegex  =        weekdaysShortRegex;\n    proto$1.weekdaysMinRegex    =        weekdaysMinRegex;\n\n    proto$1.isPM = localeIsPM;\n    proto$1.meridiem = localeMeridiem;\n\n    function get$1 (format, index, field, setter) {\n        var locale = getLocale();\n        var utc = createUTC().set(setter, index);\n        return locale[field](utc, format);\n    }\n\n    function listMonthsImpl (format, index, field) {\n        if (isNumber(format)) {\n            index = format;\n            format = undefined;\n        }\n\n        format = format || '';\n\n        if (index != null) {\n            return get$1(format, index, field, 'month');\n        }\n\n        var i;\n        var out = [];\n        for (i = 0; i < 12; i++) {\n            out[i] = get$1(format, i, field, 'month');\n        }\n        return out;\n    }\n\n    // ()\n    // (5)\n    // (fmt, 5)\n    // (fmt)\n    // (true)\n    // (true, 5)\n    // (true, fmt, 5)\n    // (true, fmt)\n    function listWeekdaysImpl (localeSorted, format, index, field) {\n        if (typeof localeSorted === 'boolean') {\n            if (isNumber(format)) {\n                index = format;\n                format = undefined;\n            }\n\n            format = format || '';\n        } else {\n            format = localeSorted;\n            index = format;\n            localeSorted = false;\n\n            if (isNumber(format)) {\n                index = format;\n                format = undefined;\n            }\n\n            format = format || '';\n        }\n\n        var locale = getLocale(),\n            shift = localeSorted ? locale._week.dow : 0;\n\n        if (index != null) {\n            return get$1(format, (index + shift) % 7, field, 'day');\n        }\n\n        var i;\n        var out = [];\n        for (i = 0; i < 7; i++) {\n            out[i] = get$1(format, (i + shift) % 7, field, 'day');\n        }\n        return out;\n    }\n\n    function listMonths (format, index) {\n        return listMonthsImpl(format, index, 'months');\n    }\n\n    function listMonthsShort (format, index) {\n        return listMonthsImpl(format, index, 'monthsShort');\n    }\n\n    function listWeekdays (localeSorted, format, index) {\n        return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n    }\n\n    function listWeekdaysShort (localeSorted, format, index) {\n        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n    }\n\n    function listWeekdaysMin (localeSorted, format, index) {\n        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n    }\n\n    getSetGlobalLocale('en', {\n        dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n        ordinal : function (number) {\n            var b = number % 10,\n                output = (toInt(number % 100 / 10) === 1) ? 'th' :\n                (b === 1) ? 'st' :\n                (b === 2) ? 'nd' :\n                (b === 3) ? 'rd' : 'th';\n            return number + output;\n        }\n    });\n\n    // Side effect imports\n\n    hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', getSetGlobalLocale);\n    hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', getLocale);\n\n    var mathAbs = Math.abs;\n\n    function abs () {\n        var data           = this._data;\n\n        this._milliseconds = mathAbs(this._milliseconds);\n        this._days         = mathAbs(this._days);\n        this._months       = mathAbs(this._months);\n\n        data.milliseconds  = mathAbs(data.milliseconds);\n        data.seconds       = mathAbs(data.seconds);\n        data.minutes       = mathAbs(data.minutes);\n        data.hours         = mathAbs(data.hours);\n        data.months        = mathAbs(data.months);\n        data.years         = mathAbs(data.years);\n\n        return this;\n    }\n\n    function addSubtract$1 (duration, input, value, direction) {\n        var other = createDuration(input, value);\n\n        duration._milliseconds += direction * other._milliseconds;\n        duration._days         += direction * other._days;\n        duration._months       += direction * other._months;\n\n        return duration._bubble();\n    }\n\n    // supports only 2.0-style add(1, 's') or add(duration)\n    function add$1 (input, value) {\n        return addSubtract$1(this, input, value, 1);\n    }\n\n    // supports only 2.0-style subtract(1, 's') or subtract(duration)\n    function subtract$1 (input, value) {\n        return addSubtract$1(this, input, value, -1);\n    }\n\n    function absCeil (number) {\n        if (number < 0) {\n            return Math.floor(number);\n        } else {\n            return Math.ceil(number);\n        }\n    }\n\n    function bubble () {\n        var milliseconds = this._milliseconds;\n        var days         = this._days;\n        var months       = this._months;\n        var data         = this._data;\n        var seconds, minutes, hours, years, monthsFromDays;\n\n        // if we have a mix of positive and negative values, bubble down first\n        // check: https://github.com/moment/moment/issues/2166\n        if (!((milliseconds >= 0 && days >= 0 && months >= 0) ||\n                (milliseconds <= 0 && days <= 0 && months <= 0))) {\n            milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n            days = 0;\n            months = 0;\n        }\n\n        // The following code bubbles up values, see the tests for\n        // examples of what that means.\n        data.milliseconds = milliseconds % 1000;\n\n        seconds           = absFloor(milliseconds / 1000);\n        data.seconds      = seconds % 60;\n\n        minutes           = absFloor(seconds / 60);\n        data.minutes      = minutes % 60;\n\n        hours             = absFloor(minutes / 60);\n        data.hours        = hours % 24;\n\n        days += absFloor(hours / 24);\n\n        // convert days to months\n        monthsFromDays = absFloor(daysToMonths(days));\n        months += monthsFromDays;\n        days -= absCeil(monthsToDays(monthsFromDays));\n\n        // 12 months -> 1 year\n        years = absFloor(months / 12);\n        months %= 12;\n\n        data.days   = days;\n        data.months = months;\n        data.years  = years;\n\n        return this;\n    }\n\n    function daysToMonths (days) {\n        // 400 years have 146097 days (taking into account leap year rules)\n        // 400 years have 12 months === 4800\n        return days * 4800 / 146097;\n    }\n\n    function monthsToDays (months) {\n        // the reverse of daysToMonths\n        return months * 146097 / 4800;\n    }\n\n    function as (units) {\n        if (!this.isValid()) {\n            return NaN;\n        }\n        var days;\n        var months;\n        var milliseconds = this._milliseconds;\n\n        units = normalizeUnits(units);\n\n        if (units === 'month' || units === 'quarter' || units === 'year') {\n            days = this._days + milliseconds / 864e5;\n            months = this._months + daysToMonths(days);\n            switch (units) {\n                case 'month':   return months;\n                case 'quarter': return months / 3;\n                case 'year':    return months / 12;\n            }\n        } else {\n            // handle milliseconds separately because of floating point math errors (issue #1867)\n            days = this._days + Math.round(monthsToDays(this._months));\n            switch (units) {\n                case 'week'   : return days / 7     + milliseconds / 6048e5;\n                case 'day'    : return days         + milliseconds / 864e5;\n                case 'hour'   : return days * 24    + milliseconds / 36e5;\n                case 'minute' : return days * 1440  + milliseconds / 6e4;\n                case 'second' : return days * 86400 + milliseconds / 1000;\n                // Math.floor prevents floating point math errors here\n                case 'millisecond': return Math.floor(days * 864e5) + milliseconds;\n                default: throw new Error('Unknown unit ' + units);\n            }\n        }\n    }\n\n    // TODO: Use this.as('ms')?\n    function valueOf$1 () {\n        if (!this.isValid()) {\n            return NaN;\n        }\n        return (\n            this._milliseconds +\n            this._days * 864e5 +\n            (this._months % 12) * 2592e6 +\n            toInt(this._months / 12) * 31536e6\n        );\n    }\n\n    function makeAs (alias) {\n        return function () {\n            return this.as(alias);\n        };\n    }\n\n    var asMilliseconds = makeAs('ms');\n    var asSeconds      = makeAs('s');\n    var asMinutes      = makeAs('m');\n    var asHours        = makeAs('h');\n    var asDays         = makeAs('d');\n    var asWeeks        = makeAs('w');\n    var asMonths       = makeAs('M');\n    var asQuarters     = makeAs('Q');\n    var asYears        = makeAs('y');\n\n    function clone$1 () {\n        return createDuration(this);\n    }\n\n    function get$2 (units) {\n        units = normalizeUnits(units);\n        return this.isValid() ? this[units + 's']() : NaN;\n    }\n\n    function makeGetter(name) {\n        return function () {\n            return this.isValid() ? this._data[name] : NaN;\n        };\n    }\n\n    var milliseconds = makeGetter('milliseconds');\n    var seconds      = makeGetter('seconds');\n    var minutes      = makeGetter('minutes');\n    var hours        = makeGetter('hours');\n    var days         = makeGetter('days');\n    var months       = makeGetter('months');\n    var years        = makeGetter('years');\n\n    function weeks () {\n        return absFloor(this.days() / 7);\n    }\n\n    var round = Math.round;\n    var thresholds = {\n        ss: 44,         // a few seconds to seconds\n        s : 45,         // seconds to minute\n        m : 45,         // minutes to hour\n        h : 22,         // hours to day\n        d : 26,         // days to month\n        M : 11          // months to year\n    };\n\n    // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n    function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n        return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n    }\n\n    function relativeTime$1 (posNegDuration, withoutSuffix, locale) {\n        var duration = createDuration(posNegDuration).abs();\n        var seconds  = round(duration.as('s'));\n        var minutes  = round(duration.as('m'));\n        var hours    = round(duration.as('h'));\n        var days     = round(duration.as('d'));\n        var months   = round(duration.as('M'));\n        var years    = round(duration.as('y'));\n\n        var a = seconds <= thresholds.ss && ['s', seconds]  ||\n                seconds < thresholds.s   && ['ss', seconds] ||\n                minutes <= 1             && ['m']           ||\n                minutes < thresholds.m   && ['mm', minutes] ||\n                hours   <= 1             && ['h']           ||\n                hours   < thresholds.h   && ['hh', hours]   ||\n                days    <= 1             && ['d']           ||\n                days    < thresholds.d   && ['dd', days]    ||\n                months  <= 1             && ['M']           ||\n                months  < thresholds.M   && ['MM', months]  ||\n                years   <= 1             && ['y']           || ['yy', years];\n\n        a[2] = withoutSuffix;\n        a[3] = +posNegDuration > 0;\n        a[4] = locale;\n        return substituteTimeAgo.apply(null, a);\n    }\n\n    // This function allows you to set the rounding function for relative time strings\n    function getSetRelativeTimeRounding (roundingFunction) {\n        if (roundingFunction === undefined) {\n            return round;\n        }\n        if (typeof(roundingFunction) === 'function') {\n            round = roundingFunction;\n            return true;\n        }\n        return false;\n    }\n\n    // This function allows you to set a threshold for relative time strings\n    function getSetRelativeTimeThreshold (threshold, limit) {\n        if (thresholds[threshold] === undefined) {\n            return false;\n        }\n        if (limit === undefined) {\n            return thresholds[threshold];\n        }\n        thresholds[threshold] = limit;\n        if (threshold === 's') {\n            thresholds.ss = limit - 1;\n        }\n        return true;\n    }\n\n    function humanize (withSuffix) {\n        if (!this.isValid()) {\n            return this.localeData().invalidDate();\n        }\n\n        var locale = this.localeData();\n        var output = relativeTime$1(this, !withSuffix, locale);\n\n        if (withSuffix) {\n            output = locale.pastFuture(+this, output);\n        }\n\n        return locale.postformat(output);\n    }\n\n    var abs$1 = Math.abs;\n\n    function sign(x) {\n        return ((x > 0) - (x < 0)) || +x;\n    }\n\n    function toISOString$1() {\n        // for ISO strings we do not use the normal bubbling rules:\n        //  * milliseconds bubble up until they become hours\n        //  * days do not bubble at all\n        //  * months bubble up until they become years\n        // This is because there is no context-free conversion between hours and days\n        // (think of clock changes)\n        // and also not between days and months (28-31 days per month)\n        if (!this.isValid()) {\n            return this.localeData().invalidDate();\n        }\n\n        var seconds = abs$1(this._milliseconds) / 1000;\n        var days         = abs$1(this._days);\n        var months       = abs$1(this._months);\n        var minutes, hours, years;\n\n        // 3600 seconds -> 60 minutes -> 1 hour\n        minutes           = absFloor(seconds / 60);\n        hours             = absFloor(minutes / 60);\n        seconds %= 60;\n        minutes %= 60;\n\n        // 12 months -> 1 year\n        years  = absFloor(months / 12);\n        months %= 12;\n\n\n        // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n        var Y = years;\n        var M = months;\n        var D = days;\n        var h = hours;\n        var m = minutes;\n        var s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n        var total = this.asSeconds();\n\n        if (!total) {\n            // this is the same as C#'s (Noda) and python (isodate)...\n            // but not other JS (goog.date)\n            return 'P0D';\n        }\n\n        var totalSign = total < 0 ? '-' : '';\n        var ymSign = sign(this._months) !== sign(total) ? '-' : '';\n        var daysSign = sign(this._days) !== sign(total) ? '-' : '';\n        var hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n        return totalSign + 'P' +\n            (Y ? ymSign + Y + 'Y' : '') +\n            (M ? ymSign + M + 'M' : '') +\n            (D ? daysSign + D + 'D' : '') +\n            ((h || m || s) ? 'T' : '') +\n            (h ? hmsSign + h + 'H' : '') +\n            (m ? hmsSign + m + 'M' : '') +\n            (s ? hmsSign + s + 'S' : '');\n    }\n\n    var proto$2 = Duration.prototype;\n\n    proto$2.isValid        = isValid$1;\n    proto$2.abs            = abs;\n    proto$2.add            = add$1;\n    proto$2.subtract       = subtract$1;\n    proto$2.as             = as;\n    proto$2.asMilliseconds = asMilliseconds;\n    proto$2.asSeconds      = asSeconds;\n    proto$2.asMinutes      = asMinutes;\n    proto$2.asHours        = asHours;\n    proto$2.asDays         = asDays;\n    proto$2.asWeeks        = asWeeks;\n    proto$2.asMonths       = asMonths;\n    proto$2.asQuarters     = asQuarters;\n    proto$2.asYears        = asYears;\n    proto$2.valueOf        = valueOf$1;\n    proto$2._bubble        = bubble;\n    proto$2.clone          = clone$1;\n    proto$2.get            = get$2;\n    proto$2.milliseconds   = milliseconds;\n    proto$2.seconds        = seconds;\n    proto$2.minutes        = minutes;\n    proto$2.hours          = hours;\n    proto$2.days           = days;\n    proto$2.weeks          = weeks;\n    proto$2.months         = months;\n    proto$2.years          = years;\n    proto$2.humanize       = humanize;\n    proto$2.toISOString    = toISOString$1;\n    proto$2.toString       = toISOString$1;\n    proto$2.toJSON         = toISOString$1;\n    proto$2.locale         = locale;\n    proto$2.localeData     = localeData;\n\n    proto$2.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', toISOString$1);\n    proto$2.lang = lang;\n\n    // Side effect imports\n\n    // FORMATTING\n\n    addFormatToken('X', 0, 0, 'unix');\n    addFormatToken('x', 0, 0, 'valueOf');\n\n    // PARSING\n\n    addRegexToken('x', matchSigned);\n    addRegexToken('X', matchTimestamp);\n    addParseToken('X', function (input, array, config) {\n        config._d = new Date(parseFloat(input, 10) * 1000);\n    });\n    addParseToken('x', function (input, array, config) {\n        config._d = new Date(toInt(input));\n    });\n\n    // Side effect imports\n\n\n    hooks.version = '2.24.0';\n\n    setHookCallback(createLocal);\n\n    hooks.fn                    = proto;\n    hooks.min                   = min;\n    hooks.max                   = max;\n    hooks.now                   = now;\n    hooks.utc                   = createUTC;\n    hooks.unix                  = createUnix;\n    hooks.months                = listMonths;\n    hooks.isDate                = isDate;\n    hooks.locale                = getSetGlobalLocale;\n    hooks.invalid               = createInvalid;\n    hooks.duration              = createDuration;\n    hooks.isMoment              = isMoment;\n    hooks.weekdays              = listWeekdays;\n    hooks.parseZone             = createInZone;\n    hooks.localeData            = getLocale;\n    hooks.isDuration            = isDuration;\n    hooks.monthsShort           = listMonthsShort;\n    hooks.weekdaysMin           = listWeekdaysMin;\n    hooks.defineLocale          = defineLocale;\n    hooks.updateLocale          = updateLocale;\n    hooks.locales               = listLocales;\n    hooks.weekdaysShort         = listWeekdaysShort;\n    hooks.normalizeUnits        = normalizeUnits;\n    hooks.relativeTimeRounding  = getSetRelativeTimeRounding;\n    hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n    hooks.calendarFormat        = getCalendarFormat;\n    hooks.prototype             = proto;\n\n    // currently HTML5 input type only supports 24-hour formats\n    hooks.HTML5_FMT = {\n        DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm',             // <input type=\"datetime-local\" />\n        DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss',  // <input type=\"datetime-local\" step=\"1\" />\n        DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS',   // <input type=\"datetime-local\" step=\"0.001\" />\n        DATE: 'YYYY-MM-DD',                             // <input type=\"date\" />\n        TIME: 'HH:mm',                                  // <input type=\"time\" />\n        TIME_SECONDS: 'HH:mm:ss',                       // <input type=\"time\" step=\"1\" />\n        TIME_MS: 'HH:mm:ss.SSS',                        // <input type=\"time\" step=\"0.001\" />\n        WEEK: 'GGGG-[W]WW',                             // <input type=\"week\" />\n        MONTH: 'YYYY-MM'                                // <input type=\"month\" />\n    };\n\n    return hooks;\n\n})));\n","import { EventEmitter, Directive, ElementRef, NgZone, Input, Output, NgModule } from '@angular/core';\nimport { init } from 'echarts';\nimport { of, EMPTY, fromEvent, Observable } from 'rxjs';\nimport { debounceTime, switchMap } from 'rxjs/operators';\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nimport * as ɵngcc0 from '@angular/core';\nclass ChangeFilter {\n    /**\n     * @param {?} _changes\n     */\n    constructor(_changes) {\n        this._changes = _changes;\n    }\n    /**\n     * @param {?} changes\n     * @return {?}\n     */\n    static of(changes) {\n        return new ChangeFilter(changes);\n    }\n    /**\n     * @template T\n     * @param {?} key\n     * @return {?}\n     */\n    notEmpty(key) {\n        if (this._changes[key]) {\n            /** @type {?} */\n            const value = this._changes[key].currentValue;\n            if (value !== undefined && value !== null) {\n                return of(value);\n            }\n        }\n        return EMPTY;\n    }\n    /**\n     * @template T\n     * @param {?} key\n     * @return {?}\n     */\n    has(key) {\n        if (this._changes[key]) {\n            /** @type {?} */\n            const value = this._changes[key].currentValue;\n            return of(value);\n        }\n        return EMPTY;\n    }\n    /**\n     * @template T\n     * @param {?} key\n     * @return {?}\n     */\n    notFirst(key) {\n        if (this._changes[key] && !this._changes[key].isFirstChange()) {\n            /** @type {?} */\n            const value = this._changes[key].currentValue;\n            return of(value);\n        }\n        return EMPTY;\n    }\n    /**\n     * @template T\n     * @param {?} key\n     * @return {?}\n     */\n    notFirstAndEmpty(key) {\n        if (this._changes[key] && !this._changes[key].isFirstChange()) {\n            /** @type {?} */\n            const value = this._changes[key].currentValue;\n            if (value !== undefined && value !== null) {\n                return of(value);\n            }\n        }\n        return EMPTY;\n    }\n}\nif (false) {\n    /**\n     * @type {?}\n     * @private\n     */\n    ChangeFilter.prototype._changes;\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass NgxEchartsDirective {\n    /**\n     * @param {?} el\n     * @param {?} ngZone\n     */\n    constructor(el, ngZone) {\n        this.el = el;\n        this.ngZone = ngZone;\n        this.autoResize = true;\n        this.loadingType = 'default';\n        this.detectEventChanges = true; // deprecated, left for compatibility reasons to avoid triggering major version\n        // deprecated, left for compatibility reasons to avoid triggering major version\n        // ngx-echarts events\n        this.chartInit = new EventEmitter();\n        // echarts mouse events\n        this.chartClick = this.createLazyEvent('click');\n        this.chartDblClick = this.createLazyEvent('dblclick');\n        this.chartMouseDown = this.createLazyEvent('mousedown');\n        this.chartMouseMove = this.createLazyEvent('mousemove');\n        this.chartMouseUp = this.createLazyEvent('mouseup');\n        this.chartMouseOver = this.createLazyEvent('mouseover');\n        this.chartMouseOut = this.createLazyEvent('mouseout');\n        this.chartGlobalOut = this.createLazyEvent('globalout');\n        this.chartContextMenu = this.createLazyEvent('contextmenu');\n        // echarts mouse events\n        this.chartLegendSelectChanged = this.createLazyEvent('legendselectchanged');\n        this.chartLegendSelected = this.createLazyEvent('legendselected');\n        this.chartLegendUnselected = this.createLazyEvent('legendunselected');\n        this.chartLegendScroll = this.createLazyEvent('legendscroll');\n        this.chartDataZoom = this.createLazyEvent('datazoom');\n        this.chartDataRangeSelected = this.createLazyEvent('datarangeselected');\n        this.chartTimelineChanged = this.createLazyEvent('timelinechanged');\n        this.chartTimelinePlayChanged = this.createLazyEvent('timelineplaychanged');\n        this.chartRestore = this.createLazyEvent('restore');\n        this.chartDataViewChanged = this.createLazyEvent('dataviewchanged');\n        this.chartMagicTypeChanged = this.createLazyEvent('magictypechanged');\n        this.chartPieSelectChanged = this.createLazyEvent('pieselectchanged');\n        this.chartPieSelected = this.createLazyEvent('pieselected');\n        this.chartPieUnselected = this.createLazyEvent('pieunselected');\n        this.chartMapSelectChanged = this.createLazyEvent('mapselectchanged');\n        this.chartMapSelected = this.createLazyEvent('mapselected');\n        this.chartMapUnselected = this.createLazyEvent('mapunselected');\n        this.chartAxisAreaSelected = this.createLazyEvent('axisareaselected');\n        this.chartFocusNodeAdjacency = this.createLazyEvent('focusnodeadjacency');\n        this.chartUnfocusNodeAdjacency = this.createLazyEvent('unfocusnodeadjacency');\n        this.chartBrush = this.createLazyEvent('brush');\n        this.chartBrushSelected = this.createLazyEvent('brushselected');\n        this.chartRendered = this.createLazyEvent('rendered');\n        this.chartFinished = this.createLazyEvent('finished');\n        this.currentOffsetWidth = 0;\n        this.currentOffsetHeight = 0;\n    }\n    /**\n     * @param {?} changes\n     * @return {?}\n     */\n    ngOnChanges(changes) {\n        /** @type {?} */\n        const filter = ChangeFilter.of(changes);\n        filter.notFirstAndEmpty('options').subscribe((/**\n         * @param {?} opt\n         * @return {?}\n         */\n        opt => this.onOptionsChange(opt)));\n        filter.notFirstAndEmpty('merge').subscribe((/**\n         * @param {?} opt\n         * @return {?}\n         */\n        opt => this.setOption(opt)));\n        filter.has('loading').subscribe((/**\n         * @param {?} v\n         * @return {?}\n         */\n        v => this.toggleLoading(!!v)));\n        filter.notFirst('theme').subscribe((/**\n         * @return {?}\n         */\n        () => this.refreshChart()));\n    }\n    /**\n     * @return {?}\n     */\n    ngOnInit() {\n        this.resizeSub = fromEvent(window, 'resize').pipe(debounceTime(50)).subscribe((/**\n         * @return {?}\n         */\n        () => {\n            if (this.autoResize && window.innerWidth !== this.currentWindowWidth) {\n                this.currentWindowWidth = window.innerWidth;\n                this.currentOffsetWidth = this.el.nativeElement.offsetWidth;\n                this.currentOffsetHeight = this.el.nativeElement.offsetHeight;\n                this.resize();\n            }\n        }));\n    }\n    /**\n     * @return {?}\n     */\n    ngOnDestroy() {\n        if (this.resizeSub) {\n            this.resizeSub.unsubscribe();\n        }\n        this.dispose();\n    }\n    /**\n     * @return {?}\n     */\n    ngDoCheck() {\n        // No heavy work in DoCheck!\n        if (this.chart && this.autoResize) {\n            /** @type {?} */\n            const offsetWidth = this.el.nativeElement.offsetWidth;\n            /** @type {?} */\n            const offsetHeight = this.el.nativeElement.offsetHeight;\n            if (this.currentOffsetWidth !== offsetWidth || this.currentOffsetHeight !== offsetHeight) {\n                this.currentOffsetWidth = offsetWidth;\n                this.currentOffsetHeight = offsetHeight;\n                this.resize();\n            }\n        }\n    }\n    /**\n     * @return {?}\n     */\n    ngAfterViewInit() {\n        setTimeout((/**\n         * @return {?}\n         */\n        () => this.initChart()));\n    }\n    /**\n     * @private\n     * @return {?}\n     */\n    dispose() {\n        if (this.chart) {\n            this.chart.dispose();\n            this.chart = null;\n        }\n    }\n    /**\n     * @private\n     * @return {?}\n     */\n    resize() {\n        if (this.chart) {\n            this.chart.resize();\n        }\n    }\n    /**\n     * @private\n     * @param {?} loading\n     * @return {?}\n     */\n    toggleLoading(loading) {\n        if (this.chart) {\n            loading ? this.chart.showLoading(this.loadingType, this.loadingOpts) : this.chart.hideLoading();\n        }\n    }\n    /**\n     * @private\n     * @param {?} option\n     * @param {?=} opts\n     * @return {?}\n     */\n    setOption(option, opts) {\n        if (this.chart) {\n            this.chart.setOption(option, opts);\n        }\n    }\n    /**\n     * @private\n     * @return {?}\n     */\n    refreshChart() {\n        this.dispose();\n        this.initChart();\n    }\n    /**\n     * @private\n     * @return {?}\n     */\n    createChart() {\n        this.currentWindowWidth = window.innerWidth;\n        this.currentOffsetWidth = this.el.nativeElement.offsetWidth;\n        this.currentOffsetHeight = this.el.nativeElement.offsetHeight;\n        /** @type {?} */\n        const dom = this.el.nativeElement;\n        if (window && window.getComputedStyle) {\n            /** @type {?} */\n            const prop = window.getComputedStyle(dom, null).getPropertyValue('height');\n            if ((!prop || prop === '0px') &&\n                (!dom.style.height || dom.style.height === '0px')) {\n                dom.style.height = '400px';\n            }\n        }\n        return this.ngZone.runOutsideAngular((/**\n         * @return {?}\n         */\n        () => init(dom, this.theme, this.initOpts)));\n    }\n    /**\n     * @private\n     * @return {?}\n     */\n    initChart() {\n        this.onOptionsChange(this.options);\n        if (this.merge && this.chart) {\n            this.setOption(this.merge);\n        }\n    }\n    /**\n     * @private\n     * @param {?} opt\n     * @return {?}\n     */\n    onOptionsChange(opt) {\n        if (opt) {\n            if (!this.chart) {\n                this.chart = this.createChart();\n                this.chartInit.emit(this.chart);\n            }\n            this.chart.setOption(this.options, true);\n        }\n    }\n    // allows to lazily bind to only those events that are requested through the `@Output` by parent components\n    // see https://stackoverflow.com/questions/51787972/optimal-reentering-the-ngzone-from-eventemitter-event for more info\n    /**\n     * @private\n     * @template T\n     * @param {?} eventName\n     * @return {?}\n     */\n    createLazyEvent(eventName) {\n        return (/** @type {?} */ (this.chartInit.pipe(switchMap((/**\n         * @param {?} chart\n         * @return {?}\n         */\n        (chart) => new Observable((/**\n         * @param {?} observer\n         * @return {?}\n         */\n        observer => {\n            chart.on(eventName, (/**\n             * @param {?} data\n             * @return {?}\n             */\n            (data) => this.ngZone.run((/**\n             * @return {?}\n             */\n            () => observer.next(data)))));\n            return (/**\n             * @return {?}\n             */\n            () => chart.off(eventName));\n        })))))));\n    }\n}\nNgxEchartsDirective.ɵfac = function NgxEchartsDirective_Factory(t) { return new (t || NgxEchartsDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nNgxEchartsDirective.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: NgxEchartsDirective, selectors: [[\"echarts\"], [\"\", \"echarts\", \"\"]], inputs: { autoResize: \"autoResize\", loadingType: \"loadingType\", detectEventChanges: \"detectEventChanges\", options: \"options\", theme: \"theme\", loading: \"loading\", initOpts: \"initOpts\", merge: \"merge\", loadingOpts: \"loadingOpts\" }, outputs: { chartInit: \"chartInit\", chartClick: \"chartClick\", chartDblClick: \"chartDblClick\", chartMouseDown: \"chartMouseDown\", chartMouseMove: \"chartMouseMove\", chartMouseUp: \"chartMouseUp\", chartMouseOver: \"chartMouseOver\", chartMouseOut: \"chartMouseOut\", chartGlobalOut: \"chartGlobalOut\", chartContextMenu: \"chartContextMenu\", chartLegendSelectChanged: \"chartLegendSelectChanged\", chartLegendSelected: \"chartLegendSelected\", chartLegendUnselected: \"chartLegendUnselected\", chartLegendScroll: \"chartLegendScroll\", chartDataZoom: \"chartDataZoom\", chartDataRangeSelected: \"chartDataRangeSelected\", chartTimelineChanged: \"chartTimelineChanged\", chartTimelinePlayChanged: \"chartTimelinePlayChanged\", chartRestore: \"chartRestore\", chartDataViewChanged: \"chartDataViewChanged\", chartMagicTypeChanged: \"chartMagicTypeChanged\", chartPieSelectChanged: \"chartPieSelectChanged\", chartPieSelected: \"chartPieSelected\", chartPieUnselected: \"chartPieUnselected\", chartMapSelectChanged: \"chartMapSelectChanged\", chartMapSelected: \"chartMapSelected\", chartMapUnselected: \"chartMapUnselected\", chartAxisAreaSelected: \"chartAxisAreaSelected\", chartFocusNodeAdjacency: \"chartFocusNodeAdjacency\", chartUnfocusNodeAdjacency: \"chartUnfocusNodeAdjacency\", chartBrush: \"chartBrush\", chartBrushSelected: \"chartBrushSelected\", chartRendered: \"chartRendered\", chartFinished: \"chartFinished\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature] });\n/** @nocollapse */\nNgxEchartsDirective.ctorParameters = () => [\n    { type: ElementRef },\n    { type: NgZone }\n];\nNgxEchartsDirective.propDecorators = {\n    options: [{ type: Input }],\n    theme: [{ type: Input }],\n    loading: [{ type: Input }],\n    initOpts: [{ type: Input }],\n    merge: [{ type: Input }],\n    autoResize: [{ type: Input }],\n    loadingType: [{ type: Input }],\n    loadingOpts: [{ type: Input }],\n    detectEventChanges: [{ type: Input }],\n    chartInit: [{ type: Output }],\n    chartClick: [{ type: Output }],\n    chartDblClick: [{ type: Output }],\n    chartMouseDown: [{ type: Output }],\n    chartMouseMove: [{ type: Output }],\n    chartMouseUp: [{ type: Output }],\n    chartMouseOver: [{ type: Output }],\n    chartMouseOut: [{ type: Output }],\n    chartGlobalOut: [{ type: Output }],\n    chartContextMenu: [{ type: Output }],\n    chartLegendSelectChanged: [{ type: Output }],\n    chartLegendSelected: [{ type: Output }],\n    chartLegendUnselected: [{ type: Output }],\n    chartLegendScroll: [{ type: Output }],\n    chartDataZoom: [{ type: Output }],\n    chartDataRangeSelected: [{ type: Output }],\n    chartTimelineChanged: [{ type: Output }],\n    chartTimelinePlayChanged: [{ type: Output }],\n    chartRestore: [{ type: Output }],\n    chartDataViewChanged: [{ type: Output }],\n    chartMagicTypeChanged: [{ type: Output }],\n    chartPieSelectChanged: [{ type: Output }],\n    chartPieSelected: [{ type: Output }],\n    chartPieUnselected: [{ type: Output }],\n    chartMapSelectChanged: [{ type: Output }],\n    chartMapSelected: [{ type: Output }],\n    chartMapUnselected: [{ type: Output }],\n    chartAxisAreaSelected: [{ type: Output }],\n    chartFocusNodeAdjacency: [{ type: Output }],\n    chartUnfocusNodeAdjacency: [{ type: Output }],\n    chartBrush: [{ type: Output }],\n    chartBrushSelected: [{ type: Output }],\n    chartRendered: [{ type: Output }],\n    chartFinished: [{ type: Output }]\n};\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(NgxEchartsDirective, [{\n        type: Directive,\n        args: [{\n                selector: 'echarts, [echarts]'\n            }]\n    }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.NgZone }]; }, { autoResize: [{\n            type: Input\n        }], loadingType: [{\n            type: Input\n        }], detectEventChanges: [{\n            type: Input\n        }], chartInit: [{\n            type: Output\n        }], chartClick: [{\n            type: Output\n        }], chartDblClick: [{\n            type: Output\n        }], chartMouseDown: [{\n            type: Output\n        }], chartMouseMove: [{\n            type: Output\n        }], chartMouseUp: [{\n            type: Output\n        }], chartMouseOver: [{\n            type: Output\n        }], chartMouseOut: [{\n            type: Output\n        }], chartGlobalOut: [{\n            type: Output\n        }], chartContextMenu: [{\n            type: Output\n        }], chartLegendSelectChanged: [{\n            type: Output\n        }], chartLegendSelected: [{\n            type: Output\n        }], chartLegendUnselected: [{\n            type: Output\n        }], chartLegendScroll: [{\n            type: Output\n        }], chartDataZoom: [{\n            type: Output\n        }], chartDataRangeSelected: [{\n            type: Output\n        }], chartTimelineChanged: [{\n            type: Output\n        }], chartTimelinePlayChanged: [{\n            type: Output\n        }], chartRestore: [{\n            type: Output\n        }], chartDataViewChanged: [{\n            type: Output\n        }], chartMagicTypeChanged: [{\n            type: Output\n        }], chartPieSelectChanged: [{\n            type: Output\n        }], chartPieSelected: [{\n            type: Output\n        }], chartPieUnselected: [{\n            type: Output\n        }], chartMapSelectChanged: [{\n            type: Output\n        }], chartMapSelected: [{\n            type: Output\n        }], chartMapUnselected: [{\n            type: Output\n        }], chartAxisAreaSelected: [{\n            type: Output\n        }], chartFocusNodeAdjacency: [{\n            type: Output\n        }], chartUnfocusNodeAdjacency: [{\n            type: Output\n        }], chartBrush: [{\n            type: Output\n        }], chartBrushSelected: [{\n            type: Output\n        }], chartRendered: [{\n            type: Output\n        }], chartFinished: [{\n            type: Output\n        }], options: [{\n            type: Input\n        }], theme: [{\n            type: Input\n        }], loading: [{\n            type: Input\n        }], initOpts: [{\n            type: Input\n        }], merge: [{\n            type: Input\n        }], loadingOpts: [{\n            type: Input\n        }] }); })();\nif (false) {\n    /** @type {?} */\n    NgxEchartsDirective.prototype.options;\n    /** @type {?} */\n    NgxEchartsDirective.prototype.theme;\n    /** @type {?} */\n    NgxEchartsDirective.prototype.loading;\n    /** @type {?} */\n    NgxEchartsDirective.prototype.initOpts;\n    /** @type {?} */\n    NgxEchartsDirective.prototype.merge;\n    /** @type {?} */\n    NgxEchartsDirective.prototype.autoResize;\n    /** @type {?} */\n    NgxEchartsDirective.prototype.loadingType;\n    /** @type {?} */\n    NgxEchartsDirective.prototype.loadingOpts;\n    /** @type {?} */\n    NgxEchartsDirective.prototype.detectEventChanges;\n    /** @type {?} */\n    NgxEchartsDirective.prototype.chartInit;\n    /** @type {?} */\n    NgxEchartsDirective.prototype.chartClick;\n    /** @type {?} */\n    NgxEchartsDirective.prototype.chartDblClick;\n    /** @type {?} */\n    NgxEchartsDirective.prototype.chartMouseDown;\n    /** @type {?} */\n    NgxEchartsDirective.prototype.chartMouseMove;\n    /** @type {?} */\n    NgxEchartsDirective.prototype.chartMouseUp;\n    /** @type {?} */\n    NgxEchartsDirective.prototype.chartMouseOver;\n    /** @type {?} */\n    NgxEchartsDirective.prototype.chartMouseOut;\n    /** @type {?} */\n    NgxEchartsDirective.prototype.chartGlobalOut;\n    /** @type {?} */\n    NgxEchartsDirective.prototype.chartContextMenu;\n    /** @type {?} */\n    NgxEchartsDirective.prototype.chartLegendSelectChanged;\n    /** @type {?} */\n    NgxEchartsDirective.prototype.chartLegendSelected;\n    /** @type {?} */\n    NgxEchartsDirective.prototype.chartLegendUnselected;\n    /** @type {?} */\n    NgxEchartsDirective.prototype.chartLegendScroll;\n    /** @type {?} */\n    NgxEchartsDirective.prototype.chartDataZoom;\n    /** @type {?} */\n    NgxEchartsDirective.prototype.chartDataRangeSelected;\n    /** @type {?} */\n    NgxEchartsDirective.prototype.chartTimelineChanged;\n    /** @type {?} */\n    NgxEchartsDirective.prototype.chartTimelinePlayChanged;\n    /** @type {?} */\n    NgxEchartsDirective.prototype.chartRestore;\n    /** @type {?} */\n    NgxEchartsDirective.prototype.chartDataViewChanged;\n    /** @type {?} */\n    NgxEchartsDirective.prototype.chartMagicTypeChanged;\n    /** @type {?} */\n    NgxEchartsDirective.prototype.chartPieSelectChanged;\n    /** @type {?} */\n    NgxEchartsDirective.prototype.chartPieSelected;\n    /** @type {?} */\n    NgxEchartsDirective.prototype.chartPieUnselected;\n    /** @type {?} */\n    NgxEchartsDirective.prototype.chartMapSelectChanged;\n    /** @type {?} */\n    NgxEchartsDirective.prototype.chartMapSelected;\n    /** @type {?} */\n    NgxEchartsDirective.prototype.chartMapUnselected;\n    /** @type {?} */\n    NgxEchartsDirective.prototype.chartAxisAreaSelected;\n    /** @type {?} */\n    NgxEchartsDirective.prototype.chartFocusNodeAdjacency;\n    /** @type {?} */\n    NgxEchartsDirective.prototype.chartUnfocusNodeAdjacency;\n    /** @type {?} */\n    NgxEchartsDirective.prototype.chartBrush;\n    /** @type {?} */\n    NgxEchartsDirective.prototype.chartBrushSelected;\n    /** @type {?} */\n    NgxEchartsDirective.prototype.chartRendered;\n    /** @type {?} */\n    NgxEchartsDirective.prototype.chartFinished;\n    /**\n     * @type {?}\n     * @private\n     */\n    NgxEchartsDirective.prototype.chart;\n    /**\n     * @type {?}\n     * @private\n     */\n    NgxEchartsDirective.prototype.currentOffsetWidth;\n    /**\n     * @type {?}\n     * @private\n     */\n    NgxEchartsDirective.prototype.currentOffsetHeight;\n    /**\n     * @type {?}\n     * @private\n     */\n    NgxEchartsDirective.prototype.currentWindowWidth;\n    /**\n     * @type {?}\n     * @private\n     */\n    NgxEchartsDirective.prototype.resizeSub;\n    /**\n     * @type {?}\n     * @private\n     */\n    NgxEchartsDirective.prototype.el;\n    /**\n     * @type {?}\n     * @private\n     */\n    NgxEchartsDirective.prototype.ngZone;\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass NgxEchartsModule {\n}\nNgxEchartsModule.ɵmod = ɵngcc0.ɵɵdefineNgModule({ type: NgxEchartsModule });\nNgxEchartsModule.ɵinj = ɵngcc0.ɵɵdefineInjector({ factory: function NgxEchartsModule_Factory(t) { return new (t || NgxEchartsModule)(); }, imports: [[]] });\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgxEchartsModule, { declarations: [NgxEchartsDirective], exports: [NgxEchartsDirective] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(NgxEchartsModule, [{\n        type: NgModule,\n        args: [{\n                imports: [],\n                declarations: [\n                    NgxEchartsDirective\n                ],\n                exports: [\n                    NgxEchartsDirective\n                ]\n            }]\n    }], null, null); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\nexport { NgxEchartsModule, NgxEchartsDirective as ɵa };\n\n//# sourceMappingURL=ngx-echarts.js.map","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","var guid = require(\"./core/guid\");\n\nvar Eventful = require(\"./mixin/Eventful\");\n\nvar Transformable = require(\"./mixin/Transformable\");\n\nvar Animatable = require(\"./mixin/Animatable\");\n\nvar zrUtil = require(\"./core/util\");\n\n/**\n * @alias module:zrender/Element\n * @constructor\n * @extends {module:zrender/mixin/Animatable}\n * @extends {module:zrender/mixin/Transformable}\n * @extends {module:zrender/mixin/Eventful}\n */\nvar Element = function (opts) {\n  // jshint ignore:line\n  Transformable.call(this, opts);\n  Eventful.call(this, opts);\n  Animatable.call(this, opts);\n  /**\n   * 画布元素ID\n   * @type {string}\n   */\n\n  this.id = opts.id || guid();\n};\n\nElement.prototype = {\n  /**\n   * 元素类型\n   * Element type\n   * @type {string}\n   */\n  type: 'element',\n\n  /**\n   * 元素名字\n   * Element name\n   * @type {string}\n   */\n  name: '',\n\n  /**\n   * ZRender 实例对象，会在 element 添加到 zrender 实例中后自动赋值\n   * ZRender instance will be assigned when element is associated with zrender\n   * @name module:/zrender/Element#__zr\n   * @type {module:zrender/ZRender}\n   */\n  __zr: null,\n\n  /**\n   * 图形是否忽略，为true时忽略图形的绘制以及事件触发\n   * If ignore drawing and events of the element object\n   * @name module:/zrender/Element#ignore\n   * @type {boolean}\n   * @default false\n   */\n  ignore: false,\n\n  /**\n   * 用于裁剪的路径(shape)，所有 Group 内的路径在绘制时都会被这个路径裁剪\n   * 该路径会继承被裁减对象的变换\n   * @type {module:zrender/graphic/Path}\n   * @see http://www.w3.org/TR/2dcontext/#clipping-region\n   * @readOnly\n   */\n  clipPath: null,\n\n  /**\n   * 是否是 Group\n   * @type {boolean}\n   */\n  isGroup: false,\n\n  /**\n   * Drift element\n   * @param  {number} dx dx on the global space\n   * @param  {number} dy dy on the global space\n   */\n  drift: function (dx, dy) {\n    switch (this.draggable) {\n      case 'horizontal':\n        dy = 0;\n        break;\n\n      case 'vertical':\n        dx = 0;\n        break;\n    }\n\n    var m = this.transform;\n\n    if (!m) {\n      m = this.transform = [1, 0, 0, 1, 0, 0];\n    }\n\n    m[4] += dx;\n    m[5] += dy;\n    this.decomposeTransform();\n    this.dirty(false);\n  },\n\n  /**\n   * Hook before update\n   */\n  beforeUpdate: function () {},\n\n  /**\n   * Hook after update\n   */\n  afterUpdate: function () {},\n\n  /**\n   * Update each frame\n   */\n  update: function () {\n    this.updateTransform();\n  },\n\n  /**\n   * @param  {Function} cb\n   * @param  {}   context\n   */\n  traverse: function (cb, context) {},\n\n  /**\n   * @protected\n   */\n  attrKV: function (key, value) {\n    if (key === 'position' || key === 'scale' || key === 'origin') {\n      // Copy the array\n      if (value) {\n        var target = this[key];\n\n        if (!target) {\n          target = this[key] = [];\n        }\n\n        target[0] = value[0];\n        target[1] = value[1];\n      }\n    } else {\n      this[key] = value;\n    }\n  },\n\n  /**\n   * Hide the element\n   */\n  hide: function () {\n    this.ignore = true;\n    this.__zr && this.__zr.refresh();\n  },\n\n  /**\n   * Show the element\n   */\n  show: function () {\n    this.ignore = false;\n    this.__zr && this.__zr.refresh();\n  },\n\n  /**\n   * @param {string|Object} key\n   * @param {*} value\n   */\n  attr: function (key, value) {\n    if (typeof key === 'string') {\n      this.attrKV(key, value);\n    } else if (zrUtil.isObject(key)) {\n      for (var name in key) {\n        if (key.hasOwnProperty(name)) {\n          this.attrKV(name, key[name]);\n        }\n      }\n    }\n\n    this.dirty(false);\n    return this;\n  },\n\n  /**\n   * @param {module:zrender/graphic/Path} clipPath\n   */\n  setClipPath: function (clipPath) {\n    var zr = this.__zr;\n\n    if (zr) {\n      clipPath.addSelfToZr(zr);\n    } // Remove previous clip path\n\n\n    if (this.clipPath && this.clipPath !== clipPath) {\n      this.removeClipPath();\n    }\n\n    this.clipPath = clipPath;\n    clipPath.__zr = zr;\n    clipPath.__clipTarget = this;\n    this.dirty(false);\n  },\n\n  /**\n   */\n  removeClipPath: function () {\n    var clipPath = this.clipPath;\n\n    if (clipPath) {\n      if (clipPath.__zr) {\n        clipPath.removeSelfFromZr(clipPath.__zr);\n      }\n\n      clipPath.__zr = null;\n      clipPath.__clipTarget = null;\n      this.clipPath = null;\n      this.dirty(false);\n    }\n  },\n\n  /**\n   * Add self from zrender instance.\n   * Not recursively because it will be invoked when element added to storage.\n   * @param {module:zrender/ZRender} zr\n   */\n  addSelfToZr: function (zr) {\n    this.__zr = zr; // 添加动画\n\n    var animators = this.animators;\n\n    if (animators) {\n      for (var i = 0; i < animators.length; i++) {\n        zr.animation.addAnimator(animators[i]);\n      }\n    }\n\n    if (this.clipPath) {\n      this.clipPath.addSelfToZr(zr);\n    }\n  },\n\n  /**\n   * Remove self from zrender instance.\n   * Not recursively because it will be invoked when element added to storage.\n   * @param {module:zrender/ZRender} zr\n   */\n  removeSelfFromZr: function (zr) {\n    this.__zr = null; // 移除动画\n\n    var animators = this.animators;\n\n    if (animators) {\n      for (var i = 0; i < animators.length; i++) {\n        zr.animation.removeAnimator(animators[i]);\n      }\n    }\n\n    if (this.clipPath) {\n      this.clipPath.removeSelfFromZr(zr);\n    }\n  }\n};\nzrUtil.mixin(Element, Animatable);\nzrUtil.mixin(Element, Transformable);\nzrUtil.mixin(Element, Eventful);\nvar _default = Element;\nmodule.exports = _default;","var util = require(\"./core/util\");\n\nvar vec2 = require(\"./core/vector\");\n\nvar Draggable = require(\"./mixin/Draggable\");\n\nvar Eventful = require(\"./mixin/Eventful\");\n\nvar SILENT = 'silent';\n\nfunction makeEventPacket(eveType, targetInfo, event) {\n  return {\n    type: eveType,\n    event: event,\n    // target can only be an element that is not silent.\n    target: targetInfo.target,\n    // topTarget can be a silent element.\n    topTarget: targetInfo.topTarget,\n    cancelBubble: false,\n    offsetX: event.zrX,\n    offsetY: event.zrY,\n    gestureEvent: event.gestureEvent,\n    pinchX: event.pinchX,\n    pinchY: event.pinchY,\n    pinchScale: event.pinchScale,\n    wheelDelta: event.zrDelta,\n    zrByTouch: event.zrByTouch,\n    which: event.which\n  };\n}\n\nfunction EmptyProxy() {}\n\nEmptyProxy.prototype.dispose = function () {};\n\nvar handlerNames = ['click', 'dblclick', 'mousewheel', 'mouseout', 'mouseup', 'mousedown', 'mousemove', 'contextmenu'];\n/**\n * @alias module:zrender/Handler\n * @constructor\n * @extends module:zrender/mixin/Eventful\n * @param {module:zrender/Storage} storage Storage instance.\n * @param {module:zrender/Painter} painter Painter instance.\n * @param {module:zrender/dom/HandlerProxy} proxy HandlerProxy instance.\n * @param {HTMLElement} painterRoot painter.root (not painter.getViewportRoot()).\n */\n\nvar Handler = function (storage, painter, proxy, painterRoot) {\n  Eventful.call(this);\n  this.storage = storage;\n  this.painter = painter;\n  this.painterRoot = painterRoot;\n  proxy = proxy || new EmptyProxy();\n  /**\n   * Proxy of event. can be Dom, WebGLSurface, etc.\n   */\n\n  this.proxy = null;\n  /**\n   * {target, topTarget, x, y}\n   * @private\n   * @type {Object}\n   */\n\n  this._hovered = {};\n  /**\n   * @private\n   * @type {Date}\n   */\n\n  this._lastTouchMoment;\n  /**\n   * @private\n   * @type {number}\n   */\n\n  this._lastX;\n  /**\n   * @private\n   * @type {number}\n   */\n\n  this._lastY;\n  Draggable.call(this);\n  this.setHandlerProxy(proxy);\n};\n\nHandler.prototype = {\n  constructor: Handler,\n  setHandlerProxy: function (proxy) {\n    if (this.proxy) {\n      this.proxy.dispose();\n    }\n\n    if (proxy) {\n      util.each(handlerNames, function (name) {\n        proxy.on && proxy.on(name, this[name], this);\n      }, this); // Attach handler\n\n      proxy.handler = this;\n    }\n\n    this.proxy = proxy;\n  },\n  mousemove: function (event) {\n    var x = event.zrX;\n    var y = event.zrY;\n    var lastHovered = this._hovered;\n    var lastHoveredTarget = lastHovered.target; // If lastHoveredTarget is removed from zr (detected by '__zr') by some API call\n    // (like 'setOption' or 'dispatchAction') in event handlers, we should find\n    // lastHovered again here. Otherwise 'mouseout' can not be triggered normally.\n    // See #6198.\n\n    if (lastHoveredTarget && !lastHoveredTarget.__zr) {\n      lastHovered = this.findHover(lastHovered.x, lastHovered.y);\n      lastHoveredTarget = lastHovered.target;\n    }\n\n    var hovered = this._hovered = this.findHover(x, y);\n    var hoveredTarget = hovered.target;\n    var proxy = this.proxy;\n    proxy.setCursor && proxy.setCursor(hoveredTarget ? hoveredTarget.cursor : 'default'); // Mouse out on previous hovered element\n\n    if (lastHoveredTarget && hoveredTarget !== lastHoveredTarget) {\n      this.dispatchToElement(lastHovered, 'mouseout', event);\n    } // Mouse moving on one element\n\n\n    this.dispatchToElement(hovered, 'mousemove', event); // Mouse over on a new element\n\n    if (hoveredTarget && hoveredTarget !== lastHoveredTarget) {\n      this.dispatchToElement(hovered, 'mouseover', event);\n    }\n  },\n  mouseout: function (event) {\n    this.dispatchToElement(this._hovered, 'mouseout', event); // There might be some doms created by upper layer application\n    // at the same level of painter.getViewportRoot() (e.g., tooltip\n    // dom created by echarts), where 'globalout' event should not\n    // be triggered when mouse enters these doms. (But 'mouseout'\n    // should be triggered at the original hovered element as usual).\n\n    var element = event.toElement || event.relatedTarget;\n    var innerDom;\n\n    do {\n      element = element && element.parentNode;\n    } while (element && element.nodeType != 9 && !(innerDom = element === this.painterRoot));\n\n    !innerDom && this.trigger('globalout', {\n      event: event\n    });\n  },\n\n  /**\n   * Resize\n   */\n  resize: function (event) {\n    this._hovered = {};\n  },\n\n  /**\n   * Dispatch event\n   * @param {string} eventName\n   * @param {event=} eventArgs\n   */\n  dispatch: function (eventName, eventArgs) {\n    var handler = this[eventName];\n    handler && handler.call(this, eventArgs);\n  },\n\n  /**\n   * Dispose\n   */\n  dispose: function () {\n    this.proxy.dispose();\n    this.storage = this.proxy = this.painter = null;\n  },\n\n  /**\n   * 设置默认的cursor style\n   * @param {string} [cursorStyle='default'] 例如 crosshair\n   */\n  setCursorStyle: function (cursorStyle) {\n    var proxy = this.proxy;\n    proxy.setCursor && proxy.setCursor(cursorStyle);\n  },\n\n  /**\n   * 事件分发代理\n   *\n   * @private\n   * @param {Object} targetInfo {target, topTarget} 目标图形元素\n   * @param {string} eventName 事件名称\n   * @param {Object} event 事件对象\n   */\n  dispatchToElement: function (targetInfo, eventName, event) {\n    targetInfo = targetInfo || {};\n    var el = targetInfo.target;\n\n    if (el && el.silent) {\n      return;\n    }\n\n    var eventHandler = 'on' + eventName;\n    var eventPacket = makeEventPacket(eventName, targetInfo, event);\n\n    while (el) {\n      el[eventHandler] && (eventPacket.cancelBubble = el[eventHandler].call(el, eventPacket));\n      el.trigger(eventName, eventPacket);\n      el = el.parent;\n\n      if (eventPacket.cancelBubble) {\n        break;\n      }\n    }\n\n    if (!eventPacket.cancelBubble) {\n      // 冒泡到顶级 zrender 对象\n      this.trigger(eventName, eventPacket); // 分发事件到用户自定义层\n      // 用户有可能在全局 click 事件中 dispose，所以需要判断下 painter 是否存在\n\n      this.painter && this.painter.eachOtherLayer(function (layer) {\n        if (typeof layer[eventHandler] == 'function') {\n          layer[eventHandler].call(layer, eventPacket);\n        }\n\n        if (layer.trigger) {\n          layer.trigger(eventName, eventPacket);\n        }\n      });\n    }\n  },\n\n  /**\n   * @private\n   * @param {number} x\n   * @param {number} y\n   * @param {module:zrender/graphic/Displayable} exclude\n   * @return {model:zrender/Element}\n   * @method\n   */\n  findHover: function (x, y, exclude) {\n    var list = this.storage.getDisplayList();\n    var out = {\n      x: x,\n      y: y\n    };\n\n    for (var i = list.length - 1; i >= 0; i--) {\n      var hoverCheckResult;\n\n      if (list[i] !== exclude // getDisplayList may include ignored item in VML mode\n      && !list[i].ignore && (hoverCheckResult = isHover(list[i], x, y))) {\n        !out.topTarget && (out.topTarget = list[i]);\n\n        if (hoverCheckResult !== SILENT) {\n          out.target = list[i];\n          break;\n        }\n      }\n    }\n\n    return out;\n  }\n}; // Common handlers\n\nutil.each(['click', 'mousedown', 'mouseup', 'mousewheel', 'dblclick', 'contextmenu'], function (name) {\n  Handler.prototype[name] = function (event) {\n    // Find hover again to avoid click event is dispatched manually. Or click is triggered without mouseover\n    var hovered = this.findHover(event.zrX, event.zrY);\n    var hoveredTarget = hovered.target;\n\n    if (name === 'mousedown') {\n      this._downEl = hoveredTarget;\n      this._downPoint = [event.zrX, event.zrY]; // In case click triggered before mouseup\n\n      this._upEl = hoveredTarget;\n    } else if (name === 'mouseup') {\n      this._upEl = hoveredTarget;\n    } else if (name === 'click') {\n      if (this._downEl !== this._upEl // Original click event is triggered on the whole canvas element,\n      // including the case that `mousedown` - `mousemove` - `mouseup`,\n      // which should be filtered, otherwise it will bring trouble to\n      // pan and zoom.\n      || !this._downPoint // Arbitrary value\n      || vec2.dist(this._downPoint, [event.zrX, event.zrY]) > 4) {\n        return;\n      }\n\n      this._downPoint = null;\n    }\n\n    this.dispatchToElement(hovered, name, event);\n  };\n});\n\nfunction isHover(displayable, x, y) {\n  if (displayable[displayable.rectHover ? 'rectContain' : 'contain'](x, y)) {\n    var el = displayable;\n    var isSilent;\n\n    while (el) {\n      // If clipped by ancestor.\n      // FIXME: If clipPath has neither stroke nor fill,\n      // el.clipPath.contain(x, y) will always return false.\n      if (el.clipPath && !el.clipPath.contain(x, y)) {\n        return false;\n      }\n\n      if (el.silent) {\n        isSilent = true;\n      }\n\n      el = el.parent;\n    }\n\n    return isSilent ? SILENT : true;\n  }\n\n  return false;\n}\n\nutil.mixin(Handler, Eventful);\nutil.mixin(Handler, Draggable);\nvar _default = Handler;\nmodule.exports = _default;","var util = require(\"./core/util\");\n\nvar _config = require(\"./config\");\n\nvar devicePixelRatio = _config.devicePixelRatio;\n\nvar Style = require(\"./graphic/Style\");\n\nvar Pattern = require(\"./graphic/Pattern\");\n\n/**\n * @module zrender/Layer\n * @author pissang(https://www.github.com/pissang)\n */\nfunction returnFalse() {\n  return false;\n}\n/**\n * 创建dom\n *\n * @inner\n * @param {string} id dom id 待用\n * @param {Painter} painter painter instance\n * @param {number} number\n */\n\n\nfunction createDom(id, painter, dpr) {\n  var newDom = util.createCanvas();\n  var width = painter.getWidth();\n  var height = painter.getHeight();\n  var newDomStyle = newDom.style;\n\n  if (newDomStyle) {\n    // In node or some other non-browser environment\n    newDomStyle.position = 'absolute';\n    newDomStyle.left = 0;\n    newDomStyle.top = 0;\n    newDomStyle.width = width + 'px';\n    newDomStyle.height = height + 'px';\n    newDom.setAttribute('data-zr-dom-id', id);\n  }\n\n  newDom.width = width * dpr;\n  newDom.height = height * dpr;\n  return newDom;\n}\n/**\n * @alias module:zrender/Layer\n * @constructor\n * @extends module:zrender/mixin/Transformable\n * @param {string} id\n * @param {module:zrender/Painter} painter\n * @param {number} [dpr]\n */\n\n\nvar Layer = function (id, painter, dpr) {\n  var dom;\n  dpr = dpr || devicePixelRatio;\n\n  if (typeof id === 'string') {\n    dom = createDom(id, painter, dpr);\n  } // Not using isDom because in node it will return false\n  else if (util.isObject(id)) {\n      dom = id;\n      id = dom.id;\n    }\n\n  this.id = id;\n  this.dom = dom;\n  var domStyle = dom.style;\n\n  if (domStyle) {\n    // Not in node\n    dom.onselectstart = returnFalse; // 避免页面选中的尴尬\n\n    domStyle['-webkit-user-select'] = 'none';\n    domStyle['user-select'] = 'none';\n    domStyle['-webkit-touch-callout'] = 'none';\n    domStyle['-webkit-tap-highlight-color'] = 'rgba(0,0,0,0)';\n    domStyle['padding'] = 0;\n    domStyle['margin'] = 0;\n    domStyle['border-width'] = 0;\n  }\n\n  this.domBack = null;\n  this.ctxBack = null;\n  this.painter = painter;\n  this.config = null; // Configs\n\n  /**\n   * 每次清空画布的颜色\n   * @type {string}\n   * @default 0\n   */\n\n  this.clearColor = 0;\n  /**\n   * 是否开启动态模糊\n   * @type {boolean}\n   * @default false\n   */\n\n  this.motionBlur = false;\n  /**\n   * 在开启动态模糊的时候使用，与上一帧混合的alpha值，值越大尾迹越明显\n   * @type {number}\n   * @default 0.7\n   */\n\n  this.lastFrameAlpha = 0.7;\n  /**\n   * Layer dpr\n   * @type {number}\n   */\n\n  this.dpr = dpr;\n};\n\nLayer.prototype = {\n  constructor: Layer,\n  __dirty: true,\n  __used: false,\n  __drawIndex: 0,\n  __startIndex: 0,\n  __endIndex: 0,\n  incremental: false,\n  getElementCount: function () {\n    return this.__endIndex - this.__startIndex;\n  },\n  initContext: function () {\n    this.ctx = this.dom.getContext('2d');\n    this.ctx.dpr = this.dpr;\n  },\n  createBackBuffer: function () {\n    var dpr = this.dpr;\n    this.domBack = createDom('back-' + this.id, this.painter, dpr);\n    this.ctxBack = this.domBack.getContext('2d');\n\n    if (dpr != 1) {\n      this.ctxBack.scale(dpr, dpr);\n    }\n  },\n\n  /**\n   * @param  {number} width\n   * @param  {number} height\n   */\n  resize: function (width, height) {\n    var dpr = this.dpr;\n    var dom = this.dom;\n    var domStyle = dom.style;\n    var domBack = this.domBack;\n    domStyle.width = width + 'px';\n    domStyle.height = height + 'px';\n    dom.width = width * dpr;\n    dom.height = height * dpr;\n\n    if (domBack) {\n      domBack.width = width * dpr;\n      domBack.height = height * dpr;\n\n      if (dpr != 1) {\n        this.ctxBack.scale(dpr, dpr);\n      }\n    }\n  },\n\n  /**\n   * 清空该层画布\n   * @param {boolean} clearAll Clear all with out motion blur\n   */\n  clear: function (clearAll) {\n    var dom = this.dom;\n    var ctx = this.ctx;\n    var width = dom.width;\n    var height = dom.height;\n    var clearColor = this.clearColor;\n    var haveMotionBLur = this.motionBlur && !clearAll;\n    var lastFrameAlpha = this.lastFrameAlpha;\n    var dpr = this.dpr;\n\n    if (haveMotionBLur) {\n      if (!this.domBack) {\n        this.createBackBuffer();\n      }\n\n      this.ctxBack.globalCompositeOperation = 'copy';\n      this.ctxBack.drawImage(dom, 0, 0, width / dpr, height / dpr);\n    }\n\n    ctx.clearRect(0, 0, width, height);\n\n    if (clearColor) {\n      var clearColorGradientOrPattern; // Gradient\n\n      if (clearColor.colorStops) {\n        // Cache canvas gradient\n        clearColorGradientOrPattern = clearColor.__canvasGradient || Style.getGradient(ctx, clearColor, {\n          x: 0,\n          y: 0,\n          width: width,\n          height: height\n        });\n        clearColor.__canvasGradient = clearColorGradientOrPattern;\n      } // Pattern\n      else if (clearColor.image) {\n          clearColorGradientOrPattern = Pattern.prototype.getCanvasPattern.call(clearColor, ctx);\n        }\n\n      ctx.save();\n      ctx.fillStyle = clearColorGradientOrPattern || clearColor;\n      ctx.fillRect(0, 0, width, height);\n      ctx.restore();\n    }\n\n    if (haveMotionBLur) {\n      var domBack = this.domBack;\n      ctx.save();\n      ctx.globalAlpha = lastFrameAlpha;\n      ctx.drawImage(domBack, 0, 0, width, height);\n      ctx.restore();\n    }\n  }\n};\nvar _default = Layer;\nmodule.exports = _default;","var _config = require(\"./config\");\n\nvar devicePixelRatio = _config.devicePixelRatio;\n\nvar util = require(\"./core/util\");\n\nvar log = require(\"./core/log\");\n\nvar BoundingRect = require(\"./core/BoundingRect\");\n\nvar timsort = require(\"./core/timsort\");\n\nvar Layer = require(\"./Layer\");\n\nvar requestAnimationFrame = require(\"./animation/requestAnimationFrame\");\n\nvar Image = require(\"./graphic/Image\");\n\nvar env = require(\"./core/env\");\n\nvar HOVER_LAYER_ZLEVEL = 1e5;\nvar CANVAS_ZLEVEL = 314159;\nvar EL_AFTER_INCREMENTAL_INC = 0.01;\nvar INCREMENTAL_INC = 0.001;\n\nfunction parseInt10(val) {\n  return parseInt(val, 10);\n}\n\nfunction isLayerValid(layer) {\n  if (!layer) {\n    return false;\n  }\n\n  if (layer.__builtin__) {\n    return true;\n  }\n\n  if (typeof layer.resize !== 'function' || typeof layer.refresh !== 'function') {\n    return false;\n  }\n\n  return true;\n}\n\nvar tmpRect = new BoundingRect(0, 0, 0, 0);\nvar viewRect = new BoundingRect(0, 0, 0, 0);\n\nfunction isDisplayableCulled(el, width, height) {\n  tmpRect.copy(el.getBoundingRect());\n\n  if (el.transform) {\n    tmpRect.applyTransform(el.transform);\n  }\n\n  viewRect.width = width;\n  viewRect.height = height;\n  return !tmpRect.intersect(viewRect);\n}\n\nfunction isClipPathChanged(clipPaths, prevClipPaths) {\n  if (clipPaths == prevClipPaths) {\n    // Can both be null or undefined\n    return false;\n  }\n\n  if (!clipPaths || !prevClipPaths || clipPaths.length !== prevClipPaths.length) {\n    return true;\n  }\n\n  for (var i = 0; i < clipPaths.length; i++) {\n    if (clipPaths[i] !== prevClipPaths[i]) {\n      return true;\n    }\n  }\n}\n\nfunction doClip(clipPaths, ctx) {\n  for (var i = 0; i < clipPaths.length; i++) {\n    var clipPath = clipPaths[i];\n    clipPath.setTransform(ctx);\n    ctx.beginPath();\n    clipPath.buildPath(ctx, clipPath.shape);\n    ctx.clip(); // Transform back\n\n    clipPath.restoreTransform(ctx);\n  }\n}\n\nfunction createRoot(width, height) {\n  var domRoot = document.createElement('div'); // domRoot.onselectstart = returnFalse; // 避免页面选中的尴尬\n\n  domRoot.style.cssText = ['position:relative', 'overflow:hidden', 'width:' + width + 'px', 'height:' + height + 'px', 'padding:0', 'margin:0', 'border-width:0'].join(';') + ';';\n  return domRoot;\n}\n/**\n * @alias module:zrender/Painter\n * @constructor\n * @param {HTMLElement} root 绘图容器\n * @param {module:zrender/Storage} storage\n * @param {Object} opts\n */\n\n\nvar Painter = function (root, storage, opts) {\n  this.type = 'canvas'; // In node environment using node-canvas\n\n  var singleCanvas = !root.nodeName // In node ?\n  || root.nodeName.toUpperCase() === 'CANVAS';\n  this._opts = opts = util.extend({}, opts || {});\n  /**\n   * @type {number}\n   */\n\n  this.dpr = opts.devicePixelRatio || devicePixelRatio;\n  /**\n   * @type {boolean}\n   * @private\n   */\n\n  this._singleCanvas = singleCanvas;\n  /**\n   * 绘图容器\n   * @type {HTMLElement}\n   */\n\n  this.root = root;\n  var rootStyle = root.style;\n\n  if (rootStyle) {\n    rootStyle['-webkit-tap-highlight-color'] = 'transparent';\n    rootStyle['-webkit-user-select'] = rootStyle['user-select'] = rootStyle['-webkit-touch-callout'] = 'none';\n    root.innerHTML = '';\n  }\n  /**\n   * @type {module:zrender/Storage}\n   */\n\n\n  this.storage = storage;\n  /**\n   * @type {Array.<number>}\n   * @private\n   */\n\n  var zlevelList = this._zlevelList = [];\n  /**\n   * @type {Object.<string, module:zrender/Layer>}\n   * @private\n   */\n\n  var layers = this._layers = {};\n  /**\n   * @type {Object.<string, Object>}\n   * @private\n   */\n\n  this._layerConfig = {};\n  /**\n   * zrender will do compositing when root is a canvas and have multiple zlevels.\n   */\n\n  this._needsManuallyCompositing = false;\n\n  if (!singleCanvas) {\n    this._width = this._getSize(0);\n    this._height = this._getSize(1);\n    var domRoot = this._domRoot = createRoot(this._width, this._height);\n    root.appendChild(domRoot);\n  } else {\n    if (opts.width != null) {\n      root.width = opts.width;\n    }\n\n    if (opts.height != null) {\n      root.height = opts.height;\n    } // Use canvas width and height directly\n\n\n    var width = root.width;\n    var height = root.height;\n    this._width = width;\n    this._height = height; // Create layer if only one given canvas\n    // Device pixel ratio is fixed to 1 because given canvas has its specified width and height\n\n    var mainLayer = new Layer(root, this, 1);\n    mainLayer.__builtin__ = true;\n    mainLayer.initContext(); // FIXME Use canvas width and height\n    // mainLayer.resize(width, height);\n\n    layers[CANVAS_ZLEVEL] = mainLayer; // Not use common zlevel.\n\n    zlevelList.push(CANVAS_ZLEVEL);\n    this._domRoot = root;\n  }\n  /**\n   * @type {module:zrender/Layer}\n   * @private\n   */\n\n\n  this._hoverlayer = null;\n  this._hoverElements = [];\n};\n\nPainter.prototype = {\n  constructor: Painter,\n  getType: function () {\n    return 'canvas';\n  },\n\n  /**\n   * If painter use a single canvas\n   * @return {boolean}\n   */\n  isSingleCanvas: function () {\n    return this._singleCanvas;\n  },\n\n  /**\n   * @return {HTMLDivElement}\n   */\n  getViewportRoot: function () {\n    return this._domRoot;\n  },\n  getViewportRootOffset: function () {\n    var viewportRoot = this.getViewportRoot();\n\n    if (viewportRoot) {\n      return {\n        offsetLeft: viewportRoot.offsetLeft || 0,\n        offsetTop: viewportRoot.offsetTop || 0\n      };\n    }\n  },\n\n  /**\n   * 刷新\n   * @param {boolean} [paintAll=false] 强制绘制所有displayable\n   */\n  refresh: function (paintAll) {\n    var list = this.storage.getDisplayList(true);\n    var zlevelList = this._zlevelList;\n    this._redrawId = Math.random();\n\n    this._paintList(list, paintAll, this._redrawId); // Paint custum layers\n\n\n    for (var i = 0; i < zlevelList.length; i++) {\n      var z = zlevelList[i];\n      var layer = this._layers[z];\n\n      if (!layer.__builtin__ && layer.refresh) {\n        layer.refresh();\n      }\n    }\n\n    this.refreshHover();\n    return this;\n  },\n  addHover: function (el, hoverStyle) {\n    if (el.__hoverMir) {\n      return;\n    }\n\n    var elMirror = new el.constructor({\n      style: el.style,\n      shape: el.shape\n    });\n    elMirror.__from = el;\n    el.__hoverMir = elMirror;\n    elMirror.setStyle(hoverStyle);\n\n    this._hoverElements.push(elMirror);\n  },\n  removeHover: function (el) {\n    var elMirror = el.__hoverMir;\n    var hoverElements = this._hoverElements;\n    var idx = util.indexOf(hoverElements, elMirror);\n\n    if (idx >= 0) {\n      hoverElements.splice(idx, 1);\n    }\n\n    el.__hoverMir = null;\n  },\n  clearHover: function (el) {\n    var hoverElements = this._hoverElements;\n\n    for (var i = 0; i < hoverElements.length; i++) {\n      var from = hoverElements[i].__from;\n\n      if (from) {\n        from.__hoverMir = null;\n      }\n    }\n\n    hoverElements.length = 0;\n  },\n  refreshHover: function () {\n    var hoverElements = this._hoverElements;\n    var len = hoverElements.length;\n    var hoverLayer = this._hoverlayer;\n    hoverLayer && hoverLayer.clear();\n\n    if (!len) {\n      return;\n    }\n\n    timsort(hoverElements, this.storage.displayableSortFunc); // Use a extream large zlevel\n    // FIXME?\n\n    if (!hoverLayer) {\n      hoverLayer = this._hoverlayer = this.getLayer(HOVER_LAYER_ZLEVEL);\n    }\n\n    var scope = {};\n    hoverLayer.ctx.save();\n\n    for (var i = 0; i < len;) {\n      var el = hoverElements[i];\n      var originalEl = el.__from; // Original el is removed\n      // PENDING\n\n      if (!(originalEl && originalEl.__zr)) {\n        hoverElements.splice(i, 1);\n        originalEl.__hoverMir = null;\n        len--;\n        continue;\n      }\n\n      i++; // Use transform\n      // FIXME style and shape ?\n\n      if (!originalEl.invisible) {\n        el.transform = originalEl.transform;\n        el.invTransform = originalEl.invTransform;\n        el.__clipPaths = originalEl.__clipPaths; // el.\n\n        this._doPaintEl(el, hoverLayer, true, scope);\n      }\n    }\n\n    hoverLayer.ctx.restore();\n  },\n  getHoverLayer: function () {\n    return this.getLayer(HOVER_LAYER_ZLEVEL);\n  },\n  _paintList: function (list, paintAll, redrawId) {\n    if (this._redrawId !== redrawId) {\n      return;\n    }\n\n    paintAll = paintAll || false;\n\n    this._updateLayerStatus(list);\n\n    var finished = this._doPaintList(list, paintAll);\n\n    if (this._needsManuallyCompositing) {\n      this._compositeManually();\n    }\n\n    if (!finished) {\n      var self = this;\n      requestAnimationFrame(function () {\n        self._paintList(list, paintAll, redrawId);\n      });\n    }\n  },\n  _compositeManually: function () {\n    var ctx = this.getLayer(CANVAS_ZLEVEL).ctx;\n    var width = this._domRoot.width;\n    var height = this._domRoot.height;\n    ctx.clearRect(0, 0, width, height); // PENDING, If only builtin layer?\n\n    this.eachBuiltinLayer(function (layer) {\n      if (layer.virtual) {\n        ctx.drawImage(layer.dom, 0, 0, width, height);\n      }\n    });\n  },\n  _doPaintList: function (list, paintAll) {\n    var layerList = [];\n\n    for (var zi = 0; zi < this._zlevelList.length; zi++) {\n      var zlevel = this._zlevelList[zi];\n      var layer = this._layers[zlevel];\n\n      if (layer.__builtin__ && layer !== this._hoverlayer && (layer.__dirty || paintAll)) {\n        layerList.push(layer);\n      }\n    }\n\n    var finished = true;\n\n    for (var k = 0; k < layerList.length; k++) {\n      var layer = layerList[k];\n      var ctx = layer.ctx;\n      var scope = {};\n      ctx.save();\n      var start = paintAll ? layer.__startIndex : layer.__drawIndex;\n      var useTimer = !paintAll && layer.incremental && Date.now;\n      var startTime = useTimer && Date.now(); // All elements in this layer are cleared.\n\n      if (layer.__startIndex === layer.__endIndex) {\n        layer.clear();\n      } else if (start === layer.__startIndex) {\n        var firstEl = list[start];\n\n        if (!firstEl.incremental || !firstEl.notClear || paintAll) {\n          layer.clear();\n        }\n      }\n\n      if (start === -1) {\n        console.error('For some unknown reason. drawIndex is -1');\n        start = layer.__startIndex;\n      }\n\n      for (var i = start; i < layer.__endIndex; i++) {\n        var el = list[i];\n\n        this._doPaintEl(el, layer, paintAll, scope);\n\n        el.__dirty = false;\n\n        if (useTimer) {\n          // Date.now can be executed in 13,025,305 ops/second.\n          var dTime = Date.now() - startTime; // Give 15 millisecond to draw.\n          // The rest elements will be drawn in the next frame.\n\n          if (dTime > 15) {\n            break;\n          }\n        }\n      }\n\n      layer.__drawIndex = i;\n\n      if (layer.__drawIndex < layer.__endIndex) {\n        finished = false;\n      }\n\n      if (scope.prevElClipPaths) {\n        // Needs restore the state. If last drawn element is in the clipping area.\n        ctx.restore();\n      }\n\n      ctx.restore();\n    }\n\n    if (env.wxa) {\n      // Flush for weixin application\n      util.each(this._layers, function (layer) {\n        if (layer && layer.ctx && layer.ctx.draw) {\n          layer.ctx.draw();\n        }\n      });\n    }\n\n    return finished;\n  },\n  _doPaintEl: function (el, currentLayer, forcePaint, scope) {\n    var ctx = currentLayer.ctx;\n    var m = el.transform;\n\n    if ((currentLayer.__dirty || forcePaint) && // Ignore invisible element\n    !el.invisible // Ignore transparent element\n    && el.style.opacity !== 0 // Ignore scale 0 element, in some environment like node-canvas\n    // Draw a scale 0 element can cause all following draw wrong\n    // And setTransform with scale 0 will cause set back transform failed.\n    && !(m && !m[0] && !m[3]) // Ignore culled element\n    && !(el.culling && isDisplayableCulled(el, this._width, this._height))) {\n      var clipPaths = el.__clipPaths; // Optimize when clipping on group with several elements\n\n      if (!scope.prevElClipPaths || isClipPathChanged(clipPaths, scope.prevElClipPaths)) {\n        // If has previous clipping state, restore from it\n        if (scope.prevElClipPaths) {\n          currentLayer.ctx.restore();\n          scope.prevElClipPaths = null; // Reset prevEl since context has been restored\n\n          scope.prevEl = null;\n        } // New clipping state\n\n\n        if (clipPaths) {\n          ctx.save();\n          doClip(clipPaths, ctx);\n          scope.prevElClipPaths = clipPaths;\n        }\n      }\n\n      el.beforeBrush && el.beforeBrush(ctx);\n      el.brush(ctx, scope.prevEl || null);\n      scope.prevEl = el;\n      el.afterBrush && el.afterBrush(ctx);\n    }\n  },\n\n  /**\n   * 获取 zlevel 所在层，如果不存在则会创建一个新的层\n   * @param {number} zlevel\n   * @param {boolean} virtual Virtual layer will not be inserted into dom.\n   * @return {module:zrender/Layer}\n   */\n  getLayer: function (zlevel, virtual) {\n    if (this._singleCanvas && !this._needsManuallyCompositing) {\n      zlevel = CANVAS_ZLEVEL;\n    }\n\n    var layer = this._layers[zlevel];\n\n    if (!layer) {\n      // Create a new layer\n      layer = new Layer('zr_' + zlevel, this, this.dpr);\n      layer.zlevel = zlevel;\n      layer.__builtin__ = true;\n\n      if (this._layerConfig[zlevel]) {\n        util.merge(layer, this._layerConfig[zlevel], true);\n      }\n\n      if (virtual) {\n        layer.virtual = virtual;\n      }\n\n      this.insertLayer(zlevel, layer); // Context is created after dom inserted to document\n      // Or excanvas will get 0px clientWidth and clientHeight\n\n      layer.initContext();\n    }\n\n    return layer;\n  },\n  insertLayer: function (zlevel, layer) {\n    var layersMap = this._layers;\n    var zlevelList = this._zlevelList;\n    var len = zlevelList.length;\n    var prevLayer = null;\n    var i = -1;\n    var domRoot = this._domRoot;\n\n    if (layersMap[zlevel]) {\n      log('ZLevel ' + zlevel + ' has been used already');\n      return;\n    } // Check if is a valid layer\n\n\n    if (!isLayerValid(layer)) {\n      log('Layer of zlevel ' + zlevel + ' is not valid');\n      return;\n    }\n\n    if (len > 0 && zlevel > zlevelList[0]) {\n      for (i = 0; i < len - 1; i++) {\n        if (zlevelList[i] < zlevel && zlevelList[i + 1] > zlevel) {\n          break;\n        }\n      }\n\n      prevLayer = layersMap[zlevelList[i]];\n    }\n\n    zlevelList.splice(i + 1, 0, zlevel);\n    layersMap[zlevel] = layer; // Vitual layer will not directly show on the screen.\n    // (It can be a WebGL layer and assigned to a ZImage element)\n    // But it still under management of zrender.\n\n    if (!layer.virtual) {\n      if (prevLayer) {\n        var prevDom = prevLayer.dom;\n\n        if (prevDom.nextSibling) {\n          domRoot.insertBefore(layer.dom, prevDom.nextSibling);\n        } else {\n          domRoot.appendChild(layer.dom);\n        }\n      } else {\n        if (domRoot.firstChild) {\n          domRoot.insertBefore(layer.dom, domRoot.firstChild);\n        } else {\n          domRoot.appendChild(layer.dom);\n        }\n      }\n    }\n  },\n  // Iterate each layer\n  eachLayer: function (cb, context) {\n    var zlevelList = this._zlevelList;\n    var z;\n    var i;\n\n    for (i = 0; i < zlevelList.length; i++) {\n      z = zlevelList[i];\n      cb.call(context, this._layers[z], z);\n    }\n  },\n  // Iterate each buildin layer\n  eachBuiltinLayer: function (cb, context) {\n    var zlevelList = this._zlevelList;\n    var layer;\n    var z;\n    var i;\n\n    for (i = 0; i < zlevelList.length; i++) {\n      z = zlevelList[i];\n      layer = this._layers[z];\n\n      if (layer.__builtin__) {\n        cb.call(context, layer, z);\n      }\n    }\n  },\n  // Iterate each other layer except buildin layer\n  eachOtherLayer: function (cb, context) {\n    var zlevelList = this._zlevelList;\n    var layer;\n    var z;\n    var i;\n\n    for (i = 0; i < zlevelList.length; i++) {\n      z = zlevelList[i];\n      layer = this._layers[z];\n\n      if (!layer.__builtin__) {\n        cb.call(context, layer, z);\n      }\n    }\n  },\n\n  /**\n   * 获取所有已创建的层\n   * @param {Array.<module:zrender/Layer>} [prevLayer]\n   */\n  getLayers: function () {\n    return this._layers;\n  },\n  _updateLayerStatus: function (list) {\n    this.eachBuiltinLayer(function (layer, z) {\n      layer.__dirty = layer.__used = false;\n    });\n\n    function updatePrevLayer(idx) {\n      if (prevLayer) {\n        if (prevLayer.__endIndex !== idx) {\n          prevLayer.__dirty = true;\n        }\n\n        prevLayer.__endIndex = idx;\n      }\n    }\n\n    if (this._singleCanvas) {\n      for (var i = 1; i < list.length; i++) {\n        var el = list[i];\n\n        if (el.zlevel !== list[i - 1].zlevel || el.incremental) {\n          this._needsManuallyCompositing = true;\n          break;\n        }\n      }\n    }\n\n    var prevLayer = null;\n    var incrementalLayerCount = 0;\n\n    for (var i = 0; i < list.length; i++) {\n      var el = list[i];\n      var zlevel = el.zlevel;\n      var layer; // PENDING If change one incremental element style ?\n      // TODO Where there are non-incremental elements between incremental elements.\n\n      if (el.incremental) {\n        layer = this.getLayer(zlevel + INCREMENTAL_INC, this._needsManuallyCompositing);\n        layer.incremental = true;\n        incrementalLayerCount = 1;\n      } else {\n        layer = this.getLayer(zlevel + (incrementalLayerCount > 0 ? EL_AFTER_INCREMENTAL_INC : 0), this._needsManuallyCompositing);\n      }\n\n      if (!layer.__builtin__) {\n        log('ZLevel ' + zlevel + ' has been used by unkown layer ' + layer.id);\n      }\n\n      if (layer !== prevLayer) {\n        layer.__used = true;\n\n        if (layer.__startIndex !== i) {\n          layer.__dirty = true;\n        }\n\n        layer.__startIndex = i;\n\n        if (!layer.incremental) {\n          layer.__drawIndex = i;\n        } else {\n          // Mark layer draw index needs to update.\n          layer.__drawIndex = -1;\n        }\n\n        updatePrevLayer(i);\n        prevLayer = layer;\n      }\n\n      if (el.__dirty) {\n        layer.__dirty = true;\n\n        if (layer.incremental && layer.__drawIndex < 0) {\n          // Start draw from the first dirty element.\n          layer.__drawIndex = i;\n        }\n      }\n    }\n\n    updatePrevLayer(i);\n    this.eachBuiltinLayer(function (layer, z) {\n      // Used in last frame but not in this frame. Needs clear\n      if (!layer.__used && layer.getElementCount() > 0) {\n        layer.__dirty = true;\n        layer.__startIndex = layer.__endIndex = layer.__drawIndex = 0;\n      } // For incremental layer. In case start index changed and no elements are dirty.\n\n\n      if (layer.__dirty && layer.__drawIndex < 0) {\n        layer.__drawIndex = layer.__startIndex;\n      }\n    });\n  },\n\n  /**\n   * 清除hover层外所有内容\n   */\n  clear: function () {\n    this.eachBuiltinLayer(this._clearLayer);\n    return this;\n  },\n  _clearLayer: function (layer) {\n    layer.clear();\n  },\n\n  /**\n   * 修改指定zlevel的绘制参数\n   *\n   * @param {string} zlevel\n   * @param {Object} config 配置对象\n   * @param {string} [config.clearColor=0] 每次清空画布的颜色\n   * @param {string} [config.motionBlur=false] 是否开启动态模糊\n   * @param {number} [config.lastFrameAlpha=0.7]\n   *                 在开启动态模糊的时候使用，与上一帧混合的alpha值，值越大尾迹越明显\n   */\n  configLayer: function (zlevel, config) {\n    if (config) {\n      var layerConfig = this._layerConfig;\n\n      if (!layerConfig[zlevel]) {\n        layerConfig[zlevel] = config;\n      } else {\n        util.merge(layerConfig[zlevel], config, true);\n      }\n\n      for (var i = 0; i < this._zlevelList.length; i++) {\n        var _zlevel = this._zlevelList[i];\n\n        if (_zlevel === zlevel || _zlevel === zlevel + EL_AFTER_INCREMENTAL_INC) {\n          var layer = this._layers[_zlevel];\n          util.merge(layer, layerConfig[zlevel], true);\n        }\n      }\n    }\n  },\n\n  /**\n   * 删除指定层\n   * @param {number} zlevel 层所在的zlevel\n   */\n  delLayer: function (zlevel) {\n    var layers = this._layers;\n    var zlevelList = this._zlevelList;\n    var layer = layers[zlevel];\n\n    if (!layer) {\n      return;\n    }\n\n    layer.dom.parentNode.removeChild(layer.dom);\n    delete layers[zlevel];\n    zlevelList.splice(util.indexOf(zlevelList, zlevel), 1);\n  },\n\n  /**\n   * 区域大小变化后重绘\n   */\n  resize: function (width, height) {\n    if (!this._domRoot.style) {\n      // Maybe in node or worker\n      if (width == null || height == null) {\n        return;\n      }\n\n      this._width = width;\n      this._height = height;\n      this.getLayer(CANVAS_ZLEVEL).resize(width, height);\n    } else {\n      var domRoot = this._domRoot; // FIXME Why ?\n\n      domRoot.style.display = 'none'; // Save input w/h\n\n      var opts = this._opts;\n      width != null && (opts.width = width);\n      height != null && (opts.height = height);\n      width = this._getSize(0);\n      height = this._getSize(1);\n      domRoot.style.display = ''; // 优化没有实际改变的resize\n\n      if (this._width != width || height != this._height) {\n        domRoot.style.width = width + 'px';\n        domRoot.style.height = height + 'px';\n\n        for (var id in this._layers) {\n          if (this._layers.hasOwnProperty(id)) {\n            this._layers[id].resize(width, height);\n          }\n        }\n\n        util.each(this._progressiveLayers, function (layer) {\n          layer.resize(width, height);\n        });\n        this.refresh(true);\n      }\n\n      this._width = width;\n      this._height = height;\n    }\n\n    return this;\n  },\n\n  /**\n   * 清除单独的一个层\n   * @param {number} zlevel\n   */\n  clearLayer: function (zlevel) {\n    var layer = this._layers[zlevel];\n\n    if (layer) {\n      layer.clear();\n    }\n  },\n\n  /**\n   * 释放\n   */\n  dispose: function () {\n    this.root.innerHTML = '';\n    this.root = this.storage = this._domRoot = this._layers = null;\n  },\n\n  /**\n   * Get canvas which has all thing rendered\n   * @param {Object} opts\n   * @param {string} [opts.backgroundColor]\n   * @param {number} [opts.pixelRatio]\n   */\n  getRenderedCanvas: function (opts) {\n    opts = opts || {};\n\n    if (this._singleCanvas && !this._compositeManually) {\n      return this._layers[CANVAS_ZLEVEL].dom;\n    }\n\n    var imageLayer = new Layer('image', this, opts.pixelRatio || this.dpr);\n    imageLayer.initContext();\n    imageLayer.clearColor = opts.backgroundColor;\n    imageLayer.clear();\n\n    if (opts.pixelRatio <= this.dpr) {\n      this.refresh();\n      var width = imageLayer.dom.width;\n      var height = imageLayer.dom.height;\n      var ctx = imageLayer.ctx;\n      this.eachLayer(function (layer) {\n        if (layer.__builtin__) {\n          ctx.drawImage(layer.dom, 0, 0, width, height);\n        } else if (layer.renderToCanvas) {\n          imageLayer.ctx.save();\n          layer.renderToCanvas(imageLayer.ctx);\n          imageLayer.ctx.restore();\n        }\n      });\n    } else {\n      // PENDING, echarts-gl and incremental rendering.\n      var scope = {};\n      var displayList = this.storage.getDisplayList(true);\n\n      for (var i = 0; i < displayList.length; i++) {\n        var el = displayList[i];\n\n        this._doPaintEl(el, imageLayer, true, scope);\n      }\n    }\n\n    return imageLayer.dom;\n  },\n\n  /**\n   * 获取绘图区域宽度\n   */\n  getWidth: function () {\n    return this._width;\n  },\n\n  /**\n   * 获取绘图区域高度\n   */\n  getHeight: function () {\n    return this._height;\n  },\n  _getSize: function (whIdx) {\n    var opts = this._opts;\n    var wh = ['width', 'height'][whIdx];\n    var cwh = ['clientWidth', 'clientHeight'][whIdx];\n    var plt = ['paddingLeft', 'paddingTop'][whIdx];\n    var prb = ['paddingRight', 'paddingBottom'][whIdx];\n\n    if (opts[wh] != null && opts[wh] !== 'auto') {\n      return parseFloat(opts[wh]);\n    }\n\n    var root = this.root; // IE8 does not support getComputedStyle, but it use VML.\n\n    var stl = document.defaultView.getComputedStyle(root);\n    return (root[cwh] || parseInt10(stl[wh]) || parseInt10(root.style[wh])) - (parseInt10(stl[plt]) || 0) - (parseInt10(stl[prb]) || 0) | 0;\n  },\n  pathToImage: function (path, dpr) {\n    dpr = dpr || this.dpr;\n    var canvas = document.createElement('canvas');\n    var ctx = canvas.getContext('2d');\n    var rect = path.getBoundingRect();\n    var style = path.style;\n    var shadowBlurSize = style.shadowBlur * dpr;\n    var shadowOffsetX = style.shadowOffsetX * dpr;\n    var shadowOffsetY = style.shadowOffsetY * dpr;\n    var lineWidth = style.hasStroke() ? style.lineWidth : 0;\n    var leftMargin = Math.max(lineWidth / 2, -shadowOffsetX + shadowBlurSize);\n    var rightMargin = Math.max(lineWidth / 2, shadowOffsetX + shadowBlurSize);\n    var topMargin = Math.max(lineWidth / 2, -shadowOffsetY + shadowBlurSize);\n    var bottomMargin = Math.max(lineWidth / 2, shadowOffsetY + shadowBlurSize);\n    var width = rect.width + leftMargin + rightMargin;\n    var height = rect.height + topMargin + bottomMargin;\n    canvas.width = width * dpr;\n    canvas.height = height * dpr;\n    ctx.scale(dpr, dpr);\n    ctx.clearRect(0, 0, width, height);\n    ctx.dpr = dpr;\n    var pathTransform = {\n      position: path.position,\n      rotation: path.rotation,\n      scale: path.scale\n    };\n    path.position = [leftMargin - rect.x, topMargin - rect.y];\n    path.rotation = 0;\n    path.scale = [1, 1];\n    path.updateTransform();\n\n    if (path) {\n      path.brush(ctx);\n    }\n\n    var ImageShape = Image;\n    var imgShape = new ImageShape({\n      style: {\n        x: 0,\n        y: 0,\n        image: canvas\n      }\n    });\n\n    if (pathTransform.position != null) {\n      imgShape.position = path.position = pathTransform.position;\n    }\n\n    if (pathTransform.rotation != null) {\n      imgShape.rotation = path.rotation = pathTransform.rotation;\n    }\n\n    if (pathTransform.scale != null) {\n      imgShape.scale = path.scale = pathTransform.scale;\n    }\n\n    return imgShape;\n  }\n};\nvar _default = Painter;\nmodule.exports = _default;","var util = require(\"./core/util\");\n\nvar env = require(\"./core/env\");\n\nvar Group = require(\"./container/Group\");\n\nvar timsort = require(\"./core/timsort\");\n\n// Use timsort because in most case elements are partially sorted\n// https://jsfiddle.net/pissang/jr4x7mdm/8/\nfunction shapeCompareFunc(a, b) {\n  if (a.zlevel === b.zlevel) {\n    if (a.z === b.z) {\n      // if (a.z2 === b.z2) {\n      //     // FIXME Slow has renderidx compare\n      //     // http://stackoverflow.com/questions/20883421/sorting-in-javascript-should-every-compare-function-have-a-return-0-statement\n      //     // https://github.com/v8/v8/blob/47cce544a31ed5577ffe2963f67acb4144ee0232/src/js/array.js#L1012\n      //     return a.__renderidx - b.__renderidx;\n      // }\n      return a.z2 - b.z2;\n    }\n\n    return a.z - b.z;\n  }\n\n  return a.zlevel - b.zlevel;\n}\n/**\n * 内容仓库 (M)\n * @alias module:zrender/Storage\n * @constructor\n */\n\n\nvar Storage = function () {\n  // jshint ignore:line\n  this._roots = [];\n  this._displayList = [];\n  this._displayListLen = 0;\n};\n\nStorage.prototype = {\n  constructor: Storage,\n\n  /**\n   * @param  {Function} cb\n   *\n   */\n  traverse: function (cb, context) {\n    for (var i = 0; i < this._roots.length; i++) {\n      this._roots[i].traverse(cb, context);\n    }\n  },\n\n  /**\n   * 返回所有图形的绘制队列\n   * @param {boolean} [update=false] 是否在返回前更新该数组\n   * @param {boolean} [includeIgnore=false] 是否包含 ignore 的数组, 在 update 为 true 的时候有效\n   *\n   * 详见{@link module:zrender/graphic/Displayable.prototype.updateDisplayList}\n   * @return {Array.<module:zrender/graphic/Displayable>}\n   */\n  getDisplayList: function (update, includeIgnore) {\n    includeIgnore = includeIgnore || false;\n\n    if (update) {\n      this.updateDisplayList(includeIgnore);\n    }\n\n    return this._displayList;\n  },\n\n  /**\n   * 更新图形的绘制队列。\n   * 每次绘制前都会调用，该方法会先深度优先遍历整个树，更新所有Group和Shape的变换并且把所有可见的Shape保存到数组中，\n   * 最后根据绘制的优先级（zlevel > z > 插入顺序）排序得到绘制队列\n   * @param {boolean} [includeIgnore=false] 是否包含 ignore 的数组\n   */\n  updateDisplayList: function (includeIgnore) {\n    this._displayListLen = 0;\n    var roots = this._roots;\n    var displayList = this._displayList;\n\n    for (var i = 0, len = roots.length; i < len; i++) {\n      this._updateAndAddDisplayable(roots[i], null, includeIgnore);\n    }\n\n    displayList.length = this._displayListLen;\n    env.canvasSupported && timsort(displayList, shapeCompareFunc);\n  },\n  _updateAndAddDisplayable: function (el, clipPaths, includeIgnore) {\n    if (el.ignore && !includeIgnore) {\n      return;\n    }\n\n    el.beforeUpdate();\n\n    if (el.__dirty) {\n      el.update();\n    }\n\n    el.afterUpdate();\n    var userSetClipPath = el.clipPath;\n\n    if (userSetClipPath) {\n      // FIXME 效率影响\n      if (clipPaths) {\n        clipPaths = clipPaths.slice();\n      } else {\n        clipPaths = [];\n      }\n\n      var currentClipPath = userSetClipPath;\n      var parentClipPath = el; // Recursively add clip path\n\n      while (currentClipPath) {\n        // clipPath 的变换是基于使用这个 clipPath 的元素\n        currentClipPath.parent = parentClipPath;\n        currentClipPath.updateTransform();\n        clipPaths.push(currentClipPath);\n        parentClipPath = currentClipPath;\n        currentClipPath = currentClipPath.clipPath;\n      }\n    }\n\n    if (el.isGroup) {\n      var children = el._children;\n\n      for (var i = 0; i < children.length; i++) {\n        var child = children[i]; // Force to mark as dirty if group is dirty\n        // FIXME __dirtyPath ?\n\n        if (el.__dirty) {\n          child.__dirty = true;\n        }\n\n        this._updateAndAddDisplayable(child, clipPaths, includeIgnore);\n      } // Mark group clean here\n\n\n      el.__dirty = false;\n    } else {\n      el.__clipPaths = clipPaths;\n      this._displayList[this._displayListLen++] = el;\n    }\n  },\n\n  /**\n   * 添加图形(Shape)或者组(Group)到根节点\n   * @param {module:zrender/Element} el\n   */\n  addRoot: function (el) {\n    if (el.__storage === this) {\n      return;\n    }\n\n    if (el instanceof Group) {\n      el.addChildrenToStorage(this);\n    }\n\n    this.addToStorage(el);\n\n    this._roots.push(el);\n  },\n\n  /**\n   * 删除指定的图形(Shape)或者组(Group)\n   * @param {string|Array.<string>} [el] 如果为空清空整个Storage\n   */\n  delRoot: function (el) {\n    if (el == null) {\n      // 不指定el清空\n      for (var i = 0; i < this._roots.length; i++) {\n        var root = this._roots[i];\n\n        if (root instanceof Group) {\n          root.delChildrenFromStorage(this);\n        }\n      }\n\n      this._roots = [];\n      this._displayList = [];\n      this._displayListLen = 0;\n      return;\n    }\n\n    if (el instanceof Array) {\n      for (var i = 0, l = el.length; i < l; i++) {\n        this.delRoot(el[i]);\n      }\n\n      return;\n    }\n\n    var idx = util.indexOf(this._roots, el);\n\n    if (idx >= 0) {\n      this.delFromStorage(el);\n\n      this._roots.splice(idx, 1);\n\n      if (el instanceof Group) {\n        el.delChildrenFromStorage(this);\n      }\n    }\n  },\n  addToStorage: function (el) {\n    if (el) {\n      el.__storage = this;\n      el.dirty(false);\n    }\n\n    return this;\n  },\n  delFromStorage: function (el) {\n    if (el) {\n      el.__storage = null;\n    }\n\n    return this;\n  },\n\n  /**\n   * 清空并且释放Storage\n   */\n  dispose: function () {\n    this._renderList = this._roots = null;\n  },\n  displayableSortFunc: shapeCompareFunc\n};\nvar _default = Storage;\nmodule.exports = _default;","var util = require(\"../core/util\");\n\nvar _event = require(\"../core/event\");\n\nvar Dispatcher = _event.Dispatcher;\n\nvar requestAnimationFrame = require(\"./requestAnimationFrame\");\n\nvar Animator = require(\"./Animator\");\n\n/**\n * 动画主类, 调度和管理所有动画控制器\n *\n * @module zrender/animation/Animation\n * @author pissang(https://github.com/pissang)\n */\n// TODO Additive animation\n// http://iosoteric.com/additive-animations-animatewithduration-in-ios-8/\n// https://developer.apple.com/videos/wwdc2014/#236\n\n/**\n * @typedef {Object} IZRenderStage\n * @property {Function} update\n */\n\n/**\n * @alias module:zrender/animation/Animation\n * @constructor\n * @param {Object} [options]\n * @param {Function} [options.onframe]\n * @param {IZRenderStage} [options.stage]\n * @example\n *     var animation = new Animation();\n *     var obj = {\n *         x: 100,\n *         y: 100\n *     };\n *     animation.animate(node.position)\n *         .when(1000, {\n *             x: 500,\n *             y: 500\n *         })\n *         .when(2000, {\n *             x: 100,\n *             y: 100\n *         })\n *         .start('spline');\n */\nvar Animation = function (options) {\n  options = options || {};\n  this.stage = options.stage || {};\n\n  this.onframe = options.onframe || function () {}; // private properties\n\n\n  this._clips = [];\n  this._running = false;\n  this._time;\n  this._pausedTime;\n  this._pauseStart;\n  this._paused = false;\n  Dispatcher.call(this);\n};\n\nAnimation.prototype = {\n  constructor: Animation,\n\n  /**\n   * 添加 clip\n   * @param {module:zrender/animation/Clip} clip\n   */\n  addClip: function (clip) {\n    this._clips.push(clip);\n  },\n\n  /**\n   * 添加 animator\n   * @param {module:zrender/animation/Animator} animator\n   */\n  addAnimator: function (animator) {\n    animator.animation = this;\n    var clips = animator.getClips();\n\n    for (var i = 0; i < clips.length; i++) {\n      this.addClip(clips[i]);\n    }\n  },\n\n  /**\n   * 删除动画片段\n   * @param {module:zrender/animation/Clip} clip\n   */\n  removeClip: function (clip) {\n    var idx = util.indexOf(this._clips, clip);\n\n    if (idx >= 0) {\n      this._clips.splice(idx, 1);\n    }\n  },\n\n  /**\n   * 删除动画片段\n   * @param {module:zrender/animation/Animator} animator\n   */\n  removeAnimator: function (animator) {\n    var clips = animator.getClips();\n\n    for (var i = 0; i < clips.length; i++) {\n      this.removeClip(clips[i]);\n    }\n\n    animator.animation = null;\n  },\n  _update: function () {\n    var time = new Date().getTime() - this._pausedTime;\n\n    var delta = time - this._time;\n    var clips = this._clips;\n    var len = clips.length;\n    var deferredEvents = [];\n    var deferredClips = [];\n\n    for (var i = 0; i < len; i++) {\n      var clip = clips[i];\n      var e = clip.step(time, delta); // Throw out the events need to be called after\n      // stage.update, like destroy\n\n      if (e) {\n        deferredEvents.push(e);\n        deferredClips.push(clip);\n      }\n    } // Remove the finished clip\n\n\n    for (var i = 0; i < len;) {\n      if (clips[i]._needsRemove) {\n        clips[i] = clips[len - 1];\n        clips.pop();\n        len--;\n      } else {\n        i++;\n      }\n    }\n\n    len = deferredEvents.length;\n\n    for (var i = 0; i < len; i++) {\n      deferredClips[i].fire(deferredEvents[i]);\n    }\n\n    this._time = time;\n    this.onframe(delta); // Frame should before stage update. Upper application\n    // depends on the sequence (e.g., echarts-stream)\n\n    this.trigger('frame', delta);\n\n    if (this.stage.update) {\n      this.stage.update();\n    }\n  },\n  _startLoop: function () {\n    var self = this;\n    this._running = true;\n\n    function step() {\n      if (self._running) {\n        requestAnimationFrame(step);\n        !self._paused && self._update();\n      }\n    }\n\n    requestAnimationFrame(step);\n  },\n\n  /**\n   * 开始运行动画\n   */\n  start: function () {\n    this._time = new Date().getTime();\n    this._pausedTime = 0;\n\n    this._startLoop();\n  },\n\n  /**\n   * 停止运行动画\n   */\n  stop: function () {\n    this._running = false;\n  },\n\n  /**\n   * Pause\n   */\n  pause: function () {\n    if (!this._paused) {\n      this._pauseStart = new Date().getTime();\n      this._paused = true;\n    }\n  },\n\n  /**\n   * Resume\n   */\n  resume: function () {\n    if (this._paused) {\n      this._pausedTime += new Date().getTime() - this._pauseStart;\n      this._paused = false;\n    }\n  },\n\n  /**\n   * 清除所有动画片段\n   */\n  clear: function () {\n    this._clips = [];\n  },\n\n  /**\n   * 对一个目标创建一个animator对象，可以指定目标中的属性使用动画\n   * @param  {Object} target\n   * @param  {Object} options\n   * @param  {boolean} [options.loop=false] 是否循环播放动画\n   * @param  {Function} [options.getter=null]\n   *         如果指定getter函数，会通过getter函数取属性值\n   * @param  {Function} [options.setter=null]\n   *         如果指定setter函数，会通过setter函数设置属性值\n   * @return {module:zrender/animation/Animation~Animator}\n   */\n  // TODO Gap\n  animate: function (target, options) {\n    options = options || {};\n    var animator = new Animator(target, options.loop, options.getter, options.setter);\n    this.addAnimator(animator);\n    return animator;\n  }\n};\nutil.mixin(Animation, Dispatcher);\nvar _default = Animation;\nmodule.exports = _default;","var Clip = require(\"./Clip\");\n\nvar color = require(\"../tool/color\");\n\nvar _util = require(\"../core/util\");\n\nvar isArrayLike = _util.isArrayLike;\n\n/**\n * @module echarts/animation/Animator\n */\nvar arraySlice = Array.prototype.slice;\n\nfunction defaultGetter(target, key) {\n  return target[key];\n}\n\nfunction defaultSetter(target, key, value) {\n  target[key] = value;\n}\n/**\n * @param  {number} p0\n * @param  {number} p1\n * @param  {number} percent\n * @return {number}\n */\n\n\nfunction interpolateNumber(p0, p1, percent) {\n  return (p1 - p0) * percent + p0;\n}\n/**\n * @param  {string} p0\n * @param  {string} p1\n * @param  {number} percent\n * @return {string}\n */\n\n\nfunction interpolateString(p0, p1, percent) {\n  return percent > 0.5 ? p1 : p0;\n}\n/**\n * @param  {Array} p0\n * @param  {Array} p1\n * @param  {number} percent\n * @param  {Array} out\n * @param  {number} arrDim\n */\n\n\nfunction interpolateArray(p0, p1, percent, out, arrDim) {\n  var len = p0.length;\n\n  if (arrDim == 1) {\n    for (var i = 0; i < len; i++) {\n      out[i] = interpolateNumber(p0[i], p1[i], percent);\n    }\n  } else {\n    var len2 = len && p0[0].length;\n\n    for (var i = 0; i < len; i++) {\n      for (var j = 0; j < len2; j++) {\n        out[i][j] = interpolateNumber(p0[i][j], p1[i][j], percent);\n      }\n    }\n  }\n} // arr0 is source array, arr1 is target array.\n// Do some preprocess to avoid error happened when interpolating from arr0 to arr1\n\n\nfunction fillArr(arr0, arr1, arrDim) {\n  var arr0Len = arr0.length;\n  var arr1Len = arr1.length;\n\n  if (arr0Len !== arr1Len) {\n    // FIXME Not work for TypedArray\n    var isPreviousLarger = arr0Len > arr1Len;\n\n    if (isPreviousLarger) {\n      // Cut the previous\n      arr0.length = arr1Len;\n    } else {\n      // Fill the previous\n      for (var i = arr0Len; i < arr1Len; i++) {\n        arr0.push(arrDim === 1 ? arr1[i] : arraySlice.call(arr1[i]));\n      }\n    }\n  } // Handling NaN value\n\n\n  var len2 = arr0[0] && arr0[0].length;\n\n  for (var i = 0; i < arr0.length; i++) {\n    if (arrDim === 1) {\n      if (isNaN(arr0[i])) {\n        arr0[i] = arr1[i];\n      }\n    } else {\n      for (var j = 0; j < len2; j++) {\n        if (isNaN(arr0[i][j])) {\n          arr0[i][j] = arr1[i][j];\n        }\n      }\n    }\n  }\n}\n/**\n * @param  {Array} arr0\n * @param  {Array} arr1\n * @param  {number} arrDim\n * @return {boolean}\n */\n\n\nfunction isArraySame(arr0, arr1, arrDim) {\n  if (arr0 === arr1) {\n    return true;\n  }\n\n  var len = arr0.length;\n\n  if (len !== arr1.length) {\n    return false;\n  }\n\n  if (arrDim === 1) {\n    for (var i = 0; i < len; i++) {\n      if (arr0[i] !== arr1[i]) {\n        return false;\n      }\n    }\n  } else {\n    var len2 = arr0[0].length;\n\n    for (var i = 0; i < len; i++) {\n      for (var j = 0; j < len2; j++) {\n        if (arr0[i][j] !== arr1[i][j]) {\n          return false;\n        }\n      }\n    }\n  }\n\n  return true;\n}\n/**\n * Catmull Rom interpolate array\n * @param  {Array} p0\n * @param  {Array} p1\n * @param  {Array} p2\n * @param  {Array} p3\n * @param  {number} t\n * @param  {number} t2\n * @param  {number} t3\n * @param  {Array} out\n * @param  {number} arrDim\n */\n\n\nfunction catmullRomInterpolateArray(p0, p1, p2, p3, t, t2, t3, out, arrDim) {\n  var len = p0.length;\n\n  if (arrDim == 1) {\n    for (var i = 0; i < len; i++) {\n      out[i] = catmullRomInterpolate(p0[i], p1[i], p2[i], p3[i], t, t2, t3);\n    }\n  } else {\n    var len2 = p0[0].length;\n\n    for (var i = 0; i < len; i++) {\n      for (var j = 0; j < len2; j++) {\n        out[i][j] = catmullRomInterpolate(p0[i][j], p1[i][j], p2[i][j], p3[i][j], t, t2, t3);\n      }\n    }\n  }\n}\n/**\n * Catmull Rom interpolate number\n * @param  {number} p0\n * @param  {number} p1\n * @param  {number} p2\n * @param  {number} p3\n * @param  {number} t\n * @param  {number} t2\n * @param  {number} t3\n * @return {number}\n */\n\n\nfunction catmullRomInterpolate(p0, p1, p2, p3, t, t2, t3) {\n  var v0 = (p2 - p0) * 0.5;\n  var v1 = (p3 - p1) * 0.5;\n  return (2 * (p1 - p2) + v0 + v1) * t3 + (-3 * (p1 - p2) - 2 * v0 - v1) * t2 + v0 * t + p1;\n}\n\nfunction cloneValue(value) {\n  if (isArrayLike(value)) {\n    var len = value.length;\n\n    if (isArrayLike(value[0])) {\n      var ret = [];\n\n      for (var i = 0; i < len; i++) {\n        ret.push(arraySlice.call(value[i]));\n      }\n\n      return ret;\n    }\n\n    return arraySlice.call(value);\n  }\n\n  return value;\n}\n\nfunction rgba2String(rgba) {\n  rgba[0] = Math.floor(rgba[0]);\n  rgba[1] = Math.floor(rgba[1]);\n  rgba[2] = Math.floor(rgba[2]);\n  return 'rgba(' + rgba.join(',') + ')';\n}\n\nfunction getArrayDim(keyframes) {\n  var lastValue = keyframes[keyframes.length - 1].value;\n  return isArrayLike(lastValue && lastValue[0]) ? 2 : 1;\n}\n\nfunction createTrackClip(animator, easing, oneTrackDone, keyframes, propName, forceAnimate) {\n  var getter = animator._getter;\n  var setter = animator._setter;\n  var useSpline = easing === 'spline';\n  var trackLen = keyframes.length;\n\n  if (!trackLen) {\n    return;\n  } // Guess data type\n\n\n  var firstVal = keyframes[0].value;\n  var isValueArray = isArrayLike(firstVal);\n  var isValueColor = false;\n  var isValueString = false; // For vertices morphing\n\n  var arrDim = isValueArray ? getArrayDim(keyframes) : 0;\n  var trackMaxTime; // Sort keyframe as ascending\n\n  keyframes.sort(function (a, b) {\n    return a.time - b.time;\n  });\n  trackMaxTime = keyframes[trackLen - 1].time; // Percents of each keyframe\n\n  var kfPercents = []; // Value of each keyframe\n\n  var kfValues = [];\n  var prevValue = keyframes[0].value;\n  var isAllValueEqual = true;\n\n  for (var i = 0; i < trackLen; i++) {\n    kfPercents.push(keyframes[i].time / trackMaxTime); // Assume value is a color when it is a string\n\n    var value = keyframes[i].value; // Check if value is equal, deep check if value is array\n\n    if (!(isValueArray && isArraySame(value, prevValue, arrDim) || !isValueArray && value === prevValue)) {\n      isAllValueEqual = false;\n    }\n\n    prevValue = value; // Try converting a string to a color array\n\n    if (typeof value == 'string') {\n      var colorArray = color.parse(value);\n\n      if (colorArray) {\n        value = colorArray;\n        isValueColor = true;\n      } else {\n        isValueString = true;\n      }\n    }\n\n    kfValues.push(value);\n  }\n\n  if (!forceAnimate && isAllValueEqual) {\n    return;\n  }\n\n  var lastValue = kfValues[trackLen - 1]; // Polyfill array and NaN value\n\n  for (var i = 0; i < trackLen - 1; i++) {\n    if (isValueArray) {\n      fillArr(kfValues[i], lastValue, arrDim);\n    } else {\n      if (isNaN(kfValues[i]) && !isNaN(lastValue) && !isValueString && !isValueColor) {\n        kfValues[i] = lastValue;\n      }\n    }\n  }\n\n  isValueArray && fillArr(getter(animator._target, propName), lastValue, arrDim); // Cache the key of last frame to speed up when\n  // animation playback is sequency\n\n  var lastFrame = 0;\n  var lastFramePercent = 0;\n  var start;\n  var w;\n  var p0;\n  var p1;\n  var p2;\n  var p3;\n\n  if (isValueColor) {\n    var rgba = [0, 0, 0, 0];\n  }\n\n  var onframe = function (target, percent) {\n    // Find the range keyframes\n    // kf1-----kf2---------current--------kf3\n    // find kf2 and kf3 and do interpolation\n    var frame; // In the easing function like elasticOut, percent may less than 0\n\n    if (percent < 0) {\n      frame = 0;\n    } else if (percent < lastFramePercent) {\n      // Start from next key\n      // PENDING start from lastFrame ?\n      start = Math.min(lastFrame + 1, trackLen - 1);\n\n      for (frame = start; frame >= 0; frame--) {\n        if (kfPercents[frame] <= percent) {\n          break;\n        }\n      } // PENDING really need to do this ?\n\n\n      frame = Math.min(frame, trackLen - 2);\n    } else {\n      for (frame = lastFrame; frame < trackLen; frame++) {\n        if (kfPercents[frame] > percent) {\n          break;\n        }\n      }\n\n      frame = Math.min(frame - 1, trackLen - 2);\n    }\n\n    lastFrame = frame;\n    lastFramePercent = percent;\n    var range = kfPercents[frame + 1] - kfPercents[frame];\n\n    if (range === 0) {\n      return;\n    } else {\n      w = (percent - kfPercents[frame]) / range;\n    }\n\n    if (useSpline) {\n      p1 = kfValues[frame];\n      p0 = kfValues[frame === 0 ? frame : frame - 1];\n      p2 = kfValues[frame > trackLen - 2 ? trackLen - 1 : frame + 1];\n      p3 = kfValues[frame > trackLen - 3 ? trackLen - 1 : frame + 2];\n\n      if (isValueArray) {\n        catmullRomInterpolateArray(p0, p1, p2, p3, w, w * w, w * w * w, getter(target, propName), arrDim);\n      } else {\n        var value;\n\n        if (isValueColor) {\n          value = catmullRomInterpolateArray(p0, p1, p2, p3, w, w * w, w * w * w, rgba, 1);\n          value = rgba2String(rgba);\n        } else if (isValueString) {\n          // String is step(0.5)\n          return interpolateString(p1, p2, w);\n        } else {\n          value = catmullRomInterpolate(p0, p1, p2, p3, w, w * w, w * w * w);\n        }\n\n        setter(target, propName, value);\n      }\n    } else {\n      if (isValueArray) {\n        interpolateArray(kfValues[frame], kfValues[frame + 1], w, getter(target, propName), arrDim);\n      } else {\n        var value;\n\n        if (isValueColor) {\n          interpolateArray(kfValues[frame], kfValues[frame + 1], w, rgba, 1);\n          value = rgba2String(rgba);\n        } else if (isValueString) {\n          // String is step(0.5)\n          return interpolateString(kfValues[frame], kfValues[frame + 1], w);\n        } else {\n          value = interpolateNumber(kfValues[frame], kfValues[frame + 1], w);\n        }\n\n        setter(target, propName, value);\n      }\n    }\n  };\n\n  var clip = new Clip({\n    target: animator._target,\n    life: trackMaxTime,\n    loop: animator._loop,\n    delay: animator._delay,\n    onframe: onframe,\n    ondestroy: oneTrackDone\n  });\n\n  if (easing && easing !== 'spline') {\n    clip.easing = easing;\n  }\n\n  return clip;\n}\n/**\n * @alias module:zrender/animation/Animator\n * @constructor\n * @param {Object} target\n * @param {boolean} loop\n * @param {Function} getter\n * @param {Function} setter\n */\n\n\nvar Animator = function (target, loop, getter, setter) {\n  this._tracks = {};\n  this._target = target;\n  this._loop = loop || false;\n  this._getter = getter || defaultGetter;\n  this._setter = setter || defaultSetter;\n  this._clipCount = 0;\n  this._delay = 0;\n  this._doneList = [];\n  this._onframeList = [];\n  this._clipList = [];\n};\n\nAnimator.prototype = {\n  /**\n   * 设置动画关键帧\n   * @param  {number} time 关键帧时间，单位是ms\n   * @param  {Object} props 关键帧的属性值，key-value表示\n   * @return {module:zrender/animation/Animator}\n   */\n  when: function (time\n  /* ms */\n  , props) {\n    var tracks = this._tracks;\n\n    for (var propName in props) {\n      if (!props.hasOwnProperty(propName)) {\n        continue;\n      }\n\n      if (!tracks[propName]) {\n        tracks[propName] = []; // Invalid value\n\n        var value = this._getter(this._target, propName);\n\n        if (value == null) {\n          // zrLog('Invalid property ' + propName);\n          continue;\n        } // If time is 0\n        //  Then props is given initialize value\n        // Else\n        //  Initialize value from current prop value\n\n\n        if (time !== 0) {\n          tracks[propName].push({\n            time: 0,\n            value: cloneValue(value)\n          });\n        }\n      }\n\n      tracks[propName].push({\n        time: time,\n        value: props[propName]\n      });\n    }\n\n    return this;\n  },\n\n  /**\n   * 添加动画每一帧的回调函数\n   * @param  {Function} callback\n   * @return {module:zrender/animation/Animator}\n   */\n  during: function (callback) {\n    this._onframeList.push(callback);\n\n    return this;\n  },\n  pause: function () {\n    for (var i = 0; i < this._clipList.length; i++) {\n      this._clipList[i].pause();\n    }\n\n    this._paused = true;\n  },\n  resume: function () {\n    for (var i = 0; i < this._clipList.length; i++) {\n      this._clipList[i].resume();\n    }\n\n    this._paused = false;\n  },\n  isPaused: function () {\n    return !!this._paused;\n  },\n  _doneCallback: function () {\n    // Clear all tracks\n    this._tracks = {}; // Clear all clips\n\n    this._clipList.length = 0;\n    var doneList = this._doneList;\n    var len = doneList.length;\n\n    for (var i = 0; i < len; i++) {\n      doneList[i].call(this);\n    }\n  },\n\n  /**\n   * 开始执行动画\n   * @param  {string|Function} [easing]\n   *         动画缓动函数，详见{@link module:zrender/animation/easing}\n   * @param  {boolean} forceAnimate\n   * @return {module:zrender/animation/Animator}\n   */\n  start: function (easing, forceAnimate) {\n    var self = this;\n    var clipCount = 0;\n\n    var oneTrackDone = function () {\n      clipCount--;\n\n      if (!clipCount) {\n        self._doneCallback();\n      }\n    };\n\n    var lastClip;\n\n    for (var propName in this._tracks) {\n      if (!this._tracks.hasOwnProperty(propName)) {\n        continue;\n      }\n\n      var clip = createTrackClip(this, easing, oneTrackDone, this._tracks[propName], propName, forceAnimate);\n\n      if (clip) {\n        this._clipList.push(clip);\n\n        clipCount++; // If start after added to animation\n\n        if (this.animation) {\n          this.animation.addClip(clip);\n        }\n\n        lastClip = clip;\n      }\n    } // Add during callback on the last clip\n\n\n    if (lastClip) {\n      var oldOnFrame = lastClip.onframe;\n\n      lastClip.onframe = function (target, percent) {\n        oldOnFrame(target, percent);\n\n        for (var i = 0; i < self._onframeList.length; i++) {\n          self._onframeList[i](target, percent);\n        }\n      };\n    } // This optimization will help the case that in the upper application\n    // the view may be refreshed frequently, where animation will be\n    // called repeatly but nothing changed.\n\n\n    if (!clipCount) {\n      this._doneCallback();\n    }\n\n    return this;\n  },\n\n  /**\n   * 停止动画\n   * @param {boolean} forwardToLast If move to last frame before stop\n   */\n  stop: function (forwardToLast) {\n    var clipList = this._clipList;\n    var animation = this.animation;\n\n    for (var i = 0; i < clipList.length; i++) {\n      var clip = clipList[i];\n\n      if (forwardToLast) {\n        // Move to last frame before stop\n        clip.onframe(this._target, 1);\n      }\n\n      animation && animation.removeClip(clip);\n    }\n\n    clipList.length = 0;\n  },\n\n  /**\n   * 设置动画延迟开始的时间\n   * @param  {number} time 单位ms\n   * @return {module:zrender/animation/Animator}\n   */\n  delay: function (time) {\n    this._delay = time;\n    return this;\n  },\n\n  /**\n   * 添加动画结束的回调\n   * @param  {Function} cb\n   * @return {module:zrender/animation/Animator}\n   */\n  done: function (cb) {\n    if (cb) {\n      this._doneList.push(cb);\n    }\n\n    return this;\n  },\n\n  /**\n   * @return {Array.<module:zrender/animation/Clip>}\n   */\n  getClips: function () {\n    return this._clipList;\n  }\n};\nvar _default = Animator;\nmodule.exports = _default;","var easingFuncs = require(\"./easing\");\n\n/**\n * 动画主控制器\n * @config target 动画对象，可以是数组，如果是数组的话会批量分发onframe等事件\n * @config life(1000) 动画时长\n * @config delay(0) 动画延迟时间\n * @config loop(true)\n * @config gap(0) 循环的间隔时间\n * @config onframe\n * @config easing(optional)\n * @config ondestroy(optional)\n * @config onrestart(optional)\n *\n * TODO pause\n */\nfunction Clip(options) {\n  this._target = options.target; // 生命周期\n\n  this._life = options.life || 1000; // 延时\n\n  this._delay = options.delay || 0; // 开始时间\n  // this._startTime = new Date().getTime() + this._delay;// 单位毫秒\n\n  this._initialized = false; // 是否循环\n\n  this.loop = options.loop == null ? false : options.loop;\n  this.gap = options.gap || 0;\n  this.easing = options.easing || 'Linear';\n  this.onframe = options.onframe;\n  this.ondestroy = options.ondestroy;\n  this.onrestart = options.onrestart;\n  this._pausedTime = 0;\n  this._paused = false;\n}\n\nClip.prototype = {\n  constructor: Clip,\n  step: function (globalTime, deltaTime) {\n    // Set startTime on first step, or _startTime may has milleseconds different between clips\n    // PENDING\n    if (!this._initialized) {\n      this._startTime = globalTime + this._delay;\n      this._initialized = true;\n    }\n\n    if (this._paused) {\n      this._pausedTime += deltaTime;\n      return;\n    }\n\n    var percent = (globalTime - this._startTime - this._pausedTime) / this._life; // 还没开始\n\n    if (percent < 0) {\n      return;\n    }\n\n    percent = Math.min(percent, 1);\n    var easing = this.easing;\n    var easingFunc = typeof easing == 'string' ? easingFuncs[easing] : easing;\n    var schedule = typeof easingFunc === 'function' ? easingFunc(percent) : percent;\n    this.fire('frame', schedule); // 结束\n\n    if (percent == 1) {\n      if (this.loop) {\n        this.restart(globalTime); // 重新开始周期\n        // 抛出而不是直接调用事件直到 stage.update 后再统一调用这些事件\n\n        return 'restart';\n      } // 动画完成将这个控制器标识为待删除\n      // 在Animation.update中进行批量删除\n\n\n      this._needsRemove = true;\n      return 'destroy';\n    }\n\n    return null;\n  },\n  restart: function (globalTime) {\n    var remainder = (globalTime - this._startTime - this._pausedTime) % this._life;\n    this._startTime = globalTime - remainder + this.gap;\n    this._pausedTime = 0;\n    this._needsRemove = false;\n  },\n  fire: function (eventType, arg) {\n    eventType = 'on' + eventType;\n\n    if (this[eventType]) {\n      this[eventType](this._target, arg);\n    }\n  },\n  pause: function () {\n    this._paused = true;\n  },\n  resume: function () {\n    this._paused = false;\n  }\n};\nvar _default = Clip;\nmodule.exports = _default;","/**\n * 缓动代码来自 https://github.com/sole/tween.js/blob/master/src/Tween.js\n * @see http://sole.github.io/tween.js/examples/03_graphs.html\n * @exports zrender/animation/easing\n */\nvar easing = {\n  /**\n  * @param {number} k\n  * @return {number}\n  */\n  linear: function (k) {\n    return k;\n  },\n\n  /**\n  * @param {number} k\n  * @return {number}\n  */\n  quadraticIn: function (k) {\n    return k * k;\n  },\n\n  /**\n  * @param {number} k\n  * @return {number}\n  */\n  quadraticOut: function (k) {\n    return k * (2 - k);\n  },\n\n  /**\n  * @param {number} k\n  * @return {number}\n  */\n  quadraticInOut: function (k) {\n    if ((k *= 2) < 1) {\n      return 0.5 * k * k;\n    }\n\n    return -0.5 * (--k * (k - 2) - 1);\n  },\n  // 三次方的缓动（t^3）\n\n  /**\n  * @param {number} k\n  * @return {number}\n  */\n  cubicIn: function (k) {\n    return k * k * k;\n  },\n\n  /**\n  * @param {number} k\n  * @return {number}\n  */\n  cubicOut: function (k) {\n    return --k * k * k + 1;\n  },\n\n  /**\n  * @param {number} k\n  * @return {number}\n  */\n  cubicInOut: function (k) {\n    if ((k *= 2) < 1) {\n      return 0.5 * k * k * k;\n    }\n\n    return 0.5 * ((k -= 2) * k * k + 2);\n  },\n  // 四次方的缓动（t^4）\n\n  /**\n  * @param {number} k\n  * @return {number}\n  */\n  quarticIn: function (k) {\n    return k * k * k * k;\n  },\n\n  /**\n  * @param {number} k\n  * @return {number}\n  */\n  quarticOut: function (k) {\n    return 1 - --k * k * k * k;\n  },\n\n  /**\n  * @param {number} k\n  * @return {number}\n  */\n  quarticInOut: function (k) {\n    if ((k *= 2) < 1) {\n      return 0.5 * k * k * k * k;\n    }\n\n    return -0.5 * ((k -= 2) * k * k * k - 2);\n  },\n  // 五次方的缓动（t^5）\n\n  /**\n  * @param {number} k\n  * @return {number}\n  */\n  quinticIn: function (k) {\n    return k * k * k * k * k;\n  },\n\n  /**\n  * @param {number} k\n  * @return {number}\n  */\n  quinticOut: function (k) {\n    return --k * k * k * k * k + 1;\n  },\n\n  /**\n  * @param {number} k\n  * @return {number}\n  */\n  quinticInOut: function (k) {\n    if ((k *= 2) < 1) {\n      return 0.5 * k * k * k * k * k;\n    }\n\n    return 0.5 * ((k -= 2) * k * k * k * k + 2);\n  },\n  // 正弦曲线的缓动（sin(t)）\n\n  /**\n  * @param {number} k\n  * @return {number}\n  */\n  sinusoidalIn: function (k) {\n    return 1 - Math.cos(k * Math.PI / 2);\n  },\n\n  /**\n  * @param {number} k\n  * @return {number}\n  */\n  sinusoidalOut: function (k) {\n    return Math.sin(k * Math.PI / 2);\n  },\n\n  /**\n  * @param {number} k\n  * @return {number}\n  */\n  sinusoidalInOut: function (k) {\n    return 0.5 * (1 - Math.cos(Math.PI * k));\n  },\n  // 指数曲线的缓动（2^t）\n\n  /**\n  * @param {number} k\n  * @return {number}\n  */\n  exponentialIn: function (k) {\n    return k === 0 ? 0 : Math.pow(1024, k - 1);\n  },\n\n  /**\n  * @param {number} k\n  * @return {number}\n  */\n  exponentialOut: function (k) {\n    return k === 1 ? 1 : 1 - Math.pow(2, -10 * k);\n  },\n\n  /**\n  * @param {number} k\n  * @return {number}\n  */\n  exponentialInOut: function (k) {\n    if (k === 0) {\n      return 0;\n    }\n\n    if (k === 1) {\n      return 1;\n    }\n\n    if ((k *= 2) < 1) {\n      return 0.5 * Math.pow(1024, k - 1);\n    }\n\n    return 0.5 * (-Math.pow(2, -10 * (k - 1)) + 2);\n  },\n  // 圆形曲线的缓动（sqrt(1-t^2)）\n\n  /**\n  * @param {number} k\n  * @return {number}\n  */\n  circularIn: function (k) {\n    return 1 - Math.sqrt(1 - k * k);\n  },\n\n  /**\n  * @param {number} k\n  * @return {number}\n  */\n  circularOut: function (k) {\n    return Math.sqrt(1 - --k * k);\n  },\n\n  /**\n  * @param {number} k\n  * @return {number}\n  */\n  circularInOut: function (k) {\n    if ((k *= 2) < 1) {\n      return -0.5 * (Math.sqrt(1 - k * k) - 1);\n    }\n\n    return 0.5 * (Math.sqrt(1 - (k -= 2) * k) + 1);\n  },\n  // 创建类似于弹簧在停止前来回振荡的动画\n\n  /**\n  * @param {number} k\n  * @return {number}\n  */\n  elasticIn: function (k) {\n    var s;\n    var a = 0.1;\n    var p = 0.4;\n\n    if (k === 0) {\n      return 0;\n    }\n\n    if (k === 1) {\n      return 1;\n    }\n\n    if (!a || a < 1) {\n      a = 1;\n      s = p / 4;\n    } else {\n      s = p * Math.asin(1 / a) / (2 * Math.PI);\n    }\n\n    return -(a * Math.pow(2, 10 * (k -= 1)) * Math.sin((k - s) * (2 * Math.PI) / p));\n  },\n\n  /**\n  * @param {number} k\n  * @return {number}\n  */\n  elasticOut: function (k) {\n    var s;\n    var a = 0.1;\n    var p = 0.4;\n\n    if (k === 0) {\n      return 0;\n    }\n\n    if (k === 1) {\n      return 1;\n    }\n\n    if (!a || a < 1) {\n      a = 1;\n      s = p / 4;\n    } else {\n      s = p * Math.asin(1 / a) / (2 * Math.PI);\n    }\n\n    return a * Math.pow(2, -10 * k) * Math.sin((k - s) * (2 * Math.PI) / p) + 1;\n  },\n\n  /**\n  * @param {number} k\n  * @return {number}\n  */\n  elasticInOut: function (k) {\n    var s;\n    var a = 0.1;\n    var p = 0.4;\n\n    if (k === 0) {\n      return 0;\n    }\n\n    if (k === 1) {\n      return 1;\n    }\n\n    if (!a || a < 1) {\n      a = 1;\n      s = p / 4;\n    } else {\n      s = p * Math.asin(1 / a) / (2 * Math.PI);\n    }\n\n    if ((k *= 2) < 1) {\n      return -0.5 * (a * Math.pow(2, 10 * (k -= 1)) * Math.sin((k - s) * (2 * Math.PI) / p));\n    }\n\n    return a * Math.pow(2, -10 * (k -= 1)) * Math.sin((k - s) * (2 * Math.PI) / p) * 0.5 + 1;\n  },\n  // 在某一动画开始沿指示的路径进行动画处理前稍稍收回该动画的移动\n\n  /**\n  * @param {number} k\n  * @return {number}\n  */\n  backIn: function (k) {\n    var s = 1.70158;\n    return k * k * ((s + 1) * k - s);\n  },\n\n  /**\n  * @param {number} k\n  * @return {number}\n  */\n  backOut: function (k) {\n    var s = 1.70158;\n    return --k * k * ((s + 1) * k + s) + 1;\n  },\n\n  /**\n  * @param {number} k\n  * @return {number}\n  */\n  backInOut: function (k) {\n    var s = 1.70158 * 1.525;\n\n    if ((k *= 2) < 1) {\n      return 0.5 * (k * k * ((s + 1) * k - s));\n    }\n\n    return 0.5 * ((k -= 2) * k * ((s + 1) * k + s) + 2);\n  },\n  // 创建弹跳效果\n\n  /**\n  * @param {number} k\n  * @return {number}\n  */\n  bounceIn: function (k) {\n    return 1 - easing.bounceOut(1 - k);\n  },\n\n  /**\n  * @param {number} k\n  * @return {number}\n  */\n  bounceOut: function (k) {\n    if (k < 1 / 2.75) {\n      return 7.5625 * k * k;\n    } else if (k < 2 / 2.75) {\n      return 7.5625 * (k -= 1.5 / 2.75) * k + 0.75;\n    } else if (k < 2.5 / 2.75) {\n      return 7.5625 * (k -= 2.25 / 2.75) * k + 0.9375;\n    } else {\n      return 7.5625 * (k -= 2.625 / 2.75) * k + 0.984375;\n    }\n  },\n\n  /**\n  * @param {number} k\n  * @return {number}\n  */\n  bounceInOut: function (k) {\n    if (k < 0.5) {\n      return easing.bounceIn(k * 2) * 0.5;\n    }\n\n    return easing.bounceOut(k * 2 - 1) * 0.5 + 0.5;\n  }\n};\nvar _default = easing;\nmodule.exports = _default;","var _default = typeof window !== 'undefined' && (window.requestAnimationFrame && window.requestAnimationFrame.bind(window) || // https://github.com/ecomfe/zrender/issues/189#issuecomment-224919809\nwindow.msRequestAnimationFrame && window.msRequestAnimationFrame.bind(window) || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame) || function (func) {\n  setTimeout(func, 16);\n};\n\nmodule.exports = _default;","var dpr = 1; // If in browser environment\n\nif (typeof window !== 'undefined') {\n  dpr = Math.max(window.devicePixelRatio || 1, 1);\n}\n/**\n * config默认配置项\n * @exports zrender/config\n * @author Kener (@Kener-林峰, kener.linfeng@gmail.com)\n */\n\n/**\n * debug日志选项：catchBrushException为true下有效\n * 0 : 不生成debug数据，发布用\n * 1 : 异常抛出，调试用\n * 2 : 控制台输出，调试用\n */\n\n\nvar debugMode = 0; // retina 屏幕优化\n\nvar devicePixelRatio = dpr;\nexports.debugMode = debugMode;\nexports.devicePixelRatio = devicePixelRatio;","var _util = require(\"./util\");\n\nvar normalizeRadian = _util.normalizeRadian;\nvar PI2 = Math.PI * 2;\n/**\n * 圆弧描边包含判断\n * @param  {number}  cx\n * @param  {number}  cy\n * @param  {number}  r\n * @param  {number}  startAngle\n * @param  {number}  endAngle\n * @param  {boolean}  anticlockwise\n * @param  {number} lineWidth\n * @param  {number}  x\n * @param  {number}  y\n * @return {Boolean}\n */\n\nfunction containStroke(cx, cy, r, startAngle, endAngle, anticlockwise, lineWidth, x, y) {\n  if (lineWidth === 0) {\n    return false;\n  }\n\n  var _l = lineWidth;\n  x -= cx;\n  y -= cy;\n  var d = Math.sqrt(x * x + y * y);\n\n  if (d - _l > r || d + _l < r) {\n    return false;\n  }\n\n  if (Math.abs(startAngle - endAngle) % PI2 < 1e-4) {\n    // Is a circle\n    return true;\n  }\n\n  if (anticlockwise) {\n    var tmp = startAngle;\n    startAngle = normalizeRadian(endAngle);\n    endAngle = normalizeRadian(tmp);\n  } else {\n    startAngle = normalizeRadian(startAngle);\n    endAngle = normalizeRadian(endAngle);\n  }\n\n  if (startAngle > endAngle) {\n    endAngle += PI2;\n  }\n\n  var angle = Math.atan2(y, x);\n\n  if (angle < 0) {\n    angle += PI2;\n  }\n\n  return angle >= startAngle && angle <= endAngle || angle + PI2 >= startAngle && angle + PI2 <= endAngle;\n}\n\nexports.containStroke = containStroke;","var curve = require(\"../core/curve\");\n\n/**\n * 三次贝塞尔曲线描边包含判断\n * @param  {number}  x0\n * @param  {number}  y0\n * @param  {number}  x1\n * @param  {number}  y1\n * @param  {number}  x2\n * @param  {number}  y2\n * @param  {number}  x3\n * @param  {number}  y3\n * @param  {number}  lineWidth\n * @param  {number}  x\n * @param  {number}  y\n * @return {boolean}\n */\nfunction containStroke(x0, y0, x1, y1, x2, y2, x3, y3, lineWidth, x, y) {\n  if (lineWidth === 0) {\n    return false;\n  }\n\n  var _l = lineWidth; // Quick reject\n\n  if (y > y0 + _l && y > y1 + _l && y > y2 + _l && y > y3 + _l || y < y0 - _l && y < y1 - _l && y < y2 - _l && y < y3 - _l || x > x0 + _l && x > x1 + _l && x > x2 + _l && x > x3 + _l || x < x0 - _l && x < x1 - _l && x < x2 - _l && x < x3 - _l) {\n    return false;\n  }\n\n  var d = curve.cubicProjectPoint(x0, y0, x1, y1, x2, y2, x3, y3, x, y, null);\n  return d <= _l / 2;\n}\n\nexports.containStroke = containStroke;","/**\n * 线段包含判断\n * @param  {number}  x0\n * @param  {number}  y0\n * @param  {number}  x1\n * @param  {number}  y1\n * @param  {number}  lineWidth\n * @param  {number}  x\n * @param  {number}  y\n * @return {boolean}\n */\nfunction containStroke(x0, y0, x1, y1, lineWidth, x, y) {\n  if (lineWidth === 0) {\n    return false;\n  }\n\n  var _l = lineWidth;\n  var _a = 0;\n  var _b = x0; // Quick reject\n\n  if (y > y0 + _l && y > y1 + _l || y < y0 - _l && y < y1 - _l || x > x0 + _l && x > x1 + _l || x < x0 - _l && x < x1 - _l) {\n    return false;\n  }\n\n  if (x0 !== x1) {\n    _a = (y0 - y1) / (x0 - x1);\n    _b = (x0 * y1 - x1 * y0) / (x0 - x1);\n  } else {\n    return Math.abs(x - x0) <= _l / 2;\n  }\n\n  var tmp = _a * x - y + _b;\n\n  var _s = tmp * tmp / (_a * _a + 1);\n\n  return _s <= _l / 2 * _l / 2;\n}\n\nexports.containStroke = containStroke;","var PathProxy = require(\"../core/PathProxy\");\n\nvar line = require(\"./line\");\n\nvar cubic = require(\"./cubic\");\n\nvar quadratic = require(\"./quadratic\");\n\nvar arc = require(\"./arc\");\n\nvar _util = require(\"./util\");\n\nvar normalizeRadian = _util.normalizeRadian;\n\nvar curve = require(\"../core/curve\");\n\nvar windingLine = require(\"./windingLine\");\n\nvar CMD = PathProxy.CMD;\nvar PI2 = Math.PI * 2;\nvar EPSILON = 1e-4;\n\nfunction isAroundEqual(a, b) {\n  return Math.abs(a - b) < EPSILON;\n} // 临时数组\n\n\nvar roots = [-1, -1, -1];\nvar extrema = [-1, -1];\n\nfunction swapExtrema() {\n  var tmp = extrema[0];\n  extrema[0] = extrema[1];\n  extrema[1] = tmp;\n}\n\nfunction windingCubic(x0, y0, x1, y1, x2, y2, x3, y3, x, y) {\n  // Quick reject\n  if (y > y0 && y > y1 && y > y2 && y > y3 || y < y0 && y < y1 && y < y2 && y < y3) {\n    return 0;\n  }\n\n  var nRoots = curve.cubicRootAt(y0, y1, y2, y3, y, roots);\n\n  if (nRoots === 0) {\n    return 0;\n  } else {\n    var w = 0;\n    var nExtrema = -1;\n    var y0_, y1_;\n\n    for (var i = 0; i < nRoots; i++) {\n      var t = roots[i]; // Avoid winding error when intersection point is the connect point of two line of polygon\n\n      var unit = t === 0 || t === 1 ? 0.5 : 1;\n      var x_ = curve.cubicAt(x0, x1, x2, x3, t);\n\n      if (x_ < x) {\n        // Quick reject\n        continue;\n      }\n\n      if (nExtrema < 0) {\n        nExtrema = curve.cubicExtrema(y0, y1, y2, y3, extrema);\n\n        if (extrema[1] < extrema[0] && nExtrema > 1) {\n          swapExtrema();\n        }\n\n        y0_ = curve.cubicAt(y0, y1, y2, y3, extrema[0]);\n\n        if (nExtrema > 1) {\n          y1_ = curve.cubicAt(y0, y1, y2, y3, extrema[1]);\n        }\n      }\n\n      if (nExtrema == 2) {\n        // 分成三段单调函数\n        if (t < extrema[0]) {\n          w += y0_ < y0 ? unit : -unit;\n        } else if (t < extrema[1]) {\n          w += y1_ < y0_ ? unit : -unit;\n        } else {\n          w += y3 < y1_ ? unit : -unit;\n        }\n      } else {\n        // 分成两段单调函数\n        if (t < extrema[0]) {\n          w += y0_ < y0 ? unit : -unit;\n        } else {\n          w += y3 < y0_ ? unit : -unit;\n        }\n      }\n    }\n\n    return w;\n  }\n}\n\nfunction windingQuadratic(x0, y0, x1, y1, x2, y2, x, y) {\n  // Quick reject\n  if (y > y0 && y > y1 && y > y2 || y < y0 && y < y1 && y < y2) {\n    return 0;\n  }\n\n  var nRoots = curve.quadraticRootAt(y0, y1, y2, y, roots);\n\n  if (nRoots === 0) {\n    return 0;\n  } else {\n    var t = curve.quadraticExtremum(y0, y1, y2);\n\n    if (t >= 0 && t <= 1) {\n      var w = 0;\n      var y_ = curve.quadraticAt(y0, y1, y2, t);\n\n      for (var i = 0; i < nRoots; i++) {\n        // Remove one endpoint.\n        var unit = roots[i] === 0 || roots[i] === 1 ? 0.5 : 1;\n        var x_ = curve.quadraticAt(x0, x1, x2, roots[i]);\n\n        if (x_ < x) {\n          // Quick reject\n          continue;\n        }\n\n        if (roots[i] < t) {\n          w += y_ < y0 ? unit : -unit;\n        } else {\n          w += y2 < y_ ? unit : -unit;\n        }\n      }\n\n      return w;\n    } else {\n      // Remove one endpoint.\n      var unit = roots[0] === 0 || roots[0] === 1 ? 0.5 : 1;\n      var x_ = curve.quadraticAt(x0, x1, x2, roots[0]);\n\n      if (x_ < x) {\n        // Quick reject\n        return 0;\n      }\n\n      return y2 < y0 ? unit : -unit;\n    }\n  }\n} // TODO\n// Arc 旋转\n\n\nfunction windingArc(cx, cy, r, startAngle, endAngle, anticlockwise, x, y) {\n  y -= cy;\n\n  if (y > r || y < -r) {\n    return 0;\n  }\n\n  var tmp = Math.sqrt(r * r - y * y);\n  roots[0] = -tmp;\n  roots[1] = tmp;\n  var diff = Math.abs(startAngle - endAngle);\n\n  if (diff < 1e-4) {\n    return 0;\n  }\n\n  if (diff % PI2 < 1e-4) {\n    // Is a circle\n    startAngle = 0;\n    endAngle = PI2;\n    var dir = anticlockwise ? 1 : -1;\n\n    if (x >= roots[0] + cx && x <= roots[1] + cx) {\n      return dir;\n    } else {\n      return 0;\n    }\n  }\n\n  if (anticlockwise) {\n    var tmp = startAngle;\n    startAngle = normalizeRadian(endAngle);\n    endAngle = normalizeRadian(tmp);\n  } else {\n    startAngle = normalizeRadian(startAngle);\n    endAngle = normalizeRadian(endAngle);\n  }\n\n  if (startAngle > endAngle) {\n    endAngle += PI2;\n  }\n\n  var w = 0;\n\n  for (var i = 0; i < 2; i++) {\n    var x_ = roots[i];\n\n    if (x_ + cx > x) {\n      var angle = Math.atan2(y, x_);\n      var dir = anticlockwise ? 1 : -1;\n\n      if (angle < 0) {\n        angle = PI2 + angle;\n      }\n\n      if (angle >= startAngle && angle <= endAngle || angle + PI2 >= startAngle && angle + PI2 <= endAngle) {\n        if (angle > Math.PI / 2 && angle < Math.PI * 1.5) {\n          dir = -dir;\n        }\n\n        w += dir;\n      }\n    }\n  }\n\n  return w;\n}\n\nfunction containPath(data, lineWidth, isStroke, x, y) {\n  var w = 0;\n  var xi = 0;\n  var yi = 0;\n  var x0 = 0;\n  var y0 = 0;\n\n  for (var i = 0; i < data.length;) {\n    var cmd = data[i++]; // Begin a new subpath\n\n    if (cmd === CMD.M && i > 1) {\n      // Close previous subpath\n      if (!isStroke) {\n        w += windingLine(xi, yi, x0, y0, x, y);\n      } // 如果被任何一个 subpath 包含\n      // if (w !== 0) {\n      //     return true;\n      // }\n\n    }\n\n    if (i == 1) {\n      // 如果第一个命令是 L, C, Q\n      // 则 previous point 同绘制命令的第一个 point\n      //\n      // 第一个命令为 Arc 的情况下会在后面特殊处理\n      xi = data[i];\n      yi = data[i + 1];\n      x0 = xi;\n      y0 = yi;\n    }\n\n    switch (cmd) {\n      case CMD.M:\n        // moveTo 命令重新创建一个新的 subpath, 并且更新新的起点\n        // 在 closePath 的时候使用\n        x0 = data[i++];\n        y0 = data[i++];\n        xi = x0;\n        yi = y0;\n        break;\n\n      case CMD.L:\n        if (isStroke) {\n          if (line.containStroke(xi, yi, data[i], data[i + 1], lineWidth, x, y)) {\n            return true;\n          }\n        } else {\n          // NOTE 在第一个命令为 L, C, Q 的时候会计算出 NaN\n          w += windingLine(xi, yi, data[i], data[i + 1], x, y) || 0;\n        }\n\n        xi = data[i++];\n        yi = data[i++];\n        break;\n\n      case CMD.C:\n        if (isStroke) {\n          if (cubic.containStroke(xi, yi, data[i++], data[i++], data[i++], data[i++], data[i], data[i + 1], lineWidth, x, y)) {\n            return true;\n          }\n        } else {\n          w += windingCubic(xi, yi, data[i++], data[i++], data[i++], data[i++], data[i], data[i + 1], x, y) || 0;\n        }\n\n        xi = data[i++];\n        yi = data[i++];\n        break;\n\n      case CMD.Q:\n        if (isStroke) {\n          if (quadratic.containStroke(xi, yi, data[i++], data[i++], data[i], data[i + 1], lineWidth, x, y)) {\n            return true;\n          }\n        } else {\n          w += windingQuadratic(xi, yi, data[i++], data[i++], data[i], data[i + 1], x, y) || 0;\n        }\n\n        xi = data[i++];\n        yi = data[i++];\n        break;\n\n      case CMD.A:\n        // TODO Arc 判断的开销比较大\n        var cx = data[i++];\n        var cy = data[i++];\n        var rx = data[i++];\n        var ry = data[i++];\n        var theta = data[i++];\n        var dTheta = data[i++]; // TODO Arc 旋转\n\n        var psi = data[i++];\n        var anticlockwise = 1 - data[i++];\n        var x1 = Math.cos(theta) * rx + cx;\n        var y1 = Math.sin(theta) * ry + cy; // 不是直接使用 arc 命令\n\n        if (i > 1) {\n          w += windingLine(xi, yi, x1, y1, x, y);\n        } else {\n          // 第一个命令起点还未定义\n          x0 = x1;\n          y0 = y1;\n        } // zr 使用scale来模拟椭圆, 这里也对x做一定的缩放\n\n\n        var _x = (x - cx) * ry / rx + cx;\n\n        if (isStroke) {\n          if (arc.containStroke(cx, cy, ry, theta, theta + dTheta, anticlockwise, lineWidth, _x, y)) {\n            return true;\n          }\n        } else {\n          w += windingArc(cx, cy, ry, theta, theta + dTheta, anticlockwise, _x, y);\n        }\n\n        xi = Math.cos(theta + dTheta) * rx + cx;\n        yi = Math.sin(theta + dTheta) * ry + cy;\n        break;\n\n      case CMD.R:\n        x0 = xi = data[i++];\n        y0 = yi = data[i++];\n        var width = data[i++];\n        var height = data[i++];\n        var x1 = x0 + width;\n        var y1 = y0 + height;\n\n        if (isStroke) {\n          if (line.containStroke(x0, y0, x1, y0, lineWidth, x, y) || line.containStroke(x1, y0, x1, y1, lineWidth, x, y) || line.containStroke(x1, y1, x0, y1, lineWidth, x, y) || line.containStroke(x0, y1, x0, y0, lineWidth, x, y)) {\n            return true;\n          }\n        } else {\n          // FIXME Clockwise ?\n          w += windingLine(x1, y0, x1, y1, x, y);\n          w += windingLine(x0, y1, x0, y0, x, y);\n        }\n\n        break;\n\n      case CMD.Z:\n        if (isStroke) {\n          if (line.containStroke(xi, yi, x0, y0, lineWidth, x, y)) {\n            return true;\n          }\n        } else {\n          // Close a subpath\n          w += windingLine(xi, yi, x0, y0, x, y); // 如果被任何一个 subpath 包含\n          // FIXME subpaths may overlap\n          // if (w !== 0) {\n          //     return true;\n          // }\n        }\n\n        xi = x0;\n        yi = y0;\n        break;\n    }\n  }\n\n  if (!isStroke && !isAroundEqual(yi, y0)) {\n    w += windingLine(xi, yi, x0, y0, x, y) || 0;\n  }\n\n  return w !== 0;\n}\n\nfunction contain(pathData, x, y) {\n  return containPath(pathData, 0, false, x, y);\n}\n\nfunction containStroke(pathData, lineWidth, x, y) {\n  return containPath(pathData, lineWidth, true, x, y);\n}\n\nexports.contain = contain;\nexports.containStroke = containStroke;","var windingLine = require(\"./windingLine\");\n\nvar EPSILON = 1e-8;\n\nfunction isAroundEqual(a, b) {\n  return Math.abs(a - b) < EPSILON;\n}\n\nfunction contain(points, x, y) {\n  var w = 0;\n  var p = points[0];\n\n  if (!p) {\n    return false;\n  }\n\n  for (var i = 1; i < points.length; i++) {\n    var p2 = points[i];\n    w += windingLine(p[0], p[1], p2[0], p2[1], x, y);\n    p = p2;\n  } // Close polygon\n\n\n  var p0 = points[0];\n\n  if (!isAroundEqual(p[0], p0[0]) || !isAroundEqual(p[1], p0[1])) {\n    w += windingLine(p[0], p[1], p0[0], p0[1], x, y);\n  }\n\n  return w !== 0;\n}\n\nexports.contain = contain;","var _curve = require(\"../core/curve\");\n\nvar quadraticProjectPoint = _curve.quadraticProjectPoint;\n\n/**\n * 二次贝塞尔曲线描边包含判断\n * @param  {number}  x0\n * @param  {number}  y0\n * @param  {number}  x1\n * @param  {number}  y1\n * @param  {number}  x2\n * @param  {number}  y2\n * @param  {number}  lineWidth\n * @param  {number}  x\n * @param  {number}  y\n * @return {boolean}\n */\nfunction containStroke(x0, y0, x1, y1, x2, y2, lineWidth, x, y) {\n  if (lineWidth === 0) {\n    return false;\n  }\n\n  var _l = lineWidth; // Quick reject\n\n  if (y > y0 + _l && y > y1 + _l && y > y2 + _l || y < y0 - _l && y < y1 - _l && y < y2 - _l || x > x0 + _l && x > x1 + _l && x > x2 + _l || x < x0 - _l && x < x1 - _l && x < x2 - _l) {\n    return false;\n  }\n\n  var d = quadraticProjectPoint(x0, y0, x1, y1, x2, y2, x, y, null);\n  return d <= _l / 2;\n}\n\nexports.containStroke = containStroke;","var BoundingRect = require(\"../core/BoundingRect\");\n\nvar imageHelper = require(\"../graphic/helper/image\");\n\nvar _util = require(\"../core/util\");\n\nvar getContext = _util.getContext;\nvar extend = _util.extend;\nvar retrieve2 = _util.retrieve2;\nvar retrieve3 = _util.retrieve3;\nvar trim = _util.trim;\nvar textWidthCache = {};\nvar textWidthCacheCounter = 0;\nvar TEXT_CACHE_MAX = 5000;\nvar STYLE_REG = /\\{([a-zA-Z0-9_]+)\\|([^}]*)\\}/g;\nvar DEFAULT_FONT = '12px sans-serif'; // Avoid assign to an exported variable, for transforming to cjs.\n\nvar methods = {};\n\nfunction $override(name, fn) {\n  methods[name] = fn;\n}\n/**\n * @public\n * @param {string} text\n * @param {string} font\n * @return {number} width\n */\n\n\nfunction getWidth(text, font) {\n  font = font || DEFAULT_FONT;\n  var key = text + ':' + font;\n\n  if (textWidthCache[key]) {\n    return textWidthCache[key];\n  }\n\n  var textLines = (text + '').split('\\n');\n  var width = 0;\n\n  for (var i = 0, l = textLines.length; i < l; i++) {\n    // textContain.measureText may be overrided in SVG or VML\n    width = Math.max(measureText(textLines[i], font).width, width);\n  }\n\n  if (textWidthCacheCounter > TEXT_CACHE_MAX) {\n    textWidthCacheCounter = 0;\n    textWidthCache = {};\n  }\n\n  textWidthCacheCounter++;\n  textWidthCache[key] = width;\n  return width;\n}\n/**\n * @public\n * @param {string} text\n * @param {string} font\n * @param {string} [textAlign='left']\n * @param {string} [textVerticalAlign='top']\n * @param {Array.<number>} [textPadding]\n * @param {Object} [rich]\n * @param {Object} [truncate]\n * @return {Object} {x, y, width, height, lineHeight}\n */\n\n\nfunction getBoundingRect(text, font, textAlign, textVerticalAlign, textPadding, rich, truncate) {\n  return rich ? getRichTextRect(text, font, textAlign, textVerticalAlign, textPadding, rich, truncate) : getPlainTextRect(text, font, textAlign, textVerticalAlign, textPadding, truncate);\n}\n\nfunction getPlainTextRect(text, font, textAlign, textVerticalAlign, textPadding, truncate) {\n  var contentBlock = parsePlainText(text, font, textPadding, truncate);\n  var outerWidth = getWidth(text, font);\n\n  if (textPadding) {\n    outerWidth += textPadding[1] + textPadding[3];\n  }\n\n  var outerHeight = contentBlock.outerHeight;\n  var x = adjustTextX(0, outerWidth, textAlign);\n  var y = adjustTextY(0, outerHeight, textVerticalAlign);\n  var rect = new BoundingRect(x, y, outerWidth, outerHeight);\n  rect.lineHeight = contentBlock.lineHeight;\n  return rect;\n}\n\nfunction getRichTextRect(text, font, textAlign, textVerticalAlign, textPadding, rich, truncate) {\n  var contentBlock = parseRichText(text, {\n    rich: rich,\n    truncate: truncate,\n    font: font,\n    textAlign: textAlign,\n    textPadding: textPadding\n  });\n  var outerWidth = contentBlock.outerWidth;\n  var outerHeight = contentBlock.outerHeight;\n  var x = adjustTextX(0, outerWidth, textAlign);\n  var y = adjustTextY(0, outerHeight, textVerticalAlign);\n  return new BoundingRect(x, y, outerWidth, outerHeight);\n}\n/**\n * @public\n * @param {number} x\n * @param {number} width\n * @param {string} [textAlign='left']\n * @return {number} Adjusted x.\n */\n\n\nfunction adjustTextX(x, width, textAlign) {\n  // FIXME Right to left language\n  if (textAlign === 'right') {\n    x -= width;\n  } else if (textAlign === 'center') {\n    x -= width / 2;\n  }\n\n  return x;\n}\n/**\n * @public\n * @param {number} y\n * @param {number} height\n * @param {string} [textVerticalAlign='top']\n * @return {number} Adjusted y.\n */\n\n\nfunction adjustTextY(y, height, textVerticalAlign) {\n  if (textVerticalAlign === 'middle') {\n    y -= height / 2;\n  } else if (textVerticalAlign === 'bottom') {\n    y -= height;\n  }\n\n  return y;\n}\n/**\n * @public\n * @param {stirng} textPosition\n * @param {Object} rect {x, y, width, height}\n * @param {number} distance\n * @return {Object} {x, y, textAlign, textVerticalAlign}\n */\n\n\nfunction adjustTextPositionOnRect(textPosition, rect, distance) {\n  var x = rect.x;\n  var y = rect.y;\n  var height = rect.height;\n  var width = rect.width;\n  var halfHeight = height / 2;\n  var textAlign = 'left';\n  var textVerticalAlign = 'top';\n\n  switch (textPosition) {\n    case 'left':\n      x -= distance;\n      y += halfHeight;\n      textAlign = 'right';\n      textVerticalAlign = 'middle';\n      break;\n\n    case 'right':\n      x += distance + width;\n      y += halfHeight;\n      textVerticalAlign = 'middle';\n      break;\n\n    case 'top':\n      x += width / 2;\n      y -= distance;\n      textAlign = 'center';\n      textVerticalAlign = 'bottom';\n      break;\n\n    case 'bottom':\n      x += width / 2;\n      y += height + distance;\n      textAlign = 'center';\n      break;\n\n    case 'inside':\n      x += width / 2;\n      y += halfHeight;\n      textAlign = 'center';\n      textVerticalAlign = 'middle';\n      break;\n\n    case 'insideLeft':\n      x += distance;\n      y += halfHeight;\n      textVerticalAlign = 'middle';\n      break;\n\n    case 'insideRight':\n      x += width - distance;\n      y += halfHeight;\n      textAlign = 'right';\n      textVerticalAlign = 'middle';\n      break;\n\n    case 'insideTop':\n      x += width / 2;\n      y += distance;\n      textAlign = 'center';\n      break;\n\n    case 'insideBottom':\n      x += width / 2;\n      y += height - distance;\n      textAlign = 'center';\n      textVerticalAlign = 'bottom';\n      break;\n\n    case 'insideTopLeft':\n      x += distance;\n      y += distance;\n      break;\n\n    case 'insideTopRight':\n      x += width - distance;\n      y += distance;\n      textAlign = 'right';\n      break;\n\n    case 'insideBottomLeft':\n      x += distance;\n      y += height - distance;\n      textVerticalAlign = 'bottom';\n      break;\n\n    case 'insideBottomRight':\n      x += width - distance;\n      y += height - distance;\n      textAlign = 'right';\n      textVerticalAlign = 'bottom';\n      break;\n  }\n\n  return {\n    x: x,\n    y: y,\n    textAlign: textAlign,\n    textVerticalAlign: textVerticalAlign\n  };\n}\n/**\n * Show ellipsis if overflow.\n *\n * @public\n * @param  {string} text\n * @param  {string} containerWidth\n * @param  {string} font\n * @param  {number} [ellipsis='...']\n * @param  {Object} [options]\n * @param  {number} [options.maxIterations=3]\n * @param  {number} [options.minChar=0] If truncate result are less\n *                  then minChar, ellipsis will not show, which is\n *                  better for user hint in some cases.\n * @param  {number} [options.placeholder=''] When all truncated, use the placeholder.\n * @return {string}\n */\n\n\nfunction truncateText(text, containerWidth, font, ellipsis, options) {\n  if (!containerWidth) {\n    return '';\n  }\n\n  var textLines = (text + '').split('\\n');\n  options = prepareTruncateOptions(containerWidth, font, ellipsis, options); // FIXME\n  // It is not appropriate that every line has '...' when truncate multiple lines.\n\n  for (var i = 0, len = textLines.length; i < len; i++) {\n    textLines[i] = truncateSingleLine(textLines[i], options);\n  }\n\n  return textLines.join('\\n');\n}\n\nfunction prepareTruncateOptions(containerWidth, font, ellipsis, options) {\n  options = extend({}, options);\n  options.font = font;\n  var ellipsis = retrieve2(ellipsis, '...');\n  options.maxIterations = retrieve2(options.maxIterations, 2);\n  var minChar = options.minChar = retrieve2(options.minChar, 0); // FIXME\n  // Other languages?\n\n  options.cnCharWidth = getWidth('国', font); // FIXME\n  // Consider proportional font?\n\n  var ascCharWidth = options.ascCharWidth = getWidth('a', font);\n  options.placeholder = retrieve2(options.placeholder, ''); // Example 1: minChar: 3, text: 'asdfzxcv', truncate result: 'asdf', but not: 'a...'.\n  // Example 2: minChar: 3, text: '维度', truncate result: '维', but not: '...'.\n\n  var contentWidth = containerWidth = Math.max(0, containerWidth - 1); // Reserve some gap.\n\n  for (var i = 0; i < minChar && contentWidth >= ascCharWidth; i++) {\n    contentWidth -= ascCharWidth;\n  }\n\n  var ellipsisWidth = getWidth(ellipsis);\n\n  if (ellipsisWidth > contentWidth) {\n    ellipsis = '';\n    ellipsisWidth = 0;\n  }\n\n  contentWidth = containerWidth - ellipsisWidth;\n  options.ellipsis = ellipsis;\n  options.ellipsisWidth = ellipsisWidth;\n  options.contentWidth = contentWidth;\n  options.containerWidth = containerWidth;\n  return options;\n}\n\nfunction truncateSingleLine(textLine, options) {\n  var containerWidth = options.containerWidth;\n  var font = options.font;\n  var contentWidth = options.contentWidth;\n\n  if (!containerWidth) {\n    return '';\n  }\n\n  var lineWidth = getWidth(textLine, font);\n\n  if (lineWidth <= containerWidth) {\n    return textLine;\n  }\n\n  for (var j = 0;; j++) {\n    if (lineWidth <= contentWidth || j >= options.maxIterations) {\n      textLine += options.ellipsis;\n      break;\n    }\n\n    var subLength = j === 0 ? estimateLength(textLine, contentWidth, options.ascCharWidth, options.cnCharWidth) : lineWidth > 0 ? Math.floor(textLine.length * contentWidth / lineWidth) : 0;\n    textLine = textLine.substr(0, subLength);\n    lineWidth = getWidth(textLine, font);\n  }\n\n  if (textLine === '') {\n    textLine = options.placeholder;\n  }\n\n  return textLine;\n}\n\nfunction estimateLength(text, contentWidth, ascCharWidth, cnCharWidth) {\n  var width = 0;\n  var i = 0;\n\n  for (var len = text.length; i < len && width < contentWidth; i++) {\n    var charCode = text.charCodeAt(i);\n    width += 0 <= charCode && charCode <= 127 ? ascCharWidth : cnCharWidth;\n  }\n\n  return i;\n}\n/**\n * @public\n * @param {string} font\n * @return {number} line height\n */\n\n\nfunction getLineHeight(font) {\n  // FIXME A rough approach.\n  return getWidth('国', font);\n}\n/**\n * @public\n * @param {string} text\n * @param {string} font\n * @return {Object} width\n */\n\n\nfunction measureText(text, font) {\n  return methods.measureText(text, font);\n} // Avoid assign to an exported variable, for transforming to cjs.\n\n\nmethods.measureText = function (text, font) {\n  var ctx = getContext();\n  ctx.font = font || DEFAULT_FONT;\n  return ctx.measureText(text);\n};\n/**\n * @public\n * @param {string} text\n * @param {string} font\n * @param {Object} [truncate]\n * @return {Object} block: {lineHeight, lines, height, outerHeight}\n *  Notice: for performance, do not calculate outerWidth util needed.\n */\n\n\nfunction parsePlainText(text, font, padding, truncate) {\n  text != null && (text += '');\n  var lineHeight = getLineHeight(font);\n  var lines = text ? text.split('\\n') : [];\n  var height = lines.length * lineHeight;\n  var outerHeight = height;\n\n  if (padding) {\n    outerHeight += padding[0] + padding[2];\n  }\n\n  if (text && truncate) {\n    var truncOuterHeight = truncate.outerHeight;\n    var truncOuterWidth = truncate.outerWidth;\n\n    if (truncOuterHeight != null && outerHeight > truncOuterHeight) {\n      text = '';\n      lines = [];\n    } else if (truncOuterWidth != null) {\n      var options = prepareTruncateOptions(truncOuterWidth - (padding ? padding[1] + padding[3] : 0), font, truncate.ellipsis, {\n        minChar: truncate.minChar,\n        placeholder: truncate.placeholder\n      }); // FIXME\n      // It is not appropriate that every line has '...' when truncate multiple lines.\n\n      for (var i = 0, len = lines.length; i < len; i++) {\n        lines[i] = truncateSingleLine(lines[i], options);\n      }\n    }\n  }\n\n  return {\n    lines: lines,\n    height: height,\n    outerHeight: outerHeight,\n    lineHeight: lineHeight\n  };\n}\n/**\n * For example: 'some text {a|some text}other text{b|some text}xxx{c|}xxx'\n * Also consider 'bbbb{a|xxx\\nzzz}xxxx\\naaaa'.\n *\n * @public\n * @param {string} text\n * @param {Object} style\n * @return {Object} block\n * {\n *      width,\n *      height,\n *      lines: [{\n *          lineHeight,\n *          width,\n *          tokens: [[{\n *              styleName,\n *              text,\n *              width,      // include textPadding\n *              height,     // include textPadding\n *              textWidth, // pure text width\n *              textHeight, // pure text height\n *              lineHeihgt,\n *              font,\n *              textAlign,\n *              textVerticalAlign\n *          }], [...], ...]\n *      }, ...]\n * }\n * If styleName is undefined, it is plain text.\n */\n\n\nfunction parseRichText(text, style) {\n  var contentBlock = {\n    lines: [],\n    width: 0,\n    height: 0\n  };\n  text != null && (text += '');\n\n  if (!text) {\n    return contentBlock;\n  }\n\n  var lastIndex = STYLE_REG.lastIndex = 0;\n  var result;\n\n  while ((result = STYLE_REG.exec(text)) != null) {\n    var matchedIndex = result.index;\n\n    if (matchedIndex > lastIndex) {\n      pushTokens(contentBlock, text.substring(lastIndex, matchedIndex));\n    }\n\n    pushTokens(contentBlock, result[2], result[1]);\n    lastIndex = STYLE_REG.lastIndex;\n  }\n\n  if (lastIndex < text.length) {\n    pushTokens(contentBlock, text.substring(lastIndex, text.length));\n  }\n\n  var lines = contentBlock.lines;\n  var contentHeight = 0;\n  var contentWidth = 0; // For `textWidth: 100%`\n\n  var pendingList = [];\n  var stlPadding = style.textPadding;\n  var truncate = style.truncate;\n  var truncateWidth = truncate && truncate.outerWidth;\n  var truncateHeight = truncate && truncate.outerHeight;\n\n  if (stlPadding) {\n    truncateWidth != null && (truncateWidth -= stlPadding[1] + stlPadding[3]);\n    truncateHeight != null && (truncateHeight -= stlPadding[0] + stlPadding[2]);\n  } // Calculate layout info of tokens.\n\n\n  for (var i = 0; i < lines.length; i++) {\n    var line = lines[i];\n    var lineHeight = 0;\n    var lineWidth = 0;\n\n    for (var j = 0; j < line.tokens.length; j++) {\n      var token = line.tokens[j];\n      var tokenStyle = token.styleName && style.rich[token.styleName] || {}; // textPadding should not inherit from style.\n\n      var textPadding = token.textPadding = tokenStyle.textPadding; // textFont has been asigned to font by `normalizeStyle`.\n\n      var font = token.font = tokenStyle.font || style.font; // textHeight can be used when textVerticalAlign is specified in token.\n\n      var tokenHeight = token.textHeight = retrieve2( // textHeight should not be inherited, consider it can be specified\n      // as box height of the block.\n      tokenStyle.textHeight, getLineHeight(font));\n      textPadding && (tokenHeight += textPadding[0] + textPadding[2]);\n      token.height = tokenHeight;\n      token.lineHeight = retrieve3(tokenStyle.textLineHeight, style.textLineHeight, tokenHeight);\n      token.textAlign = tokenStyle && tokenStyle.textAlign || style.textAlign;\n      token.textVerticalAlign = tokenStyle && tokenStyle.textVerticalAlign || 'middle';\n\n      if (truncateHeight != null && contentHeight + token.lineHeight > truncateHeight) {\n        return {\n          lines: [],\n          width: 0,\n          height: 0\n        };\n      }\n\n      token.textWidth = getWidth(token.text, font);\n      var tokenWidth = tokenStyle.textWidth;\n      var tokenWidthNotSpecified = tokenWidth == null || tokenWidth === 'auto'; // Percent width, can be `100%`, can be used in drawing separate\n      // line when box width is needed to be auto.\n\n      if (typeof tokenWidth === 'string' && tokenWidth.charAt(tokenWidth.length - 1) === '%') {\n        token.percentWidth = tokenWidth;\n        pendingList.push(token);\n        tokenWidth = 0; // Do not truncate in this case, because there is no user case\n        // and it is too complicated.\n      } else {\n        if (tokenWidthNotSpecified) {\n          tokenWidth = token.textWidth; // FIXME: If image is not loaded and textWidth is not specified, calling\n          // `getBoundingRect()` will not get correct result.\n\n          var textBackgroundColor = tokenStyle.textBackgroundColor;\n          var bgImg = textBackgroundColor && textBackgroundColor.image; // Use cases:\n          // (1) If image is not loaded, it will be loaded at render phase and call\n          // `dirty()` and `textBackgroundColor.image` will be replaced with the loaded\n          // image, and then the right size will be calculated here at the next tick.\n          // See `graphic/helper/text.js`.\n          // (2) If image loaded, and `textBackgroundColor.image` is image src string,\n          // use `imageHelper.findExistImage` to find cached image.\n          // `imageHelper.findExistImage` will always be called here before\n          // `imageHelper.createOrUpdateImage` in `graphic/helper/text.js#renderRichText`\n          // which ensures that image will not be rendered before correct size calcualted.\n\n          if (bgImg) {\n            bgImg = imageHelper.findExistImage(bgImg);\n\n            if (imageHelper.isImageReady(bgImg)) {\n              tokenWidth = Math.max(tokenWidth, bgImg.width * tokenHeight / bgImg.height);\n            }\n          }\n        }\n\n        var paddingW = textPadding ? textPadding[1] + textPadding[3] : 0;\n        tokenWidth += paddingW;\n        var remianTruncWidth = truncateWidth != null ? truncateWidth - lineWidth : null;\n\n        if (remianTruncWidth != null && remianTruncWidth < tokenWidth) {\n          if (!tokenWidthNotSpecified || remianTruncWidth < paddingW) {\n            token.text = '';\n            token.textWidth = tokenWidth = 0;\n          } else {\n            token.text = truncateText(token.text, remianTruncWidth - paddingW, font, truncate.ellipsis, {\n              minChar: truncate.minChar\n            });\n            token.textWidth = getWidth(token.text, font);\n            tokenWidth = token.textWidth + paddingW;\n          }\n        }\n      }\n\n      lineWidth += token.width = tokenWidth;\n      tokenStyle && (lineHeight = Math.max(lineHeight, token.lineHeight));\n    }\n\n    line.width = lineWidth;\n    line.lineHeight = lineHeight;\n    contentHeight += lineHeight;\n    contentWidth = Math.max(contentWidth, lineWidth);\n  }\n\n  contentBlock.outerWidth = contentBlock.width = retrieve2(style.textWidth, contentWidth);\n  contentBlock.outerHeight = contentBlock.height = retrieve2(style.textHeight, contentHeight);\n\n  if (stlPadding) {\n    contentBlock.outerWidth += stlPadding[1] + stlPadding[3];\n    contentBlock.outerHeight += stlPadding[0] + stlPadding[2];\n  }\n\n  for (var i = 0; i < pendingList.length; i++) {\n    var token = pendingList[i];\n    var percentWidth = token.percentWidth; // Should not base on outerWidth, because token can not be placed out of padding.\n\n    token.width = parseInt(percentWidth, 10) / 100 * contentWidth;\n  }\n\n  return contentBlock;\n}\n\nfunction pushTokens(block, str, styleName) {\n  var isEmptyStr = str === '';\n  var strs = str.split('\\n');\n  var lines = block.lines;\n\n  for (var i = 0; i < strs.length; i++) {\n    var text = strs[i];\n    var token = {\n      styleName: styleName,\n      text: text,\n      isLineHolder: !text && !isEmptyStr\n    }; // The first token should be appended to the last line.\n\n    if (!i) {\n      var tokens = (lines[lines.length - 1] || (lines[0] = {\n        tokens: []\n      })).tokens; // Consider cases:\n      // (1) ''.split('\\n') => ['', '\\n', ''], the '' at the first item\n      // (which is a placeholder) should be replaced by new token.\n      // (2) A image backage, where token likes {a|}.\n      // (3) A redundant '' will affect textAlign in line.\n      // (4) tokens with the same tplName should not be merged, because\n      // they should be displayed in different box (with border and padding).\n\n      var tokensLen = tokens.length;\n      tokensLen === 1 && tokens[0].isLineHolder ? tokens[0] = token : // Consider text is '', only insert when it is the \"lineHolder\" or\n      // \"emptyStr\". Otherwise a redundant '' will affect textAlign in line.\n      (text || !tokensLen || isEmptyStr) && tokens.push(token);\n    } // Other tokens always start a new line.\n    else {\n        // If there is '', insert it as a placeholder.\n        lines.push({\n          tokens: [token]\n        });\n      }\n  }\n}\n\nfunction makeFont(style) {\n  // FIXME in node-canvas fontWeight is before fontStyle\n  // Use `fontSize` `fontFamily` to check whether font properties are defined.\n  var font = (style.fontSize || style.fontFamily) && [style.fontStyle, style.fontWeight, (style.fontSize || 12) + 'px', // If font properties are defined, `fontFamily` should not be ignored.\n  style.fontFamily || 'sans-serif'].join(' ');\n  return font && trim(font) || style.textFont || style.font;\n}\n\nexports.DEFAULT_FONT = DEFAULT_FONT;\nexports.$override = $override;\nexports.getWidth = getWidth;\nexports.getBoundingRect = getBoundingRect;\nexports.adjustTextX = adjustTextX;\nexports.adjustTextY = adjustTextY;\nexports.adjustTextPositionOnRect = adjustTextPositionOnRect;\nexports.truncateText = truncateText;\nexports.getLineHeight = getLineHeight;\nexports.measureText = measureText;\nexports.parsePlainText = parsePlainText;\nexports.parseRichText = parseRichText;\nexports.makeFont = makeFont;","var PI2 = Math.PI * 2;\n\nfunction normalizeRadian(angle) {\n  angle %= PI2;\n\n  if (angle < 0) {\n    angle += PI2;\n  }\n\n  return angle;\n}\n\nexports.normalizeRadian = normalizeRadian;","function windingLine(x0, y0, x1, y1, x, y) {\n  if (y > y0 && y > y1 || y < y0 && y < y1) {\n    return 0;\n  } // Ignore horizontal line\n\n\n  if (y1 === y0) {\n    return 0;\n  }\n\n  var dir = y1 < y0 ? 1 : -1;\n  var t = (y - y0) / (y1 - y0); // Avoid winding error when intersection point is the connect point of two line of polygon\n\n  if (t === 1 || t === 0) {\n    dir = y1 < y0 ? 0.5 : -0.5;\n  }\n\n  var x_ = t * (x1 - x0) + x0;\n  return x_ > x ? dir : 0;\n}\n\nmodule.exports = windingLine;","var zrUtil = require(\"../core/util\");\n\nvar Element = require(\"../Element\");\n\nvar BoundingRect = require(\"../core/BoundingRect\");\n\n/**\n * Group是一个容器，可以插入子节点，Group的变换也会被应用到子节点上\n * @module zrender/graphic/Group\n * @example\n *     var Group = require('zrender/container/Group');\n *     var Circle = require('zrender/graphic/shape/Circle');\n *     var g = new Group();\n *     g.position[0] = 100;\n *     g.position[1] = 100;\n *     g.add(new Circle({\n *         style: {\n *             x: 100,\n *             y: 100,\n *             r: 20,\n *         }\n *     }));\n *     zr.add(g);\n */\n\n/**\n * @alias module:zrender/graphic/Group\n * @constructor\n * @extends module:zrender/mixin/Transformable\n * @extends module:zrender/mixin/Eventful\n */\nvar Group = function (opts) {\n  opts = opts || {};\n  Element.call(this, opts);\n\n  for (var key in opts) {\n    if (opts.hasOwnProperty(key)) {\n      this[key] = opts[key];\n    }\n  }\n\n  this._children = [];\n  this.__storage = null;\n  this.__dirty = true;\n};\n\nGroup.prototype = {\n  constructor: Group,\n  isGroup: true,\n\n  /**\n   * @type {string}\n   */\n  type: 'group',\n\n  /**\n   * 所有子孙元素是否响应鼠标事件\n   * @name module:/zrender/container/Group#silent\n   * @type {boolean}\n   * @default false\n   */\n  silent: false,\n\n  /**\n   * @return {Array.<module:zrender/Element>}\n   */\n  children: function () {\n    return this._children.slice();\n  },\n\n  /**\n   * 获取指定 index 的儿子节点\n   * @param  {number} idx\n   * @return {module:zrender/Element}\n   */\n  childAt: function (idx) {\n    return this._children[idx];\n  },\n\n  /**\n   * 获取指定名字的儿子节点\n   * @param  {string} name\n   * @return {module:zrender/Element}\n   */\n  childOfName: function (name) {\n    var children = this._children;\n\n    for (var i = 0; i < children.length; i++) {\n      if (children[i].name === name) {\n        return children[i];\n      }\n    }\n  },\n\n  /**\n   * @return {number}\n   */\n  childCount: function () {\n    return this._children.length;\n  },\n\n  /**\n   * 添加子节点到最后\n   * @param {module:zrender/Element} child\n   */\n  add: function (child) {\n    if (child && child !== this && child.parent !== this) {\n      this._children.push(child);\n\n      this._doAdd(child);\n    }\n\n    return this;\n  },\n\n  /**\n   * 添加子节点在 nextSibling 之前\n   * @param {module:zrender/Element} child\n   * @param {module:zrender/Element} nextSibling\n   */\n  addBefore: function (child, nextSibling) {\n    if (child && child !== this && child.parent !== this && nextSibling && nextSibling.parent === this) {\n      var children = this._children;\n      var idx = children.indexOf(nextSibling);\n\n      if (idx >= 0) {\n        children.splice(idx, 0, child);\n\n        this._doAdd(child);\n      }\n    }\n\n    return this;\n  },\n  _doAdd: function (child) {\n    if (child.parent) {\n      child.parent.remove(child);\n    }\n\n    child.parent = this;\n    var storage = this.__storage;\n    var zr = this.__zr;\n\n    if (storage && storage !== child.__storage) {\n      storage.addToStorage(child);\n\n      if (child instanceof Group) {\n        child.addChildrenToStorage(storage);\n      }\n    }\n\n    zr && zr.refresh();\n  },\n\n  /**\n   * 移除子节点\n   * @param {module:zrender/Element} child\n   */\n  remove: function (child) {\n    var zr = this.__zr;\n    var storage = this.__storage;\n    var children = this._children;\n    var idx = zrUtil.indexOf(children, child);\n\n    if (idx < 0) {\n      return this;\n    }\n\n    children.splice(idx, 1);\n    child.parent = null;\n\n    if (storage) {\n      storage.delFromStorage(child);\n\n      if (child instanceof Group) {\n        child.delChildrenFromStorage(storage);\n      }\n    }\n\n    zr && zr.refresh();\n    return this;\n  },\n\n  /**\n   * 移除所有子节点\n   */\n  removeAll: function () {\n    var children = this._children;\n    var storage = this.__storage;\n    var child;\n    var i;\n\n    for (i = 0; i < children.length; i++) {\n      child = children[i];\n\n      if (storage) {\n        storage.delFromStorage(child);\n\n        if (child instanceof Group) {\n          child.delChildrenFromStorage(storage);\n        }\n      }\n\n      child.parent = null;\n    }\n\n    children.length = 0;\n    return this;\n  },\n\n  /**\n   * 遍历所有子节点\n   * @param  {Function} cb\n   * @param  {}   context\n   */\n  eachChild: function (cb, context) {\n    var children = this._children;\n\n    for (var i = 0; i < children.length; i++) {\n      var child = children[i];\n      cb.call(context, child, i);\n    }\n\n    return this;\n  },\n\n  /**\n   * 深度优先遍历所有子孙节点\n   * @param  {Function} cb\n   * @param  {}   context\n   */\n  traverse: function (cb, context) {\n    for (var i = 0; i < this._children.length; i++) {\n      var child = this._children[i];\n      cb.call(context, child);\n\n      if (child.type === 'group') {\n        child.traverse(cb, context);\n      }\n    }\n\n    return this;\n  },\n  addChildrenToStorage: function (storage) {\n    for (var i = 0; i < this._children.length; i++) {\n      var child = this._children[i];\n      storage.addToStorage(child);\n\n      if (child instanceof Group) {\n        child.addChildrenToStorage(storage);\n      }\n    }\n  },\n  delChildrenFromStorage: function (storage) {\n    for (var i = 0; i < this._children.length; i++) {\n      var child = this._children[i];\n      storage.delFromStorage(child);\n\n      if (child instanceof Group) {\n        child.delChildrenFromStorage(storage);\n      }\n    }\n  },\n  dirty: function () {\n    this.__dirty = true;\n    this.__zr && this.__zr.refresh();\n    return this;\n  },\n\n  /**\n   * @return {module:zrender/core/BoundingRect}\n   */\n  getBoundingRect: function (includeChildren) {\n    // TODO Caching\n    var rect = null;\n    var tmpRect = new BoundingRect(0, 0, 0, 0);\n    var children = includeChildren || this._children;\n    var tmpMat = [];\n\n    for (var i = 0; i < children.length; i++) {\n      var child = children[i];\n\n      if (child.ignore || child.invisible) {\n        continue;\n      }\n\n      var childRect = child.getBoundingRect();\n      var transform = child.getLocalTransform(tmpMat); // TODO\n      // The boundingRect cacluated by transforming original\n      // rect may be bigger than the actual bundingRect when rotation\n      // is used. (Consider a circle rotated aginst its center, where\n      // the actual boundingRect should be the same as that not be\n      // rotated.) But we can not find better approach to calculate\n      // actual boundingRect yet, considering performance.\n\n      if (transform) {\n        tmpRect.copy(childRect);\n        tmpRect.applyTransform(transform);\n        rect = rect || tmpRect.clone();\n        rect.union(tmpRect);\n      } else {\n        rect = rect || childRect.clone();\n        rect.union(childRect);\n      }\n    }\n\n    return rect || tmpRect;\n  }\n};\nzrUtil.inherits(Group, Element);\nvar _default = Group;\nmodule.exports = _default;","var vec2 = require(\"./vector\");\n\nvar matrix = require(\"./matrix\");\n\n/**\n * @module echarts/core/BoundingRect\n */\nvar v2ApplyTransform = vec2.applyTransform;\nvar mathMin = Math.min;\nvar mathMax = Math.max;\n/**\n * @alias module:echarts/core/BoundingRect\n */\n\nfunction BoundingRect(x, y, width, height) {\n  if (width < 0) {\n    x = x + width;\n    width = -width;\n  }\n\n  if (height < 0) {\n    y = y + height;\n    height = -height;\n  }\n  /**\n   * @type {number}\n   */\n\n\n  this.x = x;\n  /**\n   * @type {number}\n   */\n\n  this.y = y;\n  /**\n   * @type {number}\n   */\n\n  this.width = width;\n  /**\n   * @type {number}\n   */\n\n  this.height = height;\n}\n\nBoundingRect.prototype = {\n  constructor: BoundingRect,\n\n  /**\n   * @param {module:echarts/core/BoundingRect} other\n   */\n  union: function (other) {\n    var x = mathMin(other.x, this.x);\n    var y = mathMin(other.y, this.y);\n    this.width = mathMax(other.x + other.width, this.x + this.width) - x;\n    this.height = mathMax(other.y + other.height, this.y + this.height) - y;\n    this.x = x;\n    this.y = y;\n  },\n\n  /**\n   * @param {Array.<number>} m\n   * @methods\n   */\n  applyTransform: function () {\n    var lt = [];\n    var rb = [];\n    var lb = [];\n    var rt = [];\n    return function (m) {\n      // In case usage like this\n      // el.getBoundingRect().applyTransform(el.transform)\n      // And element has no transform\n      if (!m) {\n        return;\n      }\n\n      lt[0] = lb[0] = this.x;\n      lt[1] = rt[1] = this.y;\n      rb[0] = rt[0] = this.x + this.width;\n      rb[1] = lb[1] = this.y + this.height;\n      v2ApplyTransform(lt, lt, m);\n      v2ApplyTransform(rb, rb, m);\n      v2ApplyTransform(lb, lb, m);\n      v2ApplyTransform(rt, rt, m);\n      this.x = mathMin(lt[0], rb[0], lb[0], rt[0]);\n      this.y = mathMin(lt[1], rb[1], lb[1], rt[1]);\n      var maxX = mathMax(lt[0], rb[0], lb[0], rt[0]);\n      var maxY = mathMax(lt[1], rb[1], lb[1], rt[1]);\n      this.width = maxX - this.x;\n      this.height = maxY - this.y;\n    };\n  }(),\n\n  /**\n   * Calculate matrix of transforming from self to target rect\n   * @param  {module:zrender/core/BoundingRect} b\n   * @return {Array.<number>}\n   */\n  calculateTransform: function (b) {\n    var a = this;\n    var sx = b.width / a.width;\n    var sy = b.height / a.height;\n    var m = matrix.create(); // 矩阵右乘\n\n    matrix.translate(m, m, [-a.x, -a.y]);\n    matrix.scale(m, m, [sx, sy]);\n    matrix.translate(m, m, [b.x, b.y]);\n    return m;\n  },\n\n  /**\n   * @param {(module:echarts/core/BoundingRect|Object)} b\n   * @return {boolean}\n   */\n  intersect: function (b) {\n    if (!b) {\n      return false;\n    }\n\n    if (!(b instanceof BoundingRect)) {\n      // Normalize negative width/height.\n      b = BoundingRect.create(b);\n    }\n\n    var a = this;\n    var ax0 = a.x;\n    var ax1 = a.x + a.width;\n    var ay0 = a.y;\n    var ay1 = a.y + a.height;\n    var bx0 = b.x;\n    var bx1 = b.x + b.width;\n    var by0 = b.y;\n    var by1 = b.y + b.height;\n    return !(ax1 < bx0 || bx1 < ax0 || ay1 < by0 || by1 < ay0);\n  },\n  contain: function (x, y) {\n    var rect = this;\n    return x >= rect.x && x <= rect.x + rect.width && y >= rect.y && y <= rect.y + rect.height;\n  },\n\n  /**\n   * @return {module:echarts/core/BoundingRect}\n   */\n  clone: function () {\n    return new BoundingRect(this.x, this.y, this.width, this.height);\n  },\n\n  /**\n   * Copy from another rect\n   */\n  copy: function (other) {\n    this.x = other.x;\n    this.y = other.y;\n    this.width = other.width;\n    this.height = other.height;\n  },\n  plain: function () {\n    return {\n      x: this.x,\n      y: this.y,\n      width: this.width,\n      height: this.height\n    };\n  }\n};\n/**\n * @param {Object|module:zrender/core/BoundingRect} rect\n * @param {number} rect.x\n * @param {number} rect.y\n * @param {number} rect.width\n * @param {number} rect.height\n * @return {module:zrender/core/BoundingRect}\n */\n\nBoundingRect.create = function (rect) {\n  return new BoundingRect(rect.x, rect.y, rect.width, rect.height);\n};\n\nvar _default = BoundingRect;\nmodule.exports = _default;","var eventUtil = require(\"./event\");\n\n/**\n * Only implements needed gestures for mobile.\n */\nvar GestureMgr = function () {\n  /**\n   * @private\n   * @type {Array.<Object>}\n   */\n  this._track = [];\n};\n\nGestureMgr.prototype = {\n  constructor: GestureMgr,\n  recognize: function (event, target, root) {\n    this._doTrack(event, target, root);\n\n    return this._recognize(event);\n  },\n  clear: function () {\n    this._track.length = 0;\n    return this;\n  },\n  _doTrack: function (event, target, root) {\n    var touches = event.touches;\n\n    if (!touches) {\n      return;\n    }\n\n    var trackItem = {\n      points: [],\n      touches: [],\n      target: target,\n      event: event\n    };\n\n    for (var i = 0, len = touches.length; i < len; i++) {\n      var touch = touches[i];\n      var pos = eventUtil.clientToLocal(root, touch, {});\n      trackItem.points.push([pos.zrX, pos.zrY]);\n      trackItem.touches.push(touch);\n    }\n\n    this._track.push(trackItem);\n  },\n  _recognize: function (event) {\n    for (var eventName in recognizers) {\n      if (recognizers.hasOwnProperty(eventName)) {\n        var gestureInfo = recognizers[eventName](this._track, event);\n\n        if (gestureInfo) {\n          return gestureInfo;\n        }\n      }\n    }\n  }\n};\n\nfunction dist(pointPair) {\n  var dx = pointPair[1][0] - pointPair[0][0];\n  var dy = pointPair[1][1] - pointPair[0][1];\n  return Math.sqrt(dx * dx + dy * dy);\n}\n\nfunction center(pointPair) {\n  return [(pointPair[0][0] + pointPair[1][0]) / 2, (pointPair[0][1] + pointPair[1][1]) / 2];\n}\n\nvar recognizers = {\n  pinch: function (track, event) {\n    var trackLen = track.length;\n\n    if (!trackLen) {\n      return;\n    }\n\n    var pinchEnd = (track[trackLen - 1] || {}).points;\n    var pinchPre = (track[trackLen - 2] || {}).points || pinchEnd;\n\n    if (pinchPre && pinchPre.length > 1 && pinchEnd && pinchEnd.length > 1) {\n      var pinchScale = dist(pinchEnd) / dist(pinchPre);\n      !isFinite(pinchScale) && (pinchScale = 1);\n      event.pinchScale = pinchScale;\n      var pinchCenter = center(pinchEnd);\n      event.pinchX = pinchCenter[0];\n      event.pinchY = pinchCenter[1];\n      return {\n        type: 'pinch',\n        target: track[0].target,\n        event: event\n      };\n    }\n  } // Only pinch currently.\n\n};\nvar _default = GestureMgr;\nmodule.exports = _default;","// Simple LRU cache use doubly linked list\n// @module zrender/core/LRU\n\n/**\n * Simple double linked list. Compared with array, it has O(1) remove operation.\n * @constructor\n */\nvar LinkedList = function () {\n  /**\n   * @type {module:zrender/core/LRU~Entry}\n   */\n  this.head = null;\n  /**\n   * @type {module:zrender/core/LRU~Entry}\n   */\n\n  this.tail = null;\n  this._len = 0;\n};\n\nvar linkedListProto = LinkedList.prototype;\n/**\n * Insert a new value at the tail\n * @param  {} val\n * @return {module:zrender/core/LRU~Entry}\n */\n\nlinkedListProto.insert = function (val) {\n  var entry = new Entry(val);\n  this.insertEntry(entry);\n  return entry;\n};\n/**\n * Insert an entry at the tail\n * @param  {module:zrender/core/LRU~Entry} entry\n */\n\n\nlinkedListProto.insertEntry = function (entry) {\n  if (!this.head) {\n    this.head = this.tail = entry;\n  } else {\n    this.tail.next = entry;\n    entry.prev = this.tail;\n    entry.next = null;\n    this.tail = entry;\n  }\n\n  this._len++;\n};\n/**\n * Remove entry.\n * @param  {module:zrender/core/LRU~Entry} entry\n */\n\n\nlinkedListProto.remove = function (entry) {\n  var prev = entry.prev;\n  var next = entry.next;\n\n  if (prev) {\n    prev.next = next;\n  } else {\n    // Is head\n    this.head = next;\n  }\n\n  if (next) {\n    next.prev = prev;\n  } else {\n    // Is tail\n    this.tail = prev;\n  }\n\n  entry.next = entry.prev = null;\n  this._len--;\n};\n/**\n * @return {number}\n */\n\n\nlinkedListProto.len = function () {\n  return this._len;\n};\n/**\n * Clear list\n */\n\n\nlinkedListProto.clear = function () {\n  this.head = this.tail = null;\n  this._len = 0;\n};\n/**\n * @constructor\n * @param {} val\n */\n\n\nvar Entry = function (val) {\n  /**\n   * @type {}\n   */\n  this.value = val;\n  /**\n   * @type {module:zrender/core/LRU~Entry}\n   */\n\n  this.next;\n  /**\n   * @type {module:zrender/core/LRU~Entry}\n   */\n\n  this.prev;\n};\n/**\n * LRU Cache\n * @constructor\n * @alias module:zrender/core/LRU\n */\n\n\nvar LRU = function (maxSize) {\n  this._list = new LinkedList();\n  this._map = {};\n  this._maxSize = maxSize || 10;\n  this._lastRemovedEntry = null;\n};\n\nvar LRUProto = LRU.prototype;\n/**\n * @param  {string} key\n * @param  {} value\n * @return {} Removed value\n */\n\nLRUProto.put = function (key, value) {\n  var list = this._list;\n  var map = this._map;\n  var removed = null;\n\n  if (map[key] == null) {\n    var len = list.len(); // Reuse last removed entry\n\n    var entry = this._lastRemovedEntry;\n\n    if (len >= this._maxSize && len > 0) {\n      // Remove the least recently used\n      var leastUsedEntry = list.head;\n      list.remove(leastUsedEntry);\n      delete map[leastUsedEntry.key];\n      removed = leastUsedEntry.value;\n      this._lastRemovedEntry = leastUsedEntry;\n    }\n\n    if (entry) {\n      entry.value = value;\n    } else {\n      entry = new Entry(value);\n    }\n\n    entry.key = key;\n    list.insertEntry(entry);\n    map[key] = entry;\n  }\n\n  return removed;\n};\n/**\n * @param  {string} key\n * @return {}\n */\n\n\nLRUProto.get = function (key) {\n  var entry = this._map[key];\n  var list = this._list;\n\n  if (entry != null) {\n    // Put the latest used entry in the tail\n    if (entry !== list.tail) {\n      list.remove(entry);\n      list.insertEntry(entry);\n    }\n\n    return entry.value;\n  }\n};\n/**\n * Clear the cache\n */\n\n\nLRUProto.clear = function () {\n  this._list.clear();\n\n  this._map = {};\n};\n\nvar _default = LRU;\nmodule.exports = _default;","var curve = require(\"./curve\");\n\nvar vec2 = require(\"./vector\");\n\nvar bbox = require(\"./bbox\");\n\nvar BoundingRect = require(\"./BoundingRect\");\n\nvar _config = require(\"../config\");\n\nvar dpr = _config.devicePixelRatio;\n\n/**\n * Path 代理，可以在`buildPath`中用于替代`ctx`, 会保存每个path操作的命令到pathCommands属性中\n * 可以用于 isInsidePath 判断以及获取boundingRect\n *\n * @module zrender/core/PathProxy\n * @author Yi Shen (http://www.github.com/pissang)\n */\n// TODO getTotalLength, getPointAtLength\nvar CMD = {\n  M: 1,\n  L: 2,\n  C: 3,\n  Q: 4,\n  A: 5,\n  Z: 6,\n  // Rect\n  R: 7\n}; // var CMD_MEM_SIZE = {\n//     M: 3,\n//     L: 3,\n//     C: 7,\n//     Q: 5,\n//     A: 9,\n//     R: 5,\n//     Z: 1\n// };\n\nvar min = [];\nvar max = [];\nvar min2 = [];\nvar max2 = [];\nvar mathMin = Math.min;\nvar mathMax = Math.max;\nvar mathCos = Math.cos;\nvar mathSin = Math.sin;\nvar mathSqrt = Math.sqrt;\nvar mathAbs = Math.abs;\nvar hasTypedArray = typeof Float32Array != 'undefined';\n/**\n * @alias module:zrender/core/PathProxy\n * @constructor\n */\n\nvar PathProxy = function (notSaveData) {\n  this._saveData = !(notSaveData || false);\n\n  if (this._saveData) {\n    /**\n     * Path data. Stored as flat array\n     * @type {Array.<Object>}\n     */\n    this.data = [];\n  }\n\n  this._ctx = null;\n};\n/**\n * 快速计算Path包围盒（并不是最小包围盒）\n * @return {Object}\n */\n\n\nPathProxy.prototype = {\n  constructor: PathProxy,\n  _xi: 0,\n  _yi: 0,\n  _x0: 0,\n  _y0: 0,\n  // Unit x, Unit y. Provide for avoiding drawing that too short line segment\n  _ux: 0,\n  _uy: 0,\n  _len: 0,\n  _lineDash: null,\n  _dashOffset: 0,\n  _dashIdx: 0,\n  _dashSum: 0,\n\n  /**\n   * @readOnly\n   */\n  setScale: function (sx, sy) {\n    this._ux = mathAbs(1 / dpr / sx) || 0;\n    this._uy = mathAbs(1 / dpr / sy) || 0;\n  },\n  getContext: function () {\n    return this._ctx;\n  },\n\n  /**\n   * @param  {CanvasRenderingContext2D} ctx\n   * @return {module:zrender/core/PathProxy}\n   */\n  beginPath: function (ctx) {\n    this._ctx = ctx;\n    ctx && ctx.beginPath();\n    ctx && (this.dpr = ctx.dpr); // Reset\n\n    if (this._saveData) {\n      this._len = 0;\n    }\n\n    if (this._lineDash) {\n      this._lineDash = null;\n      this._dashOffset = 0;\n    }\n\n    return this;\n  },\n\n  /**\n   * @param  {number} x\n   * @param  {number} y\n   * @return {module:zrender/core/PathProxy}\n   */\n  moveTo: function (x, y) {\n    this.addData(CMD.M, x, y);\n    this._ctx && this._ctx.moveTo(x, y); // x0, y0, xi, yi 是记录在 _dashedXXXXTo 方法中使用\n    // xi, yi 记录当前点, x0, y0 在 closePath 的时候回到起始点。\n    // 有可能在 beginPath 之后直接调用 lineTo，这时候 x0, y0 需要\n    // 在 lineTo 方法中记录，这里先不考虑这种情况，dashed line 也只在 IE10- 中不支持\n\n    this._x0 = x;\n    this._y0 = y;\n    this._xi = x;\n    this._yi = y;\n    return this;\n  },\n\n  /**\n   * @param  {number} x\n   * @param  {number} y\n   * @return {module:zrender/core/PathProxy}\n   */\n  lineTo: function (x, y) {\n    var exceedUnit = mathAbs(x - this._xi) > this._ux || mathAbs(y - this._yi) > this._uy // Force draw the first segment\n    || this._len < 5;\n    this.addData(CMD.L, x, y);\n\n    if (this._ctx && exceedUnit) {\n      this._needsDash() ? this._dashedLineTo(x, y) : this._ctx.lineTo(x, y);\n    }\n\n    if (exceedUnit) {\n      this._xi = x;\n      this._yi = y;\n    }\n\n    return this;\n  },\n\n  /**\n   * @param  {number} x1\n   * @param  {number} y1\n   * @param  {number} x2\n   * @param  {number} y2\n   * @param  {number} x3\n   * @param  {number} y3\n   * @return {module:zrender/core/PathProxy}\n   */\n  bezierCurveTo: function (x1, y1, x2, y2, x3, y3) {\n    this.addData(CMD.C, x1, y1, x2, y2, x3, y3);\n\n    if (this._ctx) {\n      this._needsDash() ? this._dashedBezierTo(x1, y1, x2, y2, x3, y3) : this._ctx.bezierCurveTo(x1, y1, x2, y2, x3, y3);\n    }\n\n    this._xi = x3;\n    this._yi = y3;\n    return this;\n  },\n\n  /**\n   * @param  {number} x1\n   * @param  {number} y1\n   * @param  {number} x2\n   * @param  {number} y2\n   * @return {module:zrender/core/PathProxy}\n   */\n  quadraticCurveTo: function (x1, y1, x2, y2) {\n    this.addData(CMD.Q, x1, y1, x2, y2);\n\n    if (this._ctx) {\n      this._needsDash() ? this._dashedQuadraticTo(x1, y1, x2, y2) : this._ctx.quadraticCurveTo(x1, y1, x2, y2);\n    }\n\n    this._xi = x2;\n    this._yi = y2;\n    return this;\n  },\n\n  /**\n   * @param  {number} cx\n   * @param  {number} cy\n   * @param  {number} r\n   * @param  {number} startAngle\n   * @param  {number} endAngle\n   * @param  {boolean} anticlockwise\n   * @return {module:zrender/core/PathProxy}\n   */\n  arc: function (cx, cy, r, startAngle, endAngle, anticlockwise) {\n    this.addData(CMD.A, cx, cy, r, r, startAngle, endAngle - startAngle, 0, anticlockwise ? 0 : 1);\n    this._ctx && this._ctx.arc(cx, cy, r, startAngle, endAngle, anticlockwise);\n    this._xi = mathCos(endAngle) * r + cx;\n    this._yi = mathSin(endAngle) * r + cx;\n    return this;\n  },\n  // TODO\n  arcTo: function (x1, y1, x2, y2, radius) {\n    if (this._ctx) {\n      this._ctx.arcTo(x1, y1, x2, y2, radius);\n    }\n\n    return this;\n  },\n  // TODO\n  rect: function (x, y, w, h) {\n    this._ctx && this._ctx.rect(x, y, w, h);\n    this.addData(CMD.R, x, y, w, h);\n    return this;\n  },\n\n  /**\n   * @return {module:zrender/core/PathProxy}\n   */\n  closePath: function () {\n    this.addData(CMD.Z);\n    var ctx = this._ctx;\n    var x0 = this._x0;\n    var y0 = this._y0;\n\n    if (ctx) {\n      this._needsDash() && this._dashedLineTo(x0, y0);\n      ctx.closePath();\n    }\n\n    this._xi = x0;\n    this._yi = y0;\n    return this;\n  },\n\n  /**\n   * Context 从外部传入，因为有可能是 rebuildPath 完之后再 fill。\n   * stroke 同样\n   * @param {CanvasRenderingContext2D} ctx\n   * @return {module:zrender/core/PathProxy}\n   */\n  fill: function (ctx) {\n    ctx && ctx.fill();\n    this.toStatic();\n  },\n\n  /**\n   * @param {CanvasRenderingContext2D} ctx\n   * @return {module:zrender/core/PathProxy}\n   */\n  stroke: function (ctx) {\n    ctx && ctx.stroke();\n    this.toStatic();\n  },\n\n  /**\n   * 必须在其它绘制命令前调用\n   * Must be invoked before all other path drawing methods\n   * @return {module:zrender/core/PathProxy}\n   */\n  setLineDash: function (lineDash) {\n    if (lineDash instanceof Array) {\n      this._lineDash = lineDash;\n      this._dashIdx = 0;\n      var lineDashSum = 0;\n\n      for (var i = 0; i < lineDash.length; i++) {\n        lineDashSum += lineDash[i];\n      }\n\n      this._dashSum = lineDashSum;\n    }\n\n    return this;\n  },\n\n  /**\n   * 必须在其它绘制命令前调用\n   * Must be invoked before all other path drawing methods\n   * @return {module:zrender/core/PathProxy}\n   */\n  setLineDashOffset: function (offset) {\n    this._dashOffset = offset;\n    return this;\n  },\n\n  /**\n   *\n   * @return {boolean}\n   */\n  len: function () {\n    return this._len;\n  },\n\n  /**\n   * 直接设置 Path 数据\n   */\n  setData: function (data) {\n    var len = data.length;\n\n    if (!(this.data && this.data.length == len) && hasTypedArray) {\n      this.data = new Float32Array(len);\n    }\n\n    for (var i = 0; i < len; i++) {\n      this.data[i] = data[i];\n    }\n\n    this._len = len;\n  },\n\n  /**\n   * 添加子路径\n   * @param {module:zrender/core/PathProxy|Array.<module:zrender/core/PathProxy>} path\n   */\n  appendPath: function (path) {\n    if (!(path instanceof Array)) {\n      path = [path];\n    }\n\n    var len = path.length;\n    var appendSize = 0;\n    var offset = this._len;\n\n    for (var i = 0; i < len; i++) {\n      appendSize += path[i].len();\n    }\n\n    if (hasTypedArray && this.data instanceof Float32Array) {\n      this.data = new Float32Array(offset + appendSize);\n    }\n\n    for (var i = 0; i < len; i++) {\n      var appendPathData = path[i].data;\n\n      for (var k = 0; k < appendPathData.length; k++) {\n        this.data[offset++] = appendPathData[k];\n      }\n    }\n\n    this._len = offset;\n  },\n\n  /**\n   * 填充 Path 数据。\n   * 尽量复用而不申明新的数组。大部分图形重绘的指令数据长度都是不变的。\n   */\n  addData: function (cmd) {\n    if (!this._saveData) {\n      return;\n    }\n\n    var data = this.data;\n\n    if (this._len + arguments.length > data.length) {\n      // 因为之前的数组已经转换成静态的 Float32Array\n      // 所以不够用时需要扩展一个新的动态数组\n      this._expandData();\n\n      data = this.data;\n    }\n\n    for (var i = 0; i < arguments.length; i++) {\n      data[this._len++] = arguments[i];\n    }\n\n    this._prevCmd = cmd;\n  },\n  _expandData: function () {\n    // Only if data is Float32Array\n    if (!(this.data instanceof Array)) {\n      var newData = [];\n\n      for (var i = 0; i < this._len; i++) {\n        newData[i] = this.data[i];\n      }\n\n      this.data = newData;\n    }\n  },\n\n  /**\n   * If needs js implemented dashed line\n   * @return {boolean}\n   * @private\n   */\n  _needsDash: function () {\n    return this._lineDash;\n  },\n  _dashedLineTo: function (x1, y1) {\n    var dashSum = this._dashSum;\n    var offset = this._dashOffset;\n    var lineDash = this._lineDash;\n    var ctx = this._ctx;\n    var x0 = this._xi;\n    var y0 = this._yi;\n    var dx = x1 - x0;\n    var dy = y1 - y0;\n    var dist = mathSqrt(dx * dx + dy * dy);\n    var x = x0;\n    var y = y0;\n    var dash;\n    var nDash = lineDash.length;\n    var idx;\n    dx /= dist;\n    dy /= dist;\n\n    if (offset < 0) {\n      // Convert to positive offset\n      offset = dashSum + offset;\n    }\n\n    offset %= dashSum;\n    x -= offset * dx;\n    y -= offset * dy;\n\n    while (dx > 0 && x <= x1 || dx < 0 && x >= x1 || dx == 0 && (dy > 0 && y <= y1 || dy < 0 && y >= y1)) {\n      idx = this._dashIdx;\n      dash = lineDash[idx];\n      x += dx * dash;\n      y += dy * dash;\n      this._dashIdx = (idx + 1) % nDash; // Skip positive offset\n\n      if (dx > 0 && x < x0 || dx < 0 && x > x0 || dy > 0 && y < y0 || dy < 0 && y > y0) {\n        continue;\n      }\n\n      ctx[idx % 2 ? 'moveTo' : 'lineTo'](dx >= 0 ? mathMin(x, x1) : mathMax(x, x1), dy >= 0 ? mathMin(y, y1) : mathMax(y, y1));\n    } // Offset for next lineTo\n\n\n    dx = x - x1;\n    dy = y - y1;\n    this._dashOffset = -mathSqrt(dx * dx + dy * dy);\n  },\n  // Not accurate dashed line to\n  _dashedBezierTo: function (x1, y1, x2, y2, x3, y3) {\n    var dashSum = this._dashSum;\n    var offset = this._dashOffset;\n    var lineDash = this._lineDash;\n    var ctx = this._ctx;\n    var x0 = this._xi;\n    var y0 = this._yi;\n    var t;\n    var dx;\n    var dy;\n    var cubicAt = curve.cubicAt;\n    var bezierLen = 0;\n    var idx = this._dashIdx;\n    var nDash = lineDash.length;\n    var x;\n    var y;\n    var tmpLen = 0;\n\n    if (offset < 0) {\n      // Convert to positive offset\n      offset = dashSum + offset;\n    }\n\n    offset %= dashSum; // Bezier approx length\n\n    for (t = 0; t < 1; t += 0.1) {\n      dx = cubicAt(x0, x1, x2, x3, t + 0.1) - cubicAt(x0, x1, x2, x3, t);\n      dy = cubicAt(y0, y1, y2, y3, t + 0.1) - cubicAt(y0, y1, y2, y3, t);\n      bezierLen += mathSqrt(dx * dx + dy * dy);\n    } // Find idx after add offset\n\n\n    for (; idx < nDash; idx++) {\n      tmpLen += lineDash[idx];\n\n      if (tmpLen > offset) {\n        break;\n      }\n    }\n\n    t = (tmpLen - offset) / bezierLen;\n\n    while (t <= 1) {\n      x = cubicAt(x0, x1, x2, x3, t);\n      y = cubicAt(y0, y1, y2, y3, t); // Use line to approximate dashed bezier\n      // Bad result if dash is long\n\n      idx % 2 ? ctx.moveTo(x, y) : ctx.lineTo(x, y);\n      t += lineDash[idx] / bezierLen;\n      idx = (idx + 1) % nDash;\n    } // Finish the last segment and calculate the new offset\n\n\n    idx % 2 !== 0 && ctx.lineTo(x3, y3);\n    dx = x3 - x;\n    dy = y3 - y;\n    this._dashOffset = -mathSqrt(dx * dx + dy * dy);\n  },\n  _dashedQuadraticTo: function (x1, y1, x2, y2) {\n    // Convert quadratic to cubic using degree elevation\n    var x3 = x2;\n    var y3 = y2;\n    x2 = (x2 + 2 * x1) / 3;\n    y2 = (y2 + 2 * y1) / 3;\n    x1 = (this._xi + 2 * x1) / 3;\n    y1 = (this._yi + 2 * y1) / 3;\n\n    this._dashedBezierTo(x1, y1, x2, y2, x3, y3);\n  },\n\n  /**\n   * 转成静态的 Float32Array 减少堆内存占用\n   * Convert dynamic array to static Float32Array\n   */\n  toStatic: function () {\n    var data = this.data;\n\n    if (data instanceof Array) {\n      data.length = this._len;\n\n      if (hasTypedArray) {\n        this.data = new Float32Array(data);\n      }\n    }\n  },\n\n  /**\n   * @return {module:zrender/core/BoundingRect}\n   */\n  getBoundingRect: function () {\n    min[0] = min[1] = min2[0] = min2[1] = Number.MAX_VALUE;\n    max[0] = max[1] = max2[0] = max2[1] = -Number.MAX_VALUE;\n    var data = this.data;\n    var xi = 0;\n    var yi = 0;\n    var x0 = 0;\n    var y0 = 0;\n\n    for (var i = 0; i < data.length;) {\n      var cmd = data[i++];\n\n      if (i == 1) {\n        // 如果第一个命令是 L, C, Q\n        // 则 previous point 同绘制命令的第一个 point\n        //\n        // 第一个命令为 Arc 的情况下会在后面特殊处理\n        xi = data[i];\n        yi = data[i + 1];\n        x0 = xi;\n        y0 = yi;\n      }\n\n      switch (cmd) {\n        case CMD.M:\n          // moveTo 命令重新创建一个新的 subpath, 并且更新新的起点\n          // 在 closePath 的时候使用\n          x0 = data[i++];\n          y0 = data[i++];\n          xi = x0;\n          yi = y0;\n          min2[0] = x0;\n          min2[1] = y0;\n          max2[0] = x0;\n          max2[1] = y0;\n          break;\n\n        case CMD.L:\n          bbox.fromLine(xi, yi, data[i], data[i + 1], min2, max2);\n          xi = data[i++];\n          yi = data[i++];\n          break;\n\n        case CMD.C:\n          bbox.fromCubic(xi, yi, data[i++], data[i++], data[i++], data[i++], data[i], data[i + 1], min2, max2);\n          xi = data[i++];\n          yi = data[i++];\n          break;\n\n        case CMD.Q:\n          bbox.fromQuadratic(xi, yi, data[i++], data[i++], data[i], data[i + 1], min2, max2);\n          xi = data[i++];\n          yi = data[i++];\n          break;\n\n        case CMD.A:\n          // TODO Arc 判断的开销比较大\n          var cx = data[i++];\n          var cy = data[i++];\n          var rx = data[i++];\n          var ry = data[i++];\n          var startAngle = data[i++];\n          var endAngle = data[i++] + startAngle; // TODO Arc 旋转\n\n          var psi = data[i++];\n          var anticlockwise = 1 - data[i++];\n\n          if (i == 1) {\n            // 直接使用 arc 命令\n            // 第一个命令起点还未定义\n            x0 = mathCos(startAngle) * rx + cx;\n            y0 = mathSin(startAngle) * ry + cy;\n          }\n\n          bbox.fromArc(cx, cy, rx, ry, startAngle, endAngle, anticlockwise, min2, max2);\n          xi = mathCos(endAngle) * rx + cx;\n          yi = mathSin(endAngle) * ry + cy;\n          break;\n\n        case CMD.R:\n          x0 = xi = data[i++];\n          y0 = yi = data[i++];\n          var width = data[i++];\n          var height = data[i++]; // Use fromLine\n\n          bbox.fromLine(x0, y0, x0 + width, y0 + height, min2, max2);\n          break;\n\n        case CMD.Z:\n          xi = x0;\n          yi = y0;\n          break;\n      } // Union\n\n\n      vec2.min(min, min, min2);\n      vec2.max(max, max, max2);\n    } // No data\n\n\n    if (i === 0) {\n      min[0] = min[1] = max[0] = max[1] = 0;\n    }\n\n    return new BoundingRect(min[0], min[1], max[0] - min[0], max[1] - min[1]);\n  },\n\n  /**\n   * Rebuild path from current data\n   * Rebuild path will not consider javascript implemented line dash.\n   * @param {CanvasRenderingContext2D} ctx\n   */\n  rebuildPath: function (ctx) {\n    var d = this.data;\n    var x0, y0;\n    var xi, yi;\n    var x, y;\n    var ux = this._ux;\n    var uy = this._uy;\n    var len = this._len;\n\n    for (var i = 0; i < len;) {\n      var cmd = d[i++];\n\n      if (i == 1) {\n        // 如果第一个命令是 L, C, Q\n        // 则 previous point 同绘制命令的第一个 point\n        //\n        // 第一个命令为 Arc 的情况下会在后面特殊处理\n        xi = d[i];\n        yi = d[i + 1];\n        x0 = xi;\n        y0 = yi;\n      }\n\n      switch (cmd) {\n        case CMD.M:\n          x0 = xi = d[i++];\n          y0 = yi = d[i++];\n          ctx.moveTo(xi, yi);\n          break;\n\n        case CMD.L:\n          x = d[i++];\n          y = d[i++]; // Not draw too small seg between\n\n          if (mathAbs(x - xi) > ux || mathAbs(y - yi) > uy || i === len - 1) {\n            ctx.lineTo(x, y);\n            xi = x;\n            yi = y;\n          }\n\n          break;\n\n        case CMD.C:\n          ctx.bezierCurveTo(d[i++], d[i++], d[i++], d[i++], d[i++], d[i++]);\n          xi = d[i - 2];\n          yi = d[i - 1];\n          break;\n\n        case CMD.Q:\n          ctx.quadraticCurveTo(d[i++], d[i++], d[i++], d[i++]);\n          xi = d[i - 2];\n          yi = d[i - 1];\n          break;\n\n        case CMD.A:\n          var cx = d[i++];\n          var cy = d[i++];\n          var rx = d[i++];\n          var ry = d[i++];\n          var theta = d[i++];\n          var dTheta = d[i++];\n          var psi = d[i++];\n          var fs = d[i++];\n          var r = rx > ry ? rx : ry;\n          var scaleX = rx > ry ? 1 : rx / ry;\n          var scaleY = rx > ry ? ry / rx : 1;\n          var isEllipse = Math.abs(rx - ry) > 1e-3;\n          var endAngle = theta + dTheta;\n\n          if (isEllipse) {\n            ctx.translate(cx, cy);\n            ctx.rotate(psi);\n            ctx.scale(scaleX, scaleY);\n            ctx.arc(0, 0, r, theta, endAngle, 1 - fs);\n            ctx.scale(1 / scaleX, 1 / scaleY);\n            ctx.rotate(-psi);\n            ctx.translate(-cx, -cy);\n          } else {\n            ctx.arc(cx, cy, r, theta, endAngle, 1 - fs);\n          }\n\n          if (i == 1) {\n            // 直接使用 arc 命令\n            // 第一个命令起点还未定义\n            x0 = mathCos(theta) * rx + cx;\n            y0 = mathSin(theta) * ry + cy;\n          }\n\n          xi = mathCos(endAngle) * rx + cx;\n          yi = mathSin(endAngle) * ry + cy;\n          break;\n\n        case CMD.R:\n          x0 = xi = d[i];\n          y0 = yi = d[i + 1];\n          ctx.rect(d[i++], d[i++], d[i++], d[i++]);\n          break;\n\n        case CMD.Z:\n          ctx.closePath();\n          xi = x0;\n          yi = y0;\n      }\n    }\n  }\n};\nPathProxy.CMD = CMD;\nvar _default = PathProxy;\nmodule.exports = _default;","// Myers' Diff Algorithm\n// Modified from https://github.com/kpdecker/jsdiff/blob/master/src/diff/base.js\nfunction Diff() {}\n\nDiff.prototype = {\n  diff: function (oldArr, newArr, equals) {\n    if (!equals) {\n      equals = function (a, b) {\n        return a === b;\n      };\n    }\n\n    this.equals = equals;\n    var self = this;\n    oldArr = oldArr.slice();\n    newArr = newArr.slice(); // Allow subclasses to massage the input prior to running\n\n    var newLen = newArr.length;\n    var oldLen = oldArr.length;\n    var editLength = 1;\n    var maxEditLength = newLen + oldLen;\n    var bestPath = [{\n      newPos: -1,\n      components: []\n    }]; // Seed editLength = 0, i.e. the content starts with the same values\n\n    var oldPos = this.extractCommon(bestPath[0], newArr, oldArr, 0);\n\n    if (bestPath[0].newPos + 1 >= newLen && oldPos + 1 >= oldLen) {\n      var indices = [];\n\n      for (var i = 0; i < newArr.length; i++) {\n        indices.push(i);\n      } // Identity per the equality and tokenizer\n\n\n      return [{\n        indices: indices,\n        count: newArr.length\n      }];\n    } // Main worker method. checks all permutations of a given edit length for acceptance.\n\n\n    function execEditLength() {\n      for (var diagonalPath = -1 * editLength; diagonalPath <= editLength; diagonalPath += 2) {\n        var basePath;\n        var addPath = bestPath[diagonalPath - 1];\n        var removePath = bestPath[diagonalPath + 1];\n        var oldPos = (removePath ? removePath.newPos : 0) - diagonalPath;\n\n        if (addPath) {\n          // No one else is going to attempt to use this value, clear it\n          bestPath[diagonalPath - 1] = undefined;\n        }\n\n        var canAdd = addPath && addPath.newPos + 1 < newLen;\n        var canRemove = removePath && 0 <= oldPos && oldPos < oldLen;\n\n        if (!canAdd && !canRemove) {\n          // If this path is a terminal then prune\n          bestPath[diagonalPath] = undefined;\n          continue;\n        } // Select the diagonal that we want to branch from. We select the prior\n        // path whose position in the new string is the farthest from the origin\n        // and does not pass the bounds of the diff graph\n\n\n        if (!canAdd || canRemove && addPath.newPos < removePath.newPos) {\n          basePath = clonePath(removePath);\n          self.pushComponent(basePath.components, undefined, true);\n        } else {\n          basePath = addPath; // No need to clone, we've pulled it from the list\n\n          basePath.newPos++;\n          self.pushComponent(basePath.components, true, undefined);\n        }\n\n        oldPos = self.extractCommon(basePath, newArr, oldArr, diagonalPath); // If we have hit the end of both strings, then we are done\n\n        if (basePath.newPos + 1 >= newLen && oldPos + 1 >= oldLen) {\n          return buildValues(self, basePath.components, newArr, oldArr);\n        } else {\n          // Otherwise track this path as a potential candidate and continue.\n          bestPath[diagonalPath] = basePath;\n        }\n      }\n\n      editLength++;\n    }\n\n    while (editLength <= maxEditLength) {\n      var ret = execEditLength();\n\n      if (ret) {\n        return ret;\n      }\n    }\n  },\n  pushComponent: function (components, added, removed) {\n    var last = components[components.length - 1];\n\n    if (last && last.added === added && last.removed === removed) {\n      // We need to clone here as the component clone operation is just\n      // as shallow array clone\n      components[components.length - 1] = {\n        count: last.count + 1,\n        added: added,\n        removed: removed\n      };\n    } else {\n      components.push({\n        count: 1,\n        added: added,\n        removed: removed\n      });\n    }\n  },\n  extractCommon: function (basePath, newArr, oldArr, diagonalPath) {\n    var newLen = newArr.length;\n    var oldLen = oldArr.length;\n    var newPos = basePath.newPos;\n    var oldPos = newPos - diagonalPath;\n    var commonCount = 0;\n\n    while (newPos + 1 < newLen && oldPos + 1 < oldLen && this.equals(newArr[newPos + 1], oldArr[oldPos + 1])) {\n      newPos++;\n      oldPos++;\n      commonCount++;\n    }\n\n    if (commonCount) {\n      basePath.components.push({\n        count: commonCount\n      });\n    }\n\n    basePath.newPos = newPos;\n    return oldPos;\n  },\n  tokenize: function (value) {\n    return value.slice();\n  },\n  join: function (value) {\n    return value.slice();\n  }\n};\n\nfunction buildValues(diff, components, newArr, oldArr) {\n  var componentPos = 0;\n  var componentLen = components.length;\n  var newPos = 0;\n  var oldPos = 0;\n\n  for (; componentPos < componentLen; componentPos++) {\n    var component = components[componentPos];\n\n    if (!component.removed) {\n      var indices = [];\n\n      for (var i = newPos; i < newPos + component.count; i++) {\n        indices.push(i);\n      }\n\n      component.indices = indices;\n      newPos += component.count; // Common case\n\n      if (!component.added) {\n        oldPos += component.count;\n      }\n    } else {\n      var indices = [];\n\n      for (var i = oldPos; i < oldPos + component.count; i++) {\n        indices.push(i);\n      }\n\n      component.indices = indices;\n      oldPos += component.count;\n    }\n  }\n\n  return components;\n}\n\nfunction clonePath(path) {\n  return {\n    newPos: path.newPos,\n    components: path.components.slice(0)\n  };\n}\n\nvar arrayDiff = new Diff();\n\nfunction _default(oldArr, newArr, callback) {\n  return arrayDiff.diff(oldArr, newArr, callback);\n}\n\nmodule.exports = _default;","var vec2 = require(\"./vector\");\n\nvar curve = require(\"./curve\");\n\n/**\n * @author Yi Shen(https://github.com/pissang)\n */\nvar mathMin = Math.min;\nvar mathMax = Math.max;\nvar mathSin = Math.sin;\nvar mathCos = Math.cos;\nvar PI2 = Math.PI * 2;\nvar start = vec2.create();\nvar end = vec2.create();\nvar extremity = vec2.create();\n/**\n * 从顶点数组中计算出最小包围盒，写入`min`和`max`中\n * @module zrender/core/bbox\n * @param {Array<Object>} points 顶点数组\n * @param {number} min\n * @param {number} max\n */\n\nfunction fromPoints(points, min, max) {\n  if (points.length === 0) {\n    return;\n  }\n\n  var p = points[0];\n  var left = p[0];\n  var right = p[0];\n  var top = p[1];\n  var bottom = p[1];\n  var i;\n\n  for (i = 1; i < points.length; i++) {\n    p = points[i];\n    left = mathMin(left, p[0]);\n    right = mathMax(right, p[0]);\n    top = mathMin(top, p[1]);\n    bottom = mathMax(bottom, p[1]);\n  }\n\n  min[0] = left;\n  min[1] = top;\n  max[0] = right;\n  max[1] = bottom;\n}\n/**\n * @memberOf module:zrender/core/bbox\n * @param {number} x0\n * @param {number} y0\n * @param {number} x1\n * @param {number} y1\n * @param {Array.<number>} min\n * @param {Array.<number>} max\n */\n\n\nfunction fromLine(x0, y0, x1, y1, min, max) {\n  min[0] = mathMin(x0, x1);\n  min[1] = mathMin(y0, y1);\n  max[0] = mathMax(x0, x1);\n  max[1] = mathMax(y0, y1);\n}\n\nvar xDim = [];\nvar yDim = [];\n/**\n * 从三阶贝塞尔曲线(p0, p1, p2, p3)中计算出最小包围盒，写入`min`和`max`中\n * @memberOf module:zrender/core/bbox\n * @param {number} x0\n * @param {number} y0\n * @param {number} x1\n * @param {number} y1\n * @param {number} x2\n * @param {number} y2\n * @param {number} x3\n * @param {number} y3\n * @param {Array.<number>} min\n * @param {Array.<number>} max\n */\n\nfunction fromCubic(x0, y0, x1, y1, x2, y2, x3, y3, min, max) {\n  var cubicExtrema = curve.cubicExtrema;\n  var cubicAt = curve.cubicAt;\n  var i;\n  var n = cubicExtrema(x0, x1, x2, x3, xDim);\n  min[0] = Infinity;\n  min[1] = Infinity;\n  max[0] = -Infinity;\n  max[1] = -Infinity;\n\n  for (i = 0; i < n; i++) {\n    var x = cubicAt(x0, x1, x2, x3, xDim[i]);\n    min[0] = mathMin(x, min[0]);\n    max[0] = mathMax(x, max[0]);\n  }\n\n  n = cubicExtrema(y0, y1, y2, y3, yDim);\n\n  for (i = 0; i < n; i++) {\n    var y = cubicAt(y0, y1, y2, y3, yDim[i]);\n    min[1] = mathMin(y, min[1]);\n    max[1] = mathMax(y, max[1]);\n  }\n\n  min[0] = mathMin(x0, min[0]);\n  max[0] = mathMax(x0, max[0]);\n  min[0] = mathMin(x3, min[0]);\n  max[0] = mathMax(x3, max[0]);\n  min[1] = mathMin(y0, min[1]);\n  max[1] = mathMax(y0, max[1]);\n  min[1] = mathMin(y3, min[1]);\n  max[1] = mathMax(y3, max[1]);\n}\n/**\n * 从二阶贝塞尔曲线(p0, p1, p2)中计算出最小包围盒，写入`min`和`max`中\n * @memberOf module:zrender/core/bbox\n * @param {number} x0\n * @param {number} y0\n * @param {number} x1\n * @param {number} y1\n * @param {number} x2\n * @param {number} y2\n * @param {Array.<number>} min\n * @param {Array.<number>} max\n */\n\n\nfunction fromQuadratic(x0, y0, x1, y1, x2, y2, min, max) {\n  var quadraticExtremum = curve.quadraticExtremum;\n  var quadraticAt = curve.quadraticAt; // Find extremities, where derivative in x dim or y dim is zero\n\n  var tx = mathMax(mathMin(quadraticExtremum(x0, x1, x2), 1), 0);\n  var ty = mathMax(mathMin(quadraticExtremum(y0, y1, y2), 1), 0);\n  var x = quadraticAt(x0, x1, x2, tx);\n  var y = quadraticAt(y0, y1, y2, ty);\n  min[0] = mathMin(x0, x2, x);\n  min[1] = mathMin(y0, y2, y);\n  max[0] = mathMax(x0, x2, x);\n  max[1] = mathMax(y0, y2, y);\n}\n/**\n * 从圆弧中计算出最小包围盒，写入`min`和`max`中\n * @method\n * @memberOf module:zrender/core/bbox\n * @param {number} x\n * @param {number} y\n * @param {number} rx\n * @param {number} ry\n * @param {number} startAngle\n * @param {number} endAngle\n * @param {number} anticlockwise\n * @param {Array.<number>} min\n * @param {Array.<number>} max\n */\n\n\nfunction fromArc(x, y, rx, ry, startAngle, endAngle, anticlockwise, min, max) {\n  var vec2Min = vec2.min;\n  var vec2Max = vec2.max;\n  var diff = Math.abs(startAngle - endAngle);\n\n  if (diff % PI2 < 1e-4 && diff > 1e-4) {\n    // Is a circle\n    min[0] = x - rx;\n    min[1] = y - ry;\n    max[0] = x + rx;\n    max[1] = y + ry;\n    return;\n  }\n\n  start[0] = mathCos(startAngle) * rx + x;\n  start[1] = mathSin(startAngle) * ry + y;\n  end[0] = mathCos(endAngle) * rx + x;\n  end[1] = mathSin(endAngle) * ry + y;\n  vec2Min(min, start, end);\n  vec2Max(max, start, end); // Thresh to [0, Math.PI * 2]\n\n  startAngle = startAngle % PI2;\n\n  if (startAngle < 0) {\n    startAngle = startAngle + PI2;\n  }\n\n  endAngle = endAngle % PI2;\n\n  if (endAngle < 0) {\n    endAngle = endAngle + PI2;\n  }\n\n  if (startAngle > endAngle && !anticlockwise) {\n    endAngle += PI2;\n  } else if (startAngle < endAngle && anticlockwise) {\n    startAngle += PI2;\n  }\n\n  if (anticlockwise) {\n    var tmp = endAngle;\n    endAngle = startAngle;\n    startAngle = tmp;\n  } // var number = 0;\n  // var step = (anticlockwise ? -Math.PI : Math.PI) / 2;\n\n\n  for (var angle = 0; angle < endAngle; angle += Math.PI / 2) {\n    if (angle > startAngle) {\n      extremity[0] = mathCos(angle) * rx + x;\n      extremity[1] = mathSin(angle) * ry + y;\n      vec2Min(min, extremity, min);\n      vec2Max(max, extremity, max);\n    }\n  }\n}\n\nexports.fromPoints = fromPoints;\nexports.fromLine = fromLine;\nexports.fromCubic = fromCubic;\nexports.fromQuadratic = fromQuadratic;\nexports.fromArc = fromArc;","var _vector = require(\"./vector\");\n\nvar v2Create = _vector.create;\nvar v2DistSquare = _vector.distSquare;\n\n/**\n * 曲线辅助模块\n * @module zrender/core/curve\n * @author pissang(https://www.github.com/pissang)\n */\nvar mathPow = Math.pow;\nvar mathSqrt = Math.sqrt;\nvar EPSILON = 1e-8;\nvar EPSILON_NUMERIC = 1e-4;\nvar THREE_SQRT = mathSqrt(3);\nvar ONE_THIRD = 1 / 3; // 临时变量\n\nvar _v0 = v2Create();\n\nvar _v1 = v2Create();\n\nvar _v2 = v2Create();\n\nfunction isAroundZero(val) {\n  return val > -EPSILON && val < EPSILON;\n}\n\nfunction isNotAroundZero(val) {\n  return val > EPSILON || val < -EPSILON;\n}\n/**\n * 计算三次贝塞尔值\n * @memberOf module:zrender/core/curve\n * @param  {number} p0\n * @param  {number} p1\n * @param  {number} p2\n * @param  {number} p3\n * @param  {number} t\n * @return {number}\n */\n\n\nfunction cubicAt(p0, p1, p2, p3, t) {\n  var onet = 1 - t;\n  return onet * onet * (onet * p0 + 3 * t * p1) + t * t * (t * p3 + 3 * onet * p2);\n}\n/**\n * 计算三次贝塞尔导数值\n * @memberOf module:zrender/core/curve\n * @param  {number} p0\n * @param  {number} p1\n * @param  {number} p2\n * @param  {number} p3\n * @param  {number} t\n * @return {number}\n */\n\n\nfunction cubicDerivativeAt(p0, p1, p2, p3, t) {\n  var onet = 1 - t;\n  return 3 * (((p1 - p0) * onet + 2 * (p2 - p1) * t) * onet + (p3 - p2) * t * t);\n}\n/**\n * 计算三次贝塞尔方程根，使用盛金公式\n * @memberOf module:zrender/core/curve\n * @param  {number} p0\n * @param  {number} p1\n * @param  {number} p2\n * @param  {number} p3\n * @param  {number} val\n * @param  {Array.<number>} roots\n * @return {number} 有效根数目\n */\n\n\nfunction cubicRootAt(p0, p1, p2, p3, val, roots) {\n  // Evaluate roots of cubic functions\n  var a = p3 + 3 * (p1 - p2) - p0;\n  var b = 3 * (p2 - p1 * 2 + p0);\n  var c = 3 * (p1 - p0);\n  var d = p0 - val;\n  var A = b * b - 3 * a * c;\n  var B = b * c - 9 * a * d;\n  var C = c * c - 3 * b * d;\n  var n = 0;\n\n  if (isAroundZero(A) && isAroundZero(B)) {\n    if (isAroundZero(b)) {\n      roots[0] = 0;\n    } else {\n      var t1 = -c / b; //t1, t2, t3, b is not zero\n\n      if (t1 >= 0 && t1 <= 1) {\n        roots[n++] = t1;\n      }\n    }\n  } else {\n    var disc = B * B - 4 * A * C;\n\n    if (isAroundZero(disc)) {\n      var K = B / A;\n      var t1 = -b / a + K; // t1, a is not zero\n\n      var t2 = -K / 2; // t2, t3\n\n      if (t1 >= 0 && t1 <= 1) {\n        roots[n++] = t1;\n      }\n\n      if (t2 >= 0 && t2 <= 1) {\n        roots[n++] = t2;\n      }\n    } else if (disc > 0) {\n      var discSqrt = mathSqrt(disc);\n      var Y1 = A * b + 1.5 * a * (-B + discSqrt);\n      var Y2 = A * b + 1.5 * a * (-B - discSqrt);\n\n      if (Y1 < 0) {\n        Y1 = -mathPow(-Y1, ONE_THIRD);\n      } else {\n        Y1 = mathPow(Y1, ONE_THIRD);\n      }\n\n      if (Y2 < 0) {\n        Y2 = -mathPow(-Y2, ONE_THIRD);\n      } else {\n        Y2 = mathPow(Y2, ONE_THIRD);\n      }\n\n      var t1 = (-b - (Y1 + Y2)) / (3 * a);\n\n      if (t1 >= 0 && t1 <= 1) {\n        roots[n++] = t1;\n      }\n    } else {\n      var T = (2 * A * b - 3 * a * B) / (2 * mathSqrt(A * A * A));\n      var theta = Math.acos(T) / 3;\n      var ASqrt = mathSqrt(A);\n      var tmp = Math.cos(theta);\n      var t1 = (-b - 2 * ASqrt * tmp) / (3 * a);\n      var t2 = (-b + ASqrt * (tmp + THREE_SQRT * Math.sin(theta))) / (3 * a);\n      var t3 = (-b + ASqrt * (tmp - THREE_SQRT * Math.sin(theta))) / (3 * a);\n\n      if (t1 >= 0 && t1 <= 1) {\n        roots[n++] = t1;\n      }\n\n      if (t2 >= 0 && t2 <= 1) {\n        roots[n++] = t2;\n      }\n\n      if (t3 >= 0 && t3 <= 1) {\n        roots[n++] = t3;\n      }\n    }\n  }\n\n  return n;\n}\n/**\n * 计算三次贝塞尔方程极限值的位置\n * @memberOf module:zrender/core/curve\n * @param  {number} p0\n * @param  {number} p1\n * @param  {number} p2\n * @param  {number} p3\n * @param  {Array.<number>} extrema\n * @return {number} 有效数目\n */\n\n\nfunction cubicExtrema(p0, p1, p2, p3, extrema) {\n  var b = 6 * p2 - 12 * p1 + 6 * p0;\n  var a = 9 * p1 + 3 * p3 - 3 * p0 - 9 * p2;\n  var c = 3 * p1 - 3 * p0;\n  var n = 0;\n\n  if (isAroundZero(a)) {\n    if (isNotAroundZero(b)) {\n      var t1 = -c / b;\n\n      if (t1 >= 0 && t1 <= 1) {\n        extrema[n++] = t1;\n      }\n    }\n  } else {\n    var disc = b * b - 4 * a * c;\n\n    if (isAroundZero(disc)) {\n      extrema[0] = -b / (2 * a);\n    } else if (disc > 0) {\n      var discSqrt = mathSqrt(disc);\n      var t1 = (-b + discSqrt) / (2 * a);\n      var t2 = (-b - discSqrt) / (2 * a);\n\n      if (t1 >= 0 && t1 <= 1) {\n        extrema[n++] = t1;\n      }\n\n      if (t2 >= 0 && t2 <= 1) {\n        extrema[n++] = t2;\n      }\n    }\n  }\n\n  return n;\n}\n/**\n * 细分三次贝塞尔曲线\n * @memberOf module:zrender/core/curve\n * @param  {number} p0\n * @param  {number} p1\n * @param  {number} p2\n * @param  {number} p3\n * @param  {number} t\n * @param  {Array.<number>} out\n */\n\n\nfunction cubicSubdivide(p0, p1, p2, p3, t, out) {\n  var p01 = (p1 - p0) * t + p0;\n  var p12 = (p2 - p1) * t + p1;\n  var p23 = (p3 - p2) * t + p2;\n  var p012 = (p12 - p01) * t + p01;\n  var p123 = (p23 - p12) * t + p12;\n  var p0123 = (p123 - p012) * t + p012; // Seg0\n\n  out[0] = p0;\n  out[1] = p01;\n  out[2] = p012;\n  out[3] = p0123; // Seg1\n\n  out[4] = p0123;\n  out[5] = p123;\n  out[6] = p23;\n  out[7] = p3;\n}\n/**\n * 投射点到三次贝塞尔曲线上，返回投射距离。\n * 投射点有可能会有一个或者多个，这里只返回其中距离最短的一个。\n * @param {number} x0\n * @param {number} y0\n * @param {number} x1\n * @param {number} y1\n * @param {number} x2\n * @param {number} y2\n * @param {number} x3\n * @param {number} y3\n * @param {number} x\n * @param {number} y\n * @param {Array.<number>} [out] 投射点\n * @return {number}\n */\n\n\nfunction cubicProjectPoint(x0, y0, x1, y1, x2, y2, x3, y3, x, y, out) {\n  // http://pomax.github.io/bezierinfo/#projections\n  var t;\n  var interval = 0.005;\n  var d = Infinity;\n  var prev;\n  var next;\n  var d1;\n  var d2;\n  _v0[0] = x;\n  _v0[1] = y; // 先粗略估计一下可能的最小距离的 t 值\n  // PENDING\n\n  for (var _t = 0; _t < 1; _t += 0.05) {\n    _v1[0] = cubicAt(x0, x1, x2, x3, _t);\n    _v1[1] = cubicAt(y0, y1, y2, y3, _t);\n    d1 = v2DistSquare(_v0, _v1);\n\n    if (d1 < d) {\n      t = _t;\n      d = d1;\n    }\n  }\n\n  d = Infinity; // At most 32 iteration\n\n  for (var i = 0; i < 32; i++) {\n    if (interval < EPSILON_NUMERIC) {\n      break;\n    }\n\n    prev = t - interval;\n    next = t + interval; // t - interval\n\n    _v1[0] = cubicAt(x0, x1, x2, x3, prev);\n    _v1[1] = cubicAt(y0, y1, y2, y3, prev);\n    d1 = v2DistSquare(_v1, _v0);\n\n    if (prev >= 0 && d1 < d) {\n      t = prev;\n      d = d1;\n    } else {\n      // t + interval\n      _v2[0] = cubicAt(x0, x1, x2, x3, next);\n      _v2[1] = cubicAt(y0, y1, y2, y3, next);\n      d2 = v2DistSquare(_v2, _v0);\n\n      if (next <= 1 && d2 < d) {\n        t = next;\n        d = d2;\n      } else {\n        interval *= 0.5;\n      }\n    }\n  } // t\n\n\n  if (out) {\n    out[0] = cubicAt(x0, x1, x2, x3, t);\n    out[1] = cubicAt(y0, y1, y2, y3, t);\n  } // console.log(interval, i);\n\n\n  return mathSqrt(d);\n}\n/**\n * 计算二次方贝塞尔值\n * @param  {number} p0\n * @param  {number} p1\n * @param  {number} p2\n * @param  {number} t\n * @return {number}\n */\n\n\nfunction quadraticAt(p0, p1, p2, t) {\n  var onet = 1 - t;\n  return onet * (onet * p0 + 2 * t * p1) + t * t * p2;\n}\n/**\n * 计算二次方贝塞尔导数值\n * @param  {number} p0\n * @param  {number} p1\n * @param  {number} p2\n * @param  {number} t\n * @return {number}\n */\n\n\nfunction quadraticDerivativeAt(p0, p1, p2, t) {\n  return 2 * ((1 - t) * (p1 - p0) + t * (p2 - p1));\n}\n/**\n * 计算二次方贝塞尔方程根\n * @param  {number} p0\n * @param  {number} p1\n * @param  {number} p2\n * @param  {number} t\n * @param  {Array.<number>} roots\n * @return {number} 有效根数目\n */\n\n\nfunction quadraticRootAt(p0, p1, p2, val, roots) {\n  var a = p0 - 2 * p1 + p2;\n  var b = 2 * (p1 - p0);\n  var c = p0 - val;\n  var n = 0;\n\n  if (isAroundZero(a)) {\n    if (isNotAroundZero(b)) {\n      var t1 = -c / b;\n\n      if (t1 >= 0 && t1 <= 1) {\n        roots[n++] = t1;\n      }\n    }\n  } else {\n    var disc = b * b - 4 * a * c;\n\n    if (isAroundZero(disc)) {\n      var t1 = -b / (2 * a);\n\n      if (t1 >= 0 && t1 <= 1) {\n        roots[n++] = t1;\n      }\n    } else if (disc > 0) {\n      var discSqrt = mathSqrt(disc);\n      var t1 = (-b + discSqrt) / (2 * a);\n      var t2 = (-b - discSqrt) / (2 * a);\n\n      if (t1 >= 0 && t1 <= 1) {\n        roots[n++] = t1;\n      }\n\n      if (t2 >= 0 && t2 <= 1) {\n        roots[n++] = t2;\n      }\n    }\n  }\n\n  return n;\n}\n/**\n * 计算二次贝塞尔方程极限值\n * @memberOf module:zrender/core/curve\n * @param  {number} p0\n * @param  {number} p1\n * @param  {number} p2\n * @return {number}\n */\n\n\nfunction quadraticExtremum(p0, p1, p2) {\n  var divider = p0 + p2 - 2 * p1;\n\n  if (divider === 0) {\n    // p1 is center of p0 and p2\n    return 0.5;\n  } else {\n    return (p0 - p1) / divider;\n  }\n}\n/**\n * 细分二次贝塞尔曲线\n * @memberOf module:zrender/core/curve\n * @param  {number} p0\n * @param  {number} p1\n * @param  {number} p2\n * @param  {number} t\n * @param  {Array.<number>} out\n */\n\n\nfunction quadraticSubdivide(p0, p1, p2, t, out) {\n  var p01 = (p1 - p0) * t + p0;\n  var p12 = (p2 - p1) * t + p1;\n  var p012 = (p12 - p01) * t + p01; // Seg0\n\n  out[0] = p0;\n  out[1] = p01;\n  out[2] = p012; // Seg1\n\n  out[3] = p012;\n  out[4] = p12;\n  out[5] = p2;\n}\n/**\n * 投射点到二次贝塞尔曲线上，返回投射距离。\n * 投射点有可能会有一个或者多个，这里只返回其中距离最短的一个。\n * @param {number} x0\n * @param {number} y0\n * @param {number} x1\n * @param {number} y1\n * @param {number} x2\n * @param {number} y2\n * @param {number} x\n * @param {number} y\n * @param {Array.<number>} out 投射点\n * @return {number}\n */\n\n\nfunction quadraticProjectPoint(x0, y0, x1, y1, x2, y2, x, y, out) {\n  // http://pomax.github.io/bezierinfo/#projections\n  var t;\n  var interval = 0.005;\n  var d = Infinity;\n  _v0[0] = x;\n  _v0[1] = y; // 先粗略估计一下可能的最小距离的 t 值\n  // PENDING\n\n  for (var _t = 0; _t < 1; _t += 0.05) {\n    _v1[0] = quadraticAt(x0, x1, x2, _t);\n    _v1[1] = quadraticAt(y0, y1, y2, _t);\n    var d1 = v2DistSquare(_v0, _v1);\n\n    if (d1 < d) {\n      t = _t;\n      d = d1;\n    }\n  }\n\n  d = Infinity; // At most 32 iteration\n\n  for (var i = 0; i < 32; i++) {\n    if (interval < EPSILON_NUMERIC) {\n      break;\n    }\n\n    var prev = t - interval;\n    var next = t + interval; // t - interval\n\n    _v1[0] = quadraticAt(x0, x1, x2, prev);\n    _v1[1] = quadraticAt(y0, y1, y2, prev);\n    var d1 = v2DistSquare(_v1, _v0);\n\n    if (prev >= 0 && d1 < d) {\n      t = prev;\n      d = d1;\n    } else {\n      // t + interval\n      _v2[0] = quadraticAt(x0, x1, x2, next);\n      _v2[1] = quadraticAt(y0, y1, y2, next);\n      var d2 = v2DistSquare(_v2, _v0);\n\n      if (next <= 1 && d2 < d) {\n        t = next;\n        d = d2;\n      } else {\n        interval *= 0.5;\n      }\n    }\n  } // t\n\n\n  if (out) {\n    out[0] = quadraticAt(x0, x1, x2, t);\n    out[1] = quadraticAt(y0, y1, y2, t);\n  } // console.log(interval, i);\n\n\n  return mathSqrt(d);\n}\n\nexports.cubicAt = cubicAt;\nexports.cubicDerivativeAt = cubicDerivativeAt;\nexports.cubicRootAt = cubicRootAt;\nexports.cubicExtrema = cubicExtrema;\nexports.cubicSubdivide = cubicSubdivide;\nexports.cubicProjectPoint = cubicProjectPoint;\nexports.quadraticAt = quadraticAt;\nexports.quadraticDerivativeAt = quadraticDerivativeAt;\nexports.quadraticRootAt = quadraticRootAt;\nexports.quadraticExtremum = quadraticExtremum;\nexports.quadraticSubdivide = quadraticSubdivide;\nexports.quadraticProjectPoint = quadraticProjectPoint;","/**\n * echarts设备环境识别\n *\n * @desc echarts基于Canvas，纯Javascript图表库，提供直观，生动，可交互，可个性化定制的数据统计图表。\n * @author firede[firede@firede.us]\n * @desc thanks zepto.\n */\nvar env = {};\n\nif (typeof wx !== 'undefined') {\n  // In Weixin Application\n  env = {\n    browser: {},\n    os: {},\n    node: false,\n    wxa: true,\n    // Weixin Application\n    canvasSupported: true,\n    svgSupported: false,\n    touchEventsSupported: true\n  };\n} else if (typeof document === 'undefined' && typeof self !== 'undefined') {\n  // In worker\n  env = {\n    browser: {},\n    os: {},\n    node: false,\n    worker: true,\n    canvasSupported: true\n  };\n} else if (typeof navigator === 'undefined') {\n  // In node\n  env = {\n    browser: {},\n    os: {},\n    node: true,\n    worker: false,\n    // Assume canvas is supported\n    canvasSupported: true,\n    svgSupported: true\n  };\n} else {\n  env = detect(navigator.userAgent);\n}\n\nvar _default = env; // Zepto.js\n// (c) 2010-2013 Thomas Fuchs\n// Zepto.js may be freely distributed under the MIT license.\n\nfunction detect(ua) {\n  var os = {};\n  var browser = {}; // var webkit = ua.match(/Web[kK]it[\\/]{0,1}([\\d.]+)/);\n  // var android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/);\n  // var ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n  // var ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n  // var iphone = !ipad && ua.match(/(iPhone\\sOS)\\s([\\d_]+)/);\n  // var webos = ua.match(/(webOS|hpwOS)[\\s\\/]([\\d.]+)/);\n  // var touchpad = webos && ua.match(/TouchPad/);\n  // var kindle = ua.match(/Kindle\\/([\\d.]+)/);\n  // var silk = ua.match(/Silk\\/([\\d._]+)/);\n  // var blackberry = ua.match(/(BlackBerry).*Version\\/([\\d.]+)/);\n  // var bb10 = ua.match(/(BB10).*Version\\/([\\d.]+)/);\n  // var rimtabletos = ua.match(/(RIM\\sTablet\\sOS)\\s([\\d.]+)/);\n  // var playbook = ua.match(/PlayBook/);\n  // var chrome = ua.match(/Chrome\\/([\\d.]+)/) || ua.match(/CriOS\\/([\\d.]+)/);\n\n  var firefox = ua.match(/Firefox\\/([\\d.]+)/); // var safari = webkit && ua.match(/Mobile\\//) && !chrome;\n  // var webview = ua.match(/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/) && !chrome;\n\n  var ie = ua.match(/MSIE\\s([\\d.]+)/) // IE 11 Trident/7.0; rv:11.0\n  || ua.match(/Trident\\/.+?rv:(([\\d.]+))/);\n  var edge = ua.match(/Edge\\/([\\d.]+)/); // IE 12 and 12+\n\n  var weChat = /micromessenger/i.test(ua); // Todo: clean this up with a better OS/browser seperation:\n  // - discern (more) between multiple browsers on android\n  // - decide if kindle fire in silk mode is android or not\n  // - Firefox on Android doesn't specify the Android version\n  // - possibly devide in os, device and browser hashes\n  // if (browser.webkit = !!webkit) browser.version = webkit[1];\n  // if (android) os.android = true, os.version = android[2];\n  // if (iphone && !ipod) os.ios = os.iphone = true, os.version = iphone[2].replace(/_/g, '.');\n  // if (ipad) os.ios = os.ipad = true, os.version = ipad[2].replace(/_/g, '.');\n  // if (ipod) os.ios = os.ipod = true, os.version = ipod[3] ? ipod[3].replace(/_/g, '.') : null;\n  // if (webos) os.webos = true, os.version = webos[2];\n  // if (touchpad) os.touchpad = true;\n  // if (blackberry) os.blackberry = true, os.version = blackberry[2];\n  // if (bb10) os.bb10 = true, os.version = bb10[2];\n  // if (rimtabletos) os.rimtabletos = true, os.version = rimtabletos[2];\n  // if (playbook) browser.playbook = true;\n  // if (kindle) os.kindle = true, os.version = kindle[1];\n  // if (silk) browser.silk = true, browser.version = silk[1];\n  // if (!silk && os.android && ua.match(/Kindle Fire/)) browser.silk = true;\n  // if (chrome) browser.chrome = true, browser.version = chrome[1];\n\n  if (firefox) {\n    browser.firefox = true;\n    browser.version = firefox[1];\n  } // if (safari && (ua.match(/Safari/) || !!os.ios)) browser.safari = true;\n  // if (webview) browser.webview = true;\n\n\n  if (ie) {\n    browser.ie = true;\n    browser.version = ie[1];\n  }\n\n  if (edge) {\n    browser.edge = true;\n    browser.version = edge[1];\n  } // It is difficult to detect WeChat in Win Phone precisely, because ua can\n  // not be set on win phone. So we do not consider Win Phone.\n\n\n  if (weChat) {\n    browser.weChat = true;\n  } // os.tablet = !!(ipad || playbook || (android && !ua.match(/Mobile/)) ||\n  //     (firefox && ua.match(/Tablet/)) || (ie && !ua.match(/Phone/) && ua.match(/Touch/)));\n  // os.phone  = !!(!os.tablet && !os.ipod && (android || iphone || webos ||\n  //     (chrome && ua.match(/Android/)) || (chrome && ua.match(/CriOS\\/([\\d.]+)/)) ||\n  //     (firefox && ua.match(/Mobile/)) || (ie && ua.match(/Touch/))));\n\n\n  return {\n    browser: browser,\n    os: os,\n    node: false,\n    // 原生canvas支持，改极端点了\n    // canvasSupported : !(browser.ie && parseFloat(browser.version) < 9)\n    canvasSupported: !!document.createElement('canvas').getContext,\n    svgSupported: typeof SVGRect !== 'undefined',\n    // works on most browsers\n    // IE10/11 does not support touch event, and MS Edge supports them but not by\n    // default, so we dont check navigator.maxTouchPoints for them here.\n    touchEventsSupported: 'ontouchstart' in window && !browser.ie && !browser.edge,\n    // <http://caniuse.com/#search=pointer%20event>.\n    pointerEventsSupported: 'onpointerdown' in window // Firefox supports pointer but not by default, only MS browsers are reliable on pointer\n    // events currently. So we dont use that on other browsers unless tested sufficiently.\n    // Although IE 10 supports pointer event, it use old style and is different from the\n    // standard. So we exclude that. (IE 10 is hardly used on touch device)\n    && (browser.edge || browser.ie && browser.version >= 11)\n  };\n}\n\nmodule.exports = _default;","var Eventful = require(\"../mixin/Eventful\");\n\nexports.Dispatcher = Eventful;\n\nvar env = require(\"./env\");\n\n/**\n * 事件辅助类\n * @module zrender/core/event\n * @author Kener (@Kener-林峰, kener.linfeng@gmail.com)\n */\nvar isDomLevel2 = typeof window !== 'undefined' && !!window.addEventListener;\nvar MOUSE_EVENT_REG = /^(?:mouse|pointer|contextmenu|drag|drop)|click/;\n\nfunction getBoundingClientRect(el) {\n  // BlackBerry 5, iOS 3 (original iPhone) don't have getBoundingRect\n  return el.getBoundingClientRect ? el.getBoundingClientRect() : {\n    left: 0,\n    top: 0\n  };\n} // `calculate` is optional, default false\n\n\nfunction clientToLocal(el, e, out, calculate) {\n  out = out || {}; // According to the W3C Working Draft, offsetX and offsetY should be relative\n  // to the padding edge of the target element. The only browser using this convention\n  // is IE. Webkit uses the border edge, Opera uses the content edge, and FireFox does\n  // not support the properties.\n  // (see http://www.jacklmoore.com/notes/mouse-position/)\n  // In zr painter.dom, padding edge equals to border edge.\n  // FIXME\n  // When mousemove event triggered on ec tooltip, target is not zr painter.dom, and\n  // offsetX/Y is relative to e.target, where the calculation of zrX/Y via offsetX/Y\n  // is too complex. So css-transfrom dont support in this case temporarily.\n\n  if (calculate || !env.canvasSupported) {\n    defaultGetZrXY(el, e, out);\n  } // Caution: In FireFox, layerX/layerY Mouse position relative to the closest positioned\n  // ancestor element, so we should make sure el is positioned (e.g., not position:static).\n  // BTW1, Webkit don't return the same results as FF in non-simple cases (like add\n  // zoom-factor, overflow / opacity layers, transforms ...)\n  // BTW2, (ev.offsetY || ev.pageY - $(ev.target).offset().top) is not correct in preserve-3d.\n  // <https://bugs.jquery.com/ticket/8523#comment:14>\n  // BTW3, In ff, offsetX/offsetY is always 0.\n  else if (env.browser.firefox && e.layerX != null && e.layerX !== e.offsetX) {\n      out.zrX = e.layerX;\n      out.zrY = e.layerY;\n    } // For IE6+, chrome, safari, opera. (When will ff support offsetX?)\n    else if (e.offsetX != null) {\n        out.zrX = e.offsetX;\n        out.zrY = e.offsetY;\n      } // For some other device, e.g., IOS safari.\n      else {\n          defaultGetZrXY(el, e, out);\n        }\n\n  return out;\n}\n\nfunction defaultGetZrXY(el, e, out) {\n  // This well-known method below does not support css transform.\n  var box = getBoundingClientRect(el);\n  out.zrX = e.clientX - box.left;\n  out.zrY = e.clientY - box.top;\n}\n/**\n * 如果存在第三方嵌入的一些dom触发的事件，或touch事件，需要转换一下事件坐标.\n * `calculate` is optional, default false.\n */\n\n\nfunction normalizeEvent(el, e, calculate) {\n  e = e || window.event;\n\n  if (e.zrX != null) {\n    return e;\n  }\n\n  var eventType = e.type;\n  var isTouch = eventType && eventType.indexOf('touch') >= 0;\n\n  if (!isTouch) {\n    clientToLocal(el, e, e, calculate);\n    e.zrDelta = e.wheelDelta ? e.wheelDelta / 120 : -(e.detail || 0) / 3;\n  } else {\n    var touch = eventType != 'touchend' ? e.targetTouches[0] : e.changedTouches[0];\n    touch && clientToLocal(el, touch, e, calculate);\n  } // Add which for click: 1 === left; 2 === middle; 3 === right; otherwise: 0;\n  // See jQuery: https://github.com/jquery/jquery/blob/master/src/event.js\n  // If e.which has been defined, if may be readonly,\n  // see: https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/which\n\n\n  var button = e.button;\n\n  if (e.which == null && button !== undefined && MOUSE_EVENT_REG.test(e.type)) {\n    e.which = button & 1 ? 1 : button & 2 ? 3 : button & 4 ? 2 : 0;\n  }\n\n  return e;\n}\n\nfunction addEventListener(el, name, handler) {\n  if (isDomLevel2) {\n    el.addEventListener(name, handler);\n  } else {\n    el.attachEvent('on' + name, handler);\n  }\n}\n\nfunction removeEventListener(el, name, handler) {\n  if (isDomLevel2) {\n    el.removeEventListener(name, handler);\n  } else {\n    el.detachEvent('on' + name, handler);\n  }\n}\n/**\n * preventDefault and stopPropagation.\n * Notice: do not do that in zrender. Upper application\n * do that if necessary.\n *\n * @memberOf module:zrender/core/event\n * @method\n * @param {Event} e : event对象\n */\n\n\nvar stop = isDomLevel2 ? function (e) {\n  e.preventDefault();\n  e.stopPropagation();\n  e.cancelBubble = true;\n} : function (e) {\n  e.returnValue = false;\n  e.cancelBubble = true;\n};\n\nfunction notLeftMouse(e) {\n  // If e.which is undefined, considered as left mouse event.\n  return e.which > 1;\n} // 做向上兼容\n\n\nexports.clientToLocal = clientToLocal;\nexports.normalizeEvent = normalizeEvent;\nexports.addEventListener = addEventListener;\nexports.removeEventListener = removeEventListener;\nexports.stop = stop;\nexports.notLeftMouse = notLeftMouse;","/**\n * zrender: 生成唯一id\n *\n * @author errorrik (errorrik@gmail.com)\n */\nvar idStart = 0x0907;\n\nfunction _default() {\n  return idStart++;\n}\n\nmodule.exports = _default;","var _config = require(\"../config\");\n\nvar debugMode = _config.debugMode;\n\nvar log = function () {};\n\nif (debugMode === 1) {\n  log = function () {\n    for (var k in arguments) {\n      throw new Error(arguments[k]);\n    }\n  };\n} else if (debugMode > 1) {\n  log = function () {\n    for (var k in arguments) {\n      console.log(arguments[k]);\n    }\n  };\n}\n\nvar _default = log;\nmodule.exports = _default;","/**\n * 3x2矩阵操作类\n * @exports zrender/tool/matrix\n */\nvar ArrayCtor = typeof Float32Array === 'undefined' ? Array : Float32Array;\n/**\n * Create a identity matrix.\n * @return {Float32Array|Array.<number>}\n */\n\nfunction create() {\n  var out = new ArrayCtor(6);\n  identity(out);\n  return out;\n}\n/**\n * 设置矩阵为单位矩阵\n * @param {Float32Array|Array.<number>} out\n */\n\n\nfunction identity(out) {\n  out[0] = 1;\n  out[1] = 0;\n  out[2] = 0;\n  out[3] = 1;\n  out[4] = 0;\n  out[5] = 0;\n  return out;\n}\n/**\n * 复制矩阵\n * @param {Float32Array|Array.<number>} out\n * @param {Float32Array|Array.<number>} m\n */\n\n\nfunction copy(out, m) {\n  out[0] = m[0];\n  out[1] = m[1];\n  out[2] = m[2];\n  out[3] = m[3];\n  out[4] = m[4];\n  out[5] = m[5];\n  return out;\n}\n/**\n * 矩阵相乘\n * @param {Float32Array|Array.<number>} out\n * @param {Float32Array|Array.<number>} m1\n * @param {Float32Array|Array.<number>} m2\n */\n\n\nfunction mul(out, m1, m2) {\n  // Consider matrix.mul(m, m2, m);\n  // where out is the same as m2.\n  // So use temp variable to escape error.\n  var out0 = m1[0] * m2[0] + m1[2] * m2[1];\n  var out1 = m1[1] * m2[0] + m1[3] * m2[1];\n  var out2 = m1[0] * m2[2] + m1[2] * m2[3];\n  var out3 = m1[1] * m2[2] + m1[3] * m2[3];\n  var out4 = m1[0] * m2[4] + m1[2] * m2[5] + m1[4];\n  var out5 = m1[1] * m2[4] + m1[3] * m2[5] + m1[5];\n  out[0] = out0;\n  out[1] = out1;\n  out[2] = out2;\n  out[3] = out3;\n  out[4] = out4;\n  out[5] = out5;\n  return out;\n}\n/**\n * 平移变换\n * @param {Float32Array|Array.<number>} out\n * @param {Float32Array|Array.<number>} a\n * @param {Float32Array|Array.<number>} v\n */\n\n\nfunction translate(out, a, v) {\n  out[0] = a[0];\n  out[1] = a[1];\n  out[2] = a[2];\n  out[3] = a[3];\n  out[4] = a[4] + v[0];\n  out[5] = a[5] + v[1];\n  return out;\n}\n/**\n * 旋转变换\n * @param {Float32Array|Array.<number>} out\n * @param {Float32Array|Array.<number>} a\n * @param {number} rad\n */\n\n\nfunction rotate(out, a, rad) {\n  var aa = a[0];\n  var ac = a[2];\n  var atx = a[4];\n  var ab = a[1];\n  var ad = a[3];\n  var aty = a[5];\n  var st = Math.sin(rad);\n  var ct = Math.cos(rad);\n  out[0] = aa * ct + ab * st;\n  out[1] = -aa * st + ab * ct;\n  out[2] = ac * ct + ad * st;\n  out[3] = -ac * st + ct * ad;\n  out[4] = ct * atx + st * aty;\n  out[5] = ct * aty - st * atx;\n  return out;\n}\n/**\n * 缩放变换\n * @param {Float32Array|Array.<number>} out\n * @param {Float32Array|Array.<number>} a\n * @param {Float32Array|Array.<number>} v\n */\n\n\nfunction scale(out, a, v) {\n  var vx = v[0];\n  var vy = v[1];\n  out[0] = a[0] * vx;\n  out[1] = a[1] * vy;\n  out[2] = a[2] * vx;\n  out[3] = a[3] * vy;\n  out[4] = a[4] * vx;\n  out[5] = a[5] * vy;\n  return out;\n}\n/**\n * 求逆矩阵\n * @param {Float32Array|Array.<number>} out\n * @param {Float32Array|Array.<number>} a\n */\n\n\nfunction invert(out, a) {\n  var aa = a[0];\n  var ac = a[2];\n  var atx = a[4];\n  var ab = a[1];\n  var ad = a[3];\n  var aty = a[5];\n  var det = aa * ad - ab * ac;\n\n  if (!det) {\n    return null;\n  }\n\n  det = 1.0 / det;\n  out[0] = ad * det;\n  out[1] = -ab * det;\n  out[2] = -ac * det;\n  out[3] = aa * det;\n  out[4] = (ac * aty - ad * atx) * det;\n  out[5] = (ab * atx - aa * aty) * det;\n  return out;\n}\n/**\n * Clone a new matrix.\n * @param {Float32Array|Array.<number>} a\n */\n\n\nfunction clone(a) {\n  var b = create();\n  copy(b, a);\n  return b;\n}\n\nexports.create = create;\nexports.identity = identity;\nexports.copy = copy;\nexports.mul = mul;\nexports.translate = translate;\nexports.rotate = rotate;\nexports.scale = scale;\nexports.invert = invert;\nexports.clone = clone;","// https://github.com/mziccard/node-timsort\nvar DEFAULT_MIN_MERGE = 32;\nvar DEFAULT_MIN_GALLOPING = 7;\nvar DEFAULT_TMP_STORAGE_LENGTH = 256;\n\nfunction minRunLength(n) {\n  var r = 0;\n\n  while (n >= DEFAULT_MIN_MERGE) {\n    r |= n & 1;\n    n >>= 1;\n  }\n\n  return n + r;\n}\n\nfunction makeAscendingRun(array, lo, hi, compare) {\n  var runHi = lo + 1;\n\n  if (runHi === hi) {\n    return 1;\n  }\n\n  if (compare(array[runHi++], array[lo]) < 0) {\n    while (runHi < hi && compare(array[runHi], array[runHi - 1]) < 0) {\n      runHi++;\n    }\n\n    reverseRun(array, lo, runHi);\n  } else {\n    while (runHi < hi && compare(array[runHi], array[runHi - 1]) >= 0) {\n      runHi++;\n    }\n  }\n\n  return runHi - lo;\n}\n\nfunction reverseRun(array, lo, hi) {\n  hi--;\n\n  while (lo < hi) {\n    var t = array[lo];\n    array[lo++] = array[hi];\n    array[hi--] = t;\n  }\n}\n\nfunction binaryInsertionSort(array, lo, hi, start, compare) {\n  if (start === lo) {\n    start++;\n  }\n\n  for (; start < hi; start++) {\n    var pivot = array[start];\n    var left = lo;\n    var right = start;\n    var mid;\n\n    while (left < right) {\n      mid = left + right >>> 1;\n\n      if (compare(pivot, array[mid]) < 0) {\n        right = mid;\n      } else {\n        left = mid + 1;\n      }\n    }\n\n    var n = start - left;\n\n    switch (n) {\n      case 3:\n        array[left + 3] = array[left + 2];\n\n      case 2:\n        array[left + 2] = array[left + 1];\n\n      case 1:\n        array[left + 1] = array[left];\n        break;\n\n      default:\n        while (n > 0) {\n          array[left + n] = array[left + n - 1];\n          n--;\n        }\n\n    }\n\n    array[left] = pivot;\n  }\n}\n\nfunction gallopLeft(value, array, start, length, hint, compare) {\n  var lastOffset = 0;\n  var maxOffset = 0;\n  var offset = 1;\n\n  if (compare(value, array[start + hint]) > 0) {\n    maxOffset = length - hint;\n\n    while (offset < maxOffset && compare(value, array[start + hint + offset]) > 0) {\n      lastOffset = offset;\n      offset = (offset << 1) + 1;\n\n      if (offset <= 0) {\n        offset = maxOffset;\n      }\n    }\n\n    if (offset > maxOffset) {\n      offset = maxOffset;\n    }\n\n    lastOffset += hint;\n    offset += hint;\n  } else {\n    maxOffset = hint + 1;\n\n    while (offset < maxOffset && compare(value, array[start + hint - offset]) <= 0) {\n      lastOffset = offset;\n      offset = (offset << 1) + 1;\n\n      if (offset <= 0) {\n        offset = maxOffset;\n      }\n    }\n\n    if (offset > maxOffset) {\n      offset = maxOffset;\n    }\n\n    var tmp = lastOffset;\n    lastOffset = hint - offset;\n    offset = hint - tmp;\n  }\n\n  lastOffset++;\n\n  while (lastOffset < offset) {\n    var m = lastOffset + (offset - lastOffset >>> 1);\n\n    if (compare(value, array[start + m]) > 0) {\n      lastOffset = m + 1;\n    } else {\n      offset = m;\n    }\n  }\n\n  return offset;\n}\n\nfunction gallopRight(value, array, start, length, hint, compare) {\n  var lastOffset = 0;\n  var maxOffset = 0;\n  var offset = 1;\n\n  if (compare(value, array[start + hint]) < 0) {\n    maxOffset = hint + 1;\n\n    while (offset < maxOffset && compare(value, array[start + hint - offset]) < 0) {\n      lastOffset = offset;\n      offset = (offset << 1) + 1;\n\n      if (offset <= 0) {\n        offset = maxOffset;\n      }\n    }\n\n    if (offset > maxOffset) {\n      offset = maxOffset;\n    }\n\n    var tmp = lastOffset;\n    lastOffset = hint - offset;\n    offset = hint - tmp;\n  } else {\n    maxOffset = length - hint;\n\n    while (offset < maxOffset && compare(value, array[start + hint + offset]) >= 0) {\n      lastOffset = offset;\n      offset = (offset << 1) + 1;\n\n      if (offset <= 0) {\n        offset = maxOffset;\n      }\n    }\n\n    if (offset > maxOffset) {\n      offset = maxOffset;\n    }\n\n    lastOffset += hint;\n    offset += hint;\n  }\n\n  lastOffset++;\n\n  while (lastOffset < offset) {\n    var m = lastOffset + (offset - lastOffset >>> 1);\n\n    if (compare(value, array[start + m]) < 0) {\n      offset = m;\n    } else {\n      lastOffset = m + 1;\n    }\n  }\n\n  return offset;\n}\n\nfunction TimSort(array, compare) {\n  var minGallop = DEFAULT_MIN_GALLOPING;\n  var length = 0;\n  var tmpStorageLength = DEFAULT_TMP_STORAGE_LENGTH;\n  var stackLength = 0;\n  var runStart;\n  var runLength;\n  var stackSize = 0;\n  length = array.length;\n\n  if (length < 2 * DEFAULT_TMP_STORAGE_LENGTH) {\n    tmpStorageLength = length >>> 1;\n  }\n\n  var tmp = [];\n  stackLength = length < 120 ? 5 : length < 1542 ? 10 : length < 119151 ? 19 : 40;\n  runStart = [];\n  runLength = [];\n\n  function pushRun(_runStart, _runLength) {\n    runStart[stackSize] = _runStart;\n    runLength[stackSize] = _runLength;\n    stackSize += 1;\n  }\n\n  function mergeRuns() {\n    while (stackSize > 1) {\n      var n = stackSize - 2;\n\n      if (n >= 1 && runLength[n - 1] <= runLength[n] + runLength[n + 1] || n >= 2 && runLength[n - 2] <= runLength[n] + runLength[n - 1]) {\n        if (runLength[n - 1] < runLength[n + 1]) {\n          n--;\n        }\n      } else if (runLength[n] > runLength[n + 1]) {\n        break;\n      }\n\n      mergeAt(n);\n    }\n  }\n\n  function forceMergeRuns() {\n    while (stackSize > 1) {\n      var n = stackSize - 2;\n\n      if (n > 0 && runLength[n - 1] < runLength[n + 1]) {\n        n--;\n      }\n\n      mergeAt(n);\n    }\n  }\n\n  function mergeAt(i) {\n    var start1 = runStart[i];\n    var length1 = runLength[i];\n    var start2 = runStart[i + 1];\n    var length2 = runLength[i + 1];\n    runLength[i] = length1 + length2;\n\n    if (i === stackSize - 3) {\n      runStart[i + 1] = runStart[i + 2];\n      runLength[i + 1] = runLength[i + 2];\n    }\n\n    stackSize--;\n    var k = gallopRight(array[start2], array, start1, length1, 0, compare);\n    start1 += k;\n    length1 -= k;\n\n    if (length1 === 0) {\n      return;\n    }\n\n    length2 = gallopLeft(array[start1 + length1 - 1], array, start2, length2, length2 - 1, compare);\n\n    if (length2 === 0) {\n      return;\n    }\n\n    if (length1 <= length2) {\n      mergeLow(start1, length1, start2, length2);\n    } else {\n      mergeHigh(start1, length1, start2, length2);\n    }\n  }\n\n  function mergeLow(start1, length1, start2, length2) {\n    var i = 0;\n\n    for (i = 0; i < length1; i++) {\n      tmp[i] = array[start1 + i];\n    }\n\n    var cursor1 = 0;\n    var cursor2 = start2;\n    var dest = start1;\n    array[dest++] = array[cursor2++];\n\n    if (--length2 === 0) {\n      for (i = 0; i < length1; i++) {\n        array[dest + i] = tmp[cursor1 + i];\n      }\n\n      return;\n    }\n\n    if (length1 === 1) {\n      for (i = 0; i < length2; i++) {\n        array[dest + i] = array[cursor2 + i];\n      }\n\n      array[dest + length2] = tmp[cursor1];\n      return;\n    }\n\n    var _minGallop = minGallop;\n    var count1, count2, exit;\n\n    while (1) {\n      count1 = 0;\n      count2 = 0;\n      exit = false;\n\n      do {\n        if (compare(array[cursor2], tmp[cursor1]) < 0) {\n          array[dest++] = array[cursor2++];\n          count2++;\n          count1 = 0;\n\n          if (--length2 === 0) {\n            exit = true;\n            break;\n          }\n        } else {\n          array[dest++] = tmp[cursor1++];\n          count1++;\n          count2 = 0;\n\n          if (--length1 === 1) {\n            exit = true;\n            break;\n          }\n        }\n      } while ((count1 | count2) < _minGallop);\n\n      if (exit) {\n        break;\n      }\n\n      do {\n        count1 = gallopRight(array[cursor2], tmp, cursor1, length1, 0, compare);\n\n        if (count1 !== 0) {\n          for (i = 0; i < count1; i++) {\n            array[dest + i] = tmp[cursor1 + i];\n          }\n\n          dest += count1;\n          cursor1 += count1;\n          length1 -= count1;\n\n          if (length1 <= 1) {\n            exit = true;\n            break;\n          }\n        }\n\n        array[dest++] = array[cursor2++];\n\n        if (--length2 === 0) {\n          exit = true;\n          break;\n        }\n\n        count2 = gallopLeft(tmp[cursor1], array, cursor2, length2, 0, compare);\n\n        if (count2 !== 0) {\n          for (i = 0; i < count2; i++) {\n            array[dest + i] = array[cursor2 + i];\n          }\n\n          dest += count2;\n          cursor2 += count2;\n          length2 -= count2;\n\n          if (length2 === 0) {\n            exit = true;\n            break;\n          }\n        }\n\n        array[dest++] = tmp[cursor1++];\n\n        if (--length1 === 1) {\n          exit = true;\n          break;\n        }\n\n        _minGallop--;\n      } while (count1 >= DEFAULT_MIN_GALLOPING || count2 >= DEFAULT_MIN_GALLOPING);\n\n      if (exit) {\n        break;\n      }\n\n      if (_minGallop < 0) {\n        _minGallop = 0;\n      }\n\n      _minGallop += 2;\n    }\n\n    minGallop = _minGallop;\n    minGallop < 1 && (minGallop = 1);\n\n    if (length1 === 1) {\n      for (i = 0; i < length2; i++) {\n        array[dest + i] = array[cursor2 + i];\n      }\n\n      array[dest + length2] = tmp[cursor1];\n    } else if (length1 === 0) {\n      throw new Error(); // throw new Error('mergeLow preconditions were not respected');\n    } else {\n      for (i = 0; i < length1; i++) {\n        array[dest + i] = tmp[cursor1 + i];\n      }\n    }\n  }\n\n  function mergeHigh(start1, length1, start2, length2) {\n    var i = 0;\n\n    for (i = 0; i < length2; i++) {\n      tmp[i] = array[start2 + i];\n    }\n\n    var cursor1 = start1 + length1 - 1;\n    var cursor2 = length2 - 1;\n    var dest = start2 + length2 - 1;\n    var customCursor = 0;\n    var customDest = 0;\n    array[dest--] = array[cursor1--];\n\n    if (--length1 === 0) {\n      customCursor = dest - (length2 - 1);\n\n      for (i = 0; i < length2; i++) {\n        array[customCursor + i] = tmp[i];\n      }\n\n      return;\n    }\n\n    if (length2 === 1) {\n      dest -= length1;\n      cursor1 -= length1;\n      customDest = dest + 1;\n      customCursor = cursor1 + 1;\n\n      for (i = length1 - 1; i >= 0; i--) {\n        array[customDest + i] = array[customCursor + i];\n      }\n\n      array[dest] = tmp[cursor2];\n      return;\n    }\n\n    var _minGallop = minGallop;\n\n    while (true) {\n      var count1 = 0;\n      var count2 = 0;\n      var exit = false;\n\n      do {\n        if (compare(tmp[cursor2], array[cursor1]) < 0) {\n          array[dest--] = array[cursor1--];\n          count1++;\n          count2 = 0;\n\n          if (--length1 === 0) {\n            exit = true;\n            break;\n          }\n        } else {\n          array[dest--] = tmp[cursor2--];\n          count2++;\n          count1 = 0;\n\n          if (--length2 === 1) {\n            exit = true;\n            break;\n          }\n        }\n      } while ((count1 | count2) < _minGallop);\n\n      if (exit) {\n        break;\n      }\n\n      do {\n        count1 = length1 - gallopRight(tmp[cursor2], array, start1, length1, length1 - 1, compare);\n\n        if (count1 !== 0) {\n          dest -= count1;\n          cursor1 -= count1;\n          length1 -= count1;\n          customDest = dest + 1;\n          customCursor = cursor1 + 1;\n\n          for (i = count1 - 1; i >= 0; i--) {\n            array[customDest + i] = array[customCursor + i];\n          }\n\n          if (length1 === 0) {\n            exit = true;\n            break;\n          }\n        }\n\n        array[dest--] = tmp[cursor2--];\n\n        if (--length2 === 1) {\n          exit = true;\n          break;\n        }\n\n        count2 = length2 - gallopLeft(array[cursor1], tmp, 0, length2, length2 - 1, compare);\n\n        if (count2 !== 0) {\n          dest -= count2;\n          cursor2 -= count2;\n          length2 -= count2;\n          customDest = dest + 1;\n          customCursor = cursor2 + 1;\n\n          for (i = 0; i < count2; i++) {\n            array[customDest + i] = tmp[customCursor + i];\n          }\n\n          if (length2 <= 1) {\n            exit = true;\n            break;\n          }\n        }\n\n        array[dest--] = array[cursor1--];\n\n        if (--length1 === 0) {\n          exit = true;\n          break;\n        }\n\n        _minGallop--;\n      } while (count1 >= DEFAULT_MIN_GALLOPING || count2 >= DEFAULT_MIN_GALLOPING);\n\n      if (exit) {\n        break;\n      }\n\n      if (_minGallop < 0) {\n        _minGallop = 0;\n      }\n\n      _minGallop += 2;\n    }\n\n    minGallop = _minGallop;\n\n    if (minGallop < 1) {\n      minGallop = 1;\n    }\n\n    if (length2 === 1) {\n      dest -= length1;\n      cursor1 -= length1;\n      customDest = dest + 1;\n      customCursor = cursor1 + 1;\n\n      for (i = length1 - 1; i >= 0; i--) {\n        array[customDest + i] = array[customCursor + i];\n      }\n\n      array[dest] = tmp[cursor2];\n    } else if (length2 === 0) {\n      throw new Error(); // throw new Error('mergeHigh preconditions were not respected');\n    } else {\n      customCursor = dest - (length2 - 1);\n\n      for (i = 0; i < length2; i++) {\n        array[customCursor + i] = tmp[i];\n      }\n    }\n  }\n\n  this.mergeRuns = mergeRuns;\n  this.forceMergeRuns = forceMergeRuns;\n  this.pushRun = pushRun;\n}\n\nfunction sort(array, compare, lo, hi) {\n  if (!lo) {\n    lo = 0;\n  }\n\n  if (!hi) {\n    hi = array.length;\n  }\n\n  var remaining = hi - lo;\n\n  if (remaining < 2) {\n    return;\n  }\n\n  var runLength = 0;\n\n  if (remaining < DEFAULT_MIN_MERGE) {\n    runLength = makeAscendingRun(array, lo, hi, compare);\n    binaryInsertionSort(array, lo, hi, lo + runLength, compare);\n    return;\n  }\n\n  var ts = new TimSort(array, compare);\n  var minRun = minRunLength(remaining);\n\n  do {\n    runLength = makeAscendingRun(array, lo, hi, compare);\n\n    if (runLength < minRun) {\n      var force = remaining;\n\n      if (force > minRun) {\n        force = minRun;\n      }\n\n      binaryInsertionSort(array, lo, lo + force, lo + runLength, compare);\n      runLength = force;\n    }\n\n    ts.pushRun(lo, runLength);\n    ts.mergeRuns();\n    remaining -= runLength;\n    lo += runLength;\n  } while (remaining !== 0);\n\n  ts.forceMergeRuns();\n}\n\nmodule.exports = sort;","/**\n * @module zrender/core/util\n */\n// 用于处理merge时无法遍历Date等对象的问题\nvar BUILTIN_OBJECT = {\n  '[object Function]': 1,\n  '[object RegExp]': 1,\n  '[object Date]': 1,\n  '[object Error]': 1,\n  '[object CanvasGradient]': 1,\n  '[object CanvasPattern]': 1,\n  // For node-canvas\n  '[object Image]': 1,\n  '[object Canvas]': 1\n};\nvar TYPED_ARRAY = {\n  '[object Int8Array]': 1,\n  '[object Uint8Array]': 1,\n  '[object Uint8ClampedArray]': 1,\n  '[object Int16Array]': 1,\n  '[object Uint16Array]': 1,\n  '[object Int32Array]': 1,\n  '[object Uint32Array]': 1,\n  '[object Float32Array]': 1,\n  '[object Float64Array]': 1\n};\nvar objToString = Object.prototype.toString;\nvar arrayProto = Array.prototype;\nvar nativeForEach = arrayProto.forEach;\nvar nativeFilter = arrayProto.filter;\nvar nativeSlice = arrayProto.slice;\nvar nativeMap = arrayProto.map;\nvar nativeReduce = arrayProto.reduce; // Avoid assign to an exported variable, for transforming to cjs.\n\nvar methods = {};\n\nfunction $override(name, fn) {\n  // Clear ctx instance for different environment\n  if (name === 'createCanvas') {\n    _ctx = null;\n  }\n\n  methods[name] = fn;\n}\n/**\n * Those data types can be cloned:\n *     Plain object, Array, TypedArray, number, string, null, undefined.\n * Those data types will be assgined using the orginal data:\n *     BUILTIN_OBJECT\n * Instance of user defined class will be cloned to a plain object, without\n * properties in prototype.\n * Other data types is not supported (not sure what will happen).\n *\n * Caution: do not support clone Date, for performance consideration.\n * (There might be a large number of date in `series.data`).\n * So date should not be modified in and out of echarts.\n *\n * @param {*} source\n * @return {*} new\n */\n\n\nfunction clone(source) {\n  if (source == null || typeof source != 'object') {\n    return source;\n  }\n\n  var result = source;\n  var typeStr = objToString.call(source);\n\n  if (typeStr === '[object Array]') {\n    if (!isPrimitive(source)) {\n      result = [];\n\n      for (var i = 0, len = source.length; i < len; i++) {\n        result[i] = clone(source[i]);\n      }\n    }\n  } else if (TYPED_ARRAY[typeStr]) {\n    if (!isPrimitive(source)) {\n      var Ctor = source.constructor;\n\n      if (source.constructor.from) {\n        result = Ctor.from(source);\n      } else {\n        result = new Ctor(source.length);\n\n        for (var i = 0, len = source.length; i < len; i++) {\n          result[i] = clone(source[i]);\n        }\n      }\n    }\n  } else if (!BUILTIN_OBJECT[typeStr] && !isPrimitive(source) && !isDom(source)) {\n    result = {};\n\n    for (var key in source) {\n      if (source.hasOwnProperty(key)) {\n        result[key] = clone(source[key]);\n      }\n    }\n  }\n\n  return result;\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {*} target\n * @param {*} source\n * @param {boolean} [overwrite=false]\n */\n\n\nfunction merge(target, source, overwrite) {\n  // We should escapse that source is string\n  // and enter for ... in ...\n  if (!isObject(source) || !isObject(target)) {\n    return overwrite ? clone(source) : target;\n  }\n\n  for (var key in source) {\n    if (source.hasOwnProperty(key)) {\n      var targetProp = target[key];\n      var sourceProp = source[key];\n\n      if (isObject(sourceProp) && isObject(targetProp) && !isArray(sourceProp) && !isArray(targetProp) && !isDom(sourceProp) && !isDom(targetProp) && !isBuiltInObject(sourceProp) && !isBuiltInObject(targetProp) && !isPrimitive(sourceProp) && !isPrimitive(targetProp)) {\n        // 如果需要递归覆盖，就递归调用merge\n        merge(targetProp, sourceProp, overwrite);\n      } else if (overwrite || !(key in target)) {\n        // 否则只处理overwrite为true，或者在目标对象中没有此属性的情况\n        // NOTE，在 target[key] 不存在的时候也是直接覆盖\n        target[key] = clone(source[key], true);\n      }\n    }\n  }\n\n  return target;\n}\n/**\n * @param {Array} targetAndSources The first item is target, and the rests are source.\n * @param {boolean} [overwrite=false]\n * @return {*} target\n */\n\n\nfunction mergeAll(targetAndSources, overwrite) {\n  var result = targetAndSources[0];\n\n  for (var i = 1, len = targetAndSources.length; i < len; i++) {\n    result = merge(result, targetAndSources[i], overwrite);\n  }\n\n  return result;\n}\n/**\n * @param {*} target\n * @param {*} source\n * @memberOf module:zrender/core/util\n */\n\n\nfunction extend(target, source) {\n  for (var key in source) {\n    if (source.hasOwnProperty(key)) {\n      target[key] = source[key];\n    }\n  }\n\n  return target;\n}\n/**\n * @param {*} target\n * @param {*} source\n * @param {boolean} [overlay=false]\n * @memberOf module:zrender/core/util\n */\n\n\nfunction defaults(target, source, overlay) {\n  for (var key in source) {\n    if (source.hasOwnProperty(key) && (overlay ? source[key] != null : target[key] == null)) {\n      target[key] = source[key];\n    }\n  }\n\n  return target;\n}\n\nvar createCanvas = function () {\n  return methods.createCanvas();\n};\n\nmethods.createCanvas = function () {\n  return document.createElement('canvas');\n}; // FIXME\n\n\nvar _ctx;\n\nfunction getContext() {\n  if (!_ctx) {\n    // Use util.createCanvas instead of createCanvas\n    // because createCanvas may be overwritten in different environment\n    _ctx = createCanvas().getContext('2d');\n  }\n\n  return _ctx;\n}\n/**\n * 查询数组中元素的index\n * @memberOf module:zrender/core/util\n */\n\n\nfunction indexOf(array, value) {\n  if (array) {\n    if (array.indexOf) {\n      return array.indexOf(value);\n    }\n\n    for (var i = 0, len = array.length; i < len; i++) {\n      if (array[i] === value) {\n        return i;\n      }\n    }\n  }\n\n  return -1;\n}\n/**\n * 构造类继承关系\n *\n * @memberOf module:zrender/core/util\n * @param {Function} clazz 源类\n * @param {Function} baseClazz 基类\n */\n\n\nfunction inherits(clazz, baseClazz) {\n  var clazzPrototype = clazz.prototype;\n\n  function F() {}\n\n  F.prototype = baseClazz.prototype;\n  clazz.prototype = new F();\n\n  for (var prop in clazzPrototype) {\n    clazz.prototype[prop] = clazzPrototype[prop];\n  }\n\n  clazz.prototype.constructor = clazz;\n  clazz.superClass = baseClazz;\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {Object|Function} target\n * @param {Object|Function} sorce\n * @param {boolean} overlay\n */\n\n\nfunction mixin(target, source, overlay) {\n  target = 'prototype' in target ? target.prototype : target;\n  source = 'prototype' in source ? source.prototype : source;\n  defaults(target, source, overlay);\n}\n/**\n * Consider typed array.\n * @param {Array|TypedArray} data\n */\n\n\nfunction isArrayLike(data) {\n  if (!data) {\n    return;\n  }\n\n  if (typeof data == 'string') {\n    return false;\n  }\n\n  return typeof data.length == 'number';\n}\n/**\n * 数组或对象遍历\n * @memberOf module:zrender/core/util\n * @param {Object|Array} obj\n * @param {Function} cb\n * @param {*} [context]\n */\n\n\nfunction each(obj, cb, context) {\n  if (!(obj && cb)) {\n    return;\n  }\n\n  if (obj.forEach && obj.forEach === nativeForEach) {\n    obj.forEach(cb, context);\n  } else if (obj.length === +obj.length) {\n    for (var i = 0, len = obj.length; i < len; i++) {\n      cb.call(context, obj[i], i, obj);\n    }\n  } else {\n    for (var key in obj) {\n      if (obj.hasOwnProperty(key)) {\n        cb.call(context, obj[key], key, obj);\n      }\n    }\n  }\n}\n/**\n * 数组映射\n * @memberOf module:zrender/core/util\n * @param {Array} obj\n * @param {Function} cb\n * @param {*} [context]\n * @return {Array}\n */\n\n\nfunction map(obj, cb, context) {\n  if (!(obj && cb)) {\n    return;\n  }\n\n  if (obj.map && obj.map === nativeMap) {\n    return obj.map(cb, context);\n  } else {\n    var result = [];\n\n    for (var i = 0, len = obj.length; i < len; i++) {\n      result.push(cb.call(context, obj[i], i, obj));\n    }\n\n    return result;\n  }\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {Array} obj\n * @param {Function} cb\n * @param {Object} [memo]\n * @param {*} [context]\n * @return {Array}\n */\n\n\nfunction reduce(obj, cb, memo, context) {\n  if (!(obj && cb)) {\n    return;\n  }\n\n  if (obj.reduce && obj.reduce === nativeReduce) {\n    return obj.reduce(cb, memo, context);\n  } else {\n    for (var i = 0, len = obj.length; i < len; i++) {\n      memo = cb.call(context, memo, obj[i], i, obj);\n    }\n\n    return memo;\n  }\n}\n/**\n * 数组过滤\n * @memberOf module:zrender/core/util\n * @param {Array} obj\n * @param {Function} cb\n * @param {*} [context]\n * @return {Array}\n */\n\n\nfunction filter(obj, cb, context) {\n  if (!(obj && cb)) {\n    return;\n  }\n\n  if (obj.filter && obj.filter === nativeFilter) {\n    return obj.filter(cb, context);\n  } else {\n    var result = [];\n\n    for (var i = 0, len = obj.length; i < len; i++) {\n      if (cb.call(context, obj[i], i, obj)) {\n        result.push(obj[i]);\n      }\n    }\n\n    return result;\n  }\n}\n/**\n * 数组项查找\n * @memberOf module:zrender/core/util\n * @param {Array} obj\n * @param {Function} cb\n * @param {*} [context]\n * @return {*}\n */\n\n\nfunction find(obj, cb, context) {\n  if (!(obj && cb)) {\n    return;\n  }\n\n  for (var i = 0, len = obj.length; i < len; i++) {\n    if (cb.call(context, obj[i], i, obj)) {\n      return obj[i];\n    }\n  }\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {Function} func\n * @param {*} context\n * @return {Function}\n */\n\n\nfunction bind(func, context) {\n  var args = nativeSlice.call(arguments, 2);\n  return function () {\n    return func.apply(context, args.concat(nativeSlice.call(arguments)));\n  };\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {Function} func\n * @return {Function}\n */\n\n\nfunction curry(func) {\n  var args = nativeSlice.call(arguments, 1);\n  return function () {\n    return func.apply(this, args.concat(nativeSlice.call(arguments)));\n  };\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {*} value\n * @return {boolean}\n */\n\n\nfunction isArray(value) {\n  return objToString.call(value) === '[object Array]';\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {*} value\n * @return {boolean}\n */\n\n\nfunction isFunction(value) {\n  return typeof value === 'function';\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {*} value\n * @return {boolean}\n */\n\n\nfunction isString(value) {\n  return objToString.call(value) === '[object String]';\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {*} value\n * @return {boolean}\n */\n\n\nfunction isObject(value) {\n  // Avoid a V8 JIT bug in Chrome 19-20.\n  // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.\n  var type = typeof value;\n  return type === 'function' || !!value && type == 'object';\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {*} value\n * @return {boolean}\n */\n\n\nfunction isBuiltInObject(value) {\n  return !!BUILTIN_OBJECT[objToString.call(value)];\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {*} value\n * @return {boolean}\n */\n\n\nfunction isTypedArray(value) {\n  return !!TYPED_ARRAY[objToString.call(value)];\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {*} value\n * @return {boolean}\n */\n\n\nfunction isDom(value) {\n  return typeof value === 'object' && typeof value.nodeType === 'number' && typeof value.ownerDocument === 'object';\n}\n/**\n * Whether is exactly NaN. Notice isNaN('a') returns true.\n * @param {*} value\n * @return {boolean}\n */\n\n\nfunction eqNaN(value) {\n  return value !== value;\n}\n/**\n * If value1 is not null, then return value1, otherwise judget rest of values.\n * Low performance.\n * @memberOf module:zrender/core/util\n * @return {*} Final value\n */\n\n\nfunction retrieve(values) {\n  for (var i = 0, len = arguments.length; i < len; i++) {\n    if (arguments[i] != null) {\n      return arguments[i];\n    }\n  }\n}\n\nfunction retrieve2(value0, value1) {\n  return value0 != null ? value0 : value1;\n}\n\nfunction retrieve3(value0, value1, value2) {\n  return value0 != null ? value0 : value1 != null ? value1 : value2;\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {Array} arr\n * @param {number} startIndex\n * @param {number} endIndex\n * @return {Array}\n */\n\n\nfunction slice() {\n  return Function.call.apply(nativeSlice, arguments);\n}\n/**\n * Normalize css liked array configuration\n * e.g.\n *  3 => [3, 3, 3, 3]\n *  [4, 2] => [4, 2, 4, 2]\n *  [4, 3, 2] => [4, 3, 2, 3]\n * @param {number|Array.<number>} val\n * @return {Array.<number>}\n */\n\n\nfunction normalizeCssArray(val) {\n  if (typeof val === 'number') {\n    return [val, val, val, val];\n  }\n\n  var len = val.length;\n\n  if (len === 2) {\n    // vertical | horizontal\n    return [val[0], val[1], val[0], val[1]];\n  } else if (len === 3) {\n    // top | horizontal | bottom\n    return [val[0], val[1], val[2], val[1]];\n  }\n\n  return val;\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {boolean} condition\n * @param {string} message\n */\n\n\nfunction assert(condition, message) {\n  if (!condition) {\n    throw new Error(message);\n  }\n}\n/**\n * @memberOf module:zrender/core/util\n * @param {string} str string to be trimed\n * @return {string} trimed string\n */\n\n\nfunction trim(str) {\n  if (str == null) {\n    return null;\n  } else if (typeof str.trim === 'function') {\n    return str.trim();\n  } else {\n    return str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n  }\n}\n\nvar primitiveKey = '__ec_primitive__';\n/**\n * Set an object as primitive to be ignored traversing children in clone or merge\n */\n\nfunction setAsPrimitive(obj) {\n  obj[primitiveKey] = true;\n}\n\nfunction isPrimitive(obj) {\n  return obj[primitiveKey];\n}\n/**\n * @constructor\n * @param {Object} obj Only apply `ownProperty`.\n */\n\n\nfunction HashMap(obj) {\n  var isArr = isArray(obj);\n  var thisMap = this;\n  obj instanceof HashMap ? obj.each(visit) : obj && each(obj, visit);\n\n  function visit(value, key) {\n    isArr ? thisMap.set(value, key) : thisMap.set(key, value);\n  }\n} // Add prefix to avoid conflict with Object.prototype.\n\n\nHashMap.prototype = {\n  constructor: HashMap,\n  // Do not provide `has` method to avoid defining what is `has`.\n  // (We usually treat `null` and `undefined` as the same, different\n  // from ES6 Map).\n  get: function (key) {\n    return this.hasOwnProperty(key) ? this[key] : null;\n  },\n  set: function (key, value) {\n    // Comparing with invocation chaining, `return value` is more commonly\n    // used in this case: `var someVal = map.set('a', genVal());`\n    return this[key] = value;\n  },\n  // Although util.each can be performed on this hashMap directly, user\n  // should not use the exposed keys, who are prefixed.\n  each: function (cb, context) {\n    context !== void 0 && (cb = bind(cb, context));\n\n    for (var key in this) {\n      this.hasOwnProperty(key) && cb(this[key], key);\n    }\n  },\n  // Do not use this method if performance sensitive.\n  removeKey: function (key) {\n    delete this[key];\n  }\n};\n\nfunction createHashMap(obj) {\n  return new HashMap(obj);\n}\n\nfunction concatArray(a, b) {\n  var newArray = new a.constructor(a.length + b.length);\n\n  for (var i = 0; i < a.length; i++) {\n    newArray[i] = a[i];\n  }\n\n  var offset = a.length;\n\n  for (i = 0; i < b.length; i++) {\n    newArray[i + offset] = b[i];\n  }\n\n  return newArray;\n}\n\nfunction noop() {}\n\nexports.$override = $override;\nexports.clone = clone;\nexports.merge = merge;\nexports.mergeAll = mergeAll;\nexports.extend = extend;\nexports.defaults = defaults;\nexports.createCanvas = createCanvas;\nexports.getContext = getContext;\nexports.indexOf = indexOf;\nexports.inherits = inherits;\nexports.mixin = mixin;\nexports.isArrayLike = isArrayLike;\nexports.each = each;\nexports.map = map;\nexports.reduce = reduce;\nexports.filter = filter;\nexports.find = find;\nexports.bind = bind;\nexports.curry = curry;\nexports.isArray = isArray;\nexports.isFunction = isFunction;\nexports.isString = isString;\nexports.isObject = isObject;\nexports.isBuiltInObject = isBuiltInObject;\nexports.isTypedArray = isTypedArray;\nexports.isDom = isDom;\nexports.eqNaN = eqNaN;\nexports.retrieve = retrieve;\nexports.retrieve2 = retrieve2;\nexports.retrieve3 = retrieve3;\nexports.slice = slice;\nexports.normalizeCssArray = normalizeCssArray;\nexports.assert = assert;\nexports.trim = trim;\nexports.setAsPrimitive = setAsPrimitive;\nexports.isPrimitive = isPrimitive;\nexports.createHashMap = createHashMap;\nexports.concatArray = concatArray;\nexports.noop = noop;","var ArrayCtor = typeof Float32Array === 'undefined' ? Array : Float32Array;\n/**\n * 创建一个向量\n * @param {number} [x=0]\n * @param {number} [y=0]\n * @return {Vector2}\n */\n\nfunction create(x, y) {\n  var out = new ArrayCtor(2);\n\n  if (x == null) {\n    x = 0;\n  }\n\n  if (y == null) {\n    y = 0;\n  }\n\n  out[0] = x;\n  out[1] = y;\n  return out;\n}\n/**\n * 复制向量数据\n * @param {Vector2} out\n * @param {Vector2} v\n * @return {Vector2}\n */\n\n\nfunction copy(out, v) {\n  out[0] = v[0];\n  out[1] = v[1];\n  return out;\n}\n/**\n * 克隆一个向量\n * @param {Vector2} v\n * @return {Vector2}\n */\n\n\nfunction clone(v) {\n  var out = new ArrayCtor(2);\n  out[0] = v[0];\n  out[1] = v[1];\n  return out;\n}\n/**\n * 设置向量的两个项\n * @param {Vector2} out\n * @param {number} a\n * @param {number} b\n * @return {Vector2} 结果\n */\n\n\nfunction set(out, a, b) {\n  out[0] = a;\n  out[1] = b;\n  return out;\n}\n/**\n * 向量相加\n * @param {Vector2} out\n * @param {Vector2} v1\n * @param {Vector2} v2\n */\n\n\nfunction add(out, v1, v2) {\n  out[0] = v1[0] + v2[0];\n  out[1] = v1[1] + v2[1];\n  return out;\n}\n/**\n * 向量缩放后相加\n * @param {Vector2} out\n * @param {Vector2} v1\n * @param {Vector2} v2\n * @param {number} a\n */\n\n\nfunction scaleAndAdd(out, v1, v2, a) {\n  out[0] = v1[0] + v2[0] * a;\n  out[1] = v1[1] + v2[1] * a;\n  return out;\n}\n/**\n * 向量相减\n * @param {Vector2} out\n * @param {Vector2} v1\n * @param {Vector2} v2\n */\n\n\nfunction sub(out, v1, v2) {\n  out[0] = v1[0] - v2[0];\n  out[1] = v1[1] - v2[1];\n  return out;\n}\n/**\n * 向量长度\n * @param {Vector2} v\n * @return {number}\n */\n\n\nfunction len(v) {\n  return Math.sqrt(lenSquare(v));\n}\n\nvar length = len; // jshint ignore:line\n\n/**\n * 向量长度平方\n * @param {Vector2} v\n * @return {number}\n */\n\nfunction lenSquare(v) {\n  return v[0] * v[0] + v[1] * v[1];\n}\n\nvar lengthSquare = lenSquare;\n/**\n * 向量乘法\n * @param {Vector2} out\n * @param {Vector2} v1\n * @param {Vector2} v2\n */\n\nfunction mul(out, v1, v2) {\n  out[0] = v1[0] * v2[0];\n  out[1] = v1[1] * v2[1];\n  return out;\n}\n/**\n * 向量除法\n * @param {Vector2} out\n * @param {Vector2} v1\n * @param {Vector2} v2\n */\n\n\nfunction div(out, v1, v2) {\n  out[0] = v1[0] / v2[0];\n  out[1] = v1[1] / v2[1];\n  return out;\n}\n/**\n * 向量点乘\n * @param {Vector2} v1\n * @param {Vector2} v2\n * @return {number}\n */\n\n\nfunction dot(v1, v2) {\n  return v1[0] * v2[0] + v1[1] * v2[1];\n}\n/**\n * 向量缩放\n * @param {Vector2} out\n * @param {Vector2} v\n * @param {number} s\n */\n\n\nfunction scale(out, v, s) {\n  out[0] = v[0] * s;\n  out[1] = v[1] * s;\n  return out;\n}\n/**\n * 向量归一化\n * @param {Vector2} out\n * @param {Vector2} v\n */\n\n\nfunction normalize(out, v) {\n  var d = len(v);\n\n  if (d === 0) {\n    out[0] = 0;\n    out[1] = 0;\n  } else {\n    out[0] = v[0] / d;\n    out[1] = v[1] / d;\n  }\n\n  return out;\n}\n/**\n * 计算向量间距离\n * @param {Vector2} v1\n * @param {Vector2} v2\n * @return {number}\n */\n\n\nfunction distance(v1, v2) {\n  return Math.sqrt((v1[0] - v2[0]) * (v1[0] - v2[0]) + (v1[1] - v2[1]) * (v1[1] - v2[1]));\n}\n\nvar dist = distance;\n/**\n * 向量距离平方\n * @param {Vector2} v1\n * @param {Vector2} v2\n * @return {number}\n */\n\nfunction distanceSquare(v1, v2) {\n  return (v1[0] - v2[0]) * (v1[0] - v2[0]) + (v1[1] - v2[1]) * (v1[1] - v2[1]);\n}\n\nvar distSquare = distanceSquare;\n/**\n * 求负向量\n * @param {Vector2} out\n * @param {Vector2} v\n */\n\nfunction negate(out, v) {\n  out[0] = -v[0];\n  out[1] = -v[1];\n  return out;\n}\n/**\n * 插值两个点\n * @param {Vector2} out\n * @param {Vector2} v1\n * @param {Vector2} v2\n * @param {number} t\n */\n\n\nfunction lerp(out, v1, v2, t) {\n  out[0] = v1[0] + t * (v2[0] - v1[0]);\n  out[1] = v1[1] + t * (v2[1] - v1[1]);\n  return out;\n}\n/**\n * 矩阵左乘向量\n * @param {Vector2} out\n * @param {Vector2} v\n * @param {Vector2} m\n */\n\n\nfunction applyTransform(out, v, m) {\n  var x = v[0];\n  var y = v[1];\n  out[0] = m[0] * x + m[2] * y + m[4];\n  out[1] = m[1] * x + m[3] * y + m[5];\n  return out;\n}\n/**\n * 求两个向量最小值\n * @param  {Vector2} out\n * @param  {Vector2} v1\n * @param  {Vector2} v2\n */\n\n\nfunction min(out, v1, v2) {\n  out[0] = Math.min(v1[0], v2[0]);\n  out[1] = Math.min(v1[1], v2[1]);\n  return out;\n}\n/**\n * 求两个向量最大值\n * @param  {Vector2} out\n * @param  {Vector2} v1\n * @param  {Vector2} v2\n */\n\n\nfunction max(out, v1, v2) {\n  out[0] = Math.max(v1[0], v2[0]);\n  out[1] = Math.max(v1[1], v2[1]);\n  return out;\n}\n\nexports.create = create;\nexports.copy = copy;\nexports.clone = clone;\nexports.set = set;\nexports.add = add;\nexports.scaleAndAdd = scaleAndAdd;\nexports.sub = sub;\nexports.len = len;\nexports.length = length;\nexports.lenSquare = lenSquare;\nexports.lengthSquare = lengthSquare;\nexports.mul = mul;\nexports.div = div;\nexports.dot = dot;\nexports.scale = scale;\nexports.normalize = normalize;\nexports.distance = distance;\nexports.dist = dist;\nexports.distanceSquare = distanceSquare;\nexports.distSquare = distSquare;\nexports.negate = negate;\nexports.lerp = lerp;\nexports.applyTransform = applyTransform;\nexports.min = min;\nexports.max = max;","var _event = require(\"../core/event\");\n\nvar addEventListener = _event.addEventListener;\nvar removeEventListener = _event.removeEventListener;\nvar normalizeEvent = _event.normalizeEvent;\n\nvar zrUtil = require(\"../core/util\");\n\nvar Eventful = require(\"../mixin/Eventful\");\n\nvar env = require(\"../core/env\");\n\nvar GestureMgr = require(\"../core/GestureMgr\");\n\nvar TOUCH_CLICK_DELAY = 300;\nvar mouseHandlerNames = ['click', 'dblclick', 'mousewheel', 'mouseout', 'mouseup', 'mousedown', 'mousemove', 'contextmenu'];\nvar touchHandlerNames = ['touchstart', 'touchend', 'touchmove'];\nvar pointerEventNames = {\n  pointerdown: 1,\n  pointerup: 1,\n  pointermove: 1,\n  pointerout: 1\n};\nvar pointerHandlerNames = zrUtil.map(mouseHandlerNames, function (name) {\n  var nm = name.replace('mouse', 'pointer');\n  return pointerEventNames[nm] ? nm : name;\n});\n\nfunction eventNameFix(name) {\n  return name === 'mousewheel' && env.browser.firefox ? 'DOMMouseScroll' : name;\n}\n\nfunction processGesture(proxy, event, stage) {\n  var gestureMgr = proxy._gestureMgr;\n  stage === 'start' && gestureMgr.clear();\n  var gestureInfo = gestureMgr.recognize(event, proxy.handler.findHover(event.zrX, event.zrY, null).target, proxy.dom);\n  stage === 'end' && gestureMgr.clear(); // Do not do any preventDefault here. Upper application do that if necessary.\n\n  if (gestureInfo) {\n    var type = gestureInfo.type;\n    event.gestureEvent = type;\n    proxy.handler.dispatchToElement({\n      target: gestureInfo.target\n    }, type, gestureInfo.event);\n  }\n} // function onMSGestureChange(proxy, event) {\n//     if (event.translationX || event.translationY) {\n//         // mousemove is carried by MSGesture to reduce the sensitivity.\n//         proxy.handler.dispatchToElement(event.target, 'mousemove', event);\n//     }\n//     if (event.scale !== 1) {\n//         event.pinchX = event.offsetX;\n//         event.pinchY = event.offsetY;\n//         event.pinchScale = event.scale;\n//         proxy.handler.dispatchToElement(event.target, 'pinch', event);\n//     }\n// }\n\n/**\n * Prevent mouse event from being dispatched after Touch Events action\n * @see <https://github.com/deltakosh/handjs/blob/master/src/hand.base.js>\n * 1. Mobile browsers dispatch mouse events 300ms after touchend.\n * 2. Chrome for Android dispatch mousedown for long-touch about 650ms\n * Result: Blocking Mouse Events for 700ms.\n */\n\n\nfunction setTouchTimer(instance) {\n  instance._touching = true;\n  clearTimeout(instance._touchTimer);\n  instance._touchTimer = setTimeout(function () {\n    instance._touching = false;\n  }, 700);\n}\n\nvar domHandlers = {\n  /**\n   * Mouse move handler\n   * @inner\n   * @param {Event} event\n   */\n  mousemove: function (event) {\n    event = normalizeEvent(this.dom, event);\n    this.trigger('mousemove', event);\n  },\n\n  /**\n   * Mouse out handler\n   * @inner\n   * @param {Event} event\n   */\n  mouseout: function (event) {\n    event = normalizeEvent(this.dom, event);\n    var element = event.toElement || event.relatedTarget;\n\n    if (element != this.dom) {\n      while (element && element.nodeType != 9) {\n        // 忽略包含在root中的dom引起的mouseOut\n        if (element === this.dom) {\n          return;\n        }\n\n        element = element.parentNode;\n      }\n    }\n\n    this.trigger('mouseout', event);\n  },\n\n  /**\n   * Touch开始响应函数\n   * @inner\n   * @param {Event} event\n   */\n  touchstart: function (event) {\n    // Default mouse behaviour should not be disabled here.\n    // For example, page may needs to be slided.\n    event = normalizeEvent(this.dom, event); // Mark touch, which is useful in distinguish touch and\n    // mouse event in upper applicatoin.\n\n    event.zrByTouch = true;\n    this._lastTouchMoment = new Date();\n    processGesture(this, event, 'start'); // In touch device, trigger `mousemove`(`mouseover`) should\n    // be triggered, and must before `mousedown` triggered.\n\n    domHandlers.mousemove.call(this, event);\n    domHandlers.mousedown.call(this, event);\n    setTouchTimer(this);\n  },\n\n  /**\n   * Touch移动响应函数\n   * @inner\n   * @param {Event} event\n   */\n  touchmove: function (event) {\n    event = normalizeEvent(this.dom, event); // Mark touch, which is useful in distinguish touch and\n    // mouse event in upper applicatoin.\n\n    event.zrByTouch = true;\n    processGesture(this, event, 'change'); // Mouse move should always be triggered no matter whether\n    // there is gestrue event, because mouse move and pinch may\n    // be used at the same time.\n\n    domHandlers.mousemove.call(this, event);\n    setTouchTimer(this);\n  },\n\n  /**\n   * Touch结束响应函数\n   * @inner\n   * @param {Event} event\n   */\n  touchend: function (event) {\n    event = normalizeEvent(this.dom, event); // Mark touch, which is useful in distinguish touch and\n    // mouse event in upper applicatoin.\n\n    event.zrByTouch = true;\n    processGesture(this, event, 'end');\n    domHandlers.mouseup.call(this, event); // Do not trigger `mouseout` here, in spite of `mousemove`(`mouseover`) is\n    // triggered in `touchstart`. This seems to be illogical, but by this mechanism,\n    // we can conveniently implement \"hover style\" in both PC and touch device just\n    // by listening to `mouseover` to add \"hover style\" and listening to `mouseout`\n    // to remove \"hover style\" on an element, without any additional code for\n    // compatibility. (`mouseout` will not be triggered in `touchend`, so \"hover\n    // style\" will remain for user view)\n    // click event should always be triggered no matter whether\n    // there is gestrue event. System click can not be prevented.\n\n    if (+new Date() - this._lastTouchMoment < TOUCH_CLICK_DELAY) {\n      domHandlers.click.call(this, event);\n    }\n\n    setTouchTimer(this);\n  },\n  pointerdown: function (event) {\n    domHandlers.mousedown.call(this, event); // if (useMSGuesture(this, event)) {\n    //     this._msGesture.addPointer(event.pointerId);\n    // }\n  },\n  pointermove: function (event) {\n    // FIXME\n    // pointermove is so sensitive that it always triggered when\n    // tap(click) on touch screen, which affect some judgement in\n    // upper application. So, we dont support mousemove on MS touch\n    // device yet.\n    if (!isPointerFromTouch(event)) {\n      domHandlers.mousemove.call(this, event);\n    }\n  },\n  pointerup: function (event) {\n    domHandlers.mouseup.call(this, event);\n  },\n  pointerout: function (event) {\n    // pointerout will be triggered when tap on touch screen\n    // (IE11+/Edge on MS Surface) after click event triggered,\n    // which is inconsistent with the mousout behavior we defined\n    // in touchend. So we unify them.\n    // (check domHandlers.touchend for detailed explanation)\n    if (!isPointerFromTouch(event)) {\n      domHandlers.mouseout.call(this, event);\n    }\n  }\n};\n\nfunction isPointerFromTouch(event) {\n  var pointerType = event.pointerType;\n  return pointerType === 'pen' || pointerType === 'touch';\n} // function useMSGuesture(handlerProxy, event) {\n//     return isPointerFromTouch(event) && !!handlerProxy._msGesture;\n// }\n// Common handlers\n\n\nzrUtil.each(['click', 'mousedown', 'mouseup', 'mousewheel', 'dblclick', 'contextmenu'], function (name) {\n  domHandlers[name] = function (event) {\n    event = normalizeEvent(this.dom, event);\n    this.trigger(name, event);\n  };\n});\n/**\n * 为控制类实例初始化dom 事件处理函数\n *\n * @inner\n * @param {module:zrender/Handler} instance 控制类实例\n */\n\nfunction initDomHandler(instance) {\n  zrUtil.each(touchHandlerNames, function (name) {\n    instance._handlers[name] = zrUtil.bind(domHandlers[name], instance);\n  });\n  zrUtil.each(pointerHandlerNames, function (name) {\n    instance._handlers[name] = zrUtil.bind(domHandlers[name], instance);\n  });\n  zrUtil.each(mouseHandlerNames, function (name) {\n    instance._handlers[name] = makeMouseHandler(domHandlers[name], instance);\n  });\n\n  function makeMouseHandler(fn, instance) {\n    return function () {\n      if (instance._touching) {\n        return;\n      }\n\n      return fn.apply(instance, arguments);\n    };\n  }\n}\n\nfunction HandlerDomProxy(dom) {\n  Eventful.call(this);\n  this.dom = dom;\n  /**\n   * @private\n   * @type {boolean}\n   */\n\n  this._touching = false;\n  /**\n   * @private\n   * @type {number}\n   */\n\n  this._touchTimer;\n  /**\n   * @private\n   * @type {module:zrender/core/GestureMgr}\n   */\n\n  this._gestureMgr = new GestureMgr();\n  this._handlers = {};\n  initDomHandler(this);\n\n  if (env.pointerEventsSupported) {\n    // Only IE11+/Edge\n    // 1. On devices that both enable touch and mouse (e.g., MS Surface and lenovo X240),\n    // IE11+/Edge do not trigger touch event, but trigger pointer event and mouse event\n    // at the same time.\n    // 2. On MS Surface, it probablely only trigger mousedown but no mouseup when tap on\n    // screen, which do not occurs in pointer event.\n    // So we use pointer event to both detect touch gesture and mouse behavior.\n    mountHandlers(pointerHandlerNames, this); // FIXME\n    // Note: MS Gesture require CSS touch-action set. But touch-action is not reliable,\n    // which does not prevent defuault behavior occasionally (which may cause view port\n    // zoomed in but use can not zoom it back). And event.preventDefault() does not work.\n    // So we have to not to use MSGesture and not to support touchmove and pinch on MS\n    // touch screen. And we only support click behavior on MS touch screen now.\n    // MS Gesture Event is only supported on IE11+/Edge and on Windows 8+.\n    // We dont support touch on IE on win7.\n    // See <https://msdn.microsoft.com/en-us/library/dn433243(v=vs.85).aspx>\n    // if (typeof MSGesture === 'function') {\n    //     (this._msGesture = new MSGesture()).target = dom; // jshint ignore:line\n    //     dom.addEventListener('MSGestureChange', onMSGestureChange);\n    // }\n  } else {\n    if (env.touchEventsSupported) {\n      mountHandlers(touchHandlerNames, this); // Handler of 'mouseout' event is needed in touch mode, which will be mounted below.\n      // addEventListener(root, 'mouseout', this._mouseoutHandler);\n    } // 1. Considering some devices that both enable touch and mouse event (like on MS Surface\n    // and lenovo X240, @see #2350), we make mouse event be always listened, otherwise\n    // mouse event can not be handle in those devices.\n    // 2. On MS Surface, Chrome will trigger both touch event and mouse event. How to prevent\n    // mouseevent after touch event triggered, see `setTouchTimer`.\n\n\n    mountHandlers(mouseHandlerNames, this);\n  }\n\n  function mountHandlers(handlerNames, instance) {\n    zrUtil.each(handlerNames, function (name) {\n      addEventListener(dom, eventNameFix(name), instance._handlers[name]);\n    }, instance);\n  }\n}\n\nvar handlerDomProxyProto = HandlerDomProxy.prototype;\n\nhandlerDomProxyProto.dispose = function () {\n  var handlerNames = mouseHandlerNames.concat(touchHandlerNames);\n\n  for (var i = 0; i < handlerNames.length; i++) {\n    var name = handlerNames[i];\n    removeEventListener(this.dom, eventNameFix(name), this._handlers[name]);\n  }\n};\n\nhandlerDomProxyProto.setCursor = function (cursorStyle) {\n  this.dom.style && (this.dom.style.cursor = cursorStyle || 'default');\n};\n\nzrUtil.mixin(HandlerDomProxy, Eventful);\nvar _default = HandlerDomProxy;\nmodule.exports = _default;","var Path = require(\"./Path\");\n\n// CompoundPath to improve performance\nvar _default = Path.extend({\n  type: 'compound',\n  shape: {\n    paths: null\n  },\n  _updatePathDirty: function () {\n    var dirtyPath = this.__dirtyPath;\n    var paths = this.shape.paths;\n\n    for (var i = 0; i < paths.length; i++) {\n      // Mark as dirty if any subpath is dirty\n      dirtyPath = dirtyPath || paths[i].__dirtyPath;\n    }\n\n    this.__dirtyPath = dirtyPath;\n    this.__dirty = this.__dirty || dirtyPath;\n  },\n  beforeBrush: function () {\n    this._updatePathDirty();\n\n    var paths = this.shape.paths || [];\n    var scale = this.getGlobalScale(); // Update path scale\n\n    for (var i = 0; i < paths.length; i++) {\n      if (!paths[i].path) {\n        paths[i].createPathProxy();\n      }\n\n      paths[i].path.setScale(scale[0], scale[1]);\n    }\n  },\n  buildPath: function (ctx, shape) {\n    var paths = shape.paths || [];\n\n    for (var i = 0; i < paths.length; i++) {\n      paths[i].buildPath(ctx, paths[i].shape, true);\n    }\n  },\n  afterBrush: function () {\n    var paths = this.shape.paths || [];\n\n    for (var i = 0; i < paths.length; i++) {\n      paths[i].__dirtyPath = false;\n    }\n  },\n  getBoundingRect: function () {\n    this._updatePathDirty();\n\n    return Path.prototype.getBoundingRect.call(this);\n  }\n});\n\nmodule.exports = _default;","var zrUtil = require(\"../core/util\");\n\nvar Style = require(\"./Style\");\n\nvar Element = require(\"../Element\");\n\nvar RectText = require(\"./mixin/RectText\");\n\n/**\n * 可绘制的图形基类\n * Base class of all displayable graphic objects\n * @module zrender/graphic/Displayable\n */\n\n/**\n * @alias module:zrender/graphic/Displayable\n * @extends module:zrender/Element\n * @extends module:zrender/graphic/mixin/RectText\n */\nfunction Displayable(opts) {\n  opts = opts || {};\n  Element.call(this, opts); // Extend properties\n\n  for (var name in opts) {\n    if (opts.hasOwnProperty(name) && name !== 'style') {\n      this[name] = opts[name];\n    }\n  }\n  /**\n   * @type {module:zrender/graphic/Style}\n   */\n\n\n  this.style = new Style(opts.style, this);\n  this._rect = null; // Shapes for cascade clipping.\n\n  this.__clipPaths = []; // FIXME Stateful must be mixined after style is setted\n  // Stateful.call(this, opts);\n}\n\nDisplayable.prototype = {\n  constructor: Displayable,\n  type: 'displayable',\n\n  /**\n   * Displayable 是否为脏，Painter 中会根据该标记判断是否需要是否需要重新绘制\n   * Dirty flag. From which painter will determine if this displayable object needs brush\n   * @name module:zrender/graphic/Displayable#__dirty\n   * @type {boolean}\n   */\n  __dirty: true,\n\n  /**\n   * 图形是否可见，为true时不绘制图形，但是仍能触发鼠标事件\n   * If ignore drawing of the displayable object. Mouse event will still be triggered\n   * @name module:/zrender/graphic/Displayable#invisible\n   * @type {boolean}\n   * @default false\n   */\n  invisible: false,\n\n  /**\n   * @name module:/zrender/graphic/Displayable#z\n   * @type {number}\n   * @default 0\n   */\n  z: 0,\n\n  /**\n   * @name module:/zrender/graphic/Displayable#z\n   * @type {number}\n   * @default 0\n   */\n  z2: 0,\n\n  /**\n   * z层level，决定绘画在哪层canvas中\n   * @name module:/zrender/graphic/Displayable#zlevel\n   * @type {number}\n   * @default 0\n   */\n  zlevel: 0,\n\n  /**\n   * 是否可拖拽\n   * @name module:/zrender/graphic/Displayable#draggable\n   * @type {boolean}\n   * @default false\n   */\n  draggable: false,\n\n  /**\n   * 是否正在拖拽\n   * @name module:/zrender/graphic/Displayable#draggable\n   * @type {boolean}\n   * @default false\n   */\n  dragging: false,\n\n  /**\n   * 是否相应鼠标事件\n   * @name module:/zrender/graphic/Displayable#silent\n   * @type {boolean}\n   * @default false\n   */\n  silent: false,\n\n  /**\n   * If enable culling\n   * @type {boolean}\n   * @default false\n   */\n  culling: false,\n\n  /**\n   * Mouse cursor when hovered\n   * @name module:/zrender/graphic/Displayable#cursor\n   * @type {string}\n   */\n  cursor: 'pointer',\n\n  /**\n   * If hover area is bounding rect\n   * @name module:/zrender/graphic/Displayable#rectHover\n   * @type {string}\n   */\n  rectHover: false,\n\n  /**\n   * Render the element progressively when the value >= 0,\n   * usefull for large data.\n   * @type {boolean}\n   */\n  progressive: false,\n\n  /**\n   * @type {boolean}\n   */\n  incremental: false,\n  // inplace is used with incremental\n  inplace: false,\n  beforeBrush: function (ctx) {},\n  afterBrush: function (ctx) {},\n\n  /**\n   * 图形绘制方法\n   * @param {CanvasRenderingContext2D} ctx\n   */\n  // Interface\n  brush: function (ctx, prevEl) {},\n\n  /**\n   * 获取最小包围盒\n   * @return {module:zrender/core/BoundingRect}\n   */\n  // Interface\n  getBoundingRect: function () {},\n\n  /**\n   * 判断坐标 x, y 是否在图形上\n   * If displayable element contain coord x, y\n   * @param  {number} x\n   * @param  {number} y\n   * @return {boolean}\n   */\n  contain: function (x, y) {\n    return this.rectContain(x, y);\n  },\n\n  /**\n   * @param  {Function} cb\n   * @param  {}   context\n   */\n  traverse: function (cb, context) {\n    cb.call(context, this);\n  },\n\n  /**\n   * 判断坐标 x, y 是否在图形的包围盒上\n   * If bounding rect of element contain coord x, y\n   * @param  {number} x\n   * @param  {number} y\n   * @return {boolean}\n   */\n  rectContain: function (x, y) {\n    var coord = this.transformCoordToLocal(x, y);\n    var rect = this.getBoundingRect();\n    return rect.contain(coord[0], coord[1]);\n  },\n\n  /**\n   * 标记图形元素为脏，并且在下一帧重绘\n   * Mark displayable element dirty and refresh next frame\n   */\n  dirty: function () {\n    this.__dirty = true;\n    this._rect = null;\n    this.__zr && this.__zr.refresh();\n  },\n\n  /**\n   * 图形是否会触发事件\n   * If displayable object binded any event\n   * @return {boolean}\n   */\n  // TODO, 通过 bind 绑定的事件\n  // isSilent: function () {\n  //     return !(\n  //         this.hoverable || this.draggable\n  //         || this.onmousemove || this.onmouseover || this.onmouseout\n  //         || this.onmousedown || this.onmouseup || this.onclick\n  //         || this.ondragenter || this.ondragover || this.ondragleave\n  //         || this.ondrop\n  //     );\n  // },\n\n  /**\n   * Alias for animate('style')\n   * @param {boolean} loop\n   */\n  animateStyle: function (loop) {\n    return this.animate('style', loop);\n  },\n  attrKV: function (key, value) {\n    if (key !== 'style') {\n      Element.prototype.attrKV.call(this, key, value);\n    } else {\n      this.style.set(value);\n    }\n  },\n\n  /**\n   * @param {Object|string} key\n   * @param {*} value\n   */\n  setStyle: function (key, value) {\n    this.style.set(key, value);\n    this.dirty(false);\n    return this;\n  },\n\n  /**\n   * Use given style object\n   * @param  {Object} obj\n   */\n  useStyle: function (obj) {\n    this.style = new Style(obj, this);\n    this.dirty(false);\n    return this;\n  }\n};\nzrUtil.inherits(Displayable, Element);\nzrUtil.mixin(Displayable, RectText); // zrUtil.mixin(Displayable, Stateful);\n\nvar _default = Displayable;\nmodule.exports = _default;","/**\n * @param {Array.<Object>} colorStops\n */\nvar Gradient = function (colorStops) {\n  this.colorStops = colorStops || [];\n};\n\nGradient.prototype = {\n  constructor: Gradient,\n  addColorStop: function (offset, color) {\n    this.colorStops.push({\n      offset: offset,\n      color: color\n    });\n  }\n};\nvar _default = Gradient;\nmodule.exports = _default;","var Displayable = require(\"./Displayable\");\n\nvar BoundingRect = require(\"../core/BoundingRect\");\n\nvar zrUtil = require(\"../core/util\");\n\nvar imageHelper = require(\"./helper/image\");\n\n/**\n * @alias zrender/graphic/Image\n * @extends module:zrender/graphic/Displayable\n * @constructor\n * @param {Object} opts\n */\nfunction ZImage(opts) {\n  Displayable.call(this, opts);\n}\n\nZImage.prototype = {\n  constructor: ZImage,\n  type: 'image',\n  brush: function (ctx, prevEl) {\n    var style = this.style;\n    var src = style.image; // Must bind each time\n\n    style.bind(ctx, this, prevEl);\n    var image = this._image = imageHelper.createOrUpdateImage(src, this._image, this, this.onload);\n\n    if (!image || !imageHelper.isImageReady(image)) {\n      return;\n    } // 图片已经加载完成\n    // if (image.nodeName.toUpperCase() == 'IMG') {\n    //     if (!image.complete) {\n    //         return;\n    //     }\n    // }\n    // Else is canvas\n\n\n    var x = style.x || 0;\n    var y = style.y || 0;\n    var width = style.width;\n    var height = style.height;\n    var aspect = image.width / image.height;\n\n    if (width == null && height != null) {\n      // Keep image/height ratio\n      width = height * aspect;\n    } else if (height == null && width != null) {\n      height = width / aspect;\n    } else if (width == null && height == null) {\n      width = image.width;\n      height = image.height;\n    } // 设置transform\n\n\n    this.setTransform(ctx);\n\n    if (style.sWidth && style.sHeight) {\n      var sx = style.sx || 0;\n      var sy = style.sy || 0;\n      ctx.drawImage(image, sx, sy, style.sWidth, style.sHeight, x, y, width, height);\n    } else if (style.sx && style.sy) {\n      var sx = style.sx;\n      var sy = style.sy;\n      var sWidth = width - sx;\n      var sHeight = height - sy;\n      ctx.drawImage(image, sx, sy, sWidth, sHeight, x, y, width, height);\n    } else {\n      ctx.drawImage(image, x, y, width, height);\n    } // Draw rect text\n\n\n    if (style.text != null) {\n      // Only restore transform when needs draw text.\n      this.restoreTransform(ctx);\n      this.drawRectText(ctx, this.getBoundingRect());\n    }\n  },\n  getBoundingRect: function () {\n    var style = this.style;\n\n    if (!this._rect) {\n      this._rect = new BoundingRect(style.x || 0, style.y || 0, style.width || 0, style.height || 0);\n    }\n\n    return this._rect;\n  }\n};\nzrUtil.inherits(ZImage, Displayable);\nvar _default = ZImage;\nmodule.exports = _default;","var _util = require(\"../core/util\");\n\nvar inherits = _util.inherits;\n\nvar Displayble = require(\"./Displayable\");\n\nvar BoundingRect = require(\"../core/BoundingRect\");\n\n/**\n * Displayable for incremental rendering. It will be rendered in a separate layer\n * IncrementalDisplay have too main methods. `clearDisplayables` and `addDisplayables`\n * addDisplayables will render the added displayables incremetally.\n *\n * It use a not clearFlag to tell the painter don't clear the layer if it's the first element.\n */\n// TODO Style override ?\nfunction IncrementalDisplayble(opts) {\n  Displayble.call(this, opts);\n  this._displayables = [];\n  this._temporaryDisplayables = [];\n  this._cursor = 0;\n  this.notClear = true;\n}\n\nIncrementalDisplayble.prototype.incremental = true;\n\nIncrementalDisplayble.prototype.clearDisplaybles = function () {\n  this._displayables = [];\n  this._temporaryDisplayables = [];\n  this._cursor = 0;\n  this.dirty();\n  this.notClear = false;\n};\n\nIncrementalDisplayble.prototype.addDisplayable = function (displayable, notPersistent) {\n  if (notPersistent) {\n    this._temporaryDisplayables.push(displayable);\n  } else {\n    this._displayables.push(displayable);\n  }\n\n  this.dirty();\n};\n\nIncrementalDisplayble.prototype.addDisplayables = function (displayables, notPersistent) {\n  notPersistent = notPersistent || false;\n\n  for (var i = 0; i < displayables.length; i++) {\n    this.addDisplayable(displayables[i], notPersistent);\n  }\n};\n\nIncrementalDisplayble.prototype.eachPendingDisplayable = function (cb) {\n  for (var i = this._cursor; i < this._displayables.length; i++) {\n    cb && cb(this._displayables[i]);\n  }\n\n  for (var i = 0; i < this._temporaryDisplayables.length; i++) {\n    cb && cb(this._temporaryDisplayables[i]);\n  }\n};\n\nIncrementalDisplayble.prototype.update = function () {\n  this.updateTransform();\n\n  for (var i = this._cursor; i < this._displayables.length; i++) {\n    var displayable = this._displayables[i]; // PENDING\n\n    displayable.parent = this;\n    displayable.update();\n    displayable.parent = null;\n  }\n\n  for (var i = 0; i < this._temporaryDisplayables.length; i++) {\n    var displayable = this._temporaryDisplayables[i]; // PENDING\n\n    displayable.parent = this;\n    displayable.update();\n    displayable.parent = null;\n  }\n};\n\nIncrementalDisplayble.prototype.brush = function (ctx, prevEl) {\n  // Render persistant displayables.\n  for (var i = this._cursor; i < this._displayables.length; i++) {\n    var displayable = this._temporaryDisplayables[i];\n    displayable.beforeBrush && displayable.beforeBrush(ctx);\n    displayable.brush(ctx, i === this._cursor ? null : this._displayables[i - 1]);\n    displayable.afterBrush && displayable.afterBrush(ctx);\n  }\n\n  this._cursor = i; // Render temporary displayables.\n\n  for (var i = 0; i < this._temporaryDisplayables.length; i++) {\n    var displayable = this._temporaryDisplayables[i];\n    displayable.beforeBrush && displayable.beforeBrush(ctx);\n    displayable.brush(ctx, i === 0 ? null : this._temporaryDisplayables[i - 1]);\n    displayable.afterBrush && displayable.afterBrush(ctx);\n  }\n\n  this._temporaryDisplayables = [];\n  this.notClear = true;\n};\n\nvar m = [];\n\nIncrementalDisplayble.prototype.getBoundingRect = function () {\n  if (!this._rect) {\n    var rect = new BoundingRect(Infinity, Infinity, -Infinity, -Infinity);\n\n    for (var i = 0; i < this._displayables.length; i++) {\n      var displayable = this._displayables[i];\n      var childRect = displayable.getBoundingRect().clone();\n\n      if (displayable.needLocalTransform()) {\n        childRect.applyTransform(displayable.getLocalTransform(m));\n      }\n\n      rect.union(childRect);\n    }\n\n    this._rect = rect;\n  }\n\n  return this._rect;\n};\n\nIncrementalDisplayble.prototype.contain = function (x, y) {\n  var localPos = this.transformCoordToLocal(x, y);\n  var rect = this.getBoundingRect();\n\n  if (rect.contain(localPos[0], localPos[1])) {\n    for (var i = 0; i < this._displayables.length; i++) {\n      var displayable = this._displayables[i];\n\n      if (displayable.contain(x, y)) {\n        return true;\n      }\n    }\n  }\n\n  return false;\n};\n\ninherits(IncrementalDisplayble, Displayble);\nvar _default = IncrementalDisplayble;\nmodule.exports = _default;","var zrUtil = require(\"../core/util\");\n\nvar Gradient = require(\"./Gradient\");\n\n/**\n * x, y, x2, y2 are all percent from 0 to 1\n * @param {number} [x=0]\n * @param {number} [y=0]\n * @param {number} [x2=1]\n * @param {number} [y2=0]\n * @param {Array.<Object>} colorStops\n * @param {boolean} [globalCoord=false]\n */\nvar LinearGradient = function (x, y, x2, y2, colorStops, globalCoord) {\n  // Should do nothing more in this constructor. Because gradient can be\n  // declard by `color: {type: 'linear', colorStops: ...}`, where\n  // this constructor will not be called.\n  this.x = x == null ? 0 : x;\n  this.y = y == null ? 0 : y;\n  this.x2 = x2 == null ? 1 : x2;\n  this.y2 = y2 == null ? 0 : y2; // Can be cloned\n\n  this.type = 'linear'; // If use global coord\n\n  this.global = globalCoord || false;\n  Gradient.call(this, colorStops);\n};\n\nLinearGradient.prototype = {\n  constructor: LinearGradient\n};\nzrUtil.inherits(LinearGradient, Gradient);\nvar _default = LinearGradient;\nmodule.exports = _default;","var Displayable = require(\"./Displayable\");\n\nvar zrUtil = require(\"../core/util\");\n\nvar PathProxy = require(\"../core/PathProxy\");\n\nvar pathContain = require(\"../contain/path\");\n\nvar Pattern = require(\"./Pattern\");\n\nvar getCanvasPattern = Pattern.prototype.getCanvasPattern;\nvar abs = Math.abs;\nvar pathProxyForDraw = new PathProxy(true);\n/**\n * @alias module:zrender/graphic/Path\n * @extends module:zrender/graphic/Displayable\n * @constructor\n * @param {Object} opts\n */\n\nfunction Path(opts) {\n  Displayable.call(this, opts);\n  /**\n   * @type {module:zrender/core/PathProxy}\n   * @readOnly\n   */\n\n  this.path = null;\n}\n\nPath.prototype = {\n  constructor: Path,\n  type: 'path',\n  __dirtyPath: true,\n  strokeContainThreshold: 5,\n  brush: function (ctx, prevEl) {\n    var style = this.style;\n    var path = this.path || pathProxyForDraw;\n    var hasStroke = style.hasStroke();\n    var hasFill = style.hasFill();\n    var fill = style.fill;\n    var stroke = style.stroke;\n    var hasFillGradient = hasFill && !!fill.colorStops;\n    var hasStrokeGradient = hasStroke && !!stroke.colorStops;\n    var hasFillPattern = hasFill && !!fill.image;\n    var hasStrokePattern = hasStroke && !!stroke.image;\n    style.bind(ctx, this, prevEl);\n    this.setTransform(ctx);\n\n    if (this.__dirty) {\n      var rect; // Update gradient because bounding rect may changed\n\n      if (hasFillGradient) {\n        rect = rect || this.getBoundingRect();\n        this._fillGradient = style.getGradient(ctx, fill, rect);\n      }\n\n      if (hasStrokeGradient) {\n        rect = rect || this.getBoundingRect();\n        this._strokeGradient = style.getGradient(ctx, stroke, rect);\n      }\n    } // Use the gradient or pattern\n\n\n    if (hasFillGradient) {\n      // PENDING If may have affect the state\n      ctx.fillStyle = this._fillGradient;\n    } else if (hasFillPattern) {\n      ctx.fillStyle = getCanvasPattern.call(fill, ctx);\n    }\n\n    if (hasStrokeGradient) {\n      ctx.strokeStyle = this._strokeGradient;\n    } else if (hasStrokePattern) {\n      ctx.strokeStyle = getCanvasPattern.call(stroke, ctx);\n    }\n\n    var lineDash = style.lineDash;\n    var lineDashOffset = style.lineDashOffset;\n    var ctxLineDash = !!ctx.setLineDash; // Update path sx, sy\n\n    var scale = this.getGlobalScale();\n    path.setScale(scale[0], scale[1]); // Proxy context\n    // Rebuild path in following 2 cases\n    // 1. Path is dirty\n    // 2. Path needs javascript implemented lineDash stroking.\n    //    In this case, lineDash information will not be saved in PathProxy\n\n    if (this.__dirtyPath || lineDash && !ctxLineDash && hasStroke) {\n      path.beginPath(ctx); // Setting line dash before build path\n\n      if (lineDash && !ctxLineDash) {\n        path.setLineDash(lineDash);\n        path.setLineDashOffset(lineDashOffset);\n      }\n\n      this.buildPath(path, this.shape, false); // Clear path dirty flag\n\n      if (this.path) {\n        this.__dirtyPath = false;\n      }\n    } else {\n      // Replay path building\n      ctx.beginPath();\n      this.path.rebuildPath(ctx);\n    }\n\n    hasFill && path.fill(ctx);\n\n    if (lineDash && ctxLineDash) {\n      ctx.setLineDash(lineDash);\n      ctx.lineDashOffset = lineDashOffset;\n    }\n\n    hasStroke && path.stroke(ctx);\n\n    if (lineDash && ctxLineDash) {\n      // PENDING\n      // Remove lineDash\n      ctx.setLineDash([]);\n    } // Draw rect text\n\n\n    if (style.text != null) {\n      // Only restore transform when needs draw text.\n      this.restoreTransform(ctx);\n      this.drawRectText(ctx, this.getBoundingRect());\n    }\n  },\n  // When bundling path, some shape may decide if use moveTo to begin a new subpath or closePath\n  // Like in circle\n  buildPath: function (ctx, shapeCfg, inBundle) {},\n  createPathProxy: function () {\n    this.path = new PathProxy();\n  },\n  getBoundingRect: function () {\n    var rect = this._rect;\n    var style = this.style;\n    var needsUpdateRect = !rect;\n\n    if (needsUpdateRect) {\n      var path = this.path;\n\n      if (!path) {\n        // Create path on demand.\n        path = this.path = new PathProxy();\n      }\n\n      if (this.__dirtyPath) {\n        path.beginPath();\n        this.buildPath(path, this.shape, false);\n      }\n\n      rect = path.getBoundingRect();\n    }\n\n    this._rect = rect;\n\n    if (style.hasStroke()) {\n      // Needs update rect with stroke lineWidth when\n      // 1. Element changes scale or lineWidth\n      // 2. Shape is changed\n      var rectWithStroke = this._rectWithStroke || (this._rectWithStroke = rect.clone());\n\n      if (this.__dirty || needsUpdateRect) {\n        rectWithStroke.copy(rect); // FIXME Must after updateTransform\n\n        var w = style.lineWidth; // PENDING, Min line width is needed when line is horizontal or vertical\n\n        var lineScale = style.strokeNoScale ? this.getLineScale() : 1; // Only add extra hover lineWidth when there are no fill\n\n        if (!style.hasFill()) {\n          w = Math.max(w, this.strokeContainThreshold || 4);\n        } // Consider line width\n        // Line scale can't be 0;\n\n\n        if (lineScale > 1e-10) {\n          rectWithStroke.width += w / lineScale;\n          rectWithStroke.height += w / lineScale;\n          rectWithStroke.x -= w / lineScale / 2;\n          rectWithStroke.y -= w / lineScale / 2;\n        }\n      } // Return rect with stroke\n\n\n      return rectWithStroke;\n    }\n\n    return rect;\n  },\n  contain: function (x, y) {\n    var localPos = this.transformCoordToLocal(x, y);\n    var rect = this.getBoundingRect();\n    var style = this.style;\n    x = localPos[0];\n    y = localPos[1];\n\n    if (rect.contain(x, y)) {\n      var pathData = this.path.data;\n\n      if (style.hasStroke()) {\n        var lineWidth = style.lineWidth;\n        var lineScale = style.strokeNoScale ? this.getLineScale() : 1; // Line scale can't be 0;\n\n        if (lineScale > 1e-10) {\n          // Only add extra hover lineWidth when there are no fill\n          if (!style.hasFill()) {\n            lineWidth = Math.max(lineWidth, this.strokeContainThreshold);\n          }\n\n          if (pathContain.containStroke(pathData, lineWidth / lineScale, x, y)) {\n            return true;\n          }\n        }\n      }\n\n      if (style.hasFill()) {\n        return pathContain.contain(pathData, x, y);\n      }\n    }\n\n    return false;\n  },\n\n  /**\n   * @param  {boolean} dirtyPath\n   */\n  dirty: function (dirtyPath) {\n    if (dirtyPath == null) {\n      dirtyPath = true;\n    } // Only mark dirty, not mark clean\n\n\n    if (dirtyPath) {\n      this.__dirtyPath = dirtyPath;\n      this._rect = null;\n    }\n\n    this.__dirty = true;\n    this.__zr && this.__zr.refresh(); // Used as a clipping path\n\n    if (this.__clipTarget) {\n      this.__clipTarget.dirty();\n    }\n  },\n\n  /**\n   * Alias for animate('shape')\n   * @param {boolean} loop\n   */\n  animateShape: function (loop) {\n    return this.animate('shape', loop);\n  },\n  // Overwrite attrKV\n  attrKV: function (key, value) {\n    // FIXME\n    if (key === 'shape') {\n      this.setShape(value);\n      this.__dirtyPath = true;\n      this._rect = null;\n    } else {\n      Displayable.prototype.attrKV.call(this, key, value);\n    }\n  },\n\n  /**\n   * @param {Object|string} key\n   * @param {*} value\n   */\n  setShape: function (key, value) {\n    var shape = this.shape; // Path from string may not have shape\n\n    if (shape) {\n      if (zrUtil.isObject(key)) {\n        for (var name in key) {\n          if (key.hasOwnProperty(name)) {\n            shape[name] = key[name];\n          }\n        }\n      } else {\n        shape[key] = value;\n      }\n\n      this.dirty(true);\n    }\n\n    return this;\n  },\n  getLineScale: function () {\n    var m = this.transform; // Get the line scale.\n    // Determinant of `m` means how much the area is enlarged by the\n    // transformation. So its square root can be used as a scale factor\n    // for width.\n\n    return m && abs(m[0] - 1) > 1e-10 && abs(m[3] - 1) > 1e-10 ? Math.sqrt(abs(m[0] * m[3] - m[2] * m[1])) : 1;\n  }\n};\n/**\n * 扩展一个 Path element, 比如星形，圆等。\n * Extend a path element\n * @param {Object} props\n * @param {string} props.type Path type\n * @param {Function} props.init Initialize\n * @param {Function} props.buildPath Overwrite buildPath method\n * @param {Object} [props.style] Extended default style config\n * @param {Object} [props.shape] Extended default shape config\n */\n\nPath.extend = function (defaults) {\n  var Sub = function (opts) {\n    Path.call(this, opts);\n\n    if (defaults.style) {\n      // Extend default style\n      this.style.extendFrom(defaults.style, false);\n    } // Extend default shape\n\n\n    var defaultShape = defaults.shape;\n\n    if (defaultShape) {\n      this.shape = this.shape || {};\n      var thisShape = this.shape;\n\n      for (var name in defaultShape) {\n        if (!thisShape.hasOwnProperty(name) && defaultShape.hasOwnProperty(name)) {\n          thisShape[name] = defaultShape[name];\n        }\n      }\n    }\n\n    defaults.init && defaults.init.call(this, opts);\n  };\n\n  zrUtil.inherits(Sub, Path); // FIXME 不能 extend position, rotation 等引用对象\n\n  for (var name in defaults) {\n    // Extending prototype values and methods\n    if (name !== 'style' && name !== 'shape') {\n      Sub.prototype[name] = defaults[name];\n    }\n  }\n\n  return Sub;\n};\n\nzrUtil.inherits(Path, Displayable);\nvar _default = Path;\nmodule.exports = _default;","var Pattern = function (image, repeat) {\n  // Should do nothing more in this constructor. Because gradient can be\n  // declard by `color: {image: ...}`, where this constructor will not be called.\n  this.image = image;\n  this.repeat = repeat; // Can be cloned\n\n  this.type = 'pattern';\n};\n\nPattern.prototype.getCanvasPattern = function (ctx) {\n  return ctx.createPattern(this.image, this.repeat || 'repeat');\n};\n\nvar _default = Pattern;\nmodule.exports = _default;","var zrUtil = require(\"../core/util\");\n\nvar Gradient = require(\"./Gradient\");\n\n/**\n * x, y, r are all percent from 0 to 1\n * @param {number} [x=0.5]\n * @param {number} [y=0.5]\n * @param {number} [r=0.5]\n * @param {Array.<Object>} [colorStops]\n * @param {boolean} [globalCoord=false]\n */\nvar RadialGradient = function (x, y, r, colorStops, globalCoord) {\n  // Should do nothing more in this constructor. Because gradient can be\n  // declard by `color: {type: 'radial', colorStops: ...}`, where\n  // this constructor will not be called.\n  this.x = x == null ? 0.5 : x;\n  this.y = y == null ? 0.5 : y;\n  this.r = r == null ? 0.5 : r; // Can be cloned\n\n  this.type = 'radial'; // If use global coord\n\n  this.global = globalCoord || false;\n  Gradient.call(this, colorStops);\n};\n\nRadialGradient.prototype = {\n  constructor: RadialGradient\n};\nzrUtil.inherits(RadialGradient, Gradient);\nvar _default = RadialGradient;\nmodule.exports = _default;","var fixShadow = require(\"./helper/fixShadow\");\n\nvar STYLE_COMMON_PROPS = [['shadowBlur', 0], ['shadowOffsetX', 0], ['shadowOffsetY', 0], ['shadowColor', '#000'], ['lineCap', 'butt'], ['lineJoin', 'miter'], ['miterLimit', 10]]; // var SHADOW_PROPS = STYLE_COMMON_PROPS.slice(0, 4);\n// var LINE_PROPS = STYLE_COMMON_PROPS.slice(4);\n\nvar Style = function (opts, host) {\n  this.extendFrom(opts, false);\n  this.host = host;\n};\n\nfunction createLinearGradient(ctx, obj, rect) {\n  var x = obj.x == null ? 0 : obj.x;\n  var x2 = obj.x2 == null ? 1 : obj.x2;\n  var y = obj.y == null ? 0 : obj.y;\n  var y2 = obj.y2 == null ? 0 : obj.y2;\n\n  if (!obj.global) {\n    x = x * rect.width + rect.x;\n    x2 = x2 * rect.width + rect.x;\n    y = y * rect.height + rect.y;\n    y2 = y2 * rect.height + rect.y;\n  }\n\n  var canvasGradient = ctx.createLinearGradient(x, y, x2, y2);\n  return canvasGradient;\n}\n\nfunction createRadialGradient(ctx, obj, rect) {\n  var width = rect.width;\n  var height = rect.height;\n  var min = Math.min(width, height);\n  var x = obj.x == null ? 0.5 : obj.x;\n  var y = obj.y == null ? 0.5 : obj.y;\n  var r = obj.r == null ? 0.5 : obj.r;\n\n  if (!obj.global) {\n    x = x * width + rect.x;\n    y = y * height + rect.y;\n    r = r * min;\n  }\n\n  var canvasGradient = ctx.createRadialGradient(x, y, 0, x, y, r);\n  return canvasGradient;\n}\n\nStyle.prototype = {\n  constructor: Style,\n\n  /**\n   * @type {module:zrender/graphic/Displayable}\n   */\n  host: null,\n\n  /**\n   * @type {string}\n   */\n  fill: '#000',\n\n  /**\n   * @type {string}\n   */\n  stroke: null,\n\n  /**\n   * @type {number}\n   */\n  opacity: 1,\n\n  /**\n   * @type {Array.<number>}\n   */\n  lineDash: null,\n\n  /**\n   * @type {number}\n   */\n  lineDashOffset: 0,\n\n  /**\n   * @type {number}\n   */\n  shadowBlur: 0,\n\n  /**\n   * @type {number}\n   */\n  shadowOffsetX: 0,\n\n  /**\n   * @type {number}\n   */\n  shadowOffsetY: 0,\n\n  /**\n   * @type {number}\n   */\n  lineWidth: 1,\n\n  /**\n   * If stroke ignore scale\n   * @type {Boolean}\n   */\n  strokeNoScale: false,\n  // Bounding rect text configuration\n  // Not affected by element transform\n\n  /**\n   * @type {string}\n   */\n  text: null,\n\n  /**\n   * If `fontSize` or `fontFamily` exists, `font` will be reset by\n   * `fontSize`, `fontStyle`, `fontWeight`, `fontFamily`.\n   * So do not visit it directly in upper application (like echarts),\n   * but use `contain/text#makeFont` instead.\n   * @type {string}\n   */\n  font: null,\n\n  /**\n   * The same as font. Use font please.\n   * @deprecated\n   * @type {string}\n   */\n  textFont: null,\n\n  /**\n   * It helps merging respectively, rather than parsing an entire font string.\n   * @type {string}\n   */\n  fontStyle: null,\n\n  /**\n   * It helps merging respectively, rather than parsing an entire font string.\n   * @type {string}\n   */\n  fontWeight: null,\n\n  /**\n   * It helps merging respectively, rather than parsing an entire font string.\n   * Should be 12 but not '12px'.\n   * @type {number}\n   */\n  fontSize: null,\n\n  /**\n   * It helps merging respectively, rather than parsing an entire font string.\n   * @type {string}\n   */\n  fontFamily: null,\n\n  /**\n   * Reserved for special functinality, like 'hr'.\n   * @type {string}\n   */\n  textTag: null,\n\n  /**\n   * @type {string}\n   */\n  textFill: '#000',\n\n  /**\n   * @type {string}\n   */\n  textStroke: null,\n\n  /**\n   * @type {number}\n   */\n  textWidth: null,\n\n  /**\n   * Only for textBackground.\n   * @type {number}\n   */\n  textHeight: null,\n\n  /**\n   * textStroke may be set as some color as a default\n   * value in upper applicaion, where the default value\n   * of textStrokeWidth should be 0 to make sure that\n   * user can choose to do not use text stroke.\n   * @type {number}\n   */\n  textStrokeWidth: 0,\n\n  /**\n   * @type {number}\n   */\n  textLineHeight: null,\n\n  /**\n   * 'inside', 'left', 'right', 'top', 'bottom'\n   * [x, y]\n   * Based on x, y of rect.\n   * @type {string|Array.<number>}\n   * @default 'inside'\n   */\n  textPosition: 'inside',\n\n  /**\n   * If not specified, use the boundingRect of a `displayable`.\n   * @type {Object}\n   */\n  textRect: null,\n\n  /**\n   * [x, y]\n   * @type {Array.<number>}\n   */\n  textOffset: null,\n\n  /**\n   * @type {string}\n   */\n  textAlign: null,\n\n  /**\n   * @type {string}\n   */\n  textVerticalAlign: null,\n\n  /**\n   * @type {number}\n   */\n  textDistance: 5,\n\n  /**\n   * @type {string}\n   */\n  textShadowColor: 'transparent',\n\n  /**\n   * @type {number}\n   */\n  textShadowBlur: 0,\n\n  /**\n   * @type {number}\n   */\n  textShadowOffsetX: 0,\n\n  /**\n   * @type {number}\n   */\n  textShadowOffsetY: 0,\n\n  /**\n   * @type {string}\n   */\n  textBoxShadowColor: 'transparent',\n\n  /**\n   * @type {number}\n   */\n  textBoxShadowBlur: 0,\n\n  /**\n   * @type {number}\n   */\n  textBoxShadowOffsetX: 0,\n\n  /**\n   * @type {number}\n   */\n  textBoxShadowOffsetY: 0,\n\n  /**\n   * Whether transform text.\n   * Only useful in Path and Image element\n   * @type {boolean}\n   */\n  transformText: false,\n\n  /**\n   * Text rotate around position of Path or Image\n   * Only useful in Path and Image element and transformText is false.\n   */\n  textRotation: 0,\n\n  /**\n   * Text origin of text rotation, like [10, 40].\n   * Based on x, y of rect.\n   * Useful in label rotation of circular symbol.\n   * By default, this origin is textPosition.\n   * Can be 'center'.\n   * @type {string|Array.<number>}\n   */\n  textOrigin: null,\n\n  /**\n   * @type {string}\n   */\n  textBackgroundColor: null,\n\n  /**\n   * @type {string}\n   */\n  textBorderColor: null,\n\n  /**\n   * @type {number}\n   */\n  textBorderWidth: 0,\n\n  /**\n   * @type {number}\n   */\n  textBorderRadius: 0,\n\n  /**\n   * Can be `2` or `[2, 4]` or `[2, 3, 4, 5]`\n   * @type {number|Array.<number>}\n   */\n  textPadding: null,\n\n  /**\n   * Text styles for rich text.\n   * @type {Object}\n   */\n  rich: null,\n\n  /**\n   * {outerWidth, outerHeight, ellipsis, placeholder}\n   * @type {Object}\n   */\n  truncate: null,\n\n  /**\n   * https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/globalCompositeOperation\n   * @type {string}\n   */\n  blend: null,\n\n  /**\n   * @param {CanvasRenderingContext2D} ctx\n   */\n  bind: function (ctx, el, prevEl) {\n    var style = this;\n    var prevStyle = prevEl && prevEl.style;\n    var firstDraw = !prevStyle;\n\n    for (var i = 0; i < STYLE_COMMON_PROPS.length; i++) {\n      var prop = STYLE_COMMON_PROPS[i];\n      var styleName = prop[0];\n\n      if (firstDraw || style[styleName] !== prevStyle[styleName]) {\n        // FIXME Invalid property value will cause style leak from previous element.\n        ctx[styleName] = fixShadow(ctx, styleName, style[styleName] || prop[1]);\n      }\n    }\n\n    if (firstDraw || style.fill !== prevStyle.fill) {\n      ctx.fillStyle = style.fill;\n    }\n\n    if (firstDraw || style.stroke !== prevStyle.stroke) {\n      ctx.strokeStyle = style.stroke;\n    }\n\n    if (firstDraw || style.opacity !== prevStyle.opacity) {\n      ctx.globalAlpha = style.opacity == null ? 1 : style.opacity;\n    }\n\n    if (firstDraw || style.blend !== prevStyle.blend) {\n      ctx.globalCompositeOperation = style.blend || 'source-over';\n    }\n\n    if (this.hasStroke()) {\n      var lineWidth = style.lineWidth;\n      ctx.lineWidth = lineWidth / (this.strokeNoScale && el && el.getLineScale ? el.getLineScale() : 1);\n    }\n  },\n  hasFill: function () {\n    var fill = this.fill;\n    return fill != null && fill !== 'none';\n  },\n  hasStroke: function () {\n    var stroke = this.stroke;\n    return stroke != null && stroke !== 'none' && this.lineWidth > 0;\n  },\n\n  /**\n   * Extend from other style\n   * @param {zrender/graphic/Style} otherStyle\n   * @param {boolean} overwrite true: overwrirte any way.\n   *                            false: overwrite only when !target.hasOwnProperty\n   *                            others: overwrite when property is not null/undefined.\n   */\n  extendFrom: function (otherStyle, overwrite) {\n    if (otherStyle) {\n      for (var name in otherStyle) {\n        if (otherStyle.hasOwnProperty(name) && (overwrite === true || (overwrite === false ? !this.hasOwnProperty(name) : otherStyle[name] != null))) {\n          this[name] = otherStyle[name];\n        }\n      }\n    }\n  },\n\n  /**\n   * Batch setting style with a given object\n   * @param {Object|string} obj\n   * @param {*} [obj]\n   */\n  set: function (obj, value) {\n    if (typeof obj === 'string') {\n      this[obj] = value;\n    } else {\n      this.extendFrom(obj, true);\n    }\n  },\n\n  /**\n   * Clone\n   * @return {zrender/graphic/Style} [description]\n   */\n  clone: function () {\n    var newStyle = new this.constructor();\n    newStyle.extendFrom(this, true);\n    return newStyle;\n  },\n  getGradient: function (ctx, obj, rect) {\n    var method = obj.type === 'radial' ? createRadialGradient : createLinearGradient;\n    var canvasGradient = method(ctx, obj, rect);\n    var colorStops = obj.colorStops;\n\n    for (var i = 0; i < colorStops.length; i++) {\n      canvasGradient.addColorStop(colorStops[i].offset, colorStops[i].color);\n    }\n\n    return canvasGradient;\n  }\n};\nvar styleProto = Style.prototype;\n\nfor (var i = 0; i < STYLE_COMMON_PROPS.length; i++) {\n  var prop = STYLE_COMMON_PROPS[i];\n\n  if (!(prop[0] in styleProto)) {\n    styleProto[prop[0]] = prop[1];\n  }\n} // Provide for others\n\n\nStyle.getGradient = styleProto.getGradient;\nvar _default = Style;\nmodule.exports = _default;","var Displayable = require(\"./Displayable\");\n\nvar zrUtil = require(\"../core/util\");\n\nvar textContain = require(\"../contain/text\");\n\nvar textHelper = require(\"./helper/text\");\n\n/**\n * @alias zrender/graphic/Text\n * @extends module:zrender/graphic/Displayable\n * @constructor\n * @param {Object} opts\n */\nvar Text = function (opts) {\n  // jshint ignore:line\n  Displayable.call(this, opts);\n};\n\nText.prototype = {\n  constructor: Text,\n  type: 'text',\n  brush: function (ctx, prevEl) {\n    var style = this.style; // Optimize, avoid normalize every time.\n\n    this.__dirty && textHelper.normalizeTextStyle(style, true); // Use props with prefix 'text'.\n\n    style.fill = style.stroke = style.shadowBlur = style.shadowColor = style.shadowOffsetX = style.shadowOffsetY = null;\n    var text = style.text; // Convert to string\n\n    text != null && (text += ''); // Always bind style\n\n    style.bind(ctx, this, prevEl);\n\n    if (!textHelper.needDrawText(text, style)) {\n      return;\n    }\n\n    this.setTransform(ctx);\n    textHelper.renderText(this, ctx, text, style);\n    this.restoreTransform(ctx);\n  },\n  getBoundingRect: function () {\n    var style = this.style; // Optimize, avoid normalize every time.\n\n    this.__dirty && textHelper.normalizeTextStyle(style, true);\n\n    if (!this._rect) {\n      var text = style.text;\n      text != null ? text += '' : text = '';\n      var rect = textContain.getBoundingRect(style.text + '', style.font, style.textAlign, style.textVerticalAlign, style.textPadding, style.rich);\n      rect.x += style.x || 0;\n      rect.y += style.y || 0;\n\n      if (textHelper.getStroke(style.textStroke, style.textStrokeWidth)) {\n        var w = style.textStrokeWidth;\n        rect.x -= w / 2;\n        rect.y -= w / 2;\n        rect.width += w;\n        rect.height += w;\n      }\n\n      this._rect = rect;\n    }\n\n    return this._rect;\n  }\n};\nzrUtil.inherits(Text, Displayable);\nvar _default = Text;\nmodule.exports = _default;","var env = require(\"../../core/env\");\n\n// Fix weird bug in some version of IE11 (like 11.0.9600.178**),\n// where exception \"unexpected call to method or property access\"\n// might be thrown when calling ctx.fill or ctx.stroke after a path\n// whose area size is zero is drawn and ctx.clip() is called and\n// shadowBlur is set. See #4572, #3112, #5777.\n// (e.g.,\n//  ctx.moveTo(10, 10);\n//  ctx.lineTo(20, 10);\n//  ctx.closePath();\n//  ctx.clip();\n//  ctx.shadowBlur = 10;\n//  ...\n//  ctx.fill();\n// )\nvar shadowTemp = [['shadowBlur', 0], ['shadowColor', '#000'], ['shadowOffsetX', 0], ['shadowOffsetY', 0]];\n\nfunction _default(orignalBrush) {\n  // version string can be: '11.0'\n  return env.browser.ie && env.browser.version >= 11 ? function () {\n    var clipPaths = this.__clipPaths;\n    var style = this.style;\n    var modified;\n\n    if (clipPaths) {\n      for (var i = 0; i < clipPaths.length; i++) {\n        var clipPath = clipPaths[i];\n        var shape = clipPath && clipPath.shape;\n        var type = clipPath && clipPath.type;\n\n        if (shape && (type === 'sector' && shape.startAngle === shape.endAngle || type === 'rect' && (!shape.width || !shape.height))) {\n          for (var j = 0; j < shadowTemp.length; j++) {\n            // It is save to put shadowTemp static, because shadowTemp\n            // will be all modified each item brush called.\n            shadowTemp[j][2] = style[shadowTemp[j][0]];\n            style[shadowTemp[j][0]] = shadowTemp[j][1];\n          }\n\n          modified = true;\n          break;\n        }\n      }\n    }\n\n    orignalBrush.apply(this, arguments);\n\n    if (modified) {\n      for (var j = 0; j < shadowTemp.length; j++) {\n        style[shadowTemp[j][0]] = shadowTemp[j][2];\n      }\n    }\n  } : orignalBrush;\n}\n\nmodule.exports = _default;","var SHADOW_PROPS = {\n  'shadowBlur': 1,\n  'shadowOffsetX': 1,\n  'shadowOffsetY': 1,\n  'textShadowBlur': 1,\n  'textShadowOffsetX': 1,\n  'textShadowOffsetY': 1,\n  'textBoxShadowBlur': 1,\n  'textBoxShadowOffsetX': 1,\n  'textBoxShadowOffsetY': 1\n};\n\nfunction _default(ctx, propName, value) {\n  if (SHADOW_PROPS.hasOwnProperty(propName)) {\n    return value *= ctx.dpr;\n  }\n\n  return value;\n}\n\nmodule.exports = _default;","var LRU = require(\"../../core/LRU\");\n\nvar globalImageCache = new LRU(50);\n/**\n * @param {string|HTMLImageElement|HTMLCanvasElement|Canvas} newImageOrSrc\n * @return {HTMLImageElement|HTMLCanvasElement|Canvas} image\n */\n\nfunction findExistImage(newImageOrSrc) {\n  if (typeof newImageOrSrc === 'string') {\n    var cachedImgObj = globalImageCache.get(newImageOrSrc);\n    return cachedImgObj && cachedImgObj.image;\n  } else {\n    return newImageOrSrc;\n  }\n}\n/**\n * Caution: User should cache loaded images, but not just count on LRU.\n * Consider if required images more than LRU size, will dead loop occur?\n *\n * @param {string|HTMLImageElement|HTMLCanvasElement|Canvas} newImageOrSrc\n * @param {HTMLImageElement|HTMLCanvasElement|Canvas} image Existent image.\n * @param {module:zrender/Element} [hostEl] For calling `dirty`.\n * @param {Function} [cb] params: (image, cbPayload)\n * @param {Object} [cbPayload] Payload on cb calling.\n * @return {HTMLImageElement|HTMLCanvasElement|Canvas} image\n */\n\n\nfunction createOrUpdateImage(newImageOrSrc, image, hostEl, cb, cbPayload) {\n  if (!newImageOrSrc) {\n    return image;\n  } else if (typeof newImageOrSrc === 'string') {\n    // Image should not be loaded repeatly.\n    if (image && image.__zrImageSrc === newImageOrSrc || !hostEl) {\n      return image;\n    } // Only when there is no existent image or existent image src\n    // is different, this method is responsible for load.\n\n\n    var cachedImgObj = globalImageCache.get(newImageOrSrc);\n    var pendingWrap = {\n      hostEl: hostEl,\n      cb: cb,\n      cbPayload: cbPayload\n    };\n\n    if (cachedImgObj) {\n      image = cachedImgObj.image;\n      !isImageReady(image) && cachedImgObj.pending.push(pendingWrap);\n    } else {\n      !image && (image = new Image());\n      image.onload = imageOnLoad;\n      globalImageCache.put(newImageOrSrc, image.__cachedImgObj = {\n        image: image,\n        pending: [pendingWrap]\n      });\n      image.src = image.__zrImageSrc = newImageOrSrc;\n    }\n\n    return image;\n  } // newImageOrSrc is an HTMLImageElement or HTMLCanvasElement or Canvas\n  else {\n      return newImageOrSrc;\n    }\n}\n\nfunction imageOnLoad() {\n  var cachedImgObj = this.__cachedImgObj;\n  this.onload = this.__cachedImgObj = null;\n\n  for (var i = 0; i < cachedImgObj.pending.length; i++) {\n    var pendingWrap = cachedImgObj.pending[i];\n    var cb = pendingWrap.cb;\n    cb && cb(this, pendingWrap.cbPayload);\n    pendingWrap.hostEl.dirty();\n  }\n\n  cachedImgObj.pending.length = 0;\n}\n\nfunction isImageReady(image) {\n  return image && image.width && image.height;\n}\n\nexports.findExistImage = findExistImage;\nexports.createOrUpdateImage = createOrUpdateImage;\nexports.isImageReady = isImageReady;","var smoothSpline = require(\"./smoothSpline\");\n\nvar smoothBezier = require(\"./smoothBezier\");\n\nfunction buildPath(ctx, shape, closePath) {\n  var points = shape.points;\n  var smooth = shape.smooth;\n\n  if (points && points.length >= 2) {\n    if (smooth && smooth !== 'spline') {\n      var controlPoints = smoothBezier(points, smooth, closePath, shape.smoothConstraint);\n      ctx.moveTo(points[0][0], points[0][1]);\n      var len = points.length;\n\n      for (var i = 0; i < (closePath ? len : len - 1); i++) {\n        var cp1 = controlPoints[i * 2];\n        var cp2 = controlPoints[i * 2 + 1];\n        var p = points[(i + 1) % len];\n        ctx.bezierCurveTo(cp1[0], cp1[1], cp2[0], cp2[1], p[0], p[1]);\n      }\n    } else {\n      if (smooth === 'spline') {\n        points = smoothSpline(points, closePath);\n      }\n\n      ctx.moveTo(points[0][0], points[0][1]);\n\n      for (var i = 1, l = points.length; i < l; i++) {\n        ctx.lineTo(points[i][0], points[i][1]);\n      }\n    }\n\n    closePath && ctx.closePath();\n  }\n}\n\nexports.buildPath = buildPath;","function buildPath(ctx, shape) {\n  var x = shape.x;\n  var y = shape.y;\n  var width = shape.width;\n  var height = shape.height;\n  var r = shape.r;\n  var r1;\n  var r2;\n  var r3;\n  var r4; // Convert width and height to positive for better borderRadius\n\n  if (width < 0) {\n    x = x + width;\n    width = -width;\n  }\n\n  if (height < 0) {\n    y = y + height;\n    height = -height;\n  }\n\n  if (typeof r === 'number') {\n    r1 = r2 = r3 = r4 = r;\n  } else if (r instanceof Array) {\n    if (r.length === 1) {\n      r1 = r2 = r3 = r4 = r[0];\n    } else if (r.length === 2) {\n      r1 = r3 = r[0];\n      r2 = r4 = r[1];\n    } else if (r.length === 3) {\n      r1 = r[0];\n      r2 = r4 = r[1];\n      r3 = r[2];\n    } else {\n      r1 = r[0];\n      r2 = r[1];\n      r3 = r[2];\n      r4 = r[3];\n    }\n  } else {\n    r1 = r2 = r3 = r4 = 0;\n  }\n\n  var total;\n\n  if (r1 + r2 > width) {\n    total = r1 + r2;\n    r1 *= width / total;\n    r2 *= width / total;\n  }\n\n  if (r3 + r4 > width) {\n    total = r3 + r4;\n    r3 *= width / total;\n    r4 *= width / total;\n  }\n\n  if (r2 + r3 > height) {\n    total = r2 + r3;\n    r2 *= height / total;\n    r3 *= height / total;\n  }\n\n  if (r1 + r4 > height) {\n    total = r1 + r4;\n    r1 *= height / total;\n    r4 *= height / total;\n  }\n\n  ctx.moveTo(x + r1, y);\n  ctx.lineTo(x + width - r2, y);\n  r2 !== 0 && ctx.quadraticCurveTo(x + width, y, x + width, y + r2);\n  ctx.lineTo(x + width, y + height - r3);\n  r3 !== 0 && ctx.quadraticCurveTo(x + width, y + height, x + width - r3, y + height);\n  ctx.lineTo(x + r4, y + height);\n  r4 !== 0 && ctx.quadraticCurveTo(x, y + height, x, y + height - r4);\n  ctx.lineTo(x, y + r1);\n  r1 !== 0 && ctx.quadraticCurveTo(x, y, x + r1, y);\n}\n\nexports.buildPath = buildPath;","var _vector = require(\"../../core/vector\");\n\nvar v2Min = _vector.min;\nvar v2Max = _vector.max;\nvar v2Scale = _vector.scale;\nvar v2Distance = _vector.distance;\nvar v2Add = _vector.add;\nvar v2Clone = _vector.clone;\nvar v2Sub = _vector.sub;\n\n/**\n * 贝塞尔平滑曲线\n * @module zrender/shape/util/smoothBezier\n * @author pissang (https://www.github.com/pissang)\n *         Kener (@Kener-林峰, kener.linfeng@gmail.com)\n *         errorrik (errorrik@gmail.com)\n */\n\n/**\n * 贝塞尔平滑曲线\n * @alias module:zrender/shape/util/smoothBezier\n * @param {Array} points 线段顶点数组\n * @param {number} smooth 平滑等级, 0-1\n * @param {boolean} isLoop\n * @param {Array} constraint 将计算出来的控制点约束在一个包围盒内\n *                           比如 [[0, 0], [100, 100]], 这个包围盒会与\n *                           整个折线的包围盒做一个并集用来约束控制点。\n * @param {Array} 计算出来的控制点数组\n */\nfunction _default(points, smooth, isLoop, constraint) {\n  var cps = [];\n  var v = [];\n  var v1 = [];\n  var v2 = [];\n  var prevPoint;\n  var nextPoint;\n  var min, max;\n\n  if (constraint) {\n    min = [Infinity, Infinity];\n    max = [-Infinity, -Infinity];\n\n    for (var i = 0, len = points.length; i < len; i++) {\n      v2Min(min, min, points[i]);\n      v2Max(max, max, points[i]);\n    } // 与指定的包围盒做并集\n\n\n    v2Min(min, min, constraint[0]);\n    v2Max(max, max, constraint[1]);\n  }\n\n  for (var i = 0, len = points.length; i < len; i++) {\n    var point = points[i];\n\n    if (isLoop) {\n      prevPoint = points[i ? i - 1 : len - 1];\n      nextPoint = points[(i + 1) % len];\n    } else {\n      if (i === 0 || i === len - 1) {\n        cps.push(v2Clone(points[i]));\n        continue;\n      } else {\n        prevPoint = points[i - 1];\n        nextPoint = points[i + 1];\n      }\n    }\n\n    v2Sub(v, nextPoint, prevPoint); // use degree to scale the handle length\n\n    v2Scale(v, v, smooth);\n    var d0 = v2Distance(point, prevPoint);\n    var d1 = v2Distance(point, nextPoint);\n    var sum = d0 + d1;\n\n    if (sum !== 0) {\n      d0 /= sum;\n      d1 /= sum;\n    }\n\n    v2Scale(v1, v, -d0);\n    v2Scale(v2, v, d1);\n    var cp0 = v2Add([], point, v1);\n    var cp1 = v2Add([], point, v2);\n\n    if (constraint) {\n      v2Max(cp0, cp0, min);\n      v2Min(cp0, cp0, max);\n      v2Max(cp1, cp1, min);\n      v2Min(cp1, cp1, max);\n    }\n\n    cps.push(cp0);\n    cps.push(cp1);\n  }\n\n  if (isLoop) {\n    cps.push(cps.shift());\n  }\n\n  return cps;\n}\n\nmodule.exports = _default;","var _vector = require(\"../../core/vector\");\n\nvar v2Distance = _vector.distance;\n\n/**\n * Catmull-Rom spline 插值折线\n * @module zrender/shape/util/smoothSpline\n * @author pissang (https://www.github.com/pissang)\n *         Kener (@Kener-林峰, kener.linfeng@gmail.com)\n *         errorrik (errorrik@gmail.com)\n */\n\n/**\n * @inner\n */\nfunction interpolate(p0, p1, p2, p3, t, t2, t3) {\n  var v0 = (p2 - p0) * 0.5;\n  var v1 = (p3 - p1) * 0.5;\n  return (2 * (p1 - p2) + v0 + v1) * t3 + (-3 * (p1 - p2) - 2 * v0 - v1) * t2 + v0 * t + p1;\n}\n/**\n * @alias module:zrender/shape/util/smoothSpline\n * @param {Array} points 线段顶点数组\n * @param {boolean} isLoop\n * @return {Array}\n */\n\n\nfunction _default(points, isLoop) {\n  var len = points.length;\n  var ret = [];\n  var distance = 0;\n\n  for (var i = 1; i < len; i++) {\n    distance += v2Distance(points[i - 1], points[i]);\n  }\n\n  var segs = distance / 2;\n  segs = segs < len ? len : segs;\n\n  for (var i = 0; i < segs; i++) {\n    var pos = i / (segs - 1) * (isLoop ? len : len - 1);\n    var idx = Math.floor(pos);\n    var w = pos - idx;\n    var p0;\n    var p1 = points[idx % len];\n    var p2;\n    var p3;\n\n    if (!isLoop) {\n      p0 = points[idx === 0 ? idx : idx - 1];\n      p2 = points[idx > len - 2 ? len - 1 : idx + 1];\n      p3 = points[idx > len - 3 ? len - 1 : idx + 2];\n    } else {\n      p0 = points[(idx - 1 + len) % len];\n      p2 = points[(idx + 1) % len];\n      p3 = points[(idx + 2) % len];\n    }\n\n    var w2 = w * w;\n    var w3 = w * w2;\n    ret.push([interpolate(p0[0], p1[0], p2[0], p3[0], w, w2, w3), interpolate(p0[1], p1[1], p2[1], p3[1], w, w2, w3)]);\n  }\n\n  return ret;\n}\n\nmodule.exports = _default;","var _util = require(\"../../core/util\");\n\nvar retrieve2 = _util.retrieve2;\nvar retrieve3 = _util.retrieve3;\nvar each = _util.each;\nvar normalizeCssArray = _util.normalizeCssArray;\nvar isString = _util.isString;\nvar isObject = _util.isObject;\n\nvar textContain = require(\"../../contain/text\");\n\nvar roundRectHelper = require(\"./roundRect\");\n\nvar imageHelper = require(\"./image\");\n\nvar fixShadow = require(\"./fixShadow\");\n\n// TODO: Have not support 'start', 'end' yet.\nvar VALID_TEXT_ALIGN = {\n  left: 1,\n  right: 1,\n  center: 1\n};\nvar VALID_TEXT_VERTICAL_ALIGN = {\n  top: 1,\n  bottom: 1,\n  middle: 1\n};\n/**\n * @param {module:zrender/graphic/Style} style\n * @return {module:zrender/graphic/Style} The input style.\n */\n\nfunction normalizeTextStyle(style) {\n  normalizeStyle(style);\n  each(style.rich, normalizeStyle);\n  return style;\n}\n\nfunction normalizeStyle(style) {\n  if (style) {\n    style.font = textContain.makeFont(style);\n    var textAlign = style.textAlign;\n    textAlign === 'middle' && (textAlign = 'center');\n    style.textAlign = textAlign == null || VALID_TEXT_ALIGN[textAlign] ? textAlign : 'left'; // Compatible with textBaseline.\n\n    var textVerticalAlign = style.textVerticalAlign || style.textBaseline;\n    textVerticalAlign === 'center' && (textVerticalAlign = 'middle');\n    style.textVerticalAlign = textVerticalAlign == null || VALID_TEXT_VERTICAL_ALIGN[textVerticalAlign] ? textVerticalAlign : 'top';\n    var textPadding = style.textPadding;\n\n    if (textPadding) {\n      style.textPadding = normalizeCssArray(style.textPadding);\n    }\n  }\n}\n/**\n * @param {CanvasRenderingContext2D} ctx\n * @param {string} text\n * @param {module:zrender/graphic/Style} style\n * @param {Object|boolean} [rect] {x, y, width, height}\n *                  If set false, rect text is not used.\n */\n\n\nfunction renderText(hostEl, ctx, text, style, rect) {\n  style.rich ? renderRichText(hostEl, ctx, text, style, rect) : renderPlainText(hostEl, ctx, text, style, rect);\n}\n\nfunction renderPlainText(hostEl, ctx, text, style, rect) {\n  var font = setCtx(ctx, 'font', style.font || textContain.DEFAULT_FONT);\n  var textPadding = style.textPadding;\n  var contentBlock = hostEl.__textCotentBlock;\n\n  if (!contentBlock || hostEl.__dirty) {\n    contentBlock = hostEl.__textCotentBlock = textContain.parsePlainText(text, font, textPadding, style.truncate);\n  }\n\n  var outerHeight = contentBlock.outerHeight;\n  var textLines = contentBlock.lines;\n  var lineHeight = contentBlock.lineHeight;\n  var boxPos = getBoxPosition(outerHeight, style, rect);\n  var baseX = boxPos.baseX;\n  var baseY = boxPos.baseY;\n  var textAlign = boxPos.textAlign;\n  var textVerticalAlign = boxPos.textVerticalAlign; // Origin of textRotation should be the base point of text drawing.\n\n  applyTextRotation(ctx, style, rect, baseX, baseY);\n  var boxY = textContain.adjustTextY(baseY, outerHeight, textVerticalAlign);\n  var textX = baseX;\n  var textY = boxY;\n  var needDrawBg = needDrawBackground(style);\n\n  if (needDrawBg || textPadding) {\n    // Consider performance, do not call getTextWidth util necessary.\n    var textWidth = textContain.getWidth(text, font);\n    var outerWidth = textWidth;\n    textPadding && (outerWidth += textPadding[1] + textPadding[3]);\n    var boxX = textContain.adjustTextX(baseX, outerWidth, textAlign);\n    needDrawBg && drawBackground(hostEl, ctx, style, boxX, boxY, outerWidth, outerHeight);\n\n    if (textPadding) {\n      textX = getTextXForPadding(baseX, textAlign, textPadding);\n      textY += textPadding[0];\n    }\n  }\n\n  setCtx(ctx, 'textAlign', textAlign || 'left'); // Force baseline to be \"middle\". Otherwise, if using \"top\", the\n  // text will offset downward a little bit in font \"Microsoft YaHei\".\n\n  setCtx(ctx, 'textBaseline', 'middle'); // Always set shadowBlur and shadowOffset to avoid leak from displayable.\n\n  setCtx(ctx, 'shadowBlur', style.textShadowBlur || 0);\n  setCtx(ctx, 'shadowColor', style.textShadowColor || 'transparent');\n  setCtx(ctx, 'shadowOffsetX', style.textShadowOffsetX || 0);\n  setCtx(ctx, 'shadowOffsetY', style.textShadowOffsetY || 0); // `textBaseline` is set as 'middle'.\n\n  textY += lineHeight / 2;\n  var textStrokeWidth = style.textStrokeWidth;\n  var textStroke = getStroke(style.textStroke, textStrokeWidth);\n  var textFill = getFill(style.textFill);\n\n  if (textStroke) {\n    setCtx(ctx, 'lineWidth', textStrokeWidth);\n    setCtx(ctx, 'strokeStyle', textStroke);\n  }\n\n  if (textFill) {\n    setCtx(ctx, 'fillStyle', textFill);\n  }\n\n  for (var i = 0; i < textLines.length; i++) {\n    // Fill after stroke so the outline will not cover the main part.\n    textStroke && ctx.strokeText(textLines[i], textX, textY);\n    textFill && ctx.fillText(textLines[i], textX, textY);\n    textY += lineHeight;\n  }\n}\n\nfunction renderRichText(hostEl, ctx, text, style, rect) {\n  var contentBlock = hostEl.__textCotentBlock;\n\n  if (!contentBlock || hostEl.__dirty) {\n    contentBlock = hostEl.__textCotentBlock = textContain.parseRichText(text, style);\n  }\n\n  drawRichText(hostEl, ctx, contentBlock, style, rect);\n}\n\nfunction drawRichText(hostEl, ctx, contentBlock, style, rect) {\n  var contentWidth = contentBlock.width;\n  var outerWidth = contentBlock.outerWidth;\n  var outerHeight = contentBlock.outerHeight;\n  var textPadding = style.textPadding;\n  var boxPos = getBoxPosition(outerHeight, style, rect);\n  var baseX = boxPos.baseX;\n  var baseY = boxPos.baseY;\n  var textAlign = boxPos.textAlign;\n  var textVerticalAlign = boxPos.textVerticalAlign; // Origin of textRotation should be the base point of text drawing.\n\n  applyTextRotation(ctx, style, rect, baseX, baseY);\n  var boxX = textContain.adjustTextX(baseX, outerWidth, textAlign);\n  var boxY = textContain.adjustTextY(baseY, outerHeight, textVerticalAlign);\n  var xLeft = boxX;\n  var lineTop = boxY;\n\n  if (textPadding) {\n    xLeft += textPadding[3];\n    lineTop += textPadding[0];\n  }\n\n  var xRight = xLeft + contentWidth;\n  needDrawBackground(style) && drawBackground(hostEl, ctx, style, boxX, boxY, outerWidth, outerHeight);\n\n  for (var i = 0; i < contentBlock.lines.length; i++) {\n    var line = contentBlock.lines[i];\n    var tokens = line.tokens;\n    var tokenCount = tokens.length;\n    var lineHeight = line.lineHeight;\n    var usedWidth = line.width;\n    var leftIndex = 0;\n    var lineXLeft = xLeft;\n    var lineXRight = xRight;\n    var rightIndex = tokenCount - 1;\n    var token;\n\n    while (leftIndex < tokenCount && (token = tokens[leftIndex], !token.textAlign || token.textAlign === 'left')) {\n      placeToken(hostEl, ctx, token, style, lineHeight, lineTop, lineXLeft, 'left');\n      usedWidth -= token.width;\n      lineXLeft += token.width;\n      leftIndex++;\n    }\n\n    while (rightIndex >= 0 && (token = tokens[rightIndex], token.textAlign === 'right')) {\n      placeToken(hostEl, ctx, token, style, lineHeight, lineTop, lineXRight, 'right');\n      usedWidth -= token.width;\n      lineXRight -= token.width;\n      rightIndex--;\n    } // The other tokens are placed as textAlign 'center' if there is enough space.\n\n\n    lineXLeft += (contentWidth - (lineXLeft - xLeft) - (xRight - lineXRight) - usedWidth) / 2;\n\n    while (leftIndex <= rightIndex) {\n      token = tokens[leftIndex]; // Consider width specified by user, use 'center' rather than 'left'.\n\n      placeToken(hostEl, ctx, token, style, lineHeight, lineTop, lineXLeft + token.width / 2, 'center');\n      lineXLeft += token.width;\n      leftIndex++;\n    }\n\n    lineTop += lineHeight;\n  }\n}\n\nfunction applyTextRotation(ctx, style, rect, x, y) {\n  // textRotation only apply in RectText.\n  if (rect && style.textRotation) {\n    var origin = style.textOrigin;\n\n    if (origin === 'center') {\n      x = rect.width / 2 + rect.x;\n      y = rect.height / 2 + rect.y;\n    } else if (origin) {\n      x = origin[0] + rect.x;\n      y = origin[1] + rect.y;\n    }\n\n    ctx.translate(x, y); // Positive: anticlockwise\n\n    ctx.rotate(-style.textRotation);\n    ctx.translate(-x, -y);\n  }\n}\n\nfunction placeToken(hostEl, ctx, token, style, lineHeight, lineTop, x, textAlign) {\n  var tokenStyle = style.rich[token.styleName] || {}; // 'ctx.textBaseline' is always set as 'middle', for sake of\n  // the bias of \"Microsoft YaHei\".\n\n  var textVerticalAlign = token.textVerticalAlign;\n  var y = lineTop + lineHeight / 2;\n\n  if (textVerticalAlign === 'top') {\n    y = lineTop + token.height / 2;\n  } else if (textVerticalAlign === 'bottom') {\n    y = lineTop + lineHeight - token.height / 2;\n  }\n\n  !token.isLineHolder && needDrawBackground(tokenStyle) && drawBackground(hostEl, ctx, tokenStyle, textAlign === 'right' ? x - token.width : textAlign === 'center' ? x - token.width / 2 : x, y - token.height / 2, token.width, token.height);\n  var textPadding = token.textPadding;\n\n  if (textPadding) {\n    x = getTextXForPadding(x, textAlign, textPadding);\n    y -= token.height / 2 - textPadding[2] - token.textHeight / 2;\n  }\n\n  setCtx(ctx, 'shadowBlur', retrieve3(tokenStyle.textShadowBlur, style.textShadowBlur, 0));\n  setCtx(ctx, 'shadowColor', tokenStyle.textShadowColor || style.textShadowColor || 'transparent');\n  setCtx(ctx, 'shadowOffsetX', retrieve3(tokenStyle.textShadowOffsetX, style.textShadowOffsetX, 0));\n  setCtx(ctx, 'shadowOffsetY', retrieve3(tokenStyle.textShadowOffsetY, style.textShadowOffsetY, 0));\n  setCtx(ctx, 'textAlign', textAlign); // Force baseline to be \"middle\". Otherwise, if using \"top\", the\n  // text will offset downward a little bit in font \"Microsoft YaHei\".\n\n  setCtx(ctx, 'textBaseline', 'middle');\n  setCtx(ctx, 'font', token.font || textContain.DEFAULT_FONT);\n  var textStroke = getStroke(tokenStyle.textStroke || style.textStroke, textStrokeWidth);\n  var textFill = getFill(tokenStyle.textFill || style.textFill);\n  var textStrokeWidth = retrieve2(tokenStyle.textStrokeWidth, style.textStrokeWidth); // Fill after stroke so the outline will not cover the main part.\n\n  if (textStroke) {\n    setCtx(ctx, 'lineWidth', textStrokeWidth);\n    setCtx(ctx, 'strokeStyle', textStroke);\n    ctx.strokeText(token.text, x, y);\n  }\n\n  if (textFill) {\n    setCtx(ctx, 'fillStyle', textFill);\n    ctx.fillText(token.text, x, y);\n  }\n}\n\nfunction needDrawBackground(style) {\n  return style.textBackgroundColor || style.textBorderWidth && style.textBorderColor;\n} // style: {textBackgroundColor, textBorderWidth, textBorderColor, textBorderRadius}\n// shape: {x, y, width, height}\n\n\nfunction drawBackground(hostEl, ctx, style, x, y, width, height) {\n  var textBackgroundColor = style.textBackgroundColor;\n  var textBorderWidth = style.textBorderWidth;\n  var textBorderColor = style.textBorderColor;\n  var isPlainBg = isString(textBackgroundColor);\n  setCtx(ctx, 'shadowBlur', style.textBoxShadowBlur || 0);\n  setCtx(ctx, 'shadowColor', style.textBoxShadowColor || 'transparent');\n  setCtx(ctx, 'shadowOffsetX', style.textBoxShadowOffsetX || 0);\n  setCtx(ctx, 'shadowOffsetY', style.textBoxShadowOffsetY || 0);\n\n  if (isPlainBg || textBorderWidth && textBorderColor) {\n    ctx.beginPath();\n    var textBorderRadius = style.textBorderRadius;\n\n    if (!textBorderRadius) {\n      ctx.rect(x, y, width, height);\n    } else {\n      roundRectHelper.buildPath(ctx, {\n        x: x,\n        y: y,\n        width: width,\n        height: height,\n        r: textBorderRadius\n      });\n    }\n\n    ctx.closePath();\n  }\n\n  if (isPlainBg) {\n    setCtx(ctx, 'fillStyle', textBackgroundColor);\n    ctx.fill();\n  } else if (isObject(textBackgroundColor)) {\n    var image = textBackgroundColor.image;\n    image = imageHelper.createOrUpdateImage(image, null, hostEl, onBgImageLoaded, textBackgroundColor);\n\n    if (image && imageHelper.isImageReady(image)) {\n      ctx.drawImage(image, x, y, width, height);\n    }\n  }\n\n  if (textBorderWidth && textBorderColor) {\n    setCtx(ctx, 'lineWidth', textBorderWidth);\n    setCtx(ctx, 'strokeStyle', textBorderColor);\n    ctx.stroke();\n  }\n}\n\nfunction onBgImageLoaded(image, textBackgroundColor) {\n  // Replace image, so that `contain/text.js#parseRichText`\n  // will get correct result in next tick.\n  textBackgroundColor.image = image;\n}\n\nfunction getBoxPosition(blockHeiht, style, rect) {\n  var baseX = style.x || 0;\n  var baseY = style.y || 0;\n  var textAlign = style.textAlign;\n  var textVerticalAlign = style.textVerticalAlign; // Text position represented by coord\n\n  if (rect) {\n    var textPosition = style.textPosition;\n\n    if (textPosition instanceof Array) {\n      // Percent\n      baseX = rect.x + parsePercent(textPosition[0], rect.width);\n      baseY = rect.y + parsePercent(textPosition[1], rect.height);\n    } else {\n      var res = textContain.adjustTextPositionOnRect(textPosition, rect, style.textDistance);\n      baseX = res.x;\n      baseY = res.y; // Default align and baseline when has textPosition\n\n      textAlign = textAlign || res.textAlign;\n      textVerticalAlign = textVerticalAlign || res.textVerticalAlign;\n    } // textOffset is only support in RectText, otherwise\n    // we have to adjust boundingRect for textOffset.\n\n\n    var textOffset = style.textOffset;\n\n    if (textOffset) {\n      baseX += textOffset[0];\n      baseY += textOffset[1];\n    }\n  }\n\n  return {\n    baseX: baseX,\n    baseY: baseY,\n    textAlign: textAlign,\n    textVerticalAlign: textVerticalAlign\n  };\n}\n\nfunction setCtx(ctx, prop, value) {\n  ctx[prop] = fixShadow(ctx, prop, value);\n  return ctx[prop];\n}\n/**\n * @param {string} [stroke] If specified, do not check style.textStroke.\n * @param {string} [lineWidth] If specified, do not check style.textStroke.\n * @param {number} style\n */\n\n\nfunction getStroke(stroke, lineWidth) {\n  return stroke == null || lineWidth <= 0 || stroke === 'transparent' || stroke === 'none' ? null // TODO pattern and gradient?\n  : stroke.image || stroke.colorStops ? '#000' : stroke;\n}\n\nfunction getFill(fill) {\n  return fill == null || fill === 'none' ? null // TODO pattern and gradient?\n  : fill.image || fill.colorStops ? '#000' : fill;\n}\n\nfunction parsePercent(value, maxValue) {\n  if (typeof value === 'string') {\n    if (value.lastIndexOf('%') >= 0) {\n      return parseFloat(value) / 100 * maxValue;\n    }\n\n    return parseFloat(value);\n  }\n\n  return value;\n}\n\nfunction getTextXForPadding(x, textAlign, textPadding) {\n  return textAlign === 'right' ? x - textPadding[1] : textAlign === 'center' ? x + textPadding[3] / 2 - textPadding[1] / 2 : x + textPadding[3];\n}\n/**\n * @param {string} text\n * @param {module:zrender/Style} style\n * @return {boolean}\n */\n\n\nfunction needDrawText(text, style) {\n  return text != null && (text || style.textBackgroundColor || style.textBorderWidth && style.textBorderColor || style.textPadding);\n}\n\nexports.normalizeTextStyle = normalizeTextStyle;\nexports.renderText = renderText;\nexports.getStroke = getStroke;\nexports.getFill = getFill;\nexports.needDrawText = needDrawText;","var textHelper = require(\"../helper/text\");\n\nvar BoundingRect = require(\"../../core/BoundingRect\");\n\n/**\n * Mixin for drawing text in a element bounding rect\n * @module zrender/mixin/RectText\n */\nvar tmpRect = new BoundingRect();\n\nvar RectText = function () {};\n\nRectText.prototype = {\n  constructor: RectText,\n\n  /**\n   * Draw text in a rect with specified position.\n   * @param  {CanvasRenderingContext2D} ctx\n   * @param  {Object} rect Displayable rect\n   */\n  drawRectText: function (ctx, rect) {\n    var style = this.style;\n    rect = style.textRect || rect; // Optimize, avoid normalize every time.\n\n    this.__dirty && textHelper.normalizeTextStyle(style, true);\n    var text = style.text; // Convert to string\n\n    text != null && (text += '');\n\n    if (!textHelper.needDrawText(text, style)) {\n      return;\n    } // FIXME\n\n\n    ctx.save(); // Transform rect to view space\n\n    var transform = this.transform;\n\n    if (!style.transformText) {\n      if (transform) {\n        tmpRect.copy(rect);\n        tmpRect.applyTransform(transform);\n        rect = tmpRect;\n      }\n    } else {\n      this.setTransform(ctx);\n    } // transformText and textRotation can not be used at the same time.\n\n\n    textHelper.renderText(this, ctx, text, style, rect);\n    ctx.restore();\n  }\n};\nvar _default = RectText;\nmodule.exports = _default;","var Path = require(\"../Path\");\n\n/**\n * 圆弧\n * @module zrender/graphic/shape/Arc\n */\nvar _default = Path.extend({\n  type: 'arc',\n  shape: {\n    cx: 0,\n    cy: 0,\n    r: 0,\n    startAngle: 0,\n    endAngle: Math.PI * 2,\n    clockwise: true\n  },\n  style: {\n    stroke: '#000',\n    fill: null\n  },\n  buildPath: function (ctx, shape) {\n    var x = shape.cx;\n    var y = shape.cy;\n    var r = Math.max(shape.r, 0);\n    var startAngle = shape.startAngle;\n    var endAngle = shape.endAngle;\n    var clockwise = shape.clockwise;\n    var unitX = Math.cos(startAngle);\n    var unitY = Math.sin(startAngle);\n    ctx.moveTo(unitX * r + x, unitY * r + y);\n    ctx.arc(x, y, r, startAngle, endAngle, !clockwise);\n  }\n});\n\nmodule.exports = _default;","var Path = require(\"../Path\");\n\nvar vec2 = require(\"../../core/vector\");\n\nvar _curve = require(\"../../core/curve\");\n\nvar quadraticSubdivide = _curve.quadraticSubdivide;\nvar cubicSubdivide = _curve.cubicSubdivide;\nvar quadraticAt = _curve.quadraticAt;\nvar cubicAt = _curve.cubicAt;\nvar quadraticDerivativeAt = _curve.quadraticDerivativeAt;\nvar cubicDerivativeAt = _curve.cubicDerivativeAt;\n\n/**\n * 贝塞尔曲线\n * @module zrender/shape/BezierCurve\n */\nvar out = [];\n\nfunction someVectorAt(shape, t, isTangent) {\n  var cpx2 = shape.cpx2;\n  var cpy2 = shape.cpy2;\n\n  if (cpx2 === null || cpy2 === null) {\n    return [(isTangent ? cubicDerivativeAt : cubicAt)(shape.x1, shape.cpx1, shape.cpx2, shape.x2, t), (isTangent ? cubicDerivativeAt : cubicAt)(shape.y1, shape.cpy1, shape.cpy2, shape.y2, t)];\n  } else {\n    return [(isTangent ? quadraticDerivativeAt : quadraticAt)(shape.x1, shape.cpx1, shape.x2, t), (isTangent ? quadraticDerivativeAt : quadraticAt)(shape.y1, shape.cpy1, shape.y2, t)];\n  }\n}\n\nvar _default = Path.extend({\n  type: 'bezier-curve',\n  shape: {\n    x1: 0,\n    y1: 0,\n    x2: 0,\n    y2: 0,\n    cpx1: 0,\n    cpy1: 0,\n    // cpx2: 0,\n    // cpy2: 0\n    // Curve show percent, for animating\n    percent: 1\n  },\n  style: {\n    stroke: '#000',\n    fill: null\n  },\n  buildPath: function (ctx, shape) {\n    var x1 = shape.x1;\n    var y1 = shape.y1;\n    var x2 = shape.x2;\n    var y2 = shape.y2;\n    var cpx1 = shape.cpx1;\n    var cpy1 = shape.cpy1;\n    var cpx2 = shape.cpx2;\n    var cpy2 = shape.cpy2;\n    var percent = shape.percent;\n\n    if (percent === 0) {\n      return;\n    }\n\n    ctx.moveTo(x1, y1);\n\n    if (cpx2 == null || cpy2 == null) {\n      if (percent < 1) {\n        quadraticSubdivide(x1, cpx1, x2, percent, out);\n        cpx1 = out[1];\n        x2 = out[2];\n        quadraticSubdivide(y1, cpy1, y2, percent, out);\n        cpy1 = out[1];\n        y2 = out[2];\n      }\n\n      ctx.quadraticCurveTo(cpx1, cpy1, x2, y2);\n    } else {\n      if (percent < 1) {\n        cubicSubdivide(x1, cpx1, cpx2, x2, percent, out);\n        cpx1 = out[1];\n        cpx2 = out[2];\n        x2 = out[3];\n        cubicSubdivide(y1, cpy1, cpy2, y2, percent, out);\n        cpy1 = out[1];\n        cpy2 = out[2];\n        y2 = out[3];\n      }\n\n      ctx.bezierCurveTo(cpx1, cpy1, cpx2, cpy2, x2, y2);\n    }\n  },\n\n  /**\n   * Get point at percent\n   * @param  {number} t\n   * @return {Array.<number>}\n   */\n  pointAt: function (t) {\n    return someVectorAt(this.shape, t, false);\n  },\n\n  /**\n   * Get tangent at percent\n   * @param  {number} t\n   * @return {Array.<number>}\n   */\n  tangentAt: function (t) {\n    var p = someVectorAt(this.shape, t, true);\n    return vec2.normalize(p, p);\n  }\n});\n\nmodule.exports = _default;","var Path = require(\"../Path\");\n\n/**\n * 圆形\n * @module zrender/shape/Circle\n */\nvar _default = Path.extend({\n  type: 'circle',\n  shape: {\n    cx: 0,\n    cy: 0,\n    r: 0\n  },\n  buildPath: function (ctx, shape, inBundle) {\n    // Better stroking in ShapeBundle\n    // Always do it may have performence issue ( fill may be 2x more cost)\n    if (inBundle) {\n      ctx.moveTo(shape.cx + shape.r, shape.cy);\n    } // else {\n    //     if (ctx.allocate && !ctx.data.length) {\n    //         ctx.allocate(ctx.CMD_MEM_SIZE.A);\n    //     }\n    // }\n    // Better stroking in ShapeBundle\n    // ctx.moveTo(shape.cx + shape.r, shape.cy);\n\n\n    ctx.arc(shape.cx, shape.cy, shape.r, 0, Math.PI * 2, true);\n  }\n});\n\nmodule.exports = _default;","var Path = require(\"../Path\");\n\n/**\n * 直线\n * @module zrender/graphic/shape/Line\n */\nvar _default = Path.extend({\n  type: 'line',\n  shape: {\n    // Start point\n    x1: 0,\n    y1: 0,\n    // End point\n    x2: 0,\n    y2: 0,\n    percent: 1\n  },\n  style: {\n    stroke: '#000',\n    fill: null\n  },\n  buildPath: function (ctx, shape) {\n    var x1 = shape.x1;\n    var y1 = shape.y1;\n    var x2 = shape.x2;\n    var y2 = shape.y2;\n    var percent = shape.percent;\n\n    if (percent === 0) {\n      return;\n    }\n\n    ctx.moveTo(x1, y1);\n\n    if (percent < 1) {\n      x2 = x1 * (1 - percent) + x2 * percent;\n      y2 = y1 * (1 - percent) + y2 * percent;\n    }\n\n    ctx.lineTo(x2, y2);\n  },\n\n  /**\n   * Get point at percent\n   * @param  {number} percent\n   * @return {Array.<number>}\n   */\n  pointAt: function (p) {\n    var shape = this.shape;\n    return [shape.x1 * (1 - p) + shape.x2 * p, shape.y1 * (1 - p) + shape.y2 * p];\n  }\n});\n\nmodule.exports = _default;","var Path = require(\"../Path\");\n\nvar polyHelper = require(\"../helper/poly\");\n\n/**\n * 多边形\n * @module zrender/shape/Polygon\n */\nvar _default = Path.extend({\n  type: 'polygon',\n  shape: {\n    points: null,\n    smooth: false,\n    smoothConstraint: null\n  },\n  buildPath: function (ctx, shape) {\n    polyHelper.buildPath(ctx, shape, true);\n  }\n});\n\nmodule.exports = _default;","var Path = require(\"../Path\");\n\nvar polyHelper = require(\"../helper/poly\");\n\n/**\n * @module zrender/graphic/shape/Polyline\n */\nvar _default = Path.extend({\n  type: 'polyline',\n  shape: {\n    points: null,\n    smooth: false,\n    smoothConstraint: null\n  },\n  style: {\n    stroke: '#000',\n    fill: null\n  },\n  buildPath: function (ctx, shape) {\n    polyHelper.buildPath(ctx, shape, false);\n  }\n});\n\nmodule.exports = _default;","var Path = require(\"../Path\");\n\nvar roundRectHelper = require(\"../helper/roundRect\");\n\n/**\n * 矩形\n * @module zrender/graphic/shape/Rect\n */\nvar _default = Path.extend({\n  type: 'rect',\n  shape: {\n    // 左上、右上、右下、左下角的半径依次为r1、r2、r3、r4\n    // r缩写为1         相当于 [1, 1, 1, 1]\n    // r缩写为[1]       相当于 [1, 1, 1, 1]\n    // r缩写为[1, 2]    相当于 [1, 2, 1, 2]\n    // r缩写为[1, 2, 3] 相当于 [1, 2, 3, 2]\n    r: 0,\n    x: 0,\n    y: 0,\n    width: 0,\n    height: 0\n  },\n  buildPath: function (ctx, shape) {\n    var x = shape.x;\n    var y = shape.y;\n    var width = shape.width;\n    var height = shape.height;\n\n    if (!shape.r) {\n      ctx.rect(x, y, width, height);\n    } else {\n      roundRectHelper.buildPath(ctx, shape);\n    }\n\n    ctx.closePath();\n    return;\n  }\n});\n\nmodule.exports = _default;","var Path = require(\"../Path\");\n\n/**\n * 圆环\n * @module zrender/graphic/shape/Ring\n */\nvar _default = Path.extend({\n  type: 'ring',\n  shape: {\n    cx: 0,\n    cy: 0,\n    r: 0,\n    r0: 0\n  },\n  buildPath: function (ctx, shape) {\n    var x = shape.cx;\n    var y = shape.cy;\n    var PI2 = Math.PI * 2;\n    ctx.moveTo(x + shape.r, y);\n    ctx.arc(x, y, shape.r, 0, PI2, false);\n    ctx.moveTo(x + shape.r0, y);\n    ctx.arc(x, y, shape.r0, 0, PI2, true);\n  }\n});\n\nmodule.exports = _default;","var Path = require(\"../Path\");\n\nvar fixClipWithShadow = require(\"../helper/fixClipWithShadow\");\n\n/**\n * 扇形\n * @module zrender/graphic/shape/Sector\n */\nvar _default = Path.extend({\n  type: 'sector',\n  shape: {\n    cx: 0,\n    cy: 0,\n    r0: 0,\n    r: 0,\n    startAngle: 0,\n    endAngle: Math.PI * 2,\n    clockwise: true\n  },\n  brush: fixClipWithShadow(Path.prototype.brush),\n  buildPath: function (ctx, shape) {\n    var x = shape.cx;\n    var y = shape.cy;\n    var r0 = Math.max(shape.r0 || 0, 0);\n    var r = Math.max(shape.r, 0);\n    var startAngle = shape.startAngle;\n    var endAngle = shape.endAngle;\n    var clockwise = shape.clockwise;\n    var unitX = Math.cos(startAngle);\n    var unitY = Math.sin(startAngle);\n    ctx.moveTo(unitX * r0 + x, unitY * r0 + y);\n    ctx.lineTo(unitX * r + x, unitY * r + y);\n    ctx.arc(x, y, r, startAngle, endAngle, !clockwise);\n    ctx.lineTo(Math.cos(endAngle) * r0 + x, Math.sin(endAngle) * r0 + y);\n\n    if (r0 !== 0) {\n      ctx.arc(x, y, r0, endAngle, startAngle, clockwise);\n    }\n\n    ctx.closePath();\n  }\n});\n\nmodule.exports = _default;","var Animator = require(\"../animation/Animator\");\n\nvar log = require(\"../core/log\");\n\nvar _util = require(\"../core/util\");\n\nvar isString = _util.isString;\nvar isFunction = _util.isFunction;\nvar isObject = _util.isObject;\nvar isArrayLike = _util.isArrayLike;\nvar indexOf = _util.indexOf;\n\n/**\n * @alias modue:zrender/mixin/Animatable\n * @constructor\n */\nvar Animatable = function () {\n  /**\n   * @type {Array.<module:zrender/animation/Animator>}\n   * @readOnly\n   */\n  this.animators = [];\n};\n\nAnimatable.prototype = {\n  constructor: Animatable,\n\n  /**\n   * 动画\n   *\n   * @param {string} path The path to fetch value from object, like 'a.b.c'.\n   * @param {boolean} [loop] Whether to loop animation.\n   * @return {module:zrender/animation/Animator}\n   * @example:\n   *     el.animate('style', false)\n   *         .when(1000, {x: 10} )\n   *         .done(function(){ // Animation done })\n   *         .start()\n   */\n  animate: function (path, loop) {\n    var target;\n    var animatingShape = false;\n    var el = this;\n    var zr = this.__zr;\n\n    if (path) {\n      var pathSplitted = path.split('.');\n      var prop = el; // If animating shape\n\n      animatingShape = pathSplitted[0] === 'shape';\n\n      for (var i = 0, l = pathSplitted.length; i < l; i++) {\n        if (!prop) {\n          continue;\n        }\n\n        prop = prop[pathSplitted[i]];\n      }\n\n      if (prop) {\n        target = prop;\n      }\n    } else {\n      target = el;\n    }\n\n    if (!target) {\n      log('Property \"' + path + '\" is not existed in element ' + el.id);\n      return;\n    }\n\n    var animators = el.animators;\n    var animator = new Animator(target, loop);\n    animator.during(function (target) {\n      el.dirty(animatingShape);\n    }).done(function () {\n      // FIXME Animator will not be removed if use `Animator#stop` to stop animation\n      animators.splice(indexOf(animators, animator), 1);\n    });\n    animators.push(animator); // If animate after added to the zrender\n\n    if (zr) {\n      zr.animation.addAnimator(animator);\n    }\n\n    return animator;\n  },\n\n  /**\n   * 停止动画\n   * @param {boolean} forwardToLast If move to last frame before stop\n   */\n  stopAnimation: function (forwardToLast) {\n    var animators = this.animators;\n    var len = animators.length;\n\n    for (var i = 0; i < len; i++) {\n      animators[i].stop(forwardToLast);\n    }\n\n    animators.length = 0;\n    return this;\n  },\n\n  /**\n   * Caution: this method will stop previous animation.\n   * So do not use this method to one element twice before\n   * animation starts, unless you know what you are doing.\n   * @param {Object} target\n   * @param {number} [time=500] Time in ms\n   * @param {string} [easing='linear']\n   * @param {number} [delay=0]\n   * @param {Function} [callback]\n   * @param {Function} [forceAnimate] Prevent stop animation and callback\n   *        immediently when target values are the same as current values.\n   *\n   * @example\n   *  // Animate position\n   *  el.animateTo({\n   *      position: [10, 10]\n   *  }, function () { // done })\n   *\n   *  // Animate shape, style and position in 100ms, delayed 100ms, with cubicOut easing\n   *  el.animateTo({\n   *      shape: {\n   *          width: 500\n   *      },\n   *      style: {\n   *          fill: 'red'\n   *      }\n   *      position: [10, 10]\n   *  }, 100, 100, 'cubicOut', function () { // done })\n   */\n  // TODO Return animation key\n  animateTo: function (target, time, delay, easing, callback, forceAnimate) {\n    // animateTo(target, time, easing, callback);\n    if (isString(delay)) {\n      callback = easing;\n      easing = delay;\n      delay = 0;\n    } // animateTo(target, time, delay, callback);\n    else if (isFunction(easing)) {\n        callback = easing;\n        easing = 'linear';\n        delay = 0;\n      } // animateTo(target, time, callback);\n      else if (isFunction(delay)) {\n          callback = delay;\n          delay = 0;\n        } // animateTo(target, callback)\n        else if (isFunction(time)) {\n            callback = time;\n            time = 500;\n          } // animateTo(target)\n          else if (!time) {\n              time = 500;\n            } // Stop all previous animations\n\n\n    this.stopAnimation();\n\n    this._animateToShallow('', this, target, time, delay); // Animators may be removed immediately after start\n    // if there is nothing to animate\n\n\n    var animators = this.animators.slice();\n    var count = animators.length;\n\n    function done() {\n      count--;\n\n      if (!count) {\n        callback && callback();\n      }\n    } // No animators. This should be checked before animators[i].start(),\n    // because 'done' may be executed immediately if no need to animate.\n\n\n    if (!count) {\n      callback && callback();\n    } // Start after all animators created\n    // Incase any animator is done immediately when all animation properties are not changed\n\n\n    for (var i = 0; i < animators.length; i++) {\n      animators[i].done(done).start(easing, forceAnimate);\n    }\n  },\n\n  /**\n   * @private\n   * @param {string} path=''\n   * @param {Object} source=this\n   * @param {Object} target\n   * @param {number} [time=500]\n   * @param {number} [delay=0]\n   *\n   * @example\n   *  // Animate position\n   *  el._animateToShallow({\n   *      position: [10, 10]\n   *  })\n   *\n   *  // Animate shape, style and position in 100ms, delayed 100ms\n   *  el._animateToShallow({\n   *      shape: {\n   *          width: 500\n   *      },\n   *      style: {\n   *          fill: 'red'\n   *      }\n   *      position: [10, 10]\n   *  }, 100, 100)\n   */\n  _animateToShallow: function (path, source, target, time, delay) {\n    var objShallow = {};\n    var propertyCount = 0;\n\n    for (var name in target) {\n      if (!target.hasOwnProperty(name)) {\n        continue;\n      }\n\n      if (source[name] != null) {\n        if (isObject(target[name]) && !isArrayLike(target[name])) {\n          this._animateToShallow(path ? path + '.' + name : name, source[name], target[name], time, delay);\n        } else {\n          objShallow[name] = target[name];\n          propertyCount++;\n        }\n      } else if (target[name] != null) {\n        // Attr directly if not has property\n        // FIXME, if some property not needed for element ?\n        if (!path) {\n          this.attr(name, target[name]);\n        } else {\n          // Shape or style\n          var props = {};\n          props[path] = {};\n          props[path][name] = target[name];\n          this.attr(props);\n        }\n      }\n    }\n\n    if (propertyCount > 0) {\n      this.animate(path, false).when(time == null ? 500 : time, objShallow).delay(delay || 0);\n    }\n\n    return this;\n  }\n};\nvar _default = Animatable;\nmodule.exports = _default;","// TODO Draggable for group\n// FIXME Draggable on element which has parent rotation or scale\nfunction Draggable() {\n  this.on('mousedown', this._dragStart, this);\n  this.on('mousemove', this._drag, this);\n  this.on('mouseup', this._dragEnd, this);\n  this.on('globalout', this._dragEnd, this); // this._dropTarget = null;\n  // this._draggingTarget = null;\n  // this._x = 0;\n  // this._y = 0;\n}\n\nDraggable.prototype = {\n  constructor: Draggable,\n  _dragStart: function (e) {\n    var draggingTarget = e.target;\n\n    if (draggingTarget && draggingTarget.draggable) {\n      this._draggingTarget = draggingTarget;\n      draggingTarget.dragging = true;\n      this._x = e.offsetX;\n      this._y = e.offsetY;\n      this.dispatchToElement(param(draggingTarget, e), 'dragstart', e.event);\n    }\n  },\n  _drag: function (e) {\n    var draggingTarget = this._draggingTarget;\n\n    if (draggingTarget) {\n      var x = e.offsetX;\n      var y = e.offsetY;\n      var dx = x - this._x;\n      var dy = y - this._y;\n      this._x = x;\n      this._y = y;\n      draggingTarget.drift(dx, dy, e);\n      this.dispatchToElement(param(draggingTarget, e), 'drag', e.event);\n      var dropTarget = this.findHover(x, y, draggingTarget).target;\n      var lastDropTarget = this._dropTarget;\n      this._dropTarget = dropTarget;\n\n      if (draggingTarget !== dropTarget) {\n        if (lastDropTarget && dropTarget !== lastDropTarget) {\n          this.dispatchToElement(param(lastDropTarget, e), 'dragleave', e.event);\n        }\n\n        if (dropTarget && dropTarget !== lastDropTarget) {\n          this.dispatchToElement(param(dropTarget, e), 'dragenter', e.event);\n        }\n      }\n    }\n  },\n  _dragEnd: function (e) {\n    var draggingTarget = this._draggingTarget;\n\n    if (draggingTarget) {\n      draggingTarget.dragging = false;\n    }\n\n    this.dispatchToElement(param(draggingTarget, e), 'dragend', e.event);\n\n    if (this._dropTarget) {\n      this.dispatchToElement(param(this._dropTarget, e), 'drop', e.event);\n    }\n\n    this._draggingTarget = null;\n    this._dropTarget = null;\n  }\n};\n\nfunction param(target, e) {\n  return {\n    target: target,\n    topTarget: e && e.topTarget\n  };\n}\n\nvar _default = Draggable;\nmodule.exports = _default;","/**\n * 事件扩展\n * @module zrender/mixin/Eventful\n * @author Kener (@Kener-林峰, kener.linfeng@gmail.com)\n *         pissang (https://www.github.com/pissang)\n */\nvar arrySlice = Array.prototype.slice;\n/**\n * 事件分发器\n * @alias module:zrender/mixin/Eventful\n * @constructor\n */\n\nvar Eventful = function () {\n  this._$handlers = {};\n};\n\nEventful.prototype = {\n  constructor: Eventful,\n\n  /**\n   * 单次触发绑定，trigger后销毁\n   *\n   * @param {string} event 事件名\n   * @param {Function} handler 响应函数\n   * @param {Object} context\n   */\n  one: function (event, handler, context) {\n    var _h = this._$handlers;\n\n    if (!handler || !event) {\n      return this;\n    }\n\n    if (!_h[event]) {\n      _h[event] = [];\n    }\n\n    for (var i = 0; i < _h[event].length; i++) {\n      if (_h[event][i].h === handler) {\n        return this;\n      }\n    }\n\n    _h[event].push({\n      h: handler,\n      one: true,\n      ctx: context || this\n    });\n\n    return this;\n  },\n\n  /**\n   * 绑定事件\n   * @param {string} event 事件名\n   * @param {Function} handler 事件处理函数\n   * @param {Object} [context]\n   */\n  on: function (event, handler, context) {\n    var _h = this._$handlers;\n\n    if (!handler || !event) {\n      return this;\n    }\n\n    if (!_h[event]) {\n      _h[event] = [];\n    }\n\n    for (var i = 0; i < _h[event].length; i++) {\n      if (_h[event][i].h === handler) {\n        return this;\n      }\n    }\n\n    _h[event].push({\n      h: handler,\n      one: false,\n      ctx: context || this\n    });\n\n    return this;\n  },\n\n  /**\n   * 是否绑定了事件\n   * @param  {string}  event\n   * @return {boolean}\n   */\n  isSilent: function (event) {\n    var _h = this._$handlers;\n    return _h[event] && _h[event].length;\n  },\n\n  /**\n   * 解绑事件\n   * @param {string} event 事件名\n   * @param {Function} [handler] 事件处理函数\n   */\n  off: function (event, handler) {\n    var _h = this._$handlers;\n\n    if (!event) {\n      this._$handlers = {};\n      return this;\n    }\n\n    if (handler) {\n      if (_h[event]) {\n        var newList = [];\n\n        for (var i = 0, l = _h[event].length; i < l; i++) {\n          if (_h[event][i]['h'] != handler) {\n            newList.push(_h[event][i]);\n          }\n        }\n\n        _h[event] = newList;\n      }\n\n      if (_h[event] && _h[event].length === 0) {\n        delete _h[event];\n      }\n    } else {\n      delete _h[event];\n    }\n\n    return this;\n  },\n\n  /**\n   * 事件分发\n   *\n   * @param {string} type 事件类型\n   */\n  trigger: function (type) {\n    if (this._$handlers[type]) {\n      var args = arguments;\n      var argLen = args.length;\n\n      if (argLen > 3) {\n        args = arrySlice.call(args, 1);\n      }\n\n      var _h = this._$handlers[type];\n      var len = _h.length;\n\n      for (var i = 0; i < len;) {\n        // Optimize advise from backbone\n        switch (argLen) {\n          case 1:\n            _h[i]['h'].call(_h[i]['ctx']);\n\n            break;\n\n          case 2:\n            _h[i]['h'].call(_h[i]['ctx'], args[1]);\n\n            break;\n\n          case 3:\n            _h[i]['h'].call(_h[i]['ctx'], args[1], args[2]);\n\n            break;\n\n          default:\n            // have more than 2 given arguments\n            _h[i]['h'].apply(_h[i]['ctx'], args);\n\n            break;\n        }\n\n        if (_h[i]['one']) {\n          _h.splice(i, 1);\n\n          len--;\n        } else {\n          i++;\n        }\n      }\n    }\n\n    return this;\n  },\n\n  /**\n   * 带有context的事件分发, 最后一个参数是事件回调的context\n   * @param {string} type 事件类型\n   */\n  triggerWithContext: function (type) {\n    if (this._$handlers[type]) {\n      var args = arguments;\n      var argLen = args.length;\n\n      if (argLen > 4) {\n        args = arrySlice.call(args, 1, args.length - 1);\n      }\n\n      var ctx = args[args.length - 1];\n      var _h = this._$handlers[type];\n      var len = _h.length;\n\n      for (var i = 0; i < len;) {\n        // Optimize advise from backbone\n        switch (argLen) {\n          case 1:\n            _h[i]['h'].call(ctx);\n\n            break;\n\n          case 2:\n            _h[i]['h'].call(ctx, args[1]);\n\n            break;\n\n          case 3:\n            _h[i]['h'].call(ctx, args[1], args[2]);\n\n            break;\n\n          default:\n            // have more than 2 given arguments\n            _h[i]['h'].apply(ctx, args);\n\n            break;\n        }\n\n        if (_h[i]['one']) {\n          _h.splice(i, 1);\n\n          len--;\n        } else {\n          i++;\n        }\n      }\n    }\n\n    return this;\n  }\n}; // 对象可以通过 onxxxx 绑定事件\n\n/**\n * @event module:zrender/mixin/Eventful#onclick\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#onmouseover\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#onmouseout\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#onmousemove\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#onmousewheel\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#onmousedown\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#onmouseup\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#ondrag\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#ondragstart\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#ondragend\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#ondragenter\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#ondragleave\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#ondragover\n * @type {Function}\n * @default null\n */\n\n/**\n * @event module:zrender/mixin/Eventful#ondrop\n * @type {Function}\n * @default null\n */\n\nvar _default = Eventful;\nmodule.exports = _default;","var matrix = require(\"../core/matrix\");\n\nvar vector = require(\"../core/vector\");\n\n/**\n * 提供变换扩展\n * @module zrender/mixin/Transformable\n * @author pissang (https://www.github.com/pissang)\n */\nvar mIdentity = matrix.identity;\nvar EPSILON = 5e-5;\n\nfunction isNotAroundZero(val) {\n  return val > EPSILON || val < -EPSILON;\n}\n/**\n * @alias module:zrender/mixin/Transformable\n * @constructor\n */\n\n\nvar Transformable = function (opts) {\n  opts = opts || {}; // If there are no given position, rotation, scale\n\n  if (!opts.position) {\n    /**\n     * 平移\n     * @type {Array.<number>}\n     * @default [0, 0]\n     */\n    this.position = [0, 0];\n  }\n\n  if (opts.rotation == null) {\n    /**\n     * 旋转\n     * @type {Array.<number>}\n     * @default 0\n     */\n    this.rotation = 0;\n  }\n\n  if (!opts.scale) {\n    /**\n     * 缩放\n     * @type {Array.<number>}\n     * @default [1, 1]\n     */\n    this.scale = [1, 1];\n  }\n  /**\n   * 旋转和缩放的原点\n   * @type {Array.<number>}\n   * @default null\n   */\n\n\n  this.origin = this.origin || null;\n};\n\nvar transformableProto = Transformable.prototype;\ntransformableProto.transform = null;\n/**\n * 判断是否需要有坐标变换\n * 如果有坐标变换, 则从position, rotation, scale以及父节点的transform计算出自身的transform矩阵\n */\n\ntransformableProto.needLocalTransform = function () {\n  return isNotAroundZero(this.rotation) || isNotAroundZero(this.position[0]) || isNotAroundZero(this.position[1]) || isNotAroundZero(this.scale[0] - 1) || isNotAroundZero(this.scale[1] - 1);\n};\n\ntransformableProto.updateTransform = function () {\n  var parent = this.parent;\n  var parentHasTransform = parent && parent.transform;\n  var needLocalTransform = this.needLocalTransform();\n  var m = this.transform;\n\n  if (!(needLocalTransform || parentHasTransform)) {\n    m && mIdentity(m);\n    return;\n  }\n\n  m = m || matrix.create();\n\n  if (needLocalTransform) {\n    this.getLocalTransform(m);\n  } else {\n    mIdentity(m);\n  } // 应用父节点变换\n\n\n  if (parentHasTransform) {\n    if (needLocalTransform) {\n      matrix.mul(m, parent.transform, m);\n    } else {\n      matrix.copy(m, parent.transform);\n    }\n  } // 保存这个变换矩阵\n\n\n  this.transform = m;\n  this.invTransform = this.invTransform || matrix.create();\n  matrix.invert(this.invTransform, m);\n};\n\ntransformableProto.getLocalTransform = function (m) {\n  return Transformable.getLocalTransform(this, m);\n};\n/**\n * 将自己的transform应用到context上\n * @param {CanvasRenderingContext2D} ctx\n */\n\n\ntransformableProto.setTransform = function (ctx) {\n  var m = this.transform;\n  var dpr = ctx.dpr || 1;\n\n  if (m) {\n    ctx.setTransform(dpr * m[0], dpr * m[1], dpr * m[2], dpr * m[3], dpr * m[4], dpr * m[5]);\n  } else {\n    ctx.setTransform(dpr, 0, 0, dpr, 0, 0);\n  }\n};\n\ntransformableProto.restoreTransform = function (ctx) {\n  var dpr = ctx.dpr || 1;\n  ctx.setTransform(dpr, 0, 0, dpr, 0, 0);\n};\n\nvar tmpTransform = [];\n/**\n * 分解`transform`矩阵到`position`, `rotation`, `scale`\n */\n\ntransformableProto.decomposeTransform = function () {\n  if (!this.transform) {\n    return;\n  }\n\n  var parent = this.parent;\n  var m = this.transform;\n\n  if (parent && parent.transform) {\n    // Get local transform and decompose them to position, scale, rotation\n    matrix.mul(tmpTransform, parent.invTransform, m);\n    m = tmpTransform;\n  }\n\n  var sx = m[0] * m[0] + m[1] * m[1];\n  var sy = m[2] * m[2] + m[3] * m[3];\n  var position = this.position;\n  var scale = this.scale;\n\n  if (isNotAroundZero(sx - 1)) {\n    sx = Math.sqrt(sx);\n  }\n\n  if (isNotAroundZero(sy - 1)) {\n    sy = Math.sqrt(sy);\n  }\n\n  if (m[0] < 0) {\n    sx = -sx;\n  }\n\n  if (m[3] < 0) {\n    sy = -sy;\n  }\n\n  position[0] = m[4];\n  position[1] = m[5];\n  scale[0] = sx;\n  scale[1] = sy;\n  this.rotation = Math.atan2(-m[1] / sy, m[0] / sx);\n};\n/**\n * Get global scale\n * @return {Array.<number>}\n */\n\n\ntransformableProto.getGlobalScale = function () {\n  var m = this.transform;\n\n  if (!m) {\n    return [1, 1];\n  }\n\n  var sx = Math.sqrt(m[0] * m[0] + m[1] * m[1]);\n  var sy = Math.sqrt(m[2] * m[2] + m[3] * m[3]);\n\n  if (m[0] < 0) {\n    sx = -sx;\n  }\n\n  if (m[3] < 0) {\n    sy = -sy;\n  }\n\n  return [sx, sy];\n};\n/**\n * 变换坐标位置到 shape 的局部坐标空间\n * @method\n * @param {number} x\n * @param {number} y\n * @return {Array.<number>}\n */\n\n\ntransformableProto.transformCoordToLocal = function (x, y) {\n  var v2 = [x, y];\n  var invTransform = this.invTransform;\n\n  if (invTransform) {\n    vector.applyTransform(v2, v2, invTransform);\n  }\n\n  return v2;\n};\n/**\n * 变换局部坐标位置到全局坐标空间\n * @method\n * @param {number} x\n * @param {number} y\n * @return {Array.<number>}\n */\n\n\ntransformableProto.transformCoordToGlobal = function (x, y) {\n  var v2 = [x, y];\n  var transform = this.transform;\n\n  if (transform) {\n    vector.applyTransform(v2, v2, transform);\n  }\n\n  return v2;\n};\n/**\n * @static\n * @param {Object} target\n * @param {Array.<number>} target.origin\n * @param {number} target.rotation\n * @param {Array.<number>} target.position\n * @param {Array.<number>} [m]\n */\n\n\nTransformable.getLocalTransform = function (target, m) {\n  m = m || [];\n  mIdentity(m);\n  var origin = target.origin;\n  var scale = target.scale || [1, 1];\n  var rotation = target.rotation || 0;\n  var position = target.position || [0, 0];\n\n  if (origin) {\n    // Translate to origin\n    m[4] -= origin[0];\n    m[5] -= origin[1];\n  }\n\n  matrix.scale(m, m, scale);\n\n  if (rotation) {\n    matrix.rotate(m, m, rotation);\n  }\n\n  if (origin) {\n    // Translate back from origin\n    m[4] += origin[0];\n    m[5] += origin[1];\n  }\n\n  m[4] += position[0];\n  m[5] += position[1];\n  return m;\n};\n\nvar _default = Transformable;\nmodule.exports = _default;","var _core = require(\"./core\");\n\nvar createElement = _core.createElement;\n\nvar util = require(\"../core/util\");\n\nvar each = util.each;\n\nvar zrLog = require(\"../core/log\");\n\nvar Path = require(\"../graphic/Path\");\n\nvar ZImage = require(\"../graphic/Image\");\n\nvar ZText = require(\"../graphic/Text\");\n\nvar arrayDiff = require(\"../core/arrayDiff2\");\n\nvar GradientManager = require(\"./helper/GradientManager\");\n\nvar ClippathManager = require(\"./helper/ClippathManager\");\n\nvar ShadowManager = require(\"./helper/ShadowManager\");\n\nvar _graphic = require(\"./graphic\");\n\nvar svgPath = _graphic.path;\nvar svgImage = _graphic.image;\nvar svgText = _graphic.text;\n\n/**\n * SVG Painter\n * @module zrender/svg/Painter\n */\nfunction parseInt10(val) {\n  return parseInt(val, 10);\n}\n\nfunction getSvgProxy(el) {\n  if (el instanceof Path) {\n    return svgPath;\n  } else if (el instanceof ZImage) {\n    return svgImage;\n  } else if (el instanceof ZText) {\n    return svgText;\n  } else {\n    return svgPath;\n  }\n}\n\nfunction checkParentAvailable(parent, child) {\n  return child && parent && child.parentNode !== parent;\n}\n\nfunction insertAfter(parent, child, prevSibling) {\n  if (checkParentAvailable(parent, child) && prevSibling) {\n    var nextSibling = prevSibling.nextSibling;\n    nextSibling ? parent.insertBefore(child, nextSibling) : parent.appendChild(child);\n  }\n}\n\nfunction prepend(parent, child) {\n  if (checkParentAvailable(parent, child)) {\n    var firstChild = parent.firstChild;\n    firstChild ? parent.insertBefore(child, firstChild) : parent.appendChild(child);\n  }\n}\n\nfunction append(parent, child) {\n  if (checkParentAvailable(parent, child)) {\n    parent.appendChild(child);\n  }\n}\n\nfunction remove(parent, child) {\n  if (child && parent && child.parentNode === parent) {\n    parent.removeChild(child);\n  }\n}\n\nfunction getTextSvgElement(displayable) {\n  return displayable.__textSvgEl;\n}\n\nfunction getSvgElement(displayable) {\n  return displayable.__svgEl;\n}\n/**\n * @alias module:zrender/svg/Painter\n * @constructor\n * @param {HTMLElement} root 绘图容器\n * @param {module:zrender/Storage} storage\n * @param {Object} opts\n */\n\n\nvar SVGPainter = function (root, storage, opts, zrId) {\n  this.root = root;\n  this.storage = storage;\n  this._opts = opts = util.extend({}, opts || {});\n  var svgRoot = createElement('svg');\n  svgRoot.setAttribute('xmlns', 'http://www.w3.org/2000/svg');\n  svgRoot.setAttribute('version', '1.1');\n  svgRoot.setAttribute('baseProfile', 'full');\n  svgRoot.style.cssText = 'user-select:none;position:absolute;left:0;top:0;';\n  this.gradientManager = new GradientManager(zrId, svgRoot);\n  this.clipPathManager = new ClippathManager(zrId, svgRoot);\n  this.shadowManager = new ShadowManager(zrId, svgRoot);\n  var viewport = document.createElement('div');\n  viewport.style.cssText = 'overflow:hidden;position:relative';\n  this._svgRoot = svgRoot;\n  this._viewport = viewport;\n  root.appendChild(viewport);\n  viewport.appendChild(svgRoot);\n  this.resize(opts.width, opts.height);\n  this._visibleList = [];\n};\n\nSVGPainter.prototype = {\n  constructor: SVGPainter,\n  getType: function () {\n    return 'svg';\n  },\n  getViewportRoot: function () {\n    return this._viewport;\n  },\n  getViewportRootOffset: function () {\n    var viewportRoot = this.getViewportRoot();\n\n    if (viewportRoot) {\n      return {\n        offsetLeft: viewportRoot.offsetLeft || 0,\n        offsetTop: viewportRoot.offsetTop || 0\n      };\n    }\n  },\n  refresh: function () {\n    var list = this.storage.getDisplayList(true);\n\n    this._paintList(list);\n  },\n  _paintList: function (list) {\n    this.gradientManager.markAllUnused();\n    this.clipPathManager.markAllUnused();\n    this.shadowManager.markAllUnused();\n    var svgRoot = this._svgRoot;\n    var visibleList = this._visibleList;\n    var listLen = list.length;\n    var newVisibleList = [];\n    var i;\n\n    for (i = 0; i < listLen; i++) {\n      var displayable = list[i];\n      var svgProxy = getSvgProxy(displayable);\n      var svgElement = getSvgElement(displayable) || getTextSvgElement(displayable);\n\n      if (!displayable.invisible) {\n        if (displayable.__dirty) {\n          svgProxy && svgProxy.brush(displayable); // Update clipPath\n\n          this.clipPathManager.update(displayable); // Update gradient and shadow\n\n          if (displayable.style) {\n            this.gradientManager.update(displayable.style.fill);\n            this.gradientManager.update(displayable.style.stroke);\n            this.shadowManager.update(svgElement, displayable);\n          }\n\n          displayable.__dirty = false;\n        }\n\n        newVisibleList.push(displayable);\n      }\n    }\n\n    var diff = arrayDiff(visibleList, newVisibleList);\n    var prevSvgElement; // First do remove, in case element moved to the head and do remove\n    // after add\n\n    for (i = 0; i < diff.length; i++) {\n      var item = diff[i];\n\n      if (item.removed) {\n        for (var k = 0; k < item.count; k++) {\n          var displayable = visibleList[item.indices[k]];\n          var svgElement = getSvgElement(displayable);\n          var textSvgElement = getTextSvgElement(displayable);\n          remove(svgRoot, svgElement);\n          remove(svgRoot, textSvgElement);\n        }\n      }\n    }\n\n    for (i = 0; i < diff.length; i++) {\n      var item = diff[i];\n\n      if (item.added) {\n        for (var k = 0; k < item.count; k++) {\n          var displayable = newVisibleList[item.indices[k]];\n          var svgElement = getSvgElement(displayable);\n          var textSvgElement = getTextSvgElement(displayable);\n          prevSvgElement ? insertAfter(svgRoot, svgElement, prevSvgElement) : prepend(svgRoot, svgElement);\n\n          if (svgElement) {\n            insertAfter(svgRoot, textSvgElement, svgElement);\n          } else if (prevSvgElement) {\n            insertAfter(svgRoot, textSvgElement, prevSvgElement);\n          } else {\n            prepend(svgRoot, textSvgElement);\n          } // Insert text\n\n\n          insertAfter(svgRoot, textSvgElement, svgElement);\n          prevSvgElement = textSvgElement || svgElement || prevSvgElement;\n          this.gradientManager.addWithoutUpdate(svgElement, displayable);\n          this.shadowManager.addWithoutUpdate(prevSvgElement, displayable);\n          this.clipPathManager.markUsed(displayable);\n        }\n      } else if (!item.removed) {\n        for (var k = 0; k < item.count; k++) {\n          var displayable = newVisibleList[item.indices[k]];\n          prevSvgElement = svgElement = getTextSvgElement(displayable) || getSvgElement(displayable) || prevSvgElement;\n          this.gradientManager.markUsed(displayable);\n          this.gradientManager.addWithoutUpdate(svgElement, displayable);\n          this.shadowManager.markUsed(displayable);\n          this.shadowManager.addWithoutUpdate(svgElement, displayable);\n          this.clipPathManager.markUsed(displayable);\n        }\n      }\n    }\n\n    this.gradientManager.removeUnused();\n    this.clipPathManager.removeUnused();\n    this.shadowManager.removeUnused();\n    this._visibleList = newVisibleList;\n  },\n  _getDefs: function (isForceCreating) {\n    var svgRoot = this._svgRoot;\n\n    var defs = this._svgRoot.getElementsByTagName('defs');\n\n    if (defs.length === 0) {\n      // Not exist\n      if (isForceCreating) {\n        var defs = svgRoot.insertBefore(createElement('defs'), // Create new tag\n        svgRoot.firstChild // Insert in the front of svg\n        );\n\n        if (!defs.contains) {\n          // IE doesn't support contains method\n          defs.contains = function (el) {\n            var children = defs.children;\n\n            if (!children) {\n              return false;\n            }\n\n            for (var i = children.length - 1; i >= 0; --i) {\n              if (children[i] === el) {\n                return true;\n              }\n            }\n\n            return false;\n          };\n        }\n\n        return defs;\n      } else {\n        return null;\n      }\n    } else {\n      return defs[0];\n    }\n  },\n  resize: function (width, height) {\n    var viewport = this._viewport; // FIXME Why ?\n\n    viewport.style.display = 'none'; // Save input w/h\n\n    var opts = this._opts;\n    width != null && (opts.width = width);\n    height != null && (opts.height = height);\n    width = this._getSize(0);\n    height = this._getSize(1);\n    viewport.style.display = '';\n\n    if (this._width !== width || this._height !== height) {\n      this._width = width;\n      this._height = height;\n      var viewportStyle = viewport.style;\n      viewportStyle.width = width + 'px';\n      viewportStyle.height = height + 'px';\n      var svgRoot = this._svgRoot; // Set width by 'svgRoot.width = width' is invalid\n\n      svgRoot.setAttribute('width', width);\n      svgRoot.setAttribute('height', height);\n    }\n  },\n\n  /**\n   * 获取绘图区域宽度\n   */\n  getWidth: function () {\n    return this._width;\n  },\n\n  /**\n   * 获取绘图区域高度\n   */\n  getHeight: function () {\n    return this._height;\n  },\n  _getSize: function (whIdx) {\n    var opts = this._opts;\n    var wh = ['width', 'height'][whIdx];\n    var cwh = ['clientWidth', 'clientHeight'][whIdx];\n    var plt = ['paddingLeft', 'paddingTop'][whIdx];\n    var prb = ['paddingRight', 'paddingBottom'][whIdx];\n\n    if (opts[wh] != null && opts[wh] !== 'auto') {\n      return parseFloat(opts[wh]);\n    }\n\n    var root = this.root; // IE8 does not support getComputedStyle, but it use VML.\n\n    var stl = document.defaultView.getComputedStyle(root);\n    return (root[cwh] || parseInt10(stl[wh]) || parseInt10(root.style[wh])) - (parseInt10(stl[plt]) || 0) - (parseInt10(stl[prb]) || 0) | 0;\n  },\n  dispose: function () {\n    this.root.innerHTML = '';\n    this._svgRoot = this._viewport = this.storage = null;\n  },\n  clear: function () {\n    if (this._viewport) {\n      this.root.removeChild(this._viewport);\n    }\n  },\n  pathToSvg: function () {\n    this.refresh();\n    var html = this._svgRoot.outerHTML;\n    return 'data:img/svg+xml;utf-8,' + unescape(html);\n  }\n}; // Not supported methods\n\nfunction createMethodNotSupport(method) {\n  return function () {\n    zrLog('In SVG mode painter not support method \"' + method + '\"');\n  };\n} // Unsuppoted methods\n\n\neach(['getLayer', 'insertLayer', 'eachLayer', 'eachBuiltinLayer', 'eachOtherLayer', 'getLayers', 'modLayer', 'delLayer', 'clearLayer', 'toDataURL', 'pathToImage'], function (name) {\n  SVGPainter.prototype[name] = createMethodNotSupport(name);\n});\nvar _default = SVGPainter;\nmodule.exports = _default;","var svgURI = 'http://www.w3.org/2000/svg';\n\nfunction createElement(name) {\n  return document.createElementNS(svgURI, name);\n}\n\nexports.createElement = createElement;","var _core = require(\"./core\");\n\nvar createElement = _core.createElement;\n\nvar PathProxy = require(\"../core/PathProxy\");\n\nvar BoundingRect = require(\"../core/BoundingRect\");\n\nvar textContain = require(\"../contain/text\");\n\nvar textHelper = require(\"../graphic/helper/text\");\n\nvar Text = require(\"../graphic/Text\");\n\n// TODO\n// 1. shadow\n// 2. Image: sx, sy, sw, sh\nvar CMD = PathProxy.CMD;\nvar arrayJoin = Array.prototype.join;\nvar NONE = 'none';\nvar mathRound = Math.round;\nvar mathSin = Math.sin;\nvar mathCos = Math.cos;\nvar PI = Math.PI;\nvar PI2 = Math.PI * 2;\nvar degree = 180 / PI;\nvar EPSILON = 1e-4;\n\nfunction round4(val) {\n  return mathRound(val * 1e4) / 1e4;\n}\n\nfunction isAroundZero(val) {\n  return val < EPSILON && val > -EPSILON;\n}\n\nfunction pathHasFill(style, isText) {\n  var fill = isText ? style.textFill : style.fill;\n  return fill != null && fill !== NONE;\n}\n\nfunction pathHasStroke(style, isText) {\n  var stroke = isText ? style.textStroke : style.stroke;\n  return stroke != null && stroke !== NONE;\n}\n\nfunction setTransform(svgEl, m) {\n  if (m) {\n    attr(svgEl, 'transform', 'matrix(' + arrayJoin.call(m, ',') + ')');\n  }\n}\n\nfunction attr(el, key, val) {\n  if (!val || val.type !== 'linear' && val.type !== 'radial') {\n    // Don't set attribute for gradient, since it need new dom nodes\n    el.setAttribute(key, val);\n  }\n}\n\nfunction attrXLink(el, key, val) {\n  el.setAttributeNS('http://www.w3.org/1999/xlink', key, val);\n}\n\nfunction bindStyle(svgEl, style, isText) {\n  if (pathHasFill(style, isText)) {\n    var fill = isText ? style.textFill : style.fill;\n    fill = fill === 'transparent' ? NONE : fill;\n    /**\n     * FIXME:\n     * This is a temporary fix for Chrome's clipping bug\n     * that happens when a clip-path is referring another one.\n     * This fix should be used before Chrome's bug is fixed.\n     * For an element that has clip-path, and fill is none,\n     * set it to be \"rgba(0, 0, 0, 0.002)\" will hide the element.\n     * Otherwise, it will show black fill color.\n     * 0.002 is used because this won't work for alpha values smaller\n     * than 0.002.\n     *\n     * See\n     * https://bugs.chromium.org/p/chromium/issues/detail?id=659790\n     * for more information.\n     */\n\n    if (svgEl.getAttribute('clip-path') !== 'none' && fill === NONE) {\n      fill = 'rgba(0, 0, 0, 0.002)';\n    }\n\n    attr(svgEl, 'fill', fill);\n    attr(svgEl, 'fill-opacity', style.opacity);\n  } else {\n    attr(svgEl, 'fill', NONE);\n  }\n\n  if (pathHasStroke(style, isText)) {\n    var stroke = isText ? style.textStroke : style.stroke;\n    stroke = stroke === 'transparent' ? NONE : stroke;\n    attr(svgEl, 'stroke', stroke);\n    var strokeWidth = isText ? style.textStrokeWidth : style.lineWidth;\n    var strokeScale = !isText && style.strokeNoScale ? style.host.getLineScale() : 1;\n    attr(svgEl, 'stroke-width', strokeWidth / strokeScale); // stroke then fill for text; fill then stroke for others\n\n    attr(svgEl, 'paint-order', isText ? 'stroke' : 'fill');\n    attr(svgEl, 'stroke-opacity', style.opacity);\n    var lineDash = style.lineDash;\n\n    if (lineDash) {\n      attr(svgEl, 'stroke-dasharray', style.lineDash.join(','));\n      attr(svgEl, 'stroke-dashoffset', mathRound(style.lineDashOffset || 0));\n    } else {\n      attr(svgEl, 'stroke-dasharray', '');\n    } // PENDING\n\n\n    style.lineCap && attr(svgEl, 'stroke-linecap', style.lineCap);\n    style.lineJoin && attr(svgEl, 'stroke-linejoin', style.lineJoin);\n    style.miterLimit && attr(svgEl, 'stroke-miterlimit', style.miterLimit);\n  } else {\n    attr(svgEl, 'stroke', NONE);\n  }\n}\n/***************************************************\n * PATH\n **************************************************/\n\n\nfunction pathDataToString(path) {\n  var str = [];\n  var data = path.data;\n  var dataLength = path.len();\n\n  for (var i = 0; i < dataLength;) {\n    var cmd = data[i++];\n    var cmdStr = '';\n    var nData = 0;\n\n    switch (cmd) {\n      case CMD.M:\n        cmdStr = 'M';\n        nData = 2;\n        break;\n\n      case CMD.L:\n        cmdStr = 'L';\n        nData = 2;\n        break;\n\n      case CMD.Q:\n        cmdStr = 'Q';\n        nData = 4;\n        break;\n\n      case CMD.C:\n        cmdStr = 'C';\n        nData = 6;\n        break;\n\n      case CMD.A:\n        var cx = data[i++];\n        var cy = data[i++];\n        var rx = data[i++];\n        var ry = data[i++];\n        var theta = data[i++];\n        var dTheta = data[i++];\n        var psi = data[i++];\n        var clockwise = data[i++];\n        var dThetaPositive = Math.abs(dTheta);\n        var isCircle = isAroundZero(dThetaPositive - PI2) && !isAroundZero(dThetaPositive);\n        var large = false;\n\n        if (dThetaPositive >= PI2) {\n          large = true;\n        } else if (isAroundZero(dThetaPositive)) {\n          large = false;\n        } else {\n          large = (dTheta > -PI && dTheta < 0 || dTheta > PI) === !!clockwise;\n        }\n\n        var x0 = round4(cx + rx * mathCos(theta));\n        var y0 = round4(cy + ry * mathSin(theta)); // It will not draw if start point and end point are exactly the same\n        // We need to shift the end point with a small value\n        // FIXME A better way to draw circle ?\n\n        if (isCircle) {\n          if (clockwise) {\n            dTheta = PI2 - 1e-4;\n          } else {\n            dTheta = -PI2 + 1e-4;\n          }\n\n          large = true;\n\n          if (i === 9) {\n            // Move to (x0, y0) only when CMD.A comes at the\n            // first position of a shape.\n            // For instance, when drawing a ring, CMD.A comes\n            // after CMD.M, so it's unnecessary to move to\n            // (x0, y0).\n            str.push('M', x0, y0);\n          }\n        }\n\n        var x = round4(cx + rx * mathCos(theta + dTheta));\n        var y = round4(cy + ry * mathSin(theta + dTheta)); // FIXME Ellipse\n\n        str.push('A', round4(rx), round4(ry), mathRound(psi * degree), +large, +clockwise, x, y);\n        break;\n\n      case CMD.Z:\n        cmdStr = 'Z';\n        break;\n\n      case CMD.R:\n        var x = round4(data[i++]);\n        var y = round4(data[i++]);\n        var w = round4(data[i++]);\n        var h = round4(data[i++]);\n        str.push('M', x, y, 'L', x + w, y, 'L', x + w, y + h, 'L', x, y + h, 'L', x, y);\n        break;\n    }\n\n    cmdStr && str.push(cmdStr);\n\n    for (var j = 0; j < nData; j++) {\n      // PENDING With scale\n      str.push(round4(data[i++]));\n    }\n  }\n\n  return str.join(' ');\n}\n\nvar svgPath = {};\n\nsvgPath.brush = function (el) {\n  var style = el.style;\n  var svgEl = el.__svgEl;\n\n  if (!svgEl) {\n    svgEl = createElement('path');\n    el.__svgEl = svgEl;\n  }\n\n  if (!el.path) {\n    el.createPathProxy();\n  }\n\n  var path = el.path;\n\n  if (el.__dirtyPath) {\n    path.beginPath();\n    el.buildPath(path, el.shape);\n    el.__dirtyPath = false;\n    var pathStr = pathDataToString(path);\n\n    if (pathStr.indexOf('NaN') < 0) {\n      // Ignore illegal path, which may happen such in out-of-range\n      // data in Calendar series.\n      attr(svgEl, 'd', pathStr);\n    }\n  }\n\n  bindStyle(svgEl, style);\n  setTransform(svgEl, el.transform);\n\n  if (style.text != null) {\n    svgTextDrawRectText(el, el.getBoundingRect());\n  }\n};\n/***************************************************\n * IMAGE\n **************************************************/\n\n\nvar svgImage = {};\n\nsvgImage.brush = function (el) {\n  var style = el.style;\n  var image = style.image;\n\n  if (image instanceof HTMLImageElement) {\n    var src = image.src;\n    image = src;\n  }\n\n  if (!image) {\n    return;\n  }\n\n  var x = style.x || 0;\n  var y = style.y || 0;\n  var dw = style.width;\n  var dh = style.height;\n  var svgEl = el.__svgEl;\n\n  if (!svgEl) {\n    svgEl = createElement('image');\n    el.__svgEl = svgEl;\n  }\n\n  if (image !== el.__imageSrc) {\n    attrXLink(svgEl, 'href', image); // Caching image src\n\n    el.__imageSrc = image;\n  }\n\n  attr(svgEl, 'width', dw);\n  attr(svgEl, 'height', dh);\n  attr(svgEl, 'x', x);\n  attr(svgEl, 'y', y);\n  setTransform(svgEl, el.transform);\n\n  if (style.text != null) {\n    svgTextDrawRectText(el, el.getBoundingRect());\n  }\n};\n/***************************************************\n * TEXT\n **************************************************/\n\n\nvar svgText = {};\nvar tmpRect = new BoundingRect();\n\nvar svgTextDrawRectText = function (el, rect, textRect) {\n  var style = el.style;\n  el.__dirty && textHelper.normalizeTextStyle(style, true);\n  var text = style.text; // Convert to string\n\n  if (text == null) {\n    // Draw no text only when text is set to null, but not ''\n    return;\n  } else {\n    text += '';\n  }\n\n  var textSvgEl = el.__textSvgEl;\n\n  if (!textSvgEl) {\n    textSvgEl = createElement('text');\n    el.__textSvgEl = textSvgEl;\n  }\n\n  bindStyle(textSvgEl, style, true);\n\n  if (el instanceof Text || el.style.transformText) {\n    // Transform text with element\n    setTransform(textSvgEl, el.transform);\n  } else {\n    if (el.transform) {\n      tmpRect.copy(rect);\n      tmpRect.applyTransform(el.transform);\n      rect = tmpRect;\n    } else {\n      var pos = el.transformCoordToGlobal(rect.x, rect.y);\n      rect.x = pos[0];\n      rect.y = pos[1];\n    }\n  }\n\n  var x;\n  var y;\n  var textPosition = style.textPosition;\n  var distance = style.textDistance;\n  var align = style.textAlign || 'left';\n\n  if (typeof style.fontSize === 'number') {\n    style.fontSize += 'px';\n  }\n\n  var font = style.font || [style.fontStyle || '', style.fontWeight || '', style.fontSize || '', style.fontFamily || ''].join(' ') || textContain.DEFAULT_FONT;\n  var verticalAlign = getVerticalAlignForSvg(style.textVerticalAlign);\n  textRect = textContain.getBoundingRect(text, font, align, verticalAlign);\n  var lineHeight = textRect.lineHeight; // Text position represented by coord\n\n  if (textPosition instanceof Array) {\n    x = rect.x + textPosition[0];\n    y = rect.y + textPosition[1];\n  } else {\n    var newPos = textContain.adjustTextPositionOnRect(textPosition, rect, distance);\n    x = newPos.x;\n    y = newPos.y;\n    verticalAlign = getVerticalAlignForSvg(newPos.textVerticalAlign);\n    align = newPos.textAlign;\n  }\n\n  attr(textSvgEl, 'alignment-baseline', verticalAlign);\n\n  if (font) {\n    textSvgEl.style.font = font;\n  }\n\n  var textPadding = style.textPadding; // Make baseline top\n\n  attr(textSvgEl, 'x', x);\n  attr(textSvgEl, 'y', y);\n  var textLines = text.split('\\n');\n  var nTextLines = textLines.length;\n  var textAnchor = align; // PENDING\n\n  if (textAnchor === 'left') {\n    textAnchor = 'start';\n    textPadding && (x += textPadding[3]);\n  } else if (textAnchor === 'right') {\n    textAnchor = 'end';\n    textPadding && (x -= textPadding[1]);\n  } else if (textAnchor === 'center') {\n    textAnchor = 'middle';\n    textPadding && (x += (textPadding[3] - textPadding[1]) / 2);\n  }\n\n  var dy = 0;\n\n  if (verticalAlign === 'baseline') {\n    dy = -textRect.height + lineHeight;\n    textPadding && (dy -= textPadding[2]);\n  } else if (verticalAlign === 'middle') {\n    dy = (-textRect.height + lineHeight) / 2;\n    textPadding && (y += (textPadding[0] - textPadding[2]) / 2);\n  } else {\n    textPadding && (dy += textPadding[0]);\n  } // Font may affect position of each tspan elements\n\n\n  if (el.__text !== text || el.__textFont !== font) {\n    var tspanList = el.__tspanList || [];\n    el.__tspanList = tspanList;\n\n    for (var i = 0; i < nTextLines; i++) {\n      // Using cached tspan elements\n      var tspan = tspanList[i];\n\n      if (!tspan) {\n        tspan = tspanList[i] = createElement('tspan');\n        textSvgEl.appendChild(tspan);\n        attr(tspan, 'alignment-baseline', verticalAlign);\n        attr(tspan, 'text-anchor', textAnchor);\n      } else {\n        tspan.innerHTML = '';\n      }\n\n      attr(tspan, 'x', x);\n      attr(tspan, 'y', y + i * lineHeight + dy);\n      tspan.appendChild(document.createTextNode(textLines[i]));\n    } // Remove unsed tspan elements\n\n\n    for (; i < tspanList.length; i++) {\n      textSvgEl.removeChild(tspanList[i]);\n    }\n\n    tspanList.length = nTextLines;\n    el.__text = text;\n    el.__textFont = font;\n  } else if (el.__tspanList.length) {\n    // Update span x and y\n    var len = el.__tspanList.length;\n\n    for (var i = 0; i < len; ++i) {\n      var tspan = el.__tspanList[i];\n\n      if (tspan) {\n        attr(tspan, 'x', x);\n        attr(tspan, 'y', y + i * lineHeight + dy);\n      }\n    }\n  }\n};\n\nfunction getVerticalAlignForSvg(verticalAlign) {\n  if (verticalAlign === 'middle') {\n    return 'middle';\n  } else if (verticalAlign === 'bottom') {\n    return 'baseline';\n  } else {\n    return 'hanging';\n  }\n}\n\nsvgText.drawRectText = svgTextDrawRectText;\n\nsvgText.brush = function (el) {\n  var style = el.style;\n\n  if (style.text != null) {\n    // 强制设置 textPosition\n    style.textPosition = [0, 0];\n    svgTextDrawRectText(el, {\n      x: style.x || 0,\n      y: style.y || 0,\n      width: 0,\n      height: 0\n    }, el.getBoundingRect());\n  }\n};\n\nexports.path = svgPath;\nexports.image = svgImage;\nexports.text = svgText;","var Definable = require(\"./Definable\");\n\nvar zrUtil = require(\"../../core/util\");\n\nvar matrix = require(\"../../core/matrix\");\n\n/**\n * @file Manages SVG clipPath elements.\n * @author Zhang Wenli\n */\n\n/**\n * Manages SVG clipPath elements.\n *\n * @class\n * @extends Definable\n * @param   {number}     zrId    zrender instance id\n * @param   {SVGElement} svgRoot root of SVG document\n */\nfunction ClippathManager(zrId, svgRoot) {\n  Definable.call(this, zrId, svgRoot, 'clipPath', '__clippath_in_use__');\n}\n\nzrUtil.inherits(ClippathManager, Definable);\n/**\n * Update clipPath.\n *\n * @param {Displayable} displayable displayable element\n */\n\nClippathManager.prototype.update = function (displayable) {\n  var svgEl = this.getSvgElement(displayable);\n\n  if (svgEl) {\n    this.updateDom(svgEl, displayable.__clipPaths, false);\n  }\n\n  var textEl = this.getTextSvgElement(displayable);\n\n  if (textEl) {\n    // Make another clipPath for text, since it's transform\n    // matrix is not the same with svgElement\n    this.updateDom(textEl, displayable.__clipPaths, true);\n  }\n\n  this.markUsed(displayable);\n};\n/**\n * Create an SVGElement of displayable and create a <clipPath> of its\n * clipPath\n *\n * @param {Displayable} parentEl  parent element\n * @param {ClipPath[]}  clipPaths clipPaths of parent element\n * @param {boolean}     isText    if parent element is Text\n */\n\n\nClippathManager.prototype.updateDom = function (parentEl, clipPaths, isText) {\n  if (clipPaths && clipPaths.length > 0) {\n    // Has clipPath, create <clipPath> with the first clipPath\n    var defs = this.getDefs(true);\n    var clipPath = clipPaths[0];\n    var clipPathEl;\n    var id;\n    var dom = isText ? '_textDom' : '_dom';\n\n    if (clipPath[dom]) {\n      // Use a dom that is already in <defs>\n      id = clipPath[dom].getAttribute('id');\n      clipPathEl = clipPath[dom]; // Use a dom that is already in <defs>\n\n      if (!defs.contains(clipPathEl)) {\n        // This happens when set old clipPath that has\n        // been previously removed\n        defs.appendChild(clipPathEl);\n      }\n    } else {\n      // New <clipPath>\n      id = 'zr' + this._zrId + '-clip-' + this.nextId;\n      ++this.nextId;\n      clipPathEl = this.createElement('clipPath');\n      clipPathEl.setAttribute('id', id);\n      defs.appendChild(clipPathEl);\n      clipPath[dom] = clipPathEl;\n    } // Build path and add to <clipPath>\n\n\n    var svgProxy = this.getSvgProxy(clipPath);\n\n    if (clipPath.transform && clipPath.parent.invTransform && !isText) {\n      /**\n       * If a clipPath has a parent with transform, the transform\n       * of parent should not be considered when setting transform\n       * of clipPath. So we need to transform back from parent's\n       * transform, which is done by multiplying parent's inverse\n       * transform.\n       */\n      // Store old transform\n      var transform = Array.prototype.slice.call(clipPath.transform); // Transform back from parent, and brush path\n\n      matrix.mul(clipPath.transform, clipPath.parent.invTransform, clipPath.transform);\n      svgProxy.brush(clipPath); // Set back transform of clipPath\n\n      clipPath.transform = transform;\n    } else {\n      svgProxy.brush(clipPath);\n    }\n\n    var pathEl = this.getSvgElement(clipPath);\n    clipPathEl.innerHTML = '';\n    /**\n     * Use `cloneNode()` here to appendChild to multiple parents,\n     * which may happend when Text and other shapes are using the same\n     * clipPath. Since Text will create an extra clipPath DOM due to\n     * different transform rules.\n     */\n\n    clipPathEl.appendChild(pathEl.cloneNode());\n    parentEl.setAttribute('clip-path', 'url(#' + id + ')');\n\n    if (clipPaths.length > 1) {\n      // Make the other clipPaths recursively\n      this.updateDom(clipPathEl, clipPaths.slice(1), isText);\n    }\n  } else {\n    // No clipPath\n    if (parentEl) {\n      parentEl.setAttribute('clip-path', 'none');\n    }\n  }\n};\n/**\n * Mark a single clipPath to be used\n *\n * @param {Displayable} displayable displayable element\n */\n\n\nClippathManager.prototype.markUsed = function (displayable) {\n  var that = this;\n\n  if (displayable.__clipPaths && displayable.__clipPaths.length > 0) {\n    zrUtil.each(displayable.__clipPaths, function (clipPath) {\n      if (clipPath._dom) {\n        Definable.prototype.markUsed.call(that, clipPath._dom);\n      }\n\n      if (clipPath._textDom) {\n        Definable.prototype.markUsed.call(that, clipPath._textDom);\n      }\n    });\n  }\n};\n\nvar _default = ClippathManager;\nmodule.exports = _default;","var _core = require(\"../core\");\n\nvar createElement = _core.createElement;\n\nvar zrUtil = require(\"../../core/util\");\n\nvar Path = require(\"../../graphic/Path\");\n\nvar ZImage = require(\"../../graphic/Image\");\n\nvar ZText = require(\"../../graphic/Text\");\n\nvar _graphic = require(\"../graphic\");\n\nvar svgPath = _graphic.path;\nvar svgImage = _graphic.image;\nvar svgText = _graphic.text;\n\n/**\n * @file Manages elements that can be defined in <defs> in SVG,\n *       e.g., gradients, clip path, etc.\n * @author Zhang Wenli\n */\nvar MARK_UNUSED = '0';\nvar MARK_USED = '1';\n/**\n * Manages elements that can be defined in <defs> in SVG,\n * e.g., gradients, clip path, etc.\n *\n * @class\n * @param {number}          zrId      zrender instance id\n * @param {SVGElement}      svgRoot   root of SVG document\n * @param {string|string[]} tagNames  possible tag names\n * @param {string}          markLabel label name to make if the element\n *                                    is used\n */\n\nfunction Definable(zrId, svgRoot, tagNames, markLabel, domName) {\n  this._zrId = zrId;\n  this._svgRoot = svgRoot;\n  this._tagNames = typeof tagNames === 'string' ? [tagNames] : tagNames;\n  this._markLabel = markLabel;\n  this._domName = domName || '_dom';\n  this.nextId = 0;\n}\n\nDefinable.prototype.createElement = createElement;\n/**\n * Get the <defs> tag for svgRoot; optionally creates one if not exists.\n *\n * @param {boolean} isForceCreating if need to create when not exists\n * @return {SVGDefsElement} SVG <defs> element, null if it doesn't\n * exist and isForceCreating is false\n */\n\nDefinable.prototype.getDefs = function (isForceCreating) {\n  var svgRoot = this._svgRoot;\n\n  var defs = this._svgRoot.getElementsByTagName('defs');\n\n  if (defs.length === 0) {\n    // Not exist\n    if (isForceCreating) {\n      defs = svgRoot.insertBefore(this.createElement('defs'), // Create new tag\n      svgRoot.firstChild // Insert in the front of svg\n      );\n\n      if (!defs.contains) {\n        // IE doesn't support contains method\n        defs.contains = function (el) {\n          var children = defs.children;\n\n          if (!children) {\n            return false;\n          }\n\n          for (var i = children.length - 1; i >= 0; --i) {\n            if (children[i] === el) {\n              return true;\n            }\n          }\n\n          return false;\n        };\n      }\n\n      return defs;\n    } else {\n      return null;\n    }\n  } else {\n    return defs[0];\n  }\n};\n/**\n * Update DOM element if necessary.\n *\n * @param {Object|string} element style element. e.g., for gradient,\n *                                it may be '#ccc' or {type: 'linear', ...}\n * @param {Function|undefined} onUpdate update callback\n */\n\n\nDefinable.prototype.update = function (element, onUpdate) {\n  if (!element) {\n    return;\n  }\n\n  var defs = this.getDefs(false);\n\n  if (element[this._domName] && defs.contains(element[this._domName])) {\n    // Update DOM\n    if (typeof onUpdate === 'function') {\n      onUpdate(element);\n    }\n  } else {\n    // No previous dom, create new\n    var dom = this.add(element);\n\n    if (dom) {\n      element[this._domName] = dom;\n    }\n  }\n};\n/**\n * Add gradient dom to defs\n *\n * @param {SVGElement} dom DOM to be added to <defs>\n */\n\n\nDefinable.prototype.addDom = function (dom) {\n  var defs = this.getDefs(true);\n  defs.appendChild(dom);\n};\n/**\n * Remove DOM of a given element.\n *\n * @param {SVGElement} element element to remove dom\n */\n\n\nDefinable.prototype.removeDom = function (element) {\n  var defs = this.getDefs(false);\n\n  if (defs && element[this._domName]) {\n    defs.removeChild(element[this._domName]);\n    element[this._domName] = null;\n  }\n};\n/**\n * Get DOMs of this element.\n *\n * @return {HTMLDomElement} doms of this defineable elements in <defs>\n */\n\n\nDefinable.prototype.getDoms = function () {\n  var defs = this.getDefs(false);\n\n  if (!defs) {\n    // No dom when defs is not defined\n    return [];\n  }\n\n  var doms = [];\n  zrUtil.each(this._tagNames, function (tagName) {\n    var tags = defs.getElementsByTagName(tagName); // Note that tags is HTMLCollection, which is array-like\n    // rather than real array.\n    // So `doms.concat(tags)` add tags as one object.\n\n    doms = doms.concat([].slice.call(tags));\n  });\n  return doms;\n};\n/**\n * Mark DOMs to be unused before painting, and clear unused ones at the end\n * of the painting.\n */\n\n\nDefinable.prototype.markAllUnused = function () {\n  var doms = this.getDoms();\n  var that = this;\n  zrUtil.each(doms, function (dom) {\n    dom[that._markLabel] = MARK_UNUSED;\n  });\n};\n/**\n * Mark a single DOM to be used.\n *\n * @param {SVGElement} dom DOM to mark\n */\n\n\nDefinable.prototype.markUsed = function (dom) {\n  if (dom) {\n    dom[this._markLabel] = MARK_USED;\n  }\n};\n/**\n * Remove unused DOMs defined in <defs>\n */\n\n\nDefinable.prototype.removeUnused = function () {\n  var defs = this.getDefs(false);\n\n  if (!defs) {\n    // Nothing to remove\n    return;\n  }\n\n  var doms = this.getDoms();\n  var that = this;\n  zrUtil.each(doms, function (dom) {\n    if (dom[that._markLabel] !== MARK_USED) {\n      // Remove gradient\n      defs.removeChild(dom);\n    }\n  });\n};\n/**\n * Get SVG proxy.\n *\n * @param {Displayable} displayable displayable element\n * @return {Path|Image|Text} svg proxy of given element\n */\n\n\nDefinable.prototype.getSvgProxy = function (displayable) {\n  if (displayable instanceof Path) {\n    return svgPath;\n  } else if (displayable instanceof ZImage) {\n    return svgImage;\n  } else if (displayable instanceof ZText) {\n    return svgText;\n  } else {\n    return svgPath;\n  }\n};\n/**\n * Get text SVG element.\n *\n * @param {Displayable} displayable displayable element\n * @return {SVGElement} SVG element of text\n */\n\n\nDefinable.prototype.getTextSvgElement = function (displayable) {\n  return displayable.__textSvgEl;\n};\n/**\n * Get SVG element.\n *\n * @param {Displayable} displayable displayable element\n * @return {SVGElement} SVG element\n */\n\n\nDefinable.prototype.getSvgElement = function (displayable) {\n  return displayable.__svgEl;\n};\n\nvar _default = Definable;\nmodule.exports = _default;","var Definable = require(\"./Definable\");\n\nvar zrUtil = require(\"../../core/util\");\n\nvar zrLog = require(\"../../core/log\");\n\n/**\n * @file Manages SVG gradient elements.\n * @author Zhang Wenli\n */\n\n/**\n * Manages SVG gradient elements.\n *\n * @class\n * @extends Definable\n * @param   {number}     zrId    zrender instance id\n * @param   {SVGElement} svgRoot root of SVG document\n */\nfunction GradientManager(zrId, svgRoot) {\n  Definable.call(this, zrId, svgRoot, ['linearGradient', 'radialGradient'], '__gradient_in_use__');\n}\n\nzrUtil.inherits(GradientManager, Definable);\n/**\n * Create new gradient DOM for fill or stroke if not exist,\n * but will not update gradient if exists.\n *\n * @param {SvgElement}  svgElement   SVG element to paint\n * @param {Displayable} displayable  zrender displayable element\n */\n\nGradientManager.prototype.addWithoutUpdate = function (svgElement, displayable) {\n  if (displayable && displayable.style) {\n    var that = this;\n    zrUtil.each(['fill', 'stroke'], function (fillOrStroke) {\n      if (displayable.style[fillOrStroke] && (displayable.style[fillOrStroke].type === 'linear' || displayable.style[fillOrStroke].type === 'radial')) {\n        var gradient = displayable.style[fillOrStroke];\n        var defs = that.getDefs(true); // Create dom in <defs> if not exists\n\n        var dom;\n\n        if (gradient._dom) {\n          // Gradient exists\n          dom = gradient._dom;\n\n          if (!defs.contains(gradient._dom)) {\n            // _dom is no longer in defs, recreate\n            that.addDom(dom);\n          }\n        } else {\n          // New dom\n          dom = that.add(gradient);\n        }\n\n        that.markUsed(displayable);\n        var id = dom.getAttribute('id');\n        svgElement.setAttribute(fillOrStroke, 'url(#' + id + ')');\n      }\n    });\n  }\n};\n/**\n * Add a new gradient tag in <defs>\n *\n * @param   {Gradient} gradient zr gradient instance\n * @return {SVGLinearGradientElement | SVGRadialGradientElement}\n *                            created DOM\n */\n\n\nGradientManager.prototype.add = function (gradient) {\n  var dom;\n\n  if (gradient.type === 'linear') {\n    dom = this.createElement('linearGradient');\n  } else if (gradient.type === 'radial') {\n    dom = this.createElement('radialGradient');\n  } else {\n    zrLog('Illegal gradient type.');\n    return null;\n  } // Set dom id with gradient id, since each gradient instance\n  // will have no more than one dom element.\n  // id may exists before for those dirty elements, in which case\n  // id should remain the same, and other attributes should be\n  // updated.\n\n\n  gradient.id = gradient.id || this.nextId++;\n  dom.setAttribute('id', 'zr' + this._zrId + '-gradient-' + gradient.id);\n  this.updateDom(gradient, dom);\n  this.addDom(dom);\n  return dom;\n};\n/**\n * Update gradient.\n *\n * @param {Gradient} gradient zr gradient instance\n */\n\n\nGradientManager.prototype.update = function (gradient) {\n  var that = this;\n  Definable.prototype.update.call(this, gradient, function () {\n    var type = gradient.type;\n    var tagName = gradient._dom.tagName;\n\n    if (type === 'linear' && tagName === 'linearGradient' || type === 'radial' && tagName === 'radialGradient') {\n      // Gradient type is not changed, update gradient\n      that.updateDom(gradient, gradient._dom);\n    } else {\n      // Remove and re-create if type is changed\n      that.removeDom(gradient);\n      that.add(gradient);\n    }\n  });\n};\n/**\n * Update gradient dom\n *\n * @param {Gradient} gradient zr gradient instance\n * @param {SVGLinearGradientElement | SVGRadialGradientElement} dom\n *                            DOM to update\n */\n\n\nGradientManager.prototype.updateDom = function (gradient, dom) {\n  if (gradient.type === 'linear') {\n    dom.setAttribute('x1', gradient.x);\n    dom.setAttribute('y1', gradient.y);\n    dom.setAttribute('x2', gradient.x2);\n    dom.setAttribute('y2', gradient.y2);\n  } else if (gradient.type === 'radial') {\n    dom.setAttribute('cx', gradient.x);\n    dom.setAttribute('cy', gradient.y);\n    dom.setAttribute('r', gradient.r);\n  } else {\n    zrLog('Illegal gradient type.');\n    return;\n  }\n\n  if (gradient.global) {\n    // x1, x2, y1, y2 in range of 0 to canvas width or height\n    dom.setAttribute('gradientUnits', 'userSpaceOnUse');\n  } else {\n    // x1, x2, y1, y2 in range of 0 to 1\n    dom.setAttribute('gradientUnits', 'objectBoundingBox');\n  } // Remove color stops if exists\n\n\n  dom.innerHTML = ''; // Add color stops\n\n  var colors = gradient.colorStops;\n\n  for (var i = 0, len = colors.length; i < len; ++i) {\n    var stop = this.createElement('stop');\n    stop.setAttribute('offset', colors[i].offset * 100 + '%');\n    stop.setAttribute('stop-color', colors[i].color);\n    dom.appendChild(stop);\n  } // Store dom element in gradient, to avoid creating multiple\n  // dom instances for the same gradient element\n\n\n  gradient._dom = dom;\n};\n/**\n * Mark a single gradient to be used\n *\n * @param {Displayable} displayable displayable element\n */\n\n\nGradientManager.prototype.markUsed = function (displayable) {\n  if (displayable.style) {\n    var gradient = displayable.style.fill;\n\n    if (gradient && gradient._dom) {\n      Definable.prototype.markUsed.call(this, gradient._dom);\n    }\n\n    gradient = displayable.style.stroke;\n\n    if (gradient && gradient._dom) {\n      Definable.prototype.markUsed.call(this, gradient._dom);\n    }\n  }\n};\n\nvar _default = GradientManager;\nmodule.exports = _default;","var Definable = require(\"./Definable\");\n\nvar zrUtil = require(\"../../core/util\");\n\n/**\n * @file Manages SVG shadow elements.\n * @author Zhang Wenli\n */\n\n/**\n * Manages SVG shadow elements.\n *\n * @class\n * @extends Definable\n * @param   {number}     zrId    zrender instance id\n * @param   {SVGElement} svgRoot root of SVG document\n */\nfunction ShadowManager(zrId, svgRoot) {\n  Definable.call(this, zrId, svgRoot, ['filter'], '__filter_in_use__', '_shadowDom');\n}\n\nzrUtil.inherits(ShadowManager, Definable);\n/**\n * Create new shadow DOM for fill or stroke if not exist,\n * but will not update shadow if exists.\n *\n * @param {SvgElement}  svgElement   SVG element to paint\n * @param {Displayable} displayable  zrender displayable element\n */\n\nShadowManager.prototype.addWithoutUpdate = function (svgElement, displayable) {\n  if (displayable && hasShadow(displayable.style)) {\n    var style = displayable.style; // Create dom in <defs> if not exists\n\n    var dom;\n\n    if (style._shadowDom) {\n      // Gradient exists\n      dom = style._shadowDom;\n      var defs = this.getDefs(true);\n\n      if (!defs.contains(style._shadowDom)) {\n        // _shadowDom is no longer in defs, recreate\n        this.addDom(dom);\n      }\n    } else {\n      // New dom\n      dom = this.add(displayable);\n    }\n\n    this.markUsed(displayable);\n    var id = dom.getAttribute('id');\n    svgElement.style.filter = 'url(#' + id + ')';\n  }\n};\n/**\n * Add a new shadow tag in <defs>\n *\n * @param {Displayable} displayable  zrender displayable element\n * @return {SVGFilterElement} created DOM\n */\n\n\nShadowManager.prototype.add = function (displayable) {\n  var dom = this.createElement('filter');\n  var style = displayable.style; // Set dom id with shadow id, since each shadow instance\n  // will have no more than one dom element.\n  // id may exists before for those dirty elements, in which case\n  // id should remain the same, and other attributes should be\n  // updated.\n\n  style._shadowDomId = style._shadowDomId || this.nextId++;\n  dom.setAttribute('id', 'zr' + this._zrId + '-shadow-' + style._shadowDomId);\n  this.updateDom(displayable, dom);\n  this.addDom(dom);\n  return dom;\n};\n/**\n * Update shadow.\n *\n * @param {Displayable} displayable  zrender displayable element\n */\n\n\nShadowManager.prototype.update = function (svgElement, displayable) {\n  var style = displayable.style;\n\n  if (hasShadow(style)) {\n    var that = this;\n    Definable.prototype.update.call(this, displayable, function (style) {\n      that.updateDom(displayable, style._shadowDom);\n    });\n  } else {\n    // Remove shadow\n    this.remove(svgElement, style);\n  }\n};\n/**\n * Remove DOM and clear parent filter\n */\n\n\nShadowManager.prototype.remove = function (svgElement, style) {\n  if (style._shadowDomId != null) {\n    this.removeDom(style);\n    svgElement.style.filter = '';\n  }\n};\n/**\n * Update shadow dom\n *\n * @param {Displayable} displayable  zrender displayable element\n * @param {SVGFilterElement} dom DOM to update\n */\n\n\nShadowManager.prototype.updateDom = function (displayable, dom) {\n  var domChild = dom.getElementsByTagName('feDropShadow');\n\n  if (domChild.length === 0) {\n    domChild = this.createElement('feDropShadow');\n  } else {\n    domChild = domChild[0];\n  }\n\n  var style = displayable.style;\n  var scaleX = displayable.scale ? displayable.scale[0] || 1 : 1;\n  var scaleY = displayable.scale ? displayable.scale[1] || 1 : 1; // TODO: textBoxShadowBlur is not supported yet\n\n  var offsetX, offsetY, blur, color;\n\n  if (style.shadowBlur || style.shadowOffsetX || style.shadowOffsetY) {\n    offsetX = style.shadowOffsetX || 0;\n    offsetY = style.shadowOffsetY || 0;\n    blur = style.shadowBlur;\n    color = style.shadowColor;\n  } else if (style.textShadowBlur) {\n    offsetX = style.textShadowOffsetX || 0;\n    offsetY = style.textShadowOffsetY || 0;\n    blur = style.textShadowBlur;\n    color = style.textShadowColor;\n  } else {\n    // Remove shadow\n    this.removeDom(dom, style);\n    return;\n  }\n\n  domChild.setAttribute('dx', offsetX / scaleX);\n  domChild.setAttribute('dy', offsetY / scaleY);\n  domChild.setAttribute('flood-color', color); // Divide by two here so that it looks the same as in canvas\n  // See: https://html.spec.whatwg.org/multipage/canvas.html#dom-context-2d-shadowblur\n\n  var stdDx = blur / 2 / scaleX;\n  var stdDy = blur / 2 / scaleY;\n  var stdDeviation = stdDx + ' ' + stdDy;\n  domChild.setAttribute('stdDeviation', stdDeviation); // Fix filter clipping problem\n\n  dom.setAttribute('x', '-100%');\n  dom.setAttribute('y', '-100%');\n  dom.setAttribute('width', Math.ceil(blur / 2 * 200) + '%');\n  dom.setAttribute('height', Math.ceil(blur / 2 * 200) + '%');\n  dom.appendChild(domChild); // Store dom element in shadow, to avoid creating multiple\n  // dom instances for the same shadow element\n\n  style._shadowDom = dom;\n};\n/**\n * Mark a single shadow to be used\n *\n * @param {Displayable} displayable displayable element\n */\n\n\nShadowManager.prototype.markUsed = function (displayable) {\n  var style = displayable.style;\n\n  if (style && style._shadowDom) {\n    Definable.prototype.markUsed.call(this, style._shadowDom);\n  }\n};\n\nfunction hasShadow(style) {\n  // TODO: textBoxShadowBlur is not supported yet\n  return style && (style.shadowBlur || style.shadowOffsetX || style.shadowOffsetY || style.textShadowBlur || style.textShadowOffsetX || style.textShadowOffsetY);\n}\n\nvar _default = ShadowManager;\nmodule.exports = _default;","require(\"./graphic\");\n\nvar _zrender = require(\"../zrender\");\n\nvar registerPainter = _zrender.registerPainter;\n\nvar Painter = require(\"./Painter\");\n\nregisterPainter('svg', Painter);","var LRU = require(\"../core/LRU\");\n\nvar kCSSColorTable = {\n  'transparent': [0, 0, 0, 0],\n  'aliceblue': [240, 248, 255, 1],\n  'antiquewhite': [250, 235, 215, 1],\n  'aqua': [0, 255, 255, 1],\n  'aquamarine': [127, 255, 212, 1],\n  'azure': [240, 255, 255, 1],\n  'beige': [245, 245, 220, 1],\n  'bisque': [255, 228, 196, 1],\n  'black': [0, 0, 0, 1],\n  'blanchedalmond': [255, 235, 205, 1],\n  'blue': [0, 0, 255, 1],\n  'blueviolet': [138, 43, 226, 1],\n  'brown': [165, 42, 42, 1],\n  'burlywood': [222, 184, 135, 1],\n  'cadetblue': [95, 158, 160, 1],\n  'chartreuse': [127, 255, 0, 1],\n  'chocolate': [210, 105, 30, 1],\n  'coral': [255, 127, 80, 1],\n  'cornflowerblue': [100, 149, 237, 1],\n  'cornsilk': [255, 248, 220, 1],\n  'crimson': [220, 20, 60, 1],\n  'cyan': [0, 255, 255, 1],\n  'darkblue': [0, 0, 139, 1],\n  'darkcyan': [0, 139, 139, 1],\n  'darkgoldenrod': [184, 134, 11, 1],\n  'darkgray': [169, 169, 169, 1],\n  'darkgreen': [0, 100, 0, 1],\n  'darkgrey': [169, 169, 169, 1],\n  'darkkhaki': [189, 183, 107, 1],\n  'darkmagenta': [139, 0, 139, 1],\n  'darkolivegreen': [85, 107, 47, 1],\n  'darkorange': [255, 140, 0, 1],\n  'darkorchid': [153, 50, 204, 1],\n  'darkred': [139, 0, 0, 1],\n  'darksalmon': [233, 150, 122, 1],\n  'darkseagreen': [143, 188, 143, 1],\n  'darkslateblue': [72, 61, 139, 1],\n  'darkslategray': [47, 79, 79, 1],\n  'darkslategrey': [47, 79, 79, 1],\n  'darkturquoise': [0, 206, 209, 1],\n  'darkviolet': [148, 0, 211, 1],\n  'deeppink': [255, 20, 147, 1],\n  'deepskyblue': [0, 191, 255, 1],\n  'dimgray': [105, 105, 105, 1],\n  'dimgrey': [105, 105, 105, 1],\n  'dodgerblue': [30, 144, 255, 1],\n  'firebrick': [178, 34, 34, 1],\n  'floralwhite': [255, 250, 240, 1],\n  'forestgreen': [34, 139, 34, 1],\n  'fuchsia': [255, 0, 255, 1],\n  'gainsboro': [220, 220, 220, 1],\n  'ghostwhite': [248, 248, 255, 1],\n  'gold': [255, 215, 0, 1],\n  'goldenrod': [218, 165, 32, 1],\n  'gray': [128, 128, 128, 1],\n  'green': [0, 128, 0, 1],\n  'greenyellow': [173, 255, 47, 1],\n  'grey': [128, 128, 128, 1],\n  'honeydew': [240, 255, 240, 1],\n  'hotpink': [255, 105, 180, 1],\n  'indianred': [205, 92, 92, 1],\n  'indigo': [75, 0, 130, 1],\n  'ivory': [255, 255, 240, 1],\n  'khaki': [240, 230, 140, 1],\n  'lavender': [230, 230, 250, 1],\n  'lavenderblush': [255, 240, 245, 1],\n  'lawngreen': [124, 252, 0, 1],\n  'lemonchiffon': [255, 250, 205, 1],\n  'lightblue': [173, 216, 230, 1],\n  'lightcoral': [240, 128, 128, 1],\n  'lightcyan': [224, 255, 255, 1],\n  'lightgoldenrodyellow': [250, 250, 210, 1],\n  'lightgray': [211, 211, 211, 1],\n  'lightgreen': [144, 238, 144, 1],\n  'lightgrey': [211, 211, 211, 1],\n  'lightpink': [255, 182, 193, 1],\n  'lightsalmon': [255, 160, 122, 1],\n  'lightseagreen': [32, 178, 170, 1],\n  'lightskyblue': [135, 206, 250, 1],\n  'lightslategray': [119, 136, 153, 1],\n  'lightslategrey': [119, 136, 153, 1],\n  'lightsteelblue': [176, 196, 222, 1],\n  'lightyellow': [255, 255, 224, 1],\n  'lime': [0, 255, 0, 1],\n  'limegreen': [50, 205, 50, 1],\n  'linen': [250, 240, 230, 1],\n  'magenta': [255, 0, 255, 1],\n  'maroon': [128, 0, 0, 1],\n  'mediumaquamarine': [102, 205, 170, 1],\n  'mediumblue': [0, 0, 205, 1],\n  'mediumorchid': [186, 85, 211, 1],\n  'mediumpurple': [147, 112, 219, 1],\n  'mediumseagreen': [60, 179, 113, 1],\n  'mediumslateblue': [123, 104, 238, 1],\n  'mediumspringgreen': [0, 250, 154, 1],\n  'mediumturquoise': [72, 209, 204, 1],\n  'mediumvioletred': [199, 21, 133, 1],\n  'midnightblue': [25, 25, 112, 1],\n  'mintcream': [245, 255, 250, 1],\n  'mistyrose': [255, 228, 225, 1],\n  'moccasin': [255, 228, 181, 1],\n  'navajowhite': [255, 222, 173, 1],\n  'navy': [0, 0, 128, 1],\n  'oldlace': [253, 245, 230, 1],\n  'olive': [128, 128, 0, 1],\n  'olivedrab': [107, 142, 35, 1],\n  'orange': [255, 165, 0, 1],\n  'orangered': [255, 69, 0, 1],\n  'orchid': [218, 112, 214, 1],\n  'palegoldenrod': [238, 232, 170, 1],\n  'palegreen': [152, 251, 152, 1],\n  'paleturquoise': [175, 238, 238, 1],\n  'palevioletred': [219, 112, 147, 1],\n  'papayawhip': [255, 239, 213, 1],\n  'peachpuff': [255, 218, 185, 1],\n  'peru': [205, 133, 63, 1],\n  'pink': [255, 192, 203, 1],\n  'plum': [221, 160, 221, 1],\n  'powderblue': [176, 224, 230, 1],\n  'purple': [128, 0, 128, 1],\n  'red': [255, 0, 0, 1],\n  'rosybrown': [188, 143, 143, 1],\n  'royalblue': [65, 105, 225, 1],\n  'saddlebrown': [139, 69, 19, 1],\n  'salmon': [250, 128, 114, 1],\n  'sandybrown': [244, 164, 96, 1],\n  'seagreen': [46, 139, 87, 1],\n  'seashell': [255, 245, 238, 1],\n  'sienna': [160, 82, 45, 1],\n  'silver': [192, 192, 192, 1],\n  'skyblue': [135, 206, 235, 1],\n  'slateblue': [106, 90, 205, 1],\n  'slategray': [112, 128, 144, 1],\n  'slategrey': [112, 128, 144, 1],\n  'snow': [255, 250, 250, 1],\n  'springgreen': [0, 255, 127, 1],\n  'steelblue': [70, 130, 180, 1],\n  'tan': [210, 180, 140, 1],\n  'teal': [0, 128, 128, 1],\n  'thistle': [216, 191, 216, 1],\n  'tomato': [255, 99, 71, 1],\n  'turquoise': [64, 224, 208, 1],\n  'violet': [238, 130, 238, 1],\n  'wheat': [245, 222, 179, 1],\n  'white': [255, 255, 255, 1],\n  'whitesmoke': [245, 245, 245, 1],\n  'yellow': [255, 255, 0, 1],\n  'yellowgreen': [154, 205, 50, 1]\n};\n\nfunction clampCssByte(i) {\n  // Clamp to integer 0 .. 255.\n  i = Math.round(i); // Seems to be what Chrome does (vs truncation).\n\n  return i < 0 ? 0 : i > 255 ? 255 : i;\n}\n\nfunction clampCssAngle(i) {\n  // Clamp to integer 0 .. 360.\n  i = Math.round(i); // Seems to be what Chrome does (vs truncation).\n\n  return i < 0 ? 0 : i > 360 ? 360 : i;\n}\n\nfunction clampCssFloat(f) {\n  // Clamp to float 0.0 .. 1.0.\n  return f < 0 ? 0 : f > 1 ? 1 : f;\n}\n\nfunction parseCssInt(str) {\n  // int or percentage.\n  if (str.length && str.charAt(str.length - 1) === '%') {\n    return clampCssByte(parseFloat(str) / 100 * 255);\n  }\n\n  return clampCssByte(parseInt(str, 10));\n}\n\nfunction parseCssFloat(str) {\n  // float or percentage.\n  if (str.length && str.charAt(str.length - 1) === '%') {\n    return clampCssFloat(parseFloat(str) / 100);\n  }\n\n  return clampCssFloat(parseFloat(str));\n}\n\nfunction cssHueToRgb(m1, m2, h) {\n  if (h < 0) {\n    h += 1;\n  } else if (h > 1) {\n    h -= 1;\n  }\n\n  if (h * 6 < 1) {\n    return m1 + (m2 - m1) * h * 6;\n  }\n\n  if (h * 2 < 1) {\n    return m2;\n  }\n\n  if (h * 3 < 2) {\n    return m1 + (m2 - m1) * (2 / 3 - h) * 6;\n  }\n\n  return m1;\n}\n\nfunction lerpNumber(a, b, p) {\n  return a + (b - a) * p;\n}\n\nfunction setRgba(out, r, g, b, a) {\n  out[0] = r;\n  out[1] = g;\n  out[2] = b;\n  out[3] = a;\n  return out;\n}\n\nfunction copyRgba(out, a) {\n  out[0] = a[0];\n  out[1] = a[1];\n  out[2] = a[2];\n  out[3] = a[3];\n  return out;\n}\n\nvar colorCache = new LRU(20);\nvar lastRemovedArr = null;\n\nfunction putToCache(colorStr, rgbaArr) {\n  // Reuse removed array\n  if (lastRemovedArr) {\n    copyRgba(lastRemovedArr, rgbaArr);\n  }\n\n  lastRemovedArr = colorCache.put(colorStr, lastRemovedArr || rgbaArr.slice());\n}\n/**\n * @param {string} colorStr\n * @param {Array.<number>} out\n * @return {Array.<number>}\n * @memberOf module:zrender/util/color\n */\n\n\nfunction parse(colorStr, rgbaArr) {\n  if (!colorStr) {\n    return;\n  }\n\n  rgbaArr = rgbaArr || [];\n  var cached = colorCache.get(colorStr);\n\n  if (cached) {\n    return copyRgba(rgbaArr, cached);\n  } // colorStr may be not string\n\n\n  colorStr = colorStr + ''; // Remove all whitespace, not compliant, but should just be more accepting.\n\n  var str = colorStr.replace(/ /g, '').toLowerCase(); // Color keywords (and transparent) lookup.\n\n  if (str in kCSSColorTable) {\n    copyRgba(rgbaArr, kCSSColorTable[str]);\n    putToCache(colorStr, rgbaArr);\n    return rgbaArr;\n  } // #abc and #abc123 syntax.\n\n\n  if (str.charAt(0) === '#') {\n    if (str.length === 4) {\n      var iv = parseInt(str.substr(1), 16); // TODO(deanm): Stricter parsing.\n\n      if (!(iv >= 0 && iv <= 0xfff)) {\n        setRgba(rgbaArr, 0, 0, 0, 1);\n        return; // Covers NaN.\n      }\n\n      setRgba(rgbaArr, (iv & 0xf00) >> 4 | (iv & 0xf00) >> 8, iv & 0xf0 | (iv & 0xf0) >> 4, iv & 0xf | (iv & 0xf) << 4, 1);\n      putToCache(colorStr, rgbaArr);\n      return rgbaArr;\n    } else if (str.length === 7) {\n      var iv = parseInt(str.substr(1), 16); // TODO(deanm): Stricter parsing.\n\n      if (!(iv >= 0 && iv <= 0xffffff)) {\n        setRgba(rgbaArr, 0, 0, 0, 1);\n        return; // Covers NaN.\n      }\n\n      setRgba(rgbaArr, (iv & 0xff0000) >> 16, (iv & 0xff00) >> 8, iv & 0xff, 1);\n      putToCache(colorStr, rgbaArr);\n      return rgbaArr;\n    }\n\n    return;\n  }\n\n  var op = str.indexOf('('),\n      ep = str.indexOf(')');\n\n  if (op !== -1 && ep + 1 === str.length) {\n    var fname = str.substr(0, op);\n    var params = str.substr(op + 1, ep - (op + 1)).split(',');\n    var alpha = 1; // To allow case fallthrough.\n\n    switch (fname) {\n      case 'rgba':\n        if (params.length !== 4) {\n          setRgba(rgbaArr, 0, 0, 0, 1);\n          return;\n        }\n\n        alpha = parseCssFloat(params.pop());\n      // jshint ignore:line\n      // Fall through.\n\n      case 'rgb':\n        if (params.length !== 3) {\n          setRgba(rgbaArr, 0, 0, 0, 1);\n          return;\n        }\n\n        setRgba(rgbaArr, parseCssInt(params[0]), parseCssInt(params[1]), parseCssInt(params[2]), alpha);\n        putToCache(colorStr, rgbaArr);\n        return rgbaArr;\n\n      case 'hsla':\n        if (params.length !== 4) {\n          setRgba(rgbaArr, 0, 0, 0, 1);\n          return;\n        }\n\n        params[3] = parseCssFloat(params[3]);\n        hsla2rgba(params, rgbaArr);\n        putToCache(colorStr, rgbaArr);\n        return rgbaArr;\n\n      case 'hsl':\n        if (params.length !== 3) {\n          setRgba(rgbaArr, 0, 0, 0, 1);\n          return;\n        }\n\n        hsla2rgba(params, rgbaArr);\n        putToCache(colorStr, rgbaArr);\n        return rgbaArr;\n\n      default:\n        return;\n    }\n  }\n\n  setRgba(rgbaArr, 0, 0, 0, 1);\n  return;\n}\n/**\n * @param {Array.<number>} hsla\n * @param {Array.<number>} rgba\n * @return {Array.<number>} rgba\n */\n\n\nfunction hsla2rgba(hsla, rgba) {\n  var h = (parseFloat(hsla[0]) % 360 + 360) % 360 / 360; // 0 .. 1\n  // NOTE(deanm): According to the CSS spec s/l should only be\n  // percentages, but we don't bother and let float or percentage.\n\n  var s = parseCssFloat(hsla[1]);\n  var l = parseCssFloat(hsla[2]);\n  var m2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;\n  var m1 = l * 2 - m2;\n  rgba = rgba || [];\n  setRgba(rgba, clampCssByte(cssHueToRgb(m1, m2, h + 1 / 3) * 255), clampCssByte(cssHueToRgb(m1, m2, h) * 255), clampCssByte(cssHueToRgb(m1, m2, h - 1 / 3) * 255), 1);\n\n  if (hsla.length === 4) {\n    rgba[3] = hsla[3];\n  }\n\n  return rgba;\n}\n/**\n * @param {Array.<number>} rgba\n * @return {Array.<number>} hsla\n */\n\n\nfunction rgba2hsla(rgba) {\n  if (!rgba) {\n    return;\n  } // RGB from 0 to 255\n\n\n  var R = rgba[0] / 255;\n  var G = rgba[1] / 255;\n  var B = rgba[2] / 255;\n  var vMin = Math.min(R, G, B); // Min. value of RGB\n\n  var vMax = Math.max(R, G, B); // Max. value of RGB\n\n  var delta = vMax - vMin; // Delta RGB value\n\n  var L = (vMax + vMin) / 2;\n  var H;\n  var S; // HSL results from 0 to 1\n\n  if (delta === 0) {\n    H = 0;\n    S = 0;\n  } else {\n    if (L < 0.5) {\n      S = delta / (vMax + vMin);\n    } else {\n      S = delta / (2 - vMax - vMin);\n    }\n\n    var deltaR = ((vMax - R) / 6 + delta / 2) / delta;\n    var deltaG = ((vMax - G) / 6 + delta / 2) / delta;\n    var deltaB = ((vMax - B) / 6 + delta / 2) / delta;\n\n    if (R === vMax) {\n      H = deltaB - deltaG;\n    } else if (G === vMax) {\n      H = 1 / 3 + deltaR - deltaB;\n    } else if (B === vMax) {\n      H = 2 / 3 + deltaG - deltaR;\n    }\n\n    if (H < 0) {\n      H += 1;\n    }\n\n    if (H > 1) {\n      H -= 1;\n    }\n  }\n\n  var hsla = [H * 360, S, L];\n\n  if (rgba[3] != null) {\n    hsla.push(rgba[3]);\n  }\n\n  return hsla;\n}\n/**\n * @param {string} color\n * @param {number} level\n * @return {string}\n * @memberOf module:zrender/util/color\n */\n\n\nfunction lift(color, level) {\n  var colorArr = parse(color);\n\n  if (colorArr) {\n    for (var i = 0; i < 3; i++) {\n      if (level < 0) {\n        colorArr[i] = colorArr[i] * (1 - level) | 0;\n      } else {\n        colorArr[i] = (255 - colorArr[i]) * level + colorArr[i] | 0;\n      }\n    }\n\n    return stringify(colorArr, colorArr.length === 4 ? 'rgba' : 'rgb');\n  }\n}\n/**\n * @param {string} color\n * @return {string}\n * @memberOf module:zrender/util/color\n */\n\n\nfunction toHex(color) {\n  var colorArr = parse(color);\n\n  if (colorArr) {\n    return ((1 << 24) + (colorArr[0] << 16) + (colorArr[1] << 8) + +colorArr[2]).toString(16).slice(1);\n  }\n}\n/**\n * Map value to color. Faster than lerp methods because color is represented by rgba array.\n * @param {number} normalizedValue A float between 0 and 1.\n * @param {Array.<Array.<number>>} colors List of rgba color array\n * @param {Array.<number>} [out] Mapped gba color array\n * @return {Array.<number>} will be null/undefined if input illegal.\n */\n\n\nfunction fastLerp(normalizedValue, colors, out) {\n  if (!(colors && colors.length) || !(normalizedValue >= 0 && normalizedValue <= 1)) {\n    return;\n  }\n\n  out = out || [];\n  var value = normalizedValue * (colors.length - 1);\n  var leftIndex = Math.floor(value);\n  var rightIndex = Math.ceil(value);\n  var leftColor = colors[leftIndex];\n  var rightColor = colors[rightIndex];\n  var dv = value - leftIndex;\n  out[0] = clampCssByte(lerpNumber(leftColor[0], rightColor[0], dv));\n  out[1] = clampCssByte(lerpNumber(leftColor[1], rightColor[1], dv));\n  out[2] = clampCssByte(lerpNumber(leftColor[2], rightColor[2], dv));\n  out[3] = clampCssFloat(lerpNumber(leftColor[3], rightColor[3], dv));\n  return out;\n}\n/**\n * @deprecated\n */\n\n\nvar fastMapToColor = fastLerp;\n/**\n * @param {number} normalizedValue A float between 0 and 1.\n * @param {Array.<string>} colors Color list.\n * @param {boolean=} fullOutput Default false.\n * @return {(string|Object)} Result color. If fullOutput,\n *                           return {color: ..., leftIndex: ..., rightIndex: ..., value: ...},\n * @memberOf module:zrender/util/color\n */\n\nfunction lerp(normalizedValue, colors, fullOutput) {\n  if (!(colors && colors.length) || !(normalizedValue >= 0 && normalizedValue <= 1)) {\n    return;\n  }\n\n  var value = normalizedValue * (colors.length - 1);\n  var leftIndex = Math.floor(value);\n  var rightIndex = Math.ceil(value);\n  var leftColor = parse(colors[leftIndex]);\n  var rightColor = parse(colors[rightIndex]);\n  var dv = value - leftIndex;\n  var color = stringify([clampCssByte(lerpNumber(leftColor[0], rightColor[0], dv)), clampCssByte(lerpNumber(leftColor[1], rightColor[1], dv)), clampCssByte(lerpNumber(leftColor[2], rightColor[2], dv)), clampCssFloat(lerpNumber(leftColor[3], rightColor[3], dv))], 'rgba');\n  return fullOutput ? {\n    color: color,\n    leftIndex: leftIndex,\n    rightIndex: rightIndex,\n    value: value\n  } : color;\n}\n/**\n * @deprecated\n */\n\n\nvar mapToColor = lerp;\n/**\n * @param {string} color\n * @param {number=} h 0 ~ 360, ignore when null.\n * @param {number=} s 0 ~ 1, ignore when null.\n * @param {number=} l 0 ~ 1, ignore when null.\n * @return {string} Color string in rgba format.\n * @memberOf module:zrender/util/color\n */\n\nfunction modifyHSL(color, h, s, l) {\n  color = parse(color);\n\n  if (color) {\n    color = rgba2hsla(color);\n    h != null && (color[0] = clampCssAngle(h));\n    s != null && (color[1] = parseCssFloat(s));\n    l != null && (color[2] = parseCssFloat(l));\n    return stringify(hsla2rgba(color), 'rgba');\n  }\n}\n/**\n * @param {string} color\n * @param {number=} alpha 0 ~ 1\n * @return {string} Color string in rgba format.\n * @memberOf module:zrender/util/color\n */\n\n\nfunction modifyAlpha(color, alpha) {\n  color = parse(color);\n\n  if (color && alpha != null) {\n    color[3] = clampCssFloat(alpha);\n    return stringify(color, 'rgba');\n  }\n}\n/**\n * @param {Array.<number>} arrColor like [12,33,44,0.4]\n * @param {string} type 'rgba', 'hsva', ...\n * @return {string} Result color. (If input illegal, return undefined).\n */\n\n\nfunction stringify(arrColor, type) {\n  if (!arrColor || !arrColor.length) {\n    return;\n  }\n\n  var colorStr = arrColor[0] + ',' + arrColor[1] + ',' + arrColor[2];\n\n  if (type === 'rgba' || type === 'hsva' || type === 'hsla') {\n    colorStr += ',' + arrColor[3];\n  }\n\n  return type + '(' + colorStr + ')';\n}\n\nexports.parse = parse;\nexports.lift = lift;\nexports.toHex = toHex;\nexports.fastLerp = fastLerp;\nexports.fastMapToColor = fastMapToColor;\nexports.lerp = lerp;\nexports.mapToColor = mapToColor;\nexports.modifyHSL = modifyHSL;\nexports.modifyAlpha = modifyAlpha;\nexports.stringify = stringify;","var Path = require(\"../graphic/Path\");\n\nvar PathProxy = require(\"../core/PathProxy\");\n\nvar transformPath = require(\"./transformPath\");\n\n// command chars\nvar cc = ['m', 'M', 'l', 'L', 'v', 'V', 'h', 'H', 'z', 'Z', 'c', 'C', 'q', 'Q', 't', 'T', 's', 'S', 'a', 'A'];\nvar mathSqrt = Math.sqrt;\nvar mathSin = Math.sin;\nvar mathCos = Math.cos;\nvar PI = Math.PI;\n\nvar vMag = function (v) {\n  return Math.sqrt(v[0] * v[0] + v[1] * v[1]);\n};\n\nvar vRatio = function (u, v) {\n  return (u[0] * v[0] + u[1] * v[1]) / (vMag(u) * vMag(v));\n};\n\nvar vAngle = function (u, v) {\n  return (u[0] * v[1] < u[1] * v[0] ? -1 : 1) * Math.acos(vRatio(u, v));\n};\n\nfunction processArc(x1, y1, x2, y2, fa, fs, rx, ry, psiDeg, cmd, path) {\n  var psi = psiDeg * (PI / 180.0);\n  var xp = mathCos(psi) * (x1 - x2) / 2.0 + mathSin(psi) * (y1 - y2) / 2.0;\n  var yp = -1 * mathSin(psi) * (x1 - x2) / 2.0 + mathCos(psi) * (y1 - y2) / 2.0;\n  var lambda = xp * xp / (rx * rx) + yp * yp / (ry * ry);\n\n  if (lambda > 1) {\n    rx *= mathSqrt(lambda);\n    ry *= mathSqrt(lambda);\n  }\n\n  var f = (fa === fs ? -1 : 1) * mathSqrt((rx * rx * (ry * ry) - rx * rx * (yp * yp) - ry * ry * (xp * xp)) / (rx * rx * (yp * yp) + ry * ry * (xp * xp))) || 0;\n  var cxp = f * rx * yp / ry;\n  var cyp = f * -ry * xp / rx;\n  var cx = (x1 + x2) / 2.0 + mathCos(psi) * cxp - mathSin(psi) * cyp;\n  var cy = (y1 + y2) / 2.0 + mathSin(psi) * cxp + mathCos(psi) * cyp;\n  var theta = vAngle([1, 0], [(xp - cxp) / rx, (yp - cyp) / ry]);\n  var u = [(xp - cxp) / rx, (yp - cyp) / ry];\n  var v = [(-1 * xp - cxp) / rx, (-1 * yp - cyp) / ry];\n  var dTheta = vAngle(u, v);\n\n  if (vRatio(u, v) <= -1) {\n    dTheta = PI;\n  }\n\n  if (vRatio(u, v) >= 1) {\n    dTheta = 0;\n  }\n\n  if (fs === 0 && dTheta > 0) {\n    dTheta = dTheta - 2 * PI;\n  }\n\n  if (fs === 1 && dTheta < 0) {\n    dTheta = dTheta + 2 * PI;\n  }\n\n  path.addData(cmd, cx, cy, rx, ry, theta, dTheta, psi, fs);\n}\n\nfunction createPathProxyFromString(data) {\n  if (!data) {\n    return [];\n  } // command string\n\n\n  var cs = data.replace(/-/g, ' -').replace(/  /g, ' ').replace(/ /g, ',').replace(/,,/g, ',');\n  var n; // create pipes so that we can split the data\n\n  for (n = 0; n < cc.length; n++) {\n    cs = cs.replace(new RegExp(cc[n], 'g'), '|' + cc[n]);\n  } // create array\n\n\n  var arr = cs.split('|'); // init context point\n\n  var cpx = 0;\n  var cpy = 0;\n  var path = new PathProxy();\n  var CMD = PathProxy.CMD;\n  var prevCmd;\n\n  for (n = 1; n < arr.length; n++) {\n    var str = arr[n];\n    var c = str.charAt(0);\n    var off = 0;\n    var p = str.slice(1).replace(/e,-/g, 'e-').split(',');\n    var cmd;\n\n    if (p.length > 0 && p[0] === '') {\n      p.shift();\n    }\n\n    for (var i = 0; i < p.length; i++) {\n      p[i] = parseFloat(p[i]);\n    }\n\n    while (off < p.length && !isNaN(p[off])) {\n      if (isNaN(p[0])) {\n        break;\n      }\n\n      var ctlPtx;\n      var ctlPty;\n      var rx;\n      var ry;\n      var psi;\n      var fa;\n      var fs;\n      var x1 = cpx;\n      var y1 = cpy; // convert l, H, h, V, and v to L\n\n      switch (c) {\n        case 'l':\n          cpx += p[off++];\n          cpy += p[off++];\n          cmd = CMD.L;\n          path.addData(cmd, cpx, cpy);\n          break;\n\n        case 'L':\n          cpx = p[off++];\n          cpy = p[off++];\n          cmd = CMD.L;\n          path.addData(cmd, cpx, cpy);\n          break;\n\n        case 'm':\n          cpx += p[off++];\n          cpy += p[off++];\n          cmd = CMD.M;\n          path.addData(cmd, cpx, cpy);\n          c = 'l';\n          break;\n\n        case 'M':\n          cpx = p[off++];\n          cpy = p[off++];\n          cmd = CMD.M;\n          path.addData(cmd, cpx, cpy);\n          c = 'L';\n          break;\n\n        case 'h':\n          cpx += p[off++];\n          cmd = CMD.L;\n          path.addData(cmd, cpx, cpy);\n          break;\n\n        case 'H':\n          cpx = p[off++];\n          cmd = CMD.L;\n          path.addData(cmd, cpx, cpy);\n          break;\n\n        case 'v':\n          cpy += p[off++];\n          cmd = CMD.L;\n          path.addData(cmd, cpx, cpy);\n          break;\n\n        case 'V':\n          cpy = p[off++];\n          cmd = CMD.L;\n          path.addData(cmd, cpx, cpy);\n          break;\n\n        case 'C':\n          cmd = CMD.C;\n          path.addData(cmd, p[off++], p[off++], p[off++], p[off++], p[off++], p[off++]);\n          cpx = p[off - 2];\n          cpy = p[off - 1];\n          break;\n\n        case 'c':\n          cmd = CMD.C;\n          path.addData(cmd, p[off++] + cpx, p[off++] + cpy, p[off++] + cpx, p[off++] + cpy, p[off++] + cpx, p[off++] + cpy);\n          cpx += p[off - 2];\n          cpy += p[off - 1];\n          break;\n\n        case 'S':\n          ctlPtx = cpx;\n          ctlPty = cpy;\n          var len = path.len();\n          var pathData = path.data;\n\n          if (prevCmd === CMD.C) {\n            ctlPtx += cpx - pathData[len - 4];\n            ctlPty += cpy - pathData[len - 3];\n          }\n\n          cmd = CMD.C;\n          x1 = p[off++];\n          y1 = p[off++];\n          cpx = p[off++];\n          cpy = p[off++];\n          path.addData(cmd, ctlPtx, ctlPty, x1, y1, cpx, cpy);\n          break;\n\n        case 's':\n          ctlPtx = cpx;\n          ctlPty = cpy;\n          var len = path.len();\n          var pathData = path.data;\n\n          if (prevCmd === CMD.C) {\n            ctlPtx += cpx - pathData[len - 4];\n            ctlPty += cpy - pathData[len - 3];\n          }\n\n          cmd = CMD.C;\n          x1 = cpx + p[off++];\n          y1 = cpy + p[off++];\n          cpx += p[off++];\n          cpy += p[off++];\n          path.addData(cmd, ctlPtx, ctlPty, x1, y1, cpx, cpy);\n          break;\n\n        case 'Q':\n          x1 = p[off++];\n          y1 = p[off++];\n          cpx = p[off++];\n          cpy = p[off++];\n          cmd = CMD.Q;\n          path.addData(cmd, x1, y1, cpx, cpy);\n          break;\n\n        case 'q':\n          x1 = p[off++] + cpx;\n          y1 = p[off++] + cpy;\n          cpx += p[off++];\n          cpy += p[off++];\n          cmd = CMD.Q;\n          path.addData(cmd, x1, y1, cpx, cpy);\n          break;\n\n        case 'T':\n          ctlPtx = cpx;\n          ctlPty = cpy;\n          var len = path.len();\n          var pathData = path.data;\n\n          if (prevCmd === CMD.Q) {\n            ctlPtx += cpx - pathData[len - 4];\n            ctlPty += cpy - pathData[len - 3];\n          }\n\n          cpx = p[off++];\n          cpy = p[off++];\n          cmd = CMD.Q;\n          path.addData(cmd, ctlPtx, ctlPty, cpx, cpy);\n          break;\n\n        case 't':\n          ctlPtx = cpx;\n          ctlPty = cpy;\n          var len = path.len();\n          var pathData = path.data;\n\n          if (prevCmd === CMD.Q) {\n            ctlPtx += cpx - pathData[len - 4];\n            ctlPty += cpy - pathData[len - 3];\n          }\n\n          cpx += p[off++];\n          cpy += p[off++];\n          cmd = CMD.Q;\n          path.addData(cmd, ctlPtx, ctlPty, cpx, cpy);\n          break;\n\n        case 'A':\n          rx = p[off++];\n          ry = p[off++];\n          psi = p[off++];\n          fa = p[off++];\n          fs = p[off++];\n          x1 = cpx, y1 = cpy;\n          cpx = p[off++];\n          cpy = p[off++];\n          cmd = CMD.A;\n          processArc(x1, y1, cpx, cpy, fa, fs, rx, ry, psi, cmd, path);\n          break;\n\n        case 'a':\n          rx = p[off++];\n          ry = p[off++];\n          psi = p[off++];\n          fa = p[off++];\n          fs = p[off++];\n          x1 = cpx, y1 = cpy;\n          cpx += p[off++];\n          cpy += p[off++];\n          cmd = CMD.A;\n          processArc(x1, y1, cpx, cpy, fa, fs, rx, ry, psi, cmd, path);\n          break;\n      }\n    }\n\n    if (c === 'z' || c === 'Z') {\n      cmd = CMD.Z;\n      path.addData(cmd);\n    }\n\n    prevCmd = cmd;\n  }\n\n  path.toStatic();\n  return path;\n} // TODO Optimize double memory cost problem\n\n\nfunction createPathOptions(str, opts) {\n  var pathProxy = createPathProxyFromString(str);\n  opts = opts || {};\n\n  opts.buildPath = function (path) {\n    if (path.setData) {\n      path.setData(pathProxy.data); // Svg and vml renderer don't have context\n\n      var ctx = path.getContext();\n\n      if (ctx) {\n        path.rebuildPath(ctx);\n      }\n    } else {\n      var ctx = path;\n      pathProxy.rebuildPath(ctx);\n    }\n  };\n\n  opts.applyTransform = function (m) {\n    transformPath(pathProxy, m);\n    this.dirty(true);\n  };\n\n  return opts;\n}\n/**\n * Create a Path object from path string data\n * http://www.w3.org/TR/SVG/paths.html#PathData\n * @param  {Object} opts Other options\n */\n\n\nfunction createFromString(str, opts) {\n  return new Path(createPathOptions(str, opts));\n}\n/**\n * Create a Path class from path string data\n * @param  {string} str\n * @param  {Object} opts Other options\n */\n\n\nfunction extendFromString(str, opts) {\n  return Path.extend(createPathOptions(str, opts));\n}\n/**\n * Merge multiple paths\n */\n// TODO Apply transform\n// TODO stroke dash\n// TODO Optimize double memory cost problem\n\n\nfunction mergePath(pathEls, opts) {\n  var pathList = [];\n  var len = pathEls.length;\n\n  for (var i = 0; i < len; i++) {\n    var pathEl = pathEls[i];\n\n    if (!pathEl.path) {\n      pathEl.createPathProxy();\n    }\n\n    if (pathEl.__dirtyPath) {\n      pathEl.buildPath(pathEl.path, pathEl.shape, true);\n    }\n\n    pathList.push(pathEl.path);\n  }\n\n  var pathBundle = new Path(opts); // Need path proxy.\n\n  pathBundle.createPathProxy();\n\n  pathBundle.buildPath = function (path) {\n    path.appendPath(pathList); // Svg and vml renderer don't have context\n\n    var ctx = path.getContext();\n\n    if (ctx) {\n      path.rebuildPath(ctx);\n    }\n  };\n\n  return pathBundle;\n}\n\nexports.createFromString = createFromString;\nexports.extendFromString = extendFromString;\nexports.mergePath = mergePath;","var PathProxy = require(\"../core/PathProxy\");\n\nvar _vector = require(\"../core/vector\");\n\nvar v2ApplyTransform = _vector.applyTransform;\nvar CMD = PathProxy.CMD;\nvar points = [[], [], []];\nvar mathSqrt = Math.sqrt;\nvar mathAtan2 = Math.atan2;\n\nfunction _default(path, m) {\n  var data = path.data;\n  var cmd;\n  var nPoint;\n  var i;\n  var j;\n  var k;\n  var p;\n  var M = CMD.M;\n  var C = CMD.C;\n  var L = CMD.L;\n  var R = CMD.R;\n  var A = CMD.A;\n  var Q = CMD.Q;\n\n  for (i = 0, j = 0; i < data.length;) {\n    cmd = data[i++];\n    j = i;\n    nPoint = 0;\n\n    switch (cmd) {\n      case M:\n        nPoint = 1;\n        break;\n\n      case L:\n        nPoint = 1;\n        break;\n\n      case C:\n        nPoint = 3;\n        break;\n\n      case Q:\n        nPoint = 2;\n        break;\n\n      case A:\n        var x = m[4];\n        var y = m[5];\n        var sx = mathSqrt(m[0] * m[0] + m[1] * m[1]);\n        var sy = mathSqrt(m[2] * m[2] + m[3] * m[3]);\n        var angle = mathAtan2(-m[1] / sy, m[0] / sx); // cx\n\n        data[i] *= sx;\n        data[i++] += x; // cy\n\n        data[i] *= sy;\n        data[i++] += y; // Scale rx and ry\n        // FIXME Assume psi is 0 here\n\n        data[i++] *= sx;\n        data[i++] *= sy; // Start angle\n\n        data[i++] += angle; // end angle\n\n        data[i++] += angle; // FIXME psi\n\n        i += 2;\n        j = i;\n        break;\n\n      case R:\n        // x0, y0\n        p[0] = data[i++];\n        p[1] = data[i++];\n        v2ApplyTransform(p, p, m);\n        data[j++] = p[0];\n        data[j++] = p[1]; // x1, y1\n\n        p[0] += data[i++];\n        p[1] += data[i++];\n        v2ApplyTransform(p, p, m);\n        data[j++] = p[0];\n        data[j++] = p[1];\n    }\n\n    for (k = 0; k < nPoint; k++) {\n      var p = points[k];\n      p[0] = data[i++];\n      p[1] = data[i++];\n      v2ApplyTransform(p, p, m); // Write back\n\n      data[j++] = p[0];\n      data[j++] = p[1];\n    }\n  }\n}\n\nmodule.exports = _default;","var zrLog = require(\"../core/log\");\n\nvar vmlCore = require(\"./core\");\n\nvar _util = require(\"../core/util\");\n\nvar each = _util.each;\n\n/**\n * VML Painter.\n *\n * @module zrender/vml/Painter\n */\nfunction parseInt10(val) {\n  return parseInt(val, 10);\n}\n/**\n * @alias module:zrender/vml/Painter\n */\n\n\nfunction VMLPainter(root, storage) {\n  vmlCore.initVML();\n  this.root = root;\n  this.storage = storage;\n  var vmlViewport = document.createElement('div');\n  var vmlRoot = document.createElement('div');\n  vmlViewport.style.cssText = 'display:inline-block;overflow:hidden;position:relative;width:300px;height:150px;';\n  vmlRoot.style.cssText = 'position:absolute;left:0;top:0;';\n  root.appendChild(vmlViewport);\n  this._vmlRoot = vmlRoot;\n  this._vmlViewport = vmlViewport;\n  this.resize(); // Modify storage\n\n  var oldDelFromStorage = storage.delFromStorage;\n  var oldAddToStorage = storage.addToStorage;\n\n  storage.delFromStorage = function (el) {\n    oldDelFromStorage.call(storage, el);\n\n    if (el) {\n      el.onRemove && el.onRemove(vmlRoot);\n    }\n  };\n\n  storage.addToStorage = function (el) {\n    // Displayable already has a vml node\n    el.onAdd && el.onAdd(vmlRoot);\n    oldAddToStorage.call(storage, el);\n  };\n\n  this._firstPaint = true;\n}\n\nVMLPainter.prototype = {\n  constructor: VMLPainter,\n  getType: function () {\n    return 'vml';\n  },\n\n  /**\n   * @return {HTMLDivElement}\n   */\n  getViewportRoot: function () {\n    return this._vmlViewport;\n  },\n  getViewportRootOffset: function () {\n    var viewportRoot = this.getViewportRoot();\n\n    if (viewportRoot) {\n      return {\n        offsetLeft: viewportRoot.offsetLeft || 0,\n        offsetTop: viewportRoot.offsetTop || 0\n      };\n    }\n  },\n\n  /**\n   * 刷新\n   */\n  refresh: function () {\n    var list = this.storage.getDisplayList(true, true);\n\n    this._paintList(list);\n  },\n  _paintList: function (list) {\n    var vmlRoot = this._vmlRoot;\n\n    for (var i = 0; i < list.length; i++) {\n      var el = list[i];\n\n      if (el.invisible || el.ignore) {\n        if (!el.__alreadyNotVisible) {\n          el.onRemove(vmlRoot);\n        } // Set as already invisible\n\n\n        el.__alreadyNotVisible = true;\n      } else {\n        if (el.__alreadyNotVisible) {\n          el.onAdd(vmlRoot);\n        }\n\n        el.__alreadyNotVisible = false;\n\n        if (el.__dirty) {\n          el.beforeBrush && el.beforeBrush();\n          (el.brushVML || el.brush).call(el, vmlRoot);\n          el.afterBrush && el.afterBrush();\n        }\n      }\n\n      el.__dirty = false;\n    }\n\n    if (this._firstPaint) {\n      // Detached from document at first time\n      // to avoid page refreshing too many times\n      // FIXME 如果每次都先 removeChild 可能会导致一些填充和描边的效果改变\n      this._vmlViewport.appendChild(vmlRoot);\n\n      this._firstPaint = false;\n    }\n  },\n  resize: function (width, height) {\n    var width = width == null ? this._getWidth() : width;\n    var height = height == null ? this._getHeight() : height;\n\n    if (this._width != width || this._height != height) {\n      this._width = width;\n      this._height = height;\n      var vmlViewportStyle = this._vmlViewport.style;\n      vmlViewportStyle.width = width + 'px';\n      vmlViewportStyle.height = height + 'px';\n    }\n  },\n  dispose: function () {\n    this.root.innerHTML = '';\n    this._vmlRoot = this._vmlViewport = this.storage = null;\n  },\n  getWidth: function () {\n    return this._width;\n  },\n  getHeight: function () {\n    return this._height;\n  },\n  clear: function () {\n    if (this._vmlViewport) {\n      this.root.removeChild(this._vmlViewport);\n    }\n  },\n  _getWidth: function () {\n    var root = this.root;\n    var stl = root.currentStyle;\n    return (root.clientWidth || parseInt10(stl.width)) - parseInt10(stl.paddingLeft) - parseInt10(stl.paddingRight) | 0;\n  },\n  _getHeight: function () {\n    var root = this.root;\n    var stl = root.currentStyle;\n    return (root.clientHeight || parseInt10(stl.height)) - parseInt10(stl.paddingTop) - parseInt10(stl.paddingBottom) | 0;\n  }\n}; // Not supported methods\n\nfunction createMethodNotSupport(method) {\n  return function () {\n    zrLog('In IE8.0 VML mode painter not support method \"' + method + '\"');\n  };\n} // Unsupported methods\n\n\neach(['getLayer', 'insertLayer', 'eachLayer', 'eachBuiltinLayer', 'eachOtherLayer', 'getLayers', 'modLayer', 'delLayer', 'clearLayer', 'toDataURL', 'pathToImage'], function (name) {\n  VMLPainter.prototype[name] = createMethodNotSupport(name);\n});\nvar _default = VMLPainter;\nmodule.exports = _default;","var env = require(\"../core/env\");\n\nvar urn = 'urn:schemas-microsoft-com:vml';\nvar win = typeof window === 'undefined' ? null : window;\nvar vmlInited = false;\nvar doc = win && win.document;\n\nfunction createNode(tagName) {\n  return doCreateNode(tagName);\n} // Avoid assign to an exported variable, for transforming to cjs.\n\n\nvar doCreateNode;\n\nif (doc && !env.canvasSupported) {\n  try {\n    !doc.namespaces.zrvml && doc.namespaces.add('zrvml', urn);\n\n    doCreateNode = function (tagName) {\n      return doc.createElement('<zrvml:' + tagName + ' class=\"zrvml\">');\n    };\n  } catch (e) {\n    doCreateNode = function (tagName) {\n      return doc.createElement('<' + tagName + ' xmlns=\"' + urn + '\" class=\"zrvml\">');\n    };\n  }\n} // From raphael\n\n\nfunction initVML() {\n  if (vmlInited || !doc) {\n    return;\n  }\n\n  vmlInited = true;\n  var styleSheets = doc.styleSheets;\n\n  if (styleSheets.length < 31) {\n    doc.createStyleSheet().addRule('.zrvml', 'behavior:url(#default#VML)');\n  } else {\n    // http://msdn.microsoft.com/en-us/library/ms531194%28VS.85%29.aspx\n    styleSheets[0].addRule('.zrvml', 'behavior:url(#default#VML)');\n  }\n}\n\nexports.doc = doc;\nexports.createNode = createNode;\nexports.initVML = initVML;","var env = require(\"../core/env\");\n\nvar _vector = require(\"../core/vector\");\n\nvar applyTransform = _vector.applyTransform;\n\nvar BoundingRect = require(\"../core/BoundingRect\");\n\nvar colorTool = require(\"../tool/color\");\n\nvar textContain = require(\"../contain/text\");\n\nvar textHelper = require(\"../graphic/helper/text\");\n\nvar RectText = require(\"../graphic/mixin/RectText\");\n\nvar Displayable = require(\"../graphic/Displayable\");\n\nvar ZImage = require(\"../graphic/Image\");\n\nvar Text = require(\"../graphic/Text\");\n\nvar Path = require(\"../graphic/Path\");\n\nvar PathProxy = require(\"../core/PathProxy\");\n\nvar Gradient = require(\"../graphic/Gradient\");\n\nvar vmlCore = require(\"./core\");\n\n// http://www.w3.org/TR/NOTE-VML\n// TODO Use proxy like svg instead of overwrite brush methods\nvar CMD = PathProxy.CMD;\nvar round = Math.round;\nvar sqrt = Math.sqrt;\nvar abs = Math.abs;\nvar cos = Math.cos;\nvar sin = Math.sin;\nvar mathMax = Math.max;\n\nif (!env.canvasSupported) {\n  var comma = ',';\n  var imageTransformPrefix = 'progid:DXImageTransform.Microsoft';\n  var Z = 21600;\n  var Z2 = Z / 2;\n  var ZLEVEL_BASE = 100000;\n  var Z_BASE = 1000;\n\n  var initRootElStyle = function (el) {\n    el.style.cssText = 'position:absolute;left:0;top:0;width:1px;height:1px;';\n    el.coordsize = Z + ',' + Z;\n    el.coordorigin = '0,0';\n  };\n\n  var encodeHtmlAttribute = function (s) {\n    return String(s).replace(/&/g, '&amp;').replace(/\"/g, '&quot;');\n  };\n\n  var rgb2Str = function (r, g, b) {\n    return 'rgb(' + [r, g, b].join(',') + ')';\n  };\n\n  var append = function (parent, child) {\n    if (child && parent && child.parentNode !== parent) {\n      parent.appendChild(child);\n    }\n  };\n\n  var remove = function (parent, child) {\n    if (child && parent && child.parentNode === parent) {\n      parent.removeChild(child);\n    }\n  };\n\n  var getZIndex = function (zlevel, z, z2) {\n    // z 的取值范围为 [0, 1000]\n    return (parseFloat(zlevel) || 0) * ZLEVEL_BASE + (parseFloat(z) || 0) * Z_BASE + z2;\n  };\n\n  var parsePercent = function (value, maxValue) {\n    if (typeof value === 'string') {\n      if (value.lastIndexOf('%') >= 0) {\n        return parseFloat(value) / 100 * maxValue;\n      }\n\n      return parseFloat(value);\n    }\n\n    return value;\n  };\n  /***************************************************\n   * PATH\n   **************************************************/\n\n\n  var setColorAndOpacity = function (el, color, opacity) {\n    var colorArr = colorTool.parse(color);\n    opacity = +opacity;\n\n    if (isNaN(opacity)) {\n      opacity = 1;\n    }\n\n    if (colorArr) {\n      el.color = rgb2Str(colorArr[0], colorArr[1], colorArr[2]);\n      el.opacity = opacity * colorArr[3];\n    }\n  };\n\n  var getColorAndAlpha = function (color) {\n    var colorArr = colorTool.parse(color);\n    return [rgb2Str(colorArr[0], colorArr[1], colorArr[2]), colorArr[3]];\n  };\n\n  var updateFillNode = function (el, style, zrEl) {\n    // TODO pattern\n    var fill = style.fill;\n\n    if (fill != null) {\n      // Modified from excanvas\n      if (fill instanceof Gradient) {\n        var gradientType;\n        var angle = 0;\n        var focus = [0, 0]; // additional offset\n\n        var shift = 0; // scale factor for offset\n\n        var expansion = 1;\n        var rect = zrEl.getBoundingRect();\n        var rectWidth = rect.width;\n        var rectHeight = rect.height;\n\n        if (fill.type === 'linear') {\n          gradientType = 'gradient';\n          var transform = zrEl.transform;\n          var p0 = [fill.x * rectWidth, fill.y * rectHeight];\n          var p1 = [fill.x2 * rectWidth, fill.y2 * rectHeight];\n\n          if (transform) {\n            applyTransform(p0, p0, transform);\n            applyTransform(p1, p1, transform);\n          }\n\n          var dx = p1[0] - p0[0];\n          var dy = p1[1] - p0[1];\n          angle = Math.atan2(dx, dy) * 180 / Math.PI; // The angle should be a non-negative number.\n\n          if (angle < 0) {\n            angle += 360;\n          } // Very small angles produce an unexpected result because they are\n          // converted to a scientific notation string.\n\n\n          if (angle < 1e-6) {\n            angle = 0;\n          }\n        } else {\n          gradientType = 'gradientradial';\n          var p0 = [fill.x * rectWidth, fill.y * rectHeight];\n          var transform = zrEl.transform;\n          var scale = zrEl.scale;\n          var width = rectWidth;\n          var height = rectHeight;\n          focus = [// Percent in bounding rect\n          (p0[0] - rect.x) / width, (p0[1] - rect.y) / height];\n\n          if (transform) {\n            applyTransform(p0, p0, transform);\n          }\n\n          width /= scale[0] * Z;\n          height /= scale[1] * Z;\n          var dimension = mathMax(width, height);\n          shift = 2 * 0 / dimension;\n          expansion = 2 * fill.r / dimension - shift;\n        } // We need to sort the color stops in ascending order by offset,\n        // otherwise IE won't interpret it correctly.\n\n\n        var stops = fill.colorStops.slice();\n        stops.sort(function (cs1, cs2) {\n          return cs1.offset - cs2.offset;\n        });\n        var length = stops.length; // Color and alpha list of first and last stop\n\n        var colorAndAlphaList = [];\n        var colors = [];\n\n        for (var i = 0; i < length; i++) {\n          var stop = stops[i];\n          var colorAndAlpha = getColorAndAlpha(stop.color);\n          colors.push(stop.offset * expansion + shift + ' ' + colorAndAlpha[0]);\n\n          if (i === 0 || i === length - 1) {\n            colorAndAlphaList.push(colorAndAlpha);\n          }\n        }\n\n        if (length >= 2) {\n          var color1 = colorAndAlphaList[0][0];\n          var color2 = colorAndAlphaList[1][0];\n          var opacity1 = colorAndAlphaList[0][1] * style.opacity;\n          var opacity2 = colorAndAlphaList[1][1] * style.opacity;\n          el.type = gradientType;\n          el.method = 'none';\n          el.focus = '100%';\n          el.angle = angle;\n          el.color = color1;\n          el.color2 = color2;\n          el.colors = colors.join(','); // When colors attribute is used, the meanings of opacity and o:opacity2\n          // are reversed.\n\n          el.opacity = opacity2; // FIXME g_o_:opacity ?\n\n          el.opacity2 = opacity1;\n        }\n\n        if (gradientType === 'radial') {\n          el.focusposition = focus.join(',');\n        }\n      } else {\n        // FIXME Change from Gradient fill to color fill\n        setColorAndOpacity(el, fill, style.opacity);\n      }\n    }\n  };\n\n  var updateStrokeNode = function (el, style) {\n    // if (style.lineJoin != null) {\n    //     el.joinstyle = style.lineJoin;\n    // }\n    // if (style.miterLimit != null) {\n    //     el.miterlimit = style.miterLimit * Z;\n    // }\n    // if (style.lineCap != null) {\n    //     el.endcap = style.lineCap;\n    // }\n    if (style.lineDash != null) {\n      el.dashstyle = style.lineDash.join(' ');\n    }\n\n    if (style.stroke != null && !(style.stroke instanceof Gradient)) {\n      setColorAndOpacity(el, style.stroke, style.opacity);\n    }\n  };\n\n  var updateFillAndStroke = function (vmlEl, type, style, zrEl) {\n    var isFill = type == 'fill';\n    var el = vmlEl.getElementsByTagName(type)[0]; // Stroke must have lineWidth\n\n    if (style[type] != null && style[type] !== 'none' && (isFill || !isFill && style.lineWidth)) {\n      vmlEl[isFill ? 'filled' : 'stroked'] = 'true'; // FIXME Remove before updating, or set `colors` will throw error\n\n      if (style[type] instanceof Gradient) {\n        remove(vmlEl, el);\n      }\n\n      if (!el) {\n        el = vmlCore.createNode(type);\n      }\n\n      isFill ? updateFillNode(el, style, zrEl) : updateStrokeNode(el, style);\n      append(vmlEl, el);\n    } else {\n      vmlEl[isFill ? 'filled' : 'stroked'] = 'false';\n      remove(vmlEl, el);\n    }\n  };\n\n  var points = [[], [], []];\n\n  var pathDataToString = function (path, m) {\n    var M = CMD.M;\n    var C = CMD.C;\n    var L = CMD.L;\n    var A = CMD.A;\n    var Q = CMD.Q;\n    var str = [];\n    var nPoint;\n    var cmdStr;\n    var cmd;\n    var i;\n    var xi;\n    var yi;\n    var data = path.data;\n    var dataLength = path.len();\n\n    for (i = 0; i < dataLength;) {\n      cmd = data[i++];\n      cmdStr = '';\n      nPoint = 0;\n\n      switch (cmd) {\n        case M:\n          cmdStr = ' m ';\n          nPoint = 1;\n          xi = data[i++];\n          yi = data[i++];\n          points[0][0] = xi;\n          points[0][1] = yi;\n          break;\n\n        case L:\n          cmdStr = ' l ';\n          nPoint = 1;\n          xi = data[i++];\n          yi = data[i++];\n          points[0][0] = xi;\n          points[0][1] = yi;\n          break;\n\n        case Q:\n        case C:\n          cmdStr = ' c ';\n          nPoint = 3;\n          var x1 = data[i++];\n          var y1 = data[i++];\n          var x2 = data[i++];\n          var y2 = data[i++];\n          var x3;\n          var y3;\n\n          if (cmd === Q) {\n            // Convert quadratic to cubic using degree elevation\n            x3 = x2;\n            y3 = y2;\n            x2 = (x2 + 2 * x1) / 3;\n            y2 = (y2 + 2 * y1) / 3;\n            x1 = (xi + 2 * x1) / 3;\n            y1 = (yi + 2 * y1) / 3;\n          } else {\n            x3 = data[i++];\n            y3 = data[i++];\n          }\n\n          points[0][0] = x1;\n          points[0][1] = y1;\n          points[1][0] = x2;\n          points[1][1] = y2;\n          points[2][0] = x3;\n          points[2][1] = y3;\n          xi = x3;\n          yi = y3;\n          break;\n\n        case A:\n          var x = 0;\n          var y = 0;\n          var sx = 1;\n          var sy = 1;\n          var angle = 0;\n\n          if (m) {\n            // Extract SRT from matrix\n            x = m[4];\n            y = m[5];\n            sx = sqrt(m[0] * m[0] + m[1] * m[1]);\n            sy = sqrt(m[2] * m[2] + m[3] * m[3]);\n            angle = Math.atan2(-m[1] / sy, m[0] / sx);\n          }\n\n          var cx = data[i++];\n          var cy = data[i++];\n          var rx = data[i++];\n          var ry = data[i++];\n          var startAngle = data[i++] + angle;\n          var endAngle = data[i++] + startAngle + angle; // FIXME\n          // var psi = data[i++];\n\n          i++;\n          var clockwise = data[i++];\n          var x0 = cx + cos(startAngle) * rx;\n          var y0 = cy + sin(startAngle) * ry;\n          var x1 = cx + cos(endAngle) * rx;\n          var y1 = cy + sin(endAngle) * ry;\n          var type = clockwise ? ' wa ' : ' at ';\n\n          if (Math.abs(x0 - x1) < 1e-4) {\n            // IE won't render arches drawn counter clockwise if x0 == x1.\n            if (Math.abs(endAngle - startAngle) > 1e-2) {\n              // Offset x0 by 1/80 of a pixel. Use something\n              // that can be represented in binary\n              if (clockwise) {\n                x0 += 270 / Z;\n              }\n            } else {\n              // Avoid case draw full circle\n              if (Math.abs(y0 - cy) < 1e-4) {\n                if (clockwise && x0 < cx || !clockwise && x0 > cx) {\n                  y1 -= 270 / Z;\n                } else {\n                  y1 += 270 / Z;\n                }\n              } else if (clockwise && y0 < cy || !clockwise && y0 > cy) {\n                x1 += 270 / Z;\n              } else {\n                x1 -= 270 / Z;\n              }\n            }\n          }\n\n          str.push(type, round(((cx - rx) * sx + x) * Z - Z2), comma, round(((cy - ry) * sy + y) * Z - Z2), comma, round(((cx + rx) * sx + x) * Z - Z2), comma, round(((cy + ry) * sy + y) * Z - Z2), comma, round((x0 * sx + x) * Z - Z2), comma, round((y0 * sy + y) * Z - Z2), comma, round((x1 * sx + x) * Z - Z2), comma, round((y1 * sy + y) * Z - Z2));\n          xi = x1;\n          yi = y1;\n          break;\n\n        case CMD.R:\n          var p0 = points[0];\n          var p1 = points[1]; // x0, y0\n\n          p0[0] = data[i++];\n          p0[1] = data[i++]; // x1, y1\n\n          p1[0] = p0[0] + data[i++];\n          p1[1] = p0[1] + data[i++];\n\n          if (m) {\n            applyTransform(p0, p0, m);\n            applyTransform(p1, p1, m);\n          }\n\n          p0[0] = round(p0[0] * Z - Z2);\n          p1[0] = round(p1[0] * Z - Z2);\n          p0[1] = round(p0[1] * Z - Z2);\n          p1[1] = round(p1[1] * Z - Z2);\n          str.push( // x0, y0\n          ' m ', p0[0], comma, p0[1], // x1, y0\n          ' l ', p1[0], comma, p0[1], // x1, y1\n          ' l ', p1[0], comma, p1[1], // x0, y1\n          ' l ', p0[0], comma, p1[1]);\n          break;\n\n        case CMD.Z:\n          // FIXME Update xi, yi\n          str.push(' x ');\n      }\n\n      if (nPoint > 0) {\n        str.push(cmdStr);\n\n        for (var k = 0; k < nPoint; k++) {\n          var p = points[k];\n          m && applyTransform(p, p, m); // 不 round 会非常慢\n\n          str.push(round(p[0] * Z - Z2), comma, round(p[1] * Z - Z2), k < nPoint - 1 ? comma : '');\n        }\n      }\n    }\n\n    return str.join('');\n  }; // Rewrite the original path method\n\n\n  Path.prototype.brushVML = function (vmlRoot) {\n    var style = this.style;\n    var vmlEl = this._vmlEl;\n\n    if (!vmlEl) {\n      vmlEl = vmlCore.createNode('shape');\n      initRootElStyle(vmlEl);\n      this._vmlEl = vmlEl;\n    }\n\n    updateFillAndStroke(vmlEl, 'fill', style, this);\n    updateFillAndStroke(vmlEl, 'stroke', style, this);\n    var m = this.transform;\n    var needTransform = m != null;\n    var strokeEl = vmlEl.getElementsByTagName('stroke')[0];\n\n    if (strokeEl) {\n      var lineWidth = style.lineWidth; // Get the line scale.\n      // Determinant of this.m_ means how much the area is enlarged by the\n      // transformation. So its square root can be used as a scale factor\n      // for width.\n\n      if (needTransform && !style.strokeNoScale) {\n        var det = m[0] * m[3] - m[1] * m[2];\n        lineWidth *= sqrt(abs(det));\n      }\n\n      strokeEl.weight = lineWidth + 'px';\n    }\n\n    var path = this.path || (this.path = new PathProxy());\n\n    if (this.__dirtyPath) {\n      path.beginPath();\n      this.buildPath(path, this.shape);\n      path.toStatic();\n      this.__dirtyPath = false;\n    }\n\n    vmlEl.path = pathDataToString(path, this.transform);\n    vmlEl.style.zIndex = getZIndex(this.zlevel, this.z, this.z2); // Append to root\n\n    append(vmlRoot, vmlEl); // Text\n\n    if (style.text != null) {\n      this.drawRectText(vmlRoot, this.getBoundingRect());\n    } else {\n      this.removeRectText(vmlRoot);\n    }\n  };\n\n  Path.prototype.onRemove = function (vmlRoot) {\n    remove(vmlRoot, this._vmlEl);\n    this.removeRectText(vmlRoot);\n  };\n\n  Path.prototype.onAdd = function (vmlRoot) {\n    append(vmlRoot, this._vmlEl);\n    this.appendRectText(vmlRoot);\n  };\n  /***************************************************\n   * IMAGE\n   **************************************************/\n\n\n  var isImage = function (img) {\n    // FIXME img instanceof Image 如果 img 是一个字符串的时候，IE8 下会报错\n    return typeof img === 'object' && img.tagName && img.tagName.toUpperCase() === 'IMG'; // return img instanceof Image;\n  }; // Rewrite the original path method\n\n\n  ZImage.prototype.brushVML = function (vmlRoot) {\n    var style = this.style;\n    var image = style.image; // Image original width, height\n\n    var ow;\n    var oh;\n\n    if (isImage(image)) {\n      var src = image.src;\n\n      if (src === this._imageSrc) {\n        ow = this._imageWidth;\n        oh = this._imageHeight;\n      } else {\n        var imageRuntimeStyle = image.runtimeStyle;\n        var oldRuntimeWidth = imageRuntimeStyle.width;\n        var oldRuntimeHeight = imageRuntimeStyle.height;\n        imageRuntimeStyle.width = 'auto';\n        imageRuntimeStyle.height = 'auto'; // get the original size\n\n        ow = image.width;\n        oh = image.height; // and remove overides\n\n        imageRuntimeStyle.width = oldRuntimeWidth;\n        imageRuntimeStyle.height = oldRuntimeHeight; // Caching image original width, height and src\n\n        this._imageSrc = src;\n        this._imageWidth = ow;\n        this._imageHeight = oh;\n      }\n\n      image = src;\n    } else {\n      if (image === this._imageSrc) {\n        ow = this._imageWidth;\n        oh = this._imageHeight;\n      }\n    }\n\n    if (!image) {\n      return;\n    }\n\n    var x = style.x || 0;\n    var y = style.y || 0;\n    var dw = style.width;\n    var dh = style.height;\n    var sw = style.sWidth;\n    var sh = style.sHeight;\n    var sx = style.sx || 0;\n    var sy = style.sy || 0;\n    var hasCrop = sw && sh;\n    var vmlEl = this._vmlEl;\n\n    if (!vmlEl) {\n      // FIXME 使用 group 在 left, top 都不是 0 的时候就无法显示了。\n      // vmlEl = vmlCore.createNode('group');\n      vmlEl = vmlCore.doc.createElement('div');\n      initRootElStyle(vmlEl);\n      this._vmlEl = vmlEl;\n    }\n\n    var vmlElStyle = vmlEl.style;\n    var hasRotation = false;\n    var m;\n    var scaleX = 1;\n    var scaleY = 1;\n\n    if (this.transform) {\n      m = this.transform;\n      scaleX = sqrt(m[0] * m[0] + m[1] * m[1]);\n      scaleY = sqrt(m[2] * m[2] + m[3] * m[3]);\n      hasRotation = m[1] || m[2];\n    }\n\n    if (hasRotation) {\n      // If filters are necessary (rotation exists), create them\n      // filters are bog-slow, so only create them if abbsolutely necessary\n      // The following check doesn't account for skews (which don't exist\n      // in the canvas spec (yet) anyway.\n      // From excanvas\n      var p0 = [x, y];\n      var p1 = [x + dw, y];\n      var p2 = [x, y + dh];\n      var p3 = [x + dw, y + dh];\n      applyTransform(p0, p0, m);\n      applyTransform(p1, p1, m);\n      applyTransform(p2, p2, m);\n      applyTransform(p3, p3, m);\n      var maxX = mathMax(p0[0], p1[0], p2[0], p3[0]);\n      var maxY = mathMax(p0[1], p1[1], p2[1], p3[1]);\n      var transformFilter = [];\n      transformFilter.push('M11=', m[0] / scaleX, comma, 'M12=', m[2] / scaleY, comma, 'M21=', m[1] / scaleX, comma, 'M22=', m[3] / scaleY, comma, 'Dx=', round(x * scaleX + m[4]), comma, 'Dy=', round(y * scaleY + m[5]));\n      vmlElStyle.padding = '0 ' + round(maxX) + 'px ' + round(maxY) + 'px 0'; // FIXME DXImageTransform 在 IE11 的兼容模式下不起作用\n\n      vmlElStyle.filter = imageTransformPrefix + '.Matrix(' + transformFilter.join('') + ', SizingMethod=clip)';\n    } else {\n      if (m) {\n        x = x * scaleX + m[4];\n        y = y * scaleY + m[5];\n      }\n\n      vmlElStyle.filter = '';\n      vmlElStyle.left = round(x) + 'px';\n      vmlElStyle.top = round(y) + 'px';\n    }\n\n    var imageEl = this._imageEl;\n    var cropEl = this._cropEl;\n\n    if (!imageEl) {\n      imageEl = vmlCore.doc.createElement('div');\n      this._imageEl = imageEl;\n    }\n\n    var imageELStyle = imageEl.style;\n\n    if (hasCrop) {\n      // Needs know image original width and height\n      if (!(ow && oh)) {\n        var tmpImage = new Image();\n        var self = this;\n\n        tmpImage.onload = function () {\n          tmpImage.onload = null;\n          ow = tmpImage.width;\n          oh = tmpImage.height; // Adjust image width and height to fit the ratio destinationSize / sourceSize\n\n          imageELStyle.width = round(scaleX * ow * dw / sw) + 'px';\n          imageELStyle.height = round(scaleY * oh * dh / sh) + 'px'; // Caching image original width, height and src\n\n          self._imageWidth = ow;\n          self._imageHeight = oh;\n          self._imageSrc = image;\n        };\n\n        tmpImage.src = image;\n      } else {\n        imageELStyle.width = round(scaleX * ow * dw / sw) + 'px';\n        imageELStyle.height = round(scaleY * oh * dh / sh) + 'px';\n      }\n\n      if (!cropEl) {\n        cropEl = vmlCore.doc.createElement('div');\n        cropEl.style.overflow = 'hidden';\n        this._cropEl = cropEl;\n      }\n\n      var cropElStyle = cropEl.style;\n      cropElStyle.width = round((dw + sx * dw / sw) * scaleX);\n      cropElStyle.height = round((dh + sy * dh / sh) * scaleY);\n      cropElStyle.filter = imageTransformPrefix + '.Matrix(Dx=' + -sx * dw / sw * scaleX + ',Dy=' + -sy * dh / sh * scaleY + ')';\n\n      if (!cropEl.parentNode) {\n        vmlEl.appendChild(cropEl);\n      }\n\n      if (imageEl.parentNode != cropEl) {\n        cropEl.appendChild(imageEl);\n      }\n    } else {\n      imageELStyle.width = round(scaleX * dw) + 'px';\n      imageELStyle.height = round(scaleY * dh) + 'px';\n      vmlEl.appendChild(imageEl);\n\n      if (cropEl && cropEl.parentNode) {\n        vmlEl.removeChild(cropEl);\n        this._cropEl = null;\n      }\n    }\n\n    var filterStr = '';\n    var alpha = style.opacity;\n\n    if (alpha < 1) {\n      filterStr += '.Alpha(opacity=' + round(alpha * 100) + ') ';\n    }\n\n    filterStr += imageTransformPrefix + '.AlphaImageLoader(src=' + image + ', SizingMethod=scale)';\n    imageELStyle.filter = filterStr;\n    vmlEl.style.zIndex = getZIndex(this.zlevel, this.z, this.z2); // Append to root\n\n    append(vmlRoot, vmlEl); // Text\n\n    if (style.text != null) {\n      this.drawRectText(vmlRoot, this.getBoundingRect());\n    }\n  };\n\n  ZImage.prototype.onRemove = function (vmlRoot) {\n    remove(vmlRoot, this._vmlEl);\n    this._vmlEl = null;\n    this._cropEl = null;\n    this._imageEl = null;\n    this.removeRectText(vmlRoot);\n  };\n\n  ZImage.prototype.onAdd = function (vmlRoot) {\n    append(vmlRoot, this._vmlEl);\n    this.appendRectText(vmlRoot);\n  };\n  /***************************************************\n   * TEXT\n   **************************************************/\n\n\n  var DEFAULT_STYLE_NORMAL = 'normal';\n  var fontStyleCache = {};\n  var fontStyleCacheCount = 0;\n  var MAX_FONT_CACHE_SIZE = 100;\n  var fontEl = document.createElement('div');\n\n  var getFontStyle = function (fontString) {\n    var fontStyle = fontStyleCache[fontString];\n\n    if (!fontStyle) {\n      // Clear cache\n      if (fontStyleCacheCount > MAX_FONT_CACHE_SIZE) {\n        fontStyleCacheCount = 0;\n        fontStyleCache = {};\n      }\n\n      var style = fontEl.style;\n      var fontFamily;\n\n      try {\n        style.font = fontString;\n        fontFamily = style.fontFamily.split(',')[0];\n      } catch (e) {}\n\n      fontStyle = {\n        style: style.fontStyle || DEFAULT_STYLE_NORMAL,\n        variant: style.fontVariant || DEFAULT_STYLE_NORMAL,\n        weight: style.fontWeight || DEFAULT_STYLE_NORMAL,\n        size: parseFloat(style.fontSize || 12) | 0,\n        family: fontFamily || 'Microsoft YaHei'\n      };\n      fontStyleCache[fontString] = fontStyle;\n      fontStyleCacheCount++;\n    }\n\n    return fontStyle;\n  };\n\n  var textMeasureEl; // Overwrite measure text method\n\n  textContain.$override('measureText', function (text, textFont) {\n    var doc = vmlCore.doc;\n\n    if (!textMeasureEl) {\n      textMeasureEl = doc.createElement('div');\n      textMeasureEl.style.cssText = 'position:absolute;top:-20000px;left:0;' + 'padding:0;margin:0;border:none;white-space:pre;';\n      vmlCore.doc.body.appendChild(textMeasureEl);\n    }\n\n    try {\n      textMeasureEl.style.font = textFont;\n    } catch (ex) {// Ignore failures to set to invalid font.\n    }\n\n    textMeasureEl.innerHTML = ''; // Don't use innerHTML or innerText because they allow markup/whitespace.\n\n    textMeasureEl.appendChild(doc.createTextNode(text));\n    return {\n      width: textMeasureEl.offsetWidth\n    };\n  });\n  var tmpRect = new BoundingRect();\n\n  var drawRectText = function (vmlRoot, rect, textRect, fromTextEl) {\n    var style = this.style; // Optimize, avoid normalize every time.\n\n    this.__dirty && textHelper.normalizeTextStyle(style, true);\n    var text = style.text; // Convert to string\n\n    text != null && (text += '');\n\n    if (!text) {\n      return;\n    } // Convert rich text to plain text. Rich text is not supported in\n    // IE8-, but tags in rich text template will be removed.\n\n\n    if (style.rich) {\n      var contentBlock = textContain.parseRichText(text, style);\n      text = [];\n\n      for (var i = 0; i < contentBlock.lines.length; i++) {\n        var tokens = contentBlock.lines[i].tokens;\n        var textLine = [];\n\n        for (var j = 0; j < tokens.length; j++) {\n          textLine.push(tokens[j].text);\n        }\n\n        text.push(textLine.join(''));\n      }\n\n      text = text.join('\\n');\n    }\n\n    var x;\n    var y;\n    var align = style.textAlign;\n    var verticalAlign = style.textVerticalAlign;\n    var fontStyle = getFontStyle(style.font); // FIXME encodeHtmlAttribute ?\n\n    var font = fontStyle.style + ' ' + fontStyle.variant + ' ' + fontStyle.weight + ' ' + fontStyle.size + 'px \"' + fontStyle.family + '\"';\n    textRect = textRect || textContain.getBoundingRect(text, font, align, verticalAlign); // Transform rect to view space\n\n    var m = this.transform; // Ignore transform for text in other element\n\n    if (m && !fromTextEl) {\n      tmpRect.copy(rect);\n      tmpRect.applyTransform(m);\n      rect = tmpRect;\n    }\n\n    if (!fromTextEl) {\n      var textPosition = style.textPosition;\n      var distance = style.textDistance; // Text position represented by coord\n\n      if (textPosition instanceof Array) {\n        x = rect.x + parsePercent(textPosition[0], rect.width);\n        y = rect.y + parsePercent(textPosition[1], rect.height);\n        align = align || 'left';\n      } else {\n        var res = textContain.adjustTextPositionOnRect(textPosition, rect, distance);\n        x = res.x;\n        y = res.y; // Default align and baseline when has textPosition\n\n        align = align || res.textAlign;\n        verticalAlign = verticalAlign || res.textVerticalAlign;\n      }\n    } else {\n      x = rect.x;\n      y = rect.y;\n    }\n\n    x = textContain.adjustTextX(x, textRect.width, align);\n    y = textContain.adjustTextY(y, textRect.height, verticalAlign); // Force baseline 'middle'\n\n    y += textRect.height / 2; // var fontSize = fontStyle.size;\n    // 1.75 is an arbitrary number, as there is no info about the text baseline\n    // switch (baseline) {\n    // case 'hanging':\n    // case 'top':\n    //     y += fontSize / 1.75;\n    //     break;\n    //     case 'middle':\n    //         break;\n    //     default:\n    //     // case null:\n    //     // case 'alphabetic':\n    //     // case 'ideographic':\n    //     // case 'bottom':\n    //         y -= fontSize / 2.25;\n    //         break;\n    // }\n    // switch (align) {\n    //     case 'left':\n    //         break;\n    //     case 'center':\n    //         x -= textRect.width / 2;\n    //         break;\n    //     case 'right':\n    //         x -= textRect.width;\n    //         break;\n    // case 'end':\n    // align = elementStyle.direction == 'ltr' ? 'right' : 'left';\n    // break;\n    // case 'start':\n    // align = elementStyle.direction == 'rtl' ? 'right' : 'left';\n    // break;\n    // default:\n    //     align = 'left';\n    // }\n\n    var createNode = vmlCore.createNode;\n    var textVmlEl = this._textVmlEl;\n    var pathEl;\n    var textPathEl;\n    var skewEl;\n\n    if (!textVmlEl) {\n      textVmlEl = createNode('line');\n      pathEl = createNode('path');\n      textPathEl = createNode('textpath');\n      skewEl = createNode('skew'); // FIXME Why here is not cammel case\n      // Align 'center' seems wrong\n\n      textPathEl.style['v-text-align'] = 'left';\n      initRootElStyle(textVmlEl);\n      pathEl.textpathok = true;\n      textPathEl.on = true;\n      textVmlEl.from = '0 0';\n      textVmlEl.to = '1000 0.05';\n      append(textVmlEl, skewEl);\n      append(textVmlEl, pathEl);\n      append(textVmlEl, textPathEl);\n      this._textVmlEl = textVmlEl;\n    } else {\n      // 这里是在前面 appendChild 保证顺序的前提下\n      skewEl = textVmlEl.firstChild;\n      pathEl = skewEl.nextSibling;\n      textPathEl = pathEl.nextSibling;\n    }\n\n    var coords = [x, y];\n    var textVmlElStyle = textVmlEl.style; // Ignore transform for text in other element\n\n    if (m && fromTextEl) {\n      applyTransform(coords, coords, m);\n      skewEl.on = true;\n      skewEl.matrix = m[0].toFixed(3) + comma + m[2].toFixed(3) + comma + m[1].toFixed(3) + comma + m[3].toFixed(3) + ',0,0'; // Text position\n\n      skewEl.offset = (round(coords[0]) || 0) + ',' + (round(coords[1]) || 0); // Left top point as origin\n\n      skewEl.origin = '0 0';\n      textVmlElStyle.left = '0px';\n      textVmlElStyle.top = '0px';\n    } else {\n      skewEl.on = false;\n      textVmlElStyle.left = round(x) + 'px';\n      textVmlElStyle.top = round(y) + 'px';\n    }\n\n    textPathEl.string = encodeHtmlAttribute(text); // TODO\n\n    try {\n      textPathEl.style.font = font;\n    } // Error font format\n    catch (e) {}\n\n    updateFillAndStroke(textVmlEl, 'fill', {\n      fill: style.textFill,\n      opacity: style.opacity\n    }, this);\n    updateFillAndStroke(textVmlEl, 'stroke', {\n      stroke: style.textStroke,\n      opacity: style.opacity,\n      lineDash: style.lineDash\n    }, this);\n    textVmlEl.style.zIndex = getZIndex(this.zlevel, this.z, this.z2); // Attached to root\n\n    append(vmlRoot, textVmlEl);\n  };\n\n  var removeRectText = function (vmlRoot) {\n    remove(vmlRoot, this._textVmlEl);\n    this._textVmlEl = null;\n  };\n\n  var appendRectText = function (vmlRoot) {\n    append(vmlRoot, this._textVmlEl);\n  };\n\n  var list = [RectText, Displayable, ZImage, Path, Text]; // In case Displayable has been mixed in RectText\n\n  for (var i = 0; i < list.length; i++) {\n    var proto = list[i].prototype;\n    proto.drawRectText = drawRectText;\n    proto.removeRectText = removeRectText;\n    proto.appendRectText = appendRectText;\n  }\n\n  Text.prototype.brushVML = function (vmlRoot) {\n    var style = this.style;\n\n    if (style.text != null) {\n      this.drawRectText(vmlRoot, {\n        x: style.x || 0,\n        y: style.y || 0,\n        width: 0,\n        height: 0\n      }, this.getBoundingRect(), true);\n    } else {\n      this.removeRectText(vmlRoot);\n    }\n  };\n\n  Text.prototype.onRemove = function (vmlRoot) {\n    this.removeRectText(vmlRoot);\n  };\n\n  Text.prototype.onAdd = function (vmlRoot) {\n    this.appendRectText(vmlRoot);\n  };\n}","require(\"./graphic\");\n\nvar _zrender = require(\"../zrender\");\n\nvar registerPainter = _zrender.registerPainter;\n\nvar Painter = require(\"./Painter\");\n\nregisterPainter('vml', Painter);","var guid = require(\"./core/guid\");\n\nvar env = require(\"./core/env\");\n\nvar zrUtil = require(\"./core/util\");\n\nvar Handler = require(\"./Handler\");\n\nvar Storage = require(\"./Storage\");\n\nvar Painter = require(\"./Painter\");\n\nvar Animation = require(\"./animation/Animation\");\n\nvar HandlerProxy = require(\"./dom/HandlerProxy\");\n\n/*!\n* ZRender, a high performance 2d drawing library.\n*\n* Copyright (c) 2013, Baidu Inc.\n* All rights reserved.\n*\n* LICENSE\n* https://github.com/ecomfe/zrender/blob/master/LICENSE.txt\n*/\nvar useVML = !env.canvasSupported;\nvar painterCtors = {\n  canvas: Painter\n};\nvar instances = {}; // ZRender实例map索引\n\n/**\n * @type {string}\n */\n\nvar version = '4.0.1';\n/**\n * Initializing a zrender instance\n * @param {HTMLElement} dom\n * @param {Object} opts\n * @param {string} [opts.renderer='canvas'] 'canvas' or 'svg'\n * @param {number} [opts.devicePixelRatio]\n * @param {number|string} [opts.width] Can be 'auto' (the same as null/undefined)\n * @param {number|string} [opts.height] Can be 'auto' (the same as null/undefined)\n * @return {module:zrender/ZRender}\n */\n\nfunction init(dom, opts) {\n  var zr = new ZRender(guid(), dom, opts);\n  instances[zr.id] = zr;\n  return zr;\n}\n/**\n * Dispose zrender instance\n * @param {module:zrender/ZRender} zr\n */\n\n\nfunction dispose(zr) {\n  if (zr) {\n    zr.dispose();\n  } else {\n    for (var key in instances) {\n      if (instances.hasOwnProperty(key)) {\n        instances[key].dispose();\n      }\n    }\n\n    instances = {};\n  }\n\n  return this;\n}\n/**\n * Get zrender instance by id\n * @param {string} id zrender instance id\n * @return {module:zrender/ZRender}\n */\n\n\nfunction getInstance(id) {\n  return instances[id];\n}\n\nfunction registerPainter(name, Ctor) {\n  painterCtors[name] = Ctor;\n}\n\nfunction delInstance(id) {\n  delete instances[id];\n}\n/**\n * @module zrender/ZRender\n */\n\n/**\n * @constructor\n * @alias module:zrender/ZRender\n * @param {string} id\n * @param {HTMLElement} dom\n * @param {Object} opts\n * @param {string} [opts.renderer='canvas'] 'canvas' or 'svg'\n * @param {number} [opts.devicePixelRatio]\n * @param {number} [opts.width] Can be 'auto' (the same as null/undefined)\n * @param {number} [opts.height] Can be 'auto' (the same as null/undefined)\n */\n\n\nvar ZRender = function (id, dom, opts) {\n  opts = opts || {};\n  /**\n   * @type {HTMLDomElement}\n   */\n\n  this.dom = dom;\n  /**\n   * @type {string}\n   */\n\n  this.id = id;\n  var self = this;\n  var storage = new Storage();\n  var rendererType = opts.renderer; // TODO WebGL\n\n  if (useVML) {\n    if (!painterCtors.vml) {\n      throw new Error('You need to require \\'zrender/vml/vml\\' to support IE8');\n    }\n\n    rendererType = 'vml';\n  } else if (!rendererType || !painterCtors[rendererType]) {\n    rendererType = 'canvas';\n  }\n\n  var painter = new painterCtors[rendererType](dom, storage, opts, id);\n  this.storage = storage;\n  this.painter = painter;\n  var handerProxy = !env.node && !env.worker ? new HandlerProxy(painter.getViewportRoot()) : null;\n  this.handler = new Handler(storage, painter, handerProxy, painter.root);\n  /**\n   * @type {module:zrender/animation/Animation}\n   */\n\n  this.animation = new Animation({\n    stage: {\n      update: zrUtil.bind(this.flush, this)\n    }\n  });\n  this.animation.start();\n  /**\n   * @type {boolean}\n   * @private\n   */\n\n  this._needsRefresh; // 修改 storage.delFromStorage, 每次删除元素之前删除动画\n  // FIXME 有点ugly\n\n  var oldDelFromStorage = storage.delFromStorage;\n  var oldAddToStorage = storage.addToStorage;\n\n  storage.delFromStorage = function (el) {\n    oldDelFromStorage.call(storage, el);\n    el && el.removeSelfFromZr(self);\n  };\n\n  storage.addToStorage = function (el) {\n    oldAddToStorage.call(storage, el);\n    el.addSelfToZr(self);\n  };\n};\n\nZRender.prototype = {\n  constructor: ZRender,\n\n  /**\n   * 获取实例唯一标识\n   * @return {string}\n   */\n  getId: function () {\n    return this.id;\n  },\n\n  /**\n   * 添加元素\n   * @param  {module:zrender/Element} el\n   */\n  add: function (el) {\n    this.storage.addRoot(el);\n    this._needsRefresh = true;\n  },\n\n  /**\n   * 删除元素\n   * @param  {module:zrender/Element} el\n   */\n  remove: function (el) {\n    this.storage.delRoot(el);\n    this._needsRefresh = true;\n  },\n\n  /**\n   * Change configuration of layer\n   * @param {string} zLevel\n   * @param {Object} config\n   * @param {string} [config.clearColor=0] Clear color\n   * @param {string} [config.motionBlur=false] If enable motion blur\n   * @param {number} [config.lastFrameAlpha=0.7] Motion blur factor. Larger value cause longer trailer\n  */\n  configLayer: function (zLevel, config) {\n    this.painter.configLayer(zLevel, config);\n    this._needsRefresh = true;\n  },\n\n  /**\n   * Repaint the canvas immediately\n   */\n  refreshImmediately: function () {\n    // var start = new Date();\n    // Clear needsRefresh ahead to avoid something wrong happens in refresh\n    // Or it will cause zrender refreshes again and again.\n    this._needsRefresh = false;\n    this.painter.refresh();\n    /**\n     * Avoid trigger zr.refresh in Element#beforeUpdate hook\n     */\n\n    this._needsRefresh = false; // var end = new Date();\n    // var log = document.getElementById('log');\n    // if (log) {\n    //     log.innerHTML = log.innerHTML + '<br>' + (end - start);\n    // }\n  },\n\n  /**\n   * Mark and repaint the canvas in the next frame of browser\n   */\n  refresh: function () {\n    this._needsRefresh = true;\n  },\n\n  /**\n   * Perform all refresh\n   */\n  flush: function () {\n    if (this._needsRefresh) {\n      this.refreshImmediately();\n    }\n\n    if (this._needsRefreshHover) {\n      this.refreshHoverImmediately();\n    }\n  },\n\n  /**\n   * Add element to hover layer\n   * @param  {module:zrender/Element} el\n   * @param {Object} style\n   */\n  addHover: function (el, style) {\n    if (this.painter.addHover) {\n      this.painter.addHover(el, style);\n      this.refreshHover();\n    }\n  },\n\n  /**\n   * Add element from hover layer\n   * @param  {module:zrender/Element} el\n   */\n  removeHover: function (el) {\n    if (this.painter.removeHover) {\n      this.painter.removeHover(el);\n      this.refreshHover();\n    }\n  },\n\n  /**\n   * Clear all hover elements in hover layer\n   * @param  {module:zrender/Element} el\n   */\n  clearHover: function () {\n    if (this.painter.clearHover) {\n      this.painter.clearHover();\n      this.refreshHover();\n    }\n  },\n\n  /**\n   * Refresh hover in next frame\n   */\n  refreshHover: function () {\n    this._needsRefreshHover = true;\n  },\n\n  /**\n   * Refresh hover immediately\n   */\n  refreshHoverImmediately: function () {\n    this._needsRefreshHover = false;\n    this.painter.refreshHover && this.painter.refreshHover();\n  },\n\n  /**\n   * Resize the canvas.\n   * Should be invoked when container size is changed\n   * @param {Object} [opts]\n   * @param {number|string} [opts.width] Can be 'auto' (the same as null/undefined)\n   * @param {number|string} [opts.height] Can be 'auto' (the same as null/undefined)\n   */\n  resize: function (opts) {\n    opts = opts || {};\n    this.painter.resize(opts.width, opts.height);\n    this.handler.resize();\n  },\n\n  /**\n   * Stop and clear all animation immediately\n   */\n  clearAnimation: function () {\n    this.animation.clear();\n  },\n\n  /**\n   * Get container width\n   */\n  getWidth: function () {\n    return this.painter.getWidth();\n  },\n\n  /**\n   * Get container height\n   */\n  getHeight: function () {\n    return this.painter.getHeight();\n  },\n\n  /**\n   * Export the canvas as Base64 URL\n   * @param {string} type\n   * @param {string} [backgroundColor='#fff']\n   * @return {string} Base64 URL\n   */\n  // toDataURL: function(type, backgroundColor) {\n  //     return this.painter.getRenderedCanvas({\n  //         backgroundColor: backgroundColor\n  //     }).toDataURL(type);\n  // },\n\n  /**\n   * Converting a path to image.\n   * It has much better performance of drawing image rather than drawing a vector path.\n   * @param {module:zrender/graphic/Path} e\n   * @param {number} width\n   * @param {number} height\n   */\n  pathToImage: function (e, dpr) {\n    return this.painter.pathToImage(e, dpr);\n  },\n\n  /**\n   * Set default cursor\n   * @param {string} [cursorStyle='default'] 例如 crosshair\n   */\n  setCursorStyle: function (cursorStyle) {\n    this.handler.setCursorStyle(cursorStyle);\n  },\n\n  /**\n   * Find hovered element\n   * @param {number} x\n   * @param {number} y\n   * @return {Object} {target, topTarget}\n   */\n  findHover: function (x, y) {\n    return this.handler.findHover(x, y);\n  },\n\n  /**\n   * Bind event\n   *\n   * @param {string} eventName Event name\n   * @param {Function} eventHandler Handler function\n   * @param {Object} [context] Context object\n   */\n  on: function (eventName, eventHandler, context) {\n    this.handler.on(eventName, eventHandler, context);\n  },\n\n  /**\n   * Unbind event\n   * @param {string} eventName Event name\n   * @param {Function} [eventHandler] Handler function\n   */\n  off: function (eventName, eventHandler) {\n    this.handler.off(eventName, eventHandler);\n  },\n\n  /**\n   * Trigger event manually\n   *\n   * @param {string} eventName Event name\n   * @param {event=} event Event object\n   */\n  trigger: function (eventName, event) {\n    this.handler.trigger(eventName, event);\n  },\n\n  /**\n   * Clear all objects and the canvas.\n   */\n  clear: function () {\n    this.storage.delRoot();\n    this.painter.clear();\n  },\n\n  /**\n   * Dispose self.\n   */\n  dispose: function () {\n    this.animation.stop();\n    this.clear();\n    this.storage.dispose();\n    this.painter.dispose();\n    this.handler.dispose();\n    this.animation = this.storage = this.painter = this.handler = null;\n    delInstance(this.id);\n  }\n};\nexports.version = version;\nexports.init = init;\nexports.dispose = dispose;\nexports.getInstance = getInstance;\nexports.registerPainter = registerPainter;","import { Component, EventEmitter, Input, OnDestroy, Output } from '@angular/core';\nimport { NbMediaBreakpoint, NbMediaBreakpointsService, NbThemeService } from '@nebular/theme';\nimport { takeWhile } from 'rxjs/operators';\n\n\n@Component({\n  selector: 'ngx-chart-panel-header',\n  styleUrls: ['./chart-panel-header.component.scss'],\n  templateUrl: './chart-panel-header.component.html',\n})\nexport class ChartPanelHeaderComponent implements OnDestroy {\n\n  private alive = true;\n\n  @Output() periodChange = new EventEmitter<string>();\n\n  @Input() type: string = 'week';\n\n  types: string[] = ['week', 'month', 'year'];\n  chartLegend: {iconColor: string; title: string}[];\n  breakpoint: NbMediaBreakpoint = { name: '', width: 0 };\n  breakpoints: any;\n  currentTheme: string;\n\n  constructor(private themeService: NbThemeService,\n              private breakpointService: NbMediaBreakpointsService) {\n    this.themeService.getJsTheme()\n      .pipe(takeWhile(() => this.alive))\n      .subscribe(theme => {\n        const orderProfitLegend = theme.variables.orderProfitLegend;\n\n        this.currentTheme = theme.name;\n        this.setLegendItems(orderProfitLegend);\n      });\n\n      this.breakpoints = this.breakpointService.getBreakpointsMap();\n      this.themeService.onMediaQueryChange()\n        .pipe(takeWhile(() => this.alive))\n        .subscribe(([oldValue, newValue]) => {\n          this.breakpoint = newValue;\n        });\n  }\n\n  setLegendItems(orderProfitLegend) {\n    this.chartLegend = [\n      {\n        iconColor: orderProfitLegend.firstItem,\n        title: 'Severe',\n      },\n      {\n        iconColor: orderProfitLegend.secondItem,\n        title: 'Mild',\n      },\n      {\n        iconColor: orderProfitLegend.thirdItem,\n        title: 'All',\n      },\n    ];\n  }\n\n  changePeriod(period: string): void {\n    this.type = period;\n    this.periodChange.emit(period);\n  }\n\n  ngOnDestroy() {\n    this.alive = false;\n  }\n}\n","<ngx-legend-chart [legendItems]=\"chartLegend\"></ngx-legend-chart>\n\n<nb-select class=\"period-select\" [selected]=\"type\" (selectedChange)=\"changePeriod($event)\">\n  <nb-option *ngFor=\"let period of types\" [value]=\"period\">\n    {{ period }}\n  </nb-option>\n</nb-select>\n","import { Component, Input } from '@angular/core';\n\n@Component({\n  selector: 'ngx-chart-panel-summary',\n  styleUrls: ['./chart-panel-summary.component.scss'],\n  template: `\n    <div class=\"summary-container\">\n      <div *ngFor=\"let item of summary\">\n        <div>{{ item.title }}</div>\n        <div class=\"h6\">{{ item.value }}</div>\n      </div>\n    </div>\n  `,\n})\nexport class ChartPanelSummaryComponent {\n  @Input() summary: {title: string; value: number}[];\n}\n\n","import { Component, OnDestroy, ViewChild } from '@angular/core';\nimport { takeWhile } from 'rxjs/operators';\n\nimport { OrdersChartComponent } from './charts/orders-chart.component';\nimport { ProfitChartComponent } from './charts/profit-chart.component';\nimport { OrdersChart } from '../../../@core/data/orders-chart';\nimport { ProfitChart } from '../../../@core/data/profit-chart';\nimport { OrderProfitChartSummary, OrdersProfitChartData } from '../../../@core/data/orders-profit-chart';\n\n@Component({\n  selector: 'ngx-ecommerce-charts',\n  styleUrls: ['./charts-panel.component.scss'],\n  templateUrl: './charts-panel.component.html',\n})\nexport class ECommerceChartsPanelComponent implements OnDestroy {\n\n  private alive = true;\n\n  chartPanelSummary: OrderProfitChartSummary[];\n  period: string = 'week';\n  ordersChartData: OrdersChart;\n  profitChartData: ProfitChart;\n\n  @ViewChild('ordersChart', { static: true }) ordersChart: OrdersChartComponent;\n  @ViewChild('profitChart', { static: true }) profitChart: ProfitChartComponent;\n\n  constructor(private ordersProfitChartService: OrdersProfitChartData) {\n    this.ordersProfitChartService.getOrderProfitChartSummary()\n      .pipe(takeWhile(() => this.alive))\n      .subscribe((summary) => {\n        this.chartPanelSummary = summary;\n      });\n\n    this.getOrdersChartData(this.period);\n    this.getProfitChartData(this.period);\n  }\n\n  setPeriodAndGetChartData(value: string): void {\n    if (this.period !== value) {\n      this.period = value;\n    }\n\n    this.getOrdersChartData(value);\n    this.getProfitChartData(value);\n  }\n\n  changeTab(selectedTab) {\n    if (selectedTab.tabTitle === 'Profit') {\n      this.profitChart.resizeChart();\n    } else {\n      this.ordersChart.resizeChart();\n    }\n  }\n\n  getOrdersChartData(period: string) {\n    this.ordersProfitChartService.getOrdersChartData(period)\n      .pipe(takeWhile(() => this.alive))\n      .subscribe(ordersChartData => {\n        this.ordersChartData = ordersChartData;\n      });\n  }\n\n  getProfitChartData(period: string) {\n    this.ordersProfitChartService.getProfitChartData(period)\n      .pipe(takeWhile(() => this.alive))\n      .subscribe(profitChartData => {\n        this.profitChartData = profitChartData;\n      });\n  }\n\n  ngOnDestroy() {\n    this.alive = false;\n  }\n}\n","<nb-card size=\"large\">\n  <nb-tabset fullWidth (changeTab)=\"changeTab($event)\">\n    <nb-tab tabTitle=\"Quarantined\">\n      <div class=\"chart-container\">\n        <ngx-chart-panel-summary [summary]=\"chartPanelSummary\"></ngx-chart-panel-summary>\n        <ngx-chart-panel-header [type]=\"period\"\n                                (periodChange)=\"setPeriodAndGetChartData($event)\">\n        </ngx-chart-panel-header>\n        <ngx-orders-chart #ordersChart [ordersChartData]=\"ordersChartData\"></ngx-orders-chart>\n      </div>\n    </nb-tab>\n    <nb-tab tabTitle=\"Self-Isolated\" [lazyLoad]=\"true\">\n      <div class=\"chart-container\">\n        <ngx-chart-panel-summary [summary]=\"chartPanelSummary\"></ngx-chart-panel-summary>\n        <ngx-chart-panel-header [type]=\"period\"\n                                (periodChange)=\"setPeriodAndGetChartData($event)\">\n        </ngx-chart-panel-header>\n        <ngx-profit-chart #profitChart [profitChartData]=\"profitChartData\"></ngx-profit-chart>\n      </div>\n    </nb-tab>\n  </nb-tabset>\n</nb-card>\n","import { AfterViewInit, Component, Input, OnChanges, OnDestroy } from '@angular/core';\nimport { NbThemeService } from '@nebular/theme';\nimport { delay, takeWhile } from 'rxjs/operators';\n\nimport { OrdersChart } from '../../../../@core/data/orders-chart';\nimport { LayoutService } from '../../../../@core/utils/layout.service';\n\n@Component({\n  selector: 'ngx-orders-chart',\n  styleUrls: ['./charts-common.component.scss'],\n  template: `\n    <div echarts\n         [options]=\"option\"\n         [merge]=\"option\"\n         class=\"echart\"\n         (chartInit)=\"onChartInit($event)\">\n    </div>\n  `,\n})\nexport class OrdersChartComponent implements AfterViewInit, OnDestroy, OnChanges {\n\n  @Input()\n  ordersChartData: OrdersChart;\n\n  private alive = true;\n\n  echartsIntance: any;\n  option: any;\n\n  ngOnChanges(): void {\n    if (this.option) {\n      this.updateOrdersChartOptions(this.ordersChartData);\n    }\n  }\n\n  constructor(private theme: NbThemeService,\n              private layoutService: LayoutService) {\n    this.layoutService.onSafeChangeLayoutSize()\n      .pipe(\n        takeWhile(() => this.alive),\n      )\n      .subscribe(() => this.resizeChart());\n  }\n\n  ngAfterViewInit(): void {\n    this.theme.getJsTheme()\n      .pipe(\n        takeWhile(() => this.alive),\n        delay(1),\n      )\n      .subscribe(config => {\n        const eTheme: any = config.variables.orders;\n\n        this.setOptions(eTheme);\n        this.updateOrdersChartOptions(this.ordersChartData);\n      });\n  }\n\n  setOptions(eTheme) {\n    this.option = {\n      grid: {\n        left: 40,\n        top: 20,\n        right: 0,\n        bottom: 40,\n      },\n      tooltip: {\n        trigger: 'item',\n        axisPointer: {\n          type: 'line',\n          lineStyle: {\n            color: eTheme.tooltipLineColor,\n            width: eTheme.tooltipLineWidth,\n          },\n        },\n        textStyle: {\n          color: eTheme.tooltipTextColor,\n          fontSize: eTheme.tooltipFontSize,\n          fontWeight: eTheme.tooltipFontWeight,\n        },\n        position: 'top',\n        backgroundColor: eTheme.tooltipBg,\n        borderColor: eTheme.tooltipBorderColor,\n        borderWidth: 1,\n        formatter: (params) => {\n          return Math.round(parseInt(params.value, 10));\n        },\n        extraCssText: eTheme.tooltipExtraCss,\n      },\n      xAxis: {\n        type: 'category',\n        boundaryGap: false,\n        offset: 5,\n        data: [],\n        axisTick: {\n          show: false,\n        },\n        axisLabel: {\n          color: eTheme.axisTextColor,\n          fontSize: eTheme.axisFontSize,\n        },\n        axisLine: {\n          lineStyle: {\n            color: eTheme.axisLineColor,\n            width: '2',\n          },\n        },\n      },\n      yAxis: {\n        type: 'value',\n        boundaryGap: false,\n        axisLine: {\n          lineStyle: {\n            color: eTheme.axisLineColor,\n            width: '1',\n          },\n        },\n        axisLabel: {\n          color: eTheme.axisTextColor,\n          fontSize: eTheme.axisFontSize,\n        },\n        axisTick: {\n          show: false,\n        },\n        splitLine: {\n\n          lineStyle: {\n            color: eTheme.yAxisSplitLine,\n            width: '1',\n          },\n        },\n      },\n      series: [\n        this.getFirstLine(eTheme),\n        this.getSecondLine(eTheme),\n        this.getThirdLine(eTheme),\n      ],\n    };\n  }\n\n  getFirstLine(eTheme) {\n    return {\n      type: 'line',\n      smooth: true,\n      symbolSize: 20,\n      itemStyle: {\n        normal: {\n          opacity: 0,\n        },\n        emphasis: {\n          opacity: 0,\n        },\n      },\n      lineStyle: {\n        normal: {\n          width: 0,\n        },\n      },\n      areaStyle: {\n        normal: {\n          color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{\n            offset: 0,\n            color: eTheme.firstAreaGradFrom,\n          }, {\n            offset: 1,\n            color: eTheme.firstAreaGradTo,\n          }]),\n          opacity: 1,\n        },\n      },\n      data: [],\n    };\n  }\n\n  getSecondLine(eTheme) {\n    return         {\n      type: 'line',\n      smooth: true,\n      symbolSize: 20,\n      itemStyle: {\n        normal: {\n          opacity: 0,\n        },\n        emphasis: {\n          color: '#ffffff',\n          borderColor: eTheme.itemBorderColor,\n          borderWidth: 2,\n          opacity: 1,\n        },\n      },\n      lineStyle: {\n        normal: {\n          width: eTheme.lineWidth,\n          type: eTheme.lineStyle,\n          color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{\n            offset: 0,\n            color: eTheme.secondLineGradFrom,\n          }, {\n            offset: 1,\n            color: eTheme.secondLineGradTo,\n          }]),\n        },\n      },\n      areaStyle: {\n        normal: {\n          color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{\n            offset: 0,\n            color: eTheme.secondAreaGradFrom,\n          }, {\n            offset: 1,\n            color: eTheme.secondAreaGradTo,\n          }]),\n        },\n      },\n      data: [],\n    };\n  }\n\n  getThirdLine(eTheme) {\n    return {\n      type: 'line',\n      smooth: true,\n      symbolSize: 20,\n      itemStyle: {\n        normal: {\n          opacity: 0,\n        },\n        emphasis: {\n          color: '#ffffff',\n          borderColor: eTheme.itemBorderColor,\n          borderWidth: 2,\n          opacity: 1,\n        },\n      },\n      lineStyle: {\n        normal: {\n          width: eTheme.lineWidth,\n          type: eTheme.lineStyle,\n          color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{\n            offset: 0,\n            color: eTheme.thirdLineGradFrom,\n          }, {\n            offset: 1,\n            color: eTheme.thirdLineGradTo,\n          }]),\n        },\n      },\n      areaStyle: {\n        normal: {\n          color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{\n            offset: 0,\n            color: eTheme.thirdAreaGradFrom,\n          }, {\n            offset: 1,\n            color: eTheme.thirdAreaGradTo,\n          }]),\n        },\n      },\n      data: [],\n    };\n  }\n\n  updateOrdersChartOptions(ordersChartData: OrdersChart) {\n    const options = this.option;\n    const series = this.getNewSeries(options.series, ordersChartData.linesData);\n    const xAxis = this.getNewXAxis(options.xAxis, ordersChartData.chartLabel);\n\n    this.option = {\n      ...options,\n      xAxis,\n      series,\n    };\n  }\n\n  getNewSeries(series, linesData: number[][]) {\n    return series.map((line, index) => {\n      return {\n        ...line,\n        data: linesData[index],\n      };\n    });\n  }\n\n  getNewXAxis(xAxis, chartLabel: string[]) {\n    return {\n      ...xAxis,\n      data: chartLabel,\n    };\n  }\n\n  onChartInit(echarts) {\n    this.echartsIntance = echarts;\n  }\n\n  resizeChart() {\n    if (this.echartsIntance) {\n      // Fix recalculation chart size\n      // TODO: investigate more deeply\n      setTimeout(() => {\n        this.echartsIntance.resize();\n      }, 0);\n    }\n  }\n\n  ngOnDestroy() {\n    this.alive = false;\n  }\n}\n","import { AfterViewInit, Component, Input, OnChanges, OnDestroy } from '@angular/core';\nimport { NbThemeService } from '@nebular/theme';\nimport { takeWhile } from 'rxjs/operators';\n\nimport { ProfitChart } from '../../../../@core/data/profit-chart';\nimport { LayoutService } from '../../../../@core/utils/layout.service';\n\n@Component({\n  selector: 'ngx-profit-chart',\n  styleUrls: ['./charts-common.component.scss'],\n  template: `\n    <div echarts [options]=\"options\" class=\"echart\" (chartInit)=\"onChartInit($event)\"></div>\n  `,\n})\nexport class ProfitChartComponent implements AfterViewInit, OnDestroy, OnChanges {\n\n  @Input()\n  profitChartData: ProfitChart;\n\n  private alive = true;\n\n  echartsIntance: any;\n  options: any = {};\n\n  constructor(private theme: NbThemeService,\n              private layoutService: LayoutService) {\n    this.layoutService.onSafeChangeLayoutSize()\n      .pipe(\n        takeWhile(() => this.alive),\n      )\n      .subscribe(() => this.resizeChart());\n  }\n\n  ngOnChanges(): void {\n    if (this.echartsIntance) {\n      this.updateProfitChartOptions(this.profitChartData);\n    }\n  }\n\n  ngAfterViewInit() {\n    this.theme.getJsTheme()\n      .pipe(takeWhile(() => this.alive))\n      .subscribe(config => {\n        const eTheme: any = config.variables.profit;\n\n        this.setOptions(eTheme);\n      });\n  }\n\n  setOptions(eTheme) {\n    this.options = {\n      backgroundColor: eTheme.bg,\n      tooltip: {\n        trigger: 'axis',\n        axisPointer: {\n          type: 'shadow',\n          shadowStyle: {\n            color: 'rgba(0, 0, 0, 0.3)',\n          },\n        },\n      },\n      grid: {\n        left: '3%',\n        right: '4%',\n        bottom: '3%',\n        containLabel: true,\n      },\n      xAxis: [\n        {\n          type: 'category',\n          data: this.profitChartData.chartLabel,\n          axisTick: {\n            alignWithLabel: true,\n          },\n          axisLine: {\n            lineStyle: {\n              color: eTheme.axisLineColor,\n            },\n          },\n          axisLabel: {\n            color: eTheme.axisTextColor,\n            fontSize: eTheme.axisFontSize,\n          },\n        },\n      ],\n      yAxis: [\n        {\n          type: 'value',\n          axisLine: {\n            lineStyle: {\n              color: eTheme.axisLineColor,\n            },\n          },\n          splitLine: {\n            lineStyle: {\n              color: eTheme.splitLineColor,\n            },\n          },\n          axisLabel: {\n            color: eTheme.axisTextColor,\n            fontSize: eTheme.axisFontSize,\n          },\n        },\n      ],\n      series: [\n        {\n          name: 'Severe',\n          type: 'bar',\n          barGap: 0,\n          barWidth: '20%',\n          itemStyle: {\n            normal: {\n              color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{\n                offset: 0,\n                color: eTheme.firstLineGradFrom,\n              }, {\n                offset: 1,\n                color: eTheme.firstLineGradTo,\n              }]),\n            },\n          },\n          data: this.profitChartData.data[0],\n        },\n        {\n          name: 'Mild',\n          type: 'bar',\n          barWidth: '20%',\n          itemStyle: {\n            normal: {\n              color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{\n                offset: 0,\n                color: eTheme.secondLineGradFrom,\n              }, {\n                offset: 1,\n                color: eTheme.secondLineGradTo,\n              }]),\n            },\n          },\n          data: this.profitChartData.data[1],\n        },\n        {\n          name: 'Total',\n          type: 'bar',\n          barWidth: '20%',\n          itemStyle: {\n            normal: {\n              color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{\n                offset: 0,\n                color: eTheme.thirdLineGradFrom,\n              }, {\n                offset: 1,\n                color: eTheme.thirdLineGradTo,\n              }]),\n            },\n          },\n          data: this.profitChartData.data[2],\n        },\n      ],\n    };\n  }\n\n  updateProfitChartOptions(profitChartData: ProfitChart) {\n    const options = this.options;\n    const series = this.getNewSeries(options.series, profitChartData.data);\n\n    this.echartsIntance.setOption({\n      series: series,\n      xAxis: {\n        data: this.profitChartData.chartLabel,\n      },\n    });\n  }\n\n  getNewSeries(series, data: number[][]) {\n    return series.map((line, index) => {\n      return {\n        ...line,\n        data: data[index],\n      };\n    });\n  }\n\n  onChartInit(echarts) {\n    this.echartsIntance = echarts;\n  }\n\n  resizeChart() {\n    if (this.echartsIntance) {\n      // Fix recalculation chart size\n      // TODO: investigate more deeply\n      setTimeout(() => {\n        this.echartsIntance.resize();\n      }, 0);\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.alive = false;\n  }\n}\n","import { AfterViewInit, Component, Input, OnChanges, OnDestroy, SimpleChanges } from '@angular/core';\nimport { NbThemeService } from '@nebular/theme';\nimport { takeWhile } from 'rxjs/operators';\nimport { LayoutService } from '../../../../@core/utils/layout.service';\n\n\n@Component({\n  selector: 'ngx-country-orders-chart',\n  styleUrls: ['./country-orders-chart.component.scss'],\n  template: `\n    <div class=\"header\">\n      <span class=\"caption\">Selected Country/Region</span>\n      <h2 class=\"h4\">{{ countryName }}</h2>\n    </div>\n    <div echarts\n         [options]=\"option\"\n         class=\"echart\"\n         (chartInit)=\"onChartInit($event)\">\n    </div>\n  `,\n})\nexport class CountryOrdersChartComponent implements AfterViewInit, OnDestroy, OnChanges {\n\n  @Input() countryName: string;\n  @Input() data: number[];\n  @Input() maxValue: number;\n  @Input() labels: string[];\n\n  private alive = true;\n\n  option: any = {};\n  echartsInstance;\n\n  constructor(private theme: NbThemeService,\n              private layoutService: LayoutService) {\n    this.layoutService.onSafeChangeLayoutSize()\n      .pipe(\n        takeWhile(() => this.alive),\n      )\n      .subscribe(() => this.resizeChart());\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes.data && !changes.data.isFirstChange()) {\n      this.echartsInstance.setOption({\n        series: [\n          {\n            data: this.data.map(v => this.maxValue),\n          },\n          {\n            data: this.data,\n          },\n          {\n            data: this.data,\n          },\n        ],\n      });\n    }\n  }\n\n  ngAfterViewInit() {\n    this.theme.getJsTheme()\n      .pipe(takeWhile(() => this.alive))\n      .subscribe(config => {\n        const countriesTheme: any = config.variables.countryOrders;\n\n        this.option = Object.assign({}, {\n          grid: {\n            left: '3%',\n            right: '3%',\n            bottom: '3%',\n            top: '3%',\n            containLabel: true,\n          },\n          xAxis: {\n            axisLabel: {\n              color: countriesTheme.chartAxisTextColor,\n              fontSize: countriesTheme.chartAxisFontSize,\n            },\n            axisLine: {\n              lineStyle: {\n                color: countriesTheme.chartAxisLineColor,\n                width: '2',\n              },\n            },\n            axisTick: {\n              show: false,\n            },\n            splitLine: {\n              lineStyle: {\n                color: countriesTheme.chartAxisSplitLine,\n                width: '1',\n              },\n            },\n          },\n          yAxis: {\n            data: this.labels,\n            axisLabel: {\n              color: countriesTheme.chartAxisTextColor,\n              fontSize: countriesTheme.chartAxisFontSize,\n            },\n            axisLine: {\n              lineStyle: {\n                color: countriesTheme.chartAxisLineColor,\n                width: '2',\n              },\n            },\n            axisTick: {\n              show: false,\n            },\n          },\n          series: [\n            { // For shadow\n              type: 'bar',\n              data: this.data.map(v => this.maxValue),\n              cursor: 'default',\n              itemStyle: {\n                normal: {\n                  color: countriesTheme.chartInnerLineColor,\n                },\n                opacity: 1,\n              },\n              barWidth: '40%',\n              barGap: '-100%',\n              barCategoryGap: '30%',\n              animation: false,\n              z: 1,\n            },\n            { // For bottom line\n              type: 'bar',\n              data: this.data,\n              cursor: 'default',\n              itemStyle: {\n                normal: {\n                  color: countriesTheme.chartLineBottomShadowColor,\n                },\n                opacity: 1,\n              },\n              barWidth: '40%',\n              barGap: '-100%',\n              barCategoryGap: '30%',\n              z: 2,\n            },\n            {\n              type: 'bar',\n              barWidth: '35%',\n              data: this.data,\n              cursor: 'default',\n              itemStyle: {\n                normal: {\n                  color: new echarts.graphic.LinearGradient(1, 0, 0, 0, [{\n                    offset: 0,\n                    color: countriesTheme.chartGradientFrom,\n                  }, {\n                    offset: 1,\n                    color: countriesTheme.chartGradientTo,\n                  }]),\n                },\n              },\n              z: 3,\n            },\n          ],\n        });\n      });\n  }\n\n  onChartInit(ec) {\n    this.echartsInstance = ec;\n  }\n\n  resizeChart() {\n    if (this.echartsInstance) {\n      this.echartsInstance.resize();\n    }\n  }\n\n  ngOnDestroy() {\n    this.alive = false;\n  }\n\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { NbMediaBreakpoint, NbMediaBreakpointsService, NbThemeService } from '@nebular/theme';\nimport { takeWhile } from 'rxjs/operators';\nimport { CountryOrderData } from '../../../@core/data/country-order';\n\n@Component({\n  selector: 'ngx-country-orders',\n  styleUrls: ['./country-orders.component.scss'],\n  template: `\n    <nb-card [size]=\"breakpoint.width >= breakpoints.md ? 'medium' : 'giant'\">\n      <nb-card-header>Country Orders Statistics</nb-card-header>\n      <nb-card-body>\n        <ngx-country-orders-map (select)=\"selectCountryById($event)\"\n                                countryId=\"USA\">\n        </ngx-country-orders-map>\n        <ngx-country-orders-chart [countryName]=\"countryName\"\n                                  [data]=\"countryData\"\n                                  [labels]=\"countriesCategories\"\n                                  maxValue=\"20\">\n        </ngx-country-orders-chart>\n      </nb-card-body>\n    </nb-card>\n  `,\n})\nexport class CountryOrdersComponent implements OnInit, OnDestroy {\n\n  private alive = true;\n\n  countryName = '';\n  countryData: number[] = [];\n  countriesCategories: string[];\n  breakpoint: NbMediaBreakpoint = { name: '', width: 0 };\n  breakpoints: any;\n\n  constructor(private themeService: NbThemeService,\n              private breakpointService: NbMediaBreakpointsService,\n              private countryOrderService: CountryOrderData) {\n    this.breakpoints = this.breakpointService.getBreakpointsMap();\n  }\n\n  ngOnInit() {\n    this.themeService.onMediaQueryChange()\n      .pipe(takeWhile(() => this.alive))\n      .subscribe(([oldValue, newValue]) => {\n        this.breakpoint = newValue;\n      });\n    this.countryOrderService.getCountriesCategories()\n      .pipe(takeWhile(() => this.alive))\n      .subscribe((countriesCategories) => {\n        this.countriesCategories = countriesCategories;\n      });\n  }\n\n  selectCountryById(countryName: string) {\n    this.countryName = countryName;\n\n    this.countryOrderService.getCountriesCategoriesData(countryName)\n      .pipe(takeWhile(() => this.alive))\n      .subscribe((countryData) => {\n        this.countryData = countryData;\n      });\n  }\n\n  ngOnDestroy() {\n    this.alive = false;\n  }\n}\n","import { Component, EventEmitter, Input, OnDestroy, Output } from '@angular/core';\n\nimport * as L from 'leaflet';\n\nimport { CountryOrdersMapService } from './country-orders-map.service';\nimport { NbThemeService } from '@nebular/theme';\nimport { combineLatest } from 'rxjs';\nimport { takeWhile } from 'rxjs/operators';\n\n\n@Component({\n  selector: 'ngx-country-orders-map',\n  styleUrls: ['./country-orders-map.component.scss'],\n  template: `\n    <div leaflet [leafletOptions]=\"options\" [leafletLayers]=\"layers\" (leafletMapReady)=\"mapReady($event)\"></div>\n  `,\n})\nexport class CountryOrdersMapComponent implements OnDestroy {\n\n  @Input() countryId: string;\n\n  @Output() select: EventEmitter<any> = new EventEmitter();\n\n  layers = [];\n  currentTheme: any;\n  alive = true;\n  selectedCountry;\n\n  options = {\n    zoom: 2,\n    minZoom: 2,\n    maxZoom: 6,\n    zoomControl: false,\n    center: L.latLng({lat: 38.991709, lng: -76.886109}),\n    maxBounds: new L.LatLngBounds(\n      new L.LatLng(-89.98155760646617, -180),\n      new L.LatLng(89.99346179538875, 180),\n    ),\n    maxBoundsViscosity: 1.0,\n  };\n\n  constructor(private ecMapService: CountryOrdersMapService,\n              private theme: NbThemeService) {\n\n    combineLatest([\n      this.ecMapService.getCords(),\n      this.theme.getJsTheme(),\n    ])\n      .pipe(takeWhile(() => this.alive))\n      .subscribe(([cords, config]: [any, any]) => {\n        this.currentTheme = config.variables.countryOrders;\n        this.layers = [this.createGeoJsonLayer(cords)];\n        this.selectFeature(this.findFeatureLayerByCountryId(this.countryId));\n      });\n  }\n\n  mapReady(map: L.Map) {\n    map.addControl(L.control.zoom({position: 'bottomright'}));\n\n    // fix the map fully displaying, existing leaflet bag\n    setTimeout(() => {\n      map.invalidateSize();\n    }, 0);\n  }\n\n  private createGeoJsonLayer(cords) {\n    return L.geoJSON(\n      cords as any,\n      {\n        style: () => ({\n          weight: this.currentTheme.countryBorderWidth,\n          fillColor: this.currentTheme.countryFillColor,\n          fillOpacity: 1,\n          color: this.currentTheme.countryBorderColor,\n          opacity: 1,\n        }),\n        onEachFeature: (f, l) => {\n          this.onEachFeature(f, l);\n        },\n      });\n  }\n\n  private onEachFeature(feature, layer) {\n    layer.on({\n      mouseover: (e) => this.highlightFeature(e.target),\n      mouseout: (e) => this.moveout(e.target),\n      click: (e) => this.selectFeature(e.target),\n    });\n  }\n\n  private highlightFeature(featureLayer) {\n    if (featureLayer) {\n      featureLayer.setStyle({\n        weight: this.currentTheme.hoveredCountryBorderWidth,\n        fillColor: this.currentTheme.hoveredCountryFillColor,\n        color: this.currentTheme.hoveredCountryBorderColor,\n      });\n\n      if (!L.Browser.ie && !L.Browser.opera12 && !L.Browser.edge) {\n        featureLayer.bringToFront();\n      }\n    }\n  }\n\n  private moveout(featureLayer) {\n    if (featureLayer !== this.selectedCountry) {\n      this.resetHighlight(featureLayer);\n\n      // When countries have common border we should highlight selected country once again\n      this.highlightFeature(this.selectedCountry);\n    }\n  }\n\n  private resetHighlight(featureLayer) {\n    if (featureLayer) {\n      const geoJsonLayer = this.layers[0];\n\n      geoJsonLayer.resetStyle(featureLayer);\n    }\n  }\n\n  private selectFeature(featureLayer) {\n    if (featureLayer !== this.selectedCountry) {\n      this.resetHighlight(this.selectedCountry);\n      this.highlightFeature(featureLayer);\n      this.selectedCountry = featureLayer;\n      this.select.emit(featureLayer.feature.properties.name);\n    }\n  }\n\n  private findFeatureLayerByCountryId(id) {\n    const layers = this.layers[0].getLayers();\n    const featureLayer = layers.find(item => {\n      return item.feature.id === id;\n    });\n\n    return featureLayer ? featureLayer : null;\n  }\n\n  ngOnDestroy(): void {\n    this.alive = false;\n  }\n\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\n\n\n@Injectable()\nexport class CountryOrdersMapService {\n\n  constructor(private http: HttpClient) {}\n\n  getCords(): Observable<any> {\n    return this.http.get('assets/leaflet-countries/countries.geo.json');\n  }\n\n}\n","import { delay, takeWhile } from 'rxjs/operators';\nimport { AfterViewInit, Component, Input, OnDestroy } from '@angular/core';\nimport { NbThemeService } from '@nebular/theme';\nimport { LayoutService } from '../../../../@core/utils';\n\n@Component({\n  selector: 'ngx-stats-ares-chart',\n  styleUrls: ['test-stats-card-back.component.scss'],\n  template: `\n    <div echarts [options]=\"option\"\n         class=\"echart\"\n         (chartInit)=\"onChartInit($event)\">\n    </div>\n  `,\n})\nexport class TestStatsAreaChartComponent implements AfterViewInit, OnDestroy {\n\n  private alive = true;\n\n  @Input() points: number[];\n\n  echartsIntance: any;\n  option: any = {};\n\n  constructor(private theme: NbThemeService,\n              private layoutService: LayoutService) {\n    this.layoutService.onSafeChangeLayoutSize()\n      .pipe(\n        takeWhile(() => this.alive),\n      )\n      .subscribe(() => this.resizeChart());\n  }\n\n  ngAfterViewInit() {\n    this.theme.getJsTheme()\n      .pipe(\n        delay(1),\n        takeWhile(() => this.alive),\n      )\n      .subscribe(config => {\n        const trafficTheme: any = config.variables.traffic;\n\n        this.option = Object.assign({}, {\n          grid: {\n            left: 0,\n            top: 0,\n            right: 0,\n            bottom: 0,\n          },\n          xAxis: {\n            type: 'category',\n            boundaryGap: false,\n            data: this.points,\n          },\n          yAxis: {\n            boundaryGap: [0, '5%'],\n            axisLine: {\n              show: false,\n            },\n            axisLabel: {\n              show: false,\n            },\n            axisTick: {\n              show: false,\n            },\n            splitLine: {\n              show: true,\n              lineStyle: {\n                color: trafficTheme.yAxisSplitLine,\n                width: '1',\n              },\n            },\n          },\n          tooltip: {\n            axisPointer: {\n              type: 'shadow',\n            },\n            textStyle: {\n              color: trafficTheme.tooltipTextColor,\n              fontWeight: trafficTheme.tooltipFontWeight,\n              fontSize: 16,\n            },\n            position: 'top',\n            backgroundColor: trafficTheme.tooltipBg,\n            borderColor: trafficTheme.tooltipBorderColor,\n            borderWidth: 1,\n            formatter: '{c0}',\n            extraCssText: trafficTheme.tooltipExtraCss,\n          },\n          series: [\n            {\n              type: 'line',\n              symbol: 'circle',\n              symbolSize: 8,\n              sampling: 'average',\n              silent: true,\n              itemStyle: {\n                normal: {\n                  color: trafficTheme.shadowLineDarkBg,\n                },\n                emphasis: {\n                  color: 'rgba(0,0,0,0)',\n                  borderColor: 'rgba(0,0,0,0)',\n                  borderWidth: 0,\n                },\n              },\n              lineStyle: {\n                normal: {\n                  width: 2,\n                  color: trafficTheme.shadowLineDarkBg,\n                },\n              },\n              data: this.points.map(p => p - 15),\n            },\n            {\n              type: 'line',\n              symbol: 'circle',\n              symbolSize: 6,\n              sampling: 'average',\n              itemStyle: {\n                normal: {\n                  color: trafficTheme.itemColor,\n                  borderColor: trafficTheme.itemBorderColor,\n                  borderWidth: 2,\n                },\n                emphasis: {\n                  color: 'white',\n                  borderColor: trafficTheme.itemEmphasisBorderColor,\n                  borderWidth: 2,\n                },\n              },\n              lineStyle: {\n                normal: {\n                  width: 2,\n                  color: trafficTheme.lineBg,\n                  shadowColor: trafficTheme.lineBg,\n                  shadowBlur: trafficTheme.lineShadowBlur,\n                },\n              },\n              areaStyle: {\n                normal: {\n                  color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{\n                    offset: 0,\n                    color: trafficTheme.gradFrom,\n                  }, {\n                    offset: 1,\n                    color: trafficTheme.gradTo,\n                  }]),\n                  opacity: 1,\n                },\n              },\n              data: this.points,\n            },\n          ],\n        });\n    });\n  }\n\n  onChartInit(echarts) {\n    this.echartsIntance = echarts;\n  }\n\n  resizeChart() {\n    if (this.echartsIntance) {\n      this.echartsIntance.resize();\n    }\n  }\n\n  ngOnDestroy() {\n    this.alive = false;\n  }\n}\n","import { Component, OnDestroy, Input } from '@angular/core';\nimport { StatsBarData } from '../../../../@core/data/stats-bar';\nimport { takeWhile } from 'rxjs/operators';\n\n@Component({\n  selector: 'ngx-stats-card-back',\n  styleUrls: ['./test-stats-card-back.component.scss'],\n  templateUrl: './test-stats-card-back.component.html',\n})\nexport class TestStatsCardBackComponent implements OnDestroy {\n\n  private alive = true;\n  @Input() testName: string;\n  chartData: number[];\n\n  constructor(private statsBarData: StatsBarData) {\n    this.statsBarData.getStatsBarData()\n      .pipe(takeWhile(() => this.alive))\n      .subscribe((data) => {\n        this.chartData = data;\n      });\n  }\n\n  ngOnDestroy() {\n    this.alive = false;\n  }\n}\n","<nb-card-header>\n  <span class=\"title\">{{ testName }} Positives</span>\n</nb-card-header>\n<nb-card-body>\n  <div class=\"info\">\n    <div class=\"period\">\n      <div class=\"caption\">Jun 1 - Jun 30</div>\n      <div class=\"label\">\n        300\n      </div>\n    </div>\n    <div class=\"period latest\">\n      <div class=\"caption\">Jul 1 - Jul 31</div>\n      <div class=\"label\">\n        860\n      </div>\n    </div>\n  </div>\n  <ngx-stats-ares-chart [points]=\"chartData\"></ngx-stats-ares-chart>\n</nb-card-body>\n","import { AfterViewInit, Component, Input, OnDestroy } from '@angular/core';\nimport { NbThemeService } from '@nebular/theme';\nimport { takeWhile } from 'rxjs/operators';\nimport { LayoutService } from '../../../../@core/utils/layout.service';\n\n@Component({\n  selector: 'ngx-stats-bar-animation-chart',\n  template: `\n    <div echarts\n         [options]=\"options\"\n         class=\"echart\"\n         (chartInit)=\"onChartInit($event)\">\n    </div>\n  `,\n})\nexport class PcrStatsBarAnimationChartComponent implements AfterViewInit, OnDestroy {\n\n  private alive = true;\n\n  @Input() linesData: { firstLine: number[]; secondLine: number[] } = {\n    firstLine: [],\n    secondLine: [],\n  };\n\n  echartsIntance: any;\n  options: any = {};\n\n  constructor(private theme: NbThemeService,\n              private layoutService: LayoutService) {\n    this.layoutService.onSafeChangeLayoutSize()\n      .pipe(\n        takeWhile(() => this.alive),\n      )\n      .subscribe(() => this.resizeChart());\n  }\n\n  ngAfterViewInit() {\n    this.theme.getJsTheme()\n      .pipe(takeWhile(() => this.alive))\n      .subscribe(config => {\n        const profitBarAnimationEchart: any = config.variables.profitBarAnimationEchart;\n\n        this.setChartOption(profitBarAnimationEchart);\n    });\n  }\n\n  setChartOption(chartVariables) {\n    this.options = {\n      color: [\n        chartVariables.firstAnimationBarColor,\n        chartVariables.secondAnimationBarColor,\n      ],\n      grid: {\n        left: 0,\n        top: 0,\n        right: 0,\n        bottom: 0,\n      },\n      legend: {\n        data: ['Positive', 'Negative'],\n        borderWidth: 0,\n        borderRadius: 0,\n        itemWidth: 15,\n        itemHeight: 15,\n        textStyle: {\n          color: chartVariables.textColor,\n        },\n      },\n      tooltip: {\n        axisPointer: {\n          type: 'shadow',\n        },\n        textStyle: {\n          color: chartVariables.tooltipTextColor,\n          fontWeight: chartVariables.tooltipFontWeight,\n          fontSize: chartVariables.tooltipFontSize,\n        },\n        position: 'top',\n        backgroundColor: chartVariables.tooltipBg,\n        borderColor: chartVariables.tooltipBorderColor,\n        borderWidth: chartVariables.tooltipBorderWidth,\n        formatter: params => `${Math.round(parseInt(params.value, 10))}`,\n        extraCssText: chartVariables.tooltipExtraCss,\n      },\n      xAxis: [\n        {\n          data: this.linesData.firstLine.map((_, index) => index),\n          silent: false,\n          axisLine: {\n            show: false,\n          },\n          axisLabel: {\n            show: false,\n          },\n          axisTick: {\n            show: false,\n          },\n        },\n      ],\n      yAxis: [\n        {\n          axisLine: {\n            show: false,\n          },\n          axisLabel: {\n            show: false,\n          },\n          axisTick: {\n            show: false,\n          },\n          splitLine: {\n            show: true,\n            lineStyle: {\n              color: chartVariables.splitLineStyleColor,\n              opacity: chartVariables.splitLineStyleOpacity,\n              width: chartVariables.splitLineStyleWidth,\n            },\n          },\n        },\n      ],\n      series: [\n        {\n          name: 'transactions',\n          type: 'bar',\n          data: this.linesData.firstLine,\n          animationDelay: idx => idx * 10,\n        },\n        {\n          name: 'orders',\n          type: 'bar',\n          data: this.linesData.secondLine,\n          animationDelay: idx => idx * 10 + 100,\n        },\n      ],\n      animationEasing: 'elasticOut',\n      animationDelayUpdate: idx => idx * 5,\n    };\n  }\n\n  onChartInit(echarts) {\n    this.echartsIntance = echarts;\n  }\n\n  resizeChart() {\n    if (this.echartsIntance) {\n      this.echartsIntance.resize();\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.alive = false;\n  }\n}\n","import { Component, Input } from '@angular/core';\nimport { ProfitBarAnimationChartData } from '../../../../@core/data/profit-bar-animation-chart';\nimport { takeWhile } from 'rxjs/operators';\n\n@Component({\n  selector: 'ngx-stats-card-front',\n  styleUrls: ['./test-stats-card-front.component.scss'],\n  templateUrl: './test-stats-card-front.component.html',\n})\nexport class TestStatsCardFrontComponent {\n\n  private alive = true;\n  @Input() testName: string;\n\n  linesData: { firstLine: number[]; secondLine: number[] };\n\n  constructor(private profitBarAnimationChartService: ProfitBarAnimationChartData) {\n    this.profitBarAnimationChartService.getChartData()\n      .pipe(takeWhile(() => this.alive))\n      .subscribe((linesData) => {\n        this.linesData = linesData;\n      });\n  }\n}\n","<nb-card-header>\n  <!-- <i class=\"ion-social-usd\"></i> -->\n  <span class=\"title\">\n    Total {{ testName }} Tests\n  </span>\n</nb-card-header>\n<nb-card-body>\n  <ngx-stats-bar-animation-chart [linesData]=\"linesData\"></ngx-stats-bar-animation-chart>\n</nb-card-body>\n","import { Component, Input } from '@angular/core';\n\n@Component({\n  selector: 'ngx-test-card',\n  styleUrls: ['./test-card.component.scss'],\n  templateUrl: './test-card.component.html',\n})\nexport class TestCardComponent {\n\n  @Input() testName: string;\n\n  flipped = false;\n\n  toggleView() {\n    this.flipped = !this.flipped;\n  }\n}\n","<nb-flip-card [showToggleButton]=\"false\" [flipped]=\"!flipped\">\n  <nb-card-front>\n    <nb-card size=\"tiny\">\n      <ngx-stats-card-front [testName]=\"testName\"></ngx-stats-card-front>\n      <nb-icon icon=\"chevron-right-outline\" pack=\"eva\" class=\"flip-icon\" (click)=\"toggleView()\"></nb-icon>\n    </nb-card>\n  </nb-card-front>\n  <nb-card-back>\n    <nb-card size=\"tiny\">\n      <ngx-stats-card-back [testName]=\"testName\"></ngx-stats-card-back>\n      <nb-icon icon=\"chevron-right-outline\" pack=\"eva\" class=\"flip-icon\" (click)=\"toggleView()\"></nb-icon>\n    </nb-card>\n  </nb-card-back>\n</nb-flip-card>\n","import { Component } from '@angular/core';\n\n@Component({\n  selector: 'ngx-ecommerce',\n  templateUrl: './e-commerce.component.html',\n})\nexport class ECommerceComponent {\n}\n","<div class=\"row\">\n  <div class=\"col-xxl-7\">\n    <ngx-ecommerce-charts></ngx-ecommerce-charts>\n  </div>\n\n  <div class=\"col-xxl-5\">\n    <ngx-traffic-reveal-card></ngx-traffic-reveal-card>\n    <div class=\"row\">\n      <div class=\"col-md-6\">\n        <ngx-test-card testName=\"RDT\"></ngx-test-card>\n      </div>\n      <div class=\"col-md-6\">\n        <ngx-test-card testName=\"PCR\"></ngx-test-card>\n      </div>\n    </div>\n  </div>\n\n</div>\n\n\n\n<div class=\"row\">\n  <div class=\"col-xxl-9\">\n    <ngx-ecommerce-visitors-analytics></ngx-ecommerce-visitors-analytics>\n  </div>\n\n  <div class=\"col-xxl-3\">\n    <ngx-user-activity></ngx-user-activity>\n  </div>\n</div>\n\n<!-- <div class=\"row\">\n  <div class=\"col-xxl-9\">\n    <ngx-country-orders></ngx-country-orders>\n  </div>\n\n  <div class=\"col-xxl-3\">\n    <ngx-progress-section></ngx-progress-section>\n  </div>\n</div> -->\n\n","import { NgModule } from '@angular/core';\nimport { LeafletModule } from '@asymmetrik/ngx-leaflet';\nimport {\n  NbButtonModule,\n  NbCardModule,\n  NbIconModule,\n  NbListModule,\n  NbProgressBarModule,\n  NbSelectModule,\n  NbTabsetModule,\n  NbUserModule } from '@nebular/theme';\nimport { NgxChartsModule } from '@swimlane/ngx-charts';\nimport { ChartModule } from 'angular2-chartjs';\nimport { NgxEchartsModule } from 'ngx-echarts';\nimport { ThemeModule } from '../../@theme/theme.module';\nimport { ChartPanelHeaderComponent } from './charts-panel/chart-panel-header/chart-panel-header.component';\nimport { ChartPanelSummaryComponent } from './charts-panel/chart-panel-summary/chart-panel-summary.component';\nimport { ECommerceChartsPanelComponent } from './charts-panel/charts-panel.component';\nimport { OrdersChartComponent } from './charts-panel/charts/orders-chart.component';\nimport { ProfitChartComponent } from './charts-panel/charts/profit-chart.component';\nimport { CountryOrdersChartComponent } from './country-orders/chart/country-orders-chart.component';\nimport { CountryOrdersComponent } from './country-orders/country-orders.component';\nimport { CountryOrdersMapComponent } from './country-orders/map/country-orders-map.component';\nimport { CountryOrdersMapService } from './country-orders/map/country-orders-map.service';\nimport { ECommerceComponent } from './e-commerce.component';\nimport { EarningCardBackComponent } from './earning-card/back-side/earning-card-back.component';\nimport { EarningPieChartComponent } from './earning-card/back-side/earning-pie-chart.component';\nimport { EarningCardComponent } from './earning-card/earning-card.component';\nimport { EarningCardFrontComponent } from './earning-card/front-side/earning-card-front.component';\nimport { EarningLiveUpdateChartComponent } from './earning-card/front-side/earning-live-update-chart.component';\nimport { ECommerceLegendChartComponent } from './legend-chart/legend-chart.component';\nimport { TestStatsAreaChartComponent } from './covid-test-card/back-side/test-stats-area-chart.component';\nimport { TestStatsCardBackComponent } from './covid-test-card/back-side/test-stats-card-back.component';\nimport {\n  PcrStatsBarAnimationChartComponent,\n} from './covid-test-card/front-side/test-stats-bar-animation-chart.component';\nimport { TestStatsCardFrontComponent } from './covid-test-card/front-side/test-stats-card-front.component';\nimport { TestCardComponent } from './covid-test-card/test-card.component';\nimport { ECommerceProgressSectionComponent } from './progress-section/progress-section.component';\nimport { SlideOutComponent } from './slide-out/slide-out.component';\nimport { TrafficBackCardComponent } from './traffic-reveal-card/back-side/traffic-back-card.component';\nimport { TrafficBarChartComponent } from './traffic-reveal-card/back-side/traffic-bar-chart.component';\nimport { TrafficBarComponent } from './traffic-reveal-card/front-side/traffic-bar/traffic-bar.component';\nimport { TrafficFrontCardComponent } from './traffic-reveal-card/front-side/traffic-front-card.component';\nimport { TrafficCardsHeaderComponent } from './traffic-reveal-card/traffic-cards-header/traffic-cards-header.component';\nimport { TrafficRevealCardComponent } from './traffic-reveal-card/traffic-reveal-card.component';\nimport { ECommerceUserActivityComponent } from './user-activity/user-activity.component';\nimport {\n  ECommerceVisitorsAnalyticsChartComponent,\n} from './visitors-analytics/visitors-analytics-chart/visitors-analytics-chart.component';\nimport { ECommerceVisitorsAnalyticsComponent } from './visitors-analytics/visitors-analytics.component';\nimport {\n  ECommerceVisitorsStatisticsComponent,\n } from './visitors-analytics/visitors-statistics/visitors-statistics.component';\n\n\n\n\n\n\n\n@NgModule({\n  imports: [\n    ThemeModule,\n    NbCardModule,\n    NbUserModule,\n    NbButtonModule,\n    NbIconModule,\n    NbTabsetModule,\n    NbSelectModule,\n    NbListModule,\n    ChartModule,\n    NbProgressBarModule,\n    NgxEchartsModule,\n    NgxChartsModule,\n    LeafletModule,\n  ],\n  declarations: [\n    ECommerceComponent,\n    ECommerceChartsPanelComponent,\n    ChartPanelHeaderComponent,\n    ChartPanelSummaryComponent,\n    OrdersChartComponent,\n    ProfitChartComponent,\n    TestStatsCardBackComponent,\n    TrafficRevealCardComponent,\n    TrafficBarChartComponent,\n    TrafficFrontCardComponent,\n    TrafficBackCardComponent,\n    TrafficBarComponent,\n    TrafficCardsHeaderComponent,\n    CountryOrdersComponent,\n    CountryOrdersMapComponent,\n    CountryOrdersChartComponent,\n    ECommerceVisitorsAnalyticsComponent,\n    ECommerceVisitorsAnalyticsChartComponent,\n    ECommerceVisitorsStatisticsComponent,\n    ECommerceLegendChartComponent,\n    ECommerceUserActivityComponent,\n    ECommerceProgressSectionComponent,\n    SlideOutComponent,\n    EarningCardComponent,\n    EarningCardFrontComponent,\n    EarningCardBackComponent,\n    EarningPieChartComponent,\n    EarningLiveUpdateChartComponent,\n\n    TestCardComponent,\n    TestStatsCardFrontComponent,\n    TestStatsAreaChartComponent,\n    PcrStatsBarAnimationChartComponent,\n  ],\n  providers: [\n    CountryOrdersMapService,\n  ],\n})\nexport class ECommerceModule { }\n","import { Component, OnDestroy } from '@angular/core';\nimport { PieChart, EarningData } from '../../../../@core/data/earning';\nimport { takeWhile } from 'rxjs/operators';\n\n@Component({\n  selector: 'ngx-earning-card-back',\n  styleUrls: ['./earning-card-back.component.scss'],\n  templateUrl: './earning-card-back.component.html',\n})\nexport class EarningCardBackComponent implements OnDestroy {\n  private alive = true;\n\n  earningPieChartData: PieChart[];\n  name: string;\n  color: string;\n  value: number;\n  defaultSelectedCurrency: string = 'Bitcoin';\n\n  constructor(private earningService: EarningData ) {\n    this.earningService.getEarningPieChartData()\n      .pipe(takeWhile(() => this.alive))\n      .subscribe((earningPieChartData) => {\n        this.earningPieChartData = earningPieChartData;\n      });\n  }\n\n  changeChartInfo(pieData: {value: number; name: string; color: any}) {\n    this.value = pieData.value;\n    this.name = pieData.name;\n    this.color = pieData.color;\n  }\n\n  ngOnDestroy() {\n    this.alive = false;\n  }\n}\n","<nb-card-header>\n  Earnings\n</nb-card-header>\n<nb-card-body>\n  <div class=\"chart-info\">\n    <div [style.color]=\"color\">{{ name }}</div>\n    <div class=\"time-period caption\">Last week:</div>\n    <div class=\"h6\">{{ value }}%</div>\n  </div>\n  <ngx-earning-pie-chart [values]=\"earningPieChartData\"\n                         (selectPie)=\"changeChartInfo($event)\"\n                         [defaultSelectedCurrency]=\"defaultSelectedCurrency\">\n  </ngx-earning-pie-chart>\n</nb-card-body>\n","import { AfterViewInit, Component, EventEmitter, Input, OnDestroy, Output } from '@angular/core';\nimport { NbThemeService } from '@nebular/theme';\nimport { delay, takeWhile } from 'rxjs/operators';\n\n@Component({\n  selector: 'ngx-earning-pie-chart',\n  styleUrls: ['./earning-card-back.component.scss'],\n  template: `\n    <div echarts\n         class=\"echart\"\n         [options]=\"options\"\n         (chartInit)=\"onChartInit($event)\"\n         (chartClick)=\"onChartClick($event)\">\n    </div>\n  `,\n})\nexport class EarningPieChartComponent implements AfterViewInit, OnDestroy {\n\n  @Output() selectPie = new EventEmitter<{value: number; name: string; color: string}>();\n  @Input() values: {value: number; name: string; }[];\n  @Input() defaultSelectedCurrency: string;\n\n  private alive = true;\n\n  options: any = {};\n  echartsInstance;\n\n  constructor(private theme: NbThemeService) {\n  }\n\n  onChartInit(ec) {\n    this.echartsInstance = ec;\n  }\n\n  onChartClick(event) {\n    const pieData = {\n      value: event.value,\n      name: event.name,\n      color: event.color.colorStops[0].color,\n    };\n\n    this.emitSelectPie(pieData);\n  }\n\n  emitSelectPie(pieData: {value: number; name: string; color: any}) {\n    this.selectPie.emit(pieData);\n  }\n\n  ngAfterViewInit() {\n    this.theme.getJsTheme()\n      .pipe(\n        takeWhile(() => this.alive),\n        delay(1),\n      )\n      .subscribe(config => {\n        const variables = config.variables;\n\n        this.options = this.getOptions(variables);\n        const defaultSelectedData =\n          this.options.series[0].data.find((item) => item.name === this.defaultSelectedCurrency);\n        const color = defaultSelectedData.itemStyle.normal.color.colorStops[0].color;\n        const pieData = {\n          value: defaultSelectedData.value,\n          name: defaultSelectedData.name,\n          color,\n        };\n\n        this.emitSelectPie(pieData);\n      });\n  }\n\n  getOptions(variables) {\n    const earningPie: any = variables.earningPie;\n\n    return {\n      tooltip: {\n        trigger: 'item',\n        formatter: '',\n      },\n      series: [\n        {\n          name: ' ',\n          clockWise: true,\n          hoverAnimation: false,\n          type: 'pie',\n          center: earningPie.center,\n          radius: earningPie.radius,\n          data: [\n            {\n              value: this.values[0].value,\n              name: this.values[0].name,\n              label: {\n                normal: {\n                  position: 'center',\n                  formatter: '',\n                  textStyle: {\n                    fontSize: '22',\n                    fontFamily: variables.fontSecondary,\n                    fontWeight: '600',\n                    color: variables.fgHeading,\n                  },\n                },\n              },\n              tooltip: {\n                show: false,\n              },\n              itemStyle: {\n                normal: {\n                  color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [\n                    {\n                      offset: 0,\n                      color: earningPie.firstPieGradientLeft,\n                    },\n                    {\n                      offset: 1,\n                      color: earningPie.firstPieGradientRight,\n                    },\n                  ]),\n                  shadowColor: earningPie.firstPieShadowColor,\n                  shadowBlur: 0,\n                  shadowOffsetX: 0,\n                  shadowOffsetY: 3,\n                },\n              },\n            },\n            {\n              value: this.values[1].value,\n              name: this.values[1].name,\n              label: {\n                normal: {\n                  position: 'center',\n                  formatter: '',\n                  textStyle: {\n                    fontSize: '22',\n                    fontFamily: variables.fontSecondary,\n                    fontWeight: '600',\n                    color: variables.fgHeading,\n                  },\n                },\n              },\n              tooltip: {\n                show: false,\n              },\n              itemStyle: {\n                normal: {\n                  color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [\n                    {\n                      offset: 0,\n                      color: earningPie.secondPieGradientLeft,\n                    },\n                    {\n                      offset: 1,\n                      color: earningPie.secondPieGradientRight,\n                    },\n                  ]),\n                  shadowColor: earningPie.secondPieShadowColor,\n                  shadowBlur: 0,\n                  shadowOffsetX: 0,\n                  shadowOffsetY: 3,\n                },\n              },\n            },\n            {\n              value: this.values[2].value,\n              name: this.values[2].name,\n              label: {\n                normal: {\n                  position: 'center',\n                  formatter: '',\n                  textStyle: {\n                    fontSize: '22',\n                    fontFamily: variables.fontSecondary,\n                    fontWeight: '600',\n                    color: variables.fgHeading,\n                  },\n                },\n              },\n              tooltip: {\n                show: false,\n              },\n              itemStyle: {\n                normal: {\n                  color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [\n                    {\n                      offset: 0,\n                      color: earningPie.thirdPieGradientLeft,\n                    },\n                    {\n                      offset: 1,\n                      color: earningPie.thirdPieGradientRight,\n                    },\n                  ]),\n                  shadowColor: earningPie.thirdPieShadowColor,\n                  shadowBlur: 0,\n                  shadowOffsetX: 0,\n                  shadowOffsetY: 3,\n                },\n              },\n            },\n          ],\n        },\n      ],\n    };\n  }\n\n  ngOnDestroy() {\n    this.alive = false;\n  }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n  selector: 'ngx-earning-card',\n  styleUrls: ['./earning-card.component.scss'],\n  templateUrl: './earning-card.component.html',\n})\nexport class EarningCardComponent {\n\n  flipped = false;\n\n  toggleView() {\n    this.flipped = !this.flipped;\n  }\n}\n","<nb-flip-card [showToggleButton]=\"false\" [flipped]=\"flipped\">\n  <nb-card-front>\n    <nb-card size=\"tiny\">\n      <ngx-earning-card-front></ngx-earning-card-front>\n      <nb-icon icon=\"chevron-right-outline\" pack=\"eva\" class=\"flip-icon\" (click)=\"toggleView()\"></nb-icon>\n    </nb-card>\n  </nb-card-front>\n  <nb-card-back>\n    <nb-card size=\"tiny\">\n      <ngx-earning-card-back></ngx-earning-card-back>\n      <nb-icon icon=\"chevron-right-outline\" pack=\"eva\" class=\"flip-icon\" (click)=\"toggleView()\"></nb-icon>\n    </nb-card>\n  </nb-card-back>\n</nb-flip-card>\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { NbThemeService } from '@nebular/theme';\nimport { interval , Subscription } from 'rxjs';\nimport { switchMap, takeWhile } from 'rxjs/operators';\nimport { LiveUpdateChart, EarningData } from '../../../../@core/data/earning';\n\n@Component({\n  selector: 'ngx-earning-card-front',\n  styleUrls: ['./earning-card-front.component.scss'],\n  templateUrl: './earning-card-front.component.html',\n})\nexport class EarningCardFrontComponent implements OnDestroy, OnInit {\n  private alive = true;\n\n  @Input() selectedCurrency: string = 'Bitcoin';\n\n  intervalSubscription: Subscription;\n  currencies: string[] = ['Bitcoin', 'Tether', 'Ethereum'];\n  currentTheme: string;\n  earningLiveUpdateCardData: LiveUpdateChart;\n  liveUpdateChartData: { value: [string, number] }[];\n\n  constructor(private themeService: NbThemeService,\n              private earningService: EarningData) {\n    this.themeService.getJsTheme()\n      .pipe(takeWhile(() => this.alive))\n      .subscribe(theme => {\n        this.currentTheme = theme.name;\n      });\n  }\n\n  ngOnInit() {\n    this.getEarningCardData(this.selectedCurrency);\n  }\n\n  changeCurrency(currency) {\n    if (this.selectedCurrency !== currency) {\n      this.selectedCurrency = currency;\n\n      this.getEarningCardData(this.selectedCurrency);\n    }\n  }\n\n  private getEarningCardData(currency) {\n    this.earningService.getEarningCardData(currency)\n      .pipe(takeWhile(() => this.alive))\n      .subscribe((earningLiveUpdateCardData: LiveUpdateChart) => {\n        this.earningLiveUpdateCardData = earningLiveUpdateCardData;\n        this.liveUpdateChartData = earningLiveUpdateCardData.liveChart;\n\n        this.startReceivingLiveData(currency);\n      });\n  }\n\n  startReceivingLiveData(currency) {\n    if (this.intervalSubscription) {\n      this.intervalSubscription.unsubscribe();\n    }\n\n    this.intervalSubscription = interval(200)\n      .pipe(\n        takeWhile(() => this.alive),\n        switchMap(() => this.earningService.getEarningLiveUpdateCardData(currency)),\n      )\n      .subscribe((liveUpdateChartData: any[]) => {\n        this.liveUpdateChartData = [...liveUpdateChartData];\n      });\n  }\n\n  ngOnDestroy() {\n    this.alive = false;\n  }\n}\n","<nb-card-header>\n  <nb-select [selected]=\"selectedCurrency\" (selectedChange)=\"changeCurrency($event)\">\n    <nb-option *ngFor=\"let currency of currencies\" [value]=\"currency\">{{ currency }}</nb-option>\n  </nb-select>\n</nb-card-header>\n<nb-card-body>\n  <div class=\"chart-info\">\n    <div>Daily Income</div>\n    <div class=\"h6\">{{ earningLiveUpdateCardData.dailyIncome | ngxNumberWithCommas }}</div>\n    <div class=\"delta\"\n         [class.up]=\"earningLiveUpdateCardData.delta.up\"\n         [class.down]=\"!earningLiveUpdateCardData.delta.up\">\n      <nb-icon [icon]=\"earningLiveUpdateCardData.delta.up ? 'arrow-up' : 'arrow-down'\"\n               pack=\"eva\"\n               class=\"direction\">\n      </nb-icon>\n      {{ earningLiveUpdateCardData.delta.value }}%\n    </div>\n  </div>\n  <ngx-earning-live-update-chart\n    [liveUpdateChartData]=\"liveUpdateChartData\">\n  </ngx-earning-live-update-chart>\n</nb-card-body>\n","import { delay, takeWhile } from 'rxjs/operators';\nimport { AfterViewInit, Component, Input, OnChanges, OnDestroy } from '@angular/core';\nimport { NbThemeService } from '@nebular/theme';\nimport { LayoutService } from '../../../../@core/utils/layout.service';\n\n@Component({\n  selector: 'ngx-earning-live-update-chart',\n  styleUrls: ['earning-card-front.component.scss'],\n  template: `\n    <div echarts\n         class=\"echart\"\n         [options]=\"option\"\n         (chartInit)=\"onChartInit($event)\"></div>\n  `,\n})\nexport class EarningLiveUpdateChartComponent implements AfterViewInit, OnDestroy, OnChanges {\n  private alive = true;\n\n  @Input() liveUpdateChartData: { value: [string, number] }[];\n\n  option: any;\n  echartsInstance;\n\n  constructor(private theme: NbThemeService,\n              private layoutService: LayoutService) {\n    this.layoutService.onSafeChangeLayoutSize()\n      .pipe(\n        takeWhile(() => this.alive),\n      )\n      .subscribe(() => this.resizeChart());\n  }\n\n  ngOnChanges(): void {\n    if (this.option) {\n      this.updateChartOptions(this.liveUpdateChartData);\n    }\n  }\n\n  ngAfterViewInit() {\n    this.theme.getJsTheme()\n      .pipe(\n        delay(1),\n        takeWhile(() => this.alive),\n      )\n      .subscribe(config => {\n        const earningLineTheme: any = config.variables.earningLine;\n\n        this.setChartOption(earningLineTheme);\n      });\n  }\n\n  setChartOption(earningLineTheme) {\n    this.option = {\n      grid: {\n        left: 0,\n        top: 0,\n        right: 0,\n        bottom: 0,\n      },\n      xAxis: {\n        type: 'time',\n        axisLine: {\n          show: false,\n        },\n        axisLabel: {\n          show: false,\n        },\n        axisTick: {\n          show: false,\n        },\n        splitLine: {\n          show: false,\n        },\n      },\n      yAxis: {\n        boundaryGap: [0, '5%'],\n        axisLine: {\n          show: false,\n        },\n        axisLabel: {\n          show: false,\n        },\n        axisTick: {\n          show: false,\n        },\n        splitLine: {\n          show: false,\n        },\n      },\n      tooltip: {\n        axisPointer: {\n          type: 'shadow',\n        },\n        textStyle: {\n          color: earningLineTheme.tooltipTextColor,\n          fontWeight: earningLineTheme.tooltipFontWeight,\n          fontSize: earningLineTheme.tooltipFontSize,\n        },\n        position: 'top',\n        backgroundColor: earningLineTheme.tooltipBg,\n        borderColor: earningLineTheme.tooltipBorderColor,\n        borderWidth: earningLineTheme.tooltipBorderWidth,\n        formatter: params => `$ ${Math.round(parseInt(params.value[1], 10))}`,\n        extraCssText: earningLineTheme.tooltipExtraCss,\n      },\n      series: [\n        {\n          type: 'line',\n          symbol: 'circle',\n          sampling: 'average',\n          itemStyle: {\n            normal: {\n              opacity: 0,\n            },\n            emphasis: {\n              opacity: 0,\n            },\n          },\n          lineStyle: {\n            normal: {\n              width: 0,\n            },\n          },\n          areaStyle: {\n            normal: {\n              color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{\n                offset: 0,\n                color: earningLineTheme.gradFrom,\n              }, {\n                offset: 1,\n                color: earningLineTheme.gradTo,\n              }]),\n              opacity: 1,\n            },\n          },\n          data: this.liveUpdateChartData,\n        },\n      ],\n      animation: true,\n    };\n  }\n\n  updateChartOptions(chartData: { value: [string, number] }[]) {\n    this.echartsInstance.setOption({\n      series: [{\n        data: chartData,\n      }],\n    });\n  }\n\n  onChartInit(ec) {\n    this.echartsInstance = ec;\n  }\n\n  resizeChart() {\n    if (this.echartsInstance) {\n      this.echartsInstance.resize();\n    }\n  }\n\n  ngOnDestroy() {\n    this.alive = false;\n  }\n}\n","import { Component, Input } from '@angular/core';\n\nimport { NgxLegendItemColor } from './enum.legend-item-color';\n\n@Component({\n  selector: 'ngx-legend-chart',\n  styleUrls: ['./legend-chart.component.scss'],\n  templateUrl: './legend-chart.component.html',\n})\nexport class ECommerceLegendChartComponent {\n\n  /**\n   * Take an array of legend items\n   * Available iconColor: 'green', 'purple', 'light-purple', 'blue', 'yellow'\n   * @type {{iconColor: string; title: string}[]}\n   */\n  @Input()\n  legendItems: { iconColor: NgxLegendItemColor; title: string }[] = [];\n}\n","<div *ngFor=\"let legend of legendItems\" class=\"legend\">\n  <div class=\"legend-item-color\"\n       [style.background]=\"legend.iconColor\"></div>\n  <div class=\"legend-title\">{{ legend.title }}</div>\n</div>\n","import { Component, OnDestroy } from '@angular/core';\nimport { ProgressInfo, StatsProgressBarData } from '../../../@core/data/stats-progress-bar';\nimport { takeWhile } from 'rxjs/operators';\n\n@Component({\n  selector: 'ngx-progress-section',\n  styleUrls: ['./progress-section.component.scss'],\n  templateUrl: './progress-section.component.html',\n})\nexport class ECommerceProgressSectionComponent implements OnDestroy {\n\n  private alive = true;\n\n  progressInfoData: ProgressInfo[];\n\n  constructor(private statsProgressBarService: StatsProgressBarData) {\n    this.statsProgressBarService.getProgressInfoData()\n      .pipe(takeWhile(() => this.alive))\n      .subscribe((data) => {\n        this.progressInfoData = data;\n      });\n  }\n\n  ngOnDestroy() {\n    this.alive = true;\n  }\n}\n","<nb-card size=\"medium\">\n  <nb-card-body>\n    <div class=\"progress-info\" *ngFor=\"let item of progressInfoData\">\n      <div class=\"subtitle\">{{ item.title }}</div>\n      <div class=\"h3\">{{ item.value | ngxNumberWithCommas }}</div>\n      <nb-progress-bar [value]=\"item.activeProgress\"></nb-progress-bar>\n      <div class=\"caption description\">\n        <bdi>{{ item.description }}</bdi>\n      </div>\n    </div>\n  </nb-card-body>\n</nb-card>\n","import { Component, Input } from '@angular/core';\n\n@Component({\n  selector: 'ngx-slide-out',\n  styleUrls: ['./slide-out.component.scss'],\n  templateUrl: './slide-out.component.html',\n})\nexport class SlideOutComponent {\n\n  @Input() showVisitorsStatistics: boolean = false;\n\n  toggleStatistics() {\n    this.showVisitorsStatistics = !this.showVisitorsStatistics;\n  }\n}\n","<nb-icon [icon]=\"showVisitorsStatistics ? 'arrow-forward-outline' : 'arrow-back-outline'\"\n         pack=\"eva\"\n         class=\"show-hide-toggle\"\n         (click)=\"toggleStatistics()\">\n</nb-icon>\n<div class=\"slide-out-container\"\n     [class.expanded]=\"showVisitorsStatistics\"\n     [class.collapsed]=\"!showVisitorsStatistics\">\n  <div class=\"content-wrapper\">\n    <ng-content></ng-content>\n  </div>\n</div>\n","import { Component, Input, OnDestroy } from '@angular/core';\nimport { NbThemeService } from '@nebular/theme';\nimport { takeWhile } from 'rxjs/operators';\n\n@Component({\n  selector: 'ngx-traffic-back-card',\n  styleUrls: ['./traffic-back-card.component.scss'],\n  templateUrl: './traffic-back-card.component.html',\n})\nexport class TrafficBackCardComponent implements OnDestroy {\n\n  private alive = true;\n\n  @Input() trafficBarData: any;\n\n  currentTheme: string;\n\n  constructor(private themeService: NbThemeService) {\n    this.themeService.getJsTheme()\n      .pipe(takeWhile(() => this.alive))\n      .subscribe(theme => {\n        this.currentTheme = theme.name;\n    });\n  }\n\n  ngOnDestroy() {\n    this.alive = false;\n  }\n}\n","<nb-card-body>\n  <ngx-traffic-bar-chart [data]=\"trafficBarData.data\"\n                         [labels]=\"trafficBarData.labels\"\n                         [formatter]=\"trafficBarData.formatter\">\n  </ngx-traffic-bar-chart>\n</nb-card-body>\n","import { AfterViewInit, Component, Input, OnChanges, OnDestroy, SimpleChanges } from '@angular/core';\nimport { NbThemeService } from '@nebular/theme';\nimport { takeWhile } from 'rxjs/operators';\nimport { LayoutService } from '../../../../@core/utils/layout.service';\n\ndeclare const echarts: any;\n\n@Component({\n  selector: 'ngx-traffic-bar-chart',\n  template: `\n    <div echarts\n         [options]=\"option\"\n         class=\"echart\"\n         (chartInit)=\"onChartInit($event)\">\n    </div>\n  `,\n})\nexport class TrafficBarChartComponent implements AfterViewInit, OnDestroy, OnChanges {\n\n  @Input() data: number[];\n  @Input() labels: string[];\n  @Input() formatter: string;\n\n  private alive = true;\n\n  option: any = {};\n  echartsInstance: any;\n\n  constructor(private theme: NbThemeService,\n              private layoutService: LayoutService) {\n    this.layoutService.onSafeChangeLayoutSize()\n      .pipe(\n        takeWhile(() => this.alive),\n      )\n      .subscribe(() => this.resizeChart());\n  }\n\n  onChartInit(ec) {\n    this.echartsInstance = ec;\n  }\n\n  resizeChart() {\n    if (this.echartsInstance) {\n      this.echartsInstance.resize();\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (!changes.data.isFirstChange() && !changes.labels.isFirstChange()) {\n      this.echartsInstance.setOption({\n        series: [{\n          data: this.data,\n        }],\n        xAxis: {\n          data: this.labels,\n        },\n        tooltip: {\n          formatter: this.formatter,\n        },\n      });\n    }\n  }\n\n  ngAfterViewInit() {\n    this.theme.getJsTheme()\n      .pipe(takeWhile(() => this.alive))\n      .subscribe(config => {\n        const trafficTheme: any = config.variables.trafficBarEchart;\n\n        this.option = Object.assign({}, {\n          grid: {\n            left: 0,\n            top: 0,\n            right: 0,\n            bottom: 0,\n            containLabel: true,\n          },\n          xAxis: {\n            type : 'category',\n            data : this.labels,\n            axisLabel: {\n              color: trafficTheme.axisTextColor,\n              fontSize: trafficTheme.axisFontSize,\n            },\n            axisLine: {\n              show: false,\n            },\n            axisTick: {\n              show: false,\n            },\n          },\n          yAxis: {\n            show: false,\n            axisLine: {\n              show: false,\n            },\n            axisLabel: {\n              show: false,\n            },\n            axisTick: {\n              show: false,\n            },\n            boundaryGap: [0, '5%'],\n          },\n          tooltip: {\n            axisPointer: {\n              type: 'shadow',\n            },\n            textStyle: {\n              color: trafficTheme.tooltipTextColor,\n              fontWeight: trafficTheme.tooltipFontWeight,\n              fontSize: 16,\n            },\n            position: 'top',\n            backgroundColor: trafficTheme.tooltipBg,\n            borderColor: trafficTheme.tooltipBorderColor,\n            borderWidth: 1,\n            formatter: this.formatter,\n            extraCssText: trafficTheme.tooltipExtraCss,\n          },\n          series: [\n            {\n              type: 'bar',\n              barWidth: '40%',\n              data: this.data,\n              itemStyle: {\n                normal: {\n                  color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{\n                    offset: 0,\n                    color: trafficTheme.gradientFrom,\n                  }, {\n                    offset: 1,\n                    color: trafficTheme.gradientTo,\n                  }]),\n                  opacity: 1,\n                  shadowColor: trafficTheme.gradientFrom,\n                  shadowBlur: trafficTheme.shadowBlur,\n                },\n              },\n            },\n          ],\n        });\n    });\n  }\n\n  ngOnDestroy() {\n    this.alive = false;\n  }\n\n}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n  selector: 'ngx-traffic-bar',\n  styleUrls: ['./traffic-bar.component.scss'],\n  templateUrl: './traffic-bar.component.html',\n})\nexport class TrafficBarComponent {\n\n  @Input() barData: { prevDate: string; prevValue: number; nextDate: string; nextValue: number };\n  @Input() successDelta: boolean;\n}\n","<span class=\"value-prev caption\">{{ barData.prevDate }}</span>\n<div class=\"progress-line-container\" [style.height.%]=\"barData.prevValue\">\n  <div class=\"progress-line-prev\"></div>\n</div>\n<div class=\"progress-line-container\" [style.height.%]=\"barData.nextValue\">\n  <div class=\"progress-line-now\" [class.success]=\"successDelta\" [class.failure]=\"!successDelta\">\n  </div>\n</div>\n<span class=\"value-now caption\">{{ barData.nextDate }}</span>\n","import { Component, Input, OnDestroy } from '@angular/core';\nimport { NbThemeService } from '@nebular/theme';\nimport { takeWhile } from 'rxjs/operators';\n\nimport { TrafficList } from '../../../../@core/data/traffic-list';\n\n@Component({\n  selector: 'ngx-traffic-front-card',\n  styleUrls: ['./traffic-front-card.component.scss'],\n  templateUrl: './traffic-front-card.component.html',\n})\nexport class TrafficFrontCardComponent implements OnDestroy {\n\n  private alive = true;\n\n  @Input() frontCardData: TrafficList;\n\n  currentTheme: string;\n\n  constructor(private themeService: NbThemeService) {\n    this.themeService.getJsTheme()\n      .pipe(takeWhile(() => this.alive))\n      .subscribe(theme => {\n        this.currentTheme = theme.name;\n    });\n  }\n\n  trackByDate(_, item) {\n    return item.date;\n  }\n\n  ngOnDestroy() {\n    this.alive = false;\n  }\n}\n","<nb-list>\n  <nb-list-item class=\"item\" *ngFor=\"let item of frontCardData; trackBy: trackByDate\">\n    <span>{{ item.date }}</span>\n    <span>{{ item.value }}</span>\n    <span class=\"delta\" [class.up]=\"item.delta.up\" [class.down]=\"!item.delta.up\">\n      <nb-icon [icon]=\"item.delta.up ? 'arrow-up' : 'arrow-down'\" pack=\"eva\"></nb-icon>\n      {{ item.delta.value }}%\n    </span>\n    <ngx-traffic-bar [barData]=\"item.comparison\" [successDelta]=\"item.delta.up\">\n    </ngx-traffic-bar>\n  </nb-list-item>\n</nb-list>\n","import { Component, EventEmitter, Input, OnDestroy, Output } from '@angular/core';\nimport { NbThemeService } from '@nebular/theme';\nimport { takeWhile } from 'rxjs/operators';\n\n@Component({\n  selector: 'ngx-traffic-cards-header',\n  styleUrls: ['./traffic-cards-header.component.scss'],\n  templateUrl: './traffic-cards-header.component.html',\n})\nexport class TrafficCardsHeaderComponent implements OnDestroy {\n  private alive = true;\n\n  @Output() periodChange = new EventEmitter<string>();\n\n  @Input() type: string = 'week';\n\n  types: string[] = ['week', 'month', 'year'];\n  currentTheme: string;\n\n  constructor(private themeService: NbThemeService) {\n    this.themeService.getJsTheme()\n      .pipe(takeWhile(() => this.alive))\n      .subscribe(theme => {\n        this.currentTheme = theme.name;\n      });\n  }\n\n  changePeriod(period: string): void {\n    this.type = period;\n    this.periodChange.emit(period);\n  }\n\n  ngOnDestroy() {\n    this.alive = false;\n  }\n}\n","<nb-card-header>\n  <span>COVID-19 Testing</span>\n  <nb-select [selected]=\"type\" (selectedChange)=\"changePeriod($event)\">\n    <nb-option *ngFor=\"let period of types\" [value]=\"period\">{{ period }}</nb-option>\n  </nb-select>\n</nb-card-header>\n","import { Component, OnDestroy } from '@angular/core';\nimport { TrafficList, TrafficListData } from '../../../@core/data/traffic-list';\nimport { TrafficBarData, TrafficBar } from '../../../@core/data/traffic-bar';\nimport { takeWhile } from 'rxjs/operators';\n\n@Component({\n  selector: 'ngx-traffic-reveal-card',\n  styleUrls: ['./traffic-reveal-card.component.scss'],\n  templateUrl: './traffic-reveal-card.component.html',\n})\nexport class TrafficRevealCardComponent implements OnDestroy {\n\n  private alive = true;\n\n  trafficBarData: TrafficBar;\n  trafficListData: TrafficList;\n  revealed = false;\n  period: string = 'week';\n\n  constructor(private trafficListService: TrafficListData,\n              private trafficBarService: TrafficBarData) {\n    this.getTrafficFrontCardData(this.period);\n    this.getTrafficBackCardData(this.period);\n  }\n\n  toggleView() {\n    this.revealed = !this.revealed;\n  }\n\n  setPeriodAngGetData(value: string): void {\n    this.period = value;\n\n    this.getTrafficFrontCardData(value);\n    this.getTrafficBackCardData(value);\n  }\n\n  getTrafficBackCardData(period: string) {\n    this.trafficBarService.getTrafficBarData(period)\n      .pipe(takeWhile(() => this.alive ))\n      .subscribe(trafficBarData => {\n        this.trafficBarData = trafficBarData;\n      });\n  }\n\n  getTrafficFrontCardData(period: string) {\n    this.trafficListService.getTrafficListData(period)\n      .pipe(takeWhile(() => this.alive))\n      .subscribe(trafficListData => {\n        this.trafficListData = trafficListData;\n      });\n  }\n\n  ngOnDestroy() {\n    this.alive = false;\n  }\n}\n","<nb-reveal-card [showToggleButton]=\"false\" [revealed]=\"revealed\">\n  <nb-card-front>\n    <nb-card size=\"small\">\n      <ngx-traffic-cards-header [type]=\"period\" (periodChange)=\"setPeriodAngGetData($event)\"></ngx-traffic-cards-header>\n      <ngx-traffic-front-card [frontCardData]=\"trafficListData\"></ngx-traffic-front-card>\n      <nb-icon class=\"toggle-icon\" icon=\"chevron-up-outline\" pack=\"eva\" (click)=\"toggleView()\"></nb-icon>\n    </nb-card>\n  </nb-card-front>\n  <nb-card-back>\n    <nb-card size=\"small\">\n      <ngx-traffic-cards-header [type]=\"period\" (periodChange)=\"setPeriodAngGetData($event)\"></ngx-traffic-cards-header>\n      <ngx-traffic-back-card [trafficBarData]=\"trafficBarData\"></ngx-traffic-back-card>\n      <nb-icon class=\"toggle-icon\" icon=\"chevron-down-outline\" pack=\"eva\" (click)=\"toggleView()\"></nb-icon>\n    </nb-card>\n  </nb-card-back>\n</nb-reveal-card>\n","import { Component, OnDestroy } from '@angular/core';\nimport { NbThemeService } from '@nebular/theme';\nimport { takeWhile } from 'rxjs/operators';\n\nimport { UserActivityData, UserActive } from '../../../@core/data/user-activity';\n\n@Component({\n  selector: 'ngx-user-activity',\n  styleUrls: ['./user-activity.component.scss'],\n  templateUrl: './user-activity.component.html',\n})\nexport class ECommerceUserActivityComponent implements OnDestroy {\n\n  private alive = true;\n\n  userActivity: UserActive[] = [];\n  type = 'month';\n  types = ['week', 'month', 'year'];\n  currentTheme: string;\n\n  constructor(private themeService: NbThemeService,\n              private userActivityService: UserActivityData) {\n    this.themeService.getJsTheme()\n      .pipe(takeWhile(() => this.alive))\n      .subscribe(theme => {\n        this.currentTheme = theme.name;\n    });\n\n    this.getUserActivity(this.type);\n  }\n\n  getUserActivity(period: string) {\n    this.userActivityService.getUserActivityData(period)\n      .pipe(takeWhile(() => this.alive))\n      .subscribe(userActivityData => {\n        this.userActivity = userActivityData;\n      });\n  }\n\n  ngOnDestroy() {\n    this.alive = false;\n  }\n}\n","<nb-card size=\"medium\">\n\n  <nb-card-header>\n    <span>Hospital Activity</span>\n    <nb-select [selected]=\"type\" (selectedChange)=\"getUserActivity($event); type = $event\">\n      <nb-option *ngFor=\"let t of types\" [value]=\"t\">{{ t }}</nb-option>\n    </nb-select>\n  </nb-card-header>\n\n  <nb-list class=\"user-activity-list\">\n    <nb-list-item *ngFor=\"let item of userActivity\">\n\n      <div class=\"visited-date\">\n        {{ item.date }}\n      </div>\n\n      <div class=\"visited-pages-count\">\n        <div class=\"caption\">Patient Visit</div>\n        <div class=\"value\">{{ item.pagesVisitCount }}</div>\n      </div>\n\n      <div class=\"visited-percentages\">\n        <div class=\"caption\">New visits %</div>\n        <div class=\"delta value\" [class.up]=\"item.deltaUp\" [class.down]=\"!item.deltaUp\">\n          <nb-icon [icon]=\"item.deltaUp ? 'arrow-up' : 'arrow-down'\" pack=\"eva\"></nb-icon>\n          {{ item.newVisits }}%\n        </div>\n      </div>\n\n    </nb-list-item>\n  </nb-list>\n\n</nb-card>\n","import { delay, takeWhile } from 'rxjs/operators';\nimport { AfterViewInit, Component, Input, OnDestroy } from '@angular/core';\nimport { NbThemeService } from '@nebular/theme';\nimport { LayoutService } from '../../../../@core/utils';\nimport { OutlineData } from '../../../../@core/data/visitors-analytics';\n\n@Component({\n  selector: 'ngx-visitors-analytics-chart',\n  styleUrls: ['./visitors-analytics-chart.component.scss'],\n  template: `\n    <div echarts\n         [options]=\"option\"\n         [merge]=\"option\"\n         class=\"echart\"\n         (chartInit)=\"onChartInit($event)\">\n    </div>\n  `,\n})\nexport class ECommerceVisitorsAnalyticsChartComponent implements AfterViewInit, OnDestroy {\n\n  private alive = true;\n\n  @Input() chartData: {\n    innerLine: number[];\n    outerLine: OutlineData[];\n  };\n\n  option: any;\n  themeSubscription: any;\n  echartsIntance: any;\n\n  constructor(private theme: NbThemeService,\n              private layoutService: LayoutService) {\n    this.layoutService.onSafeChangeLayoutSize()\n      .pipe(\n        takeWhile(() => this.alive),\n      )\n      .subscribe(() => this.resizeChart());\n  }\n\n  ngAfterViewInit(): void {\n    this.theme.getJsTheme()\n      .pipe(\n        delay(1),\n        takeWhile(() => this.alive),\n      )\n      .subscribe(config => {\n        const eTheme: any = config.variables.visitors;\n\n        this.setOptions(eTheme);\n    });\n  }\n\n  setOptions(eTheme) {\n    this.option = {\n      grid: {\n        left: 40,\n        top: 20,\n        right: 0,\n        bottom: 60,\n      },\n      tooltip: {\n        trigger: 'axis',\n        axisPointer: {\n          type: 'line',\n          lineStyle: {\n            color: eTheme.tooltipLineColor,\n            width: eTheme.tooltipLineWidth,\n          },\n        },\n        textStyle: {\n          color: eTheme.tooltipTextColor,\n          fontSize: 20,\n          fontWeight: eTheme.tooltipFontWeight,\n        },\n        position: 'top',\n        backgroundColor: eTheme.tooltipBg,\n        borderColor: eTheme.tooltipBorderColor,\n        borderWidth: 1,\n        formatter: (params) => {\n          return Math.round(parseInt(params[0].value, 10));\n        },\n        extraCssText: eTheme.tooltipExtraCss,\n      },\n      xAxis: {\n        type: 'category',\n        boundaryGap: false,\n        offset: 25,\n        data: this.chartData.outerLine.map(i => i.label),\n        axisTick: {\n          show: false,\n        },\n        axisLabel: {\n          color: eTheme.axisTextColor,\n          fontSize: eTheme.axisFontSize,\n        },\n        axisLine: {\n          lineStyle: {\n            color: eTheme.axisLineColor,\n            width: '2',\n          },\n        },\n      },\n      yAxis: {\n        type: 'value',\n        boundaryGap: false,\n        axisLine: {\n          lineStyle: {\n            color: eTheme.axisLineColor,\n            width: '1',\n          },\n        },\n        axisLabel: {\n          color: eTheme.axisTextColor,\n          fontSize: eTheme.axisFontSize,\n        },\n        axisTick: {\n          show: false,\n        },\n        splitLine: {\n\n          lineStyle: {\n            color: eTheme.yAxisSplitLine,\n            width: '1',\n          },\n        },\n      },\n      series: [\n        this.getInnerLine(eTheme),\n        this.getOuterLine(eTheme),\n      ],\n    };\n  }\n\n  getOuterLine(eTheme) {\n    return {\n      type: 'line',\n      smooth: true,\n      symbolSize: 20,\n      itemStyle: {\n        normal: {\n          opacity: 0,\n        },\n        emphasis: {\n          color: '#ffffff',\n            borderColor: eTheme.itemBorderColor,\n            borderWidth: 2,\n            opacity: 1,\n        },\n      },\n      lineStyle: {\n        normal: {\n          width: eTheme.lineWidth,\n          type: eTheme.lineStyle,\n          color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{\n            offset: 0,\n            color: eTheme.lineGradFrom,\n          }, {\n            offset: 1,\n            color: eTheme.lineGradTo,\n          }]),\n          shadowColor: eTheme.lineShadow,\n          shadowBlur: 6,\n          shadowOffsetY: 12,\n        },\n      },\n      areaStyle: {\n        normal: {\n          color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{\n            offset: 0,\n            color: eTheme.areaGradFrom,\n          }, {\n            offset: 1,\n            color: eTheme.areaGradTo,\n          }]),\n        },\n      },\n      data: this.chartData.outerLine.map(i => i.value),\n    };\n  }\n\n  getInnerLine(eTheme) {\n    return {\n      type: 'line',\n      smooth: true,\n      symbolSize: 20,\n      tooltip: {\n        show: false,\n        extraCssText: '',\n      },\n      itemStyle: {\n        normal: {\n          opacity: 0,\n        },\n        emphasis: {\n          opacity: 0,\n        },\n      },\n      lineStyle: {\n        normal: {\n          width: eTheme.innerLineWidth,\n          type: eTheme.innerLineStyle,\n          color: new echarts.graphic.LinearGradient(0, 0, 0, 1),\n        },\n      },\n      areaStyle: {\n        normal: {\n          color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{\n            offset: 0,\n            color: eTheme.innerAreaGradFrom,\n          }, {\n            offset: 1,\n            color: eTheme.innerAreaGradTo,\n          }]),\n          opacity: 1,\n        },\n      },\n      data: this.chartData.innerLine,\n    };\n  }\n\n  onChartInit(echarts) {\n    this.echartsIntance = echarts;\n  }\n\n  resizeChart() {\n    if (this.echartsIntance) {\n      this.echartsIntance.resize();\n    }\n  }\n\n  ngOnDestroy() {\n    this.alive = false;\n  }\n}\n","import { Component, OnDestroy } from '@angular/core';\nimport { takeWhile } from 'rxjs/operators';\nimport { NbThemeService } from '@nebular/theme';\nimport { OutlineData, VisitorsAnalyticsData } from '../../../@core/data/visitors-analytics';\nimport { forkJoin } from 'rxjs';\n\n\n@Component({\n  selector: 'ngx-ecommerce-visitors-analytics',\n  styleUrls: ['./visitors-analytics.component.scss'],\n  templateUrl: './visitors-analytics.component.html',\n})\nexport class ECommerceVisitorsAnalyticsComponent implements OnDestroy {\n  private alive = true;\n\n  pieChartValue: number;\n  chartLegend: {iconColor: string; title: string}[];\n  visitorsAnalyticsData: { innerLine: number[]; outerLine: OutlineData[]; };\n\n  constructor(private themeService: NbThemeService,\n              private visitorsAnalyticsChartService: VisitorsAnalyticsData) {\n    this.themeService.getJsTheme()\n      .pipe(takeWhile(() => this.alive))\n      .subscribe(theme => {\n        this.setLegendItems(theme.variables.visitorsLegend);\n      });\n\n    forkJoin([\n      this.visitorsAnalyticsChartService.getInnerLineChartData(),\n      this.visitorsAnalyticsChartService.getOutlineLineChartData(),\n      this.visitorsAnalyticsChartService.getPieChartData()\n    ])\n      .pipe(takeWhile(() => this.alive))\n      .subscribe(([innerLine, outerLine, pieChartValue]: [number[], OutlineData[], number]) => {\n        this.visitorsAnalyticsData = {\n          innerLine: innerLine,\n          outerLine: outerLine,\n        };\n\n        this.pieChartValue = pieChartValue;\n      });\n  }\n\n  setLegendItems(visitorsLegend): void {\n    this.chartLegend = [\n      {\n        iconColor: visitorsLegend.firstIcon,\n        title: 'Land Borders',\n      },\n      {\n        iconColor: visitorsLegend.secondIcon,\n        title: 'Return Flights',\n      },\n    ];\n  }\n\n  ngOnDestroy() {\n    this.alive = false;\n  }\n}\n","<nb-card size=\"medium\">\n  <nb-card-header>\n    <h3>Returnee Analytics</h3>\n    <div class=\"subtitle\">All Entry Points</div>\n  </nb-card-header>\n  <nb-card-body>\n    <div class=\"chart-container\">\n      <div class=\"chart-header\">\n        <ngx-legend-chart [legendItems]=\"chartLegend\"></ngx-legend-chart>\n      </div>\n      <ngx-visitors-analytics-chart [chartData]=\"visitorsAnalyticsData\"></ngx-visitors-analytics-chart>\n    </div>\n  </nb-card-body>\n\n  <ngx-slide-out [showVisitorsStatistics]=\"true\">\n    <ngx-visitors-statistics [value]=\"pieChartValue\"></ngx-visitors-statistics>\n  </ngx-slide-out>\n</nb-card>\n","import { AfterViewInit, Component, Input, OnDestroy } from '@angular/core';\nimport { NbThemeService } from '@nebular/theme';\nimport { delay, takeWhile } from 'rxjs/operators';\nimport { LayoutService } from '../../../../@core/utils/layout.service';\n\n\n@Component({\n  selector: 'ngx-visitors-statistics',\n  styleUrls: ['./visitors-statistics.component.scss'],\n  templateUrl: './visitors-statistics.component.html',\n})\nexport class ECommerceVisitorsStatisticsComponent implements AfterViewInit, OnDestroy {\n\n  private alive = true;\n\n  @Input() value: number;\n\n  option: any = {};\n  chartLegend: { iconColor: string; title: string }[];\n  echartsIntance: any;\n\n  constructor(private theme: NbThemeService,\n              private layoutService: LayoutService) {\n    this.layoutService.onSafeChangeLayoutSize()\n      .pipe(\n        takeWhile(() => this.alive),\n      )\n      .subscribe(() => this.resizeChart());\n  }\n\n  ngAfterViewInit() {\n    this.theme.getJsTheme()\n      .pipe(\n        takeWhile(() => this.alive),\n        delay(1),\n      )\n      .subscribe(config => {\n        const variables: any = config.variables;\n        const visitorsPieLegend: any = config.variables.visitorsPieLegend;\n\n        this.setOptions(variables);\n        this.setLegendItems(visitorsPieLegend);\n    });\n  }\n\n  setLegendItems(visitorsPieLegend) {\n    this.chartLegend = [\n      {\n        iconColor: visitorsPieLegend.firstSection,\n        title: 'New Visitors',\n      },\n      {\n        iconColor: visitorsPieLegend.secondSection,\n        title: 'Return Visitors',\n      },\n    ];\n  }\n\n  setOptions(variables) {\n    const visitorsPie: any = variables.visitorsPie;\n\n    this.option = {\n      tooltip: {\n        trigger: 'item',\n        formatter: '',\n      },\n      series: [\n        {\n          name: ' ',\n          clockWise: true,\n          hoverAnimation: false,\n          type: 'pie',\n          center: ['50%', '50%'],\n          radius: visitorsPie.firstPieRadius,\n          data: [\n            {\n              value: this.value,\n              name: ' ',\n              label: {\n                normal: {\n                  position: 'center',\n                  formatter: '',\n                  textStyle: {\n                    fontSize: '22',\n                    fontFamily: variables.fontSecondary,\n                    fontWeight: '600',\n                    color: variables.fgHeading,\n                  },\n                },\n              },\n              tooltip: {\n                show: false,\n              },\n              itemStyle: {\n                normal: {\n                  color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [\n                    {\n                      offset: 0,\n                      color: visitorsPie.firstPieGradientLeft,\n                    },\n                    {\n                      offset: 1,\n                      color: visitorsPie.firstPieGradientRight,\n                    },\n                  ]),\n                  shadowColor: visitorsPie.firstPieShadowColor,\n                  shadowBlur: 0,\n                  shadowOffsetX: 0,\n                  shadowOffsetY: 3,\n                },\n              },\n              hoverAnimation: false,\n            },\n            {\n              value: 100 - this.value,\n              name: ' ',\n              tooltip: {\n                show: false,\n              },\n              label: {\n                normal: {\n                  position: 'inner',\n                },\n              },\n              itemStyle: {\n                normal: {\n                  color: variables.layoutBg,\n                },\n              },\n            },\n          ],\n        },\n        {\n          name: ' ',\n          clockWise: true,\n          hoverAnimation: false,\n          type: 'pie',\n          center: ['50%', '50%'],\n          radius: visitorsPie.secondPieRadius,\n          data: [\n            {\n              value: this.value,\n              name: ' ',\n              label: {\n                normal: {\n                  position: 'center',\n                  formatter: '',\n                  textStyle: {\n                    fontSize: '22',\n                    fontFamily: variables.fontSecondary,\n                    fontWeight: '600',\n                    color: variables.fgHeading,\n                  },\n                },\n              },\n              tooltip: {\n                show: false,\n              },\n              itemStyle: {\n                normal: {\n                  color: new echarts.graphic.LinearGradient(0, 0, 0, 1),\n                },\n              },\n              hoverAnimation: false,\n            },\n            {\n              value: 100 - this.value,\n              name: ' ',\n              tooltip: {\n                show: false,\n              },\n              label: {\n                normal: {\n                  position: 'inner',\n                },\n              },\n              itemStyle: {\n                normal: {\n                  color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [\n                    {\n                      offset: 0,\n                      color: visitorsPie.secondPieGradientLeft,\n                    },\n                    {\n                      offset: 1,\n                      color: visitorsPie.secondPieGradientRight,\n                    },\n                  ]),\n                  shadowColor: visitorsPie.secondPieShadowColor,\n                  shadowBlur: 0,\n                  shadowOffsetX: visitorsPie.shadowOffsetX,\n                  shadowOffsetY: visitorsPie.shadowOffsetY,\n                },\n              },\n            },\n          ],\n        },\n      ],\n    };\n  }\n\n  onChartInit(echarts) {\n    this.echartsIntance = echarts;\n  }\n\n  resizeChart() {\n    if (this.echartsIntance) {\n      this.echartsIntance.resize();\n    }\n  }\n\n  ngOnDestroy() {\n    this.alive = false;\n  }\n}\n","<div class=\"visitors-statistics\">\n  <h4 class=\"h1\">1,100</h4>\n  <div class=\"visitors-title\">New Returnees</div>\n  <div class=\"statistics-chart\">\n    <div echarts\n         [options]=\"option\"\n         class=\"echart\"\n         (chartInit)=\"onChartInit($event)\">\n    </div>\n  </div>\n  <div class=\"statistics-footer\">\n    <div class=\"chart-values h5\">\n      <span class=\"chart-value\">25%</span>\n      <span class=\"chart-value\">75%</span>\n    </div>\n    <ngx-legend-chart class=\"visitors-statistics-legend\" [legendItems]=\"chartLegend\"></ngx-legend-chart>\n  </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\n\nimport { MiscellaneousComponent } from './miscellaneous.component';\nimport { NotFoundComponent } from './not-found/not-found.component';\n\nconst routes: Routes = [\n  {\n    path: '',\n    component: MiscellaneousComponent,\n    children: [\n      {\n        path: '404',\n        component: NotFoundComponent,\n      },\n    ],\n  },\n];\n\n@NgModule({\n  imports: [RouterModule.forChild(routes)],\n  exports: [RouterModule],\n})\nexport class MiscellaneousRoutingModule {\n}\n","import { Component } from '@angular/core';\n\n@Component({\n  selector: 'ngx-miscellaneous',\n  template: `\n    <router-outlet></router-outlet>\n  `,\n})\nexport class MiscellaneousComponent {\n}\n","import { NgModule } from '@angular/core';\nimport { NbButtonModule, NbCardModule } from '@nebular/theme';\n\nimport { ThemeModule } from '../../@theme/theme.module';\nimport { MiscellaneousRoutingModule } from './miscellaneous-routing.module';\nimport { MiscellaneousComponent } from './miscellaneous.component';\nimport { NotFoundComponent } from './not-found/not-found.component';\n\n@NgModule({\n  imports: [\n    ThemeModule,\n    NbCardModule,\n    NbButtonModule,\n    MiscellaneousRoutingModule,\n  ],\n  declarations: [\n    MiscellaneousComponent,\n    NotFoundComponent,\n  ],\n})\nexport class MiscellaneousModule { }\n","import { NbMenuItem } from '@nebular/theme';\n\n// TODO: remove all unused pages/modules\n\nexport const MENU_ITEMS: NbMenuItem[] = [\n  {\n    title: 'Core Panels',\n    icon: 'home-outline',\n    link: '/hub/home',\n    home: true,\n  },\n  {\n    title: 'Data Entry',\n    group: true,\n  },\n  {\n    title: 'Returnees',\n    icon: 'people-outline',\n    children: [\n      {\n        title: 'Form A',\n        link: '/hub/secured/forms/form-a',\n      },\n      {\n        title: 'Point of Entry',\n        link: '/hub/secured/forms/point-of-entry',\n      },\n      {\n        title: 'Quarantine Facility',\n        link: '/hub/secured/forms/quarantine-facility',\n      },\n      {\n        title: 'RDT Lab',\n        link: '/hub/secured/forms/rdt-lab',\n      },\n      {\n        title: 'PCR Lab',\n        link: '/hub/secured/forms/pcr-lab',\n      },\n      {\n        title: 'Isolation',\n        link: '/hub/secured/forms/isolation',\n      },\n      {\n        title: 'Hospital',\n        link: '/hub/secured/forms/hospital',\n      },\n      {\n        title: 'Municipality',\n        link: '/hub/secured/forms/municipality',\n      },\n    ],\n  },\n  {\n    title: 'Aggregates',\n    icon: 'bar-chart-2-outline',\n    children: [\n      {\n        title: 'PCR Tests',\n        link: '/hub/secured/tables/pcr',\n      },\n      {\n        title: 'RDT Tests',\n        link: '/hub/secured/tables/rdt',\n      },\n      {\n        title: 'Returnees',\n        link: '/hub/secured/tables/returnee',\n      },\n    ],\n  },\n  {\n    title: 'Visual Stats',\n    group: true,\n  },\n  {\n    title: 'COVID-19 Maps',\n    icon: 'map-outline',\n    children: [\n      {\n        title: 'Kathmandu Valley',\n        link: '/hub/maps/area/kathmandu_valley',\n      },\n      {\n        title: 'Nepal',\n        link: '/hub/maps/nepal',\n      },\n      {\n        title: 'Custom Map (Sample)',\n        link: '/hub/maps/bubble',\n      },\n    ],\n  },\n  {\n    title: 'COVID-19 Stats',\n    icon: 'pie-chart-outline',\n    link: '/hub/charts/echarts',\n  },\n  {\n    title: 'COVID-19 Charts',\n    icon: 'activity-outline',\n    children: [\n      {\n        title: 'Preventive Measures',\n        link: '/hub/charts/chartjs',\n      },\n      {\n        title: 'Medical Stats',\n        link: '/hub/charts/d3',\n      },\n    ],\n  },\n  {\n    title: 'Meta Graphs',\n    group: true,\n  },\n  {\n    title: 'Dashboard',\n    icon: 'activity-outline',\n    children: [\n      {\n        title: 'Concepts',\n        link: '/hub/graphs/concepts',\n      },\n      {\n        title: 'Potatoes',\n        link: '/hub/graphs/servers',\n      },\n    ],\n  },\n  {\n    title: 'System',\n    icon: 'activity-outline',\n    children: [\n      {\n        title: 'Concepts',\n        link: '/hub/graphs/concepts',\n      },\n      {\n        title: 'Couches',\n        link: '/hub/graphs/servers',\n      },\n    ],\n  },\n];\n","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes, CanActivate } from '@angular/router';\nimport { AuthGuard } from '../services/guards/auth.guard';\nimport { ECommerceComponent } from './e-commerce/e-commerce.component';\nimport { NotFoundComponent } from './miscellaneous/not-found/not-found.component';\nimport { PagesComponent } from './pages.component';\n\n\nconst routes: Routes = [{\n  path: '',\n  component: PagesComponent,\n  children: [\n    {\n      path: 'home',\n      component: ECommerceComponent,\n    },\n    {\n      path: 'secured/forms',\n      canActivate: [AuthGuard],\n      loadChildren: () => import('./forms/forms.module')\n        .then(m => m.FormsModule),\n    },\n    {\n      path: 'maps',\n      canActivate: [AuthGuard],\n      loadChildren: () => import('./maps/maps.module')\n        .then(m => m.MapsModule),\n    },\n    {\n      path: 'charts',\n      loadChildren: () => import('./charts/charts.module')\n        .then(m => m.ChartsModule),\n    },\n    {\n      path: 'graphs',\n      loadChildren: () => import('./graphs/graphs.module')\n        .then(m => m.GraphsModule),\n    },\n    {\n      path: 'secured/tables',\n      canActivate: [AuthGuard],\n      loadChildren: () => import('./tables/tables.module')\n        .then(m => m.TablesModule),\n    },\n    {\n      path: '',\n      redirectTo: 'home',\n      pathMatch: 'full',\n    },\n    {\n      path: '**',\n      component: NotFoundComponent,\n    },\n  ],\n}];\n\n@NgModule({\n  imports: [RouterModule.forChild(routes)],\n  exports: [RouterModule],\n})\nexport class PagesRoutingModule {}\n","import { Component } from '@angular/core';\n\nimport { MENU_ITEMS } from './pages-menu';\n\n@Component({\n  selector: 'ngx-pages',\n  styleUrls: ['pages.component.scss'],\n  template: `\n    <ngx-one-column-layout>\n      <nb-menu [items]=\"menu\"></nb-menu>\n      <router-outlet></router-outlet>\n    </ngx-one-column-layout>\n  `,\n})\nexport class PagesComponent {\n\n  menu = MENU_ITEMS;\n}\n","import { NgModule } from '@angular/core';\nimport { NbMenuModule } from '@nebular/theme';\nimport { ThemeModule } from '../@theme/theme.module';\nimport { ECommerceModule } from './e-commerce/e-commerce.module';\nimport { MiscellaneousModule } from './miscellaneous/miscellaneous.module';\nimport { PagesRoutingModule } from './pages-routing.module';\nimport { PagesComponent } from './pages.component';\n\n\n@NgModule({\n  imports: [\n    PagesRoutingModule,\n    ThemeModule,\n    NbMenuModule,\n    ECommerceModule,\n    MiscellaneousModule,\n  ],\n  declarations: [\n    PagesComponent,\n  ],\n})\nexport class PagesModule {\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot, UrlTree } from '@angular/router';\nimport { Observable } from 'rxjs';\nimport { AuthService } from '../auth/auth.service';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class AuthGuard implements CanActivate {\n\n  constructor(\n    private router: Router,\n    private authService: AuthService,\n  ) {}\n\n\n  canActivate(\n    _: ActivatedRouteSnapshot,\n    state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {\n\n      if (this.authService.isAuthenticated) return true;\n\n      this.router.navigate(['auth/login'], {\n        queryParams: {\n          returnUrl: state.url,\n        },\n      });\n      return false;\n  }\n}\n"]}