{"version":3,"sources":["index.js","core.js","global.js","theme.js","util/common.js","util/array.js","util/dom.js","chart/chart.js","chart/const.js","base.js","graphic/event/emit.js","chart/plot.js","coord/index.js","coord/base.js","graphic/util/matrix.js","graphic/util/vector2.js","coord/cartesian.js","geom/base.js","attr/index.js","attr/position.js","attr/base.js","attr/shape.js","attr/size.js","attr/color.js","attr/color-util.js","geom/shape/shape.js","chart/controller/scale.js","scale/index.js","scale/cat-tick.js","scale/linear-tick.js","chart/controller/axis.js","component/axis/index.js","component/axis/abstract.js","component/axis/line.js","graphic/index.js","graphic/canvas.js","graphic/event/controller.js","graphic/canvas-element.js","graphic/container.js","graphic/shape.js","graphic/element.js","graphic/util/style-parse.js","graphic/group.js","graphic/util/requestAnimationFrame.js","graphic/shape/rect.js","graphic/shape/image.js","graphic/shape/circle.js","graphic/shape/line.js","graphic/util/bbox.js","graphic/shape/polygon.js","graphic/shape/polyline.js","graphic/util/smooth.js","graphic/shape/arc.js","graphic/shape/sector.js","graphic/shape/text.js","graphic/util/rect.js","graphic/shape/custom.js","util/helper.js","geom/index.js","geom/point.js","geom/shape/point.js","geom/shape/util.js","geom/path.js","geom/shape/line.js","geom/line.js","geom/area.js","geom/shape/area.js","geom/interval.js","geom/mixin/size.js","geom/shape/interval.js","geom/polygon.js","geom/shape/polygon.js","geom/schema.js","geom/shape/schema.js","geom/adjust/index.js","geom/adjust/stack.js","geom/adjust/dodge.js","geom/adjust/symmetric.js","coord/polar.js","component/axis/circle.js","component/guide/arc.js","component/guide/base.js","component/guide/html.js","component/guide/line.js","component/guide/rect.js","component/guide/text.js","component/guide/tag.js","component/guide/point.js","component/marker.js","plugin/tooltip.js","component/tooltip.js","component/list.js","component/text-box.js","plugin/guide.js","plugin/legend.js","animation/detail.js","graphic/animate/timeline.js","graphic/animate/animator.js","graphic/animate/easing.js","animation/animate.js","animation/shape-action.js","animation/util.js","animation/group-action.js","interaction/new/index.js","interaction/register.js","interaction/new/pan.js","interaction/new/base.js","interaction/new/context.js","interaction/new/pinch.js"],"names":[],"mappings":";;;;;;;AAAA;AACA;AACA;ACFA,ADGA;ACFA,ADGA;ACFA,ADGA;ACFA,ACHA,AFMA;ACFA,ACHA,AFMA;ACFA,ACHA,AFMA;ACFA,ACHA,AFMA,AGTA;AFOA,ACHA,AFMA,AGTA;AFOA,ACHA,AFMA,AGTA;AFOA,ACHA,AFMA,AGTA,ACHA;AHUA,ACHA,AFMA,AGTA,ACHA;AHUA,ACHA,AFMA,AGTA,ACHA;AHUA,ACHA,AFMA,AGTA,AENA,ADGA;AHUA,ACHA,AFMA,AGTA,AENA,ADGA;AHUA,ACHA,AFMA,AGTA,AENA,ADGA;AHUA,ACHA,AFMA,AGTA,AENA,ADGA,AENA;ALgBA,ACHA,AFMA,AGTA,AENA,ADGA,AENA;ALgBA,ACHA,AFMA,AGTA,AENA,ADGA,AENA;ACFA,ANkBA,ACHA,AFMA,AGTA,AENA,ADGA,AENA;ACFA,ANkBA,ACHA,AFMA,AGTA,AENA,ADGA,AENA;ACFA,ANkBA,ACHA,AFMA,AGTA,AENA,ADGA,AENA;ACFA,ACHA,APqBA,ACHA,AFMA,AGTA,AENA,ADGA,AENA;ACFA,ACHA,APqBA,ACHA,AFMA,AGTA,AENA,ADGA,AENA;ACFA,ACHA,APqBA,ACHA,AFMA,AGTA,AENA,ADGA,AENA;AGRA,AFMA,ACHA,APqBA,ACHA,AFMA,AGTA,AENA,ADGA,AENA;AGRA,AFMA,ACHA,APqBA,ACHA,AFMA,AGTA,AENA,ADGA,AENA;AGRA,AFMA,ACHA,APqBA,ACHA,AFMA,AGTA,AENA,ADGA,AENA;AGRA,AFMA,ACHA,APqBA,ACHA,AQxBA,AV8BA,AGTA,AENA,ADGA,AENA;AGRA,AFMA,ACHA,APqBA,ACHA,AQxBA,AV8BA,AGTA,AENA,ADGA,AENA;AGRA,AFMA,ACHA,APqBA,ACHA,AQxBA,AV8BA,AGTA,AENA,ADGA,AENA;AGRA,AFMA,ACHA,AGTA,AV8BA,ACHA,AQxBA,AV8BA,AGTA,AENA,ADGA,AENA;AGRA,AFMA,ACHA,AGTA,AV8BA,ACHA,AQxBA,AV8BA,AGTA,AENA,ADGA,AENA;AGRA,AFMA,ACHA,AGTA,AV8BA,AS3BA,AV8BA,AGTA,AENA,ADGA,AENA;AGRA,AFMA,ACHA,AGTA,ACHA,AXiCA,AS3BA,AV8BA,AGTA,AENA,ADGA,AENA;AGRA,AFMA,ACHA,AGTA,ACHA,AXiCA,AS3BA,AV8BA,AGTA,AENA,ADGA,AENA;AGRA,AFMA,ACHA,AGTA,ACHA,AXiCA,AS3BA,AV8BA,AGTA,AENA,ADGA,AENA;AGRA,AFMA,ACHA,AGTA,AENA,ADGA,AXiCA,AS3BA,AV8BA,AGTA,AENA,ADGA,AENA;AGRA,AFMA,ACHA,AGTA,AENA,ADGA,AXiCA,AS3BA,AV8BA,AGTA,AENA,ADGA,AENA;AGRA,AFMA,ACHA,AGTA,AENA,ADGA,AXiCA,AS3BA,AV8BA,AGTA,AENA,ADGA,AENA;AGRA,AFMA,ACHA,AGTA,AENA,ADGA,AXiCA,AS3BA,AIZA,Ad0CA,AGTA,AENA,ADGA,AENA;AGRA,AFMA,ACHA,AGTA,AENA,ADGA,AXiCA,AS3BA,AIZA,Ad0CA,AGTA,AENA,ADGA,AENA;AGRA,AFMA,ACHA,AGTA,AENA,ADGA,AXiCA,AS3BA,AIZA,Ad0CA,AGTA,AENA,ADGA,AENA;AGRA,AFMA,ACHA,AGTA,AENA,ADGA,AFMA,AIZA,ACHA,Af6CA,AGTA,AENA,ADGA,AENA;AGRA,AFMA,ACHA,AGTA,AENA,ADGA,AFMA,AIZA,ACHA,Af6CA,AGTA,AENA,ADGA,AENA;AGRA,AFMA,ACHA,AGTA,AENA,ADGA,AFMA,AIZA,ACHA,Af6CA,AGTA,AENA,ADGA,AENA;AGRA,AFMA,ACHA,AGTA,AENA,AGTA,AJYA,AFMA,AIZA,ACHA,Af6CA,AGTA,AENA,ADGA,AENA;AGRA,AFMA,ACHA,AGTA,AENA,AGTA,ANkBA,AIZA,ACHA,Af6CA,AGTA,AENA,ADGA,AENA;AGRA,AFMA,ACHA,AGTA,AENA,AGTA,ANkBA,AIZA,ACHA,Af6CA,AGTA,AENA,ADGA,AENA;AGRA,AFMA,ACHA,AGTA,AENA,AGTA,ACHA,APqBA,AIZA,ACHA,Af6CA,AGTA,AENA,ADGA,AENA;AGRA,AFMA,AIZA,AENA,AGTA,ACHA,APqBA,AIZA,ACHA,Af6CA,AGTA,AENA,ADGA,AENA;AGRA,AFMA,AIZA,AENA,AGTA,ACHA,APqBA,AIZA,ACHA,Af6CA,AGTA,AENA,ADGA,AENA;AYnCA,AT2BA,AFMA,AIZA,AENA,AGTA,ACHA,APqBA,AIZA,ACHA,Af6CA,AGTA,AENA,ADGA,AENA;AYnCA,AT2BA,AFMA,AIZA,AENA,AGTA,ACHA,APqBA,AIZA,ACHA,Af6CA,AGTA,AENA,ADGA,AENA;AYnCA,AT2BA,AFMA,AIZA,AENA,AGTA,ACHA,APqBA,AIZA,ACHA,Af6CA,AGTA,AENA,ADGA,AENA;AYnCA,ACHA,AV8BA,AFMA,AIZA,AENA,AGTA,ACHA,APqBA,AIZA,ACHA,Af6CA,AGTA,AENA,ADGA,AENA;AYnCA,ACHA,AV8BA,AFMA,AIZA,AENA,AGTA,ACHA,APqBA,AIZA,ACHA,Af6CA,AGTA,AENA,ADGA,AENA;AYnCA,ACHA,AV8BA,AFMA,AIZA,AENA,AGTA,ACHA,APqBA,AIZA,ACHA,Af6CA,AGTA,AENA,ADGA,AENA;AczCA,AFMA,ACHA,AV8BA,AFMA,AIZA,AENA,AGTA,ACHA,APqBA,AIZA,ACHA,Af6CA,AGTA,AENA,ADGA,AENA;AczCA,AFMA,ACHA,AV8BA,AFMA,AIZA,AENA,AGTA,ACHA,APqBA,AIZA,ACHA,Af6CA,AGTA,AENA,ADGA,AENA;AczCA,AFMA,ACHA,AV8BA,AFMA,AIZA,AENA,AGTA,ACHA,APqBA,AIZA,ACHA,Af6CA,AGTA,AENA,ADGA,AENA;AczCA,AFMA,ACHA,AENA,AZoCA,AFMA,AIZA,AENA,AGTA,ACHA,APqBA,AIZA,ACHA,Af6CA,AGTA,AENA,ADGA,AENA;AczCA,AFMA,ACHA,AENA,AZoCA,AFMA,AIZA,AENA,AGTA,ACHA,APqBA,AIZA,ACHA,Af6CA,AGTA,AENA,ADGA,AENA;AczCA,AFMA,ACHA,AENA,AZoCA,AFMA,AIZA,AENA,AGTA,ACHA,APqBA,AIZA,ACHA,Af6CA,AGTA,AENA,ADGA,AENA;AczCA,AFMA,ACHA,AENA,ACHA,AbuCA,AFMA,AIZA,AENA,AGTA,ACHA,APqBA,AIZA,ACHA,Af6CA,AGTA,AENA,ADGA,AENA;AczCA,AFMA,ACHA,AENA,ACHA,AbuCA,AFMA,AIZA,AENA,AGTA,ACHA,APqBA,AIZA,ACHA,Af6CA,AGTA,AENA,ADGA,AENA;AczCA,AFMA,ACHA,AENA,ACHA,AbuCA,AFMA,AIZA,AENA,AGTA,ACHA,APqBA,AIZA,ACHA,Af6CA,AGTA,AENA,ADGA,AENA;AczCA,AGTA,ALeA,ACHA,AENA,ACHA,AbuCA,AFMA,AIZA,AENA,AGTA,ACHA,APqBA,AIZA,ACHA,Af6CA,AGTA,AENA,ADGA,AENA;AczCA,AGTA,ALeA,ACHA,AENA,ACHA,AbuCA,AFMA,AIZA,AENA,AGTA,ACHA,APqBA,AIZA,ACHA,Af6CA,AGTA,AENA,ADGA,AENA;AczCA,AGTA,ALeA,ACHA,AENA,ACHA,AbuCA,AFMA,AIZA,AENA,AGTA,ACHA,APqBA,AIZA,ACHA,Af6CA,AGTA,AENA,ADGA,AENA;AczCA,AIZA,ADGA,ALeA,ACHA,AENA,ACHA,AbuCA,AFMA,AIZA,AENA,AGTA,ACHA,APqBA,AIZA,ACHA,Af6CA,AGTA,AENA,ADGA,AENA;AczCA,AIZA,ADGA,ALeA,ACHA,AENA,ACHA,AbuCA,AFMA,AIZA,AENA,AGTA,ACHA,APqBA,AIZA,ACHA,Af6CA,AGTA,AENA,ADGA,AENA;AczCA,AIZA,ADGA,ALeA,ACHA,AENA,ACHA,AbuCA,AFMA,AIZA,AENA,AGTA,ACHA,APqBA,AIZA,ACHA,Af6CA,AGTA,AENA,ADGA,AENA;AczCA,AIZA,ADGA,ALeA,ACHA,AENA,ACHA,AbuCA,AFMA,AIZA,AENA,AGTA,ACHA,AQxBA,Af6CA,AIZA,ACHA,Af6CA,AGTA,AENA,ADGA,AENA;AczCA,AIZA,ADGA,AJYA,AENA,ACHA,AbuCA,AFMA,AIZA,AENA,AGTA,ACHA,AQxBA,Af6CA,AIZA,ACHA,Af6CA,AGTA,AENA,ADGA,AENA;AczCA,AIZA,ADGA,AJYA,AENA,ACHA,AbuCA,AFMA,AIZA,AENA,AGTA,ACHA,AQxBA,Af6CA,AIZA,ACHA,Af6CA,AGTA,AENA,ADGA,AENA;AczCA,AIZA,ADGA,AJYA,AENA,ACHA,AbuCA,AFMA,AmBzDA,Af6CA,AENA,AGTA,ACHA,AQxBA,Af6CA,AIZA,ACHA,Af6CA,AGTA,AENA,ADGA,AENA;AczCA,AIZA,ADGA,AJYA,AENA,ACHA,AbuCA,AFMA,AmBzDA,Af6CA,AENA,AGTA,ACHA,AQxBA,Af6CA,AIZA,ACHA,Af6CA,AGTA,AENA,ADGA,AENA;AczCA,AIZA,ADGA,AJYA,AENA,ACHA,Af6CA,AmBzDA,Af6CA,AENA,AGTA,ACHA,AQxBA,Af6CA,AIZA,ACHA,Af6CA,AGTA,AENA,ADGA,AENA;AczCA,AIZA,ADGA,AJYA,AENA,ACHA,Af6CA,AmBzDA,Af6CA,AENA,AGTA,ACHA,AQxBA,Af6CA,AIZA,ACHA,Af6CA,A2BjFA,AxBwEA,AENA,ADGA,AENA;AczCA,AIZA,ADGA,AJYA,AENA,ACHA,Af6CA,AmBzDA,Af6CA,AENA,AGTA,ACHA,AQxBA,Af6CA,AIZA,ACHA,Af6CA,A2BjFA,AxBwEA,AENA,ADGA,AENA;AczCA,AIZA,ADGA,AJYA,AENA,ACHA,Af6CA,AmBzDA,Af6CA,AENA,AGTA,ACHA,AQxBA,Af6CA,AIZA,ACHA,Af6CA,A2BjFA,AxBwEA,AENA,ADGA,AENA;AczCA,AIZA,ADGA,AJYA,AENA,ACHA,Af6CA,AmBzDA,Af6CA,AENA,AGTA,ACHA,AQxBA,Af6CA,AIZA,ACHA,Af6CA,A4BpFA,ADGA,AxBwEA,AENA,ADGA,AENA;AczCA,AIZA,ADGA,AJYA,AENA,ACHA,Af6CA,AmBzDA,Af6CA,AENA,AGTA,ACHA,AQxBA,Af6CA,AIZA,ACHA,AavCA,ADGA,AxBwEA,AENA,ADGA,AENA;AczCA,AIZA,ADGA,AJYA,AENA,ACHA,Af6CA,AmBzDA,Af6CA,AENA,AGTA,ACHA,AQxBA,Af6CA,AIZA,ACHA,AavCA,ADGA,AxBwEA,AENA,ADGA,AENA;AczCA,AIZA,ADGA,AJYA,AENA,ACHA,Af6CA,AmBzDA,Af6CA,AENA,AGTA,ACHA,AQxBA,Af6CA,AIZA,ACHA,AavCA,ADGA,AENA,A1B8EA,AENA,ADGA,AENA;AczCA,AIZA,ADGA,AJYA,AENA,ACHA,Af6CA,AmBzDA,Af6CA,AENA,AGTA,ACHA,AQxBA,Af6CA,AIZA,ACHA,AavCA,ADGA,AENA,A1B8EA,AENA,ADGA,AENA;AczCA,AIZA,ADGA,AJYA,AENA,ACHA,Af6CA,AmBzDA,Af6CA,AENA,AGTA,ACHA,AQxBA,Af6CA,AIZA,ACHA,AavCA,ADGA,AENA,A1B8EA,AENA,ADGA,AENA;AczCA,AIZA,ADGA,AJYA,AENA,ACHA,Af6CA,AuBrEA,AJYA,Af6CA,AENA,AGTA,ACHA,AQxBA,Af6CA,AIZA,ACHA,AavCA,ADGA,AENA,A1B8EA,AENA,ADGA,AENA;AczCA,AIZA,ADGA,AJYA,AENA,ACHA,Af6CA,AuBrEA,AJYA,Af6CA,AENA,AGTA,ACHA,AQxBA,Af6CA,AIZA,ACHA,AavCA,ADGA,AENA,AxBwEA,ADGA,AENA;AczCA,AIZA,ADGA,AJYA,AENA,ACHA,Af6CA,AuBrEA,AJYA,Af6CA,AENA,AGTA,ACHA,AQxBA,Af6CA,AIZA,ACHA,AavCA,ADGA,AENA,AxBwEA,ADGA,AENA;AczCA,AIZA,ADGA,AJYA,AENA,ACHA,Af6CA,AuBrEA,AJYA,Af6CA,AoB5DA,AlBsDA,AGTA,ACHA,AQxBA,Af6CA,AIZA,ACHA,AavCA,ADGA,AENA,AxBwEA,ADGA,AENA;AczCA,AIZA,ADGA,AJYA,AENA,ACHA,Af6CA,AuBrEA,AJYA,Af6CA,AoB5DA,AlBsDA,AGTA,ACHA,AQxBA,Af6CA,AIZA,ACHA,AavCA,ADGA,AENA,AxBwEA,ADGA,AENA;AczCA,AIZA,ADGA,AJYA,AENA,Ad0CA,AuBrEA,AJYA,Af6CA,AoB5DA,AlBsDA,AGTA,ACHA,AQxBA,Af6CA,AIZA,ACHA,AavCA,ADGA,AENA,AxBwEA,ADGA,AENA;AczCA,AIZA,ADGA,AJYA,AENA,Ad0CA,AuBrEA,AJYA,Af6CA,AqB/DA,ADGA,AlBsDA,AGTA,ACHA,AQxBA,Af6CA,AIZA,ACHA,AavCA,ADGA,AENA,AxBwEA,ADGA,AENA;AczCA,AIZA,ADGA,AJYA,AENA,Ad0CA,AuBrEA,AJYA,Af6CA,AqB/DA,ADGA,AlBsDA,AGTA,ACHA,AQxBA,Af6CA,AIZA,ACHA,AavCA,ADGA,AENA,AxBwEA,ADGA,AENA;AczCA,AIZA,ADGA,AJYA,AENA,Ad0CA,AuBrEA,AJYA,Af6CA,AqB/DA,ADGA,AlBsDA,AGTA,ACHA,AQxBA,Af6CA,AIZA,ACHA,AavCA,ADGA,AENA,AxBwEA,ADGA,AENA;AczCA,AIZA,ADGA,AJYA,AENA,Ad0CA,AuBrEA,AJYA,Af6CA,AqB/DA,ADGA,AENA,ApB4DA,AGTA,ACHA,AQxBA,Af6CA,AIZA,ACHA,AavCA,ADGA,AENA,AxBwEA,ADGA,AENA;AczCA,AIZA,ADGA,AJYA,AENA,Ad0CA,AuBrEA,AJYA,Af6CA,AqB/DA,ADGA,AENA,ApB4DA,AGTA,ACHA,AQxBA,Af6CA,AIZA,ACHA,AavCA,ADGA,AENA,AxBwEA,ADGA,AENA;AczCA,AIZA,ADGA,AJYA,AENA,Ad0CA,AuBrEA,AJYA,Af6CA,AqB/DA,ADGA,AENA,ApB4DA,AGTA,ACHA,AQxBA,Af6CA,AIZA,ACHA,AavCA,ADGA,AENA,AxBwEA,ADGA,AENA;AczCA,AIZA,ADGA,AJYA,AENA,Ad0CA,AuBrEA,AJYA,Af6CA,AqB/DA,ADGA,AENA,ApB4DA,AGTA,ACHA,AQxBA,Af6CA,AwBxEA,ApB4DA,ACHA,AavCA,ADGA,AENA,AxBwEA,ADGA,AENA;AczCA,AIZA,ADGA,AJYA,AENA,Ad0CA,AuBrEA,AJYA,Af6CA,AqB/DA,ADGA,AENA,ApB4DA,AGTA,ACHA,AQxBA,Af6CA,AwBxEA,ApB4DA,ACHA,AavCA,ADGA,AENA,AxBwEA,ADGA,AENA;AczCA,AIZA,ADGA,AJYA,AZoCA,AuBrEA,AJYA,Af6CA,AqB/DA,ADGA,AENA,ApB4DA,AGTA,ACHA,AQxBA,Af6CA,AwBxEA,ApB4DA,ACHA,AavCA,ADGA,AENA,AxBwEA,ADGA,AENA;AczCA,AIZA,ADGA,AJYA,AZoCA,AuBrEA,AJYA,Af6CA,AqB/DA,ADGA,AENA,ApB4DA,AGTA,ACHA,AQxBA,AU9BA,AzB2EA,AwBxEA,ApB4DA,ACHA,AavCA,ADGA,AENA,AxBwEA,ADGA,AENA;AczCA,AIZA,ADGA,AJYA,AZoCA,AuBrEA,AJYA,Af6CA,AqB/DA,ACHA,ApB4DA,AGTA,ACHA,AQxBA,AU9BA,ADGA,ApB4DA,ACHA,AavCA,ADGA,AENA,AxBwEA,ADGA,AENA;AczCA,AIZA,ADGA,AJYA,AZoCA,AuBrEA,AJYA,Af6CA,AqB/DA,ACHA,ApB4DA,AGTA,ACHA,AQxBA,AU9BA,ADGA,ApB4DA,ACHA,AavCA,ADGA,AENA,AxBwEA,ADGA,AENA;AczCA,AIZA,ADGA,AJYA,AZoCA,AuBrEA,AJYA,Af6CA,AqB/DA,ACHA,ApB4DA,AGTA,ACHA,AQxBA,AU9BA,ACHA,AFMA,ApB4DA,ACHA,AavCA,ADGA,AENA,AxBwEA,ADGA,AENA;AczCA,AIZA,ADGA,AJYA,AZoCA,AuBrEA,AJYA,Af6CA,AqB/DA,ACHA,ApB4DA,AGTA,ACHA,AQxBA,AU9BA,ACHA,AFMA,ApB4DA,ACHA,AavCA,ADGA,AENA,AxBwEA,ADGA,AENA;AczCA,AIZA,ADGA,AJYA,AZoCA,AuBrEA,AJYA,Af6CA,AqB/DA,ACHA,ApB4DA,AGTA,ACHA,AQxBA,AU9BA,ACHA,AFMA,ApB4DA,ACHA,AavCA,ADGA,AENA,AxBwEA,ADGA,AENA;AczCA,AIZA,ADGA,AJYA,AZoCA,AuBrEA,AJYA,Af6CA,AqB/DA,ACHA,ApB4DA,AGTA,ACHA,AQxBA,AYpCA,AFMA,ACHA,AFMA,ApB4DA,ACHA,AavCA,ADGA,AENA,AxBwEA,ADGA,AENA;AczCA,AIZA,ADGA,AJYA,AZoCA,AuBrEA,AJYA,Af6CA,AqB/DA,ACHA,ApB4DA,AGTA,ACHA,AQxBA,AYpCA,AFMA,ACHA,AFMA,ApB4DA,ACHA,AavCA,ADGA,AENA,AxBwEA,ADGA,AENA;AczCA,AIZA,ADGA,AJYA,AZoCA,AuBrEA,AJYA,AMlBA,ACHA,ApB4DA,AGTA,ACHA,AQxBA,AYpCA,AFMA,ACHA,AFMA,ApB4DA,ACHA,AavCA,ACHA,AxBwEA,ADGA,AENA;AczCA,AIZA,ADGA,AJYA,AZoCA,AuBrEA,AJYA,AMlBA,ACHA,ApB4DA,AGTA,ACHA,AQxBA,AYpCA,AFMA,AGTA,AFMA,AFMA,ApB4DA,ACHA,AavCA,ACHA,AxBwEA,ADGA,AENA;AczCA,AIZA,ADGA,AJYA,AZoCA,AuBrEA,AJYA,AMlBA,ACHA,ApB4DA,AGTA,ACHA,AQxBA,AYpCA,AFMA,AGTA,AFMA,AFMA,ApB4DA,ACHA,AavCA,ACHA,AxBwEA,ADGA,AENA;AczCA,AIZA,ADGA,AJYA,AZoCA,AuBrEA,AJYA,AMlBA,ACHA,ApB4DA,AGTA,ACHA,AQxBA,AYpCA,AFMA,AGTA,AFMA,AFMA,ApB4DA,ACHA,AavCA,ACHA,AxBwEA,ADGA,AENA;AczCA,AIZA,ADGA,AJYA,AZoCA,AuBrEA,AJYA,AMlBA,ACHA,ApB4DA,AGTA,ACHA,AQxBA,AYpCA,AFMA,AGTA,AFMA,AFMA,AKfA,AzB2EA,ACHA,AavCA,ACHA,AxBwEA,ADGA,AENA;AczCA,AIZA,ADGA,AJYA,AZoCA,AuBrEA,AJYA,AMlBA,ACHA,ApB4DA,AGTA,ACHA,AQxBA,AYpCA,AFMA,AGTA,AFMA,AFMA,AKfA,AzB2EA,ACHA,AavCA,ACHA,AxBwEA,ADGA,AENA;AczCA,AIZA,ADGA,AJYA,AZoCA,AuBrEA,AJYA,AMlBA,ACHA,ApB4DA,AGTA,ACHA,AQxBA,AYpCA,AFMA,AGTA,AFMA,AFMA,AKfA,AzB2EA,ACHA,AavCA,ACHA,AxBwEA,ADGA,AENA;AczCA,AIZA,ADGA,AJYA,AZoCA,AuBrEA,AJYA,AMlBA,ACHA,ApB4DA,AIZA,AQxBA,AYpCA,AFMA,AGTA,AENA,AJYA,AFMA,AKfA,AzB2EA,ACHA,AavCA,ACHA,AxBwEA,ADGA,AENA;AczCA,AIZA,ADGA,AJYA,AZoCA,AuBrEA,AJYA,AMlBA,ACHA,ApB4DA,AIZA,AQxBA,AYpCA,AFMA,AGTA,AENA,AJYA,AFMA,AKfA,AzB2EA,ACHA,AavCA,ACHA,AxBwEA,ADGA,AENA;AczCA,AIZA,ADGA,AJYA,AZoCA,AuBrEA,AJYA,AMlBA,ACHA,ApB4DA,AIZA,AQxBA,AYpCA,AFMA,AGTA,AENA,AJYA,AFMA,AKfA,AzB2EA,ACHA,AavCA,ACHA,AxBwEA,ADGA,AENA;AczCA,AIZA,ADGA,AJYA,AZoCA,AuBrEA,AJYA,AMlBA,ACHA,ApB4DA,AIZA,AQxBA,AYpCA,AFMA,AGTA,AENA,AJYA,AFMA,AKfA,AzB2EA,A2BjFA,A1B8EA,AavCA,ACHA,AxBwEA,ADGA,AENA;AczCA,AIZA,ADGA,AJYA,AZoCA,AuBrEA,AJYA,AMlBA,ACHA,ApB4DA,AIZA,AQxBA,AYpCA,AFMA,AGTA,AENA,AJYA,AFMA,AKfA,AENA,A1B8EA,AavCA,ACHA,AxBwEA,ADGA,AENA;AczCA,AIZA,ALeA,AZoCA,AuBrEA,AJYA,AMlBA,ACHA,ApB4DA,AIZA,AQxBA,AYpCA,AFMA,AGTA,AENA,AJYA,AFMA,AKfA,AENA,A1B8EA,AavCA,ACHA,AxBwEA,ADGA,AENA;AczCA,AIZA,ALeA,AZoCA,AuBrEA,AJYA,AMlBA,ACHA,ApB4DA,AIZA,AQxBA,AYpCA,AFMA,AGTA,AENA,AJYA,AMlBA,ARwBA,AKfA,AENA,A1B8EA,Ac1CA,AxBwEA,ADGA,AENA;AczCA,AIZA,ALeA,AZoCA,AuBrEA,AJYA,AMlBA,ACHA,ApB4DA,AIZA,AQxBA,AYpCA,AFMA,AGTA,AENA,AJYA,AMlBA,ARwBA,AKfA,AENA,A1B8EA,Ac1CA,AxBwEA,ADGA,AENA;AczCA,AIZA,ALeA,AZoCA,AuBrEA,AJYA,AMlBA,ACHA,ApB4DA,AIZA,AQxBA,AYpCA,AFMA,AGTA,AENA,AJYA,AMlBA,ARwBA,AKfA,AENA,A1B8EA,Ac1CA,AxBwEA,ADGA,AENA;AczCA,AIZA,ALeA,AZoCA,AuBrEA,AJYA,AMlBA,ACHA,ApB4DA,AIZA,AQxBA,AYpCA,AFMA,AGTA,AENA,AJYA,AMlBA,ARwBA,AKfA,AIZA,AFMA,A1B8EA,Ac1CA,AxBwEA,ADGA,AENA;AczCA,AIZA,ALeA,AZoCA,AuBrEA,AJYA,AMlBA,ACHA,ApB4DA,AIZA,AQxBA,AYpCA,AFMA,AGTA,AENA,AJYA,AMlBA,ARwBA,AKfA,AIZA,AFMA,A1B8EA,Ac1CA,AxBwEA,ADGA,AENA;AczCA,AIZA,ALeA,AZoCA,AuBrEA,AJYA,AMlBA,ACHA,ApB4DA,AIZA,AQxBA,AYpCA,AFMA,AGTA,AENA,AJYA,AMlBA,ARwBA,AKfA,AIZA,AFMA,A1B8EA,Ac1CA,AxBwEA,ADGA,AENA;AczCA,AIZA,ALeA,AZoCA,AuBrEA,AJYA,AMlBA,ACHA,ApB4DA,AIZA,AQxBA,AYpCA,AFMA,AGTA,AENA,AJYA,AMlBA,ARwBA,AKfA,AKfA,ADGA,AFMA,A1B8EA,Ac1CA,AxBwEA,ADGA,AENA;AczCA,AIZA,ALeA,AZoCA,AuBrEA,AJYA,AMlBA,ACHA,ApB4DA,AIZA,AQxBA,AYpCA,AFMA,AGTA,AENA,AJYA,AMlBA,ARwBA,AKfA,AKfA,ADGA,AFMA,A1B8EA,Ac1CA,AxBwEA,ADGA,AENA;AczCA,AIZA,ALeA,AZoCA,AuBrEA,AJYA,AMlBA,ACHA,ApB4DA,AIZA,AQxBA,AYpCA,AFMA,AGTA,AENA,AJYA,AMlBA,ARwBA,AKfA,AKfA,ADGA,AFMA,A1B8EA,Ac1CA,AxBwEA,ADGA,AENA;AczCA,AIZA,ALeA,AZoCA,AuBrEA,AJYA,AMlBA,ACHA,ApB4DA,AIZA,AQxBA,AYpCA,AFMA,AGTA,AENA,AJYA,AMlBA,ARwBA,AKfA,AMlBA,ADGA,ADGA,AFMA,A1B8EA,Ac1CA,AxBwEA,ADGA,AENA;AczCA,AIZA,ALeA,AZoCA,AuBrEA,AJYA,AMlBA,ACHA,ApB4DA,AIZA,AQxBA,AYpCA,AFMA,AGTA,AENA,AJYA,AMlBA,ARwBA,AKfA,AMlBA,ADGA,ADGA,AFMA,A1B8EA,Ac1CA,AxBwEA,ADGA,AENA;AczCA,AIZA,ALeA,AZoCA,AuBrEA,AJYA,AMlBA,ACHA,ApB4DA,AIZA,AQxBA,AYpCA,AFMA,AGTA,AENA,AJYA,AMlBA,ARwBA,AKfA,AMlBA,ADGA,AHSA,A1B8EA,Ac1CA,AxBwEA,ADGA,AENA;AczCA,AIZA,ALeA,AZoCA,AuBrEA,AJYA,AMlBA,ACHA,ApB4DA,AIZA,AQxBA,AYpCA,AFMA,AGTA,AENA,AJYA,AMlBA,ARwBA,AKfA,AOrBA,ADGA,ADGA,AHSA,A1B8EA,Ac1CA,AxBwEA,ADGA,AENA;AczCA,AIZA,ALeA,AZoCA,AuBrEA,AJYA,AMlBA,ACHA,ApB4DA,AIZA,AQxBA,AYpCA,AFMA,AGTA,AENA,AJYA,AMlBA,ARwBA,AKfA,AOrBA,ADGA,ADGA,AHSA,A1B8EA,Ac1CA,AxBwEA,ADGA,AENA;AczCA,AIZA,ALeA,AZoCA,AuBrEA,AJYA,AMlBA,ACHA,ApB4DA,AIZA,AQxBA,AYpCA,AFMA,AGTA,AENA,AJYA,AMlBA,ARwBA,AKfA,AOrBA,ADGA,ADGA,AHSA,A1B8EA,Ac1CA,AxBwEA,ADGA,AENA;AczCA,AIZA,ALeA,AZoCA,AuBrEA,AJYA,AMlBA,ACHA,ApB4DA,AIZA,AQxBA,AYpCA,AFMA,AGTA,AENA,AJYA,AMlBA,ARwBA,AKfA,AOrBA,ADGA,AENA,AHSA,AHSA,A1B8EA,Ac1CA,AxBwEA,ADGA,AENA;AczCA,AIZA,ALeA,AZoCA,AuBrEA,AJYA,AMlBA,ACHA,ApB4DA,AIZA,AQxBA,AYpCA,AFMA,AGTA,AENA,AJYA,AMlBA,ARwBA,AKfA,AOrBA,ADGA,AENA,AHSA,AHSA,A1B8EA,Ac1CA,AxBwEA,ADGA,AENA;AczCA,AIZA,ALeA,AZoCA,AuBrEA,AJYA,AMlBA,ACHA,ApB4DA,AIZA,AQxBA,AYpCA,AFMA,AGTA,AENA,AJYA,AMlBA,ARwBA,AKfA,AOrBA,ADGA,AENA,AHSA,AHSA,A1B8EA,Ac1CA,AxBwEA,ADGA,AENA;AczCA,AIZA,ALeA,AZoCA,AuBrEA,AJYA,AMlBA,ACHA,ApB4DA,AIZA,AQxBA,AYpCA,AFMA,AGTA,AENA,AJYA,AMlBA,ARwBA,AKfA,AOrBA,ADGA,AENA,AHSA,AIZA,APqBA,A1B8EA,Ac1CA,AxBwEA,ADGA,AENA;AczCA,AIZA,ALeA,AZoCA,AuBrEA,AJYA,AMlBA,ACHA,ApB4DA,AIZA,AQxBA,AYpCA,AFMA,AGTA,AENA,AJYA,AMlBA,ARwBA,AKfA,AOrBA,ADGA,AENA,AHSA,AIZA,APqBA,A1B8EA,Ac1CA,AxBwEA,ADGA,AENA;AczCA,AIZA,ALeA,AZoCA,AuBrEA,AJYA,AMlBA,ACHA,ApB4DA,AIZA,AQxBA,AYpCA,AFMA,AGTA,AENA,AJYA,AMlBA,ARwBA,AKfA,AOrBA,ADGA,AENA,AHSA,AIZA,APqBA,A1B8EA,Ac1CA,AxBwEA,ADGA,AENA;AczCA,AIZA,ALeA,AZoCA,AuBrEA,AJYA,AMlBA,ACHA,ApB4DA,AIZA,AQxBA,AYpCA,AFMA,AGTA,AENA,AJYA,AMlBA,AHSA,AOrBA,ADGA,AENA,AENA,ALeA,AIZA,APqBA,A1B8EA,Ac1CA,AxBwEA,ADGA,AENA;AczCA,AIZA,ALeA,AZoCA,AuBrEA,AJYA,AMlBA,ACHA,ApB4DA,AIZA,AQxBA,AYpCA,AFMA,AGTA,AENA,AJYA,AMlBA,AHSA,AOrBA,ADGA,AENA,AENA,ALeA,AIZA,APqBA,A1B8EA,Ac1CA,AxBwEA,ADGA,AENA;AczCA,AIZA,ALeA,AZoCA,AuBrEA,AJYA,AMlBA,ACHA,ApB4DA,AIZA,AQxBA,AYpCA,AFMA,AGTA,AENA,AJYA,AMlBA,AHSA,AOrBA,ADGA,AENA,AENA,ALeA,AIZA,APqBA,A1B8EA,Ac1CA,AxBwEA,ADGA,AENA;AczCA,AIZA,ALeA,AZoCA,AuBrEA,AJYA,AMlBA,ACHA,ApB4DA,AIZA,AQxBA,AYpCA,AFMA,AGTA,AENA,AJYA,AMlBA,AHSA,AOrBA,ADGA,AENA,AENA,ACHA,ANkBA,AIZA,APqBA,A1B8EA,Ac1CA,AxBwEA,ADGA,AENA;AczCA,AIZA,ALeA,AZoCA,AuBrEA,AJYA,AMlBA,ACHA,AhBgDA,AQxBA,AYpCA,AFMA,AGTA,AENA,AJYA,AMlBA,AHSA,AOrBA,ADGA,AENA,AENA,ACHA,ANkBA,AIZA,APqBA,A1B8EA,Ac1CA,AxBwEA,ADGA,AENA;AczCA,AIZA,ALeA,AZoCA,AuBrEA,AJYA,AMlBA,ACHA,AhBgDA,AQxBA,AYpCA,AFMA,AGTA,AENA,AJYA,AMlBA,AHSA,AOrBA,ADGA,AENA,AENA,ACHA,ANkBA,AIZA,APqBA,A1B8EA,Ac1CA,AxBwEA,ADGA,AENA;AczCA,AIZA,ALeA,AZoCA,AuBrEA,AJYA,AMlBA,ACHA,AhBgDA,AQxBA,AYpCA,AFMA,AGTA,AENA,AJYA,AMlBA,AHSA,AOrBA,ADGA,AENA,AENA,ACHA,ANkBA,AIZA,AGTA,AV8BA,A1B8EA,Ac1CA,AxBwEA,ADGA,AENA;AczCA,AIZA,ALeA,AZoCA,AuBrEA,AJYA,AMlBA,ACHA,AhBgDA,AQxBA,AYpCA,AFMA,AGTA,AENA,AJYA,AMlBA,AHSA,AOrBA,ADGA,AENA,AENA,ACHA,ANkBA,AIZA,AGTA,AV8BA,A1B8EA,Ac1CA,AxBwEA,ACHA;AczCA,AIZA,ALeA,AZoCA,AuBrEA,AJYA,AMlBA,ACHA,AhBgDA,AQxBA,AYpCA,AFMA,AGTA,AENA,AJYA,AMlBA,AHSA,AOrBA,ADGA,AENA,AENA,ACHA,ANkBA,AIZA,AGTA,AV8BA,A1B8EA,Ac1CA,AxBwEA,ACHA;AczCA,AIZA,ALeA,AZoCA,AuBrEA,AJYA,AMlBA,ACHA,AhBgDA,AQxBA,AYpCA,AFMA,AGTA,AENA,AJYA,AMlBA,AHSA,AavCA,ANkBA,ADGA,AENA,AENA,ACHA,ANkBA,AIZA,AGTA,AV8BA,A1B8EA,Ac1CA,AxBwEA,ACHA;AczCA,AIZA,ALeA,AZoCA,AuBrEA,AJYA,AMlBA,ACHA,AhBgDA,AQxBA,AYpCA,AFMA,AGTA,AENA,AJYA,AMlBA,AHSA,AavCA,ANkBA,ADGA,AENA,AENA,ACHA,ANkBA,AIZA,AGTA,AV8BA,A1B8EA,Ac1CA,AxBwEA,ACHA;AczCA,AIZA,ALeA,AZoCA,AuBrEA,AJYA,AMlBA,ACHA,AhBgDA,AQxBA,AYpCA,AFMA,AGTA,AENA,AJYA,AMlBA,AHSA,AavCA,ANkBA,ADGA,AENA,AENA,ACHA,ANkBA,AIZA,AGTA,AV8BA,A1B8EA,Ac1CA,AxBwEA,ACHA;AczCA,AIZA,ALeA,AZoCA,AuBrEA,AJYA,AMlBA,ACHA,AhBgDA,AQxBA,AYpCA,AFMA,AGTA,AENA,AJYA,AMlBA,AHSA,AavCA,ANkBA,ADGA,AENA,AENA,ACHA,ANkBA,AS3BA,ALeA,AGTA,AV8BA,A1B8EA,Ac1CA,AxBwEA,ACHA;AczCA,AIZA,ALeA,AZoCA,AuBrEA,AJYA,AMlBA,ACHA,AhBgDA,AQxBA,AYpCA,AFMA,AGTA,AENA,AJYA,AMlBA,AHSA,AavCA,ANkBA,ADGA,AENA,AENA,ACHA,ANkBA,AS3BA,ALeA,AGTA,AV8BA,A1B8EA,Ac1CA,AxBwEA,ACHA;AczCA,AIZA,ALeA,AZoCA,AuBrEA,AJYA,AMlBA,ACHA,AhBgDA,AQxBA,AYpCA,AFMA,AGTA,AENA,AJYA,AMlBA,AHSA,AavCA,ANkBA,ADGA,AENA,AENA,ACHA,ANkBA,AS3BA,ALeA,AGTA,AV8BA,A1B8EA,Ac1CA,AxBwEA,ACHA;AczCA,AIZA,ALeA,AZoCA,AuBrEA,AJYA,AMlBA,ACHA,AhBgDA,AQxBA,AYpCA,AFMA,AGTA,AENA,AJYA,AMlBA,AHSA,AavCA,ANkBA,ADGA,AENA,AENA,ACHA,ANkBA,AS3BA,ACHA,ANkBA,AGTA,AV8BA,A1B8EA,Ac1CA,AxBwEA,ACHA;AczCA,AIZA,ALeA,AZoCA,AuBrEA,AJYA,AMlBA,ACHA,AhBgDA,AQxBA,AYpCA,AFMA,AGTA,AENA,AJYA,AMlBA,AHSA,AavCA,ANkBA,ADGA,AENA,AENA,ACHA,ANkBA,AS3BA,ACHA,ANkBA,AGTA,AV8BA,A1B8EA,Ac1CA,AxBwEA,ACHA;AczCA,AIZA,ALeA,AZoCA,AuBrEA,AJYA,AMlBA,Af6CA,AQxBA,AYpCA,AFMA,AGTA,AENA,AJYA,AMlBA,AHSA,AavCA,ANkBA,ADGA,AENA,AENA,ACHA,ANkBA,AS3BA,ACHA,ANkBA,AGTA,AV8BA,A1B8EA,Ac1CA,AxBwEA,ACHA;AczCA,AIZA,ALeA,AZoCA,AuBrEA,AJYA,AMlBA,Af6CA,AQxBA,AYpCA,AFMA,AGTA,AENA,AJYA,AMlBA,AHSA,AavCA,ANkBA,ADGA,AENA,AENA,ACHA,ANkBA,AS3BA,ACHA,ANkBA,AOrBA,AJYA,AV8BA,A1B8EA,Ac1CA,AxBwEA,ACHA;AczCA,AIZA,ALeA,AZoCA,AuBrEA,AJYA,AMlBA,Af6CA,AQxBA,AYpCA,AFMA,AGTA,AENA,AJYA,AMlBA,AHSA,AavCA,ANkBA,ADGA,AENA,AENA,ACHA,ANkBA,AS3BA,ACHA,ANkBA,AOrBA,AJYA,AV8BA,A1B8EA,Ac1CA,AxBwEA,ACHA;AczCA,AIZA,ALeA,AZoCA,AuBrEA,AJYA,AMlBA,Af6CA,AQxBA,AYpCA,AFMA,AGTA,AENA,AJYA,AMlBA,AHSA,AavCA,ANkBA,ADGA,AENA,AENA,ACHA,ANkBA,AS3BA,ACHA,ANkBA,AOrBA,AJYA,AV8BA,A1B8EA,Ac1CA,AxBwEA,ACHA;AczCA,AIZA,ALeA,AZoCA,AuBrEA,AJYA,AMlBA,Af6CA,AQxBA,AYpCA,AFMA,AGTA,AENA,AJYA,AMlBA,AHSA,AavCA,ANkBA,AU9BA,AXiCA,AENA,AENA,ACHA,ANkBA,AS3BA,ACHA,ANkBA,AOrBA,AJYA,AV8BA,A1B8EA,Ac1CA,AxBwEA,ACHA;AczCA,AIZA,ALeA,AZoCA,AuBrEA,AJYA,AMlBA,Af6CA,AQxBA,AYpCA,AFMA,AGTA,AENA,AJYA,AMlBA,AHSA,AavCA,ANkBA,AU9BA,AXiCA,AENA,AENA,ACHA,ANkBA,AS3BA,ACHA,ANkBA,AOrBA,AJYA,AV8BA,A1B8EA,Ac1CA,AxBwEA,ACHA;AczCA,AIZA,ALeA,AZoCA,AuBrEA,AJYA,AMlBA,Af6CA,AQxBA,AYpCA,AFMA,AGTA,AENA,AJYA,AMlBA,AHSA,AavCA,ANkBA,AU9BA,AXiCA,AENA,AENA,ACHA,ANkBA,AS3BA,ACHA,ANkBA,AOrBA,AJYA,AV8BA,A1B8EA,Ac1CA,AxBwEA,ACHA;AczCA,AIZA,ALeA,AZoCA,AuBrEA,AJYA,AMlBA,Af6CA,AQxBA,AYpCA,AFMA,AGTA,AENA,AJYA,AMlBA,AHSA,AavCA,ANkBA,AU9BA,AXiCA,AENA,AENA,ACHA,ANkBA,AS3BA,ACHA,ANkBA,AOrBA,AJYA,AV8BA,A1B8EA,Ac1CA,AxBwEA,ACHA,AmDzJA;ArCgHA,AIZA,AjBmDA,AuBrEA,AJYA,AMlBA,Af6CA,AQxBA,AYpCA,AFMA,AGTA,AENA,AJYA,AMlBA,AHSA,AavCA,ANkBA,AU9BA,AXiCA,AENA,AENA,ACHA,ANkBA,AS3BA,ACHA,ANkBA,AOrBA,AJYA,AV8BA,A1B8EA,Ac1CA,AxBwEA,ACHA,AmDzJA;ArCgHA,AIZA,AjBmDA,AuBrEA,AJYA,AMlBA,Af6CA,AQxBA,AYpCA,AFMA,AGTA,AENA,AJYA,AMlBA,AHSA,AavCA,ANkBA,AU9BA,AXiCA,AENA,AENA,ACHA,ANkBA,AS3BA,ACHA,ANkBA,AOrBA,AJYA,AV8BA,A1B8EA,Ac1CA,AxBwEA,ACHA,AmDzJA;ArCgHA,AIZA,AjBmDA,AuBrEA,AJYA,AMlBA,Af6CA,AyC3HA,AjCmGA,AYpCA,AFMA,AGTA,AENA,AJYA,AMlBA,AHSA,AavCA,ANkBA,AU9BA,AXiCA,AENA,AENA,ACHA,ANkBA,AS3BA,ACHA,ANkBA,AOrBA,AJYA,AV8BA,A1B8EA,Ac1CA,AvBqEA,AmDzJA;ArCgHA,AIZA,AjBmDA,AuBrEA,AJYA,AMlBA,Af6CA,AyC3HA,AjCmGA,AYpCA,AFMA,AGTA,AENA,AJYA,AMlBA,AHSA,AavCA,ANkBA,AU9BA,AXiCA,AENA,AENA,ACHA,ANkBA,AS3BA,ACHA,ANkBA,AOrBA,AJYA,AV8BA,A1B8EA,Ac1CA,AvBqEA,AmDzJA;ArCgHA,AIZA,AjBmDA,AuBrEA,AJYA,AMlBA,Af6CA,AyC3HA,AjCmGA,AYpCA,AFMA,AGTA,AENA,AJYA,AMlBA,AHSA,AavCA,ANkBA,AU9BA,AXiCA,AENA,AENA,ACHA,ANkBA,AS3BA,ACHA,ANkBA,AOrBA,AJYA,AV8BA,A1B8EA,Ac1CA,AvBqEA,AmDzJA;ArCgHA,AIZA,AjBmDA,AuBrEA,AJYA,AMlBA,Af6CA,AyC3HA,ACHA,AlCsGA,AYpCA,AFMA,AGTA,AENA,AJYA,AMlBA,AHSA,AavCA,ANkBA,AU9BA,AXiCA,AENA,AENA,ACHA,ANkBA,AS3BA,ACHA,ANkBA,AOrBA,AJYA,AV8BA,A1B8EA,Ac1CA,AvBqEA,AmDzJA;ArCgHA,AIZA,AjBmDA,AuBrEA,AJYA,AMlBA,Af6CA,AyC3HA,ACHA,AlCsGA,AYpCA,AFMA,AGTA,AENA,AJYA,AMlBA,AHSA,AavCA,ANkBA,AU9BA,AXiCA,AENA,AENA,ACHA,ANkBA,AS3BA,ACHA,ANkBA,AOrBA,AJYA,AV8BA,A1B8EA,Ac1CA,AvBqEA,AmDzJA;ArCgHA,AIZA,AjBmDA,AuBrEA,AJYA,AMlBA,Af6CA,AyC3HA,ACHA,AlCsGA,AYpCA,AFMA,AGTA,AENA,AJYA,AMlBA,AHSA,AavCA,ANkBA,AU9BA,AXiCA,AENA,AENA,ACHA,ANkBA,AS3BA,ACHA,ANkBA,AOrBA,AJYA,AV8BA,A1B8EA,Ac1CA,AvBqEA,AmDzJA;ArCgHA,AIZA,AjBmDA,AuBrEA,AJYA,AMlBA,Af6CA,AyC3HA,ACHA,ACHA,AnCyGA,AYpCA,AFMA,AGTA,AENA,AJYA,AMlBA,AHSA,AavCA,ANkBA,AU9BA,AXiCA,AENA,AENA,ACHA,ANkBA,AS3BA,ACHA,ANkBA,AOrBA,AJYA,AV8BA,A1B8EA,Ac1CA,AvBqEA,AmDzJA;ArCgHA,AIZA,AjBmDA,AuBrEA,AJYA,AMlBA,Af6CA,AyC3HA,ACHA,ACHA,AnCyGA,AYpCA,AFMA,AGTA,AENA,AJYA,AMlBA,AHSA,AavCA,ANkBA,AU9BA,AXiCA,AENA,AENA,ACHA,ANkBA,AS3BA,ACHA,ANkBA,AOrBA,AJYA,AV8BA,A1B8EA,Ac1CA,AvBqEA,AmDzJA;ArCgHA,AIZA,AjBmDA,AuBrEA,AJYA,AMlBA,Af6CA,AyC3HA,ACHA,ACHA,AnCyGA,AYpCA,AFMA,AGTA,AENA,AJYA,AMlBA,AHSA,AavCA,ANkBA,AU9BA,AXiCA,AENA,AENA,ACHA,ANkBA,AS3BA,ACHA,ANkBA,AOrBA,AJYA,AV8BA,A1B8EA,Ac1CA,AvBqEA,AmDzJA;ArCgHA,AIZA,AjBmDA,AuBrEA,AJYA,AMlBA,Af6CA,AyC3HA,ACHA,ACHA,AnCyGA,AoC5GA,AxBwEA,AFMA,AGTA,AENA,AJYA,AMlBA,AHSA,AavCA,ANkBA,AU9BA,AXiCA,AENA,AENA,ACHA,ANkBA,AS3BA,ACHA,ANkBA,AGTA,AV8BA,A1B8EA,Ac1CA,AvBqEA,AmDzJA;ArCgHA,AIZA,AjBmDA,AuBrEA,AJYA,AMlBA,Af6CA,AyC3HA,ACHA,ACHA,AnCyGA,AoC5GA,AxBwEA,AFMA,AGTA,AENA,AJYA,AMlBA,AHSA,AavCA,ANkBA,AU9BA,AXiCA,AENA,AENA,ACHA,ANkBA,AS3BA,ACHA,ANkBA,AGTA,AV8BA,A1B8EA,Ac1CA,AvBqEA,AmDzJA;ArCgHA,AIZA,AjBmDA,AuBrEA,AJYA,AMlBA,Af6CA,AyC3HA,ACHA,ACHA,AnCyGA,AoC5GA,AxBwEA,AFMA,AGTA,AENA,AJYA,AMlBA,AHSA,AavCA,ANkBA,AU9BA,AXiCA,AENA,AENA,ACHA,ANkBA,AS3BA,ACHA,ANkBA,AGTA,AV8BA,A1B8EA,Ac1CA,AvBqEA,AmDzJA;ArCgHA,AIZA,AjBmDA,AuBrEA,AJYA,AMlBA,Af6CA,AyC3HA,AIZA,AHSA,ACHA,AnCyGA,AoC5GA,AxBwEA,AFMA,AGTA,AENA,AJYA,AMlBA,AHSA,AavCA,ANkBA,AU9BA,AXiCA,AENA,AENA,ACHA,ANkBA,AS3BA,ACHA,ANkBA,AGTA,AV8BA,A1B8EA,Ac1CA,AvBqEA,AmDzJA;ArCgHA,AIZA,AjBmDA,AuBrEA,AJYA,AMlBA,Af6CA,AyC3HA,AIZA,AHSA,ACHA,AnCyGA,AoC5GA,AxBwEA,AFMA,AGTA,AENA,AJYA,AMlBA,AHSA,AavCA,ANkBA,AU9BA,AXiCA,AENA,AENA,ACHA,ANkBA,AS3BA,ACHA,ANkBA,AGTA,AV8BA,A1B8EA,Ac1CA,AvBqEA,AmDzJA;ArCgHA,AbuCA,AuBrEA,AJYA,AMlBA,Af6CA,AyC3HA,AIZA,AHSA,ACHA,AnCyGA,AoC5GA,AxBwEA,AFMA,AGTA,AENA,AJYA,AMlBA,AHSA,AavCA,ANkBA,AU9BA,AXiCA,AENA,AENA,ACHA,ANkBA,AS3BA,ACHA,ANkBA,AGTA,AV8BA,A1B8EA,Ac1CA,AvBqEA,AmDzJA;ArCgHA,AbuCA,AuBrEA,AJYA,AMlBA,Af6CA,AyC3HA,AIZA,AHSA,AIZA,AHSA,AnCyGA,AoC5GA,AxBwEA,AFMA,AGTA,AENA,AJYA,AMlBA,AHSA,AavCA,ANkBA,AU9BA,AXiCA,AENA,AENA,ACHA,ANkBA,AS3BA,ACHA,ANkBA,AGTA,AV8BA,A1B8EA,Ac1CA,AvBqEA,AmDzJA;ArCgHA,AbuCA,AuBrEA,AJYA,AMlBA,Af6CA,AyC3HA,AIZA,AHSA,AIZA,AHSA,AnCyGA,AoC5GA,AxBwEA,AFMA,AGTA,AENA,AJYA,AMlBA,AHSA,AavCA,ANkBA,AU9BA,AXiCA,AENA,AENA,ACHA,ANkBA,AS3BA,ACHA,ANkBA,AGTA,AV8BA,A1B8EA,Ac1CA,AvBqEA,AmDzJA;ArCgHA,AbuCA,AuBrEA,AJYA,AMlBA,Af6CA,AyC3HA,AIZA,AHSA,AIZA,AHSA,AnCyGA,AoC5GA,AxBwEA,AFMA,AGTA,AENA,AJYA,AMlBA,AHSA,AavCA,ANkBA,AU9BA,AXiCA,AENA,AENA,ACHA,ANkBA,AS3BA,ACHA,ANkBA,AGTA,AV8BA,A1B8EA,Ac1CA,AvBqEA,AmDzJA;ArCgHA,AbuCA,AuBrEA,AJYA,AMlBA,Af6CA,AyC3HA,AMlBA,AFMA,AHSA,AIZA,AHSA,AnCyGA,AoC5GA,AxBwEA,AFMA,AGTA,AENA,AJYA,AMlBA,AHSA,AavCA,ANkBA,AU9BA,AXiCA,AENA,AENA,ACHA,ANkBA,AS3BA,ACHA,ANkBA,AGTA,AV8BA,A1B8EA,Ac1CA,AvBqEA,AmDzJA;ArCgHA,AbuCA,AuBrEA,AJYA,AMlBA,Af6CA,AyC3HA,AMlBA,AFMA,AHSA,AIZA,AHSA,AnCyGA,AoC5GA,AxBwEA,AFMA,AGTA,AENA,AJYA,AMlBA,AHSA,AavCA,ANkBA,AU9BA,AXiCA,AENA,AENA,ACHA,ANkBA,AS3BA,ACHA,ANkBA,AGTA,AV8BA,A1B8EA,Ac1CA,AvBqEA,AmDzJA;ArCgHA,AbuCA,AuBrEA,AJYA,AMlBA,Af6CA,AyC3HA,AMlBA,AFMA,AHSA,AIZA,AHSA,AnCyGA,AoC5GA,AxBwEA,AFMA,AGTA,AENA,AJYA,AMlBA,AHSA,AavCA,ANkBA,AU9BA,AXiCA,AENA,AENA,ACHA,ANkBA,AS3BA,ACHA,ANkBA,AGTA,AV8BA,A1B8EA,Ac1CA,AvBqEA,AmDzJA;ArCgHA,AbuCA,AuBrEA,AJYA,AMlBA,AiCnGA,AhDgJA,AyC3HA,AMlBA,AFMA,AHSA,AIZA,AHSA,AnCyGA,AoC5GA,AxBwEA,AFMA,AGTA,AENA,AJYA,AMlBA,AHSA,AavCA,ANkBA,AU9BA,AXiCA,AENA,AENA,ACHA,ANkBA,AS3BA,ACHA,ANkBA,AGTA,AV8BA,A1B8EA,Ac1CA,AvBqEA,AmDzJA;ArCgHA,AbuCA,AuBrEA,AJYA,AMlBA,AiCnGA,AhDgJA,AyC3HA,AMlBA,AFMA,AHSA,AIZA,AHSA,AnCyGA,AoC5GA,AxBwEA,AFMA,AGTA,AENA,AJYA,AMlBA,AHSA,AavCA,ANkBA,AU9BA,AXiCA,AENA,AENA,ACHA,ANkBA,AS3BA,ACHA,ANkBA,AGTA,AV8BA,A1B8EA,Ac1CA,AvBqEA,AmDzJA;ArCgHA,AbuCA,AuBrEA,AJYA,AMlBA,AiCnGA,AhDgJA,AyC3HA,AMlBA,AFMA,AHSA,AIZA,AHSA,AnCyGA,AoC5GA,AxBwEA,AFMA,AGTA,AENA,AJYA,AMlBA,AHSA,AavCA,ANkBA,AU9BA,AXiCA,AENA,AENA,ACHA,ANkBA,AS3BA,ACHA,ANkBA,AGTA,AV8BA,A1B8EA,Ac1CA,AvBqEA,AmDzJA;ArCgHA,AbuCA,AuBrEA,AJYA,AMlBA,AiCnGA,AhDgJA,AyC3HA,AMlBA,AFMA,AHSA,AOrBA,AHSA,AHSA,AnCyGA,AoC5GA,AxBwEA,AFMA,AGTA,AENA,AJYA,AMlBA,AHSA,AavCA,ANkBA,AU9BA,AXiCA,AENA,AENA,ACHA,ANkBA,AS3BA,ACHA,ANkBA,AGTA,AV8BA,A1B8EA,Ac1CA,AvBqEA,AmDzJA;ArCgHA,AbuCA,AuBrEA,AJYA,AMlBA,AiCnGA,AhDgJA,A+C7IA,AFMA,AHSA,AOrBA,AHSA,AHSA,AnCyGA,AoC5GA,AxBwEA,AFMA,AGTA,AENA,AJYA,AMlBA,AHSA,AavCA,ANkBA,AU9BA,AXiCA,AENA,AENA,ACHA,ANkBA,AS3BA,ACHA,ANkBA,AGTA,AV8BA,A1B8EA,Ac1CA,AvBqEA,AmDzJA;ArCgHA,AbuCA,AuBrEA,AJYA,AMlBA,AiCnGA,AhDgJA,A+C7IA,AFMA,AHSA,AOrBA,AHSA,AHSA,AnCyGA,AoC5GA,AxBwEA,AFMA,AGTA,AENA,AJYA,AMlBA,AHSA,AavCA,ANkBA,AU9BA,AXiCA,AENA,AENA,ACHA,ANkBA,AS3BA,ACHA,ANkBA,AGTA,AV8BA,A1B8EA,Ac1CA,AvBqEA,AmDzJA;ArCgHA,AbuCA,AuBrEA,AJYA,AMlBA,AiCnGA,AhDgJA,AkDtJA,AHSA,AFMA,AHSA,AOrBA,AHSA,AHSA,AnCyGA,AoC5GA,AxBwEA,AFMA,AGTA,AENA,AJYA,AMlBA,AHSA,AavCA,ANkBA,AU9BA,AXiCA,AENA,AENA,ACHA,ANkBA,AS3BA,ACHA,ANkBA,AGTA,AV8BA,A1B8EA,Ac1CA,AvBqEA,AmDzJA;ArCgHA,AbuCA,AuBrEA,AJYA,AMlBA,AiCnGA,AhDgJA,AkDtJA,AHSA,AFMA,AHSA,AOrBA,AHSA,AHSA,AnCyGA,AoC5GA,AxBwEA,AFMA,AGTA,AENA,AJYA,AMlBA,AHSA,AavCA,ANkBA,AU9BA,AXiCA,AENA,AENA,ACHA,ANkBA,AS3BA,ACHA,ANkBA,AGTA,AV8BA,A1B8EA,Ac1CA,AvBqEA,AmDzJA;ArCgHA,AbuCA,AuBrEA,AJYA,AMlBA,AiCnGA,AhDgJA,AkDtJA,AHSA,AFMA,AHSA,AOrBA,AHSA,AHSA,AnCyGA,AoC5GA,AxBwEA,AFMA,AGTA,AENA,AJYA,AMlBA,AHSA,AavCA,ANkBA,AU9BA,AXiCA,AENA,AENA,ACHA,ANkBA,AS3BA,ACHA,ANkBA,AGTA,AV8BA,A1B8EA,Ac1CA,AvBqEA,AmDzJA;ArCgHA,AbuCA,AuBrEA,AJYA,AMlBA,AiCnGA,AhDgJA,AkDtJA,AHSA,AIZA,ANkBA,AHSA,AOrBA,AHSA,AHSA,AnCyGA,AoC5GA,AxBwEA,AFMA,AGTA,AENA,AJYA,AMlBA,AHSA,AavCA,AIZA,AXiCA,AENA,AENA,ACHA,ANkBA,AS3BA,ACHA,ANkBA,AGTA,AV8BA,A1B8EA,Ac1CA,AvBqEA,AmDzJA;ArCgHA,AbuCA,AuBrEA,AJYA,AMlBA,AiCnGA,AhDgJA,AkDtJA,AHSA,AIZA,ANkBA,AHSA,AOrBA,AHSA,AHSA,ACHA,AxBwEA,AFMA,AGTA,AENA,AJYA,AMlBA,AHSA,AavCA,AIZA,AXiCA,AENA,AENA,ACHA,ANkBA,AS3BA,ACHA,ANkBA,AGTA,AV8BA,A1B8EA,Ac1CA,AvBqEA,AmDzJA;ArCgHA,AbuCA,AuBrEA,AJYA,AMlBA,AiCnGA,AhDgJA,AkDtJA,AHSA,AIZA,ANkBA,AHSA,AOrBA,AHSA,AHSA,ACHA,AxBwEA,AFMA,AGTA,AENA,AJYA,AMlBA,AHSA,AavCA,AIZA,AXiCA,AENA,AENA,ACHA,ANkBA,AS3BA,ACHA,ANkBA,AGTA,AV8BA,A1B8EA,Ac1CA,AvBqEA,AmDzJA;ArCgHA,AbuCA,AuBrEA,AJYA,AMlBA,AiCnGA,AhDgJA,AkDtJA,AHSA,AIZA,ANkBA,AHSA,AOrBA,AGTA,ANkBA,AHSA,ACHA,AxBwEA,AFMA,AGTA,AENA,AJYA,AMlBA,AHSA,AavCA,AIZA,AXiCA,AIZA,ACHA,ANkBA,AS3BA,ACHA,ANkBA,AGTA,AV8BA,A1B8EA,Ac1CA,AvBqEA,AmDzJA;ArCgHA,AbuCA,AuBrEA,AJYA,AMlBA,AiCnGA,AhDgJA,AkDtJA,AHSA,AIZA,ANkBA,AHSA,AOrBA,AGTA,ANkBA,AHSA,ACHA,AxBwEA,AFMA,AGTA,AENA,AJYA,AMlBA,AHSA,AavCA,AIZA,AXiCA,AIZA,ACHA,ANkBA,AS3BA,ACHA,ANkBA,AGTA,AV8BA,A1B8EA,Ac1CA,AvBqEA,AmDzJA;ArCgHA,AbuCA,AuBrEA,AJYA,AMlBA,AiCnGA,AhDgJA,AkDtJA,AHSA,AIZA,ANkBA,AHSA,AOrBA,AGTA,ANkBA,AHSA,ACHA,AxBwEA,AFMA,AGTA,AENA,AJYA,AMlBA,AHSA,AavCA,AIZA,AXiCA,AIZA,ACHA,ANkBA,AS3BA,ACHA,ANkBA,AGTA,AV8BA,A1B8EA,Ac1CA,AvBqEA,AmDzJA;ArCgHA,AbuCA,AuBrEA,AJYA,AMlBA,AiCnGA,AhDgJA,AkDtJA,AHSA,AIZA,ANkBA,AHSA,AWjCA,AJYA,AGTA,ANkBA,AHSA,ACHA,AxBwEA,AFMA,AGTA,AENA,AJYA,AMlBA,AHSA,AavCA,AIZA,AXiCA,AIZA,ACHA,ANkBA,AS3BA,ACHA,ANkBA,AGTA,AV8BA,A1B8EA,Ac1CA,AvBqEA,AmDzJA;ArCgHA,AbuCA,AuBrEA,AJYA,AMlBA,AiCnGA,AhDgJA,AkDtJA,AHSA,AIZA,ANkBA,AHSA,AWjCA,AJYA,AGTA,ANkBA,AHSA,ACHA,AxBwEA,AFMA,AGTA,AENA,AJYA,AMlBA,AHSA,AavCA,AIZA,AXiCA,AIZA,ACHA,ANkBA,AS3BA,ACHA,ANkBA,AGTA,AV8BA,A1B8EA,Ac1CA,AvBqEA,AmDzJA;ArCgHA,AbuCA,AuBrEA,AJYA,AMlBA,AiCnGA,AhDgJA,AkDtJA,AHSA,AIZA,ANkBA,AHSA,AWjCA,AJYA,AGTA,ANkBA,AHSA,ACHA,AxBwEA,AFMA,AGTA,AENA,AJYA,AMlBA,AHSA,AavCA,AIZA,AXiCA,AIZA,ACHA,ANkBA,AS3BA,ACHA,ANkBA,AGTA,AV8BA,A1B8EA,Ac1CA,A4BpFA;ArCgHA,AbuCA,AuBrEA,AJYA,AMlBA,AiCnGA,AhDgJA,AkDtJA,AHSA,AIZA,ANkBA,AHSA,AWjCA,AJYA,AGTA,ANkBA,AHSA,AWjCA,AV8BA,AxBwEA,AFMA,AGTA,AENA,AJYA,AMlBA,AHSA,AavCA,APqBA,AIZA,ACHA,ANkBA,AS3BA,ACHA,ANkBA,AGTA,AV8BA,A1B8EA,Ac1CA,A4BpFA;ArCgHA,AbuCA,AuBrEA,AJYA,AMlBA,AiCnGA,AhDgJA,AkDtJA,AHSA,AIZA,ANkBA,AHSA,AWjCA,AJYA,AGTA,ANkBA,AHSA,AWjCA,AV8BA,AxBwEA,AFMA,AGTA,AENA,AJYA,AMlBA,AHSA,AavCA,APqBA,AIZA,ACHA,ANkBA,AS3BA,ACHA,ANkBA,AGTA,AV8BA,A1B8EA,Ac1CA,A4BpFA;ArCgHA,AbuCA,AuBrEA,AJYA,AMlBA,AiCnGA,AhDgJA,AkDtJA,AHSA,AIZA,ANkBA,AHSA,AWjCA,AJYA,AGTA,ANkBA,AHSA,AWjCA,AV8BA,A1B8EA,AGTA,AENA,AJYA,AMlBA,AHSA,AavCA,APqBA,AKfA,ANkBA,AS3BA,ACHA,ANkBA,AGTA,AV8BA,A1B8EA,Ac1CA,A4BpFA;ArCgHA,AbuCA,AuBrEA,AJYA,AMlBA,AiCnGA,AhDgJA,AkDtJA,AHSA,AIZA,ANkBA,AHSA,AWjCA,AENA,ANkBA,AGTA,ANkBA,AHSA,AWjCA,AV8BA,A1B8EA,AGTA,AENA,AJYA,AMlBA,AU9BA,APqBA,AKfA,ANkBA,AS3BA,ACHA,ANkBA,AGTA,AV8BA,A1B8EA,Ac1CA,A4BpFA;ArCgHA,AbuCA,AuBrEA,AJYA,AMlBA,AiCnGA,AhDgJA,AkDtJA,AHSA,AIZA,ANkBA,AHSA,AWjCA,AENA,ANkBA,AGTA,ANkBA,AHSA,AWjCA,AV8BA,A1B8EA,AGTA,AENA,AJYA,AMlBA,AU9BA,APqBA,AKfA,ANkBA,AS3BA,ACHA,ANkBA,AGTA,AV8BA,A1B8EA,Ac1CA,A4BpFA;ArCgHA,AbuCA,AuBrEA,AJYA,AMlBA,AiCnGA,AhDgJA,AkDtJA,AHSA,AIZA,ANkBA,AHSA,AWjCA,AENA,ANkBA,AGTA,ANkBA,AHSA,AWjCA,AV8BA,A1B8EA,AGTA,AENA,AJYA,AMlBA,AU9BA,APqBA,AKfA,ANkBA,AS3BA,ACHA,ANkBA,AGTA,AV8BA,A1B8EA,Ac1CA,A4BpFA;ArCgHA,AbuCA,AuBrEA,AJYA,AMlBA,AiCnGA,AhDgJA,AkDtJA,AHSA,AIZA,ANkBA,AHSA,AWjCA,AENA,ANkBA,AGTA,ANkBA,AHSA,AWjCA,AENA,AZoCA,A1B8EA,AGTA,AENA,AJYA,AMlBA,AU9BA,APqBA,AKfA,ANkBA,AS3BA,ACHA,ANkBA,AGTA,AV8BA,A1B8EA,Ac1CA,A4BpFA;ArCgHA,AbuCA,AuBrEA,AJYA,AMlBA,AiCnGA,AhDgJA,AkDtJA,AHSA,AIZA,ANkBA,AHSA,AWjCA,AENA,ANkBA,AGTA,ANkBA,AHSA,AWjCA,AENA,AZoCA,A1B8EA,AGTA,AENA,AJYA,AMlBA,AU9BA,APqBA,AKfA,ANkBA,AS3BA,ACHA,ANkBA,AGTA,AV8BA,A1B8EA,Ac1CA,A4BpFA;ArCgHA,AbuCA,AuBrEA,AJYA,AMlBA,AiCnGA,AhDgJA,AkDtJA,AHSA,AIZA,ANkBA,AHSA,AWjCA,AENA,ANkBA,AGTA,ANkBA,AHSA,AWjCA,AENA,AZoCA,A1B8EA,AGTA,AENA,AJYA,AMlBA,AU9BA,APqBA,AKfA,ANkBA,AS3BA,ACHA,ANkBA,AGTA,AV8BA,A1B8EA,Ac1CA,A4BpFA;ArCgHA,AbuCA,AuBrEA,AJYA,AMlBA,A0C9HA,AT2BA,AhDgJA,AkDtJA,AHSA,AIZA,ANkBA,AHSA,AWjCA,AENA,ANkBA,AGTA,ANkBA,AHSA,AWjCA,AENA,AZoCA,A1B8EA,AGTA,AENA,AJYA,AMlBA,AU9BA,APqBA,AKfA,ANkBA,AS3BA,ACHA,ANkBA,AGTA,AV8BA,A1B8EA,Ac1CA,A4BpFA;ArCgHA,AbuCA,AuBrEA,AJYA,AMlBA,A0C9HA,AT2BA,AhDgJA,AkDtJA,AHSA,AIZA,ANkBA,AHSA,AWjCA,AENA,ANkBA,AGTA,ANkBA,AHSA,AWjCA,AENA,AZoCA,A1B8EA,AGTA,AENA,AJYA,AMlBA,AU9BA,APqBA,AKfA,ANkBA,AS3BA,ACHA,ANkBA,AGTA,AV8BA,A1B8EA,Ac1CA,A4BpFA;ArCgHA,AbuCA,AuBrEA,AJYA,AMlBA,A0C9HA,AT2BA,AhDgJA,AkDtJA,AHSA,AIZA,ANkBA,AHSA,AWjCA,AENA,ANkBA,AGTA,ANkBA,AHSA,AWjCA,AENA,AZoCA,A1B8EA,AGTA,AENA,AJYA,AMlBA,AU9BA,APqBA,AKfA,ANkBA,AS3BA,ACHA,ANkBA,AGTA,AV8BA,A1B8EA,Ac1CA,A4BpFA;ArCgHA,AbuCA,AuBrEA,AJYA,AMlBA,A0C9HA,ACHA,AV8BA,AhDgJA,AkDtJA,AHSA,AIZA,ANkBA,AHSA,AWjCA,AENA,ANkBA,AGTA,ANkBA,AHSA,AWjCA,AENA,AZoCA,A1B8EA,AGTA,AENA,AJYA,AMlBA,AU9BA,APqBA,AKfA,ANkBA,AS3BA,ACHA,ANkBA,AGTA,AV8BA,A1B8EA,Ac1CA;AT4BA,AbuCA,AuBrEA,AJYA,AMlBA,A0C9HA,ACHA,AV8BA,AhDgJA,AkDtJA,AHSA,AIZA,ANkBA,AHSA,AWjCA,AENA,ANkBA,AGTA,ANkBA,AHSA,AWjCA,AENA,AZoCA,A1B8EA,AGTA,AENA,AJYA,AMlBA,AU9BA,APqBA,AKfA,ANkBA,AS3BA,ACHA,ANkBA,AGTA,AV8BA,A1B8EA,Ac1CA;AT4BA,AbuCA,AuBrEA,AJYA,AMlBA,A0C9HA,ACHA,AV8BA,AhDgJA,AkDtJA,AHSA,AIZA,ANkBA,AHSA,AWjCA,AENA,ANkBA,AGTA,ANkBA,AHSA,AWjCA,AENA,AZoCA,A1B8EA,AGTA,AENA,AJYA,AMlBA,AU9BA,APqBA,AKfA,ANkBA,AS3BA,ACHA,ANkBA,AGTA,AV8BA,A1B8EA,Ac1CA;AT4BA,AbuCA,AuBrEA,AJYA,AMlBA,A4CpIA,AFMA,ACHA,AV8BA,AhDgJA,AkDtJA,AHSA,AIZA,ANkBA,AHSA,AWjCA,AENA,ANkBA,AGTA,ANkBA,AHSA,AWjCA,AENA,AZoCA,A1B8EA,AGTA,AENA,AJYA,AMlBA,AU9BA,APqBA,AKfA,ANkBA,AS3BA,ACHA,ANkBA,AGTA,AV8BA,A1B8EA,Ac1CA;AT4BA,AbuCA,AuBrEA,AJYA,AMlBA,A4CpIA,AFMA,ACHA,AV8BA,AhDgJA,AkDtJA,AHSA,AIZA,ANkBA,AHSA,AWjCA,AENA,ANkBA,AGTA,ANkBA,AHSA,AWjCA,AENA,AZoCA,A1B8EA,AGTA,AENA,AJYA,AMlBA,AU9BA,APqBA,AKfA,ANkBA,AS3BA,ACHA,ANkBA,AGTA,AV8BA,A1B8EA,Ac1CA;AT4BA,AbuCA,AuBrEA,AJYA,AMlBA,A4CpIA,AFMA,ACHA,AV8BA,AhDgJA,AkDtJA,ACHA,ANkBA,AHSA,AWjCA,AENA,ANkBA,AGTA,ANkBA,AHSA,AWjCA,AENA,AZoCA,A1B8EA,AGTA,AENA,AJYA,AMlBA,AGTA,AKfA,ANkBA,AS3BA,ACHA,ANkBA,AGTA,AV8BA,A1B8EA,Ac1CA;AT4BA,AbuCA,AuBrEA,AJYA,AMlBA,A4CpIA,AFMA,ACHA,AENA,AZoCA,AhDgJA,AkDtJA,ACHA,ANkBA,AHSA,AWjCA,AENA,ANkBA,AGTA,ANkBA,AHSA,AWjCA,AENA,AZoCA,A1B8EA,AGTA,AENA,AJYA,AMlBA,AGTA,AKfA,ANkBA,AS3BA,ACHA,ANkBA,AGTA,AV8BA,A1B8EA,Ac1CA;AT4BA,AbuCA,AuBrEA,AJYA,AMlBA,A4CpIA,AFMA,ACHA,AENA,AZoCA,AhDgJA,AkDtJA,ACHA,ANkBA,AHSA,AWjCA,AENA,ANkBA,AGTA,ANkBA,AHSA,AWjCA,AENA,AZoCA,A1B8EA,AGTA,AENA,AJYA,AMlBA,AGTA,AKfA,ANkBA,AS3BA,ACHA,ANkBA,AGTA,AV8BA,A1B8EA,Ac1CA;AT4BA,AbuCA,AuBrEA,AJYA,AMlBA,A4CpIA,AFMA,ACHA,AENA,AZoCA,AhDgJA,AkDtJA,ACHA,ANkBA,AHSA,AWjCA,AENA,ANkBA,AGTA,ANkBA,AHSA,AWjCA,AENA,AZoCA,A1B8EA,AGTA,AENA,AJYA,AS3BA,AKfA,ANkBA,AS3BA,ACHA,ANkBA,AGTA,AV8BA,A1B8EA,Ac1CA;AT4BA,AbuCA,AuBrEA,AJYA,AMlBA,A8C1IA,AFMA,AFMA,ACHA,AENA,AZoCA,AhDgJA,AkDtJA,ACHA,ANkBA,AHSA,AWjCA,AENA,ANkBA,AGTA,ANkBA,AHSA,AWjCA,AENA,AZoCA,A1B8EA,AGTA,AENA,AJYA,AS3BA,AKfA,ANkBA,AS3BA,ACHA,ANkBA,AGTA,AV8BA,A1B8EA,Ac1CA;AT4BA,AbuCA,AuBrEA,AJYA,AMlBA,A8C1IA,AFMA,AFMA,ACHA,AENA,AZoCA,AhDgJA,AkDtJA,ACHA,ANkBA,AHSA,AWjCA,AENA,ANkBA,AGTA,ANkBA,AHSA,AWjCA,AENA,AZoCA,A1B8EA,AGTA,AENA,AJYA,AS3BA,AKfA,ANkBA,AS3BA,ACHA,ANkBA,AGTA,AV8BA,A1B8EA,Ac1CA;AT4BA,AbuCA,AuBrEA,AJYA,AMlBA,A8C1IA,AFMA,AFMA,AGTA,AZoCA,AhDgJA,AkDtJA,ACHA,ANkBA,AHSA,AWjCA,AENA,ANkBA,AGTA,ANkBA,AHSA,AWjCA,AENA,AZoCA,A1B8EA,AGTA,AENA,AJYA,AS3BA,AKfA,ANkBA,AS3BA,ACHA,ANkBA,AGTA,AV8BA,A1B8EA,Ac1CA;AT4BA,AbuCA,AuBrEA,AJYA,AMlBA,A+C7IA,ADGA,AFMA,AFMA,AGTA,AZoCA,AhDgJA,AkDtJA,ACHA,ANkBA,AHSA,AWjCA,AENA,ANkBA,AGTA,ANkBA,AHSA,AWjCA,AENA,AZoCA,A1B8EA,AGTA,AENA,AJYA,AS3BA,AKfA,ANkBA,AS3BA,ACHA,ANkBA,AGTA,AV8BA,A1B8EA,Ac1CA;AT4BA,AbuCA,AuBrEA,AJYA,AMlBA,A+C7IA,ADGA,AFMA,AFMA,AGTA,AZoCA,AhDgJA,AkDtJA,ACHA,ANkBA,AQxBA,AENA,ANkBA,AGTA,ANkBA,AHSA,AWjCA,AENA,AZoCA,A1B8EA,AGTA,AENA,AJYA,AS3BA,AKfA,ANkBA,AS3BA,ACHA,ANkBA,AGTA,AV8BA,A1B8EA,Ac1CA;AT4BA,AbuCA,AuBrEA,AJYA,AMlBA,A+C7IA,ADGA,ADGA,AZoCA,AhDgJA,AkDtJA,ACHA,ANkBA,AQxBA,AENA,ANkBA,AGTA,ANkBA,AHSA,AWjCA,AENA,AZoCA,A1B8EA,AGTA,AENA,AJYA,AS3BA,AKfA,ANkBA,AS3BA,ACHA,ANkBA,AGTA,AV8BA,A1B8EA,Ac1CA;AT4BA,AbuCA,AuBrEA,AJYA,AMlBA,A+C7IA,ACHA,AFMA,ADGA,AZoCA,AhDgJA,AkDtJA,ACHA,ANkBA,AQxBA,AENA,ANkBA,AGTA,ANkBA,AHSA,AWjCA,AENA,AtCkHA,AGTA,AENA,AJYA,AS3BA,AKfA,ANkBA,AS3BA,ACHA,ANkBA,AGTA,AV8BA,A1B8EA,Ac1CA;AT4BA,AbuCA,AuBrEA,AJYA,AMlBA,A+C7IA,ACHA,AFMA,ADGA,AZoCA,AhDgJA,AkDtJA,ACHA,ANkBA,AQxBA,AENA,ANkBA,AGTA,ANkBA,AHSA,AWjCA,AENA,AtCkHA,AGTA,AENA,AJYA,AS3BA,AKfA,AGTA,ACHA,ANkBA,AGTA,AV8BA,A1B8EA,Ac1CA;AT4BA,AbuCA,AuBrEA,AJYA,AMlBA,A+C7IA,ACHA,AFMA,AbuCA,AhDgJA,AkDtJA,ACHA,ANkBA,AQxBA,AENA,ANkBA,AGTA,ANkBA,AHSA,AWjCA,AENA,AtCkHA,AGTA,AENA,AJYA,AS3BA,AKfA,AGTA,ACHA,ANkBA,AGTA,AV8BA,A1B8EA,Ac1CA;AT4BA,AbuCA,AuBrEA,AJYA,AMlBA,A+C7IA,ACHA,ACHA,AHSA,AbuCA,AhDgJA,AkDtJA,ACHA,ANkBA,AQxBA,AENA,ANkBA,AGTA,ANkBA,AHSA,AWjCA,AENA,AtCkHA,AGTA,AENA,AJYA,AS3BA,AKfA,AGTA,ACHA,ANkBA,AGTA,AV8BA,A1B8EA,Ac1CA;AT4BA,AbuCA,AuBrEA,AJYA,AMlBA,A+C7IA,ACHA,ACHA,AHSA,AbuCA,AhDgJA,AkDtJA,ACHA,ANkBA,AQxBA,AENA,ANkBA,AGTA,ANkBA,AHSA,AWjCA,AENA,AtCkHA,AGTA,AENA,AJYA,AS3BA,AKfA,AGTA,ACHA,ANkBA,AGTA,AV8BA,A1B8EA,Ac1CA;AT4BA,AbuCA,AuBrEA,AJYA,AMlBA,A+C7IA,ACHA,ACHA,AHSA,AbuCA,AhDgJA,AkDtJA,ACHA,ANkBA,AQxBA,AENA,ANkBA,AGTA,ANkBA,AHSA,AWjCA,AENA,AtCkHA,AGTA,AENA,AJYA,AS3BA,AKfA,AGTA,ACHA,ANkBA,AGTA,AV8BA,A1B8EA,Ac1CA;AT4BA,AbuCA,AuBrEA,AJYA,AMlBA,A+C7IA,ACHA,ACHA,ACHA,AJYA,AbuCA,AhDgJA,AkDtJA,ACHA,ANkBA,AQxBA,AENA,ANkBA,AGTA,ANkBA,AHSA,AWjCA,AENA,AtCkHA,AGTA,AENA,AJYA,AS3BA,AKfA,AGTA,ACHA,ANkBA,AGTA,AV8BA,A1B8EA,Ac1CA;AT4BA,AbuCA,AuBrEA,AJYA,AMlBA,A+C7IA,ACHA,ACHA,ACHA,AJYA,AbuCA,AhDgJA,AkDtJA,ACHA,ANkBA,AQxBA,AENA,ANkBA,AGTA,ANkBA,AHSA,AWjCA,AENA,AtCkHA,AGTA,AENA,AJYA,AS3BA,AKfA,AGTA,ACHA,ANkBA,AGTA,AV8BA,A1B8EA,Ac1CA;AT4BA,AbuCA,AuBrEA,AJYA,AMlBA,A+C7IA,ACHA,ACHA,ACHA,AJYA,AbuCA,AhDgJA,AkDtJA,ACHA,AENA,AENA,ANkBA,AGTA,ANkBA,AHSA,AWjCA,AENA,AtCkHA,AGTA,AENA,AJYA,AS3BA,AKfA,AGTA,ACHA,ANkBA,AGTA,AV8BA,A1B8EA,Ac1CA;AT4BA,AbuCA,AuBrEA,AJYA,AMlBA,A+C7IA,ACHA,ACHA,ACHA,ACHA,ALeA,AbuCA,AhDgJA,AkDtJA,ACHA,AENA,AENA,ANkBA,AGTA,ANkBA,AHSA,AWjCA,AENA,AtCkHA,AGTA,AENA,AJYA,AS3BA,AKfA,AGTA,ACHA,ANkBA,AGTA,AV8BA,A1B8EA,Ac1CA;AT4BA,AbuCA,AuBrEA,AJYA,AMlBA,A+C7IA,ACHA,ACHA,ACHA,ACHA,ALeA,AbuCA,AhDgJA,AkDtJA,ACHA,AENA,AENA,ANkBA,AGTA,ANkBA,AHSA,AWjCA,AENA,AtCkHA,AGTA,AENA,AJYA,Ac1CA,AGTA,ACHA,ANkBA,AGTA,AV8BA,A1B8EA,Ac1CA;AT4BA,AbuCA,AuBrEA,AJYA,AMlBA,A+C7IA,ACHA,ACHA,ACHA,ACHA,ALeA,AbuCA,AhDgJA,AkDtJA,ACHA,AENA,AENA,ANkBA,AGTA,ANkBA,AHSA,AWjCA,AENA,AtCkHA,AGTA,AENA,AJYA,Ac1CA,AGTA,ACHA,ANkBA,AGTA,AV8BA,A1B8EA,Ac1CA;AT4BA,AbuCA,AuBrEA,AJYA,AMlBA,A+C7IA,ACHA,ACHA,ACHA,ACHA,ACHA,ANkBA,AbuCA,AhDgJA,AkDtJA,ACHA,AENA,AENA,ANkBA,AGTA,ANkBA,AHSA,AWjCA,AENA,AtCkHA,AGTA,AENA,AJYA,Ac1CA,AGTA,ACHA,ANkBA,AGTA,AV8BA,A1B8EA,Ac1CA;AT4BA,AbuCA,AuBrEA,AJYA,AMlBA,A+C7IA,ACHA,ACHA,ACHA,ACHA,ACHA,ANkBA,AbuCA,AhDgJA,AkDtJA,ACHA,AENA,AENA,ANkBA,AGTA,ANkBA,AHSA,AWjCA,AENA,AtCkHA,AGTA,AENA,AJYA,Ac1CA,AGTA,ACHA,ANkBA,AGTA,AV8BA,A1B8EA,Ac1CA;AT4BA,AbuCA,AuBrEA,AJYA,AMlBA,A+C7IA,ACHA,ACHA,ACHA,ACHA,ACHA,ANkBA,AbuCA,AhDgJA,AkDtJA,ACHA,AENA,AENA,ANkBA,AGTA,ANkBA,AHSA,AWjCA,AENA,AtCkHA,AGTA,AENA,AJYA,Ac1CA,AIZA,ANkBA,AGTA,AV8BA,A1B8EA,Ac1CA;AT4BA,AbuCA,AuBrEA,AJYA,AMlBA,A+C7IA,ACHA,ACHA,ACHA,ACHA,ACHA,ACHA,APqBA,AbuCA,AhDgJA,AkDtJA,ACHA,AENA,AENA,ANkBA,AGTA,ANkBA,AHSA,AWjCA,AENA,AtCkHA,AGTA,AENA,AJYA,Ac1CA,AIZA,ANkBA,AGTA,AV8BA,A1B8EA,Ac1CA;AT4BA,AbuCA,AuBrEA,AJYA,AMlBA,A+C7IA,ACHA,ACHA,ACHA,ACHA,ACHA,ACHA,APqBA,AbuCA,AhDgJA,AkDtJA,ACHA,AENA,AENA,ANkBA,AGTA,ANkBA,AHSA,AWjCA,AENA,AtCkHA,AKfA,AJYA,Ac1CA,AIZA,ANkBA,AGTA,AV8BA,A1B8EA,Ac1CA;AT4BA,AbuCA,AuBrEA,AJYA,AMlBA,A+C7IA,ACHA,ACHA,ACHA,ACHA,ACHA,ACHA,APqBA,AbuCA,AhDgJA,AkDtJA,ACHA,AENA,AENA,ANkBA,AGTA,ANkBA,AHSA,AWjCA,AENA,AtCkHA,AKfA,AJYA,Ac1CA,AIZA,ANkBA,AGTA,AV8BA,A1B8EA,Ac1CA;AT4BA,AbuCA,AuBrEA,AJYA,AMlBA,A+C7IA,ACHA,ACHA,ACHA,ACHA,ACHA,AENA,ADGA,APqBA,AbuCA,AhDgJA,AkDtJA,ACHA,AENA,AENA,ANkBA,AGTA,ANkBA,AHSA,AavCA,AtCkHA,AKfA,AJYA,Ac1CA,AIZA,ANkBA,AGTA,AV8BA,A1B8EA,Ac1CA;AT4BA,AbuCA,AuBrEA,AJYA,AMlBA,A+C7IA,ACHA,ACHA,ACHA,ACHA,ACHA,AENA,ADGA,APqBA,AbuCA,AhDgJA,AkDtJA,ACHA,AENA,AENA,ANkBA,AGTA,ANkBA,AHSA,AavCA,AtCkHA,AKfA,AJYA,Ac1CA,AIZA,ANkBA,AGTA,ApC4GA,Ac1CA;AT4BA,AbuCA,AuBrEA,AJYA,AMlBA,A+C7IA,ACHA,ACHA,ACHA,ACHA,ACHA,AENA,ADGA,APqBA,A7DuLA,AkDtJA,ACHA,AENA,AENA,ANkBA,AGTA,ANkBA,AHSA,AavCA,AtCkHA,AKfA,AJYA,Ac1CA,AIZA,ANkBA,AGTA,ApC4GA,Ac1CA;AT4BA,AbuCA,AuBrEA,AJYA,AMlBA,A+C7IA,ACHA,ACHA,ACHA,ACHA,AIZA,AHSA,AENA,ADGA,APqBA,A7DuLA,AkDtJA,ACHA,AENA,AENA,ANkBA,AGTA,ANkBA,AHSA,AavCA,AtCkHA,AKfA,AJYA,Ac1CA,AIZA,ANkBA,AGTA,ApC4GA,Ac1CA;AT4BA,AbuCA,AuBrEA,AJYA,AMlBA,A+C7IA,ACHA,ACHA,ACHA,ACHA,AIZA,AHSA,AENA,ADGA,APqBA,A7DuLA,AkDtJA,ACHA,AENA,AENA,ANkBA,AGTA,ANkBA,AHSA,AavCA,AtCkHA,AKfA,AJYA,Ac1CA,AIZA,ANkBA,AGTA,ApC4GA,Ac1CA;AT4BA,AbuCA,AuBrEA,AJYA,AMlBA,A+C7IA,ACHA,ACHA,ACHA,ACHA,AIZA,AHSA,AENA,ADGA,APqBA,A7DuLA,AkDtJA,ACHA,AENA,AENA,ANkBA,AGTA,ANkBA,AHSA,AavCA,AtCkHA,AKfA,AJYA,Ac1CA,AIZA,ANkBA,AGTA,ApC4GA,Ac1CA;AT4BA,AbuCA,AuBrEA,AJYA,AMlBA,A+C7IA,ACHA,ACHA,ACHA,ACHA,AIZA,AHSA,AENA,ADGA,AGTA,AV8BA,A7DuLA,AkDtJA,ACHA,AENA,AENA,ANkBA,AGTA,ANkBA,AU9BA,AtCkHA,AKfA,AJYA,Ac1CA,AIZA,ANkBA,AGTA,ApC4GA,Ac1CA;AT4BA,AbuCA,AuBrEA,AJYA,AMlBA,A+C7IA,ACHA,ACHA,ACHA,ACHA,AIZA,AHSA,AENA,ADGA,AGTA,AV8BA,A7DuLA,AkDtJA,ACHA,AENA,AENA,ANkBA,AGTA,ANkBA,AU9BA,AtCkHA,AKfA,AJYA,Ac1CA,AIZA,ANkBA,AGTA,ApC4GA,Ac1CA;AT4BA,AbuCA,AuBrEA,AJYA,AMlBA,A+C7IA,ACHA,ACHA,ACHA,ACHA,AIZA,AHSA,AENA,ADGA,AGTA,AV8BA,A7DuLA,AkDtJA,ACHA,AENA,AENA,ANkBA,AGTA,ANkBA,AU9BA,AtCkHA,AKfA,AJYA,Ac1CA,AIZA,ANkBA,AGTA,ApC4GA,Ac1CA;AT4BA,AbuCA,AuBrEA,AJYA,AMlBA,A+C7IA,ACHA,ACHA,ACHA,ACHA,AIZA,AHSA,AENA,ADGA,AGTA,AV8BA,A7DuLA,AkDtJA,ACHA,AENA,AENA,ANkBA,AGTA,ANkBA,AU9BA,AtCkHA,AKfA,AJYA,Ac1CA,AIZA,ANkBA,AGTA,ApC4GA,A0E9NA,A5DoLA;AT4BA,AbuCA,AuBrEA,AJYA,AMlBA,A+C7IA,ACHA,ACHA,ACHA,ACHA,AIZA,AHSA,AENA,ADGA,AGTA,AV8BA,A7DuLA,AmDzJA,AENA,AENA,ANkBA,AGTA,ANkBA,AU9BA,AtCkHA,AKfA,AJYA,Ac1CA,AIZA,ANkBA,AGTA,ApC4GA,A0E9NA,A5DoLA;AT4BA,AbuCA,AuBrEA,AJYA,AMlBA,A+C7IA,ACHA,ACHA,ACHA,ACHA,AIZA,AHSA,AENA,ADGA,AGTA,AV8BA,A7DuLA,AmDzJA,AENA,AENA,ANkBA,AGTA,ANkBA,AU9BA,AtCkHA,AKfA,AJYA,Ac1CA,AIZA,ANkBA,AGTA,ApC4GA,A0E9NA;ArEgNA,AbuCA,AuBrEA,AJYA,AMlBA,A+C7IA,ACHA,ACHA,ACHA,ACHA,AIZA,AHSA,AENA,ADGA,AGTA,AENA,AZoCA,A7DuLA,AmDzJA,AENA,AENA,ANkBA,AGTA,ANkBA,AU9BA,AtCkHA,AKfA,AJYA,Ac1CA,AIZA,ANkBA,AGTA,ApC4GA,A0E9NA;ArEgNA,AbuCA,AuBrEA,AJYA,AMlBA,A+C7IA,ACHA,ACHA,ACHA,ACHA,AIZA,AHSA,AENA,ADGA,AGTA,AENA,AZoCA,A7DuLA,AmDzJA,AENA,AENA,ANkBA,AGTA,ANkBA,AU9BA,AtCkHA,AKfA,AJYA,Ac1CA,AIZA,ANkBA,AGTA,ApC4GA,A0E9NA;ArEgNA,AbuCA,AuBrEA,AJYA,AMlBA,A+C7IA,ACHA,ACHA,ACHA,ACHA,AIZA,AHSA,AENA,ADGA,AGTA,AENA,AZoCA,A7DuLA,AmDzJA,AENA,AENA,ANkBA,AGTA,ANkBA,AU9BA,AtCkHA,AKfA,AJYA,Ac1CA,AIZA,ANkBA,AGTA,ApC4GA,A0E9NA;ArEgNA,AbuCA,AuBrEA,AJYA,AMlBA,A+C7IA,ACHA,ACHA,ACHA,ACHA,AIZA,AHSA,AENA,ADGA,AMlBA,AHSA,AENA,AZoCA,A7DuLA,AmDzJA,AENA,AENA,ANkBA,AGTA,ANkBA,AU9BA,AtCkHA,AKfA,AJYA,Ac1CA,AIZA,ANkBA,AGTA,ApC4GA,A0E9NA;ArEgNA,AbuCA,AuBrEA,AJYA,AMlBA,A+C7IA,ACHA,ACHA,ACHA,ACHA,AIZA,AHSA,AENA,ADGA,AMlBA,AHSA,AENA,AZoCA,A7DuLA,AmDzJA,AENA,AENA,ANkBA,AGTA,ANkBA,AU9BA,AtCkHA,AKfA,AJYA,Ac1CA,AIZA,ANkBA,AGTA,ApC4GA,A0E9NA;ArEgNA,AbuCA,AuBrEA,AJYA,AMlBA,A+C7IA,ACHA,ACHA,ACHA,ACHA,AIZA,AHSA,AENA,ADGA,AMlBA,AHSA,AENA,AZoCA,A7DuLA,AmDzJA,AENA,AENA,ANkBA,AGTA,ANkBA,AU9BA,AtCkHA,AKfA,AJYA,Ac1CA,AIZA,ANkBA,AGTA,ApC4GA,A0E9NA;ArEgNA,AbuCA,AuBrEA,AJYA,AMlBA,A+C7IA,ACHA,ACHA,ACHA,ACHA,AIZA,AHSA,AENA,ADGA,AMlBA,AHSA,AIZA,AFMA,AZoCA,A7DuLA,AmDzJA,AENA,AENA,ANkBA,AGTA,ANkBA,AU9BA,AtCkHA,AKfA,AJYA,Ac1CA,AIZA,ANkBA,AGTA,ApC4GA,A0E9NA;ArEgNA,AbuCA,AuBrEA,AJYA,AMlBA,A+C7IA,ACHA,ACHA,ACHA,ACHA,AIZA,AHSA,AENA,ADGA,AMlBA,AHSA,AIZA,AFMA,AZoCA,A7DuLA,AmDzJA,AENA,AENA,ANkBA,AGTA,ANkBA,AU9BA,AtCkHA,AKfA,AJYA,Ac1CA,AIZA,ANkBA,AGTA,ApC4GA,A0E9NA;ArEgNA,AbuCA,AuBrEA,AJYA,AMlBA,A+C7IA,ACHA,ACHA,ACHA,ACHA,AIZA,AHSA,AENA,ADGA,AMlBA,AHSA,AIZA,AFMA,AZoCA,A7DuLA,AmDzJA,AENA,AENA,ANkBA,AGTA,ANkBA,AU9BA,AtCkHA,AKfA,AJYA,Ac1CA,AIZA,ANkBA,AGTA,AsClHA;ArEgNA,AbuCA,AuBrEA,AJYA,AMlBA,A+C7IA,ACHA,ACHA,ACHA,ACHA,AIZA,AHSA,AENA,ADGA,AMlBA,AHSA,AIZA,AFMA,AZoCA,A7DuLA,AmDzJA,AENA,AENA,ANkBA,AGTA,ANkBA,AU9BA,AtCkHA,AKfA,AJYA,Ac1CA,AIZA,ANkBA,AGTA,A0C9HA,AJYA;ArEgNA,AbuCA,AuBrEA,AJYA,AMlBA,A+C7IA,ACHA,ACHA,ACHA,ACHA,AIZA,AHSA,AENA,ADGA,AMlBA,AHSA,AIZA,AFMA,AZoCA,A7DuLA,AmDzJA,AENA,AENA,ANkBA,AGTA,ANkBA,AU9BA,AtCkHA,AKfA,AJYA,AkBtDA,ANkBA,AGTA,A0C9HA,AJYA;ArEgNA,AbuCA,AuBrEA,AJYA,AMlBA,A+C7IA,ACHA,ACHA,ACHA,ACHA,AIZA,AHSA,AENA,ADGA,AMlBA,AHSA,AIZA,AFMA,AZoCA,A7DuLA,AmDzJA,AENA,AENA,ANkBA,AGTA,ANkBA,AU9BA,AtCkHA,AKfA,AJYA,AkBtDA,ANkBA,AGTA,A0C9HA,AJYA;ArEgNA,AbuCA,AuBrEA,AJYA,AMlBA,A+C7IA,ACHA,ACHA,ACHA,ACHA,AIZA,AHSA,AENA,ADGA,AMlBA,AHSA,AIZA,AFMA,AZoCA,A7DuLA,AmDzJA,AENA,AENA,ANkBA,AGTA,ANkBA,AU9BA,AtCkHA,AKfA,AJYA,AkBtDA,ANkBA,AGTA,A0C9HA,ACHA,ALeA;ArEgNA,AbuCA,AuBrEA,AJYA,AMlBA,A+C7IA,ACHA,ACHA,ACHA,ACHA,AIZA,AHSA,AENA,ADGA,AMlBA,AHSA,AIZA,AFMA,AZoCA,A7DuLA,AmDzJA,AENA,AJYA,AGTA,ANkBA,AU9BA,AtCkHA,AKfA,AJYA,AkBtDA,ANkBA,AGTA,A0C9HA,ACHA,ALeA;ArEgNA,AbuCA,AuBrEA,AJYA,AMlBA,A+C7IA,ACHA,ACHA,ACHA,ACHA,AIZA,AHSA,AENA,ADGA,AMlBA,AHSA,AIZA,AFMA,AZoCA,A7DuLA,AmDzJA,AENA,AJYA,AGTA,ANkBA,AU9BA,AtCkHA,AKfA,AJYA,AkBtDA,ANkBA,A6CvIA,ACHA,ALeA;AMjBA,A3EiOA,AbuCA,AuBrEA,AJYA,AMlBA,A+C7IA,ACHA,ACHA,ACHA,ACHA,AIZA,AHSA,AENA,ADGA,AMlBA,AHSA,AIZA,AFMA,AZoCA,A7DuLA,AmDzJA,AFMA,AGTA,ANkBA,AU9BA,AtCkHA,AKfA,AJYA,AkBtDA,ANkBA,A6CvIA,ACHA,ALeA;AMjBA,A3EiOA,AbuCA,AuBrEA,AJYA,AMlBA,A+C7IA,ACHA,ACHA,ACHA,ACHA,AIZA,AHSA,AENA,ADGA,AMlBA,AHSA,AIZA,AFMA,AZoCA,A7DuLA,AmDzJA,AFMA,AGTA,ANkBA,AU9BA,AtCkHA,AKfA,AJYA,AkBtDA,ANkBA,A6CvIA,ACHA,ALeA;AMjBA,A3EiOA,AbuCA,AuBrEA,AJYA,AMlBA,A+C7IA,ACHA,ACHA,ACHA,ACHA,AIZA,AHSA,AENA,ADGA,AMlBA,AHSA,AIZA,AFMA,AZoCA,A7DuLA,AmDzJA,AFMA,AGTA,ANkBA,AU9BA,AtCkHA,AKfA,AJYA,AkBtDA,ANkBA,A6CvIA,ACHA,ALeA;AMjBA,A3EiOA,AbuCA,AuBrEA,AJYA,AMlBA,A+C7IA,ACHA,ACHA,ACHA,ACHA,AIZA,AHSA,AENA,ADGA,AMlBA,AHSA,AIZA,AFMA,AZoCA,A7DuLA,AmDzJA,AFMA,AGTA,ANkBA,AU9BA,AuBrEA,A7DuLA,AKfA,AJYA,AkBtDA,ANkBA,A6CvIA,ACHA,ALeA;AMjBA,A3EiOA,AbuCA,AuBrEA,AJYA,AMlBA,A+C7IA,ACHA,ACHA,ACHA,ACHA,AIZA,AHSA,AENA,ADGA,AMlBA,AHSA,AIZA,AFMA,AZoCA,A7DuLA,AmDzJA,AFMA,AGTA,ANkBA,AU9BA,AuBrEA,A7DuLA,AKfA,AJYA,AkBtDA,ANkBA,A6CvIA,ACHA,ALeA;AMjBA,A3EiOA,AbuCA,AuBrEA,AJYA,AMlBA,A+C7IA,ACHA,ACHA,ACHA,ACHA,AIZA,AHSA,AENA,ADGA,AMlBA,AHSA,AIZA,AFMA,AZoCA,A7DuLA,AmDzJA,AFMA,AGTA,ANkBA,AU9BA,AuBrEA,A7DuLA,AKfA,AJYA,AkBtDA,ANkBA,A6CvIA,ACHA,ALeA;AMjBA,A3EiOA,AbuCA,AuBrEA,AJYA,AMlBA,A+C7IA,ACHA,ACHA,ACHA,ACHA,AIZA,AHSA,AENA,ADGA,AMlBA,AHSA,AIZA,AFMA,AZoCA,A7DuLA,AmDzJA,AFMA,AGTA,ANkBA,AU9BA,AwBxEA,ADGA,A7DuLA,AKfA,AJYA,AkBtDA,ANkBA,A6CvIA,ACHA,ALeA;AMjBA,A3EiOA,AbuCA,AuBrEA,AJYA,AMlBA,A+C7IA,ACHA,ACHA,ACHA,ACHA,AIZA,AHSA,AENA,ADGA,AMlBA,AHSA,AIZA,AFMA,AZoCA,A7DuLA,AmDzJA,AFMA,AGTA,ANkBA,AU9BA,AwBxEA,ADGA,A7DuLA,AKfA,AJYA,AkBtDA,ANkBA,A6CvIA,ACHA,ALeA;AMjBA,A3EiOA,AbuCA,AuBrEA,AJYA,AMlBA,A+C7IA,ACHA,ACHA,ACHA,ACHA,AIZA,AHSA,AENA,ADGA,AMlBA,AHSA,AIZA,AFMA,AZoCA,A7DuLA,AmDzJA,AFMA,AGTA,ANkBA,AU9BA,AwBxEA,ADGA,A7DuLA,AKfA,AJYA,AkBtDA,ANkBA,A6CvIA,ACHA,ALeA;AMjBA,A3EiOA,AbuCA,AuBrEA,AJYA,AMlBA,A+C7IA,ACHA,ACHA,ACHA,ACHA,AIZA,AHSA,AENA,ADGA,AMlBA,AHSA,AIZA,AFMA,AZoCA,A7DuLA,AmDzJA,AFMA,AGTA,ANkBA,AU9BA,AwBxEA,ACHA,AFMA,A7DuLA,AKfA,AJYA,AkBtDA,ANkBA,A6CvIA,ACHA,ALeA;AMjBA,A3EiOA,AbuCA,AuBrEA,AJYA,AMlBA,A+C7IA,ACHA,ACHA,ACHA,ACHA,AIZA,AHSA,AENA,ADGA,AMlBA,AHSA,AIZA,AFMA,AZoCA,A7DuLA,AmDzJA,AFMA,AGTA,ANkBA,AU9BA,AwBxEA,ACHA,AFMA,A7DuLA,AKfA,AJYA,AkBtDA,ANkBA,A6CvIA,ACHA,ALeA;AMjBA,A3EiOA,AbuCA,AuBrEA,AJYA,AMlBA,A+C7IA,ACHA,ACHA,ACHA,ACHA,AIZA,AHSA,AENA,ADGA,AMlBA,AHSA,AIZA,AFMA,AZoCA,A7DuLA,AmDzJA,AFMA,AGTA,ANkBA,AU9BA,AwBxEA,ACHA,AFMA,A7DuLA,AKfA,AJYA,AkBtDA,ANkBA,A6CvIA,ACHA,ALeA;AU7BA,AJYA,A3EiOA,AbuCA,AuBrEA,AJYA,AMlBA,A+C7IA,ACHA,ACHA,ACHA,ACHA,AIZA,AHSA,AENA,ADGA,AMlBA,AHSA,AIZA,AFMA,AZoCA,A7DuLA,AmDzJA,AFMA,AGTA,ANkBA,AU9BA,AwBxEA,ACHA,AFMA,A7DuLA,AKfA,AJYA,AkBtDA,ANkBA,A6CvIA,ACHA,ALeA;AU7BA,AJYA,A3EiOA,AbuCA,AuBrEA,AJYA,AMlBA,A+C7IA,ACHA,ACHA,ACHA,ACHA,AIZA,AHSA,AENA,ADGA,AMlBA,AHSA,AIZA,AFMA,AZoCA,A7DuLA,AmDzJA,AFMA,AGTA,AIZA,AwBxEA,ACHA,AFMA,A7DuLA,AKfA,AJYA,AkBtDA,ANkBA,A6CvIA,ACHA,ALeA;AU7BA,AJYA,A3EiOA,AbuCA,AuBrEA,AJYA,AMlBA,A+C7IA,ACHA,ACHA,ACHA,ACHA,AIZA,AHSA,AENA,ADGA,AMlBA,AHSA,AIZA,AFMA,AZoCA,A7DuLA,AmDzJA,AFMA,AGTA,AIZA,AwBxEA,ACHA,AFMA,A7DuLA,AKfA,AJYA,AkBtDA,ANkBA,A6CvIA,ACHA,ALeA;AU7BA,AJYA,AKfA,AhFgPA,AbuCA,AuBrEA,AJYA,AMlBA,A+C7IA,ACHA,ACHA,ACHA,ACHA,AIZA,AHSA,AENA,ADGA,AMlBA,AHSA,AIZA,AFMA,AZoCA,A7DuLA,AmDzJA,AFMA,AGTA,AIZA,AwBxEA,ACHA,AFMA,A7DuLA,AKfA,AJYA,AkBtDA,ANkBA,A6CvIA,ACHA,ALeA;AU7BA,AJYA,AKfA,AhFgPA,AbuCA,AuBrEA,AJYA,AMlBA,A+C7IA,ACHA,ACHA,ACHA,ACHA,AIZA,AHSA,AENA,ADGA,AMlBA,AHSA,AIZA,AFMA,AZoCA,A7DuLA,AmDzJA,AFMA,AGTA,AIZA,AwBxEA,ACHA,AFMA,A7DuLA,AKfA,AJYA,AkBtDA,ANkBA,A6CvIA,ACHA,ALeA;AU7BA,AJYA,AKfA,AhFgPA,AbuCA,AuBrEA,AJYA,AMlBA,A+C7IA,ACHA,ACHA,ACHA,ACHA,AIZA,AHSA,AENA,ADGA,AMlBA,AHSA,AIZA,AFMA,AZoCA,A7DuLA,AmDzJA,AFMA,AGTA,AIZA,AwBxEA,ACHA,AFMA,A7DuLA,AKfA,AJYA,AkBtDA,ANkBA,A6CvIA,ACHA,ALeA;AU7BA,AJYA,AKfA,ACHA,AjFmPA,AbuCA,AuBrEA,AJYA,AMlBA,A+C7IA,ACHA,ACHA,ACHA,ACHA,AIZA,AHSA,AENA,ADGA,AMlBA,AHSA,AIZA,AFMA,AZoCA,A7DuLA,AmDzJA,AFMA,AGTA,AIZA,AwBxEA,ACHA,AFMA,A7DuLA,AKfA,AJYA,AkBtDA,ANkBA,A6CvIA,ACHA,ALeA;AU7BA,AJYA,AKfA,ACHA,AjFmPA,AbuCA,AuBrEA,AJYA,AMlBA,A+C7IA,ACHA,ACHA,ACHA,ACHA,AIZA,AHSA,AENA,ADGA,AMlBA,AHSA,AIZA,AFMA,AZoCA,A7DuLA,AmDzJA,AFMA,AGTA,AIZA,AwBxEA,ACHA,AFMA,A7DuLA,AKfA,AJYA,AkBtDA,ANkBA,A6CvIA,ACHA,ALeA;AU7BA,AJYA,AKfA,ACHA,AjFmPA,AbuCA,AuBrEA,AJYA,AMlBA,A+C7IA,ACHA,ACHA,ACHA,ACHA,AIZA,AHSA,AENA,ADGA,AMlBA,AHSA,AIZA,AFMA,AZoCA,A7DuLA,AmDzJA,AFMA,AGTA,AIZA,AwBxEA,ACHA,AFMA,A7DuLA,AKfA,AJYA,AkBtDA,ANkBA,A6CvIA,ACHA,ALeA;AU7BA,AJYA,AOrBA,AFMA,ACHA,AjFmPA,AbuCA,AuBrEA,AJYA,AMlBA,A+C7IA,ACHA,ACHA,ACHA,ACHA,AIZA,AHSA,AENA,ADGA,AMlBA,AHSA,AIZA,AFMA,AZoCA,A7DuLA,AmDzJA,AFMA,AGTA,AIZA,AwBxEA,ACHA,AFMA,A7DuLA,AKfA,AJYA,AkBtDA,ANkBA,A6CvIA,ACHA,ALeA;AU7BA,AJYA,AOrBA,AFMA,ACHA,A9F0RA,AuBrEA,AJYA,AMlBA,A+C7IA,ACHA,ACHA,ACHA,ACHA,AIZA,AHSA,AENA,ADGA,AMlBA,AHSA,AIZA,AFMA,AZoCA,A7DuLA,AmDzJA,AFMA,AGTA,AIZA,AwBxEA,ACHA,AFMA,A7DuLA,AKfA,AJYA,AkBtDA,ANkBA,A6CvIA,ACHA,ALeA;AU7BA,AJYA,AOrBA,AFMA,ACHA,A9F0RA,AuBrEA,AJYA,AMlBA,A+C7IA,ACHA,ACHA,ACHA,ACHA,AIZA,AHSA,AENA,ADGA,AMlBA,AHSA,AIZA,AFMA,AZoCA,A7DuLA,AmDzJA,AFMA,AGTA,AIZA,AwBxEA,ACHA,AFMA,A7DuLA,AKfA,AJYA,AkBtDA,ANkBA,A6CvIA,ACHA,ALeA;AU7BA,AJYA,AOrBA,AFMA,ACHA,A9F0RA,AuBrEA,AJYA,AMlBA,A+C7IA,ACHA,ACHA,ACHA,AKfA,AHSA,AENA,ADGA,AMlBA,AHSA,AIZA,AFMA,AZoCA,A7DuLA,AmDzJA,AFMA,AGTA,AIZA,AwBxEA,ACHA,AFMA,A7DuLA,AKfA,AJYA,AkBtDA,ANkBA,AuDrKA,AV8BA,ACHA,ALeA;AU7BA,AJYA,AOrBA,AFMA,ACHA,A9F0RA,AuBrEA,AJYA,AMlBA,A+C7IA,ACHA,ACHA,ACHA,AKfA,AHSA,AENA,ADGA,AMlBA,AHSA,AIZA,AFMA,AZoCA,A7DuLA,AmDzJA,AFMA,AGTA,AIZA,AwBxEA,ACHA,AFMA,A7DuLA,AKfA,AJYA,AkBtDA,ANkBA,AuDrKA,AV8BA,ACHA,ALeA;AU7BA,AJYA,AOrBA,AFMA,ACHA,A9F0RA,AuBrEA,AJYA,AMlBA,A+C7IA,ACHA,ACHA,ACHA,AKfA,ADGA,ADGA,AMlBA,AHSA,AIZA,AFMA,AZoCA,A7DuLA,AmDzJA,AFMA,AGTA,AIZA,AwBxEA,ACHA,AFMA,A7DuLA,AKfA,AJYA,AkBtDA,ANkBA,AuDrKA,AV8BA,ACHA,ALeA;AU7BA,AJYA,AOrBA,AFMA,ACHA,A9F0RA,AuBrEA,AJYA,AMlBA,A+C7IA,ACHA,ACHA,ACHA,AKfA,ADGA,ADGA,AMlBA,AHSA,AIZA,AFMA,AZoCA,A7DuLA,AmDzJA,AFMA,AGTA,AIZA,AwBxEA,ACHA,AFMA,A7DuLA,AKfA,AJYA,AkBtDA,ANkBA,AuDrKA,ACHA,AXiCA,ACHA,ALeA;AU7BA,AJYA,AOrBA,AFMA,ACHA,A9F0RA,AuBrEA,AJYA,AMlBA,A+C7IA,ACHA,ACHA,ACHA,AKfA,ADGA,ADGA,AMlBA,AHSA,AIZA,AFMA,AZoCA,A7DuLA,AmDzJA,AFMA,AGTA,AIZA,AwBxEA,ACHA,AFMA,A7DuLA,AKfA,AJYA,AkBtDA,ANkBA,AuDrKA,ACHA,AXiCA,ACHA,ALeA;AU7BA,AJYA,AOrBA,AFMA,ACHA,A9F0RA,AuBrEA,AJYA,AMlBA,A+C7IA,ACHA,ACHA,ACHA,AKfA,ADGA,ADGA,AMlBA,AHSA,AIZA,AFMA,AZoCA,A7DuLA,AmDzJA,AFMA,AGTA,AIZA,AwBxEA,ACHA,AFMA,A7DuLA,AKfA,AJYA,AkBtDA,ANkBA,AuDrKA,ACHA,AXiCA,ACHA,ALeA;AU7BA,AJYA,AOrBA,AFMA,ACHA,A9F0RA,AuBrEA,AJYA,AMlBA,A+C7IA,ACHA,ACHA,ACHA,AKfA,ADGA,ADGA,AMlBA,AHSA,AIZA,AFMA,AZoCA,A7DuLA,AmDzJA,AFMA,AGTA,A4BpFA,ACHA,AFMA,A7DuLA,AKfA,AJYA,AkBtDA,ANkBA,AuDrKA,AENA,ADGA,AXiCA,ACHA,ALeA;AU7BA,AJYA,AOrBA,AFMA,ACHA,A9F0RA,AuBrEA,AJYA,AMlBA,A+C7IA,ACHA,ACHA,ACHA,AIZA,ADGA,AMlBA,AHSA,AIZA,AFMA,AZoCA,A7DuLA,AmDzJA,AFMA,AGTA,A4BpFA,ACHA,AFMA,A7DuLA,AKfA,AJYA,AkBtDA,ANkBA,AuDrKA,AENA,ADGA,AXiCA,ACHA,ALeA;AU7BA,AJYA,AOrBA,AFMA,ACHA,A9F0RA,AuBrEA,AJYA,AMlBA,A+C7IA,ACHA,ACHA,ACHA,AIZA,ADGA,AMlBA,AHSA,AIZA,AFMA,AZoCA,A7DuLA,AmDzJA,AFMA,AGTA,A4BpFA,ACHA,AFMA,A7DuLA,AKfA,AJYA,AkBtDA,ANkBA,AuDrKA,AENA,ADGA,AXiCA,ACHA,ALeA;AU7BA,AJYA,AOrBA,AFMA,ACHA,A9F0RA,AuBrEA,AJYA,AMlBA,A+C7IA,ACHA,ACHA,ACHA,AIZA,ADGA,AMlBA,AHSA,AIZA,AFMA,AZoCA,A7DuLA,AmDzJA,AFMA,AGTA,A4BpFA,ACHA,AFMA,A7DuLA,AKfA,AJYA,AkBtDA,ANkBA,A0D9KA,AHSA,AENA,ADGA,AXiCA,ACHA,ALeA;AU7BA,AJYA,AOrBA,AFMA,ACHA,A9F0RA,AuBrEA,AJYA,AMlBA,A+C7IA,ACHA,ACHA,ACHA,AIZA,ADGA,AMlBA,AHSA,AIZA,AFMA,AZoCA,A7DuLA,AmDzJA,AFMA,AGTA,A4BpFA,ACHA,AFMA,A7DuLA,AKfA,AJYA,AkBtDA,ANkBA,A0D9KA,AHSA,AENA,ADGA,AXiCA,ACHA,ALeA;AU7BA,AJYA,AOrBA,AFMA,ACHA,A9F0RA,AuBrEA,AJYA,AMlBA,A+C7IA,AENA,ACHA,AIZA,ADGA,AMlBA,AHSA,AIZA,AFMA,AZoCA,A7DuLA,AmDzJA,AFMA,AGTA,A4BpFA,ACHA,AFMA,A7DuLA,AKfA,AJYA,AkBtDA,ANkBA,A0D9KA,AHSA,AENA,ADGA,AXiCA,ACHA,ALeA;AU7BA,AJYA,AOrBA,AFMA,ACHA,A9F0RA,AuBrEA,AJYA,AMlBA,A+C7IA,AENA,ACHA,AIZA,ADGA,AMlBA,AHSA,AIZA,AFMA,AZoCA,A7DuLA,AmDzJA,AFMA,AGTA,A4BpFA,ACHA,AFMA,A7DuLA,AKfA,AJYA,AkBtDA,ANkBA,A0D9KA,ACHA,AJYA,AENA,ADGA,AXiCA,ACHA,ALeA;AU7BA,AJYA,AOrBA,AFMA,ACHA,A9F0RA,AuBrEA,AJYA,AMlBA,A+C7IA,AENA,ACHA,AIZA,ADGA,AMlBA,AHSA,AIZA,AFMA,AZoCA,A7DuLA,AmDzJA,AFMA,AGTA,A4BpFA,ACHA,AFMA,A7DuLA,AKfA,AJYA,AkBtDA,ANkBA,A0D9KA,ACHA,AJYA,AENA,ADGA,AXiCA,ACHA,ALeA;AU7BA,AJYA,AOrBA,AFMA,ACHA,A9F0RA,AuBrEA,AJYA,AMlBA,A+C7IA,AENA,ACHA,AIZA,ADGA,AMlBA,AHSA,AIZA,AFMA,AZoCA,A7DuLA,AmDzJA,AFMA,AGTA,A4BpFA,ACHA,AFMA,A7DuLA,AKfA,AJYA,AkBtDA,ANkBA,A0D9KA,ACHA,AFMA,ADGA,AXiCA,ACHA,ALeA;AU7BA,AJYA,AOrBA,AFMA,ACHA,A9F0RA,AuBrEA,AJYA,AMlBA,A+C7IA,AENA,ACHA,AIZA,ADGA,AMlBA,AHSA,AIZA,AFMA,AZoCA,A7DuLA,AmDzJA,AFMA,AGTA,A4BpFA,ACHA,AFMA,A7DuLA,AKfA,AJYA,AkBtDA,ANkBA,A0D9KA,ACHA,AFMA,AGTA,AJYA,AXiCA,ACHA,ALeA;AU7BA,AJYA,AOrBA,AFMA,ACHA,A9F0RA,AuBrEA,AJYA,AMlBA,A+C7IA,AENA,ACHA,AIZA,ADGA,AMlBA,AHSA,AIZA,AFMA,AZoCA,A7DuLA,AmDzJA,AFMA,AGTA,A4BpFA,ACHA,AFMA,A7DuLA,AKfA,AJYA,AkBtDA,ANkBA,A0D9KA,ACHA,AFMA,AGTA,AJYA,AXiCA,ACHA,ALeA;AU7BA,AJYA,AOrBA,AFMA,ACHA,A9F0RA,AuBrEA,AJYA,AMlBA,A+C7IA,AENA,ACHA,AIZA,ADGA,AMlBA,AHSA,AIZA,AFMA,AZoCA,A7DuLA,AmDzJA,AFMA,AGTA,A4BpFA,ACHA,AFMA,A7DuLA,AKfA,AJYA,AkBtDA,ANkBA,A0D9KA,ACHA,AFMA,AGTA,AJYA,AXiCA,ACHA,ALeA;AU7BA,AJYA,AOrBA,AFMA,ACHA,A9F0RA,AuBrEA,AJYA,AMlBA,A+C7IA,AENA,ACHA,AIZA,ADGA,AMlBA,AHSA,AIZA,AFMA,AZoCA,A7DuLA,AmDzJA,AFMA,AGTA,A4BpFA,ACHA,AFMA,A7DuLA,AKfA,AJYA,AkBtDA,ANkBA,A0D9KA,ACHA,AFMA,AGTA,AJYA,AXiCA,ACHA,ALeA;AU7BA,AJYA,AOrBA,AFMA,ACHA,A9F0RA,AuBrEA,AJYA,AMlBA,A+C7IA,AENA,ACHA,AIZA,ADGA,AMlBA,AHSA,AIZA,AFMA,AZoCA,A7DuLA,AmDzJA,AFMA,AGTA,A4BpFA,ACHA,AFMA,A7DuLA,AKfA,AJYA,AkBtDA,ANkBA,A0D9KA,ACHA,AFMA,AGTA,AJYA,AXiCA,ACHA,ALeA;AU7BA,AJYA,AOrBA,AFMA,ACHA,A9F0RA,AuBrEA,AJYA,AqD/JA,AENA,ACHA,AIZA,ADGA,AMlBA,AHSA,AIZA,AFMA,AZoCA,A7DuLA,AmDzJA,AFMA,AGTA,A4BpFA,ACHA,AFMA,A7DuLA,AKfA,AJYA,AkBtDA,ANkBA,A0D9KA,ACHA,AFMA,AGTA,AJYA,AXiCA,ACHA,ALeA;AU7BA,AJYA,AOrBA,AFMA,ACHA,A9F0RA,AuBrEA,AJYA,AqD/JA,AENA,ACHA,AIZA,ADGA,AMlBA,AHSA,AIZA,AFMA,AZoCA,A7DuLA,AmDzJA,AFMA,AGTA,A4BpFA,ACHA,AFMA,A7DuLA,AKfA,AJYA,AkBtDA,ANkBA,A0D9KA,ACHA,AFMA,AGTA,AJYA,AXiCA,ACHA,ALeA;AU7BA,AJYA,AOrBA,AFMA,ACHA,A9F0RA,AuBrEA,AJYA,AqD/JA,AENA,ACHA,AIZA,ADGA,AMlBA,AHSA,AIZA,AFMA,AZoCA,A7DuLA,AmDzJA,AFMA,AGTA,A4BpFA,ACHA,AFMA,A7DuLA,AKfA,AJYA,AkBtDA,ANkBA,A0D9KA,ACHA,AFMA,AGTA,AJYA,AXiCA,ACHA,ALeA;AU7BA,AJYA,AOrBA,AFMA,ACHA,A9F0RA,AuBrEA,AJYA,AqD/JA,AENA,ACHA,AIZA,ADGA,AMlBA,AHSA,AIZA,AFMA,AZoCA,A7DuLA,AmDzJA,AFMA,AGTA,A4BpFA,ACHA,AFMA,A7DuLA,AKfA,AJYA,AkBtDA,ANkBA,A0D9KA,ACHA,AFMA,AGTA,AJYA,AXiCA,ACHA,ALeA;AU7BA,AJYA,AOrBA,AFMA,ACHA,A9F0RA,AuBrEA,AJYA,AqD/JA,AENA,ACHA,AIZA,ADGA,AMlBA,AHSA,AIZA,AFMA,AZoCA,A7DuLA,AmDzJA,AFMA,AGTA,A4BpFA,ACHA,AFMA,A7DuLA,AKfA,AJYA,AkBtDA,ANkBA,A0D9KA,ACHA,AFMA,AGTA,AJYA,AXiCA,ACHA,ALeA;AU7BA,AJYA,AOrBA,AFMA,ACHA,A9F0RA,AuBrEA,AJYA,AqD/JA,AENA,ACHA,AIZA,ADGA,AMlBA,AHSA,AIZA,AFMA,AZoCA,A7DuLA,AmDzJA,AFMA,AGTA,A4BpFA,ACHA,AFMA,A7DuLA,AKfA,AJYA,AkBtDA,ANkBA,A0D9KA,ACHA,AFMA,AGTA,AJYA,AXiCA,ACHA,ALeA;AU7BA,AJYA,AOrBA,AFMA,ACHA,A9F0RA,AuBrEA,AJYA,AqD/JA,AENA,ACHA,AIZA,ADGA,AMlBA,AHSA,AIZA,AFMA,AZoCA,A7DuLA,AmDzJA,AFMA,AGTA,A4BpFA,ACHA,AFMA,A7DuLA,AKfA,AJYA,AkBtDA,ANkBA,A0D9KA,ACHA,AFMA,AGTA,AJYA,AXiCA,ACHA,ALeA;AU7BA,AJYA,AOrBA,AFMA,ACHA,A9F0RA,AuBrEA,AJYA,AqD/JA,AENA,ACHA,AIZA,ADGA,AMlBA,AHSA,AIZA,AFMA,AZoCA,A7DuLA,AmDzJA,AFMA,AGTA,A4BpFA,ACHA,AFMA,A7DuLA,AKfA,AJYA,AkBtDA,ANkBA,A0D9KA,ACHA,AFMA,AGTA,AJYA,AXiCA,ACHA,ALeA;AU7BA,AJYA,AOrBA,AFMA,ACHA,A9F0RA,AuBrEA,AJYA,AqD/JA,AENA,ACHA,AIZA,ADGA,AMlBA,AHSA,AIZA,AFMA,AZoCA,A7DuLA,AmDzJA,AFMA,AGTA,A4BpFA,ACHA,AFMA,A7DuLA,AKfA,AJYA,AkBtDA,ANkBA,A0D9KA,ACHA,AFMA,AGTA,AJYA,AXiCA,ACHA,ALeA;AU7BA,AJYA,AOrBA,AFMA,ACHA,A9F0RA,AuBrEA,AJYA,AqD/JA,AENA,ACHA,AIZA,ADGA,AMlBA,AHSA,AIZA,AFMA,AZoCA,A7DuLA,AmDzJA,AFMA,AGTA,A4BpFA,ACHA,AFMA,A7DuLA,AKfA,AJYA,AkBtDA,ANkBA,A0D9KA,ACHA,AFMA,AGTA,AJYA,AXiCA,ACHA,ALeA;AU7BA,AJYA,AOrBA,AFMA,ACHA,A9F0RA,AuBrEA,AJYA,AqD/JA,AENA,ACHA,AIZA,ADGA,AMlBA,AHSA,AIZA,AFMA,AZoCA,A7DuLA,AmDzJA,AFMA,AGTA,A4BpFA,ACHA,AFMA,A7DuLA,AKfA,AJYA,AkBtDA,ANkBA,A0D9KA,ACHA,AFMA,AGTA,AJYA,AXiCA,ACHA,ALeA;AU7BA,AJYA,AOrBA,AFMA,ACHA,A9F0RA,AuBrEA,AJYA,AqD/JA,AENA,ACHA,AIZA,ADGA,AMlBA,AHSA,AIZA,AFMA,AZoCA,A7DuLA,AmDzJA,AFMA,AGTA,A4BpFA,ACHA,AFMA,A7DuLA,AKfA,AJYA,AkBtDA,ANkBA,A0D9KA,ACHA,AFMA,AGTA,AJYA,AXiCA,ACHA,ALeA;AU7BA,AJYA,AOrBA,AFMA,ACHA,A9F0RA,AuBrEA,AJYA,AqD/JA,AENA,ACHA,AIZA,ADGA,AMlBA,AHSA,AIZA,AFMA,AZoCA,A7DuLA,AmDzJA,AFMA,AGTA,A4BpFA,ACHA,AFMA,A7DuLA,AKfA,AJYA,AkBtDA,ANkBA,A0D9KA,ACHA,AFMA,AGTA,AJYA,AXiCA,ACHA,ALeA;AU7BA,AJYA,AOrBA,AFMA,ACHA,A9F0RA,AuBrEA,AJYA,AqD/JA,AENA,ACHA,AIZA,ADGA,AMlBA,AHSA,AIZA,AFMA,AZoCA,A7DuLA,AmDzJA,AFMA,AGTA,A4BpFA,ACHA,AFMA,A7DuLA,AKfA,AJYA,AkBtDA,ANkBA,A0D9KA,ACHA,AFMA,AGTA,AJYA,AXiCA,ACHA,ALeA;AU7BA,AJYA,AOrBA,AFMA,ACHA,A9F0RA,AuBrEA,AJYA,AqD/JA,AENA,ACHA,AIZA,ADGA,AMlBA,AHSA,AIZA,AFMA,AZoCA,A7DuLA,AmDzJA,AFMA,AGTA,A4BpFA,ACHA,AFMA,A7DuLA,AKfA,AJYA,AkBtDA,ANkBA,A0D9KA,ACHA,AFMA,AGTA,AJYA,AXiCA,ACHA,ALeA;AU7BA,AJYA,AOrBA,AFMA,ACHA,A9F0RA,AuBrEA,AJYA,AuDrKA,ACHA,AIZA,ADGA,AMlBA,AHSA,AIZA,AFMA,AZoCA,A7DuLA,AiDnJA,AGTA,A4BpFA,ACHA,AFMA,A7DuLA,AKfA,AJYA,AkBtDA,ANkBA,A0D9KA,ACHA,AFMA,AGTA,AJYA,AXiCA,ACHA,ALeA;AU7BA,AJYA,AOrBA,AFMA,ACHA,A9F0RA,AuBrEA,AJYA,AuDrKA,ACHA,AIZA,ADGA,AMlBA,AHSA,AIZA,AFMA,AZoCA,A7DuLA,AiDnJA,AGTA,A4BpFA,ACHA,AFMA,A7DuLA,AKfA,AJYA,AkBtDA,ANkBA,A0D9KA,ACHA,AFMA,AGTA,AJYA,AXiCA,ACHA,ALeA;AU7BA,AJYA,AOrBA,AFMA,ACHA,A9F0RA,AuBrEA,AJYA,AuDrKA,ACHA,AIZA,ADGA,AMlBA,AHSA,AIZA,AFMA,AZoCA,A7DuLA,AiDnJA,AGTA,A4BpFA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,ANkBA,A0D9KA,ACHA,AFMA,AGTA,AJYA,AXiCA,ACHA,ALeA;AU7BA,AJYA,AOrBA,AFMA,ACHA,A9F0RA,AuBrEA,AJYA,AuDrKA,ACHA,AIZA,ADGA,AMlBA,AHSA,AIZA,AFMA,AZoCA,A7DuLA,AiDnJA,AGTA,A4BpFA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,ANkBA,A0D9KA,ACHA,AFMA,AGTA,AJYA,AXiCA,ACHA,ALeA;AU7BA,AJYA,AOrBA,AFMA,ACHA,A9F0RA,AuBrEA,AJYA,AuDrKA,ACHA,AIZA,ADGA,AMlBA,AHSA,AIZA,AFMA,AZoCA,A7DuLA,AiDnJA,AGTA,A4BpFA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,ANkBA,A0D9KA,ACHA,AFMA,AGTA,AJYA,AXiCA,ACHA,ALeA;AU7BA,AJYA,AOrBA,AFMA,ACHA,A9F0RA,AuBrEA,AJYA,AuDrKA,ACHA,AIZA,ADGA,AMlBA,ACHA,AFMA,AZoCA,A7DuLA,AiDnJA,AGTA,A4BpFA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,ANkBA,A0D9KA,ACHA,AFMA,AGTA,AJYA,AXiCA,ACHA,ALeA;AU7BA,AJYA,AOrBA,AFMA,ACHA,A9F0RA,AuBrEA,AJYA,AuDrKA,ACHA,AIZA,ADGA,AMlBA,ACHA,AFMA,AZoCA,A7DuLA,AiDnJA,AGTA,A4BpFA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,ANkBA,A0D9KA,ACHA,AFMA,AGTA,AJYA,AXiCA,ACHA,ALeA;AU7BA,AJYA,AOrBA,AFMA,ACHA,A9F0RA,AuBrEA,AJYA,AuDrKA,ACHA,AIZA,ADGA,AMlBA,ACHA,AFMA,AZoCA,A7DuLA,AiDnJA,AGTA,A4BpFA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,ANkBA,A0D9KA,ACHA,AFMA,AGTA,AJYA,AXiCA,ACHA,ALeA;AU7BA,AJYA,AOrBA,AFMA,ACHA,A9F0RA,AuBrEA,AJYA,AuDrKA,ACHA,AIZA,AKfA,ACHA,AFMA,AZoCA,A7DuLA,AiDnJA,AGTA,A4BpFA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,ANkBA,A0D9KA,ACHA,AFMA,AGTA,AJYA,AXiCA,ACHA,ALeA;AU7BA,AJYA,AOrBA,AFMA,ACHA,A9F0RA,AuBrEA,AJYA,AuDrKA,ACHA,AIZA,AKfA,ACHA,AFMA,AZoCA,A7DuLA,AiDnJA,AGTA,A4BpFA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,ANkBA,A0D9KA,ACHA,AFMA,AGTA,AJYA,AXiCA,ACHA,ALeA;AU7BA,AJYA,AOrBA,AFMA,ACHA,A9F0RA,AuBrEA,AJYA,AuDrKA,ACHA,AIZA,AKfA,ACHA,AFMA,AZoCA,A7DuLA,AiDnJA,AGTA,A4BpFA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,ANkBA,A0D9KA,ACHA,AFMA,AGTA,AJYA,AXiCA,ACHA,ALeA;AU7BA,AJYA,AOrBA,AFMA,ACHA,A9F0RA,AuBrEA,AJYA,AuDrKA,ACHA,AIZA,AKfA,ACHA,AFMA,AZoCA,A7DuLA,AiDnJA,AGTA,A4BpFA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,ANkBA,A0D9KA,ACHA,AFMA,AGTA,AJYA,AXiCA,ACHA,ALeA;AU7BA,AJYA,AOrBA,AFMA,ACHA,A9F0RA,AuBrEA,AJYA,AuDrKA,ACHA,AIZA,AKfA,ACHA,AFMA,AZoCA,A7DuLA,AiDnJA,AGTA,A4BpFA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,ANkBA,A0D9KA,ACHA,AFMA,AGTA,AJYA,AXiCA,ACHA,ALeA;AU7BA,AJYA,AOrBA,AFMA,ACHA,A9F0RA,AuBrEA,AJYA,AuDrKA,ACHA,AIZA,AKfA,ACHA,AFMA,AZoCA,A7DuLA,AiDnJA,AGTA,A4BpFA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,ANkBA,A0D9KA,ACHA,AFMA,AGTA,AJYA,AXiCA,ACHA,ALeA;AU7BA,AJYA,AOrBA,AFMA,ACHA,A9F0RA,AuBrEA,AJYA,AuDrKA,ACHA,AIZA,AKfA,ACHA,AFMA,AZoCA,A7DuLA,AiDnJA,AGTA,A4BpFA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,ANkBA,A0D9KA,ACHA,AFMA,AGTA,AJYA,AXiCA,ACHA,ALeA;AU7BA,AJYA,AOrBA,AFMA,ACHA,A9F0RA,AuBrEA,AJYA,AuDrKA,ACHA,AIZA,AKfA,ACHA,AFMA,AZoCA,A7DuLA,AiDnJA,AGTA,A4BpFA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,ANkBA,A0D9KA,ACHA,AFMA,AGTA,AJYA,AXiCA,ACHA,ALeA;AU7BA,AJYA,AOrBA,AFMA,ACHA,A9F0RA,AuBrEA,AJYA,AuDrKA,ACHA,AIZA,AKfA,ACHA,AFMA,AZoCA,A7DuLA,AoD5JA,A4BpFA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,ANkBA,A0D9KA,ACHA,AFMA,AGTA,AJYA,AXiCA,ACHA,ALeA;AU7BA,AJYA,AOrBA,AFMA,ACHA,A9F0RA,AuBrEA,AJYA,AuDrKA,ACHA,AIZA,AKfA,ACHA,AFMA,AZoCA,A7DuLA,AoD5JA,A4BpFA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,ANkBA,A0D9KA,ACHA,AFMA,AGTA,AJYA,AXiCA,ACHA,ALeA;AU7BA,AJYA,AOrBA,AFMA,ACHA,A9F0RA,AuBrEA,AJYA,AuDrKA,ACHA,AIZA,AKfA,ACHA,AFMA,AZoCA,A7DuLA,AoD5JA,A4BpFA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,ANkBA,A0D9KA,ACHA,AFMA,AGTA,AJYA,AXiCA,ACHA,ALeA;AU7BA,AJYA,AOrBA,AFMA,ACHA,A9F0RA,AuBrEA,AJYA,AuDrKA,ACHA,AIZA,AKfA,ACHA,AFMA,AZoCA,A7DuLA,AoD5JA,A4BpFA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,ANkBA,A0D9KA,ACHA,AFMA,AGTA,AJYA,AXiCA,ACHA,ALeA;AU7BA,AJYA,AOrBA,AFMA,ACHA,A9F0RA,AuBrEA,AJYA,AuDrKA,ACHA,AIZA,AKfA,ACHA,AFMA,AZoCA,A7DuLA,AoD5JA,A4BpFA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,ANkBA,A0D9KA,ACHA,AFMA,AGTA,AJYA,AXiCA,ACHA,ALeA;AU7BA,AJYA,AOrBA,AFMA,ACHA,A9F0RA,AuBrEA,AJYA,AuDrKA,ACHA,AIZA,AKfA,ACHA,AFMA,AZoCA,A7DuLA,AoD5JA,A4BpFA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,ANkBA,A0D9KA,ACHA,AFMA,AGTA,AJYA,AXiCA,ACHA,ALeA;AMjBA,AOrBA,AFMA,ACHA,A9F0RA,AuBrEA,AJYA,AuDrKA,ACHA,AIZA,AKfA,ACHA,AFMA,AZoCA,A7DuLA,AoD5JA,A4BpFA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,ANkBA,A0D9KA,ACHA,AFMA,AGTA,AJYA,AXiCA,ACHA,ALeA;AMjBA,AOrBA,ADGA,A9F0RA,AuBrEA,AJYA,AuDrKA,ACHA,AIZA,AKfA,ACHA,AFMA,AZoCA,A7DuLA,AoD5JA,A4BpFA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,ANkBA,A0D9KA,ACHA,AFMA,AGTA,AJYA,AXiCA,ACHA,ALeA;AMjBA,AOrBA,ADGA,A9F0RA,AuBrEA,AJYA,AuDrKA,ACHA,AIZA,AKfA,ACHA,AFMA,AZoCA,A7DuLA,AoD5JA,A4BpFA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,ANkBA,A0D9KA,ACHA,AFMA,AGTA,Af6CA,ACHA,ALeA;AMjBA,AOrBA,ADGA,A9F0RA,AuBrEA,AJYA,AuDrKA,ACHA,AIZA,AKfA,ACHA,AFMA,AZoCA,A7DuLA,AoD5JA,A4BpFA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,AoD5JA,ACHA,AFMA,AGTA,Af6CA,ACHA,ALeA;AMjBA,AOrBA,ADGA,A9F0RA,AuBrEA,AJYA,AuDrKA,ACHA,AIZA,AKfA,ACHA,AFMA,AZoCA,A7DuLA,AoD5JA,A4BpFA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,AoD5JA,ACHA,AFMA,AGTA,Af6CA,ACHA,ALeA;AMjBA,AOrBA,ADGA,A9F0RA,AuBrEA,AJYA,AuDrKA,ACHA,AIZA,AKfA,ACHA,AFMA,AZoCA,A7DuLA,AoD5JA,A4BpFA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,AoD5JA,ACHA,AFMA,AGTA,Af6CA,ACHA,ALeA;AMjBA,AOrBA,ADGA,A9F0RA,AuBrEA,AJYA,AuDrKA,ACHA,AIZA,AKfA,ACHA,AFMA,AZoCA,A7DuLA,AoD5JA,A4BpFA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,AoD5JA,ACHA,AFMA,AGTA,Af6CA,ACHA,ALeA;AMjBA,AOrBA,ADGA,A9F0RA,AuBrEA,AmDzJA,ACHA,AIZA,AKfA,ACHA,AFMA,AZoCA,A7DuLA,AoD5JA,A4BpFA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,AoD5JA,ACHA,ACHA,Af6CA,ACHA,ALeA;AMjBA,AOrBA,ADGA,A9F0RA,AuBrEA,AmDzJA,ACHA,AIZA,AKfA,ACHA,AFMA,AZoCA,A7DuLA,AoD5JA,A4BpFA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,AoD5JA,ACHA,ACHA,Af6CA,ACHA,ALeA;AMjBA,AOrBA,ADGA,A9F0RA,AuBrEA,AoD5JA,AIZA,AKfA,ACHA,AFMA,AZoCA,A7DuLA,AoD5JA,A4BpFA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,AoD5JA,ACHA,ACHA,Af6CA,ACHA,ALeA;AMjBA,AOrBA,ADGA,A9F0RA,AuBrEA,AoD5JA,AIZA,AKfA,ACHA,AFMA,AZoCA,A7DuLA,AoD5JA,A4BpFA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,AoD5JA,ACHA,ACHA,Af6CA,ACHA,ALeA;AMjBA,AOrBA,ADGA,A9F0RA,AuBrEA,AoD5JA,AIZA,AKfA,ACHA,AFMA,AZoCA,A7DuLA,AoD5JA,A4BpFA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,AoD5JA,ACHA,ACHA,Af6CA,ACHA,ALeA;AMjBA,AOrBA,ADGA,A9F0RA,AuBrEA,AoD5JA,AIZA,AKfA,ACHA,AFMA,AzE2NA,AoD5JA,A4BpFA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,AoD5JA,ACHA,ACHA,Af6CA,ACHA,ALeA;AMjBA,AOrBA,ADGA,A9F0RA,AuBrEA,AoD5JA,AIZA,AKfA,ACHA,AFMA,AzE2NA,AoD5JA,A4BpFA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,AoD5JA,ACHA,ACHA,Af6CA,ACHA,ALeA;AMjBA,AOrBA,ADGA,A9F0RA,AuBrEA,AoD5JA,AIZA,AKfA,ACHA,AFMA,AzE2NA,AoD5JA,A4BpFA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,AoD5JA,ACHA,ACHA,Af6CA,ACHA,ALeA;AMjBA,AOrBA,ADGA,A9F0RA,AuBrEA,AoD5JA,AIZA,AKfA,ACHA,AFMA,AzE2NA,AoD5JA,A4BpFA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,AoD5JA,ACHA,ACHA,Af6CA,ACHA,ALeA;AMjBA,AOrBA,ADGA,A9F0RA,AuBrEA,AoD5JA,AIZA,AKfA,ACHA,AFMA,AzE2NA,AoD5JA,A4BpFA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,AoD5JA,ACHA,ACHA,Af6CA,ACHA,ALeA;AMjBA,AOrBA,ADGA,A9F0RA,AuBrEA,AoD5JA,AIZA,AKfA,ACHA,AFMA,AzE2NA,AoD5JA,A4BpFA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,AoD5JA,ACHA,ACHA,Af6CA,ACHA,ALeA;AMjBA,AOrBA,ADGA,A9F0RA,AuBrEA,AoD5JA,AIZA,AKfA,ACHA,AFMA,AzE2NA,AoD5JA,A4BpFA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,AoD5JA,ACHA,ACHA,Af6CA,ACHA,ALeA;AMjBA,AOrBA,ADGA,A9F0RA,AuBrEA,AoD5JA,AIZA,AKfA,ACHA,AFMA,AzE2NA,AoD5JA,A4BpFA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,AoD5JA,ACHA,ACHA,Af6CA,ACHA,ALeA;AMjBA,AOrBA,ADGA,A9F0RA,AuBrEA,AoD5JA,AIZA,AKfA,ACHA,AFMA,AzE2NA,AoD5JA,A4BpFA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,AoD5JA,ACHA,ACHA,Af6CA,ACHA,ALeA;AMjBA,AOrBA,ADGA,A9F0RA,AuBrEA,AoD5JA,AIZA,AKfA,ACHA,AFMA,AzE2NA,AoD5JA,A4BpFA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,AoD5JA,ACHA,ACHA,Af6CA,ACHA,ALeA;AMjBA,AOrBA,ADGA,A9F0RA,AuBrEA,AoD5JA,AIZA,AKfA,ACHA,AFMA,AzE2NA,AoD5JA,A4BpFA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,AoD5JA,ACHA,ACHA,Af6CA,ACHA,ALeA;AMjBA,AOrBA,ADGA,A9F0RA,AuBrEA,AoD5JA,AIZA,AKfA,ACHA,AFMA,AzE2NA,AoD5JA,A4BpFA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,AoD5JA,ACHA,ACHA,Af6CA,ACHA,ALeA;AMjBA,AOrBA,ADGA,A9F0RA,AuBrEA,AoD5JA,AIZA,AKfA,ACHA,AFMA,AzE2NA,AoD5JA,A4BpFA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,AoD5JA,ACHA,ACHA,Af6CA,ACHA,ALeA;AMjBA,AOrBA,ADGA,A9F0RA,AuBrEA,AoD5JA,AIZA,AKfA,ACHA,AFMA,AzE2NA,AoD5JA,A4BpFA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,AoD5JA,ACHA,ACHA,Af6CA,ACHA,ALeA;AMjBA,AOrBA,A/F6RA,AuBrEA,AoD5JA,AIZA,AKfA,ACHA,AFMA,AzE2NA,AoD5JA,A4BpFA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,AoD5JA,ACHA,ACHA,Af6CA,ACHA,ALeA;AMjBA,AOrBA,A/F6RA,AuBrEA,AoD5JA,AIZA,AKfA,ACHA,AFMA,AzE2NA,AoD5JA,A4BpFA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,AoD5JA,ACHA,ACHA,Af6CA,ACHA,ALeA;AMjBA,AOrBA,A/F6RA,AuBrEA,AoD5JA,AIZA,AKfA,ACHA,AFMA,AzE2NA,AoD5JA,A4BpFA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,AoD5JA,ACHA,ACHA,Af6CA,ACHA,ALeA;AMjBA,AOrBA,A/F6RA,AuBrEA,AoD5JA,AIZA,AKfA,ACHA,AFMA,AzE2NA,AoD5JA,A4BpFA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,AoD5JA,ACHA,ACHA,Af6CA,ACHA,ALeA;AMjBA,AOrBA,A/F6RA,AuBrEA,AoD5JA,AIZA,AKfA,ACHA,AFMA,AzE2NA,AgFhPA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,AoD5JA,ACHA,ACHA,Af6CA,ACHA,ALeA;AMjBA,AOrBA,A/F6RA,AuBrEA,AoD5JA,AIZA,AKfA,ACHA,AFMA,AzE2NA,AgFhPA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,AoD5JA,ACHA,ACHA,Af6CA,ACHA,ALeA;AMjBA,AOrBA,A/F6RA,AuBrEA,AoD5JA,AIZA,AKfA,ACHA,AFMA,AzE2NA,AgFhPA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,AoD5JA,ACHA,ACHA,Af6CA,ACHA,ALeA;AMjBA,AOrBA,A/F6RA,AuBrEA,AoD5JA,AIZA,AKfA,ACHA,AFMA,AzE2NA,AgFhPA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,AoD5JA,ACHA,Ad0CA,ACHA,ALeA;AMjBA,AOrBA,A/F6RA,AuBrEA,AoD5JA,AIZA,AKfA,ACHA,AFMA,AzE2NA,AgFhPA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,AoD5JA,ACHA,Ad0CA,ACHA,ALeA;AMjBA,AOrBA,A/F6RA,AuBrEA,AoD5JA,AIZA,AKfA,ACHA,AFMA,AzE2NA,AgFhPA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,AoD5JA,ACHA,Ad0CA,ACHA,ALeA;AMjBA,AOrBA,A/F6RA,AuBrEA,AoD5JA,AIZA,AKfA,ACHA,AFMA,AzE2NA,AgFhPA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,AoD5JA,ACHA,Ad0CA,ACHA,ALeA;AMjBA,AOrBA,A/F6RA,AuBrEA,AoD5JA,AIZA,AKfA,ACHA,AFMA,AzE2NA,AgFhPA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,AoD5JA,ACHA,Ad0CA,ACHA,ALeA;AMjBA,AOrBA,A/F6RA,AuBrEA,AoD5JA,AIZA,AKfA,ACHA,AFMA,AzE2NA,AgFhPA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,AoD5JA,ACHA,Ad0CA,ACHA,ALeA;AMjBA,AOrBA,A/F6RA,AuBrEA,AoD5JA,AIZA,AKfA,ACHA,AFMA,AzE2NA,AgFhPA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,AoD5JA,ACHA,Ad0CA,ACHA,ALeA;AMjBA,AOrBA,A/F6RA,AuBrEA,AoD5JA,AIZA,AKfA,ACHA,AFMA,AzE2NA,AgFhPA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,AoD5JA,ACHA,Ad0CA,ACHA,ALeA;AMjBA,AOrBA,A/F6RA,AuBrEA,AoD5JA,AIZA,AKfA,ACHA,AFMA,AzE2NA,AgFhPA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,AoD5JA,ACHA,Ad0CA,ACHA,ALeA;AMjBA,AOrBA,A/F6RA,AuBrEA,AoD5JA,AIZA,AKfA,ACHA,AFMA,AzE2NA,AgFhPA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,AoD5JA,ACHA,Ad0CA,ACHA,ALeA;AMjBA,AOrBA,A/F6RA,AuBrEA,AoD5JA,AIZA,AKfA,ACHA,AFMA,AzE2NA,AgFhPA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,AoD5JA,ACHA,Ad0CA,ACHA,ALeA;AMjBA,AOrBA,A/F6RA,AuBrEA,AoD5JA,AIZA,AKfA,ACHA,AFMA,AzE2NA,AgFhPA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,AoD5JA,ACHA,Ad0CA,ACHA,ALeA;AMjBA,AOrBA,A/F6RA,AuBrEA,AoD5JA,AIZA,AKfA,ACHA,AFMA,AzE2NA,AgFhPA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,AoD5JA,ACHA,Ad0CA,ACHA,ALeA;AMjBA,AOrBA,A/F6RA,AuBrEA,AoD5JA,AIZA,AKfA,ACHA,AFMA,AzE2NA,AgFhPA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,AoD5JA,ACHA,Ad0CA,ACHA,ALeA;AMjBA,AOrBA,A/F6RA,AuBrEA,AoD5JA,AIZA,AKfA,ACHA,AFMA,AzE2NA,AgFhPA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,AoD5JA,ACHA,Ad0CA,ACHA,ALeA;AMjBA,AOrBA,A/F6RA,AuBrEA,AoD5JA,AIZA,AKfA,ACHA,AFMA,AzE2NA,AgFhPA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,AoD5JA,ACHA,Ad0CA,ACHA,ALeA;AMjBA,AOrBA,A/F6RA,AuBrEA,AoD5JA,AIZA,AKfA,ACHA,AFMA,AzE2NA,AgFhPA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,AoD5JA,ACHA,Ad0CA,ACHA,ALeA;AMjBA,AOrBA,A/F6RA,AuBrEA,AoD5JA,AIZA,AKfA,ACHA,AFMA,AzE2NA,AgFhPA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,AoD5JA,ACHA,Ad0CA,ACHA,ALeA;AMjBA,AOrBA,A/F6RA,AuBrEA,AoD5JA,AIZA,AKfA,ACHA,AFMA,AzE2NA,AgFhPA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,AoD5JA,ACHA,Ad0CA,ACHA,ALeA;AMjBA,AOrBA,A/F6RA,AuBrEA,AoD5JA,AIZA,AKfA,ACHA,AFMA,AzE2NA,AgFhPA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,AoD5JA,ACHA,Ad0CA,ACHA,ALeA;AMjBA,AOrBA,A/F6RA,AuBrEA,AoD5JA,AIZA,AKfA,ACHA,AFMA,AzE2NA,AgFhPA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,AoD5JA,ACHA,Ad0CA,ACHA,ALeA;AMjBA,AOrBA,A/F6RA,AuBrEA,AoD5JA,AIZA,AKfA,ACHA,AFMA,AzE2NA,AgFhPA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,AoD5JA,ACHA,Ad0CA,ACHA,ALeA;AMjBA,AOrBA,A/F6RA,AuBrEA,AoD5JA,AIZA,AKfA,ACHA,AFMA,AzE2NA,AgFhPA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,AoD5JA,ACHA,Ad0CA,ACHA,ALeA;AMjBA,AOrBA,A/F6RA,AuBrEA,AoD5JA,AIZA,AKfA,ACHA,AFMA,AzE2NA,AgFhPA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,AoD5JA,ACHA,Ad0CA,ACHA,ALeA;AMjBA,AOrBA,A/F6RA,AuBrEA,AwDxKA,AKfA,ACHA,AFMA,AzE2NA,AgFhPA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,AoD5JA,ACHA,Ad0CA,ACHA,ALeA;AMjBA,AOrBA,A/F6RA,AuBrEA,AwDxKA,AKfA,ACHA,AFMA,AzE2NA,AgFhPA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,AoD5JA,ACHA,Ad0CA,ACHA,ALeA;AMjBA,AOrBA,A/F6RA,AuBrEA,AwDxKA,AKfA,ACHA,AFMA,AzE2NA,AgFhPA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,AoD5JA,ACHA,Ad0CA,ACHA,ALeA;AMjBA,AOrBA,A/F6RA,AuBrEA,AwDxKA,AKfA,ACHA,AFMA,AzE2NA,AgFhPA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,AoD5JA,ACHA,Ad0CA,ACHA,ALeA;AMjBA,AOrBA,A/F6RA,AuBrEA,AwDxKA,AKfA,ACHA,AFMA,AzE2NA,AgFhPA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,AoD5JA,ACHA,Ad0CA,ACHA,ALeA;AMjBA,AOrBA,A/F6RA,AuBrEA,AwDxKA,AKfA,ACHA,AFMA,AzE2NA,AgFhPA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,AoD5JA,ACHA,Ad0CA,ACHA,ALeA;AMjBA,AOrBA,A/F6RA,AuBrEA,AwDxKA,AKfA,ACHA,AFMA,AzE2NA,AgFhPA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,AoD5JA,ACHA,Ad0CA,ACHA,ALeA;AMjBA,AOrBA,A/F6RA,AuBrEA,AwDxKA,AKfA,ACHA,AFMA,AzE2NA,AgFhPA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,AoD5JA,ACHA,Ad0CA,ACHA,ALeA;AMjBA,AOrBA,A/F6RA,AuBrEA,AwDxKA,AKfA,ACHA,AFMA,AzE2NA,AgFhPA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,AoD5JA,ACHA,Ad0CA,ACHA,ALeA;AMjBA,AOrBA,A/F6RA,AuBrEA,AwDxKA,AKfA,ACHA,AFMA,AzE2NA,AgFhPA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,AoD5JA,ACHA,Ad0CA,ACHA,ALeA;AMjBA,AOrBA,A/F6RA,AuBrEA,AwDxKA,AKfA,ACHA,AFMA,AzE2NA,AgFhPA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,AoD5JA,ACHA,Ad0CA,ACHA,ALeA;AMjBA,AOrBA,A/F6RA,AuBrEA,AwDxKA,AKfA,ACHA,AFMA,AzE2NA,AgFhPA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,AoD5JA,ACHA,Ad0CA,ACHA,ALeA;AMjBA,AOrBA,A/F6RA,AuBrEA,AwDxKA,AKfA,ACHA,AFMA,AzE2NA,AgFhPA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,AoD5JA,ACHA,Ad0CA,ACHA,ALeA;AMjBA,AOrBA,A/F6RA,AuBrEA,AwDxKA,AKfA,ACHA,AFMA,AzE2NA,AgFhPA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,AoD5JA,ACHA,Ad0CA,ACHA,ALeA;AMjBA,AOrBA,A/F6RA,AuBrEA,AwDxKA,AKfA,ACHA,AFMA,AzE2NA,AgFhPA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,AoD5JA,ACHA,Ad0CA,ACHA,ALeA;AMjBA,AOrBA,A/F6RA,AuBrEA,AwDxKA,AKfA,ACHA,AFMA,AzE2NA,AgFhPA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,AoD5JA,ACHA,Ad0CA,ACHA,ALeA;AMjBA,AOrBA,A/F6RA,AuBrEA,AwDxKA,AKfA,ACHA,AFMA,AzE2NA,AgFhPA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,AoD5JA,ACHA,Ad0CA,ACHA,ALeA;AMjBA,AOrBA,A/F6RA,AuBrEA,AwDxKA,AKfA,ACHA,AFMA,AzE2NA,AgFhPA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,AoD5JA,ACHA,Ad0CA,ACHA,ALeA;AMjBA,AOrBA,A/F6RA,AuBrEA,AwDxKA,AKfA,ACHA,AFMA,AzE2NA,AgFhPA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,AoD5JA,ACHA,Ad0CA,ACHA,ALeA;AMjBA,AOrBA,A/F6RA,AuBrEA,AwDxKA,AKfA,ACHA,AFMA,AzE2NA,AgFhPA,ACHA,AFMA,AxDwKA,AJYA,AkBtDA,AoD5JA,ACHA,Ad0CA,ACHA,ALeA;AMjBA,AOrBA,A/F6RA,AuBrEA,AwDxKA,AKfA,ACHA,AFMA,AzE2NA,AgFhPA,ACHA,A1D8KA,AJYA,AkBtDA,AoD5JA,ACHA,Ad0CA,ACHA,ALeA;AMjBA,AOrBA,A/F6RA,AuBrEA,AwDxKA,AKfA,ACHA,AFMA,AzE2NA,AgFhPA,ACHA,A1D8KA,AJYA,AkBtDA,AoD5JA,ACHA,Ad0CA,ACHA,ALeA;AMjBA,AOrBA,A/F6RA,AuBrEA,AwDxKA,AKfA,ACHA,AFMA,AzE2NA,AgFhPA,ACHA,A1D8KA,AJYA,AkBtDA,AoD5JA,ACHA,Ad0CA,ACHA,ALeA;AMjBA,AOrBA,A/F6RA,AuBrEA,AwDxKA,AKfA,ACHA,AFMA,AzE2NA,AgFhPA,ACHA,A1D8KA,AJYA,AkBtDA,AoD5JA,ACHA,Ad0CA,ACHA,ALeA;AMjBA,AOrBA,A/F6RA,AuBrEA,AwDxKA,AKfA,ACHA,AFMA,AzE2NA,AgFhPA,ACHA,A1D8KA,AJYA,AkBtDA,AoD5JA,ACHA,Ad0CA,ACHA,ALeA;AMjBA,AOrBA,A/F6RA,AuBrEA,AwDxKA,AKfA,ACHA,AFMA,AzE2NA,AgFhPA,ACHA,A1D8KA,AJYA,AkBtDA,AoD5JA,ACHA,Ad0CA,ACHA,ALeA;AMjBA,AOrBA,A/F6RA,AuBrEA,AwDxKA,AKfA,ACHA,AFMA,AzE2NA,AgFhPA,ACHA,A1D8KA,AJYA,AkBtDA,AoD5JA,ACHA,Ad0CA,ACHA,ALeA;AMjBA,AOrBA,A/F6RA,AuBrEA,AwDxKA,AKfA,ACHA,AFMA,AzE2NA,AgFhPA,ACHA,A1D8KA,AJYA,AkBtDA,AoD5JA,ACHA,Ad0CA,ACHA,ALeA;AMjBA,AOrBA,A/F6RA,AuBrEA,AwDxKA,AKfA,ACHA,AFMA,AzE2NA,AgFhPA,ACHA,A1D8KA,AJYA,AkBtDA,AoD5JA,ACHA,Ad0CA,ACHA,ALeA;AMjBA,AOrBA,A/F6RA,AuBrEA,AwDxKA,AKfA,ACHA,AFMA,AzE2NA,AgFhPA,ACHA,A1D8KA,AJYA,AkBtDA,AoD5JA,ACHA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,AuBrEA,AwDxKA,AKfA,ACHA,AFMA,AzE2NA,AgFhPA,ACHA,A1D8KA,AJYA,AkBtDA,AoD5JA,ACHA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,AuBrEA,AwDxKA,AKfA,ACHA,AFMA,AzE2NA,AgFhPA,ACHA,A1D8KA,AJYA,AkBtDA,AoD5JA,ACHA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,AuBrEA,AwDxKA,AKfA,ACHA,AFMA,AzE2NA,AgFhPA,ACHA,A1D8KA,Ac1CA,AoD5JA,ACHA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,AuBrEA,AwDxKA,AKfA,ACHA,AFMA,AzE2NA,AiFnPA,A1D8KA,Ac1CA,AoD5JA,ACHA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,AuBrEA,AwDxKA,AKfA,ADGA,AzE2NA,AiFnPA,A1D8KA,Ac1CA,AoD5JA,ACHA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,AuBrEA,AwDxKA,AKfA,ADGA,AzE2NA,AiFnPA,A1D8KA,Ac1CA,AoD5JA,ACHA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,AuBrEA,AwDxKA,AKfA,ADGA,AzE2NA,AiFnPA,A1D8KA,Ac1CA,AoD5JA,ACHA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,AuBrEA,AwDxKA,AKfA,ADGA,AzE2NA,AuBrEA,Ac1CA,AoD5JA,ACHA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,AuBrEA,AwDxKA,AKfA,ADGA,AzE2NA,AuBrEA,Ac1CA,AqD/JA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,AuBrEA,AwDxKA,AKfA,ADGA,AzE2NA,AuBrEA,AmEzMA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,AuBrEA,AwDxKA,AKfA,ADGA,AzE2NA,AuBrEA,AmEzMA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,AuBrEA,AwDxKA,AKfA,ADGA,AzE2NA,AuBrEA,AmEzMA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,AuBrEA,AwDxKA,AKfA,ADGA,AzE2NA,AuBrEA,AmEzMA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,AuBrEA,AwDxKA,AKfA,ADGA,AzE2NA,AuBrEA,AmEzMA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,AuBrEA,AwDxKA,AKfA,ADGA,AzE2NA,AuBrEA,AmEzMA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,AuBrEA,AwDxKA,AKfA,ADGA,AzE2NA,AuBrEA,AmEzMA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,AuBrEA,AwDxKA,AKfA,ADGA,AzE2NA,AuBrEA,AmEzMA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,AuBrEA,AwDxKA,AKfA,ADGA,AzE2NA,AuBrEA,AmEzMA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,AuBrEA,AwDxKA,AKfA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,AuBrEA,AwDxKA,AKfA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,AuBrEA,AwDxKA,AKfA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,AuBrEA,AwDxKA,AKfA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,AuBrEA,AwDxKA,AKfA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,AuBrEA,AwDxKA,AKfA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,AuBrEA,AwDxKA,AKfA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,AuBrEA,AwDxKA,AKfA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,AuBrEA,AwDxKA,AKfA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,AuBrEA,AwDxKA,AKfA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,AuBrEA,AwDxKA,AKfA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,AuBrEA,AwDxKA,AKfA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,AuBrEA,AwDxKA,AKfA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,AuBrEA,AwDxKA,AKfA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,AuBrEA,AwDxKA,AKfA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,AuBrEA,AwDxKA,AKfA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,AuBrEA,AwDxKA,AKfA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,AuBrEA,AwDxKA,AKfA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,AuBrEA,AwDxKA,AKfA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,AuBrEA,AwDxKA,AKfA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,AuBrEA,AwDxKA,AKfA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,AuBrEA,AwDxKA,AKfA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,AuBrEA,AwDxKA,AKfA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,A+E7OA,AKfA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,A+E7OA,AKfA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,A+E7OA,AKfA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,A+E7OA,AKfA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,A+E7OA,AKfA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,A+E7OA,AKfA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,A+E7OA,AKfA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,A+E7OA,AKfA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,A+E7OA,AKfA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,A+E7OA,AKfA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,A+E7OA,AKfA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,A+E7OA,AKfA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,A+E7OA,AKfA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,A+E7OA,AKfA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,A+E7OA,AKfA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,A+E7OA,AKfA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,A+E7OA,AKfA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,A+E7OA,AKfA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,A+E7OA,AKfA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,A+E7OA,AKfA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,A+E7OA,AKfA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,A+E7OA,AKfA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,A+E7OA,AKfA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,A+E7OA,AKfA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,A+E7OA,AKfA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,A+E7OA,AKfA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,A+E7OA,AKfA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,A+E7OA,AKfA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,A+E7OA,AKfA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,A+E7OA,AKfA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,A+E7OA,AKfA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,A+E7OA,AKfA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,A+E7OA,AKfA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,A+E7OA,AKfA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,A+E7OA,AKfA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,A+E7OA,AKfA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,A+E7OA,AKfA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,A+E7OA,AKfA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,A+E7OA,AKfA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,A+E7OA,AKfA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,A+E7OA,AKfA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,A+E7OA,AKfA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,A+E7OA,AKfA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,A+E7OA,AKfA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,A+E7OA,AKfA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,A+E7OA,AKfA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,A+E7OA,AKfA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,A+E7OA,AKfA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,A+E7OA,AKfA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,A+E7OA,AKfA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A0F9QA,Ad0CA,ACHA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A0F9QA,AbuCA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A0F9QA,AbuCA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A0F9QA,AbuCA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A0F9QA,AbuCA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A0F9QA,AbuCA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A0F9QA,AbuCA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A0F9QA,AbuCA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A0F9QA,AbuCA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A0F9QA,AbuCA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A0F9QA,AbuCA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A0F9QA,AbuCA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A0F9QA,AbuCA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A0F9QA,AbuCA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A0F9QA,AbuCA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A0F9QA,AbuCA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A0F9QA,AbuCA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A0F9QA,AbuCA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AoF5PA,ADGA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AmFzPA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AmFzPA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AmFzPA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AmFzPA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AmFzPA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AmFzPA,AzE2NA,A6EvOA,ALeA;AMjBA,AxFwQA,AmFzPA,AzE2NA,A6EvOA,ALeA;AlFuPA,AmFzPA,AzE2NA,A6EvOA,ALeA;AlFuPA,AmFzPA,AzE2NA,A6EvOA,ALeA;AlFuPA,AmFzPA,AzE2NA,A6EvOA,ALeA;AlFuPA,AmFzPA,AzE2NA,A6EvOA,ALeA;AlFuPA,AmFzPA,AzE2NA,A6EvOA,ALeA;AlFuPA,AmFzPA,AzE2NA,A6EvOA,ALeA;AlFuPA,AmFzPA,AzE2NA,A6EvOA,ALeA;AlFuPA,AmFzPA,AzE2NA,A6EvOA,ALeA;AlFuPA,AmFzPA,AzE2NA,A6EvOA,ALeA;AlFuPA,AmFzPA,AzE2NA,A6EvOA,ALeA;AlFuPA,AmFzPA,AzE2NA,A6EvOA,ALeA;AlFuPA,AmFzPA,AzE2NA,A6EvOA,ALeA;AlFuPA,AmFzPA,AzE2NA,A6EvOA,ALeA;AlFuPA,AmFzPA,AzE2NA,A6EvOA,ALeA;AlFuPA,AmFzPA,AzE2NA,A6EvOA,ALeA;AlFuPA,AmFzPA,AzE2NA,A6EvOA,ALeA;AlFuPA,AmFzPA,AzE2NA,A6EvOA,ALeA;AlFuPA,AmFzPA,AzE2NA,A6EvOA,ALeA;AlFuPA,AU9BA,A6EvOA,ALeA;AlFuPA,AU9BA,A6EvOA,ALeA;AlFuPA,AU9BA,A6EvOA,ALeA;AlFuPA,AU9BA,A6EvOA,ALeA;AlFuPA,AU9BA,A6EvOA,ALeA;AlFuPA,AU9BA,A6EvOA,ALeA;AlFuPA,AU9BA,A6EvOA,ALeA;AlFuPA,AU9BA,A6EvOA,ALeA;AlFuPA,AU9BA,A6EvOA,ALeA;AlFuPA,AU9BA,A6EvOA,ALeA;AlFuPA,AU9BA,A6EvOA,ALeA;AlFuPA,AU9BA,A6EvOA,ALeA;AlFuPA,AU9BA,A6EvOA,ALeA;AlFuPA,AU9BA,A6EvOA,ALeA;AlFuPA,AU9BA,A6EvOA,ALeA;AlFuPA,AU9BA,A6EvOA,ALeA;AlFuPA,AU9BA,A6EvOA,ALeA;AlFuPA,AU9BA,A6EvOA,ALeA;AlFuPA,AU9BA,A6EvOA,ALeA;AlFuPA,AU9BA,A6EvOA,ALeA;AlFuPA,AU9BA,A6EvOA,ALeA;AlFuPA,AU9BA,A6EvOA,ALeA;AlFuPA,AU9BA,A6EvOA,ALeA;AlFuPA,AU9BA,A6EvOA,ALeA;AlFuPA,AU9BA,A6EvOA,ALeA;AlFuPA,AU9BA,A6EvOA,ALeA;AlFuPA,AU9BA,A6EvOA,ALeA;AlFuPA,AU9BA,A6EvOA,ALeA;AlFuPA,AU9BA,A6EvOA,ALeA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA,AwExNA;AlFuPA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AV+BA,AU9BA;AACA;AACA;AACA;AACA","file":"index.js","sourcesContent":["\n\nexports.__esModule = true;\nexports[\"default\"] = exports.Component = void 0;\n\nvar _core = require(\"./core\");\n\nexports.Global = _core.Global;\nexports.Chart = _core.Chart;\nexports.Shape = _core.Shape;\nexports.G = _core.G;\nexports.Util = _core.Util;\nexports.Helper = _core.Helper;\nexports.track = _core.track;\n\nrequire(\"./geom/\");\n\nrequire(\"./geom/adjust/\");\n\nrequire(\"./coord/polar\");\n\nrequire(\"./component/axis/circle\");\n\nrequire(\"./component/guide/arc\");\n\nrequire(\"./component/guide/html\");\n\nrequire(\"./component/guide/line\");\n\nrequire(\"./component/guide/rect\");\n\nrequire(\"./component/guide/text\");\n\nrequire(\"./component/guide/tag\");\n\nrequire(\"./component/guide/point\");\n\nvar _marker = _interopRequireDefault(require(\"./component/marker\"));\n\nvar Tooltip = _interopRequireWildcard(require(\"./plugin/tooltip\"));\n\nvar Guide = _interopRequireWildcard(require(\"./plugin/guide\"));\n\nvar Legend = _interopRequireWildcard(require(\"./plugin/legend\"));\n\nvar Animation = _interopRequireWildcard(require(\"./animation/detail\"));\n\nvar _animate = _interopRequireDefault(require(\"./animation/animate\"));\n\nexports.Animate = _animate[\"default\"];\n\nrequire(\"./interaction/new/index\");\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n/**\n * Default, without interactins\n */\n// polar coordinate\n// the axis for polar coordinate\nvar Component = {\n  Marker: _marker[\"default\"]\n}; // register plugins\n\nexports.Component = Component;\n\n_core.Chart.plugins.register([Tooltip, Legend, Guide, Animation]); // 默认添加交互\n\n\nvar _default = {\n  Component: Component,\n  Global: _core.Global,\n  Chart: _core.Chart,\n  Shape: _core.Shape,\n  G: _core.G,\n  Util: _core.Util,\n  Helper: _core.Helper,\n  track: _core.track,\n  Animate: _animate[\"default\"]\n};\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nexports.Helper = exports.Util = exports.G = exports.track = exports.version = void 0;\n\nvar _global = _interopRequireDefault(require(\"./global\"));\n\nexports.Global = _global[\"default\"];\n\nvar _chart = _interopRequireDefault(require(\"./chart/chart\"));\n\nexports.Chart = _chart[\"default\"];\n\nvar _shape = _interopRequireDefault(require(\"./geom/shape/shape\"));\n\nexports.Shape = _shape[\"default\"];\n\nvar G = _interopRequireWildcard(require(\"./graphic/index\"));\n\nexports.G = G;\n\nvar Util = _interopRequireWildcard(require(\"./util/common\"));\n\nexports.Util = Util;\n\nvar Helper = _interopRequireWildcard(require(\"./util/helper\"));\n\nexports.Helper = Helper;\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar track = function track() {\n  return null;\n};\n\nexports.track = track;\nvar version = _global[\"default\"].version;\nexports.version = version;","\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _theme = _interopRequireDefault(require(\"./theme\"));\n\nvar _common = require(\"./util/common\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar Global = {\n  version: '3.7.7',\n  scales: {},\n  widthRatio: {\n    column: 1 / 2,\n    rose: 0.999999,\n    multiplePie: 3 / 4\n  },\n  lineDash: [4, 4]\n};\n\nGlobal.setTheme = function (theme) {\n  (0, _common.deepMix)(this, theme);\n};\n\nGlobal.setTheme(_theme[\"default\"]);\nvar _default = Global;\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _common = require(\"./util/common\");\n\n/**\n * @fileOverview default theme\n * @author dxq613@gail.com\n */\nvar color1 = '#E8E8E8'; // color of axis-line and axis-grid\n\nvar color2 = '#808080'; // color of axis label\n\nvar defaultAxis = {\n  label: {\n    fill: color2,\n    fontSize: 10\n  },\n  line: {\n    stroke: color1,\n    lineWidth: 1\n  },\n  grid: {\n    type: 'line',\n    stroke: color1,\n    lineWidth: 1,\n    lineDash: [2]\n  },\n  tickLine: null,\n  labelOffset: 7.5\n};\nvar Theme = {\n  fontFamily: '\"Helvetica Neue\", \"San Francisco\", Helvetica, Tahoma, Arial, \"PingFang SC\", \"Hiragino Sans GB\", \"Heiti SC\", \"Microsoft YaHei\", sans-serif',\n  defaultColor: '#1890FF',\n  pixelRatio: 1,\n  padding: 'auto',\n  appendPadding: 15,\n  colors: ['#1890FF', '#2FC25B', '#FACC14', '#223273', '#8543E0', '#13C2C2', '#3436C7', '#F04864'],\n  shapes: {\n    line: ['line', 'dash'],\n    point: ['circle', 'hollowCircle']\n  },\n  sizes: [4, 10],\n  axis: {\n    common: defaultAxis,\n    // common axis configuration\n    bottom: (0, _common.mix)({}, defaultAxis, {\n      grid: null\n    }),\n    left: (0, _common.mix)({}, defaultAxis, {\n      line: null\n    }),\n    right: (0, _common.mix)({}, defaultAxis, {\n      line: null\n    }),\n    circle: (0, _common.mix)({}, defaultAxis, {\n      line: null\n    }),\n    radius: (0, _common.mix)({}, defaultAxis, {\n      labelOffset: 4\n    })\n  },\n  shape: {\n    line: {\n      lineWidth: 2,\n      lineJoin: 'round',\n      lineCap: 'round'\n    },\n    point: {\n      lineWidth: 0,\n      size: 3\n    },\n    area: {\n      fillOpacity: 0.1\n    }\n  },\n  _defaultAxis: defaultAxis\n};\nvar _default = Theme;\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nvar _exportNames = {\n  isObjectValueEqual: true,\n  parsePadding: true,\n  directionEnabled: true,\n  toTimeStamp: true,\n  upperFirst: true,\n  lowerFirst: true,\n  isString: true,\n  isNumber: true,\n  isBoolean: true,\n  isFunction: true,\n  isDate: true,\n  isArray: true,\n  isNil: true,\n  isObject: true,\n  isPlainObject: true,\n  isEqual: true,\n  deepMix: true,\n  mix: true,\n  each: true,\n  uniq: true,\n  find: true,\n  Array: true\n};\nexports.isObjectValueEqual = isObjectValueEqual;\nexports.parsePadding = parsePadding;\nexports.directionEnabled = directionEnabled;\nexports.toTimeStamp = toTimeStamp;\nexports.Array = void 0;\n\nvar _util = require(\"@antv/util\");\n\nexports.upperFirst = _util.upperFirst;\nexports.lowerFirst = _util.lowerFirst;\nexports.isString = _util.isString;\nexports.isNumber = _util.isNumber;\nexports.isBoolean = _util.isBoolean;\nexports.isFunction = _util.isFunction;\nexports.isDate = _util.isDate;\nexports.isArray = _util.isArray;\nexports.isNil = _util.isNil;\nexports.isObject = _util.isObject;\nexports.isPlainObject = _util.isPlainObject;\nexports.isEqual = _util.isEqual;\nexports.deepMix = _util.deepMix;\nexports.mix = _util.mix;\nexports.each = _util.each;\nexports.uniq = _util.uniq;\nexports.find = _util.find;\n\nvar ArrayUtil = _interopRequireWildcard(require(\"./array\"));\n\nexports.Array = ArrayUtil;\n\nvar _dom = require(\"./dom\");\n\nObject.keys(_dom).forEach(function (key) {\n  if (key === \"default\" || key === \"__esModule\") return;\n  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;\n  exports[key] = _dom[key];\n});\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\n/**\n * @fileOverview Utility for F2\n * @author dxq613 @gmail.com\n * @author sima.zhang1990@gmail.com\n */\nfunction isObjectValueEqual(a, b) {\n  // for vue.js\n  a = Object.assign({}, a);\n  b = Object.assign({}, b);\n  var aProps = Object.getOwnPropertyNames(a);\n  var bProps = Object.getOwnPropertyNames(b);\n\n  if (aProps.length !== bProps.length) {\n    return false;\n  }\n\n  for (var i = 0, len = aProps.length; i < len; i++) {\n    var propName = aProps[i];\n\n    if (a[propName] !== b[propName]) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\nfunction parsePadding(padding) {\n  var top;\n  var right;\n  var bottom;\n  var left;\n\n  if ((0, _util.isNumber)(padding) || (0, _util.isString)(padding)) {\n    top = bottom = left = right = padding;\n  } else if ((0, _util.isArray)(padding)) {\n    top = padding[0];\n    right = !(0, _util.isNil)(padding[1]) ? padding[1] : padding[0];\n    bottom = !(0, _util.isNil)(padding[2]) ? padding[2] : padding[0];\n    left = !(0, _util.isNil)(padding[3]) ? padding[3] : right;\n  }\n\n  return [top, right, bottom, left];\n}\n\nfunction directionEnabled(mode, dir) {\n  if (mode === undefined) {\n    return true;\n  } else if (typeof mode === 'string') {\n    return mode.indexOf(dir) !== -1;\n  }\n\n  return false;\n}\n\nfunction toTimeStamp(value) {\n  if ((0, _util.isString)(value)) {\n    if (value.indexOf('T') > 0) {\n      value = new Date(value).getTime();\n    } else {\n      // new Date('2010/01/10') 和 new Date('2010-01-10') 的差别在于:\n      // 如果仅有年月日时,前者是带有时区的: Fri Jan 10 2020 02:40:13 GMT+0800 (中国标准时间)\n      // 后者会格式化成 Sun Jan 10 2010 08:00:00 GMT+0800 (中国标准时间)\n      value = new Date(value.replace(/-/gi, '/')).getTime();\n    }\n  }\n\n  if ((0, _util.isDate)(value)) {\n    value = value.getTime();\n  }\n\n  return value;\n}","\n\nexports.__esModule = true;\nexports.merge = merge;\nexports.values = values;\nexports.firstValue = firstValue;\nexports.group = group;\nexports.groupToMap = groupToMap;\nexports.remove = remove;\nexports.getRange = getRange;\n\nvar _util = require(\"@antv/util\");\n\nfunction merge(dataArray) {\n  var rst = [];\n\n  for (var i = 0, len = dataArray.length; i < len; i++) {\n    rst = rst.concat(dataArray[i]);\n  }\n\n  return rst;\n}\n\nfunction values(data, name) {\n  var rst = [];\n  var tmpMap = {};\n\n  for (var i = 0, len = data.length; i < len; i++) {\n    var obj = data[i];\n    var value = obj[name];\n\n    if (!(0, _util.isNil)(value)) {\n      if (!(0, _util.isArray)(value)) {\n        if (!tmpMap[value]) {\n          rst.push(value);\n          tmpMap[value] = true;\n        }\n      } else {\n        (0, _util.each)(value, function (val) {\n          if (!tmpMap[val]) {\n            rst.push(val);\n            tmpMap[val] = true;\n          }\n        });\n      }\n    }\n  }\n\n  return rst;\n}\n\nfunction firstValue(data, name) {\n  var rst = null;\n\n  for (var i = 0, len = data.length; i < len; i++) {\n    var obj = data[i];\n    var value = obj[name];\n\n    if (!(0, _util.isNil)(value)) {\n      if ((0, _util.isArray)(value)) {\n        rst = value[0];\n      } else {\n        rst = value;\n      }\n\n      break;\n    }\n  }\n\n  return rst;\n}\n\nfunction groupToMap(data, fields) {\n  if (!fields) {\n    return {\n      0: data\n    };\n  }\n\n  var callback = function callback(row) {\n    var unique = '_';\n\n    for (var i = 0, l = fields.length; i < l; i++) {\n      unique += row[fields[i]] && row[fields[i]].toString();\n    }\n\n    return unique;\n  };\n\n  var groups = {};\n\n  for (var i = 0, len = data.length; i < len; i++) {\n    var row = data[i];\n    var key = callback(row);\n\n    if (groups[key]) {\n      groups[key].push(row);\n    } else {\n      groups[key] = [row];\n    }\n  }\n\n  return groups;\n}\n\nfunction group(data, fields, appendConditions) {\n  if (appendConditions === void 0) {\n    appendConditions = {};\n  }\n\n  if (!fields) {\n    return [data];\n  }\n\n  var groups = groupToMap(data, fields);\n  var array = [];\n\n  if (fields.length === 1 && appendConditions[fields[0]]) {\n    var _values = appendConditions[fields[0]];\n    (0, _util.each)(_values, function (value) {\n      value = '_' + value;\n      array.push(groups[value]);\n    });\n  } else {\n    for (var i in groups) {\n      array.push(groups[i]);\n    }\n  }\n\n  return array;\n}\n\nfunction remove(arr, obj) {\n  if (!arr) {\n    return;\n  }\n\n  var index = arr.indexOf(obj);\n\n  if (index !== -1) {\n    arr.splice(index, 1);\n  }\n}\n\nfunction getRange(values) {\n  if (!values.length) {\n    return {\n      min: 0,\n      max: 0\n    };\n  }\n\n  var max = Math.max.apply(null, values);\n  var min = Math.min.apply(null, values);\n  return {\n    min: min,\n    max: max\n  };\n}","\n\nexports.__esModule = true;\nexports.isCanvasElement = isCanvasElement;\nexports.getPixelRatio = getPixelRatio;\nexports.getStyle = getStyle;\nexports.getWidth = getWidth;\nexports.getHeight = getHeight;\nexports.getDomById = getDomById;\nexports.getRelativePosition = getRelativePosition;\nexports.addEventListener = addEventListener;\nexports.removeEventListener = removeEventListener;\nexports.createEvent = createEvent;\nexports.measureText = measureText;\nexports.isBrowser = exports.isNode = exports.isMy = exports.isWx = void 0;\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  var supports = false;\n\n  try {\n    var options = Object.defineProperty({}, 'passive', {\n      get: function get() {\n        supports = true;\n      }\n    });\n    window.addEventListener('e', null, options);\n  } catch (e) {// continue regardless of error\n  }\n\n  return supports;\n}(); // Default passive to true as expected by Chrome for 'touchstart' and 'touchend' events.\n// https://github.com/chartjs/Chart.js/issues/4287\n\n\nvar eventListenerOptions = supportsEventListenerOptions ? {\n  passive: true\n} : false;\n/* global wx, my */\n// weixin miniprogram\n\nvar isWx = typeof wx === 'object' && typeof wx.getSystemInfoSync === 'function'; // ant miniprogram\n\nexports.isWx = isWx;\nvar isMy = typeof my === 'object' && typeof my.getSystemInfoSync === 'function'; // in node\n\nexports.isMy = isMy;\nvar isNode = typeof global && !typeof window; // in browser\n\nexports.isNode = isNode;\nvar isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.sessionStorage !== 'undefined';\nexports.isBrowser = isBrowser;\n\nfunction isCanvasElement(el) {\n  if (!el || typeof el !== 'object') return false;\n\n  if (el.nodeType === 1 && el.nodeName) {\n    // HTMLCanvasElement\n    return true;\n  } // CanvasElement\n\n\n  return !!el.isCanvasElement;\n}\n\nfunction getPixelRatio() {\n  return window && window.devicePixelRatio || 1;\n}\n\nfunction getStyle(el, property) {\n  return el.currentStyle ? el.currentStyle[property] : document.defaultView.getComputedStyle(el, null).getPropertyValue(property);\n}\n\nfunction getWidth(el) {\n  var width = getStyle(el, 'width');\n\n  if (width === 'auto') {\n    width = el.offsetWidth;\n  }\n\n  return parseFloat(width);\n}\n\nfunction getHeight(el) {\n  var height = getStyle(el, 'height');\n\n  if (height === 'auto') {\n    height = el.offsetHeight;\n  }\n\n  return parseFloat(height);\n}\n\nfunction getDomById(id) {\n  if (!id) {\n    return null;\n  }\n\n  return document.getElementById(id);\n}\n\nfunction getRelativePosition(point, canvas) {\n  var canvasDom = canvas.get('el');\n  if (!canvasDom) return point;\n\n  var _canvasDom$getBoundin = canvasDom.getBoundingClientRect(),\n      top = _canvasDom$getBoundin.top,\n      right = _canvasDom$getBoundin.right,\n      bottom = _canvasDom$getBoundin.bottom,\n      left = _canvasDom$getBoundin.left;\n\n  var paddingLeft = parseFloat(getStyle(canvasDom, 'padding-left'));\n  var paddingTop = parseFloat(getStyle(canvasDom, 'padding-top'));\n  var paddingRight = parseFloat(getStyle(canvasDom, 'padding-right'));\n  var paddingBottom = parseFloat(getStyle(canvasDom, 'padding-bottom'));\n  var width = right - left - paddingLeft - paddingRight;\n  var height = bottom - top - paddingTop - paddingBottom;\n  var pixelRatio = canvas.get('pixelRatio');\n  var mouseX = (point.x - left - paddingLeft) / width * canvasDom.width / pixelRatio;\n  var mouseY = (point.y - top - paddingTop) / height * canvasDom.height / pixelRatio;\n  return {\n    x: mouseX,\n    y: mouseY\n  };\n}\n\nfunction addEventListener(source, type, listener) {\n  source.addEventListener(type, listener, eventListenerOptions);\n}\n\nfunction removeEventListener(source, type, listener) {\n  source.removeEventListener(type, listener, eventListenerOptions);\n}\n\nfunction createEventObj(type, chart, x, y, nativeEvent) {\n  return {\n    type: type,\n    chart: chart,\n    \"native\": nativeEvent || null,\n    x: x !== undefined ? x : null,\n    y: y !== undefined ? y : null\n  };\n}\n\nfunction createEvent(event, chart) {\n  var type = event.type;\n  var clientPoint; // 说明是touch相关事件\n\n  if (event.touches) {\n    // https://developer.mozilla.org/zh-CN/docs/Web/API/TouchEvent/changedTouches\n    // 这里直接拿changedTouches就可以了,不管是touchstart, touchmove, touchend changedTouches 都是有的\n    // 为了以防万一,做个空判断\n    var touch = event.changedTouches[0] || {}; // x, y: 相对canvas原点的位置,clientX, clientY 相对于可视窗口的位置\n\n    var x = touch.x,\n        y = touch.y,\n        clientX = touch.clientX,\n        clientY = touch.clientY; // 小程序环境会有x,y,这里就直接返回\n\n    if (x && y) {\n      return createEventObj(type, chart, x, y, event);\n    }\n\n    clientPoint = {\n      x: clientX,\n      y: clientY\n    };\n  } else {\n    // mouse相关事件\n    clientPoint = {\n      x: event.clientX,\n      y: event.clientY\n    };\n  } // 理论上应该是只有有在浏览器环境才会走到这里\n\n\n  var canvas = chart.get('canvas'); // 通过clientX, clientY 计算x, y\n\n  var point = getRelativePosition(clientPoint, canvas);\n  return createEventObj(type, chart, point.x, point.y, event);\n}\n\nfunction measureText(text, font, ctx) {\n  if (!ctx) {\n    ctx = document.createElement('canvas').getContext('2d');\n  }\n\n  ctx.font = font || '12px sans-serif';\n  return ctx.measureText(text);\n}","\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _const = require(\"./const\");\n\nvar _base = _interopRequireDefault(require(\"../base\"));\n\nvar _plot = _interopRequireDefault(require(\"./plot\"));\n\nvar _common = require(\"../util/common\");\n\nvar _index = _interopRequireDefault(require(\"../coord/index\"));\n\nvar _base2 = _interopRequireDefault(require(\"../geom/base\"));\n\nvar _scale = _interopRequireDefault(require(\"./controller/scale\"));\n\nvar _axis = _interopRequireDefault(require(\"./controller/axis\"));\n\nvar _global = _interopRequireDefault(require(\"../global\"));\n\nvar _index2 = require(\"../graphic/index\");\n\nvar _helper = require(\"../util/helper\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction compare(a, b) {\n  return a - b;\n}\n\nfunction _isScaleExist(scales, compareScale) {\n  var flag = false;\n  (0, _common.each)(scales, function (scale) {\n    var scaleValues = [].concat(scale.values);\n    var compareScaleValues = [].concat(compareScale.values);\n\n    if (scale.type === compareScale.type && scale.field === compareScale.field && scaleValues.sort(compare).toString() === compareScaleValues.sort(compare).toString()) {\n      flag = true;\n      return;\n    }\n  });\n  return flag;\n}\n\nvar Chart = /*#__PURE__*/function (_Base) {\n  _inheritsLoose(Chart, _Base);\n\n  Chart.initPlugins = function initPlugins() {\n    return {\n      _plugins: [],\n      _cacheId: 0,\n      register: function register(plugins) {\n        var p = this._plugins;\n        [].concat(plugins).forEach(function (plugin) {\n          if (p.indexOf(plugin) === -1) {\n            p.push(plugin);\n          }\n        });\n        this._cacheId++;\n      },\n      unregister: function unregister(plugins) {\n        var p = this._plugins;\n        [].concat(plugins).forEach(function (plugin) {\n          var idx = p.indexOf(plugin);\n\n          if (idx !== -1) {\n            p.splice(idx, 1);\n          }\n        });\n        this._cacheId++;\n      },\n      clear: function clear() {\n        this._plugins = [];\n        this._cacheId++;\n      },\n      count: function count() {\n        return this._plugins.length;\n      },\n      getAll: function getAll() {\n        return this._plugins;\n      },\n      notify: function notify(chart, hook, args) {\n        var descriptors = this.descriptors(chart);\n        var ilen = descriptors.length;\n        var i;\n        var descriptor;\n        var plugin;\n        var params;\n        var method;\n\n        for (i = 0; i < ilen; ++i) {\n          descriptor = descriptors[i];\n          plugin = descriptor.plugin;\n          method = plugin[hook];\n\n          if (typeof method === 'function') {\n            params = [chart].concat(args || []);\n\n            if (method.apply(plugin, params) === false) {\n              return false;\n            }\n          }\n        }\n\n        return true;\n      },\n      descriptors: function descriptors(chart) {\n        var cache = chart._plugins || (chart._plugins = {});\n\n        if (cache.id === this._cacheId) {\n          return cache.descriptors;\n        }\n\n        var plugins = [];\n        var descriptors = [];\n\n        this._plugins.concat(chart && chart.get('plugins') || []).forEach(function (plugin) {\n          var idx = plugins.indexOf(plugin);\n\n          if (idx !== -1) {\n            return;\n          }\n\n          plugins.push(plugin);\n          descriptors.push({\n            plugin: plugin\n          });\n        });\n\n        cache.descriptors = descriptors;\n        cache.id = this._cacheId;\n        return descriptors;\n      }\n    };\n  };\n\n  var _proto = Chart.prototype;\n\n  _proto.getDefaultCfg = function getDefaultCfg() {\n    return {\n      /**\n       * the id of canvas\n       * @type {String}\n       */\n      id: null,\n      rendered: false,\n\n      /**\n       * padding\n       * @type {Array|Number}\n       */\n      padding: _global[\"default\"].padding,\n\n      /**\n       * data\n       * @type {Array}\n       */\n      data: null,\n\n      /**\n       * scales of chart\n       * @type {Object}\n       */\n      scales: {},\n\n      /**\n       * @private\n       * geometry instances\n       * @type {Array}\n       */\n      geoms: [],\n\n      /**\n       * scale configuration\n       * @type {Object}\n       */\n      colDefs: null,\n      pixelRatio: _global[\"default\"].pixelRatio,\n\n      /**\n       * filter options\n       * @type {Object}\n       */\n      filters: null,\n      appendPadding: _global[\"default\"].appendPadding\n    };\n  };\n\n  _proto._syncYScales = function _syncYScales() {\n    var syncY = this.get('syncY');\n\n    if (!syncY) {\n      return;\n    }\n\n    var geoms = this.get('geoms');\n    var syncScales = [];\n    var min = [];\n    var max = [];\n    (0, _common.each)(geoms, function (geom) {\n      var yScale = geom.getYScale();\n\n      if (yScale.isLinear) {\n        syncScales.push(yScale);\n        min.push(yScale.min);\n        max.push(yScale.max);\n      }\n    });\n    min = Math.min.apply(null, min);\n    max = Math.max.apply(null, max);\n    (0, _common.each)(syncScales, function (scale) {\n      scale.change({\n        min: min\n      });\n      scale.change({\n        max: max\n      });\n    });\n  };\n\n  _proto._getFieldsForLegend = function _getFieldsForLegend() {\n    var fields = [];\n    var geoms = this.get('geoms');\n    (0, _common.each)(geoms, function (geom) {\n      var attrOptions = geom.get('attrOptions');\n      var attrCfg = attrOptions.color;\n\n      if (attrCfg && attrCfg.field && (0, _common.isString)(attrCfg.field)) {\n        var arr = attrCfg.field.split('*');\n        (0, _common.each)(arr, function (item) {\n          if (fields.indexOf(item) === -1) {\n            fields.push(item);\n          }\n        });\n      }\n    });\n    return fields;\n  };\n\n  _proto._getScaleData = function _getScaleData(field) {\n    var data = this.get('data');\n    var filteredData = this.get('filteredData');\n\n    if (filteredData.length) {\n      var legendFields = this._getFieldsForLegend();\n\n      if (legendFields.indexOf(field) === -1) {\n        data = filteredData;\n      }\n    }\n\n    return data;\n  } // _updateScales() {\n  //   const scaleController = this.get('scaleController');\n  //   scaleController.updateScales();\n  //   this._adjustScale();\n  // }\n  ;\n\n  _proto._adjustScale = function _adjustScale() {\n    var self = this;\n    var scaleController = self.get('scaleController'); // 看起来是为了让柱状图最小或最大都默认从0开始\n\n    var geoms = this.get('geoms');\n\n    for (var i = 0; i < geoms.length; i++) {\n      var geom = geoms[i];\n\n      if (geom.get('type') === 'interval') {\n        var yScale = geom.getYScale();\n        scaleController.adjustStartZero(yScale);\n      }\n    }\n  };\n\n  _proto._removeGeoms = function _removeGeoms() {\n    var geoms = this.get('geoms');\n\n    while (geoms.length > 0) {\n      var geom = geoms.shift();\n      geom.destroy();\n    }\n  };\n\n  _proto._clearGeoms = function _clearGeoms() {\n    var geoms = this.get('geoms');\n\n    for (var i = 0, length = geoms.length; i < length; i++) {\n      var geom = geoms[i];\n      geom.clear();\n    }\n  };\n\n  _proto._clearInner = function _clearInner() {\n    this._clearGeoms();\n\n    Chart.plugins.notify(this, 'clearInner');\n    this.emit(_const.EVENT_CLEAR_INNER);\n    this.get('axisController') && this.get('axisController').clear();\n  };\n\n  _proto._initFilteredData = function _initFilteredData() {\n    var filters = this.get('filters');\n    var data = this.get('data') || [];\n\n    if (filters) {\n      data = data.filter(function (obj) {\n        var rst = true;\n        (0, _common.each)(filters, function (fn, k) {\n          if (fn) {\n            rst = fn(obj[k], obj);\n\n            if (!rst) {\n              return false;\n            }\n          }\n        });\n        return rst;\n      });\n    }\n\n    this.set('filteredData', data);\n  };\n\n  _proto._changeGeomsData = function _changeGeomsData() {\n    var geoms = this.get('geoms');\n    var data = this.get('filteredData');\n\n    for (var i = 0, length = geoms.length; i < length; i++) {\n      var geom = geoms[i];\n      geom.changeData(data);\n    }\n  };\n\n  _proto._initGeom = function _initGeom(geom) {\n    if (geom.get('isInit')) {\n      return;\n    }\n\n    var coord = this.get('coord');\n    var data = this.get('filteredData');\n    var colDefs = this.get('colDefs');\n    var middlePlot = this.get('middlePlot');\n    geom.set('chart', this);\n    geom.set('container', middlePlot.addGroup());\n    geom.set('data', data);\n    geom.set('coord', coord);\n    geom.set('colDefs', colDefs);\n    geom.init();\n    this.emit(_const.EVENT_AFTER_GEOM_INIT, geom);\n  };\n\n  _proto._initGeoms = function _initGeoms() {\n    var geoms = this.get('geoms');\n\n    for (var i = 0, length = geoms.length; i < length; i++) {\n      this._initGeom(geoms[i]);\n    }\n  };\n\n  _proto._initCoord = function _initCoord() {\n    var plot = this.get('plotRange');\n    var coordCfg = (0, _common.mix)({\n      type: 'cartesian'\n    }, this.get('coordCfg'), {\n      plot: plot\n    });\n    var type = coordCfg.type;\n\n    var C = _index[\"default\"][(0, _common.upperFirst)(type)];\n\n    var coord = new C(coordCfg);\n    this.set('coord', coord);\n  };\n\n  _proto._initLayout = function _initLayout() {\n    var padding = this.get('_padding');\n\n    if (!padding) {\n      padding = this.get('margin') || this.get('padding');\n      padding = (0, _common.parsePadding)(padding);\n    }\n\n    var top = padding[0] === 'auto' ? 0 : padding[0];\n    var right = padding[1] === 'auto' ? 0 : padding[1];\n    var bottom = padding[2] === 'auto' ? 0 : padding[2];\n    var left = padding[3] === 'auto' ? 0 : padding[3];\n    var width = this.get('width');\n    var height = this.get('height');\n    var start = {\n      x: left,\n      y: top\n    };\n    var end = {\n      x: width - right,\n      y: height - bottom\n    };\n    var plot = this.get('plot');\n\n    if (plot) {\n      plot.reset(start, end);\n      return;\n    }\n\n    var newPlot = new _plot[\"default\"]({\n      start: start,\n      end: end\n    });\n    this.set('plotRange', newPlot);\n    this.set('plot', newPlot);\n  };\n\n  _proto._initCanvas = function _initCanvas() {\n    var self = this;\n\n    try {\n      var canvas = new _index2.Canvas({\n        el: self.get('el') || self.get('id'),\n        context: self.get('context'),\n        pixelRatio: self.get('pixelRatio'),\n        width: self.get('width'),\n        height: self.get('height'),\n        fontFamily: _global[\"default\"].fontFamily\n      });\n      self.set('canvas', canvas);\n      self.set('el', canvas.get('el'));\n      self.set('width', canvas.get('width'));\n      self.set('height', canvas.get('height'));\n    } catch (error) {\n      throw error;\n    }\n\n    Chart.plugins.notify(self, 'afterCanvasInit');\n  };\n\n  _proto._initLayers = function _initLayers() {\n    var canvas = this.get('canvas');\n    this.set('backPlot', canvas.addGroup());\n    this.set('middlePlot', canvas.addGroup({\n      zIndex: 10\n    }));\n    this.set('frontPlot', canvas.addGroup({\n      zIndex: 20\n    }));\n  };\n\n  _proto._initEvents = function _initEvents() {\n    var _this2 = this;\n\n    // 数据更新后的一些更新\n    this.on(_const.EVENT_AFTER_DATA_CHANGE, function () {\n      // 数据更新后,重新设置filterdata\n      _this2._initFilteredData(); // 更新geoms里的数据\n\n\n      _this2._changeGeomsData();\n    }); // 大小变化后的一些更新\n\n    this.on(_const.EVENT_AFTER_SIZE_CHANGE, function () {\n      _this2._initLayout(); // layout变化后,坐标轴也需要做相应的变化\n\n\n      var coord = _this2.get('coord');\n\n      if (coord) {\n        coord.reset(_this2.get('plot'));\n      }\n    });\n  };\n\n  _proto._initScaleController = function _initScaleController() {\n    var scaleController = new _scale[\"default\"]({\n      chart: this\n    }); // 让colDefs 和 scaleController.defs 用同一个对象,这样就不用考虑同步的问题\n\n    this.set('colDefs', scaleController.defs); // 已经实例化的scales 也保持统一个对象\n\n    this.set('scales', scaleController.scales);\n    this.set('scaleController', scaleController);\n  };\n\n  _proto._clearScaleController = function _clearScaleController() {\n    var scaleController = this.get('scaleController');\n    scaleController.clear();\n  };\n\n  _proto._init = function _init() {\n    var self = this;\n\n    self._initCanvas();\n\n    self._initLayout();\n\n    self._initLayers();\n\n    self._initEvents();\n\n    self._initScaleController();\n\n    self.set('axisController', new _axis[\"default\"]({\n      frontPlot: self.get('frontPlot').addGroup({\n        className: 'axisContainer'\n      }),\n      backPlot: self.get('backPlot').addGroup({\n        className: 'axisContainer'\n      }),\n      chart: self\n    }));\n    Chart.plugins.notify(self, 'init');\n  };\n\n  function Chart(cfg) {\n    var _this;\n\n    _this = _Base.call(this, cfg) || this;\n\n    var self = _assertThisInitialized(_this);\n\n    (0, _common.each)(_base2[\"default\"], function (geomConstructor, className) {\n      var methodName = (0, _common.lowerFirst)(className);\n\n      self[methodName] = function (cfg) {\n        var geom = new geomConstructor(cfg);\n        self.addGeom(geom);\n        return geom;\n      };\n    });\n\n    self._init();\n\n    return _this;\n  }\n\n  _proto.init = function init() {\n    // 初始filterData\n    this._initFilteredData(); // initialization coordinate instance\n\n\n    this._initCoord();\n\n    Chart.plugins.notify(this, 'beforeGeomInit'); // init all geometry instances\n\n    this._initGeoms(); // 多 Y 轴的情况时,统一 Y 轴的数值范围。\n\n\n    this._syncYScales(); // do some adjust for data\n\n\n    this._adjustScale();\n\n    this.emit(_const.EVENT_AFTER_INIT);\n  }\n  /**\n   * set data and some scale configuration\n   * @chainable\n   * @param  {Array} data the dataset to visualize\n   * @param  {Object} colDefs the configuration for scales\n   * @return {Chart} return the chart instance\n   */\n  ;\n\n  _proto.source = function source(data, colDefs) {\n    this.set('data', data);\n\n    if (colDefs) {\n      this.scale(colDefs);\n    }\n\n    return this;\n  };\n\n  _proto.scale = function scale(field, cfg) {\n    var scaleController = this.get('scaleController');\n    scaleController.setFieldDef(field, cfg);\n    return this;\n  }\n  /**\n   * configure the axis\n   * @chainable\n   * @param  {String|Boolean} field the field name of data\n   * @param  {Object} cfg configuration for axis\n   * @return {Chart} return the chart instance\n   */\n  ;\n\n  _proto.axis = function axis(field, cfg) {\n    var axisController = this.get('axisController');\n\n    if (!field) {\n      axisController.axisCfg = null;\n    } else {\n      axisController.axisCfg = axisController.axisCfg || {};\n      axisController.axisCfg[field] = cfg;\n    }\n\n    return this;\n  }\n  /**\n   * configure the coordinate\n   * @chainable\n   * @param  {String} type set the type of coodinate\n   * @param  {Object} cfg configuration for coordinate\n   * @return {Chart} return the chart instance\n   */\n  ;\n\n  _proto.coord = function coord(type, cfg) {\n    var coordCfg;\n\n    if ((0, _common.isObject)(type)) {\n      coordCfg = type;\n    } else {\n      coordCfg = cfg || {};\n      coordCfg.type = type || 'cartesian';\n    }\n\n    this.set('coordCfg', coordCfg);\n    return this;\n  };\n\n  _proto.filter = function filter(field, condition) {\n    var filters = this.get('filters') || {};\n    filters[field] = condition;\n    this.set('filters', filters); // 如果已经render过,则再重新触发一次change\n\n    if (this.get('rendered')) {\n      this.emit(_const.EVENT_AFTER_DATA_CHANGE, this.get('data'));\n    }\n  }\n  /**\n   * render the chart\n   * @chainable\n   * @return {Chart} return the chart instance\n   */\n  ;\n\n  _proto.render = function render() {\n    var rendered = this.get('rendered');\n    var canvas = this.get('canvas');\n    var geoms = this.get('geoms'); // 已经渲染过\n\n    if (rendered) {\n      this._initGeoms();\n\n      this._adjustScale();\n    } else {\n      this.init();\n      this.set('rendered', true);\n    }\n\n    this.emit(_const.EVENT_BEFORE_RENDER);\n    Chart.plugins.notify(this, 'beforeGeomDraw');\n\n    this._renderAxis();\n\n    var middlePlot = this.get('middlePlot');\n\n    if (this.get('limitInPlot') && !middlePlot.attr('clip')) {\n      var coord = this.get('coord');\n      var clip = (0, _helper.getClip)(coord);\n      clip.set('canvas', middlePlot.get('canvas'));\n      middlePlot.attr('clip', clip);\n    }\n\n    this.emit(_const.EVENT_BEFORE_GEOM_DRAW);\n\n    for (var i = 0, length = geoms.length; i < length; i++) {\n      var geom = geoms[i];\n      geom.paint();\n    }\n\n    this.emit(_const.EVENT_AFTER_GEOM_DRAW);\n    Chart.plugins.notify(this, 'afterGeomDraw');\n    canvas.sort();\n    this.get('frontPlot').sort();\n    Chart.plugins.notify(this, 'beforeCanvasDraw');\n    canvas.draw();\n    this.emit(_const.EVENT_AFTER_RENDER);\n    return this;\n  }\n  /**\n   * clear the chart, include geometris and all the shapes\n   * @chainable\n   * @return {Chart} return the chart\n   */\n  ;\n\n  _proto.clear = function clear() {\n    Chart.plugins.notify(this, 'clear');\n    this.emit(_const.EVENT_CLEAR);\n\n    this._clearInner();\n\n    this._removeGeoms();\n\n    this._clearScaleController();\n\n    this.set('legendItems', null);\n    this.set('filters', null);\n    this.set('isUpdate', false);\n    this.set('_padding', null);\n    this.set('rendered', false);\n    var canvas = this.get('canvas');\n    canvas.draw();\n    return this;\n  };\n\n  _proto.repaint = function repaint() {\n    // 如果在没有render之前就repaint的,就直接return退出\n    var rendered = this.get('rendered');\n\n    if (!rendered) {\n      return;\n    }\n\n    this.set('isUpdate', true);\n    this.set('legendItems', null);\n    Chart.plugins.notify(this, 'repaint');\n\n    this._clearInner();\n\n    this.emit(_const.EVENT_REPAINT);\n    this.render();\n  };\n\n  _proto.changeData = function changeData(data) {\n    this.emit(_const.EVENT_BEFORE_DATA_CHANGE, data);\n    this.set('data', data);\n    Chart.plugins.notify(this, 'changeData');\n    this.emit(_const.EVENT_AFTER_DATA_CHANGE, data);\n    this.set('_padding', null);\n    this.repaint();\n  };\n\n  _proto.changeSize = function changeSize(width, height) {\n    if (width) {\n      this.set('width', width);\n    } else {\n      width = this.get('width');\n    }\n\n    if (height) {\n      this.set('height', height);\n    } else {\n      height = this.get('height');\n    }\n\n    var canvas = this.get('canvas');\n    canvas.changeSize(width, height);\n    this.emit(_const.EVENT_AFTER_SIZE_CHANGE, {\n      width: width,\n      height: height\n    });\n    this.repaint();\n    return this;\n  };\n\n  _proto.destroy = function destroy() {\n    this.clear();\n    var canvas = this.get('canvas');\n    canvas.destroy();\n    Chart.plugins.notify(this, 'afterCanvasDestroyed');\n\n    if (this._interactions) {\n      (0, _common.each)(this._interactions, function (interaction) {\n        interaction.destroy();\n      });\n    }\n\n    _Base.prototype.destroy.call(this);\n  }\n  /**\n   * calculate dataset's position on canvas\n   * @param  {Object} record the dataset\n   * @return {Object} return the position\n   */\n  ;\n\n  _proto.getPosition = function getPosition(record) {\n    var self = this;\n    var coord = self.get('coord');\n    var xScale = self.getXScale();\n    var xField = xScale.field;\n    var yScales = self.getYScales(); // default first\n\n    var yScale = yScales[0];\n    var yField = yScale.field;\n\n    for (var i = 0, len = yScales.length; i < len; i++) {\n      var scale = yScales[i];\n      var field = scale.field;\n\n      if (record[field]) {\n        yScale = scale;\n        yField = field;\n        break;\n      }\n    }\n\n    var x = xScale.scale(record[xField]);\n    var y = yScale.scale(record[yField]);\n    return coord.convertPoint({\n      x: x,\n      y: y\n    });\n  }\n  /**\n   * get the data item of the point\n   * @param  {Object} point canvas position\n   * @return {Object} return the data item\n   */\n  ;\n\n  _proto.getRecord = function getRecord(point) {\n    var self = this;\n    var coord = self.get('coord');\n    var xScale = self.getXScale();\n    var yScale = self.getYScales()[0];\n    var invertPoint = coord.invertPoint(point);\n    var record = {};\n    record[xScale.field] = xScale.invert(invertPoint.x);\n    record[yScale.field] = yScale.invert(invertPoint.y);\n    return record;\n  }\n  /**\n   * get the dataset of the point\n   * @param  {Object} point canvas position\n   * @return {Array} return the dataset\n  **/\n  ;\n\n  _proto.getSnapRecords = function getSnapRecords(point) {\n    var geom = this.get('geoms')[0];\n    var data = [];\n\n    if (geom) {\n      // need to judge\n      data = geom.getSnapRecords(point);\n    }\n\n    return data;\n  }\n  /**\n   * creat scale instances\n   * @param  {String} field field name of data\n   * @return {Scale} return the scale\n   */\n  ;\n\n  _proto.createScale = function createScale(field) {\n    var data = this._getScaleData(field);\n\n    var scaleController = this.get('scaleController');\n    return scaleController.createScale(field, data);\n  }\n  /**\n   * @protected\n   * add geometry instance to geoms\n   * @param {Geom} geom geometry instance\n   */\n  ;\n\n  _proto.addGeom = function addGeom(geom) {\n    var geoms = this.get('geoms');\n    geoms.push(geom);\n  }\n  /**\n   * get the scale of x axis\n   * @return {Scale} return the scale\n   */\n  ;\n\n  _proto.getXScale = function getXScale() {\n    var self = this;\n    var geoms = self.get('geoms');\n    var xScale = geoms[0].getXScale();\n    return xScale;\n  }\n  /**\n   * get the scale of y axis\n   * @return {Array} return the scale\n   */\n  ;\n\n  _proto.getYScales = function getYScales() {\n    var geoms = this.get('geoms');\n    var rst = [];\n    (0, _common.each)(geoms, function (geom) {\n      var yScale = geom.getYScale();\n\n      if (rst.indexOf(yScale) === -1) {\n        rst.push(yScale);\n      }\n    });\n    return rst;\n  };\n\n  _proto.getLegendItems = function getLegendItems() {\n    if (this.get('legendItems')) {\n      return this.get('legendItems');\n    }\n\n    var legendItems = {};\n    var scales = [];\n    var geoms = this.get('geoms');\n    (0, _common.each)(geoms, function (geom) {\n      var colorAttr = geom.getAttr('color');\n\n      if (colorAttr) {\n        var scale = colorAttr.getScale('color'); // 只支持分类图例\n\n        if (scale.isCategory && !_isScaleExist(scales, scale)) {\n          scales.push(scale);\n          var field = scale.field;\n          var ticks = scale.getTicks();\n          var items = [];\n          (0, _common.each)(ticks, function (tick) {\n            var text = tick.text;\n            var name = text;\n            var scaleValue = tick.value;\n            var value = scale.invert(scaleValue);\n\n            var color = colorAttr.mapping(value).join('') || _global[\"default\"].defaultColor;\n\n            var marker = {\n              fill: color,\n              radius: 3,\n              symbol: 'circle',\n              stroke: '#fff'\n            };\n            items.push({\n              name: name,\n              // for display\n              dataValue: value,\n              // the origin value\n              checked: true,\n              marker: marker\n            });\n          });\n          legendItems[field] = items;\n        }\n      }\n    });\n    this.set('legendItems', legendItems);\n    return legendItems;\n  } // register the plugins\n  ;\n\n  _proto.registerPlugins = function registerPlugins(plugins) {\n    var self = this;\n    var chartPlugins = self.get('plugins') || [];\n\n    if (!(0, _common.isArray)(chartPlugins)) {\n      chartPlugins = [chartPlugins];\n    }\n\n    [].concat(plugins).forEach(function (plugin) {\n      if (chartPlugins.indexOf(plugin) === -1) {\n        plugin.init && plugin.init(self); // init\n\n        chartPlugins.push(plugin);\n      }\n    });\n    Chart.plugins._cacheId++;\n    self.set('plugins', chartPlugins);\n  };\n\n  _proto._renderAxis = function _renderAxis() {\n    var axisController = this.get('axisController');\n    var xScale = this.getXScale();\n    var yScales = this.getYScales();\n    var coord = this.get('coord');\n    Chart.plugins.notify(this, 'beforeRenderAxis');\n    axisController.createAxis(coord, xScale, yScales);\n  };\n\n  _proto._isAutoPadding = function _isAutoPadding() {\n    if (this.get('_padding')) {\n      return false;\n    }\n\n    var padding = this.get('padding');\n\n    if ((0, _common.isArray)(padding)) {\n      return padding.indexOf('auto') !== -1;\n    }\n\n    return padding === 'auto';\n  };\n\n  _proto._updateLayout = function _updateLayout(padding) {\n    var width = this.get('width');\n    var height = this.get('height');\n    var start = {\n      x: padding[3],\n      y: padding[0]\n    };\n    var end = {\n      x: width - padding[1],\n      y: height - padding[2]\n    };\n    var plot = this.get('plot');\n    var coord = this.get('coord');\n    plot.reset(start, end);\n    coord.reset(plot);\n  };\n\n  return Chart;\n}(_base[\"default\"]);\n\nChart.plugins = Chart.initPlugins();\nvar _default = Chart;\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nexports.EVENT_REPAINT = exports.EVENT_CLEAR_INNER = exports.EVENT_CLEAR = exports.EVENT_AFTER_GEOM_DRAW = exports.EVENT_BEFORE_GEOM_DRAW = exports.EVENT_AFTER_GEOM_INIT = exports.EVENT_AFTER_SIZE_CHANGE = exports.EVENT_AFTER_DATA_CHANGE = exports.EVENT_BEFORE_DATA_CHANGE = exports.EVENT_AFTER_RENDER = exports.EVENT_BEFORE_RENDER = exports.EVENT_AFTER_INIT = void 0;\nvar EVENT_AFTER_INIT = 'afterinit';\nexports.EVENT_AFTER_INIT = EVENT_AFTER_INIT;\nvar EVENT_BEFORE_RENDER = 'beforerender';\nexports.EVENT_BEFORE_RENDER = EVENT_BEFORE_RENDER;\nvar EVENT_AFTER_RENDER = 'afterrender';\nexports.EVENT_AFTER_RENDER = EVENT_AFTER_RENDER;\nvar EVENT_BEFORE_DATA_CHANGE = 'beforedatachange';\nexports.EVENT_BEFORE_DATA_CHANGE = EVENT_BEFORE_DATA_CHANGE;\nvar EVENT_AFTER_DATA_CHANGE = 'afterdatachange';\nexports.EVENT_AFTER_DATA_CHANGE = EVENT_AFTER_DATA_CHANGE;\nvar EVENT_AFTER_SIZE_CHANGE = '_aftersizechange';\nexports.EVENT_AFTER_SIZE_CHANGE = EVENT_AFTER_SIZE_CHANGE;\nvar EVENT_AFTER_GEOM_INIT = '_aftergeominit';\nexports.EVENT_AFTER_GEOM_INIT = EVENT_AFTER_GEOM_INIT;\nvar EVENT_BEFORE_GEOM_DRAW = 'beforegeomdraw';\nexports.EVENT_BEFORE_GEOM_DRAW = EVENT_BEFORE_GEOM_DRAW;\nvar EVENT_AFTER_GEOM_DRAW = 'aftergeomdraw';\nexports.EVENT_AFTER_GEOM_DRAW = EVENT_AFTER_GEOM_DRAW;\nvar EVENT_CLEAR = 'clear';\nexports.EVENT_CLEAR = EVENT_CLEAR;\nvar EVENT_CLEAR_INNER = 'clearinner';\nexports.EVENT_CLEAR_INNER = EVENT_CLEAR_INNER;\nvar EVENT_REPAINT = 'repaint';\nexports.EVENT_REPAINT = EVENT_REPAINT;","\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _emit = _interopRequireDefault(require(\"./graphic/event/emit\"));\n\nvar _common = require(\"./util/common\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar Base = /*#__PURE__*/function (_Emit) {\n  _inheritsLoose(Base, _Emit);\n\n  var _proto = Base.prototype;\n\n  _proto.getDefaultCfg = function getDefaultCfg() {\n    return {};\n  };\n\n  function Base(cfg) {\n    var _this;\n\n    _this = _Emit.call(this) || this;\n    var attrs = {};\n\n    var defaultCfg = _this.getDefaultCfg();\n\n    _this._attrs = attrs;\n    (0, _common.mix)(attrs, defaultCfg, cfg);\n    return _this;\n  }\n\n  _proto.get = function get(name) {\n    return this._attrs[name];\n  };\n\n  _proto.set = function set(name, value) {\n    this._attrs[name] = value;\n  };\n\n  _proto.destroy = function destroy() {\n    this._attrs = {};\n    this.destroyed = true;\n  };\n\n  return Base;\n}(_emit[\"default\"]);\n\nvar _default = Base;\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _common = require(\"../../util/common\");\n\n// 实现简单的事件机制\nvar EventEmit = /*#__PURE__*/function () {\n  function EventEmit() {\n    this.__events = {};\n  }\n\n  var _proto = EventEmit.prototype;\n\n  _proto.on = function on(type, listener) {\n    if (!type || !listener) {\n      return;\n    }\n\n    var events = this.__events[type] || [];\n    events.push(listener);\n    this.__events[type] = events;\n  };\n\n  _proto.emit = function emit(type, e) {\n    var _this = this;\n\n    if ((0, _common.isObject)(type)) {\n      e = type;\n      type = e && e.type;\n    }\n\n    if (!type) {\n      return;\n    }\n\n    var events = this.__events[type];\n\n    if (!events || !events.length) {\n      return;\n    }\n\n    events.forEach(function (listener) {\n      listener.call(_this, e);\n    });\n  };\n\n  _proto.off = function off(type, listener) {\n    var __events = this.__events;\n    var events = __events[type];\n\n    if (!events || !events.length) {\n      return;\n    } // 如果没有指定方法,则删除所有项\n\n\n    if (!listener) {\n      delete __events[type];\n      return;\n    } // 删除指定的 listener\n\n\n    for (var i = 0, len = events.length; i < len; i++) {\n      if (events[i] === listener) {\n        events.splice(i, 1);\n        i--;\n      }\n    }\n  };\n\n  return EventEmit;\n}();\n\nvar _default = EventEmit;\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _common = require(\"../util/common\");\n\nvar Plot = /*#__PURE__*/function () {\n  function Plot(cfg) {\n    (0, _common.mix)(this, cfg);\n\n    this._init();\n  }\n\n  var _proto = Plot.prototype;\n\n  _proto._init = function _init() {\n    var self = this;\n    var start = self.start;\n    var end = self.end;\n    var xMin = Math.min(start.x, end.x);\n    var xMax = Math.max(start.x, end.x);\n    var yMin = Math.min(start.y, end.y);\n    var yMax = Math.max(start.y, end.y);\n    this.tl = {\n      x: xMin,\n      y: yMin\n    };\n    this.tr = {\n      x: xMax,\n      y: yMin\n    };\n    this.bl = {\n      x: xMin,\n      y: yMax\n    };\n    this.br = {\n      x: xMax,\n      y: yMax\n    };\n    this.width = xMax - xMin;\n    this.height = yMax - yMin;\n  }\n  /**\n   * reset\n   * @param  {Object} start start point\n   * @param  {Object} end end point\n   */\n  ;\n\n  _proto.reset = function reset(start, end) {\n    this.start = start;\n    this.end = end;\n\n    this._init();\n  }\n  /**\n   * check the point is in the range of plot\n   * @param  {Number}  x x value\n   * @param  {[type]}  y y value\n   * @return {Boolean} return the result\n   */\n  ;\n\n  _proto.isInRange = function isInRange(x, y) {\n    if ((0, _common.isObject)(x)) {\n      y = x.y;\n      x = x.x;\n    }\n\n    var tl = this.tl;\n    var br = this.br;\n    return tl.x <= x && x <= br.x && tl.y <= y && y <= br.y;\n  };\n\n  return Plot;\n}();\n\nvar _default = Plot;\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _base = _interopRequireDefault(require(\"./base\"));\n\nrequire(\"./cartesian\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar _default = _base[\"default\"];\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _common = require(\"../util/common\");\n\nvar _matrix = _interopRequireDefault(require(\"../graphic/util/matrix\"));\n\nvar _vector = _interopRequireDefault(require(\"../graphic/util/vector2\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar defaultMatrix = [1, 0, 0, 1, 0, 0];\n\nvar Base = /*#__PURE__*/function () {\n  var _proto = Base.prototype;\n\n  _proto._initDefaultCfg = function _initDefaultCfg() {};\n\n  function Base(cfg) {\n    this._initDefaultCfg();\n\n    (0, _common.mix)(this, cfg);\n    var start;\n    var end;\n\n    if (this.plot) {\n      start = this.plot.bl;\n      end = this.plot.tr;\n      this.start = start;\n      this.end = end;\n    } else {\n      start = this.start;\n      end = this.end;\n    }\n\n    this.init(start, end);\n  }\n\n  _proto._scale = function _scale(s1, s2) {\n    var matrix = this.matrix;\n    var center = this.center;\n\n    _matrix[\"default\"].translate(matrix, matrix, [center.x, center.y]);\n\n    _matrix[\"default\"].scale(matrix, matrix, [s1, s2]);\n\n    _matrix[\"default\"].translate(matrix, matrix, [-center.x, -center.y]);\n  };\n\n  _proto.init = function init(start, end) {\n    this.matrix = [].concat(defaultMatrix); // 设置中心点\n\n    this.center = {\n      x: (end.x - start.x) / 2 + start.x,\n      y: (end.y - start.y) / 2 + start.y\n    };\n\n    if (this.scale) {\n      this._scale(this.scale[0], this.scale[1]);\n    }\n  };\n\n  _proto.convertPoint = function convertPoint(point) {\n    var _this$_convertPoint = this._convertPoint(point),\n        x = _this$_convertPoint.x,\n        y = _this$_convertPoint.y;\n\n    if (!_matrix[\"default\"].isChanged(this.matrix)) {\n      return {\n        x: x,\n        y: y\n      };\n    }\n\n    var vector = [x, y];\n\n    _vector[\"default\"].transformMat2d(vector, vector, this.matrix);\n\n    return {\n      x: vector[0],\n      y: vector[1]\n    };\n  };\n\n  _proto.invertPoint = function invertPoint(point) {\n    return this._invertPoint(point);\n  };\n\n  _proto._convertPoint = function _convertPoint(point) {\n    return point;\n  };\n\n  _proto._invertPoint = function _invertPoint(point) {\n    return point;\n  };\n\n  _proto.reset = function reset(plot) {\n    this.plot = plot;\n    var bl = plot.bl,\n        tr = plot.tr;\n    this.start = bl;\n    this.end = tr;\n    this.init(bl, tr);\n  };\n\n  return Base;\n}();\n\nvar _default = Base;\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\nvar Matrix = {\n  generateDefault: function generateDefault() {\n    return [1, 0, 0, 1, 0, 0];\n  },\n  isChanged: function isChanged(m) {\n    return m[0] !== 1 || m[1] !== 0 || m[2] !== 0 || m[3] !== 1 || m[4] !== 0 || m[5] !== 0;\n  },\n  multiply: function multiply(m1, m2) {\n    var m11 = m1[0] * m2[0] + m1[2] * m2[1];\n    var m12 = m1[1] * m2[0] + m1[3] * m2[1];\n    var m21 = m1[0] * m2[2] + m1[2] * m2[3];\n    var m22 = m1[1] * m2[2] + m1[3] * m2[3];\n    var dx = m1[0] * m2[4] + m1[2] * m2[5] + m1[4];\n    var dy = m1[1] * m2[4] + m1[3] * m2[5] + m1[5];\n    return [m11, m12, m21, m22, dx, dy];\n  },\n  scale: function scale(out, m, v) {\n    out[0] = m[0] * v[0];\n    out[1] = m[1] * v[0];\n    out[2] = m[2] * v[1];\n    out[3] = m[3] * v[1];\n    out[4] = m[4];\n    out[5] = m[5];\n    return out;\n  },\n  rotate: function rotate(out, m, radian) {\n    var c = Math.cos(radian);\n    var s = Math.sin(radian);\n    var m11 = m[0] * c + m[2] * s;\n    var m12 = m[1] * c + m[3] * s;\n    var m21 = m[0] * -s + m[2] * c;\n    var m22 = m[1] * -s + m[3] * c;\n    out[0] = m11;\n    out[1] = m12;\n    out[2] = m21;\n    out[3] = m22;\n    out[4] = m[4];\n    out[5] = m[5];\n    return out;\n  },\n  translate: function translate(out, m, v) {\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] + m[0] * v[0] + m[2] * v[1];\n    out[5] = m[5] + m[1] * v[0] + m[3] * v[1];\n    return out;\n  },\n  transform: function transform(m, actions) {\n    var out = [].concat(m);\n\n    for (var i = 0, len = actions.length; i < len; i++) {\n      var action = actions[i];\n\n      switch (action[0]) {\n        case 't':\n          Matrix.translate(out, out, [action[1], action[2]]);\n          break;\n\n        case 's':\n          Matrix.scale(out, out, [action[1], action[2]]);\n          break;\n\n        case 'r':\n          Matrix.rotate(out, out, action[1]);\n          break;\n\n        default:\n          break;\n      }\n    }\n\n    return out;\n  }\n};\nvar _default = Matrix;\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\n/**\n * 2 Dimensional Vector\n * @module vector2\n */\nvar _default = {\n  /**\n   * Creates a new, empty vector2\n   *\n   * @return {vector2} a new 2D vector\n   */\n  create: function create() {\n    return [0, 0];\n  },\n\n  /**\n   * Calculates the length of a vector2\n   *\n   * @param {vector2} v vector to calculate length of\n   * @return {Number} length of v\n   */\n  length: function length(v) {\n    var x = v[0];\n    var y = v[1];\n    return Math.sqrt(x * x + y * y);\n  },\n\n  /**\n   * Normalize a vector2\n   *\n   * @param {vector2} out the receiving vector\n   * @param {vector2} v vector to normalize\n   * @return {vector2} out\n   */\n  normalize: function normalize(out, v) {\n    var len = this.length(v);\n\n    if (len === 0) {\n      out[0] = 0;\n      out[1] = 0;\n    } else {\n      out[0] = v[0] / len;\n      out[1] = v[1] / len;\n    }\n\n    return out;\n  },\n\n  /**\n   * Adds two vector2's\n   *\n   * @param {vector2} out the receiving vector\n   * @param {vector2} v1 the first operand\n   * @param {vector2} v2 the second operand\n   * @return {vector2} out\n   */\n  add: function 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   * Subtracts vector v2 from vector v1\n   *\n   * @param {vector2} out the receiving vector\n   * @param {vector2} v1 the first operand\n   * @param {vector2} v2 the second operand\n   * @return {vector2} out\n   */\n  sub: function 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   * Scales a vector2 by a scalar number\n   *\n   * @param {vector2} out the receiving vector\n   * @param {vector2} v the vector to scale\n   * @param {Number} s amount to scale the vector by\n   * @return {vector2} out\n   */\n  scale: function scale(out, v, s) {\n    out[0] = v[0] * s;\n    out[1] = v[1] * s;\n    return out;\n  },\n\n  /**\n   * Calculates the dot product of two vector2's\n   *\n   * @param {vector2} v1 the first operand\n   * @param {vector2} v2 the second operand\n   * @return {Number} dot product of v1 and v2\n   */\n  dot: function dot(v1, v2) {\n    return v1[0] * v2[0] + v1[1] * v2[1];\n  },\n\n  /**\n   * Calculates the direction of two vector2's\n   *\n   * @param {vector2} v1 the first operand\n   * @param {vector2} v2 the second operand\n   * @return {Boolean} the direction of v1 and v2\n   */\n  direction: function direction(v1, v2) {\n    return v1[0] * v2[1] - v2[0] * v1[1];\n  },\n\n  /**\n   * Calculates the angle of two vector2's\n   *\n   * @param {vector2} v1 the first operand\n   * @param {vector2} v2 the second operand\n   * @return {Number} angle of v1 and v2\n   */\n  angle: function angle(v1, v2) {\n    var theta = this.dot(v1, v2) / (this.length(v1) * this.length(v2));\n    return Math.acos(theta);\n  },\n\n  /**\n   * Calculates the angle of two vector2's with direction\n   *\n   * @param {vector2} v1 the first operand\n   * @param {vector2} v2 the second operand\n   * @param {Boolean} direction the direction of two vector2's\n   * @return {Number} angle of v1 and v2\n   */\n  angleTo: function angleTo(v1, v2, direction) {\n    var angle = this.angle(v1, v2);\n    var angleLargeThanPI = this.direction(v1, v2) >= 0;\n\n    if (direction) {\n      if (angleLargeThanPI) {\n        return Math.PI * 2 - angle;\n      }\n\n      return angle;\n    }\n\n    if (angleLargeThanPI) {\n      return angle;\n    }\n\n    return Math.PI * 2 - angle;\n  },\n\n  /**\n   * whether a vector2 is zero vector\n   *\n   * @param  {vector2} v vector to calculate\n   * @return {Boolean}   is or not a zero vector\n   */\n  zero: function zero(v) {\n    return v[0] === 0 && v[1] === 0;\n  },\n\n  /**\n   * Calculates the euclidian distance between two vector2's\n   *\n   * @param {vector2} v1 the first operand\n   * @param {vector2} v2 the second operand\n   * @return {Number} distance between a and b\n   */\n  distance: function distance(v1, v2) {\n    var x = v2[0] - v1[0];\n    var y = v2[1] - v1[1];\n    return Math.sqrt(x * x + y * y);\n  },\n\n  /**\n   * Creates a new vector2 initialized with values from an existing vector\n   *\n   * @param {vector2} v vector to clone\n   * @return {Array} a new 2D vector\n   */\n  clone: function clone(v) {\n    return [v[0], v[1]];\n  },\n\n  /**\n   * Return the minimum of two vector2's\n   *\n   * @param {vector2} out the receiving vector\n   * @param {vector2} v1 the first operand\n   * @param {vector2} v2 the second operand\n   * @return {vector2} out\n   */\n  min: function 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   * Return the maximum of two vector2's\n   *\n   * @param {vector2} out the receiving vector\n   * @param {vector2} v1 the first operand\n   * @param {vector2} v2 the second operand\n   * @return {vector2} out\n   */\n  max: function 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\n  /**\n   * Transforms the vector2 with a mat2d\n   *\n   * @param {vector2} out the receiving vector\n   * @param {vector2} v the vector to transform\n   * @param {mat2d} m matrix to transform with\n   * @return {vector2} out\n   */\n  transformMat2d: function transformMat2d(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};\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _base = _interopRequireDefault(require(\"./base\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar Cartesian = /*#__PURE__*/function (_Base) {\n  _inheritsLoose(Cartesian, _Base);\n\n  function Cartesian() {\n    return _Base.apply(this, arguments) || this;\n  }\n\n  var _proto = Cartesian.prototype;\n\n  _proto._initDefaultCfg = function _initDefaultCfg() {\n    this.type = 'cartesian';\n    this.transposed = false;\n    this.isRect = true;\n  };\n\n  _proto.init = function init(start, end) {\n    _Base.prototype.init.call(this, start, end);\n\n    this.x = {\n      start: start.x,\n      end: end.x\n    };\n    this.y = {\n      start: start.y,\n      end: end.y\n    };\n  };\n\n  _proto._convertPoint = function _convertPoint(point) {\n    var self = this;\n    var transposed = self.transposed;\n    var xDim = transposed ? 'y' : 'x';\n    var yDim = transposed ? 'x' : 'y';\n    var x = self.x;\n    var y = self.y;\n    return {\n      x: x.start + (x.end - x.start) * point[xDim],\n      y: y.start + (y.end - y.start) * point[yDim]\n    };\n  };\n\n  _proto._invertPoint = function _invertPoint(point) {\n    var self = this;\n    var transposed = self.transposed;\n    var xDim = transposed ? 'y' : 'x';\n    var yDim = transposed ? 'x' : 'y';\n    var x = self.x;\n    var y = self.y;\n    var rst = {};\n    rst[xDim] = (point.x - x.start) / (x.end - x.start);\n    rst[yDim] = (point.y - y.start) / (y.end - y.start);\n    return rst;\n  };\n\n  return Cartesian;\n}(_base[\"default\"]);\n\n_base[\"default\"].Cartesian = Cartesian;\n_base[\"default\"].Rect = Cartesian;\nvar _default = Cartesian;\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar Attr = _interopRequireWildcard(require(\"../attr/index\"));\n\nvar _common = require(\"../util/common\");\n\nvar _base = _interopRequireDefault(require(\"../base\"));\n\nvar _global = _interopRequireDefault(require(\"../global\"));\n\nvar _shape = _interopRequireDefault(require(\"./shape/shape\"));\n\nvar _base2 = _interopRequireDefault(require(\"@antv/adjust/lib/base\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar GROUP_ATTRS = ['color', 'size', 'shape'];\nvar FIELD_ORIGIN = '_origin';\nvar FIELD_ORIGIN_Y = '_originY';\n\nfunction parseFields(field) {\n  if ((0, _common.isArray)(field)) {\n    return field;\n  }\n\n  if ((0, _common.isString)(field)) {\n    return field.split('*');\n  }\n\n  return [field];\n}\n/**\n * The parent class for Geometry\n * @class Geom\n */\n\n\nvar Geom = /*#__PURE__*/function (_Base) {\n  _inheritsLoose(Geom, _Base);\n\n  function Geom() {\n    return _Base.apply(this, arguments) || this;\n  }\n\n  var _proto = Geom.prototype;\n\n  _proto.getDefaultCfg = function getDefaultCfg() {\n    return {\n      /**\n       * geometry type\n       * @type {String}\n       */\n      type: null,\n\n      /**\n       * the data of geometry\n       * @type {Array}\n       */\n      data: null,\n\n      /**\n       * the attrs of geo,etry\n       * @type {Object}\n       */\n      attrs: {},\n      scales: {},\n\n      /**\n       * group for storing the shapes\n       * @type {Canvas}\n       */\n      container: null,\n\n      /**\n       * style options\n       * @type {Object}\n       */\n      styleOptions: null,\n      chart: null,\n      shapeType: '',\n\n      /**\n       * wether to generate key points for each shape\n       * @protected\n       * @type {Boolean}\n       */\n      generatePoints: false,\n      attrOptions: {},\n      sortable: false,\n      startOnZero: true,\n      visible: true,\n      connectNulls: false,\n      // 是否丢弃没有值的分组。\n      ignoreEmptyGroup: false,\n      // 是否已经初始化\n      isInit: false\n    };\n  };\n\n  _proto.init = function init() {\n    var self = this;\n    var isInit = self.get('isInit');\n\n    if (isInit) {\n      return;\n    }\n\n    self._initAttrs();\n\n    self._processData();\n\n    self.set('isInit', true);\n  };\n\n  _proto._getGroupScales = function _getGroupScales() {\n    var self = this;\n    var scales = [];\n    (0, _common.each)(GROUP_ATTRS, function (attrName) {\n      var attr = self.getAttr(attrName);\n\n      if (attr) {\n        var attrScales = attr.scales;\n        (0, _common.each)(attrScales, function (scale) {\n          if (scale && scale.isCategory && scales.indexOf(scale) === -1) {\n            scales.push(scale);\n          }\n        });\n      }\n    });\n    return scales;\n  };\n\n  _proto._groupData = function _groupData(data) {\n    var self = this;\n    var colDefs = self.get('colDefs');\n\n    var groupScales = self._getGroupScales();\n\n    if (groupScales.length) {\n      var appendConditions = {};\n      var names = [];\n      (0, _common.each)(groupScales, function (scale) {\n        var field = scale.field;\n        names.push(field);\n\n        if (colDefs && colDefs[field] && colDefs[field].values) {\n          // users have defined\n          appendConditions[scale.field] = colDefs[field].values;\n        }\n      });\n      return _common.Array.group(data, names, appendConditions);\n    }\n\n    return [data];\n  };\n\n  _proto._setAttrOptions = function _setAttrOptions(attrName, attrCfg) {\n    var options = this.get('attrOptions');\n    options[attrName] = attrCfg;\n    var attrs = this.get('attrs'); // 说明已经初始化过了\n\n    if (Object.keys(attrs).length) {\n      this._createAttr(attrName, attrCfg);\n    }\n  };\n\n  _proto._createAttrOption = function _createAttrOption(attrName, field, cfg, defaultValues) {\n    var attrCfg = {};\n    attrCfg.field = field;\n\n    if (cfg) {\n      if ((0, _common.isFunction)(cfg)) {\n        attrCfg.callback = cfg;\n      } else {\n        attrCfg.values = cfg;\n      }\n    } else {\n      attrCfg.values = defaultValues;\n    }\n\n    this._setAttrOptions(attrName, attrCfg);\n  };\n\n  _proto._createAttr = function _createAttr(type, option) {\n    var self = this;\n    var attrs = self.get('attrs');\n    var coord = self.get('coord');\n    var className = (0, _common.upperFirst)(type);\n    var fields = parseFields(option.field);\n\n    if (type === 'position') {\n      option.coord = coord;\n    }\n\n    var scales = [];\n\n    for (var i = 0, len = fields.length; i < len; i++) {\n      var field = fields[i];\n\n      var scale = self._createScale(field);\n\n      scales.push(scale);\n    }\n\n    if (type === 'position') {\n      var yScale = scales[1]; // 饼图的处理,但是还不知道为啥\n\n      if (coord.type === 'polar' && coord.transposed && self.hasAdjust('stack')) {\n        if (yScale.values.length) {\n          yScale.change({\n            nice: false,\n            min: 0,\n            max: Math.max.apply(null, yScale.values)\n          });\n        }\n      }\n    }\n\n    option.scales = scales;\n    var attr = new Attr[className](option);\n    attrs[type] = attr;\n    return attr;\n  };\n\n  _proto._initAttrs = function _initAttrs() {\n    var self = this;\n    var attrOptions = self.get('attrOptions');\n\n    for (var type in attrOptions) {\n      if (attrOptions.hasOwnProperty(type)) {\n        this._createAttr(type, attrOptions[type]);\n      }\n    }\n  };\n\n  _proto._createScale = function _createScale(field) {\n    var scales = this.get('scales');\n    var scale = scales[field];\n\n    if (!scale) {\n      scale = this.get('chart').createScale(field);\n      scales[field] = scale;\n    }\n\n    return scale;\n  };\n\n  _proto._processData = function _processData() {\n    var self = this;\n    var data = this.get('data');\n    var dataArray = [];\n\n    var groupedArray = this._groupData(data);\n\n    if (this.get('ignoreEmptyGroup')) {\n      var yScale = this.getYScale();\n      groupedArray = groupedArray.filter(function (group) {\n        return group.some(function (item) {\n          return typeof item[yScale.field] !== 'undefined';\n        });\n      });\n    }\n\n    for (var i = 0, len = groupedArray.length; i < len; i++) {\n      var subData = groupedArray[i];\n\n      var tempData = self._saveOrigin(subData);\n\n      if (this.hasAdjust('dodge')) {\n        self._numberic(tempData);\n      }\n\n      dataArray.push(tempData);\n    }\n\n    if (self.get('adjust')) {\n      self._adjustData(dataArray);\n    }\n\n    if (self.get('sortable')) {\n      self._sort(dataArray);\n    }\n\n    self.emit('afterprocessdata', {\n      dataArray: dataArray\n    });\n    self.set('mappingData', dataArray);\n    self.set('dataArray', dataArray);\n    return dataArray;\n  };\n\n  _proto._saveOrigin = function _saveOrigin(data) {\n    var rst = [];\n\n    for (var i = 0, len = data.length; i < len; i++) {\n      var origin = data[i];\n      var obj = {};\n\n      for (var k in origin) {\n        obj[k] = origin[k];\n      }\n\n      obj[FIELD_ORIGIN] = origin;\n      rst.push(obj);\n    }\n\n    return rst;\n  };\n\n  _proto._numberic = function _numberic(data) {\n    var positionAttr = this.getAttr('position');\n    var scales = positionAttr.scales;\n\n    for (var j = 0, len = data.length; j < len; j++) {\n      var obj = data[j];\n      var count = Math.min(2, scales.length);\n\n      for (var i = 0; i < count; i++) {\n        var scale = scales[i];\n\n        if (scale.isCategory) {\n          var field = scale.field;\n          obj[field] = scale.translate(obj[field]);\n        }\n      }\n    }\n  };\n\n  _proto._adjustData = function _adjustData(dataArray) {\n    var self = this;\n    var adjust = self.get('adjust');\n\n    if (adjust) {\n      var adjustType = (0, _common.upperFirst)(adjust.type);\n\n      if (!_base2[\"default\"][adjustType]) {\n        throw new Error('not support such adjust : ' + adjust);\n      }\n\n      var xScale = self.getXScale();\n      var yScale = self.getYScale();\n      var cfg = (0, _common.mix)({\n        xField: xScale.field,\n        yField: yScale.field\n      }, adjust);\n      var adjustObject = new _base2[\"default\"][adjustType](cfg);\n      adjustObject.processAdjust(dataArray);\n\n      if (adjustType === 'Stack') {\n        self._updateStackRange(yScale.field, yScale, dataArray);\n      }\n    }\n  };\n\n  _proto._updateStackRange = function _updateStackRange(field, scale, dataArray) {\n    var mergeArray = _common.Array.merge(dataArray);\n\n    var min = scale.min;\n    var max = scale.max;\n\n    for (var i = 0, len = mergeArray.length; i < len; i++) {\n      var obj = mergeArray[i];\n      var tmpMin = Math.min.apply(null, obj[field]);\n      var tmpMax = Math.max.apply(null, obj[field]);\n\n      if (tmpMin < min) {\n        min = tmpMin;\n      }\n\n      if (tmpMax > max) {\n        max = tmpMax;\n      }\n    }\n\n    if (min < scale.min || max > scale.max) {\n      scale.change({\n        min: min,\n        max: max\n      });\n    }\n  };\n\n  _proto._sort = function _sort(mappedArray) {\n    var self = this;\n    var xScale = self.getXScale();\n    var field = xScale.field,\n        type = xScale.type;\n\n    if (type !== 'identity' && xScale.values.length > 1) {\n      (0, _common.each)(mappedArray, function (itemArr) {\n        itemArr.sort(function (obj1, obj2) {\n          if (type === 'timeCat') {\n            return (0, _common.toTimeStamp)(obj1[FIELD_ORIGIN][field]) - (0, _common.toTimeStamp)(obj2[FIELD_ORIGIN][field]);\n          }\n\n          return xScale.translate(obj1[FIELD_ORIGIN][field]) - xScale.translate(obj2[FIELD_ORIGIN][field]);\n        });\n      });\n    }\n\n    self.set('hasSorted', true);\n    self.set('dataArray', mappedArray);\n  };\n\n  _proto.paint = function paint() {\n    var self = this;\n    var dataArray = self.get('mappingData');\n    var mappedArray = [];\n    var shapeFactory = self.getShapeFactory();\n    shapeFactory.setCoord(self.get('coord'));\n\n    self._beforeMapping(dataArray);\n\n    for (var i = 0, len = dataArray.length; i < len; i++) {\n      var data = dataArray[i];\n\n      if (data.length) {\n        var mappedData = self._mapping(data);\n\n        mappedArray.push(mappedData);\n        self.draw(mappedData, shapeFactory);\n      }\n    }\n\n    self.set('dataArray', mappedArray);\n  };\n\n  _proto.getShapeFactory = function getShapeFactory() {\n    var shapeFactory = this.get('shapeFactory');\n\n    if (!shapeFactory) {\n      var shapeType = this.get('shapeType');\n      shapeFactory = _shape[\"default\"].getShapeFactory(shapeType);\n      this.set('shapeFactory', shapeFactory);\n    }\n\n    return shapeFactory;\n  };\n\n  _proto._mapping = function _mapping(data) {\n    var self = this;\n    var attrs = self.get('attrs');\n    var yField = self.getYScale().field; // 用来缓存转换的值,减少mapping耗时\n\n    var mappedCache = {};\n    var mappedData = new Array(data.length);\n\n    for (var k in attrs) {\n      if (attrs.hasOwnProperty(k)) {\n        var attr = attrs[k];\n        var names = attr.names;\n        var scales = attr.scales;\n\n        for (var i = 0, len = data.length; i < len; i++) {\n          var record = data[i];\n\n          var mappedRecord = _extends({}, record, mappedData[i]);\n\n          mappedRecord[FIELD_ORIGIN_Y] = record[yField]; // 获取视觉属性对应的value值\n          // 位置的缓存命中率低,还是每次单独计算\n\n          if (attr.type === 'position') {\n            var values = self._getAttrValues(attr, record);\n\n            for (var j = 0, _len = values.length; j < _len; j++) {\n              var val = values[j];\n              var name = names[j];\n              mappedRecord[name] = (0, _common.isArray)(val) && val.length === 1 ? val[0] : val;\n            }\n          } else {\n            // 除了position其他都只有一项\n            var _name = names[0];\n            var field = scales[0].field;\n            var value = record[field];\n            var key = \"\" + _name + value;\n            var _values = mappedCache[key];\n\n            if (!_values) {\n              _values = self._getAttrValues(attr, record);\n              mappedCache[key] = _values;\n            }\n\n            mappedRecord[_name] = _values[0];\n          } // 设置新数组\n\n\n          mappedData[i] = mappedRecord;\n        }\n      }\n    }\n\n    return mappedData;\n  };\n\n  _proto._getAttrValues = function _getAttrValues(attr, record) {\n    var scales = attr.scales;\n    var params = [];\n\n    for (var i = 0, len = scales.length; i < len; i++) {\n      var scale = scales[i];\n      var field = scale.field;\n\n      if (scale.type === 'identity') {\n        params.push(scale.value);\n      } else {\n        params.push(record[field]);\n      }\n    }\n\n    var values = attr.mapping.apply(attr, params);\n    return values;\n  };\n\n  _proto.getAttrValue = function getAttrValue(attrName, record) {\n    var attr = this.getAttr(attrName);\n    var rst = null;\n\n    if (attr) {\n      var values = this._getAttrValues(attr, record);\n\n      rst = values[0];\n    }\n\n    return rst;\n  };\n\n  _proto._beforeMapping = function _beforeMapping(dataArray) {\n    var self = this;\n\n    if (self.get('generatePoints')) {\n      self._generatePoints(dataArray);\n    }\n  };\n\n  _proto.isInCircle = function isInCircle() {\n    var coord = this.get('coord');\n    return coord && coord.isPolar;\n  };\n\n  _proto.getCallbackCfg = function getCallbackCfg(fields, cfg, origin) {\n    if (!fields) {\n      return cfg;\n    }\n\n    var tmpCfg = {};\n    var params = fields.map(function (field) {\n      return origin[field];\n    });\n    (0, _common.each)(cfg, function (v, k) {\n      if ((0, _common.isFunction)(v)) {\n        tmpCfg[k] = v.apply(null, params);\n      } else {\n        tmpCfg[k] = v;\n      }\n    });\n    return tmpCfg;\n  };\n\n  _proto.getDrawCfg = function getDrawCfg(obj) {\n    var self = this;\n    var isInCircle = self.isInCircle();\n    var cfg = {\n      origin: obj,\n      x: obj.x,\n      y: obj.y,\n      color: obj.color,\n      size: obj.size,\n      shape: obj.shape,\n      isInCircle: isInCircle,\n      opacity: obj.opacity\n    };\n    var styleOptions = self.get('styleOptions');\n\n    if (styleOptions && styleOptions.style) {\n      cfg.style = self.getCallbackCfg(styleOptions.fields, styleOptions.style, obj[FIELD_ORIGIN]);\n    }\n\n    if (self.get('generatePoints')) {\n      cfg.points = obj.points;\n      cfg.nextPoints = obj.nextPoints;\n    }\n\n    if (isInCircle) {\n      cfg.center = self.get('coord').center;\n    }\n\n    return cfg;\n  };\n\n  _proto.draw = function draw(data, shapeFactory) {\n    var self = this;\n    var container = self.get('container');\n    var yScale = self.getYScale();\n    (0, _common.each)(data, function (obj, index) {\n      if (yScale && (0, _common.isNil)(obj._origin[yScale.field])) {\n        return;\n      }\n\n      obj.index = index;\n      var cfg = self.getDrawCfg(obj);\n      var shape = obj.shape;\n      self.drawShape(shape, obj, cfg, container, shapeFactory);\n    });\n  };\n\n  _proto.drawShape = function drawShape(shape, shapeData, cfg, container, shapeFactory) {\n    var gShape = shapeFactory.drawShape(shape, cfg, container);\n\n    if (gShape) {\n      (0, _common.each)([].concat(gShape), function (s) {\n        s.set('origin', shapeData);\n      });\n    }\n  };\n\n  _proto._generatePoints = function _generatePoints(dataArray) {\n    var self = this;\n    var shapeFactory = self.getShapeFactory();\n    var shapeAttr = self.getAttr('shape');\n    (0, _common.each)(dataArray, function (data) {\n      for (var i = 0, len = data.length; i < len; i++) {\n        var obj = data[i];\n        var cfg = self.createShapePointsCfg(obj);\n        var shape = shapeAttr ? self._getAttrValues(shapeAttr, obj) : null;\n        var points = shapeFactory.getShapePoints(shape, cfg);\n        obj.points = points;\n      }\n    }); // 添加nextPoints\n\n    (0, _common.each)(dataArray, function (data, index) {\n      var nextData = dataArray[index + 1];\n\n      if (nextData) {\n        data[0].nextPoints = nextData[0].points;\n      }\n    });\n  }\n  /**\n   * get the info of each shape\n   * @protected\n   * @param  {Object} obj the data item\n   * @return {Object} cfg return the result\n   */\n  ;\n\n  _proto.createShapePointsCfg = function createShapePointsCfg(obj) {\n    var xScale = this.getXScale();\n    var yScale = this.getYScale();\n\n    var x = this._normalizeValues(obj[xScale.field], xScale);\n\n    var y;\n\n    if (yScale) {\n      y = this._normalizeValues(obj[yScale.field], yScale);\n    } else {\n      y = obj.y ? obj.y : 0.1;\n    }\n\n    return {\n      x: x,\n      y: y,\n      y0: yScale ? yScale.scale(this.getYMinValue()) : undefined\n    };\n  };\n\n  _proto.getYMinValue = function getYMinValue() {\n    var yScale = this.getYScale();\n    var min = yScale.min,\n        max = yScale.max;\n    var value;\n\n    if (this.get('startOnZero')) {\n      if (max <= 0 && min <= 0) {\n        value = max;\n      } else {\n        value = min >= 0 ? min : 0;\n      }\n    } else {\n      value = min;\n    }\n\n    return value;\n  };\n\n  _proto._normalizeValues = function _normalizeValues(values, scale) {\n    var rst = [];\n\n    if ((0, _common.isArray)(values)) {\n      for (var i = 0, len = values.length; i < len; i++) {\n        var v = values[i];\n        rst.push(scale.scale(v));\n      }\n    } else {\n      rst = scale.scale(values);\n    }\n\n    return rst;\n  };\n\n  _proto.getAttr = function getAttr(name) {\n    return this.get('attrs')[name];\n  };\n\n  _proto.getXScale = function getXScale() {\n    return this.getAttr('position').scales[0];\n  };\n\n  _proto.getYScale = function getYScale() {\n    return this.getAttr('position').scales[1];\n  };\n\n  _proto.hasAdjust = function hasAdjust(adjust) {\n    return this.get('adjust') && this.get('adjust').type === adjust;\n  };\n\n  _proto._getSnap = function _getSnap(scale, item, arr) {\n    var i = 0;\n    var values;\n    var yField = this.getYScale().field; // 叠加的维度\n\n    if (this.hasAdjust('stack') && scale.field === yField) {\n      values = [];\n      arr.forEach(function (obj) {\n        values.push(obj[FIELD_ORIGIN_Y]);\n      });\n\n      for (var len = values.length; i < len; i++) {\n        if (values[0][0] > item) {\n          break;\n        }\n\n        if (values[values.length - 1][1] <= item) {\n          i = values.length - 1;\n          break;\n        }\n\n        if (values[i][0] <= item && values[i][1] > item) {\n          break;\n        }\n      }\n    } else {\n      values = scale.values;\n      values.sort(function (a, b) {\n        return a - b;\n      });\n\n      for (var _len2 = values.length; i < _len2; i++) {\n        // 如果只有1个点直接返回第1个点\n        if (_len2 <= 1) {\n          break;\n        } // 第1个点和第2个点之间\n\n\n        if ((values[0] + values[1]) / 2 > item) {\n          break;\n        } // 中间的点\n\n\n        if ((values[i - 1] + values[i]) / 2 <= item && (values[i + 1] + values[i]) / 2 > item) {\n          break;\n        } // 最后2个点\n\n\n        if ((values[values.length - 2] + values[values.length - 1]) / 2 <= item) {\n          i = values.length - 1;\n          break;\n        }\n      }\n    }\n\n    var result = values[i];\n    return result;\n  };\n\n  _proto.getSnapRecords = function getSnapRecords(point) {\n    var self = this;\n    var coord = self.get('coord');\n    var xScale = self.getXScale();\n    var yScale = self.getYScale();\n    var xfield = xScale.field;\n    var dataArray = self.get('dataArray');\n\n    if (!this.get('hasSorted')) {\n      this._sort(dataArray);\n    }\n\n    var rst = [];\n    var invertPoint = coord.invertPoint(point);\n    var invertPointX = invertPoint.x;\n\n    if (self.isInCircle() && !coord.transposed && invertPointX > (1 + xScale.rangeMax()) / 2) {\n      invertPointX = xScale.rangeMin();\n    }\n\n    var xValue = xScale.invert(invertPointX);\n\n    if (!xScale.isCategory) {\n      xValue = self._getSnap(xScale, xValue);\n    }\n\n    var tmp = [];\n    dataArray.forEach(function (data) {\n      data.forEach(function (obj) {\n        var originValue = (0, _common.isNil)(obj[FIELD_ORIGIN]) ? obj[xfield] : obj[FIELD_ORIGIN][xfield];\n\n        if (self._isEqual(originValue, xValue, xScale)) {\n          tmp.push(obj);\n        }\n      });\n    }); // special for pie chart\n\n    if (this.hasAdjust('stack') && coord.isPolar && coord.transposed) {\n      if (invertPointX >= 0 && invertPointX <= 1) {\n        var yValue = yScale.invert(invertPoint.y);\n        yValue = self._getSnap(yScale, yValue, tmp);\n        tmp.forEach(function (obj) {\n          if ((0, _common.isArray)(yValue) ? obj[FIELD_ORIGIN_Y].toString() === yValue.toString() : obj[FIELD_ORIGIN_Y] === yValue) {\n            rst.push(obj);\n          }\n        });\n      }\n    } else {\n      rst = tmp;\n    }\n\n    return rst;\n  };\n\n  _proto.getRecords = function getRecords(value) {\n    var _this = this;\n\n    var xScale = this.getXScale();\n    var dataArray = this.get('dataArray');\n    var xfield = xScale.field;\n    return dataArray.map(function (data) {\n      for (var len = data.length, i = len - 1; i >= 0; i--) {\n        var obj = data[i];\n        var originValue = (0, _common.isNil)(obj[FIELD_ORIGIN]) ? obj[xfield] : obj[FIELD_ORIGIN][xfield];\n\n        if (_this._isEqual(originValue, value, xScale)) {\n          return obj;\n        }\n      }\n\n      return null;\n    });\n  };\n\n  _proto._isEqual = function _isEqual(originValue, value, scale) {\n    if (scale.type === 'timeCat') {\n      return (0, _common.toTimeStamp)(originValue) === value;\n    }\n\n    return value === originValue;\n  };\n\n  _proto.position = function position(field) {\n    this._setAttrOptions('position', {\n      field: field\n    });\n\n    return this;\n  };\n\n  _proto.color = function color(field, values) {\n    this._createAttrOption('color', field, values, _global[\"default\"].colors);\n\n    return this;\n  };\n\n  _proto.size = function size(field, values) {\n    this._createAttrOption('size', field, values, _global[\"default\"].sizes);\n\n    return this;\n  };\n\n  _proto.shape = function shape(field, values) {\n    var type = this.get('type');\n    var shapes = _global[\"default\"].shapes[type] || [];\n\n    this._createAttrOption('shape', field, values, shapes);\n\n    return this;\n  };\n\n  _proto.style = function style(field, cfg) {\n    var styleOptions = this.get('styleOptions');\n\n    if (!styleOptions) {\n      styleOptions = {};\n      this.set('styleOptions', styleOptions);\n    }\n\n    if ((0, _common.isObject)(field)) {\n      cfg = field;\n      field = null;\n    }\n\n    var fields;\n\n    if (field) {\n      fields = parseFields(field);\n    }\n\n    styleOptions.fields = fields;\n    styleOptions.style = cfg;\n    return this;\n  };\n\n  _proto.adjust = function adjust(type) {\n    if ((0, _common.isString)(type)) {\n      type = {\n        type: type\n      };\n    }\n\n    this.set('adjust', type);\n    return this;\n  };\n\n  _proto.animate = function animate(cfg) {\n    this.set('animateCfg', cfg);\n    return this;\n  };\n\n  _proto.changeData = function changeData(data) {\n    this.set('data', data); // 改变数据后,情况度量,因为需要重新实例化\n\n    this.set('scales', {});\n    if (!this.get('isInit')) return;\n    this.set('isInit', false);\n    this.init();\n  };\n\n  _proto.clearInner = function clearInner() {\n    var container = this.get('container');\n\n    if (container) {\n      container.clear(); // container.setMatrix([ 1, 0, 0, 1, 0, 0 ]);\n    }\n  };\n\n  _proto.reset = function reset() {\n    this.set('isInit', false);\n    this.set('attrs', {});\n    this.set('attrOptions', {});\n    this.set('adjust', null);\n    this.clearInner();\n  };\n\n  _proto.clear = function clear() {\n    this.clearInner();\n  };\n\n  _proto.destroy = function destroy() {\n    this.set('isInit', false);\n    this.clear();\n\n    _Base.prototype.destroy.call(this);\n  };\n\n  _proto._display = function _display(visible) {\n    this.set('visible', visible);\n    var container = this.get('container');\n    var canvas = container.get('canvas');\n    container.set('visible', visible);\n    canvas.draw();\n  };\n\n  _proto.show = function show() {\n    this._display(true);\n  };\n\n  _proto.hide = function hide() {\n    this._display(false);\n  };\n\n  return Geom;\n}(_base[\"default\"]);\n\nvar _default = Geom;\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nexports.Color = exports.Size = exports.Shape = exports.Position = void 0;\n\nvar _position = _interopRequireDefault(require(\"./position\"));\n\nexports.Position = _position[\"default\"];\n\nvar _shape = _interopRequireDefault(require(\"./shape\"));\n\nexports.Shape = _shape[\"default\"];\n\nvar _size = _interopRequireDefault(require(\"./size\"));\n\nexports.Size = _size[\"default\"];\n\nvar _color = _interopRequireDefault(require(\"./color\"));\n\nexports.Color = _color[\"default\"];\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }","\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _util = require(\"@antv/util\");\n\nvar _base = _interopRequireDefault(require(\"./base\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar Position = /*#__PURE__*/function (_Base) {\n  _inheritsLoose(Position, _Base);\n\n  function Position(cfg) {\n    var _this;\n\n    _this = _Base.call(this, cfg) || this;\n    _this.names = ['x', 'y'];\n    _this.type = 'position';\n    return _this;\n  }\n\n  var _proto = Position.prototype;\n\n  _proto.mapping = function mapping(x, y) {\n    var scales = this.scales;\n    var coord = this.coord;\n    var scaleX = scales[0];\n    var scaleY = scales[1];\n    var rstX;\n    var rstY;\n    var obj;\n\n    if ((0, _util.isNil)(x) || (0, _util.isNil)(y)) {\n      return [];\n    }\n\n    if ((0, _util.isArray)(y) && (0, _util.isArray)(x)) {\n      rstX = [];\n      rstY = [];\n\n      for (var i = 0, j = 0, xLen = x.length, yLen = y.length; i < xLen && j < yLen; i++, j++) {\n        obj = coord.convertPoint({\n          x: scaleX.scale(x[i]),\n          y: scaleY.scale(y[j])\n        });\n        rstX.push(obj.x);\n        rstY.push(obj.y);\n      }\n    } else if ((0, _util.isArray)(y)) {\n      x = scaleX.scale(x);\n      rstY = [];\n      (0, _util.each)(y, function (yVal) {\n        yVal = scaleY.scale(yVal);\n        obj = coord.convertPoint({\n          x: x,\n          y: yVal\n        });\n\n        if (rstX && rstX !== obj.x) {\n          if (!(0, _util.isArray)(rstX)) {\n            rstX = [rstX];\n          }\n\n          rstX.push(obj.x);\n        } else {\n          rstX = obj.x;\n        }\n\n        rstY.push(obj.y);\n      });\n    } else if ((0, _util.isArray)(x)) {\n      y = scaleY.scale(y);\n      rstX = [];\n      (0, _util.each)(x, function (xVal) {\n        xVal = scaleX.scale(xVal);\n        obj = coord.convertPoint({\n          x: xVal,\n          y: y\n        });\n\n        if (rstY && rstY !== obj.y) {\n          if (!(0, _util.isArray)(rstY)) {\n            rstY = [rstY];\n          }\n\n          rstY.push(obj.y);\n        } else {\n          rstY = obj.y;\n        }\n\n        rstX.push(obj.x);\n      });\n    } else {\n      x = scaleX.scale(x);\n      y = scaleY.scale(y);\n      var point = coord.convertPoint({\n        x: x,\n        y: y\n      });\n      rstX = point.x;\n      rstY = point.y;\n    }\n\n    return [rstX, rstY];\n  };\n\n  return Position;\n}(_base[\"default\"]);\n\nvar _default = Position;\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _util = require(\"@antv/util\");\n\n/**\n * @fileOverview the Attribute base class\n */\nfunction toScaleString(scale, value) {\n  if ((0, _util.isString)(value)) {\n    return value;\n  }\n\n  return scale.invert(scale.scale(value));\n}\n/**\n * 所有视觉通道属性的基类\n * @class Attr\n */\n\n\nvar AttributeBase = /*#__PURE__*/function () {\n  function AttributeBase(cfg) {\n    var _this = this;\n\n    /**\n     * 属性的类型\n     * @type {String}\n     */\n    this.type = 'base';\n    /**\n     * 属性的名称\n     * @type {String}\n     */\n\n    this.name = null;\n    /**\n     * 回调函数\n     * @type {Function}\n     */\n\n    this.method = null;\n    /**\n     * 备选的值数组\n     * @type {Array}\n     */\n\n    this.values = [];\n    /**\n     * 属性内部的度量\n     * @type {Array}\n     */\n\n    this.scales = [];\n    /**\n     * 是否通过线性取值, 如果未指定,则根据数值的类型判定\n     * @type {Boolean}\n     */\n\n    this.linear = null;\n    /**\n     * 当用户设置的 callback 返回 null 时, 应该返回默认 callback 中的值\n     */\n\n    var mixedCallback = null;\n    var defaultCallback = this.callback;\n\n    if (cfg.callback) {\n      var userCallback = cfg.callback;\n\n      mixedCallback = function mixedCallback() {\n        for (var _len = arguments.length, params = new Array(_len), _key = 0; _key < _len; _key++) {\n          params[_key] = arguments[_key];\n        }\n\n        var ret = userCallback.apply(void 0, params);\n\n        if ((0, _util.isNil)(ret)) {\n          ret = defaultCallback.apply(_this, params);\n        }\n\n        return ret;\n      };\n    }\n\n    (0, _util.mix)(this, cfg);\n\n    if (mixedCallback) {\n      (0, _util.mix)(this, {\n        callback: mixedCallback\n      });\n    }\n  } // 获取属性值,将值映射到视觉通道\n\n\n  var _proto = AttributeBase.prototype;\n\n  _proto._getAttrValue = function _getAttrValue(scale, value) {\n    var values = this.values;\n\n    if (scale.isCategory && !this.linear) {\n      var index = scale.translate(value);\n      return values[index % values.length];\n    }\n\n    var percent = scale.scale(value);\n    return this.getLinearValue(percent);\n  }\n  /**\n   * 如果进行线性映射,返回对应的映射值\n   * @protected\n   * @param  {Number} percent 百分比\n   * @return {*}  颜色值、形状、大小等\n   */\n  ;\n\n  _proto.getLinearValue = function getLinearValue(percent) {\n    var values = this.values;\n    var steps = values.length - 1;\n    var step = Math.floor(steps * percent);\n    var leftPercent = steps * percent - step;\n    var start = values[step];\n    var end = step === steps ? start : values[step + 1];\n    var rstValue = start + (end - start) * leftPercent;\n    return rstValue;\n  }\n  /**\n   * 默认的回调函数\n   * @param {*} value 回调函数的值\n   * @type {Function}\n   * @return {Array} 返回映射后的值\n   */\n  ;\n\n  _proto.callback = function callback(value) {\n    var self = this;\n    var scale = self.scales[0];\n    var rstValue = null;\n\n    if (scale.type === 'identity') {\n      rstValue = scale.value;\n    } else {\n      rstValue = self._getAttrValue(scale, value);\n    }\n\n    return rstValue;\n  }\n  /**\n   * 根据度量获取属性名\n   * @return {Array} dims of this Attribute\n   */\n  ;\n\n  _proto.getNames = function getNames() {\n    var scales = this.scales;\n    var names = this.names;\n    var length = Math.min(scales.length, names.length);\n    var rst = [];\n\n    for (var i = 0; i < length; i++) {\n      rst.push(names[i]);\n    }\n\n    return rst;\n  }\n  /**\n   * 根据度量获取维度名\n   * @return {Array} dims of this Attribute\n   */\n  ;\n\n  _proto.getFields = function getFields() {\n    var scales = this.scales;\n    var rst = [];\n    (0, _util.each)(scales, function (scale) {\n      rst.push(scale.field);\n    });\n    return rst;\n  }\n  /**\n   * 根据名称获取度量\n   * @param  {String} name the name of scale\n   * @return {Scale} scale\n   */\n  ;\n\n  _proto.getScale = function getScale(name) {\n    var scales = this.scales;\n    var names = this.names;\n    var index = names.indexOf(name);\n    return scales[index];\n  }\n  /**\n   * 映射数据\n   * @param {*} param1...paramn 多个数值\n   * @return {Array} 映射的值组成的数组\n   */\n  ;\n\n  _proto.mapping = function mapping() {\n    var scales = this.scales;\n    var callback = this.callback;\n\n    for (var _len2 = arguments.length, params = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      params[_key2] = arguments[_key2];\n    }\n\n    var values = params;\n\n    if (callback) {\n      for (var i = 0, len = params.length; i < len; i++) {\n        params[i] = this._toOriginParam(params[i], scales[i]);\n      }\n\n      values = callback.apply(this, params);\n    }\n\n    values = [].concat(values);\n    return values;\n  } // 原始的参数\n  ;\n\n  _proto._toOriginParam = function _toOriginParam(param, scale) {\n    var rst = param;\n\n    if (!scale.isLinear) {\n      if ((0, _util.isArray)(param)) {\n        rst = [];\n\n        for (var i = 0, len = param.length; i < len; i++) {\n          rst.push(toScaleString(scale, param[i]));\n        }\n      } else {\n        rst = toScaleString(scale, param);\n      }\n    }\n\n    return rst;\n  };\n\n  return AttributeBase;\n}();\n\nvar _default = AttributeBase;\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _base = _interopRequireDefault(require(\"./base\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar Shape = /*#__PURE__*/function (_Base) {\n  _inheritsLoose(Shape, _Base);\n\n  function Shape(cfg) {\n    var _this;\n\n    _this = _Base.call(this, cfg) || this;\n    _this.names = ['shape'];\n    _this.type = 'shape';\n    _this.gradient = null;\n    return _this;\n  }\n  /**\n   * @override\n   */\n\n\n  var _proto = Shape.prototype;\n\n  _proto.getLinearValue = function getLinearValue(percent) {\n    var values = this.values;\n    var index = Math.round((values.length - 1) * percent);\n    return values[index];\n  };\n\n  return Shape;\n}(_base[\"default\"]);\n\nvar _default = Shape;\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _base = _interopRequireDefault(require(\"./base\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar Size = /*#__PURE__*/function (_Base) {\n  _inheritsLoose(Size, _Base);\n\n  function Size(cfg) {\n    var _this;\n\n    _this = _Base.call(this, cfg) || this;\n    _this.names = ['size'];\n    _this.type = 'size';\n    _this.gradient = null;\n    return _this;\n  }\n\n  return Size;\n}(_base[\"default\"]);\n\nvar _default = Size;\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _util = require(\"@antv/util\");\n\nvar _base = _interopRequireDefault(require(\"./base\"));\n\nvar _colorUtil = require(\"./color-util\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar Color = /*#__PURE__*/function (_Base) {\n  _inheritsLoose(Color, _Base);\n\n  function Color(cfg) {\n    var _this;\n\n    _this = _Base.call(this, cfg) || this;\n    _this.names = ['color'];\n    _this.type = 'color';\n    _this.gradient = null;\n\n    if ((0, _util.isString)(_this.values)) {\n      _this.linear = true;\n    }\n\n    return _this;\n  }\n  /**\n   * @override\n   */\n\n\n  var _proto = Color.prototype;\n\n  _proto.getLinearValue = function getLinearValue(percent) {\n    var gradient = this.gradient;\n\n    if (!gradient) {\n      var values = this.values;\n      gradient = (0, _colorUtil.gradient)(values);\n      this.gradient = gradient;\n    }\n\n    return gradient(percent);\n  };\n\n  return Color;\n}(_base[\"default\"]);\n\nvar _default = Color;\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nexports.toHex = toHex;\nexports.gradient = gradient;\n\nvar _util = require(\"@antv/util\");\n\n// Get the interpolation between colors\nfunction getValue(start, end, percent, index) {\n  var value = start[index] + (end[index] - start[index]) * percent;\n  return value;\n} // convert to hex\n\n\nfunction arr2hex(arr) {\n  return '#' + toRGBValue(arr[0]) + toRGBValue(arr[1]) + toRGBValue(arr[2]);\n}\n\nfunction toRGBValue(value) {\n  value = Math.round(value);\n  value = value.toString(16);\n\n  if (value.length === 1) {\n    value = '0' + value;\n  }\n\n  return value;\n}\n\nfunction calColor(colors, percent) {\n  var steps = colors.length - 1;\n  var step = Math.floor(steps * percent);\n  var left = steps * percent - step;\n  var start = colors[step];\n  var end = step === steps ? start : colors[step + 1];\n  var rgb = arr2hex([getValue(start, end, left, 0), getValue(start, end, left, 1), getValue(start, end, left, 2)]);\n  return rgb;\n}\n\nfunction hex2arr(str) {\n  var arr = [];\n  arr.push(parseInt(str.substr(1, 2), 16));\n  arr.push(parseInt(str.substr(3, 2), 16));\n  arr.push(parseInt(str.substr(5, 2), 16));\n  return arr;\n}\n\nvar colorCache = {\n  black: '#000000',\n  blue: '#0000ff',\n  grey: '#808080',\n  green: '#008000',\n  orange: '#ffa500',\n  pink: '#ffc0cb',\n  purple: '#800080',\n  red: '#ff0000',\n  white: '#ffffff',\n  yellow: '#ffff00'\n};\n/**\n * Returns a hexadecimal string representing this color in RGB space, such as #f7eaba.\n * @param  {String} color color value\n * @return {String} Returns a hexadecimal string\n */\n\nfunction toHex(color) {\n  if (colorCache[color]) {\n    return colorCache[color];\n  }\n\n  if (color[0] === '#') {\n    if (color.length === 7) {\n      return color;\n    }\n\n    var hex = color.replace(/^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i, function (m, r, g, b) {\n      return '#' + r + r + g + g + b + b;\n    }); // hex3 to hex6\n\n    colorCache[color] = hex;\n    return hex;\n  } // rgb/rgba to hex\n\n\n  var rst = color.match(/^rgba?[\\s+]?\\([\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?/i);\n  rst.shift();\n  rst = arr2hex(rst);\n  colorCache[color] = rst;\n  return rst;\n}\n/**\n * handle the gradient color\n * @param  {Array} colors the colors\n * @return {String} return the color value\n */\n\n\nfunction gradient(colors) {\n  var points = [];\n\n  if ((0, _util.isString)(colors)) {\n    colors = colors.split('-');\n  }\n\n  (0, _util.each)(colors, function (color) {\n    if (color.indexOf('#') === -1) {\n      color = toHex(color);\n    }\n\n    points.push(hex2arr(color));\n  });\n  return function (percent) {\n    return calColor(points, percent);\n  };\n}","\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _common = require(\"../../util/common\");\n\nvar _global = _interopRequireDefault(require(\"../../global\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar Shape = {};\nvar ShapeBase = {\n  _coord: null,\n\n  /**\n   * draw the shape\n   * @param {Object} cfg options\n   * @param {Object} container container to store the shapes\n   */\n  draw: function draw(cfg, container) {\n    if (this.drawShape) {\n      this.drawShape(cfg, container);\n    }\n  },\n\n  /**\n   * set the coordinate instance\n   * @param {Coord} coord coordinate instance\n   */\n  setCoord: function setCoord(coord) {\n    this._coord = coord;\n  },\n\n  /**\n   * convert the normalized value to the canvas position\n   * @param  {point} point the point to convert\n   * @return {point} point return the result\n   */\n  parsePoint: function parsePoint(point) {\n    var coord = this._coord;\n\n    if (coord.isPolar) {\n      if (point.x === 1) point.x = 0.9999999;\n      if (point.y === 1) point.y = 0.9999999;\n    }\n\n    return coord.convertPoint(point);\n  },\n\n  /**\n   * convert the normalized value to the canvas position\n   * @param  {points} points the array that store the points\n   * @return {points} points return the result\n   */\n  parsePoints: function parsePoints(points) {\n    if (!points) return false;\n    var self = this;\n    var rst = [];\n    points.forEach(function (point) {\n      rst.push(self.parsePoint(point));\n    });\n    return rst;\n  }\n};\nvar ShapeFactoryBase = {\n  defaultShapeType: null,\n  setCoord: function setCoord(coord) {\n    this._coord = coord;\n  },\n  getShape: function getShape(type) {\n    var self = this;\n\n    if ((0, _common.isArray)(type)) {\n      type = type[0];\n    }\n\n    var shape = self[type] || self[self.defaultShapeType];\n    shape._coord = self._coord;\n    return shape;\n  },\n  getShapePoints: function getShapePoints(type, cfg) {\n    var shape = this.getShape(type);\n    var fn = shape.getPoints || shape.getShapePoints || this.getDefaultPoints;\n    var points = fn(cfg);\n    return points;\n  },\n  getDefaultPoints: function getDefaultPoints()\n  /* cfg */\n  {\n    return [];\n  },\n  drawShape: function drawShape(type, cfg, container) {\n    var shape = this.getShape(type);\n\n    if (!cfg.color) {\n      cfg.color = _global[\"default\"].colors[0];\n    }\n\n    return shape.draw(cfg, container);\n  }\n};\n\nShape.registerFactory = function (factoryName, cfg) {\n  var className = (0, _common.upperFirst)(factoryName);\n  var geomObj = (0, _common.mix)({}, ShapeFactoryBase, cfg);\n  Shape[className] = geomObj;\n  geomObj.name = factoryName;\n  return geomObj;\n};\n\nShape.registerShape = function (factoryName, shapeType, cfg) {\n  var className = (0, _common.upperFirst)(factoryName);\n  var factory = Shape[className];\n  var shapeObj = (0, _common.mix)({}, ShapeBase, cfg);\n  factory[shapeType] = shapeObj;\n  return shapeObj;\n};\n\nShape.registShape = Shape.registerShape;\n\nShape.getShapeFactory = function (factoryName) {\n  var self = this;\n  factoryName = factoryName || 'point';\n  var className = (0, _common.upperFirst)(factoryName);\n  return self[className];\n};\n\nvar _default = Shape;\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _scale = require(\"../../scale\");\n\nvar _common = require(\"../../util/common\");\n\nvar _global = _interopRequireDefault(require(\"../../global\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction isFullCircle(coord) {\n  if (!coord.isPolar) {\n    return false;\n  }\n\n  var startAngle = coord.startAngle;\n  var endAngle = coord.endAngle;\n\n  if (!(0, _common.isNil)(startAngle) && !(0, _common.isNil)(endAngle) && endAngle - startAngle < Math.PI * 2) {\n    return false;\n  }\n\n  return true;\n}\n\nfunction clearObj(obj) {\n  Object.keys(obj).forEach(function (key) {\n    delete obj[key];\n  });\n}\n\nvar ScaleController = /*#__PURE__*/function () {\n  function ScaleController(cfg) {\n    // defs 列定义\n    this.defs = {}; // 已经实例化的scale\n\n    this.scales = {};\n    (0, _common.mix)(this, cfg);\n  }\n\n  var _proto = ScaleController.prototype;\n\n  _proto.setFieldDef = function setFieldDef(field, cfg) {\n    var defs = this.defs;\n\n    if ((0, _common.isObject)(field)) {\n      (0, _common.mix)(defs, field);\n    } else {\n      defs[field] = cfg;\n    } // 因为可能同时变更多个scale,所以要把所有已实例化的scale都更新下\n\n\n    this.updateScales();\n  };\n\n  _proto._getDef = function _getDef(field) {\n    var defs = this.defs;\n    var def = null;\n\n    if (_global[\"default\"].scales[field] || defs[field]) {\n      def = (0, _common.mix)({}, _global[\"default\"].scales[field]);\n      (0, _common.each)(defs[field], function (v, k) {\n        if ((0, _common.isNil)(v)) {\n          delete def[k];\n        } else {\n          def[k] = v;\n        }\n      });\n    }\n\n    return def;\n  };\n\n  _proto._getDefaultType = function _getDefaultType(field, data, def) {\n    if (def && def.type) {\n      return def.type;\n    }\n\n    var type = 'linear';\n\n    var value = _common.Array.firstValue(data, field);\n\n    if ((0, _common.isArray)(value)) {\n      value = value[0];\n    }\n\n    if ((0, _common.isString)(value)) {\n      type = 'cat';\n    }\n\n    return type;\n  };\n\n  _proto._getScaleDef = function _getScaleDef(type, field, data, def) {\n    var values;\n\n    if (def && def.values) {\n      values = def.values;\n    } else {\n      values = _common.Array.values(data, field);\n    }\n\n    var cfg = {\n      field: field,\n      values: values\n    };\n\n    if (type !== 'cat' && type !== 'timeCat') {\n      if (!def || !(def.min && def.max)) {\n        var _Array$getRange = _common.Array.getRange(values),\n            min = _Array$getRange.min,\n            max = _Array$getRange.max;\n\n        cfg.min = min;\n        cfg.max = max;\n        cfg.nice = true;\n      }\n    } else {\n      cfg.isRounding = false; // used for tickCount calculation\n    }\n\n    return cfg;\n  } // 调整range,为了让图形居中\n  ;\n\n  _proto._adjustRange = function _adjustRange(type, cfg) {\n    var range = cfg.range,\n        values = cfg.values; // 如果是线性, 或者有自定义range都不处理\n\n    if (type === 'linear' || range || !values) {\n      return cfg;\n    }\n\n    var count = values.length; // 单只有一条数据时,在中间显示\n\n    if (count === 1) {\n      cfg.range = [0.5, 1];\n    } else {\n      var chart = this.chart;\n      var coord = chart.get('coord');\n      var widthRatio = _global[\"default\"].widthRatio.multiplePie;\n      var offset = 0;\n\n      if (isFullCircle(coord)) {\n        if (!coord.transposed) {\n          cfg.range = [0, 1 - 1 / count];\n        } else {\n          offset = 1 / count * widthRatio;\n          cfg.range = [offset / 2, 1 - offset / 2];\n        }\n      } else {\n        // 为了让图形居中,所以才设置range\n        offset = 1 / count * 0.5; // 这里可能用0.25会更合理\n\n        cfg.range = [offset, 1 - offset];\n      }\n    }\n\n    return cfg;\n  };\n\n  _proto._getScaleCfg = function _getScaleCfg(field, data) {\n    var self = this;\n\n    var def = self._getDef(field);\n\n    if (!data || !data.length) {\n      if (def && def.type) {\n        def.field = field;\n        return {\n          type: def.type,\n          cfg: def\n        };\n      }\n\n      return {\n        type: 'identity',\n        cfg: {\n          value: field,\n          field: field.toString(),\n          values: [field]\n        }\n      };\n    }\n\n    var firstObj = data[0];\n    var firstValue = firstObj[field];\n\n    if (firstValue === null) {\n      firstValue = _common.Array.firstValue(data, field);\n    }\n\n    if ((0, _common.isNumber)(field) || (0, _common.isNil)(firstValue) && !def) {\n      return {\n        type: 'identity',\n        cfg: {\n          value: field,\n          field: field.toString(),\n          values: [field]\n        }\n      };\n    }\n\n    var type = self._getDefaultType(field, data, def);\n\n    var cfg = self._getScaleDef(type, field, data, def);\n\n    def && (0, _common.mix)(cfg, def);\n    cfg = this._adjustRange(type, cfg);\n    return {\n      type: type,\n      cfg: cfg\n    };\n  };\n\n  _proto.createScale = function createScale(field, data) {\n    var scales = this.scales;\n\n    var _this$_getScaleCfg = this._getScaleCfg(field, data),\n        type = _this$_getScaleCfg.type,\n        cfg = _this$_getScaleCfg.cfg;\n\n    var scale = scales[field]; // 如果已经存在,且类型相等时直接返回\n\n    if (scale && scale.type === type) {\n      scale.change(cfg);\n      return scale;\n    }\n\n    var Scale = (0, _scale.getScale)(type);\n    var newScale = new Scale(cfg);\n    scales[field] = newScale;\n    return newScale;\n  };\n\n  _proto._updateScale = function _updateScale(scale) {\n    var field = scale.field; // 因为每个field的数据都会不同\n\n    var data = this.chart._getScaleData(field);\n\n    var _this$_getScaleCfg2 = this._getScaleCfg(field, data),\n        cfg = _this$_getScaleCfg2.cfg;\n\n    scale.change(cfg);\n  };\n\n  _proto.updateScales = function updateScales() {\n    var _this = this;\n\n    var scales = this.scales; // 修改完列定义后,需要更新已经实例化的scale\n    // 如果是还没有实例化的,在geom初始化的时候会被实例化,所以这里可以不用更新\n\n    (0, _common.each)(scales, function (scale) {\n      _this._updateScale(scale);\n    });\n  } // 调整scale从0开始\n  ;\n\n  _proto.adjustStartZero = function adjustStartZero(scale) {\n    var defs = this.defs;\n    var field = scale.field,\n        min = scale.min,\n        max = scale.max; // 如果有定义,则不处理\n\n    if (defs[field] && defs[field].min) {\n      return;\n    }\n\n    if (min > 0) {\n      scale.change({\n        min: 0\n      });\n    } else if (max < 0) {\n      scale.change({\n        max: 0\n      });\n    }\n  };\n\n  _proto.clear = function clear() {\n    // this.defs = {};\n    // this.scales = {};\n    clearObj(this.defs);\n    clearObj(this.scales);\n    this.data = null;\n  };\n\n  return ScaleController;\n}();\n\nvar _default = ScaleController;\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _scale = require(\"@antv/scale\");\n\nexports.getScale = _scale.getScale;\nexports.getTickMethod = _scale.getTickMethod;\n\nvar _catTick = _interopRequireDefault(require(\"./cat-tick\"));\n\nvar _linearTick = _interopRequireDefault(require(\"./linear-tick\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar Linear = (0, _scale.getScale)('linear');\nvar Identity = (0, _scale.getScale)('identity');\nvar Category = (0, _scale.getScale)('category');\nvar TimeCat = (0, _scale.getScale)('timeCat'); // 覆盖0.3.x的 cat 方法\n\n(0, _scale.registerTickMethod)('cat', _catTick[\"default\"]);\n(0, _scale.registerTickMethod)('time-cat', _catTick[\"default\"]); // 覆盖linear 度量的tick算法\n\n(0, _scale.registerTickMethod)('wilkinson-extended', _linearTick[\"default\"]);\n_scale.Scale.Linear = Linear;\n_scale.Scale.Identity = Identity;\n_scale.Scale.Category = Category;\n_scale.Scale.Cat = Category;\n_scale.Scale.TimeCat = TimeCat;\nvar _default = _scale.Scale;\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\n// cat平均算法,保头保尾\nvar _default = function _default(cfg) {\n  var values = cfg.values,\n      tickCount = cfg.tickCount;\n\n  if (!tickCount) {\n    return values;\n  }\n\n  if (values.length <= 1) {\n    return values;\n  } // 获取间隔步长, 最小是1\n\n\n  var step = parseInt(values.length / (tickCount - 1)) || 1;\n  var ticks = []; // 按间隔数取对应节点\n\n  for (var index = 0; index < values.length; index = index + step) {\n    ticks.push(values[index]);\n  }\n\n  var last = values[values.length - 1]; // 如果最后一个tick不等于原数据的最后一个\n\n  if (ticks[ticks.length - 1] !== last) {\n    if (ticks.length >= tickCount) {\n      // 如果当前的tick个数满足要求\n      ticks[ticks.length - 1] = last;\n    } else {\n      // 不满足tickCount则直接加入最后一个\n      ticks.push(last);\n    }\n  }\n\n  return ticks;\n};\n\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n// 认为是nice的刻度\nvar SNAP_COUNT_ARRAY = [1, 1.2, 1.5, 2, 2.2, 2.4, 2.5, 3, 4, 5, 6, 7.5, 8, 10];\nvar DEFAULT_COUNT = 5; // 默认刻度值\n\nvar _default = function _default(cfg) {\n  var _ref = cfg || {},\n      tickCount = _ref.tickCount,\n      tickInterval = _ref.tickInterval;\n\n  var _ref2 = cfg || {},\n      min = _ref2.min,\n      max = _ref2.max;\n\n  min = isNaN(min) ? 0 : min;\n  max = isNaN(max) ? 0 : max;\n  var count = tickCount && tickCount >= 2 ? tickCount : DEFAULT_COUNT; // 计算interval, 优先取tickInterval\n\n  var interval = tickInterval || getBestInterval({\n    tickCount: count,\n    max: max,\n    min: min\n  }); // 通过interval计算最小tick\n\n  var minTick = Math.floor(min / interval) * interval; // 如果指定了tickInterval, count 需要根据指定的tickInterval来算计\n\n  if (tickInterval) {\n    var intervalCount = Math.abs(Math.ceil((max - minTick) / tickInterval)) + 1; // tickCount 作为最小 count 处理\n\n    count = Math.max(count, intervalCount);\n  }\n\n  var ticks = [];\n  var tickLength = 0;\n  var fixedLength = getFixedLength(interval);\n\n  while (tickLength < count) {\n    ticks.push(toFixed(minTick + tickLength * interval, fixedLength));\n    tickLength++;\n  }\n\n  return ticks;\n};\n\nexports[\"default\"] = _default;\nvar DECIMAL_LENGTH = 12;\n\nfunction getFactor(number) {\n  // 取正数\n  number = Math.abs(number);\n  var factor = 1;\n\n  if (number === 0) {\n    return factor;\n  } // 小于1,逐渐放大\n\n\n  if (number < 1) {\n    var count = 0;\n\n    while (number < 1) {\n      factor = factor / 10;\n      number = number * 10;\n      count++;\n    } // 浮点数计算出现问题\n\n\n    if (factor.toString().length > DECIMAL_LENGTH) {\n      factor = parseFloat(factor.toFixed(count));\n    }\n\n    return factor;\n  } // 大于10逐渐缩小\n\n\n  while (number > 10) {\n    factor = factor * 10;\n    number = number / 10;\n  }\n\n  return factor;\n} // 获取最佳匹配刻度\n\n\nfunction getBestInterval(_ref3) {\n  var tickCount = _ref3.tickCount,\n      min = _ref3.min,\n      max = _ref3.max;\n\n  // 如果最大最小相等,则直接按1处理\n  if (min === max) {\n    return 1 * getFactor(max);\n  } // 1.计算平均刻度\b间隔\n\n\n  var avgInterval = (max - min) / (tickCount - 1); // 2.数据标准归一化 映射到[1-10]区间\n\n  var factor = getFactor(avgInterval);\n  var calInterval = avgInterval / factor;\n  var calMax = max / factor;\n  var calMin = min / factor; // 根据平均值推算最逼近刻度值\n\n  var similarityIndex = 0;\n\n  for (var index = 0; index < SNAP_COUNT_ARRAY.length; index++) {\n    var item = SNAP_COUNT_ARRAY[index];\n\n    if (calInterval <= item) {\n      similarityIndex = index;\n      break;\n    }\n  }\n\n  var similarityInterval = getInterval(similarityIndex, tickCount, calMin, calMax); // 小数点位数还原到数据的位数, 因为similarityIndex有可能是小数,所以需要保留similarityIndex自己的小数位数\n\n  var fixedLength = getFixedLength(similarityInterval) + getFixedLength(factor);\n  return toFixed(similarityInterval * factor, fixedLength);\n}\n\nfunction getInterval(startIndex, tickCount, min, max) {\n  var verify = false;\n  var interval = SNAP_COUNT_ARRAY[startIndex]; // 刻度值校验,如果不满足,循环下去\n\n  for (var i = startIndex; i < SNAP_COUNT_ARRAY.length; i++) {\n    if (intervalIsVerify({\n      interval: SNAP_COUNT_ARRAY[i],\n      tickCount: tickCount,\n      max: max,\n      min: min\n    })) {\n      // 有符合条件的interval\n      interval = SNAP_COUNT_ARRAY[i];\n      verify = true;\n      break;\n    }\n  } // 如果不满足, 依次缩小10倍,再计算\n\n\n  if (!verify) {\n    return 10 * getInterval(0, tickCount, min / 10, max / 10);\n  }\n\n  return interval;\n} // 刻度是否满足展示需求\n\n\nfunction intervalIsVerify(_ref4) {\n  var interval = _ref4.interval,\n      tickCount = _ref4.tickCount,\n      max = _ref4.max,\n      min = _ref4.min;\n  var minTick = Math.floor(min / interval) * interval;\n\n  if (minTick + (tickCount - 1) * interval >= max) {\n    return true;\n  }\n\n  return false;\n} // 计算小数点应该保留的位数\n\n\nfunction getFixedLength(num) {\n  var str = num.toString();\n  var index = str.indexOf('.');\n  var indexOfExp = str.indexOf('e-');\n  var length = indexOfExp >= 0 ? parseInt(str.substr(indexOfExp + 2), 10) : str.substr(index + 1).length;\n\n  if (length > 20) {\n    // 最多保留20位小数\n    length = 20;\n  }\n\n  return length;\n} // @antv/util fixedbase不支持科学计数法的判断,需要提mr\n\n\nfunction toFixed(v, length) {\n  return parseFloat(v.toFixed(length));\n}","\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _common = require(\"../../util/common\");\n\nvar _index = _interopRequireDefault(require(\"../../component/axis/index\"));\n\nvar _global = _interopRequireDefault(require(\"../../global\"));\n\nvar _index2 = require(\"../../graphic/index\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction formatTicks(ticks) {\n  var tmp = ticks.slice(0);\n\n  if (tmp.length > 0) {\n    var first = tmp[0];\n    var last = tmp[tmp.length - 1];\n\n    if (first.value !== 0) {\n      tmp.unshift({\n        value: 0\n      });\n    }\n\n    if (last.value !== 1) {\n      tmp.push({\n        value: 1\n      });\n    }\n  }\n\n  return tmp;\n}\n\nvar AxisController = /*#__PURE__*/function () {\n  function AxisController(cfg) {\n    this.axisCfg = {};\n    this.frontPlot = null;\n    this.backPlot = null;\n    this.axes = {}; // store the axes's options\n\n    (0, _common.mix)(this, cfg);\n  }\n\n  var _proto = AxisController.prototype;\n\n  _proto._isHide = function _isHide(field) {\n    var axisCfg = this.axisCfg;\n    return !axisCfg || axisCfg[field] === false;\n  };\n\n  _proto._getLinePosition = function _getLinePosition(scale, dimType, index, transposed) {\n    var position = '';\n    var field = scale.field;\n    var axisCfg = this.axisCfg;\n\n    if (axisCfg[field] && axisCfg[field].position) {\n      position = axisCfg[field].position;\n    } else if (dimType === 'x') {\n      position = transposed ? 'left' : 'bottom';\n    } else if (dimType === 'y') {\n      position = index ? 'right' : 'left';\n\n      if (transposed) {\n        position = 'bottom';\n      }\n    }\n\n    return position;\n  };\n\n  _proto._getLineCfg = function _getLineCfg(coord, dimType, position) {\n    var start;\n    var end;\n    var factor = 1; // Mark clockwise or counterclockwise\n\n    if (dimType === 'x') {\n      start = {\n        x: 0,\n        y: 0\n      };\n      end = {\n        x: 1,\n        y: 0\n      };\n    } else {\n      if (position === 'right') {\n        // there will be several y axes\n        start = {\n          x: 1,\n          y: 0\n        };\n        end = {\n          x: 1,\n          y: 1\n        };\n      } else {\n        start = {\n          x: 0,\n          y: 0\n        };\n        end = {\n          x: 0,\n          y: 1\n        };\n        factor = -1;\n      }\n    }\n\n    if (coord.transposed) {\n      factor *= -1;\n    }\n\n    return {\n      offsetFactor: factor,\n      start: coord.convertPoint(start),\n      end: coord.convertPoint(end)\n    };\n  };\n\n  _proto._getCircleCfg = function _getCircleCfg(coord) {\n    return {\n      startAngle: coord.startAngle,\n      endAngle: coord.endAngle,\n      center: coord.center,\n      radius: coord.circleRadius\n    };\n  };\n\n  _proto._getRadiusCfg = function _getRadiusCfg(coord) {\n    var transposed = coord.transposed;\n    var start;\n    var end;\n\n    if (transposed) {\n      start = {\n        x: 0,\n        y: 0\n      };\n      end = {\n        x: 1,\n        y: 0\n      };\n    } else {\n      start = {\n        x: 0,\n        y: 0\n      };\n      end = {\n        x: 0,\n        y: 1\n      };\n    }\n\n    return {\n      offsetFactor: -1,\n      start: coord.convertPoint(start),\n      end: coord.convertPoint(end)\n    };\n  };\n\n  _proto._getAxisCfg = function _getAxisCfg(coord, scale, verticalScale, dimType, defaultCfg) {\n    var self = this;\n    var axisCfg = this.axisCfg;\n    var ticks = scale.getTicks();\n    var cfg = (0, _common.deepMix)({\n      ticks: ticks,\n      frontContainer: this.frontPlot,\n      backContainer: this.backPlot\n    }, defaultCfg, axisCfg[scale.field]);\n    var labels = [];\n    var label = cfg.label;\n    var count = ticks.length;\n    var maxWidth = 0;\n    var maxHeight = 0;\n    var labelCfg = label;\n    (0, _common.each)(ticks, function (tick, index) {\n      if ((0, _common.isFunction)(label)) {\n        var executedLabel = label(tick.text, index, count);\n        labelCfg = executedLabel ? (0, _common.mix)({}, _global[\"default\"]._defaultAxis.label, executedLabel) : null;\n      }\n\n      if (labelCfg) {\n        var textStyle = {};\n\n        if (labelCfg.textAlign) {\n          textStyle.textAlign = labelCfg.textAlign;\n        }\n\n        if (labelCfg.textBaseline) {\n          textStyle.textBaseline = labelCfg.textBaseline;\n        }\n\n        var axisLabel = new _index2.Shape.Text({\n          className: 'axis-label',\n          attrs: (0, _common.mix)({\n            x: 0,\n            y: 0,\n            text: tick.text,\n            fontFamily: self.chart.get('canvas').get('fontFamily')\n          }, labelCfg),\n          value: tick.value,\n          textStyle: textStyle,\n          top: labelCfg.top,\n          context: self.chart.get('canvas').get('context')\n        });\n        labels.push(axisLabel);\n\n        var _axisLabel$getBBox = axisLabel.getBBox(),\n            width = _axisLabel$getBBox.width,\n            height = _axisLabel$getBBox.height;\n\n        maxWidth = Math.max(maxWidth, width);\n        maxHeight = Math.max(maxHeight, height);\n      }\n    });\n    cfg.labels = labels;\n    cfg.maxWidth = maxWidth;\n    cfg.maxHeight = maxHeight;\n    return cfg;\n  };\n\n  _proto._createAxis = function _createAxis(coord, scale, verticalScale, dimType, index) {\n    if (index === void 0) {\n      index = '';\n    }\n\n    var self = this;\n    var coordType = coord.type;\n    var transposed = coord.transposed;\n    var type;\n    var key;\n    var defaultCfg;\n\n    if (coordType === 'cartesian' || coordType === 'rect') {\n      var position = self._getLinePosition(scale, dimType, index, transposed);\n\n      defaultCfg = _global[\"default\"].axis[position];\n      defaultCfg.position = position;\n      type = 'Line';\n      key = position;\n    } else {\n      if (dimType === 'x' && !transposed || dimType === 'y' && transposed) {\n        defaultCfg = _global[\"default\"].axis.circle;\n        type = 'Circle';\n        key = 'circle';\n      } else {\n        defaultCfg = _global[\"default\"].axis.radius;\n        type = 'Line';\n        key = 'radius';\n      }\n    }\n\n    var cfg = self._getAxisCfg(coord, scale, verticalScale, dimType, defaultCfg);\n\n    cfg.type = type;\n    cfg.dimType = dimType;\n    cfg.verticalScale = verticalScale;\n    cfg.index = index;\n    this.axes[key] = cfg;\n  };\n\n  _proto.createAxis = function createAxis(coord, xScale, yScales) {\n    var self = this;\n\n    if (xScale && !self._isHide(xScale.field)) {\n      self._createAxis(coord, xScale, yScales[0], 'x');\n    }\n\n    (0, _common.each)(yScales, function (yScale, index) {\n      if (!self._isHide(yScale.field)) {\n        self._createAxis(coord, yScale, xScale, 'y', index);\n      }\n    });\n    var axes = this.axes;\n    var chart = self.chart;\n\n    if (chart._isAutoPadding()) {\n      var userPadding = (0, _common.parsePadding)(chart.get('padding'));\n      var appendPadding = (0, _common.parsePadding)(chart.get('appendPadding'));\n      var legendRange = chart.get('legendRange') || {\n        top: 0,\n        right: 0,\n        bottom: 0,\n        left: 0\n      };\n      var padding = [userPadding[0] === 'auto' ? legendRange.top + appendPadding[0] * 2 : userPadding[0], userPadding[1] === 'auto' ? legendRange.right + appendPadding[1] : userPadding[1], userPadding[2] === 'auto' ? legendRange.bottom + appendPadding[2] : userPadding[2], userPadding[3] === 'auto' ? legendRange.left + appendPadding[3] : userPadding[3]];\n\n      if (coord.isPolar) {\n        var circleAxis = axes.circle;\n\n        if (circleAxis) {\n          var maxHeight = circleAxis.maxHeight,\n              maxWidth = circleAxis.maxWidth,\n              labelOffset = circleAxis.labelOffset;\n          padding[0] += maxHeight + labelOffset;\n          padding[1] += maxWidth + labelOffset;\n          padding[2] += maxHeight + labelOffset;\n          padding[3] += maxWidth + labelOffset;\n        }\n      } else {\n        if (axes.right && userPadding[1] === 'auto') {\n          var _axes$right = axes.right,\n              _maxWidth = _axes$right.maxWidth,\n              _labelOffset = _axes$right.labelOffset;\n          padding[1] += _maxWidth + _labelOffset;\n        }\n\n        if (axes.left && userPadding[3] === 'auto') {\n          var _axes$left = axes.left,\n              _maxWidth2 = _axes$left.maxWidth,\n              _labelOffset2 = _axes$left.labelOffset;\n          padding[3] += _maxWidth2 + _labelOffset2;\n        }\n\n        if (axes.bottom && userPadding[2] === 'auto') {\n          var _axes$bottom = axes.bottom,\n              _maxHeight = _axes$bottom.maxHeight,\n              _labelOffset3 = _axes$bottom.labelOffset;\n          padding[2] += _maxHeight + _labelOffset3;\n        }\n      }\n\n      chart.set('_padding', padding);\n\n      chart._updateLayout(padding);\n    }\n\n    (0, _common.each)(axes, function (axis) {\n      var type = axis.type,\n          grid = axis.grid,\n          verticalScale = axis.verticalScale,\n          ticks = axis.ticks,\n          dimType = axis.dimType,\n          position = axis.position,\n          index = axis.index;\n      var appendCfg;\n\n      if (coord.isPolar) {\n        if (type === 'Line') {\n          appendCfg = self._getRadiusCfg(coord);\n        } else if (type === 'Circle') {\n          appendCfg = self._getCircleCfg(coord);\n        }\n      } else {\n        appendCfg = self._getLineCfg(coord, dimType, position);\n      }\n\n      if (grid && verticalScale) {\n        var gridPoints = [];\n        var verticalTicks = formatTicks(verticalScale.getTicks());\n        (0, _common.each)(ticks, function (tick) {\n          var subPoints = [];\n          (0, _common.each)(verticalTicks, function (verticalTick) {\n            var x = dimType === 'x' ? tick.value : verticalTick.value;\n            var y = dimType === 'x' ? verticalTick.value : tick.value;\n\n            if (x >= 0 && x <= 1 && y >= 0 && y <= 1) {\n              var point = coord.convertPoint({\n                x: x,\n                y: y\n              });\n              subPoints.push(point);\n            }\n          });\n          gridPoints.push({\n            points: subPoints,\n            _id: 'axis-' + dimType + index + '-grid-' + tick.tickValue\n          });\n        });\n        axis.gridPoints = gridPoints;\n\n        if (coord.isPolar) {\n          axis.center = coord.center;\n          axis.startAngle = coord.startAngle;\n          axis.endAngle = coord.endAngle;\n        }\n      }\n\n      appendCfg._id = 'axis-' + dimType;\n\n      if (!(0, _common.isNil)(index)) {\n        appendCfg._id = 'axis-' + dimType + index;\n      }\n\n      new _index[\"default\"][type]((0, _common.mix)(axis, appendCfg));\n    });\n  };\n\n  _proto.clear = function clear() {\n    this.axes = {};\n    this.frontPlot.clear();\n    this.backPlot.clear();\n  };\n\n  return AxisController;\n}();\n\nvar _default = AxisController;\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _abstract = _interopRequireDefault(require(\"./abstract\"));\n\nrequire(\"./line\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar _default = _abstract[\"default\"];\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _common = require(\"../../util/common\");\n\nvar _global = _interopRequireDefault(require(\"../../global\"));\n\nvar _vector = _interopRequireDefault(require(\"../../graphic/util/vector2\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar Abastract = /*#__PURE__*/function () {\n  var _proto = Abastract.prototype;\n\n  _proto._initDefaultCfg = function _initDefaultCfg() {\n    /**\n     * ticks\n     * @type {Array}\n     */\n    this.ticks = [];\n    /**\n     * the configuration for tickLine\n     * @type {Object}\n     */\n\n    this.tickLine = {};\n    /**\n     * the direction of ticks, 1 means clockwise\n     * @type {Number}\n     */\n\n    this.offsetFactor = 1;\n    /**\n     * the top container\n     * @type {container}\n     */\n\n    this.frontContainer = null;\n    /**\n     * the back container\n     * @type {[type]}\n     */\n\n    this.backContainer = null;\n    /**\n     * points for draw grid line\n     * @type {Array}\n     */\n\n    this.gridPoints = [];\n  };\n\n  function Abastract(cfg) {\n    this._initDefaultCfg();\n\n    (0, _common.mix)(this, cfg);\n    this.draw();\n  }\n\n  _proto.draw = function draw() {\n    var line = this.line,\n        tickLine = this.tickLine,\n        label = this.label,\n        grid = this.grid;\n    grid && this.drawGrid(grid); // draw the grid lines\n\n    tickLine && this.drawTicks(tickLine); // draw the tickLine\n\n    line && this.drawLine(line); // draw axis line\n\n    label && this.drawLabels(); // draw ticks\n  };\n\n  _proto.drawTicks = function drawTicks(tickCfg) {\n    var self = this;\n    var ticks = self.ticks;\n    var length = tickCfg.length;\n    var container = self.getContainer(tickCfg.top);\n    (0, _common.each)(ticks, function (tick) {\n      var start = self.getOffsetPoint(tick.value);\n      var end = self.getSidePoint(start, length);\n      var shape = container.addShape('line', {\n        className: 'axis-tick',\n        attrs: (0, _common.mix)({\n          x1: start.x,\n          y1: start.y,\n          x2: end.x,\n          y2: end.y\n        }, tickCfg)\n      });\n      shape._id = self._id + '-ticks';\n    });\n  };\n\n  _proto.drawLabels = function drawLabels() {\n    var self = this;\n    var labelOffset = self.labelOffset;\n    var labels = self.labels;\n    (0, _common.each)(labels, function (labelShape) {\n      var container = self.getContainer(labelShape.get('top'));\n      var start = self.getOffsetPoint(labelShape.get('value'));\n\n      var _self$getSidePoint = self.getSidePoint(start, labelOffset),\n          x = _self$getSidePoint.x,\n          y = _self$getSidePoint.y;\n\n      labelShape.attr((0, _common.mix)({\n        x: x,\n        y: y\n      }, self.getTextAlignInfo(start, labelOffset), labelShape.get('textStyle')));\n      labelShape._id = self._id + '-' + labelShape.attr('text');\n      container.add(labelShape);\n    });\n  };\n\n  _proto.drawLine = function drawLine() {};\n\n  _proto.drawGrid = function drawGrid(grid) {\n    var self = this;\n    var gridPoints = self.gridPoints,\n        ticks = self.ticks;\n    var gridCfg = grid;\n    var count = gridPoints.length;\n    (0, _common.each)(gridPoints, function (subPoints, index) {\n      if ((0, _common.isFunction)(grid)) {\n        var tick = ticks[index] || {};\n        var executedGrid = grid(tick.text, index, count);\n        gridCfg = executedGrid ? (0, _common.mix)({}, _global[\"default\"]._defaultAxis.grid, executedGrid) : null;\n      }\n\n      if (gridCfg) {\n        var type = gridCfg.type; // has two types: 'line' and 'arc'\n\n        var points = subPoints.points;\n        var container = self.getContainer(gridCfg.top);\n        var shape;\n\n        if (type === 'arc') {\n          var center = self.center,\n              startAngle = self.startAngle,\n              endAngle = self.endAngle;\n\n          var radius = _vector[\"default\"].length([points[0].x - center.x, points[0].y - center.y]);\n\n          shape = container.addShape('Arc', {\n            className: 'axis-grid',\n            attrs: (0, _common.mix)({\n              x: center.x,\n              y: center.y,\n              startAngle: startAngle,\n              endAngle: endAngle,\n              r: radius\n            }, gridCfg)\n          });\n        } else {\n          shape = container.addShape('Polyline', {\n            className: 'axis-grid',\n            attrs: (0, _common.mix)({\n              points: points\n            }, gridCfg)\n          });\n        }\n\n        shape._id = subPoints._id;\n      }\n    });\n  };\n\n  _proto.getOffsetPoint = function getOffsetPoint() {};\n\n  _proto.getAxisVector = function getAxisVector() {};\n\n  _proto.getOffsetVector = function getOffsetVector(point, offset) {\n    var self = this;\n    var axisVector = self.getAxisVector(point);\n\n    var normal = _vector[\"default\"].normalize([], axisVector);\n\n    var factor = self.offsetFactor;\n    var verticalVector = [normal[1] * -1 * factor, normal[0] * factor];\n    return _vector[\"default\"].scale([], verticalVector, offset);\n  };\n\n  _proto.getSidePoint = function getSidePoint(point, offset) {\n    var self = this;\n    var offsetVector = self.getOffsetVector(point, offset);\n    return {\n      x: point.x + offsetVector[0],\n      y: point.y + offsetVector[1]\n    };\n  };\n\n  _proto.getTextAlignInfo = function getTextAlignInfo(point, offset) {\n    var self = this;\n    var offsetVector = self.getOffsetVector(point, offset);\n    var align;\n    var baseLine;\n\n    if (offsetVector[0] > 0) {\n      align = 'left';\n    } else if (offsetVector[0] < 0) {\n      align = 'right';\n    } else {\n      align = 'center';\n    }\n\n    if (offsetVector[1] > 0) {\n      baseLine = 'top';\n    } else if (offsetVector[1] < 0) {\n      baseLine = 'bottom';\n    } else {\n      baseLine = 'middle';\n    }\n\n    return {\n      textAlign: align,\n      textBaseline: baseLine\n    };\n  };\n\n  _proto.getContainer = function getContainer(isTop) {\n    var frontContainer = this.frontContainer,\n        backContainer = this.backContainer;\n    return isTop ? frontContainer : backContainer;\n  };\n\n  return Abastract;\n}();\n\nvar _default = Abastract;\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _common = require(\"../../util/common\");\n\nvar _abstract = _interopRequireDefault(require(\"./abstract\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar Line = /*#__PURE__*/function (_Abstract) {\n  _inheritsLoose(Line, _Abstract);\n\n  function Line() {\n    return _Abstract.apply(this, arguments) || this;\n  }\n\n  var _proto = Line.prototype;\n\n  _proto._initDefaultCfg = function _initDefaultCfg() {\n    _Abstract.prototype._initDefaultCfg.call(this);\n\n    this.start = null;\n    this.end = null;\n  };\n\n  _proto.getOffsetPoint = function getOffsetPoint(value) {\n    var start = this.start,\n        end = this.end;\n    return {\n      x: start.x + (end.x - start.x) * value,\n      y: start.y + (end.y - start.y) * value\n    };\n  };\n\n  _proto.getAxisVector = function getAxisVector() {\n    var start = this.start,\n        end = this.end;\n    return [end.x - start.x, end.y - start.y];\n  };\n\n  _proto.drawLine = function drawLine(lineCfg) {\n    var container = this.getContainer(lineCfg.top);\n    var start = this.start,\n        end = this.end;\n    container.addShape('line', {\n      className: 'axis-line',\n      attrs: (0, _common.mix)({\n        x1: start.x,\n        y1: start.y,\n        x2: end.x,\n        y2: end.y\n      }, lineCfg)\n    });\n  };\n\n  return Line;\n}(_abstract[\"default\"]);\n\n_abstract[\"default\"].Line = Line;\nvar _default = Line;\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\n\nvar _canvas = _interopRequireDefault(require(\"./canvas\"));\n\nexports.Canvas = _canvas[\"default\"];\n\nvar _group = _interopRequireDefault(require(\"./group\"));\n\nexports.Group = _group[\"default\"];\n\nvar _shape = _interopRequireDefault(require(\"./shape\"));\n\nexports.Shape = _shape[\"default\"];\n\nvar _matrix = _interopRequireDefault(require(\"./util/matrix\"));\n\nexports.Matrix = _matrix[\"default\"];\n\nvar _vector = _interopRequireDefault(require(\"./util/vector2\"));\n\nexports.Vector2 = _vector[\"default\"];\n\nrequire(\"./shape/rect\");\n\nrequire(\"./shape/image\");\n\nrequire(\"./shape/circle\");\n\nrequire(\"./shape/line\");\n\nrequire(\"./shape/polygon\");\n\nrequire(\"./shape/polyline\");\n\nrequire(\"./shape/arc\");\n\nrequire(\"./shape/sector\");\n\nrequire(\"./shape/text\");\n\nrequire(\"./shape/custom\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }","\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _emit = _interopRequireDefault(require(\"./event/emit\"));\n\nvar _controller = _interopRequireDefault(require(\"./event/controller\"));\n\nvar _canvasElement = _interopRequireDefault(require(\"./canvas-element\"));\n\nvar _common = require(\"../util/common\");\n\nvar _container = _interopRequireDefault(require(\"./container\"));\n\nvar _group = _interopRequireDefault(require(\"./group\"));\n\nvar _requestAnimationFrame = require(\"./util/requestAnimationFrame\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar Canvas = /*#__PURE__*/function (_EventEmit) {\n  _inheritsLoose(Canvas, _EventEmit);\n\n  var _proto = Canvas.prototype;\n\n  _proto.get = function get(name) {\n    return this._attrs[name];\n  };\n\n  _proto.set = function set(name, value) {\n    this._attrs[name] = value;\n  };\n\n  function Canvas(cfg) {\n    var _this;\n\n    _this = _EventEmit.call(this) || this;\n    _this._attrs = (0, _common.mix)({\n      type: 'canvas',\n      children: []\n    }, cfg);\n\n    _this._initPixelRatio();\n\n    _this._initCanvas();\n\n    return _this;\n  }\n\n  _proto._initPixelRatio = function _initPixelRatio() {\n    var pixelRatio = this.get('pixelRatio');\n\n    if (!pixelRatio) {\n      this.set('pixelRatio', (0, _common.getPixelRatio)());\n    }\n  };\n\n  _proto.beforeDraw = function beforeDraw() {\n    var context = this._attrs.context;\n    var el = this._attrs.el;\n    context && context.clearRect && context.clearRect(0, 0, el.width, el.height);\n  };\n\n  _proto._initCanvas = function _initCanvas() {\n    var self = this;\n    var el = self.get('el');\n    var context = self.get('context');\n\n    if (!el && !context) {\n      throw new Error('Please specify the id, el or context of the chart!');\n    }\n\n    var canvas;\n\n    if (el) {\n      // DOMElement or String\n      canvas = (0, _common.isString)(el) ? (0, _common.getDomById)(el) : el;\n    } else {\n      // 说明没有指定el\n      canvas = _canvasElement[\"default\"].create(context);\n    }\n\n    if (context && canvas && !canvas.getContext) {\n      canvas.getContext = function () {\n        return context;\n      };\n    }\n\n    var width = self.get('width');\n\n    if (!width) {\n      width = (0, _common.getWidth)(canvas);\n    }\n\n    var height = self.get('height');\n\n    if (!height) {\n      height = (0, _common.getHeight)(canvas);\n    }\n\n    self.set('canvas', this);\n    self.set('el', canvas);\n    self.set('context', context || canvas.getContext('2d'));\n    self.changeSize(width, height); // 初始化事件控制器\n\n    var eventController = new _controller[\"default\"]({\n      canvas: this,\n      el: canvas\n    });\n    self.set('eventController', eventController);\n  };\n\n  _proto.changeSize = function changeSize(width, height) {\n    var pixelRatio = this.get('pixelRatio');\n    var canvasDOM = this.get('el'); // HTMLCanvasElement or canvasElement\n    // 浏览器环境设置style样式\n\n    if (canvasDOM.style) {\n      canvasDOM.style.width = width + 'px';\n      canvasDOM.style.height = height + 'px';\n    }\n\n    if ((0, _common.isCanvasElement)(canvasDOM)) {\n      canvasDOM.width = width * pixelRatio;\n      canvasDOM.height = height * pixelRatio;\n\n      if (pixelRatio !== 1) {\n        var ctx = this.get('context');\n        ctx.scale(pixelRatio, pixelRatio);\n      }\n    }\n\n    this.set('width', width);\n    this.set('height', height);\n  };\n\n  _proto.getWidth = function getWidth() {\n    var pixelRatio = this.get('pixelRatio');\n    var width = this.get('width');\n    return width * pixelRatio;\n  };\n\n  _proto.getHeight = function getHeight() {\n    var pixelRatio = this.get('pixelRatio');\n    var height = this.get('height');\n    return height * pixelRatio;\n  };\n\n  _proto.getPointByClient = function getPointByClient(clientX, clientY) {\n    var el = this.get('el');\n    var bbox = el.getBoundingClientRect();\n    var width = bbox.right - bbox.left;\n    var height = bbox.bottom - bbox.top;\n    return {\n      x: (clientX - bbox.left) * (el.width / width),\n      y: (clientY - bbox.top) * (el.height / height)\n    };\n  };\n\n  _proto._beginDraw = function _beginDraw() {\n    this._attrs.toDraw = true;\n  };\n\n  _proto._endDraw = function _endDraw() {\n    this._attrs.toDraw = false;\n  };\n\n  _proto.draw = function draw() {\n    var self = this;\n\n    function drawInner() {\n      self.set('animateHandler', (0, _requestAnimationFrame.requestAnimationFrame)(function () {\n        self.set('animateHandler', undefined);\n\n        if (self.get('toDraw')) {\n          drawInner();\n        }\n      }));\n      self.beforeDraw();\n\n      try {\n        var context = self._attrs.context;\n        self.drawInner(context); // 支付宝,微信小程序,需要调context.draw才能完成绘制, 所以这里直接判断是否有.draw方法\n\n        if (context.draw) {\n          context.draw();\n        }\n      } catch (ev) {\n        console.warn('error in draw canvas, detail as:');\n        console.warn(ev);\n\n        self._endDraw();\n      }\n\n      self._endDraw();\n    }\n\n    if (self.get('destroyed')) {\n      return;\n    }\n\n    if (self.get('animateHandler')) {\n      this._beginDraw();\n    } else {\n      drawInner();\n    }\n  };\n\n  _proto.destroy = function destroy() {\n    if (this.get('destroyed')) {\n      return;\n    } // 需要清理 canvas 画布内容,否则会导致 spa 应用 ios 下 canvas 白屏\n    // https://stackoverflow.com/questions/52532614/total-canvas-memory-use-exceeds-the-maximum-limit-safari-12\n    // https://github.com/antvis/F2/issues/630\n\n\n    var el = this.get('el');\n    el.width = 0;\n    el.height = 0;\n    this.clear();\n    this._attrs = {};\n    this.set('destroyed', true);\n  };\n\n  _proto.isDestroyed = function isDestroyed() {\n    return this.get('destroyed');\n  };\n\n  return Canvas;\n}(_emit[\"default\"]);\n\n(0, _common.mix)(Canvas.prototype, _container[\"default\"], {\n  getGroupClass: function getGroupClass() {\n    return _group[\"default\"];\n  }\n});\nvar _default = Canvas;\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _dom = require(\"../../util/dom\");\n\nvar _common = require(\"../../util/common\");\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// 计算滑动的方向\nvar calcDirection = function calcDirection(start, end) {\n  var xDistance = end.x - start.x;\n  var yDistance = end.y - start.y; // x 的距离大于y 说明是横向,否则就是纵向\n\n  if (Math.abs(xDistance) > Math.abs(yDistance)) {\n    return xDistance > 0 ? 'right' : 'left';\n  }\n\n  return yDistance > 0 ? 'down' : 'up';\n}; // 计算2点之间的距离\n\n\nvar calcDistance = function calcDistance(point1, point2) {\n  var xDistance = Math.abs(point2.x - point1.x);\n  var yDistance = Math.abs(point2.y - point1.y);\n  return Math.sqrt(xDistance * xDistance + yDistance * yDistance);\n};\n\nvar getCenter = function getCenter(point1, point2) {\n  var x = point1.x + (point2.x - point1.x) / 2;\n  var y = point1.y + (point2.y - point1.y) / 2;\n  return {\n    x: x,\n    y: y\n  };\n};\n\nvar convertPoints = function convertPoints(ev, canvas) {\n  var touches = ev.touches; // 认为是mouse事件\n\n  if (!touches) {\n    var point = (0, _dom.getRelativePosition)({\n      x: ev.clientX,\n      y: ev.clientY\n    }, canvas);\n    return [point];\n  }\n\n  var points = [];\n  var len = touches.length;\n\n  for (var i = 0; i < len; i++) {\n    var touch = touches[i]; // x, y: 相对canvas原点的位置,clientX, clientY 相对于可视窗口的位置\n\n    var x = touch.x,\n        y = touch.y,\n        clientX = touch.clientX,\n        clientY = touch.clientY;\n\n    var _point = void 0; // 小程序环境会有x,y\n\n\n    if ((0, _common.isNumber)(x) || (0, _common.isNumber)(y)) {\n      _point = {\n        x: x,\n        y: y\n      };\n    } else {\n      // 浏览器环境再计算下canvas的相对位置\n      _point = (0, _dom.getRelativePosition)({\n        x: clientX,\n        y: clientY\n      }, canvas);\n    }\n\n    points.push(_point);\n  }\n\n  return points;\n};\n\nvar PRESS_DELAY = 250;\n\nvar EventController = /*#__PURE__*/function () {\n  function EventController(_ref) {\n    var _this = this;\n\n    var canvas = _ref.canvas,\n        el = _ref.el;\n\n    _defineProperty(this, \"_click\", function (ev) {\n      var points = convertPoints(ev, _this.canvas);\n      ev.points = points;\n\n      _this.emitEvent('click', ev);\n    });\n\n    _defineProperty(this, \"_start\", function (ev) {\n      var points = convertPoints(ev, _this.canvas);\n\n      if (!points) {\n        return;\n      }\n\n      ev.points = points;\n\n      _this.emitEvent('touchstart', ev); // 防止上次的内容没有清理掉,重新reset下\n\n\n      _this.reset(); // 记录touch start 的时间\n\n\n      _this.startTime = Date.now(); // 记录touch start 的点\n\n      _this.startPoints = points;\n\n      if (points.length > 1) {\n        _this.startDistance = calcDistance(points[0], points[1]);\n        _this.center = getCenter(points[0], points[1]);\n      } else {\n        // 如果touchstart后停顿250ms, 则也触发press事件\n        _this.pressTimeout = setTimeout(function () {\n          // 这里固定触发press事件\n          var eventType = 'press';\n          var direction = 'none';\n          ev.direction = direction;\n\n          _this.emitStart(eventType, ev);\n\n          _this.emitEvent(eventType, ev);\n\n          _this.eventType = eventType;\n          _this.direction = direction;\n        }, PRESS_DELAY);\n      }\n    });\n\n    _defineProperty(this, \"_move\", function (ev) {\n      var points = convertPoints(ev, _this.canvas);\n      if (!points) return;\n\n      _this.clearPressTimeout();\n\n      ev.points = points;\n\n      _this.emitEvent('touchmove', ev);\n\n      var startPoints = _this.startPoints;\n      if (!startPoints) return; // 多指触控\n\n      if (points.length > 1) {\n        // touchstart的距离\n        var startDistance = _this.startDistance;\n        var currentDistance = calcDistance(points[0], points[1]);\n        ev.zoom = currentDistance / startDistance;\n        ev.center = _this.center; // 触发缩放事件\n\n        _this.emitStart('pinch', ev);\n\n        _this.emitEvent('pinch', ev);\n      } else {\n        var deltaX = points[0].x - startPoints[0].x;\n        var deltaY = points[0].y - startPoints[0].y;\n        var direction = _this.direction || calcDirection(startPoints[0], points[0]);\n        _this.direction = direction; // 获取press或者pan的事件类型\n        // press 按住滑动, pan表示平移\n        // 如果start后立刻move,则触发pan, 如果有停顿,则触发press\n\n        var eventType = _this.getEventType(points);\n\n        ev.direction = direction;\n        ev.deltaX = deltaX;\n        ev.deltaY = deltaY;\n\n        _this.emitStart(eventType, ev);\n\n        _this.emitEvent(eventType, ev); // 记录最后2次move的时间和坐标,为了给swipe事件用\n\n\n        var prevMoveTime = _this.lastMoveTime;\n        var now = Date.now(); // 最后2次的时间间隔一定要大于0,否则swipe没发计算\n\n        if (now - prevMoveTime > 0) {\n          _this.prevMoveTime = prevMoveTime;\n          _this.prevMovePoints = _this.lastMovePoints;\n          _this.lastMoveTime = now;\n          _this.lastMovePoints = points;\n        }\n      }\n    });\n\n    _defineProperty(this, \"_end\", function (ev) {\n      _this.emitEnd(ev);\n\n      _this.emitEvent('touchend', ev); // swipe事件处理, 在touchend之后触发\n\n\n      var lastMoveTime = _this.lastMoveTime;\n      var now = Date.now(); // 做这个判断是为了最后一次touchmove后到end前,还有一个停顿的过程\n      // 100 是拍的一个值,理论这个值会很短,一般不卡顿的话在10ms以内\n\n      if (now - lastMoveTime < 100) {\n        var prevMoveTime = _this.prevMoveTime || _this.startTime;\n        var intervalTime = lastMoveTime - prevMoveTime; // 时间间隔一定要大于0, 否则计算没意义\n\n        if (intervalTime > 0) {\n          var prevMovePoints = _this.prevMovePoints || _this.startPoints;\n          var lastMovePoints = _this.lastMovePoints; // move速率\n\n          var velocity = calcDistance(prevMovePoints[0], lastMovePoints[0]) / intervalTime; // 0.3 是参考hammerjs的设置\n\n          if (velocity > 0.3) {\n            ev.velocity = velocity;\n            ev.direction = calcDirection(prevMovePoints[0], lastMovePoints[0]);\n\n            _this.emitEvent('swipe', ev);\n          }\n        }\n      }\n\n      _this.reset();\n\n      var touches = ev.touches; // 当多指只释放了1指时也会触发end, 这时重新触发一次start\n\n      if (touches && touches.length > 0) {\n        _this._start(ev);\n      }\n    });\n\n    _defineProperty(this, \"_cancel\", function (ev) {\n      _this.emitEvent('touchcancel', ev);\n\n      _this.reset();\n    });\n\n    // canvasEl\n    this.canvas = canvas;\n    this.delegateEvent(el); // 用来记录当前触发的事件\n\n    this.processEvent = {};\n  }\n\n  var _proto = EventController.prototype;\n\n  _proto.delegateEvent = function delegateEvent(canvasEl) {\n    // 代理这几个事件\n    canvasEl.addEventListener('click', this._click);\n    canvasEl.addEventListener('touchstart', this._start);\n    canvasEl.addEventListener('touchmove', this._move);\n    canvasEl.addEventListener('touchend', this._end);\n    canvasEl.addEventListener('touchcancel', this._cancel);\n  };\n\n  _proto.emitEvent = function emitEvent(type, ev) {\n    var canvas = this.canvas;\n    canvas.emit(type, ev);\n  };\n\n  _proto.getEventType = function getEventType(points) {\n    var eventType = this.eventType,\n        canvas = this.canvas,\n        startTime = this.startTime,\n        startPoints = this.startPoints;\n\n    if (eventType) {\n      return eventType;\n    }\n\n    var type;\n    var panEventListeners = canvas.__events.pan; // 如果没有pan事件的监听,默认都是press\n\n    if (!panEventListeners || !panEventListeners.length) {\n      type = 'press';\n    } else {\n      // 如果有pan事件的处理,press则需要停顿250ms, 且移动距离小于10\n      var now = Date.now();\n\n      if (now - startTime > PRESS_DELAY && calcDistance(startPoints[0], points[0]) < 10) {\n        type = 'press';\n      } else {\n        type = 'pan';\n      }\n    }\n\n    this.eventType = type;\n    return type;\n  };\n\n  _proto.enable = function enable(eventType) {\n    this.processEvent[eventType] = true;\n  } // 是否进行中的事件\n  ;\n\n  _proto.isProcess = function isProcess(eventType) {\n    return this.processEvent[eventType];\n  } // 触发start事件\n  ;\n\n  _proto.emitStart = function emitStart(type, ev) {\n    if (this.isProcess(type)) {\n      return;\n    }\n\n    this.enable(type);\n    this.emitEvent(type + \"start\", ev);\n  } // 触发end事件\n  ;\n\n  _proto.emitEnd = function emitEnd(ev) {\n    var _this2 = this;\n\n    var processEvent = this.processEvent;\n    Object.keys(processEvent).forEach(function (type) {\n      _this2.emitEvent(type + \"end\", ev);\n\n      delete processEvent[type];\n    });\n  };\n\n  _proto.clearPressTimeout = function clearPressTimeout() {\n    if (this.pressTimeout) {\n      clearTimeout(this.pressTimeout);\n      this.pressTimeout = 0;\n    }\n  };\n\n  _proto.reset = function reset() {\n    this.clearPressTimeout();\n    this.startTime = 0;\n    this.startPoints = null;\n    this.startDistance = 0;\n    this.direction = null;\n    this.eventType = null;\n    this.pinch = false;\n    this.prevMoveTime = 0;\n    this.prevMovePoints = null;\n    this.lastMoveTime = 0;\n    this.lastMovePoints = null;\n  };\n\n  return EventController;\n}();\n\nvar _default = EventController;\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _emit = _interopRequireDefault(require(\"./event/emit\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar CanvasElement = /*#__PURE__*/function (_EventEmit) {\n  _inheritsLoose(CanvasElement, _EventEmit);\n\n  function CanvasElement(ctx) {\n    var _this;\n\n    _this = _EventEmit.call(this) || this;\n    _this.context = ctx; // canvas实际的宽高 (width/height) * pixelRatio\n\n    _this.width = 0;\n    _this.height = 0;\n    _this.style = {};\n    _this.currentStyle = {}; // 用来标识是CanvasElement实例\n\n    _this.isCanvasElement = true;\n    return _this;\n  }\n\n  var _proto = CanvasElement.prototype;\n\n  _proto.getContext = function getContext()\n  /* type */\n  {\n    return this.context;\n  };\n\n  _proto.getBoundingClientRect = function getBoundingClientRect() {\n    var width = this.width;\n    var height = this.height; // 默认都处理成可视窗口的顶部位置\n\n    return {\n      top: 0,\n      right: width,\n      bottom: height,\n      left: 0\n    };\n  };\n\n  _proto.addEventListener = function addEventListener(type, listener) {\n    this.on(type, listener);\n  };\n\n  _proto.removeEventListener = function removeEventListener(type, listener) {\n    this.off(type, listener);\n  };\n\n  _proto.dispatchEvent = function dispatchEvent(type, e) {\n    this.emit(type, e);\n  };\n\n  return CanvasElement;\n}(_emit[\"default\"]);\n\nfunction supportEventListener(canvas) {\n  if (!canvas) {\n    return false;\n  } // 非 HTMLCanvasElement\n\n\n  if (canvas.nodeType !== 1 || !canvas.nodeName || canvas.nodeName.toLowerCase() !== 'canvas') {\n    return false;\n  } // 微信小程序canvas.getContext('2d')时也是CanvasRenderingContext2D\n  // 也会有ctx.canvas, 而且nodeType也是1,所以还要在看下是否支持addEventListener\n\n\n  var support = false;\n\n  try {\n    canvas.addEventListener('eventTest', function () {\n      support = true;\n    });\n    canvas.dispatchEvent(new Event('eventTest'));\n  } catch (error) {\n    support = false;\n  }\n\n  return support;\n}\n\nvar _default = {\n  create: function create(ctx) {\n    if (!ctx) {\n      return null;\n    }\n\n    if (supportEventListener(ctx.canvas)) {\n      return ctx.canvas;\n    }\n\n    return new CanvasElement(ctx);\n  }\n};\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _common = require(\"../util/common\");\n\nvar _shape = _interopRequireDefault(require(\"./shape\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar SHAPE_MAP = {};\nvar INDEX = '_INDEX';\n\nfunction getComparer(compare) {\n  return function (left, right) {\n    var result = compare(left, right);\n    return result === 0 ? left[INDEX] - right[INDEX] : result;\n  };\n}\n\nvar _default = {\n  getGroupClass: function getGroupClass() {},\n  getChildren: function getChildren() {\n    return this.get('children');\n  },\n  addShape: function addShape(type, cfg) {\n    if (cfg === void 0) {\n      cfg = {};\n    }\n\n    var canvas = this.get('canvas');\n    var shapeType = SHAPE_MAP[type];\n\n    if (!shapeType) {\n      shapeType = (0, _common.upperFirst)(type);\n      SHAPE_MAP[type] = shapeType;\n    }\n\n    cfg.canvas = canvas;\n\n    if (shapeType === 'Text' && canvas && canvas.get('fontFamily')) {\n      cfg.attrs.fontFamily = cfg.attrs.fontFamily || canvas.get('fontFamily');\n    }\n\n    var shape = new _shape[\"default\"][shapeType](cfg);\n    this.add(shape);\n    return shape;\n  },\n  addGroup: function addGroup(cfg) {\n    var canvas = this.get('canvas');\n    var groupClass = this.getGroupClass();\n    cfg = (0, _common.mix)({}, cfg);\n    cfg.canvas = canvas;\n    cfg.parent = this;\n    var rst = new groupClass(cfg);\n    this.add(rst);\n    return rst;\n  },\n  contain: function contain(item) {\n    var children = this.get('children');\n    return children.indexOf(item) > -1;\n  },\n  sort: function sort() {\n    var children = this.get('children');\n\n    for (var i = 0, len = children.length; i < len; i++) {\n      var child = children[i];\n      child[INDEX] = i;\n    }\n\n    children.sort(getComparer(function (obj1, obj2) {\n      return obj1.get('zIndex') - obj2.get('zIndex');\n    }));\n    return this;\n  },\n  drawInner: function drawInner(context) {\n    var children = this.get('children');\n\n    for (var i = 0, len = children.length; i < len; i++) {\n      var child = children[i];\n      child.draw(context);\n    }\n\n    return this;\n  },\n  clear: function clear() {\n    var children = this.get('children');\n\n    while (children.length !== 0) {\n      children[children.length - 1].remove(true);\n    }\n\n    return this;\n  },\n  add: function add(items) {\n    var self = this;\n    var children = self.get('children');\n\n    if (!(0, _common.isArray)(items)) {\n      items = [items];\n    }\n\n    for (var i = 0, len = items.length; i < len; i++) {\n      var item = items[i];\n      var parent = item.get('parent');\n\n      if (parent) {\n        var descendants = parent.get('children');\n\n        _common.Array.remove(descendants, item);\n      }\n\n      self._setEvn(item);\n\n      children.push(item);\n    }\n\n    return self;\n  },\n  _setEvn: function _setEvn(item) {\n    var self = this;\n    item._attrs.parent = self;\n    item._attrs.context = self._attrs.context;\n    item._attrs.canvas = self._attrs.canvas;\n    var clip = item._attrs.attrs.clip;\n\n    if (clip) {\n      clip.set('parent', self);\n      clip.set('context', self.get('context'));\n    }\n\n    if (item._attrs.isGroup) {\n      var children = item._attrs.children;\n\n      for (var i = 0, len = children.length; i < len; i++) {\n        item._setEvn(children[i]);\n      }\n    }\n  }\n};\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _common = require(\"../util/common\");\n\nvar _element = _interopRequireDefault(require(\"./element\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar Shape = /*#__PURE__*/function (_Element) {\n  _inheritsLoose(Shape, _Element);\n\n  function Shape() {\n    return _Element.apply(this, arguments) || this;\n  }\n\n  var _proto = Shape.prototype;\n\n  _proto._initProperties = function _initProperties() {\n    this._attrs = {\n      zIndex: 0,\n      visible: true,\n      destroyed: false,\n      isShape: true,\n      attrs: {}\n    };\n  };\n\n  _proto.getType = function getType() {\n    return this._attrs.type;\n  };\n\n  _proto.drawInner = function drawInner(context) {\n    var self = this;\n    var attrs = self.get('attrs');\n    self.createPath(context);\n    var originOpacity = context.globalAlpha;\n\n    if (self.hasFill()) {\n      var fillOpacity = attrs.fillOpacity;\n\n      if (!(0, _common.isNil)(fillOpacity) && fillOpacity !== 1) {\n        context.globalAlpha = fillOpacity;\n        context.fill();\n        context.globalAlpha = originOpacity;\n      } else {\n        context.fill();\n      }\n    }\n\n    if (self.hasStroke()) {\n      var lineWidth = attrs.lineWidth;\n\n      if (lineWidth > 0) {\n        var strokeOpacity = attrs.strokeOpacity;\n\n        if (!(0, _common.isNil)(strokeOpacity) && strokeOpacity !== 1) {\n          context.globalAlpha = strokeOpacity;\n        }\n\n        context.stroke();\n      }\n    }\n  };\n\n  _proto.getBBox = function getBBox() {\n    var bbox = this._attrs.bbox;\n\n    if (!bbox) {\n      bbox = this.calculateBox();\n\n      if (bbox) {\n        bbox.x = bbox.minX;\n        bbox.y = bbox.minY;\n        bbox.width = bbox.maxX - bbox.minX;\n        bbox.height = bbox.maxY - bbox.minY;\n      }\n\n      this._attrs.bbox = bbox;\n    }\n\n    return bbox;\n  };\n\n  _proto.calculateBox = function calculateBox() {\n    return null;\n  };\n\n  _proto.createPath = function createPath() {};\n\n  return Shape;\n}(_element[\"default\"]);\n\nvar _default = Shape;\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _common = require(\"../util/common\");\n\nvar _matrix = _interopRequireDefault(require(\"./util/matrix\"));\n\nvar _vector = _interopRequireDefault(require(\"./util/vector2\"));\n\nvar _styleParse = require(\"./util/style-parse\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar ALIAS_ATTRS_MAP = {\n  stroke: 'strokeStyle',\n  fill: 'fillStyle',\n  opacity: 'globalAlpha'\n};\nvar SHAPE_ATTRS = ['fillStyle', 'font', 'globalAlpha', 'lineCap', 'lineWidth', 'lineJoin', 'miterLimit', 'shadowBlur', 'shadowColor', 'shadowOffsetX', 'shadowOffsetY', 'strokeStyle', 'textAlign', 'textBaseline', 'lineDash', 'shadow' // 兼容支付宝小程序\n];\nvar CLIP_SHAPES = ['circle', 'sector', 'polygon', 'rect', 'polyline'];\n\nvar Element = /*#__PURE__*/function () {\n  var _proto = Element.prototype;\n\n  _proto._initProperties = function _initProperties() {\n    this._attrs = {\n      zIndex: 0,\n      visible: true,\n      destroyed: false\n    };\n  };\n\n  function Element(cfg) {\n    this._initProperties();\n\n    (0, _common.mix)(this._attrs, cfg);\n    var attrs = this._attrs.attrs;\n\n    if (attrs) {\n      this.initAttrs(attrs);\n    }\n\n    this.initTransform();\n  }\n\n  _proto.get = function get(name) {\n    return this._attrs[name];\n  };\n\n  _proto.set = function set(name, value) {\n    this._attrs[name] = value;\n  };\n\n  _proto.isGroup = function isGroup() {\n    return this.get('isGroup');\n  };\n\n  _proto.isShape = function isShape() {\n    return this.get('isShape');\n  };\n\n  _proto.initAttrs = function initAttrs(attrs) {\n    this.attr((0, _common.mix)(this.getDefaultAttrs(), attrs));\n  };\n\n  _proto.getDefaultAttrs = function getDefaultAttrs() {\n    return {};\n  };\n\n  _proto._setAttr = function _setAttr(name, value) {\n    var attrs = this._attrs.attrs;\n\n    if (name === 'clip') {\n      value = this._setAttrClip(value);\n    } else {\n      var alias = ALIAS_ATTRS_MAP[name];\n\n      if (alias) {\n        attrs[alias] = value;\n      }\n    }\n\n    attrs[name] = value;\n  };\n\n  _proto._getAttr = function _getAttr(name) {\n    return this._attrs.attrs[name];\n  } // _afterAttrsSet() {}\n  ;\n\n  _proto._setAttrClip = function _setAttrClip(clip) {\n    if (clip && CLIP_SHAPES.indexOf(clip._attrs.type) > -1) {\n      if (clip.get('canvas') === null) {\n        clip = Object.assign({}, clip);\n      }\n\n      clip.set('parent', this.get('parent'));\n      clip.set('context', this.get('context'));\n      return clip;\n    }\n\n    return null;\n  };\n\n  _proto.attr = function attr(name, value) {\n    var self = this;\n    if (self.get('destroyed')) return null;\n    var argumentsLen = arguments.length;\n\n    if (argumentsLen === 0) {\n      return self._attrs.attrs;\n    }\n\n    if ((0, _common.isObject)(name)) {\n      this._attrs.bbox = null;\n\n      for (var k in name) {\n        self._setAttr(k, name[k]);\n      }\n\n      if (self._afterAttrsSet) {\n        self._afterAttrsSet();\n      }\n\n      return self;\n    }\n\n    if (argumentsLen === 2) {\n      this._attrs.bbox = null;\n\n      self._setAttr(name, value);\n\n      if (self._afterAttrsSet) {\n        self._afterAttrsSet();\n      }\n\n      return self;\n    }\n\n    return self._getAttr(name);\n  };\n\n  _proto.getParent = function getParent() {\n    return this.get('parent');\n  };\n\n  _proto.draw = function draw(context) {\n    if (this.get('destroyed')) {\n      return;\n    }\n\n    if (this.get('visible')) {\n      this.setContext(context);\n      this.drawInner(context);\n      this.restoreContext(context);\n    }\n  };\n\n  _proto.setContext = function setContext(context) {\n    var clip = this._attrs.attrs.clip;\n    context.save();\n\n    if (clip) {\n      clip.resetTransform(context);\n      clip.createPath(context);\n      context.clip();\n    }\n\n    this.resetContext(context);\n    this.resetTransform(context);\n  };\n\n  _proto.restoreContext = function restoreContext(context) {\n    context.restore();\n  };\n\n  _proto.resetContext = function resetContext(context) {\n    var elAttrs = this._attrs.attrs;\n\n    if (!this._attrs.isGroup) {\n      for (var k in elAttrs) {\n        if (SHAPE_ATTRS.indexOf(k) > -1) {\n          var v = elAttrs[k];\n\n          if (k === 'fillStyle' || k === 'strokeStyle') {\n            v = (0, _styleParse.parseStyle)(v, this, context);\n          }\n\n          if (k === 'lineDash' && context.setLineDash && (0, _common.isArray)(v)) {\n            context.setLineDash(v);\n          } else {\n            context[k] = v;\n          }\n        }\n      }\n    }\n  };\n\n  _proto.hasFill = function hasFill() {\n    return this.get('canFill') && this._attrs.attrs.fillStyle;\n  };\n\n  _proto.hasStroke = function hasStroke() {\n    return this.get('canStroke') && this._attrs.attrs.strokeStyle;\n  };\n\n  _proto.drawInner = function drawInner()\n  /* context */\n  {};\n\n  _proto.show = function show() {\n    this.set('visible', true);\n    return this;\n  };\n\n  _proto.hide = function hide() {\n    this.set('visible', false);\n    return this;\n  };\n\n  _proto.isVisible = function isVisible() {\n    return this.get('visible');\n  };\n\n  _proto._removeFromParent = function _removeFromParent() {\n    var parent = this.get('parent');\n\n    if (parent) {\n      var children = parent.get('children');\n\n      _common.Array.remove(children, this);\n    }\n\n    return this;\n  };\n\n  _proto.remove = function remove(destroy) {\n    if (destroy) {\n      this.destroy();\n    } else {\n      this._removeFromParent();\n    }\n  };\n\n  _proto.destroy = function destroy() {\n    var destroyed = this.get('destroyed');\n\n    if (destroyed) {\n      return null;\n    }\n\n    this._removeFromParent();\n\n    this._attrs = {};\n    this.set('destroyed', true);\n  };\n\n  _proto.getBBox = function getBBox() {\n    return {\n      minX: 0,\n      maxX: 0,\n      minY: 0,\n      maxY: 0,\n      width: 0,\n      height: 0\n    };\n  };\n\n  _proto.initTransform = function initTransform() {\n    var attrs = this._attrs.attrs || {};\n\n    if (!attrs.matrix) {\n      attrs.matrix = [1, 0, 0, 1, 0, 0];\n    }\n\n    this._attrs.attrs = attrs;\n  };\n\n  _proto.getMatrix = function getMatrix() {\n    return this._attrs.attrs.matrix;\n  };\n\n  _proto.setMatrix = function setMatrix(m) {\n    this._attrs.attrs.matrix = [m[0], m[1], m[2], m[3], m[4], m[5]];\n  };\n\n  _proto.transform = function transform(actions) {\n    var matrix = this._attrs.attrs.matrix;\n    this._attrs.attrs.matrix = _matrix[\"default\"].transform(matrix, actions);\n    return this;\n  };\n\n  _proto.setTransform = function setTransform(actions) {\n    this._attrs.attrs.matrix = [1, 0, 0, 1, 0, 0];\n    return this.transform(actions);\n  };\n\n  _proto.translate = function translate(x, y) {\n    var matrix = this._attrs.attrs.matrix;\n\n    _matrix[\"default\"].translate(matrix, matrix, [x, y]);\n  };\n\n  _proto.rotate = function rotate(rad) {\n    var matrix = this._attrs.attrs.matrix;\n\n    _matrix[\"default\"].rotate(matrix, matrix, rad);\n  };\n\n  _proto.scale = function scale(sx, sy) {\n    var matrix = this._attrs.attrs.matrix;\n\n    _matrix[\"default\"].scale(matrix, matrix, [sx, sy]);\n  };\n\n  _proto.moveTo = function moveTo(x, y) {\n    var cx = this._attrs.x || 0;\n    var cy = this._attrs.y || 0;\n    this.translate(x - cx, y - cy);\n    this.set('x', x);\n    this.set('y', y);\n  };\n\n  _proto.apply = function apply(v) {\n    var m = this._attrs.attrs.matrix;\n\n    _vector[\"default\"].transformMat2d(v, v, m);\n\n    return this;\n  };\n\n  _proto.resetTransform = function resetTransform(context) {\n    var mo = this._attrs.attrs.matrix;\n\n    if (_matrix[\"default\"].isChanged(mo)) {\n      context.transform(mo[0], mo[1], mo[2], mo[3], mo[4], mo[5]);\n    }\n  };\n\n  _proto.isDestroyed = function isDestroyed() {\n    return this.get('destroyed');\n  };\n\n  return Element;\n}();\n\nvar _default = Element;\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nexports.parseStyle = parseStyle;\nexports[\"default\"] = void 0;\n\nvar _common = require(\"../../util/common\");\n\nfunction _mod(n, m) {\n  return (n % m + m) % m;\n}\n\nfunction _addStop(steps, gradient) {\n  (0, _common.each)(steps, function (item) {\n    item = item.split(':');\n    gradient.addColorStop(Number(item[0]), item[1]);\n  });\n} // the string format: 'l(0) 0:#ffffff 0.5:#7ec2f3 1:#1890ff'\n\n\nfunction _parseLineGradient(color, shape, context) {\n  var arr = color.split(' ');\n  var angle = arr[0].slice(2, arr[0].length - 1);\n  angle = _mod(parseFloat(angle) * Math.PI / 180, Math.PI * 2);\n  var steps = arr.slice(1);\n\n  var _shape$getBBox = shape.getBBox(),\n      minX = _shape$getBBox.minX,\n      minY = _shape$getBBox.minY,\n      maxX = _shape$getBBox.maxX,\n      maxY = _shape$getBBox.maxY;\n\n  var start;\n  var end;\n\n  if (angle >= 0 && angle < 0.5 * Math.PI) {\n    start = {\n      x: minX,\n      y: minY\n    };\n    end = {\n      x: maxX,\n      y: maxY\n    };\n  } else if (0.5 * Math.PI <= angle && angle < Math.PI) {\n    start = {\n      x: maxX,\n      y: minY\n    };\n    end = {\n      x: minX,\n      y: maxY\n    };\n  } else if (Math.PI <= angle && angle < 1.5 * Math.PI) {\n    start = {\n      x: maxX,\n      y: maxY\n    };\n    end = {\n      x: minX,\n      y: minY\n    };\n  } else {\n    start = {\n      x: minX,\n      y: maxY\n    };\n    end = {\n      x: maxX,\n      y: minY\n    };\n  }\n\n  var tanTheta = Math.tan(angle);\n  var tanTheta2 = tanTheta * tanTheta;\n  var x = (end.x - start.x + tanTheta * (end.y - start.y)) / (tanTheta2 + 1) + start.x;\n  var y = tanTheta * (end.x - start.x + tanTheta * (end.y - start.y)) / (tanTheta2 + 1) + start.y;\n  var gradient = context.createLinearGradient(start.x, start.y, x, y);\n\n  _addStop(steps, gradient);\n\n  return gradient;\n} // the string format: 'r(0.5, 0.5, 0.1) 0:#ffffff 1:#1890ff'\n\n\nfunction _parseRadialGradient(color, shape, context) {\n  var arr = color.split(' ');\n  var circleCfg = arr[0].slice(2, arr[0].length - 1);\n  circleCfg = circleCfg.split(',');\n  var fx = parseFloat(circleCfg[0]);\n  var fy = parseFloat(circleCfg[1]);\n  var fr = parseFloat(circleCfg[2]);\n  var steps = arr.slice(1); // if radius is 0, no gradient, stroke with the last color\n\n  if (fr === 0) {\n    var _color = steps[steps.length - 1];\n    return _color.split(':')[1];\n  }\n\n  var _shape$getBBox2 = shape.getBBox(),\n      width = _shape$getBBox2.width,\n      height = _shape$getBBox2.height,\n      minX = _shape$getBBox2.minX,\n      minY = _shape$getBBox2.minY;\n\n  var r = Math.sqrt(width * width + height * height) / 2;\n  var gradient = context.createRadialGradient(minX + width * fx, minY + height * fy, fr * r, minX + width / 2, minY + height / 2, r);\n\n  _addStop(steps, gradient);\n\n  return gradient;\n}\n\nfunction parseStyle(color, shape, context) {\n  if (color[1] === '(') {\n    try {\n      var firstCode = color[0];\n\n      if (firstCode === 'l') {\n        return _parseLineGradient(color, shape, context);\n      } else if (firstCode === 'r') {\n        return _parseRadialGradient(color, shape, context);\n      }\n    } catch (ev) {\n      console.error('error in parsing gradient string, please check if there are any extra whitespaces.');\n      console.error(ev);\n    }\n  }\n\n  return color;\n}\n\nvar _default = {\n  parseStyle: parseStyle\n};\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _common = require(\"../util/common\");\n\nvar _element = _interopRequireDefault(require(\"./element\"));\n\nvar _container = _interopRequireDefault(require(\"./container\"));\n\nvar _vector = _interopRequireDefault(require(\"./util/vector2\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar Group = /*#__PURE__*/function (_Element) {\n  _inheritsLoose(Group, _Element);\n\n  function Group() {\n    return _Element.apply(this, arguments) || this;\n  }\n\n  var _proto = Group.prototype;\n\n  _proto._initProperties = function _initProperties() {\n    this._attrs = {\n      zIndex: 0,\n      visible: true,\n      destroyed: false,\n      isGroup: true,\n      children: []\n    };\n  };\n\n  _proto.getBBox = function getBBox() {\n    var self = this;\n    var minX = Infinity;\n    var maxX = -Infinity;\n    var minY = Infinity;\n    var maxY = -Infinity;\n    var children = self.get('children');\n\n    for (var i = 0, length = children.length; i < length; i++) {\n      var child = children[i];\n\n      if (child.get('visible')) {\n        var box = child.getBBox();\n\n        if (!box) {\n          continue;\n        }\n\n        var leftTop = [box.minX, box.minY];\n        var leftBottom = [box.minX, box.maxY];\n        var rightTop = [box.maxX, box.minY];\n        var rightBottom = [box.maxX, box.maxY];\n        var matrix = child.attr('matrix');\n\n        _vector[\"default\"].transformMat2d(leftTop, leftTop, matrix);\n\n        _vector[\"default\"].transformMat2d(leftBottom, leftBottom, matrix);\n\n        _vector[\"default\"].transformMat2d(rightTop, rightTop, matrix);\n\n        _vector[\"default\"].transformMat2d(rightBottom, rightBottom, matrix);\n\n        minX = Math.min(leftTop[0], leftBottom[0], rightTop[0], rightBottom[0], minX);\n        maxX = Math.max(leftTop[0], leftBottom[0], rightTop[0], rightBottom[0], maxX);\n        minY = Math.min(leftTop[1], leftBottom[1], rightTop[1], rightBottom[1], minY);\n        maxY = Math.max(leftTop[1], leftBottom[1], rightTop[1], rightBottom[1], maxY);\n      }\n    }\n\n    return {\n      minX: minX,\n      minY: minY,\n      maxX: maxX,\n      maxY: maxY,\n      x: minX,\n      y: minY,\n      width: maxX - minX,\n      height: maxY - minY\n    };\n  };\n\n  _proto.destroy = function destroy() {\n    if (this.get('destroyed')) {\n      return;\n    }\n\n    this.clear();\n\n    _Element.prototype.destroy.call(this);\n  };\n\n  return Group;\n}(_element[\"default\"]);\n\n(0, _common.mix)(Group.prototype, _container[\"default\"], {\n  getGroupClass: function getGroupClass() {\n    return Group;\n  }\n});\nvar _default = Group;\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nexports.requestAnimationFrame = void 0;\nvar requestAnimationFrame = typeof window === 'object' && window.requestAnimationFrame ? window.requestAnimationFrame : function (fn) {\n  return setTimeout(fn, 16);\n};\nexports.requestAnimationFrame = requestAnimationFrame;","\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _common = require(\"../../util/common\");\n\nvar _shape = _interopRequireDefault(require(\"../shape\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\n// 为了处理radius 大于 width 或 height 的场景\nfunction parseRadius(radius, width, height) {\n  radius = (0, _common.parsePadding)(radius); // 都为0\n\n  if (!radius[0] && !radius[1] && !radius[2] && !radius[3]) {\n    return radius;\n  }\n\n  var minWidth = Math.max(radius[0] + radius[1], radius[2] + radius[3]);\n  var minHeight = Math.max(radius[0] + radius[3], radius[1] + radius[2]);\n  var scale = Math.min(width / minWidth, height / minHeight);\n\n  if (scale < 1) {\n    return radius.map(function (r) {\n      return r * scale;\n    });\n  }\n\n  return radius;\n}\n\nvar Rect = /*#__PURE__*/function (_Shape) {\n  _inheritsLoose(Rect, _Shape);\n\n  function Rect() {\n    return _Shape.apply(this, arguments) || this;\n  }\n\n  var _proto = Rect.prototype;\n\n  _proto._initProperties = function _initProperties() {\n    _Shape.prototype._initProperties.call(this);\n\n    this._attrs.canFill = true;\n    this._attrs.canStroke = true;\n    this._attrs.type = 'rect';\n  };\n\n  _proto.getDefaultAttrs = function getDefaultAttrs() {\n    return {\n      x: 0,\n      y: 0,\n      width: 0,\n      height: 0,\n      radius: 0,\n      lineWidth: 0\n    };\n  };\n\n  _proto.createPath = function createPath(context) {\n    var self = this;\n    var attrs = self.get('attrs');\n    var x = attrs.x,\n        y = attrs.y,\n        width = attrs.width,\n        height = attrs.height,\n        radius = attrs.radius;\n    context.beginPath();\n\n    if (!radius || !(width * height)) {\n      context.rect(x, y, width, height);\n    } else {\n      radius = parseRadius(radius, width, height);\n      context.moveTo(x + radius[0], y);\n      context.lineTo(x + width - radius[1], y);\n      context.arc(x + width - radius[1], y + radius[1], radius[1], -Math.PI / 2, 0, false);\n      context.lineTo(x + width, y + height - radius[2]);\n      context.arc(x + width - radius[2], y + height - radius[2], radius[2], 0, Math.PI / 2, false);\n      context.lineTo(x + radius[3], y + height);\n      context.arc(x + radius[3], y + height - radius[3], radius[3], Math.PI / 2, Math.PI, false);\n      context.lineTo(x, y + radius[0]);\n      context.arc(x + radius[0], y + radius[0], radius[0], Math.PI, Math.PI * 3 / 2, false);\n      context.closePath();\n    }\n  };\n\n  _proto.calculateBox = function calculateBox() {\n    var attrs = this.get('attrs');\n    var x = attrs.x,\n        y = attrs.y,\n        width = attrs.width,\n        height = attrs.height;\n    return {\n      minX: x,\n      minY: y,\n      maxX: x + width,\n      maxY: y + height\n    };\n  };\n\n  return Rect;\n}(_shape[\"default\"]);\n\n_shape[\"default\"].Rect = Rect;\nvar _default = Rect;\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _common = require(\"../../util/common\");\n\nvar _shape = _interopRequireDefault(require(\"../shape\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar ImageShape = /*#__PURE__*/function (_Shape) {\n  _inheritsLoose(ImageShape, _Shape);\n\n  function ImageShape() {\n    return _Shape.apply(this, arguments) || this;\n  }\n\n  var _proto = ImageShape.prototype;\n\n  _proto._initProperties = function _initProperties() {\n    _Shape.prototype._initProperties.call(this);\n\n    this._attrs.canFill = false;\n    this._attrs.canStroke = false;\n    this._attrs.loading = false;\n    this._attrs.image = null;\n    this._attrs.type = 'image';\n  };\n\n  _proto.getDefaultAttrs = function getDefaultAttrs() {\n    return {\n      x: 0,\n      y: 0,\n      width: 0,\n      height: 0\n    };\n  };\n\n  _proto.createPath = function createPath(context) {\n    var _this = this;\n\n    var attrs = this.get('attrs');\n    var src = attrs.src;\n\n    if (this.get('loading')) {\n      return;\n    }\n\n    var image = this.get('image');\n\n    if (image) {\n      this.drawImage(context, image);\n    } else {\n      if (src && Image) {\n        this.set('loading', true);\n\n        var _image = new Image();\n\n        _image.src = src; // 设置跨域\n\n        _image.crossOrigin = 'Anonymous';\n\n        _image.onload = function () {\n          _this.set('loading', false);\n\n          _this.set('image', _image);\n\n          _this.drawImage(context, _image);\n        };\n      }\n    }\n  };\n\n  _proto.drawImage = function drawImage(context, image) {\n    var attrs = this.get('attrs');\n    var x = attrs.x,\n        y = attrs.y,\n        width = attrs.width,\n        height = attrs.height,\n        sx = attrs.sx,\n        sy = attrs.sy,\n        swidth = attrs.swidth,\n        sheight = attrs.sheight;\n\n    if (!(0, _common.isNil)(sx) && !(0, _common.isNil)(sy) && !(0, _common.isNil)(swidth) && !(0, _common.isNil)(sheight)) {\n      context.drawImage(image, sx, sy, swidth, sheight, x, y, width, height);\n    } else {\n      context.drawImage(image, x, y, width, height);\n    }\n  };\n\n  _proto.calculateBox = function calculateBox() {\n    var attrs = this.get('attrs');\n    var x = attrs.x,\n        y = attrs.y,\n        width = attrs.width,\n        height = attrs.height; // 和rect一样\n\n    return {\n      minX: x,\n      minY: y,\n      maxX: x + width,\n      maxY: y + height\n    };\n  };\n\n  return ImageShape;\n}(_shape[\"default\"]);\n\n_shape[\"default\"].Image = ImageShape;\nvar _default = ImageShape;\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _shape = _interopRequireDefault(require(\"../shape\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar Circle = /*#__PURE__*/function (_Shape) {\n  _inheritsLoose(Circle, _Shape);\n\n  function Circle() {\n    return _Shape.apply(this, arguments) || this;\n  }\n\n  var _proto = Circle.prototype;\n\n  _proto._initProperties = function _initProperties() {\n    _Shape.prototype._initProperties.call(this);\n\n    this._attrs.canFill = true;\n    this._attrs.canStroke = true;\n    this._attrs.type = 'circle';\n  };\n\n  _proto.getDefaultAttrs = function getDefaultAttrs() {\n    return {\n      x: 0,\n      y: 0,\n      r: 0,\n      lineWidth: 0\n    };\n  };\n\n  _proto.createPath = function createPath(context) {\n    var attrs = this.get('attrs');\n    var x = attrs.x,\n        y = attrs.y,\n        r = attrs.r;\n    context.beginPath();\n    context.arc(x, y, r, 0, Math.PI * 2, false);\n    context.closePath();\n  };\n\n  _proto.calculateBox = function calculateBox() {\n    var attrs = this.get('attrs');\n    var x = attrs.x,\n        y = attrs.y,\n        r = attrs.r;\n    return {\n      minX: x - r,\n      maxX: x + r,\n      minY: y - r,\n      maxY: y + r\n    };\n  };\n\n  return Circle;\n}(_shape[\"default\"]);\n\n_shape[\"default\"].Circle = Circle;\nvar _default = Circle;\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _shape = _interopRequireDefault(require(\"../shape\"));\n\nvar _bbox = require(\"../util/bbox\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar Line = /*#__PURE__*/function (_Shape) {\n  _inheritsLoose(Line, _Shape);\n\n  function Line() {\n    return _Shape.apply(this, arguments) || this;\n  }\n\n  var _proto = Line.prototype;\n\n  _proto._initProperties = function _initProperties() {\n    _Shape.prototype._initProperties.call(this);\n\n    this._attrs.canStroke = true;\n    this._attrs.type = 'line';\n  };\n\n  _proto.getDefaultAttrs = function getDefaultAttrs() {\n    return {\n      x1: 0,\n      y1: 0,\n      x2: 0,\n      y2: 0,\n      lineWidth: 1\n    };\n  };\n\n  _proto.createPath = function createPath(context) {\n    var attrs = this.get('attrs');\n    var x1 = attrs.x1,\n        y1 = attrs.y1,\n        x2 = attrs.x2,\n        y2 = attrs.y2;\n    context.beginPath();\n    context.moveTo(x1, y1);\n    context.lineTo(x2, y2);\n  };\n\n  _proto.calculateBox = function calculateBox() {\n    var attrs = this.get('attrs');\n    var x1 = attrs.x1,\n        y1 = attrs.y1,\n        x2 = attrs.x2,\n        y2 = attrs.y2,\n        lineWidth = attrs.lineWidth;\n    return (0, _bbox.getBBoxFromLine)(x1, y1, x2, y2, lineWidth);\n  };\n\n  return Line;\n}(_shape[\"default\"]);\n\n_shape[\"default\"].Line = Line;\nvar _default = Line;\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nexports.getBBoxFromPoints = getBBoxFromPoints;\nexports.getBBoxFromLine = getBBoxFromLine;\nexports.getBBoxFromArc = getBBoxFromArc;\nexports.getBBoxFromBezierGroup = getBBoxFromBezierGroup;\n\nvar _vector = _interopRequireDefault(require(\"./vector2\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar start = _vector[\"default\"].create();\n\nvar end = _vector[\"default\"].create();\n\nvar extremity = _vector[\"default\"].create();\n\nfunction getCubicBezierXYatT(startPt, controlPt1, controlPt2, endPt, T) {\n  var x = CubicN(T, startPt.x, controlPt1.x, controlPt2.x, endPt.x);\n  var y = CubicN(T, startPt.y, controlPt1.y, controlPt2.y, endPt.y);\n  return {\n    x: x,\n    y: y\n  };\n} // cubic helper formula at T distance\n\n\nfunction CubicN(T, a, b, c, d) {\n  var t2 = T * T;\n  var t3 = t2 * T;\n  return a + (-a * 3 + T * (3 * a - a * T)) * T + (3 * b + T * (-6 * b + b * 3 * T)) * T + (c * 3 - c * 3 * T) * t2 + d * t3;\n}\n\nfunction cubicBezierBounds(c) {\n  var minX = Infinity;\n  var maxX = -Infinity;\n  var minY = Infinity;\n  var maxY = -Infinity;\n  var s = {\n    x: c[0],\n    y: c[1]\n  };\n  var c1 = {\n    x: c[2],\n    y: c[3]\n  };\n  var c2 = {\n    x: c[4],\n    y: c[5]\n  };\n  var e = {\n    x: c[6],\n    y: c[7]\n  };\n\n  for (var t = 0; t < 100; t++) {\n    var pt = getCubicBezierXYatT(s, c1, c2, e, t / 100);\n\n    if (pt.x < minX) {\n      minX = pt.x;\n    }\n\n    if (pt.x > maxX) {\n      maxX = pt.x;\n    }\n\n    if (pt.y < minY) {\n      minY = pt.y;\n    }\n\n    if (pt.y > maxY) {\n      maxY = pt.y;\n    }\n  }\n\n  return {\n    minX: minX,\n    minY: minY,\n    maxX: maxX,\n    maxY: maxY\n  };\n}\n\nfunction getBBoxFromPoints(points, lineWidth) {\n  if (points.length === 0) {\n    return;\n  }\n\n  var p = points[0];\n  var left = p.x;\n  var right = p.x;\n  var top = p.y;\n  var bottom = p.y;\n  var len = points.length;\n\n  for (var i = 1; i < len; i++) {\n    p = points[i];\n    left = Math.min(left, p.x);\n    right = Math.max(right, p.x);\n    top = Math.min(top, p.y);\n    bottom = Math.max(bottom, p.y);\n  }\n\n  lineWidth = lineWidth / 2 || 0;\n  return {\n    minX: left - lineWidth,\n    minY: top - lineWidth,\n    maxX: right + lineWidth,\n    maxY: bottom + lineWidth\n  };\n}\n\nfunction getBBoxFromLine(x0, y0, x1, y1, lineWidth) {\n  lineWidth = lineWidth / 2 || 0;\n  return {\n    minX: Math.min(x0, x1) - lineWidth,\n    minY: Math.min(y0, y1) - lineWidth,\n    maxX: Math.max(x0, x1) + lineWidth,\n    maxY: Math.max(y0, y1) + lineWidth\n  };\n}\n\nfunction getBBoxFromArc(x, y, r, startAngle, endAngle, anticlockwise) {\n  var diff = Math.abs(startAngle - endAngle);\n\n  if (diff % (Math.PI * 2) < 1e-4 && diff > 1e-4) {\n    // Is a circle\n    return {\n      minX: x - r,\n      minY: y - r,\n      maxX: x + r,\n      maxY: y + r\n    };\n  }\n\n  start[0] = Math.cos(startAngle) * r + x;\n  start[1] = Math.sin(startAngle) * r + y;\n  end[0] = Math.cos(endAngle) * r + x;\n  end[1] = Math.sin(endAngle) * r + y;\n  var min = [0, 0];\n  var max = [0, 0];\n\n  _vector[\"default\"].min(min, start, end);\n\n  _vector[\"default\"].max(max, start, end); // Thresh to [0, Math.PI * 2]\n\n\n  startAngle = startAngle % (Math.PI * 2);\n\n  if (startAngle < 0) {\n    startAngle = startAngle + Math.PI * 2;\n  }\n\n  endAngle = endAngle % (Math.PI * 2);\n\n  if (endAngle < 0) {\n    endAngle = endAngle + Math.PI * 2;\n  }\n\n  if (startAngle > endAngle && !anticlockwise) {\n    endAngle += Math.PI * 2;\n  } else if (startAngle < endAngle && anticlockwise) {\n    startAngle += Math.PI * 2;\n  }\n\n  if (anticlockwise) {\n    var tmp = endAngle;\n    endAngle = startAngle;\n    startAngle = tmp;\n  }\n\n  for (var angle = 0; angle < endAngle; angle += Math.PI / 2) {\n    if (angle > startAngle) {\n      extremity[0] = Math.cos(angle) * r + x;\n      extremity[1] = Math.sin(angle) * r + y;\n\n      _vector[\"default\"].min(min, extremity, min);\n\n      _vector[\"default\"].max(max, extremity, max);\n    }\n  }\n\n  return {\n    minX: min[0],\n    minY: min[1],\n    maxX: max[0],\n    maxY: max[1]\n  };\n}\n\nfunction getBBoxFromBezierGroup(points, lineWidth) {\n  var minX = Infinity;\n  var maxX = -Infinity;\n  var minY = Infinity;\n  var maxY = -Infinity;\n\n  for (var i = 0, len = points.length; i < len; i++) {\n    var bbox = cubicBezierBounds(points[i]);\n\n    if (bbox.minX < minX) {\n      minX = bbox.minX;\n    }\n\n    if (bbox.maxX > maxX) {\n      maxX = bbox.maxX;\n    }\n\n    if (bbox.minY < minY) {\n      minY = bbox.minY;\n    }\n\n    if (bbox.maxY > maxY) {\n      maxY = bbox.maxY;\n    }\n  }\n\n  lineWidth = lineWidth / 2 || 0;\n  return {\n    minX: minX - lineWidth,\n    minY: minY - lineWidth,\n    maxX: maxX + lineWidth,\n    maxY: maxY + lineWidth\n  };\n}","\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _shape = _interopRequireDefault(require(\"../shape\"));\n\nvar _bbox = require(\"../util/bbox\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar Polygon = /*#__PURE__*/function (_Shape) {\n  _inheritsLoose(Polygon, _Shape);\n\n  function Polygon() {\n    return _Shape.apply(this, arguments) || this;\n  }\n\n  var _proto = Polygon.prototype;\n\n  _proto._initProperties = function _initProperties() {\n    _Shape.prototype._initProperties.call(this);\n\n    this._attrs.canFill = true;\n    this._attrs.canStroke = true;\n    this._attrs.type = 'polygon';\n  };\n\n  _proto.getDefaultAttrs = function getDefaultAttrs() {\n    return {\n      points: null,\n      lineWidth: 0\n    };\n  };\n\n  _proto.createPath = function createPath(context) {\n    var self = this;\n    var attrs = self.get('attrs');\n    var points = attrs.points;\n    context.beginPath();\n\n    for (var i = 0, len = points.length; i < len; i++) {\n      var point = points[i];\n\n      if (i === 0) {\n        context.moveTo(point.x, point.y);\n      } else {\n        context.lineTo(point.x, point.y);\n      }\n    }\n\n    context.closePath();\n  };\n\n  _proto.calculateBox = function calculateBox() {\n    var attrs = this.get('attrs');\n    var points = attrs.points;\n    return (0, _bbox.getBBoxFromPoints)(points);\n  };\n\n  return Polygon;\n}(_shape[\"default\"]);\n\n_shape[\"default\"].Polygon = Polygon;\nvar _default = Polygon;\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _shape = _interopRequireDefault(require(\"../shape\"));\n\nvar _bbox = require(\"../util/bbox\");\n\nvar Smooth = _interopRequireWildcard(require(\"../util/smooth\"));\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\n// filter the point which x or y is NaN\nfunction _filterPoints(points) {\n  var filteredPoints = [];\n\n  for (var i = 0, len = points.length; i < len; i++) {\n    var point = points[i];\n\n    if (!isNaN(point.x) && !isNaN(point.y)) {\n      filteredPoints.push(point);\n    }\n  }\n\n  return filteredPoints;\n}\n\nvar Polyline = /*#__PURE__*/function (_Shape) {\n  _inheritsLoose(Polyline, _Shape);\n\n  function Polyline() {\n    return _Shape.apply(this, arguments) || this;\n  }\n\n  var _proto = Polyline.prototype;\n\n  _proto._initProperties = function _initProperties() {\n    _Shape.prototype._initProperties.call(this);\n\n    this._attrs.canFill = true;\n    this._attrs.canStroke = true;\n    this._attrs.type = 'polyline';\n  };\n\n  _proto.getDefaultAttrs = function getDefaultAttrs() {\n    return {\n      points: null,\n      lineWidth: 1,\n      smooth: false\n    };\n  };\n\n  _proto.createPath = function createPath(context) {\n    var self = this;\n    var attrs = self.get('attrs');\n    var points = attrs.points,\n        smooth = attrs.smooth;\n\n    var filteredPoints = _filterPoints(points);\n\n    context.beginPath();\n\n    if (filteredPoints.length) {\n      context.moveTo(filteredPoints[0].x, filteredPoints[0].y);\n\n      if (smooth) {\n        var constaint = [[0, 0], [1, 1]];\n        var sps = Smooth.smooth(filteredPoints, false, constaint);\n\n        for (var i = 0, n = sps.length; i < n; i++) {\n          var sp = sps[i];\n          context.bezierCurveTo(sp[1], sp[2], sp[3], sp[4], sp[5], sp[6]);\n        }\n      } else {\n        var _i;\n\n        var l;\n\n        for (_i = 1, l = filteredPoints.length - 1; _i < l; _i++) {\n          context.lineTo(filteredPoints[_i].x, filteredPoints[_i].y);\n        }\n\n        context.lineTo(filteredPoints[l].x, filteredPoints[l].y);\n      }\n    }\n  };\n\n  _proto.calculateBox = function calculateBox() {\n    var attrs = this.get('attrs');\n    var points = attrs.points,\n        smooth = attrs.smooth,\n        lineWidth = attrs.lineWidth;\n\n    var filteredPoints = _filterPoints(points);\n\n    if (smooth) {\n      var newPoints = [];\n      var constaint = [[0, 0], [1, 1]];\n      var sps = Smooth.smooth(filteredPoints, false, constaint);\n\n      for (var i = 0, n = sps.length; i < n; i++) {\n        var sp = sps[i];\n\n        if (i === 0) {\n          newPoints.push([filteredPoints[0].x, filteredPoints[0].y, sp[1], sp[2], sp[3], sp[4], sp[5], sp[6]]);\n        } else {\n          var lastPoint = sps[i - 1];\n          newPoints.push([lastPoint[5], lastPoint[6], sp[1], sp[2], sp[3], sp[4], sp[5], sp[6]]);\n        }\n      }\n\n      return (0, _bbox.getBBoxFromBezierGroup)(newPoints, lineWidth);\n    }\n\n    return (0, _bbox.getBBoxFromPoints)(filteredPoints, lineWidth);\n  };\n\n  return Polyline;\n}(_shape[\"default\"]);\n\n_shape[\"default\"].Polyline = Polyline;\nvar _default = Polyline;\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nexports.smooth = catmullRom2bezier;\n\nvar _vector = _interopRequireDefault(require(\"./vector2\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n/**\n * @fileOverview convert the line to curve\n * @author dxq613@gmail.com\n */\nfunction getPoint(v) {\n  return [v.x, v.y];\n}\n\nfunction smoothBezier(points, smooth, isLoop, constraint) {\n  var cps = [];\n  var prevPoint;\n  var nextPoint;\n  var hasConstraint = !!constraint;\n  var min;\n  var max;\n  var point;\n  var len;\n  var l;\n  var i;\n\n  if (hasConstraint) {\n    min = [Infinity, Infinity];\n    max = [-Infinity, -Infinity];\n\n    for (i = 0, l = points.length; i < l; i++) {\n      point = getPoint(points[i]);\n\n      _vector[\"default\"].min(min, min, point);\n\n      _vector[\"default\"].max(max, max, point);\n    }\n\n    _vector[\"default\"].min(min, min, constraint[0]);\n\n    _vector[\"default\"].max(max, max, constraint[1]);\n  }\n\n  for (i = 0, len = points.length; i < len; i++) {\n    point = getPoint(points[i]);\n\n    if (isLoop) {\n      prevPoint = getPoint(points[i ? i - 1 : len - 1]);\n      nextPoint = getPoint(points[(i + 1) % len]);\n    } else {\n      if (i === 0 || i === len - 1) {\n        cps.push([point[0], point[1]]);\n        continue;\n      } else {\n        prevPoint = getPoint(points[i - 1]);\n        nextPoint = getPoint(points[i + 1]);\n      }\n    }\n\n    var v = _vector[\"default\"].sub([], nextPoint, prevPoint);\n\n    _vector[\"default\"].scale(v, v, smooth);\n\n    var d0 = _vector[\"default\"].distance(point, prevPoint);\n\n    var d1 = _vector[\"default\"].distance(point, nextPoint);\n\n    var sum = d0 + d1;\n\n    if (sum !== 0) {\n      d0 /= sum;\n      d1 /= sum;\n    }\n\n    var v1 = _vector[\"default\"].scale([], v, -d0);\n\n    var v2 = _vector[\"default\"].scale([], v, d1);\n\n    var cp0 = _vector[\"default\"].add([], point, v1);\n\n    var cp1 = _vector[\"default\"].add([], point, v2);\n\n    if (hasConstraint) {\n      _vector[\"default\"].max(cp0, cp0, min);\n\n      _vector[\"default\"].min(cp0, cp0, max);\n\n      _vector[\"default\"].max(cp1, cp1, min);\n\n      _vector[\"default\"].min(cp1, cp1, max);\n    }\n\n    cps.push([cp0[0], cp0[1]]);\n    cps.push([cp1[0], cp1[1]]);\n  }\n\n  if (isLoop) {\n    cps.push(cps.shift());\n  }\n\n  return cps;\n}\n\nfunction catmullRom2bezier(pointList, z, constraint) {\n  var isLoop = !!z;\n  var controlPointList = smoothBezier(pointList, 0.4, isLoop, constraint);\n  var len = pointList.length;\n  var d1 = [];\n  var cp1;\n  var cp2;\n  var p;\n\n  for (var i = 0; i < len - 1; i++) {\n    cp1 = controlPointList[i * 2];\n    cp2 = controlPointList[i * 2 + 1];\n    p = pointList[i + 1];\n    d1.push(['C', cp1[0], cp1[1], cp2[0], cp2[1], p.x, p.y]);\n  }\n\n  if (isLoop) {\n    cp1 = controlPointList[len];\n    cp2 = controlPointList[len + 1];\n    p = pointList[0];\n    d1.push(['C', cp1[0], cp1[1], cp2[0], cp2[1], p.x, p.y]);\n  }\n\n  return d1;\n}","\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _shape = _interopRequireDefault(require(\"../shape\"));\n\nvar _bbox = require(\"../util/bbox\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar Arc = /*#__PURE__*/function (_Shape) {\n  _inheritsLoose(Arc, _Shape);\n\n  function Arc() {\n    return _Shape.apply(this, arguments) || this;\n  }\n\n  var _proto = Arc.prototype;\n\n  _proto._initProperties = function _initProperties() {\n    _Shape.prototype._initProperties.call(this);\n\n    this._attrs.canStroke = true;\n    this._attrs.canFill = true;\n    this._attrs.type = 'arc';\n  };\n\n  _proto.getDefaultAttrs = function getDefaultAttrs() {\n    return {\n      x: 0,\n      y: 0,\n      r: 0,\n      startAngle: 0,\n      endAngle: Math.PI * 2,\n      anticlockwise: false,\n      lineWidth: 1\n    };\n  };\n\n  _proto.createPath = function createPath(context) {\n    var attrs = this.get('attrs');\n    var x = attrs.x,\n        y = attrs.y,\n        r = attrs.r,\n        startAngle = attrs.startAngle,\n        endAngle = attrs.endAngle,\n        anticlockwise = attrs.anticlockwise;\n    context.beginPath();\n\n    if (startAngle !== endAngle) {\n      context.arc(x, y, r, startAngle, endAngle, anticlockwise);\n    }\n  };\n\n  _proto.calculateBox = function calculateBox() {\n    var attrs = this.get('attrs');\n    var x = attrs.x,\n        y = attrs.y,\n        r = attrs.r,\n        startAngle = attrs.startAngle,\n        endAngle = attrs.endAngle,\n        anticlockwise = attrs.anticlockwise;\n    return (0, _bbox.getBBoxFromArc)(x, y, r, startAngle, endAngle, anticlockwise);\n  };\n\n  return Arc;\n}(_shape[\"default\"]);\n\n_shape[\"default\"].Arc = Arc;\nvar _default = Arc;\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _shape = _interopRequireDefault(require(\"../shape\"));\n\nvar _bbox = require(\"../util/bbox\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar Sector = /*#__PURE__*/function (_Shape) {\n  _inheritsLoose(Sector, _Shape);\n\n  function Sector() {\n    return _Shape.apply(this, arguments) || this;\n  }\n\n  var _proto = Sector.prototype;\n\n  _proto._initProperties = function _initProperties() {\n    _Shape.prototype._initProperties.call(this);\n\n    this._attrs.canFill = true;\n    this._attrs.canStroke = true;\n    this._attrs.type = 'sector';\n  };\n\n  _proto.getDefaultAttrs = function getDefaultAttrs() {\n    return {\n      x: 0,\n      y: 0,\n      lineWidth: 0,\n      r: 0,\n      r0: 0,\n      startAngle: 0,\n      endAngle: Math.PI * 2,\n      anticlockwise: false\n    };\n  };\n\n  _proto.createPath = function createPath(context) {\n    var attrs = this.get('attrs');\n    var x = attrs.x,\n        y = attrs.y,\n        startAngle = attrs.startAngle,\n        endAngle = attrs.endAngle,\n        r = attrs.r,\n        r0 = attrs.r0,\n        anticlockwise = attrs.anticlockwise;\n    context.beginPath();\n    var unitX = Math.cos(startAngle);\n    var unitY = Math.sin(startAngle);\n    context.moveTo(unitX * r0 + x, unitY * r0 + y);\n    context.lineTo(unitX * r + x, unitY * r + y); // 当扇形的角度非常小的时候,就不进行弧线的绘制;或者整个只有1个扇形时,会出现end<0的情况不绘制\n\n    if (Math.abs(endAngle - startAngle) > 0.0001 || startAngle === 0 && endAngle < 0) {\n      context.arc(x, y, r, startAngle, endAngle, anticlockwise);\n      context.lineTo(Math.cos(endAngle) * r0 + x, Math.sin(endAngle) * r0 + y);\n\n      if (r0 !== 0) {\n        context.arc(x, y, r0, endAngle, startAngle, !anticlockwise);\n      }\n    }\n\n    context.closePath();\n  };\n\n  _proto.calculateBox = function calculateBox() {\n    var attrs = this.get('attrs');\n    var x = attrs.x,\n        y = attrs.y,\n        r = attrs.r,\n        r0 = attrs.r0,\n        startAngle = attrs.startAngle,\n        endAngle = attrs.endAngle,\n        anticlockwise = attrs.anticlockwise;\n    var outerBBox = (0, _bbox.getBBoxFromArc)(x, y, r, startAngle, endAngle, anticlockwise);\n    var innerBBox = (0, _bbox.getBBoxFromArc)(x, y, r0, startAngle, endAngle, anticlockwise);\n    return {\n      minX: Math.min(outerBBox.minX, innerBBox.minX),\n      minY: Math.min(outerBBox.minY, innerBBox.minY),\n      maxX: Math.max(outerBBox.maxX, innerBBox.maxX),\n      maxY: Math.max(outerBBox.maxY, innerBBox.maxY)\n    };\n  };\n\n  return Sector;\n}(_shape[\"default\"]);\n\n_shape[\"default\"].Sector = Sector;\nvar _default = Sector;\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _common = require(\"../../util/common\");\n\nvar _shape = _interopRequireDefault(require(\"../shape\"));\n\nvar _rect = _interopRequireDefault(require(\"../util/rect\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar textWidthCacheCounter = 0;\nvar textWidthCache = {};\nvar TEXT_CACHE_MAX = 5000;\n\nvar Text = /*#__PURE__*/function (_Shape) {\n  _inheritsLoose(Text, _Shape);\n\n  function Text() {\n    return _Shape.apply(this, arguments) || this;\n  }\n\n  var _proto = Text.prototype;\n\n  _proto._initProperties = function _initProperties() {\n    _Shape.prototype._initProperties.call(this);\n\n    this._attrs.canFill = true;\n    this._attrs.canStroke = true;\n    this._attrs.type = 'text';\n  };\n\n  _proto.getDefaultAttrs = function getDefaultAttrs() {\n    return {\n      lineWidth: 0,\n      lineCount: 1,\n      fontSize: 12,\n      fontFamily: 'sans-serif',\n      fontStyle: 'normal',\n      fontWeight: 'normal',\n      fontVariant: 'normal',\n      textAlign: 'start',\n      textBaseline: 'bottom',\n      lineHeight: null,\n      textArr: null\n    };\n  };\n\n  _proto._getFontStyle = function _getFontStyle() {\n    var attrs = this._attrs.attrs;\n    var fontSize = attrs.fontSize,\n        fontFamily = attrs.fontFamily,\n        fontWeight = attrs.fontWeight,\n        fontStyle = attrs.fontStyle,\n        fontVariant = attrs.fontVariant;\n    return fontStyle + \" \" + fontVariant + \" \" + fontWeight + \" \" + fontSize + \"px \" + fontFamily;\n  };\n\n  _proto._afterAttrsSet = function _afterAttrsSet() {\n    var attrs = this._attrs.attrs;\n    attrs.font = this._getFontStyle();\n\n    if (attrs.text) {\n      var text = attrs.text;\n      var textArr = null;\n      var lineCount = 1;\n\n      if ((0, _common.isString)(text) && text.indexOf('\\n') !== -1) {\n        textArr = text.split('\\n');\n        lineCount = textArr.length;\n      }\n\n      attrs.lineCount = lineCount;\n      attrs.textArr = textArr;\n    }\n\n    this.set('attrs', attrs);\n  };\n\n  _proto._getTextHeight = function _getTextHeight() {\n    var attrs = this._attrs.attrs;\n\n    if (attrs.height) {\n      return attrs.height;\n    }\n\n    var lineCount = attrs.lineCount;\n    var fontSize = attrs.fontSize * 1;\n\n    if (lineCount > 1) {\n      var spaceingY = this._getSpaceingY();\n\n      return fontSize * lineCount + spaceingY * (lineCount - 1);\n    }\n\n    return fontSize;\n  };\n\n  _proto._getSpaceingY = function _getSpaceingY() {\n    var attrs = this._attrs.attrs;\n    var lineHeight = attrs.lineHeight;\n    var fontSize = attrs.fontSize * 1;\n    return lineHeight ? lineHeight - fontSize : fontSize * 0.14;\n  };\n\n  _proto.drawInner = function drawInner(context) {\n    var self = this;\n    var attrs = self._attrs.attrs;\n    var text = attrs.text;\n    var x = attrs.x;\n    var y = attrs.y;\n\n    if ((0, _common.isNil)(text) || isNaN(x) || isNaN(y)) {\n      // text will be 0\n      return;\n    }\n\n    var textArr = attrs.textArr;\n    var fontSize = attrs.fontSize * 1;\n\n    var spaceingY = self._getSpaceingY();\n\n    if (attrs.rotate) {\n      // do rotation\n      context.translate(x, y);\n      context.rotate(attrs.rotate);\n      x = 0;\n      y = 0;\n    }\n\n    var textBaseline = attrs.textBaseline;\n    var height;\n\n    if (textArr) {\n      height = self._getTextHeight();\n    }\n\n    var subY; // context.beginPath();\n\n    if (self.hasFill()) {\n      var fillOpacity = attrs.fillOpacity;\n\n      if (!(0, _common.isNil)(fillOpacity) && fillOpacity !== 1) {\n        context.globalAlpha = fillOpacity;\n      }\n\n      if (textArr) {\n        for (var i = 0, len = textArr.length; i < len; i++) {\n          var subText = textArr[i];\n          subY = y + i * (spaceingY + fontSize) - height + fontSize; // bottom;\n\n          if (textBaseline === 'middle') {\n            subY += height - fontSize - (height - fontSize) / 2;\n          }\n\n          if (textBaseline === 'top') {\n            subY += height - fontSize;\n          }\n\n          context.fillText(subText, x, subY);\n        }\n      } else {\n        context.fillText(text, x, y);\n      }\n    }\n\n    if (self.hasStroke()) {\n      if (textArr) {\n        for (var _i = 0, _len = textArr.length; _i < _len; _i++) {\n          var _subText = textArr[_i];\n          subY = y + _i * (spaceingY + fontSize) - height + fontSize; // bottom;\n\n          if (textBaseline === 'middle') {\n            subY += height - fontSize - (height - fontSize) / 2;\n          }\n\n          if (textBaseline === 'top') {\n            subY += height - fontSize;\n          }\n\n          context.strokeText(_subText, x, subY);\n        }\n      } else {\n        context.strokeText(text, x, y);\n      }\n    }\n  };\n\n  _proto.calculateBox = function calculateBox() {\n    var self = this;\n    var attrs = self._attrs.attrs;\n    var x = attrs.x,\n        y = attrs.y,\n        textAlign = attrs.textAlign,\n        textBaseline = attrs.textBaseline;\n\n    var width = self._getTextWidth(); // attrs.width\n\n\n    if (!width) {\n      return {\n        minX: x,\n        minY: y,\n        maxX: x,\n        maxY: y\n      };\n    }\n\n    var height = self._getTextHeight(); // attrs.height\n\n\n    if (attrs.rotate) {\n      var rotatedBox = _rect[\"default\"].calcRotatedBox({\n        width: width,\n        height: height,\n        rotate: attrs.rotate\n      });\n\n      width = rotatedBox.width;\n      height = rotatedBox.height;\n    }\n\n    var point = {\n      x: x,\n      y: y - height\n    }; // default textAlign: start, textBaseline: bottom\n\n    if (textAlign) {\n      if (textAlign === 'end' || textAlign === 'right') {\n        point.x -= width;\n      } else if (textAlign === 'center') {\n        point.x -= width / 2;\n      }\n    }\n\n    if (textBaseline) {\n      if (textBaseline === 'top') {\n        point.y += height;\n      } else if (textBaseline === 'middle') {\n        point.y += height / 2;\n      }\n    }\n\n    return {\n      minX: point.x,\n      minY: point.y,\n      maxX: point.x + width,\n      maxY: point.y + height\n    };\n  };\n\n  _proto._getTextWidth = function _getTextWidth() {\n    var attrs = this._attrs.attrs;\n\n    if (attrs.width) {\n      return attrs.width;\n    }\n\n    var text = attrs.text;\n    var context = this.get('context');\n    if ((0, _common.isNil)(text)) return undefined;\n    var font = attrs.font;\n    var textArr = attrs.textArr;\n    var key = text + '' + font;\n\n    if (textWidthCache[key]) {\n      return textWidthCache[key];\n    }\n\n    var width = 0;\n\n    if (textArr) {\n      for (var i = 0, length = textArr.length; i < length; i++) {\n        var subText = textArr[i];\n        width = Math.max(width, (0, _common.measureText)(subText, font, context).width);\n      }\n    } else {\n      width = (0, _common.measureText)(text, font, context).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  return Text;\n}(_shape[\"default\"]);\n\n_shape[\"default\"].Text = Text;\nvar _default = Text;\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\nvar Rect = {\n  calcRotatedBox: function calcRotatedBox(_ref) {\n    var width = _ref.width,\n        height = _ref.height,\n        rotate = _ref.rotate;\n    var absRotate = Math.abs(rotate);\n    return {\n      width: Math.abs(width * Math.cos(absRotate) + height * Math.sin(absRotate)),\n      height: Math.abs(height * Math.cos(absRotate) + width * Math.sin(absRotate))\n    };\n  }\n};\nvar _default = Rect;\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _shape = _interopRequireDefault(require(\"../shape\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar Custom = /*#__PURE__*/function (_Shape) {\n  _inheritsLoose(Custom, _Shape);\n\n  function Custom() {\n    return _Shape.apply(this, arguments) || this;\n  }\n\n  var _proto = Custom.prototype;\n\n  _proto._initProperties = function _initProperties() {\n    _Shape.prototype._initProperties.call(this);\n\n    this._attrs.canFill = true;\n    this._attrs.canStroke = true;\n    this._attrs.createPath = null;\n    this._attrs.type = 'custom';\n  };\n\n  _proto.createPath = function createPath(context) {\n    var createPath = this.get('createPath');\n    createPath && createPath.call(this, context);\n  };\n\n  _proto.calculateBox = function calculateBox() {\n    var calculateBox = this.get('calculateBox');\n    return calculateBox && calculateBox.call(this);\n  };\n\n  return Custom;\n}(_shape[\"default\"]);\n\n_shape[\"default\"].Custom = Custom;\nvar _default = Custom;\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nexports.getClip = getClip;\nexports.isPointInPlot = isPointInPlot;\n\nvar _index = require(\"../graphic/index\");\n\nfunction getClip(coord) {\n  var start = coord.start;\n  var end = coord.end;\n  var width = end.x - start.x;\n  var height = Math.abs(end.y - start.y);\n  var margin = 10;\n  var clip;\n\n  if (coord.isPolar) {\n    var circleRadius = coord.circleRadius,\n        center = coord.center,\n        startAngle = coord.startAngle,\n        endAngle = coord.endAngle;\n    clip = new _index.Shape.Sector({\n      attrs: {\n        x: center.x,\n        y: center.y,\n        r: circleRadius,\n        r0: 0,\n        startAngle: startAngle,\n        endAngle: endAngle\n      }\n    });\n  } else {\n    clip = new _index.Shape.Rect({\n      attrs: {\n        x: start.x,\n        y: end.y - margin,\n        width: width,\n        height: height + 2 * margin\n      }\n    });\n  }\n\n  clip.isClip = true;\n  return clip;\n}\n\nfunction isPointInPlot(point, plot) {\n  var x = point.x,\n      y = point.y;\n  var tl = plot.tl,\n      tr = plot.tr,\n      br = plot.br;\n  return x >= tl.x && x <= tr.x && y >= tl.y && y <= br.y;\n}","\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _base = _interopRequireDefault(require(\"./base\"));\n\nrequire(\"./point\");\n\nrequire(\"./path\");\n\nrequire(\"./line\");\n\nrequire(\"./area\");\n\nrequire(\"./interval\");\n\nrequire(\"./polygon\");\n\nrequire(\"./schema\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar _default = _base[\"default\"];\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _common = require(\"../util/common\");\n\nvar _base = _interopRequireDefault(require(\"./base\"));\n\nrequire(\"./shape/point\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar Point = /*#__PURE__*/function (_Geom) {\n  _inheritsLoose(Point, _Geom);\n\n  function Point() {\n    return _Geom.apply(this, arguments) || this;\n  }\n\n  var _proto = Point.prototype;\n\n  _proto.getDefaultCfg = function getDefaultCfg() {\n    var cfg = _Geom.prototype.getDefaultCfg.call(this);\n\n    cfg.type = 'point';\n    cfg.shapeType = 'point';\n    cfg.generatePoints = false;\n    return cfg;\n  };\n\n  _proto.draw = function draw(data, shapeFactory) {\n    var self = this;\n    var container = self.get('container');\n    (0, _common.each)(data, function (obj) {\n      var shape = obj.shape;\n      var cfg = self.getDrawCfg(obj);\n\n      if ((0, _common.isArray)(obj.y)) {\n        var hasStack = self.hasAdjust('stack');\n        (0, _common.each)(obj.y, function (y, idx) {\n          cfg.y = y;\n\n          if (!hasStack || idx !== 0) {\n            self.drawShape(shape, obj, cfg, container, shapeFactory);\n          }\n        });\n      } else if (!(0, _common.isNil)(obj.y)) {\n        self.drawShape(shape, obj, cfg, container, shapeFactory);\n      }\n    });\n  };\n\n  return Point;\n}(_base[\"default\"]);\n\n_base[\"default\"].Point = Point;\nvar _default = Point;\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _global = _interopRequireDefault(require(\"../../global\"));\n\nvar _shape = _interopRequireDefault(require(\"./shape\"));\n\nvar _common = require(\"../../util/common\");\n\nvar _util = require(\"./util\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar SHAPES = ['circle', 'hollowCircle', 'rect'];\n\nvar Point = _shape[\"default\"].registerFactory('point', {\n  defaultShapeType: 'circle',\n  getDefaultPoints: function getDefaultPoints(pointInfo) {\n    return (0, _util.splitPoints)(pointInfo);\n  }\n});\n\nfunction getPointsCfg(cfg) {\n  var style = {\n    lineWidth: 0,\n    stroke: cfg.color,\n    fill: cfg.color\n  };\n\n  if (cfg.size) {\n    style.size = cfg.size;\n  }\n\n  (0, _common.mix)(style, cfg.style);\n  return (0, _common.mix)({}, _global[\"default\"].shape.point, style);\n}\n\nfunction drawShape(cfg, container, shape) {\n  if (cfg.size === 0) return;\n  var pointCfg = getPointsCfg(cfg);\n  var size = pointCfg.r || pointCfg.size;\n  var x = cfg.x;\n  var y = !(0, _common.isArray)(cfg.y) ? [cfg.y] : cfg.y;\n\n  if (shape === 'hollowCircle') {\n    pointCfg.lineWidth = 1;\n    pointCfg.fill = null;\n  }\n\n  for (var i = 0, len = y.length; i < len; i++) {\n    if (shape === 'rect') {\n      return container.addShape('Rect', {\n        className: 'point',\n        attrs: (0, _common.mix)({\n          x: x - size,\n          y: y[i] - size,\n          width: size * 2,\n          height: size * 2\n        }, pointCfg)\n      });\n    }\n\n    return container.addShape('Circle', {\n      className: 'point',\n      attrs: (0, _common.mix)({\n        x: x,\n        y: y[i],\n        r: size\n      }, pointCfg)\n    });\n  }\n}\n\n(0, _common.each)(SHAPES, function (shapeType) {\n  _shape[\"default\"].registerShape('point', shapeType, {\n    draw: function draw(cfg, container) {\n      return drawShape(cfg, container, shapeType);\n    }\n  });\n});\nvar _default = Point;\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nexports.splitPoints = splitPoints;\nexports.splitArray = splitArray;\n\nvar _common = require(\"../../util/common\");\n\n/**\n * @fileOverview shape util\n * @author dxq613@gmail.com\n */\nfunction splitPoints(obj) {\n  var points = [];\n  var x = obj.x;\n  var y = obj.y;\n  y = (0, _common.isArray)(y) ? y : [y];\n  y.forEach(function (yItem, index) {\n    var point = {\n      x: (0, _common.isArray)(x) ? x[index] : x,\n      y: yItem\n    };\n    points.push(point);\n  });\n  return points;\n}\n\nfunction splitArray(data, yField, connectNulls) {\n  if (!data.length) return [];\n  var arr = [];\n  var tmp = [];\n  var yValue;\n  (0, _common.each)(data, function (obj) {\n    yValue = obj._origin ? obj._origin[yField] : obj[yField];\n\n    if (connectNulls) {\n      if (!(0, _common.isNil)(yValue)) {\n        tmp.push(obj);\n      }\n    } else {\n      if ((0, _common.isArray)(yValue) && (0, _common.isNil)(yValue[0]) || (0, _common.isNil)(yValue)) {\n        if (tmp.length) {\n          arr.push(tmp);\n          tmp = [];\n        }\n      } else {\n        tmp.push(obj);\n      }\n    }\n  });\n\n  if (tmp.length) {\n    arr.push(tmp);\n  }\n\n  return arr;\n}","\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _base = _interopRequireDefault(require(\"./base\"));\n\nvar _util = require(\"./shape/util\");\n\nvar _common = require(\"../util/common\");\n\nrequire(\"./shape/line\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar Path = /*#__PURE__*/function (_Geom) {\n  _inheritsLoose(Path, _Geom);\n\n  function Path() {\n    return _Geom.apply(this, arguments) || this;\n  }\n\n  var _proto = Path.prototype;\n\n  _proto.getDefaultCfg = function getDefaultCfg() {\n    var cfg = _Geom.prototype.getDefaultCfg.call(this);\n\n    cfg.type = 'path';\n    cfg.shapeType = 'line';\n    return cfg;\n  };\n\n  _proto.getDrawCfg = function getDrawCfg(obj) {\n    var cfg = _Geom.prototype.getDrawCfg.call(this, obj);\n\n    cfg.isStack = this.hasAdjust('stack');\n    return cfg;\n  };\n\n  _proto.draw = function draw(data, shapeFactory) {\n    var self = this;\n    var container = self.get('container');\n    var yScale = self.getYScale();\n    var connectNulls = self.get('connectNulls');\n    var splitArrayObj = (0, _util.splitArray)(data, yScale.field, connectNulls);\n    var cfg = this.getDrawCfg(data[0]);\n    cfg.origin = data;\n    (0, _common.each)(splitArrayObj, function (subData, splitedIndex) {\n      cfg.splitedIndex = splitedIndex;\n      cfg.points = subData;\n      self.drawShape(cfg.shape, data[0], cfg, container, shapeFactory);\n    });\n  };\n\n  return Path;\n}(_base[\"default\"]);\n\n_base[\"default\"].Path = Path;\nvar _default = Path;\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _global = _interopRequireDefault(require(\"../../global\"));\n\nvar _shape = _interopRequireDefault(require(\"./shape\"));\n\nvar _common = require(\"../../util/common\");\n\nvar _util = require(\"./util\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n// register line geom\nvar Line = _shape[\"default\"].registerFactory('line', {\n  defaultShapeType: 'line'\n});\n\nfunction getStyle(cfg) {\n  var style = {\n    strokeStyle: cfg.color\n  };\n\n  if (cfg.size >= 0) {\n    style.lineWidth = cfg.size;\n  }\n\n  (0, _common.mix)(style, cfg.style);\n  return (0, _common.mix)({}, _global[\"default\"].shape.line, style);\n}\n\nfunction drawLines(cfg, container, style, smooth) {\n  var points = cfg.points;\n\n  if (points.length && (0, _common.isArray)(points[0].y)) {\n    var topPoints = [];\n    var bottomPoints = [];\n\n    for (var i = 0, len = points.length; i < len; i++) {\n      var point = points[i];\n      var tmp = (0, _util.splitPoints)(point);\n      bottomPoints.push(tmp[0]);\n      topPoints.push(tmp[1]);\n    }\n\n    if (cfg.isInCircle) {\n      topPoints.push(topPoints[0]);\n      bottomPoints.push(bottomPoints[0]);\n    }\n\n    if (cfg.isStack) {\n      return container.addShape('Polyline', {\n        className: 'line',\n        attrs: (0, _common.mix)({\n          points: topPoints,\n          smooth: smooth\n        }, style)\n      });\n    }\n\n    var topShape = container.addShape('Polyline', {\n      className: 'line',\n      attrs: (0, _common.mix)({\n        points: topPoints,\n        smooth: smooth\n      }, style)\n    });\n    var bottomShape = container.addShape('Polyline', {\n      className: 'line',\n      attrs: (0, _common.mix)({\n        points: bottomPoints,\n        smooth: smooth\n      }, style)\n    });\n    return [topShape, bottomShape];\n  }\n\n  if (cfg.isInCircle) {\n    points.push(points[0]);\n  }\n\n  return container.addShape('Polyline', {\n    className: 'line',\n    attrs: (0, _common.mix)({\n      points: points,\n      smooth: smooth\n    }, style)\n  });\n}\n\nvar SHAPES = ['line', 'smooth', 'dash'];\n(0, _common.each)(SHAPES, function (shapeType) {\n  _shape[\"default\"].registerShape('line', shapeType, {\n    draw: function draw(cfg, container) {\n      var smooth = shapeType === 'smooth';\n      var style = getStyle(cfg);\n\n      if (shapeType === 'dash') {\n        style.lineDash = _global[\"default\"].lineDash;\n      }\n\n      return drawLines(cfg, container, style, smooth);\n    }\n  });\n});\nvar _default = Line;\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _path = _interopRequireDefault(require(\"./path\"));\n\nvar _base = _interopRequireDefault(require(\"./base\"));\n\nrequire(\"./shape/line\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar Line = /*#__PURE__*/function (_Path) {\n  _inheritsLoose(Line, _Path);\n\n  function Line() {\n    return _Path.apply(this, arguments) || this;\n  }\n\n  var _proto = Line.prototype;\n\n  _proto.getDefaultCfg = function getDefaultCfg() {\n    var cfg = _Path.prototype.getDefaultCfg.call(this);\n\n    cfg.type = 'line';\n    cfg.sortable = true;\n    return cfg;\n  };\n\n  return Line;\n}(_path[\"default\"]);\n\n_base[\"default\"].Line = Line;\nvar _default = Line;\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _base = _interopRequireDefault(require(\"./base\"));\n\nvar _util = require(\"./shape/util\");\n\nvar _common = require(\"../util/common\");\n\nrequire(\"./shape/area\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar Area = /*#__PURE__*/function (_Geom) {\n  _inheritsLoose(Area, _Geom);\n\n  function Area() {\n    return _Geom.apply(this, arguments) || this;\n  }\n\n  var _proto = Area.prototype;\n\n  /**\n   * get the default configuration\n   * @protected\n   * @return {Object} return the result\n   */\n  _proto.getDefaultCfg = function getDefaultCfg() {\n    var cfg = _Geom.prototype.getDefaultCfg.call(this);\n\n    cfg.type = 'area';\n    cfg.shapeType = 'area';\n    cfg.generatePoints = true;\n    cfg.sortable = true;\n    return cfg;\n  };\n\n  _proto.draw = function draw(data, shapeFactory) {\n    var self = this;\n    var container = self.get('container');\n    var cfg = this.getDrawCfg(data[0]);\n    var yScale = self.getYScale();\n    var connectNulls = self.get('connectNulls');\n    var splitArrayfn = (0, _util.splitArray)(data, yScale.field, connectNulls);\n    cfg.origin = data;\n    (0, _common.each)(splitArrayfn, function (subData, splitedIndex) {\n      cfg.splitedIndex = splitedIndex;\n      var points = subData.map(function (obj) {\n        return obj.points;\n      });\n      cfg.points = points;\n      self.drawShape(cfg.shape, data[0], cfg, container, shapeFactory);\n    });\n  };\n\n  return Area;\n}(_base[\"default\"]);\n\n_base[\"default\"].Area = Area;\nvar _default = Area;\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _smooth = require(\"../../graphic/util/smooth\");\n\nvar _bbox = require(\"../../graphic/util/bbox\");\n\nvar _global = _interopRequireDefault(require(\"../../global\"));\n\nvar _shape = _interopRequireDefault(require(\"./shape\"));\n\nvar _common = require(\"../../util/common\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction equals(v1, v2) {\n  return Math.abs(v1 - v2) < 0.00001;\n}\n\nfunction notEmpty(value) {\n  return !isNaN(value) && !(0, _common.isNil)(value);\n}\n\nfunction filterPoints(points) {\n  var filteredPoints = []; // filter the point which x or y is NaN\n\n  for (var i = 0, len = points.length; i < len; i++) {\n    var point = points[i];\n\n    if (notEmpty(point.x) && notEmpty(point.y)) {\n      filteredPoints.push(point);\n    }\n  }\n\n  return filteredPoints;\n}\n\nfunction equalsCenter(points, center) {\n  var eqls = true;\n  (0, _common.each)(points, function (point) {\n    if (!equals(point.x, center.x) || !equals(point.y, center.y)) {\n      eqls = false;\n      return false;\n    }\n  });\n  return eqls;\n}\n\nfunction drawRectShape(topPoints, bottomPoints, container, style, isSmooth) {\n  var shape;\n  var points = topPoints.concat(bottomPoints);\n\n  if (isSmooth) {\n    shape = container.addShape('Custom', {\n      className: 'area',\n      attrs: (0, _common.mix)({\n        points: points\n      }, style),\n      createPath: function createPath(context) {\n        var constaint = [[0, 0], [1, 1]];\n        var points = filterPoints(this._attrs.attrs.points);\n        var pointsLen = points.length;\n        var topPoints = points.slice(0, pointsLen / 2);\n        var bottomPoints = points.slice(pointsLen / 2, pointsLen);\n        var topSps = (0, _smooth.smooth)(topPoints, false, constaint);\n        context.beginPath();\n        context.moveTo(topPoints[0].x, topPoints[0].y);\n\n        for (var i = 0, n = topSps.length; i < n; i++) {\n          var sp = topSps[i];\n          context.bezierCurveTo(sp[1], sp[2], sp[3], sp[4], sp[5], sp[6]);\n        }\n\n        if (bottomPoints.length) {\n          var bottomSps = (0, _smooth.smooth)(bottomPoints, false, constaint);\n          context.lineTo(bottomPoints[0].x, bottomPoints[0].y);\n\n          for (var _i = 0, _n = bottomSps.length; _i < _n; _i++) {\n            var _sp = bottomSps[_i];\n            context.bezierCurveTo(_sp[1], _sp[2], _sp[3], _sp[4], _sp[5], _sp[6]);\n          }\n        }\n\n        context.closePath();\n      },\n      calculateBox: function calculateBox() {\n        var points = filterPoints(this._attrs.attrs.points);\n        return (0, _bbox.getBBoxFromPoints)(points);\n      }\n    });\n  } else {\n    shape = container.addShape('Polyline', {\n      className: 'area',\n      attrs: (0, _common.mix)({\n        points: points\n      }, style)\n    });\n  }\n\n  return shape;\n}\n\nfunction drawShape(cfg, container, isSmooth) {\n  var self = this;\n  var points = cfg.points;\n  var topPoints = [];\n  var bottomPoints = [];\n  (0, _common.each)(points, function (point) {\n    bottomPoints.push(point[0]);\n    topPoints.push(point[1]);\n  });\n  var style = (0, _common.mix)({\n    fillStyle: cfg.color\n  }, _global[\"default\"].shape.area, cfg.style);\n  bottomPoints.reverse();\n  topPoints = self.parsePoints(topPoints);\n  bottomPoints = self.parsePoints(bottomPoints);\n\n  if (cfg.isInCircle) {\n    topPoints.push(topPoints[0]);\n    bottomPoints.unshift(bottomPoints[bottomPoints.length - 1]);\n\n    if (equalsCenter(bottomPoints, cfg.center)) {\n      bottomPoints = [];\n    }\n  }\n\n  return drawRectShape(topPoints, bottomPoints, container, style, isSmooth);\n}\n\nvar Area = _shape[\"default\"].registerFactory('area', {\n  defaultShapeType: 'area',\n  getDefaultPoints: function getDefaultPoints(obj) {\n    var x = obj.x;\n    var y = obj.y;\n    var y0 = obj.y0;\n    y = (0, _common.isArray)(y) ? y : [y0, y];\n    var points = [];\n    points.push({\n      x: x,\n      y: y[0]\n    }, {\n      x: x,\n      y: y[1]\n    });\n    return points;\n  }\n});\n\nvar SHAPES = ['area', 'smooth'];\n(0, _common.each)(SHAPES, function (shapeType) {\n  _shape[\"default\"].registerShape('area', shapeType, {\n    draw: function draw(cfg, container) {\n      var smooth = shapeType === 'smooth';\n      return drawShape.call(this, cfg, container, smooth);\n    }\n  });\n});\nvar _default = Area;\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _base = _interopRequireDefault(require(\"./base\"));\n\nvar _common = require(\"../util/common\");\n\nvar _size = _interopRequireDefault(require(\"./mixin/size\"));\n\nrequire(\"./shape/interval\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar Interval = /*#__PURE__*/function (_Geom) {\n  _inheritsLoose(Interval, _Geom);\n\n  var _proto = Interval.prototype;\n\n  _proto.getDefaultCfg = function getDefaultCfg() {\n    var cfg = _Geom.prototype.getDefaultCfg.call(this);\n\n    cfg.type = 'interval';\n    cfg.shapeType = 'interval';\n    cfg.generatePoints = true;\n    return cfg;\n  };\n\n  function Interval(cfg) {\n    var _this;\n\n    _this = _Geom.call(this, cfg) || this;\n    (0, _common.mix)(_assertThisInitialized(_this), _size[\"default\"]);\n    return _this;\n  }\n\n  _proto.init = function init() {\n    _Geom.prototype.init.call(this); // 绑定事件\n\n\n    this.initEvent();\n  };\n\n  _proto.createShapePointsCfg = function createShapePointsCfg(obj) {\n    var cfg = _Geom.prototype.createShapePointsCfg.call(this, obj);\n\n    cfg.size = this.getNormalizedSize(obj);\n    return cfg;\n  };\n\n  _proto.clearInner = function clearInner() {\n    _Geom.prototype.clearInner.call(this);\n\n    this.set('defaultSize', null);\n  };\n\n  return Interval;\n}(_base[\"default\"]);\n\n_base[\"default\"].Interval = Interval;\nvar _default = Interval;\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _const = require(\"../../chart/const\");\n\nvar _common = require(\"../../util/common\");\n\nvar _global = _interopRequireDefault(require(\"../../global\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n/**\n * @fileOverview Utility for calculate the with ratui in x axis\n * @author sima.zhang1990@gmail.com\n * @author dxq613@gmail.com\n */\nvar SizeMixin = {\n  initEvent: function initEvent() {\n    var _this = this;\n\n    var chart = this.get('chart');\n\n    if (!chart) {\n      return;\n    }\n\n    chart.on(_const.EVENT_AFTER_SIZE_CHANGE, function () {\n      _this.set('_width', null);\n    });\n  },\n  getDefaultSize: function getDefaultSize() {\n    var defaultSize = this.get('defaultSize');\n\n    if (!defaultSize) {\n      var coord = this.get('coord');\n      var xScale = this.getXScale();\n      var dataArray = this.get('dataArray');\n      var values = (0, _common.uniq)(xScale.values);\n      var count = values.length;\n      var range = xScale.range;\n      var normalizeSize = 1 / count;\n      var widthRatio = 1;\n\n      if (coord && coord.isPolar) {\n        if (coord.transposed && count > 1) {\n          widthRatio = _global[\"default\"].widthRatio.multiplePie;\n        } else {\n          widthRatio = _global[\"default\"].widthRatio.rose;\n        }\n      } else {\n        if (xScale.isLinear) {\n          normalizeSize *= range[1] - range[0];\n        }\n\n        widthRatio = _global[\"default\"].widthRatio.column;\n      }\n\n      normalizeSize *= widthRatio;\n\n      if (this.hasAdjust('dodge')) {\n        normalizeSize = normalizeSize / dataArray.length;\n      }\n\n      defaultSize = normalizeSize;\n      this.set('defaultSize', defaultSize);\n    }\n\n    return defaultSize;\n  },\n  getDimWidth: function getDimWidth(dimName) {\n    var coord = this.get('coord');\n    var start = coord.convertPoint({\n      x: 0,\n      y: 0\n    });\n    var end = coord.convertPoint({\n      x: dimName === 'x' ? 1 : 0,\n      y: dimName === 'x' ? 0 : 1\n    });\n    var width = 0;\n\n    if (start && end) {\n      width = Math.sqrt(Math.pow(end.x - start.x, 2) + Math.pow(end.y - start.y, 2));\n    }\n\n    return width;\n  },\n  _getWidth: function _getWidth() {\n    var width = this.get('_width');\n\n    if (!width) {\n      var coord = this.get('coord');\n\n      if (coord && coord.isPolar && !coord.transposed) {\n        width = (coord.endAngle - coord.startAngle) * coord.circleRadius;\n      } else {\n        width = this.getDimWidth('x');\n      }\n\n      this.set('_width', width);\n    }\n\n    return width;\n  },\n  _toNormalizedSize: function _toNormalizedSize(size) {\n    var width = this._getWidth();\n\n    return size / width;\n  },\n  _toCoordSize: function _toCoordSize(normalizeSize) {\n    var width = this._getWidth();\n\n    return width * normalizeSize;\n  },\n  getNormalizedSize: function getNormalizedSize(obj) {\n    var size = this.getAttrValue('size', obj);\n\n    if ((0, _common.isNil)(size)) {\n      size = this.getDefaultSize();\n    } else {\n      size = this._toNormalizedSize(size);\n    }\n\n    return size;\n  },\n  getSize: function getSize(obj) {\n    var size = this.getAttrValue('size', obj);\n\n    if ((0, _common.isNil)(size)) {\n      var normalizeSize = this.getDefaultSize();\n      size = this._toCoordSize(normalizeSize);\n    }\n\n    return size;\n  }\n};\nvar _default = SizeMixin;\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _vector = _interopRequireDefault(require(\"../../graphic/util/vector2\"));\n\nvar _global = _interopRequireDefault(require(\"../../global\"));\n\nvar _shape = _interopRequireDefault(require(\"./shape\"));\n\nvar _common = require(\"../../util/common\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction getRectPoints(cfg) {\n  var x = cfg.x,\n      y = cfg.y,\n      y0 = cfg.y0,\n      size = cfg.size;\n  var ymin = y0;\n  var ymax = y;\n\n  if ((0, _common.isArray)(y)) {\n    ymax = y[1];\n    ymin = y[0];\n  }\n\n  var xmin;\n  var xmax;\n\n  if ((0, _common.isArray)(x)) {\n    xmin = x[0];\n    xmax = x[1];\n  } else {\n    xmin = x - size / 2;\n    xmax = x + size / 2;\n  }\n\n  return [{\n    x: xmin,\n    y: ymin\n  }, {\n    x: xmin,\n    y: ymax\n  }, {\n    x: xmax,\n    y: ymax\n  }, {\n    x: xmax,\n    y: ymin\n  }];\n}\n\nfunction getRectRange(points) {\n  var xValues = [];\n  var yValues = [];\n\n  for (var i = 0, len = points.length; i < len; i++) {\n    var point = points[i];\n    xValues.push(point.x);\n    yValues.push(point.y);\n  }\n\n  var xMin = Math.min.apply(null, xValues);\n  var yMin = Math.min.apply(null, yValues);\n  var xMax = Math.max.apply(null, xValues);\n  var yMax = Math.max.apply(null, yValues);\n  return {\n    x: xMin,\n    y: yMin,\n    width: xMax - xMin,\n    height: yMax - yMin\n  };\n}\n\nfunction getMiddlePoint(a, b) {\n  var x = (a.x - b.x) / 2 + b.x;\n  var y = (a.y - b.y) / 2 + b.y;\n  return {\n    x: x,\n    y: y\n  };\n}\n\nvar Interval = _shape[\"default\"].registerFactory('interval', {\n  defaultShapeType: 'rect',\n  getDefaultPoints: function getDefaultPoints(cfg) {\n    return getRectPoints(cfg);\n  }\n});\n\n_shape[\"default\"].registerShape('interval', 'rect', {\n  draw: function draw(cfg, container) {\n    var points = this.parsePoints(cfg.points);\n    var style = (0, _common.mix)({\n      fill: cfg.color\n    }, _global[\"default\"].shape.interval, cfg.style);\n\n    if (cfg.isInCircle) {\n      var newPoints = points.slice(0);\n\n      if (this._coord.transposed) {\n        newPoints = [points[0], points[3], points[2], points[1]];\n      }\n\n      var _cfg$center = cfg.center,\n          x = _cfg$center.x,\n          y = _cfg$center.y;\n      var v = [1, 0];\n      var v0 = [newPoints[0].x - x, newPoints[0].y - y];\n      var v1 = [newPoints[1].x - x, newPoints[1].y - y];\n      var v2 = [newPoints[2].x - x, newPoints[2].y - y];\n\n      var startAngle = _vector[\"default\"].angleTo(v, v1);\n\n      var endAngle = _vector[\"default\"].angleTo(v, v2);\n\n      var r0 = _vector[\"default\"].length(v0);\n\n      var r = _vector[\"default\"].length(v1);\n\n      if (startAngle >= 1.5 * Math.PI) {\n        startAngle = startAngle - 2 * Math.PI;\n      }\n\n      if (endAngle >= 1.5 * Math.PI) {\n        endAngle = endAngle - 2 * Math.PI;\n      }\n\n      return container.addShape('Sector', {\n        className: 'interval',\n        attrs: (0, _common.mix)({\n          x: x,\n          y: y,\n          r: r,\n          r0: r0,\n          startAngle: startAngle,\n          endAngle: endAngle\n        }, style)\n      });\n    }\n\n    var rectCfg = getRectRange(points);\n    return container.addShape('rect', {\n      className: 'interval',\n      attrs: (0, _common.mix)(rectCfg, style)\n    });\n  }\n}); // 金字塔 和 漏斗图\n\n\n['pyramid', 'funnel'].forEach(function (shapeType) {\n  _shape[\"default\"].registerShape('interval', shapeType, {\n    getPoints: function getPoints(cfg) {\n      cfg.size = cfg.size * 2; // 漏斗图的 size 是柱状图的两倍\n\n      return getRectPoints(cfg);\n    },\n    draw: function draw(cfg, container) {\n      var points = this.parsePoints(cfg.points);\n      var nextPoints = this.parsePoints(cfg.nextPoints);\n      var polygonPoints = null;\n\n      if (nextPoints) {\n        polygonPoints = [points[0], points[1], nextPoints[1], nextPoints[0]];\n      } else {\n        polygonPoints = [points[0], points[1]]; // pyramid 顶部是三角形,所以取中心点就好了,funnel顶部是长方形\n\n        if (shapeType === 'pyramid') {\n          polygonPoints.push(getMiddlePoint(points[2], points[3]));\n        } else {\n          polygonPoints.push(points[2], points[3]);\n        }\n      }\n\n      var attrs = (0, _common.mix)({\n        fill: cfg.color,\n        points: polygonPoints\n      }, _global[\"default\"].shape.interval, cfg.style);\n      return container.addShape('polygon', {\n        className: 'interval',\n        attrs: attrs\n      });\n    }\n  });\n});\nvar _default = Interval;\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _base = _interopRequireDefault(require(\"./base\"));\n\nvar _common = require(\"../util/common\");\n\nrequire(\"./shape/polygon\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar Polygon = /*#__PURE__*/function (_Geom) {\n  _inheritsLoose(Polygon, _Geom);\n\n  function Polygon() {\n    return _Geom.apply(this, arguments) || this;\n  }\n\n  var _proto = Polygon.prototype;\n\n  _proto.getDefaultCfg = function getDefaultCfg() {\n    var cfg = _Geom.prototype.getDefaultCfg.call(this);\n\n    cfg.type = 'polygon';\n    cfg.shapeType = 'polygon';\n    cfg.generatePoints = true;\n    return cfg;\n  };\n\n  _proto.createShapePointsCfg = function createShapePointsCfg(obj) {\n    var cfg = _Geom.prototype.createShapePointsCfg.call(this, obj);\n\n    var self = this;\n    var x = cfg.x;\n    var y = cfg.y;\n    var temp;\n\n    if (!((0, _common.isArray)(x) && (0, _common.isArray)(y))) {\n      var xScale = self.getXScale();\n      var yScale = self.getYScale();\n      var xCount = xScale.values ? xScale.values.length : xScale.ticks.length;\n      var yCount = yScale.values ? yScale.values.length : yScale.ticks.length;\n      var xOffset = 0.5 * 1 / xCount;\n      var yOffset = 0.5 * 1 / yCount;\n\n      if (xScale.isCategory && yScale.isCategory) {\n        x = [x - xOffset, x - xOffset, x + xOffset, x + xOffset];\n        y = [y - yOffset, y + yOffset, y + yOffset, y - yOffset];\n      } else if ((0, _common.isArray)(x)) {\n        temp = x;\n        x = [temp[0], temp[0], temp[1], temp[1]];\n        y = [y - yOffset / 2, y + yOffset / 2, y + yOffset / 2, y - yOffset / 2];\n      } else if ((0, _common.isArray)(y)) {\n        temp = y;\n        y = [temp[0], temp[1], temp[1], temp[0]];\n        x = [x - xOffset / 2, x - xOffset / 2, x + xOffset / 2, x + xOffset / 2];\n      }\n\n      cfg.x = x;\n      cfg.y = y;\n    }\n\n    return cfg;\n  };\n\n  return Polygon;\n}(_base[\"default\"]);\n\n_base[\"default\"].Polygon = Polygon;\nvar _default = Polygon;\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _shape = _interopRequireDefault(require(\"./shape\"));\n\nvar _common = require(\"../../util/common\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar Polygon = _shape[\"default\"].registerFactory('polygon', {\n  defaultShapeType: 'polygon',\n  getDefaultPoints: function getDefaultPoints(pointInfo) {\n    var points = [];\n    var x = pointInfo.x,\n        y = pointInfo.y;\n\n    for (var i = 0, len = x.length; i < len; i++) {\n      points.push({\n        x: x[i],\n        y: y[i]\n      });\n    }\n\n    return points;\n  }\n});\n\n_shape[\"default\"].registerShape('polygon', 'polygon', {\n  draw: function draw(cfg, container) {\n    var points = this.parsePoints(cfg.points);\n    var style = (0, _common.mix)({\n      fill: cfg.color,\n      points: points\n    }, cfg.style);\n    return container.addShape('Polygon', {\n      className: 'polygon',\n      attrs: style\n    });\n  }\n});\n\nvar _default = Polygon;\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _base = _interopRequireDefault(require(\"./base\"));\n\nvar _common = require(\"../util/common\");\n\nvar _size = _interopRequireDefault(require(\"./mixin/size\"));\n\nrequire(\"./shape/schema\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar Schema = /*#__PURE__*/function (_Geom) {\n  _inheritsLoose(Schema, _Geom);\n\n  var _proto = Schema.prototype;\n\n  _proto.getDefaultCfg = function getDefaultCfg() {\n    var cfg = _Geom.prototype.getDefaultCfg.call(this);\n\n    cfg.type = 'schema';\n    cfg.shapeType = 'schema';\n    cfg.generatePoints = true;\n    return cfg;\n  };\n\n  function Schema(cfg) {\n    var _this;\n\n    _this = _Geom.call(this, cfg) || this;\n    (0, _common.mix)(_assertThisInitialized(_this), _size[\"default\"]);\n    return _this;\n  }\n\n  _proto.init = function init() {\n    _Geom.prototype.init.call(this); // 绑定事件\n\n\n    this.initEvent();\n  };\n\n  _proto.createShapePointsCfg = function createShapePointsCfg(obj) {\n    var cfg = _Geom.prototype.createShapePointsCfg.call(this, obj);\n\n    cfg.size = this.getNormalizedSize(obj);\n    return cfg;\n  };\n\n  _proto.clearInner = function clearInner() {\n    _Geom.prototype.clearInner.call(this);\n\n    this.set('defaultSize', null);\n  };\n\n  return Schema;\n}(_base[\"default\"]);\n\n_base[\"default\"].Schema = Schema;\nvar _default = Schema;\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _shape = _interopRequireDefault(require(\"./shape\"));\n\nvar _common = require(\"../../util/common\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _sortValue(value) {\n  var sorted = value.sort(function (a, b) {\n    return a < b ? 1 : -1;\n  });\n  var length = sorted.length;\n\n  if (length < 4) {\n    var min = sorted[length - 1];\n\n    for (var i = 0; i < 4 - length; i++) {\n      sorted.push(min);\n    }\n  }\n\n  return sorted;\n} // from left bottom corner, and clockwise\n\n\nfunction getCandlePoints(x, y, width) {\n  var yValues = _sortValue(y);\n\n  var points = [{\n    x: x,\n    y: yValues[0]\n  }, {\n    x: x,\n    y: yValues[1]\n  }, {\n    x: x - width / 2,\n    y: yValues[2]\n  }, {\n    x: x - width / 2,\n    y: yValues[1]\n  }, {\n    x: x + width / 2,\n    y: yValues[1]\n  }, {\n    x: x + width / 2,\n    y: yValues[2]\n  }, {\n    x: x,\n    y: yValues[2]\n  }, {\n    x: x,\n    y: yValues[3]\n  }];\n  return points;\n}\n\nvar Schema = _shape[\"default\"].registerFactory('schema', {});\n\n_shape[\"default\"].registerShape('schema', 'candle', {\n  getPoints: function getPoints(cfg) {\n    return getCandlePoints(cfg.x, cfg.y, cfg.size);\n  },\n  draw: function draw(cfg, container) {\n    var points = this.parsePoints(cfg.points);\n    var style = (0, _common.mix)({\n      stroke: cfg.color,\n      fill: cfg.color,\n      lineWidth: 1\n    }, cfg.style);\n    return container.addShape('Custom', {\n      className: 'schema',\n      attrs: style,\n      createPath: function createPath(ctx) {\n        ctx.beginPath();\n        ctx.moveTo(points[0].x, points[0].y);\n        ctx.lineTo(points[1].x, points[1].y);\n        ctx.moveTo(points[2].x, points[2].y);\n\n        for (var i = 3; i < 6; i++) {\n          ctx.lineTo(points[i].x, points[i].y);\n        }\n\n        ctx.closePath();\n        ctx.moveTo(points[6].x, points[6].y);\n        ctx.lineTo(points[7].x, points[7].y);\n      }\n    });\n  }\n});\n\nvar _default = Schema;\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\n\nvar _stack = _interopRequireDefault(require(\"./stack\"));\n\nexports.Stack = _stack[\"default\"];\n\nvar _dodge = _interopRequireDefault(require(\"./dodge\"));\n\nexports.Dodge = _dodge[\"default\"];\n\nvar _symmetric = _interopRequireDefault(require(\"./symmetric\"));\n\nexports.Symmetric = _symmetric[\"default\"];\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }","\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _stack = _interopRequireDefault(require(\"@antv/adjust/lib/stack\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar _default = _stack[\"default\"];\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _dodge = _interopRequireDefault(require(\"@antv/adjust/lib/dodge\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar _default = _dodge[\"default\"];\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _symmetric = _interopRequireDefault(require(\"@antv/adjust/lib/symmetric\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar _default = _symmetric[\"default\"];\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _base = _interopRequireDefault(require(\"./base\"));\n\nvar _vector = _interopRequireDefault(require(\"../graphic/util/vector2\"));\n\nvar _matrix = _interopRequireDefault(require(\"../graphic/util/matrix\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar Polar = /*#__PURE__*/function (_Base) {\n  _inheritsLoose(Polar, _Base);\n\n  function Polar() {\n    return _Base.apply(this, arguments) || this;\n  }\n\n  var _proto = Polar.prototype;\n\n  _proto._initDefaultCfg = function _initDefaultCfg() {\n    this.type = 'polar';\n    this.startAngle = -Math.PI / 2;\n    this.endAngle = Math.PI * 3 / 2;\n    this.inner = 0;\n    this.innerRadius = 0; // alias\n\n    this.isPolar = true;\n    this.transposed = false;\n    this.center = null;\n    this.radius = null; // relative, 0 ~ 1\n  };\n\n  _proto.init = function init(start, end) {\n    _Base.prototype.init.call(this, start, end);\n\n    var self = this;\n    var inner = self.inner || self.innerRadius;\n    var width = Math.abs(end.x - start.x);\n    var height = Math.abs(end.y - start.y);\n    var maxRadius;\n    var center;\n\n    if (self.startAngle === -Math.PI && self.endAngle === 0) {\n      maxRadius = Math.min(width / 2, height);\n      center = {\n        x: (start.x + end.x) / 2,\n        y: start.y\n      };\n    } else {\n      maxRadius = Math.min(width, height) / 2;\n      center = {\n        x: (start.x + end.x) / 2,\n        y: (start.y + end.y) / 2\n      };\n    }\n\n    var radius = self.radius;\n\n    if (radius > 0 && radius <= 1) {\n      maxRadius = maxRadius * radius;\n    }\n\n    this.x = {\n      start: self.startAngle,\n      end: self.endAngle\n    };\n    this.y = {\n      start: maxRadius * inner,\n      end: maxRadius\n    };\n    this.center = center;\n    this.circleRadius = maxRadius; // the radius value in px\n  };\n\n  _proto._convertPoint = function _convertPoint(point) {\n    var self = this;\n    var center = self.center;\n    var transposed = self.transposed;\n    var xDim = transposed ? 'y' : 'x';\n    var yDim = transposed ? 'x' : 'y';\n    var x = self.x;\n    var y = self.y;\n    var angle = x.start + (x.end - x.start) * point[xDim];\n    var radius = y.start + (y.end - y.start) * point[yDim];\n    return {\n      x: center.x + Math.cos(angle) * radius,\n      y: center.y + Math.sin(angle) * radius\n    };\n  };\n\n  _proto._invertPoint = function _invertPoint(point) {\n    var self = this;\n    var center = self.center,\n        transposed = self.transposed,\n        x = self.x,\n        y = self.y;\n    var xDim = transposed ? 'y' : 'x';\n    var yDim = transposed ? 'x' : 'y';\n    var m = [1, 0, 0, 1, 0, 0];\n\n    _matrix[\"default\"].rotate(m, m, x.start);\n\n    var startV = [1, 0];\n\n    _vector[\"default\"].transformMat2d(startV, startV, m);\n\n    startV = [startV[0], startV[1]];\n    var pointV = [point.x - center.x, point.y - center.y];\n\n    if (_vector[\"default\"].zero(pointV)) {\n      return {\n        x: 0,\n        y: 0\n      };\n    }\n\n    var theta = _vector[\"default\"].angleTo(startV, pointV, x.end < x.start);\n\n    if (Math.abs(theta - Math.PI * 2) < 0.001) {\n      theta = 0;\n    }\n\n    var l = _vector[\"default\"].length(pointV);\n\n    var percentX = theta / (x.end - x.start);\n    percentX = x.end - x.start > 0 ? percentX : -percentX;\n    var percentY = (l - y.start) / (y.end - y.start);\n    var rst = {};\n    rst[xDim] = percentX;\n    rst[yDim] = percentY;\n    return rst;\n  };\n\n  return Polar;\n}(_base[\"default\"]);\n\n_base[\"default\"].Polar = Polar;\nvar _default = Polar;\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _common = require(\"../../util/common\");\n\nvar _abstract = _interopRequireDefault(require(\"./abstract\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar Circle = /*#__PURE__*/function (_Abstract) {\n  _inheritsLoose(Circle, _Abstract);\n\n  function Circle() {\n    return _Abstract.apply(this, arguments) || this;\n  }\n\n  var _proto = Circle.prototype;\n\n  _proto._initDefaultCfg = function _initDefaultCfg() {\n    _Abstract.prototype._initDefaultCfg.call(this);\n\n    this.startAngle = -Math.PI / 2; // start angle,in radian\n\n    this.endAngle = Math.PI * 3 / 2; // end angle, in radian\n\n    this.radius = null; // radius\n\n    this.center = null; // center\n  };\n\n  _proto.getOffsetPoint = function getOffsetPoint(value) {\n    var startAngle = this.startAngle,\n        endAngle = this.endAngle;\n    var angle = startAngle + (endAngle - startAngle) * value;\n    return this._getCirclePoint(angle);\n  };\n\n  _proto._getCirclePoint = function _getCirclePoint(angle, radius) {\n    var self = this;\n    var center = self.center;\n    radius = radius || self.radius;\n    return {\n      x: center.x + Math.cos(angle) * radius,\n      y: center.y + Math.sin(angle) * radius\n    };\n  };\n\n  _proto.getTextAlignInfo = function getTextAlignInfo(point, offset) {\n    var self = this;\n    var offsetVector = self.getOffsetVector(point, offset);\n    var align;\n    var baseLine = 'middle';\n\n    if (offsetVector[0] > 0) {\n      align = 'left';\n    } else if (offsetVector[0] < 0) {\n      align = 'right';\n    } else {\n      align = 'center';\n\n      if (offsetVector[1] > 0) {\n        baseLine = 'top';\n      } else if (offsetVector[1] < 0) {\n        baseLine = 'bottom';\n      }\n    }\n\n    return {\n      textAlign: align,\n      textBaseline: baseLine\n    };\n  };\n\n  _proto.getAxisVector = function getAxisVector(point) {\n    var center = this.center;\n    var factor = this.offsetFactor;\n    return [(point.y - center.y) * factor, (point.x - center.x) * -1 * factor];\n  };\n\n  _proto.drawLine = function drawLine(lineCfg) {\n    var center = this.center,\n        radius = this.radius,\n        startAngle = this.startAngle,\n        endAngle = this.endAngle;\n    var container = this.getContainer(lineCfg.top);\n    container.addShape('arc', {\n      className: 'axis-line',\n      attrs: (0, _common.mix)({\n        x: center.x,\n        y: center.y,\n        r: radius,\n        startAngle: startAngle,\n        endAngle: endAngle\n      }, lineCfg)\n    });\n  };\n\n  return Circle;\n}(_abstract[\"default\"]);\n\n_abstract[\"default\"].Circle = Circle;\nvar _default = Circle;\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _common = require(\"../../util/common\");\n\nvar _base = _interopRequireDefault(require(\"./base\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar Arc = /*#__PURE__*/function (_GuideBase) {\n  _inheritsLoose(Arc, _GuideBase);\n\n  function Arc() {\n    return _GuideBase.apply(this, arguments) || this;\n  }\n\n  var _proto = Arc.prototype;\n\n  _proto._initDefaultCfg = function _initDefaultCfg() {\n    this.type = 'arc';\n    /**\n     * start point\n     * @type {Array | Function}\n     */\n\n    this.start = [];\n    /**\n     * end point\n     * @type {Array | Function}\n     */\n\n    this.end = [];\n    /**\n     * style configuration\n     * @type {Object}\n     */\n\n    this.style = {\n      stroke: '#999',\n      lineWidth: 1\n    };\n  };\n\n  _proto.render = function render(coord, container) {\n    var self = this;\n    var start = self.parsePoint(coord, self.start);\n    var end = self.parsePoint(coord, self.end);\n\n    if (!start || !end) {\n      return;\n    }\n\n    var coordCenter = coord.center;\n    var radius = Math.sqrt((start.x - coordCenter.x) * (start.x - coordCenter.x) + (start.y - coordCenter.y) * (start.y - coordCenter.y));\n    var startAngle = Math.atan2(start.y - coordCenter.y, start.x - coordCenter.x);\n    var endAngle = Math.atan2(end.y - coordCenter.y, end.x - coordCenter.x);\n    var shape = container.addShape('arc', {\n      className: 'guide-arc',\n      attrs: (0, _common.mix)({\n        x: coordCenter.x,\n        y: coordCenter.y,\n        r: radius,\n        startAngle: startAngle,\n        endAngle: endAngle\n      }, self.style)\n    });\n    self.element = shape;\n    return shape;\n  };\n\n  return Arc;\n}(_base[\"default\"]);\n\n_base[\"default\"].Arc = Arc;\nvar _default = Arc;\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _common = require(\"../../util/common\");\n\nvar KEYWORDS_PERCENT = {\n  min: 0,\n  median: 0.5,\n  max: 1\n};\n\nvar GuideBase = /*#__PURE__*/function () {\n  var _proto = GuideBase.prototype;\n\n  _proto._initDefaultCfg = function _initDefaultCfg() {};\n\n  function GuideBase(cfg) {\n    this._initDefaultCfg();\n\n    (0, _common.deepMix)(this, cfg);\n  }\n\n  _proto._getNormalizedValue = function _getNormalizedValue(val, scale) {\n    var rst;\n\n    if ((0, _common.isNil)(KEYWORDS_PERCENT[val])) {\n      rst = scale.scale(val);\n    } else {\n      rst = KEYWORDS_PERCENT[val];\n    }\n\n    return rst;\n  };\n\n  _proto.parsePercentPoint = function parsePercentPoint(coord, position) {\n    var xPercent = parseFloat(position[0]) / 100;\n    var yPercent = parseFloat(position[1]) / 100;\n    var start = coord.start;\n    var end = coord.end;\n    var width = Math.abs(start.x - end.x);\n    var height = Math.abs(start.y - end.y);\n    var x = width * xPercent + Math.min(start.x, end.x);\n    var y = height * yPercent + Math.min(start.y, end.y);\n    return {\n      x: x,\n      y: y\n    };\n  };\n\n  _proto.parsePoint = function parsePoint(coord, position) {\n    var self = this;\n    var xScale = self.xScale;\n    var yScales = self.yScales;\n\n    if ((0, _common.isFunction)(position)) {\n      position = position(xScale, yScales); // position 必须是对象\n    } // 如果数据格式是 ['50%', '50%'] 的格式\n    // fix: 原始数据中可能会包含 'xxx5%xxx' 这样的数据,需要判断下 https://github.com/antvis/f2/issues/590\n\n\n    if ((0, _common.isString)(position[0]) && position[0].indexOf('%') !== -1 && !isNaN(position[0].slice(0, -1))) {\n      return this.parsePercentPoint(coord, position);\n    }\n\n    var x = self._getNormalizedValue(position[0], xScale);\n\n    var y = self._getNormalizedValue(position[1], yScales[0]);\n\n    var point = coord.convertPoint({\n      x: x,\n      y: y\n    });\n\n    if (self.limitInPlot) {\n      // limit in chart plotRange\n      if (x >= 0 && x <= 1 && y >= 0 && y <= 1) {\n        return point;\n      }\n\n      return null;\n    }\n\n    return point;\n  }\n  /**\n   * render the guide component\n   * @param  {Coord} coord  coordinate instance\n   * @param  {Canvas.Group} group the container\n   */\n  ;\n\n  _proto.render = function render()\n  /* coord,group */\n  {};\n\n  _proto.repaint = function repaint() {\n    this.remove();\n    var coord = this.coord,\n        container = this.container,\n        canvas = this.canvas;\n\n    if (container && !container.isDestroyed()) {\n      this.render(coord, container);\n      canvas.draw();\n    }\n  };\n\n  _proto.remove = function remove() {\n    var element = this.element;\n    element && element.remove(true);\n  };\n\n  _proto.changeVisible = function changeVisible(visible) {\n    var self = this;\n    self.visible = visible;\n    var element = self.element;\n    if (!element) return;\n\n    if (element.set) {\n      element.set('visible', visible);\n    } else {\n      element.style.display = visible ? '' : 'none';\n    }\n  };\n\n  return GuideBase;\n}();\n\nvar _default = GuideBase;\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _common = require(\"../../util/common\");\n\nvar _base = _interopRequireDefault(require(\"./base\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction getOffsetFromAlign(alignX, alignY, width, height) {\n  var result = [];\n\n  if (alignX === 'left' && alignY === 'top') {\n    result[0] = 0;\n    result[1] = 0;\n  } else if (alignX === 'right' && alignY === 'top') {\n    result[0] = -width;\n    result[1] = 0;\n  } else if (alignX === 'left' && alignY === 'bottom') {\n    result[0] = 0;\n    result[1] = Math.floor(-height);\n  } else if (alignX === 'right' && alignY === 'bottom') {\n    result[0] = Math.floor(-width);\n    result[1] = Math.floor(-height);\n  } else if (alignX === 'right' && alignY === 'middle') {\n    result[0] = Math.floor(-width);\n    result[1] = Math.floor(-height / 2);\n  } else if (alignX === 'left' && alignY === 'middle') {\n    result[0] = 0;\n    result[1] = Math.floor(-height / 2);\n  } else if (alignX === 'center' && alignY === 'bottom') {\n    result[0] = Math.floor(-width / 2);\n    result[1] = Math.floor(-height);\n  } else if (alignX === 'center' && alignY === 'top') {\n    result[0] = Math.floor(-width / 2);\n    result[1] = 0;\n  } else {\n    result[0] = Math.floor(-width / 2);\n    result[1] = Math.floor(-height / 2);\n  }\n\n  return result;\n}\n\nfunction modifyCSS(DOM, CSS) {\n  for (var key in CSS) {\n    if (CSS.hasOwnProperty(key)) {\n      DOM.style[key] = CSS[key];\n    }\n  }\n\n  return DOM;\n}\n\nfunction createDom(str) {\n  var container = document.createElement('div');\n  str = str.replace(/(^\\s*)|(\\s*$)/g, '');\n  container.innerHTML = '' + str;\n  return container.childNodes[0];\n}\n\nvar Html = /*#__PURE__*/function (_GuideBase) {\n  _inheritsLoose(Html, _GuideBase);\n\n  function Html() {\n    return _GuideBase.apply(this, arguments) || this;\n  }\n\n  var _proto = Html.prototype;\n\n  _proto._initDefaultCfg = function _initDefaultCfg() {\n    this.type = 'html';\n    /**\n     * dom position\n     * @type {Object | Array}\n     */\n\n    this.position = null;\n    /**\n      * alignment for horizontal direction,can be 'left','center','right'\n      * @type {String}\n      */\n\n    this.alignX = 'center';\n    /**\n      * alignment for vertical direction,can be 'top', 'middle', 'bottom'\n      * @type {String}\n      */\n\n    this.alignY = 'middle';\n    /**\n      * offset for horizontal direction\n      * @type {Number}\n      */\n\n    this.offsetX = null;\n    /**\n      * offset for vertical direction\n      * @type {Number}\n      */\n\n    this.offsetY = null;\n    /**\n    * the html string\n    *@type {String | Function}\n    */\n\n    this.html = null;\n  } // override paint\n  ;\n\n  _proto.render = function render(coord, container) {\n    var self = this;\n    var position = self.parsePoint(coord, self.position);\n\n    if (!position) {\n      return;\n    }\n\n    var myNode = createDom(self.html);\n    myNode = modifyCSS(myNode, {\n      position: 'absolute',\n      top: Math.floor(position.y) + 'px',\n      left: Math.floor(position.x) + 'px',\n      visibility: 'hidden'\n    });\n    var canvasDom = container.get('canvas').get('el');\n    var parentNode = canvasDom.parentNode;\n    parentNode = modifyCSS(parentNode, {\n      position: 'relative'\n    });\n    var wrapperNode = createDom('<div class=\"guideWapper\" style=\"position: absolute;top: 0; left: 0;\"></div>');\n    parentNode.appendChild(wrapperNode);\n    wrapperNode.appendChild(myNode);\n    var canvasOffsetTop = canvasDom.offsetTop;\n    var canvasOffsetLeft = canvasDom.offsetLeft;\n    var alignX = self.alignX,\n        alignY = self.alignY,\n        offsetX = self.offsetX,\n        offsetY = self.offsetY;\n    var width = (0, _common.getWidth)(myNode);\n    var height = (0, _common.getHeight)(myNode);\n    var newOffset = getOffsetFromAlign(alignX, alignY, width, height);\n    position.x = position.x + newOffset[0] + canvasOffsetLeft;\n    position.y = position.y + newOffset[1] + canvasOffsetTop;\n\n    if (offsetX) {\n      position.x += offsetX;\n    }\n\n    if (offsetY) {\n      position.y += offsetY;\n    }\n\n    modifyCSS(myNode, {\n      top: Math.floor(position.y) + 'px',\n      left: Math.floor(position.x) + 'px',\n      visibility: 'visible'\n    });\n    self.element = wrapperNode;\n  };\n\n  _proto.remove = function remove() {\n    var element = this.element;\n    element && element.parentNode && element.parentNode.removeChild(element);\n  };\n\n  return Html;\n}(_base[\"default\"]);\n\n_base[\"default\"].Html = Html;\nvar _default = Html;\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _common = require(\"../../util/common\");\n\nvar _base = _interopRequireDefault(require(\"./base\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar Line = /*#__PURE__*/function (_GuideBase) {\n  _inheritsLoose(Line, _GuideBase);\n\n  function Line() {\n    return _GuideBase.apply(this, arguments) || this;\n  }\n\n  var _proto = Line.prototype;\n\n  _proto._initDefaultCfg = function _initDefaultCfg() {\n    this.type = 'line';\n    this.start = [];\n    this.end = [];\n    this.style = {\n      stroke: '#000',\n      lineWidth: 1\n    };\n  };\n\n  _proto.render = function render(coord, container) {\n    var points = [];\n    points[0] = this.parsePoint(coord, this.start);\n    points[1] = this.parsePoint(coord, this.end);\n\n    if (!points[0] || !points[1]) {\n      return;\n    }\n\n    var shape = container.addShape('Line', {\n      className: 'guide-line',\n      attrs: (0, _common.mix)({\n        x1: points[0].x,\n        y1: points[0].y,\n        x2: points[1].x,\n        y2: points[1].y\n      }, this.style)\n    });\n    this.element = shape;\n    return shape;\n  };\n\n  return Line;\n}(_base[\"default\"]);\n\n_base[\"default\"].Line = Line;\nvar _default = Line;\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _common = require(\"../../util/common\");\n\nvar _base = _interopRequireDefault(require(\"./base\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar Rect = /*#__PURE__*/function (_GuideBase) {\n  _inheritsLoose(Rect, _GuideBase);\n\n  function Rect() {\n    return _GuideBase.apply(this, arguments) || this;\n  }\n\n  var _proto = Rect.prototype;\n\n  _proto._initDefaultCfg = function _initDefaultCfg() {\n    this.type = 'rect';\n    this.start = [];\n    this.end = [];\n    this.style = {\n      fill: '#CCD7EB',\n      opacity: 0.4\n    };\n  };\n\n  _proto.render = function render(coord, container) {\n    var start = this.parsePoint(coord, this.start);\n    var end = this.parsePoint(coord, this.end);\n\n    if (!start || !end) {\n      return;\n    }\n\n    var shape = container.addShape('rect', {\n      className: 'guide-rect',\n      attrs: (0, _common.mix)({\n        x: Math.min(start.x, end.x),\n        y: Math.min(start.y, end.y),\n        width: Math.abs(end.x - start.x),\n        height: Math.abs(start.y - end.y)\n      }, this.style)\n    });\n    this.element = shape;\n    return shape;\n  };\n\n  return Rect;\n}(_base[\"default\"]);\n\n_base[\"default\"].Rect = Rect;\nvar _default = Rect;\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _common = require(\"../../util/common\");\n\nvar _base = _interopRequireDefault(require(\"./base\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar Text = /*#__PURE__*/function (_GuideBase) {\n  _inheritsLoose(Text, _GuideBase);\n\n  function Text() {\n    return _GuideBase.apply(this, arguments) || this;\n  }\n\n  var _proto = Text.prototype;\n\n  _proto._initDefaultCfg = function _initDefaultCfg() {\n    this.type = 'text';\n    /**\n     * the position of text\n     * @type {Function | Array}\n     */\n\n    this.position = null;\n    /**\n     * the display content\n     * @type {String}\n     */\n\n    this.content = null;\n    /**\n     * style configuration for text\n     * @type {Object}\n     */\n\n    this.style = {\n      fill: '#000'\n    };\n    /**\n     * offset of horizontal direction\n     * @type {Number}\n     */\n\n    this.offsetX = 0;\n    /**\n     * offset of vertical direction\n     * @type {Number}\n     */\n\n    this.offsetY = 0;\n  };\n\n  _proto.render = function render(coord, container) {\n    var position = this.position;\n    var point = this.parsePoint(coord, position);\n\n    if (!point) {\n      return;\n    }\n\n    var content = this.content,\n        style = this.style,\n        offsetX = this.offsetX,\n        offsetY = this.offsetY;\n\n    if (offsetX) {\n      point.x += offsetX;\n    }\n\n    if (offsetY) {\n      point.y += offsetY;\n    }\n\n    var shape = container.addShape('text', {\n      className: 'guide-text',\n      attrs: (0, _common.mix)({\n        x: point.x,\n        y: point.y,\n        text: content\n      }, style)\n    });\n    this.element = shape;\n    return shape;\n  };\n\n  return Text;\n}(_base[\"default\"]);\n\n_base[\"default\"].Text = Text;\nvar _default = Text;\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _common = require(\"../../util/common\");\n\nvar _base = _interopRequireDefault(require(\"./base\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar Tag = /*#__PURE__*/function (_GuideBase) {\n  _inheritsLoose(Tag, _GuideBase);\n\n  function Tag() {\n    return _GuideBase.apply(this, arguments) || this;\n  }\n\n  var _proto = Tag.prototype;\n\n  _proto._initDefaultCfg = function _initDefaultCfg() {\n    this.type = 'tag';\n    this.position = null;\n    this.content = null;\n    this.direct = 'tl';\n    this.autoAdjust = true;\n    this.offsetX = 0;\n    this.offsetY = 0;\n    this.side = 4;\n    this.background = {\n      padding: 5,\n      radius: 2,\n      fill: '#1890FF'\n    };\n    this.textStyle = {\n      fontSize: 12,\n      fill: '#fff',\n      textAlign: 'center',\n      textBaseline: 'middle'\n    };\n    this.withPoint = true;\n    this.pointStyle = {\n      fill: '#1890FF',\n      r: 3,\n      lineWidth: 1,\n      stroke: '#fff'\n    };\n  };\n\n  _proto._getDirect = function _getDirect(container, point, tagWidth, tagHeight) {\n    var direct = this.direct;\n    var side = this.side;\n    var canvas = container.get('canvas');\n    var clientWidth = canvas.get('width');\n    var clientHeight = canvas.get('height');\n    var x = point.x,\n        y = point.y;\n    var vertical = direct[0];\n    var horizontal = direct[1]; // adjust for vertical direction\n\n    if (vertical === 't' && y - side - tagHeight < 0) {\n      vertical = 'b';\n    } else if (vertical === 'b' && y + side + tagHeight > clientHeight) {\n      vertical = 't';\n    } // adjust for horizontal direction\n\n\n    var diff = vertical === 'c' ? side : 0;\n\n    if (horizontal === 'l' && x - diff - tagWidth < 0) {\n      horizontal = 'r';\n    } else if (horizontal === 'r' && x + diff + tagWidth > clientWidth) {\n      horizontal = 'l';\n    } else if (horizontal === 'c') {\n      if (tagWidth / 2 + x + diff > clientWidth) {\n        horizontal = 'l';\n      } else if (x - tagWidth / 2 - diff < 0) {\n        horizontal = 'r';\n      }\n    }\n\n    direct = vertical + horizontal;\n    return direct;\n  };\n\n  _proto.render = function render(coord, container) {\n    var position = this.parsePoint(coord, this.position);\n\n    if (!position) {\n      return;\n    } // 数据不在显示范围内时,x/y 会为NaN\n\n\n    if (isNaN(position.x) || isNaN(position.y)) {\n      return;\n    }\n\n    var content = this.content,\n        background = this.background,\n        textStyle = this.textStyle;\n    var shapes = [];\n    var wrapperContainer = container.addGroup({\n      className: 'guide-tag'\n    });\n\n    if (this.withPoint) {\n      var pointShape = wrapperContainer.addShape('Circle', {\n        className: 'guide-tag-point',\n        attrs: (0, _common.mix)({\n          x: position.x,\n          y: position.y\n        }, this.pointStyle)\n      });\n      shapes.push(pointShape);\n    }\n\n    var tagContainer = wrapperContainer.addGroup(); // create a text shape\n\n    var tagText = tagContainer.addShape('text', {\n      className: 'guide-tag-text',\n      zIndex: 1,\n      attrs: (0, _common.mix)({\n        x: 0,\n        y: 0,\n        text: content\n      }, textStyle)\n    });\n    shapes.push(tagText); // create background box\n\n    var textBBox = tagText.getBBox();\n    var padding = (0, _common.parsePadding)(background.padding);\n    var tagWidth = textBBox.width + padding[1] + padding[3];\n    var tagHeight = textBBox.height + padding[0] + padding[2];\n    var yMin = textBBox.minY - padding[0];\n    var xMin = textBBox.minX - padding[3];\n    var tagBg = tagContainer.addShape('rect', {\n      className: 'guide-tag-bg',\n      zIndex: -1,\n      attrs: (0, _common.mix)({\n        x: xMin,\n        y: yMin,\n        width: tagWidth,\n        height: tagHeight\n      }, background)\n    });\n    shapes.push(tagBg);\n    var direct = this.autoAdjust ? this._getDirect(container, position, tagWidth, tagHeight) : this.direct;\n    var side = this.side;\n    var x = position.x + this.offsetX;\n    var y = position.y + this.offsetY;\n    var arrowPoints;\n    var radius = (0, _common.parsePadding)(background.radius);\n\n    if (direct === 'tl') {\n      arrowPoints = [{\n        x: tagWidth + xMin - side - 1,\n        y: tagHeight + yMin - 1\n      }, // 这个 1 是为了防止出现白边\n      {\n        x: tagWidth + xMin,\n        y: tagHeight + yMin - 1\n      }, {\n        x: tagWidth + xMin,\n        y: tagHeight + side + yMin\n      }];\n      radius[2] = 0;\n      x = x - tagWidth;\n      y = y - side - tagHeight;\n    } else if (direct === 'cl') {\n      arrowPoints = [{\n        x: tagWidth + xMin - 1,\n        y: (tagHeight - side) / 2 + yMin - 1\n      }, {\n        x: tagWidth + xMin - 1,\n        y: (tagHeight + side) / 2 + yMin + 1\n      }, {\n        x: tagWidth + side + xMin,\n        y: tagHeight / 2 + yMin\n      }];\n      x = x - tagWidth - side;\n      y = y - tagHeight / 2;\n    } else if (direct === 'bl') {\n      arrowPoints = [{\n        x: tagWidth + xMin,\n        y: -side + yMin\n      }, {\n        x: tagWidth + xMin - side - 1,\n        y: yMin + 1\n      }, {\n        x: tagWidth + xMin,\n        y: yMin + 1\n      }];\n      radius[1] = 0;\n      x = x - tagWidth;\n      y = y + side;\n    } else if (direct === 'bc') {\n      arrowPoints = [{\n        x: tagWidth / 2 + xMin,\n        y: -side + yMin\n      }, {\n        x: (tagWidth - side) / 2 + xMin - 1,\n        y: yMin + 1\n      }, {\n        x: (tagWidth + side) / 2 + xMin + 1,\n        y: yMin + 1\n      }];\n      x = x - tagWidth / 2;\n      y = y + side;\n    } else if (direct === 'br') {\n      arrowPoints = [{\n        x: xMin,\n        y: yMin - side\n      }, {\n        x: xMin,\n        y: yMin + 1\n      }, {\n        x: xMin + side + 1,\n        y: yMin + 1\n      }];\n      radius[0] = 0;\n      y = y + side;\n    } else if (direct === 'cr') {\n      arrowPoints = [{\n        x: xMin - side,\n        y: tagHeight / 2 + yMin\n      }, {\n        x: xMin + 1,\n        y: (tagHeight - side) / 2 + yMin - 1\n      }, {\n        x: xMin + 1,\n        y: (tagHeight + side) / 2 + yMin + 1\n      }];\n      x = x + side;\n      y = y - tagHeight / 2;\n    } else if (direct === 'tr') {\n      arrowPoints = [{\n        x: xMin,\n        y: tagHeight + side + yMin\n      }, {\n        x: xMin,\n        y: tagHeight + yMin - 1\n      }, {\n        x: side + xMin + 1,\n        y: tagHeight + yMin - 1\n      }];\n      radius[3] = 0;\n      y = y - tagHeight - side;\n    } else if (direct === 'tc') {\n      arrowPoints = [{\n        x: (tagWidth - side) / 2 + xMin - 1,\n        y: tagHeight + yMin - 1\n      }, {\n        x: (tagWidth + side) / 2 + xMin + 1,\n        y: tagHeight + yMin - 1\n      }, {\n        x: tagWidth / 2 + xMin,\n        y: tagHeight + side + yMin\n      }];\n      x = x - tagWidth / 2;\n      y = y - tagHeight - side;\n    }\n\n    var sideShape = tagContainer.addShape('Polygon', {\n      className: 'guide-tag-side',\n      zIndex: 0,\n      attrs: {\n        points: arrowPoints,\n        fill: background.fill\n      }\n    });\n    shapes.push(sideShape);\n    tagBg.attr('radius', radius);\n    tagContainer.moveTo(x - xMin, y - yMin);\n    tagContainer.sort();\n    this.element = wrapperContainer;\n    return shapes;\n  };\n\n  return Tag;\n}(_base[\"default\"]);\n\n_base[\"default\"].Tag = Tag;\nvar _default = Tag;\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _common = require(\"../../util/common\");\n\nvar _base = _interopRequireDefault(require(\"./base\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar Point = /*#__PURE__*/function (_GuideBase) {\n  _inheritsLoose(Point, _GuideBase);\n\n  function Point() {\n    return _GuideBase.apply(this, arguments) || this;\n  }\n\n  var _proto = Point.prototype;\n\n  _proto._initDefaultCfg = function _initDefaultCfg() {\n    this.type = 'point';\n    this.position = null;\n    this.offsetX = 0;\n    this.offsetY = 0;\n    this.style = {\n      fill: '#1890FF',\n      r: 3,\n      lineWidth: 1,\n      stroke: '#fff'\n    };\n  };\n\n  _proto.render = function render(coord, container) {\n    var position = this.parsePoint(coord, this.position);\n    if (!position) return null;\n    var shape = container.addShape('Circle', {\n      className: 'guide-point',\n      attrs: (0, _common.mix)({\n        x: position.x + this.offsetX,\n        y: position.y + this.offsetY\n      }, this.style)\n    });\n    this.element = shape;\n    return shape;\n  };\n\n  return Point;\n}(_base[\"default\"]);\n\n_base[\"default\"].Point = Point;\nvar _default = Point;\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _common = require(\"../util/common\");\n\nvar _index = require(\"../graphic/index\");\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar SYMBOLS = {\n  circle: function circle(x, y, r, ctx) {\n    ctx.arc(x, y, r, 0, Math.PI * 2, false);\n  },\n  square: function square(x, y, r, ctx) {\n    ctx.moveTo(x - r, y - r);\n    ctx.lineTo(x + r, y - r);\n    ctx.lineTo(x + r, y + r);\n    ctx.lineTo(x - r, y + r);\n    ctx.closePath();\n  }\n};\n\nvar Marker = /*#__PURE__*/function (_Shape) {\n  _inheritsLoose(Marker, _Shape);\n\n  function Marker() {\n    return _Shape.apply(this, arguments) || this;\n  }\n\n  var _proto = Marker.prototype;\n\n  _proto._initProperties = function _initProperties() {\n    _Shape.prototype._initProperties.call(this);\n\n    this._attrs.canFill = true;\n    this._attrs.canStroke = true;\n    this._attrs.type = 'marker';\n  };\n\n  _proto.getDefaultAttrs = function getDefaultAttrs() {\n    return {\n      x: 0,\n      y: 0,\n      lineWidth: 0\n    };\n  };\n\n  _proto.createPath = function createPath(context) {\n    var attrs = this.get('attrs');\n    var x = attrs.x,\n        y = attrs.y,\n        radius = attrs.radius;\n    var symbol = attrs.symbol || 'circle';\n    var method;\n\n    if ((0, _common.isFunction)(symbol)) {\n      method = symbol;\n    } else {\n      method = SYMBOLS[symbol];\n    }\n\n    context.beginPath();\n    method(x, y, radius, context, this);\n  };\n\n  _proto.calculateBox = function calculateBox() {\n    var attrs = this.get('attrs');\n    var x = attrs.x,\n        y = attrs.y,\n        radius = attrs.radius;\n    return {\n      minX: x - radius,\n      minY: y - radius,\n      maxX: x + radius,\n      maxY: y + radius\n    };\n  };\n\n  return Marker;\n}(_index.Shape);\n\nvar _default = Marker;\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nexports.init = init;\nexports.afterGeomDraw = afterGeomDraw;\nexports.clearInner = clearInner;\nexports[\"default\"] = void 0;\n\nvar _common = require(\"../util/common\");\n\nvar _global = _interopRequireDefault(require(\"../global\"));\n\nvar _tooltip = _interopRequireDefault(require(\"../component/tooltip\"));\n\nvar _helper = require(\"../util/helper\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// Register the default configuration for Tooltip\n_global[\"default\"].tooltip = (0, _common.deepMix)({\n  triggerOn: 'press',\n  triggerOff: 'pressend',\n  alwaysShow: false,\n  showTitle: false,\n  showCrosshairs: false,\n  crosshairsStyle: {\n    stroke: 'rgba(0, 0, 0, 0.25)',\n    lineWidth: 1\n  },\n  showTooltipMarker: true,\n  background: {\n    radius: 1,\n    fill: 'rgba(0, 0, 0, 0.65)',\n    padding: [3, 5]\n  },\n  titleStyle: {\n    fontSize: 12,\n    fill: '#fff',\n    textAlign: 'start',\n    textBaseline: 'top'\n  },\n  nameStyle: {\n    fontSize: 12,\n    fill: 'rgba(255, 255, 255, 0.65)',\n    textAlign: 'start',\n    textBaseline: 'middle'\n  },\n  valueStyle: {\n    fontSize: 12,\n    fill: '#fff',\n    textAlign: 'start',\n    textBaseline: 'middle'\n  },\n  showItemMarker: true,\n  itemMarkerStyle: {\n    radius: 3,\n    symbol: 'circle',\n    lineWidth: 1,\n    stroke: '#fff'\n  },\n  layout: 'horizontal',\n  snap: false\n}, _global[\"default\"].tooltip || {});\n\nfunction _getTooltipValueScale(geom) {\n  var colorAttr = geom.getAttr('color');\n\n  if (colorAttr) {\n    var colorScale = colorAttr.getScale(colorAttr.type);\n\n    if (colorScale.isLinear) {\n      return colorScale;\n    }\n  }\n\n  var xScale = geom.getXScale();\n  var yScale = geom.getYScale();\n\n  if (yScale) {\n    return yScale;\n  }\n\n  return xScale;\n}\n\nfunction getTooltipName(geom, origin) {\n  var name;\n  var nameScale;\n\n  var groupScales = geom._getGroupScales();\n\n  if (groupScales.length) {\n    (0, _common.each)(groupScales, function (scale) {\n      nameScale = scale;\n      return false;\n    });\n  }\n\n  if (nameScale) {\n    var field = nameScale.field;\n    name = nameScale.getText(origin[field]);\n  } else {\n    var valueScale = _getTooltipValueScale(geom);\n\n    name = valueScale.alias || valueScale.field;\n  }\n\n  return name;\n}\n\nfunction getTooltipValue(geom, origin) {\n  var scale = _getTooltipValueScale(geom);\n\n  return scale.getText(origin[scale.field]);\n}\n\nfunction getTooltipTitle(geom, origin) {\n  var position = geom.getAttr('position');\n  var field = position.getFields()[0];\n  var scale = geom.get('scales')[field];\n  return scale.getText(origin[scale.field]);\n}\n\nfunction _indexOfArray(items, item) {\n  var rst = -1;\n  (0, _common.each)(items, function (sub, index) {\n    if (sub.title === item.title && sub.name === item.name && sub.value === item.value && sub.color === item.color) {\n      rst = index;\n      return false;\n    }\n  });\n  return rst;\n}\n\nfunction _uniqItems(items) {\n  var tmp = [];\n  (0, _common.each)(items, function (item) {\n    var index = _indexOfArray(tmp, item);\n\n    if (index === -1) {\n      tmp.push(item);\n    } else {\n      tmp[index] = item;\n    }\n  });\n  return tmp;\n}\n\nfunction isEqual(arr1, arr2) {\n  return JSON.stringify(arr1) === JSON.stringify(arr2);\n}\n\nvar TooltipController = /*#__PURE__*/function () {\n  function TooltipController(cfg) {\n    var _this = this;\n\n    _defineProperty(this, \"handleShowEvent\", function (ev) {\n      var chart = _this.chart;\n      if (!_this.enable) return;\n      var plot = chart.get('plotRange');\n      var point = (0, _common.createEvent)(ev, chart);\n\n      if (!(0, _helper.isPointInPlot)(point, plot) && !_this._tooltipCfg.alwaysShow) {\n        // not in chart plot\n        _this.hideTooltip();\n\n        return;\n      }\n\n      var lastTimeStamp = _this.timeStamp;\n      var timeStamp = +new Date();\n\n      if (timeStamp - lastTimeStamp > 16) {\n        _this.showTooltip(point);\n\n        _this.timeStamp = timeStamp;\n      }\n    });\n\n    _defineProperty(this, \"handleHideEvent\", function () {\n      if (!_this.enable) return;\n\n      _this.hideTooltip();\n    });\n\n    this.enable = true;\n    this.cfg = {};\n    this.tooltip = null;\n    this.chart = null;\n    this.timeStamp = 0;\n    (0, _common.mix)(this, cfg);\n    var _chart = this.chart;\n\n    var canvas = _chart.get('canvas');\n\n    this.canvas = canvas;\n    this.canvasDom = canvas.get('el');\n  }\n\n  var _proto = TooltipController.prototype;\n\n  _proto._setCrosshairsCfg = function _setCrosshairsCfg() {\n    var self = this;\n    var chart = self.chart;\n    var defaultCfg = (0, _common.mix)({}, _global[\"default\"].tooltip);\n    var geoms = chart.get('geoms');\n    var shapes = [];\n    (0, _common.each)(geoms, function (geom) {\n      var type = geom.get('type');\n\n      if (shapes.indexOf(type) === -1) {\n        shapes.push(type);\n      }\n    });\n    var coordType = chart.get('coord').type;\n\n    if (geoms.length && (coordType === 'cartesian' || coordType === 'rect')) {\n      if (shapes.length === 1 && ['line', 'area', 'path', 'point'].indexOf(shapes[0]) !== -1) {\n        (0, _common.mix)(defaultCfg, {\n          showCrosshairs: true\n        });\n      }\n    }\n\n    return defaultCfg;\n  };\n\n  _proto._getMaxLength = function _getMaxLength(cfg) {\n    if (cfg === void 0) {\n      cfg = {};\n    }\n\n    var _cfg = cfg,\n        layout = _cfg.layout,\n        plotRange = _cfg.plotRange;\n    return layout === 'horizontal' ? plotRange.br.x - plotRange.bl.x : plotRange.bl.y - plotRange.tr.y;\n  };\n\n  _proto.render = function render() {\n    var self = this;\n\n    if (self.tooltip) {\n      return;\n    }\n\n    var chart = self.chart;\n    var canvas = chart.get('canvas');\n    var frontPlot = chart.get('frontPlot').addGroup({\n      className: 'tooltipContainer',\n      zIndex: 10\n    });\n    var backPlot = chart.get('backPlot').addGroup({\n      className: 'tooltipContainer'\n    });\n    var plotRange = chart.get('plotRange');\n    var coord = chart.get('coord');\n\n    var defaultCfg = self._setCrosshairsCfg();\n\n    var cfg = self.cfg; // 通过 chart.tooltip() 接口传入的 tooltip 配置项\n\n    var tooltipCfg = (0, _common.deepMix)({\n      plotRange: plotRange,\n      frontPlot: frontPlot,\n      backPlot: backPlot,\n      canvas: canvas,\n      fixed: coord.transposed || coord.isPolar\n    }, defaultCfg, cfg); // 创建 tooltip 实例需要的配置,不应该修改 this.cfg,即用户传入的配置\n\n    tooltipCfg.maxLength = self._getMaxLength(tooltipCfg);\n    this._tooltipCfg = tooltipCfg;\n    var tooltip = new _tooltip[\"default\"](tooltipCfg);\n    self.tooltip = tooltip; // 需要保持tooltip一直显示\n\n    if (tooltipCfg.alwaysShow && self.prePoint) {\n      this.showTooltip(self.prePoint);\n    }\n\n    self.bindEvents();\n  };\n\n  _proto.clear = function clear() {\n    var tooltip = this.tooltip;\n\n    if (tooltip) {\n      tooltip.destroy();\n      this.unBindEvents();\n    }\n\n    this.tooltip = null;\n    this._lastActive = null;\n  };\n\n  _proto._getTooltipMarkerStyle = function _getTooltipMarkerStyle(cfg) {\n    if (cfg === void 0) {\n      cfg = {};\n    }\n\n    var _cfg2 = cfg,\n        type = _cfg2.type,\n        items = _cfg2.items;\n    var tooltipCfg = this._tooltipCfg;\n\n    if (type === 'rect') {\n      var x;\n      var y;\n      var width;\n      var height;\n      var chart = this.chart;\n\n      var _chart$get = chart.get('plotRange'),\n          tl = _chart$get.tl,\n          br = _chart$get.br;\n\n      var coord = chart.get('coord');\n      var firstItem = items[0];\n      var lastItem = items[items.length - 1];\n      var intervalWidth = firstItem.width;\n\n      if (coord.transposed) {\n        x = tl.x;\n        y = lastItem.y - intervalWidth * 0.75;\n        width = br.x - tl.x;\n        height = firstItem.y - lastItem.y + 1.5 * intervalWidth;\n      } else {\n        x = firstItem.x - intervalWidth * 0.75;\n        y = tl.y;\n        width = lastItem.x - firstItem.x + 1.5 * intervalWidth;\n        height = br.y - tl.y;\n      }\n\n      cfg.style = (0, _common.mix)({\n        x: x,\n        y: y,\n        width: width,\n        height: height,\n        fill: '#CCD6EC',\n        opacity: 0.3\n      }, tooltipCfg.tooltipMarkerStyle);\n    } else {\n      cfg.style = (0, _common.mix)({\n        radius: 4,\n        fill: '#fff',\n        lineWidth: 2\n      }, tooltipCfg.tooltipMarkerStyle);\n    }\n\n    return cfg;\n  };\n\n  _proto._setTooltip = function _setTooltip(point, items, tooltipMarkerCfg) {\n    if (tooltipMarkerCfg === void 0) {\n      tooltipMarkerCfg = {};\n    }\n\n    this.prePoint = point;\n    var lastActive = this._lastActive;\n    var tooltip = this.tooltip;\n    var cfg = this._tooltipCfg;\n    items = _uniqItems(items);\n    var chart = this.chart;\n    var coord = chart.get('coord');\n    var yScale = chart.getYScales()[0];\n    var snap = cfg.snap;\n\n    if (snap === false && yScale.isLinear) {\n      var invertPoint = coord.invertPoint(point);\n      var plot = chart.get('plotRange');\n      var tip;\n      var pos;\n\n      if ((0, _helper.isPointInPlot)(point, plot)) {\n        if (coord.transposed) {\n          tip = yScale.invert(invertPoint.x);\n          pos = point.x;\n          tooltip.setXTipContent(tip);\n          tooltip.setXTipPosition(pos);\n          tooltip.setYCrosshairPosition(pos);\n        } else {\n          tip = yScale.invert(invertPoint.y);\n          pos = point.y;\n          tooltip.setYTipContent(tip);\n          tooltip.setYTipPosition(pos);\n          tooltip.setXCrosshairPosition(pos);\n        }\n      }\n    }\n\n    if (cfg.onShow) {\n      cfg.onShow({\n        x: point.x,\n        y: point.y,\n        tooltip: tooltip,\n        items: items,\n        tooltipMarkerCfg: tooltipMarkerCfg\n      });\n    }\n\n    if (isEqual(lastActive, items)) {\n      if (snap === false && ((0, _common.directionEnabled)(cfg.crosshairsType, 'y') || cfg.showYTip)) {\n        var canvas = this.chart.get('canvas');\n        canvas.draw();\n      }\n\n      return;\n    }\n\n    this._lastActive = items;\n    var onChange = cfg.onChange;\n\n    if (onChange) {\n      onChange({\n        x: point.x,\n        y: point.y,\n        tooltip: tooltip,\n        items: items,\n        tooltipMarkerCfg: tooltipMarkerCfg\n      });\n    }\n\n    var first = items[0];\n    var title = first.title || first.name;\n    var xTipPosX = first.x;\n\n    if (items.length > 1) {\n      xTipPosX = (items[0].x + items[items.length - 1].x) / 2;\n    }\n\n    tooltip.setContent(title, items, coord.transposed);\n    tooltip.setPosition(items, point);\n\n    if (coord.transposed) {\n      var yTipPosY = first.y;\n\n      if (items.length > 1) {\n        yTipPosY = (items[0].y + items[items.length - 1].y) / 2;\n      }\n\n      tooltip.setYTipContent(title);\n      tooltip.setYTipPosition(yTipPosY);\n      tooltip.setXCrosshairPosition(yTipPosY);\n\n      if (snap) {\n        tooltip.setXTipContent(first.value);\n        tooltip.setXTipPosition(xTipPosX);\n        tooltip.setYCrosshairPosition(xTipPosX);\n      }\n    } else {\n      tooltip.setXTipContent(title);\n      tooltip.setXTipPosition(xTipPosX);\n      tooltip.setYCrosshairPosition(xTipPosX);\n\n      if (snap) {\n        tooltip.setYTipContent(first.value);\n        tooltip.setYTipPosition(first.y);\n        tooltip.setXCrosshairPosition(first.y);\n      }\n    }\n\n    var markerItems = tooltipMarkerCfg.items;\n\n    if (cfg.showTooltipMarker && markerItems.length) {\n      tooltipMarkerCfg = this._getTooltipMarkerStyle(tooltipMarkerCfg);\n      tooltip.setMarkers(tooltipMarkerCfg);\n    } else {\n      tooltip.clearMarkers();\n    }\n\n    tooltip.show();\n  };\n\n  _proto.showTooltip = function showTooltip(point) {\n    var self = this;\n    var chart = self.chart;\n    var tooltipMarkerType;\n    var tooltipMarkerItems = [];\n    var items = [];\n    var cfg = self._tooltipCfg;\n    var showItemMarker = cfg.showItemMarker,\n        itemMarkerStyle = cfg.itemMarkerStyle,\n        alwaysShow = cfg.alwaysShow;\n    var marker;\n\n    if (showItemMarker) {\n      marker = itemMarkerStyle;\n    }\n\n    var geoms = chart.get('geoms');\n    var coord = chart.get('coord');\n    (0, _common.each)(geoms, function (geom) {\n      if (geom.get('visible')) {\n        var type = geom.get('type');\n        var records = geom.getSnapRecords(point);\n        var adjust = geom.get('adjust'); // 漏斗图和金子塔图tooltip位置有问题,暂时不开放显示\n\n        if (type === 'interval' && adjust && adjust.type === 'symmetric') {\n          return;\n        }\n\n        (0, _common.each)(records, function (record) {\n          if (record.x && record.y) {\n            var x = record.x,\n                y = record.y,\n                _origin = record._origin,\n                color = record.color;\n            var tooltipItem = {\n              x: x,\n              y: (0, _common.isArray)(y) ? y[1] : y,\n              color: color || _global[\"default\"].defaultColor,\n              origin: _origin,\n              name: getTooltipName(geom, _origin),\n              value: getTooltipValue(geom, _origin),\n              title: getTooltipTitle(geom, _origin)\n            };\n\n            if (marker) {\n              tooltipItem.marker = (0, _common.mix)({\n                fill: color || _global[\"default\"].defaultColor\n              }, marker);\n            }\n\n            items.push(tooltipItem);\n\n            if (['line', 'area', 'path'].indexOf(type) !== -1) {\n              tooltipMarkerType = 'circle';\n              tooltipMarkerItems.push(tooltipItem);\n            } else if (type === 'interval' && (coord.type === 'cartesian' || coord.type === 'rect')) {\n              tooltipMarkerType = 'rect';\n              tooltipItem.width = geom.getSize(record._origin);\n              tooltipMarkerItems.push(tooltipItem);\n            }\n          }\n        });\n      }\n    });\n\n    if (items.length) {\n      var tooltipMarkerCfg = {\n        items: tooltipMarkerItems,\n        type: tooltipMarkerType\n      };\n\n      self._setTooltip(point, items, tooltipMarkerCfg);\n\n      return;\n    }\n\n    if (!alwaysShow) {\n      self.hideTooltip();\n    }\n  };\n\n  _proto.hideTooltip = function hideTooltip() {\n    var cfg = this._tooltipCfg;\n    this._lastActive = null;\n    var tooltip = this.tooltip;\n\n    if (tooltip) {\n      tooltip.hide();\n\n      if (cfg.onHide) {\n        cfg.onHide({\n          tooltip: tooltip\n        });\n      }\n\n      var canvas = this.chart.get('canvas');\n      canvas.draw();\n    }\n  };\n\n  _proto._handleEvent = function _handleEvent(methodName, method, action) {\n    var canvas = this.canvas;\n    (0, _common.each)([].concat(methodName), function (aMethod) {\n      if (action === 'bind') {\n        canvas.on(aMethod, method);\n      } else {\n        canvas.off(aMethod, method);\n      }\n    });\n  };\n\n  _proto.bindEvents = function bindEvents() {\n    var cfg = this._tooltipCfg;\n    var triggerOn = cfg.triggerOn,\n        triggerOff = cfg.triggerOff,\n        alwaysShow = cfg.alwaysShow;\n    triggerOn && this._handleEvent(triggerOn, this.handleShowEvent, 'bind'); // 如果 !alwaysShow, 则在手势离开后就隐藏\n\n    if (!alwaysShow) {\n      this._handleEvent(triggerOff, this.handleHideEvent, 'bind');\n    }\n  };\n\n  _proto.unBindEvents = function unBindEvents() {\n    var cfg = this._tooltipCfg;\n    var triggerOn = cfg.triggerOn,\n        triggerOff = cfg.triggerOff,\n        alwaysShow = cfg.alwaysShow;\n    triggerOn && this._handleEvent(triggerOn, this.handleShowEvent, 'unBind');\n\n    if (!alwaysShow) {\n      this._handleEvent(triggerOff, this.handleHideEvent, 'unBind');\n    }\n  };\n\n  return TooltipController;\n}();\n\nfunction init(chart) {\n  var tooltipController = new TooltipController({\n    chart: chart\n  });\n  chart.set('tooltipController', tooltipController);\n\n  chart.tooltip = function (enable, cfg) {\n    if ((0, _common.isObject)(enable)) {\n      cfg = enable;\n      enable = true;\n    }\n\n    tooltipController.enable = enable;\n\n    if (cfg) {\n      tooltipController.cfg = cfg;\n    }\n\n    return this;\n  };\n}\n\nfunction afterGeomDraw(chart) {\n  var tooltipController = chart.get('tooltipController');\n  tooltipController.render();\n\n  chart.showTooltip = function (point) {\n    tooltipController.showTooltip(point);\n    return this;\n  };\n\n  chart.hideTooltip = function () {\n    tooltipController.hideTooltip();\n    return this;\n  };\n}\n\nfunction clearInner(chart) {\n  var tooltipController = chart.get('tooltipController');\n  tooltipController.clear();\n}\n\nvar _default = {\n  init: init,\n  afterGeomDraw: afterGeomDraw,\n  clearInner: clearInner\n};\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _common = require(\"../util/common\");\n\nvar _marker = _interopRequireDefault(require(\"./marker\"));\n\nvar _list = _interopRequireDefault(require(\"./list\"));\n\nvar _textBox = _interopRequireDefault(require(\"./text-box\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar GAP = 4;\n/**\n * TODOList:\n * 1. 移除 fixed 参数\n */\n\nvar Tooltip = /*#__PURE__*/function () {\n  var _proto = Tooltip.prototype;\n\n  _proto.getDefaultCfg = function getDefaultCfg() {\n    return {\n      /**\n       * wether show the crosshairs\n       * @type {Object}\n       */\n      showCrosshairs: false,\n\n      /**\n       * the style for crosshairs\n       * @type {Object}\n       */\n      crosshairsStyle: {\n        stroke: 'rgba(0, 0, 0, 0.25)',\n        lineWidth: 1\n      },\n\n      /**\n       * the type of crosshairs, optional value is 'x', 'y' or 'xy', default is 'y'\n       */\n      crosshairsType: 'y',\n\n      /**\n       * show or hide the x axis tip\n       */\n      showXTip: false,\n\n      /**\n       * show or hide the y axis tip\n       */\n      showYTip: false,\n      xTip: null,\n      xTipBackground: {\n        radius: 1,\n        fill: 'rgba(0, 0, 0, 0.65)',\n        padding: [3, 5]\n      },\n      xTipTextStyle: {\n        fontSize: 12,\n        fill: '#fff',\n        textAlign: 'center',\n        textBaseline: 'middle'\n      },\n      yTip: null,\n      yTipBackground: {\n        radius: 1,\n        fill: 'rgba(0, 0, 0, 0.65)',\n        padding: [3, 5]\n      },\n      yTipTextStyle: {\n        fontSize: 12,\n        fill: '#fff',\n        textAlign: 'center',\n        textBaseline: 'middle'\n      },\n\n      /**\n       * the style for tooltip container's background\n       * @type {Object}\n       */\n      background: null,\n\n      /**\n       * layout, can be horizontal or vertical\n       * @type {String}\n       */\n      layout: 'horizontal',\n      offsetX: 0,\n      offsetY: 0\n    };\n  };\n\n  function Tooltip(cfg) {\n    (0, _common.deepMix)(this, this.getDefaultCfg(), cfg);\n    var frontPlot = this.frontPlot,\n        custom = this.custom;\n\n    if (!custom) {\n      // custom means user do customize\n      var container = new _list[\"default\"]((0, _common.mix)({\n        parent: frontPlot,\n        zIndex: 3\n      }, cfg));\n      this.container = container;\n      var fixed = this.fixed,\n          background = this.background;\n\n      if (!fixed) {\n        this.tooltipArrow = frontPlot.addShape('Polygon', {\n          className: 'tooltip-arrow',\n          visible: false,\n          zIndex: 2,\n          attrs: (0, _common.mix)({\n            points: []\n          }, background)\n        });\n      }\n    }\n\n    if (this.showXTip) {\n      var xTipBackground = this.xTipBackground,\n          xTipTextStyle = this.xTipTextStyle;\n      var xTipBox = new _textBox[\"default\"]({\n        context: frontPlot.get('context'),\n        className: 'xTip',\n        background: xTipBackground,\n        textStyle: xTipTextStyle,\n        visible: false\n      });\n      frontPlot.add(xTipBox.container);\n      this.xTipBox = xTipBox;\n    }\n\n    if (this.showYTip) {\n      var yTipBackground = this.yTipBackground,\n          yTipTextStyle = this.yTipTextStyle;\n      var yTipBox = new _textBox[\"default\"]({\n        context: frontPlot.get('context'),\n        className: 'yTip',\n        background: yTipBackground,\n        textStyle: yTipTextStyle,\n        visible: false\n      });\n      frontPlot.add(yTipBox.container);\n      this.yTipBox = yTipBox;\n    }\n\n    if (this.showCrosshairs) {\n      this._renderCrosshairs();\n    }\n\n    frontPlot.sort();\n  }\n\n  _proto.setContent = function setContent(title, items) {\n    this.title = title;\n    this.items = items;\n\n    if (!this.custom) {\n      var container = this.container;\n      container.setTitle(title);\n      container.setItems(items);\n    }\n  };\n\n  _proto.setYTipContent = function setYTipContent(val) {\n    var yTip = this.yTip;\n\n    if ((0, _common.isFunction)(yTip)) {\n      val = yTip(val);\n    } else {\n      val = (0, _common.mix)({\n        text: val\n      }, yTip);\n    }\n\n    this.yTipBox && this.yTipBox.updateContent(val);\n  };\n\n  _proto.setYTipPosition = function setYTipPosition(pos) {\n    var plotRange = this.plotRange;\n    var crosshairsShapeX = this.crosshairsShapeX;\n\n    if (this.showYTip) {\n      var yTipBox = this.yTipBox;\n      var yTipHeight = yTipBox.getHeight();\n      var yTipWidth = yTipBox.getWidth();\n      var posX = plotRange.tl.x - yTipWidth;\n      var posY = pos - yTipHeight / 2;\n\n      if (posY <= plotRange.tl.y) {\n        posY = plotRange.tl.y;\n      }\n\n      if (posY + yTipHeight >= plotRange.br.y) {\n        posY = plotRange.br.y - yTipHeight;\n      }\n\n      if (posX < 0) {\n        posX = plotRange.tl.x;\n        crosshairsShapeX && crosshairsShapeX.attr('x1', plotRange.tl.x + yTipWidth);\n      }\n\n      yTipBox.updatePosition(posX, posY);\n    }\n  };\n\n  _proto.setXTipContent = function setXTipContent(val) {\n    var xTip = this.xTip;\n\n    if ((0, _common.isFunction)(xTip)) {\n      val = xTip(val);\n    } else {\n      val = (0, _common.mix)({\n        text: val\n      }, xTip);\n    }\n\n    this.xTipBox && this.xTipBox.updateContent(val);\n  };\n\n  _proto.setXTipPosition = function setXTipPosition(pos) {\n    var showXTip = this.showXTip,\n        canvas = this.canvas,\n        plotRange = this.plotRange,\n        xTipBox = this.xTipBox,\n        crosshairsShapeY = this.crosshairsShapeY;\n\n    if (showXTip) {\n      // const el = canvas.get('el');\n      // const canvasHeight = Util.getHeight(el);\n      var canvasHeight = canvas.get('height');\n      var xTipWidth = xTipBox.getWidth();\n      var xTipHeight = xTipBox.getHeight();\n      var posX = pos - xTipWidth / 2;\n      var posY = plotRange.br.y;\n\n      if (posX <= plotRange.tl.x) {\n        posX = plotRange.tl.x;\n      }\n\n      if (posX + xTipWidth >= plotRange.tr.x) {\n        posX = plotRange.tr.x - xTipWidth;\n      }\n\n      if (canvasHeight - posY < xTipHeight) {\n        posY -= xTipHeight;\n      }\n\n      xTipBox.updatePosition(posX, posY);\n      crosshairsShapeY && crosshairsShapeY.attr('y1', posY);\n    }\n  };\n\n  _proto.setXCrosshairPosition = function setXCrosshairPosition(pos) {\n    this.crosshairsShapeX && this.crosshairsShapeX.moveTo(0, pos);\n  };\n\n  _proto.setYCrosshairPosition = function setYCrosshairPosition(pos) {\n    this.crosshairsShapeY && this.crosshairsShapeY.moveTo(pos, 0);\n  };\n\n  _proto.setPosition = function setPosition(items) {\n    var container = this.container,\n        plotRange = this.plotRange,\n        offsetX = this.offsetX,\n        offsetY = this.offsetY,\n        fixed = this.fixed,\n        tooltipArrow = this.tooltipArrow;\n\n    if (!container) {\n      return;\n    }\n\n    var containerBBox = container.container.getBBox();\n    var minX = containerBBox.minX,\n        minY = containerBBox.minY,\n        width = containerBBox.width,\n        height = containerBBox.height;\n    var tl = plotRange.tl,\n        tr = plotRange.tr;\n    var posX = 0;\n    var posY = tl.y - height - GAP + offsetY;\n\n    if (fixed) {\n      var x = (tl.x + tr.x) / 2;\n      posX = x - width / 2 + offsetX;\n    } else {\n      var _x;\n\n      if (items.length > 1) {\n        _x = (items[0].x + items[items.length - 1].x) / 2;\n      } else {\n        _x = items[0].x;\n      }\n\n      posX = _x - width / 2 + offsetX;\n\n      if (posX < tl.x) {\n        posX = tl.x;\n      }\n\n      if (posX + width > tr.x) {\n        posX = tr.x - width;\n      }\n\n      if (tooltipArrow) {\n        tooltipArrow.attr('points', [{\n          x: _x - 3,\n          y: tl.y - GAP + offsetY\n        }, {\n          x: _x + 3,\n          y: tl.y - GAP + offsetY\n        }, {\n          x: _x,\n          y: tl.y + offsetY\n        }]);\n        var backShape = container.backShape;\n        var radius = (0, _common.parsePadding)(backShape.attr('radius'));\n\n        if (_x === tl.x) {\n          radius[3] = 0;\n          tooltipArrow.attr('points', [{\n            x: tl.x,\n            y: tl.y + offsetY\n          }, {\n            x: tl.x,\n            y: tl.y - GAP + offsetY\n          }, {\n            x: tl.x + GAP,\n            y: tl.y - GAP + offsetY\n          }]);\n        } else if (_x === tr.x) {\n          radius[2] = 0;\n          tooltipArrow.attr('points', [{\n            x: tr.x,\n            y: tl.y + offsetY\n          }, {\n            x: tr.x - GAP,\n            y: tl.y - GAP + offsetY\n          }, {\n            x: tr.x,\n            y: tl.y - GAP + offsetY\n          }]);\n        }\n\n        backShape.attr('radius', radius);\n      }\n    }\n\n    container.moveTo(posX - minX, posY - minY);\n  };\n\n  _proto.setMarkers = function setMarkers(cfg) {\n    if (cfg === void 0) {\n      cfg = {};\n    }\n\n    var self = this;\n    var _cfg = cfg,\n        items = _cfg.items,\n        style = _cfg.style,\n        type = _cfg.type;\n\n    var markerGroup = self._getMarkerGroup(type);\n\n    if (type === 'circle') {\n      for (var i = 0, length = items.length; i < length; i++) {\n        var item = items[i];\n        var marker = new _marker[\"default\"]({\n          className: 'tooltip-circle-marker',\n          attrs: (0, _common.mix)({\n            x: item.x,\n            y: item.y,\n            stroke: item.color\n          }, style)\n        });\n        markerGroup.add(marker);\n      }\n    } else {\n      markerGroup.addShape('rect', {\n        className: 'tooltip-rect-marker',\n        attrs: style\n      });\n    }\n  };\n\n  _proto.clearMarkers = function clearMarkers() {\n    var markerGroup = this.markerGroup;\n    markerGroup && markerGroup.clear();\n  };\n\n  _proto.show = function show() {\n    var crosshairsShapeX = this.crosshairsShapeX;\n    var crosshairsShapeY = this.crosshairsShapeY;\n    var markerGroup = this.markerGroup;\n    var container = this.container;\n    var tooltipArrow = this.tooltipArrow;\n    var xTipBox = this.xTipBox;\n    var yTipBox = this.yTipBox;\n    var canvas = this.canvas;\n    crosshairsShapeX && crosshairsShapeX.show();\n    crosshairsShapeY && crosshairsShapeY.show();\n    markerGroup && markerGroup.show();\n    container && container.show();\n    tooltipArrow && tooltipArrow.show();\n    xTipBox && xTipBox.show();\n    yTipBox && yTipBox.show();\n    canvas.draw();\n  };\n\n  _proto.hide = function hide() {\n    var crosshairsShapeX = this.crosshairsShapeX;\n    var crosshairsShapeY = this.crosshairsShapeY;\n    var markerGroup = this.markerGroup;\n    var container = this.container;\n    var tooltipArrow = this.tooltipArrow;\n    var xTipBox = this.xTipBox;\n    var yTipBox = this.yTipBox;\n    crosshairsShapeX && crosshairsShapeX.hide();\n    crosshairsShapeY && crosshairsShapeY.hide();\n    markerGroup && markerGroup.hide();\n    container && container.hide();\n    tooltipArrow && tooltipArrow.hide();\n    xTipBox && xTipBox.hide();\n    yTipBox && yTipBox.hide();\n  };\n\n  _proto.destroy = function destroy() {\n    var crosshairsShapeX = this.crosshairsShapeX;\n    var crosshairsShapeY = this.crosshairsShapeY;\n    var markerGroup = this.markerGroup;\n    var container = this.container;\n    var tooltipArrow = this.tooltipArrow;\n    var xTipBox = this.xTipBox;\n    var yTipBox = this.yTipBox;\n    crosshairsShapeX && crosshairsShapeX.remove(true);\n    crosshairsShapeY && crosshairsShapeY.remove(true);\n    markerGroup && markerGroup.remove(true);\n    tooltipArrow && tooltipArrow.remove(true);\n    container && container.clear();\n    xTipBox && xTipBox.clear();\n    yTipBox && yTipBox.clear();\n    this.destroyed = true;\n  };\n\n  _proto._getMarkerGroup = function _getMarkerGroup(type) {\n    var markerGroup = this.markerGroup;\n\n    if (!markerGroup) {\n      if (type === 'circle') {\n        markerGroup = this.frontPlot.addGroup({\n          zIndex: 1\n        });\n        this.frontPlot.sort();\n      } else {\n        markerGroup = this.backPlot.addGroup();\n      }\n\n      this.markerGroup = markerGroup;\n    } else {\n      markerGroup.clear();\n    }\n\n    return markerGroup;\n  };\n\n  _proto._renderCrosshairs = function _renderCrosshairs() {\n    var crosshairsType = this.crosshairsType,\n        crosshairsStyle = this.crosshairsStyle,\n        frontPlot = this.frontPlot,\n        plotRange = this.plotRange;\n    var tl = plotRange.tl,\n        br = plotRange.br;\n\n    if ((0, _common.directionEnabled)(crosshairsType, 'x')) {\n      this.crosshairsShapeX = frontPlot.addShape('Line', {\n        className: 'tooltip-crosshairs-x',\n        zIndex: 0,\n        visible: false,\n        attrs: (0, _common.mix)({\n          x1: tl.x,\n          y1: 0,\n          x2: br.x,\n          y2: 0\n        }, crosshairsStyle)\n      });\n    }\n\n    if ((0, _common.directionEnabled)(crosshairsType, 'y')) {\n      this.crosshairsShapeY = frontPlot.addShape('Line', {\n        className: 'tooltip-crosshairs-y',\n        zIndex: 0,\n        visible: false,\n        attrs: (0, _common.mix)({\n          x1: 0,\n          y1: br.y,\n          x2: 0,\n          y2: tl.y\n        }, crosshairsStyle)\n      });\n    }\n  };\n\n  return Tooltip;\n}();\n\nvar _default = Tooltip;\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _common = require(\"../util/common\");\n\nvar _index = require(\"../graphic/index\");\n\nvar _marker = _interopRequireDefault(require(\"./marker\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar MARKER_RADIUS = 3;\n\nvar List = /*#__PURE__*/function () {\n  var _proto = List.prototype;\n\n  _proto.getDefaultCfg = function getDefaultCfg() {\n    return {\n      showTitle: false,\n\n      /**\n       * title string\n       * @type {?String}\n       */\n      title: null,\n\n      /**\n       * items array\n       * @type {?Array}\n       */\n      items: null,\n\n      /**\n       * offset between title and items\n       * @type {Number}\n       */\n      titleGap: 12,\n\n      /**\n       * offset between each item\n       * @type {Number}\n       */\n      itemGap: 10,\n\n      /**\n       * the offset between each item in vertical direaction\n       * @type {Number}\n       */\n      itemMarginBottom: 12,\n\n      /**\n       * the formatter for item text\n       * @type {[type]}\n       */\n      itemFormatter: null,\n      itemWidth: null,\n\n      /**\n       * offset between marker and text\n       * @type {Number}\n       */\n      wordSpace: 6,\n      x: 0,\n      y: 0,\n      layout: 'horizontal',\n\n      /**\n       * the join string of `name` and `value`\n       * @type {String}\n       */\n      joinString: ': '\n    };\n  };\n\n  function List(cfg) {\n    (0, _common.deepMix)(this, this.getDefaultCfg(), cfg);\n\n    this._init();\n\n    this._renderTitle();\n\n    this._renderItems();\n  }\n\n  _proto._init = function _init() {\n    var container = new _index.Group({\n      zIndex: this.zIndex || 0\n    });\n    this.container = container;\n    var wrapper = container.addGroup();\n    this.wrapper = wrapper;\n    var itemsGroup = wrapper.addGroup({\n      className: 'itemsGroup'\n    });\n    this.itemsGroup = itemsGroup;\n\n    if (this.parent) {\n      this.parent.add(container);\n    }\n  };\n\n  _proto._renderTitle = function _renderTitle(title) {\n    title = title || this.title;\n    var titleShape = this.titleShape;\n    var titleHeight = 0;\n\n    if (this.showTitle && title) {\n      if (titleShape && !titleShape.get('destroyed')) {\n        titleShape.attr('text', title);\n      } else {\n        var wrapper = this.wrapper,\n            titleStyle = this.titleStyle;\n        titleShape = wrapper.addShape('text', {\n          className: 'title',\n          attrs: (0, _common.mix)({\n            x: 0,\n            y: 0,\n            text: title\n          }, titleStyle)\n        });\n        this.titleShape = titleShape;\n      }\n\n      titleHeight = titleShape.getBBox().height + this.titleGap;\n    }\n\n    this._titleHeight = titleHeight;\n  };\n\n  _proto._renderItems = function _renderItems(items) {\n    var self = this;\n    items = items || self.items;\n\n    if (!items) {\n      return;\n    }\n\n    if (self.reversed) {\n      items.reverse();\n    }\n\n    (0, _common.each)(items, function (item, index) {\n      self._addItem(item, index);\n    });\n\n    if (items.length > 1) {\n      this._adjustItems();\n    }\n\n    this._renderBackground();\n  };\n\n  _proto._renderBackground = function _renderBackground() {\n    var background = this.background;\n\n    if (background) {\n      var container = this.container;\n      var wrapper = this.wrapper;\n\n      var _wrapper$getBBox = wrapper.getBBox(),\n          minX = _wrapper$getBBox.minX,\n          minY = _wrapper$getBBox.minY,\n          width = _wrapper$getBBox.width,\n          height = _wrapper$getBBox.height;\n\n      var padding = background.padding || [0, 0, 0, 0];\n      padding = (0, _common.parsePadding)(padding);\n      var attrs = (0, _common.mix)({\n        x: minX - padding[3],\n        y: minY - padding[0],\n        width: width + padding[1] + padding[3],\n        height: height + padding[0] + padding[2]\n      }, background);\n      var backShape = this.backShape;\n\n      if (backShape) {\n        backShape.attr(attrs);\n      } else {\n        backShape = container.addShape('Rect', {\n          zIndex: -1,\n          attrs: attrs\n        });\n      }\n\n      this.backShape = backShape;\n      container.sort();\n    }\n  };\n\n  _proto._addItem = function _addItem(item) {\n    var itemsGroup = this.itemsGroup;\n    var itemGroup = itemsGroup.addGroup({\n      name: item.name,\n      value: item.value,\n      dataValue: item.dataValue,\n      checked: item.checked\n    });\n    var unCheckStyle = this.unCheckStyle,\n        unCheckColor = this.unCheckColor,\n        nameStyle = this.nameStyle,\n        valueStyle = this.valueStyle,\n        wordSpace = this.wordSpace;\n    var marker = item.marker,\n        value = item.value;\n    var startX = 0;\n\n    if (unCheckColor) {\n      unCheckStyle.fill = unCheckColor;\n    }\n\n    if (marker) {\n      var radius = marker.radius || MARKER_RADIUS;\n      var markerAttrs = (0, _common.mix)({\n        x: radius,\n        y: this._titleHeight\n      }, marker);\n\n      if (item.checked === false) {\n        (0, _common.mix)(markerAttrs, unCheckStyle);\n      }\n\n      var markerShape = new _marker[\"default\"]({\n        className: 'item-marker',\n        attrs: markerAttrs\n      });\n      itemGroup.add(markerShape);\n      startX += markerShape.getBBox().width + wordSpace;\n    }\n\n    var nameText;\n    var name = item.name;\n\n    if (name) {\n      var joinString = this.joinString || '';\n      name = value ? name + joinString : name;\n      nameText = itemGroup.addShape('text', {\n        className: 'name',\n        attrs: (0, _common.mix)({\n          x: startX,\n          y: this._titleHeight,\n          text: this._formatItemValue(name)\n        }, nameStyle, item.checked === false ? unCheckStyle : null)\n      });\n    }\n\n    if (value) {\n      var valueX = startX;\n\n      if (nameText) {\n        valueX += nameText.getBBox().width;\n      }\n\n      itemGroup.addShape('text', {\n        className: 'value',\n        attrs: (0, _common.mix)({\n          x: valueX,\n          y: this._titleHeight,\n          text: value\n        }, valueStyle, item.checked === false ? unCheckStyle : null)\n      });\n    }\n\n    return itemGroup;\n  };\n\n  _proto._formatItemValue = function _formatItemValue(value) {\n    var formatter = this.itemFormatter;\n\n    if (formatter) {\n      value = formatter.call(this, value);\n    }\n\n    return value;\n  };\n\n  _proto._getMaxItemWidth = function _getMaxItemWidth() {\n    var width;\n    var itemWidth = this.itemWidth;\n\n    if ((0, _common.isNumber)(itemWidth) || (0, _common.isNil)(itemWidth)) {\n      return itemWidth;\n    }\n\n    if (itemWidth === 'auto') {\n      var itemsGroup = this.itemsGroup;\n      var children = itemsGroup.get('children');\n      var count = children.length;\n      var maxItemWidth = 0;\n\n      for (var i = 0; i < count; i++) {\n        var _children$i$getBBox = children[i].getBBox(),\n            _width = _children$i$getBBox.width;\n\n        maxItemWidth = Math.max(maxItemWidth, _width);\n      }\n\n      var maxLength = this.maxLength;\n      var itemGap = this.itemGap;\n      var twoAvgWidth = (maxLength - itemGap) / 2;\n      var threeAvgWidth = (maxLength - itemGap * 2) / 3;\n\n      if (count === 2) {\n        width = Math.max(maxItemWidth, twoAvgWidth);\n      } else {\n        // 1. max <= 3Avg, 3Avg\n        // 2. 3Avg < max && max < 2avg, 2avg\n        // 3. max > 2avg, max, one column\n        if (maxItemWidth <= threeAvgWidth) {\n          width = threeAvgWidth;\n        } else if (maxItemWidth <= twoAvgWidth) {\n          width = twoAvgWidth;\n        } else {\n          width = maxItemWidth;\n        }\n      }\n\n      return width;\n    }\n  };\n\n  _proto._adjustHorizontal = function _adjustHorizontal() {\n    var maxLength = this.maxLength,\n        itemsGroup = this.itemsGroup;\n    var children = itemsGroup.get('children');\n    var itemGap = this.itemGap,\n        itemMarginBottom = this.itemMarginBottom;\n    var titleHeight = this._titleHeight;\n    var row = 0;\n    var rowWidth = 0;\n    var width;\n    var height;\n\n    var itemWidth = this._getMaxItemWidth();\n\n    var legendHitBoxes = [];\n\n    for (var i = 0, len = children.length; i < len; i++) {\n      var child = children[i];\n      var box = child.getBBox();\n      var childHeight = box.height;\n      var childWidth = box.width;\n      width = itemWidth || childWidth;\n      height = childHeight + itemMarginBottom;\n\n      if (width - (maxLength - rowWidth) > 0.0001) {\n        row++;\n        rowWidth = 0;\n      }\n\n      child.moveTo(rowWidth, row * height);\n      legendHitBoxes.push({\n        x: rowWidth,\n        y: row * height + titleHeight - childHeight / 2,\n        width: childWidth * 1.375,\n        height: childHeight * 1.375\n      });\n      rowWidth += width + itemGap;\n    }\n\n    this.legendHitBoxes = legendHitBoxes;\n    return;\n  };\n\n  _proto._adjustVertical = function _adjustVertical() {\n    var maxLength = this.maxLength,\n        itemsGroup = this.itemsGroup;\n    var itemGap = this.itemGap,\n        itemMarginBottom = this.itemMarginBottom,\n        itemWidth = this.itemWidth;\n    var titleHeight = this._titleHeight;\n    var children = itemsGroup.get('children');\n    var colHeight = 0;\n    var width;\n    var height;\n    var maxItemWidth = 0;\n    var totalWidth = 0;\n    var legendHitBoxes = [];\n\n    for (var i = 0, length = children.length; i < length; i++) {\n      var child = children[i];\n      var bbox = child.getBBox();\n      width = bbox.width;\n      height = bbox.height;\n\n      if ((0, _common.isNumber)(itemWidth)) {\n        maxItemWidth = itemWidth + itemGap;\n      } else if (width > maxItemWidth) {\n        maxItemWidth = width + itemGap;\n      }\n\n      if (maxLength - colHeight < height) {\n        colHeight = 0;\n        totalWidth += maxItemWidth;\n        child.moveTo(totalWidth, 0);\n        legendHitBoxes.push({\n          x: totalWidth,\n          y: titleHeight - height / 2,\n          width: width * 1.375,\n          height: height * 1.375\n        });\n      } else {\n        child.moveTo(totalWidth, colHeight);\n        legendHitBoxes.push({\n          x: totalWidth,\n          y: colHeight - height / 2 + titleHeight,\n          width: width * 1.375,\n          height: height * 1.375\n        });\n      }\n\n      colHeight += height + itemMarginBottom;\n    }\n\n    this.legendHitBoxes = legendHitBoxes;\n    return;\n  };\n\n  _proto._adjustItems = function _adjustItems() {\n    var layout = this.layout;\n\n    if (layout === 'horizontal') {\n      this._adjustHorizontal();\n    } else {\n      this._adjustVertical();\n    }\n  };\n\n  _proto.moveTo = function moveTo(x, y) {\n    this.x = x;\n    this.y = y;\n    var container = this.container;\n    container && container.moveTo(x, y);\n    return this;\n  };\n\n  _proto.setItems = function setItems(items) {\n    this.clearItems();\n\n    this._renderItems(items);\n  };\n\n  _proto.setTitle = function setTitle(title) {\n    this._renderTitle(title);\n  };\n\n  _proto.clearItems = function clearItems() {\n    var itemsGroup = this.itemsGroup;\n    itemsGroup.clear();\n  };\n\n  _proto.getWidth = function getWidth() {\n    var container = this.container;\n    var bbox = container.getBBox();\n    return bbox.width;\n  };\n\n  _proto.getHeight = function getHeight() {\n    var container = this.container;\n    var bbox = container.getBBox();\n    return bbox.height;\n  };\n\n  _proto.show = function show() {\n    var container = this.container;\n    container.show();\n  };\n\n  _proto.hide = function hide() {\n    var container = this.container;\n    container.hide();\n  };\n\n  _proto.clear = function clear() {\n    var container = this.container;\n    container.clear();\n    container.remove(true);\n  };\n\n  return List;\n}();\n\nvar _default = List;\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _common = require(\"../util/common\");\n\nvar _index = require(\"../graphic/index\");\n\nvar TextBox = /*#__PURE__*/function () {\n  var _proto = TextBox.prototype;\n\n  _proto.getDefaultCfg = function getDefaultCfg() {\n    return {\n      x: 0,\n      y: 0,\n      content: '',\n      textStyle: {\n        fontSize: 12,\n        fill: '#fff',\n        textAlign: 'center',\n        textBaseline: 'middle',\n        fontFamily: 'Arial'\n      },\n      background: {\n        radius: 1,\n        fill: 'rgba(0, 0, 0, 0.65)',\n        padding: [3, 5]\n      },\n      width: 0,\n      height: 0,\n      className: ''\n    };\n  };\n\n  function TextBox(cfg) {\n    (0, _common.deepMix)(this, this.getDefaultCfg(), cfg);\n\n    this._init();\n\n    var content = this.content,\n        x = this.x,\n        y = this.y;\n\n    if (!(0, _common.isNil)(content)) {\n      this.updateContent(content);\n    }\n\n    this.updatePosition(x, y);\n  }\n\n  _proto._init = function _init() {\n    var content = this.content,\n        textStyle = this.textStyle,\n        background = this.background,\n        className = this.className,\n        visible = this.visible,\n        context = this.context;\n    var container = new _index.Group({\n      context: context,\n      className: className,\n      zIndex: 0,\n      visible: visible\n    });\n    var text = container.addShape('Text', {\n      className: className + '-text',\n      zIndex: 1,\n      attrs: (0, _common.mix)({\n        text: content,\n        x: 0,\n        y: 0\n      }, textStyle)\n    });\n    var backgroundShape = container.addShape('Rect', {\n      className: className + '-bg',\n      zIndex: -1,\n      attrs: (0, _common.mix)({\n        x: 0,\n        y: 0,\n        width: 0,\n        height: 0\n      }, background)\n    });\n    container.sort();\n    this.container = container;\n    this.textShape = text;\n    this.backgroundShape = backgroundShape;\n  };\n\n  _proto._getBBox = function _getBBox() {\n    var textShape = this.textShape;\n    var background = this.background;\n    var textBBox = textShape.getBBox();\n    var padding = (0, _common.parsePadding)(background.padding);\n    var width = textBBox.width + padding[1] + padding[3];\n    var height = textBBox.height + padding[0] + padding[2];\n    var x = textBBox.minX - padding[3];\n    var y = textBBox.minY - padding[0];\n    return {\n      x: x,\n      y: y,\n      width: width,\n      height: height\n    };\n  };\n\n  _proto.updateContent = function updateContent(text) {\n    var textShape = this.textShape,\n        backgroundShape = this.backgroundShape;\n\n    if (!(0, _common.isNil)(text)) {\n      if (!(0, _common.isObject)(text)) {\n        text = {\n          text: text\n        };\n      }\n\n      textShape.attr(text); // update box shape\n\n      var _this$_getBBox = this._getBBox(),\n          x = _this$_getBBox.x,\n          y = _this$_getBBox.y,\n          tipWidth = _this$_getBBox.width,\n          tipHeight = _this$_getBBox.height;\n\n      var width = this.width || tipWidth;\n      var height = this.height || tipHeight;\n      backgroundShape.attr({\n        x: x,\n        y: y,\n        width: width,\n        height: height\n      });\n      this._width = width;\n      this._height = height;\n      this.content = text.text;\n    }\n  };\n\n  _proto.updatePosition = function updatePosition(x, y) {\n    var container = this.container;\n\n    var _this$_getBBox2 = this._getBBox(),\n        xMin = _this$_getBBox2.x,\n        yMin = _this$_getBBox2.y;\n\n    container.moveTo(x - xMin, y - yMin);\n    this.x = x - xMin;\n    this.y = y - yMin;\n  };\n\n  _proto.getWidth = function getWidth() {\n    return this._width;\n  };\n\n  _proto.getHeight = function getHeight() {\n    return this._height;\n  };\n\n  _proto.show = function show() {\n    this.container.show();\n  };\n\n  _proto.hide = function hide() {\n    this.container.hide();\n  };\n\n  _proto.clear = function clear() {\n    var container = this.container;\n    container.clear();\n    container.remove(true);\n    this.container = null;\n    this.textShape = null;\n    this.backgroundShape = null;\n  };\n\n  return TextBox;\n}();\n\nvar _default = TextBox;\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nexports.init = init;\nexports.afterGeomDraw = afterGeomDraw;\nexports.clear = clear;\nexports.repaint = repaint;\nexports[\"default\"] = void 0;\n\nvar _common = require(\"../util/common\");\n\nvar _base = _interopRequireDefault(require(\"../component/guide/base\"));\n\nvar _global = _interopRequireDefault(require(\"../global\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n// register the default configuration for Guide\n_global[\"default\"].guide = (0, _common.deepMix)({\n  line: {\n    style: {\n      stroke: '#a3a3a3',\n      lineWidth: 1\n    },\n    top: true\n  },\n  text: {\n    style: {\n      fill: '#787878',\n      textAlign: 'center',\n      textBaseline: 'middle'\n    },\n    offsetX: 0,\n    offsetY: 0,\n    top: true\n  },\n  rect: {\n    style: {\n      fill: '#fafafa'\n    },\n    top: false\n  },\n  arc: {\n    style: {\n      stroke: '#a3a3a3'\n    },\n    top: true\n  },\n  html: {\n    offsetX: 0,\n    offsetY: 0,\n    alignX: 'center',\n    alignY: 'middle'\n  },\n  tag: {\n    top: true,\n    offsetX: 0,\n    offsetY: 0,\n    side: 4,\n    background: {\n      padding: 5,\n      radius: 2,\n      fill: '#1890FF'\n    },\n    textStyle: {\n      fontSize: 12,\n      fill: '#fff',\n      textAlign: 'center',\n      textBaseline: 'middle'\n    }\n  },\n  point: {\n    top: true,\n    offsetX: 0,\n    offsetY: 0,\n    style: {\n      fill: '#fff',\n      r: 3,\n      lineWidth: 2,\n      stroke: '#1890ff'\n    }\n  }\n}, _global[\"default\"].guide || {});\n\nvar GuideController = /*#__PURE__*/function () {\n  function GuideController(cfg) {\n    this.guides = [];\n    this.xScale = null;\n    this.yScales = null;\n    this.guideShapes = [];\n    (0, _common.mix)(this, cfg);\n  }\n\n  var _proto = GuideController.prototype;\n\n  _proto._toString = function _toString(position) {\n    if ((0, _common.isFunction)(position)) {\n      position = position(this.xScale, this.yScales);\n    }\n\n    position = position.toString();\n    return position;\n  };\n\n  _proto._getId = function _getId(shape, guide) {\n    var id = guide.id;\n\n    if (!id) {\n      var type = guide.type;\n\n      if (type === 'arc' || type === 'line' || type === 'rect') {\n        id = this._toString(guide.start) + '-' + this._toString(guide.end);\n      } else {\n        id = this._toString(guide.position);\n      }\n    }\n\n    return id;\n  };\n\n  _proto.paint = function paint(coord) {\n    var self = this;\n    var chart = self.chart,\n        guides = self.guides,\n        xScale = self.xScale,\n        yScales = self.yScales;\n    var guideShapes = [];\n    (0, _common.each)(guides, function (guide, idx) {\n      guide.xScale = xScale;\n      guide.yScales = yScales;\n      var container;\n\n      if (guide.type === 'regionFilter') {\n        // TODO: RegionFilter support animation\n        guide.chart = chart;\n      } else {\n        container = guide.top ? self.frontPlot : self.backPlot;\n      }\n\n      guide.coord = coord;\n      guide.container = container;\n      guide.canvas = chart.get('canvas');\n      var shape = guide.render(coord, container);\n\n      if (shape) {\n        var id = self._getId(shape, guide);\n\n        [].concat(shape).forEach(function (s) {\n          s._id = s.get('className') + '-' + id;\n          s.set('index', idx);\n          guideShapes.push(s);\n        });\n      }\n    });\n    self.guideShapes = guideShapes;\n  };\n\n  _proto.clear = function clear() {\n    this.reset();\n    this.guides = [];\n    return this;\n  };\n\n  _proto.reset = function reset() {\n    var guides = this.guides;\n    (0, _common.each)(guides, function (guide) {\n      guide.remove();\n    });\n  };\n\n  _proto._createGuide = function _createGuide(type, cfg) {\n    var ClassName = (0, _common.upperFirst)(type);\n    var guide = new _base[\"default\"][ClassName]((0, _common.deepMix)({}, _global[\"default\"].guide[type], cfg));\n    this.guides.push(guide);\n    return guide;\n  };\n\n  _proto.line = function line(cfg) {\n    if (cfg === void 0) {\n      cfg = {};\n    }\n\n    return this._createGuide('line', cfg);\n  };\n\n  _proto.text = function text(cfg) {\n    if (cfg === void 0) {\n      cfg = {};\n    }\n\n    return this._createGuide('text', cfg);\n  };\n\n  _proto.arc = function arc(cfg) {\n    if (cfg === void 0) {\n      cfg = {};\n    }\n\n    return this._createGuide('arc', cfg);\n  };\n\n  _proto.html = function html(cfg) {\n    if (cfg === void 0) {\n      cfg = {};\n    }\n\n    return this._createGuide('html', cfg);\n  };\n\n  _proto.rect = function rect(cfg) {\n    if (cfg === void 0) {\n      cfg = {};\n    }\n\n    return this._createGuide('rect', cfg);\n  };\n\n  _proto.tag = function tag(cfg) {\n    if (cfg === void 0) {\n      cfg = {};\n    }\n\n    return this._createGuide('tag', cfg);\n  };\n\n  _proto.point = function point(cfg) {\n    if (cfg === void 0) {\n      cfg = {};\n    }\n\n    return this._createGuide('point', cfg);\n  };\n\n  _proto.regionFilter = function regionFilter(cfg) {\n    if (cfg === void 0) {\n      cfg = {};\n    }\n\n    return this._createGuide('regionFilter', cfg);\n  };\n\n  return GuideController;\n}();\n\nfunction init(chart) {\n  var guideController = new GuideController({\n    frontPlot: chart.get('frontPlot').addGroup({\n      zIndex: 20,\n      className: 'guideContainer'\n    }),\n    backPlot: chart.get('backPlot').addGroup({\n      className: 'guideContainer'\n    })\n  });\n  chart.set('guideController', guideController);\n  /**\n   * 为图表添加 guide\n   * @return {GuideController} 返回 guide 控制器\n   */\n\n  chart.guide = function () {\n    return guideController;\n  };\n}\n\nfunction afterGeomDraw(chart) {\n  var guideController = chart.get('guideController');\n\n  if (!guideController.guides.length) {\n    return;\n  }\n\n  var xScale = chart.getXScale();\n  var yScales = chart.getYScales();\n  var coord = chart.get('coord');\n  guideController.xScale = xScale;\n  guideController.yScales = yScales;\n  guideController.chart = chart; // for regionFilter\n\n  guideController.paint(coord);\n}\n\nfunction clear(chart) {\n  chart.get('guideController').clear();\n}\n\nfunction repaint(chart) {\n  chart.get('guideController').reset();\n}\n\nvar _default = {\n  init: init,\n  afterGeomDraw: afterGeomDraw,\n  clear: clear,\n  repaint: repaint\n};\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nexports.init = init;\nexports.beforeGeomDraw = beforeGeomDraw;\nexports.afterGeomDraw = afterGeomDraw;\nexports.clearInner = clearInner;\nexports[\"default\"] = void 0;\n\nvar _common = require(\"../util/common\");\n\nvar _list = _interopRequireDefault(require(\"../component/list\"));\n\nvar _global = _interopRequireDefault(require(\"../global\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar LEGEND_GAP = 12;\nvar MARKER_SIZE = 3;\nvar DEFAULT_CFG = {\n  itemMarginBottom: 12,\n  itemGap: 10,\n  showTitle: false,\n  titleStyle: {\n    fontSize: 12,\n    fill: '#808080',\n    textAlign: 'start',\n    textBaseline: 'top'\n  },\n  nameStyle: {\n    fill: '#808080',\n    fontSize: 12,\n    textAlign: 'start',\n    textBaseline: 'middle'\n  },\n  valueStyle: {\n    fill: '#000000',\n    fontSize: 12,\n    textAlign: 'start',\n    textBaseline: 'middle'\n  },\n  unCheckStyle: {\n    fill: '#bfbfbf'\n  },\n  itemWidth: 'auto',\n  wordSpace: 6,\n  selectedMode: 'multiple' // 'multiple' or 'single'\n\n}; // Register the default configuration for Legend\n\n_global[\"default\"].legend = (0, _common.deepMix)({\n  common: DEFAULT_CFG,\n  // common legend configuration\n  right: (0, _common.mix)({\n    position: 'right',\n    layout: 'vertical'\n  }, DEFAULT_CFG),\n  left: (0, _common.mix)({\n    position: 'left',\n    layout: 'vertical'\n  }, DEFAULT_CFG),\n  top: (0, _common.mix)({\n    position: 'top',\n    layout: 'horizontal'\n  }, DEFAULT_CFG),\n  bottom: (0, _common.mix)({\n    position: 'bottom',\n    layout: 'horizontal'\n  }, DEFAULT_CFG)\n}, _global[\"default\"].legend || {});\n\nfunction getPaddingByPos(pos, appendPadding) {\n  var padding = 0;\n  appendPadding = (0, _common.parsePadding)(appendPadding);\n\n  switch (pos) {\n    case 'top':\n      padding = appendPadding[0];\n      break;\n\n    case 'right':\n      padding = appendPadding[1];\n      break;\n\n    case 'bottom':\n      padding = appendPadding[2];\n      break;\n\n    case 'left':\n      padding = appendPadding[3];\n      break;\n\n    default:\n      break;\n  }\n\n  return padding;\n}\n\nvar LegendController = /*#__PURE__*/function () {\n  function LegendController(cfg) {\n    var _this = this;\n\n    _defineProperty(this, \"handleEvent\", function (ev) {\n      var self = _this;\n\n      function findItem(x, y) {\n        var result = null;\n        var legends = self.legends;\n        (0, _common.each)(legends, function (legendItems) {\n          (0, _common.each)(legendItems, function (legend) {\n            var itemsGroup = legend.itemsGroup,\n                legendHitBoxes = legend.legendHitBoxes;\n            var children = itemsGroup.get('children');\n\n            if (children.length) {\n              var legendPosX = legend.x;\n              var legendPosY = legend.y;\n              (0, _common.each)(legendHitBoxes, function (box, index) {\n                if (x >= box.x + legendPosX && x <= box.x + box.width + legendPosX && y >= box.y + legendPosY && y <= box.height + box.y + legendPosY) {\n                  // inbox\n                  result = {\n                    clickedItem: children[index],\n                    clickedLegend: legend\n                  };\n                  return false;\n                }\n              });\n            }\n          });\n        });\n        return result;\n      }\n\n      var chart = self.chart;\n\n      var _createEvent = (0, _common.createEvent)(ev, chart),\n          x = _createEvent.x,\n          y = _createEvent.y;\n\n      var clicked = findItem(x, y);\n\n      if (clicked && clicked.clickedLegend.clickable !== false) {\n        var clickedItem = clicked.clickedItem,\n            clickedLegend = clicked.clickedLegend;\n\n        if (clickedLegend.onClick) {\n          ev.clickedItem = clickedItem;\n          clickedLegend.onClick(ev);\n        } else if (!clickedLegend.custom) {\n          var checked = clickedItem.get('checked');\n          var value = clickedItem.get('dataValue');\n          var filteredVals = clickedLegend.filteredVals,\n              field = clickedLegend.field,\n              selectedMode = clickedLegend.selectedMode;\n          var isSingeSelected = selectedMode === 'single';\n\n          if (isSingeSelected) {\n            chart.filter(field, function (val) {\n              return val === value;\n            });\n          } else {\n            if (checked) {\n              filteredVals.push(value);\n            } else {\n              _common.Array.remove(filteredVals, value);\n            }\n\n            chart.filter(field, function (val) {\n              return filteredVals.indexOf(val) === -1;\n            });\n          }\n\n          chart.repaint();\n        }\n      }\n    });\n\n    this.legendCfg = {};\n    this.enable = true;\n    this.position = 'top';\n    (0, _common.mix)(this, cfg);\n    var _chart = this.chart;\n    this.canvasDom = _chart.get('canvas').get('el');\n    this.clear();\n  }\n\n  var _proto = LegendController.prototype;\n\n  _proto.addLegend = function addLegend(scale, items, filteredVals) {\n    var self = this;\n    var legendCfg = self.legendCfg;\n    var field = scale.field;\n    var fieldCfg = legendCfg[field];\n\n    if (fieldCfg === false) {\n      return null;\n    }\n\n    if (fieldCfg && fieldCfg.custom) {\n      self.addCustomLegend(field);\n    } else {\n      var position = legendCfg.position || self.position;\n\n      if (fieldCfg && fieldCfg.position) {\n        position = fieldCfg.position;\n      }\n\n      if (scale.isCategory) {\n        self._addCategoryLegend(scale, items, position, filteredVals);\n      }\n    }\n  };\n\n  _proto.addCustomLegend = function addCustomLegend(field) {\n    var self = this;\n    var legendCfg = self.legendCfg;\n\n    if (field && legendCfg[field]) {\n      legendCfg = legendCfg[field];\n    }\n\n    var position = legendCfg.position || self.position;\n    var legends = self.legends;\n    legends[position] = legends[position] || [];\n    var items = legendCfg.items;\n\n    if (!items) {\n      return null;\n    }\n\n    var container = self.container;\n    (0, _common.each)(items, function (item) {\n      if (!(0, _common.isPlainObject)(item.marker)) {\n        item.marker = {\n          symbol: item.marker || 'circle',\n          fill: item.fill,\n          radius: MARKER_SIZE\n        };\n      } else {\n        item.marker.radius = item.marker.radius || MARKER_SIZE;\n      }\n\n      item.checked = (0, _common.isNil)(item.checked) ? true : item.checked;\n      item.name = item.name || item.value;\n    });\n    var legend = new _list[\"default\"]((0, _common.deepMix)({}, _global[\"default\"].legend[position], legendCfg, {\n      maxLength: self._getMaxLength(position),\n      items: items,\n      parent: container\n    }));\n    legends[position].push(legend);\n  };\n\n  _proto.clear = function clear() {\n    var legends = this.legends;\n    (0, _common.each)(legends, function (legendItems) {\n      (0, _common.each)(legendItems, function (legend) {\n        legend.clear();\n      });\n    });\n    this.legends = {};\n    this.unBindEvents();\n  };\n\n  _proto._isFiltered = function _isFiltered(scale, values, value) {\n    var rst = false;\n    (0, _common.each)(values, function (val) {\n      rst = rst || scale.getText(val) === scale.getText(value);\n\n      if (rst) {\n        return false;\n      }\n    });\n    return rst;\n  };\n\n  _proto._getMaxLength = function _getMaxLength(position) {\n    var chart = this.chart;\n    var appendPadding = (0, _common.parsePadding)(chart.get('appendPadding'));\n    return position === 'right' || position === 'left' ? chart.get('height') - (appendPadding[0] + appendPadding[2]) : chart.get('width') - (appendPadding[1] + appendPadding[3]);\n  };\n\n  _proto._addCategoryLegend = function _addCategoryLegend(scale, items, position, filteredVals) {\n    var self = this;\n    var legendCfg = self.legendCfg,\n        legends = self.legends,\n        container = self.container,\n        chart = self.chart;\n    var field = scale.field;\n    legends[position] = legends[position] || [];\n    var symbol = 'circle';\n\n    if (legendCfg[field] && legendCfg[field].marker) {\n      symbol = legendCfg[field].marker;\n    } else if (legendCfg.marker) {\n      symbol = legendCfg.marker;\n    }\n\n    (0, _common.each)(items, function (item) {\n      if ((0, _common.isPlainObject)(symbol)) {\n        (0, _common.mix)(item.marker, symbol);\n      } else {\n        item.marker.symbol = symbol;\n      }\n\n      if (filteredVals) {\n        item.checked = !self._isFiltered(scale, filteredVals, item.dataValue);\n      }\n    });\n    var legendItems = chart.get('legendItems');\n    legendItems[field] = items;\n    var lastCfg = (0, _common.deepMix)({}, _global[\"default\"].legend[position], legendCfg[field] || legendCfg, {\n      maxLength: self._getMaxLength(position),\n      items: items,\n      field: field,\n      filteredVals: filteredVals,\n      parent: container\n    });\n\n    if (lastCfg.showTitle) {\n      (0, _common.deepMix)(lastCfg, {\n        title: scale.alias || scale.field\n      });\n    }\n\n    var legend = new _list[\"default\"](lastCfg);\n    legends[position].push(legend);\n    return legend;\n  };\n\n  _proto._alignLegend = function _alignLegend(legend, pre, position) {\n    var self = this;\n    var _self$plotRange = self.plotRange,\n        tl = _self$plotRange.tl,\n        bl = _self$plotRange.bl;\n    var chart = self.chart;\n    var offsetX = legend.offsetX || 0;\n    var offsetY = legend.offsetY || 0;\n    var chartWidth = chart.get('width');\n    var chartHeight = chart.get('height');\n    var appendPadding = (0, _common.parsePadding)(chart.get('appendPadding'));\n    var legendHeight = legend.getHeight();\n    var legendWidth = legend.getWidth();\n    var x = 0;\n    var y = 0;\n\n    if (position === 'left' || position === 'right') {\n      var verticalAlign = legend.verticalAlign || 'middle';\n      var height = Math.abs(tl.y - bl.y);\n      x = position === 'left' ? appendPadding[3] : chartWidth - legendWidth - appendPadding[1];\n      y = (height - legendHeight) / 2 + tl.y;\n\n      if (verticalAlign === 'top') {\n        y = tl.y;\n      } else if (verticalAlign === 'bottom') {\n        y = bl.y - legendHeight;\n      }\n\n      if (pre) {\n        y = pre.get('y') - legendHeight - LEGEND_GAP;\n      }\n    } else {\n      var align = legend.align || 'left';\n      x = appendPadding[3];\n\n      if (align === 'center') {\n        x = chartWidth / 2 - legendWidth / 2;\n      } else if (align === 'right') {\n        x = chartWidth - (legendWidth + appendPadding[1]);\n      }\n\n      y = position === 'top' ? appendPadding[0] + Math.abs(legend.container.getBBox().minY) : chartHeight - legendHeight;\n\n      if (pre) {\n        var preWidth = pre.getWidth();\n        x = pre.x + preWidth + LEGEND_GAP;\n      }\n    }\n\n    if (position === 'bottom' && offsetY > 0) {\n      offsetY = 0;\n    }\n\n    if (position === 'right' && offsetX > 0) {\n      offsetX = 0;\n    }\n\n    legend.moveTo(x + offsetX, y + offsetY);\n  };\n\n  _proto.alignLegends = function alignLegends() {\n    var self = this;\n    var legends = self.legends;\n    (0, _common.each)(legends, function (legendItems, position) {\n      (0, _common.each)(legendItems, function (legend, index) {\n        var pre = legendItems[index - 1];\n\n        self._alignLegend(legend, pre, position);\n      });\n    });\n    return self;\n  };\n\n  _proto.bindEvents = function bindEvents() {\n    var legendCfg = this.legendCfg;\n    var triggerOn = legendCfg.triggerOn || 'touchstart';\n    (0, _common.addEventListener)(this.canvasDom, triggerOn, this.handleEvent);\n  };\n\n  _proto.unBindEvents = function unBindEvents() {\n    var legendCfg = this.legendCfg;\n    var triggerOn = legendCfg.triggerOn || 'touchstart';\n    (0, _common.removeEventListener)(this.canvasDom, triggerOn, this.handleEvent);\n  };\n\n  return LegendController;\n}();\n\nfunction init(chart) {\n  var legendController = new LegendController({\n    container: chart.get('backPlot'),\n    plotRange: chart.get('plotRange'),\n    chart: chart\n  });\n  chart.set('legendController', legendController);\n\n  chart.legend = function (field, cfg) {\n    var legendCfg = legendController.legendCfg;\n    legendController.enable = true;\n\n    if ((0, _common.isBoolean)(field)) {\n      legendController.enable = field;\n      legendCfg = cfg || {};\n    } else if ((0, _common.isObject)(field)) {\n      legendCfg = field;\n    } else {\n      legendCfg[field] = cfg;\n    }\n\n    legendController.legendCfg = legendCfg;\n    return this;\n  };\n}\n\nfunction beforeGeomDraw(chart) {\n  var legendController = chart.get('legendController');\n  if (!legendController.enable) return null; // legend is not displayed\n\n  var legendCfg = legendController.legendCfg;\n\n  if (legendCfg && legendCfg.custom) {\n    legendController.addCustomLegend();\n  } else {\n    var legendItems = chart.getLegendItems();\n    var scales = chart.get('scales');\n    var filters = chart.get('filters');\n    (0, _common.each)(legendItems, function (items, field) {\n      var scale = scales[field];\n      var values = scale.values;\n      var filteredVals;\n\n      if (filters && filters[field]) {\n        filteredVals = values.filter(function (v) {\n          return !filters[field](v);\n        });\n      } else {\n        filteredVals = [];\n      }\n\n      legendController.addLegend(scale, items, filteredVals);\n    });\n  }\n\n  if (legendCfg && legendCfg.clickable !== false) {\n    legendController.bindEvents();\n  }\n\n  var legends = legendController.legends;\n  var legendRange = {\n    top: 0,\n    right: 0,\n    bottom: 0,\n    left: 0\n  };\n  (0, _common.each)(legends, function (legendItems, position) {\n    var padding = 0;\n    (0, _common.each)(legendItems, function (legend) {\n      var width = legend.getWidth();\n      var height = legend.getHeight();\n\n      if (position === 'top' || position === 'bottom') {\n        padding = Math.max(padding, height);\n\n        if (legend.offsetY > 0) {\n          padding += legend.offsetY;\n        }\n      } else {\n        padding = Math.max(padding, width);\n\n        if (legend.offsetX > 0) {\n          padding += legend.offsetX;\n        }\n      }\n    });\n    legendRange[position] = padding + getPaddingByPos(position, chart.get('appendPadding'));\n  });\n  chart.set('legendRange', legendRange);\n}\n\nfunction afterGeomDraw(chart) {\n  var legendController = chart.get('legendController');\n  legendController.alignLegends();\n}\n\nfunction clearInner(chart) {\n  var legendController = chart.get('legendController');\n  legendController.clear();\n  chart.set('legendRange', null);\n}\n\nvar _default = {\n  init: init,\n  beforeGeomDraw: beforeGeomDraw,\n  afterGeomDraw: afterGeomDraw,\n  clearInner: clearInner\n};\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nexports.afterCanvasInit = afterCanvasInit;\nexports.beforeCanvasDraw = beforeCanvasDraw;\nexports.afterCanvasDestroyed = afterCanvasDestroyed;\nexports[\"default\"] = void 0;\n\nvar _common = require(\"../util/common\");\n\nvar _element = _interopRequireDefault(require(\"../graphic/element\"));\n\nvar _timeline = _interopRequireDefault(require(\"../graphic/animate/timeline\"));\n\nvar _animator = _interopRequireDefault(require(\"../graphic/animate/animator\"));\n\nvar _animate2 = _interopRequireDefault(require(\"./animate\"));\n\nvar ShapeAction = _interopRequireWildcard(require(\"./shape-action\"));\n\nvar GroupAction = _interopRequireWildcard(require(\"./group-action\"));\n\nvar _chart = _interopRequireDefault(require(\"../chart/chart\"));\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n/**\n * Handle the detail animations\n * @author sima.zhang1990@gmail.com\n */\nvar timeline;\n\n_element[\"default\"].prototype.animate = function () {\n  var attrs = (0, _common.mix)({}, this.get('attrs'));\n  return new _animator[\"default\"](this, attrs, timeline);\n};\n\n_chart[\"default\"].prototype.animate = function (cfg) {\n  this.set('animate', cfg);\n  return this;\n};\n\n_animate2[\"default\"].Action = ShapeAction;\n_animate2[\"default\"].defaultCfg = {\n  interval: {\n    enter: function enter(coord) {\n      if (coord.isPolar && coord.transposed) {\n        // for pie chart\n        return function (shape) {\n          shape.set('zIndex', -1);\n          var container = shape.get('parent');\n          container.sort();\n        };\n      }\n\n      return ShapeAction.fadeIn;\n    }\n  },\n  area: {\n    enter: function enter(coord) {\n      if (coord.isPolar) return null;\n      return ShapeAction.fadeIn;\n    }\n  },\n  line: {\n    enter: function enter(coord) {\n      if (coord.isPolar) return null;\n      return ShapeAction.fadeIn;\n    }\n  },\n  path: {\n    enter: function enter(coord) {\n      if (coord.isPolar) return null;\n      return ShapeAction.fadeIn;\n    }\n  }\n};\nvar GROUP_ANIMATION = {\n  line: function line(coord) {\n    if (coord.isPolar) {\n      return GroupAction.groupScaleInXY;\n    }\n\n    return GroupAction.groupWaveIn;\n  },\n  area: function area(coord) {\n    if (coord.isPolar) {\n      return GroupAction.groupScaleInXY;\n    }\n\n    return GroupAction.groupWaveIn;\n  },\n  path: function path(coord) {\n    if (coord.isPolar) {\n      return GroupAction.groupScaleInXY;\n    }\n\n    return GroupAction.groupWaveIn;\n  },\n  point: function point() {\n    return GroupAction.shapesScaleInXY;\n  },\n  interval: function interval(coord) {\n    var result;\n\n    if (coord.isPolar) {\n      // polar coodinate\n      result = GroupAction.groupScaleInXY;\n\n      if (coord.transposed) {\n        // pie chart\n        result = GroupAction.groupWaveIn;\n      }\n    } else {\n      result = coord.transposed ? GroupAction.groupScaleInX : GroupAction.groupScaleInY;\n    }\n\n    return result;\n  },\n  schema: function schema() {\n    return GroupAction.groupWaveIn;\n  }\n};\n\nfunction diff(fromAttrs, toAttrs) {\n  var endState = {};\n\n  for (var k in toAttrs) {\n    if ((0, _common.isNumber)(fromAttrs[k]) && fromAttrs[k] !== toAttrs[k]) {\n      endState[k] = toAttrs[k];\n    } else if ((0, _common.isArray)(fromAttrs[k]) && JSON.stringify(fromAttrs[k]) !== JSON.stringify(toAttrs[k])) {\n      endState[k] = toAttrs[k];\n    }\n  }\n\n  return endState;\n} // Add a unique id identifier to each shape\n\n\nfunction _getShapeId(geom, dataObj, geomIdx) {\n  var type = geom.get('type');\n  var id = 'geom' + geomIdx + '-' + type;\n  var xScale = geom.getXScale();\n  var yScale = geom.getYScale();\n  var xField = xScale.field || 'x';\n  var yField = yScale.field || 'y';\n  var yVal = dataObj[yField];\n  var xVal;\n\n  if (xScale.isIdentity) {\n    xVal = xScale.value;\n  } else {\n    xVal = dataObj[xField];\n  }\n\n  if (type === 'interval' || type === 'schema') {\n    id += '-' + xVal;\n  } else if (type === 'line' || type === 'area' || type === 'path') {\n    id += '-' + type;\n  } else {\n    id += xScale.isCategory ? '-' + xVal : '-' + xVal + '-' + yVal;\n  }\n\n  var groupScales = geom._getGroupScales();\n\n  (0, _common.each)(groupScales, function (groupScale) {\n    var field = groupScale.field;\n\n    if (groupScale.type !== 'identity') {\n      id += '-' + dataObj[field];\n    }\n  });\n  return id;\n} // get geometry's shapes\n\n\nfunction getShapes(geoms, chart, coord) {\n  var shapes = [];\n  (0, _common.each)(geoms, function (geom, geomIdx) {\n    var geomContainer = geom.get('container');\n    var geomShapes = geomContainer.get('children');\n    var type = geom.get('type');\n    var animateCfg = (0, _common.isNil)(geom.get('animateCfg')) ? _getAnimateCfgByShapeType(type, chart) : geom.get('animateCfg');\n\n    if (animateCfg !== false) {\n      (0, _common.each)(geomShapes, function (shape, index) {\n        if (shape.get('className') === type) {\n          shape._id = _getShapeId(geom, shape.get('origin')._origin, geomIdx);\n          shape.set('coord', coord);\n          shape.set('animateCfg', animateCfg);\n          shape.set('index', index);\n          shapes.push(shape);\n        }\n      });\n    }\n\n    geom.set('shapes', geomShapes);\n  });\n  return shapes;\n}\n\nfunction cache(shapes) {\n  var rst = {};\n\n  for (var i = 0, len = shapes.length; i < len; i++) {\n    var shape = shapes[i];\n    if (!shape._id || shape.isClip) continue;\n    var id = shape._id;\n    rst[id] = {\n      _id: id,\n      type: shape.get('type'),\n      // the type of shape\n      attrs: (0, _common.mix)({}, shape._attrs.attrs),\n      // the graphics attributes of shape\n      className: shape.get('className'),\n      geomType: shape.get('className'),\n      index: shape.get('index'),\n      coord: shape.get('coord'),\n      animateCfg: shape.get('animateCfg')\n    };\n  }\n\n  return rst;\n}\n\nfunction getAnimate(geomType, coord, animationType, animationName) {\n  var result;\n\n  if ((0, _common.isFunction)(animationName)) {\n    result = animationName;\n  } else if ((0, _common.isString)(animationName)) {\n    result = _animate2[\"default\"].Action[animationName];\n  } else {\n    result = _animate2[\"default\"].getAnimation(geomType, coord, animationType);\n  }\n\n  return result;\n}\n\nfunction getAnimateCfg(geomType, animationType, animateCfg) {\n  if (animateCfg === false || (0, _common.isObject)(animateCfg) && animateCfg[animationType] === false) {\n    return false;\n  }\n\n  var defaultCfg = _animate2[\"default\"].getAnimateCfg(geomType, animationType);\n\n  if (animateCfg && animateCfg[animationType]) {\n    return (0, _common.deepMix)({}, defaultCfg, animateCfg[animationType]);\n  }\n\n  return defaultCfg;\n}\n\nfunction addAnimate(cache, shapes, canvas) {\n  var animate;\n  var animateCfg; // the order of animation: leave -> update -> enter\n\n  var updateShapes = [];\n  var newShapes = [];\n  (0, _common.each)(shapes, function (shape) {\n    var result = cache[shape._id];\n\n    if (!result) {\n      newShapes.push(shape);\n    } else {\n      shape.set('cacheShape', result);\n      updateShapes.push(shape);\n      delete cache[shape._id];\n    }\n  }); // first do the leave animation\n\n  (0, _common.each)(cache, function (deletedShape) {\n    var className = deletedShape.className,\n        coord = deletedShape.coord,\n        _id = deletedShape._id,\n        attrs = deletedShape.attrs,\n        index = deletedShape.index,\n        type = deletedShape.type;\n    animateCfg = getAnimateCfg(className, 'leave', deletedShape.animateCfg);\n    if (animateCfg === false) return true;\n    animate = getAnimate(className, coord, 'leave', animateCfg.animation);\n\n    if ((0, _common.isFunction)(animate)) {\n      var tempShape = canvas.addShape(type, {\n        attrs: attrs,\n        index: index,\n        canvas: canvas,\n        className: className\n      });\n      tempShape._id = _id;\n      animate(tempShape, animateCfg, coord);\n    }\n  }); // then do the update animation\n\n  (0, _common.each)(updateShapes, function (updateShape) {\n    var className = updateShape.get('className');\n    animateCfg = getAnimateCfg(className, 'update', updateShape.get('animateCfg'));\n    if (animateCfg === false) return true;\n    var coord = updateShape.get('coord');\n    var cacheAttrs = updateShape.get('cacheShape').attrs;\n    var endState = diff(cacheAttrs, updateShape._attrs.attrs); // 判断如果属性相同的话就不进行变换\n\n    if (Object.keys(endState).length) {\n      animate = getAnimate(className, coord, 'update', animateCfg.animation);\n\n      if ((0, _common.isFunction)(animate)) {\n        animate(updateShape, animateCfg, coord);\n      } else {\n        updateShape.attr(cacheAttrs);\n        updateShape.animate().to({\n          attrs: endState,\n          duration: animateCfg.duration,\n          easing: animateCfg.easing,\n          delay: animateCfg.delay\n        }).onEnd(function () {\n          updateShape.set('cacheShape', null);\n        });\n      }\n    }\n  }); // last, enter animation\n\n  (0, _common.each)(newShapes, function (newShape) {\n    // 新图形元素的进场元素\n    var className = newShape.get('className');\n    var coord = newShape.get('coord');\n    animateCfg = getAnimateCfg(className, 'enter', newShape.get('animateCfg'));\n    if (animateCfg === false) return true;\n    animate = getAnimate(className, coord, 'enter', animateCfg.animation);\n\n    if ((0, _common.isFunction)(animate)) {\n      if (className === 'interval' && coord.isPolar && coord.transposed) {\n        var index = newShape.get('index');\n        var lastShape = updateShapes[index - 1];\n        animate(newShape, animateCfg, lastShape);\n      } else {\n        animate(newShape, animateCfg, coord);\n      }\n    }\n  });\n}\n\nfunction _getAnimateCfgByShapeType(type, chart) {\n  if (!type) {\n    return null;\n  }\n\n  var animateCfg = chart.get('animate');\n\n  if (type.indexOf('guide-tag') > -1) {\n    type = 'guide-tag';\n  }\n\n  if ((0, _common.isObject)(animateCfg)) {\n    return animateCfg[type];\n  }\n\n  if (animateCfg === false) {\n    return false;\n  }\n\n  return null;\n}\n\nfunction afterCanvasInit()\n/* chart */\n{\n  timeline = new _timeline[\"default\"]();\n  timeline.play();\n}\n\nfunction beforeCanvasDraw(chart) {\n  if (chart.get('animate') === false) {\n    return;\n  }\n\n  var isUpdate = chart.get('isUpdate');\n  var canvas = chart.get('canvas');\n  var coord = chart.get('coord');\n  var geoms = chart.get('geoms');\n  var caches = canvas.get('caches') || [];\n\n  if (caches.length === 0) {\n    isUpdate = false;\n  }\n\n  var cacheShapes = getShapes(geoms, chart, coord);\n\n  var _chart$get = chart.get('axisController'),\n      frontPlot = _chart$get.frontPlot,\n      backPlot = _chart$get.backPlot;\n\n  var axisShapes = frontPlot.get('children').concat(backPlot.get('children'));\n  var guideShapes = [];\n\n  if (chart.get('guideController')) {\n    guideShapes = chart.get('guideController').guideShapes;\n  }\n\n  var componentShapes = [];\n  axisShapes.concat(guideShapes).forEach(function (s) {\n    var className = s.get('className');\n\n    var animateCfg = _getAnimateCfgByShapeType(className, chart);\n\n    s.set('coord', coord);\n    s.set('animateCfg', animateCfg);\n    componentShapes.push(s);\n    cacheShapes.push(s);\n  });\n  canvas.set('caches', cache(cacheShapes));\n\n  if (isUpdate) {\n    addAnimate(caches, cacheShapes, canvas);\n  } else {\n    // do the appear animation\n    var animateCfg;\n    var animate;\n    (0, _common.each)(geoms, function (geom) {\n      var type = geom.get('type');\n      var geomCfg = (0, _common.isNil)(geom.get('animateCfg')) ? _getAnimateCfgByShapeType(type, chart) : geom.get('animateCfg');\n\n      if (geomCfg !== false) {\n        animateCfg = getAnimateCfg(type, 'appear', geomCfg);\n        animate = getAnimate(type, coord, 'appear', animateCfg.animation);\n\n        if ((0, _common.isFunction)(animate)) {\n          var shapes = geom.get('shapes');\n          (0, _common.each)(shapes, function (shape) {\n            animate(shape, animateCfg, coord);\n          });\n        } else if (GROUP_ANIMATION[type]) {\n          // do the default animation\n          animate = GroupAction[animateCfg.animation] || GROUP_ANIMATION[type](coord);\n          var yScale = geom.getYScale();\n          var zeroY = coord.convertPoint({\n            x: 0,\n            y: yScale.scale(geom.getYMinValue())\n          });\n          var container = geom.get('container');\n          animate && animate(container, animateCfg, coord, zeroY);\n        }\n      }\n    }); // do the animation of components\n\n    (0, _common.each)(componentShapes, function (shape) {\n      var animateCfg = shape.get('animateCfg');\n      var className = shape.get('className');\n\n      if (animateCfg && animateCfg.appear) {\n        // if user configure\n        var defaultCfg = _animate2[\"default\"].getAnimateCfg(className, 'appear');\n\n        var appearCfg = (0, _common.deepMix)({}, defaultCfg, animateCfg.appear);\n\n        var _animate = getAnimate(className, coord, 'appear', appearCfg.animation);\n\n        if ((0, _common.isFunction)(_animate)) {\n          _animate(shape, appearCfg, coord);\n        }\n      }\n    });\n  }\n}\n\nfunction afterCanvasDestroyed()\n/* chart */\n{\n  timeline.stop();\n}\n\nvar _default = {\n  afterCanvasInit: afterCanvasInit,\n  beforeCanvasDraw: beforeCanvasDraw,\n  afterCanvasDestroyed: afterCanvasDestroyed\n};\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _requestAnimationFrame = require(\"../util/requestAnimationFrame\");\n\nvar clock = typeof performance === 'object' && performance.now ? performance : Date;\n\nvar Timeline = /*#__PURE__*/function () {\n  function Timeline() {\n    this.anims = [];\n    this.time = null;\n    this.playing = false;\n    this.canvas = [];\n  }\n\n  var _proto = Timeline.prototype;\n\n  _proto.play = function play() {\n    var self = this;\n    self.time = clock.now();\n    self.playing = true;\n\n    function step() {\n      if (self.playing) {\n        (0, _requestAnimationFrame.requestAnimationFrame)(step);\n        self.update();\n      }\n    }\n\n    (0, _requestAnimationFrame.requestAnimationFrame)(step);\n  };\n\n  _proto.stop = function stop() {\n    this.playing = false;\n    this.time = null;\n    this.canvas = [];\n  };\n\n  _proto.pushAnim = function pushAnim(animInfo) {\n    this.anims.push(animInfo);\n\n    if (this.playing) {\n      return;\n    }\n\n    this.play();\n  };\n\n  _proto.update = function update() {\n    var currentTime = clock.now();\n    this.canvas = [];\n\n    if (!this.anims.length) {\n      this.stop();\n      return;\n    }\n\n    for (var i = 0; i < this.anims.length; i++) {\n      var propertyAnim = this.anims[i];\n\n      if (currentTime < propertyAnim.startTime || propertyAnim.hasEnded) {\n        continue;\n      }\n\n      var shape = propertyAnim.shape; // shape\n\n      if (shape.get('destroyed')) {\n        this.anims.splice(i, 1);\n        i--;\n        continue;\n      }\n\n      var startState = propertyAnim.startState,\n          endState = propertyAnim.endState,\n          interpolate = propertyAnim.interpolate,\n          duration = propertyAnim.duration;\n\n      if (currentTime >= propertyAnim.startTime && !propertyAnim.hasStarted) {\n        propertyAnim.hasStarted = true;\n\n        if (propertyAnim.onStart) {\n          propertyAnim.onStart();\n        }\n      }\n\n      var t = (currentTime - propertyAnim.startTime) / duration;\n      t = Math.max(0, Math.min(t, 1));\n      t = propertyAnim.easing(t);\n\n      if (propertyAnim.onFrame) {\n        propertyAnim.onFrame(t);\n      } else {\n        for (var key in interpolate) {\n          var diff = interpolate[key];\n          var value = diff(t);\n          var newValue = void 0;\n\n          if (key === 'points') {\n            newValue = [];\n            var aLen = Math.max(startState.points.length, endState.points.length);\n\n            for (var j = 0; j < aLen; j += 2) {\n              newValue.push({\n                x: value[j],\n                y: value[j + 1]\n              });\n            }\n          } else {\n            newValue = value;\n          }\n\n          shape._attrs.attrs[key] = newValue;\n          shape._attrs.bbox = null; // should clear calculated bbox\n        }\n      }\n\n      var canvas = shape.get('canvas');\n\n      if (this.canvas.indexOf(canvas) === -1) {\n        this.canvas.push(canvas);\n      }\n\n      if (propertyAnim.onUpdate) {\n        propertyAnim.onUpdate(t);\n      }\n\n      if (currentTime >= propertyAnim.endTime && !propertyAnim.hasEnded) {\n        propertyAnim.hasEnded = true;\n\n        if (propertyAnim.onEnd) {\n          propertyAnim.onEnd();\n        }\n      }\n\n      if (t === 1) {\n        // end\n        this.anims.splice(i, 1);\n        i--;\n      }\n    }\n\n    this.canvas.map(function (c) {\n      c.draw();\n      return c;\n    });\n    this.time = clock.now();\n  };\n\n  return Timeline;\n}();\n\nvar _default = Timeline;\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar Easing = _interopRequireWildcard(require(\"./easing\"));\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction plainArray(arr) {\n  var result = [];\n\n  for (var i = 0, len = arr.length; i < len; i++) {\n    if (arr[i]) {\n      result.push(arr[i].x);\n      result.push(arr[i].y);\n    }\n  }\n\n  return result;\n}\n\nfunction interpolateNumber(a, b) {\n  a = +a;\n  b -= a;\n  return function (t) {\n    return a + b * t;\n  };\n}\n\nfunction interpolateArray(a, b) {\n  var nb = b ? b.length : 0;\n  var na = a ? Math.min(nb, a.length) : 0;\n  var x = new Array(na);\n  var c = new Array(nb);\n  var i;\n\n  for (i = 0; i < na; ++i) {\n    x[i] = interpolateNumber(a[i], b[i]);\n  }\n\n  for (; i < nb; ++i) {\n    c[i] = b[i];\n  }\n\n  return function (t) {\n    for (i = 0; i < na; ++i) {\n      c[i] = x[i](t);\n    }\n\n    return c;\n  };\n}\n\nvar Animator = /*#__PURE__*/function () {\n  function Animator(shape, source, timeline) {\n    this.hasStarted = false;\n    this.hasEnded = false;\n    this.shape = shape;\n    this.source = source;\n    this.timeline = timeline;\n    this.animate = null;\n  } // delay, attrs, duration, easing\n\n\n  var _proto = Animator.prototype;\n\n  _proto.to = function to(cfg) {\n    if (cfg === void 0) {\n      cfg = {};\n    }\n\n    var delay = cfg.delay || 0;\n    var attrs = cfg.attrs || {};\n    var duration = cfg.duration || 1000;\n    var easing; // 缓动函数\n\n    if (typeof cfg.easing === 'function') {\n      easing = cfg.easing;\n    } else {\n      easing = Easing[cfg.easing] || Easing.linear;\n    }\n\n    var animInfo = {\n      shape: this.shape,\n      startTime: this.timeline.time + delay,\n      duration: duration,\n      easing: easing\n    };\n    var interpolate = {}; // 差值函数\n\n    for (var attrName in attrs) {\n      var startValue = this.source[attrName];\n      var endValue = attrs[attrName];\n\n      if (attrName === 'points') {\n        startValue = plainArray(startValue);\n        endValue = plainArray(endValue);\n        interpolate.points = interpolateArray(startValue, endValue);\n        this.source.points = startValue;\n        attrs.points = endValue;\n      } else if (attrName === 'matrix') {\n        interpolate.matrix = interpolateArray(startValue, endValue);\n      } else {\n        interpolate[attrName] = interpolateNumber(startValue, endValue);\n      }\n    }\n\n    animInfo.interpolate = interpolate;\n    animInfo.startState = this.source;\n    animInfo.endState = attrs;\n    animInfo.endTime = animInfo.startTime + duration;\n    this.timeline.pushAnim(animInfo);\n    this.animate = animInfo;\n    return this;\n  };\n\n  _proto.onFrame = function onFrame(callback) {\n    // 自定义每一帧动画的动作\n    if (this.animate) {\n      this.animate.onFrame = function (frame) {\n        callback(frame);\n      };\n    }\n\n    return this;\n  };\n\n  _proto.onStart = function onStart(callback) {\n    if (this.animate) {\n      this.animate.onStart = function () {\n        callback();\n      };\n    }\n\n    return this;\n  };\n\n  _proto.onUpdate = function onUpdate(callback) {\n    if (this.animate) {\n      this.animate.onUpdate = function (frame) {\n        callback(frame);\n      };\n    }\n\n    return this;\n  };\n\n  _proto.onEnd = function onEnd(callback) {\n    if (this.animate) {\n      this.animate.onEnd = function () {\n        callback();\n      };\n    }\n\n    return this;\n  };\n\n  return Animator;\n}();\n\nvar _default = Animator;\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nexports.linear = linear;\nexports.quadraticIn = quadraticIn;\nexports.quadraticOut = quadraticOut;\nexports.quadraticInOut = quadraticInOut;\nexports.cubicIn = cubicIn;\nexports.cubicOut = cubicOut;\nexports.cubicInOut = cubicInOut;\nexports.elasticIn = elasticIn;\nexports.elasticOut = elasticOut;\nexports.elasticInOut = elasticInOut;\nexports.backIn = backIn;\nexports.backOut = backOut;\nexports.backInOut = backInOut;\nexports.bounceIn = bounceIn;\nexports.bounceOut = bounceOut;\nexports.bounceInOut = bounceInOut;\n\nfunction linear(k) {\n  return k;\n}\n\nfunction quadraticIn(k) {\n  return k * k;\n}\n\nfunction quadraticOut(k) {\n  return k * (2 - k);\n}\n\nfunction quadraticInOut(k) {\n  if ((k *= 2) < 1) {\n    return 0.5 * k * k;\n  }\n\n  return -0.5 * (--k * (k - 2) - 1);\n}\n\nfunction cubicIn(k) {\n  return k * k * k;\n}\n\nfunction cubicOut(k) {\n  return --k * k * k + 1;\n}\n\nfunction cubicInOut(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\nfunction elasticIn(k) {\n  var s;\n  var a = 0.1;\n  var p = 0.4;\n  if (k === 0) return 0;\n  if (k === 1) return 1;\n\n  if (!p) {\n    p = 0.3;\n  }\n\n  if (!a || a < 1) {\n    a = 1;\n    s = p / 4;\n  } else {\n    s = p / (2 * Math.PI) * Math.asin(1 / a);\n  }\n\n  return -(a * Math.pow(2, 10 * (k -= 1)) * Math.sin((k - s) * (2 * Math.PI) / p));\n}\n\nfunction elasticOut(k) {\n  var s;\n  var a = 0.1;\n  var p = 0.4;\n  if (k === 0) return 0;\n  if (k === 1) return 1;\n\n  if (!p) {\n    p = 0.3;\n  }\n\n  if (!a || a < 1) {\n    a = 1;\n    s = p / 4;\n  } else {\n    s = p / (2 * Math.PI) * Math.asin(1 / a);\n  }\n\n  return a * Math.pow(2, -10 * k) * Math.sin((k - s) * (2 * Math.PI) / p) + 1;\n}\n\nfunction elasticInOut(k) {\n  var s;\n  var a = 0.1;\n  var p = 0.4;\n  if (k === 0) return 0;\n  if (k === 1) return 1;\n\n  if (!p) {\n    p = 0.3;\n  }\n\n  if (!a || a < 1) {\n    a = 1;\n    s = p / 4;\n  } else {\n    s = p / (2 * Math.PI) * Math.asin(1 / a);\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\nfunction backIn(k) {\n  var s = 1.70158;\n  return k * k * ((s + 1) * k - s);\n}\n\nfunction backOut(k) {\n  var s = 1.70158;\n  return (k = k - 1) * k * ((s + 1) * k + s) + 1;\n}\n\nfunction backInOut(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\nfunction bounceIn(k) {\n  return 1 - bounceOut(1 - k);\n}\n\nfunction bounceOut(k) {\n  if ((k /= 1) < 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  }\n\n  return 7.5625 * (k -= 2.625 / 2.75) * k + 0.984375;\n}\n\nfunction bounceInOut(k) {\n  if (k < 0.5) {\n    return bounceIn(k * 2) * 0.5;\n  }\n\n  return bounceOut(k * 2 - 1) * 0.5 + 0.5;\n}","\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _common = require(\"../util/common\");\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nvar defaultAnimationCfg = {\n  appear: {\n    duration: 450,\n    easing: 'quadraticOut'\n  },\n  // 'appear' animation options\n  update: {\n    duration: 300,\n    easing: 'quadraticOut'\n  },\n  // 'update' animation options\n  enter: {\n    duration: 300,\n    easing: 'quadraticOut'\n  },\n  // 'enter' animation options\n  leave: {\n    duration: 350,\n    easing: 'quadraticIn'\n  } // 'leave' animation options\n\n};\nvar Animate = {\n  defaultCfg: {},\n  Action: {},\n  getAnimation: function getAnimation(geomType, coord, animationType) {\n    var geomAnimateCfg = this.defaultCfg[geomType];\n\n    if (geomAnimateCfg) {\n      var animation = geomAnimateCfg[animationType];\n\n      if ((0, _common.isFunction)(animation)) {\n        return animation(coord);\n      }\n    }\n\n    return false;\n  },\n  getAnimateCfg: function getAnimateCfg(geomType, animationType) {\n    var defaultCfg = defaultAnimationCfg[animationType];\n    var geomConfig = this.defaultCfg[geomType];\n\n    if (geomConfig && geomConfig.cfg && geomConfig.cfg[animationType]) {\n      return (0, _common.deepMix)({}, defaultCfg, geomConfig.cfg[animationType]);\n    }\n\n    return defaultCfg;\n  },\n  registerAnimation: function registerAnimation(animationName, animationFun) {\n    var _extends2;\n\n    if (!this.Action) {\n      this.Action = {};\n    }\n\n    this.Action = _extends({}, this.Action, (_extends2 = {}, _extends2[animationName] = animationFun, _extends2));\n  }\n};\nvar _default = Animate;\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nexports.fadeIn = fadeIn;\n\nvar _common = require(\"../util/common\");\n\nvar _util = require(\"./util\");\n\n/**\n * Animation functions for shape\n * @author sima.zhang1990@gmail.com\n */\n\n/*\nfunction waveIn(shape, animateCfg, coord) {\n  const clip = Helpers.getClip(coord);\n  clip.set('canvas', shape.get('canvas'));\n  shape.attr('clip', clip);\n  const onEnd = function() {\n    shape.attr('clip', null);\n    clip.remove(true);\n  };\n  Helpers.doAnimation(clip, clip.endState, animateCfg, onEnd);\n}\n\nfunction scaleInX(shape, animateCfg) {\n  const box = shape.getBBox();\n  const points = shape.get('origin').points;\n  let x;\n  const y = (box.minY + box.maxY) / 2;\n\n  if (points[0].y - points[1].y > 0) { // 当顶点在零点之下\n    x = box.maxX;\n  } else {\n    x = box.minX;\n  }\n  const scaledMatrix = Helpers.getScaledMatrix(shape, [ x, y ], 'x');\n  Helpers.doAnimation(shape, { matrix: scaledMatrix }, animateCfg);\n}\n\nfunction scaleInY(shape, animateCfg) {\n  const box = shape.getBBox();\n  const points = shape.get('origin').points;\n  const x = (box.minX + box.maxX) / 2;\n  let y;\n\n  if (points[0].y - points[1].y <= 0) { // 当顶点在零点之下\n    y = box.maxY;\n  } else {\n    y = box.minY;\n  }\n  const scaledMatrix = Helpers.getScaledMatrix(shape, [ x, y ], 'x');\n  Helpers.doAnimation(shape, { matrix: scaledMatrix }, animateCfg);\n}\n*/\nfunction fadeIn(shape, animateCfg) {\n  var fillOpacity = (0, _common.isNil)(shape.attr('fillOpacity')) ? 1 : shape.attr('fillOpacity');\n  var strokeOpacity = (0, _common.isNil)(shape.attr('strokeOpacity')) ? 1 : shape.attr('strokeOpacity');\n  shape.attr('fillOpacity', 0);\n  shape.attr('strokeOpacity', 0);\n  var endState = {\n    fillOpacity: fillOpacity,\n    strokeOpacity: strokeOpacity\n  };\n  (0, _util.doAnimation)(shape, endState, animateCfg);\n}","\n\nexports.__esModule = true;\nexports.getCoordInfo = getCoordInfo;\nexports.getScaledMatrix = getScaledMatrix;\nexports.getAnimateParam = getAnimateParam;\nexports.doAnimation = doAnimation;\n\nvar _index = require(\"../graphic/index\");\n\nvar _common = require(\"../util/common\");\n\n/**\n * Utility\n * @author sima.zhang1990@gmail.com\n */\nfunction getCoordInfo(coord) {\n  var start = coord.start;\n  var end = coord.end;\n  return {\n    start: start,\n    end: end,\n    width: end.x - start.x,\n    height: Math.abs(end.y - start.y)\n  };\n}\n\nfunction getScaledMatrix(shape, v, direct) {\n  var scaledMatrix;\n  shape.apply(v);\n  var x = v[0];\n  var y = v[1];\n\n  if (direct === 'x') {\n    shape.transform([['t', x, y], ['s', 0.01, 1], ['t', -x, -y]]);\n    var matrix = shape.getMatrix();\n    scaledMatrix = _index.Matrix.transform(matrix, [['t', x, y], ['s', 100, 1], ['t', -x, -y]]);\n  } else if (direct === 'y') {\n    shape.transform([['t', x, y], ['s', 1, 0.01], ['t', -x, -y]]);\n\n    var _matrix = shape.getMatrix();\n\n    scaledMatrix = _index.Matrix.transform(_matrix, [['t', x, y], ['s', 1, 100], ['t', -x, -y]]);\n  } else if (direct === 'xy') {\n    shape.transform([['t', x, y], ['s', 0.01, 0.01], ['t', -x, -y]]);\n\n    var _matrix2 = shape.getMatrix();\n\n    scaledMatrix = _index.Matrix.transform(_matrix2, [['t', x, y], ['s', 100, 100], ['t', -x, -y]]);\n  }\n\n  return scaledMatrix;\n}\n\nfunction getAnimateParam(animateCfg, index, id) {\n  var result = {};\n\n  if (animateCfg.delay) {\n    result.delay = (0, _common.isFunction)(animateCfg.delay) ? animateCfg.delay(index, id) : animateCfg.delay;\n  }\n\n  result.easing = animateCfg.easing;\n  result.duration = animateCfg.duration;\n  result.delay = animateCfg.delay;\n  return result;\n}\n\nfunction doAnimation(shape, endState, animateCfg, callback) {\n  var id = shape._id;\n  var index = shape.get('index');\n\n  var _getAnimateParam = getAnimateParam(animateCfg, index, id),\n      easing = _getAnimateParam.easing,\n      delay = _getAnimateParam.delay,\n      duration = _getAnimateParam.duration;\n\n  var anim = shape.animate().to({\n    attrs: endState,\n    duration: duration,\n    delay: delay,\n    easing: easing\n  });\n\n  if (callback) {\n    anim.onEnd(function () {\n      callback();\n    });\n  }\n}","\n\nexports.__esModule = true;\nexports.groupWaveIn = groupWaveIn;\nexports.groupScaleInX = groupScaleInX;\nexports.groupScaleInY = groupScaleInY;\nexports.groupScaleInXY = groupScaleInXY;\nexports.shapesScaleInX = shapesScaleInX;\nexports.shapesScaleInY = shapesScaleInY;\nexports.shapesScaleInXY = shapesScaleInXY;\n\nvar _util = require(\"./util\");\n\nvar _helper = require(\"../util/helper\");\n\nvar _index = require(\"../graphic/index\");\n\n/**\n * Group animate functions\n * @author sima.zhang1990@gmail.com\n */\nfunction _groupScaleIn(container, animateCfg, coord, zeroY, type) {\n  var _getCoordInfo = (0, _util.getCoordInfo)(coord),\n      start = _getCoordInfo.start,\n      end = _getCoordInfo.end,\n      width = _getCoordInfo.width,\n      height = _getCoordInfo.height;\n\n  var x;\n  var y;\n  var clip = new _index.Shape.Rect({\n    attrs: {\n      x: start.x,\n      y: end.y,\n      width: width,\n      height: height\n    }\n  });\n\n  if (type === 'y') {\n    x = start.x + width / 2;\n    y = zeroY.y < start.y ? zeroY.y : start.y;\n  } else if (type === 'x') {\n    x = zeroY.x > start.x ? zeroY.x : start.x;\n    y = start.y + height / 2;\n  } else if (type === 'xy') {\n    if (coord.isPolar) {\n      x = coord.center.x;\n      y = coord.center.y;\n    } else {\n      x = (start.x + end.x) / 2;\n      y = (start.y + end.y) / 2;\n    }\n  }\n\n  var endMatrix = (0, _util.getScaledMatrix)(clip, [x, y], type);\n  clip.isClip = true;\n  clip.endState = {\n    matrix: endMatrix\n  };\n  clip.set('canvas', container.get('canvas'));\n  container.attr('clip', clip);\n\n  var onEnd = function onEnd() {\n    container.attr('clip', null);\n    clip.remove(true);\n  };\n\n  (0, _util.doAnimation)(clip, clip.endState, animateCfg, onEnd);\n}\n\nfunction _shapeScale(container, animateCfg, type) {\n  var shapes = container.get('children');\n  var x;\n  var y;\n  var endMatrix;\n\n  for (var i = 0, len = shapes.length; i < len; i++) {\n    var shape = shapes[i];\n    var box = shape.getBBox();\n    x = (box.minX + box.maxX) / 2;\n    y = (box.minY + box.maxY) / 2;\n    endMatrix = (0, _util.getScaledMatrix)(shape, [x, y], type);\n    (0, _util.doAnimation)(shape, {\n      matrix: endMatrix\n    }, animateCfg);\n  }\n}\n\nfunction groupScaleInX(container, animateCfg, coord, zeroY) {\n  _groupScaleIn(container, animateCfg, coord, zeroY, 'x');\n}\n\nfunction groupScaleInY(container, animateCfg, coord, zeroY) {\n  _groupScaleIn(container, animateCfg, coord, zeroY, 'y');\n}\n\nfunction groupScaleInXY(container, animateCfg, coord, zeroY) {\n  _groupScaleIn(container, animateCfg, coord, zeroY, 'xy');\n}\n\nfunction shapesScaleInX(container, animateCfg) {\n  _shapeScale(container, animateCfg, 'x');\n}\n\nfunction shapesScaleInY(container, animateCfg) {\n  _shapeScale(container, animateCfg, 'y');\n}\n\nfunction shapesScaleInXY(container, animateCfg) {\n  _shapeScale(container, animateCfg, 'xy');\n}\n\nfunction groupWaveIn(container, animateCfg, coord) {\n  var clip = (0, _helper.getClip)(coord);\n  clip.set('canvas', container.get('canvas'));\n  container.attr('clip', clip);\n\n  var onEnd = function onEnd() {\n    container.attr('clip', null);\n    clip.remove(true);\n  };\n\n  var endState = {};\n\n  if (coord.isPolar) {\n    var startAngle = coord.startAngle,\n        endAngle = coord.endAngle;\n    endState.endAngle = endAngle;\n    clip.attr('endAngle', startAngle);\n  } else {\n    var start = coord.start,\n        end = coord.end;\n    var width = Math.abs(start.x - end.x);\n    var height = Math.abs(start.y - end.y);\n\n    if (coord.isTransposed) {\n      clip.attr('height', 0);\n      endState.height = height;\n    } else {\n      clip.attr('width', 0);\n      endState.width = width;\n    }\n  }\n\n  (0, _util.doAnimation)(clip, endState, animateCfg, onEnd);\n}","\n\nvar _register = _interopRequireDefault(require(\"../register\"));\n\nvar _pan = _interopRequireDefault(require(\"./pan\"));\n\nvar _pinch = _interopRequireDefault(require(\"./pinch\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n// 注册交互\n_register[\"default\"].registerInteraction('pan', _pan[\"default\"]);\n\n_register[\"default\"].registerInteraction('pinch', _pinch[\"default\"]);","\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _common = require(\"../util/common\");\n\nvar _chart = _interopRequireDefault(require(\"../chart/chart\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n_chart[\"default\"]._Interactions = {};\n\n_chart[\"default\"].registerInteraction = function (type, constructor) {\n  _chart[\"default\"]._Interactions[type] = constructor;\n};\n\n_chart[\"default\"].getInteraction = function (type) {\n  return _chart[\"default\"]._Interactions[type];\n};\n\n_chart[\"default\"].prototype.interaction = function (type, cfg) {\n  var interactions = this._interactions || {};\n\n  if (interactions[type]) {\n    // if reprated, destroy last\n    interactions[type].destroy();\n  }\n\n  var Ctor = _chart[\"default\"].getInteraction(type);\n\n  var interact = new Ctor(cfg, this);\n  interactions[type] = interact;\n  this._interactions = interactions;\n  return this;\n};\n\n_chart[\"default\"].prototype.clearInteraction = function (type) {\n  var interactions = this._interactions;\n  if (!interactions) return;\n\n  if (type) {\n    interactions[type] && interactions[type].destroy();\n    delete interactions[type];\n  } else {\n    (0, _common.each)(interactions, function (interaction, key) {\n      interaction.destroy();\n      delete interactions[key];\n    });\n  }\n\n  return this;\n};\n\nvar _default = _chart[\"default\"];\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _base = _interopRequireDefault(require(\"./base\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar Pan = /*#__PURE__*/function (_Base) {\n  _inheritsLoose(Pan, _Base);\n\n  function Pan() {\n    return _Base.apply(this, arguments) || this;\n  }\n\n  var _proto = Pan.prototype;\n\n  _proto.getDefaultCfg = function getDefaultCfg() {\n    return {\n      type: 'pan',\n      startEvent: 'panstart',\n      processEvent: 'pan',\n      endEvent: 'panend'\n    };\n  };\n\n  _proto.start = function start() {\n    var context = this.context;\n    context.start();\n  };\n\n  _proto.process = function process(e) {\n    var direction = e.direction,\n        deltaX = e.deltaX;\n\n    if (direction === 'up' || direction === 'down') {\n      return;\n    }\n\n    e.preventDefault && e.preventDefault();\n    var context = this.context;\n    var chart = context.chart;\n    var coord = chart.get('coord');\n    var start = coord.start,\n        end = coord.end;\n    var coordWidth = end.x - start.x;\n    var ratio = deltaX / coordWidth;\n    context.doMove(ratio);\n  };\n\n  return Pan;\n}(_base[\"default\"]);\n\nvar _default = Pan;\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _common = require(\"../../util/common\");\n\nvar _context = _interopRequireDefault(require(\"./context\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar Base = /*#__PURE__*/function () {\n  var _proto = Base.prototype;\n\n  // 交互的上下文\n  _proto.getDefaultCfg = function getDefaultCfg() {\n    return {};\n  };\n\n  _proto.getInteractionContext = function getInteractionContext(chart) {\n    var interactionContext = chart.get('interactionContext');\n\n    if (interactionContext) {\n      return interactionContext;\n    }\n\n    interactionContext = new _context[\"default\"](chart);\n    chart.set('interactionContext', interactionContext);\n    return interactionContext;\n  };\n\n  function Base(cfg, chart) {\n    var _this = this;\n\n    _defineProperty(this, \"type\", '');\n\n    _defineProperty(this, \"startEvent\", 'touchstart');\n\n    _defineProperty(this, \"processEvent\", 'touchmove');\n\n    _defineProperty(this, \"endEvent\", 'touchend');\n\n    _defineProperty(this, \"resetEvent\", null);\n\n    _defineProperty(this, \"context\", null);\n\n    _defineProperty(this, \"_start\", function (ev) {\n      _this.preStart && _this.preStart(ev);\n\n      _this.start(ev);\n\n      _this.onStart && _this.onStart(ev);\n    });\n\n    _defineProperty(this, \"_process\", function (ev) {\n      _this.preProcess && _this.preProcess(ev);\n\n      _this.process(ev);\n\n      _this.onProcess && _this.onProcess(ev);\n    });\n\n    _defineProperty(this, \"_end\", function (ev) {\n      _this.preEnd && _this.preEnd(ev);\n\n      _this.end(ev);\n\n      _this.onEnd && _this.onEnd(ev);\n    });\n\n    _defineProperty(this, \"_reset\", function (ev) {\n      _this.preReset && _this.preReset(ev);\n\n      _this.reset(ev);\n\n      _this.onReset && _this.onReset(ev);\n    });\n\n    (0, _common.mix)(this, this.getDefaultCfg(), cfg);\n    this.context = this.getInteractionContext(chart);\n    this.chart = chart; // 只处理range, 暂时先这么处理后面再看情况调整\n\n    var range = this.range;\n\n    if (range) {\n      this.context.range = range;\n    }\n\n    this._bindEvents(chart);\n  }\n\n  _proto._bindEvents = function _bindEvents(chart) {\n    var startEvent = this.startEvent,\n        processEvent = this.processEvent,\n        endEvent = this.endEvent,\n        resetEvent = this.resetEvent;\n    var canvas = chart.get('canvas'); // 统一绑定事件\n\n    canvas.on(startEvent, this._start);\n    canvas.on(processEvent, this._process);\n    canvas.on(endEvent, this._end);\n    canvas.on(resetEvent, this._reset);\n  };\n\n  _proto._clearEvents = function _clearEvents() {\n    var chart = this.chart,\n        startEvent = this.startEvent,\n        processEvent = this.processEvent,\n        endEvent = this.endEvent,\n        resetEvent = this.resetEvent;\n    var canvas = chart.get('canvas'); // 统一绑定事件\n\n    canvas.off(startEvent, this._start);\n    canvas.off(processEvent, this._process);\n    canvas.off(endEvent, this._end);\n    canvas.off(resetEvent, this._start);\n  };\n\n  // override\n  _proto.start = function start() {} // override\n  ;\n\n  _proto.process = function process() {} // override\n  ;\n\n  _proto.end = function end() {} // override\n  ;\n\n  _proto.reset = function reset() {};\n\n  _proto.destroy = function destroy() {\n    this.context.destroy();\n\n    this._clearEvents();\n  };\n\n  return Base;\n}();\n\nvar _default = Base;\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _scale = require(\"../../scale\");\n\nvar _array = require(\"../../util/array\");\n\nvar _const = require(\"../../chart/const\");\n\nvar _common = require(\"../../util/common\");\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// 判断新老values是否相等,这里只要判断前后是否相等即可\nfunction isValuesEqual(values, newValues) {\n  if (values.length !== newValues.length) {\n    return false;\n  }\n\n  var lastIndex = values.length - 1;\n  return values[0] === newValues[0] && values[lastIndex] === newValues[lastIndex];\n} // 不同交互之间共享的上下文\n\n\nvar defaultRange = [0, 1];\n\nvar Context = /*#__PURE__*/function () {\n  // 最开始的原始值\n  // 当前显示的范围\n  // 缩放最小的点数\n  // 最小的缩放比例, 默认通过minCount计算\n  // minScale = 0.01;\n  // 交互开始时,ticks个数,主要为了每次缩放后,更新ticks个数\n  // lastTickCount;\n  function Context(chart) {\n    var _this = this;\n\n    _defineProperty(this, \"chart\", null);\n\n    _defineProperty(this, \"values\", null);\n\n    _defineProperty(this, \"range\", defaultRange);\n\n    _defineProperty(this, \"startRange\", defaultRange);\n\n    _defineProperty(this, \"minCount\", 10);\n\n    _defineProperty(this, \"_afterinit\", function () {\n      // 初始化value值\n      var scale = _this.getPinchScale(); // 记录原始全量数据\n\n\n      var values = [].concat(scale.values);\n      _this.values = values; // 最小的缩放比例\n\n      if (!_this.minScale) {\n        _this.minScale = _this.minCount / values.length;\n      } // 初始化的时候有设置range,则初始化成默认比例\n\n\n      if (_this.range !== defaultRange) {\n        _this.updateRange(_this.range);\n\n        _this.updateTicks();\n      }\n    });\n\n    _defineProperty(this, \"_afterdatachange\", function () {\n      _this.updateRange(_this.range);\n    });\n\n    this.chart = chart;\n\n    this._initEvent(chart);\n  }\n\n  var _proto = Context.prototype;\n\n  _proto._initEvent = function _initEvent(chart) {\n    // 在整体初始化后还需要设置一些初始状态\n    chart.on(_const.EVENT_AFTER_INIT, this._afterinit);\n    chart.on(_const.EVENT_AFTER_DATA_CHANGE, this._afterdatachange);\n  } // 缩放的主轴scale\n  ;\n\n  _proto.getPinchScale = function getPinchScale() {\n    var chart = this.chart; // 默认缩放x轴\n\n    var scale = chart.getXScale();\n    return scale;\n  } // 跟随轴的scale\n  ;\n\n  _proto.getFollowScale = function getFollowScale() {\n    var chart = this.chart; // 默认缩放x轴\n\n    var scales = chart.getYScales() || [];\n    return scales[0];\n  };\n\n  _proto.start = function start() {\n    var range = this.range;\n    var scale = this.getPinchScale();\n    var start = range[0],\n        end = range[1]; // 记录交互起始的范围\n\n    this.startRange = [start, end]; // 记录开始时的ticks个数\n\n    this.lastTickCount = scale.tickCount;\n  };\n\n  _proto.doZoom = function doZoom(leftScale, rightScale, zoom) {\n    var range = this.startRange,\n        minScale = this.minScale;\n    var start = range[0],\n        end = range[1];\n    var zoomOffset = 1 - zoom;\n    var rangeLen = end - start;\n    var rangeOffset = rangeLen * zoomOffset;\n    var leftOffset = rangeOffset * leftScale;\n    var rightOffset = rangeOffset * rightScale;\n    var newStart = Math.max(0, start - leftOffset);\n    var newEnd = Math.min(1, end + rightOffset);\n    var newRange = [newStart, newEnd]; // 如果已经到了最小比例,则不能再继续再放大\n\n    if (newEnd - newStart < minScale) {\n      return;\n    }\n\n    this.updateRange(newRange);\n  };\n\n  _proto.doMove = function doMove(ratio) {\n    // 不管是0, 还是其他,都不用处理\n    if (!ratio) return;\n    var range = this.startRange;\n    var start = range[0],\n        end = range[1];\n    var rangeLen = end - start;\n    var rangeOffset = rangeLen * ratio;\n    var newStart = start - rangeOffset;\n    var newEnd = end - rangeOffset; // 处理边界值\n\n    var newRange;\n\n    if (newStart < 0) {\n      newRange = [0, rangeLen];\n    } else if (newEnd > 1) {\n      newRange = [1 - rangeLen, 1];\n    } else {\n      newRange = [newStart, newEnd];\n    }\n\n    this.updateRange(newRange);\n  };\n\n  _proto.updateRange = function updateRange(range) {\n    var values = this.values; // 0, 1 的范围之间\n\n    var start = range[0],\n        end = range[1]; // start 不能小于0\n\n    start = Math.max(0, start); // end 不能大于1\n\n    end = Math.min(1, end); // 设置当前的范围\n\n    this.range = [start, end];\n    var len = values.length;\n    var valueStart = start * len;\n    var valueEnd = end * len; // 从原始数据里截取需要显示的数据\n\n    var newValues = values.slice(valueStart, valueEnd);\n    this.repaint(newValues);\n  };\n\n  _proto.repaint = function repaint(newValues) {\n    var chart = this.chart;\n    var scale = this.getPinchScale();\n    var currentValues = scale.values,\n        ticks = scale.ticks; // 如果新数组和当前显示的数组相同,则不更新\n\n    if (isValuesEqual(currentValues, newValues)) {\n      return;\n    } // 更新主轴values\n\n\n    this.updateScale(scale, {\n      ticks: ticks,\n      values: newValues\n    });\n    this.updateFollowScale(scale, newValues);\n    chart.repaint();\n  };\n\n  _proto.updateFollowScale = function updateFollowScale(pinchScale, pinchValues) {\n    var chart = this.chart;\n    var followScale = this.getFollowScale();\n    var pinchField = pinchScale.field,\n        pinchScaleType = pinchScale.type;\n    var followField = followScale.field; // 根据主轴的value值,找到所有从轴的value值\n\n    var values = []; // 转成map,让查找性能更高\n\n    var pinchValueMap = {};\n    pinchValues.forEach(function (item) {\n      pinchValueMap[item] = true;\n    });\n    var data = chart.get('data');\n    data.forEach(function (item) {\n      if (pinchScaleType === 'timeCat') {\n        var value = (0, _common.toTimeStamp)(item[pinchField]);\n\n        if (pinchValueMap[value]) {\n          values.push(item[followField]);\n        }\n      }\n    });\n\n    var _getRange = (0, _array.getRange)(values),\n        min = _getRange.min,\n        max = _getRange.max;\n\n    this.updateScale(followScale, {\n      min: min,\n      max: max,\n      nice: true\n    });\n  };\n\n  _proto.updateScale = function updateScale(scale, cfg) {\n    if (!scale) {\n      return;\n    }\n\n    scale.change(cfg);\n  } // 上一次的tick个数\n  ;\n\n  _proto.updateTicks = function updateTicks() {\n    var chart = this.chart,\n        values = this.values;\n    var scale = this.getPinchScale();\n    var currentValues = scale.values,\n        tickCount = scale.tickCount; // 根据当前数据的比例,和定义的tickCount计算应该需要多少个ticks\n\n    var newTickCount = Math.round(tickCount * values.length / currentValues.length);\n    var catTicks = (0, _scale.getTickMethod)('cat');\n    var ticks = catTicks({\n      tickCount: newTickCount,\n      values: values\n    });\n    this.updateScale(scale, {\n      ticks: ticks,\n      values: currentValues\n    }); // 更新完后,需要重新绘制一次\n\n    chart.repaint();\n  };\n\n  _proto.destroy = function destroy() {\n    var chart = this.chart;\n    chart.off(_const.EVENT_AFTER_INIT, this._afterinit);\n    chart.off(_const.EVENT_AFTER_DATA_CHANGE, this._afterdatachange);\n  };\n\n  return Context;\n}();\n\nvar _default = Context;\nexports[\"default\"] = _default;","\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _base = _interopRequireDefault(require(\"./base\"));\n\nvar _common = require(\"../../util/common\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar Pinch = /*#__PURE__*/function (_Base) {\n  _inheritsLoose(Pinch, _Base);\n\n  var _proto = Pinch.prototype;\n\n  _proto.getDefaultCfg = function getDefaultCfg() {\n    return {\n      type: 'pinch',\n      startEvent: 'pinchstart',\n      processEvent: 'pinch',\n      endEvent: 'pinchend'\n    };\n  };\n\n  function Pinch(cfg, chart) {\n    var _this;\n\n    _this = _Base.call(this, cfg, chart) || this;\n\n    var _assertThisInitialize = _assertThisInitialized(_this),\n        context = _assertThisInitialize.context;\n\n    (0, _common.mix)(context, cfg);\n    return _this;\n  }\n\n  _proto.start = function start() {\n    var context = this.context;\n    context.start();\n  };\n\n  _proto.process = function process(e) {\n    e.preventDefault && e.preventDefault();\n    var zoom = e.zoom,\n        center = e.center;\n    var context = this.context;\n    var chart = context.chart;\n    var coord = chart.get('coord');\n    var start = coord.start,\n        end = coord.end;\n    var coordWidth = end.x - start.x;\n    var leftLen = Math.abs(center.x - start.x);\n    var rightLen = Math.abs(end.x - center.x); // 计算左右缩放的比例\n\n    var leftScale = leftLen / coordWidth;\n    var rightScale = rightLen / coordWidth;\n    context.doZoom(leftScale, rightScale, zoom);\n  };\n\n  _proto.end = function end() {\n    // 缩放完成后再更新ticks\n    var context = this.context;\n    context.updateTicks();\n  };\n\n  return Pinch;\n}(_base[\"default\"]);\n\nvar _default = Pinch;\nexports[\"default\"] = _default;"]}