{"version":3,"sources":["unknown"],"names":["global","factory","exports","module","define","amd","self","echarts","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__extends","__","constructor","prototype","create","__assign","assign","t","s","i","n","arguments","length","call","apply","__spreadArrays","il","r","k","a","j","jl","Browser","firefox","ie","edge","weChat","Env","browser","node","wxa","worker","canvasSupported","svgSupported","touchEventsSupported","pointerEventsSupported","domSupported","env","wx","getSystemInfoSync","document","navigator","detect","userAgent","ua","match","test","version","createElement","getContext","SVGRect","window","BUILTIN_OBJECT","TYPED_ARRAY","objToString","toString","arrayProto","nativeForEach","forEach","nativeFilter","filter","nativeSlice","slice","nativeMap","map","ctorFunction","protoFunction","methods","$override","name","fn","idStart","guid","logError","args","_i","console","error","clone","source","result","typeStr","isPrimitive","len","Ctor","from","isDom","key","merge","target","overwrite","isObject","targetProp","sourceProp","isArray","isBuiltInObject","extend","defaults","overlay","keysArr","keys","createCanvas","indexOf","array","value","inherits","clazz","baseClazz","clazzPrototype","F","prop","superClass","mixin","override","getOwnPropertyNames","keyList","isArrayLike","data","each","arr","cb","context","push","reduce","memo","obj","bindPolyfill","func","concat","bind","isFunction","curry","isString","isStringSafe","isNumber","type","isTypedArray","nodeType","ownerDocument","isGradientObject","colorStops","isPatternObject","image","isRegExp","eqNaN","retrieve","retrieve2","value0","value1","retrieve3","value2","normalizeCssArray","val","assert","condition","message","Error","trim","str","replace","primitiveKey","setAsPrimitive","HashMap","isArr","thisMap","visit","set","get","removeKey","createHashMap","createObject","proto","properties","StyleCtor","hasOwn","own","noop","x","y","clone$1","v","add","out","v1","v2","sub","Math","sqrt","lenSquare","scale","normalize","distance","dist","distanceSquare","distSquare","lerp","applyTransform","m","min","max","Param","e","topTarget","Draggable","handler","on","_dragStart","_drag","_dragEnd","draggingTarget","draggable","parent","_draggingTarget","dragging","_x","offsetX","_y","offsetY","dispatchToElement","event","dx","dy","drift","dropTarget","findHover","lastDropTarget","_dropTarget","Eventful","eventProcessors","_$eventProcessor","query","_$handlers","_h","eventProcessor","normalizeQuery","h","wrap","ctx","callAtLast","zrEventfulCallAtLast","lastIndex","lastWrap","splice","isSilent","eventName","off","eventType","newList","l","trigger","argLen","hItem","afterTrigger","triggerWithContext","LN2","log","determinant","rows","rank","rowStart","rowMask","colMask","detCache","cacheKey","fullRank","colStart","round","subRowMask","subRowStart","sum","colLocalIdx","colTag","buildTransformer","src","dest","mA","det","vh","srcPointX","srcPointY","pk","EVENT_SAVED_PROP","transformCoordWithViewport","el","inX","inY","inverse","getBoundingClientRect","isCanvasEl","saved","markers","prepareCoordMarkers","transformer","preparePointerTransformer","propLR","propTB","marker","stl","style","idxLR","idxTB","cssText","join","appendChild","transformerName","oldSrcCoords","srcCoords","destCoords","oldCoordTheSame","rect","ii","left","top","offsetLeft","offsetTop","nodeName","toUpperCase","isDomLevel2","addEventListener","MOUSE_EVENT_REG","_calcOut","clientToLocal","calculate","calculateZrXY","layerX","zrX","zrY","layerY","ex","clientX","ey","clientY","box","getNativeEvent","normalizeEvent","isTouch","wheelDelta","getWheelDeltaMayPolyfill","zrDelta","detail","touch","targetTouches","changedTouches","button","which","undefined","rawWheelDelta","deltaX","deltaY","delta","abs","sign","opt","attachEvent","removeEventListener","detachEvent","stop","preventDefault","stopPropagation","cancelBubble","returnValue","GestureMgr","_track","recognize","root","_doTrack","_recognize","clear","touches","trackItem","points","pos","recognizers","gestureInfo","dist$1","pointPair","center","pinch","tracks","trackLen","pinchEnd","pinchPre","pinchScale","isFinite","pinchCenter","pinchX","pinchY","SILENT","makeEventPacket","eveType","targetInfo","gestureEvent","zrByTouch","stopEvent","EmptyProxy","_super","_this","dispose","setCursor","HoveredResult","handlerNames","Handler","storage","painter","proxy","painterRoot","_hovered","setHandlerProxy","_draggingMgr","mousemove","isOutside","isOutsideBoundary","lastHovered","lastHoveredTarget","__zr","hovered","hoveredTarget","cursor","mouseout","eventControl","zrEventControl","zrIsToLocalDOM","resize","dispatch","eventArgs","setCursorStyle","cursorStyle","silent","eventKey","eventPacket","__hostTarget","eachOtherLayer","layer","exclude","list","getDisplayList","hoverCheckResult","ignore","isHover","processGesture","stage","_gestureMgr","gestureMgr","dom","res","_downEl","_downPoint","_upEl","displayable","rectHover","ignoreClip","clipPath","getClipPath","contain","hostEl","handlerInstance","getWidth","getHeight","create$1","identity","copy","mul","m1","m2","out0","out1","out2","out3","out4","out5","translate","rotate","rad","aa","ac","atx","ab","ad","aty","st","sin","ct","cos","scale$1","vx","vy","invert","mIdentity","EPSILON","isNotAroundZero","scaleTmp","tmpTransform","originTransform","Transformable","setPosition","setScale","scaleX","scaleY","setOrigin","originX","originY","needLocalTransform","rotation","updateTransform","parentHasTransform","transform","getLocalTransform","_resolveGlobalScaleRatio","globalScaleRatio","getGlobalScale","relX","relY","sx","sy","invTransform","getComputedTransform","transformNode","ancestors","pop","setLocalTransform","atan2","PI","decomposeTransform","ox","oy","transformCoordToLocal","transformCoordToGlobal","getLineScale","initDefaultProps","easing","linear","quadraticIn","quadraticOut","quadraticInOut","cubicIn","cubicOut","cubicInOut","quarticIn","quarticOut","quarticInOut","quinticIn","quinticOut","quinticInOut","sinusoidalIn","sinusoidalOut","sinusoidalInOut","exponentialIn","pow","exponentialOut","exponentialInOut","circularIn","circularOut","circularInOut","elasticIn","asin","elasticOut","elasticInOut","backIn","backOut","backInOut","bounceIn","bounceOut","bounceInOut","Clip","opts","_initialized","_startTime","_pausedTime","_paused","_life","life","_delay","delay","loop","gap","onframe","ondestroy","onrestart","step","globalTime","deltaTime","percent","easing$1","easingFunc","schedule","_restart","remainder","pause","resume","Entry","LinkedList","_len","insert","entry","insertEntry","head","tail","next","prev","remove","LRU","maxSize","_list","_maxSize","_map","put","removed","_lastRemovedEntry","leastUsedEntry","kCSSColorTable","clampCssByte","clampCssFloat","f","parseCssInt","charAt","parseFloat","parseInt","parseCssFloat","cssHueToRgb","setRgba","g","copyRgba","colorCache","lastRemovedArr","putToCache","colorStr","rgbaArr","parse","cached","toLowerCase","strLen","iv","op","ep","fname","substr","params","split","alpha","hsla2rgba","hsla","rgba","lift","color","level","colorArr","stringify","arrColor","lum","backgroundLum","arraySlice","interpolateNumber","p0","p1","interpolate1DArray","interpolate2DArray","len2","add1DArray","add2DArray","fillArray","val0","val1","arrDim","arr0","arr1","arr0Len","arr1Len","isPreviousLarger","isNaN","is1DArraySame","catmullRomInterpolate","p2","p3","t2","t3","v0","catmullRomInterpolate1DArray","catmullRomInterpolate2DArray","cloneValue","ret","rgba2String","floor","guessArrayDim","tmpRgba","Track","propName","keyframes","maxTime","interpolable","_needsSort","_isAllValueEqual","_lastFrame","_lastFramePercent","isFinished","_finished","setFinished","_additiveTrack","needsAnimate","getAdditiveTrack","addKeyframe","time","arrayDim","lastFrame","colorArray","isValueColor","kf","prepare","additiveTrack","kfs","sort","kfsLen","lastKf","startValue","additiveValue","isAdditive","valueKey","kfsNum","frameIdx","start","nextFrame","frame","range","w","targetArr","_additiveValue","useSpline","_addToTarget","Animator","additiveTo","_tracks","_trackKeys","_maxTime","_started","_clip","_target","_loop","_additiveAnimators","getTarget","changeTarget","when","props","whenWithKeys","propNames","track","initialValue","_getAdditiveTrack","lastFinalKf","isPaused","_doneCallback","_setTracksFinished","doneList","_doneList","_abortedCallback","animation","abortedList","_abortedList","removeClip","tracksKeys","trackName","additiveAnimators","getTrack","forceAnimate","clip","stillHasAdditiveAnimator","onframeList","_onframeList","addClip","forwardToLast","during","done","aborted","getClip","stopTracks","allAborted","saveFinalToTarget","trackKeys","__changeFinalValue","finalProps","Point","other","equal","scalar","scaleAndAdd","dot","negate","toArray","fromArray","input","onet","mathMin","mathMax","lt","rb","lb","rt","minTv","maxTv","BoundingRect","width","height","union","calculateTransform","intersect","mtv","ax0","ax1","ay0","ay1","bx0","bx1","by0","by1","overlap","dMin","Infinity","dMax","d0","d1","d2","d3","plain","isZero","tx","ty","maxX","maxY","textWidthCache","DEFAULT_FONT","_ctx","_cachedFont","defaultMeasureText","text","font","measureText","methods$1","cacheOfFont","innerGetBoundingRect","textAlign","textBaseline","getLineHeight","adjustTextX","adjustTextY","getBoundingRect","textLines","uniondRect","verticalAlign","parsePercent","maxValue","lastIndexOf","calculateTextPosition","textPosition","position","halfHeight","textVerticalAlign","align","dpr","devicePixelRatio","screen","deviceXDPI","logicalXDPI","DARK_MODE_THRESHOLD","DARK_LABEL_COLOR","LIGHT_LABEL_COLOR","LIGHTER_LABEL_COLOR","PRESERVED_NORMAL_STATE","PRIMARY_STATES_KEYS","DEFAULT_ANIMATABLE_MAP","tmpTextPosCalcRes","tmpBoundingRect","Element","id","animators","currentStates","states","_init","attr","markRedraw","beforeUpdate","afterUpdate","update","__dirty","updateInnerText","forceUpdate","textEl","_textContent","textConfig","isLocal","local","attachedTransform","textStyleChanged","innerOrigin","layoutRect","textOrigin","origin","relOriginX","relOriginY","textOffset","offset","isInside","inside","innerTextDefaultStyle","_innerTextDefaultStyle","textFill","textStroke","autoStroke","canBeInsideText","insideFill","insideStroke","getInsideTextFill","getInsideTextStroke","outsideFill","outsideStroke","getOutsideFill","getOutsideStroke","fill","stroke","setDefaultTextStyle","dirtyStyle","isDarkMode","backgroundColor","getBackgroundColor","isDark","traverse","attrKV","setTextConfig","setTextContent","setClipPath","extra","hide","show","keyOrObj","saveCurrentToNormalState","toState","_innerSaveToNormal","normalState","_normalState","animator","fromStateTransition","__fromStateTransition","targetName","_savePrimaryToNormal","primaryKeys","hasState","getState","ensureState","clearStates","noAnimation","useState","stateName","keepCurrentStates","toNormalState","hasStates","animationCfg","stateTransition","state","stateProxy","useHoverLayer","hoverLayer","_toggleHoverLayerFlag","_applyStateObj","__inHover","duration","_textGuide","_updateAnimationTargets","REDARAW_BIT","useStates","stateObjects","notChange","stateObj","mergedState","_mergeStates","removeState","idx","replaceState","oldState","newState","forceAdd","newStateExists","toggleState","enable","mergedTextConfig","transition","needsRestoreToNormal","transitionTarget","hasTransition","propNeedsTransition","_transitionState","_attachComponent","componentEl","zr","addSelfToZr","_detachComponent","removeSelfFromZr","_clipPath","removeClipPath","getTextContent","previousTextContent","removeTextContent","cfg","getTextGuideLine","setTextGuideLine","guideLine","removeTextGuideLine","textGuide","refreshHover","refresh","dirty","inHover","textContent","addAnimator","removeAnimator","animate","updateDuringAnimation","wakeUp","stopAnimation","scope","leftAnimators","animateTo","animationProps","animateFrom","getPaintRect","elProto","isGroup","logs","logDeprecatedError","xKey","yKey","warn","createLegacyProperty","privateKey","defineProperty","enhanceArray","animatable","reverse","animateToShallow","finishCount","doneHappened","cfgDone","cfgAborted","doneCb","abortedCb","force","copyArrShallow","is2DArray","copyValue","sourceArr","len0","len1","topKey","animatableKeys","changedKeys","targetKeys","additive","setToFinal","animateAll","innerKey","keyLen","existsAnimators","existsAnimatorsOnSameTarget","revertedSource","reversedTarget","sourceClone","DEFAULT_MIN_MERGE","DEFAULT_MIN_GALLOPING","minRunLength","makeAscendingRun","lo","hi","compare","runHi","reverseRun","binaryInsertionSort","pivot","right","mid","gallopLeft","hint","lastOffset","maxOffset","tmp","gallopRight","TimSort","minGallop","runStart","runLength","stackSize","pushRun","_runStart","_runLength","mergeRuns","mergeAt","forceMergeRuns","start1","length1","start2","length2","mergeLow","mergeHigh","cursor1","cursor2","_minGallop","count1","count2","exit","customCursor","customDest","remaining","ts","minRun","invalidZErrorLogged","logInvalidZError","shapeCompareFunc","zlevel","z","z2","Storage","_roots","_displayList","_displayListLen","displayableSortFunc","includeIgnore","displayList","updateDisplayList","roots","_updateAndAddDisplayable","clipPaths","userSetClipPath","currentClipPath","parentClipPath","childrenRef","children","child","disp","__clipPaths","decalEl","getDecalElement","addRoot","delRoot","delAllRoots","getRoots","requestAnimationFrame","msRequestAnimationFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","setTimeout","requestAnimationFrame$1","Animation","_running","_time","_pauseStart","_clipsHead","_clipsTail","notTriggerFrameAndStageUpdate","Date","getTime","nextClip","finished","_startLoop","options","TOUCH_CLICK_DELAY","globalEventSupported","localNativeListenerNames","mouseHandlerNames","touchHandlerNames","pointerEventNameMap","pointerdown","pointerup","pointermove","pointerout","pointerHandlerNames","nm","mouse","pointer","globalNativeListenerNames","wheelEventSupported","isPointerFromTouch","pointerType","setTouchTimer","touching","touchTimer","clearTimeout","markTouch","normalizeGlobalEvent","instance","FakeGlobalEvent","isLocalEl","elTmp","domBelongToZr","parentNode","stopImmediatePropagation","currentTarget","localDOMHandlers","mousedown","__mayPointerCapture","downPoint","__togglePointerCapture","mouseup","__pointerCapturing","element","toElement","relatedTarget","wheel","mousewheel","touchstart","__lastTouchMoment","touchmove","touchend","click","globalDOMHandlers","pointerCaptureReleasing","mountLocalDOMEventListeners","domHandlers","nativeEventName","mountSingleDOMEventListener","mountGlobalDOMEventListeners","mount","nativeEventListener","capture","listener","mounted","listenerOpts","domTarget","unmountDOMEventListeners","DOMHandlerScope","HandlerDomProxy","_localHandlerScope","_globalHandlerScope","isPointerCapturing","globalHandlerScope","STYLE_MAGIC_KEY","random","DEFAULT_COMMON_STYLE","shadowBlur","shadowOffsetX","shadowOffsetY","shadowColor","opacity","blend","DEFAULT_COMMON_ANIMATION_PROPS","PRIMARY_STATES_KEYS$1","Displayable","useStyle","beforeBrush","afterBrush","innerBeforeBrush","innerAfterBrush","shouldBePainted","viewWidth","viewHeight","considerClipPath","considerAncestors","invisible","culling","isDisplayableCulled","isZeroArea","parent_1","rectContain","coord","_paintRect","elRect","shadowSize","tolerance","dirtyRectTolerance","ceil","setPrevPaintRect","paintRect","_prevPaintRect","getPrevPaintRect","animateStyle","targetKey","setStyle","STYLE_CHANGED_BIT","_rect","styleChanged","styleUpdated","createStyle","__hoverStyle","isStyleObject","_mergeStyle","targetStyle","sourceStyle","getAnimationStyleProps","mergedStyle","dispProto","incremental","tmpRect","viewRect","mathPow","mathSqrt","EPSILON$1","EPSILON_NUMERIC","THREE_SQRT","ONE_THIRD","_v0","_v1","_v2","isAroundZero","isNotAroundZero$1","cubicAt","cubicDerivativeAt","cubicRootAt","c","A","B","C","t1","disc","K","discSqrt","Y1","Y2","T","theta","acos","ASqrt","cubicExtrema","extrema","cubicSubdivide","p01","p12","p23","p012","p123","p0123","cubicProjectPoint","x0","y0","x1","y1","x2","y2","x3","y3","interval","_t","cubicLength","iteration","px","py","quadraticAt","quadraticDerivativeAt","quadraticRootAt","quadraticExtremum","divider","quadraticSubdivide","quadraticProjectPoint","quadraticLength","mathMin$1","mathMax$1","mathSin","mathCos","PI2","end","extremity","fromLine","xDim","yDim","fromCubic","cubicExtrema$1","cubicAt$1","fromQuadratic","quadraticExtremum$1","quadraticAt$1","fromArc","rx","ry","startAngle","endAngle","anticlockwise","min$1","max$1","vec2Min","vec2Max","diff","angle","CMD","M","L","Q","Z","R","tmpOutX","tmpOutY","min2","max2","mathMin$2","mathMax$2","mathCos$1","mathSin$1","mathSqrt$1","mathAbs","PI2$1","hasTypedArray","Float32Array","tmpAngles","modPI2","radian","normalizeArcAngles","angles","newStartAngle","newEndAngle","PathProxy","notSaveData","_version","_xi","_yi","_x0","_y0","_saveData","increaseVersion","getVersion","segmentIgnoreThreshold","_ux","_uy","setDPR","setContext","beginPath","reset","_lineDash","_dashOffset","_pathSegLen","_pathLen","moveTo","addData","lineTo","exceedUnit","_needsDash","_dashedLineTo","bezierCurveTo","_dashedBezierTo","quadraticCurveTo","_dashedQuadraticTo","arc","cx","cy","arcTo","radius","closePath","toStatic","setLineDash","lineDash","_dashIdx","lineDashSum","_dashSum","setLineDashOffset","setData","appendPath","path","appendSize","appendPathData","cmd","_expandData","newData","dashSum","nDash","dash","bezierLen","tmpLen","Number","MAX_VALUE","xi","yi","isFirst","_calculateLength","ux","uy","pathSegLen","pathTotalLen","segCount","rebuildPath","drawPart","accumLength","displayedLength","psi","isEllipse","breakBuild","ellipse","d_1","containStroke","lineWidth","_l","_a","_b","_s","containStroke$1","containStroke$2","PI2$2","normalizeRadian","PI2$3","containStroke$3","windingLine","dir","x_","CMD$1","PI2$4","EPSILON$2","isAroundEqual","swapExtrema","windingCubic","nRoots","nExtrema","y0_","y1_","unit","windingQuadratic","y_","windingArc","dTheta","tmp_1","containPath","isStroke","pathProxy","containStroke$4","DEFAULT_PATH_STYLE","strokePercent","fillOpacity","strokeOpacity","lineDashOffset","lineCap","miterLimit","strokeNoScale","strokeFirst","DEFAULT_PATH_ANIMATION_PROPS","pathCopyParams","Path","decal","_decalEl","buildPath","shape","decalElStyle","getDefaultShape","defaultStyle","getDefaultStyle","hasFill","pathFill","fillLum","isDarkLabel","shapeCfg","inBundle","pathUpdated","SHAPE_CHANGED_BIT","createPathProxy","hasStroke","needsUpdateRect","firstInvoke","rectWithStroke","_rectWithStroke","lineScale","strokeContainThreshold","localPos","dirtyShape","animateShape","setShape","shapeChanged","targetShape","targetShapePrimaryProps","shapeKeys","mergedShape","defaultProps","Sub","init","pathProto","subPixelOptimize","autoBatch","CMD$2","mathSqrt$2","mathAtan2","transformPath","nPoint","p_1","mathSqrt$3","mathSin$2","mathCos$2","PI$1","vMag","vRatio","u","vAngle","processArc","fa","fs","psiDeg","xp","yp","lambda","cxp","cyp","commandReg","numberReg","createPathProxyFromString","cpx","cpy","subpathX","subpathY","prevCmd","cmdList","cmdText","cmdStr","pLen","ctlPtx","ctlPty","pathData","SVGPath","isPathProxy","createPathOptions","innerOpts","createFromString","Group","_children","childAt","childOfName","childCount","_doAdd","addBefore","nextSibling","replaceAt","index","old","removeAll","eachChild","stopped","includeChildren","tmpMat","childRect","DEFAULT_IMAGE_STYLE","DEFAULT_IMAGE_ANIMATION_PROPS","sWidth","sHeight","isImageLike","ZRImage","_getSize","dim","size","imageSource","__image","otherDim","otherDimSize","CircleShape","Circle","r1","r2","r3","r4","total","subPixelOptimizeLine","outputShape","inputShape","subPixelOptimizeRect","originWidth","originHeight","positiveOrNegative","doubledPosition","RectShape","subPixelOptimizeOutputShape","Rect","optimizedShape","EllipseShape","Ellipse","subPixelOptimizeOutputShape$1","LineShape","Line","pointAt","interpolate","smoothSpline","isLoop","distance$1","segs","w2","w3","smoothBezier","smooth","constraint","cps","prevPoint","nextPoint","point","cp0","cp1","shift","buildPath$1","controlPoints","smoothConstraint","cp2","PolygonShape","Polygon","PolylineShape","Polyline","Gradient","addColorStop","LinearGradient","globalCoord","DEFAULT_TSPAN_STYLE","TSpan","setBoundingRect","tspanProto","parseXML","svg","parser","DOMParser","parseFromString","svgNode","firstChild","PI$2","PI2$5","mathSin$3","mathCos$3","mathACos","mathATan2","mathAbs$1","mathSqrt$4","mathMax$3","mathMin$3","x10","y10","x32","y32","computeCornerTangents","cr","clockwise","x01","y01","x11","y11","x00","y00","cx0","cy0","cx1","cy1","dx0","dy0","dx1","dy1","buildPath$2","innerRadius","r0","hasRadius","hasInnerRadius","cornerRadius","innerCornerRadius","halfRd","icr","cr0","cr1","xrs","yrs","xire","yire","xre","yre","xirs","yirs","it_1","ct0","ct1","SectorShape","Sector","CompoundPath","_updatePathDirty","paths","dirtyPath","IncrementalDisplayble","notClear","_displayables","_temporaryDisplayables","_cursor","getCursor","clearDisplaybles","clearTemporalDisplayables","addDisplayable","notPersistent","addDisplayables","displayables","getDisplayables","getTemporalDisplayables","eachPendingDisplayable","globalImageCache","findExistImage","newImageOrSrc","cachedImgObj","createOrUpdateImage","onload","cbPayload","__zrImageSrc","pendingWrap","isImageReady","pending","Image","onerror","imageOnLoad","__cachedImgObj","STYLE_REG","truncateText","containerWidth","ellipsis","prepareTruncateOptions","truncateSingleLine","preparedOpts","maxIterations","minChar","cnCharWidth","ascCharWidth","placeholder","contentWidth","ellipsisWidth","textLine","subLength","estimateLength","charCode","charCodeAt","parsePlainText","overflow","padding","truncate","calculatedLineHeight","lineHeight","truncateLineOverflow","lineOverflow","lines","wrapText","contentHeight","lineCount","outerHeight","outerWidth","truncateMinChar","maxWidth","RichTextToken","RichTextLine","tokens","RichTextContentBlock","parseRichText","contentBlock","topWidth","topHeight","wrapInfo","accumWidth","breakAll","exec","matchedIndex","pushTokens","substring","pendingList","calculatedHeight","calculatedWidth","stlPadding","truncateLine","finishLine","line","outer","token","tokenStyle","styleName","rich","textPadding","paddingH","tokenHeight","innerHeight","styleTokenWidth","tokenWidthNotSpecified","percentWidth","textBackgroundColor","bgImg","remainTruncWidth","block","isEmptyStr","newLine","strLines","linesWidths","tokenPadding","tokenPaddingH","outerWidth_1","parsePercent$1","isLineHolder","tokensLen","isLatin","ch","code","breakCharMap","isWordBreakChar","isBreakAll","lastAccumWidth","currentWord","currentWordWidth","chWidth","inWord","DEFAULT_RICH_TEXT_COLOR","DEFAULT_STROKE_LINE_WIDTH","DEFAULT_TEXT_ANIMATION_PROPS","fontSize","textShadowColor","textShadowBlur","textShadowOffsetX","textShadowOffsetY","borderColor","borderWidth","borderRadius","ZRText","_defaultStyle","_updateSubTexts","_childCursor","normalizeTextStyle","_updateRichTexts","_updatePlainTexts","defaultTextStyle","sourceRich","targetRich","_mergeRich","richNames","richName","_getOrCreateChild","textFont","getStyleText","needDrawBg","needDrawBackground","bgColorDrawn","baseX","baseY","textX","textY","boxX","boxY","_renderBackground","getTextXForPadding","defaultLineWidth","useDefaultFill","getFill","getStroke","hasShadow","fixedBoundingRect","subElStyle","xLeft","lineTop","xRight","tokenCount","remainedWidth","leftIndex","lineXLeft","lineXRight","rightIndex","_placeToken","parentBgColorDrawn","textWidth","textHeight","topStyle","textBorderWidth","textBorderColor","isPlainBg","textBorderRadius","rectEl","imgEl","rectShape","rectStyle","imgStyle","borderDash","borderDashOffset","commonStyle","makeFont","fontFamily","fontWeight","fontStyle","VALID_TEXT_ALIGN","VALID_TEXT_VERTICAL_ALIGN","bottom","middle","normalizeStyle","ArcShape","Arc","unitX","unitY","BezierCurveShape","cpx1","cpy1","someVectorAt","isTangent","cpx2","cpy2","BezierCurve","tangentAt","DropletShape","Droplet","HeartShape","Heart","PI$3","IsogonShape","Isogon","dStep","deg","RingShape","Ring","sin$1","cos$1","RoseShape","Rose","PI$4","cos$2","sin$2","StarShape","Star","xStart","yStart","ri","cos$3","sin$3","TrochoidShape","location","Trochoid","num","RadialGradient","extent","extent2","minTv$1","maxTv$1","OrientedBoundingRect","_corners","_axes","_origin","fromBoundingRect","corners","axes","overlapped","noMtv","_intersectCheckOneSide","axis","_getProjMinMaxOnAxis","dist0","dist1","proj","proj_1","useVML","painterCtors","delInstance","totalLum","ZRender","_sleepAfterStill","_stillFrameAccum","_needsRefresh","_needsRefreshHover","_darkMode","rendererType","renderer","vml","useDirtyRect","handerProxy","getViewportRoot","_flush","configLayer","zLevel","config","setBackgroundColor","_backgroundColor","setDarkMode","darkMode","refreshImmediately","fromInside","flush","triggerRendered","refreshHoverImmediately","elapsedTime","setSleepAfterStill","stillFramesCount","addHover","removeHover","clearHover","getType","clearAnimation","pathToImage","eventHandler","registerPainter","RADIAN_EPSILON","_trim","linearMap","domain","clamp","subDomain","subRange","parsePercent$2","all","NaN","round$1","precision","returnStr","toFixed","getPrecisionSafe","eIndex","dotIndex","getPixelPrecision","dataExtent","pixelExtent","LN10","dataQuantity","sizeQuantity","getPercentWithPrecision","valueList","acc","digits","votesPerQuota","targetSeats","seats","votes","currentSum","NEGATIVE_INFINITY","maxId","remRadian","pi2","isRadianAroundZero","TIME_REG","parseDate","hour","UTC","quantity","quantityExponent","exp","nice","exponent","exp10","nf","numericToNumber","valFloat","isNumeric","getRandomIdBase","getGreatestCommonDividor","getLeastCommonMultiple","ECHARTS_PREFIX","storedLogs","hasConsole","deprecateLog","deprecateReplaceLog","oldOpt","newOpt","consoleLog","makePrintable","hintInfo","msg","makePrintableStringIfPossible_1","toISOString","arg","printableStr","JSON","err","throwError","DUMMY_COMPONENT_NAME_PREFIX","INTERNAL_COMPONENT_ID_PREFIX","normalizeToArray","defaultEmphasis","subOpts","emphasis","subOptName","TEXT_STYLE_OPTIONS","getDataItemValue","dataItem","isDataItemOption","mappingToExists","existings","newCmptOptions","mode","isNormalMergeMode","isReplaceMergeMode","isReplaceAllMode","existingIdIdxMap","cmptOption","isValidIdOrName","warnInvalidateIdOrName","prepareResult","mappingById","mappingByName","mappingByIndex","mappingInReplaceAllMode","makeIdAndName","existing","isComponentIdInternal","newOption","keyInfo","brandNew","optionId","makeComparableKey","existingIdx","resultItem","keyExistAndEqual","nextIdx","mapResult","idMap","item","idNum","obj1","obj2","key1","convertOptionIdName","key2","idOrName","defaultValue","isNameSpecified","componentModel","setComponentTypeToKeyInfo","mappingResult","mainType","componentModelCtor","subType","determineSubType","newCmptOption","existComponent","queryDataIndex","payload","dataIndexInside","dataIndex","indexOfRawIndex","indexOfName","makeInner","innerUniqueIndex","hostObj","parseFinder","ecModel","finderInput","finder","queryOptionMap","mainTypeSpecified","parsedKey","queryType","includeMainTypes","queryOption","defaultMainType","queryResult","queryReferringComponents","useDefault","enableAll","enableNone","models","SINGLE_REFERRING","userOption","indexOption","idOption","nameOption","specified","firstCmpt","getComponent","queryComponents","setAttribute","getAttribute","interpolateRawValues","sourceValue","targetValue","isAutoPrecision","interpolated","leftArr","rightArr","length_1","info","getDimensionInfo","leftVal","rightVal","TYPE_DELIMITER","IS_CONTAINER","IS_EXTENDED_CLASS","parseClassType","componentType","main","typeArr","checkClassType","isExtendedClass","clz","enableClassExtend","rootClz","mandatoryMethods","$constructor","method","ExtendedClass","isESClass","ins","superCall","superApply","Function","mountExtend","SubClz","SupperClz","classBase","enableClassCheck","classAttr","isInstance","methodName","enableClassManagement","registerClass","componentFullType","componentTypeInfo","container","makeContainer","getClass","throwWhenNotFound","getClassesByMainType","o","hasClass","getAllClassMainTypes","types","hasSubTypes","registerWhenExtend","originalExtend_1","makeStyleMapper","ignoreParent","model","excludes","includes","getShallow","AREA_STYLE_KEY_MAP","getAreaStyle","AreaStyleMixin","getECData","_highlightNextDigit","_highlightKeyMap","getSavedStates","HOVER_STATE_NORMAL","HOVER_STATE_BLUR","HOVER_STATE_EMPHASIS","SPECIAL_STATES","DISPLAY_STATES","Z2_EMPHASIS_LIFT","Z2_SELECT_LIFT","HIGHLIGHT_ACTION_TYPE","DOWNPLAY_ACTION_TYPE","SELECT_ACTION_TYPE","UNSELECT_ACTION_TYPE","TOGGLE_SELECT_ACTION_TYPE","hasFillOrStroke","fillOrStroke","liftedColorCache","liftColor","liftedColor","doChangeHoverState","hoverStateEnum","onHoverStateChange","hoverState","singleEnterEmphasis","singleLeaveEmphasis","singleEnterBlur","singleLeaveBlur","singleEnterSelect","selected","singleLeaveSelect","updateElementState","updater","commonParam","traverseUpdateState","setStatesFlag","getFromStateStyle","toStateName","fromState","createEmphasisDefaultState","targetStates","hasSelect","cloned","store","fromFill","selectFill","normalFill","fromStroke","selectStroke","normalStroke","emphasisStyle","z2EmphasisLift","createSelectDefaultState","z2SelectLift","createBlurDefaultState","hasBlur","currentOpacity","blurStyle","elementStateProxy","setDefaultStateProxy","enterEmphasisWhenMouseOver","shouldSilent","__highByOuter","leaveEmphasisWhenMouseOut","enterEmphasis","highlightDigit","leaveEmphasis","enterBlur","leaveBlur","enterSelect","leaveSelect","__highDownSilentOnTouch","allLeaveBlur","api","getModel","eachComponent","view","getViewOfSeriesModel","getViewOfComponentModel","group","toggleSeriesBlurState","targetSeriesIndex","focus","blurScope","isBlur","leaveBlurOfIndices","dataIndices","itemEl","getItemGraphicEl","targetSeriesModel","getSeriesByIndex","targetCoordSys","coordinateSystem","master","blurredSeries","eachSeries","seriesModel","sameSeries","coordSys","sameCoordSys","getData","dataTypes","blurSeries","toggleSeriesBlurStateFromPayload","isHighDownPayload","isHighlight","seriesIndex","dataType","count","current","ecData","focus_1","toggleSelectionFromPayload","isSelectChangePayload","updateSeriesElementSelection","allData","getAllData","eachItemGraphicEl","isSelected","getAllSelectedIndices","getSelectedDataIndices","enableHoverEmphasis","setAsHighDownDispatcher","enableHoverFocus","OTHER_STATES","defaultStyleGetterMap","itemStyle","lineStyle","areaStyle","setStatesStylesFromModel","itemModel","styleType","getter","asDispatcher","disable","extendedEl","highDownSilentOnTouch","__highDownDispatcher","isHighDownDispatcher","getHighlightDigit","highlightKey","payloadType","savePathStates","selectState","select","makePath","layout","centerGraphic","resizePath","makeImage","imageUrl","zrImg","img","boundingRect","aspect","pathRect","animateOrSetProps","animationType","animatableModel","isFrom","removeOpt","isUpdate","isRemove","animationPayload","updatePayload","getUpdatePayload","animationEnabled","isAnimationEnabled","animationEasing","animationDelay","getAnimationDelayParams","updateProps","initProps","removeElement","isElementRemoved","fadeOutDisplayable","removeElementWithFadeOut","doRemove","isNotGroup","isPath","groupTransition","g1","g2","getElMap","elMap","anid","getAnimatableProps","elMap1","oldEl","newProp","EMPTY_OBJ","setLabelText","label","labelTexts","oldStates","normal","getLabelText","stateModels","overrideValue","labelFetcher","labelDataIndex","labelDimIndex","normalModel","baseText","getFormattedLabel","defaultText","statesText","stateModel","setLabelStyle","targetEl","labelStatesModels","stateSpecified","isSetOnText","needsCreateText","labelStatesTexts","showNormal","normalStyle","createTextStyle","createTextConfig","stateShow","targetElEmphasisState","enableTextSetter","labelInner","getLabelStatesModels","labelName","statesModels","textStyleModel","specifiedTextStyle","isNotNormal","isAttached","textStyle","setTextStyleCommon","labelPosition","labelRotate","labelDistance","labelOffset","defaultOutsidePosition","inheritColor","globalTextStyle","option","richItemNames","getRichItemNames","richResult","name_1","richTextStyle","setTokenTextStyle","margin","richItemNameMap","richKeys","richKey","parentModel","TEXT_PROPS_WITH_GLOBAL","TEXT_PROPS_SELF","TEXT_PROPS_BOX","isBlock","inRich","fillColor","strokeColor","textBorderType","textBorderDashOffset","defaultOpacity","baseline","disableBox","borderType","getFont","gTextStyleModel","setLabelValueAnimation","getDefaultText","prevValue","normalLabelModel","valueAnimation","defaultInterpolatedText","animateLabelValue","labelInnerStore","currentValue","labelText","PATH_COLOR","tmpRichText","TextStyleMixin","getTextColor","isEmphasis","getTextRect","LINE_STYLE_KEY_MAP","getLineStyle","LineStyleMixin","ITEM_STYLE_KEY_MAP","getItemStyle","ItemStyleMixin","Model","rest","mergeOption","_doGet","parsePath","hasPath","pathFinal","resolveParentPath","isEmpty","restoreData","pathArr","base","getUID","enableSubTypeDefaulter","subTypeDefaulters","registerSubTypeDefaulter","defaulter","componentTypeMain","enableTopologicalTravel","entity","dependencyGetter","topologicalTravel","targetNameList","fullNameList","callback","makeDepndencyGraph","graph","noEntryList","targetNameSet","currComponentType","currVertex","isInTargetNameSet","originalDeps","successor","removeEdgeAndAdd","removeEdge","errMsg","succComponentType","entryCount","thisItem","createDependencyGraphItem","availableDeps","getAvailableDependencies","dependentName","predecessor","thatItem","dep","inheritDefaultOption","superOption","subOption","langEN","month","monthAbbr","dayOfWeek","dayOfWeekAbbr","legend","selector","toolbox","brush","title","polygon","lineX","lineY","keep","dataView","lang","dataZoom","zoom","back","magicType","bar","stack","tiled","restore","saveAsImage","series","typeNames","pie","scatter","effectScatter","radar","tree","treemap","boxplot","candlestick","heatmap","parallel","sankey","funnel","gauge","pictorialBar","themeRiver","sunburst","aria","general","withTitle","withoutTitle","single","prefix","withName","withoutName","multiple","separator","partialData","langZH","LOCALE_ZH","LOCALE_EN","DEFAULT_LOCALE","localeStorage","localeModels","SYSTEM_LANG","langStr","documentElement","language","browserLanguage","registerLocale","locale","localeObj","createLocaleObject","getLocaleModel","getDefaultLocaleModel","ONE_SECOND","ONE_MINUTE","ONE_HOUR","ONE_DAY","ONE_YEAR","defaultLeveledFormatter","year","day","minute","second","millisecond","none","fullDayFormatter","fullLeveledFormatter","primaryTimeUnits","timeUnits","pad","getPrimaryTimeUnit","timeUnit","isPrimaryTimeUnit","getDefaultFormatPrecisionOfInterval","format","template","isUTC","date","fullYearGetterName","monthGetterName","q","dateGetterName","H","hoursGetterName","minutesGetterName","secondsGetterName","S","millisecondsGetterName","localeModel","timeModel","leveledFormat","tick","formatter","defaults$1","mergedFormatter","inherit","getUnitFromValue","targetId","levelId","isSecond","isMinute","isHour","isDay","isMonth","isYear","getUnitValue","fullYearSetterName","monthSetterName","dateSetterName","hoursSetterName","minutesSetterName","secondsSetterName","millisecondsSetterName","addCommas","parts","normalizeCssArray$1","replaceReg","replaceMap","encodeHTML","TPL_VAR_ALIAS","wrapVar","varName","seriesIdx","formatTpl","tpl","paramsList","encode","seriesLen","$vars","alias","convertToColorString","defaultColor","each$1","LOCATION_PARAMS","HV_NAMES","boxLayout","orient","maxHeight","currentLineMaxSize","nextChild","nextChildRect","nextX","nextY","moveX","newline","moveY","vbox","hbox","getLayoutRect","positionInfo","containerRect","containerHeight","verticalMargin","horizontalMargin","fetchLayoutMode","layoutMode","mergeLayoutParam","targetOption","ignoreSize","hResult","vResult","names","hvIdx","newParams","newValueCount","merged","mergedValueCount","enoughParamNumber","hasProp","hasValue","getLayoutParams","copyLayoutParams","inner","ComponentModel","uid","mergeDefaultAndTheme","inputPositionParams","themeModel","getTheme","getDefaultOption","optionUpdated","newCptOption","isInit","ctor","defaultOption","fields","optList","getReferringComponents","indexKey","idKey","getBoxLayoutParams","boxLayoutModel","protoInitialize","componentIndex","getDependencies","deps","dependencies","unshift","platform","decalColor","globalDefault","gradientColor","decals","dashArrayX","dashArrayY","symbolSize","symbol","dashLineOffset","blendMode","stateAnimation","animationDuration","animationDurationUpdate","animationEasingUpdate","animationThreshold","progressiveThreshold","progressive","hoverLayerThreshold","useUTC","VISUAL_DIMENSIONS","SOURCE_FORMAT_ORIGINAL","SOURCE_FORMAT_ARRAY_ROWS","SOURCE_FORMAT_OBJECT_ROWS","SOURCE_FORMAT_KEYED_COLUMNS","SOURCE_FORMAT_TYPED_ARRAY","SOURCE_FORMAT_UNKNOWN","SERIES_LAYOUT_BY_COLUMN","SERIES_LAYOUT_BY_ROW","BE_ORDINAL","Must","Might","Not","innerGlobalModel","resetSourceDefaulter","datasetMap","inheritSourceMetaRawOption","upstream","newMetaRawOption","parentMetaRawOption","metaRawOption","seriesLayoutBy","sourceHeader","startIndex","dimensions","dimensionsDefine","makeSeriesEncodeForAxisCoordSys","coordDimensions","datasetModel","querySeriesUpstreamDatasetModel","encodeItemName","encodeSeriesName","baseCategoryDimIndex","categoryWayValueDimStart","coordDimInfoLoose","coordDimIdx","coordDimInfo","getDataDimCountOnCoordDim","datasetRecord","categoryWayDim","valueWayDim","coordDimName","pushDim","dimIdxArr","idxFrom","idxCount","dimsDef","itemName","seriesName","makeSeriesEncodeForNameBased","dimCount","sourceFormat","potentialNameDimIndex","idxResult","idxRes0","idxRes1","guessRecords","guessResult","doGuessOrdinal","isPureNumber","fulfilled","nameDimIndex","thisData","queryDatasetUpstreamDatasetModels","guessOrdinal","dimIndex","maxLoop","dimName","dimType","dimDefItem","dataArrayRows","sample","detectValue","row","dataObjectRows","dataKeyedColumns","dataOriginal","beStr","internalOptionCreatorMap","concatInternalOptions","newCmptOptionList","internalOptionCreator","internalOptions","innerColor","innerDecal","PaletteMixin","getColorFromPalette","requestNum","defaultPalette","layeredPalette","getFromPalette","clearColorPalette","clearPalette","getDecalFromPalette","defaultDecals","getNearestPalette","palettes","requestColorNum","paletteNum","that","scopeFields","paletteIdx","paletteNameMap","palette","pickedPaletteItem","reCreateSeriesIndices","assertSeriesInitialized","initBase","OPTION_INNER_KEY","GlobalModel","theme","optionManager","_theme","_locale","_optionManager","setOption","optionPreprocessorFuncs","innerOpt","normalizeSetOptionInput","_resetOption","resetOption","optionChanged","baseOption","mountOption","_mergeOption","timelineOption","getTimelineOption","mediaOptions","getMediaOption","mediaOption","componentsMap","_componentsMap","componentsCount","_componentsCount","newCmptTypes","newCmptTypeMap","replaceMergeMainTypeMap","componentOption","mainTypeInReplaceMerge","visitComponent","oldCmptList","mergeMode","optionsByMainType","cmptsByMainType","cmptsCountByMainType","ComponentModelClass","extraOpt","__requireNewView","_seriesIndices","getOption","optInMainType","realLen","metNonInner","getLocale","localePosition","setUpdatePayload","_payload","cmpt","cmpts","queryByIdOrName","filterBySubType","findComponents","queryCond","getQueryCond","doFilter","indexAttr","idAttr","nameAttr","ctxForAll_1","cbForAll_1","getSeriesByName","nameStr","oneSeries","getSeriesByType","getSeries","getSeriesCount","rawSeriesIndex","eachRawSeries","eachSeriesByType","eachRawSeriesByType","isSeriesFiltered","_seriesIndicesMap","getCurrentSeriesIndices","filterSeries","newSeriesIndices","seriesRawIdx","componentTypes","components","component","isNotTargetSeries","internalField","seriesIndices","airaOption","enabled","mergeTheme","seriesId","notMergeColorLayer","colorLayer","themeItem","keyMap_1","idOrNameItem","idName","idName_1","replaceMerge","availableMethods","ExtensionAPI","ecInstance","coordinateSystemCreators","CoordinateSystemManager","_coordinateSystems","coordinateSystems","creater","getCoordinateSystems","register","creator","QUERY_REG","OptionManager","_timelineOptions","_mediaList","_currentMediaIndices","_api","rawOption","dataset","optionBackup","_optionBackup","newParsedOption","parseRawOption","_newBaseOption","timelineOptions","mediaList","mediaDefault","isRecreate","_mediaDefault","timelineModel","getCurrentIndex","ecWidth","ecHeight","indices","applyMediaQuery","indicesEquals","isNew","declaredBaseOption","timelineOnRoot","timeline","timelineOptionsOnRoot","mediaOnRoot","media","hasMedia","hasTimeline","singleMedia","doPreprocess","preProcess","realMap","aspectratio","applicatable","matched","operator","realAttr","real","expect","indices1","indices2","each$2","isObject$1","POSSIBLE_STYLES","compatEC2ItemStyle","itemStyleOpt","normalItemStyleOpt","emphasisItemStyleOpt","convertNormalEmphasis","optType","useExtend","normalOpt","emphasisOpt","removeEC3NormalStatus","compatTextStyle","labelOptSingle","textPropName","compatEC3CommonStyles","processSeries","seriesOpt","markPoint","markLine","markArea","nodes","edgeData","links","edges","categories","mpData","mlData","breadcrumb","levels","leaves","toArr","toObj","globalCompatStyle","isTheme","axisName","axisOpt","axisPointer","parallelOpt","parallelAxisDefault","calendar","calendarOpt","radarOpt","nameGap","axisNameGap","geo","geoOpt","regions","regionObj","timelineOpt","toolboxOpt","feature","featureOpt","tooltip","compatLayoutProperties","LAYOUT_PROPERTIES","COMPATITABLE_COMPONENTS","BAR_ITEM_STYLE_MAP","compatBarItemStyle","oldName","newName","compatPieLabel","alignTo","edgeDistance","compatSunburstState","downplay","blur","compatGraphFocus","focusNodeAdjacency","traverseTree","globalBackwardCompat","seriesType","clipOverflow","clockWise","hoverOffset","scaleSize","pointerColor","backgroundStyle","highlightPolicy","mapType","mapLocation","hoverAnimation","dataRange","visualMap","componentName","dataStack","stackInfoMap","stackInfoList","stackInfo","stackResultDimension","getCalculationInfo","stackedOverDimension","stackedDimension","stackedByDimension","isStackedByIndex","setCalculationInfo","calculateStack","targetStackInfo","idxInStack","resultVal","resultNaN","dims","targetData","byValue","stackedDataRawIndex","getRawIndex","stackedOver","rawIndexOf","getByRawIndex","hostModel","SourceImpl","dimensionsDetectedCount","encodeDefine","isSourceInstance","createSource","sourceData","thisMetaRawOption","detectSourceFormat","determined","determineSourceDimensions","makeEncodeDefine","createSourceFromSeriesDataOption","cloneSourceShallow","normalizeDimensionsOption","arrayRowsTravelFirst","objectRowsCollectDimensions","colArr","firstIndex","dimensions_1","nameMap","rawItem","displayName","exist","_c","providerMethods","mountMethods","DefaultDataProvider","sourceParam","dimSize","_source","_data","_offset","_dimSize","getSource","getItem","appendData","clean","pure","persistent","provider","getMethodMapKey","getItemForTypedArray","countForTypedArray","fillStorage","fillStorageForTypedArray","rawItemGetter","getRawSourceItemGetter","rawCounter","getRawSourceDataCounter","dimExtent","appendDataSimply","newCol","oldCol","getItemSimply","rawData","rawSourceItemGetterMap","col","countSimply","rawSourceDataCounterMap","getRawValueSimply","rawSourceValueGetterMap","getRawSourceValueGetter","retrieveRawValue","getRawDataItem","getProvider","dimInfo","DIMENSION_LABEL_REG","DataFormatMixin","getDataParams","rawValue","getRawValue","rawDataIndex","getName","itemOpt","getItemVisual","isSeries","userOutput","componentSubType","dimensionNames","status","extendParams","getItemModel","dimensionIndex","formatTooltip","multipleSeries","createTask","Task","_reset","_plan","plan","_count","_onDirty","onDirty","_dirty","perform","performArgs","upTask","_upstream","skip","outputData","__pipeline","currentTask","planResult","lastModBy","normalizeModBy","_modBy","lastModDataCount","_modDataCount","modBy","modDataCount","forceFirstProgress","_doReset","_outputDueEnd","_dueEnd","_progress","_dueIndex","progress","_doProgress","outputDueEnd","_settedOutputEnd","unfinished","iterator","_callingProgress","downstream","_downstream","pipe","downTask","_disposed","getUpstream","getDownstream","setOutputEnd","winCount","it","sStep","sCount","modNext","sequentialNext","parseDataValue","ordinalMeta","parseAndCollect","valueParserMap","ExternalSource","getRawData","cloneRawData","cloneAllDimensionInfo","retrieveValue","retrieveValueFromItem","convertValue","rawVal","createExternalSource","internalSource","externalTransform","extSource","sourceHeaderCount","dimsByName","dimDef","dimDefExt","__isBuiltIn","rawValueGetter","externalTransformMap","registerExternalTransform","typeParsed","isBuiltIn","applyDataTransform","rawTransOption","sourceList","infoForPrint","pipedTransOption","pipeLen","transOption","applySingleDataTransform","upSourceList","pipeIndex","transType","extUpSourceList","upSource","resultList","upstreamList","print","printStrArr","pipeIndexStr","datasetIndex","resultData","resultMetaRawOption","SourceManager","sourceHost","_sourceList","_upstreamSignList","_versionSignBase","_sourceHost","_setLocalSource","upstreamSignList","_getVersionSign","prepareSource","_isDirty","_createSource","upSourceMgrList","_getUpstreamSourceManagers","hasUpstream","resultSourceList","upSourceMgr","_getSourceMetaRawOption","_applyTransform","upMgrList","transformOption","fromTransformResult","doThrow","upMgr","upSrcMgr","sourceIndex","getSourceManager","disableTransformOptionMerge","createTooltipMarkup","retrieveVisualColorForTooltipMarker","visualDrawType","defaultSeriesFormatTooltip","tooltipDims","mapDimensionsAll","tooltipDimLen","isValueArr","markerColor","inlineValue","inlineValueType","subBlocks","sortParam","formatArrResult","formatTooltipArrayValue","inlineValues","inlineValueTypes","blocks","seriesNameSpecified","inlineName","header","noHeader","markerType","noName","valueType","isValueMultipleLine","dimItem","setEachItem","otherDims","inner$1","getSelectionKey","getId","SeriesModel","_selectedDataIndicesMap","dataTask","dataTaskCount","dataTaskReset","sourceManager","getInitialData","wrapData","dataBeforeProcessed","autoSeriesName","_initSelectedMapFromData","themeSubType","fillDataTextStyle","newSeriesOption","task","getCurrentTask","getLinkedData","mainData","getLinkedDataAll","getBaseAxis","coordDimToDataDim","coordDim","getProgressive","getProgressiveThreshold","innerDataIndices","_innerSelect","unselect","selectedMap","nameOrId","toggleSelect","tmpArr","selectedDataIndicesMap","nameOrIds","selectedMode","lastDataIndex","hasItemOption","useColorPaletteOnData","ignoreStyleOnData","hasSymbolVisual","defaultSymbol","visualStyleAccessPath","getSeriesAutoName","dataDims","nameArr","dataDim","cloneShallow","dataTaskProgress","param","CHANGABLE_METHODS","DOWNSAMPLE_METHODS","wrapMethod","onDataChange","scheduler","pipeline","getPipeline","agentStubMap","ComponentView","render","updateView","updateLayout","updateVisual","seriesModels","createRenderPlanner","pipelineContext","originalLarge","large","originalProgressive","progressiveRender","inner$2","renderPlanner","ChartView","renderTask","renderTaskPlan","renderTaskReset","highlight","toggleHighlight","markUpdateMethod","updateMethod","elSetState","dataIdx","progressMethodMap","incrementalPrepareRender","incrementalRender","throttle","debounce","currCall","lastCall","lastExec","timer","debounceNextCall","cbArgs","thisDelay","thisDebounce","debounceDelay","inner$3","defaultStyleMappers","defaultColorKey","getStyleMapper","stylePath","styleMapper","visualStyleMapper","getDefaultColorKey","colorKey","seriesStyleTask","createOnAllSeries","performRawSeries","styleModel","getStyle","globalStyle","decalOption","setVisual","colorCallback","dataEach","dataParams","setItemVisual","sharedModel","dataStyleTask","getVisual","existsStyle","ensureUniqueItemVisual","dataColorPaletteTask","overallReset","paletteScopeGroupByType","colorScope","dataAll","idxMap","rawIdx","fromPalette","dataCount","PI$5","defaultLoading","textColor","maskColor","showSpinner","spinnerRadius","mask","labelRect","Scheduler","dataProcessorHandlers","visualHandlers","_stageTaskMap","_dataProcessorHandlers","_visualHandlers","_allHandlers","taskRecord","overallTask","getPerformArgs","_pipelineMap","pCtx","progressiveEnabled","__idxInPipeline","blockIndex","pipelineId","updateStreamModes","dataLen","threshold","restorePipelines","pipelineMap","preventIncremental","_pipe","prepareStageTasks","stageTaskMap","record","_createSeriesStageTask","_createOverallStageTask","prepareView","__block","performDataProcessorTasks","_performStageTasks","performVisualTasks","stageHandlers","stageHandler","visualType","stageHandlerRecord","seriesTaskMap","overallNeedDirty_1","stub","needSetDirty","performArgs_1","setDirty","dirtyMap","performSeriesTasks","oldSeriesTaskMap","newSeriesTaskMap","getTargetSeries","seriesTaskPlan","seriesTaskReset","seriesTaskCount","useClearVisual","isVisual","isLayout","overallTaskReset","oldAgentStubMap","newAgentStubMap","overallProgress","shouldOverallTaskDirty","createStub","stubReset","stubOnDirty","agent","wrapStageHandler","detectSeriseType","stubProgress","clearAllVisual","resetDefines","makeSeriesTaskProgress","singleSeriesTaskProgress","resetDefineIdx","resetDefine","legacyFunc","ecModelMock","apiMock","mockMethods","cond","Clz","colorAll","lightTheme","contrastColor","axisCommon","axisLine","splitLine","splitArea","minorSplitLine","colorPalette","crossStyle","subtextStyle","iconStyle","brushStyle","handleStyle","moveHandleStyle","fillerColor","dataBackground","selectedDataBackground","controlStyle","dayLabel","monthLabel","yearLabel","timeAxis","logAxis","valueAxis","categoryAxis","axisLabel","color0","borderColor0","DatasetModel","_sourceManager","DatasetView","mapDataStorage","registerMap","mapName","rawDef","rawSpecialAreas","records","specialAreas","geoSource","geoJson","geoJSON","features","parsers","retrieveMap","svgXML","ECEventProcessor","cptQuery","dataQuery","otherQuery","condCptType","suffixes_1","dataKeys_1","reserved","propSuffix","suffixPos","eventInfo","packedEvent","check","filterForExposedEvent","host","propOnHost","seriesSymbolTask","legendSymbol","symbolType","keepAspect","symbolRotate","hasSymbolTypeCallback","hasSymbolSizeCallback","hasSymbolRotateCallback","hasCallback","seriesSymbol","seriesSymbolSize","seriesSymbolRotate","symbolKeepAspect","dataSymbolTask","itemSymbolType","itemSymbolSize","itemSymbolRotate","itemSymbolKeepAspect","getItemVisualFromData","getVisualFromData","PI2$6","CMD$3","DEFAULT_SEARCH_SPACE","getCandidateAnchor","outPt","outDir","projectPointToArc","projectPointToLine","limitToEnds","lineLen","projectedLen","projectPointToRect","tmpPt","nearestPointOnRect","pt","nearestPointOnPath","minDist","pt0","pt1","pt2","dir2","updateLabelLinePoints","labelLineModel","labelLine","labelGuideConfig","textGuideLineConfig","searchSpace","candidates","anchorPoint","anchor","targetTransform","targetInversedTransform","candidate","limitTurnAngle","tmpProjPoint","linePoints","minTurnAngle","angleCos","minTurnAngleCos","tan","limitSurfaceAngle","surfaceNormal","maxSurfaceAngle","maxSurfaceAngleCos","HALF_PI","angle2","newAngle","setLabelLineState","isNormal","styleObj","buildLabelLinePath","moveLen","midPoint0","midPoint2","midPoint1","setLabelLineStyle","labelIgnoreNormal","isLabelIgnored","showAbove","labelLineConfig","getLabelLineStatesModels","labelLineName","prepareLayoutList","defaultAttr","localRect","isAxisAligned","minMargin","globalRect","obb","priority","layoutOption","computedLayoutOption","axisAligned","shiftLayout","xyDim","sizeDim","minBound","maxBound","balanceShift","lastPos","adjusted","totalShifts","shiftList","first","last","minGap","maxGap","updateMinMaxGap","squeezeGaps","takeBoundsGap","squeezeWhenBailout","gapThisBound","gapOtherBound","moveDir","moveFromMaxGap","remained","maxSqeezePercent","gaps","totalGaps","prevItemRect","squeezePercent","movement","moveForEachLabel","shiftLayoutOnX","leftBound","rightBound","shiftLayoutOnY","topBound","bottomBound","hideOverlap","labelList","displayedLabels","hideEl","emphasisState","labelItem","existsTextCfg","labelGuideIgnore","cloneArr","newPoints","prepareLayoutCallbackParams","hostRect","labelLinePoints","LABEL_OPTION_TO_STYLE_KEYS","dummyTransformable","labelLayoutInnerStore","labelLineAnimationStore","extendWithKeys","LABEL_LAYOUT_PROPS","LabelManager","_labelList","_chartViewList","clearLabels","_addLabel","labelStyle","labelTransform","labelGuide","attachedPos","attachedRot","addLabelsOfSeries","chartView","__model","disableLabelLayout","updateLayoutConfig","createDragHandler","defaultLabelAttr","degreeToRadian","needsUpdateLabelLine","labelLayoutStore","labelsNeedsAdjustOnX","moveOverlap","labelsNeedsAdjustOnY","labelsNeedsHideOverlap","processLabelsOverall","ignoreLabelLineUpdate","_updateLabelLine","_animateLabels","visualStyle","disableLabelAnimation","layoutStore","oldLayout","newProps","oldOpacity","prevStates","oldLayoutSelect","oldLayoutEmphasis","layoutSelect","layoutEmphasis","newLayout","createLegacyDataSelectAction","ecRegisterAction","getSeriesIndices","eventsMap","dispatchAction","handleSeriesLegacySelectEvents","eventPostfix","ecIns","legacyEventName","fromActionPayload","handleLegacySelectEvents","messageCenter","isFromClick","fromAction","createLinearGradient","canvasGradient","createRadialGradient","getCanvasGradient","isClipPathChanged","prevClipPaths","normalizeLineDash","lineType","pathProxyForDraw","styleHasStroke","styleHasFill","doFillPath","originalGlobalAlpha","globalAlpha","doStrokePath","createCanvasPattern","pattern","canvasPattern","createPattern","repeat","DOMMatrix","matrix","rotateSelf","scaleSelf","translateSelf","setTransform","brushPath","inBatch","strokePart","firstDraw","hasFillGradient","hasStrokeGradient","hasFillPattern","hasStrokePattern","fillGradient","strokeGradient","fillPattern","strokePattern","__canvasFillGradient","__canvasStrokeGradient","__canvasFillPattern","__canvasStrokePattern","fillStyle","strokeStyle","ctxLineDash","lineScale_1","needsRebuild","brushImage","drawImage","brushText","hasLineDash","lineScale_2","strokeText","fillText","SHADOW_NUMBER_PROPS","STROKE_PROPS","bindCommonProps","prevStyle","forceSetAll","flushPathDrawn","globalCompositeOperation","bindPathAndTextCommonStyle","prevEl","newLineWidth","bindImageStyle","setContextTransform","updateClipStatus","allClipped","isTransformChanged","m0","DRAW_TYPE_PATH","DRAW_TYPE_IMAGE","DRAW_TYPE_TEXT","DRAW_TYPE_INCREMENTAL","canPathBatch","batchFill","batchStroke","brushSingle","isLast","__isRendered","prevElClipPaths","forceSetTransform","forceSetStyle","save","canBatchPath","lastDrawType","brushIncremental","temporalDisplayables","innerScope","i_1","len_1","returnFalse","createDom","newDom","newDomStyle","Layer","motionBlur","lastFrameAlpha","virtual","maxRepaintRectCount","__firstTimePaint","__used","__drawIndex","__startIndex","__endIndex","__prevStartIndex","__prevEndIndex","domStyle","onselectstart","webkitUserSelect","userSelect","webkitTapHighlightColor","domBack","ctxBack","getElementCount","initContext","setUnpainted","createBackBuffer","createRepaintRects","prevList","mergedRepaintRects","full","pendingRect","addRectToMergePool","isMerged","minDeltaArea","bestRectToMergeIdx","mergedRect","pendingRect_1","aArea","bArea","pendingArea","deltaArea","shouldPaint","prevRect","curRect","hasIntersections","_paintRects","debugGetPaintRects","clearAll","clearColor","repaintRects","haveMotionBLur","doClear","clearRect","clearColorGradientOrPattern","__canvasGradient","__painter","fillRect","HOVER_LAYER_ZLEVEL","CANVAS_ZLEVEL","EL_AFTER_INCREMENTAL_INC","INCREMENTAL_INC","parseInt10","isLayerValid","__builtin__","createRoot","domRoot","CanvasPainter","_zlevelList","_prevDisplayList","_layers","_layerConfig","_needsManuallyCompositing","singleCanvas","_opts","_singleCanvas","rootStyle","innerHTML","zlevelList","layers","_width","_height","_domRoot","rootCanvas","mainLayer","isSingleCanvas","getViewportRootOffset","viewportRoot","paintAll","_redrawId","_paintList","_paintHoverList","_hoverlayer","getLayer","getHoverLayer","paintOne","redrawId","_updateLayerStatus","_doPaintList","needsRefreshHover","_compositeManually","self_1","eachLayer","eachBuiltinLayer","layerList","zi","_loop_1","this_1","useTimer","now","startTime","firstEl","repaint","repaintRect","_doPaintEl","dTime","draw","currentLayer","insertLayer","layersMap","prevLayer","prevDom","insertBefore","getLayers","updatePrevLayer","incrementalLayerCount","prevZlevel","_clearLayer","layerConfig","_zlevel","delLayer","removeChild","display","clearLayer","getRenderedCanvas","imageLayer","pixelRatio","width_1","height_1","ctx_1","renderToCanvas","whIdx","wh","cwh","plt","prb","defaultView","getComputedStyle","canvas","shadowBlurSize","leftMargin","rightMargin","topMargin","bottomMargin","pathTransform","imgShape","findEventDispatcher","returnFirstMatch","found","wmUniqueIndex","WeakMap","_id","_guard","enumerable","configurable","has","TypeError","Triangle","Diamond","Pin","tanX","tanY","cpLen","cpLen2","Arrow","symbolCtors","roundRect","square","circle","diamond","pin","arrow","triangle","symbolShapeMakers","thickness","symbolBuildProxies","SymbolClz","proxySymbol","symbolPathSetColor","symbolStyle","__isEmptyBrush","createSymbol","symbolPath","setColor","decalMap","decalCache","decalKeys","createOrUpdatePatternFromDecal","decalObject","getDevicePixelRatio","getZr","isSVG","oldPattern","decalOpt","maxTileWidth","maxTileHeight","setPatternnSource","isValidKey","cache","svgElement","normalizeDashArrayX","normalizeDashArrayY","symbolArray","normalizeSymbolArray","lineBlockLengthsX","getLineBlockLengthX","lineBlockLengthY","getLineBlockLengthY","svgRoot","createSVGElement","pSize","getPatternSize","brushDecal","svgWidth","svgHeight","xlen","symbolRepeats","attrName","ySum","yId","yIdTotal","xId0","symbolYId","xId1","xId1Total","xSum","top_1","symbolXId","brushSymbol","isAllString","dashValue","isAllNumber","dashValue_1","blockLength","decalVisual","hasItemVisual","assert$1","each$3","isFunction$1","isObject$2","zrender","TEST_FRAME_REMAIN_TIME","PRIORITY_PROCESSOR_SERIES_FILTER","PRIORITY_PROCESSOR_DATASTACK","PRIORITY_PROCESSOR_FILTER","PRIORITY_PROCESSOR_DEFAULT","PRIORITY_PROCESSOR_STATISTIC","PRIORITY_VISUAL_LAYOUT","PRIORITY_VISUAL_PROGRESSIVE_LAYOUT","PRIORITY_VISUAL_GLOBAL","PRIORITY_VISUAL_CHART","PRIORITY_VISUAL_COMPONENT","PRIORITY_VISUAL_CHART_DATA_CUSTOM","PRIORITY_VISUAL_POST_CHART_LAYOUT","PRIORITY_VISUAL_BRUSH","PRIORITY_VISUAL_ARIA","PRIORITY_VISUAL_DECAL","PRIORITY","PROCESSOR","FILTER","SERIES_FILTER","STATISTIC","VISUAL","LAYOUT","PROGRESSIVE_LAYOUT","GLOBAL","CHART","POST_CHART_LAYOUT","COMPONENT","BRUSH","CHART_ITEM","ARIA","DECAL","IN_MAIN_PROCESS_KEY","OPTION_UPDATED_KEY","STATUS_NEEDS_UPDATE_KEY","ACTION_REG","CONNECT_STATUS_KEY","CONNECT_STATUS_PENDING","CONNECT_STATUS_UPDATING","CONNECT_STATUS_UPDATED","createRegisterEventWithLowercaseECharts","isDisposed","disposedWarning","toLowercaseNameAndCallEventful","createRegisterEventWithLowercaseMessageCenter","MessageCenter","messageCenterProto","updateDirectly","updateMethods","doConvertPixel","doDispatchAction","flushPendingActions","triggerUpdatedEvent","bindRenderedEvent","bindMouseEvent","renderComponents","renderSeries","performPostUpdateFuncs","createExtensionAPI","enableConnect","setTransitionOpt","markStatusToUpdate","applyChangedStates","ECharts","_chartsViews","_chartsMap","_componentsViews","_pendingActions","themeStorage","_dom","defaultRenderer","defaultUseDirtyRect","__ECHARTS__DEFAULT__RENDERER__","devUseDirtyRect","__ECHARTS__DEFAULT__USE_DIRTY_RECT__","_zr","_throttledZrFlush","_coordSysMgr","prioritySortFunc","__prio","visualFuncs","dataProcessorFuncs","_scheduler","_messageCenter","_labelManager","_initEvents","_onframe","remainTime","_model","getDom","notMerge","lazyUpdate","transitionOpt","setTheme","getSvgDataURL","toDataURL","getDataURL","excludeComponents","excludesComponentViews","__viewId","url","getConnectedDataURL","isSvg","groupId","MAX_NUMBER","connectedGroups","left_1","right_1","bottom_1","canvasList_1","dpr_1","instances","chart","getSvgDom","targetCanvas","zr_1","content_1","getSvgRoot","connectedBackgroundColor","convertToPixel","convertFromPixel","containPixel","findResult","containPoint","parsedFinder","MOUSE_EVENT_NAMES","eveName","isGlobalOut","dataModel","eventData","eventActionMap","actionType","DOM_ATTRIBUTE_KEY","_loadingFX","showLoading","hideLoading","loadingEffects","makeActionFromEvent","eventObj","actions","updateLabelLayout","labelManager","isComponent","viewList","viewMap","__alive","doPrepare","requireNewView","viewId","classType","Clazz","__id","__ecComponentInfo","callView","excludeSeriesId","excludeSeriesIdMap","modelId","notBlur","prepareAndUpdate","coordSysMgr","componentDirtyList","componentView","seriesDirtyMap","coordSysList","chartsMap","escapeConnect","actionWrap","actionInfo","cptTypeTmp","cptType","payloads","batched","batch","eventObjBatch","isSelectChange","isStatusChange","batchItem","action","newObj","pendingActions","dispatcher","dirtyList","updateZ","updateStates","__transientTransitionOpt","updateBlend","updateHoverLayerStatus","postUpdateFuncs","applyElementStates","newStates","elCount","preventUsingHoverLayer","preventAutoZ","stateAnimationModel","enableAnimation","class_1","getComponentByElement","modelInfo","updateConnectedChartsStatus","charts","otherChart","action_1","otherCharts_1","transOpt","fromOpt","toOpt","to","finderOpt","fromResult","toResult","toSeries","dimension","dividingMethod","echartsProto","one","wrapped","args2","postInitFuncs","idBase","groupIdBase","init$1","existInstance","getInstanceByDom","clientWidth","clientHeight","postInitFunc","connect","disConnect","disconnect","getInstanceById","registerTheme","registerPreprocessor","preprocessorFunc","registerProcessor","processor","normalizeRegister","registerPostInit","registerPostUpdate","postUpdateFunc","registerAction","registerCoordinateSystem","coordSysCreator","getCoordinateSystemDimensions","getDimensionsInfo","registerLayout","layoutTask","registerVisual","visualTask","targetList","defaultPriority","__raw","registerLoading","loadingFx","extendComponentModel","extendComponentView","extendSeriesModel","extendChartView","setCanvasCreator","getMap","registerTransform","dataTool","dataIndexMapValueLength","valNumOrArrLengthMoreThan2","defaultKeyGetter","DataDiffer","oldArr","newArr","oldKeyGetter","newKeyGetter","diffMode","_old","_new","_oldKeyGetter","_newKeyGetter","_diffModeMultiple","_add","_update","updateManyToOne","_updateManyToOne","updateOneToMany","_updateOneToMany","_remove","execute","_executeOneToOne","newDataIndexMap","oldDataKeyArr","newDataKeyArr","_initIndexMap","oldKey","newIdxMapVal","newIdxMapValLen","newIdx","_performRestAdd","_executeMultiple","oldDataIndexMap","oldIdxMapVal","oldIdxMapValLen","newKey","idxMapValLen","keyArr","keyGetterName","cbModeMultiple","idxMapVal","summarizeDimensions","summary","notExtraCoordDimMap","defaultedLabel","defaultedTooltip","coordDimIndex","getOrCreateEncodeArr","isExtraCoord","mayLabelDimType","defaultTooltip","encodeArr","dataDimsOnCoord","encodeFirstDimNotExtra","dimArr","encodeLabel","encodeTooltip","getDimensionTypeByAxis","axisType","DataDimensionInfo","mathFloor","isObject$3","map$1","UNDEFINED","INDEX_NOT_FOUND","ID_PREFIX","dataCtors","Float64Array","Int32Array","CtorUint32Array","Uint32Array","CtorInt32Array","CtorUint16Array","Uint16Array","TRANSFERABLE_PROPERTIES","CLONE_PROPERTIES","defaultDimValueGetters","prepareInvertedIndex","getIndicesCtor","prepareStorage","getRawIndexWithoutIndices","getRawIndexWithIndices","getIdNameFromStore","makeIdFromName","normalizeDimensions","validateDimensions","cloneListForMapAndSample","getInitialExtent","setItemDataAndSeriesIndex","transferProperties","List","_rawCount","_storage","_storageArr","_nameList","_idList","_visual","_layout","_itemVisuals","_itemLayouts","_graphicEls","_rawExtent","_extent","_approximateExtent","_calculationInfo","TRANSFERABLE_METHODS","dimensionInfos","invertedIndicesMap","dimInfoInput","dimensionInfo","dimensionName","createInvertedIndices","_nameDimIdx","_nameOrdinalMeta","itemId","_idDimIdx","_idOrdinalMeta","_dimensionInfos","_dimensionsSummary","_invertedIndicesMap","getDimension","getDimensionsOnCoord","mapDimension","dimensionsSummary","initData","nameList","dimValueGetter","notProvider","_rawData","_indices","_dontMakeIdFromName","_nameRepeatCount","defaultDimValueGetter","_dimValueGetter","_dimValueGetterArrayRows","arrayRows","_initDataFromProvider","appendValues","values","dimLen","rawExtent","rawExtentArr","storageArr","emptyDataItem","sourceIdx","dimIdx","dimRawExtent","append","dimensionInfoMap","idList","isFormatOriginal","dimStorage","getIndices","newIndices","thisCount","buffer","getByDimIdx","dimStore","getValues","getDataExtent","dimData","initialExtent","currEnd","useRaw","getApproximateExtent","setApproximateExtent","getSum","getMedian","dimDataArray","sortedDimDataArray","invertedIndices","rawIndex","indicesOfNearest","maxDistance","nearestIndices","minDiff","nearestIndicesLen","ctxCompat","fCtx","dimNames","dimIndices","filterSelf","dim0","selectRange","originalCount","quickFinished","dimStorage2","val2","dimk","mapArray","tmpRetValue","retValue","rawExtentOnDim","downSample","rate","sampleValue","sampleIndex","targetStorage","frameValues","frameSize","sampleFrameIdx","lttbDownSample","valueDimension","sampledIndex","currentRawIndex","maxArea","area","nextRawIndex","nextFrameStart","nextFrameEnd","avgX","avgY","frameStart","frameEnd","pointAX","pointAY","otherList","thisList","visual","kvObj","itemVisual","itemVisuals","setLayout","getLayout","getItemLayout","setItemLayout","clearItemLayouts","setItemGraphicEl","dimensionInfoList","injectFunction","originalMethod","__wrappedMethods","getDimValueSimply","objectRows","keyedColumns","original","typedArray","chunk","DataCtor","oldStore","oldLen","newStore","excludeDimensions","allDimensions","originalStorage","cloneChunk","originalChunk","childECData","thisECData","nameDimIdx","idDimIdx","nameRepeatCount","nmCnt","completeDimensions","sysDims","dataDimNameMap","coordDimNameMap","getDimCount","dimDefItemRaw","userDimName","encodeDef","encodeDefaulter","encodeDefMap","dataDimsRaw","validDataDims","resultDimIdxOrName","resultDimIdx","applyDim","availDimIdx","sysDimItemRaw","sysDimItemDimsDef","sysDimItemOtherDims","sysDimItem","sysDimItemDimsDefItem","generateCoord","generateCoordCount","fromZero","genName","optDimCount","createDimensions","dimensionsCount","CoordSysInfo","coordSysName","coordSysDims","axisMap","categoryAxisMap","getCoordSysInfoBySeries","fetch","fetchers","cartesian2d","xAxisModel","yAxisModel","isCategory","firstCategoryDimIndex","singleAxis","singleAxisModel","polar","polarModel","radiusAxisModel","findAxisModel","angleAxisModel","parallelModel","parallelAxisIndex","axisIndex","axisModel","axisDim","enableDataStack","byIndex","stackedCoordDimension","mayStack","stackedByDimInfo","stackedDimInfo","stackedDimCoordDim_1","stackedDimType","stackedDimCoordIndex_1","isCalculationCoord","isDimensionStacked","stackedDim","getStackedDimension","targetDim","createListFromArray","registeredCoordSys","coordSysInfo","coordSysDimDefs","useEncodeDefaulter","dimInfoList","hasNameEncode","categoryAxisModel","getOrdinalMeta","stackCalculationInfo","isNeedCompleteOrdinalData","sampleItem","firstDataNotNull","LineSeriesModel","legendHoverLink","endLabel","smoothMonotone","showSymbol","showAllSymbol","connectNulls","sampling","getDefaultLabel","labelDims","vals","getDefaultInterpolatedLabel","interpolatedValue","Symbol","seriesScope","updateData","_createSymbol","driftSymbol","_symbolType","stopSymbolAnimation","toLastFrame","getSymbolPath","setZ","setDraggable","getSymbolSize","disableAnimation","_updateCommon","_sizeX","_sizeY","_seriesModel","emphasisItemStyle","blurItemStyle","selectItemStyle","symbolOffset","hoverScale","emphasisModel","visualColor","pathStyle","symbolInnerColor","liftZ","z2Origin","_z2","useNameLabel","getLabelDefaultText","scaleRatio","setSymbolScale","fadeOut","animationOpt","fadeLabel","symbolNeedsDraw","isIgnore","clipShape","normalizeUpdateOpt","makeSeriesScope","SymbolDraw","SymbolCtor","_SymbolCtor","oldData","symbolUpdateOpt","getSymbolPoint","symbolEl","oldIdx","_getSymbolPoint","isPersistent","incrementalPrepareUpdate","_seriesScope","incrementalUpdate","taskParams","updateIncrementalAndHover","prepareDataCoordInfo","valueOrigin","baseAxis","getOtherAxis","valueStart","getValueStart","baseAxisDim","valueAxisDim","valueDim","baseDim","baseDataOffset","stacked","stackResultDim","dataDimsForPoint","getExtent","getStackedOnPoint","dataCoordInfo","stackedData","dataToPoint","supportFloat32Array","Float32ArrayCtor","createFloat32Array","diffData","diffResult","idx1","lineAnimationDiff","oldStackedOnPoints","newStackedOnPoints","oldCoordSys","newCoordSys","oldValueOrigin","newValueOrigin","currPoints","nextPoints","currStackedPoints","nextStackedPoints","sortedIndices","rawIndices","newDataOldCoordInfo","oldDataNewCoordInfo","oldPoints","diffItem","pointAdded","oldIdx2","newIdx2","currentX","currentY","newDataDimsForPoint","oldPt","stackedOnPoint","oldDataDimsForPoint","newPt","newStackedOnPt","sortedCurrPoints","sortedNextPoints","sortedCurrStackedPoints","sortedNextStackedPoints","sortedStatus","i2","idx2","stackedOnCurrent","stackedOnNext","mathMin$4","mathMax$4","isPointNull","drawSegment","segLen","allLen","prevX","prevY","cpx0","cpy0","tmpK","ratioNextSeg","nextCpx0","nextCpy0","lenPrevSeg","lenNextSeg","ECPolylineShape","ECPolyline","getPointOn","xOrY","isDimX","nRoot","t_1","ECPolygonShape","ECPolygon","stackedOnPoints","stackedOnSmooth","createGridClipPath","cartesian","hasAnimation","getArea","isHorizontal","isAxisInversed","duringCb","createPolarClipPath","sectorArea","isRadial","createClipPath","isCoordinateSystemType","isPointsSame","points1","points2","bboxFromPoints","minX","minY","getBoundingDiff","min1","max1","getSmooth","getStackedOnPoints","turnPointsIntoStep","stepTurnAt","baseIndex","stepPoints","stepPt","nextPt","stepPt2","getVisualGradient","visualMetaList","visualMeta","getAxis","stops","toGlobalCoord","dataToCoord","stopLen","outerColors","tinyExtent","minCoord","maxCoord","coordSpan","gradient","getIsIgnoreFunc","isAuto","getAxesByScale","canShowAllSymbolForCategory","categoryDataDim","labelMap","getViewLabels","tickValue","axisExtent","availSize","isPointNull$1","getLastIndexNotNull","getPointAtIndex","getIndexRange","prevIndex","nextIndex","createLineClipPath","lineView","endLabelModel_1","showEndLabel","valueAnimation_1","data_1","labelAnimationRecord_1","lastFrameIndex","clipRect","_endLabelOnDuring","_endLabel","originalX","originalY","expandSize","getEndLabelStateSpecified","endLabelModel","isBaseInversed","LineView","lineGroup","symbolDraw","_symbolDraw","_lineGroup","lineStyleModel","areaStyleModel","isCoordSysPolar","prevCoordSys","_coordSys","polyline","_polyline","_polygon","isAreaChart","isIgnoreFunc","__temp","clipShapeForSymbol","_clipShapeForSymbol","_step","_initSymbolLabelAnimation","_newPolyline","_newPolygon","_initOrUpdateEndLabel","_stackedOnPoints","_points","_doUpdateAnimation","lineJoin","emphasisLineStyle","stackedOnSeries","changePolyState","_changePolyState","_valueOrigin","isHorizontalOrRadial","isAxisInverse","seriesDuration","seriesDalay","seriesDalayValue","polarClip","pointToCoord","gridClip","ratio","data_2","animationRecord","dataIndexRange","endValue","__points","updatedDataInfo","diffStatus","ptIdx","pointsLayout","forceStoreInTypedArray","useTypedArray","dimInfo0","dimInfo1","dimIdx0","dimIdx1","tmpIn","tmpOut","samplers","average","nearest","indexSampler","dataSample","sampler","nameLocation","nameRotate","nameTruncate","nameTextStyle","triggerEvent","onZero","onZeroAxisIndex","axisTick","showMinLabel","showMaxLabel","boundaryGap","deduplication","alignWithLabel","splitNumber","minorTick","primary","logBase","axisDefault","category","OrdinalMeta","_needCollect","needCollect","_deduplication","createByAxisModel","dedplication","getOrdinal","_getOrCreateMap","AXIS_TYPES","axisModelCreator","BaseAxisModelClass","extraDefaultOption","AxisModel","getAxisType","thisOption","__ordinalMeta","getCategories","AxisModelCommonMixin","getNeedCrossZero","getCoordSysModel","CartesianAxisModel","extraOption","categorySortInfo","Scale","setting","_setting","getSetting","unionExtent","unionExtentFromData","setExtent","thisExtent","isInExtentRange","isBlank","_isBlank","setBlank","roundNumber","intervalScaleNiceTicks","minInterval","maxInterval","span","intervalPrecision","getIntervalPrecision","niceTickExtent","fixExtent","contain$1","normalize$1","scale$2","OrdinalScale","_ordinalMeta","_categorySortInfo","getCategoryIndex","getTicks","ticks","getMinorTicks","setCategorySortInfo","getCategorySortInfo","beforeSortIndex","displayIndex","ordinalNumber","getLabel","cateogry","niceTicks","niceExtent","roundNumber$1","IntervalScale","_interval","_intervalPrecision","getInterval","setInterval","_niceExtent","expandToNicedExtent","safeLimit","lastNiceTick","minorTicks","nextTick","prevTick","minorTicksGroup","minorInterval","dataNum","fixMax","fixMin","STACK_PREFIX","LARGE_BAR_MIN_WIDTH","LargeArr","getSeriesStackId","getAxisKey","prepareLayoutBarSeries","isOnCartesian","isInLargeMode","getValueAxesMinGaps","barSeries","axisValues","cnt","axisMinGaps","valuesInAxis","makeColumnLayout","seriesInfoList","bandWidth","getBandWidth","extentSpan","scaleSpan","barWidth","barMaxWidth","barMinWidth","barGap","barCategoryGap","axisKey","stackId","doCalBarWidthAndOffset","columnsMap","seriesInfo","columnsOnAxis","autoWidthCount","categoryGap","stacks","minWidth","categoryGapPercent","columnCount","barGapPercent","autoWidth","column","finalWidth","widthSum","lastColumn","retrieveColumnLayout","barWidthAndOffset","lastStackCoords","columnLayoutInfo","columnOffset","columnWidth","barMinHeight","isValueAxisH","valueAxisStart","getValueAxisStart","baseValue","baseCoord","largeLayout","coordLayout","getRect","valueAxisHorizontal","valueDimIdx","largePoints","largeBackgroundPoints","largeDataIndices","valuePair","pointsOffset","idxOffset","backgroundStart","bisect","TimeScale","settings","_minLevelUnit","labelFormatter","innerTicks","getIntervalTicks","_approxInterval","getFullYear","getMonth","getDate","approxTickNum","scaleIntervalsLen","scaleIntervals","isUnitValueSame","valueA","valueB","dateA","dateB","isSame","isSameYear","isSameMonth","isSameDay","isSameHour","isSameMinute","isSameSecond","isSameMilliSecond","getDateInterval","approxInterval","daysInMonth","getMonthInterval","APPROX_ONE_MONTH","getHourInterval","getMinutesAndSecondsInterval","isMinutes","getMillisecondsInterval","getFirstTimestampOfUnit","unitName","outDate","bottomUnitName","unitNames","iter","addTicksInSpan","minTimestamp","maxTimestamp","getMethodName","setMethodName","isDate","dateTime","notAdd","addLevelTicks","lastLevelTicks","levelTicks","newAddedTicks","isFirstLevel","startTick","endTick","getterName","setterName","levelsTicks","currentLevelTicks","tickCount","lastLevelTickCount","primaryTimeUnit","nextPrimaryTimeUnit","levelTicksRemoveDuplicated","targetTickNum","levelsTicksInExtent","maxLevel","scaleProto","intervalScaleProto","getPrecisionSafe$1","roundingErrorFix","mathFloor$1","mathCeil","mathPow$1","mathLog","LogScale","_originalScale","originalScale","originalExtent","powVal","_fixMin","fixRoundingError","_fixMax","originalVal","ScaleRawExtentInfo","_prepareParams","_dataMin","_dataMax","isOrdinal","_isOrdinal","_needCrossZero","modelMinRaw","_modelMinRaw","_modelMinNum","parseAxisModelMinMax","modelMaxRaw","_modelMaxRaw","_modelMaxNum","_axisDataLen","boundaryGapArr","_boundaryGapInner","dataMin","dataMax","axisDataLen","boundaryGapInner","minFixed","maxFixed","determinedMin","_determinedMin","determinedMax","_determinedMax","modifyDataMinMax","minMaxName","frozen","DATA_MIN_MAX_ATTR","setDeterminedMinMax","DETERMINED_MIN_MAX_ATTR","freeze","ensureScaleRawExtentInfo","rawExtentInfo","minMax","getScaleExtent","scaleType","rawExtentResult","barSeriesModels","isBaseAxisAndHasBarSeries_1","adjustedScale","adjustScaleForOverflow","axisLength","barsOnCurrentAxis","minOverflow","maxOverflow","totalOverFlow","oldRange","oldRangePercentOfNew","overflowBuffer","niceScaleExtent","extentInfo","createScaleByModel","ifAxisCrossZero","makeLabelFormatter","getLabelModel","categoryTickStart","getAxisRawValue","estimateLabelUnionRect","realNumberScaleTicks","categoryScaleExtent","axisLabelModel","unrotatedSingleRect","singleRect","rotateTextRect","textRect","rotateRadians","beforeWidth","beforeHeight","afterWidth","afterHeight","rotatedRect","getOptionCategoryInterval","shouldShowAllLabels","getDataDimensionsOnAxis","dataDimMap","unionAxisExtentFromData","seriesExtent","PI$6","AxisBuilder","nameDirection","tickDirection","labelDirection","handleAutoShown","transformGroup","_transformGroup","hasBuilder","builders","getGroup","innerTextLayout","axisRotation","textRotation","direction","rotationDiff","makeAxisEventDataBase","isLabelSilent","tooltipOpt","shown","arrows","arrowSize","arrowOffset","symbolWidth_1","symbolHeight_1","axisTickLabel","ticksEls","buildAxisMajorTicks","labelEls","buildAxisLabel","fixMinMaxLabelShow","buildAxisMinorTicks","gapSignal","isNameLocationCenter","labelLayout","nameRotation","axisNameAvailableWidth","endTextLayout","truncateOpt","nameTruncateMaxWidth","formatterParams","content","__fullText","targetType","textRotate","onLeft","tickEls","firstLabel","nextLabel","lastLabel","prevLabel","firstTick","lastTick","ignoreEl","isTwoLabelOverlapped","firstRect","nextRect","mRotationBack","createTicks","ticksCoords","tickTransform","tickEndCoord","tickLineStyle","anidPrefix","tickCoord","tickEl","tickModel","getTicksCoords","minorTickModel","minorTicksCoords","getMinorTicksCoords","minorTickLineStyle","minorTicksEls","axisLabelShow","labelModel","labelMargin","labels","labelRotation","rawCategoryData","formattedLabel","rawLabel","itemLabelModel","rawCategoryItem","fixValue","axisInfo","getAxisInfo","axisPointerModel","useHandle","isHandleTrigger","coordSysAxesInfo","axesInfo","makeKey","getAxisPointerModel","axisPointerClazz","AxisView","axisPointerClass","_doUpdateAxisPointerClass","updateAxisPointer","_axisPointer","_disposeAxisPointer","forceRender","getAxisPointerClass","registerAxisPointerClass","layout$1","gridModel","grid","otherAxisOnZeroOf","getAxesOnZeroOf","rawAxisPosition","axisPosition","rectBound","axisOffset","posBound","onZeroCoord","dirMap","labelInside","isCartesian2DSeries","findAxisModels","axisModelMap","inner$4","rectCoordAxisBuildSplitArea","axisView","axisGroup","splitAreaModel","areaColors","gridRect","areaColorsLen","lastSplitAreaColors","splitAreaColors","newSplitAreaColors","colorIndex","cIndex","rectCoordAxisHandleRemove","axisBuilderAttrs","selfBuilderAttrs","CartesianAxisView","oldAxisGroup","_axisGroup","axisBuilder","elementType","cartesians","getCartesians","otherAxisType","axisElementBuilders","splitLineModel","lineColors","minorSplitLineModel","CartesianXAxisView","CartesianYAxisView","seriesModelMap","seriesRecords","axisRecordMap","prepareDataExtentOnAxis","calculateFilteredExtent","shrinkAxisExtent","axesModelMap","xAxis","yAxis","xRawExtentInfo","yRawExtentInfo","prepareAxisRecord","condExtent","seriesRecord","xAxisRecord","yAxisRecord","condDimMap","tarDimMap","condAxis","tarAxisRecord","addCondition","axisRecord","addTarget","condDims","tarDims","tarDimExtents","initExtent","condDimsLen","tarDimsLen","singleCondDim","singleTarDim","condVal","tarDimExtent","tarAxisExtent","tarExtent","GridModel","containLabel","GridView","Cartesian","_dimList","getAxes","addAxis","cartesian2DDimensions","canCalculateAffineTransform","Cartesian2D","calcAffineTransform","_transform","_invTransform","xAxisScale","yAxisScale","xScaleExtent","yScaleExtent","xScaleSpan","yScaleSpan","translateX","translateY","axisX","axisY","toLocalCoord","containData","xVal","yVal","clampData","xScale","yScale","xAxisExtent","yAxisExtent","pointToData","coordToData","xExtent","getGlobalExtent","yExtent","inner$5","createAxisLabels","makeCategoryLabels","makeRealNumberLabels","createAxisTicks","makeCategoryTicks","makeCategoryLabelsActually","labelCategoryInterval","labelsCache","getListCache","optionLabelInterval","listCacheGet","numericLabelInterval","makeLabelsByCustomizedCategoryInterval","makeAutoCategoryInterval","makeLabelsByNumericCategoryInterval","listCacheSet","ticksCache","optionTickInterval","tickCategoryInterval","labelsResult","autoInterval","calculateCategoryInterval","fetchAutoCategoryIntervalCalculationParams","axisRotate","ordinalScale","ordinalExtent","unitSpan","unitW","unitH","maxW","maxH","dw","dh","lastAutoInterval","lastTickCount","axisExtent0","axisExtent1","getRotate","categoryInterval","onlyTick","showAllLabel","includeMinLabel","includeMaxLabel","addItem","tickObj","NORMALIZED_EXTENT","Axis","onBand","fixExtentWithBands","getTickModel","tickVal","fixOnBandTicksCoords","nTick","ticksLen","diffSize","crossLen","shift_1","ticksItem","littleThan","Axis2D","coordExtent","asc","Grid","_coordsMap","_coordsList","_axesMap","_axesList","axisPointerEnabled","_initCartesian","axesMap","_updateScale","onZeroRecords","fixAxisOnZero","ignoreContainLabel","boxLayoutParams","isContainLabel","axesList","adjustAxes","labelUnionRect","updateAxisTransform","axesMapOnDim","getCartesian","xAxisIndex","yAxisIndex","coordList","_findConvertTarget","coordsList","axisPositionUsed","axesCount","createAxisCreator","isAxisUsedInTheGrid","getTooltipAxes","baseAxes","otherAxes","otherAxis","grids","otherAxisDim","canOnZeroToAxis","getOnZeroRecordKey","coordBase","axisExtentSum","BaseBarSeriesModel","getMarkerPosition","offsetIndex","barMinAngle","largeThreshold","progressiveChunkMode","BarSeriesModel","brushSelector","selectors","roundCap","showBackground","realtimeSort","SausageShape","SausagePath","dr","rCenter","unitStartX","unitStartY","unitEndX","unitEndY","lessThanCircle","BAR_BORDER_WIDTH_QUERY","BAR_BORDER_RADIUS_QUERY","_eventPos","mathMax$5","mathMin$5","getClipArea","coordSysClipArea","expandWidth","BarView","_isFirstFrame","removeOnRenderedListener","_updateDrawMode","coordinateSystemType","_isLargeDraw","_renderLarge","_renderNormal","_clear","_updateLargeClip","_incrementalRenderLarge","isLargeDraw","animationModel","axis2DModel","_initSort","_onRendered","orderMap","_updateSort","needsClip","drawBackground","backgroundModel","barBorderRadius","bgEls","oldBgEls","_backgroundEls","isInitSort","isChangeOrder","createBackground","bgLayout","bgEl","createBackgroundEl","isClipped","elementCreator","updateStyle","updateRealtimeAnimation","newIndex","oldIndex","createBackgroundShape","bgGroup","_backgroundGroup","createLarge","_removeBackground","_dataSort","mappedValue","_isDataOrderChanged","oldOrder","oldCount","lastValue","isOrderChanged","newOrder","axisId","sortInfo","coordSysBoundingRect","signWidth","signHeight","clipped","signR","__dataIndex","animateProperty","ShapeClass","sector","sectorShape","animateTarget","seriesTarget","axisTarget","fixedLineWidth","getLineWidth","signX","signY","isZeroOnPolar","isPolar","labelPositionOutside","rawLayout","LagePathShape","LargePath","startPoint","__startPoint","baseDimIdx","__baseDimIdx","backgroundStartPoint","__largeDataIndices","__barWidth","setLargeBackgroundStyle","setLargeStyle","largePathUpdateDataIndex","largePath","largePathFindDataIndex","barWidthHalf","startValueVal","pointerBaseVal","pointerValueVal","baseLowerBound","baseUpperBound","barBaseVal","barValueVal","ElementClz","createListSimply","dimensionsInfo","LegendVisualProvider","getDataWithEncodedVisual","_getDataWithEncodedVisual","_getRawData","getAllNames","containName","dataWithEncodedVisual","PieSeriesModel","legendVisualProvider","_defaultLabelLine","labelLineNormalOpt","labelLineEmphasisOpt","minAngle","minShowLabelAngle","selectedOffset","percentPrecision","stillShowZeroSum","bleedMargin","distanceToLabelLine","avoidLabelOverlap","animationTypeUpdate","RADIAN","adjustSingleSide","viewLeft","viewTop","farthestX","recalculateXOnSemiToAlignOnEllipseCurve","semi","rB","rB2","rA","rA2","recalculateX","items","topSemi","bottomSemi","labelAlignTo","avoidOverlap","labelLayoutList","leftList","rightList","leftmostX","rightmostX","isPositionCenter","isAlignToEdge","realTextWidth","targetTextWidth","pieLabelLayout","hasLabelRotate","minShowLabelRadian","setNotShow","isLabelShown","labelLineLen","labelLineLen2","midAngle","nx","ny","isLabelInside","notShowLabel","getSectorCornerRadius","PiePiece","firstCreate","_updateLabel","visualOpacity","PieView","sectorGroup","_sectorGroup","piePiece","itemLayout","PI2$7","RADIAN$1","getViewRect","pieLayout","validDataCount","unitRadian","roseType","restAngle","valueSumLargerThanMinAngle","currentAngle","angle_1","layout_1","layout_2","dataFilter","legendModels","DEFAULT_OPTION","inner$6","decalPaletteScope","ariaVisual","ariaModel","setDecal","setLabel","decalModel","useDecal","paletteScopeGroupByType_1","decalScope","enableAriaDecal","dataAll_1","idxMap_1","decalScope_1","dataCount_1","paletteDecal","specifiedDecal","mergeDecal","resultDecal","labelLocale","seriesCnt","maxDataCnt","maxSeriesCnt","displaySeriesCnt","ariaLabel","getTitle","seriesLabels_1","seriesCount","seriesLabel","getSeriesTypeName","partialLabel","displayCnt","dataLabels","dataLabel","middleSeparator_1","endSeparator_1","separatorModel","middleSeparator","endSeparator","keyValues","RegExp","ariaPreprocessor","PRIORITY_VISUAL_ARIA$1"],"mappings":"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","sourcesContent":["(function (global, factory) {\n    typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n    typeof define === 'function' && define.amd ? define(['exports'], factory) :\n    (global = global || self, factory(global.echarts = {}));\n}(this, (function (exports) { 'use strict';\n\n    /*! *****************************************************************************\r\n    Copyright (c) Microsoft Corporation. All rights reserved.\r\n    Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\n    this file except in compliance with the License. You may obtain a copy of the\r\n    License at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n    THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n    KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\n    WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\n    MERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\n    See the Apache Version 2.0 License for specific language governing permissions\r\n    and limitations under the License.\r\n    ***************************************************************************** */\r\n    /* global Reflect, Promise */\r\n\r\n    var extendStatics = function(d, b) {\r\n        extendStatics = Object.setPrototypeOf ||\r\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n        return extendStatics(d, b);\r\n    };\r\n\r\n    function __extends(d, b) {\r\n        extendStatics(d, b);\r\n        function __() { this.constructor = d; }\r\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n    }\r\n\r\n    var __assign = function() {\r\n        __assign = Object.assign || function __assign(t) {\r\n            for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n                s = arguments[i];\r\n                for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n            }\r\n            return t;\r\n        };\r\n        return __assign.apply(this, arguments);\r\n    };\r\n\r\n    function __spreadArrays() {\r\n        for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n        for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n            for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n                r[k] = a[j];\r\n        return r;\r\n    }\n\n    var Browser = (function () {\r\n        function Browser() {\r\n            this.firefox = false;\r\n            this.ie = false;\r\n            this.edge = false;\r\n            this.weChat = false;\r\n        }\r\n        return Browser;\r\n    }());\r\n    var Env = (function () {\r\n        function Env() {\r\n            this.browser = new Browser();\r\n            this.node = false;\r\n            this.wxa = false;\r\n            this.worker = false;\r\n            this.canvasSupported = false;\r\n            this.svgSupported = false;\r\n            this.touchEventsSupported = false;\r\n            this.pointerEventsSupported = false;\r\n            this.domSupported = false;\r\n        }\r\n        return Env;\r\n    }());\r\n    var env = new Env();\r\n    if (typeof wx === 'object' && typeof wx.getSystemInfoSync === 'function') {\r\n        env.wxa = true;\r\n        env.canvasSupported = true;\r\n        env.touchEventsSupported = true;\r\n    }\r\n    else if (typeof document === 'undefined' && typeof self !== 'undefined') {\r\n        env.worker = true;\r\n        env.canvasSupported = true;\r\n    }\r\n    else if (typeof navigator === 'undefined') {\r\n        env.node = true;\r\n        env.canvasSupported = true;\r\n        env.svgSupported = true;\r\n    }\r\n    else {\r\n        detect(navigator.userAgent, env);\r\n    }\r\n    function detect(ua, env) {\r\n        var browser = env.browser;\r\n        var firefox = ua.match(/Firefox\\/([\\d.]+)/);\r\n        var ie = ua.match(/MSIE\\s([\\d.]+)/)\r\n            || ua.match(/Trident\\/.+?rv:(([\\d.]+))/);\r\n        var edge = ua.match(/Edge\\/([\\d.]+)/);\r\n        var weChat = (/micromessenger/i).test(ua);\r\n        if (firefox) {\r\n            browser.firefox = true;\r\n            browser.version = firefox[1];\r\n        }\r\n        if (ie) {\r\n            browser.ie = true;\r\n            browser.version = ie[1];\r\n        }\r\n        if (edge) {\r\n            browser.edge = true;\r\n            browser.version = edge[1];\r\n        }\r\n        if (weChat) {\r\n            browser.weChat = true;\r\n        }\r\n        env.canvasSupported = !!document.createElement('canvas').getContext;\r\n        env.svgSupported = typeof SVGRect !== 'undefined';\r\n        env.touchEventsSupported = 'ontouchstart' in window && !browser.ie && !browser.edge;\r\n        env.pointerEventsSupported = 'onpointerdown' in window\r\n            && (browser.edge || (browser.ie && +browser.version >= 11));\r\n        env.domSupported = typeof document !== 'undefined';\r\n    }\n\n    var BUILTIN_OBJECT = {\r\n        '[object Function]': true,\r\n        '[object RegExp]': true,\r\n        '[object Date]': true,\r\n        '[object Error]': true,\r\n        '[object CanvasGradient]': true,\r\n        '[object CanvasPattern]': true,\r\n        '[object Image]': true,\r\n        '[object Canvas]': true\r\n    };\r\n    var TYPED_ARRAY = {\r\n        '[object Int8Array]': true,\r\n        '[object Uint8Array]': true,\r\n        '[object Uint8ClampedArray]': true,\r\n        '[object Int16Array]': true,\r\n        '[object Uint16Array]': true,\r\n        '[object Int32Array]': true,\r\n        '[object Uint32Array]': true,\r\n        '[object Float32Array]': true,\r\n        '[object Float64Array]': true\r\n    };\r\n    var objToString = Object.prototype.toString;\r\n    var arrayProto = Array.prototype;\r\n    var nativeForEach = arrayProto.forEach;\r\n    var nativeFilter = arrayProto.filter;\r\n    var nativeSlice = arrayProto.slice;\r\n    var nativeMap = arrayProto.map;\r\n    var ctorFunction = (function () { }).constructor;\r\n    var protoFunction = ctorFunction ? ctorFunction.prototype : null;\r\n    var methods = {};\r\n    function $override(name, fn) {\r\n        methods[name] = fn;\r\n    }\r\n    var idStart = 0x0907;\r\n    function guid() {\r\n        return idStart++;\r\n    }\r\n    function logError() {\r\n        var args = [];\r\n        for (var _i = 0; _i < arguments.length; _i++) {\r\n            args[_i] = arguments[_i];\r\n        }\r\n        if (typeof console !== 'undefined') {\r\n            console.error.apply(console, args);\r\n        }\r\n    }\r\n    function clone(source) {\r\n        if (source == null || typeof source !== 'object') {\r\n            return source;\r\n        }\r\n        var result = source;\r\n        var typeStr = objToString.call(source);\r\n        if (typeStr === '[object Array]') {\r\n            if (!isPrimitive(source)) {\r\n                result = [];\r\n                for (var i = 0, len = source.length; i < len; i++) {\r\n                    result[i] = clone(source[i]);\r\n                }\r\n            }\r\n        }\r\n        else if (TYPED_ARRAY[typeStr]) {\r\n            if (!isPrimitive(source)) {\r\n                var Ctor = source.constructor;\r\n                if (Ctor.from) {\r\n                    result = Ctor.from(source);\r\n                }\r\n                else {\r\n                    result = new Ctor(source.length);\r\n                    for (var i = 0, len = source.length; i < len; i++) {\r\n                        result[i] = clone(source[i]);\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        else if (!BUILTIN_OBJECT[typeStr] && !isPrimitive(source) && !isDom(source)) {\r\n            result = {};\r\n            for (var key in source) {\r\n                if (source.hasOwnProperty(key)) {\r\n                    result[key] = clone(source[key]);\r\n                }\r\n            }\r\n        }\r\n        return result;\r\n    }\r\n    function merge(target, source, overwrite) {\r\n        if (!isObject(source) || !isObject(target)) {\r\n            return overwrite ? clone(source) : target;\r\n        }\r\n        for (var key in source) {\r\n            if (source.hasOwnProperty(key)) {\r\n                var targetProp = target[key];\r\n                var sourceProp = source[key];\r\n                if (isObject(sourceProp)\r\n                    && isObject(targetProp)\r\n                    && !isArray(sourceProp)\r\n                    && !isArray(targetProp)\r\n                    && !isDom(sourceProp)\r\n                    && !isDom(targetProp)\r\n                    && !isBuiltInObject(sourceProp)\r\n                    && !isBuiltInObject(targetProp)\r\n                    && !isPrimitive(sourceProp)\r\n                    && !isPrimitive(targetProp)) {\r\n                    merge(targetProp, sourceProp, overwrite);\r\n                }\r\n                else if (overwrite || !(key in target)) {\r\n                    target[key] = clone(source[key]);\r\n                }\r\n            }\r\n        }\r\n        return target;\r\n    }\r\n    function extend(target, source) {\r\n        if (Object.assign) {\r\n            Object.assign(target, source);\r\n        }\r\n        else {\r\n            for (var key in source) {\r\n                if (source.hasOwnProperty(key)) {\r\n                    target[key] = source[key];\r\n                }\r\n            }\r\n        }\r\n        return target;\r\n    }\r\n    function defaults(target, source, overlay) {\r\n        var keysArr = keys(source);\r\n        for (var i = 0; i < keysArr.length; i++) {\r\n            var key = keysArr[i];\r\n            if ((overlay ? source[key] != null : target[key] == null)) {\r\n                target[key] = source[key];\r\n            }\r\n        }\r\n        return target;\r\n    }\r\n    var createCanvas = function () {\r\n        return methods.createCanvas();\r\n    };\r\n    methods.createCanvas = function () {\r\n        return document.createElement('canvas');\r\n    };\r\n    function indexOf(array, value) {\r\n        if (array) {\r\n            if (array.indexOf) {\r\n                return array.indexOf(value);\r\n            }\r\n            for (var i = 0, len = array.length; i < len; i++) {\r\n                if (array[i] === value) {\r\n                    return i;\r\n                }\r\n            }\r\n        }\r\n        return -1;\r\n    }\r\n    function inherits(clazz, baseClazz) {\r\n        var clazzPrototype = clazz.prototype;\r\n        function F() { }\r\n        F.prototype = baseClazz.prototype;\r\n        clazz.prototype = new F();\r\n        for (var prop in clazzPrototype) {\r\n            if (clazzPrototype.hasOwnProperty(prop)) {\r\n                clazz.prototype[prop] = clazzPrototype[prop];\r\n            }\r\n        }\r\n        clazz.prototype.constructor = clazz;\r\n        clazz.superClass = baseClazz;\r\n    }\r\n    function mixin(target, source, override) {\r\n        target = 'prototype' in target ? target.prototype : target;\r\n        source = 'prototype' in source ? source.prototype : source;\r\n        if (Object.getOwnPropertyNames) {\r\n            var keyList = Object.getOwnPropertyNames(source);\r\n            for (var i = 0; i < keyList.length; i++) {\r\n                var key = keyList[i];\r\n                if (key !== 'constructor') {\r\n                    if ((override ? source[key] != null : target[key] == null)) {\r\n                        target[key] = source[key];\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        else {\r\n            defaults(target, source, override);\r\n        }\r\n    }\r\n    function isArrayLike(data) {\r\n        if (!data) {\r\n            return false;\r\n        }\r\n        if (typeof data === 'string') {\r\n            return false;\r\n        }\r\n        return typeof data.length === 'number';\r\n    }\r\n    function each(arr, cb, context) {\r\n        if (!(arr && cb)) {\r\n            return;\r\n        }\r\n        if (arr.forEach && arr.forEach === nativeForEach) {\r\n            arr.forEach(cb, context);\r\n        }\r\n        else if (arr.length === +arr.length) {\r\n            for (var i = 0, len = arr.length; i < len; i++) {\r\n                cb.call(context, arr[i], i, arr);\r\n            }\r\n        }\r\n        else {\r\n            for (var key in arr) {\r\n                if (arr.hasOwnProperty(key)) {\r\n                    cb.call(context, arr[key], key, arr);\r\n                }\r\n            }\r\n        }\r\n    }\r\n    function map(arr, cb, context) {\r\n        if (!arr) {\r\n            return [];\r\n        }\r\n        if (!cb) {\r\n            return slice(arr);\r\n        }\r\n        if (arr.map && arr.map === nativeMap) {\r\n            return arr.map(cb, context);\r\n        }\r\n        else {\r\n            var result = [];\r\n            for (var i = 0, len = arr.length; i < len; i++) {\r\n                result.push(cb.call(context, arr[i], i, arr));\r\n            }\r\n            return result;\r\n        }\r\n    }\r\n    function reduce(arr, cb, memo, context) {\r\n        if (!(arr && cb)) {\r\n            return;\r\n        }\r\n        for (var i = 0, len = arr.length; i < len; i++) {\r\n            memo = cb.call(context, memo, arr[i], i, arr);\r\n        }\r\n        return memo;\r\n    }\r\n    function filter(arr, cb, context) {\r\n        if (!arr) {\r\n            return [];\r\n        }\r\n        if (!cb) {\r\n            return slice(arr);\r\n        }\r\n        if (arr.filter && arr.filter === nativeFilter) {\r\n            return arr.filter(cb, context);\r\n        }\r\n        else {\r\n            var result = [];\r\n            for (var i = 0, len = arr.length; i < len; i++) {\r\n                if (cb.call(context, arr[i], i, arr)) {\r\n                    result.push(arr[i]);\r\n                }\r\n            }\r\n            return result;\r\n        }\r\n    }\r\n    function keys(obj) {\r\n        if (!obj) {\r\n            return [];\r\n        }\r\n        if (Object.keys) {\r\n            return Object.keys(obj);\r\n        }\r\n        var keyList = [];\r\n        for (var key in obj) {\r\n            if (obj.hasOwnProperty(key)) {\r\n                keyList.push(key);\r\n            }\r\n        }\r\n        return keyList;\r\n    }\r\n    function bindPolyfill(func, context) {\r\n        var args = [];\r\n        for (var _i = 2; _i < arguments.length; _i++) {\r\n            args[_i - 2] = arguments[_i];\r\n        }\r\n        return function () {\r\n            return func.apply(context, args.concat(nativeSlice.call(arguments)));\r\n        };\r\n    }\r\n    var bind = (protoFunction && isFunction(protoFunction.bind))\r\n        ? protoFunction.call.bind(protoFunction.bind)\r\n        : bindPolyfill;\r\n    function curry(func) {\r\n        var args = [];\r\n        for (var _i = 1; _i < arguments.length; _i++) {\r\n            args[_i - 1] = arguments[_i];\r\n        }\r\n        return function () {\r\n            return func.apply(this, args.concat(nativeSlice.call(arguments)));\r\n        };\r\n    }\r\n    function isArray(value) {\r\n        if (Array.isArray) {\r\n            return Array.isArray(value);\r\n        }\r\n        return objToString.call(value) === '[object Array]';\r\n    }\r\n    function isFunction(value) {\r\n        return typeof value === 'function';\r\n    }\r\n    function isString(value) {\r\n        return typeof value === 'string';\r\n    }\r\n    function isStringSafe(value) {\r\n        return objToString.call(value) === '[object String]';\r\n    }\r\n    function isNumber(value) {\r\n        return typeof value === 'number';\r\n    }\r\n    function isObject(value) {\r\n        var type = typeof value;\r\n        return type === 'function' || (!!value && type === 'object');\r\n    }\r\n    function isBuiltInObject(value) {\r\n        return !!BUILTIN_OBJECT[objToString.call(value)];\r\n    }\r\n    function isTypedArray(value) {\r\n        return !!TYPED_ARRAY[objToString.call(value)];\r\n    }\r\n    function isDom(value) {\r\n        return typeof value === 'object'\r\n            && typeof value.nodeType === 'number'\r\n            && typeof value.ownerDocument === 'object';\r\n    }\r\n    function isGradientObject(value) {\r\n        return value.colorStops != null;\r\n    }\r\n    function isPatternObject(value) {\r\n        return value.image != null;\r\n    }\r\n    function isRegExp(value) {\r\n        return objToString.call(value) === '[object RegExp]';\r\n    }\r\n    function eqNaN(value) {\r\n        return value !== value;\r\n    }\r\n    function retrieve() {\r\n        var args = [];\r\n        for (var _i = 0; _i < arguments.length; _i++) {\r\n            args[_i] = arguments[_i];\r\n        }\r\n        for (var i = 0, len = args.length; i < len; i++) {\r\n            if (args[i] != null) {\r\n                return args[i];\r\n            }\r\n        }\r\n    }\r\n    function retrieve2(value0, value1) {\r\n        return value0 != null\r\n            ? value0\r\n            : value1;\r\n    }\r\n    function retrieve3(value0, value1, value2) {\r\n        return value0 != null\r\n            ? value0\r\n            : value1 != null\r\n                ? value1\r\n                : value2;\r\n    }\r\n    function slice(arr) {\r\n        var args = [];\r\n        for (var _i = 1; _i < arguments.length; _i++) {\r\n            args[_i - 1] = arguments[_i];\r\n        }\r\n        return nativeSlice.apply(arr, args);\r\n    }\r\n    function normalizeCssArray(val) {\r\n        if (typeof (val) === 'number') {\r\n            return [val, val, val, val];\r\n        }\r\n        var len = val.length;\r\n        if (len === 2) {\r\n            return [val[0], val[1], val[0], val[1]];\r\n        }\r\n        else if (len === 3) {\r\n            return [val[0], val[1], val[2], val[1]];\r\n        }\r\n        return val;\r\n    }\r\n    function assert(condition, message) {\r\n        if (!condition) {\r\n            throw new Error(message);\r\n        }\r\n    }\r\n    function trim(str) {\r\n        if (str == null) {\r\n            return null;\r\n        }\r\n        else if (typeof str.trim === 'function') {\r\n            return str.trim();\r\n        }\r\n        else {\r\n            return str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\r\n        }\r\n    }\r\n    var primitiveKey = '__ec_primitive__';\r\n    function setAsPrimitive(obj) {\r\n        obj[primitiveKey] = true;\r\n    }\r\n    function isPrimitive(obj) {\r\n        return obj[primitiveKey];\r\n    }\r\n    var HashMap = (function () {\r\n        function HashMap(obj) {\r\n            this.data = {};\r\n            var isArr = isArray(obj);\r\n            this.data = {};\r\n            var thisMap = this;\r\n            (obj instanceof HashMap)\r\n                ? obj.each(visit)\r\n                : (obj && each(obj, visit));\r\n            function visit(value, key) {\r\n                isArr ? thisMap.set(value, key) : thisMap.set(key, value);\r\n            }\r\n        }\r\n        HashMap.prototype.get = function (key) {\r\n            return this.data.hasOwnProperty(key) ? this.data[key] : null;\r\n        };\r\n        HashMap.prototype.set = function (key, value) {\r\n            return (this.data[key] = value);\r\n        };\r\n        HashMap.prototype.each = function (cb, context) {\r\n            for (var key in this.data) {\r\n                if (this.data.hasOwnProperty(key)) {\r\n                    cb.call(context, this.data[key], key);\r\n                }\r\n            }\r\n        };\r\n        HashMap.prototype.keys = function () {\r\n            return keys(this.data);\r\n        };\r\n        HashMap.prototype.removeKey = function (key) {\r\n            delete this.data[key];\r\n        };\r\n        return HashMap;\r\n    }());\r\n    function createHashMap(obj) {\r\n        return new HashMap(obj);\r\n    }\r\n    function createObject(proto, properties) {\r\n        var obj;\r\n        if (Object.create) {\r\n            obj = Object.create(proto);\r\n        }\r\n        else {\r\n            var StyleCtor = function () { };\r\n            StyleCtor.prototype = proto;\r\n            obj = new StyleCtor();\r\n        }\r\n        if (properties) {\r\n            extend(obj, properties);\r\n        }\r\n        return obj;\r\n    }\r\n    function hasOwn(own, prop) {\r\n        return own.hasOwnProperty(prop);\r\n    }\r\n    function noop() { }\n\n    function create(x, y) {\r\n        if (x == null) {\r\n            x = 0;\r\n        }\r\n        if (y == null) {\r\n            y = 0;\r\n        }\r\n        return [x, y];\r\n    }\r\n    function clone$1(v) {\r\n        return [v[0], v[1]];\r\n    }\r\n    function add(out, v1, v2) {\r\n        out[0] = v1[0] + v2[0];\r\n        out[1] = v1[1] + v2[1];\r\n        return out;\r\n    }\r\n    function sub(out, v1, v2) {\r\n        out[0] = v1[0] - v2[0];\r\n        out[1] = v1[1] - v2[1];\r\n        return out;\r\n    }\r\n    function len(v) {\r\n        return Math.sqrt(lenSquare(v));\r\n    }\r\n    function lenSquare(v) {\r\n        return v[0] * v[0] + v[1] * v[1];\r\n    }\r\n    function scale(out, v, s) {\r\n        out[0] = v[0] * s;\r\n        out[1] = v[1] * s;\r\n        return out;\r\n    }\r\n    function normalize(out, v) {\r\n        var d = len(v);\r\n        if (d === 0) {\r\n            out[0] = 0;\r\n            out[1] = 0;\r\n        }\r\n        else {\r\n            out[0] = v[0] / d;\r\n            out[1] = v[1] / d;\r\n        }\r\n        return out;\r\n    }\r\n    function distance(v1, v2) {\r\n        return Math.sqrt((v1[0] - v2[0]) * (v1[0] - v2[0])\r\n            + (v1[1] - v2[1]) * (v1[1] - v2[1]));\r\n    }\r\n    var dist = distance;\r\n    function distanceSquare(v1, v2) {\r\n        return (v1[0] - v2[0]) * (v1[0] - v2[0])\r\n            + (v1[1] - v2[1]) * (v1[1] - v2[1]);\r\n    }\r\n    var distSquare = distanceSquare;\r\n    function lerp(out, v1, v2, t) {\r\n        out[0] = v1[0] + t * (v2[0] - v1[0]);\r\n        out[1] = v1[1] + t * (v2[1] - v1[1]);\r\n        return out;\r\n    }\r\n    function applyTransform(out, v, m) {\r\n        var x = v[0];\r\n        var y = v[1];\r\n        out[0] = m[0] * x + m[2] * y + m[4];\r\n        out[1] = m[1] * x + m[3] * y + m[5];\r\n        return out;\r\n    }\r\n    function min(out, v1, v2) {\r\n        out[0] = Math.min(v1[0], v2[0]);\r\n        out[1] = Math.min(v1[1], v2[1]);\r\n        return out;\r\n    }\r\n    function max(out, v1, v2) {\r\n        out[0] = Math.max(v1[0], v2[0]);\r\n        out[1] = Math.max(v1[1], v2[1]);\r\n        return out;\r\n    }\n\n    var Param = (function () {\r\n        function Param(target, e) {\r\n            this.target = target;\r\n            this.topTarget = e && e.topTarget;\r\n        }\r\n        return Param;\r\n    }());\r\n    var Draggable = (function () {\r\n        function Draggable(handler) {\r\n            this.handler = handler;\r\n            handler.on('mousedown', this._dragStart, this);\r\n            handler.on('mousemove', this._drag, this);\r\n            handler.on('mouseup', this._dragEnd, this);\r\n        }\r\n        Draggable.prototype._dragStart = function (e) {\r\n            var draggingTarget = e.target;\r\n            while (draggingTarget && !draggingTarget.draggable) {\r\n                draggingTarget = draggingTarget.parent;\r\n            }\r\n            if (draggingTarget) {\r\n                this._draggingTarget = draggingTarget;\r\n                draggingTarget.dragging = true;\r\n                this._x = e.offsetX;\r\n                this._y = e.offsetY;\r\n                this.handler.dispatchToElement(new Param(draggingTarget, e), 'dragstart', e.event);\r\n            }\r\n        };\r\n        Draggable.prototype._drag = function (e) {\r\n            var draggingTarget = this._draggingTarget;\r\n            if (draggingTarget) {\r\n                var x = e.offsetX;\r\n                var y = e.offsetY;\r\n                var dx = x - this._x;\r\n                var dy = y - this._y;\r\n                this._x = x;\r\n                this._y = y;\r\n                draggingTarget.drift(dx, dy, e);\r\n                this.handler.dispatchToElement(new Param(draggingTarget, e), 'drag', e.event);\r\n                var dropTarget = this.handler.findHover(x, y, draggingTarget).target;\r\n                var lastDropTarget = this._dropTarget;\r\n                this._dropTarget = dropTarget;\r\n                if (draggingTarget !== dropTarget) {\r\n                    if (lastDropTarget && dropTarget !== lastDropTarget) {\r\n                        this.handler.dispatchToElement(new Param(lastDropTarget, e), 'dragleave', e.event);\r\n                    }\r\n                    if (dropTarget && dropTarget !== lastDropTarget) {\r\n                        this.handler.dispatchToElement(new Param(dropTarget, e), 'dragenter', e.event);\r\n                    }\r\n                }\r\n            }\r\n        };\r\n        Draggable.prototype._dragEnd = function (e) {\r\n            var draggingTarget = this._draggingTarget;\r\n            if (draggingTarget) {\r\n                draggingTarget.dragging = false;\r\n            }\r\n            this.handler.dispatchToElement(new Param(draggingTarget, e), 'dragend', e.event);\r\n            if (this._dropTarget) {\r\n                this.handler.dispatchToElement(new Param(this._dropTarget, e), 'drop', e.event);\r\n            }\r\n            this._draggingTarget = null;\r\n            this._dropTarget = null;\r\n        };\r\n        return Draggable;\r\n    }());\n\n    var Eventful = (function () {\r\n        function Eventful(eventProcessors) {\r\n            if (eventProcessors) {\r\n                this._$eventProcessor = eventProcessors;\r\n            }\r\n        }\r\n        Eventful.prototype.on = function (event, query, handler, context) {\r\n            if (!this._$handlers) {\r\n                this._$handlers = {};\r\n            }\r\n            var _h = this._$handlers;\r\n            if (typeof query === 'function') {\r\n                context = handler;\r\n                handler = query;\r\n                query = null;\r\n            }\r\n            if (!handler || !event) {\r\n                return this;\r\n            }\r\n            var eventProcessor = this._$eventProcessor;\r\n            if (query != null && eventProcessor && eventProcessor.normalizeQuery) {\r\n                query = eventProcessor.normalizeQuery(query);\r\n            }\r\n            if (!_h[event]) {\r\n                _h[event] = [];\r\n            }\r\n            for (var i = 0; i < _h[event].length; i++) {\r\n                if (_h[event][i].h === handler) {\r\n                    return this;\r\n                }\r\n            }\r\n            var wrap = {\r\n                h: handler,\r\n                query: query,\r\n                ctx: (context || this),\r\n                callAtLast: handler.zrEventfulCallAtLast\r\n            };\r\n            var lastIndex = _h[event].length - 1;\r\n            var lastWrap = _h[event][lastIndex];\r\n            (lastWrap && lastWrap.callAtLast)\r\n                ? _h[event].splice(lastIndex, 0, wrap)\r\n                : _h[event].push(wrap);\r\n            return this;\r\n        };\r\n        Eventful.prototype.isSilent = function (eventName) {\r\n            var _h = this._$handlers;\r\n            return !_h || !_h[eventName] || !_h[eventName].length;\r\n        };\r\n        Eventful.prototype.off = function (eventType, handler) {\r\n            var _h = this._$handlers;\r\n            if (!_h) {\r\n                return this;\r\n            }\r\n            if (!eventType) {\r\n                this._$handlers = {};\r\n                return this;\r\n            }\r\n            if (handler) {\r\n                if (_h[eventType]) {\r\n                    var newList = [];\r\n                    for (var i = 0, l = _h[eventType].length; i < l; i++) {\r\n                        if (_h[eventType][i].h !== handler) {\r\n                            newList.push(_h[eventType][i]);\r\n                        }\r\n                    }\r\n                    _h[eventType] = newList;\r\n                }\r\n                if (_h[eventType] && _h[eventType].length === 0) {\r\n                    delete _h[eventType];\r\n                }\r\n            }\r\n            else {\r\n                delete _h[eventType];\r\n            }\r\n            return this;\r\n        };\r\n        Eventful.prototype.trigger = function (eventType) {\r\n            var args = [];\r\n            for (var _i = 1; _i < arguments.length; _i++) {\r\n                args[_i - 1] = arguments[_i];\r\n            }\r\n            if (!this._$handlers) {\r\n                return this;\r\n            }\r\n            var _h = this._$handlers[eventType];\r\n            var eventProcessor = this._$eventProcessor;\r\n            if (_h) {\r\n                var argLen = args.length;\r\n                var len = _h.length;\r\n                for (var i = 0; i < len; i++) {\r\n                    var hItem = _h[i];\r\n                    if (eventProcessor\r\n                        && eventProcessor.filter\r\n                        && hItem.query != null\r\n                        && !eventProcessor.filter(eventType, hItem.query)) {\r\n                        continue;\r\n                    }\r\n                    switch (argLen) {\r\n                        case 0:\r\n                            hItem.h.call(hItem.ctx);\r\n                            break;\r\n                        case 1:\r\n                            hItem.h.call(hItem.ctx, args[0]);\r\n                            break;\r\n                        case 2:\r\n                            hItem.h.call(hItem.ctx, args[0], args[1]);\r\n                            break;\r\n                        default:\r\n                            hItem.h.apply(hItem.ctx, args);\r\n                            break;\r\n                    }\r\n                }\r\n            }\r\n            eventProcessor && eventProcessor.afterTrigger\r\n                && eventProcessor.afterTrigger(eventType);\r\n            return this;\r\n        };\r\n        Eventful.prototype.triggerWithContext = function (type) {\r\n            if (!this._$handlers) {\r\n                return this;\r\n            }\r\n            var _h = this._$handlers[type];\r\n            var eventProcessor = this._$eventProcessor;\r\n            if (_h) {\r\n                var args = arguments;\r\n                var argLen = args.length;\r\n                var ctx = args[argLen - 1];\r\n                var len = _h.length;\r\n                for (var i = 0; i < len; i++) {\r\n                    var hItem = _h[i];\r\n                    if (eventProcessor\r\n                        && eventProcessor.filter\r\n                        && hItem.query != null\r\n                        && !eventProcessor.filter(type, hItem.query)) {\r\n                        continue;\r\n                    }\r\n                    switch (argLen) {\r\n                        case 0:\r\n                            hItem.h.call(ctx);\r\n                            break;\r\n                        case 1:\r\n                            hItem.h.call(ctx, args[0]);\r\n                            break;\r\n                        case 2:\r\n                            hItem.h.call(ctx, args[0], args[1]);\r\n                            break;\r\n                        default:\r\n                            hItem.h.apply(ctx, args.slice(1, argLen - 1));\r\n                            break;\r\n                    }\r\n                }\r\n            }\r\n            eventProcessor && eventProcessor.afterTrigger\r\n                && eventProcessor.afterTrigger(type);\r\n            return this;\r\n        };\r\n        return Eventful;\r\n    }());\n\n    var LN2 = Math.log(2);\r\n    function determinant(rows, rank, rowStart, rowMask, colMask, detCache) {\r\n        var cacheKey = rowMask + '-' + colMask;\r\n        var fullRank = rows.length;\r\n        if (detCache.hasOwnProperty(cacheKey)) {\r\n            return detCache[cacheKey];\r\n        }\r\n        if (rank === 1) {\r\n            var colStart = Math.round(Math.log(((1 << fullRank) - 1) & ~colMask) / LN2);\r\n            return rows[rowStart][colStart];\r\n        }\r\n        var subRowMask = rowMask | (1 << rowStart);\r\n        var subRowStart = rowStart + 1;\r\n        while (rowMask & (1 << subRowStart)) {\r\n            subRowStart++;\r\n        }\r\n        var sum = 0;\r\n        for (var j = 0, colLocalIdx = 0; j < fullRank; j++) {\r\n            var colTag = 1 << j;\r\n            if (!(colTag & colMask)) {\r\n                sum += (colLocalIdx % 2 ? -1 : 1) * rows[rowStart][j]\r\n                    * determinant(rows, rank - 1, subRowStart, subRowMask, colMask | colTag, detCache);\r\n                colLocalIdx++;\r\n            }\r\n        }\r\n        detCache[cacheKey] = sum;\r\n        return sum;\r\n    }\r\n    function buildTransformer(src, dest) {\r\n        var mA = [\r\n            [src[0], src[1], 1, 0, 0, 0, -dest[0] * src[0], -dest[0] * src[1]],\r\n            [0, 0, 0, src[0], src[1], 1, -dest[1] * src[0], -dest[1] * src[1]],\r\n            [src[2], src[3], 1, 0, 0, 0, -dest[2] * src[2], -dest[2] * src[3]],\r\n            [0, 0, 0, src[2], src[3], 1, -dest[3] * src[2], -dest[3] * src[3]],\r\n            [src[4], src[5], 1, 0, 0, 0, -dest[4] * src[4], -dest[4] * src[5]],\r\n            [0, 0, 0, src[4], src[5], 1, -dest[5] * src[4], -dest[5] * src[5]],\r\n            [src[6], src[7], 1, 0, 0, 0, -dest[6] * src[6], -dest[6] * src[7]],\r\n            [0, 0, 0, src[6], src[7], 1, -dest[7] * src[6], -dest[7] * src[7]]\r\n        ];\r\n        var detCache = {};\r\n        var det = determinant(mA, 8, 0, 0, 0, detCache);\r\n        if (det === 0) {\r\n            return;\r\n        }\r\n        var vh = [];\r\n        for (var i = 0; i < 8; i++) {\r\n            for (var j = 0; j < 8; j++) {\r\n                vh[j] == null && (vh[j] = 0);\r\n                vh[j] += ((i + j) % 2 ? -1 : 1)\r\n                    * determinant(mA, 7, i === 0 ? 1 : 0, 1 << i, 1 << j, detCache)\r\n                    / det * dest[i];\r\n            }\r\n        }\r\n        return function (out, srcPointX, srcPointY) {\r\n            var pk = srcPointX * vh[6] + srcPointY * vh[7] + 1;\r\n            out[0] = (srcPointX * vh[0] + srcPointY * vh[1] + vh[2]) / pk;\r\n            out[1] = (srcPointX * vh[3] + srcPointY * vh[4] + vh[5]) / pk;\r\n        };\r\n    }\n\n    var EVENT_SAVED_PROP = '___zrEVENTSAVED';\r\n    function transformCoordWithViewport(out, el, inX, inY, inverse) {\r\n        if (el.getBoundingClientRect && env.domSupported && !isCanvasEl(el)) {\r\n            var saved = el[EVENT_SAVED_PROP] || (el[EVENT_SAVED_PROP] = {});\r\n            var markers = prepareCoordMarkers(el, saved);\r\n            var transformer = preparePointerTransformer(markers, saved, inverse);\r\n            if (transformer) {\r\n                transformer(out, inX, inY);\r\n                return true;\r\n            }\r\n        }\r\n        return false;\r\n    }\r\n    function prepareCoordMarkers(el, saved) {\r\n        var markers = saved.markers;\r\n        if (markers) {\r\n            return markers;\r\n        }\r\n        markers = saved.markers = [];\r\n        var propLR = ['left', 'right'];\r\n        var propTB = ['top', 'bottom'];\r\n        for (var i = 0; i < 4; i++) {\r\n            var marker = document.createElement('div');\r\n            var stl = marker.style;\r\n            var idxLR = i % 2;\r\n            var idxTB = (i >> 1) % 2;\r\n            stl.cssText = [\r\n                'position: absolute',\r\n                'visibility: hidden',\r\n                'padding: 0',\r\n                'margin: 0',\r\n                'border-width: 0',\r\n                'user-select: none',\r\n                'width:0',\r\n                'height:0',\r\n                propLR[idxLR] + ':0',\r\n                propTB[idxTB] + ':0',\r\n                propLR[1 - idxLR] + ':auto',\r\n                propTB[1 - idxTB] + ':auto',\r\n                ''\r\n            ].join('!important;');\r\n            el.appendChild(marker);\r\n            markers.push(marker);\r\n        }\r\n        return markers;\r\n    }\r\n    function preparePointerTransformer(markers, saved, inverse) {\r\n        var transformerName = inverse ? 'invTrans' : 'trans';\r\n        var transformer = saved[transformerName];\r\n        var oldSrcCoords = saved.srcCoords;\r\n        var srcCoords = [];\r\n        var destCoords = [];\r\n        var oldCoordTheSame = true;\r\n        for (var i = 0; i < 4; i++) {\r\n            var rect = markers[i].getBoundingClientRect();\r\n            var ii = 2 * i;\r\n            var x = rect.left;\r\n            var y = rect.top;\r\n            srcCoords.push(x, y);\r\n            oldCoordTheSame = oldCoordTheSame && oldSrcCoords && x === oldSrcCoords[ii] && y === oldSrcCoords[ii + 1];\r\n            destCoords.push(markers[i].offsetLeft, markers[i].offsetTop);\r\n        }\r\n        return (oldCoordTheSame && transformer)\r\n            ? transformer\r\n            : (saved.srcCoords = srcCoords,\r\n                saved[transformerName] = inverse\r\n                    ? buildTransformer(destCoords, srcCoords)\r\n                    : buildTransformer(srcCoords, destCoords));\r\n    }\r\n    function isCanvasEl(el) {\r\n        return el.nodeName.toUpperCase() === 'CANVAS';\r\n    }\n\n    var isDomLevel2 = (typeof window !== 'undefined') && !!window.addEventListener;\r\n    var MOUSE_EVENT_REG = /^(?:mouse|pointer|contextmenu|drag|drop)|click/;\r\n    var _calcOut = [];\r\n    function clientToLocal(el, e, out, calculate) {\r\n        out = out || {};\r\n        if (calculate || !env.canvasSupported) {\r\n            calculateZrXY(el, e, out);\r\n        }\r\n        else if (env.browser.firefox\r\n            && e.layerX != null\r\n            && e.layerX !== e.offsetX) {\r\n            out.zrX = e.layerX;\r\n            out.zrY = e.layerY;\r\n        }\r\n        else if (e.offsetX != null) {\r\n            out.zrX = e.offsetX;\r\n            out.zrY = e.offsetY;\r\n        }\r\n        else {\r\n            calculateZrXY(el, e, out);\r\n        }\r\n        return out;\r\n    }\r\n    function calculateZrXY(el, e, out) {\r\n        if (env.domSupported && el.getBoundingClientRect) {\r\n            var ex = e.clientX;\r\n            var ey = e.clientY;\r\n            if (isCanvasEl(el)) {\r\n                var box = el.getBoundingClientRect();\r\n                out.zrX = ex - box.left;\r\n                out.zrY = ey - box.top;\r\n                return;\r\n            }\r\n            else {\r\n                if (transformCoordWithViewport(_calcOut, el, ex, ey)) {\r\n                    out.zrX = _calcOut[0];\r\n                    out.zrY = _calcOut[1];\r\n                    return;\r\n                }\r\n            }\r\n        }\r\n        out.zrX = out.zrY = 0;\r\n    }\r\n    function getNativeEvent(e) {\r\n        return e\r\n            || window.event;\r\n    }\r\n    function normalizeEvent(el, e, calculate) {\r\n        e = getNativeEvent(e);\r\n        if (e.zrX != null) {\r\n            return e;\r\n        }\r\n        var eventType = e.type;\r\n        var isTouch = eventType && eventType.indexOf('touch') >= 0;\r\n        if (!isTouch) {\r\n            clientToLocal(el, e, e, calculate);\r\n            var wheelDelta = getWheelDeltaMayPolyfill(e);\r\n            e.zrDelta = wheelDelta ? wheelDelta / 120 : -(e.detail || 0) / 3;\r\n        }\r\n        else {\r\n            var touch = eventType !== 'touchend'\r\n                ? e.targetTouches[0]\r\n                : e.changedTouches[0];\r\n            touch && clientToLocal(el, touch, e, calculate);\r\n        }\r\n        var button = e.button;\r\n        if (e.which == null && button !== undefined && MOUSE_EVENT_REG.test(e.type)) {\r\n            e.which = (button & 1 ? 1 : (button & 2 ? 3 : (button & 4 ? 2 : 0)));\r\n        }\r\n        return e;\r\n    }\r\n    function getWheelDeltaMayPolyfill(e) {\r\n        var rawWheelDelta = e.wheelDelta;\r\n        if (rawWheelDelta) {\r\n            return rawWheelDelta;\r\n        }\r\n        var deltaX = e.deltaX;\r\n        var deltaY = e.deltaY;\r\n        if (deltaX == null || deltaY == null) {\r\n            return rawWheelDelta;\r\n        }\r\n        var delta = deltaY !== 0 ? Math.abs(deltaY) : Math.abs(deltaX);\r\n        var sign = deltaY > 0 ? -1\r\n            : deltaY < 0 ? 1\r\n                : deltaX > 0 ? -1\r\n                    : 1;\r\n        return 3 * delta * sign;\r\n    }\r\n    function addEventListener(el, name, handler, opt) {\r\n        if (isDomLevel2) {\r\n            el.addEventListener(name, handler, opt);\r\n        }\r\n        else {\r\n            el.attachEvent('on' + name, handler);\r\n        }\r\n    }\r\n    function removeEventListener(el, name, handler, opt) {\r\n        if (isDomLevel2) {\r\n            el.removeEventListener(name, handler, opt);\r\n        }\r\n        else {\r\n            el.detachEvent('on' + name, handler);\r\n        }\r\n    }\r\n    var stop = isDomLevel2\r\n        ? function (e) {\r\n            e.preventDefault();\r\n            e.stopPropagation();\r\n            e.cancelBubble = true;\r\n        }\r\n        : function (e) {\r\n            e.returnValue = false;\r\n            e.cancelBubble = true;\r\n        };\n\n    var GestureMgr = (function () {\r\n        function GestureMgr() {\r\n            this._track = [];\r\n        }\r\n        GestureMgr.prototype.recognize = function (event, target, root) {\r\n            this._doTrack(event, target, root);\r\n            return this._recognize(event);\r\n        };\r\n        GestureMgr.prototype.clear = function () {\r\n            this._track.length = 0;\r\n            return this;\r\n        };\r\n        GestureMgr.prototype._doTrack = function (event, target, root) {\r\n            var touches = event.touches;\r\n            if (!touches) {\r\n                return;\r\n            }\r\n            var trackItem = {\r\n                points: [],\r\n                touches: [],\r\n                target: target,\r\n                event: event\r\n            };\r\n            for (var i = 0, len = touches.length; i < len; i++) {\r\n                var touch = touches[i];\r\n                var pos = clientToLocal(root, touch, {});\r\n                trackItem.points.push([pos.zrX, pos.zrY]);\r\n                trackItem.touches.push(touch);\r\n            }\r\n            this._track.push(trackItem);\r\n        };\r\n        GestureMgr.prototype._recognize = function (event) {\r\n            for (var eventName in recognizers) {\r\n                if (recognizers.hasOwnProperty(eventName)) {\r\n                    var gestureInfo = recognizers[eventName](this._track, event);\r\n                    if (gestureInfo) {\r\n                        return gestureInfo;\r\n                    }\r\n                }\r\n            }\r\n        };\r\n        return GestureMgr;\r\n    }());\r\n    function dist$1(pointPair) {\r\n        var dx = pointPair[1][0] - pointPair[0][0];\r\n        var dy = pointPair[1][1] - pointPair[0][1];\r\n        return Math.sqrt(dx * dx + dy * dy);\r\n    }\r\n    function center(pointPair) {\r\n        return [\r\n            (pointPair[0][0] + pointPair[1][0]) / 2,\r\n            (pointPair[0][1] + pointPair[1][1]) / 2\r\n        ];\r\n    }\r\n    var recognizers = {\r\n        pinch: function (tracks, event) {\r\n            var trackLen = tracks.length;\r\n            if (!trackLen) {\r\n                return;\r\n            }\r\n            var pinchEnd = (tracks[trackLen - 1] || {}).points;\r\n            var pinchPre = (tracks[trackLen - 2] || {}).points || pinchEnd;\r\n            if (pinchPre\r\n                && pinchPre.length > 1\r\n                && pinchEnd\r\n                && pinchEnd.length > 1) {\r\n                var pinchScale = dist$1(pinchEnd) / dist$1(pinchPre);\r\n                !isFinite(pinchScale) && (pinchScale = 1);\r\n                event.pinchScale = pinchScale;\r\n                var pinchCenter = center(pinchEnd);\r\n                event.pinchX = pinchCenter[0];\r\n                event.pinchY = pinchCenter[1];\r\n                return {\r\n                    type: 'pinch',\r\n                    target: tracks[0].target,\r\n                    event: event\r\n                };\r\n            }\r\n        }\r\n    };\n\n    var SILENT = 'silent';\r\n    function makeEventPacket(eveType, targetInfo, event) {\r\n        return {\r\n            type: eveType,\r\n            event: event,\r\n            target: targetInfo.target,\r\n            topTarget: targetInfo.topTarget,\r\n            cancelBubble: false,\r\n            offsetX: event.zrX,\r\n            offsetY: event.zrY,\r\n            gestureEvent: event.gestureEvent,\r\n            pinchX: event.pinchX,\r\n            pinchY: event.pinchY,\r\n            pinchScale: event.pinchScale,\r\n            wheelDelta: event.zrDelta,\r\n            zrByTouch: event.zrByTouch,\r\n            which: event.which,\r\n            stop: stopEvent\r\n        };\r\n    }\r\n    function stopEvent() {\r\n        stop(this.event);\r\n    }\r\n    var EmptyProxy = (function (_super) {\r\n        __extends(EmptyProxy, _super);\r\n        function EmptyProxy() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.handler = null;\r\n            return _this;\r\n        }\r\n        EmptyProxy.prototype.dispose = function () { };\r\n        EmptyProxy.prototype.setCursor = function () { };\r\n        return EmptyProxy;\r\n    }(Eventful));\r\n    var HoveredResult = (function () {\r\n        function HoveredResult(x, y) {\r\n            this.x = x;\r\n            this.y = y;\r\n        }\r\n        return HoveredResult;\r\n    }());\r\n    var handlerNames = [\r\n        'click', 'dblclick', 'mousewheel', 'mouseout',\r\n        'mouseup', 'mousedown', 'mousemove', 'contextmenu'\r\n    ];\r\n    var Handler = (function (_super) {\r\n        __extends(Handler, _super);\r\n        function Handler(storage, painter, proxy, painterRoot) {\r\n            var _this = _super.call(this) || this;\r\n            _this._hovered = new HoveredResult(0, 0);\r\n            _this.storage = storage;\r\n            _this.painter = painter;\r\n            _this.painterRoot = painterRoot;\r\n            proxy = proxy || new EmptyProxy();\r\n            _this.proxy = null;\r\n            _this.setHandlerProxy(proxy);\r\n            _this._draggingMgr = new Draggable(_this);\r\n            return _this;\r\n        }\r\n        Handler.prototype.setHandlerProxy = function (proxy) {\r\n            if (this.proxy) {\r\n                this.proxy.dispose();\r\n            }\r\n            if (proxy) {\r\n                each(handlerNames, function (name) {\r\n                    proxy.on && proxy.on(name, this[name], this);\r\n                }, this);\r\n                proxy.handler = this;\r\n            }\r\n            this.proxy = proxy;\r\n        };\r\n        Handler.prototype.mousemove = function (event) {\r\n            var x = event.zrX;\r\n            var y = event.zrY;\r\n            var isOutside = isOutsideBoundary(this, x, y);\r\n            var lastHovered = this._hovered;\r\n            var lastHoveredTarget = lastHovered.target;\r\n            if (lastHoveredTarget && !lastHoveredTarget.__zr) {\r\n                lastHovered = this.findHover(lastHovered.x, lastHovered.y);\r\n                lastHoveredTarget = lastHovered.target;\r\n            }\r\n            var hovered = this._hovered = isOutside ? new HoveredResult(x, y) : this.findHover(x, y);\r\n            var hoveredTarget = hovered.target;\r\n            var proxy = this.proxy;\r\n            proxy.setCursor && proxy.setCursor(hoveredTarget ? hoveredTarget.cursor : 'default');\r\n            if (lastHoveredTarget && hoveredTarget !== lastHoveredTarget) {\r\n                this.dispatchToElement(lastHovered, 'mouseout', event);\r\n            }\r\n            this.dispatchToElement(hovered, 'mousemove', event);\r\n            if (hoveredTarget && hoveredTarget !== lastHoveredTarget) {\r\n                this.dispatchToElement(hovered, 'mouseover', event);\r\n            }\r\n        };\r\n        Handler.prototype.mouseout = function (event) {\r\n            var eventControl = event.zrEventControl;\r\n            var zrIsToLocalDOM = event.zrIsToLocalDOM;\r\n            if (eventControl !== 'only_globalout') {\r\n                this.dispatchToElement(this._hovered, 'mouseout', event);\r\n            }\r\n            if (eventControl !== 'no_globalout') {\r\n                !zrIsToLocalDOM && this.trigger('globalout', { type: 'globalout', event: event });\r\n            }\r\n        };\r\n        Handler.prototype.resize = function () {\r\n            this._hovered = new HoveredResult(0, 0);\r\n        };\r\n        Handler.prototype.dispatch = function (eventName, eventArgs) {\r\n            var handler = this[eventName];\r\n            handler && handler.call(this, eventArgs);\r\n        };\r\n        Handler.prototype.dispose = function () {\r\n            this.proxy.dispose();\r\n            this.storage = null;\r\n            this.proxy = null;\r\n            this.painter = null;\r\n        };\r\n        Handler.prototype.setCursorStyle = function (cursorStyle) {\r\n            var proxy = this.proxy;\r\n            proxy.setCursor && proxy.setCursor(cursorStyle);\r\n        };\r\n        Handler.prototype.dispatchToElement = function (targetInfo, eventName, event) {\r\n            targetInfo = targetInfo || {};\r\n            var el = targetInfo.target;\r\n            if (el && el.silent) {\r\n                return;\r\n            }\r\n            var eventKey = ('on' + eventName);\r\n            var eventPacket = makeEventPacket(eventName, targetInfo, event);\r\n            while (el) {\r\n                el[eventKey]\r\n                    && (eventPacket.cancelBubble = !!el[eventKey].call(el, eventPacket));\r\n                el.trigger(eventName, eventPacket);\r\n                el = el.__hostTarget ? el.__hostTarget : el.parent;\r\n                if (eventPacket.cancelBubble) {\r\n                    break;\r\n                }\r\n            }\r\n            if (!eventPacket.cancelBubble) {\r\n                this.trigger(eventName, eventPacket);\r\n                if (this.painter && this.painter.eachOtherLayer) {\r\n                    this.painter.eachOtherLayer(function (layer) {\r\n                        if (typeof (layer[eventKey]) === 'function') {\r\n                            layer[eventKey].call(layer, eventPacket);\r\n                        }\r\n                        if (layer.trigger) {\r\n                            layer.trigger(eventName, eventPacket);\r\n                        }\r\n                    });\r\n                }\r\n            }\r\n        };\r\n        Handler.prototype.findHover = function (x, y, exclude) {\r\n            var list = this.storage.getDisplayList();\r\n            var out = new HoveredResult(x, y);\r\n            for (var i = list.length - 1; i >= 0; i--) {\r\n                var hoverCheckResult = void 0;\r\n                if (list[i] !== exclude\r\n                    && !list[i].ignore\r\n                    && (hoverCheckResult = isHover(list[i], x, y))) {\r\n                    !out.topTarget && (out.topTarget = list[i]);\r\n                    if (hoverCheckResult !== SILENT) {\r\n                        out.target = list[i];\r\n                        break;\r\n                    }\r\n                }\r\n            }\r\n            return out;\r\n        };\r\n        Handler.prototype.processGesture = function (event, stage) {\r\n            if (!this._gestureMgr) {\r\n                this._gestureMgr = new GestureMgr();\r\n            }\r\n            var gestureMgr = this._gestureMgr;\r\n            stage === 'start' && gestureMgr.clear();\r\n            var gestureInfo = gestureMgr.recognize(event, this.findHover(event.zrX, event.zrY, null).target, this.proxy.dom);\r\n            stage === 'end' && gestureMgr.clear();\r\n            if (gestureInfo) {\r\n                var type = gestureInfo.type;\r\n                event.gestureEvent = type;\r\n                var res = new HoveredResult();\r\n                res.target = gestureInfo.target;\r\n                this.dispatchToElement(res, type, gestureInfo.event);\r\n            }\r\n        };\r\n        return Handler;\r\n    }(Eventful));\r\n    each(['click', 'mousedown', 'mouseup', 'mousewheel', 'dblclick', 'contextmenu'], function (name) {\r\n        Handler.prototype[name] = function (event) {\r\n            var x = event.zrX;\r\n            var y = event.zrY;\r\n            var isOutside = isOutsideBoundary(this, x, y);\r\n            var hovered;\r\n            var hoveredTarget;\r\n            if (name !== 'mouseup' || !isOutside) {\r\n                hovered = this.findHover(x, y);\r\n                hoveredTarget = hovered.target;\r\n            }\r\n            if (name === 'mousedown') {\r\n                this._downEl = hoveredTarget;\r\n                this._downPoint = [event.zrX, event.zrY];\r\n                this._upEl = hoveredTarget;\r\n            }\r\n            else if (name === 'mouseup') {\r\n                this._upEl = hoveredTarget;\r\n            }\r\n            else if (name === 'click') {\r\n                if (this._downEl !== this._upEl\r\n                    || !this._downPoint\r\n                    || dist(this._downPoint, [event.zrX, event.zrY]) > 4) {\r\n                    return;\r\n                }\r\n                this._downPoint = null;\r\n            }\r\n            this.dispatchToElement(hovered, name, event);\r\n        };\r\n    });\r\n    function isHover(displayable, x, y) {\r\n        if (displayable[displayable.rectHover ? 'rectContain' : 'contain'](x, y)) {\r\n            var el = displayable;\r\n            var isSilent = void 0;\r\n            var ignoreClip = false;\r\n            while (el) {\r\n                if (el.ignoreClip) {\r\n                    ignoreClip = true;\r\n                }\r\n                if (!ignoreClip) {\r\n                    var clipPath = el.getClipPath();\r\n                    if (clipPath && !clipPath.contain(x, y)) {\r\n                        return false;\r\n                    }\r\n                    if (el.silent) {\r\n                        isSilent = true;\r\n                    }\r\n                }\r\n                var hostEl = el.__hostTarget;\r\n                el = hostEl ? hostEl : el.parent;\r\n            }\r\n            return isSilent ? SILENT : true;\r\n        }\r\n        return false;\r\n    }\r\n    function isOutsideBoundary(handlerInstance, x, y) {\r\n        var painter = handlerInstance.painter;\r\n        return x < 0 || x > painter.getWidth() || y < 0 || y > painter.getHeight();\r\n    }\n\n    function create$1() {\r\n        return [1, 0, 0, 1, 0, 0];\r\n    }\r\n    function identity(out) {\r\n        out[0] = 1;\r\n        out[1] = 0;\r\n        out[2] = 0;\r\n        out[3] = 1;\r\n        out[4] = 0;\r\n        out[5] = 0;\r\n        return out;\r\n    }\r\n    function copy(out, m) {\r\n        out[0] = m[0];\r\n        out[1] = m[1];\r\n        out[2] = m[2];\r\n        out[3] = m[3];\r\n        out[4] = m[4];\r\n        out[5] = m[5];\r\n        return out;\r\n    }\r\n    function mul(out, m1, m2) {\r\n        var out0 = m1[0] * m2[0] + m1[2] * m2[1];\r\n        var out1 = m1[1] * m2[0] + m1[3] * m2[1];\r\n        var out2 = m1[0] * m2[2] + m1[2] * m2[3];\r\n        var out3 = m1[1] * m2[2] + m1[3] * m2[3];\r\n        var out4 = m1[0] * m2[4] + m1[2] * m2[5] + m1[4];\r\n        var out5 = m1[1] * m2[4] + m1[3] * m2[5] + m1[5];\r\n        out[0] = out0;\r\n        out[1] = out1;\r\n        out[2] = out2;\r\n        out[3] = out3;\r\n        out[4] = out4;\r\n        out[5] = out5;\r\n        return out;\r\n    }\r\n    function translate(out, a, v) {\r\n        out[0] = a[0];\r\n        out[1] = a[1];\r\n        out[2] = a[2];\r\n        out[3] = a[3];\r\n        out[4] = a[4] + v[0];\r\n        out[5] = a[5] + v[1];\r\n        return out;\r\n    }\r\n    function rotate(out, a, rad) {\r\n        var aa = a[0];\r\n        var ac = a[2];\r\n        var atx = a[4];\r\n        var ab = a[1];\r\n        var ad = a[3];\r\n        var aty = a[5];\r\n        var st = Math.sin(rad);\r\n        var ct = Math.cos(rad);\r\n        out[0] = aa * ct + ab * st;\r\n        out[1] = -aa * st + ab * ct;\r\n        out[2] = ac * ct + ad * st;\r\n        out[3] = -ac * st + ct * ad;\r\n        out[4] = ct * atx + st * aty;\r\n        out[5] = ct * aty - st * atx;\r\n        return out;\r\n    }\r\n    function scale$1(out, a, v) {\r\n        var vx = v[0];\r\n        var vy = v[1];\r\n        out[0] = a[0] * vx;\r\n        out[1] = a[1] * vy;\r\n        out[2] = a[2] * vx;\r\n        out[3] = a[3] * vy;\r\n        out[4] = a[4] * vx;\r\n        out[5] = a[5] * vy;\r\n        return out;\r\n    }\r\n    function invert(out, a) {\r\n        var aa = a[0];\r\n        var ac = a[2];\r\n        var atx = a[4];\r\n        var ab = a[1];\r\n        var ad = a[3];\r\n        var aty = a[5];\r\n        var det = aa * ad - ab * ac;\r\n        if (!det) {\r\n            return null;\r\n        }\r\n        det = 1.0 / det;\r\n        out[0] = ad * det;\r\n        out[1] = -ab * det;\r\n        out[2] = -ac * det;\r\n        out[3] = aa * det;\r\n        out[4] = (ac * aty - ad * atx) * det;\r\n        out[5] = (ab * atx - aa * aty) * det;\r\n        return out;\r\n    }\n\n    var mIdentity = identity;\r\n    var EPSILON = 5e-5;\r\n    function isNotAroundZero(val) {\r\n        return val > EPSILON || val < -EPSILON;\r\n    }\r\n    var scaleTmp = [];\r\n    var tmpTransform = [];\r\n    var originTransform = create$1();\r\n    var abs = Math.abs;\r\n    var Transformable = (function () {\r\n        function Transformable() {\r\n        }\r\n        Transformable.prototype.setPosition = function (arr) {\r\n            this.x = arr[0];\r\n            this.y = arr[1];\r\n        };\r\n        Transformable.prototype.setScale = function (arr) {\r\n            this.scaleX = arr[0];\r\n            this.scaleY = arr[1];\r\n        };\r\n        Transformable.prototype.setOrigin = function (arr) {\r\n            this.originX = arr[0];\r\n            this.originY = arr[1];\r\n        };\r\n        Transformable.prototype.needLocalTransform = function () {\r\n            return isNotAroundZero(this.rotation)\r\n                || isNotAroundZero(this.x)\r\n                || isNotAroundZero(this.y)\r\n                || isNotAroundZero(this.scaleX - 1)\r\n                || isNotAroundZero(this.scaleY - 1);\r\n        };\r\n        Transformable.prototype.updateTransform = function () {\r\n            var parent = this.parent;\r\n            var parentHasTransform = parent && parent.transform;\r\n            var needLocalTransform = this.needLocalTransform();\r\n            var m = this.transform;\r\n            if (!(needLocalTransform || parentHasTransform)) {\r\n                m && mIdentity(m);\r\n                return;\r\n            }\r\n            m = m || create$1();\r\n            if (needLocalTransform) {\r\n                this.getLocalTransform(m);\r\n            }\r\n            else {\r\n                mIdentity(m);\r\n            }\r\n            if (parentHasTransform) {\r\n                if (needLocalTransform) {\r\n                    mul(m, parent.transform, m);\r\n                }\r\n                else {\r\n                    copy(m, parent.transform);\r\n                }\r\n            }\r\n            this.transform = m;\r\n            this._resolveGlobalScaleRatio(m);\r\n        };\r\n        Transformable.prototype._resolveGlobalScaleRatio = function (m) {\r\n            var globalScaleRatio = this.globalScaleRatio;\r\n            if (globalScaleRatio != null && globalScaleRatio !== 1) {\r\n                this.getGlobalScale(scaleTmp);\r\n                var relX = scaleTmp[0] < 0 ? -1 : 1;\r\n                var relY = scaleTmp[1] < 0 ? -1 : 1;\r\n                var sx = ((scaleTmp[0] - relX) * globalScaleRatio + relX) / scaleTmp[0] || 0;\r\n                var sy = ((scaleTmp[1] - relY) * globalScaleRatio + relY) / scaleTmp[1] || 0;\r\n                m[0] *= sx;\r\n                m[1] *= sx;\r\n                m[2] *= sy;\r\n                m[3] *= sy;\r\n            }\r\n            this.invTransform = this.invTransform || create$1();\r\n            invert(this.invTransform, m);\r\n        };\r\n        Transformable.prototype.getLocalTransform = function (m) {\r\n            return Transformable.getLocalTransform(this, m);\r\n        };\r\n        Transformable.prototype.getComputedTransform = function () {\r\n            var transformNode = this;\r\n            var ancestors = [];\r\n            while (transformNode) {\r\n                ancestors.push(transformNode);\r\n                transformNode = transformNode.parent;\r\n            }\r\n            while (transformNode = ancestors.pop()) {\r\n                transformNode.updateTransform();\r\n            }\r\n            return this.transform;\r\n        };\r\n        Transformable.prototype.setLocalTransform = function (m) {\r\n            if (!m) {\r\n                return;\r\n            }\r\n            var sx = m[0] * m[0] + m[1] * m[1];\r\n            var sy = m[2] * m[2] + m[3] * m[3];\r\n            if (isNotAroundZero(sx - 1)) {\r\n                sx = Math.sqrt(sx);\r\n            }\r\n            if (isNotAroundZero(sy - 1)) {\r\n                sy = Math.sqrt(sy);\r\n            }\r\n            if (m[0] < 0) {\r\n                sx = -sx;\r\n            }\r\n            if (m[3] < 0) {\r\n                sy = -sy;\r\n            }\r\n            this.rotation = Math.atan2(-m[1] / sy, m[0] / sx);\r\n            if (sx < 0 && sy < 0) {\r\n                this.rotation += Math.PI;\r\n                sx = -sx;\r\n                sy = -sy;\r\n            }\r\n            this.x = m[4];\r\n            this.y = m[5];\r\n            this.scaleX = sx;\r\n            this.scaleY = sy;\r\n        };\r\n        Transformable.prototype.decomposeTransform = function () {\r\n            if (!this.transform) {\r\n                return;\r\n            }\r\n            var parent = this.parent;\r\n            var m = this.transform;\r\n            if (parent && parent.transform) {\r\n                mul(tmpTransform, parent.invTransform, m);\r\n                m = tmpTransform;\r\n            }\r\n            var ox = this.originX;\r\n            var oy = this.originY;\r\n            if (ox || oy) {\r\n                originTransform[4] = ox;\r\n                originTransform[5] = oy;\r\n                mul(tmpTransform, m, originTransform);\r\n                tmpTransform[4] -= ox;\r\n                tmpTransform[5] -= oy;\r\n                m = tmpTransform;\r\n            }\r\n            this.setLocalTransform(m);\r\n        };\r\n        Transformable.prototype.getGlobalScale = function (out) {\r\n            var m = this.transform;\r\n            out = out || [];\r\n            if (!m) {\r\n                out[0] = 1;\r\n                out[1] = 1;\r\n                return out;\r\n            }\r\n            out[0] = Math.sqrt(m[0] * m[0] + m[1] * m[1]);\r\n            out[1] = Math.sqrt(m[2] * m[2] + m[3] * m[3]);\r\n            if (m[0] < 0) {\r\n                out[0] = -out[0];\r\n            }\r\n            if (m[3] < 0) {\r\n                out[1] = -out[1];\r\n            }\r\n            return out;\r\n        };\r\n        Transformable.prototype.transformCoordToLocal = function (x, y) {\r\n            var v2 = [x, y];\r\n            var invTransform = this.invTransform;\r\n            if (invTransform) {\r\n                applyTransform(v2, v2, invTransform);\r\n            }\r\n            return v2;\r\n        };\r\n        Transformable.prototype.transformCoordToGlobal = function (x, y) {\r\n            var v2 = [x, y];\r\n            var transform = this.transform;\r\n            if (transform) {\r\n                applyTransform(v2, v2, transform);\r\n            }\r\n            return v2;\r\n        };\r\n        Transformable.prototype.getLineScale = function () {\r\n            var m = this.transform;\r\n            return m && abs(m[0] - 1) > 1e-10 && abs(m[3] - 1) > 1e-10\r\n                ? Math.sqrt(abs(m[0] * m[3] - m[2] * m[1]))\r\n                : 1;\r\n        };\r\n        Transformable.getLocalTransform = function (target, m) {\r\n            m = m || [];\r\n            mIdentity(m);\r\n            var ox = target.originX || 0;\r\n            var oy = target.originY || 0;\r\n            var sx = target.scaleX;\r\n            var sy = target.scaleY;\r\n            var rotation = target.rotation || 0;\r\n            var x = target.x;\r\n            var y = target.y;\r\n            m[4] -= ox;\r\n            m[5] -= oy;\r\n            m[0] *= sx;\r\n            m[1] *= sy;\r\n            m[2] *= sx;\r\n            m[3] *= sy;\r\n            m[4] *= sx;\r\n            m[5] *= sy;\r\n            if (rotation) {\r\n                rotate(m, m, rotation);\r\n            }\r\n            m[4] += ox;\r\n            m[5] += oy;\r\n            m[4] += x;\r\n            m[5] += y;\r\n            return m;\r\n        };\r\n        Transformable.initDefaultProps = (function () {\r\n            var proto = Transformable.prototype;\r\n            proto.x = 0;\r\n            proto.y = 0;\r\n            proto.scaleX = 1;\r\n            proto.scaleY = 1;\r\n            proto.originX = 0;\r\n            proto.originY = 0;\r\n            proto.rotation = 0;\r\n            proto.globalScaleRatio = 1;\r\n        })();\r\n        return Transformable;\r\n    }());\n\n    var easing = {\r\n        linear: function (k) {\r\n            return k;\r\n        },\r\n        quadraticIn: function (k) {\r\n            return k * k;\r\n        },\r\n        quadraticOut: function (k) {\r\n            return k * (2 - k);\r\n        },\r\n        quadraticInOut: function (k) {\r\n            if ((k *= 2) < 1) {\r\n                return 0.5 * k * k;\r\n            }\r\n            return -0.5 * (--k * (k - 2) - 1);\r\n        },\r\n        cubicIn: function (k) {\r\n            return k * k * k;\r\n        },\r\n        cubicOut: function (k) {\r\n            return --k * k * k + 1;\r\n        },\r\n        cubicInOut: function (k) {\r\n            if ((k *= 2) < 1) {\r\n                return 0.5 * k * k * k;\r\n            }\r\n            return 0.5 * ((k -= 2) * k * k + 2);\r\n        },\r\n        quarticIn: function (k) {\r\n            return k * k * k * k;\r\n        },\r\n        quarticOut: function (k) {\r\n            return 1 - (--k * k * k * k);\r\n        },\r\n        quarticInOut: function (k) {\r\n            if ((k *= 2) < 1) {\r\n                return 0.5 * k * k * k * k;\r\n            }\r\n            return -0.5 * ((k -= 2) * k * k * k - 2);\r\n        },\r\n        quinticIn: function (k) {\r\n            return k * k * k * k * k;\r\n        },\r\n        quinticOut: function (k) {\r\n            return --k * k * k * k * k + 1;\r\n        },\r\n        quinticInOut: function (k) {\r\n            if ((k *= 2) < 1) {\r\n                return 0.5 * k * k * k * k * k;\r\n            }\r\n            return 0.5 * ((k -= 2) * k * k * k * k + 2);\r\n        },\r\n        sinusoidalIn: function (k) {\r\n            return 1 - Math.cos(k * Math.PI / 2);\r\n        },\r\n        sinusoidalOut: function (k) {\r\n            return Math.sin(k * Math.PI / 2);\r\n        },\r\n        sinusoidalInOut: function (k) {\r\n            return 0.5 * (1 - Math.cos(Math.PI * k));\r\n        },\r\n        exponentialIn: function (k) {\r\n            return k === 0 ? 0 : Math.pow(1024, k - 1);\r\n        },\r\n        exponentialOut: function (k) {\r\n            return k === 1 ? 1 : 1 - Math.pow(2, -10 * k);\r\n        },\r\n        exponentialInOut: function (k) {\r\n            if (k === 0) {\r\n                return 0;\r\n            }\r\n            if (k === 1) {\r\n                return 1;\r\n            }\r\n            if ((k *= 2) < 1) {\r\n                return 0.5 * Math.pow(1024, k - 1);\r\n            }\r\n            return 0.5 * (-Math.pow(2, -10 * (k - 1)) + 2);\r\n        },\r\n        circularIn: function (k) {\r\n            return 1 - Math.sqrt(1 - k * k);\r\n        },\r\n        circularOut: function (k) {\r\n            return Math.sqrt(1 - (--k * k));\r\n        },\r\n        circularInOut: function (k) {\r\n            if ((k *= 2) < 1) {\r\n                return -0.5 * (Math.sqrt(1 - k * k) - 1);\r\n            }\r\n            return 0.5 * (Math.sqrt(1 - (k -= 2) * k) + 1);\r\n        },\r\n        elasticIn: function (k) {\r\n            var s;\r\n            var a = 0.1;\r\n            var p = 0.4;\r\n            if (k === 0) {\r\n                return 0;\r\n            }\r\n            if (k === 1) {\r\n                return 1;\r\n            }\r\n            if (!a || a < 1) {\r\n                a = 1;\r\n                s = p / 4;\r\n            }\r\n            else {\r\n                s = p * Math.asin(1 / a) / (2 * Math.PI);\r\n            }\r\n            return -(a * Math.pow(2, 10 * (k -= 1))\r\n                * Math.sin((k - s) * (2 * Math.PI) / p));\r\n        },\r\n        elasticOut: function (k) {\r\n            var s;\r\n            var a = 0.1;\r\n            var p = 0.4;\r\n            if (k === 0) {\r\n                return 0;\r\n            }\r\n            if (k === 1) {\r\n                return 1;\r\n            }\r\n            if (!a || a < 1) {\r\n                a = 1;\r\n                s = p / 4;\r\n            }\r\n            else {\r\n                s = p * Math.asin(1 / a) / (2 * Math.PI);\r\n            }\r\n            return (a * Math.pow(2, -10 * k)\r\n                * Math.sin((k - s) * (2 * Math.PI) / p) + 1);\r\n        },\r\n        elasticInOut: function (k) {\r\n            var s;\r\n            var a = 0.1;\r\n            var p = 0.4;\r\n            if (k === 0) {\r\n                return 0;\r\n            }\r\n            if (k === 1) {\r\n                return 1;\r\n            }\r\n            if (!a || a < 1) {\r\n                a = 1;\r\n                s = p / 4;\r\n            }\r\n            else {\r\n                s = p * Math.asin(1 / a) / (2 * Math.PI);\r\n            }\r\n            if ((k *= 2) < 1) {\r\n                return -0.5 * (a * Math.pow(2, 10 * (k -= 1))\r\n                    * Math.sin((k - s) * (2 * Math.PI) / p));\r\n            }\r\n            return a * Math.pow(2, -10 * (k -= 1))\r\n                * Math.sin((k - s) * (2 * Math.PI) / p) * 0.5 + 1;\r\n        },\r\n        backIn: function (k) {\r\n            var s = 1.70158;\r\n            return k * k * ((s + 1) * k - s);\r\n        },\r\n        backOut: function (k) {\r\n            var s = 1.70158;\r\n            return --k * k * ((s + 1) * k + s) + 1;\r\n        },\r\n        backInOut: function (k) {\r\n            var s = 1.70158 * 1.525;\r\n            if ((k *= 2) < 1) {\r\n                return 0.5 * (k * k * ((s + 1) * k - s));\r\n            }\r\n            return 0.5 * ((k -= 2) * k * ((s + 1) * k + s) + 2);\r\n        },\r\n        bounceIn: function (k) {\r\n            return 1 - easing.bounceOut(1 - k);\r\n        },\r\n        bounceOut: function (k) {\r\n            if (k < (1 / 2.75)) {\r\n                return 7.5625 * k * k;\r\n            }\r\n            else if (k < (2 / 2.75)) {\r\n                return 7.5625 * (k -= (1.5 / 2.75)) * k + 0.75;\r\n            }\r\n            else if (k < (2.5 / 2.75)) {\r\n                return 7.5625 * (k -= (2.25 / 2.75)) * k + 0.9375;\r\n            }\r\n            else {\r\n                return 7.5625 * (k -= (2.625 / 2.75)) * k + 0.984375;\r\n            }\r\n        },\r\n        bounceInOut: function (k) {\r\n            if (k < 0.5) {\r\n                return easing.bounceIn(k * 2) * 0.5;\r\n            }\r\n            return easing.bounceOut(k * 2 - 1) * 0.5 + 0.5;\r\n        }\r\n    };\n\n    var Clip = (function () {\r\n        function Clip(opts) {\r\n            this._initialized = false;\r\n            this._startTime = 0;\r\n            this._pausedTime = 0;\r\n            this._paused = false;\r\n            this._life = opts.life || 1000;\r\n            this._delay = opts.delay || 0;\r\n            this.loop = opts.loop == null ? false : opts.loop;\r\n            this.gap = opts.gap || 0;\r\n            this.easing = opts.easing || 'linear';\r\n            this.onframe = opts.onframe;\r\n            this.ondestroy = opts.ondestroy;\r\n            this.onrestart = opts.onrestart;\r\n        }\r\n        Clip.prototype.step = function (globalTime, deltaTime) {\r\n            if (!this._initialized) {\r\n                this._startTime = globalTime + this._delay;\r\n                this._initialized = true;\r\n            }\r\n            if (this._paused) {\r\n                this._pausedTime += deltaTime;\r\n                return;\r\n            }\r\n            var percent = (globalTime - this._startTime - this._pausedTime) / this._life;\r\n            if (percent < 0) {\r\n                percent = 0;\r\n            }\r\n            percent = Math.min(percent, 1);\r\n            var easing$1 = this.easing;\r\n            var easingFunc = typeof easing$1 === 'string'\r\n                ? easing[easing$1] : easing$1;\r\n            var schedule = typeof easingFunc === 'function'\r\n                ? easingFunc(percent)\r\n                : percent;\r\n            this.onframe && this.onframe(schedule);\r\n            if (percent === 1) {\r\n                if (this.loop) {\r\n                    this._restart(globalTime);\r\n                    this.onrestart && this.onrestart();\r\n                }\r\n                else {\r\n                    return true;\r\n                }\r\n            }\r\n            return false;\r\n        };\r\n        Clip.prototype._restart = function (globalTime) {\r\n            var remainder = (globalTime - this._startTime - this._pausedTime) % this._life;\r\n            this._startTime = globalTime - remainder + this.gap;\r\n            this._pausedTime = 0;\r\n        };\r\n        Clip.prototype.pause = function () {\r\n            this._paused = true;\r\n        };\r\n        Clip.prototype.resume = function () {\r\n            this._paused = false;\r\n        };\r\n        return Clip;\r\n    }());\n\n    var Entry = (function () {\r\n        function Entry(val) {\r\n            this.value = val;\r\n        }\r\n        return Entry;\r\n    }());\r\n    var LinkedList = (function () {\r\n        function LinkedList() {\r\n            this._len = 0;\r\n        }\r\n        LinkedList.prototype.insert = function (val) {\r\n            var entry = new Entry(val);\r\n            this.insertEntry(entry);\r\n            return entry;\r\n        };\r\n        LinkedList.prototype.insertEntry = function (entry) {\r\n            if (!this.head) {\r\n                this.head = this.tail = entry;\r\n            }\r\n            else {\r\n                this.tail.next = entry;\r\n                entry.prev = this.tail;\r\n                entry.next = null;\r\n                this.tail = entry;\r\n            }\r\n            this._len++;\r\n        };\r\n        LinkedList.prototype.remove = function (entry) {\r\n            var prev = entry.prev;\r\n            var next = entry.next;\r\n            if (prev) {\r\n                prev.next = next;\r\n            }\r\n            else {\r\n                this.head = next;\r\n            }\r\n            if (next) {\r\n                next.prev = prev;\r\n            }\r\n            else {\r\n                this.tail = prev;\r\n            }\r\n            entry.next = entry.prev = null;\r\n            this._len--;\r\n        };\r\n        LinkedList.prototype.len = function () {\r\n            return this._len;\r\n        };\r\n        LinkedList.prototype.clear = function () {\r\n            this.head = this.tail = null;\r\n            this._len = 0;\r\n        };\r\n        return LinkedList;\r\n    }());\r\n    var LRU = (function () {\r\n        function LRU(maxSize) {\r\n            this._list = new LinkedList();\r\n            this._maxSize = 10;\r\n            this._map = {};\r\n            this._maxSize = maxSize;\r\n        }\r\n        LRU.prototype.put = function (key, value) {\r\n            var list = this._list;\r\n            var map = this._map;\r\n            var removed = null;\r\n            if (map[key] == null) {\r\n                var len = list.len();\r\n                var entry = this._lastRemovedEntry;\r\n                if (len >= this._maxSize && len > 0) {\r\n                    var leastUsedEntry = list.head;\r\n                    list.remove(leastUsedEntry);\r\n                    delete map[leastUsedEntry.key];\r\n                    removed = leastUsedEntry.value;\r\n                    this._lastRemovedEntry = leastUsedEntry;\r\n                }\r\n                if (entry) {\r\n                    entry.value = value;\r\n                }\r\n                else {\r\n                    entry = new Entry(value);\r\n                }\r\n                entry.key = key;\r\n                list.insertEntry(entry);\r\n                map[key] = entry;\r\n            }\r\n            return removed;\r\n        };\r\n        LRU.prototype.get = function (key) {\r\n            var entry = this._map[key];\r\n            var list = this._list;\r\n            if (entry != null) {\r\n                if (entry !== list.tail) {\r\n                    list.remove(entry);\r\n                    list.insertEntry(entry);\r\n                }\r\n                return entry.value;\r\n            }\r\n        };\r\n        LRU.prototype.clear = function () {\r\n            this._list.clear();\r\n            this._map = {};\r\n        };\r\n        LRU.prototype.len = function () {\r\n            return this._list.len();\r\n        };\r\n        return LRU;\r\n    }());\n\n    var kCSSColorTable = {\r\n        'transparent': [0, 0, 0, 0], 'aliceblue': [240, 248, 255, 1],\r\n        'antiquewhite': [250, 235, 215, 1], 'aqua': [0, 255, 255, 1],\r\n        'aquamarine': [127, 255, 212, 1], 'azure': [240, 255, 255, 1],\r\n        'beige': [245, 245, 220, 1], 'bisque': [255, 228, 196, 1],\r\n        'black': [0, 0, 0, 1], 'blanchedalmond': [255, 235, 205, 1],\r\n        'blue': [0, 0, 255, 1], 'blueviolet': [138, 43, 226, 1],\r\n        'brown': [165, 42, 42, 1], 'burlywood': [222, 184, 135, 1],\r\n        'cadetblue': [95, 158, 160, 1], 'chartreuse': [127, 255, 0, 1],\r\n        'chocolate': [210, 105, 30, 1], 'coral': [255, 127, 80, 1],\r\n        'cornflowerblue': [100, 149, 237, 1], 'cornsilk': [255, 248, 220, 1],\r\n        'crimson': [220, 20, 60, 1], 'cyan': [0, 255, 255, 1],\r\n        'darkblue': [0, 0, 139, 1], 'darkcyan': [0, 139, 139, 1],\r\n        'darkgoldenrod': [184, 134, 11, 1], 'darkgray': [169, 169, 169, 1],\r\n        'darkgreen': [0, 100, 0, 1], 'darkgrey': [169, 169, 169, 1],\r\n        'darkkhaki': [189, 183, 107, 1], 'darkmagenta': [139, 0, 139, 1],\r\n        'darkolivegreen': [85, 107, 47, 1], 'darkorange': [255, 140, 0, 1],\r\n        'darkorchid': [153, 50, 204, 1], 'darkred': [139, 0, 0, 1],\r\n        'darksalmon': [233, 150, 122, 1], 'darkseagreen': [143, 188, 143, 1],\r\n        'darkslateblue': [72, 61, 139, 1], 'darkslategray': [47, 79, 79, 1],\r\n        'darkslategrey': [47, 79, 79, 1], 'darkturquoise': [0, 206, 209, 1],\r\n        'darkviolet': [148, 0, 211, 1], 'deeppink': [255, 20, 147, 1],\r\n        'deepskyblue': [0, 191, 255, 1], 'dimgray': [105, 105, 105, 1],\r\n        'dimgrey': [105, 105, 105, 1], 'dodgerblue': [30, 144, 255, 1],\r\n        'firebrick': [178, 34, 34, 1], 'floralwhite': [255, 250, 240, 1],\r\n        'forestgreen': [34, 139, 34, 1], 'fuchsia': [255, 0, 255, 1],\r\n        'gainsboro': [220, 220, 220, 1], 'ghostwhite': [248, 248, 255, 1],\r\n        'gold': [255, 215, 0, 1], 'goldenrod': [218, 165, 32, 1],\r\n        'gray': [128, 128, 128, 1], 'green': [0, 128, 0, 1],\r\n        'greenyellow': [173, 255, 47, 1], 'grey': [128, 128, 128, 1],\r\n        'honeydew': [240, 255, 240, 1], 'hotpink': [255, 105, 180, 1],\r\n        'indianred': [205, 92, 92, 1], 'indigo': [75, 0, 130, 1],\r\n        'ivory': [255, 255, 240, 1], 'khaki': [240, 230, 140, 1],\r\n        'lavender': [230, 230, 250, 1], 'lavenderblush': [255, 240, 245, 1],\r\n        'lawngreen': [124, 252, 0, 1], 'lemonchiffon': [255, 250, 205, 1],\r\n        'lightblue': [173, 216, 230, 1], 'lightcoral': [240, 128, 128, 1],\r\n        'lightcyan': [224, 255, 255, 1], 'lightgoldenrodyellow': [250, 250, 210, 1],\r\n        'lightgray': [211, 211, 211, 1], 'lightgreen': [144, 238, 144, 1],\r\n        'lightgrey': [211, 211, 211, 1], 'lightpink': [255, 182, 193, 1],\r\n        'lightsalmon': [255, 160, 122, 1], 'lightseagreen': [32, 178, 170, 1],\r\n        'lightskyblue': [135, 206, 250, 1], 'lightslategray': [119, 136, 153, 1],\r\n        'lightslategrey': [119, 136, 153, 1], 'lightsteelblue': [176, 196, 222, 1],\r\n        'lightyellow': [255, 255, 224, 1], 'lime': [0, 255, 0, 1],\r\n        'limegreen': [50, 205, 50, 1], 'linen': [250, 240, 230, 1],\r\n        'magenta': [255, 0, 255, 1], 'maroon': [128, 0, 0, 1],\r\n        'mediumaquamarine': [102, 205, 170, 1], 'mediumblue': [0, 0, 205, 1],\r\n        'mediumorchid': [186, 85, 211, 1], 'mediumpurple': [147, 112, 219, 1],\r\n        'mediumseagreen': [60, 179, 113, 1], 'mediumslateblue': [123, 104, 238, 1],\r\n        'mediumspringgreen': [0, 250, 154, 1], 'mediumturquoise': [72, 209, 204, 1],\r\n        'mediumvioletred': [199, 21, 133, 1], 'midnightblue': [25, 25, 112, 1],\r\n        'mintcream': [245, 255, 250, 1], 'mistyrose': [255, 228, 225, 1],\r\n        'moccasin': [255, 228, 181, 1], 'navajowhite': [255, 222, 173, 1],\r\n        'navy': [0, 0, 128, 1], 'oldlace': [253, 245, 230, 1],\r\n        'olive': [128, 128, 0, 1], 'olivedrab': [107, 142, 35, 1],\r\n        'orange': [255, 165, 0, 1], 'orangered': [255, 69, 0, 1],\r\n        'orchid': [218, 112, 214, 1], 'palegoldenrod': [238, 232, 170, 1],\r\n        'palegreen': [152, 251, 152, 1], 'paleturquoise': [175, 238, 238, 1],\r\n        'palevioletred': [219, 112, 147, 1], 'papayawhip': [255, 239, 213, 1],\r\n        'peachpuff': [255, 218, 185, 1], 'peru': [205, 133, 63, 1],\r\n        'pink': [255, 192, 203, 1], 'plum': [221, 160, 221, 1],\r\n        'powderblue': [176, 224, 230, 1], 'purple': [128, 0, 128, 1],\r\n        'red': [255, 0, 0, 1], 'rosybrown': [188, 143, 143, 1],\r\n        'royalblue': [65, 105, 225, 1], 'saddlebrown': [139, 69, 19, 1],\r\n        'salmon': [250, 128, 114, 1], 'sandybrown': [244, 164, 96, 1],\r\n        'seagreen': [46, 139, 87, 1], 'seashell': [255, 245, 238, 1],\r\n        'sienna': [160, 82, 45, 1], 'silver': [192, 192, 192, 1],\r\n        'skyblue': [135, 206, 235, 1], 'slateblue': [106, 90, 205, 1],\r\n        'slategray': [112, 128, 144, 1], 'slategrey': [112, 128, 144, 1],\r\n        'snow': [255, 250, 250, 1], 'springgreen': [0, 255, 127, 1],\r\n        'steelblue': [70, 130, 180, 1], 'tan': [210, 180, 140, 1],\r\n        'teal': [0, 128, 128, 1], 'thistle': [216, 191, 216, 1],\r\n        'tomato': [255, 99, 71, 1], 'turquoise': [64, 224, 208, 1],\r\n        'violet': [238, 130, 238, 1], 'wheat': [245, 222, 179, 1],\r\n        'white': [255, 255, 255, 1], 'whitesmoke': [245, 245, 245, 1],\r\n        'yellow': [255, 255, 0, 1], 'yellowgreen': [154, 205, 50, 1]\r\n    };\r\n    function clampCssByte(i) {\r\n        i = Math.round(i);\r\n        return i < 0 ? 0 : i > 255 ? 255 : i;\r\n    }\r\n    function clampCssFloat(f) {\r\n        return f < 0 ? 0 : f > 1 ? 1 : f;\r\n    }\r\n    function parseCssInt(val) {\r\n        var str = val;\r\n        if (str.length && str.charAt(str.length - 1) === '%') {\r\n            return clampCssByte(parseFloat(str) / 100 * 255);\r\n        }\r\n        return clampCssByte(parseInt(str, 10));\r\n    }\r\n    function parseCssFloat(val) {\r\n        var str = val;\r\n        if (str.length && str.charAt(str.length - 1) === '%') {\r\n            return clampCssFloat(parseFloat(str) / 100);\r\n        }\r\n        return clampCssFloat(parseFloat(str));\r\n    }\r\n    function cssHueToRgb(m1, m2, h) {\r\n        if (h < 0) {\r\n            h += 1;\r\n        }\r\n        else if (h > 1) {\r\n            h -= 1;\r\n        }\r\n        if (h * 6 < 1) {\r\n            return m1 + (m2 - m1) * h * 6;\r\n        }\r\n        if (h * 2 < 1) {\r\n            return m2;\r\n        }\r\n        if (h * 3 < 2) {\r\n            return m1 + (m2 - m1) * (2 / 3 - h) * 6;\r\n        }\r\n        return m1;\r\n    }\r\n    function setRgba(out, r, g, b, a) {\r\n        out[0] = r;\r\n        out[1] = g;\r\n        out[2] = b;\r\n        out[3] = a;\r\n        return out;\r\n    }\r\n    function copyRgba(out, a) {\r\n        out[0] = a[0];\r\n        out[1] = a[1];\r\n        out[2] = a[2];\r\n        out[3] = a[3];\r\n        return out;\r\n    }\r\n    var colorCache = new LRU(20);\r\n    var lastRemovedArr = null;\r\n    function putToCache(colorStr, rgbaArr) {\r\n        if (lastRemovedArr) {\r\n            copyRgba(lastRemovedArr, rgbaArr);\r\n        }\r\n        lastRemovedArr = colorCache.put(colorStr, lastRemovedArr || (rgbaArr.slice()));\r\n    }\r\n    function parse(colorStr, rgbaArr) {\r\n        if (!colorStr) {\r\n            return;\r\n        }\r\n        rgbaArr = rgbaArr || [];\r\n        var cached = colorCache.get(colorStr);\r\n        if (cached) {\r\n            return copyRgba(rgbaArr, cached);\r\n        }\r\n        colorStr = colorStr + '';\r\n        var str = colorStr.replace(/ /g, '').toLowerCase();\r\n        if (str in kCSSColorTable) {\r\n            copyRgba(rgbaArr, kCSSColorTable[str]);\r\n            putToCache(colorStr, rgbaArr);\r\n            return rgbaArr;\r\n        }\r\n        var strLen = str.length;\r\n        if (str.charAt(0) === '#') {\r\n            if (strLen === 4 || strLen === 5) {\r\n                var iv = parseInt(str.slice(1, 4), 16);\r\n                if (!(iv >= 0 && iv <= 0xfff)) {\r\n                    setRgba(rgbaArr, 0, 0, 0, 1);\r\n                    return;\r\n                }\r\n                setRgba(rgbaArr, ((iv & 0xf00) >> 4) | ((iv & 0xf00) >> 8), (iv & 0xf0) | ((iv & 0xf0) >> 4), (iv & 0xf) | ((iv & 0xf) << 4), strLen === 5 ? parseInt(str.slice(4), 16) / 0xf : 1);\r\n                putToCache(colorStr, rgbaArr);\r\n                return rgbaArr;\r\n            }\r\n            else if (strLen === 7 || strLen === 9) {\r\n                var iv = parseInt(str.slice(1, 7), 16);\r\n                if (!(iv >= 0 && iv <= 0xffffff)) {\r\n                    setRgba(rgbaArr, 0, 0, 0, 1);\r\n                    return;\r\n                }\r\n                setRgba(rgbaArr, (iv & 0xff0000) >> 16, (iv & 0xff00) >> 8, iv & 0xff, strLen === 9 ? parseInt(str.slice(7), 16) / 0xff : 1);\r\n                putToCache(colorStr, rgbaArr);\r\n                return rgbaArr;\r\n            }\r\n            return;\r\n        }\r\n        var op = str.indexOf('(');\r\n        var ep = str.indexOf(')');\r\n        if (op !== -1 && ep + 1 === strLen) {\r\n            var fname = str.substr(0, op);\r\n            var params = str.substr(op + 1, ep - (op + 1)).split(',');\r\n            var alpha = 1;\r\n            switch (fname) {\r\n                case 'rgba':\r\n                    if (params.length !== 4) {\r\n                        return params.length === 3\r\n                            ? setRgba(rgbaArr, +params[0], +params[1], +params[2], 1)\r\n                            : setRgba(rgbaArr, 0, 0, 0, 1);\r\n                    }\r\n                    alpha = parseCssFloat(params.pop());\r\n                case 'rgb':\r\n                    if (params.length !== 3) {\r\n                        setRgba(rgbaArr, 0, 0, 0, 1);\r\n                        return;\r\n                    }\r\n                    setRgba(rgbaArr, parseCssInt(params[0]), parseCssInt(params[1]), parseCssInt(params[2]), alpha);\r\n                    putToCache(colorStr, rgbaArr);\r\n                    return rgbaArr;\r\n                case 'hsla':\r\n                    if (params.length !== 4) {\r\n                        setRgba(rgbaArr, 0, 0, 0, 1);\r\n                        return;\r\n                    }\r\n                    params[3] = parseCssFloat(params[3]);\r\n                    hsla2rgba(params, rgbaArr);\r\n                    putToCache(colorStr, rgbaArr);\r\n                    return rgbaArr;\r\n                case 'hsl':\r\n                    if (params.length !== 3) {\r\n                        setRgba(rgbaArr, 0, 0, 0, 1);\r\n                        return;\r\n                    }\r\n                    hsla2rgba(params, rgbaArr);\r\n                    putToCache(colorStr, rgbaArr);\r\n                    return rgbaArr;\r\n                default:\r\n                    return;\r\n            }\r\n        }\r\n        setRgba(rgbaArr, 0, 0, 0, 1);\r\n        return;\r\n    }\r\n    function hsla2rgba(hsla, rgba) {\r\n        var h = (((parseFloat(hsla[0]) % 360) + 360) % 360) / 360;\r\n        var s = parseCssFloat(hsla[1]);\r\n        var l = parseCssFloat(hsla[2]);\r\n        var m2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;\r\n        var m1 = l * 2 - m2;\r\n        rgba = rgba || [];\r\n        setRgba(rgba, clampCssByte(cssHueToRgb(m1, m2, h + 1 / 3) * 255), clampCssByte(cssHueToRgb(m1, m2, h) * 255), clampCssByte(cssHueToRgb(m1, m2, h - 1 / 3) * 255), 1);\r\n        if (hsla.length === 4) {\r\n            rgba[3] = hsla[3];\r\n        }\r\n        return rgba;\r\n    }\r\n    function lift(color, level) {\r\n        var colorArr = parse(color);\r\n        if (colorArr) {\r\n            for (var i = 0; i < 3; i++) {\r\n                if (level < 0) {\r\n                    colorArr[i] = colorArr[i] * (1 - level) | 0;\r\n                }\r\n                else {\r\n                    colorArr[i] = ((255 - colorArr[i]) * level + colorArr[i]) | 0;\r\n                }\r\n                if (colorArr[i] > 255) {\r\n                    colorArr[i] = 255;\r\n                }\r\n                else if (colorArr[i] < 0) {\r\n                    colorArr[i] = 0;\r\n                }\r\n            }\r\n            return stringify(colorArr, colorArr.length === 4 ? 'rgba' : 'rgb');\r\n        }\r\n    }\r\n    function stringify(arrColor, type) {\r\n        if (!arrColor || !arrColor.length) {\r\n            return;\r\n        }\r\n        var colorStr = arrColor[0] + ',' + arrColor[1] + ',' + arrColor[2];\r\n        if (type === 'rgba' || type === 'hsva' || type === 'hsla') {\r\n            colorStr += ',' + arrColor[3];\r\n        }\r\n        return type + '(' + colorStr + ')';\r\n    }\r\n    function lum(color, backgroundLum) {\r\n        var arr = parse(color);\r\n        return arr\r\n            ? (0.299 * arr[0] + 0.587 * arr[1] + 0.114 * arr[2]) * arr[3] / 255\r\n                + (1 - arr[3]) * backgroundLum\r\n            : 0;\r\n    }\n\n    var arraySlice = Array.prototype.slice;\r\n    function interpolateNumber(p0, p1, percent) {\r\n        return (p1 - p0) * percent + p0;\r\n    }\r\n    function step(p0, p1, percent) {\r\n        return percent > 0.5 ? p1 : p0;\r\n    }\r\n    function interpolate1DArray(out, p0, p1, percent) {\r\n        var len = p0.length;\r\n        for (var i = 0; i < len; i++) {\r\n            out[i] = interpolateNumber(p0[i], p1[i], percent);\r\n        }\r\n    }\r\n    function interpolate2DArray(out, p0, p1, percent) {\r\n        var len = p0.length;\r\n        var len2 = len && p0[0].length;\r\n        for (var i = 0; i < len; i++) {\r\n            if (!out[i]) {\r\n                out[i] = [];\r\n            }\r\n            for (var j = 0; j < len2; j++) {\r\n                out[i][j] = interpolateNumber(p0[i][j], p1[i][j], percent);\r\n            }\r\n        }\r\n    }\r\n    function add1DArray(out, p0, p1, sign) {\r\n        var len = p0.length;\r\n        for (var i = 0; i < len; i++) {\r\n            out[i] = p0[i] + p1[i] * sign;\r\n        }\r\n        return out;\r\n    }\r\n    function add2DArray(out, p0, p1, sign) {\r\n        var len = p0.length;\r\n        var len2 = len && p0[0].length;\r\n        for (var i = 0; i < len; i++) {\r\n            if (!out[i]) {\r\n                out[i] = [];\r\n            }\r\n            for (var j = 0; j < len2; j++) {\r\n                out[i][j] = p0[i][j] + p1[i][j] * sign;\r\n            }\r\n        }\r\n        return out;\r\n    }\r\n    function fillArray(val0, val1, arrDim) {\r\n        var arr0 = val0;\r\n        var arr1 = val1;\r\n        if (!arr0.push || !arr1.push) {\r\n            return;\r\n        }\r\n        var arr0Len = arr0.length;\r\n        var arr1Len = arr1.length;\r\n        if (arr0Len !== arr1Len) {\r\n            var isPreviousLarger = arr0Len > arr1Len;\r\n            if (isPreviousLarger) {\r\n                arr0.length = arr1Len;\r\n            }\r\n            else {\r\n                for (var i = arr0Len; i < arr1Len; i++) {\r\n                    arr0.push(arrDim === 1 ? arr1[i] : arraySlice.call(arr1[i]));\r\n                }\r\n            }\r\n        }\r\n        var len2 = arr0[0] && arr0[0].length;\r\n        for (var i = 0; i < arr0.length; i++) {\r\n            if (arrDim === 1) {\r\n                if (isNaN(arr0[i])) {\r\n                    arr0[i] = arr1[i];\r\n                }\r\n            }\r\n            else {\r\n                for (var j = 0; j < len2; j++) {\r\n                    if (isNaN(arr0[i][j])) {\r\n                        arr0[i][j] = arr1[i][j];\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    }\r\n    function is1DArraySame(arr0, arr1) {\r\n        var len = arr0.length;\r\n        if (len !== arr1.length) {\r\n            return false;\r\n        }\r\n        for (var i = 0; i < len; i++) {\r\n            if (arr0[i] !== arr1[i]) {\r\n                return false;\r\n            }\r\n        }\r\n        return true;\r\n    }\r\n    function catmullRomInterpolate(p0, p1, p2, p3, t, t2, t3) {\r\n        var v0 = (p2 - p0) * 0.5;\r\n        var v1 = (p3 - p1) * 0.5;\r\n        return (2 * (p1 - p2) + v0 + v1) * t3\r\n            + (-3 * (p1 - p2) - 2 * v0 - v1) * t2\r\n            + v0 * t + p1;\r\n    }\r\n    function catmullRomInterpolate1DArray(out, p0, p1, p2, p3, t, t2, t3) {\r\n        var len = p0.length;\r\n        for (var i = 0; i < len; i++) {\r\n            out[i] = catmullRomInterpolate(p0[i], p1[i], p2[i], p3[i], t, t2, t3);\r\n        }\r\n    }\r\n    function catmullRomInterpolate2DArray(out, p0, p1, p2, p3, t, t2, t3) {\r\n        var len = p0.length;\r\n        var len2 = p0[0].length;\r\n        for (var i = 0; i < len; i++) {\r\n            if (!out[i]) {\r\n                out[1] = [];\r\n            }\r\n            for (var j = 0; j < len2; j++) {\r\n                out[i][j] = catmullRomInterpolate(p0[i][j], p1[i][j], p2[i][j], p3[i][j], t, t2, t3);\r\n            }\r\n        }\r\n    }\r\n    function cloneValue(value) {\r\n        if (isArrayLike(value)) {\r\n            var len = value.length;\r\n            if (isArrayLike(value[0])) {\r\n                var ret = [];\r\n                for (var i = 0; i < len; i++) {\r\n                    ret.push(arraySlice.call(value[i]));\r\n                }\r\n                return ret;\r\n            }\r\n            return arraySlice.call(value);\r\n        }\r\n        return value;\r\n    }\r\n    function rgba2String(rgba) {\r\n        rgba[0] = Math.floor(rgba[0]);\r\n        rgba[1] = Math.floor(rgba[1]);\r\n        rgba[2] = Math.floor(rgba[2]);\r\n        return 'rgba(' + rgba.join(',') + ')';\r\n    }\r\n    function guessArrayDim(value) {\r\n        return isArrayLike(value && value[0]) ? 2 : 1;\r\n    }\r\n    var tmpRgba = [0, 0, 0, 0];\r\n    var Track = (function () {\r\n        function Track(propName) {\r\n            this.keyframes = [];\r\n            this.maxTime = 0;\r\n            this.arrDim = 0;\r\n            this.interpolable = true;\r\n            this._needsSort = false;\r\n            this._isAllValueEqual = true;\r\n            this._lastFrame = 0;\r\n            this._lastFramePercent = 0;\r\n            this.propName = propName;\r\n        }\r\n        Track.prototype.isFinished = function () {\r\n            return this._finished;\r\n        };\r\n        Track.prototype.setFinished = function () {\r\n            this._finished = true;\r\n            if (this._additiveTrack) {\r\n                this._additiveTrack.setFinished();\r\n            }\r\n        };\r\n        Track.prototype.needsAnimate = function () {\r\n            return !this._isAllValueEqual && this.keyframes.length >= 2 && this.interpolable;\r\n        };\r\n        Track.prototype.getAdditiveTrack = function () {\r\n            return this._additiveTrack;\r\n        };\r\n        Track.prototype.addKeyframe = function (time, value) {\r\n            if (time >= this.maxTime) {\r\n                this.maxTime = time;\r\n            }\r\n            else {\r\n                this._needsSort = true;\r\n            }\r\n            var keyframes = this.keyframes;\r\n            var len = keyframes.length;\r\n            if (this.interpolable) {\r\n                if (isArrayLike(value)) {\r\n                    var arrayDim = guessArrayDim(value);\r\n                    if (len > 0 && this.arrDim !== arrayDim) {\r\n                        this.interpolable = false;\r\n                        return;\r\n                    }\r\n                    if (arrayDim === 1 && typeof value[0] !== 'number'\r\n                        || arrayDim === 2 && typeof value[0][0] !== 'number') {\r\n                        this.interpolable = false;\r\n                        return;\r\n                    }\r\n                    if (len > 0) {\r\n                        var lastFrame = keyframes[len - 1];\r\n                        if (this._isAllValueEqual) {\r\n                            if (arrayDim === 1) {\r\n                                if (!is1DArraySame(value, lastFrame.value)) {\r\n                                    this._isAllValueEqual = false;\r\n                                }\r\n                            }\r\n                            else {\r\n                                this._isAllValueEqual = false;\r\n                            }\r\n                        }\r\n                    }\r\n                    this.arrDim = arrayDim;\r\n                }\r\n                else {\r\n                    if (this.arrDim > 0) {\r\n                        this.interpolable = false;\r\n                        return;\r\n                    }\r\n                    if (typeof value === 'string') {\r\n                        var colorArray = parse(value);\r\n                        if (colorArray) {\r\n                            value = colorArray;\r\n                            this.isValueColor = true;\r\n                        }\r\n                        else {\r\n                            this.interpolable = false;\r\n                        }\r\n                    }\r\n                    else if (typeof value !== 'number') {\r\n                        this.interpolable = false;\r\n                        return;\r\n                    }\r\n                    if (this._isAllValueEqual && len > 0) {\r\n                        var lastFrame = keyframes[len - 1];\r\n                        if (this.isValueColor && !is1DArraySame(lastFrame.value, value)) {\r\n                            this._isAllValueEqual = false;\r\n                        }\r\n                        else if (lastFrame.value !== value) {\r\n                            this._isAllValueEqual = false;\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n            var kf = {\r\n                time: time,\r\n                value: value,\r\n                percent: 0\r\n            };\r\n            this.keyframes.push(kf);\r\n            return kf;\r\n        };\r\n        Track.prototype.prepare = function (additiveTrack) {\r\n            var kfs = this.keyframes;\r\n            if (this._needsSort) {\r\n                kfs.sort(function (a, b) {\r\n                    return a.time - b.time;\r\n                });\r\n            }\r\n            var arrDim = this.arrDim;\r\n            var kfsLen = kfs.length;\r\n            var lastKf = kfs[kfsLen - 1];\r\n            for (var i = 0; i < kfsLen; i++) {\r\n                kfs[i].percent = kfs[i].time / this.maxTime;\r\n                if (arrDim > 0 && i !== kfsLen - 1) {\r\n                    fillArray(kfs[i].value, lastKf.value, arrDim);\r\n                }\r\n            }\r\n            if (additiveTrack\r\n                && this.needsAnimate()\r\n                && additiveTrack.needsAnimate()\r\n                && arrDim === additiveTrack.arrDim\r\n                && this.isValueColor === additiveTrack.isValueColor\r\n                && !additiveTrack._finished) {\r\n                this._additiveTrack = additiveTrack;\r\n                var startValue = kfs[0].value;\r\n                for (var i = 0; i < kfsLen; i++) {\r\n                    if (arrDim === 0) {\r\n                        if (this.isValueColor) {\r\n                            kfs[i].additiveValue\r\n                                = add1DArray([], kfs[i].value, startValue, -1);\r\n                        }\r\n                        else {\r\n                            kfs[i].additiveValue = kfs[i].value - startValue;\r\n                        }\r\n                    }\r\n                    else if (arrDim === 1) {\r\n                        kfs[i].additiveValue = add1DArray([], kfs[i].value, startValue, -1);\r\n                    }\r\n                    else if (arrDim === 2) {\r\n                        kfs[i].additiveValue = add2DArray([], kfs[i].value, startValue, -1);\r\n                    }\r\n                }\r\n            }\r\n        };\r\n        Track.prototype.step = function (target, percent) {\r\n            if (this._finished) {\r\n                return;\r\n            }\r\n            if (this._additiveTrack && this._additiveTrack._finished) {\r\n                this._additiveTrack = null;\r\n            }\r\n            var isAdditive = this._additiveTrack != null;\r\n            var valueKey = isAdditive ? 'additiveValue' : 'value';\r\n            var keyframes = this.keyframes;\r\n            var kfsNum = this.keyframes.length;\r\n            var propName = this.propName;\r\n            var arrDim = this.arrDim;\r\n            var isValueColor = this.isValueColor;\r\n            var frameIdx;\r\n            if (percent < 0) {\r\n                frameIdx = 0;\r\n            }\r\n            else if (percent < this._lastFramePercent) {\r\n                var start = Math.min(this._lastFrame + 1, kfsNum - 1);\r\n                for (frameIdx = start; frameIdx >= 0; frameIdx--) {\r\n                    if (keyframes[frameIdx].percent <= percent) {\r\n                        break;\r\n                    }\r\n                }\r\n                frameIdx = Math.min(frameIdx, kfsNum - 2);\r\n            }\r\n            else {\r\n                for (frameIdx = this._lastFrame; frameIdx < kfsNum; frameIdx++) {\r\n                    if (keyframes[frameIdx].percent > percent) {\r\n                        break;\r\n                    }\r\n                }\r\n                frameIdx = Math.min(frameIdx - 1, kfsNum - 2);\r\n            }\r\n            var nextFrame = keyframes[frameIdx + 1];\r\n            var frame = keyframes[frameIdx];\r\n            if (!(frame && nextFrame)) {\r\n                return;\r\n            }\r\n            this._lastFrame = frameIdx;\r\n            this._lastFramePercent = percent;\r\n            var range = (nextFrame.percent - frame.percent);\r\n            if (range === 0) {\r\n                return;\r\n            }\r\n            var w = (percent - frame.percent) / range;\r\n            var targetArr = isAdditive ? this._additiveValue\r\n                : (isValueColor ? tmpRgba : target[propName]);\r\n            if ((arrDim > 0 || isValueColor) && !targetArr) {\r\n                targetArr = this._additiveValue = [];\r\n            }\r\n            if (this.useSpline) {\r\n                var p1 = keyframes[frameIdx][valueKey];\r\n                var p0 = keyframes[frameIdx === 0 ? frameIdx : frameIdx - 1][valueKey];\r\n                var p2 = keyframes[frameIdx > kfsNum - 2 ? kfsNum - 1 : frameIdx + 1][valueKey];\r\n                var p3 = keyframes[frameIdx > kfsNum - 3 ? kfsNum - 1 : frameIdx + 2][valueKey];\r\n                if (arrDim > 0) {\r\n                    arrDim === 1\r\n                        ? catmullRomInterpolate1DArray(targetArr, p0, p1, p2, p3, w, w * w, w * w * w)\r\n                        : catmullRomInterpolate2DArray(targetArr, p0, p1, p2, p3, w, w * w, w * w * w);\r\n                }\r\n                else if (isValueColor) {\r\n                    catmullRomInterpolate1DArray(targetArr, p0, p1, p2, p3, w, w * w, w * w * w);\r\n                    if (!isAdditive) {\r\n                        target[propName] = rgba2String(targetArr);\r\n                    }\r\n                }\r\n                else {\r\n                    var value = void 0;\r\n                    if (!this.interpolable) {\r\n                        value = p2;\r\n                    }\r\n                    else {\r\n                        value = catmullRomInterpolate(p0, p1, p2, p3, w, w * w, w * w * w);\r\n                    }\r\n                    if (isAdditive) {\r\n                        this._additiveValue = value;\r\n                    }\r\n                    else {\r\n                        target[propName] = value;\r\n                    }\r\n                }\r\n            }\r\n            else {\r\n                if (arrDim > 0) {\r\n                    arrDim === 1\r\n                        ? interpolate1DArray(targetArr, frame[valueKey], nextFrame[valueKey], w)\r\n                        : interpolate2DArray(targetArr, frame[valueKey], nextFrame[valueKey], w);\r\n                }\r\n                else if (isValueColor) {\r\n                    interpolate1DArray(targetArr, frame[valueKey], nextFrame[valueKey], w);\r\n                    if (!isAdditive) {\r\n                        target[propName] = rgba2String(targetArr);\r\n                    }\r\n                }\r\n                else {\r\n                    var value = void 0;\r\n                    if (!this.interpolable) {\r\n                        value = step(frame[valueKey], nextFrame[valueKey], w);\r\n                    }\r\n                    else {\r\n                        value = interpolateNumber(frame[valueKey], nextFrame[valueKey], w);\r\n                    }\r\n                    if (isAdditive) {\r\n                        this._additiveValue = value;\r\n                    }\r\n                    else {\r\n                        target[propName] = value;\r\n                    }\r\n                }\r\n            }\r\n            if (isAdditive) {\r\n                this._addToTarget(target);\r\n            }\r\n        };\r\n        Track.prototype._addToTarget = function (target) {\r\n            var arrDim = this.arrDim;\r\n            var propName = this.propName;\r\n            var additiveValue = this._additiveValue;\r\n            if (arrDim === 0) {\r\n                if (this.isValueColor) {\r\n                    parse(target[propName], tmpRgba);\r\n                    add1DArray(tmpRgba, tmpRgba, additiveValue, 1);\r\n                    target[propName] = rgba2String(tmpRgba);\r\n                }\r\n                else {\r\n                    target[propName] = target[propName] + additiveValue;\r\n                }\r\n            }\r\n            else if (arrDim === 1) {\r\n                add1DArray(target[propName], target[propName], additiveValue, 1);\r\n            }\r\n            else if (arrDim === 2) {\r\n                add2DArray(target[propName], target[propName], additiveValue, 1);\r\n            }\r\n        };\r\n        return Track;\r\n    }());\r\n    var Animator = (function () {\r\n        function Animator(target, loop, additiveTo) {\r\n            this._tracks = {};\r\n            this._trackKeys = [];\r\n            this._delay = 0;\r\n            this._maxTime = 0;\r\n            this._paused = false;\r\n            this._started = 0;\r\n            this._clip = null;\r\n            this._target = target;\r\n            this._loop = loop;\r\n            if (loop && additiveTo) {\r\n                logError('Can\\' use additive animation on looped animation.');\r\n                return;\r\n            }\r\n            this._additiveAnimators = additiveTo;\r\n        }\r\n        Animator.prototype.getTarget = function () {\r\n            return this._target;\r\n        };\r\n        Animator.prototype.changeTarget = function (target) {\r\n            this._target = target;\r\n        };\r\n        Animator.prototype.when = function (time, props) {\r\n            return this.whenWithKeys(time, props, keys(props));\r\n        };\r\n        Animator.prototype.whenWithKeys = function (time, props, propNames) {\r\n            var tracks = this._tracks;\r\n            for (var i = 0; i < propNames.length; i++) {\r\n                var propName = propNames[i];\r\n                var track = tracks[propName];\r\n                if (!track) {\r\n                    track = tracks[propName] = new Track(propName);\r\n                    var initialValue = void 0;\r\n                    var additiveTrack = this._getAdditiveTrack(propName);\r\n                    if (additiveTrack) {\r\n                        var lastFinalKf = additiveTrack.keyframes[additiveTrack.keyframes.length - 1];\r\n                        initialValue = lastFinalKf && lastFinalKf.value;\r\n                        if (additiveTrack.isValueColor && initialValue) {\r\n                            initialValue = rgba2String(initialValue);\r\n                        }\r\n                    }\r\n                    else {\r\n                        initialValue = this._target[propName];\r\n                    }\r\n                    if (initialValue == null) {\r\n                        continue;\r\n                    }\r\n                    if (time !== 0) {\r\n                        track.addKeyframe(0, cloneValue(initialValue));\r\n                    }\r\n                    this._trackKeys.push(propName);\r\n                }\r\n                track.addKeyframe(time, cloneValue(props[propName]));\r\n            }\r\n            this._maxTime = Math.max(this._maxTime, time);\r\n            return this;\r\n        };\r\n        Animator.prototype.pause = function () {\r\n            this._clip.pause();\r\n            this._paused = true;\r\n        };\r\n        Animator.prototype.resume = function () {\r\n            this._clip.resume();\r\n            this._paused = false;\r\n        };\r\n        Animator.prototype.isPaused = function () {\r\n            return !!this._paused;\r\n        };\r\n        Animator.prototype._doneCallback = function () {\r\n            this._setTracksFinished();\r\n            this._clip = null;\r\n            var doneList = this._doneList;\r\n            if (doneList) {\r\n                var len = doneList.length;\r\n                for (var i = 0; i < len; i++) {\r\n                    doneList[i].call(this);\r\n                }\r\n            }\r\n        };\r\n        Animator.prototype._abortedCallback = function () {\r\n            this._setTracksFinished();\r\n            var animation = this.animation;\r\n            var abortedList = this._abortedList;\r\n            if (animation) {\r\n                animation.removeClip(this._clip);\r\n            }\r\n            this._clip = null;\r\n            if (abortedList) {\r\n                for (var i = 0; i < abortedList.length; i++) {\r\n                    abortedList[i].call(this);\r\n                }\r\n            }\r\n        };\r\n        Animator.prototype._setTracksFinished = function () {\r\n            var tracks = this._tracks;\r\n            var tracksKeys = this._trackKeys;\r\n            for (var i = 0; i < tracksKeys.length; i++) {\r\n                tracks[tracksKeys[i]].setFinished();\r\n            }\r\n        };\r\n        Animator.prototype._getAdditiveTrack = function (trackName) {\r\n            var additiveTrack;\r\n            var additiveAnimators = this._additiveAnimators;\r\n            if (additiveAnimators) {\r\n                for (var i = 0; i < additiveAnimators.length; i++) {\r\n                    var track = additiveAnimators[i].getTrack(trackName);\r\n                    if (track) {\r\n                        additiveTrack = track;\r\n                    }\r\n                }\r\n            }\r\n            return additiveTrack;\r\n        };\r\n        Animator.prototype.start = function (easing, forceAnimate) {\r\n            if (this._started > 0) {\r\n                return;\r\n            }\r\n            this._started = 1;\r\n            var self = this;\r\n            var tracks = [];\r\n            for (var i = 0; i < this._trackKeys.length; i++) {\r\n                var propName = this._trackKeys[i];\r\n                var track = this._tracks[propName];\r\n                var additiveTrack = this._getAdditiveTrack(propName);\r\n                var kfs = track.keyframes;\r\n                track.prepare(additiveTrack);\r\n                if (track.needsAnimate()) {\r\n                    tracks.push(track);\r\n                }\r\n                else if (!track.interpolable) {\r\n                    var lastKf = kfs[kfs.length - 1];\r\n                    if (lastKf) {\r\n                        self._target[track.propName] = lastKf.value;\r\n                    }\r\n                }\r\n            }\r\n            if (tracks.length || forceAnimate) {\r\n                var clip = new Clip({\r\n                    life: this._maxTime,\r\n                    loop: this._loop,\r\n                    delay: this._delay,\r\n                    onframe: function (percent) {\r\n                        self._started = 2;\r\n                        var additiveAnimators = self._additiveAnimators;\r\n                        if (additiveAnimators) {\r\n                            var stillHasAdditiveAnimator = false;\r\n                            for (var i = 0; i < additiveAnimators.length; i++) {\r\n                                if (additiveAnimators[i]._clip) {\r\n                                    stillHasAdditiveAnimator = true;\r\n                                    break;\r\n                                }\r\n                            }\r\n                            if (!stillHasAdditiveAnimator) {\r\n                                self._additiveAnimators = null;\r\n                            }\r\n                        }\r\n                        for (var i = 0; i < tracks.length; i++) {\r\n                            tracks[i].step(self._target, percent);\r\n                        }\r\n                        var onframeList = self._onframeList;\r\n                        if (onframeList) {\r\n                            for (var i = 0; i < onframeList.length; i++) {\r\n                                onframeList[i](self._target, percent);\r\n                            }\r\n                        }\r\n                    },\r\n                    ondestroy: function () {\r\n                        self._doneCallback();\r\n                    }\r\n                });\r\n                this._clip = clip;\r\n                if (this.animation) {\r\n                    this.animation.addClip(clip);\r\n                }\r\n                if (easing && easing !== 'spline') {\r\n                    clip.easing = easing;\r\n                }\r\n            }\r\n            else {\r\n                this._doneCallback();\r\n            }\r\n            return this;\r\n        };\r\n        Animator.prototype.stop = function (forwardToLast) {\r\n            if (!this._clip) {\r\n                return;\r\n            }\r\n            var clip = this._clip;\r\n            if (forwardToLast) {\r\n                clip.onframe(1);\r\n            }\r\n            this._abortedCallback();\r\n        };\r\n        Animator.prototype.delay = function (time) {\r\n            this._delay = time;\r\n            return this;\r\n        };\r\n        Animator.prototype.during = function (cb) {\r\n            if (cb) {\r\n                if (!this._onframeList) {\r\n                    this._onframeList = [];\r\n                }\r\n                this._onframeList.push(cb);\r\n            }\r\n            return this;\r\n        };\r\n        Animator.prototype.done = function (cb) {\r\n            if (cb) {\r\n                if (!this._doneList) {\r\n                    this._doneList = [];\r\n                }\r\n                this._doneList.push(cb);\r\n            }\r\n            return this;\r\n        };\r\n        Animator.prototype.aborted = function (cb) {\r\n            if (cb) {\r\n                if (!this._abortedList) {\r\n                    this._abortedList = [];\r\n                }\r\n                this._abortedList.push(cb);\r\n            }\r\n            return this;\r\n        };\r\n        Animator.prototype.getClip = function () {\r\n            return this._clip;\r\n        };\r\n        Animator.prototype.getTrack = function (propName) {\r\n            return this._tracks[propName];\r\n        };\r\n        Animator.prototype.stopTracks = function (propNames, forwardToLast) {\r\n            if (!propNames.length || !this._clip) {\r\n                return true;\r\n            }\r\n            var tracks = this._tracks;\r\n            var tracksKeys = this._trackKeys;\r\n            for (var i = 0; i < propNames.length; i++) {\r\n                var track = tracks[propNames[i]];\r\n                if (track) {\r\n                    if (forwardToLast) {\r\n                        track.step(this._target, 1);\r\n                    }\r\n                    else if (this._started === 1) {\r\n                        track.step(this._target, 0);\r\n                    }\r\n                    track.setFinished();\r\n                }\r\n            }\r\n            var allAborted = true;\r\n            for (var i = 0; i < tracksKeys.length; i++) {\r\n                if (!tracks[tracksKeys[i]].isFinished()) {\r\n                    allAborted = false;\r\n                    break;\r\n                }\r\n            }\r\n            if (allAborted) {\r\n                this._abortedCallback();\r\n            }\r\n            return allAborted;\r\n        };\r\n        Animator.prototype.saveFinalToTarget = function (target, trackKeys) {\r\n            if (!target) {\r\n                return;\r\n            }\r\n            trackKeys = trackKeys || this._trackKeys;\r\n            for (var i = 0; i < trackKeys.length; i++) {\r\n                var propName = trackKeys[i];\r\n                var track = this._tracks[propName];\r\n                if (!track || track.isFinished()) {\r\n                    continue;\r\n                }\r\n                var kfs = track.keyframes;\r\n                var lastKf = kfs[kfs.length - 1];\r\n                if (lastKf) {\r\n                    var val = cloneValue(lastKf.value);\r\n                    if (track.isValueColor) {\r\n                        val = rgba2String(val);\r\n                    }\r\n                    target[propName] = val;\r\n                }\r\n            }\r\n        };\r\n        Animator.prototype.__changeFinalValue = function (finalProps, trackKeys) {\r\n            trackKeys = trackKeys || keys(finalProps);\r\n            for (var i = 0; i < trackKeys.length; i++) {\r\n                var propName = trackKeys[i];\r\n                var track = this._tracks[propName];\r\n                if (!track) {\r\n                    continue;\r\n                }\r\n                var kfs = track.keyframes;\r\n                if (kfs.length > 1) {\r\n                    var lastKf = kfs.pop();\r\n                    track.addKeyframe(lastKf.time, finalProps[propName]);\r\n                    track.prepare(track.getAdditiveTrack());\r\n                }\r\n            }\r\n        };\r\n        return Animator;\r\n    }());\n\n    var Point = (function () {\r\n        function Point(x, y) {\r\n            this.x = x || 0;\r\n            this.y = y || 0;\r\n        }\r\n        Point.prototype.copy = function (other) {\r\n            this.x = other.x;\r\n            this.y = other.y;\r\n            return this;\r\n        };\r\n        Point.prototype.clone = function () {\r\n            return new Point(this.x, this.y);\r\n        };\r\n        Point.prototype.set = function (x, y) {\r\n            this.x = x;\r\n            this.y = y;\r\n            return this;\r\n        };\r\n        Point.prototype.equal = function (other) {\r\n            return other.x === this.x && other.y === this.y;\r\n        };\r\n        Point.prototype.add = function (other) {\r\n            this.x += other.x;\r\n            this.y += other.y;\r\n            return this;\r\n        };\r\n        Point.prototype.scale = function (scalar) {\r\n            this.x *= scalar;\r\n            this.y *= scalar;\r\n        };\r\n        Point.prototype.scaleAndAdd = function (other, scalar) {\r\n            this.x += other.x * scalar;\r\n            this.y += other.y * scalar;\r\n        };\r\n        Point.prototype.sub = function (other) {\r\n            this.x -= other.x;\r\n            this.y -= other.y;\r\n            return this;\r\n        };\r\n        Point.prototype.dot = function (other) {\r\n            return this.x * other.x + this.y * other.y;\r\n        };\r\n        Point.prototype.len = function () {\r\n            return Math.sqrt(this.x * this.x + this.y * this.y);\r\n        };\r\n        Point.prototype.lenSquare = function () {\r\n            return this.x * this.x + this.y * this.y;\r\n        };\r\n        Point.prototype.normalize = function () {\r\n            var len = this.len();\r\n            this.x /= len;\r\n            this.y /= len;\r\n            return this;\r\n        };\r\n        Point.prototype.distance = function (other) {\r\n            var dx = this.x - other.x;\r\n            var dy = this.y - other.y;\r\n            return Math.sqrt(dx * dx + dy * dy);\r\n        };\r\n        Point.prototype.distanceSquare = function (other) {\r\n            var dx = this.x - other.x;\r\n            var dy = this.y - other.y;\r\n            return dx * dx + dy * dy;\r\n        };\r\n        Point.prototype.negate = function () {\r\n            this.x = -this.x;\r\n            this.y = -this.y;\r\n            return this;\r\n        };\r\n        Point.prototype.transform = function (m) {\r\n            if (!m) {\r\n                return;\r\n            }\r\n            var x = this.x;\r\n            var y = this.y;\r\n            this.x = m[0] * x + m[2] * y + m[4];\r\n            this.y = m[1] * x + m[3] * y + m[5];\r\n            return this;\r\n        };\r\n        Point.prototype.toArray = function (out) {\r\n            out[0] = this.x;\r\n            out[1] = this.y;\r\n            return out;\r\n        };\r\n        Point.prototype.fromArray = function (input) {\r\n            this.x = input[0];\r\n            this.y = input[1];\r\n        };\r\n        Point.set = function (p, x, y) {\r\n            p.x = x;\r\n            p.y = y;\r\n        };\r\n        Point.copy = function (p, p2) {\r\n            p.x = p2.x;\r\n            p.y = p2.y;\r\n        };\r\n        Point.len = function (p) {\r\n            return Math.sqrt(p.x * p.x + p.y * p.y);\r\n        };\r\n        Point.lenSquare = function (p) {\r\n            return p.x * p.x + p.y * p.y;\r\n        };\r\n        Point.dot = function (p0, p1) {\r\n            return p0.x * p1.x + p0.y * p1.y;\r\n        };\r\n        Point.add = function (out, p0, p1) {\r\n            out.x = p0.x + p1.x;\r\n            out.y = p0.y + p1.y;\r\n        };\r\n        Point.sub = function (out, p0, p1) {\r\n            out.x = p0.x - p1.x;\r\n            out.y = p0.y - p1.y;\r\n        };\r\n        Point.scale = function (out, p0, scalar) {\r\n            out.x = p0.x * scalar;\r\n            out.y = p0.y * scalar;\r\n        };\r\n        Point.scaleAndAdd = function (out, p0, p1, scalar) {\r\n            out.x = p0.x + p1.x * scalar;\r\n            out.y = p0.y + p1.y * scalar;\r\n        };\r\n        Point.lerp = function (out, p0, p1, t) {\r\n            var onet = 1 - t;\r\n            out.x = onet * p0.x + t * p1.x;\r\n            out.y = onet * p0.y + t * p1.y;\r\n        };\r\n        return Point;\r\n    }());\n\n    var mathMin = Math.min;\r\n    var mathMax = Math.max;\r\n    var lt = new Point();\r\n    var rb = new Point();\r\n    var lb = new Point();\r\n    var rt = new Point();\r\n    var minTv = new Point();\r\n    var maxTv = new Point();\r\n    var BoundingRect = (function () {\r\n        function BoundingRect(x, y, width, height) {\r\n            if (width < 0 && isFinite(width)) {\r\n                x = x + width;\r\n                width = -width;\r\n            }\r\n            if (height < 0 && isFinite(height)) {\r\n                y = y + height;\r\n                height = -height;\r\n            }\r\n            this.x = x;\r\n            this.y = y;\r\n            this.width = width;\r\n            this.height = height;\r\n        }\r\n        BoundingRect.prototype.union = function (other) {\r\n            var x = mathMin(other.x, this.x);\r\n            var y = mathMin(other.y, this.y);\r\n            if (isFinite(this.x) && isFinite(this.width)) {\r\n                this.width = mathMax(other.x + other.width, this.x + this.width) - x;\r\n            }\r\n            else {\r\n                this.width = other.width;\r\n            }\r\n            if (isFinite(this.y) && isFinite(this.height)) {\r\n                this.height = mathMax(other.y + other.height, this.y + this.height) - y;\r\n            }\r\n            else {\r\n                this.height = other.height;\r\n            }\r\n            this.x = x;\r\n            this.y = y;\r\n        };\r\n        BoundingRect.prototype.applyTransform = function (m) {\r\n            BoundingRect.applyTransform(this, this, m);\r\n        };\r\n        BoundingRect.prototype.calculateTransform = function (b) {\r\n            var a = this;\r\n            var sx = b.width / a.width;\r\n            var sy = b.height / a.height;\r\n            var m = create$1();\r\n            translate(m, m, [-a.x, -a.y]);\r\n            scale$1(m, m, [sx, sy]);\r\n            translate(m, m, [b.x, b.y]);\r\n            return m;\r\n        };\r\n        BoundingRect.prototype.intersect = function (b, mtv) {\r\n            if (!b) {\r\n                return false;\r\n            }\r\n            if (!(b instanceof BoundingRect)) {\r\n                b = BoundingRect.create(b);\r\n            }\r\n            var a = this;\r\n            var ax0 = a.x;\r\n            var ax1 = a.x + a.width;\r\n            var ay0 = a.y;\r\n            var ay1 = a.y + a.height;\r\n            var bx0 = b.x;\r\n            var bx1 = b.x + b.width;\r\n            var by0 = b.y;\r\n            var by1 = b.y + b.height;\r\n            var overlap = !(ax1 < bx0 || bx1 < ax0 || ay1 < by0 || by1 < ay0);\r\n            if (mtv) {\r\n                var dMin = Infinity;\r\n                var dMax = 0;\r\n                var d0 = Math.abs(ax1 - bx0);\r\n                var d1 = Math.abs(bx1 - ax0);\r\n                var d2 = Math.abs(ay1 - by0);\r\n                var d3 = Math.abs(by1 - ay0);\r\n                var dx = Math.min(d0, d1);\r\n                var dy = Math.min(d2, d3);\r\n                if (ax1 < bx0 || bx1 < ax0) {\r\n                    if (dx > dMax) {\r\n                        dMax = dx;\r\n                        if (d0 < d1) {\r\n                            Point.set(maxTv, -d0, 0);\r\n                        }\r\n                        else {\r\n                            Point.set(maxTv, d1, 0);\r\n                        }\r\n                    }\r\n                }\r\n                else {\r\n                    if (dx < dMin) {\r\n                        dMin = dx;\r\n                        if (d0 < d1) {\r\n                            Point.set(minTv, d0, 0);\r\n                        }\r\n                        else {\r\n                            Point.set(minTv, -d1, 0);\r\n                        }\r\n                    }\r\n                }\r\n                if (ay1 < by0 || by1 < ay0) {\r\n                    if (dy > dMax) {\r\n                        dMax = dy;\r\n                        if (d2 < d3) {\r\n                            Point.set(maxTv, 0, -d2);\r\n                        }\r\n                        else {\r\n                            Point.set(maxTv, 0, d3);\r\n                        }\r\n                    }\r\n                }\r\n                else {\r\n                    if (dx < dMin) {\r\n                        dMin = dx;\r\n                        if (d2 < d3) {\r\n                            Point.set(minTv, 0, d2);\r\n                        }\r\n                        else {\r\n                            Point.set(minTv, 0, -d3);\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n            if (mtv) {\r\n                Point.copy(mtv, overlap ? minTv : maxTv);\r\n            }\r\n            return overlap;\r\n        };\r\n        BoundingRect.prototype.contain = function (x, y) {\r\n            var rect = this;\r\n            return x >= rect.x\r\n                && x <= (rect.x + rect.width)\r\n                && y >= rect.y\r\n                && y <= (rect.y + rect.height);\r\n        };\r\n        BoundingRect.prototype.clone = function () {\r\n            return new BoundingRect(this.x, this.y, this.width, this.height);\r\n        };\r\n        BoundingRect.prototype.copy = function (other) {\r\n            BoundingRect.copy(this, other);\r\n        };\r\n        BoundingRect.prototype.plain = function () {\r\n            return {\r\n                x: this.x,\r\n                y: this.y,\r\n                width: this.width,\r\n                height: this.height\r\n            };\r\n        };\r\n        BoundingRect.prototype.isFinite = function () {\r\n            return isFinite(this.x)\r\n                && isFinite(this.y)\r\n                && isFinite(this.width)\r\n                && isFinite(this.height);\r\n        };\r\n        BoundingRect.prototype.isZero = function () {\r\n            return this.width === 0 || this.height === 0;\r\n        };\r\n        BoundingRect.create = function (rect) {\r\n            return new BoundingRect(rect.x, rect.y, rect.width, rect.height);\r\n        };\r\n        BoundingRect.copy = function (target, source) {\r\n            target.x = source.x;\r\n            target.y = source.y;\r\n            target.width = source.width;\r\n            target.height = source.height;\r\n        };\r\n        BoundingRect.applyTransform = function (target, source, m) {\r\n            if (!m) {\r\n                if (target !== source) {\r\n                    BoundingRect.copy(target, source);\r\n                }\r\n                return;\r\n            }\r\n            if (m[1] < 1e-5 && m[1] > -1e-5 && m[2] < 1e-5 && m[2] > -1e-5) {\r\n                var sx = m[0];\r\n                var sy = m[3];\r\n                var tx = m[4];\r\n                var ty = m[5];\r\n                target.x = source.x * sx + tx;\r\n                target.y = source.y * sy + ty;\r\n                target.width = source.width * sx;\r\n                target.height = source.height * sy;\r\n                if (target.width < 0) {\r\n                    target.x += target.width;\r\n                    target.width = -target.width;\r\n                }\r\n                if (target.height < 0) {\r\n                    target.y += target.height;\r\n                    target.height = -target.height;\r\n                }\r\n                return;\r\n            }\r\n            lt.x = lb.x = source.x;\r\n            lt.y = rt.y = source.y;\r\n            rb.x = rt.x = source.x + source.width;\r\n            rb.y = lb.y = source.y + source.height;\r\n            lt.transform(m);\r\n            rt.transform(m);\r\n            rb.transform(m);\r\n            lb.transform(m);\r\n            target.x = mathMin(lt.x, rb.x, lb.x, rt.x);\r\n            target.y = mathMin(lt.y, rb.y, lb.y, rt.y);\r\n            var maxX = mathMax(lt.x, rb.x, lb.x, rt.x);\r\n            var maxY = mathMax(lt.y, rb.y, lb.y, rt.y);\r\n            target.width = maxX - target.x;\r\n            target.height = maxY - target.y;\r\n        };\r\n        return BoundingRect;\r\n    }());\n\n    var textWidthCache = {};\r\n    var DEFAULT_FONT = '12px sans-serif';\r\n    var _ctx;\r\n    var _cachedFont;\r\n    function defaultMeasureText(text, font) {\r\n        if (!_ctx) {\r\n            _ctx = createCanvas().getContext('2d');\r\n        }\r\n        if (_cachedFont !== font) {\r\n            _cachedFont = _ctx.font = font || DEFAULT_FONT;\r\n        }\r\n        return _ctx.measureText(text);\r\n    }\r\n    var methods$1 = {\r\n        measureText: defaultMeasureText\r\n    };\r\n    function getWidth(text, font) {\r\n        font = font || DEFAULT_FONT;\r\n        var cacheOfFont = textWidthCache[font];\r\n        if (!cacheOfFont) {\r\n            cacheOfFont = textWidthCache[font] = new LRU(500);\r\n        }\r\n        var width = cacheOfFont.get(text);\r\n        if (width == null) {\r\n            width = methods$1.measureText(text, font).width;\r\n            cacheOfFont.put(text, width);\r\n        }\r\n        return width;\r\n    }\r\n    function innerGetBoundingRect(text, font, textAlign, textBaseline) {\r\n        var width = getWidth(text, font);\r\n        var height = getLineHeight(font);\r\n        var x = adjustTextX(0, width, textAlign);\r\n        var y = adjustTextY(0, height, textBaseline);\r\n        var rect = new BoundingRect(x, y, width, height);\r\n        return rect;\r\n    }\r\n    function getBoundingRect(text, font, textAlign, textBaseline) {\r\n        var textLines = ((text || '') + '').split('\\n');\r\n        var len = textLines.length;\r\n        if (len === 1) {\r\n            return innerGetBoundingRect(textLines[0], font, textAlign, textBaseline);\r\n        }\r\n        else {\r\n            var uniondRect = new BoundingRect(0, 0, 0, 0);\r\n            for (var i = 0; i < textLines.length; i++) {\r\n                var rect = innerGetBoundingRect(textLines[i], font, textAlign, textBaseline);\r\n                i === 0 ? uniondRect.copy(rect) : uniondRect.union(rect);\r\n            }\r\n            return uniondRect;\r\n        }\r\n    }\r\n    function adjustTextX(x, width, textAlign) {\r\n        if (textAlign === 'right') {\r\n            x -= width;\r\n        }\r\n        else if (textAlign === 'center') {\r\n            x -= width / 2;\r\n        }\r\n        return x;\r\n    }\r\n    function adjustTextY(y, height, verticalAlign) {\r\n        if (verticalAlign === 'middle') {\r\n            y -= height / 2;\r\n        }\r\n        else if (verticalAlign === 'bottom') {\r\n            y -= height;\r\n        }\r\n        return y;\r\n    }\r\n    function getLineHeight(font) {\r\n        return getWidth('国', font);\r\n    }\r\n    function parsePercent(value, maxValue) {\r\n        if (typeof value === 'string') {\r\n            if (value.lastIndexOf('%') >= 0) {\r\n                return parseFloat(value) / 100 * maxValue;\r\n            }\r\n            return parseFloat(value);\r\n        }\r\n        return value;\r\n    }\r\n    function calculateTextPosition(out, opts, rect) {\r\n        var textPosition = opts.position || 'inside';\r\n        var distance = opts.distance != null ? opts.distance : 5;\r\n        var height = rect.height;\r\n        var width = rect.width;\r\n        var halfHeight = height / 2;\r\n        var x = rect.x;\r\n        var y = rect.y;\r\n        var textAlign = 'left';\r\n        var textVerticalAlign = 'top';\r\n        if (textPosition instanceof Array) {\r\n            x += parsePercent(textPosition[0], rect.width);\r\n            y += parsePercent(textPosition[1], rect.height);\r\n            textAlign = null;\r\n            textVerticalAlign = null;\r\n        }\r\n        else {\r\n            switch (textPosition) {\r\n                case 'left':\r\n                    x -= distance;\r\n                    y += halfHeight;\r\n                    textAlign = 'right';\r\n                    textVerticalAlign = 'middle';\r\n                    break;\r\n                case 'right':\r\n                    x += distance + width;\r\n                    y += halfHeight;\r\n                    textVerticalAlign = 'middle';\r\n                    break;\r\n                case 'top':\r\n                    x += width / 2;\r\n                    y -= distance;\r\n                    textAlign = 'center';\r\n                    textVerticalAlign = 'bottom';\r\n                    break;\r\n                case 'bottom':\r\n                    x += width / 2;\r\n                    y += height + distance;\r\n                    textAlign = 'center';\r\n                    break;\r\n                case 'inside':\r\n                    x += width / 2;\r\n                    y += halfHeight;\r\n                    textAlign = 'center';\r\n                    textVerticalAlign = 'middle';\r\n                    break;\r\n                case 'insideLeft':\r\n                    x += distance;\r\n                    y += halfHeight;\r\n                    textVerticalAlign = 'middle';\r\n                    break;\r\n                case 'insideRight':\r\n                    x += width - distance;\r\n                    y += halfHeight;\r\n                    textAlign = 'right';\r\n                    textVerticalAlign = 'middle';\r\n                    break;\r\n                case 'insideTop':\r\n                    x += width / 2;\r\n                    y += distance;\r\n                    textAlign = 'center';\r\n                    break;\r\n                case 'insideBottom':\r\n                    x += width / 2;\r\n                    y += height - distance;\r\n                    textAlign = 'center';\r\n                    textVerticalAlign = 'bottom';\r\n                    break;\r\n                case 'insideTopLeft':\r\n                    x += distance;\r\n                    y += distance;\r\n                    break;\r\n                case 'insideTopRight':\r\n                    x += width - distance;\r\n                    y += distance;\r\n                    textAlign = 'right';\r\n                    break;\r\n                case 'insideBottomLeft':\r\n                    x += distance;\r\n                    y += height - distance;\r\n                    textVerticalAlign = 'bottom';\r\n                    break;\r\n                case 'insideBottomRight':\r\n                    x += width - distance;\r\n                    y += height - distance;\r\n                    textAlign = 'right';\r\n                    textVerticalAlign = 'bottom';\r\n                    break;\r\n            }\r\n        }\r\n        out = out || {};\r\n        out.x = x;\r\n        out.y = y;\r\n        out.align = textAlign;\r\n        out.verticalAlign = textVerticalAlign;\r\n        return out;\r\n    }\n\n    var dpr = 1;\r\n    if (typeof window !== 'undefined') {\r\n        dpr = Math.max(window.devicePixelRatio\r\n            || (window.screen.deviceXDPI / window.screen.logicalXDPI)\r\n            || 1, 1);\r\n    }\r\n    var devicePixelRatio = dpr;\r\n    var DARK_MODE_THRESHOLD = 0.4;\r\n    var DARK_LABEL_COLOR = '#333';\r\n    var LIGHT_LABEL_COLOR = '#ccc';\r\n    var LIGHTER_LABEL_COLOR = '#eee';\n\n    var PRESERVED_NORMAL_STATE = '__zr_normal__';\r\n    var PRIMARY_STATES_KEYS = ['x', 'y', 'scaleX', 'scaleY', 'originX', 'originY', 'rotation', 'ignore'];\r\n    var DEFAULT_ANIMATABLE_MAP = {\r\n        x: true,\r\n        y: true,\r\n        scaleX: true,\r\n        scaleY: true,\r\n        originX: true,\r\n        originY: true,\r\n        rotation: true,\r\n        ignore: false\r\n    };\r\n    var tmpTextPosCalcRes = {};\r\n    var tmpBoundingRect = new BoundingRect(0, 0, 0, 0);\r\n    var Element = (function () {\r\n        function Element(props) {\r\n            this.id = guid();\r\n            this.animators = [];\r\n            this.currentStates = [];\r\n            this.states = {};\r\n            this._init(props);\r\n        }\r\n        Element.prototype._init = function (props) {\r\n            this.attr(props);\r\n        };\r\n        Element.prototype.drift = function (dx, dy, e) {\r\n            switch (this.draggable) {\r\n                case 'horizontal':\r\n                    dy = 0;\r\n                    break;\r\n                case 'vertical':\r\n                    dx = 0;\r\n                    break;\r\n            }\r\n            var m = this.transform;\r\n            if (!m) {\r\n                m = this.transform = [1, 0, 0, 1, 0, 0];\r\n            }\r\n            m[4] += dx;\r\n            m[5] += dy;\r\n            this.decomposeTransform();\r\n            this.markRedraw();\r\n        };\r\n        Element.prototype.beforeUpdate = function () { };\r\n        Element.prototype.afterUpdate = function () { };\r\n        Element.prototype.update = function () {\r\n            this.updateTransform();\r\n            if (this.__dirty) {\r\n                this.updateInnerText();\r\n            }\r\n        };\r\n        Element.prototype.updateInnerText = function (forceUpdate) {\r\n            var textEl = this._textContent;\r\n            if (textEl && (!textEl.ignore || forceUpdate)) {\r\n                if (!this.textConfig) {\r\n                    this.textConfig = {};\r\n                }\r\n                var textConfig = this.textConfig;\r\n                var isLocal = textConfig.local;\r\n                var attachedTransform = textEl.attachedTransform;\r\n                var textAlign = void 0;\r\n                var textVerticalAlign = void 0;\r\n                var textStyleChanged = false;\r\n                if (isLocal) {\r\n                    attachedTransform.parent = this;\r\n                }\r\n                else {\r\n                    attachedTransform.parent = null;\r\n                }\r\n                var innerOrigin = false;\r\n                attachedTransform.x = textEl.x;\r\n                attachedTransform.y = textEl.y;\r\n                attachedTransform.originX = textEl.originX;\r\n                attachedTransform.originY = textEl.originY;\r\n                attachedTransform.rotation = textEl.rotation;\r\n                attachedTransform.scaleX = textEl.scaleX;\r\n                attachedTransform.scaleY = textEl.scaleY;\r\n                if (textConfig.position != null) {\r\n                    var layoutRect = tmpBoundingRect;\r\n                    if (textConfig.layoutRect) {\r\n                        layoutRect.copy(textConfig.layoutRect);\r\n                    }\r\n                    else {\r\n                        layoutRect.copy(this.getBoundingRect());\r\n                    }\r\n                    if (!isLocal) {\r\n                        layoutRect.applyTransform(this.transform);\r\n                    }\r\n                    if (this.calculateTextPosition) {\r\n                        this.calculateTextPosition(tmpTextPosCalcRes, textConfig, layoutRect);\r\n                    }\r\n                    else {\r\n                        calculateTextPosition(tmpTextPosCalcRes, textConfig, layoutRect);\r\n                    }\r\n                    attachedTransform.x = tmpTextPosCalcRes.x;\r\n                    attachedTransform.y = tmpTextPosCalcRes.y;\r\n                    textAlign = tmpTextPosCalcRes.align;\r\n                    textVerticalAlign = tmpTextPosCalcRes.verticalAlign;\r\n                    var textOrigin = textConfig.origin;\r\n                    if (textOrigin && textConfig.rotation != null) {\r\n                        var relOriginX = void 0;\r\n                        var relOriginY = void 0;\r\n                        if (textOrigin === 'center') {\r\n                            relOriginX = layoutRect.width * 0.5;\r\n                            relOriginY = layoutRect.height * 0.5;\r\n                        }\r\n                        else {\r\n                            relOriginX = parsePercent(textOrigin[0], layoutRect.width);\r\n                            relOriginY = parsePercent(textOrigin[1], layoutRect.height);\r\n                        }\r\n                        innerOrigin = true;\r\n                        attachedTransform.originX = -attachedTransform.x + relOriginX + (isLocal ? 0 : layoutRect.x);\r\n                        attachedTransform.originY = -attachedTransform.y + relOriginY + (isLocal ? 0 : layoutRect.y);\r\n                    }\r\n                }\r\n                if (textConfig.rotation != null) {\r\n                    attachedTransform.rotation = textConfig.rotation;\r\n                }\r\n                var textOffset = textConfig.offset;\r\n                if (textOffset) {\r\n                    attachedTransform.x += textOffset[0];\r\n                    attachedTransform.y += textOffset[1];\r\n                    if (!innerOrigin) {\r\n                        attachedTransform.originX = -textOffset[0];\r\n                        attachedTransform.originY = -textOffset[1];\r\n                    }\r\n                }\r\n                var isInside = textConfig.inside == null\r\n                    ? (typeof textConfig.position === 'string' && textConfig.position.indexOf('inside') >= 0)\r\n                    : textConfig.inside;\r\n                var innerTextDefaultStyle = this._innerTextDefaultStyle || (this._innerTextDefaultStyle = {});\r\n                var textFill = void 0;\r\n                var textStroke = void 0;\r\n                var autoStroke = void 0;\r\n                if (isInside && this.canBeInsideText()) {\r\n                    textFill = textConfig.insideFill;\r\n                    textStroke = textConfig.insideStroke;\r\n                    if (textFill == null || textFill === 'auto') {\r\n                        textFill = this.getInsideTextFill();\r\n                    }\r\n                    if (textStroke == null || textStroke === 'auto') {\r\n                        textStroke = this.getInsideTextStroke(textFill);\r\n                        autoStroke = true;\r\n                    }\r\n                }\r\n                else {\r\n                    textFill = textConfig.outsideFill;\r\n                    textStroke = textConfig.outsideStroke;\r\n                    if (textFill == null || textFill === 'auto') {\r\n                        textFill = this.getOutsideFill();\r\n                    }\r\n                    if (textStroke == null || textStroke === 'auto') {\r\n                        textStroke = this.getOutsideStroke(textFill);\r\n                        autoStroke = true;\r\n                    }\r\n                }\r\n                textFill = textFill || '#000';\r\n                if (textFill !== innerTextDefaultStyle.fill\r\n                    || textStroke !== innerTextDefaultStyle.stroke\r\n                    || autoStroke !== innerTextDefaultStyle.autoStroke\r\n                    || textAlign !== innerTextDefaultStyle.align\r\n                    || textVerticalAlign !== innerTextDefaultStyle.verticalAlign) {\r\n                    textStyleChanged = true;\r\n                    innerTextDefaultStyle.fill = textFill;\r\n                    innerTextDefaultStyle.stroke = textStroke;\r\n                    innerTextDefaultStyle.autoStroke = autoStroke;\r\n                    innerTextDefaultStyle.align = textAlign;\r\n                    innerTextDefaultStyle.verticalAlign = textVerticalAlign;\r\n                    textEl.setDefaultTextStyle(innerTextDefaultStyle);\r\n                }\r\n                if (textStyleChanged) {\r\n                    textEl.dirtyStyle();\r\n                }\r\n                textEl.markRedraw();\r\n            }\r\n        };\r\n        Element.prototype.canBeInsideText = function () {\r\n            return true;\r\n        };\r\n        Element.prototype.getInsideTextFill = function () {\r\n            return '#fff';\r\n        };\r\n        Element.prototype.getInsideTextStroke = function (textFill) {\r\n            return '#000';\r\n        };\r\n        Element.prototype.getOutsideFill = function () {\r\n            return this.__zr && this.__zr.isDarkMode() ? LIGHT_LABEL_COLOR : DARK_LABEL_COLOR;\r\n        };\r\n        Element.prototype.getOutsideStroke = function (textFill) {\r\n            var backgroundColor = this.__zr && this.__zr.getBackgroundColor();\r\n            var colorArr = typeof backgroundColor === 'string' && parse(backgroundColor);\r\n            if (!colorArr) {\r\n                colorArr = [255, 255, 255, 1];\r\n            }\r\n            var alpha = colorArr[3];\r\n            var isDark = this.__zr.isDarkMode();\r\n            for (var i = 0; i < 3; i++) {\r\n                colorArr[i] = colorArr[i] * alpha + (isDark ? 0 : 255) * (1 - alpha);\r\n            }\r\n            colorArr[3] = 1;\r\n            return stringify(colorArr, 'rgba');\r\n        };\r\n        Element.prototype.traverse = function (cb, context) { };\r\n        Element.prototype.attrKV = function (key, value) {\r\n            if (key === 'textConfig') {\r\n                this.setTextConfig(value);\r\n            }\r\n            else if (key === 'textContent') {\r\n                this.setTextContent(value);\r\n            }\r\n            else if (key === 'clipPath') {\r\n                this.setClipPath(value);\r\n            }\r\n            else if (key === 'extra') {\r\n                this.extra = this.extra || {};\r\n                extend(this.extra, value);\r\n            }\r\n            else {\r\n                this[key] = value;\r\n            }\r\n        };\r\n        Element.prototype.hide = function () {\r\n            this.ignore = true;\r\n            this.markRedraw();\r\n        };\r\n        Element.prototype.show = function () {\r\n            this.ignore = false;\r\n            this.markRedraw();\r\n        };\r\n        Element.prototype.attr = function (keyOrObj, value) {\r\n            if (typeof keyOrObj === 'string') {\r\n                this.attrKV(keyOrObj, value);\r\n            }\r\n            else if (isObject(keyOrObj)) {\r\n                var obj = keyOrObj;\r\n                var keysArr = keys(obj);\r\n                for (var i = 0; i < keysArr.length; i++) {\r\n                    var key = keysArr[i];\r\n                    this.attrKV(key, keyOrObj[key]);\r\n                }\r\n            }\r\n            this.markRedraw();\r\n            return this;\r\n        };\r\n        Element.prototype.saveCurrentToNormalState = function (toState) {\r\n            this._innerSaveToNormal(toState);\r\n            var normalState = this._normalState;\r\n            for (var i = 0; i < this.animators.length; i++) {\r\n                var animator = this.animators[i];\r\n                var fromStateTransition = animator.__fromStateTransition;\r\n                if (fromStateTransition && fromStateTransition !== PRESERVED_NORMAL_STATE) {\r\n                    continue;\r\n                }\r\n                var targetName = animator.targetName;\r\n                var target = targetName\r\n                    ? normalState[targetName] : normalState;\r\n                animator.saveFinalToTarget(target);\r\n            }\r\n        };\r\n        Element.prototype._innerSaveToNormal = function (toState) {\r\n            var normalState = this._normalState;\r\n            if (!normalState) {\r\n                normalState = this._normalState = {};\r\n            }\r\n            if (toState.textConfig && !normalState.textConfig) {\r\n                normalState.textConfig = this.textConfig;\r\n            }\r\n            this._savePrimaryToNormal(toState, normalState, PRIMARY_STATES_KEYS);\r\n        };\r\n        Element.prototype._savePrimaryToNormal = function (toState, normalState, primaryKeys) {\r\n            for (var i = 0; i < primaryKeys.length; i++) {\r\n                var key = primaryKeys[i];\r\n                if (toState[key] != null && !(key in normalState)) {\r\n                    normalState[key] = this[key];\r\n                }\r\n            }\r\n        };\r\n        Element.prototype.hasState = function () {\r\n            return this.currentStates.length > 0;\r\n        };\r\n        Element.prototype.getState = function (name) {\r\n            return this.states[name];\r\n        };\r\n        Element.prototype.ensureState = function (name) {\r\n            var states = this.states;\r\n            if (!states[name]) {\r\n                states[name] = {};\r\n            }\r\n            return states[name];\r\n        };\r\n        Element.prototype.clearStates = function (noAnimation) {\r\n            this.useState(PRESERVED_NORMAL_STATE, false, noAnimation);\r\n        };\r\n        Element.prototype.useState = function (stateName, keepCurrentStates, noAnimation) {\r\n            var toNormalState = stateName === PRESERVED_NORMAL_STATE;\r\n            var hasStates = this.hasState();\r\n            if (!hasStates && toNormalState) {\r\n                return;\r\n            }\r\n            var currentStates = this.currentStates;\r\n            var animationCfg = this.stateTransition;\r\n            if (indexOf(currentStates, stateName) >= 0 && (keepCurrentStates || currentStates.length === 1)) {\r\n                return;\r\n            }\r\n            var state;\r\n            if (this.stateProxy && !toNormalState) {\r\n                state = this.stateProxy(stateName);\r\n            }\r\n            if (!state) {\r\n                state = (this.states && this.states[stateName]);\r\n            }\r\n            if (!state && !toNormalState) {\r\n                logError(\"State \" + stateName + \" not exists.\");\r\n                return;\r\n            }\r\n            if (!toNormalState) {\r\n                this.saveCurrentToNormalState(state);\r\n            }\r\n            var useHoverLayer = !!(state && state.hoverLayer);\r\n            if (useHoverLayer) {\r\n                this._toggleHoverLayerFlag(true);\r\n            }\r\n            this._applyStateObj(stateName, state, this._normalState, keepCurrentStates, !noAnimation && !this.__inHover && animationCfg && animationCfg.duration > 0, animationCfg);\r\n            if (this._textContent) {\r\n                this._textContent.useState(stateName, keepCurrentStates);\r\n            }\r\n            if (this._textGuide) {\r\n                this._textGuide.useState(stateName, keepCurrentStates);\r\n            }\r\n            if (toNormalState) {\r\n                this.currentStates = [];\r\n                this._normalState = {};\r\n            }\r\n            else {\r\n                if (!keepCurrentStates) {\r\n                    this.currentStates = [stateName];\r\n                }\r\n                else {\r\n                    this.currentStates.push(stateName);\r\n                }\r\n            }\r\n            this._updateAnimationTargets();\r\n            this.markRedraw();\r\n            if (!useHoverLayer && this.__inHover) {\r\n                this._toggleHoverLayerFlag(false);\r\n                this.__dirty &= ~Element.REDARAW_BIT;\r\n            }\r\n            return state;\r\n        };\r\n        Element.prototype.useStates = function (states, noAnimation) {\r\n            if (!states.length) {\r\n                this.clearStates();\r\n            }\r\n            else {\r\n                var stateObjects = [];\r\n                var currentStates = this.currentStates;\r\n                var len = states.length;\r\n                var notChange = len === currentStates.length;\r\n                if (notChange) {\r\n                    for (var i = 0; i < len; i++) {\r\n                        if (states[i] !== currentStates[i]) {\r\n                            notChange = false;\r\n                            break;\r\n                        }\r\n                    }\r\n                }\r\n                if (notChange) {\r\n                    return;\r\n                }\r\n                for (var i = 0; i < len; i++) {\r\n                    var stateName = states[i];\r\n                    var stateObj = void 0;\r\n                    if (this.stateProxy) {\r\n                        stateObj = this.stateProxy(stateName, states);\r\n                    }\r\n                    if (!stateObj) {\r\n                        stateObj = this.states[stateName];\r\n                    }\r\n                    if (stateObj) {\r\n                        stateObjects.push(stateObj);\r\n                    }\r\n                }\r\n                var useHoverLayer = !!(stateObjects[len - 1] && stateObjects[len - 1].hoverLayer);\r\n                if (useHoverLayer) {\r\n                    this._toggleHoverLayerFlag(true);\r\n                }\r\n                var mergedState = this._mergeStates(stateObjects);\r\n                var animationCfg = this.stateTransition;\r\n                this.saveCurrentToNormalState(mergedState);\r\n                this._applyStateObj(states.join(','), mergedState, this._normalState, false, !noAnimation && !this.__inHover && animationCfg && animationCfg.duration > 0, animationCfg);\r\n                if (this._textContent) {\r\n                    this._textContent.useStates(states);\r\n                }\r\n                if (this._textGuide) {\r\n                    this._textGuide.useStates(states);\r\n                }\r\n                this._updateAnimationTargets();\r\n                this.currentStates = states.slice();\r\n                this.markRedraw();\r\n                if (!useHoverLayer && this.__inHover) {\r\n                    this._toggleHoverLayerFlag(false);\r\n                    this.__dirty &= ~Element.REDARAW_BIT;\r\n                }\r\n            }\r\n        };\r\n        Element.prototype._updateAnimationTargets = function () {\r\n            for (var i = 0; i < this.animators.length; i++) {\r\n                var animator = this.animators[i];\r\n                if (animator.targetName) {\r\n                    animator.changeTarget(this[animator.targetName]);\r\n                }\r\n            }\r\n        };\r\n        Element.prototype.removeState = function (state) {\r\n            var idx = indexOf(this.currentStates, state);\r\n            if (idx >= 0) {\r\n                var currentStates = this.currentStates.slice();\r\n                currentStates.splice(idx, 1);\r\n                this.useStates(currentStates);\r\n            }\r\n        };\r\n        Element.prototype.replaceState = function (oldState, newState, forceAdd) {\r\n            var currentStates = this.currentStates.slice();\r\n            var idx = indexOf(currentStates, oldState);\r\n            var newStateExists = indexOf(currentStates, newState) >= 0;\r\n            if (idx >= 0) {\r\n                if (!newStateExists) {\r\n                    currentStates[idx] = newState;\r\n                }\r\n                else {\r\n                    currentStates.splice(idx, 1);\r\n                }\r\n            }\r\n            else if (forceAdd && !newStateExists) {\r\n                currentStates.push(newState);\r\n            }\r\n            this.useStates(currentStates);\r\n        };\r\n        Element.prototype.toggleState = function (state, enable) {\r\n            if (enable) {\r\n                this.useState(state, true);\r\n            }\r\n            else {\r\n                this.removeState(state);\r\n            }\r\n        };\r\n        Element.prototype._mergeStates = function (states) {\r\n            var mergedState = {};\r\n            var mergedTextConfig;\r\n            for (var i = 0; i < states.length; i++) {\r\n                var state = states[i];\r\n                extend(mergedState, state);\r\n                if (state.textConfig) {\r\n                    mergedTextConfig = mergedTextConfig || {};\r\n                    extend(mergedTextConfig, state.textConfig);\r\n                }\r\n            }\r\n            if (mergedTextConfig) {\r\n                mergedState.textConfig = mergedTextConfig;\r\n            }\r\n            return mergedState;\r\n        };\r\n        Element.prototype._applyStateObj = function (stateName, state, normalState, keepCurrentStates, transition, animationCfg) {\r\n            var needsRestoreToNormal = !(state && keepCurrentStates);\r\n            if (state && state.textConfig) {\r\n                this.textConfig = extend({}, keepCurrentStates ? this.textConfig : normalState.textConfig);\r\n                extend(this.textConfig, state.textConfig);\r\n            }\r\n            else if (needsRestoreToNormal) {\r\n                if (normalState.textConfig) {\r\n                    this.textConfig = normalState.textConfig;\r\n                }\r\n            }\r\n            var transitionTarget = {};\r\n            var hasTransition = false;\r\n            for (var i = 0; i < PRIMARY_STATES_KEYS.length; i++) {\r\n                var key = PRIMARY_STATES_KEYS[i];\r\n                var propNeedsTransition = transition && DEFAULT_ANIMATABLE_MAP[key];\r\n                if (state && state[key] != null) {\r\n                    if (propNeedsTransition) {\r\n                        hasTransition = true;\r\n                        transitionTarget[key] = state[key];\r\n                    }\r\n                    else {\r\n                        this[key] = state[key];\r\n                    }\r\n                }\r\n                else if (needsRestoreToNormal) {\r\n                    if (normalState[key] != null) {\r\n                        if (propNeedsTransition) {\r\n                            hasTransition = true;\r\n                            transitionTarget[key] = normalState[key];\r\n                        }\r\n                        else {\r\n                            this[key] = normalState[key];\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n            if (!transition) {\r\n                for (var i = 0; i < this.animators.length; i++) {\r\n                    var animator = this.animators[i];\r\n                    var targetName = animator.targetName;\r\n                    animator.__changeFinalValue(targetName\r\n                        ? (state || normalState)[targetName]\r\n                        : (state || normalState));\r\n                }\r\n            }\r\n            if (hasTransition) {\r\n                this._transitionState(stateName, transitionTarget, animationCfg);\r\n            }\r\n        };\r\n        Element.prototype._attachComponent = function (componentEl) {\r\n            if (componentEl.__zr && !componentEl.__hostTarget) {\r\n                throw new Error('Text element has been added to zrender.');\r\n            }\r\n            if (componentEl === this) {\r\n                throw new Error('Recursive component attachment.');\r\n            }\r\n            var zr = this.__zr;\r\n            if (zr) {\r\n                componentEl.addSelfToZr(zr);\r\n            }\r\n            componentEl.__zr = zr;\r\n            componentEl.__hostTarget = this;\r\n        };\r\n        Element.prototype._detachComponent = function (componentEl) {\r\n            if (componentEl.__zr) {\r\n                componentEl.removeSelfFromZr(componentEl.__zr);\r\n            }\r\n            componentEl.__zr = null;\r\n            componentEl.__hostTarget = null;\r\n        };\r\n        Element.prototype.getClipPath = function () {\r\n            return this._clipPath;\r\n        };\r\n        Element.prototype.setClipPath = function (clipPath) {\r\n            if (this._clipPath && this._clipPath !== clipPath) {\r\n                this.removeClipPath();\r\n            }\r\n            this._attachComponent(clipPath);\r\n            this._clipPath = clipPath;\r\n            this.markRedraw();\r\n        };\r\n        Element.prototype.removeClipPath = function () {\r\n            var clipPath = this._clipPath;\r\n            if (clipPath) {\r\n                this._detachComponent(clipPath);\r\n                this._clipPath = null;\r\n                this.markRedraw();\r\n            }\r\n        };\r\n        Element.prototype.getTextContent = function () {\r\n            return this._textContent;\r\n        };\r\n        Element.prototype.setTextContent = function (textEl) {\r\n            var previousTextContent = this._textContent;\r\n            if (previousTextContent === textEl) {\r\n                return;\r\n            }\r\n            if (previousTextContent && previousTextContent !== textEl) {\r\n                this.removeTextContent();\r\n            }\r\n            if (textEl.__zr && !textEl.__hostTarget) {\r\n                throw new Error('Text element has been added to zrender.');\r\n            }\r\n            textEl.attachedTransform = new Transformable();\r\n            this._attachComponent(textEl);\r\n            this._textContent = textEl;\r\n            this.markRedraw();\r\n        };\r\n        Element.prototype.setTextConfig = function (cfg) {\r\n            if (!this.textConfig) {\r\n                this.textConfig = {};\r\n            }\r\n            extend(this.textConfig, cfg);\r\n            this.markRedraw();\r\n        };\r\n        Element.prototype.removeTextContent = function () {\r\n            var textEl = this._textContent;\r\n            if (textEl) {\r\n                textEl.attachedTransform = null;\r\n                this._detachComponent(textEl);\r\n                this._textContent = null;\r\n                this._innerTextDefaultStyle = null;\r\n                this.markRedraw();\r\n            }\r\n        };\r\n        Element.prototype.getTextGuideLine = function () {\r\n            return this._textGuide;\r\n        };\r\n        Element.prototype.setTextGuideLine = function (guideLine) {\r\n            if (this._textGuide && this._textGuide !== guideLine) {\r\n                this.removeTextGuideLine();\r\n            }\r\n            this._attachComponent(guideLine);\r\n            this._textGuide = guideLine;\r\n            this.markRedraw();\r\n        };\r\n        Element.prototype.removeTextGuideLine = function () {\r\n            var textGuide = this._textGuide;\r\n            if (textGuide) {\r\n                this._detachComponent(textGuide);\r\n                this._textGuide = null;\r\n                this.markRedraw();\r\n            }\r\n        };\r\n        Element.prototype.markRedraw = function () {\r\n            this.__dirty |= Element.REDARAW_BIT;\r\n            var zr = this.__zr;\r\n            if (zr) {\r\n                if (this.__inHover) {\r\n                    zr.refreshHover();\r\n                }\r\n                else {\r\n                    zr.refresh();\r\n                }\r\n            }\r\n            if (this.__hostTarget) {\r\n                this.__hostTarget.markRedraw();\r\n            }\r\n        };\r\n        Element.prototype.dirty = function () {\r\n            this.markRedraw();\r\n        };\r\n        Element.prototype._toggleHoverLayerFlag = function (inHover) {\r\n            this.__inHover = inHover;\r\n            var textContent = this._textContent;\r\n            var textGuide = this._textGuide;\r\n            if (textContent) {\r\n                textContent.__inHover = inHover;\r\n            }\r\n            if (textGuide) {\r\n                textGuide.__inHover = inHover;\r\n            }\r\n        };\r\n        Element.prototype.addSelfToZr = function (zr) {\r\n            this.__zr = zr;\r\n            var animators = this.animators;\r\n            if (animators) {\r\n                for (var i = 0; i < animators.length; i++) {\r\n                    zr.animation.addAnimator(animators[i]);\r\n                }\r\n            }\r\n            if (this._clipPath) {\r\n                this._clipPath.addSelfToZr(zr);\r\n            }\r\n            if (this._textContent) {\r\n                this._textContent.addSelfToZr(zr);\r\n            }\r\n            if (this._textGuide) {\r\n                this._textGuide.addSelfToZr(zr);\r\n            }\r\n        };\r\n        Element.prototype.removeSelfFromZr = function (zr) {\r\n            this.__zr = null;\r\n            var animators = this.animators;\r\n            if (animators) {\r\n                for (var i = 0; i < animators.length; i++) {\r\n                    zr.animation.removeAnimator(animators[i]);\r\n                }\r\n            }\r\n            if (this._clipPath) {\r\n                this._clipPath.removeSelfFromZr(zr);\r\n            }\r\n            if (this._textContent) {\r\n                this._textContent.removeSelfFromZr(zr);\r\n            }\r\n            if (this._textGuide) {\r\n                this._textGuide.removeSelfFromZr(zr);\r\n            }\r\n        };\r\n        Element.prototype.animate = function (key, loop) {\r\n            var target = key ? this[key] : this;\r\n            if (!target) {\r\n                logError('Property \"'\r\n                    + key\r\n                    + '\" is not existed in element '\r\n                    + this.id);\r\n                return;\r\n            }\r\n            var animator = new Animator(target, loop);\r\n            this.addAnimator(animator, key);\r\n            return animator;\r\n        };\r\n        Element.prototype.addAnimator = function (animator, key) {\r\n            var zr = this.__zr;\r\n            var el = this;\r\n            animator.during(function () {\r\n                el.updateDuringAnimation(key);\r\n            }).done(function () {\r\n                var animators = el.animators;\r\n                var idx = indexOf(animators, animator);\r\n                if (idx >= 0) {\r\n                    animators.splice(idx, 1);\r\n                }\r\n            });\r\n            this.animators.push(animator);\r\n            if (zr) {\r\n                zr.animation.addAnimator(animator);\r\n            }\r\n            zr && zr.wakeUp();\r\n        };\r\n        Element.prototype.updateDuringAnimation = function (key) {\r\n            this.markRedraw();\r\n        };\r\n        Element.prototype.stopAnimation = function (scope, forwardToLast) {\r\n            var animators = this.animators;\r\n            var len = animators.length;\r\n            var leftAnimators = [];\r\n            for (var i = 0; i < len; i++) {\r\n                var animator = animators[i];\r\n                if (!scope || scope === animator.scope) {\r\n                    animator.stop(forwardToLast);\r\n                }\r\n                else {\r\n                    leftAnimators.push(animator);\r\n                }\r\n            }\r\n            this.animators = leftAnimators;\r\n            return this;\r\n        };\r\n        Element.prototype.animateTo = function (target, cfg, animationProps) {\r\n            animateTo(this, target, cfg, animationProps);\r\n        };\r\n        Element.prototype.animateFrom = function (target, cfg, animationProps) {\r\n            animateTo(this, target, cfg, animationProps, true);\r\n        };\r\n        Element.prototype._transitionState = function (stateName, target, cfg, animationProps) {\r\n            var animators = animateTo(this, target, cfg, animationProps);\r\n            for (var i = 0; i < animators.length; i++) {\r\n                animators[i].__fromStateTransition = stateName;\r\n            }\r\n        };\r\n        Element.prototype.getBoundingRect = function () {\r\n            return null;\r\n        };\r\n        Element.prototype.getPaintRect = function () {\r\n            return null;\r\n        };\r\n        Element.REDARAW_BIT = 1;\r\n        Element.initDefaultProps = (function () {\r\n            var elProto = Element.prototype;\r\n            elProto.type = 'element';\r\n            elProto.name = '';\r\n            elProto.ignore = false;\r\n            elProto.silent = false;\r\n            elProto.isGroup = false;\r\n            elProto.draggable = false;\r\n            elProto.dragging = false;\r\n            elProto.ignoreClip = false;\r\n            elProto.__inHover = false;\r\n            elProto.__dirty = Element.REDARAW_BIT;\r\n            var logs = {};\r\n            function logDeprecatedError(key, xKey, yKey) {\r\n                if (!logs[key + xKey + yKey]) {\r\n                    console.warn(\"DEPRECATED: '\" + key + \"' has been deprecated. use '\" + xKey + \"', '\" + yKey + \"' instead\");\r\n                    logs[key + xKey + yKey] = true;\r\n                }\r\n            }\r\n            function createLegacyProperty(key, privateKey, xKey, yKey) {\r\n                Object.defineProperty(elProto, key, {\r\n                    get: function () {\r\n                        logDeprecatedError(key, xKey, yKey);\r\n                        if (!this[privateKey]) {\r\n                            var pos = this[privateKey] = [];\r\n                            enhanceArray(this, pos);\r\n                        }\r\n                        return this[privateKey];\r\n                    },\r\n                    set: function (pos) {\r\n                        logDeprecatedError(key, xKey, yKey);\r\n                        this[xKey] = pos[0];\r\n                        this[yKey] = pos[1];\r\n                        this[privateKey] = pos;\r\n                        enhanceArray(this, pos);\r\n                    }\r\n                });\r\n                function enhanceArray(self, pos) {\r\n                    Object.defineProperty(pos, 0, {\r\n                        get: function () {\r\n                            return self[xKey];\r\n                        },\r\n                        set: function (val) {\r\n                            self[xKey] = val;\r\n                        }\r\n                    });\r\n                    Object.defineProperty(pos, 1, {\r\n                        get: function () {\r\n                            return self[yKey];\r\n                        },\r\n                        set: function (val) {\r\n                            self[yKey] = val;\r\n                        }\r\n                    });\r\n                }\r\n            }\r\n            if (Object.defineProperty && (!env.browser.ie || env.browser.version > 8)) {\r\n                createLegacyProperty('position', '_legacyPos', 'x', 'y');\r\n                createLegacyProperty('scale', '_legacyScale', 'scaleX', 'scaleY');\r\n                createLegacyProperty('origin', '_legacyOrigin', 'originX', 'originY');\r\n            }\r\n        })();\r\n        return Element;\r\n    }());\r\n    mixin(Element, Eventful);\r\n    mixin(Element, Transformable);\r\n    function animateTo(animatable, target, cfg, animationProps, reverse) {\r\n        cfg = cfg || {};\r\n        var animators = [];\r\n        animateToShallow(animatable, '', animatable, target, cfg, animationProps, animators, reverse);\r\n        var finishCount = animators.length;\r\n        var doneHappened = false;\r\n        var cfgDone = cfg.done;\r\n        var cfgAborted = cfg.aborted;\r\n        var doneCb = function () {\r\n            doneHappened = true;\r\n            finishCount--;\r\n            if (finishCount <= 0) {\r\n                doneHappened\r\n                    ? (cfgDone && cfgDone())\r\n                    : (cfgAborted && cfgAborted());\r\n            }\r\n        };\r\n        var abortedCb = function () {\r\n            finishCount--;\r\n            if (finishCount <= 0) {\r\n                doneHappened\r\n                    ? (cfgDone && cfgDone())\r\n                    : (cfgAborted && cfgAborted());\r\n            }\r\n        };\r\n        if (!finishCount) {\r\n            cfgDone && cfgDone();\r\n        }\r\n        if (animators.length > 0 && cfg.during) {\r\n            animators[0].during(function (target, percent) {\r\n                cfg.during(percent);\r\n            });\r\n        }\r\n        for (var i = 0; i < animators.length; i++) {\r\n            var animator = animators[i];\r\n            if (doneCb) {\r\n                animator.done(doneCb);\r\n            }\r\n            if (abortedCb) {\r\n                animator.aborted(abortedCb);\r\n            }\r\n            animator.start(cfg.easing, cfg.force);\r\n        }\r\n        return animators;\r\n    }\r\n    function copyArrShallow(source, target, len) {\r\n        for (var i = 0; i < len; i++) {\r\n            source[i] = target[i];\r\n        }\r\n    }\r\n    function is2DArray(value) {\r\n        return isArrayLike(value[0]);\r\n    }\r\n    function copyValue(target, source, key) {\r\n        if (isArrayLike(source[key])) {\r\n            if (!isArrayLike(target[key])) {\r\n                target[key] = [];\r\n            }\r\n            if (isTypedArray(source[key])) {\r\n                var len = source[key].length;\r\n                if (target[key].length !== len) {\r\n                    target[key] = new (source[key].constructor)(len);\r\n                    copyArrShallow(target[key], source[key], len);\r\n                }\r\n            }\r\n            else {\r\n                var sourceArr = source[key];\r\n                var targetArr = target[key];\r\n                var len0 = sourceArr.length;\r\n                if (is2DArray(sourceArr)) {\r\n                    var len1 = sourceArr[0].length;\r\n                    for (var i = 0; i < len0; i++) {\r\n                        if (!targetArr[i]) {\r\n                            targetArr[i] = Array.prototype.slice.call(sourceArr[i]);\r\n                        }\r\n                        else {\r\n                            copyArrShallow(targetArr[i], sourceArr[i], len1);\r\n                        }\r\n                    }\r\n                }\r\n                else {\r\n                    copyArrShallow(targetArr, sourceArr, len0);\r\n                }\r\n                targetArr.length = sourceArr.length;\r\n            }\r\n        }\r\n        else {\r\n            target[key] = source[key];\r\n        }\r\n    }\r\n    function animateToShallow(animatable, topKey, source, target, cfg, animationProps, animators, reverse) {\r\n        var animatableKeys = [];\r\n        var changedKeys = [];\r\n        var targetKeys = keys(target);\r\n        var duration = cfg.duration;\r\n        var delay = cfg.delay;\r\n        var additive = cfg.additive;\r\n        var setToFinal = cfg.setToFinal;\r\n        var animateAll = !isObject(animationProps);\r\n        for (var k = 0; k < targetKeys.length; k++) {\r\n            var innerKey = targetKeys[k];\r\n            if (source[innerKey] != null\r\n                && target[innerKey] != null\r\n                && (animateAll || animationProps[innerKey])) {\r\n                if (isObject(target[innerKey]) && !isArrayLike(target[innerKey])) {\r\n                    if (topKey) {\r\n                        if (!reverse) {\r\n                            source[innerKey] = target[innerKey];\r\n                            animatable.updateDuringAnimation(topKey);\r\n                        }\r\n                        continue;\r\n                    }\r\n                    animateToShallow(animatable, innerKey, source[innerKey], target[innerKey], cfg, animationProps && animationProps[innerKey], animators, reverse);\r\n                }\r\n                else {\r\n                    animatableKeys.push(innerKey);\r\n                    changedKeys.push(innerKey);\r\n                }\r\n            }\r\n            else if (!reverse) {\r\n                source[innerKey] = target[innerKey];\r\n                animatable.updateDuringAnimation(topKey);\r\n                changedKeys.push(innerKey);\r\n            }\r\n        }\r\n        var keyLen = animatableKeys.length;\r\n        if (keyLen > 0\r\n            || (cfg.force && !animators.length)) {\r\n            var existsAnimators = animatable.animators;\r\n            var existsAnimatorsOnSameTarget = [];\r\n            for (var i = 0; i < existsAnimators.length; i++) {\r\n                if (existsAnimators[i].targetName === topKey) {\r\n                    existsAnimatorsOnSameTarget.push(existsAnimators[i]);\r\n                }\r\n            }\r\n            if (!additive && existsAnimatorsOnSameTarget.length) {\r\n                for (var i = 0; i < existsAnimatorsOnSameTarget.length; i++) {\r\n                    var allAborted = existsAnimatorsOnSameTarget[i].stopTracks(changedKeys);\r\n                    if (allAborted) {\r\n                        var idx = indexOf(existsAnimators, existsAnimatorsOnSameTarget[i]);\r\n                        existsAnimators.splice(idx, 1);\r\n                    }\r\n                }\r\n            }\r\n            var revertedSource = void 0;\r\n            var reversedTarget = void 0;\r\n            var sourceClone = void 0;\r\n            if (reverse) {\r\n                reversedTarget = {};\r\n                if (setToFinal) {\r\n                    revertedSource = {};\r\n                }\r\n                for (var i = 0; i < keyLen; i++) {\r\n                    var innerKey = animatableKeys[i];\r\n                    reversedTarget[innerKey] = source[innerKey];\r\n                    if (setToFinal) {\r\n                        revertedSource[innerKey] = target[innerKey];\r\n                    }\r\n                    else {\r\n                        source[innerKey] = target[innerKey];\r\n                    }\r\n                }\r\n            }\r\n            else if (setToFinal) {\r\n                sourceClone = {};\r\n                for (var i = 0; i < keyLen; i++) {\r\n                    var innerKey = animatableKeys[i];\r\n                    sourceClone[innerKey] = cloneValue(source[innerKey]);\r\n                    copyValue(source, target, innerKey);\r\n                }\r\n            }\r\n            var animator = new Animator(source, false, additive ? existsAnimatorsOnSameTarget : null);\r\n            animator.targetName = topKey;\r\n            if (cfg.scope) {\r\n                animator.scope = cfg.scope;\r\n            }\r\n            if (setToFinal && revertedSource) {\r\n                animator.whenWithKeys(0, revertedSource, animatableKeys);\r\n            }\r\n            if (sourceClone) {\r\n                animator.whenWithKeys(0, sourceClone, animatableKeys);\r\n            }\r\n            animator.whenWithKeys(duration == null ? 500 : duration, reverse ? reversedTarget : target, animatableKeys).delay(delay || 0);\r\n            animatable.addAnimator(animator, topKey);\r\n            animators.push(animator);\r\n        }\r\n    }\n\n    var DEFAULT_MIN_MERGE = 32;\r\n    var DEFAULT_MIN_GALLOPING = 7;\r\n    function minRunLength(n) {\r\n        var r = 0;\r\n        while (n >= DEFAULT_MIN_MERGE) {\r\n            r |= n & 1;\r\n            n >>= 1;\r\n        }\r\n        return n + r;\r\n    }\r\n    function makeAscendingRun(array, lo, hi, compare) {\r\n        var runHi = lo + 1;\r\n        if (runHi === hi) {\r\n            return 1;\r\n        }\r\n        if (compare(array[runHi++], array[lo]) < 0) {\r\n            while (runHi < hi && compare(array[runHi], array[runHi - 1]) < 0) {\r\n                runHi++;\r\n            }\r\n            reverseRun(array, lo, runHi);\r\n        }\r\n        else {\r\n            while (runHi < hi && compare(array[runHi], array[runHi - 1]) >= 0) {\r\n                runHi++;\r\n            }\r\n        }\r\n        return runHi - lo;\r\n    }\r\n    function reverseRun(array, lo, hi) {\r\n        hi--;\r\n        while (lo < hi) {\r\n            var t = array[lo];\r\n            array[lo++] = array[hi];\r\n            array[hi--] = t;\r\n        }\r\n    }\r\n    function binaryInsertionSort(array, lo, hi, start, compare) {\r\n        if (start === lo) {\r\n            start++;\r\n        }\r\n        for (; start < hi; start++) {\r\n            var pivot = array[start];\r\n            var left = lo;\r\n            var right = start;\r\n            var mid;\r\n            while (left < right) {\r\n                mid = left + right >>> 1;\r\n                if (compare(pivot, array[mid]) < 0) {\r\n                    right = mid;\r\n                }\r\n                else {\r\n                    left = mid + 1;\r\n                }\r\n            }\r\n            var n = start - left;\r\n            switch (n) {\r\n                case 3:\r\n                    array[left + 3] = array[left + 2];\r\n                case 2:\r\n                    array[left + 2] = array[left + 1];\r\n                case 1:\r\n                    array[left + 1] = array[left];\r\n                    break;\r\n                default:\r\n                    while (n > 0) {\r\n                        array[left + n] = array[left + n - 1];\r\n                        n--;\r\n                    }\r\n            }\r\n            array[left] = pivot;\r\n        }\r\n    }\r\n    function gallopLeft(value, array, start, length, hint, compare) {\r\n        var lastOffset = 0;\r\n        var maxOffset = 0;\r\n        var offset = 1;\r\n        if (compare(value, array[start + hint]) > 0) {\r\n            maxOffset = length - hint;\r\n            while (offset < maxOffset && compare(value, array[start + hint + offset]) > 0) {\r\n                lastOffset = offset;\r\n                offset = (offset << 1) + 1;\r\n                if (offset <= 0) {\r\n                    offset = maxOffset;\r\n                }\r\n            }\r\n            if (offset > maxOffset) {\r\n                offset = maxOffset;\r\n            }\r\n            lastOffset += hint;\r\n            offset += hint;\r\n        }\r\n        else {\r\n            maxOffset = hint + 1;\r\n            while (offset < maxOffset && compare(value, array[start + hint - offset]) <= 0) {\r\n                lastOffset = offset;\r\n                offset = (offset << 1) + 1;\r\n                if (offset <= 0) {\r\n                    offset = maxOffset;\r\n                }\r\n            }\r\n            if (offset > maxOffset) {\r\n                offset = maxOffset;\r\n            }\r\n            var tmp = lastOffset;\r\n            lastOffset = hint - offset;\r\n            offset = hint - tmp;\r\n        }\r\n        lastOffset++;\r\n        while (lastOffset < offset) {\r\n            var m = lastOffset + (offset - lastOffset >>> 1);\r\n            if (compare(value, array[start + m]) > 0) {\r\n                lastOffset = m + 1;\r\n            }\r\n            else {\r\n                offset = m;\r\n            }\r\n        }\r\n        return offset;\r\n    }\r\n    function gallopRight(value, array, start, length, hint, compare) {\r\n        var lastOffset = 0;\r\n        var maxOffset = 0;\r\n        var offset = 1;\r\n        if (compare(value, array[start + hint]) < 0) {\r\n            maxOffset = hint + 1;\r\n            while (offset < maxOffset && compare(value, array[start + hint - offset]) < 0) {\r\n                lastOffset = offset;\r\n                offset = (offset << 1) + 1;\r\n                if (offset <= 0) {\r\n                    offset = maxOffset;\r\n                }\r\n            }\r\n            if (offset > maxOffset) {\r\n                offset = maxOffset;\r\n            }\r\n            var tmp = lastOffset;\r\n            lastOffset = hint - offset;\r\n            offset = hint - tmp;\r\n        }\r\n        else {\r\n            maxOffset = length - hint;\r\n            while (offset < maxOffset && compare(value, array[start + hint + offset]) >= 0) {\r\n                lastOffset = offset;\r\n                offset = (offset << 1) + 1;\r\n                if (offset <= 0) {\r\n                    offset = maxOffset;\r\n                }\r\n            }\r\n            if (offset > maxOffset) {\r\n                offset = maxOffset;\r\n            }\r\n            lastOffset += hint;\r\n            offset += hint;\r\n        }\r\n        lastOffset++;\r\n        while (lastOffset < offset) {\r\n            var m = lastOffset + (offset - lastOffset >>> 1);\r\n            if (compare(value, array[start + m]) < 0) {\r\n                offset = m;\r\n            }\r\n            else {\r\n                lastOffset = m + 1;\r\n            }\r\n        }\r\n        return offset;\r\n    }\r\n    function TimSort(array, compare) {\r\n        var minGallop = DEFAULT_MIN_GALLOPING;\r\n        var length = 0;\r\n        var runStart;\r\n        var runLength;\r\n        var stackSize = 0;\r\n        length = array.length;\r\n        var tmp = [];\r\n        runStart = [];\r\n        runLength = [];\r\n        function pushRun(_runStart, _runLength) {\r\n            runStart[stackSize] = _runStart;\r\n            runLength[stackSize] = _runLength;\r\n            stackSize += 1;\r\n        }\r\n        function mergeRuns() {\r\n            while (stackSize > 1) {\r\n                var n = stackSize - 2;\r\n                if ((n >= 1 && runLength[n - 1] <= runLength[n] + runLength[n + 1])\r\n                    || (n >= 2 && runLength[n - 2] <= runLength[n] + runLength[n - 1])) {\r\n                    if (runLength[n - 1] < runLength[n + 1]) {\r\n                        n--;\r\n                    }\r\n                }\r\n                else if (runLength[n] > runLength[n + 1]) {\r\n                    break;\r\n                }\r\n                mergeAt(n);\r\n            }\r\n        }\r\n        function forceMergeRuns() {\r\n            while (stackSize > 1) {\r\n                var n = stackSize - 2;\r\n                if (n > 0 && runLength[n - 1] < runLength[n + 1]) {\r\n                    n--;\r\n                }\r\n                mergeAt(n);\r\n            }\r\n        }\r\n        function mergeAt(i) {\r\n            var start1 = runStart[i];\r\n            var length1 = runLength[i];\r\n            var start2 = runStart[i + 1];\r\n            var length2 = runLength[i + 1];\r\n            runLength[i] = length1 + length2;\r\n            if (i === stackSize - 3) {\r\n                runStart[i + 1] = runStart[i + 2];\r\n                runLength[i + 1] = runLength[i + 2];\r\n            }\r\n            stackSize--;\r\n            var k = gallopRight(array[start2], array, start1, length1, 0, compare);\r\n            start1 += k;\r\n            length1 -= k;\r\n            if (length1 === 0) {\r\n                return;\r\n            }\r\n            length2 = gallopLeft(array[start1 + length1 - 1], array, start2, length2, length2 - 1, compare);\r\n            if (length2 === 0) {\r\n                return;\r\n            }\r\n            if (length1 <= length2) {\r\n                mergeLow(start1, length1, start2, length2);\r\n            }\r\n            else {\r\n                mergeHigh(start1, length1, start2, length2);\r\n            }\r\n        }\r\n        function mergeLow(start1, length1, start2, length2) {\r\n            var i = 0;\r\n            for (i = 0; i < length1; i++) {\r\n                tmp[i] = array[start1 + i];\r\n            }\r\n            var cursor1 = 0;\r\n            var cursor2 = start2;\r\n            var dest = start1;\r\n            array[dest++] = array[cursor2++];\r\n            if (--length2 === 0) {\r\n                for (i = 0; i < length1; i++) {\r\n                    array[dest + i] = tmp[cursor1 + i];\r\n                }\r\n                return;\r\n            }\r\n            if (length1 === 1) {\r\n                for (i = 0; i < length2; i++) {\r\n                    array[dest + i] = array[cursor2 + i];\r\n                }\r\n                array[dest + length2] = tmp[cursor1];\r\n                return;\r\n            }\r\n            var _minGallop = minGallop;\r\n            var count1;\r\n            var count2;\r\n            var exit;\r\n            while (1) {\r\n                count1 = 0;\r\n                count2 = 0;\r\n                exit = false;\r\n                do {\r\n                    if (compare(array[cursor2], tmp[cursor1]) < 0) {\r\n                        array[dest++] = array[cursor2++];\r\n                        count2++;\r\n                        count1 = 0;\r\n                        if (--length2 === 0) {\r\n                            exit = true;\r\n                            break;\r\n                        }\r\n                    }\r\n                    else {\r\n                        array[dest++] = tmp[cursor1++];\r\n                        count1++;\r\n                        count2 = 0;\r\n                        if (--length1 === 1) {\r\n                            exit = true;\r\n                            break;\r\n                        }\r\n                    }\r\n                } while ((count1 | count2) < _minGallop);\r\n                if (exit) {\r\n                    break;\r\n                }\r\n                do {\r\n                    count1 = gallopRight(array[cursor2], tmp, cursor1, length1, 0, compare);\r\n                    if (count1 !== 0) {\r\n                        for (i = 0; i < count1; i++) {\r\n                            array[dest + i] = tmp[cursor1 + i];\r\n                        }\r\n                        dest += count1;\r\n                        cursor1 += count1;\r\n                        length1 -= count1;\r\n                        if (length1 <= 1) {\r\n                            exit = true;\r\n                            break;\r\n                        }\r\n                    }\r\n                    array[dest++] = array[cursor2++];\r\n                    if (--length2 === 0) {\r\n                        exit = true;\r\n                        break;\r\n                    }\r\n                    count2 = gallopLeft(tmp[cursor1], array, cursor2, length2, 0, compare);\r\n                    if (count2 !== 0) {\r\n                        for (i = 0; i < count2; i++) {\r\n                            array[dest + i] = array[cursor2 + i];\r\n                        }\r\n                        dest += count2;\r\n                        cursor2 += count2;\r\n                        length2 -= count2;\r\n                        if (length2 === 0) {\r\n                            exit = true;\r\n                            break;\r\n                        }\r\n                    }\r\n                    array[dest++] = tmp[cursor1++];\r\n                    if (--length1 === 1) {\r\n                        exit = true;\r\n                        break;\r\n                    }\r\n                    _minGallop--;\r\n                } while (count1 >= DEFAULT_MIN_GALLOPING || count2 >= DEFAULT_MIN_GALLOPING);\r\n                if (exit) {\r\n                    break;\r\n                }\r\n                if (_minGallop < 0) {\r\n                    _minGallop = 0;\r\n                }\r\n                _minGallop += 2;\r\n            }\r\n            minGallop = _minGallop;\r\n            minGallop < 1 && (minGallop = 1);\r\n            if (length1 === 1) {\r\n                for (i = 0; i < length2; i++) {\r\n                    array[dest + i] = array[cursor2 + i];\r\n                }\r\n                array[dest + length2] = tmp[cursor1];\r\n            }\r\n            else if (length1 === 0) {\r\n                throw new Error();\r\n            }\r\n            else {\r\n                for (i = 0; i < length1; i++) {\r\n                    array[dest + i] = tmp[cursor1 + i];\r\n                }\r\n            }\r\n        }\r\n        function mergeHigh(start1, length1, start2, length2) {\r\n            var i = 0;\r\n            for (i = 0; i < length2; i++) {\r\n                tmp[i] = array[start2 + i];\r\n            }\r\n            var cursor1 = start1 + length1 - 1;\r\n            var cursor2 = length2 - 1;\r\n            var dest = start2 + length2 - 1;\r\n            var customCursor = 0;\r\n            var customDest = 0;\r\n            array[dest--] = array[cursor1--];\r\n            if (--length1 === 0) {\r\n                customCursor = dest - (length2 - 1);\r\n                for (i = 0; i < length2; i++) {\r\n                    array[customCursor + i] = tmp[i];\r\n                }\r\n                return;\r\n            }\r\n            if (length2 === 1) {\r\n                dest -= length1;\r\n                cursor1 -= length1;\r\n                customDest = dest + 1;\r\n                customCursor = cursor1 + 1;\r\n                for (i = length1 - 1; i >= 0; i--) {\r\n                    array[customDest + i] = array[customCursor + i];\r\n                }\r\n                array[dest] = tmp[cursor2];\r\n                return;\r\n            }\r\n            var _minGallop = minGallop;\r\n            while (true) {\r\n                var count1 = 0;\r\n                var count2 = 0;\r\n                var exit = false;\r\n                do {\r\n                    if (compare(tmp[cursor2], array[cursor1]) < 0) {\r\n                        array[dest--] = array[cursor1--];\r\n                        count1++;\r\n                        count2 = 0;\r\n                        if (--length1 === 0) {\r\n                            exit = true;\r\n                            break;\r\n                        }\r\n                    }\r\n                    else {\r\n                        array[dest--] = tmp[cursor2--];\r\n                        count2++;\r\n                        count1 = 0;\r\n                        if (--length2 === 1) {\r\n                            exit = true;\r\n                            break;\r\n                        }\r\n                    }\r\n                } while ((count1 | count2) < _minGallop);\r\n                if (exit) {\r\n                    break;\r\n                }\r\n                do {\r\n                    count1 = length1 - gallopRight(tmp[cursor2], array, start1, length1, length1 - 1, compare);\r\n                    if (count1 !== 0) {\r\n                        dest -= count1;\r\n                        cursor1 -= count1;\r\n                        length1 -= count1;\r\n                        customDest = dest + 1;\r\n                        customCursor = cursor1 + 1;\r\n                        for (i = count1 - 1; i >= 0; i--) {\r\n                            array[customDest + i] = array[customCursor + i];\r\n                        }\r\n                        if (length1 === 0) {\r\n                            exit = true;\r\n                            break;\r\n                        }\r\n                    }\r\n                    array[dest--] = tmp[cursor2--];\r\n                    if (--length2 === 1) {\r\n                        exit = true;\r\n                        break;\r\n                    }\r\n                    count2 = length2 - gallopLeft(array[cursor1], tmp, 0, length2, length2 - 1, compare);\r\n                    if (count2 !== 0) {\r\n                        dest -= count2;\r\n                        cursor2 -= count2;\r\n                        length2 -= count2;\r\n                        customDest = dest + 1;\r\n                        customCursor = cursor2 + 1;\r\n                        for (i = 0; i < count2; i++) {\r\n                            array[customDest + i] = tmp[customCursor + i];\r\n                        }\r\n                        if (length2 <= 1) {\r\n                            exit = true;\r\n                            break;\r\n                        }\r\n                    }\r\n                    array[dest--] = array[cursor1--];\r\n                    if (--length1 === 0) {\r\n                        exit = true;\r\n                        break;\r\n                    }\r\n                    _minGallop--;\r\n                } while (count1 >= DEFAULT_MIN_GALLOPING || count2 >= DEFAULT_MIN_GALLOPING);\r\n                if (exit) {\r\n                    break;\r\n                }\r\n                if (_minGallop < 0) {\r\n                    _minGallop = 0;\r\n                }\r\n                _minGallop += 2;\r\n            }\r\n            minGallop = _minGallop;\r\n            if (minGallop < 1) {\r\n                minGallop = 1;\r\n            }\r\n            if (length2 === 1) {\r\n                dest -= length1;\r\n                cursor1 -= length1;\r\n                customDest = dest + 1;\r\n                customCursor = cursor1 + 1;\r\n                for (i = length1 - 1; i >= 0; i--) {\r\n                    array[customDest + i] = array[customCursor + i];\r\n                }\r\n                array[dest] = tmp[cursor2];\r\n            }\r\n            else if (length2 === 0) {\r\n                throw new Error();\r\n            }\r\n            else {\r\n                customCursor = dest - (length2 - 1);\r\n                for (i = 0; i < length2; i++) {\r\n                    array[customCursor + i] = tmp[i];\r\n                }\r\n            }\r\n        }\r\n        return {\r\n            mergeRuns: mergeRuns,\r\n            forceMergeRuns: forceMergeRuns,\r\n            pushRun: pushRun\r\n        };\r\n    }\r\n    function sort(array, compare, lo, hi) {\r\n        if (!lo) {\r\n            lo = 0;\r\n        }\r\n        if (!hi) {\r\n            hi = array.length;\r\n        }\r\n        var remaining = hi - lo;\r\n        if (remaining < 2) {\r\n            return;\r\n        }\r\n        var runLength = 0;\r\n        if (remaining < DEFAULT_MIN_MERGE) {\r\n            runLength = makeAscendingRun(array, lo, hi, compare);\r\n            binaryInsertionSort(array, lo, hi, lo + runLength, compare);\r\n            return;\r\n        }\r\n        var ts = TimSort(array, compare);\r\n        var minRun = minRunLength(remaining);\r\n        do {\r\n            runLength = makeAscendingRun(array, lo, hi, compare);\r\n            if (runLength < minRun) {\r\n                var force = remaining;\r\n                if (force > minRun) {\r\n                    force = minRun;\r\n                }\r\n                binaryInsertionSort(array, lo, lo + force, lo + runLength, compare);\r\n                runLength = force;\r\n            }\r\n            ts.pushRun(lo, runLength);\r\n            ts.mergeRuns();\r\n            remaining -= runLength;\r\n            lo += runLength;\r\n        } while (remaining !== 0);\r\n        ts.forceMergeRuns();\r\n    }\n\n    var invalidZErrorLogged = false;\r\n    function logInvalidZError() {\r\n        if (invalidZErrorLogged) {\r\n            return;\r\n        }\r\n        invalidZErrorLogged = true;\r\n        console.warn('z / z2 / zlevel of displayable is invalid, which may cause unexpected errors');\r\n    }\r\n    function shapeCompareFunc(a, b) {\r\n        if (a.zlevel === b.zlevel) {\r\n            if (a.z === b.z) {\r\n                return a.z2 - b.z2;\r\n            }\r\n            return a.z - b.z;\r\n        }\r\n        return a.zlevel - b.zlevel;\r\n    }\r\n    var Storage = (function () {\r\n        function Storage() {\r\n            this._roots = [];\r\n            this._displayList = [];\r\n            this._displayListLen = 0;\r\n            this.displayableSortFunc = shapeCompareFunc;\r\n        }\r\n        Storage.prototype.traverse = function (cb, context) {\r\n            for (var i = 0; i < this._roots.length; i++) {\r\n                this._roots[i].traverse(cb, context);\r\n            }\r\n        };\r\n        Storage.prototype.getDisplayList = function (update, includeIgnore) {\r\n            includeIgnore = includeIgnore || false;\r\n            var displayList = this._displayList;\r\n            if (update || !displayList.length) {\r\n                this.updateDisplayList(includeIgnore);\r\n            }\r\n            return displayList;\r\n        };\r\n        Storage.prototype.updateDisplayList = function (includeIgnore) {\r\n            this._displayListLen = 0;\r\n            var roots = this._roots;\r\n            var displayList = this._displayList;\r\n            for (var i = 0, len = roots.length; i < len; i++) {\r\n                this._updateAndAddDisplayable(roots[i], null, includeIgnore);\r\n            }\r\n            displayList.length = this._displayListLen;\r\n            env.canvasSupported && sort(displayList, shapeCompareFunc);\r\n        };\r\n        Storage.prototype._updateAndAddDisplayable = function (el, clipPaths, includeIgnore) {\r\n            if (el.ignore && !includeIgnore) {\r\n                return;\r\n            }\r\n            el.beforeUpdate();\r\n            el.update();\r\n            el.afterUpdate();\r\n            var userSetClipPath = el.getClipPath();\r\n            if (el.ignoreClip) {\r\n                clipPaths = null;\r\n            }\r\n            else if (userSetClipPath) {\r\n                if (clipPaths) {\r\n                    clipPaths = clipPaths.slice();\r\n                }\r\n                else {\r\n                    clipPaths = [];\r\n                }\r\n                var currentClipPath = userSetClipPath;\r\n                var parentClipPath = el;\r\n                while (currentClipPath) {\r\n                    currentClipPath.parent = parentClipPath;\r\n                    currentClipPath.updateTransform();\r\n                    clipPaths.push(currentClipPath);\r\n                    parentClipPath = currentClipPath;\r\n                    currentClipPath = currentClipPath.getClipPath();\r\n                }\r\n            }\r\n            if (el.childrenRef) {\r\n                var children = el.childrenRef();\r\n                for (var i = 0; i < children.length; i++) {\r\n                    var child = children[i];\r\n                    if (el.__dirty) {\r\n                        child.__dirty |= Element.REDARAW_BIT;\r\n                    }\r\n                    this._updateAndAddDisplayable(child, clipPaths, includeIgnore);\r\n                }\r\n                el.__dirty = 0;\r\n            }\r\n            else {\r\n                var disp = el;\r\n                if (clipPaths && clipPaths.length) {\r\n                    disp.__clipPaths = clipPaths;\r\n                }\r\n                else if (disp.__clipPaths && disp.__clipPaths.length > 0) {\r\n                    disp.__clipPaths = [];\r\n                }\r\n                if (isNaN(disp.z)) {\r\n                    logInvalidZError();\r\n                    disp.z = 0;\r\n                }\r\n                if (isNaN(disp.z2)) {\r\n                    logInvalidZError();\r\n                    disp.z2 = 0;\r\n                }\r\n                if (isNaN(disp.zlevel)) {\r\n                    logInvalidZError();\r\n                    disp.zlevel = 0;\r\n                }\r\n                this._displayList[this._displayListLen++] = disp;\r\n            }\r\n            var decalEl = el.getDecalElement && el.getDecalElement();\r\n            if (decalEl) {\r\n                this._updateAndAddDisplayable(decalEl, clipPaths, includeIgnore);\r\n            }\r\n            var textGuide = el.getTextGuideLine();\r\n            if (textGuide) {\r\n                this._updateAndAddDisplayable(textGuide, clipPaths, includeIgnore);\r\n            }\r\n            var textEl = el.getTextContent();\r\n            if (textEl) {\r\n                this._updateAndAddDisplayable(textEl, clipPaths, includeIgnore);\r\n            }\r\n        };\r\n        Storage.prototype.addRoot = function (el) {\r\n            if (el.__zr && el.__zr.storage === this) {\r\n                return;\r\n            }\r\n            this._roots.push(el);\r\n        };\r\n        Storage.prototype.delRoot = function (el) {\r\n            if (el instanceof Array) {\r\n                for (var i = 0, l = el.length; i < l; i++) {\r\n                    this.delRoot(el[i]);\r\n                }\r\n                return;\r\n            }\r\n            var idx = indexOf(this._roots, el);\r\n            if (idx >= 0) {\r\n                this._roots.splice(idx, 1);\r\n            }\r\n        };\r\n        Storage.prototype.delAllRoots = function () {\r\n            this._roots = [];\r\n            this._displayList = [];\r\n            this._displayListLen = 0;\r\n            return;\r\n        };\r\n        Storage.prototype.getRoots = function () {\r\n            return this._roots;\r\n        };\r\n        Storage.prototype.dispose = function () {\r\n            this._displayList = null;\r\n            this._roots = null;\r\n        };\r\n        return Storage;\r\n    }());\n\n    var requestAnimationFrame;\r\n    requestAnimationFrame = (typeof window !== 'undefined'\r\n        && ((window.requestAnimationFrame && window.requestAnimationFrame.bind(window))\r\n            || (window.msRequestAnimationFrame && window.msRequestAnimationFrame.bind(window))\r\n            || window.mozRequestAnimationFrame\r\n            || window.webkitRequestAnimationFrame)) || function (func) {\r\n        return setTimeout(func, 16);\r\n    };\r\n    var requestAnimationFrame$1 = requestAnimationFrame;\n\n    var Animation = (function (_super) {\r\n        __extends(Animation, _super);\r\n        function Animation(opts) {\r\n            var _this = _super.call(this) || this;\r\n            _this._running = false;\r\n            _this._time = 0;\r\n            _this._pausedTime = 0;\r\n            _this._pauseStart = 0;\r\n            _this._paused = false;\r\n            opts = opts || {};\r\n            _this.stage = opts.stage || {};\r\n            _this.onframe = opts.onframe || function () { };\r\n            return _this;\r\n        }\r\n        Animation.prototype.addClip = function (clip) {\r\n            if (clip.animation) {\r\n                this.removeClip(clip);\r\n            }\r\n            if (!this._clipsHead) {\r\n                this._clipsHead = this._clipsTail = clip;\r\n            }\r\n            else {\r\n                this._clipsTail.next = clip;\r\n                clip.prev = this._clipsTail;\r\n                clip.next = null;\r\n                this._clipsTail = clip;\r\n            }\r\n            clip.animation = this;\r\n        };\r\n        Animation.prototype.addAnimator = function (animator) {\r\n            animator.animation = this;\r\n            var clip = animator.getClip();\r\n            if (clip) {\r\n                this.addClip(clip);\r\n            }\r\n        };\r\n        Animation.prototype.removeClip = function (clip) {\r\n            if (!clip.animation) {\r\n                return;\r\n            }\r\n            var prev = clip.prev;\r\n            var next = clip.next;\r\n            if (prev) {\r\n                prev.next = next;\r\n            }\r\n            else {\r\n                this._clipsHead = next;\r\n            }\r\n            if (next) {\r\n                next.prev = prev;\r\n            }\r\n            else {\r\n                this._clipsTail = prev;\r\n            }\r\n            clip.next = clip.prev = clip.animation = null;\r\n        };\r\n        Animation.prototype.removeAnimator = function (animator) {\r\n            var clip = animator.getClip();\r\n            if (clip) {\r\n                this.removeClip(clip);\r\n            }\r\n            animator.animation = null;\r\n        };\r\n        Animation.prototype.update = function (notTriggerFrameAndStageUpdate) {\r\n            var time = new Date().getTime() - this._pausedTime;\r\n            var delta = time - this._time;\r\n            var clip = this._clipsHead;\r\n            while (clip) {\r\n                var nextClip = clip.next;\r\n                var finished = clip.step(time, delta);\r\n                if (finished) {\r\n                    clip.ondestroy && clip.ondestroy();\r\n                    this.removeClip(clip);\r\n                    clip = nextClip;\r\n                }\r\n                else {\r\n                    clip = nextClip;\r\n                }\r\n            }\r\n            this._time = time;\r\n            if (!notTriggerFrameAndStageUpdate) {\r\n                this.onframe(delta);\r\n                this.trigger('frame', delta);\r\n                this.stage.update && this.stage.update();\r\n            }\r\n        };\r\n        Animation.prototype._startLoop = function () {\r\n            var self = this;\r\n            this._running = true;\r\n            function step() {\r\n                if (self._running) {\r\n                    requestAnimationFrame$1(step);\r\n                    !self._paused && self.update();\r\n                }\r\n            }\r\n            requestAnimationFrame$1(step);\r\n        };\r\n        Animation.prototype.start = function () {\r\n            if (this._running) {\r\n                return;\r\n            }\r\n            this._time = new Date().getTime();\r\n            this._pausedTime = 0;\r\n            this._startLoop();\r\n        };\r\n        Animation.prototype.stop = function () {\r\n            this._running = false;\r\n        };\r\n        Animation.prototype.pause = function () {\r\n            if (!this._paused) {\r\n                this._pauseStart = new Date().getTime();\r\n                this._paused = true;\r\n            }\r\n        };\r\n        Animation.prototype.resume = function () {\r\n            if (this._paused) {\r\n                this._pausedTime += (new Date().getTime()) - this._pauseStart;\r\n                this._paused = false;\r\n            }\r\n        };\r\n        Animation.prototype.clear = function () {\r\n            var clip = this._clipsHead;\r\n            while (clip) {\r\n                var nextClip = clip.next;\r\n                clip.prev = clip.next = clip.animation = null;\r\n                clip = nextClip;\r\n            }\r\n            this._clipsHead = this._clipsTail = null;\r\n        };\r\n        Animation.prototype.isFinished = function () {\r\n            return this._clipsHead == null;\r\n        };\r\n        Animation.prototype.animate = function (target, options) {\r\n            options = options || {};\r\n            this.start();\r\n            var animator = new Animator(target, options.loop);\r\n            this.addAnimator(animator);\r\n            return animator;\r\n        };\r\n        return Animation;\r\n    }(Eventful));\n\n    var TOUCH_CLICK_DELAY = 300;\r\n    var globalEventSupported = env.domSupported;\r\n    var localNativeListenerNames = (function () {\r\n        var mouseHandlerNames = [\r\n            'click', 'dblclick', 'mousewheel', 'wheel', 'mouseout',\r\n            'mouseup', 'mousedown', 'mousemove', 'contextmenu'\r\n        ];\r\n        var touchHandlerNames = [\r\n            'touchstart', 'touchend', 'touchmove'\r\n        ];\r\n        var pointerEventNameMap = {\r\n            pointerdown: 1, pointerup: 1, pointermove: 1, pointerout: 1\r\n        };\r\n        var pointerHandlerNames = map(mouseHandlerNames, function (name) {\r\n            var nm = name.replace('mouse', 'pointer');\r\n            return pointerEventNameMap.hasOwnProperty(nm) ? nm : name;\r\n        });\r\n        return {\r\n            mouse: mouseHandlerNames,\r\n            touch: touchHandlerNames,\r\n            pointer: pointerHandlerNames\r\n        };\r\n    })();\r\n    var globalNativeListenerNames = {\r\n        mouse: ['mousemove', 'mouseup'],\r\n        pointer: ['pointermove', 'pointerup']\r\n    };\r\n    var wheelEventSupported = false;\r\n    function isPointerFromTouch(event) {\r\n        var pointerType = event.pointerType;\r\n        return pointerType === 'pen' || pointerType === 'touch';\r\n    }\r\n    function setTouchTimer(scope) {\r\n        scope.touching = true;\r\n        if (scope.touchTimer != null) {\r\n            clearTimeout(scope.touchTimer);\r\n            scope.touchTimer = null;\r\n        }\r\n        scope.touchTimer = setTimeout(function () {\r\n            scope.touching = false;\r\n            scope.touchTimer = null;\r\n        }, 700);\r\n    }\r\n    function markTouch(event) {\r\n        event && (event.zrByTouch = true);\r\n    }\r\n    function normalizeGlobalEvent(instance, event) {\r\n        return normalizeEvent(instance.dom, new FakeGlobalEvent(instance, event), true);\r\n    }\r\n    function isLocalEl(instance, el) {\r\n        var elTmp = el;\r\n        var isLocal = false;\r\n        while (elTmp && elTmp.nodeType !== 9\r\n            && !(isLocal = elTmp.domBelongToZr\r\n                || (elTmp !== el && elTmp === instance.painterRoot))) {\r\n            elTmp = elTmp.parentNode;\r\n        }\r\n        return isLocal;\r\n    }\r\n    var FakeGlobalEvent = (function () {\r\n        function FakeGlobalEvent(instance, event) {\r\n            this.stopPropagation = noop;\r\n            this.stopImmediatePropagation = noop;\r\n            this.preventDefault = noop;\r\n            this.type = event.type;\r\n            this.target = this.currentTarget = instance.dom;\r\n            this.pointerType = event.pointerType;\r\n            this.clientX = event.clientX;\r\n            this.clientY = event.clientY;\r\n        }\r\n        return FakeGlobalEvent;\r\n    }());\r\n    var localDOMHandlers = {\r\n        mousedown: function (event) {\r\n            event = normalizeEvent(this.dom, event);\r\n            this.__mayPointerCapture = [event.zrX, event.zrY];\r\n            this.trigger('mousedown', event);\r\n        },\r\n        mousemove: function (event) {\r\n            event = normalizeEvent(this.dom, event);\r\n            var downPoint = this.__mayPointerCapture;\r\n            if (downPoint && (event.zrX !== downPoint[0] || event.zrY !== downPoint[1])) {\r\n                this.__togglePointerCapture(true);\r\n            }\r\n            this.trigger('mousemove', event);\r\n        },\r\n        mouseup: function (event) {\r\n            event = normalizeEvent(this.dom, event);\r\n            this.__togglePointerCapture(false);\r\n            this.trigger('mouseup', event);\r\n        },\r\n        mouseout: function (event) {\r\n            if (event.target !== this.dom) {\r\n                return;\r\n            }\r\n            event = normalizeEvent(this.dom, event);\r\n            if (this.__pointerCapturing) {\r\n                event.zrEventControl = 'no_globalout';\r\n            }\r\n            var element = event.toElement || event.relatedTarget;\r\n            event.zrIsToLocalDOM = isLocalEl(this, element);\r\n            this.trigger('mouseout', event);\r\n        },\r\n        wheel: function (event) {\r\n            wheelEventSupported = true;\r\n            event = normalizeEvent(this.dom, event);\r\n            this.trigger('mousewheel', event);\r\n        },\r\n        mousewheel: function (event) {\r\n            if (wheelEventSupported) {\r\n                return;\r\n            }\r\n            event = normalizeEvent(this.dom, event);\r\n            this.trigger('mousewheel', event);\r\n        },\r\n        touchstart: function (event) {\r\n            event = normalizeEvent(this.dom, event);\r\n            markTouch(event);\r\n            this.__lastTouchMoment = new Date();\r\n            this.handler.processGesture(event, 'start');\r\n            localDOMHandlers.mousemove.call(this, event);\r\n            localDOMHandlers.mousedown.call(this, event);\r\n        },\r\n        touchmove: function (event) {\r\n            event = normalizeEvent(this.dom, event);\r\n            markTouch(event);\r\n            this.handler.processGesture(event, 'change');\r\n            localDOMHandlers.mousemove.call(this, event);\r\n        },\r\n        touchend: function (event) {\r\n            event = normalizeEvent(this.dom, event);\r\n            markTouch(event);\r\n            this.handler.processGesture(event, 'end');\r\n            localDOMHandlers.mouseup.call(this, event);\r\n            if (+new Date() - (+this.__lastTouchMoment) < TOUCH_CLICK_DELAY) {\r\n                localDOMHandlers.click.call(this, event);\r\n            }\r\n        },\r\n        pointerdown: function (event) {\r\n            localDOMHandlers.mousedown.call(this, event);\r\n        },\r\n        pointermove: function (event) {\r\n            if (!isPointerFromTouch(event)) {\r\n                localDOMHandlers.mousemove.call(this, event);\r\n            }\r\n        },\r\n        pointerup: function (event) {\r\n            localDOMHandlers.mouseup.call(this, event);\r\n        },\r\n        pointerout: function (event) {\r\n            if (!isPointerFromTouch(event)) {\r\n                localDOMHandlers.mouseout.call(this, event);\r\n            }\r\n        }\r\n    };\r\n    each(['click', 'dblclick', 'contextmenu'], function (name) {\r\n        localDOMHandlers[name] = function (event) {\r\n            event = normalizeEvent(this.dom, event);\r\n            this.trigger(name, event);\r\n        };\r\n    });\r\n    var globalDOMHandlers = {\r\n        pointermove: function (event) {\r\n            if (!isPointerFromTouch(event)) {\r\n                globalDOMHandlers.mousemove.call(this, event);\r\n            }\r\n        },\r\n        pointerup: function (event) {\r\n            globalDOMHandlers.mouseup.call(this, event);\r\n        },\r\n        mousemove: function (event) {\r\n            this.trigger('mousemove', event);\r\n        },\r\n        mouseup: function (event) {\r\n            var pointerCaptureReleasing = this.__pointerCapturing;\r\n            this.__togglePointerCapture(false);\r\n            this.trigger('mouseup', event);\r\n            if (pointerCaptureReleasing) {\r\n                event.zrEventControl = 'only_globalout';\r\n                this.trigger('mouseout', event);\r\n            }\r\n        }\r\n    };\r\n    function mountLocalDOMEventListeners(instance, scope) {\r\n        var domHandlers = scope.domHandlers;\r\n        if (env.pointerEventsSupported) {\r\n            each(localNativeListenerNames.pointer, function (nativeEventName) {\r\n                mountSingleDOMEventListener(scope, nativeEventName, function (event) {\r\n                    domHandlers[nativeEventName].call(instance, event);\r\n                });\r\n            });\r\n        }\r\n        else {\r\n            if (env.touchEventsSupported) {\r\n                each(localNativeListenerNames.touch, function (nativeEventName) {\r\n                    mountSingleDOMEventListener(scope, nativeEventName, function (event) {\r\n                        domHandlers[nativeEventName].call(instance, event);\r\n                        setTouchTimer(scope);\r\n                    });\r\n                });\r\n            }\r\n            each(localNativeListenerNames.mouse, function (nativeEventName) {\r\n                mountSingleDOMEventListener(scope, nativeEventName, function (event) {\r\n                    event = getNativeEvent(event);\r\n                    if (!scope.touching) {\r\n                        domHandlers[nativeEventName].call(instance, event);\r\n                    }\r\n                });\r\n            });\r\n        }\r\n    }\r\n    function mountGlobalDOMEventListeners(instance, scope) {\r\n        if (env.pointerEventsSupported) {\r\n            each(globalNativeListenerNames.pointer, mount);\r\n        }\r\n        else if (!env.touchEventsSupported) {\r\n            each(globalNativeListenerNames.mouse, mount);\r\n        }\r\n        function mount(nativeEventName) {\r\n            function nativeEventListener(event) {\r\n                event = getNativeEvent(event);\r\n                if (!isLocalEl(instance, event.target)) {\r\n                    event = normalizeGlobalEvent(instance, event);\r\n                    scope.domHandlers[nativeEventName].call(instance, event);\r\n                }\r\n            }\r\n            mountSingleDOMEventListener(scope, nativeEventName, nativeEventListener, { capture: true });\r\n        }\r\n    }\r\n    function mountSingleDOMEventListener(scope, nativeEventName, listener, opt) {\r\n        scope.mounted[nativeEventName] = listener;\r\n        scope.listenerOpts[nativeEventName] = opt;\r\n        addEventListener(scope.domTarget, nativeEventName, listener, opt);\r\n    }\r\n    function unmountDOMEventListeners(scope) {\r\n        var mounted = scope.mounted;\r\n        for (var nativeEventName in mounted) {\r\n            if (mounted.hasOwnProperty(nativeEventName)) {\r\n                removeEventListener(scope.domTarget, nativeEventName, mounted[nativeEventName], scope.listenerOpts[nativeEventName]);\r\n            }\r\n        }\r\n        scope.mounted = {};\r\n    }\r\n    var DOMHandlerScope = (function () {\r\n        function DOMHandlerScope(domTarget, domHandlers) {\r\n            this.mounted = {};\r\n            this.listenerOpts = {};\r\n            this.touching = false;\r\n            this.domTarget = domTarget;\r\n            this.domHandlers = domHandlers;\r\n        }\r\n        return DOMHandlerScope;\r\n    }());\r\n    var HandlerDomProxy = (function (_super) {\r\n        __extends(HandlerDomProxy, _super);\r\n        function HandlerDomProxy(dom, painterRoot) {\r\n            var _this = _super.call(this) || this;\r\n            _this.__pointerCapturing = false;\r\n            _this.dom = dom;\r\n            _this.painterRoot = painterRoot;\r\n            _this._localHandlerScope = new DOMHandlerScope(dom, localDOMHandlers);\r\n            if (globalEventSupported) {\r\n                _this._globalHandlerScope = new DOMHandlerScope(document, globalDOMHandlers);\r\n            }\r\n            mountLocalDOMEventListeners(_this, _this._localHandlerScope);\r\n            return _this;\r\n        }\r\n        HandlerDomProxy.prototype.dispose = function () {\r\n            unmountDOMEventListeners(this._localHandlerScope);\r\n            if (globalEventSupported) {\r\n                unmountDOMEventListeners(this._globalHandlerScope);\r\n            }\r\n        };\r\n        HandlerDomProxy.prototype.setCursor = function (cursorStyle) {\r\n            this.dom.style && (this.dom.style.cursor = cursorStyle || 'default');\r\n        };\r\n        HandlerDomProxy.prototype.__togglePointerCapture = function (isPointerCapturing) {\r\n            this.__mayPointerCapture = null;\r\n            if (globalEventSupported\r\n                && ((+this.__pointerCapturing) ^ (+isPointerCapturing))) {\r\n                this.__pointerCapturing = isPointerCapturing;\r\n                var globalHandlerScope = this._globalHandlerScope;\r\n                isPointerCapturing\r\n                    ? mountGlobalDOMEventListeners(this, globalHandlerScope)\r\n                    : unmountDOMEventListeners(globalHandlerScope);\r\n            }\r\n        };\r\n        return HandlerDomProxy;\r\n    }(Eventful));\n\n    var STYLE_MAGIC_KEY = '__zr_style_' + Math.round((Math.random() * 10));\r\n    var DEFAULT_COMMON_STYLE = {\r\n        shadowBlur: 0,\r\n        shadowOffsetX: 0,\r\n        shadowOffsetY: 0,\r\n        shadowColor: '#000',\r\n        opacity: 1,\r\n        blend: 'source-over'\r\n    };\r\n    var DEFAULT_COMMON_ANIMATION_PROPS = {\r\n        style: {\r\n            shadowBlur: true,\r\n            shadowOffsetX: true,\r\n            shadowOffsetY: true,\r\n            shadowColor: true,\r\n            opacity: true\r\n        }\r\n    };\r\n    DEFAULT_COMMON_STYLE[STYLE_MAGIC_KEY] = true;\r\n    var PRIMARY_STATES_KEYS$1 = ['z', 'z2', 'invisible'];\r\n    var Displayable = (function (_super) {\r\n        __extends(Displayable, _super);\r\n        function Displayable(props) {\r\n            return _super.call(this, props) || this;\r\n        }\r\n        Displayable.prototype._init = function (props) {\r\n            var keysArr = keys(props);\r\n            for (var i = 0; i < keysArr.length; i++) {\r\n                var key = keysArr[i];\r\n                if (key === 'style') {\r\n                    this.useStyle(props[key]);\r\n                }\r\n                else {\r\n                    _super.prototype.attrKV.call(this, key, props[key]);\r\n                }\r\n            }\r\n            if (!this.style) {\r\n                this.useStyle({});\r\n            }\r\n        };\r\n        Displayable.prototype.beforeBrush = function () { };\r\n        Displayable.prototype.afterBrush = function () { };\r\n        Displayable.prototype.innerBeforeBrush = function () { };\r\n        Displayable.prototype.innerAfterBrush = function () { };\r\n        Displayable.prototype.shouldBePainted = function (viewWidth, viewHeight, considerClipPath, considerAncestors) {\r\n            var m = this.transform;\r\n            if (this.ignore\r\n                || this.invisible\r\n                || this.style.opacity === 0\r\n                || (this.culling\r\n                    && isDisplayableCulled(this, viewWidth, viewHeight))\r\n                || (m && !m[0] && !m[3])) {\r\n                return false;\r\n            }\r\n            if (considerClipPath && this.__clipPaths) {\r\n                for (var i = 0; i < this.__clipPaths.length; ++i) {\r\n                    if (this.__clipPaths[i].isZeroArea()) {\r\n                        return false;\r\n                    }\r\n                }\r\n            }\r\n            if (considerAncestors && this.parent) {\r\n                var parent_1 = this.parent;\r\n                while (parent_1) {\r\n                    if (parent_1.ignore) {\r\n                        return false;\r\n                    }\r\n                    parent_1 = parent_1.parent;\r\n                }\r\n            }\r\n            return true;\r\n        };\r\n        Displayable.prototype.contain = function (x, y) {\r\n            return this.rectContain(x, y);\r\n        };\r\n        Displayable.prototype.traverse = function (cb, context) {\r\n            cb.call(context, this);\r\n        };\r\n        Displayable.prototype.rectContain = function (x, y) {\r\n            var coord = this.transformCoordToLocal(x, y);\r\n            var rect = this.getBoundingRect();\r\n            return rect.contain(coord[0], coord[1]);\r\n        };\r\n        Displayable.prototype.getPaintRect = function () {\r\n            var rect = this._paintRect;\r\n            if (!this._paintRect || this.__dirty) {\r\n                var transform = this.transform;\r\n                var elRect = this.getBoundingRect();\r\n                var style = this.style;\r\n                var shadowSize = style.shadowBlur || 0;\r\n                var shadowOffsetX = style.shadowOffsetX || 0;\r\n                var shadowOffsetY = style.shadowOffsetY || 0;\r\n                rect = this._paintRect || (this._paintRect = new BoundingRect(0, 0, 0, 0));\r\n                if (transform) {\r\n                    BoundingRect.applyTransform(rect, elRect, transform);\r\n                }\r\n                else {\r\n                    rect.copy(elRect);\r\n                }\r\n                if (shadowSize || shadowOffsetX || shadowOffsetY) {\r\n                    rect.width += shadowSize * 2 + Math.abs(shadowOffsetX);\r\n                    rect.height += shadowSize * 2 + Math.abs(shadowOffsetY);\r\n                    rect.x = Math.min(rect.x, rect.x + shadowOffsetX - shadowSize);\r\n                    rect.y = Math.min(rect.y, rect.y + shadowOffsetY - shadowSize);\r\n                }\r\n                var tolerance = this.dirtyRectTolerance;\r\n                if (!rect.isZero()) {\r\n                    rect.x = Math.floor(rect.x - tolerance);\r\n                    rect.y = Math.floor(rect.y - tolerance);\r\n                    rect.width = Math.ceil(rect.width + 1 + tolerance * 2);\r\n                    rect.height = Math.ceil(rect.height + 1 + tolerance * 2);\r\n                }\r\n            }\r\n            return rect;\r\n        };\r\n        Displayable.prototype.setPrevPaintRect = function (paintRect) {\r\n            if (paintRect) {\r\n                this._prevPaintRect = this._prevPaintRect || new BoundingRect(0, 0, 0, 0);\r\n                this._prevPaintRect.copy(paintRect);\r\n            }\r\n            else {\r\n                this._prevPaintRect = null;\r\n            }\r\n        };\r\n        Displayable.prototype.getPrevPaintRect = function () {\r\n            return this._prevPaintRect;\r\n        };\r\n        Displayable.prototype.animateStyle = function (loop) {\r\n            return this.animate('style', loop);\r\n        };\r\n        Displayable.prototype.updateDuringAnimation = function (targetKey) {\r\n            if (targetKey === 'style') {\r\n                this.dirtyStyle();\r\n            }\r\n            else {\r\n                this.markRedraw();\r\n            }\r\n        };\r\n        Displayable.prototype.attrKV = function (key, value) {\r\n            if (key !== 'style') {\r\n                _super.prototype.attrKV.call(this, key, value);\r\n            }\r\n            else {\r\n                if (!this.style) {\r\n                    this.useStyle(value);\r\n                }\r\n                else {\r\n                    this.setStyle(value);\r\n                }\r\n            }\r\n        };\r\n        Displayable.prototype.setStyle = function (keyOrObj, value) {\r\n            if (typeof keyOrObj === 'string') {\r\n                this.style[keyOrObj] = value;\r\n            }\r\n            else {\r\n                extend(this.style, keyOrObj);\r\n            }\r\n            this.dirtyStyle();\r\n            return this;\r\n        };\r\n        Displayable.prototype.dirtyStyle = function () {\r\n            this.markRedraw();\r\n            this.__dirty |= Displayable.STYLE_CHANGED_BIT;\r\n            if (this._rect) {\r\n                this._rect = null;\r\n            }\r\n        };\r\n        Displayable.prototype.dirty = function () {\r\n            this.dirtyStyle();\r\n        };\r\n        Displayable.prototype.styleChanged = function () {\r\n            return !!(this.__dirty & Displayable.STYLE_CHANGED_BIT);\r\n        };\r\n        Displayable.prototype.styleUpdated = function () {\r\n            this.__dirty &= ~Displayable.STYLE_CHANGED_BIT;\r\n        };\r\n        Displayable.prototype.createStyle = function (obj) {\r\n            return createObject(DEFAULT_COMMON_STYLE, obj);\r\n        };\r\n        Displayable.prototype.useStyle = function (obj) {\r\n            if (!obj[STYLE_MAGIC_KEY]) {\r\n                obj = this.createStyle(obj);\r\n            }\r\n            if (this.__inHover) {\r\n                this.__hoverStyle = obj;\r\n            }\r\n            else {\r\n                this.style = obj;\r\n            }\r\n            this.dirtyStyle();\r\n        };\r\n        Displayable.prototype.isStyleObject = function (obj) {\r\n            return obj[STYLE_MAGIC_KEY];\r\n        };\r\n        Displayable.prototype._innerSaveToNormal = function (toState) {\r\n            _super.prototype._innerSaveToNormal.call(this, toState);\r\n            var normalState = this._normalState;\r\n            if (toState.style && !normalState.style) {\r\n                normalState.style = this._mergeStyle(this.createStyle(), this.style);\r\n            }\r\n            this._savePrimaryToNormal(toState, normalState, PRIMARY_STATES_KEYS$1);\r\n        };\r\n        Displayable.prototype._applyStateObj = function (stateName, state, normalState, keepCurrentStates, transition, animationCfg) {\r\n            _super.prototype._applyStateObj.call(this, stateName, state, normalState, keepCurrentStates, transition, animationCfg);\r\n            var needsRestoreToNormal = !(state && keepCurrentStates);\r\n            var targetStyle;\r\n            if (state && state.style) {\r\n                if (transition) {\r\n                    if (keepCurrentStates) {\r\n                        targetStyle = state.style;\r\n                    }\r\n                    else {\r\n                        targetStyle = this._mergeStyle(this.createStyle(), normalState.style);\r\n                        this._mergeStyle(targetStyle, state.style);\r\n                    }\r\n                }\r\n                else {\r\n                    targetStyle = this._mergeStyle(this.createStyle(), keepCurrentStates ? this.style : normalState.style);\r\n                    this._mergeStyle(targetStyle, state.style);\r\n                }\r\n            }\r\n            else if (needsRestoreToNormal) {\r\n                targetStyle = normalState.style;\r\n            }\r\n            if (targetStyle) {\r\n                if (transition) {\r\n                    var sourceStyle = this.style;\r\n                    this.style = this.createStyle(needsRestoreToNormal ? {} : sourceStyle);\r\n                    if (needsRestoreToNormal) {\r\n                        var changedKeys = keys(sourceStyle);\r\n                        for (var i = 0; i < changedKeys.length; i++) {\r\n                            var key = changedKeys[i];\r\n                            if (key in targetStyle) {\r\n                                targetStyle[key] = targetStyle[key];\r\n                                this.style[key] = sourceStyle[key];\r\n                            }\r\n                        }\r\n                    }\r\n                    var targetKeys = keys(targetStyle);\r\n                    for (var i = 0; i < targetKeys.length; i++) {\r\n                        var key = targetKeys[i];\r\n                        this.style[key] = this.style[key];\r\n                    }\r\n                    this._transitionState(stateName, {\r\n                        style: targetStyle\r\n                    }, animationCfg, this.getAnimationStyleProps());\r\n                }\r\n                else {\r\n                    this.useStyle(targetStyle);\r\n                }\r\n            }\r\n            for (var i = 0; i < PRIMARY_STATES_KEYS$1.length; i++) {\r\n                var key = PRIMARY_STATES_KEYS$1[i];\r\n                if (state && state[key] != null) {\r\n                    this[key] = state[key];\r\n                }\r\n                else if (needsRestoreToNormal) {\r\n                    if (normalState[key] != null) {\r\n                        this[key] = normalState[key];\r\n                    }\r\n                }\r\n            }\r\n        };\r\n        Displayable.prototype._mergeStates = function (states) {\r\n            var mergedState = _super.prototype._mergeStates.call(this, states);\r\n            var mergedStyle;\r\n            for (var i = 0; i < states.length; i++) {\r\n                var state = states[i];\r\n                if (state.style) {\r\n                    mergedStyle = mergedStyle || {};\r\n                    this._mergeStyle(mergedStyle, state.style);\r\n                }\r\n            }\r\n            if (mergedStyle) {\r\n                mergedState.style = mergedStyle;\r\n            }\r\n            return mergedState;\r\n        };\r\n        Displayable.prototype._mergeStyle = function (targetStyle, sourceStyle) {\r\n            extend(targetStyle, sourceStyle);\r\n            return targetStyle;\r\n        };\r\n        Displayable.prototype.getAnimationStyleProps = function () {\r\n            return DEFAULT_COMMON_ANIMATION_PROPS;\r\n        };\r\n        Displayable.STYLE_CHANGED_BIT = 2;\r\n        Displayable.initDefaultProps = (function () {\r\n            var dispProto = Displayable.prototype;\r\n            dispProto.type = 'displayable';\r\n            dispProto.invisible = false;\r\n            dispProto.z = 0;\r\n            dispProto.z2 = 0;\r\n            dispProto.zlevel = 0;\r\n            dispProto.culling = false;\r\n            dispProto.cursor = 'pointer';\r\n            dispProto.rectHover = false;\r\n            dispProto.incremental = false;\r\n            dispProto._rect = null;\r\n            dispProto.dirtyRectTolerance = 0;\r\n            dispProto.__dirty = Element.REDARAW_BIT | Displayable.STYLE_CHANGED_BIT;\r\n        })();\r\n        return Displayable;\r\n    }(Element));\r\n    var tmpRect = new BoundingRect(0, 0, 0, 0);\r\n    var viewRect = new BoundingRect(0, 0, 0, 0);\r\n    function isDisplayableCulled(el, width, height) {\r\n        tmpRect.copy(el.getBoundingRect());\r\n        if (el.transform) {\r\n            tmpRect.applyTransform(el.transform);\r\n        }\r\n        viewRect.width = width;\r\n        viewRect.height = height;\r\n        return !tmpRect.intersect(viewRect);\r\n    }\n\n    var mathPow = Math.pow;\r\n    var mathSqrt = Math.sqrt;\r\n    var EPSILON$1 = 1e-8;\r\n    var EPSILON_NUMERIC = 1e-4;\r\n    var THREE_SQRT = mathSqrt(3);\r\n    var ONE_THIRD = 1 / 3;\r\n    var _v0 = create();\r\n    var _v1 = create();\r\n    var _v2 = create();\r\n    function isAroundZero(val) {\r\n        return val > -EPSILON$1 && val < EPSILON$1;\r\n    }\r\n    function isNotAroundZero$1(val) {\r\n        return val > EPSILON$1 || val < -EPSILON$1;\r\n    }\r\n    function cubicAt(p0, p1, p2, p3, t) {\r\n        var onet = 1 - t;\r\n        return onet * onet * (onet * p0 + 3 * t * p1)\r\n            + t * t * (t * p3 + 3 * onet * p2);\r\n    }\r\n    function cubicDerivativeAt(p0, p1, p2, p3, t) {\r\n        var onet = 1 - t;\r\n        return 3 * (((p1 - p0) * onet + 2 * (p2 - p1) * t) * onet\r\n            + (p3 - p2) * t * t);\r\n    }\r\n    function cubicRootAt(p0, p1, p2, p3, val, roots) {\r\n        var a = p3 + 3 * (p1 - p2) - p0;\r\n        var b = 3 * (p2 - p1 * 2 + p0);\r\n        var c = 3 * (p1 - p0);\r\n        var d = p0 - val;\r\n        var A = b * b - 3 * a * c;\r\n        var B = b * c - 9 * a * d;\r\n        var C = c * c - 3 * b * d;\r\n        var n = 0;\r\n        if (isAroundZero(A) && isAroundZero(B)) {\r\n            if (isAroundZero(b)) {\r\n                roots[0] = 0;\r\n            }\r\n            else {\r\n                var t1 = -c / b;\r\n                if (t1 >= 0 && t1 <= 1) {\r\n                    roots[n++] = t1;\r\n                }\r\n            }\r\n        }\r\n        else {\r\n            var disc = B * B - 4 * A * C;\r\n            if (isAroundZero(disc)) {\r\n                var K = B / A;\r\n                var t1 = -b / a + K;\r\n                var t2 = -K / 2;\r\n                if (t1 >= 0 && t1 <= 1) {\r\n                    roots[n++] = t1;\r\n                }\r\n                if (t2 >= 0 && t2 <= 1) {\r\n                    roots[n++] = t2;\r\n                }\r\n            }\r\n            else if (disc > 0) {\r\n                var discSqrt = mathSqrt(disc);\r\n                var Y1 = A * b + 1.5 * a * (-B + discSqrt);\r\n                var Y2 = A * b + 1.5 * a * (-B - discSqrt);\r\n                if (Y1 < 0) {\r\n                    Y1 = -mathPow(-Y1, ONE_THIRD);\r\n                }\r\n                else {\r\n                    Y1 = mathPow(Y1, ONE_THIRD);\r\n                }\r\n                if (Y2 < 0) {\r\n                    Y2 = -mathPow(-Y2, ONE_THIRD);\r\n                }\r\n                else {\r\n                    Y2 = mathPow(Y2, ONE_THIRD);\r\n                }\r\n                var t1 = (-b - (Y1 + Y2)) / (3 * a);\r\n                if (t1 >= 0 && t1 <= 1) {\r\n                    roots[n++] = t1;\r\n                }\r\n            }\r\n            else {\r\n                var T = (2 * A * b - 3 * a * B) / (2 * mathSqrt(A * A * A));\r\n                var theta = Math.acos(T) / 3;\r\n                var ASqrt = mathSqrt(A);\r\n                var tmp = Math.cos(theta);\r\n                var t1 = (-b - 2 * ASqrt * tmp) / (3 * a);\r\n                var t2 = (-b + ASqrt * (tmp + THREE_SQRT * Math.sin(theta))) / (3 * a);\r\n                var t3 = (-b + ASqrt * (tmp - THREE_SQRT * Math.sin(theta))) / (3 * a);\r\n                if (t1 >= 0 && t1 <= 1) {\r\n                    roots[n++] = t1;\r\n                }\r\n                if (t2 >= 0 && t2 <= 1) {\r\n                    roots[n++] = t2;\r\n                }\r\n                if (t3 >= 0 && t3 <= 1) {\r\n                    roots[n++] = t3;\r\n                }\r\n            }\r\n        }\r\n        return n;\r\n    }\r\n    function cubicExtrema(p0, p1, p2, p3, extrema) {\r\n        var b = 6 * p2 - 12 * p1 + 6 * p0;\r\n        var a = 9 * p1 + 3 * p3 - 3 * p0 - 9 * p2;\r\n        var c = 3 * p1 - 3 * p0;\r\n        var n = 0;\r\n        if (isAroundZero(a)) {\r\n            if (isNotAroundZero$1(b)) {\r\n                var t1 = -c / b;\r\n                if (t1 >= 0 && t1 <= 1) {\r\n                    extrema[n++] = t1;\r\n                }\r\n            }\r\n        }\r\n        else {\r\n            var disc = b * b - 4 * a * c;\r\n            if (isAroundZero(disc)) {\r\n                extrema[0] = -b / (2 * a);\r\n            }\r\n            else if (disc > 0) {\r\n                var discSqrt = mathSqrt(disc);\r\n                var t1 = (-b + discSqrt) / (2 * a);\r\n                var t2 = (-b - discSqrt) / (2 * a);\r\n                if (t1 >= 0 && t1 <= 1) {\r\n                    extrema[n++] = t1;\r\n                }\r\n                if (t2 >= 0 && t2 <= 1) {\r\n                    extrema[n++] = t2;\r\n                }\r\n            }\r\n        }\r\n        return n;\r\n    }\r\n    function cubicSubdivide(p0, p1, p2, p3, t, out) {\r\n        var p01 = (p1 - p0) * t + p0;\r\n        var p12 = (p2 - p1) * t + p1;\r\n        var p23 = (p3 - p2) * t + p2;\r\n        var p012 = (p12 - p01) * t + p01;\r\n        var p123 = (p23 - p12) * t + p12;\r\n        var p0123 = (p123 - p012) * t + p012;\r\n        out[0] = p0;\r\n        out[1] = p01;\r\n        out[2] = p012;\r\n        out[3] = p0123;\r\n        out[4] = p0123;\r\n        out[5] = p123;\r\n        out[6] = p23;\r\n        out[7] = p3;\r\n    }\r\n    function cubicProjectPoint(x0, y0, x1, y1, x2, y2, x3, y3, x, y, out) {\r\n        var t;\r\n        var interval = 0.005;\r\n        var d = Infinity;\r\n        var prev;\r\n        var next;\r\n        var d1;\r\n        var d2;\r\n        _v0[0] = x;\r\n        _v0[1] = y;\r\n        for (var _t = 0; _t < 1; _t += 0.05) {\r\n            _v1[0] = cubicAt(x0, x1, x2, x3, _t);\r\n            _v1[1] = cubicAt(y0, y1, y2, y3, _t);\r\n            d1 = distSquare(_v0, _v1);\r\n            if (d1 < d) {\r\n                t = _t;\r\n                d = d1;\r\n            }\r\n        }\r\n        d = Infinity;\r\n        for (var i = 0; i < 32; i++) {\r\n            if (interval < EPSILON_NUMERIC) {\r\n                break;\r\n            }\r\n            prev = t - interval;\r\n            next = t + interval;\r\n            _v1[0] = cubicAt(x0, x1, x2, x3, prev);\r\n            _v1[1] = cubicAt(y0, y1, y2, y3, prev);\r\n            d1 = distSquare(_v1, _v0);\r\n            if (prev >= 0 && d1 < d) {\r\n                t = prev;\r\n                d = d1;\r\n            }\r\n            else {\r\n                _v2[0] = cubicAt(x0, x1, x2, x3, next);\r\n                _v2[1] = cubicAt(y0, y1, y2, y3, next);\r\n                d2 = distSquare(_v2, _v0);\r\n                if (next <= 1 && d2 < d) {\r\n                    t = next;\r\n                    d = d2;\r\n                }\r\n                else {\r\n                    interval *= 0.5;\r\n                }\r\n            }\r\n        }\r\n        if (out) {\r\n            out[0] = cubicAt(x0, x1, x2, x3, t);\r\n            out[1] = cubicAt(y0, y1, y2, y3, t);\r\n        }\r\n        return mathSqrt(d);\r\n    }\r\n    function cubicLength(x0, y0, x1, y1, x2, y2, x3, y3, iteration) {\r\n        var px = x0;\r\n        var py = y0;\r\n        var d = 0;\r\n        var step = 1 / iteration;\r\n        for (var i = 1; i <= iteration; i++) {\r\n            var t = i * step;\r\n            var x = cubicAt(x0, x1, x2, x3, t);\r\n            var y = cubicAt(y0, y1, y2, y3, t);\r\n            var dx = x - px;\r\n            var dy = y - py;\r\n            d += Math.sqrt(dx * dx + dy * dy);\r\n            px = x;\r\n            py = y;\r\n        }\r\n        return d;\r\n    }\r\n    function quadraticAt(p0, p1, p2, t) {\r\n        var onet = 1 - t;\r\n        return onet * (onet * p0 + 2 * t * p1) + t * t * p2;\r\n    }\r\n    function quadraticDerivativeAt(p0, p1, p2, t) {\r\n        return 2 * ((1 - t) * (p1 - p0) + t * (p2 - p1));\r\n    }\r\n    function quadraticRootAt(p0, p1, p2, val, roots) {\r\n        var a = p0 - 2 * p1 + p2;\r\n        var b = 2 * (p1 - p0);\r\n        var c = p0 - val;\r\n        var n = 0;\r\n        if (isAroundZero(a)) {\r\n            if (isNotAroundZero$1(b)) {\r\n                var t1 = -c / b;\r\n                if (t1 >= 0 && t1 <= 1) {\r\n                    roots[n++] = t1;\r\n                }\r\n            }\r\n        }\r\n        else {\r\n            var disc = b * b - 4 * a * c;\r\n            if (isAroundZero(disc)) {\r\n                var t1 = -b / (2 * a);\r\n                if (t1 >= 0 && t1 <= 1) {\r\n                    roots[n++] = t1;\r\n                }\r\n            }\r\n            else if (disc > 0) {\r\n                var discSqrt = mathSqrt(disc);\r\n                var t1 = (-b + discSqrt) / (2 * a);\r\n                var t2 = (-b - discSqrt) / (2 * a);\r\n                if (t1 >= 0 && t1 <= 1) {\r\n                    roots[n++] = t1;\r\n                }\r\n                if (t2 >= 0 && t2 <= 1) {\r\n                    roots[n++] = t2;\r\n                }\r\n            }\r\n        }\r\n        return n;\r\n    }\r\n    function quadraticExtremum(p0, p1, p2) {\r\n        var divider = p0 + p2 - 2 * p1;\r\n        if (divider === 0) {\r\n            return 0.5;\r\n        }\r\n        else {\r\n            return (p0 - p1) / divider;\r\n        }\r\n    }\r\n    function quadraticSubdivide(p0, p1, p2, t, out) {\r\n        var p01 = (p1 - p0) * t + p0;\r\n        var p12 = (p2 - p1) * t + p1;\r\n        var p012 = (p12 - p01) * t + p01;\r\n        out[0] = p0;\r\n        out[1] = p01;\r\n        out[2] = p012;\r\n        out[3] = p012;\r\n        out[4] = p12;\r\n        out[5] = p2;\r\n    }\r\n    function quadraticProjectPoint(x0, y0, x1, y1, x2, y2, x, y, out) {\r\n        var t;\r\n        var interval = 0.005;\r\n        var d = Infinity;\r\n        _v0[0] = x;\r\n        _v0[1] = y;\r\n        for (var _t = 0; _t < 1; _t += 0.05) {\r\n            _v1[0] = quadraticAt(x0, x1, x2, _t);\r\n            _v1[1] = quadraticAt(y0, y1, y2, _t);\r\n            var d1 = distSquare(_v0, _v1);\r\n            if (d1 < d) {\r\n                t = _t;\r\n                d = d1;\r\n            }\r\n        }\r\n        d = Infinity;\r\n        for (var i = 0; i < 32; i++) {\r\n            if (interval < EPSILON_NUMERIC) {\r\n                break;\r\n            }\r\n            var prev = t - interval;\r\n            var next = t + interval;\r\n            _v1[0] = quadraticAt(x0, x1, x2, prev);\r\n            _v1[1] = quadraticAt(y0, y1, y2, prev);\r\n            var d1 = distSquare(_v1, _v0);\r\n            if (prev >= 0 && d1 < d) {\r\n                t = prev;\r\n                d = d1;\r\n            }\r\n            else {\r\n                _v2[0] = quadraticAt(x0, x1, x2, next);\r\n                _v2[1] = quadraticAt(y0, y1, y2, next);\r\n                var d2 = distSquare(_v2, _v0);\r\n                if (next <= 1 && d2 < d) {\r\n                    t = next;\r\n                    d = d2;\r\n                }\r\n                else {\r\n                    interval *= 0.5;\r\n                }\r\n            }\r\n        }\r\n        if (out) {\r\n            out[0] = quadraticAt(x0, x1, x2, t);\r\n            out[1] = quadraticAt(y0, y1, y2, t);\r\n        }\r\n        return mathSqrt(d);\r\n    }\r\n    function quadraticLength(x0, y0, x1, y1, x2, y2, iteration) {\r\n        var px = x0;\r\n        var py = y0;\r\n        var d = 0;\r\n        var step = 1 / iteration;\r\n        for (var i = 1; i <= iteration; i++) {\r\n            var t = i * step;\r\n            var x = quadraticAt(x0, x1, x2, t);\r\n            var y = quadraticAt(y0, y1, y2, t);\r\n            var dx = x - px;\r\n            var dy = y - py;\r\n            d += Math.sqrt(dx * dx + dy * dy);\r\n            px = x;\r\n            py = y;\r\n        }\r\n        return d;\r\n    }\n\n    var mathMin$1 = Math.min;\r\n    var mathMax$1 = Math.max;\r\n    var mathSin = Math.sin;\r\n    var mathCos = Math.cos;\r\n    var PI2 = Math.PI * 2;\r\n    var start = create();\r\n    var end = create();\r\n    var extremity = create();\r\n    function fromLine(x0, y0, x1, y1, min, max) {\r\n        min[0] = mathMin$1(x0, x1);\r\n        min[1] = mathMin$1(y0, y1);\r\n        max[0] = mathMax$1(x0, x1);\r\n        max[1] = mathMax$1(y0, y1);\r\n    }\r\n    var xDim = [];\r\n    var yDim = [];\r\n    function fromCubic(x0, y0, x1, y1, x2, y2, x3, y3, min, max) {\r\n        var cubicExtrema$1 = cubicExtrema;\r\n        var cubicAt$1 = cubicAt;\r\n        var n = cubicExtrema$1(x0, x1, x2, x3, xDim);\r\n        min[0] = Infinity;\r\n        min[1] = Infinity;\r\n        max[0] = -Infinity;\r\n        max[1] = -Infinity;\r\n        for (var i = 0; i < n; i++) {\r\n            var x = cubicAt$1(x0, x1, x2, x3, xDim[i]);\r\n            min[0] = mathMin$1(x, min[0]);\r\n            max[0] = mathMax$1(x, max[0]);\r\n        }\r\n        n = cubicExtrema$1(y0, y1, y2, y3, yDim);\r\n        for (var i = 0; i < n; i++) {\r\n            var y = cubicAt$1(y0, y1, y2, y3, yDim[i]);\r\n            min[1] = mathMin$1(y, min[1]);\r\n            max[1] = mathMax$1(y, max[1]);\r\n        }\r\n        min[0] = mathMin$1(x0, min[0]);\r\n        max[0] = mathMax$1(x0, max[0]);\r\n        min[0] = mathMin$1(x3, min[0]);\r\n        max[0] = mathMax$1(x3, max[0]);\r\n        min[1] = mathMin$1(y0, min[1]);\r\n        max[1] = mathMax$1(y0, max[1]);\r\n        min[1] = mathMin$1(y3, min[1]);\r\n        max[1] = mathMax$1(y3, max[1]);\r\n    }\r\n    function fromQuadratic(x0, y0, x1, y1, x2, y2, min, max) {\r\n        var quadraticExtremum$1 = quadraticExtremum;\r\n        var quadraticAt$1 = quadraticAt;\r\n        var tx = mathMax$1(mathMin$1(quadraticExtremum$1(x0, x1, x2), 1), 0);\r\n        var ty = mathMax$1(mathMin$1(quadraticExtremum$1(y0, y1, y2), 1), 0);\r\n        var x = quadraticAt$1(x0, x1, x2, tx);\r\n        var y = quadraticAt$1(y0, y1, y2, ty);\r\n        min[0] = mathMin$1(x0, x2, x);\r\n        min[1] = mathMin$1(y0, y2, y);\r\n        max[0] = mathMax$1(x0, x2, x);\r\n        max[1] = mathMax$1(y0, y2, y);\r\n    }\r\n    function fromArc(x, y, rx, ry, startAngle, endAngle, anticlockwise, min$1, max$1) {\r\n        var vec2Min = min;\r\n        var vec2Max = max;\r\n        var diff = Math.abs(startAngle - endAngle);\r\n        if (diff % PI2 < 1e-4 && diff > 1e-4) {\r\n            min$1[0] = x - rx;\r\n            min$1[1] = y - ry;\r\n            max$1[0] = x + rx;\r\n            max$1[1] = y + ry;\r\n            return;\r\n        }\r\n        start[0] = mathCos(startAngle) * rx + x;\r\n        start[1] = mathSin(startAngle) * ry + y;\r\n        end[0] = mathCos(endAngle) * rx + x;\r\n        end[1] = mathSin(endAngle) * ry + y;\r\n        vec2Min(min$1, start, end);\r\n        vec2Max(max$1, start, end);\r\n        startAngle = startAngle % (PI2);\r\n        if (startAngle < 0) {\r\n            startAngle = startAngle + PI2;\r\n        }\r\n        endAngle = endAngle % (PI2);\r\n        if (endAngle < 0) {\r\n            endAngle = endAngle + PI2;\r\n        }\r\n        if (startAngle > endAngle && !anticlockwise) {\r\n            endAngle += PI2;\r\n        }\r\n        else if (startAngle < endAngle && anticlockwise) {\r\n            startAngle += PI2;\r\n        }\r\n        if (anticlockwise) {\r\n            var tmp = endAngle;\r\n            endAngle = startAngle;\r\n            startAngle = tmp;\r\n        }\r\n        for (var angle = 0; angle < endAngle; angle += Math.PI / 2) {\r\n            if (angle > startAngle) {\r\n                extremity[0] = mathCos(angle) * rx + x;\r\n                extremity[1] = mathSin(angle) * ry + y;\r\n                vec2Min(min$1, extremity, min$1);\r\n                vec2Max(max$1, extremity, max$1);\r\n            }\r\n        }\r\n    }\n\n    var CMD = {\r\n        M: 1,\r\n        L: 2,\r\n        C: 3,\r\n        Q: 4,\r\n        A: 5,\r\n        Z: 6,\r\n        R: 7\r\n    };\r\n    var tmpOutX = [];\r\n    var tmpOutY = [];\r\n    var min$1 = [];\r\n    var max$1 = [];\r\n    var min2 = [];\r\n    var max2 = [];\r\n    var mathMin$2 = Math.min;\r\n    var mathMax$2 = Math.max;\r\n    var mathCos$1 = Math.cos;\r\n    var mathSin$1 = Math.sin;\r\n    var mathSqrt$1 = Math.sqrt;\r\n    var mathAbs = Math.abs;\r\n    var PI = Math.PI;\r\n    var PI2$1 = PI * 2;\r\n    var hasTypedArray = typeof Float32Array !== 'undefined';\r\n    var tmpAngles = [];\r\n    function modPI2(radian) {\r\n        var n = Math.round(radian / PI * 1e8) / 1e8;\r\n        return (n % 2) * PI;\r\n    }\r\n    function normalizeArcAngles(angles, anticlockwise) {\r\n        var newStartAngle = modPI2(angles[0]);\r\n        if (newStartAngle < 0) {\r\n            newStartAngle += PI2$1;\r\n        }\r\n        var delta = newStartAngle - angles[0];\r\n        var newEndAngle = angles[1];\r\n        newEndAngle += delta;\r\n        if (!anticlockwise && newEndAngle - newStartAngle >= PI2$1) {\r\n            newEndAngle = newStartAngle + PI2$1;\r\n        }\r\n        else if (anticlockwise && newStartAngle - newEndAngle >= PI2$1) {\r\n            newEndAngle = newStartAngle - PI2$1;\r\n        }\r\n        else if (!anticlockwise && newStartAngle > newEndAngle) {\r\n            newEndAngle = newStartAngle +\r\n                (PI2$1 - modPI2(newStartAngle - newEndAngle));\r\n        }\r\n        else if (anticlockwise && newStartAngle < newEndAngle) {\r\n            newEndAngle = newStartAngle -\r\n                (PI2$1 - modPI2(newEndAngle - newStartAngle));\r\n        }\r\n        angles[0] = newStartAngle;\r\n        angles[1] = newEndAngle;\r\n    }\r\n    var PathProxy = (function () {\r\n        function PathProxy(notSaveData) {\r\n            this.dpr = 1;\r\n            this._version = 0;\r\n            this._xi = 0;\r\n            this._yi = 0;\r\n            this._x0 = 0;\r\n            this._y0 = 0;\r\n            this._len = 0;\r\n            if (notSaveData) {\r\n                this._saveData = false;\r\n            }\r\n            if (this._saveData) {\r\n                this.data = [];\r\n            }\r\n        }\r\n        PathProxy.prototype.increaseVersion = function () {\r\n            this._version++;\r\n        };\r\n        PathProxy.prototype.getVersion = function () {\r\n            return this._version;\r\n        };\r\n        PathProxy.prototype.setScale = function (sx, sy, segmentIgnoreThreshold) {\r\n            segmentIgnoreThreshold = segmentIgnoreThreshold || 0;\r\n            if (segmentIgnoreThreshold > 0) {\r\n                this._ux = mathAbs(segmentIgnoreThreshold / devicePixelRatio / sx) || 0;\r\n                this._uy = mathAbs(segmentIgnoreThreshold / devicePixelRatio / sy) || 0;\r\n            }\r\n        };\r\n        PathProxy.prototype.setDPR = function (dpr) {\r\n            this.dpr = dpr;\r\n        };\r\n        PathProxy.prototype.setContext = function (ctx) {\r\n            this._ctx = ctx;\r\n        };\r\n        PathProxy.prototype.getContext = function () {\r\n            return this._ctx;\r\n        };\r\n        PathProxy.prototype.beginPath = function () {\r\n            this._ctx && this._ctx.beginPath();\r\n            this.reset();\r\n            return this;\r\n        };\r\n        PathProxy.prototype.reset = function () {\r\n            if (this._saveData) {\r\n                this._len = 0;\r\n            }\r\n            if (this._lineDash) {\r\n                this._lineDash = null;\r\n                this._dashOffset = 0;\r\n            }\r\n            if (this._pathSegLen) {\r\n                this._pathSegLen = null;\r\n                this._pathLen = 0;\r\n            }\r\n            this._version++;\r\n        };\r\n        PathProxy.prototype.moveTo = function (x, y) {\r\n            this.addData(CMD.M, x, y);\r\n            this._ctx && this._ctx.moveTo(x, y);\r\n            this._x0 = x;\r\n            this._y0 = y;\r\n            this._xi = x;\r\n            this._yi = y;\r\n            return this;\r\n        };\r\n        PathProxy.prototype.lineTo = function (x, y) {\r\n            var exceedUnit = mathAbs(x - this._xi) > this._ux\r\n                || mathAbs(y - this._yi) > this._uy\r\n                || this._len < 5;\r\n            this.addData(CMD.L, x, y);\r\n            if (this._ctx && exceedUnit) {\r\n                this._needsDash ? this._dashedLineTo(x, y)\r\n                    : this._ctx.lineTo(x, y);\r\n            }\r\n            if (exceedUnit) {\r\n                this._xi = x;\r\n                this._yi = y;\r\n            }\r\n            return this;\r\n        };\r\n        PathProxy.prototype.bezierCurveTo = function (x1, y1, x2, y2, x3, y3) {\r\n            this.addData(CMD.C, x1, y1, x2, y2, x3, y3);\r\n            if (this._ctx) {\r\n                this._needsDash ? this._dashedBezierTo(x1, y1, x2, y2, x3, y3)\r\n                    : this._ctx.bezierCurveTo(x1, y1, x2, y2, x3, y3);\r\n            }\r\n            this._xi = x3;\r\n            this._yi = y3;\r\n            return this;\r\n        };\r\n        PathProxy.prototype.quadraticCurveTo = function (x1, y1, x2, y2) {\r\n            this.addData(CMD.Q, x1, y1, x2, y2);\r\n            if (this._ctx) {\r\n                this._needsDash ? this._dashedQuadraticTo(x1, y1, x2, y2)\r\n                    : this._ctx.quadraticCurveTo(x1, y1, x2, y2);\r\n            }\r\n            this._xi = x2;\r\n            this._yi = y2;\r\n            return this;\r\n        };\r\n        PathProxy.prototype.arc = function (cx, cy, r, startAngle, endAngle, anticlockwise) {\r\n            tmpAngles[0] = startAngle;\r\n            tmpAngles[1] = endAngle;\r\n            normalizeArcAngles(tmpAngles, anticlockwise);\r\n            startAngle = tmpAngles[0];\r\n            endAngle = tmpAngles[1];\r\n            var delta = endAngle - startAngle;\r\n            this.addData(CMD.A, cx, cy, r, r, startAngle, delta, 0, anticlockwise ? 0 : 1);\r\n            this._ctx && this._ctx.arc(cx, cy, r, startAngle, endAngle, anticlockwise);\r\n            this._xi = mathCos$1(endAngle) * r + cx;\r\n            this._yi = mathSin$1(endAngle) * r + cy;\r\n            return this;\r\n        };\r\n        PathProxy.prototype.arcTo = function (x1, y1, x2, y2, radius) {\r\n            if (this._ctx) {\r\n                this._ctx.arcTo(x1, y1, x2, y2, radius);\r\n            }\r\n            return this;\r\n        };\r\n        PathProxy.prototype.rect = function (x, y, w, h) {\r\n            this._ctx && this._ctx.rect(x, y, w, h);\r\n            this.addData(CMD.R, x, y, w, h);\r\n            return this;\r\n        };\r\n        PathProxy.prototype.closePath = function () {\r\n            this.addData(CMD.Z);\r\n            var ctx = this._ctx;\r\n            var x0 = this._x0;\r\n            var y0 = this._y0;\r\n            if (ctx) {\r\n                this._needsDash && this._dashedLineTo(x0, y0);\r\n                ctx.closePath();\r\n            }\r\n            this._xi = x0;\r\n            this._yi = y0;\r\n            return this;\r\n        };\r\n        PathProxy.prototype.fill = function (ctx) {\r\n            ctx && ctx.fill();\r\n            this.toStatic();\r\n        };\r\n        PathProxy.prototype.stroke = function (ctx) {\r\n            ctx && ctx.stroke();\r\n            this.toStatic();\r\n        };\r\n        PathProxy.prototype.setLineDash = function (lineDash) {\r\n            if (lineDash instanceof Array) {\r\n                this._lineDash = lineDash;\r\n                this._dashIdx = 0;\r\n                var lineDashSum = 0;\r\n                for (var i = 0; i < lineDash.length; i++) {\r\n                    lineDashSum += lineDash[i];\r\n                }\r\n                this._dashSum = lineDashSum;\r\n                this._needsDash = true;\r\n            }\r\n            else {\r\n                this._lineDash = null;\r\n                this._needsDash = false;\r\n            }\r\n            return this;\r\n        };\r\n        PathProxy.prototype.setLineDashOffset = function (offset) {\r\n            this._dashOffset = offset;\r\n            return this;\r\n        };\r\n        PathProxy.prototype.len = function () {\r\n            return this._len;\r\n        };\r\n        PathProxy.prototype.setData = function (data) {\r\n            var len = data.length;\r\n            if (!(this.data && this.data.length === len) && hasTypedArray) {\r\n                this.data = new Float32Array(len);\r\n            }\r\n            for (var i = 0; i < len; i++) {\r\n                this.data[i] = data[i];\r\n            }\r\n            this._len = len;\r\n        };\r\n        PathProxy.prototype.appendPath = function (path) {\r\n            if (!(path instanceof Array)) {\r\n                path = [path];\r\n            }\r\n            var len = path.length;\r\n            var appendSize = 0;\r\n            var offset = this._len;\r\n            for (var i = 0; i < len; i++) {\r\n                appendSize += path[i].len();\r\n            }\r\n            if (hasTypedArray && (this.data instanceof Float32Array)) {\r\n                this.data = new Float32Array(offset + appendSize);\r\n            }\r\n            for (var i = 0; i < len; i++) {\r\n                var appendPathData = path[i].data;\r\n                for (var k = 0; k < appendPathData.length; k++) {\r\n                    this.data[offset++] = appendPathData[k];\r\n                }\r\n            }\r\n            this._len = offset;\r\n        };\r\n        PathProxy.prototype.addData = function (cmd, a, b, c, d, e, f, g, h) {\r\n            if (!this._saveData) {\r\n                return;\r\n            }\r\n            var data = this.data;\r\n            if (this._len + arguments.length > data.length) {\r\n                this._expandData();\r\n                data = this.data;\r\n            }\r\n            for (var i = 0; i < arguments.length; i++) {\r\n                data[this._len++] = arguments[i];\r\n            }\r\n        };\r\n        PathProxy.prototype._expandData = function () {\r\n            if (!(this.data instanceof Array)) {\r\n                var newData = [];\r\n                for (var i = 0; i < this._len; i++) {\r\n                    newData[i] = this.data[i];\r\n                }\r\n                this.data = newData;\r\n            }\r\n        };\r\n        PathProxy.prototype._dashedLineTo = function (x1, y1) {\r\n            var dashSum = this._dashSum;\r\n            var lineDash = this._lineDash;\r\n            var ctx = this._ctx;\r\n            var offset = this._dashOffset;\r\n            var x0 = this._xi;\r\n            var y0 = this._yi;\r\n            var dx = x1 - x0;\r\n            var dy = y1 - y0;\r\n            var dist = mathSqrt$1(dx * dx + dy * dy);\r\n            var x = x0;\r\n            var y = y0;\r\n            var nDash = lineDash.length;\r\n            var dash;\r\n            var idx;\r\n            dx /= dist;\r\n            dy /= dist;\r\n            if (offset < 0) {\r\n                offset = dashSum + offset;\r\n            }\r\n            offset %= dashSum;\r\n            x -= offset * dx;\r\n            y -= offset * dy;\r\n            while ((dx > 0 && x <= x1) || (dx < 0 && x >= x1)\r\n                || (dx === 0 && ((dy > 0 && y <= y1) || (dy < 0 && y >= y1)))) {\r\n                idx = this._dashIdx;\r\n                dash = lineDash[idx];\r\n                x += dx * dash;\r\n                y += dy * dash;\r\n                this._dashIdx = (idx + 1) % nDash;\r\n                if ((dx > 0 && x < x0) || (dx < 0 && x > x0) || (dy > 0 && y < y0) || (dy < 0 && y > y0)) {\r\n                    continue;\r\n                }\r\n                ctx[idx % 2 ? 'moveTo' : 'lineTo'](dx >= 0 ? mathMin$2(x, x1) : mathMax$2(x, x1), dy >= 0 ? mathMin$2(y, y1) : mathMax$2(y, y1));\r\n            }\r\n            dx = x - x1;\r\n            dy = y - y1;\r\n            this._dashOffset = -mathSqrt$1(dx * dx + dy * dy);\r\n        };\r\n        PathProxy.prototype._dashedBezierTo = function (x1, y1, x2, y2, x3, y3) {\r\n            var ctx = this._ctx;\r\n            var dashSum = this._dashSum;\r\n            var offset = this._dashOffset;\r\n            var lineDash = this._lineDash;\r\n            var x0 = this._xi;\r\n            var y0 = this._yi;\r\n            var bezierLen = 0;\r\n            var idx = this._dashIdx;\r\n            var nDash = lineDash.length;\r\n            var t;\r\n            var dx;\r\n            var dy;\r\n            var x;\r\n            var y;\r\n            var tmpLen = 0;\r\n            if (offset < 0) {\r\n                offset = dashSum + offset;\r\n            }\r\n            offset %= dashSum;\r\n            for (t = 0; t < 1; t += 0.1) {\r\n                dx = cubicAt(x0, x1, x2, x3, t + 0.1)\r\n                    - cubicAt(x0, x1, x2, x3, t);\r\n                dy = cubicAt(y0, y1, y2, y3, t + 0.1)\r\n                    - cubicAt(y0, y1, y2, y3, t);\r\n                bezierLen += mathSqrt$1(dx * dx + dy * dy);\r\n            }\r\n            for (; idx < nDash; idx++) {\r\n                tmpLen += lineDash[idx];\r\n                if (tmpLen > offset) {\r\n                    break;\r\n                }\r\n            }\r\n            t = (tmpLen - offset) / bezierLen;\r\n            while (t <= 1) {\r\n                x = cubicAt(x0, x1, x2, x3, t);\r\n                y = cubicAt(y0, y1, y2, y3, t);\r\n                idx % 2 ? ctx.moveTo(x, y)\r\n                    : ctx.lineTo(x, y);\r\n                t += lineDash[idx] / bezierLen;\r\n                idx = (idx + 1) % nDash;\r\n            }\r\n            (idx % 2 !== 0) && ctx.lineTo(x3, y3);\r\n            dx = x3 - x;\r\n            dy = y3 - y;\r\n            this._dashOffset = -mathSqrt$1(dx * dx + dy * dy);\r\n        };\r\n        PathProxy.prototype._dashedQuadraticTo = function (x1, y1, x2, y2) {\r\n            var x3 = x2;\r\n            var y3 = y2;\r\n            x2 = (x2 + 2 * x1) / 3;\r\n            y2 = (y2 + 2 * y1) / 3;\r\n            x1 = (this._xi + 2 * x1) / 3;\r\n            y1 = (this._yi + 2 * y1) / 3;\r\n            this._dashedBezierTo(x1, y1, x2, y2, x3, y3);\r\n        };\r\n        PathProxy.prototype.toStatic = function () {\r\n            if (!this._saveData) {\r\n                return;\r\n            }\r\n            var data = this.data;\r\n            if (data instanceof Array) {\r\n                data.length = this._len;\r\n                if (hasTypedArray && this._len > 11) {\r\n                    this.data = new Float32Array(data);\r\n                }\r\n            }\r\n        };\r\n        PathProxy.prototype.getBoundingRect = function () {\r\n            min$1[0] = min$1[1] = min2[0] = min2[1] = Number.MAX_VALUE;\r\n            max$1[0] = max$1[1] = max2[0] = max2[1] = -Number.MAX_VALUE;\r\n            var data = this.data;\r\n            var xi = 0;\r\n            var yi = 0;\r\n            var x0 = 0;\r\n            var y0 = 0;\r\n            var i;\r\n            for (i = 0; i < this._len;) {\r\n                var cmd = data[i++];\r\n                var isFirst = i === 1;\r\n                if (isFirst) {\r\n                    xi = data[i];\r\n                    yi = data[i + 1];\r\n                    x0 = xi;\r\n                    y0 = yi;\r\n                }\r\n                switch (cmd) {\r\n                    case CMD.M:\r\n                        xi = x0 = data[i++];\r\n                        yi = y0 = data[i++];\r\n                        min2[0] = x0;\r\n                        min2[1] = y0;\r\n                        max2[0] = x0;\r\n                        max2[1] = y0;\r\n                        break;\r\n                    case CMD.L:\r\n                        fromLine(xi, yi, data[i], data[i + 1], min2, max2);\r\n                        xi = data[i++];\r\n                        yi = data[i++];\r\n                        break;\r\n                    case CMD.C:\r\n                        fromCubic(xi, yi, data[i++], data[i++], data[i++], data[i++], data[i], data[i + 1], min2, max2);\r\n                        xi = data[i++];\r\n                        yi = data[i++];\r\n                        break;\r\n                    case CMD.Q:\r\n                        fromQuadratic(xi, yi, data[i++], data[i++], data[i], data[i + 1], min2, max2);\r\n                        xi = data[i++];\r\n                        yi = data[i++];\r\n                        break;\r\n                    case CMD.A:\r\n                        var cx = data[i++];\r\n                        var cy = data[i++];\r\n                        var rx = data[i++];\r\n                        var ry = data[i++];\r\n                        var startAngle = data[i++];\r\n                        var endAngle = data[i++] + startAngle;\r\n                        i += 1;\r\n                        var anticlockwise = !data[i++];\r\n                        if (isFirst) {\r\n                            x0 = mathCos$1(startAngle) * rx + cx;\r\n                            y0 = mathSin$1(startAngle) * ry + cy;\r\n                        }\r\n                        fromArc(cx, cy, rx, ry, startAngle, endAngle, anticlockwise, min2, max2);\r\n                        xi = mathCos$1(endAngle) * rx + cx;\r\n                        yi = mathSin$1(endAngle) * ry + cy;\r\n                        break;\r\n                    case CMD.R:\r\n                        x0 = xi = data[i++];\r\n                        y0 = yi = data[i++];\r\n                        var width = data[i++];\r\n                        var height = data[i++];\r\n                        fromLine(x0, y0, x0 + width, y0 + height, min2, max2);\r\n                        break;\r\n                    case CMD.Z:\r\n                        xi = x0;\r\n                        yi = y0;\r\n                        break;\r\n                }\r\n                min(min$1, min$1, min2);\r\n                max(max$1, max$1, max2);\r\n            }\r\n            if (i === 0) {\r\n                min$1[0] = min$1[1] = max$1[0] = max$1[1] = 0;\r\n            }\r\n            return new BoundingRect(min$1[0], min$1[1], max$1[0] - min$1[0], max$1[1] - min$1[1]);\r\n        };\r\n        PathProxy.prototype._calculateLength = function () {\r\n            var data = this.data;\r\n            var len = this._len;\r\n            var ux = this._ux;\r\n            var uy = this._uy;\r\n            var xi = 0;\r\n            var yi = 0;\r\n            var x0 = 0;\r\n            var y0 = 0;\r\n            if (!this._pathSegLen) {\r\n                this._pathSegLen = [];\r\n            }\r\n            var pathSegLen = this._pathSegLen;\r\n            var pathTotalLen = 0;\r\n            var segCount = 0;\r\n            for (var i = 0; i < len;) {\r\n                var cmd = data[i++];\r\n                var isFirst = i === 1;\r\n                if (isFirst) {\r\n                    xi = data[i];\r\n                    yi = data[i + 1];\r\n                    x0 = xi;\r\n                    y0 = yi;\r\n                }\r\n                var l = -1;\r\n                switch (cmd) {\r\n                    case CMD.M:\r\n                        xi = x0 = data[i++];\r\n                        yi = y0 = data[i++];\r\n                        break;\r\n                    case CMD.L: {\r\n                        var x2 = data[i++];\r\n                        var y2 = data[i++];\r\n                        var dx = x2 - xi;\r\n                        var dy = y2 - yi;\r\n                        if (mathAbs(dx) > ux || mathAbs(dy) > uy || i === len - 1) {\r\n                            l = Math.sqrt(dx * dx + dy * dy);\r\n                            xi = x2;\r\n                            yi = y2;\r\n                        }\r\n                        break;\r\n                    }\r\n                    case CMD.C: {\r\n                        var x1 = data[i++];\r\n                        var y1 = data[i++];\r\n                        var x2 = data[i++];\r\n                        var y2 = data[i++];\r\n                        var x3 = data[i++];\r\n                        var y3 = data[i++];\r\n                        l = cubicLength(xi, yi, x1, y1, x2, y2, x3, y3, 10);\r\n                        xi = x3;\r\n                        yi = y3;\r\n                        break;\r\n                    }\r\n                    case CMD.Q: {\r\n                        var x1 = data[i++];\r\n                        var y1 = data[i++];\r\n                        var x2 = data[i++];\r\n                        var y2 = data[i++];\r\n                        l = quadraticLength(xi, yi, x1, y1, x2, y2, 10);\r\n                        xi = x2;\r\n                        yi = y2;\r\n                        break;\r\n                    }\r\n                    case CMD.A:\r\n                        var cx = data[i++];\r\n                        var cy = data[i++];\r\n                        var rx = data[i++];\r\n                        var ry = data[i++];\r\n                        var startAngle = data[i++];\r\n                        var delta = data[i++];\r\n                        var endAngle = delta + startAngle;\r\n                        i += 1;\r\n                        var anticlockwise = !data[i++];\r\n                        if (isFirst) {\r\n                            x0 = mathCos$1(startAngle) * rx + cx;\r\n                            y0 = mathSin$1(startAngle) * ry + cy;\r\n                        }\r\n                        l = mathMax$2(rx, ry) * mathMin$2(PI2$1, Math.abs(delta));\r\n                        xi = mathCos$1(endAngle) * rx + cx;\r\n                        yi = mathSin$1(endAngle) * ry + cy;\r\n                        break;\r\n                    case CMD.R: {\r\n                        x0 = xi = data[i++];\r\n                        y0 = yi = data[i++];\r\n                        var width = data[i++];\r\n                        var height = data[i++];\r\n                        l = width * 2 + height * 2;\r\n                        break;\r\n                    }\r\n                    case CMD.Z: {\r\n                        var dx = x0 - xi;\r\n                        var dy = y0 - yi;\r\n                        l = Math.sqrt(dx * dx + dy * dy);\r\n                        xi = x0;\r\n                        yi = y0;\r\n                        break;\r\n                    }\r\n                }\r\n                if (l >= 0) {\r\n                    pathSegLen[segCount++] = l;\r\n                    pathTotalLen += l;\r\n                }\r\n            }\r\n            this._pathLen = pathTotalLen;\r\n            return pathTotalLen;\r\n        };\r\n        PathProxy.prototype.rebuildPath = function (ctx, percent) {\r\n            var d = this.data;\r\n            var ux = this._ux;\r\n            var uy = this._uy;\r\n            var len = this._len;\r\n            var x0;\r\n            var y0;\r\n            var xi;\r\n            var yi;\r\n            var x;\r\n            var y;\r\n            var drawPart = percent < 1;\r\n            var pathSegLen;\r\n            var pathTotalLen;\r\n            var accumLength = 0;\r\n            var segCount = 0;\r\n            var displayedLength;\r\n            if (drawPart) {\r\n                if (!this._pathSegLen) {\r\n                    this._calculateLength();\r\n                }\r\n                pathSegLen = this._pathSegLen;\r\n                pathTotalLen = this._pathLen;\r\n                displayedLength = percent * pathTotalLen;\r\n                if (!displayedLength) {\r\n                    return;\r\n                }\r\n            }\r\n            lo: for (var i = 0; i < len;) {\r\n                var cmd = d[i++];\r\n                var isFirst = i === 1;\r\n                if (isFirst) {\r\n                    xi = d[i];\r\n                    yi = d[i + 1];\r\n                    x0 = xi;\r\n                    y0 = yi;\r\n                }\r\n                switch (cmd) {\r\n                    case CMD.M:\r\n                        x0 = xi = d[i++];\r\n                        y0 = yi = d[i++];\r\n                        ctx.moveTo(xi, yi);\r\n                        break;\r\n                    case CMD.L: {\r\n                        x = d[i++];\r\n                        y = d[i++];\r\n                        if (mathAbs(x - xi) > ux || mathAbs(y - yi) > uy || i === len - 1) {\r\n                            if (drawPart) {\r\n                                var l = pathSegLen[segCount++];\r\n                                if (accumLength + l > displayedLength) {\r\n                                    var t = (displayedLength - accumLength) / l;\r\n                                    ctx.lineTo(xi * (1 - t) + x * t, yi * (1 - t) + y * t);\r\n                                    break lo;\r\n                                }\r\n                                accumLength += l;\r\n                            }\r\n                            ctx.lineTo(x, y);\r\n                            xi = x;\r\n                            yi = y;\r\n                        }\r\n                        break;\r\n                    }\r\n                    case CMD.C: {\r\n                        var x1 = d[i++];\r\n                        var y1 = d[i++];\r\n                        var x2 = d[i++];\r\n                        var y2 = d[i++];\r\n                        var x3 = d[i++];\r\n                        var y3 = d[i++];\r\n                        if (drawPart) {\r\n                            var l = pathSegLen[segCount++];\r\n                            if (accumLength + l > displayedLength) {\r\n                                var t = (displayedLength - accumLength) / l;\r\n                                cubicSubdivide(xi, x1, x2, x3, t, tmpOutX);\r\n                                cubicSubdivide(yi, y1, y2, y3, t, tmpOutY);\r\n                                ctx.bezierCurveTo(tmpOutX[1], tmpOutY[1], tmpOutX[2], tmpOutY[2], tmpOutX[3], tmpOutY[3]);\r\n                                break lo;\r\n                            }\r\n                            accumLength += l;\r\n                        }\r\n                        ctx.bezierCurveTo(x1, y1, x2, y2, x3, y3);\r\n                        xi = x3;\r\n                        yi = y3;\r\n                        break;\r\n                    }\r\n                    case CMD.Q: {\r\n                        var x1 = d[i++];\r\n                        var y1 = d[i++];\r\n                        var x2 = d[i++];\r\n                        var y2 = d[i++];\r\n                        if (drawPart) {\r\n                            var l = pathSegLen[segCount++];\r\n                            if (accumLength + l > displayedLength) {\r\n                                var t = (displayedLength - accumLength) / l;\r\n                                quadraticSubdivide(xi, x1, x2, t, tmpOutX);\r\n                                quadraticSubdivide(yi, y1, y2, t, tmpOutY);\r\n                                ctx.quadraticCurveTo(tmpOutX[1], tmpOutY[1], tmpOutX[2], tmpOutY[2]);\r\n                                break lo;\r\n                            }\r\n                            accumLength += l;\r\n                        }\r\n                        ctx.quadraticCurveTo(x1, y1, x2, y2);\r\n                        xi = x2;\r\n                        yi = y2;\r\n                        break;\r\n                    }\r\n                    case CMD.A:\r\n                        var cx = d[i++];\r\n                        var cy = d[i++];\r\n                        var rx = d[i++];\r\n                        var ry = d[i++];\r\n                        var startAngle = d[i++];\r\n                        var delta = d[i++];\r\n                        var psi = d[i++];\r\n                        var anticlockwise = !d[i++];\r\n                        var r = (rx > ry) ? rx : ry;\r\n                        var isEllipse = mathAbs(rx - ry) > 1e-3;\r\n                        var endAngle = startAngle + delta;\r\n                        var breakBuild = false;\r\n                        if (drawPart) {\r\n                            var l = pathSegLen[segCount++];\r\n                            if (accumLength + l > displayedLength) {\r\n                                endAngle = startAngle + delta * (displayedLength - accumLength) / l;\r\n                                breakBuild = true;\r\n                            }\r\n                            accumLength += l;\r\n                        }\r\n                        if (isEllipse && ctx.ellipse) {\r\n                            ctx.ellipse(cx, cy, rx, ry, psi, startAngle, endAngle, anticlockwise);\r\n                        }\r\n                        else {\r\n                            ctx.arc(cx, cy, r, startAngle, endAngle, anticlockwise);\r\n                        }\r\n                        if (breakBuild) {\r\n                            break lo;\r\n                        }\r\n                        if (isFirst) {\r\n                            x0 = mathCos$1(startAngle) * rx + cx;\r\n                            y0 = mathSin$1(startAngle) * ry + cy;\r\n                        }\r\n                        xi = mathCos$1(endAngle) * rx + cx;\r\n                        yi = mathSin$1(endAngle) * ry + cy;\r\n                        break;\r\n                    case CMD.R:\r\n                        x0 = xi = d[i];\r\n                        y0 = yi = d[i + 1];\r\n                        x = d[i++];\r\n                        y = d[i++];\r\n                        var width = d[i++];\r\n                        var height = d[i++];\r\n                        if (drawPart) {\r\n                            var l = pathSegLen[segCount++];\r\n                            if (accumLength + l > displayedLength) {\r\n                                var d_1 = displayedLength - accumLength;\r\n                                ctx.moveTo(x, y);\r\n                                ctx.lineTo(x + mathMin$2(d_1, width), y);\r\n                                d_1 -= width;\r\n                                if (d_1 > 0) {\r\n                                    ctx.lineTo(x + width, y + mathMin$2(d_1, height));\r\n                                }\r\n                                d_1 -= height;\r\n                                if (d_1 > 0) {\r\n                                    ctx.lineTo(x + mathMax$2(width - d_1, 0), y + height);\r\n                                }\r\n                                d_1 -= width;\r\n                                if (d_1 > 0) {\r\n                                    ctx.lineTo(x, y + mathMax$2(height - d_1, 0));\r\n                                }\r\n                                break lo;\r\n                            }\r\n                            accumLength += l;\r\n                        }\r\n                        ctx.rect(x, y, width, height);\r\n                        break;\r\n                    case CMD.Z:\r\n                        if (drawPart) {\r\n                            var l = pathSegLen[segCount++];\r\n                            if (accumLength + l > displayedLength) {\r\n                                var t = (displayedLength - accumLength) / l;\r\n                                ctx.lineTo(xi * (1 - t) + x0 * t, yi * (1 - t) + y0 * t);\r\n                                break lo;\r\n                            }\r\n                            accumLength += l;\r\n                        }\r\n                        ctx.closePath();\r\n                        xi = x0;\r\n                        yi = y0;\r\n                }\r\n            }\r\n        };\r\n        PathProxy.CMD = CMD;\r\n        PathProxy.initDefaultProps = (function () {\r\n            var proto = PathProxy.prototype;\r\n            proto._saveData = true;\r\n            proto._needsDash = false;\r\n            proto._dashOffset = 0;\r\n            proto._dashIdx = 0;\r\n            proto._dashSum = 0;\r\n            proto._ux = 0;\r\n            proto._uy = 0;\r\n        })();\r\n        return PathProxy;\r\n    }());\n\n    function containStroke(x0, y0, x1, y1, lineWidth, x, y) {\r\n        if (lineWidth === 0) {\r\n            return false;\r\n        }\r\n        var _l = lineWidth;\r\n        var _a = 0;\r\n        var _b = x0;\r\n        if ((y > y0 + _l && y > y1 + _l)\r\n            || (y < y0 - _l && y < y1 - _l)\r\n            || (x > x0 + _l && x > x1 + _l)\r\n            || (x < x0 - _l && x < x1 - _l)) {\r\n            return false;\r\n        }\r\n        if (x0 !== x1) {\r\n            _a = (y0 - y1) / (x0 - x1);\r\n            _b = (x0 * y1 - x1 * y0) / (x0 - x1);\r\n        }\r\n        else {\r\n            return Math.abs(x - x0) <= _l / 2;\r\n        }\r\n        var tmp = _a * x - y + _b;\r\n        var _s = tmp * tmp / (_a * _a + 1);\r\n        return _s <= _l / 2 * _l / 2;\r\n    }\n\n    function containStroke$1(x0, y0, x1, y1, x2, y2, x3, y3, lineWidth, x, y) {\r\n        if (lineWidth === 0) {\r\n            return false;\r\n        }\r\n        var _l = lineWidth;\r\n        if ((y > y0 + _l && y > y1 + _l && y > y2 + _l && y > y3 + _l)\r\n            || (y < y0 - _l && y < y1 - _l && y < y2 - _l && y < y3 - _l)\r\n            || (x > x0 + _l && x > x1 + _l && x > x2 + _l && x > x3 + _l)\r\n            || (x < x0 - _l && x < x1 - _l && x < x2 - _l && x < x3 - _l)) {\r\n            return false;\r\n        }\r\n        var d = cubicProjectPoint(x0, y0, x1, y1, x2, y2, x3, y3, x, y, null);\r\n        return d <= _l / 2;\r\n    }\n\n    function containStroke$2(x0, y0, x1, y1, x2, y2, lineWidth, x, y) {\r\n        if (lineWidth === 0) {\r\n            return false;\r\n        }\r\n        var _l = lineWidth;\r\n        if ((y > y0 + _l && y > y1 + _l && y > y2 + _l)\r\n            || (y < y0 - _l && y < y1 - _l && y < y2 - _l)\r\n            || (x > x0 + _l && x > x1 + _l && x > x2 + _l)\r\n            || (x < x0 - _l && x < x1 - _l && x < x2 - _l)) {\r\n            return false;\r\n        }\r\n        var d = quadraticProjectPoint(x0, y0, x1, y1, x2, y2, x, y, null);\r\n        return d <= _l / 2;\r\n    }\n\n    var PI2$2 = Math.PI * 2;\r\n    function normalizeRadian(angle) {\r\n        angle %= PI2$2;\r\n        if (angle < 0) {\r\n            angle += PI2$2;\r\n        }\r\n        return angle;\r\n    }\n\n    var PI2$3 = Math.PI * 2;\r\n    function containStroke$3(cx, cy, r, startAngle, endAngle, anticlockwise, lineWidth, x, y) {\r\n        if (lineWidth === 0) {\r\n            return false;\r\n        }\r\n        var _l = lineWidth;\r\n        x -= cx;\r\n        y -= cy;\r\n        var d = Math.sqrt(x * x + y * y);\r\n        if ((d - _l > r) || (d + _l < r)) {\r\n            return false;\r\n        }\r\n        if (Math.abs(startAngle - endAngle) % PI2$3 < 1e-4) {\r\n            return true;\r\n        }\r\n        if (anticlockwise) {\r\n            var tmp = startAngle;\r\n            startAngle = normalizeRadian(endAngle);\r\n            endAngle = normalizeRadian(tmp);\r\n        }\r\n        else {\r\n            startAngle = normalizeRadian(startAngle);\r\n            endAngle = normalizeRadian(endAngle);\r\n        }\r\n        if (startAngle > endAngle) {\r\n            endAngle += PI2$3;\r\n        }\r\n        var angle = Math.atan2(y, x);\r\n        if (angle < 0) {\r\n            angle += PI2$3;\r\n        }\r\n        return (angle >= startAngle && angle <= endAngle)\r\n            || (angle + PI2$3 >= startAngle && angle + PI2$3 <= endAngle);\r\n    }\n\n    function windingLine(x0, y0, x1, y1, x, y) {\r\n        if ((y > y0 && y > y1) || (y < y0 && y < y1)) {\r\n            return 0;\r\n        }\r\n        if (y1 === y0) {\r\n            return 0;\r\n        }\r\n        var t = (y - y0) / (y1 - y0);\r\n        var dir = y1 < y0 ? 1 : -1;\r\n        if (t === 1 || t === 0) {\r\n            dir = y1 < y0 ? 0.5 : -0.5;\r\n        }\r\n        var x_ = t * (x1 - x0) + x0;\r\n        return x_ === x ? Infinity : x_ > x ? dir : 0;\r\n    }\n\n    var CMD$1 = PathProxy.CMD;\r\n    var PI2$4 = Math.PI * 2;\r\n    var EPSILON$2 = 1e-4;\r\n    function isAroundEqual(a, b) {\r\n        return Math.abs(a - b) < EPSILON$2;\r\n    }\r\n    var roots = [-1, -1, -1];\r\n    var extrema = [-1, -1];\r\n    function swapExtrema() {\r\n        var tmp = extrema[0];\r\n        extrema[0] = extrema[1];\r\n        extrema[1] = tmp;\r\n    }\r\n    function windingCubic(x0, y0, x1, y1, x2, y2, x3, y3, x, y) {\r\n        if ((y > y0 && y > y1 && y > y2 && y > y3)\r\n            || (y < y0 && y < y1 && y < y2 && y < y3)) {\r\n            return 0;\r\n        }\r\n        var nRoots = cubicRootAt(y0, y1, y2, y3, y, roots);\r\n        if (nRoots === 0) {\r\n            return 0;\r\n        }\r\n        else {\r\n            var w = 0;\r\n            var nExtrema = -1;\r\n            var y0_ = void 0;\r\n            var y1_ = void 0;\r\n            for (var i = 0; i < nRoots; i++) {\r\n                var t = roots[i];\r\n                var unit = (t === 0 || t === 1) ? 0.5 : 1;\r\n                var x_ = cubicAt(x0, x1, x2, x3, t);\r\n                if (x_ < x) {\r\n                    continue;\r\n                }\r\n                if (nExtrema < 0) {\r\n                    nExtrema = cubicExtrema(y0, y1, y2, y3, extrema);\r\n                    if (extrema[1] < extrema[0] && nExtrema > 1) {\r\n                        swapExtrema();\r\n                    }\r\n                    y0_ = cubicAt(y0, y1, y2, y3, extrema[0]);\r\n                    if (nExtrema > 1) {\r\n                        y1_ = cubicAt(y0, y1, y2, y3, extrema[1]);\r\n                    }\r\n                }\r\n                if (nExtrema === 2) {\r\n                    if (t < extrema[0]) {\r\n                        w += y0_ < y0 ? unit : -unit;\r\n                    }\r\n                    else if (t < extrema[1]) {\r\n                        w += y1_ < y0_ ? unit : -unit;\r\n                    }\r\n                    else {\r\n                        w += y3 < y1_ ? unit : -unit;\r\n                    }\r\n                }\r\n                else {\r\n                    if (t < extrema[0]) {\r\n                        w += y0_ < y0 ? unit : -unit;\r\n                    }\r\n                    else {\r\n                        w += y3 < y0_ ? unit : -unit;\r\n                    }\r\n                }\r\n            }\r\n            return w;\r\n        }\r\n    }\r\n    function windingQuadratic(x0, y0, x1, y1, x2, y2, x, y) {\r\n        if ((y > y0 && y > y1 && y > y2)\r\n            || (y < y0 && y < y1 && y < y2)) {\r\n            return 0;\r\n        }\r\n        var nRoots = quadraticRootAt(y0, y1, y2, y, roots);\r\n        if (nRoots === 0) {\r\n            return 0;\r\n        }\r\n        else {\r\n            var t = quadraticExtremum(y0, y1, y2);\r\n            if (t >= 0 && t <= 1) {\r\n                var w = 0;\r\n                var y_ = quadraticAt(y0, y1, y2, t);\r\n                for (var i = 0; i < nRoots; i++) {\r\n                    var unit = (roots[i] === 0 || roots[i] === 1) ? 0.5 : 1;\r\n                    var x_ = quadraticAt(x0, x1, x2, roots[i]);\r\n                    if (x_ < x) {\r\n                        continue;\r\n                    }\r\n                    if (roots[i] < t) {\r\n                        w += y_ < y0 ? unit : -unit;\r\n                    }\r\n                    else {\r\n                        w += y2 < y_ ? unit : -unit;\r\n                    }\r\n                }\r\n                return w;\r\n            }\r\n            else {\r\n                var unit = (roots[0] === 0 || roots[0] === 1) ? 0.5 : 1;\r\n                var x_ = quadraticAt(x0, x1, x2, roots[0]);\r\n                if (x_ < x) {\r\n                    return 0;\r\n                }\r\n                return y2 < y0 ? unit : -unit;\r\n            }\r\n        }\r\n    }\r\n    function windingArc(cx, cy, r, startAngle, endAngle, anticlockwise, x, y) {\r\n        y -= cy;\r\n        if (y > r || y < -r) {\r\n            return 0;\r\n        }\r\n        var tmp = Math.sqrt(r * r - y * y);\r\n        roots[0] = -tmp;\r\n        roots[1] = tmp;\r\n        var dTheta = Math.abs(startAngle - endAngle);\r\n        if (dTheta < 1e-4) {\r\n            return 0;\r\n        }\r\n        if (dTheta >= PI2$4 - 1e-4) {\r\n            startAngle = 0;\r\n            endAngle = PI2$4;\r\n            var dir = anticlockwise ? 1 : -1;\r\n            if (x >= roots[0] + cx && x <= roots[1] + cx) {\r\n                return dir;\r\n            }\r\n            else {\r\n                return 0;\r\n            }\r\n        }\r\n        if (startAngle > endAngle) {\r\n            var tmp_1 = startAngle;\r\n            startAngle = endAngle;\r\n            endAngle = tmp_1;\r\n        }\r\n        if (startAngle < 0) {\r\n            startAngle += PI2$4;\r\n            endAngle += PI2$4;\r\n        }\r\n        var w = 0;\r\n        for (var i = 0; i < 2; i++) {\r\n            var x_ = roots[i];\r\n            if (x_ + cx > x) {\r\n                var angle = Math.atan2(y, x_);\r\n                var dir = anticlockwise ? 1 : -1;\r\n                if (angle < 0) {\r\n                    angle = PI2$4 + angle;\r\n                }\r\n                if ((angle >= startAngle && angle <= endAngle)\r\n                    || (angle + PI2$4 >= startAngle && angle + PI2$4 <= endAngle)) {\r\n                    if (angle > Math.PI / 2 && angle < Math.PI * 1.5) {\r\n                        dir = -dir;\r\n                    }\r\n                    w += dir;\r\n                }\r\n            }\r\n        }\r\n        return w;\r\n    }\r\n    function containPath(path, lineWidth, isStroke, x, y) {\r\n        var data = path.data;\r\n        var len = path.len();\r\n        var w = 0;\r\n        var xi = 0;\r\n        var yi = 0;\r\n        var x0 = 0;\r\n        var y0 = 0;\r\n        var x1;\r\n        var y1;\r\n        for (var i = 0; i < len;) {\r\n            var cmd = data[i++];\r\n            var isFirst = i === 1;\r\n            if (cmd === CMD$1.M && i > 1) {\r\n                if (!isStroke) {\r\n                    w += windingLine(xi, yi, x0, y0, x, y);\r\n                }\r\n            }\r\n            if (isFirst) {\r\n                xi = data[i];\r\n                yi = data[i + 1];\r\n                x0 = xi;\r\n                y0 = yi;\r\n            }\r\n            switch (cmd) {\r\n                case CMD$1.M:\r\n                    x0 = data[i++];\r\n                    y0 = data[i++];\r\n                    xi = x0;\r\n                    yi = y0;\r\n                    break;\r\n                case CMD$1.L:\r\n                    if (isStroke) {\r\n                        if (containStroke(xi, yi, data[i], data[i + 1], lineWidth, x, y)) {\r\n                            return true;\r\n                        }\r\n                    }\r\n                    else {\r\n                        w += windingLine(xi, yi, data[i], data[i + 1], x, y) || 0;\r\n                    }\r\n                    xi = data[i++];\r\n                    yi = data[i++];\r\n                    break;\r\n                case CMD$1.C:\r\n                    if (isStroke) {\r\n                        if (containStroke$1(xi, yi, data[i++], data[i++], data[i++], data[i++], data[i], data[i + 1], lineWidth, x, y)) {\r\n                            return true;\r\n                        }\r\n                    }\r\n                    else {\r\n                        w += windingCubic(xi, yi, data[i++], data[i++], data[i++], data[i++], data[i], data[i + 1], x, y) || 0;\r\n                    }\r\n                    xi = data[i++];\r\n                    yi = data[i++];\r\n                    break;\r\n                case CMD$1.Q:\r\n                    if (isStroke) {\r\n                        if (containStroke$2(xi, yi, data[i++], data[i++], data[i], data[i + 1], lineWidth, x, y)) {\r\n                            return true;\r\n                        }\r\n                    }\r\n                    else {\r\n                        w += windingQuadratic(xi, yi, data[i++], data[i++], data[i], data[i + 1], x, y) || 0;\r\n                    }\r\n                    xi = data[i++];\r\n                    yi = data[i++];\r\n                    break;\r\n                case CMD$1.A:\r\n                    var cx = data[i++];\r\n                    var cy = data[i++];\r\n                    var rx = data[i++];\r\n                    var ry = data[i++];\r\n                    var theta = data[i++];\r\n                    var dTheta = data[i++];\r\n                    i += 1;\r\n                    var anticlockwise = !!(1 - data[i++]);\r\n                    x1 = Math.cos(theta) * rx + cx;\r\n                    y1 = Math.sin(theta) * ry + cy;\r\n                    if (!isFirst) {\r\n                        w += windingLine(xi, yi, x1, y1, x, y);\r\n                    }\r\n                    else {\r\n                        x0 = x1;\r\n                        y0 = y1;\r\n                    }\r\n                    var _x = (x - cx) * ry / rx + cx;\r\n                    if (isStroke) {\r\n                        if (containStroke$3(cx, cy, ry, theta, theta + dTheta, anticlockwise, lineWidth, _x, y)) {\r\n                            return true;\r\n                        }\r\n                    }\r\n                    else {\r\n                        w += windingArc(cx, cy, ry, theta, theta + dTheta, anticlockwise, _x, y);\r\n                    }\r\n                    xi = Math.cos(theta + dTheta) * rx + cx;\r\n                    yi = Math.sin(theta + dTheta) * ry + cy;\r\n                    break;\r\n                case CMD$1.R:\r\n                    x0 = xi = data[i++];\r\n                    y0 = yi = data[i++];\r\n                    var width = data[i++];\r\n                    var height = data[i++];\r\n                    x1 = x0 + width;\r\n                    y1 = y0 + height;\r\n                    if (isStroke) {\r\n                        if (containStroke(x0, y0, x1, y0, lineWidth, x, y)\r\n                            || containStroke(x1, y0, x1, y1, lineWidth, x, y)\r\n                            || containStroke(x1, y1, x0, y1, lineWidth, x, y)\r\n                            || containStroke(x0, y1, x0, y0, lineWidth, x, y)) {\r\n                            return true;\r\n                        }\r\n                    }\r\n                    else {\r\n                        w += windingLine(x1, y0, x1, y1, x, y);\r\n                        w += windingLine(x0, y1, x0, y0, x, y);\r\n                    }\r\n                    break;\r\n                case CMD$1.Z:\r\n                    if (isStroke) {\r\n                        if (containStroke(xi, yi, x0, y0, lineWidth, x, y)) {\r\n                            return true;\r\n                        }\r\n                    }\r\n                    else {\r\n                        w += windingLine(xi, yi, x0, y0, x, y);\r\n                    }\r\n                    xi = x0;\r\n                    yi = y0;\r\n                    break;\r\n            }\r\n        }\r\n        if (!isStroke && !isAroundEqual(yi, y0)) {\r\n            w += windingLine(xi, yi, x0, y0, x, y) || 0;\r\n        }\r\n        return w !== 0;\r\n    }\r\n    function contain(pathProxy, x, y) {\r\n        return containPath(pathProxy, 0, false, x, y);\r\n    }\r\n    function containStroke$4(pathProxy, lineWidth, x, y) {\r\n        return containPath(pathProxy, lineWidth, true, x, y);\r\n    }\n\n    var DEFAULT_PATH_STYLE = defaults({\r\n        fill: '#000',\r\n        stroke: null,\r\n        strokePercent: 1,\r\n        fillOpacity: 1,\r\n        strokeOpacity: 1,\r\n        lineDashOffset: 0,\r\n        lineWidth: 1,\r\n        lineCap: 'butt',\r\n        miterLimit: 10,\r\n        strokeNoScale: false,\r\n        strokeFirst: false\r\n    }, DEFAULT_COMMON_STYLE);\r\n    var DEFAULT_PATH_ANIMATION_PROPS = {\r\n        style: defaults({\r\n            fill: true,\r\n            stroke: true,\r\n            strokePercent: true,\r\n            fillOpacity: true,\r\n            strokeOpacity: true,\r\n            lineDashOffset: true,\r\n            lineWidth: true,\r\n            miterLimit: true\r\n        }, DEFAULT_COMMON_ANIMATION_PROPS.style)\r\n    };\r\n    var pathCopyParams = [\r\n        'x', 'y', 'rotation', 'scaleX', 'scaleY', 'originX', 'originY', 'invisible',\r\n        'culling', 'z', 'z2', 'zlevel', 'parent'\r\n    ];\r\n    var Path = (function (_super) {\r\n        __extends(Path, _super);\r\n        function Path(opts) {\r\n            return _super.call(this, opts) || this;\r\n        }\r\n        Path.prototype.update = function () {\r\n            var _this = this;\r\n            _super.prototype.update.call(this);\r\n            var style = this.style;\r\n            if (style.decal) {\r\n                var decalEl = this._decalEl\r\n                    = this._decalEl || new Path();\r\n                if (decalEl.buildPath === Path.prototype.buildPath) {\r\n                    decalEl.buildPath = function (ctx) {\r\n                        _this.buildPath(ctx, _this.shape);\r\n                    };\r\n                }\r\n                decalEl.silent = true;\r\n                var decalElStyle = decalEl.style;\r\n                for (var key in style) {\r\n                    if (decalElStyle[key] !== style[key]) {\r\n                        decalElStyle[key] = style[key];\r\n                    }\r\n                }\r\n                decalElStyle.fill = style.fill ? style.decal : null;\r\n                decalElStyle.decal = null;\r\n                decalElStyle.shadowColor = null;\r\n                style.strokeFirst && (decalElStyle.stroke = null);\r\n                for (var i = 0; i < pathCopyParams.length; ++i) {\r\n                    decalEl[pathCopyParams[i]] = this[pathCopyParams[i]];\r\n                }\r\n                decalEl.__dirty |= Element.REDARAW_BIT;\r\n            }\r\n            else if (this._decalEl) {\r\n                this._decalEl = null;\r\n            }\r\n        };\r\n        Path.prototype.getDecalElement = function () {\r\n            return this._decalEl;\r\n        };\r\n        Path.prototype._init = function (props) {\r\n            var keysArr = keys(props);\r\n            this.shape = this.getDefaultShape();\r\n            var defaultStyle = this.getDefaultStyle();\r\n            if (defaultStyle) {\r\n                this.useStyle(defaultStyle);\r\n            }\r\n            for (var i = 0; i < keysArr.length; i++) {\r\n                var key = keysArr[i];\r\n                var value = props[key];\r\n                if (key === 'style') {\r\n                    if (!this.style) {\r\n                        this.useStyle(value);\r\n                    }\r\n                    else {\r\n                        extend(this.style, value);\r\n                    }\r\n                }\r\n                else if (key === 'shape') {\r\n                    extend(this.shape, value);\r\n                }\r\n                else {\r\n                    _super.prototype.attrKV.call(this, key, value);\r\n                }\r\n            }\r\n            if (!this.style) {\r\n                this.useStyle({});\r\n            }\r\n        };\r\n        Path.prototype.getDefaultStyle = function () {\r\n            return null;\r\n        };\r\n        Path.prototype.getDefaultShape = function () {\r\n            return {};\r\n        };\r\n        Path.prototype.canBeInsideText = function () {\r\n            return this.hasFill();\r\n        };\r\n        Path.prototype.getInsideTextFill = function () {\r\n            var pathFill = this.style.fill;\r\n            if (pathFill !== 'none') {\r\n                if (isString(pathFill)) {\r\n                    var fillLum = lum(pathFill, 0);\r\n                    if (fillLum > 0.5) {\r\n                        return DARK_LABEL_COLOR;\r\n                    }\r\n                    else if (fillLum > 0.2) {\r\n                        return LIGHTER_LABEL_COLOR;\r\n                    }\r\n                    return LIGHT_LABEL_COLOR;\r\n                }\r\n                else if (pathFill) {\r\n                    return LIGHT_LABEL_COLOR;\r\n                }\r\n            }\r\n            return DARK_LABEL_COLOR;\r\n        };\r\n        Path.prototype.getInsideTextStroke = function (textFill) {\r\n            var pathFill = this.style.fill;\r\n            if (isString(pathFill)) {\r\n                var zr = this.__zr;\r\n                var isDarkMode = !!(zr && zr.isDarkMode());\r\n                var isDarkLabel = lum(textFill, 0) < DARK_MODE_THRESHOLD;\r\n                if (isDarkMode === isDarkLabel) {\r\n                    return pathFill;\r\n                }\r\n            }\r\n        };\r\n        Path.prototype.buildPath = function (ctx, shapeCfg, inBundle) { };\r\n        Path.prototype.pathUpdated = function () {\r\n            this.__dirty &= ~Path.SHAPE_CHANGED_BIT;\r\n        };\r\n        Path.prototype.createPathProxy = function () {\r\n            this.path = new PathProxy(false);\r\n        };\r\n        Path.prototype.hasStroke = function () {\r\n            var style = this.style;\r\n            var stroke = style.stroke;\r\n            return !(stroke == null || stroke === 'none' || !(style.lineWidth > 0));\r\n        };\r\n        Path.prototype.hasFill = function () {\r\n            var style = this.style;\r\n            var fill = style.fill;\r\n            return fill != null && fill !== 'none';\r\n        };\r\n        Path.prototype.getBoundingRect = function () {\r\n            var rect = this._rect;\r\n            var style = this.style;\r\n            var needsUpdateRect = !rect;\r\n            if (needsUpdateRect) {\r\n                var firstInvoke = false;\r\n                if (!this.path) {\r\n                    firstInvoke = true;\r\n                    this.createPathProxy();\r\n                }\r\n                var path = this.path;\r\n                if (firstInvoke || (this.__dirty & Path.SHAPE_CHANGED_BIT)) {\r\n                    path.beginPath();\r\n                    this.buildPath(path, this.shape, false);\r\n                    this.pathUpdated();\r\n                }\r\n                rect = path.getBoundingRect();\r\n            }\r\n            this._rect = rect;\r\n            if (this.hasStroke() && this.path && this.path.len() > 0) {\r\n                var rectWithStroke = this._rectWithStroke || (this._rectWithStroke = rect.clone());\r\n                if (this.__dirty || needsUpdateRect) {\r\n                    rectWithStroke.copy(rect);\r\n                    var lineScale = style.strokeNoScale ? this.getLineScale() : 1;\r\n                    var w = style.lineWidth;\r\n                    if (!this.hasFill()) {\r\n                        var strokeContainThreshold = this.strokeContainThreshold;\r\n                        w = Math.max(w, strokeContainThreshold == null ? 4 : strokeContainThreshold);\r\n                    }\r\n                    if (lineScale > 1e-10) {\r\n                        rectWithStroke.width += w / lineScale;\r\n                        rectWithStroke.height += w / lineScale;\r\n                        rectWithStroke.x -= w / lineScale / 2;\r\n                        rectWithStroke.y -= w / lineScale / 2;\r\n                    }\r\n                }\r\n                return rectWithStroke;\r\n            }\r\n            return rect;\r\n        };\r\n        Path.prototype.contain = function (x, y) {\r\n            var localPos = this.transformCoordToLocal(x, y);\r\n            var rect = this.getBoundingRect();\r\n            var style = this.style;\r\n            x = localPos[0];\r\n            y = localPos[1];\r\n            if (rect.contain(x, y)) {\r\n                var pathProxy = this.path;\r\n                if (this.hasStroke()) {\r\n                    var lineWidth = style.lineWidth;\r\n                    var lineScale = style.strokeNoScale ? this.getLineScale() : 1;\r\n                    if (lineScale > 1e-10) {\r\n                        if (!this.hasFill()) {\r\n                            lineWidth = Math.max(lineWidth, this.strokeContainThreshold);\r\n                        }\r\n                        if (containStroke$4(pathProxy, lineWidth / lineScale, x, y)) {\r\n                            return true;\r\n                        }\r\n                    }\r\n                }\r\n                if (this.hasFill()) {\r\n                    return contain(pathProxy, x, y);\r\n                }\r\n            }\r\n            return false;\r\n        };\r\n        Path.prototype.dirtyShape = function () {\r\n            this.__dirty |= Path.SHAPE_CHANGED_BIT;\r\n            if (this._rect) {\r\n                this._rect = null;\r\n            }\r\n            if (this._decalEl) {\r\n                this._decalEl.dirtyShape();\r\n            }\r\n            this.markRedraw();\r\n        };\r\n        Path.prototype.dirty = function () {\r\n            this.dirtyStyle();\r\n            this.dirtyShape();\r\n        };\r\n        Path.prototype.animateShape = function (loop) {\r\n            return this.animate('shape', loop);\r\n        };\r\n        Path.prototype.updateDuringAnimation = function (targetKey) {\r\n            if (targetKey === 'style') {\r\n                this.dirtyStyle();\r\n            }\r\n            else if (targetKey === 'shape') {\r\n                this.dirtyShape();\r\n            }\r\n            else {\r\n                this.markRedraw();\r\n            }\r\n        };\r\n        Path.prototype.attrKV = function (key, value) {\r\n            if (key === 'shape') {\r\n                this.setShape(value);\r\n            }\r\n            else {\r\n                _super.prototype.attrKV.call(this, key, value);\r\n            }\r\n        };\r\n        Path.prototype.setShape = function (keyOrObj, value) {\r\n            var shape = this.shape;\r\n            if (!shape) {\r\n                shape = this.shape = {};\r\n            }\r\n            if (typeof keyOrObj === 'string') {\r\n                shape[keyOrObj] = value;\r\n            }\r\n            else {\r\n                extend(shape, keyOrObj);\r\n            }\r\n            this.dirtyShape();\r\n            return this;\r\n        };\r\n        Path.prototype.shapeChanged = function () {\r\n            return !!(this.__dirty & Path.SHAPE_CHANGED_BIT);\r\n        };\r\n        Path.prototype.createStyle = function (obj) {\r\n            return createObject(DEFAULT_PATH_STYLE, obj);\r\n        };\r\n        Path.prototype._innerSaveToNormal = function (toState) {\r\n            _super.prototype._innerSaveToNormal.call(this, toState);\r\n            var normalState = this._normalState;\r\n            if (toState.shape && !normalState.shape) {\r\n                normalState.shape = extend({}, this.shape);\r\n            }\r\n        };\r\n        Path.prototype._applyStateObj = function (stateName, state, normalState, keepCurrentStates, transition, animationCfg) {\r\n            _super.prototype._applyStateObj.call(this, stateName, state, normalState, keepCurrentStates, transition, animationCfg);\r\n            var needsRestoreToNormal = !(state && keepCurrentStates);\r\n            var targetShape;\r\n            if (state && state.shape) {\r\n                if (transition) {\r\n                    if (keepCurrentStates) {\r\n                        targetShape = state.shape;\r\n                    }\r\n                    else {\r\n                        targetShape = extend({}, normalState.shape);\r\n                        extend(targetShape, state.shape);\r\n                    }\r\n                }\r\n                else {\r\n                    targetShape = extend({}, keepCurrentStates ? this.shape : normalState.shape);\r\n                    extend(targetShape, state.shape);\r\n                }\r\n            }\r\n            else if (needsRestoreToNormal) {\r\n                targetShape = normalState.shape;\r\n            }\r\n            if (targetShape) {\r\n                if (transition) {\r\n                    this.shape = extend({}, this.shape);\r\n                    var targetShapePrimaryProps = {};\r\n                    var shapeKeys = keys(targetShape);\r\n                    for (var i = 0; i < shapeKeys.length; i++) {\r\n                        var key = shapeKeys[i];\r\n                        if (typeof targetShape[key] === 'object') {\r\n                            this.shape[key] = targetShape[key];\r\n                        }\r\n                        else {\r\n                            targetShapePrimaryProps[key] = targetShape[key];\r\n                        }\r\n                    }\r\n                    this._transitionState(stateName, {\r\n                        shape: targetShapePrimaryProps\r\n                    }, animationCfg);\r\n                }\r\n                else {\r\n                    this.shape = targetShape;\r\n                    this.dirtyShape();\r\n                }\r\n            }\r\n        };\r\n        Path.prototype._mergeStates = function (states) {\r\n            var mergedState = _super.prototype._mergeStates.call(this, states);\r\n            var mergedShape;\r\n            for (var i = 0; i < states.length; i++) {\r\n                var state = states[i];\r\n                if (state.shape) {\r\n                    mergedShape = mergedShape || {};\r\n                    this._mergeStyle(mergedShape, state.shape);\r\n                }\r\n            }\r\n            if (mergedShape) {\r\n                mergedState.shape = mergedShape;\r\n            }\r\n            return mergedState;\r\n        };\r\n        Path.prototype.getAnimationStyleProps = function () {\r\n            return DEFAULT_PATH_ANIMATION_PROPS;\r\n        };\r\n        Path.prototype.isZeroArea = function () {\r\n            return false;\r\n        };\r\n        Path.extend = function (defaultProps) {\r\n            var Sub = (function (_super) {\r\n                __extends(Sub, _super);\r\n                function Sub(opts) {\r\n                    var _this = _super.call(this, opts) || this;\r\n                    defaultProps.init && defaultProps.init.call(_this, opts);\r\n                    return _this;\r\n                }\r\n                Sub.prototype.getDefaultStyle = function () {\r\n                    return clone(defaultProps.style);\r\n                };\r\n                Sub.prototype.getDefaultShape = function () {\r\n                    return clone(defaultProps.shape);\r\n                };\r\n                return Sub;\r\n            }(Path));\r\n            for (var key in defaultProps) {\r\n                if (typeof defaultProps[key] === 'function') {\r\n                    Sub.prototype[key] = defaultProps[key];\r\n                }\r\n            }\r\n            return Sub;\r\n        };\r\n        Path.SHAPE_CHANGED_BIT = 4;\r\n        Path.initDefaultProps = (function () {\r\n            var pathProto = Path.prototype;\r\n            pathProto.type = 'path';\r\n            pathProto.strokeContainThreshold = 5;\r\n            pathProto.segmentIgnoreThreshold = 0;\r\n            pathProto.subPixelOptimize = false;\r\n            pathProto.autoBatch = false;\r\n            pathProto.__dirty = Element.REDARAW_BIT | Displayable.STYLE_CHANGED_BIT | Path.SHAPE_CHANGED_BIT;\r\n        })();\r\n        return Path;\r\n    }(Displayable));\n\n    var CMD$2 = PathProxy.CMD;\r\n    var points = [[], [], []];\r\n    var mathSqrt$2 = Math.sqrt;\r\n    var mathAtan2 = Math.atan2;\r\n    function transformPath(path, m) {\r\n        var data = path.data;\r\n        var len = path.len();\r\n        var cmd;\r\n        var nPoint;\r\n        var i;\r\n        var j;\r\n        var k;\r\n        var p;\r\n        var M = CMD$2.M;\r\n        var C = CMD$2.C;\r\n        var L = CMD$2.L;\r\n        var R = CMD$2.R;\r\n        var A = CMD$2.A;\r\n        var Q = CMD$2.Q;\r\n        for (i = 0, j = 0; i < len;) {\r\n            cmd = data[i++];\r\n            j = i;\r\n            nPoint = 0;\r\n            switch (cmd) {\r\n                case M:\r\n                    nPoint = 1;\r\n                    break;\r\n                case L:\r\n                    nPoint = 1;\r\n                    break;\r\n                case C:\r\n                    nPoint = 3;\r\n                    break;\r\n                case Q:\r\n                    nPoint = 2;\r\n                    break;\r\n                case A:\r\n                    var x = m[4];\r\n                    var y = m[5];\r\n                    var sx = mathSqrt$2(m[0] * m[0] + m[1] * m[1]);\r\n                    var sy = mathSqrt$2(m[2] * m[2] + m[3] * m[3]);\r\n                    var angle = mathAtan2(-m[1] / sy, m[0] / sx);\r\n                    data[i] *= sx;\r\n                    data[i++] += x;\r\n                    data[i] *= sy;\r\n                    data[i++] += y;\r\n                    data[i++] *= sx;\r\n                    data[i++] *= sy;\r\n                    data[i++] += angle;\r\n                    data[i++] += angle;\r\n                    i += 2;\r\n                    j = i;\r\n                    break;\r\n                case R:\r\n                    p[0] = data[i++];\r\n                    p[1] = data[i++];\r\n                    applyTransform(p, p, m);\r\n                    data[j++] = p[0];\r\n                    data[j++] = p[1];\r\n                    p[0] += data[i++];\r\n                    p[1] += data[i++];\r\n                    applyTransform(p, p, m);\r\n                    data[j++] = p[0];\r\n                    data[j++] = p[1];\r\n            }\r\n            for (k = 0; k < nPoint; k++) {\r\n                var p_1 = points[k];\r\n                p_1[0] = data[i++];\r\n                p_1[1] = data[i++];\r\n                applyTransform(p_1, p_1, m);\r\n                data[j++] = p_1[0];\r\n                data[j++] = p_1[1];\r\n            }\r\n        }\r\n        path.increaseVersion();\r\n    }\n\n    var mathSqrt$3 = Math.sqrt;\r\n    var mathSin$2 = Math.sin;\r\n    var mathCos$2 = Math.cos;\r\n    var PI$1 = Math.PI;\r\n    function vMag(v) {\r\n        return Math.sqrt(v[0] * v[0] + v[1] * v[1]);\r\n    }\r\n    function vRatio(u, v) {\r\n        return (u[0] * v[0] + u[1] * v[1]) / (vMag(u) * vMag(v));\r\n    }\r\n    function vAngle(u, v) {\r\n        return (u[0] * v[1] < u[1] * v[0] ? -1 : 1)\r\n            * Math.acos(vRatio(u, v));\r\n    }\r\n    function processArc(x1, y1, x2, y2, fa, fs, rx, ry, psiDeg, cmd, path) {\r\n        var psi = psiDeg * (PI$1 / 180.0);\r\n        var xp = mathCos$2(psi) * (x1 - x2) / 2.0\r\n            + mathSin$2(psi) * (y1 - y2) / 2.0;\r\n        var yp = -1 * mathSin$2(psi) * (x1 - x2) / 2.0\r\n            + mathCos$2(psi) * (y1 - y2) / 2.0;\r\n        var lambda = (xp * xp) / (rx * rx) + (yp * yp) / (ry * ry);\r\n        if (lambda > 1) {\r\n            rx *= mathSqrt$3(lambda);\r\n            ry *= mathSqrt$3(lambda);\r\n        }\r\n        var f = (fa === fs ? -1 : 1)\r\n            * mathSqrt$3((((rx * rx) * (ry * ry))\r\n                - ((rx * rx) * (yp * yp))\r\n                - ((ry * ry) * (xp * xp))) / ((rx * rx) * (yp * yp)\r\n                + (ry * ry) * (xp * xp))) || 0;\r\n        var cxp = f * rx * yp / ry;\r\n        var cyp = f * -ry * xp / rx;\r\n        var cx = (x1 + x2) / 2.0\r\n            + mathCos$2(psi) * cxp\r\n            - mathSin$2(psi) * cyp;\r\n        var cy = (y1 + y2) / 2.0\r\n            + mathSin$2(psi) * cxp\r\n            + mathCos$2(psi) * cyp;\r\n        var theta = vAngle([1, 0], [(xp - cxp) / rx, (yp - cyp) / ry]);\r\n        var u = [(xp - cxp) / rx, (yp - cyp) / ry];\r\n        var v = [(-1 * xp - cxp) / rx, (-1 * yp - cyp) / ry];\r\n        var dTheta = vAngle(u, v);\r\n        if (vRatio(u, v) <= -1) {\r\n            dTheta = PI$1;\r\n        }\r\n        if (vRatio(u, v) >= 1) {\r\n            dTheta = 0;\r\n        }\r\n        if (dTheta < 0) {\r\n            var n = Math.round(dTheta / PI$1 * 1e6) / 1e6;\r\n            dTheta = PI$1 * 2 + (n % 2) * PI$1;\r\n        }\r\n        path.addData(cmd, cx, cy, rx, ry, theta, dTheta, psi, fs);\r\n    }\r\n    var commandReg = /([mlvhzcqtsa])([^mlvhzcqtsa]*)/ig;\r\n    var numberReg = /-?([0-9]*\\.)?[0-9]+([eE]-?[0-9]+)?/g;\r\n    function createPathProxyFromString(data) {\r\n        if (!data) {\r\n            return new PathProxy();\r\n        }\r\n        var cpx = 0;\r\n        var cpy = 0;\r\n        var subpathX = cpx;\r\n        var subpathY = cpy;\r\n        var prevCmd;\r\n        var path = new PathProxy();\r\n        var CMD = PathProxy.CMD;\r\n        var cmdList = data.match(commandReg);\r\n        for (var l = 0; l < cmdList.length; l++) {\r\n            var cmdText = cmdList[l];\r\n            var cmdStr = cmdText.charAt(0);\r\n            var cmd = void 0;\r\n            var p = cmdText.match(numberReg) || [];\r\n            var pLen = p.length;\r\n            for (var i = 0; i < pLen; i++) {\r\n                p[i] = parseFloat(p[i]);\r\n            }\r\n            var off = 0;\r\n            while (off < pLen) {\r\n                var ctlPtx = void 0;\r\n                var ctlPty = void 0;\r\n                var rx = void 0;\r\n                var ry = void 0;\r\n                var psi = void 0;\r\n                var fa = void 0;\r\n                var fs = void 0;\r\n                var x1 = cpx;\r\n                var y1 = cpy;\r\n                var len = void 0;\r\n                var pathData = void 0;\r\n                switch (cmdStr) {\r\n                    case 'l':\r\n                        cpx += p[off++];\r\n                        cpy += p[off++];\r\n                        cmd = CMD.L;\r\n                        path.addData(cmd, cpx, cpy);\r\n                        break;\r\n                    case 'L':\r\n                        cpx = p[off++];\r\n                        cpy = p[off++];\r\n                        cmd = CMD.L;\r\n                        path.addData(cmd, cpx, cpy);\r\n                        break;\r\n                    case 'm':\r\n                        cpx += p[off++];\r\n                        cpy += p[off++];\r\n                        cmd = CMD.M;\r\n                        path.addData(cmd, cpx, cpy);\r\n                        subpathX = cpx;\r\n                        subpathY = cpy;\r\n                        cmdStr = 'l';\r\n                        break;\r\n                    case 'M':\r\n                        cpx = p[off++];\r\n                        cpy = p[off++];\r\n                        cmd = CMD.M;\r\n                        path.addData(cmd, cpx, cpy);\r\n                        subpathX = cpx;\r\n                        subpathY = cpy;\r\n                        cmdStr = 'L';\r\n                        break;\r\n                    case 'h':\r\n                        cpx += p[off++];\r\n                        cmd = CMD.L;\r\n                        path.addData(cmd, cpx, cpy);\r\n                        break;\r\n                    case 'H':\r\n                        cpx = p[off++];\r\n                        cmd = CMD.L;\r\n                        path.addData(cmd, cpx, cpy);\r\n                        break;\r\n                    case 'v':\r\n                        cpy += p[off++];\r\n                        cmd = CMD.L;\r\n                        path.addData(cmd, cpx, cpy);\r\n                        break;\r\n                    case 'V':\r\n                        cpy = p[off++];\r\n                        cmd = CMD.L;\r\n                        path.addData(cmd, cpx, cpy);\r\n                        break;\r\n                    case 'C':\r\n                        cmd = CMD.C;\r\n                        path.addData(cmd, p[off++], p[off++], p[off++], p[off++], p[off++], p[off++]);\r\n                        cpx = p[off - 2];\r\n                        cpy = p[off - 1];\r\n                        break;\r\n                    case 'c':\r\n                        cmd = CMD.C;\r\n                        path.addData(cmd, p[off++] + cpx, p[off++] + cpy, p[off++] + cpx, p[off++] + cpy, p[off++] + cpx, p[off++] + cpy);\r\n                        cpx += p[off - 2];\r\n                        cpy += p[off - 1];\r\n                        break;\r\n                    case 'S':\r\n                        ctlPtx = cpx;\r\n                        ctlPty = cpy;\r\n                        len = path.len();\r\n                        pathData = path.data;\r\n                        if (prevCmd === CMD.C) {\r\n                            ctlPtx += cpx - pathData[len - 4];\r\n                            ctlPty += cpy - pathData[len - 3];\r\n                        }\r\n                        cmd = CMD.C;\r\n                        x1 = p[off++];\r\n                        y1 = p[off++];\r\n                        cpx = p[off++];\r\n                        cpy = p[off++];\r\n                        path.addData(cmd, ctlPtx, ctlPty, x1, y1, cpx, cpy);\r\n                        break;\r\n                    case 's':\r\n                        ctlPtx = cpx;\r\n                        ctlPty = cpy;\r\n                        len = path.len();\r\n                        pathData = path.data;\r\n                        if (prevCmd === CMD.C) {\r\n                            ctlPtx += cpx - pathData[len - 4];\r\n                            ctlPty += cpy - pathData[len - 3];\r\n                        }\r\n                        cmd = CMD.C;\r\n                        x1 = cpx + p[off++];\r\n                        y1 = cpy + p[off++];\r\n                        cpx += p[off++];\r\n                        cpy += p[off++];\r\n                        path.addData(cmd, ctlPtx, ctlPty, x1, y1, cpx, cpy);\r\n                        break;\r\n                    case 'Q':\r\n                        x1 = p[off++];\r\n                        y1 = p[off++];\r\n                        cpx = p[off++];\r\n                        cpy = p[off++];\r\n                        cmd = CMD.Q;\r\n                        path.addData(cmd, x1, y1, cpx, cpy);\r\n                        break;\r\n                    case 'q':\r\n                        x1 = p[off++] + cpx;\r\n                        y1 = p[off++] + cpy;\r\n                        cpx += p[off++];\r\n                        cpy += p[off++];\r\n                        cmd = CMD.Q;\r\n                        path.addData(cmd, x1, y1, cpx, cpy);\r\n                        break;\r\n                    case 'T':\r\n                        ctlPtx = cpx;\r\n                        ctlPty = cpy;\r\n                        len = path.len();\r\n                        pathData = path.data;\r\n                        if (prevCmd === CMD.Q) {\r\n                            ctlPtx += cpx - pathData[len - 4];\r\n                            ctlPty += cpy - pathData[len - 3];\r\n                        }\r\n                        cpx = p[off++];\r\n                        cpy = p[off++];\r\n                        cmd = CMD.Q;\r\n                        path.addData(cmd, ctlPtx, ctlPty, cpx, cpy);\r\n                        break;\r\n                    case 't':\r\n                        ctlPtx = cpx;\r\n                        ctlPty = cpy;\r\n                        len = path.len();\r\n                        pathData = path.data;\r\n                        if (prevCmd === CMD.Q) {\r\n                            ctlPtx += cpx - pathData[len - 4];\r\n                            ctlPty += cpy - pathData[len - 3];\r\n                        }\r\n                        cpx += p[off++];\r\n                        cpy += p[off++];\r\n                        cmd = CMD.Q;\r\n                        path.addData(cmd, ctlPtx, ctlPty, cpx, cpy);\r\n                        break;\r\n                    case 'A':\r\n                        rx = p[off++];\r\n                        ry = p[off++];\r\n                        psi = p[off++];\r\n                        fa = p[off++];\r\n                        fs = p[off++];\r\n                        x1 = cpx, y1 = cpy;\r\n                        cpx = p[off++];\r\n                        cpy = p[off++];\r\n                        cmd = CMD.A;\r\n                        processArc(x1, y1, cpx, cpy, fa, fs, rx, ry, psi, cmd, path);\r\n                        break;\r\n                    case 'a':\r\n                        rx = p[off++];\r\n                        ry = p[off++];\r\n                        psi = p[off++];\r\n                        fa = p[off++];\r\n                        fs = p[off++];\r\n                        x1 = cpx, y1 = cpy;\r\n                        cpx += p[off++];\r\n                        cpy += p[off++];\r\n                        cmd = CMD.A;\r\n                        processArc(x1, y1, cpx, cpy, fa, fs, rx, ry, psi, cmd, path);\r\n                        break;\r\n                }\r\n            }\r\n            if (cmdStr === 'z' || cmdStr === 'Z') {\r\n                cmd = CMD.Z;\r\n                path.addData(cmd);\r\n                cpx = subpathX;\r\n                cpy = subpathY;\r\n            }\r\n            prevCmd = cmd;\r\n        }\r\n        path.toStatic();\r\n        return path;\r\n    }\r\n    var SVGPath = (function (_super) {\r\n        __extends(SVGPath, _super);\r\n        function SVGPath() {\r\n            return _super !== null && _super.apply(this, arguments) || this;\r\n        }\r\n        SVGPath.prototype.applyTransform = function (m) { };\r\n        return SVGPath;\r\n    }(Path));\r\n    function isPathProxy(path) {\r\n        return path.setData != null;\r\n    }\r\n    function createPathOptions(str, opts) {\r\n        var pathProxy = createPathProxyFromString(str);\r\n        var innerOpts = extend({}, opts);\r\n        innerOpts.buildPath = function (path) {\r\n            if (isPathProxy(path)) {\r\n                path.setData(pathProxy.data);\r\n                var ctx = path.getContext();\r\n                if (ctx) {\r\n                    path.rebuildPath(ctx, 1);\r\n                }\r\n            }\r\n            else {\r\n                var ctx = path;\r\n                pathProxy.rebuildPath(ctx, 1);\r\n            }\r\n        };\r\n        innerOpts.applyTransform = function (m) {\r\n            transformPath(pathProxy, m);\r\n            this.dirtyShape();\r\n        };\r\n        return innerOpts;\r\n    }\r\n    function createFromString(str, opts) {\r\n        return new SVGPath(createPathOptions(str, opts));\r\n    }\n\n    var Group = (function (_super) {\r\n        __extends(Group, _super);\r\n        function Group(opts) {\r\n            var _this = _super.call(this) || this;\r\n            _this.isGroup = true;\r\n            _this._children = [];\r\n            _this.attr(opts);\r\n            return _this;\r\n        }\r\n        Group.prototype.childrenRef = function () {\r\n            return this._children;\r\n        };\r\n        Group.prototype.children = function () {\r\n            return this._children.slice();\r\n        };\r\n        Group.prototype.childAt = function (idx) {\r\n            return this._children[idx];\r\n        };\r\n        Group.prototype.childOfName = function (name) {\r\n            var children = this._children;\r\n            for (var i = 0; i < children.length; i++) {\r\n                if (children[i].name === name) {\r\n                    return children[i];\r\n                }\r\n            }\r\n        };\r\n        Group.prototype.childCount = function () {\r\n            return this._children.length;\r\n        };\r\n        Group.prototype.add = function (child) {\r\n            if (child) {\r\n                if (child !== this && child.parent !== this) {\r\n                    this._children.push(child);\r\n                    this._doAdd(child);\r\n                }\r\n                if (child.__hostTarget) {\r\n                    throw 'This elemenet has been used as an attachment';\r\n                }\r\n            }\r\n            return this;\r\n        };\r\n        Group.prototype.addBefore = function (child, nextSibling) {\r\n            if (child && child !== this && child.parent !== this\r\n                && nextSibling && nextSibling.parent === this) {\r\n                var children = this._children;\r\n                var idx = children.indexOf(nextSibling);\r\n                if (idx >= 0) {\r\n                    children.splice(idx, 0, child);\r\n                    this._doAdd(child);\r\n                }\r\n            }\r\n            return this;\r\n        };\r\n        Group.prototype.replaceAt = function (child, index) {\r\n            var children = this._children;\r\n            var old = children[index];\r\n            if (child && child !== this && child.parent !== this && child !== old) {\r\n                children[index] = child;\r\n                old.parent = null;\r\n                var zr = this.__zr;\r\n                if (zr) {\r\n                    old.removeSelfFromZr(zr);\r\n                }\r\n                this._doAdd(child);\r\n            }\r\n            return this;\r\n        };\r\n        Group.prototype._doAdd = function (child) {\r\n            if (child.parent) {\r\n                child.parent.remove(child);\r\n            }\r\n            child.parent = this;\r\n            var zr = this.__zr;\r\n            if (zr && zr !== child.__zr) {\r\n                child.addSelfToZr(zr);\r\n            }\r\n            zr && zr.refresh();\r\n        };\r\n        Group.prototype.remove = function (child) {\r\n            var zr = this.__zr;\r\n            var children = this._children;\r\n            var idx = indexOf(children, child);\r\n            if (idx < 0) {\r\n                return this;\r\n            }\r\n            children.splice(idx, 1);\r\n            child.parent = null;\r\n            if (zr) {\r\n                child.removeSelfFromZr(zr);\r\n            }\r\n            zr && zr.refresh();\r\n            return this;\r\n        };\r\n        Group.prototype.removeAll = function () {\r\n            var children = this._children;\r\n            var zr = this.__zr;\r\n            for (var i = 0; i < children.length; i++) {\r\n                var child = children[i];\r\n                if (zr) {\r\n                    child.removeSelfFromZr(zr);\r\n                }\r\n                child.parent = null;\r\n            }\r\n            children.length = 0;\r\n            return this;\r\n        };\r\n        Group.prototype.eachChild = function (cb, context) {\r\n            var children = this._children;\r\n            for (var i = 0; i < children.length; i++) {\r\n                var child = children[i];\r\n                cb.call(context, child, i);\r\n            }\r\n            return this;\r\n        };\r\n        Group.prototype.traverse = function (cb, context) {\r\n            for (var i = 0; i < this._children.length; i++) {\r\n                var child = this._children[i];\r\n                var stopped = cb.call(context, child);\r\n                if (child.isGroup && !stopped) {\r\n                    child.traverse(cb, context);\r\n                }\r\n            }\r\n            return this;\r\n        };\r\n        Group.prototype.addSelfToZr = function (zr) {\r\n            _super.prototype.addSelfToZr.call(this, zr);\r\n            for (var i = 0; i < this._children.length; i++) {\r\n                var child = this._children[i];\r\n                child.addSelfToZr(zr);\r\n            }\r\n        };\r\n        Group.prototype.removeSelfFromZr = function (zr) {\r\n            _super.prototype.removeSelfFromZr.call(this, zr);\r\n            for (var i = 0; i < this._children.length; i++) {\r\n                var child = this._children[i];\r\n                child.removeSelfFromZr(zr);\r\n            }\r\n        };\r\n        Group.prototype.getBoundingRect = function (includeChildren) {\r\n            var tmpRect = new BoundingRect(0, 0, 0, 0);\r\n            var children = includeChildren || this._children;\r\n            var tmpMat = [];\r\n            var rect = null;\r\n            for (var i = 0; i < children.length; i++) {\r\n                var child = children[i];\r\n                if (child.ignore || child.invisible) {\r\n                    continue;\r\n                }\r\n                var childRect = child.getBoundingRect();\r\n                var transform = child.getLocalTransform(tmpMat);\r\n                if (transform) {\r\n                    BoundingRect.applyTransform(tmpRect, childRect, transform);\r\n                    rect = rect || tmpRect.clone();\r\n                    rect.union(tmpRect);\r\n                }\r\n                else {\r\n                    rect = rect || childRect.clone();\r\n                    rect.union(childRect);\r\n                }\r\n            }\r\n            return rect || tmpRect;\r\n        };\r\n        return Group;\r\n    }(Element));\r\n    Group.prototype.type = 'group';\n\n    var DEFAULT_IMAGE_STYLE = defaults({\r\n        x: 0,\r\n        y: 0\r\n    }, DEFAULT_COMMON_STYLE);\r\n    var DEFAULT_IMAGE_ANIMATION_PROPS = {\r\n        style: defaults({\r\n            x: true,\r\n            y: true,\r\n            width: true,\r\n            height: true,\r\n            sx: true,\r\n            sy: true,\r\n            sWidth: true,\r\n            sHeight: true\r\n        }, DEFAULT_COMMON_ANIMATION_PROPS.style)\r\n    };\r\n    function isImageLike(source) {\r\n        return !!(source\r\n            && typeof source !== 'string'\r\n            && source.width && source.height);\r\n    }\r\n    var ZRImage = (function (_super) {\r\n        __extends(ZRImage, _super);\r\n        function ZRImage() {\r\n            return _super !== null && _super.apply(this, arguments) || this;\r\n        }\r\n        ZRImage.prototype.createStyle = function (obj) {\r\n            return createObject(DEFAULT_IMAGE_STYLE, obj);\r\n        };\r\n        ZRImage.prototype._getSize = function (dim) {\r\n            var style = this.style;\r\n            var size = style[dim];\r\n            if (size != null) {\r\n                return size;\r\n            }\r\n            var imageSource = isImageLike(style.image)\r\n                ? style.image : this.__image;\r\n            if (!imageSource) {\r\n                return 0;\r\n            }\r\n            var otherDim = dim === 'width' ? 'height' : 'width';\r\n            var otherDimSize = style[otherDim];\r\n            if (otherDimSize == null) {\r\n                return imageSource[dim];\r\n            }\r\n            else {\r\n                return imageSource[dim] / imageSource[otherDim] * otherDimSize;\r\n            }\r\n        };\r\n        ZRImage.prototype.getWidth = function () {\r\n            return this._getSize('width');\r\n        };\r\n        ZRImage.prototype.getHeight = function () {\r\n            return this._getSize('height');\r\n        };\r\n        ZRImage.prototype.getAnimationStyleProps = function () {\r\n            return DEFAULT_IMAGE_ANIMATION_PROPS;\r\n        };\r\n        ZRImage.prototype.getBoundingRect = function () {\r\n            var style = this.style;\r\n            if (!this._rect) {\r\n                this._rect = new BoundingRect(style.x || 0, style.y || 0, this.getWidth(), this.getHeight());\r\n            }\r\n            return this._rect;\r\n        };\r\n        return ZRImage;\r\n    }(Displayable));\r\n    ZRImage.prototype.type = 'image';\n\n    var CircleShape = (function () {\r\n        function CircleShape() {\r\n            this.cx = 0;\r\n            this.cy = 0;\r\n            this.r = 0;\r\n        }\r\n        return CircleShape;\r\n    }());\r\n    var Circle = (function (_super) {\r\n        __extends(Circle, _super);\r\n        function Circle(opts) {\r\n            return _super.call(this, opts) || this;\r\n        }\r\n        Circle.prototype.getDefaultShape = function () {\r\n            return new CircleShape();\r\n        };\r\n        Circle.prototype.buildPath = function (ctx, shape, inBundle) {\r\n            if (inBundle) {\r\n                ctx.moveTo(shape.cx + shape.r, shape.cy);\r\n            }\r\n            ctx.arc(shape.cx, shape.cy, shape.r, 0, Math.PI * 2);\r\n        };\r\n        return Circle;\r\n    }(Path));\r\n    Circle.prototype.type = 'circle';\n\n    function buildPath(ctx, shape) {\r\n        var x = shape.x;\r\n        var y = shape.y;\r\n        var width = shape.width;\r\n        var height = shape.height;\r\n        var r = shape.r;\r\n        var r1;\r\n        var r2;\r\n        var r3;\r\n        var r4;\r\n        if (width < 0) {\r\n            x = x + width;\r\n            width = -width;\r\n        }\r\n        if (height < 0) {\r\n            y = y + height;\r\n            height = -height;\r\n        }\r\n        if (typeof r === 'number') {\r\n            r1 = r2 = r3 = r4 = r;\r\n        }\r\n        else if (r instanceof Array) {\r\n            if (r.length === 1) {\r\n                r1 = r2 = r3 = r4 = r[0];\r\n            }\r\n            else if (r.length === 2) {\r\n                r1 = r3 = r[0];\r\n                r2 = r4 = r[1];\r\n            }\r\n            else if (r.length === 3) {\r\n                r1 = r[0];\r\n                r2 = r4 = r[1];\r\n                r3 = r[2];\r\n            }\r\n            else {\r\n                r1 = r[0];\r\n                r2 = r[1];\r\n                r3 = r[2];\r\n                r4 = r[3];\r\n            }\r\n        }\r\n        else {\r\n            r1 = r2 = r3 = r4 = 0;\r\n        }\r\n        var total;\r\n        if (r1 + r2 > width) {\r\n            total = r1 + r2;\r\n            r1 *= width / total;\r\n            r2 *= width / total;\r\n        }\r\n        if (r3 + r4 > width) {\r\n            total = r3 + r4;\r\n            r3 *= width / total;\r\n            r4 *= width / total;\r\n        }\r\n        if (r2 + r3 > height) {\r\n            total = r2 + r3;\r\n            r2 *= height / total;\r\n            r3 *= height / total;\r\n        }\r\n        if (r1 + r4 > height) {\r\n            total = r1 + r4;\r\n            r1 *= height / total;\r\n            r4 *= height / total;\r\n        }\r\n        ctx.moveTo(x + r1, y);\r\n        ctx.lineTo(x + width - r2, y);\r\n        r2 !== 0 && ctx.arc(x + width - r2, y + r2, r2, -Math.PI / 2, 0);\r\n        ctx.lineTo(x + width, y + height - r3);\r\n        r3 !== 0 && ctx.arc(x + width - r3, y + height - r3, r3, 0, Math.PI / 2);\r\n        ctx.lineTo(x + r4, y + height);\r\n        r4 !== 0 && ctx.arc(x + r4, y + height - r4, r4, Math.PI / 2, Math.PI);\r\n        ctx.lineTo(x, y + r1);\r\n        r1 !== 0 && ctx.arc(x + r1, y + r1, r1, Math.PI, Math.PI * 1.5);\r\n    }\n\n    var round = Math.round;\r\n    function subPixelOptimizeLine(outputShape, inputShape, style) {\r\n        if (!inputShape) {\r\n            return;\r\n        }\r\n        var x1 = inputShape.x1;\r\n        var x2 = inputShape.x2;\r\n        var y1 = inputShape.y1;\r\n        var y2 = inputShape.y2;\r\n        outputShape.x1 = x1;\r\n        outputShape.x2 = x2;\r\n        outputShape.y1 = y1;\r\n        outputShape.y2 = y2;\r\n        var lineWidth = style && style.lineWidth;\r\n        if (!lineWidth) {\r\n            return outputShape;\r\n        }\r\n        if (round(x1 * 2) === round(x2 * 2)) {\r\n            outputShape.x1 = outputShape.x2 = subPixelOptimize(x1, lineWidth, true);\r\n        }\r\n        if (round(y1 * 2) === round(y2 * 2)) {\r\n            outputShape.y1 = outputShape.y2 = subPixelOptimize(y1, lineWidth, true);\r\n        }\r\n        return outputShape;\r\n    }\r\n    function subPixelOptimizeRect(outputShape, inputShape, style) {\r\n        if (!inputShape) {\r\n            return;\r\n        }\r\n        var originX = inputShape.x;\r\n        var originY = inputShape.y;\r\n        var originWidth = inputShape.width;\r\n        var originHeight = inputShape.height;\r\n        outputShape.x = originX;\r\n        outputShape.y = originY;\r\n        outputShape.width = originWidth;\r\n        outputShape.height = originHeight;\r\n        var lineWidth = style && style.lineWidth;\r\n        if (!lineWidth) {\r\n            return outputShape;\r\n        }\r\n        outputShape.x = subPixelOptimize(originX, lineWidth, true);\r\n        outputShape.y = subPixelOptimize(originY, lineWidth, true);\r\n        outputShape.width = Math.max(subPixelOptimize(originX + originWidth, lineWidth, false) - outputShape.x, originWidth === 0 ? 0 : 1);\r\n        outputShape.height = Math.max(subPixelOptimize(originY + originHeight, lineWidth, false) - outputShape.y, originHeight === 0 ? 0 : 1);\r\n        return outputShape;\r\n    }\r\n    function subPixelOptimize(position, lineWidth, positiveOrNegative) {\r\n        if (!lineWidth) {\r\n            return position;\r\n        }\r\n        var doubledPosition = round(position * 2);\r\n        return (doubledPosition + round(lineWidth)) % 2 === 0\r\n            ? doubledPosition / 2\r\n            : (doubledPosition + (positiveOrNegative ? 1 : -1)) / 2;\r\n    }\n\n    var RectShape = (function () {\r\n        function RectShape() {\r\n            this.x = 0;\r\n            this.y = 0;\r\n            this.width = 0;\r\n            this.height = 0;\r\n        }\r\n        return RectShape;\r\n    }());\r\n    var subPixelOptimizeOutputShape = {};\r\n    var Rect = (function (_super) {\r\n        __extends(Rect, _super);\r\n        function Rect(opts) {\r\n            return _super.call(this, opts) || this;\r\n        }\r\n        Rect.prototype.getDefaultShape = function () {\r\n            return new RectShape();\r\n        };\r\n        Rect.prototype.buildPath = function (ctx, shape) {\r\n            var x;\r\n            var y;\r\n            var width;\r\n            var height;\r\n            if (this.subPixelOptimize) {\r\n                var optimizedShape = subPixelOptimizeRect(subPixelOptimizeOutputShape, shape, this.style);\r\n                x = optimizedShape.x;\r\n                y = optimizedShape.y;\r\n                width = optimizedShape.width;\r\n                height = optimizedShape.height;\r\n                optimizedShape.r = shape.r;\r\n                shape = optimizedShape;\r\n            }\r\n            else {\r\n                x = shape.x;\r\n                y = shape.y;\r\n                width = shape.width;\r\n                height = shape.height;\r\n            }\r\n            if (!shape.r) {\r\n                ctx.rect(x, y, width, height);\r\n            }\r\n            else {\r\n                buildPath(ctx, shape);\r\n            }\r\n        };\r\n        Rect.prototype.isZeroArea = function () {\r\n            return !this.shape.width || !this.shape.height;\r\n        };\r\n        return Rect;\r\n    }(Path));\r\n    Rect.prototype.type = 'rect';\n\n    var EllipseShape = (function () {\r\n        function EllipseShape() {\r\n            this.cx = 0;\r\n            this.cy = 0;\r\n            this.rx = 0;\r\n            this.ry = 0;\r\n        }\r\n        return EllipseShape;\r\n    }());\r\n    var Ellipse = (function (_super) {\r\n        __extends(Ellipse, _super);\r\n        function Ellipse(opts) {\r\n            return _super.call(this, opts) || this;\r\n        }\r\n        Ellipse.prototype.getDefaultShape = function () {\r\n            return new EllipseShape();\r\n        };\r\n        Ellipse.prototype.buildPath = function (ctx, shape) {\r\n            var k = 0.5522848;\r\n            var x = shape.cx;\r\n            var y = shape.cy;\r\n            var a = shape.rx;\r\n            var b = shape.ry;\r\n            var ox = a * k;\r\n            var oy = b * k;\r\n            ctx.moveTo(x - a, y);\r\n            ctx.bezierCurveTo(x - a, y - oy, x - ox, y - b, x, y - b);\r\n            ctx.bezierCurveTo(x + ox, y - b, x + a, y - oy, x + a, y);\r\n            ctx.bezierCurveTo(x + a, y + oy, x + ox, y + b, x, y + b);\r\n            ctx.bezierCurveTo(x - ox, y + b, x - a, y + oy, x - a, y);\r\n            ctx.closePath();\r\n        };\r\n        return Ellipse;\r\n    }(Path));\r\n    Ellipse.prototype.type = 'ellipse';\n\n    var subPixelOptimizeOutputShape$1 = {};\r\n    var LineShape = (function () {\r\n        function LineShape() {\r\n            this.x1 = 0;\r\n            this.y1 = 0;\r\n            this.x2 = 0;\r\n            this.y2 = 0;\r\n            this.percent = 1;\r\n        }\r\n        return LineShape;\r\n    }());\r\n    var Line = (function (_super) {\r\n        __extends(Line, _super);\r\n        function Line(opts) {\r\n            return _super.call(this, opts) || this;\r\n        }\r\n        Line.prototype.getDefaultStyle = function () {\r\n            return {\r\n                stroke: '#000',\r\n                fill: null\r\n            };\r\n        };\r\n        Line.prototype.getDefaultShape = function () {\r\n            return new LineShape();\r\n        };\r\n        Line.prototype.buildPath = function (ctx, shape) {\r\n            var x1;\r\n            var y1;\r\n            var x2;\r\n            var y2;\r\n            if (this.subPixelOptimize) {\r\n                var optimizedShape = subPixelOptimizeLine(subPixelOptimizeOutputShape$1, shape, this.style);\r\n                x1 = optimizedShape.x1;\r\n                y1 = optimizedShape.y1;\r\n                x2 = optimizedShape.x2;\r\n                y2 = optimizedShape.y2;\r\n            }\r\n            else {\r\n                x1 = shape.x1;\r\n                y1 = shape.y1;\r\n                x2 = shape.x2;\r\n                y2 = shape.y2;\r\n            }\r\n            var percent = shape.percent;\r\n            if (percent === 0) {\r\n                return;\r\n            }\r\n            ctx.moveTo(x1, y1);\r\n            if (percent < 1) {\r\n                x2 = x1 * (1 - percent) + x2 * percent;\r\n                y2 = y1 * (1 - percent) + y2 * percent;\r\n            }\r\n            ctx.lineTo(x2, y2);\r\n        };\r\n        Line.prototype.pointAt = function (p) {\r\n            var shape = this.shape;\r\n            return [\r\n                shape.x1 * (1 - p) + shape.x2 * p,\r\n                shape.y1 * (1 - p) + shape.y2 * p\r\n            ];\r\n        };\r\n        return Line;\r\n    }(Path));\r\n    Line.prototype.type = 'line';\n\n    function interpolate(p0, p1, p2, p3, t, t2, t3) {\r\n        var v0 = (p2 - p0) * 0.5;\r\n        var v1 = (p3 - p1) * 0.5;\r\n        return (2 * (p1 - p2) + v0 + v1) * t3\r\n            + (-3 * (p1 - p2) - 2 * v0 - v1) * t2\r\n            + v0 * t + p1;\r\n    }\r\n    function smoothSpline(points, isLoop) {\r\n        var len = points.length;\r\n        var ret = [];\r\n        var distance$1 = 0;\r\n        for (var i = 1; i < len; i++) {\r\n            distance$1 += distance(points[i - 1], points[i]);\r\n        }\r\n        var segs = distance$1 / 2;\r\n        segs = segs < len ? len : segs;\r\n        for (var i = 0; i < segs; i++) {\r\n            var pos = i / (segs - 1) * (isLoop ? len : len - 1);\r\n            var idx = Math.floor(pos);\r\n            var w = pos - idx;\r\n            var p0 = void 0;\r\n            var p1 = points[idx % len];\r\n            var p2 = void 0;\r\n            var p3 = void 0;\r\n            if (!isLoop) {\r\n                p0 = points[idx === 0 ? idx : idx - 1];\r\n                p2 = points[idx > len - 2 ? len - 1 : idx + 1];\r\n                p3 = points[idx > len - 3 ? len - 1 : idx + 2];\r\n            }\r\n            else {\r\n                p0 = points[(idx - 1 + len) % len];\r\n                p2 = points[(idx + 1) % len];\r\n                p3 = points[(idx + 2) % len];\r\n            }\r\n            var w2 = w * w;\r\n            var w3 = w * w2;\r\n            ret.push([\r\n                interpolate(p0[0], p1[0], p2[0], p3[0], w, w2, w3),\r\n                interpolate(p0[1], p1[1], p2[1], p3[1], w, w2, w3)\r\n            ]);\r\n        }\r\n        return ret;\r\n    }\n\n    function smoothBezier(points, smooth, isLoop, constraint) {\r\n        var cps = [];\r\n        var v = [];\r\n        var v1 = [];\r\n        var v2 = [];\r\n        var prevPoint;\r\n        var nextPoint;\r\n        var min$1;\r\n        var max$1;\r\n        if (constraint) {\r\n            min$1 = [Infinity, Infinity];\r\n            max$1 = [-Infinity, -Infinity];\r\n            for (var i = 0, len = points.length; i < len; i++) {\r\n                min(min$1, min$1, points[i]);\r\n                max(max$1, max$1, points[i]);\r\n            }\r\n            min(min$1, min$1, constraint[0]);\r\n            max(max$1, max$1, constraint[1]);\r\n        }\r\n        for (var i = 0, len = points.length; i < len; i++) {\r\n            var point = points[i];\r\n            if (isLoop) {\r\n                prevPoint = points[i ? i - 1 : len - 1];\r\n                nextPoint = points[(i + 1) % len];\r\n            }\r\n            else {\r\n                if (i === 0 || i === len - 1) {\r\n                    cps.push(clone$1(points[i]));\r\n                    continue;\r\n                }\r\n                else {\r\n                    prevPoint = points[i - 1];\r\n                    nextPoint = points[i + 1];\r\n                }\r\n            }\r\n            sub(v, nextPoint, prevPoint);\r\n            scale(v, v, smooth);\r\n            var d0 = distance(point, prevPoint);\r\n            var d1 = distance(point, nextPoint);\r\n            var sum = d0 + d1;\r\n            if (sum !== 0) {\r\n                d0 /= sum;\r\n                d1 /= sum;\r\n            }\r\n            scale(v1, v, -d0);\r\n            scale(v2, v, d1);\r\n            var cp0 = add([], point, v1);\r\n            var cp1 = add([], point, v2);\r\n            if (constraint) {\r\n                max(cp0, cp0, min$1);\r\n                min(cp0, cp0, max$1);\r\n                max(cp1, cp1, min$1);\r\n                min(cp1, cp1, max$1);\r\n            }\r\n            cps.push(cp0);\r\n            cps.push(cp1);\r\n        }\r\n        if (isLoop) {\r\n            cps.push(cps.shift());\r\n        }\r\n        return cps;\r\n    }\n\n    function buildPath$1(ctx, shape, closePath) {\r\n        var smooth = shape.smooth;\r\n        var points = shape.points;\r\n        if (points && points.length >= 2) {\r\n            if (smooth && smooth !== 'spline') {\r\n                var controlPoints = smoothBezier(points, smooth, closePath, shape.smoothConstraint);\r\n                ctx.moveTo(points[0][0], points[0][1]);\r\n                var len = points.length;\r\n                for (var i = 0; i < (closePath ? len : len - 1); i++) {\r\n                    var cp1 = controlPoints[i * 2];\r\n                    var cp2 = controlPoints[i * 2 + 1];\r\n                    var p = points[(i + 1) % len];\r\n                    ctx.bezierCurveTo(cp1[0], cp1[1], cp2[0], cp2[1], p[0], p[1]);\r\n                }\r\n            }\r\n            else {\r\n                if (smooth === 'spline') {\r\n                    points = smoothSpline(points, closePath);\r\n                }\r\n                ctx.moveTo(points[0][0], points[0][1]);\r\n                for (var i = 1, l = points.length; i < l; i++) {\r\n                    ctx.lineTo(points[i][0], points[i][1]);\r\n                }\r\n            }\r\n            closePath && ctx.closePath();\r\n        }\r\n    }\n\n    var PolygonShape = (function () {\r\n        function PolygonShape() {\r\n            this.points = null;\r\n            this.smooth = 0;\r\n            this.smoothConstraint = null;\r\n        }\r\n        return PolygonShape;\r\n    }());\r\n    var Polygon = (function (_super) {\r\n        __extends(Polygon, _super);\r\n        function Polygon(opts) {\r\n            return _super.call(this, opts) || this;\r\n        }\r\n        Polygon.prototype.getDefaultShape = function () {\r\n            return new PolygonShape();\r\n        };\r\n        Polygon.prototype.buildPath = function (ctx, shape) {\r\n            buildPath$1(ctx, shape, true);\r\n        };\r\n        return Polygon;\r\n    }(Path));\r\n    Polygon.prototype.type = 'polygon';\n\n    var PolylineShape = (function () {\r\n        function PolylineShape() {\r\n            this.points = null;\r\n            this.percent = 1;\r\n            this.smooth = 0;\r\n            this.smoothConstraint = null;\r\n        }\r\n        return PolylineShape;\r\n    }());\r\n    var Polyline = (function (_super) {\r\n        __extends(Polyline, _super);\r\n        function Polyline(opts) {\r\n            return _super.call(this, opts) || this;\r\n        }\r\n        Polyline.prototype.getDefaultStyle = function () {\r\n            return {\r\n                stroke: '#000',\r\n                fill: null\r\n            };\r\n        };\r\n        Polyline.prototype.getDefaultShape = function () {\r\n            return new PolylineShape();\r\n        };\r\n        Polyline.prototype.buildPath = function (ctx, shape) {\r\n            buildPath$1(ctx, shape, false);\r\n        };\r\n        return Polyline;\r\n    }(Path));\r\n    Polyline.prototype.type = 'polyline';\n\n    var Gradient = (function () {\r\n        function Gradient(colorStops) {\r\n            this.colorStops = colorStops || [];\r\n        }\r\n        Gradient.prototype.addColorStop = function (offset, color) {\r\n            this.colorStops.push({\r\n                offset: offset,\r\n                color: color\r\n            });\r\n        };\r\n        return Gradient;\r\n    }());\n\n    var LinearGradient = (function (_super) {\r\n        __extends(LinearGradient, _super);\r\n        function LinearGradient(x, y, x2, y2, colorStops, globalCoord) {\r\n            var _this = _super.call(this, colorStops) || this;\r\n            _this.x = x == null ? 0 : x;\r\n            _this.y = y == null ? 0 : y;\r\n            _this.x2 = x2 == null ? 1 : x2;\r\n            _this.y2 = y2 == null ? 0 : y2;\r\n            _this.type = 'linear';\r\n            _this.global = globalCoord || false;\r\n            return _this;\r\n        }\r\n        return LinearGradient;\r\n    }(Gradient));\n\n    var DEFAULT_TSPAN_STYLE = defaults({\r\n        strokeFirst: true,\r\n        font: DEFAULT_FONT,\r\n        x: 0,\r\n        y: 0,\r\n        textAlign: 'left',\r\n        textBaseline: 'top',\r\n        miterLimit: 2\r\n    }, DEFAULT_PATH_STYLE);\r\n    var TSpan = (function (_super) {\r\n        __extends(TSpan, _super);\r\n        function TSpan() {\r\n            return _super !== null && _super.apply(this, arguments) || this;\r\n        }\r\n        TSpan.prototype.hasStroke = function () {\r\n            var style = this.style;\r\n            var stroke = style.stroke;\r\n            return stroke != null && stroke !== 'none' && style.lineWidth > 0;\r\n        };\r\n        TSpan.prototype.hasFill = function () {\r\n            var style = this.style;\r\n            var fill = style.fill;\r\n            return fill != null && fill !== 'none';\r\n        };\r\n        TSpan.prototype.createStyle = function (obj) {\r\n            return createObject(DEFAULT_TSPAN_STYLE, obj);\r\n        };\r\n        TSpan.prototype.setBoundingRect = function (rect) {\r\n            this._rect = rect;\r\n        };\r\n        TSpan.prototype.getBoundingRect = function () {\r\n            var style = this.style;\r\n            if (!this._rect) {\r\n                var text = style.text;\r\n                text != null ? (text += '') : (text = '');\r\n                var rect = getBoundingRect(text, style.font, style.textAlign, style.textBaseline);\r\n                rect.x += style.x || 0;\r\n                rect.y += style.y || 0;\r\n                if (this.hasStroke()) {\r\n                    var w = style.lineWidth;\r\n                    rect.x -= w / 2;\r\n                    rect.y -= w / 2;\r\n                    rect.width += w;\r\n                    rect.height += w;\r\n                }\r\n                this._rect = rect;\r\n            }\r\n            return this._rect;\r\n        };\r\n        TSpan.initDefaultProps = (function () {\r\n            var tspanProto = TSpan.prototype;\r\n            tspanProto.dirtyRectTolerance = 10;\r\n        })();\r\n        return TSpan;\r\n    }(Displayable));\r\n    TSpan.prototype.type = 'tspan';\n\n    function parseXML(svg) {\r\n        if (isString(svg)) {\r\n            var parser = new DOMParser();\r\n            svg = parser.parseFromString(svg, 'text/xml');\r\n        }\r\n        var svgNode = svg;\r\n        if (svgNode.nodeType === 9) {\r\n            svgNode = svgNode.firstChild;\r\n        }\r\n        while (svgNode.nodeName.toLowerCase() !== 'svg' || svgNode.nodeType !== 1) {\r\n            svgNode = svgNode.nextSibling;\r\n        }\r\n        return svgNode;\r\n    }\n\n    var PI$2 = Math.PI;\r\n    var PI2$5 = PI$2 * 2;\r\n    var mathSin$3 = Math.sin;\r\n    var mathCos$3 = Math.cos;\r\n    var mathACos = Math.acos;\r\n    var mathATan2 = Math.atan2;\r\n    var mathAbs$1 = Math.abs;\r\n    var mathSqrt$4 = Math.sqrt;\r\n    var mathMax$3 = Math.max;\r\n    var mathMin$3 = Math.min;\r\n    var e = 1e-4;\r\n    function intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\r\n        var x10 = x1 - x0;\r\n        var y10 = y1 - y0;\r\n        var x32 = x3 - x2;\r\n        var y32 = y3 - y2;\r\n        var t = y32 * x10 - x32 * y10;\r\n        if (t * t < e) {\r\n            return;\r\n        }\r\n        t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;\r\n        return [x0 + t * x10, y0 + t * y10];\r\n    }\r\n    function computeCornerTangents(x0, y0, x1, y1, radius, cr, clockwise) {\r\n        var x01 = x0 - x1;\r\n        var y01 = y0 - y1;\r\n        var lo = (clockwise ? cr : -cr) / mathSqrt$4(x01 * x01 + y01 * y01);\r\n        var ox = lo * y01;\r\n        var oy = -lo * x01;\r\n        var x11 = x0 + ox;\r\n        var y11 = y0 + oy;\r\n        var x10 = x1 + ox;\r\n        var y10 = y1 + oy;\r\n        var x00 = (x11 + x10) / 2;\r\n        var y00 = (y11 + y10) / 2;\r\n        var dx = x10 - x11;\r\n        var dy = y10 - y11;\r\n        var d2 = dx * dx + dy * dy;\r\n        var r = radius - cr;\r\n        var s = x11 * y10 - x10 * y11;\r\n        var d = (dy < 0 ? -1 : 1) * mathSqrt$4(mathMax$3(0, r * r * d2 - s * s));\r\n        var cx0 = (s * dy - dx * d) / d2;\r\n        var cy0 = (-s * dx - dy * d) / d2;\r\n        var cx1 = (s * dy + dx * d) / d2;\r\n        var cy1 = (-s * dx + dy * d) / d2;\r\n        var dx0 = cx0 - x00;\r\n        var dy0 = cy0 - y00;\r\n        var dx1 = cx1 - x00;\r\n        var dy1 = cy1 - y00;\r\n        if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) {\r\n            cx0 = cx1;\r\n            cy0 = cy1;\r\n        }\r\n        return {\r\n            cx: cx0,\r\n            cy: cy0,\r\n            x01: -ox,\r\n            y01: -oy,\r\n            x11: cx0 * (radius / r - 1),\r\n            y11: cy0 * (radius / r - 1)\r\n        };\r\n    }\r\n    function buildPath$2(ctx, shape) {\r\n        var radius = mathMax$3(shape.r, 0);\r\n        var innerRadius = mathMax$3(shape.r0 || 0, 0);\r\n        var hasRadius = radius > 0;\r\n        var hasInnerRadius = innerRadius > 0;\r\n        if (!hasRadius && !hasInnerRadius) {\r\n            return;\r\n        }\r\n        if (!hasRadius) {\r\n            radius = innerRadius;\r\n            innerRadius = 0;\r\n        }\r\n        if (innerRadius > radius) {\r\n            var tmp = radius;\r\n            radius = innerRadius;\r\n            innerRadius = tmp;\r\n        }\r\n        var clockwise = !!shape.clockwise;\r\n        var startAngle = shape.startAngle;\r\n        var endAngle = shape.endAngle;\r\n        var tmpAngles = [startAngle, endAngle];\r\n        normalizeArcAngles(tmpAngles, !clockwise);\r\n        var arc = mathAbs$1(tmpAngles[0] - tmpAngles[1]);\r\n        var x = shape.cx;\r\n        var y = shape.cy;\r\n        var cornerRadius = shape.cornerRadius || 0;\r\n        var innerCornerRadius = shape.innerCornerRadius || 0;\r\n        if (!(radius > e)) {\r\n            ctx.moveTo(x, y);\r\n        }\r\n        else if (arc > PI2$5 - e) {\r\n            ctx.moveTo(x + radius * mathCos$3(startAngle), y + radius * mathSin$3(startAngle));\r\n            ctx.arc(x, y, radius, startAngle, endAngle, !clockwise);\r\n            if (innerRadius > e) {\r\n                ctx.moveTo(x + innerRadius * mathCos$3(endAngle), y + innerRadius * mathSin$3(endAngle));\r\n                ctx.arc(x, y, innerRadius, endAngle, startAngle, clockwise);\r\n            }\r\n        }\r\n        else {\r\n            var halfRd = mathAbs$1(radius - innerRadius) / 2;\r\n            var cr = mathMin$3(halfRd, cornerRadius);\r\n            var icr = mathMin$3(halfRd, innerCornerRadius);\r\n            var cr0 = icr;\r\n            var cr1 = cr;\r\n            var xrs = radius * mathCos$3(startAngle);\r\n            var yrs = radius * mathSin$3(startAngle);\r\n            var xire = innerRadius * mathCos$3(endAngle);\r\n            var yire = innerRadius * mathSin$3(endAngle);\r\n            var xre = void 0;\r\n            var yre = void 0;\r\n            var xirs = void 0;\r\n            var yirs = void 0;\r\n            if (cr > e || icr > e) {\r\n                xre = radius * mathCos$3(endAngle);\r\n                yre = radius * mathSin$3(endAngle);\r\n                xirs = innerRadius * mathCos$3(startAngle);\r\n                yirs = innerRadius * mathSin$3(startAngle);\r\n                if (arc < PI$2) {\r\n                    var it_1 = intersect(xrs, yrs, xirs, yirs, xre, yre, xire, yire);\r\n                    if (it_1) {\r\n                        var x0 = xrs - it_1[0];\r\n                        var y0 = yrs - it_1[1];\r\n                        var x1 = xre - it_1[0];\r\n                        var y1 = yre - it_1[1];\r\n                        var a = 1 / mathSin$3(mathACos((x0 * x1 + y0 * y1) / (mathSqrt$4(x0 * x0 + y0 * y0) * mathSqrt$4(x1 * x1 + y1 * y1))) / 2);\r\n                        var b = mathSqrt$4(it_1[0] * it_1[0] + it_1[1] * it_1[1]);\r\n                        cr0 = mathMin$3(icr, (innerRadius - b) / (a - 1));\r\n                        cr1 = mathMin$3(cr, (radius - b) / (a + 1));\r\n                    }\r\n                }\r\n            }\r\n            if (!(arc > e)) {\r\n                ctx.moveTo(x + xrs, y + yrs);\r\n            }\r\n            else if (cr1 > e) {\r\n                var ct0 = computeCornerTangents(xirs, yirs, xrs, yrs, radius, cr1, clockwise);\r\n                var ct1 = computeCornerTangents(xre, yre, xire, yire, radius, cr1, clockwise);\r\n                ctx.moveTo(x + ct0.cx + ct0.x01, y + ct0.cy + ct0.y01);\r\n                if (cr1 < cr) {\r\n                    ctx.arc(x + ct0.cx, y + ct0.cy, cr1, mathATan2(ct0.y01, ct0.x01), mathATan2(ct1.y01, ct1.x01), !clockwise);\r\n                }\r\n                else {\r\n                    ctx.arc(x + ct0.cx, y + ct0.cy, cr1, mathATan2(ct0.y01, ct0.x01), mathATan2(ct0.y11, ct0.x11), !clockwise);\r\n                    ctx.arc(x, y, radius, mathATan2(ct0.cy + ct0.y11, ct0.cx + ct0.x11), mathATan2(ct1.cy + ct1.y11, ct1.cx + ct1.x11), !clockwise);\r\n                    ctx.arc(x + ct1.cx, y + ct1.cy, cr1, mathATan2(ct1.y11, ct1.x11), mathATan2(ct1.y01, ct1.x01), !clockwise);\r\n                }\r\n            }\r\n            else {\r\n                ctx.moveTo(x + xrs, y + yrs);\r\n                ctx.arc(x, y, radius, startAngle, endAngle, !clockwise);\r\n            }\r\n            if (!(innerRadius > e) || !(arc > e)) {\r\n                ctx.lineTo(x + xire, y + yire);\r\n            }\r\n            else if (cr0 > e) {\r\n                var ct0 = computeCornerTangents(xire, yire, xre, yre, innerRadius, -cr0, clockwise);\r\n                var ct1 = computeCornerTangents(xrs, yrs, xirs, yirs, innerRadius, -cr0, clockwise);\r\n                ctx.lineTo(x + ct0.cx + ct0.x01, y + ct0.cy + ct0.y01);\r\n                if (cr0 < icr) {\r\n                    ctx.arc(x + ct0.cx, y + ct0.cy, cr0, mathATan2(ct0.y01, ct0.x01), mathATan2(ct1.y01, ct1.x01), !clockwise);\r\n                }\r\n                else {\r\n                    ctx.arc(x + ct0.cx, y + ct0.cy, cr0, mathATan2(ct0.y01, ct0.x01), mathATan2(ct0.y11, ct0.x11), !clockwise);\r\n                    ctx.arc(x, y, innerRadius, mathATan2(ct0.cy + ct0.y11, ct0.cx + ct0.x11), mathATan2(ct1.cy + ct1.y11, ct1.cx + ct1.x11), clockwise);\r\n                    ctx.arc(x + ct1.cx, y + ct1.cy, cr0, mathATan2(ct1.y11, ct1.x11), mathATan2(ct1.y01, ct1.x01), !clockwise);\r\n                }\r\n            }\r\n            else {\r\n                ctx.lineTo(x + xire, y + yire);\r\n                ctx.arc(x, y, innerRadius, endAngle, startAngle, clockwise);\r\n            }\r\n        }\r\n        ctx.closePath();\r\n    }\n\n    var SectorShape = (function () {\r\n        function SectorShape() {\r\n            this.cx = 0;\r\n            this.cy = 0;\r\n            this.r0 = 0;\r\n            this.r = 0;\r\n            this.startAngle = 0;\r\n            this.endAngle = Math.PI * 2;\r\n            this.clockwise = true;\r\n            this.cornerRadius = 0;\r\n            this.innerCornerRadius = 0;\r\n        }\r\n        return SectorShape;\r\n    }());\r\n    var Sector = (function (_super) {\r\n        __extends(Sector, _super);\r\n        function Sector(opts) {\r\n            return _super.call(this, opts) || this;\r\n        }\r\n        Sector.prototype.getDefaultShape = function () {\r\n            return new SectorShape();\r\n        };\r\n        Sector.prototype.buildPath = function (ctx, shape) {\r\n            buildPath$2(ctx, shape);\r\n        };\r\n        Sector.prototype.isZeroArea = function () {\r\n            return this.shape.startAngle === this.shape.endAngle\r\n                || this.shape.r === this.shape.r0;\r\n        };\r\n        return Sector;\r\n    }(Path));\r\n    Sector.prototype.type = 'sector';\n\n    var CompoundPath = (function (_super) {\r\n        __extends(CompoundPath, _super);\r\n        function CompoundPath() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = 'compound';\r\n            return _this;\r\n        }\r\n        CompoundPath.prototype._updatePathDirty = function () {\r\n            var paths = this.shape.paths;\r\n            var dirtyPath = this.shapeChanged();\r\n            for (var i = 0; i < paths.length; i++) {\r\n                dirtyPath = dirtyPath || paths[i].shapeChanged();\r\n            }\r\n            if (dirtyPath) {\r\n                this.dirtyShape();\r\n            }\r\n        };\r\n        CompoundPath.prototype.beforeBrush = function () {\r\n            this._updatePathDirty();\r\n            var paths = this.shape.paths || [];\r\n            var scale = this.getGlobalScale();\r\n            for (var i = 0; i < paths.length; i++) {\r\n                if (!paths[i].path) {\r\n                    paths[i].createPathProxy();\r\n                }\r\n                paths[i].path.setScale(scale[0], scale[1], paths[i].segmentIgnoreThreshold);\r\n            }\r\n        };\r\n        CompoundPath.prototype.buildPath = function (ctx, shape) {\r\n            var paths = shape.paths || [];\r\n            for (var i = 0; i < paths.length; i++) {\r\n                paths[i].buildPath(ctx, paths[i].shape, true);\r\n            }\r\n        };\r\n        CompoundPath.prototype.afterBrush = function () {\r\n            var paths = this.shape.paths || [];\r\n            for (var i = 0; i < paths.length; i++) {\r\n                paths[i].pathUpdated();\r\n            }\r\n        };\r\n        CompoundPath.prototype.getBoundingRect = function () {\r\n            this._updatePathDirty.call(this);\r\n            return Path.prototype.getBoundingRect.call(this);\r\n        };\r\n        return CompoundPath;\r\n    }(Path));\n\n    var m = [];\r\n    var IncrementalDisplayble = (function (_super) {\r\n        __extends(IncrementalDisplayble, _super);\r\n        function IncrementalDisplayble() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.notClear = true;\r\n            _this.incremental = true;\r\n            _this._displayables = [];\r\n            _this._temporaryDisplayables = [];\r\n            _this._cursor = 0;\r\n            return _this;\r\n        }\r\n        IncrementalDisplayble.prototype.traverse = function (cb, context) {\r\n            cb.call(context, this);\r\n        };\r\n        IncrementalDisplayble.prototype.useStyle = function () {\r\n            this.style = {};\r\n        };\r\n        IncrementalDisplayble.prototype.getCursor = function () {\r\n            return this._cursor;\r\n        };\r\n        IncrementalDisplayble.prototype.innerAfterBrush = function () {\r\n            this._cursor = this._displayables.length;\r\n        };\r\n        IncrementalDisplayble.prototype.clearDisplaybles = function () {\r\n            this._displayables = [];\r\n            this._temporaryDisplayables = [];\r\n            this._cursor = 0;\r\n            this.markRedraw();\r\n            this.notClear = false;\r\n        };\r\n        IncrementalDisplayble.prototype.clearTemporalDisplayables = function () {\r\n            this._temporaryDisplayables = [];\r\n        };\r\n        IncrementalDisplayble.prototype.addDisplayable = function (displayable, notPersistent) {\r\n            if (notPersistent) {\r\n                this._temporaryDisplayables.push(displayable);\r\n            }\r\n            else {\r\n                this._displayables.push(displayable);\r\n            }\r\n            this.markRedraw();\r\n        };\r\n        IncrementalDisplayble.prototype.addDisplayables = function (displayables, notPersistent) {\r\n            notPersistent = notPersistent || false;\r\n            for (var i = 0; i < displayables.length; i++) {\r\n                this.addDisplayable(displayables[i], notPersistent);\r\n            }\r\n        };\r\n        IncrementalDisplayble.prototype.getDisplayables = function () {\r\n            return this._displayables;\r\n        };\r\n        IncrementalDisplayble.prototype.getTemporalDisplayables = function () {\r\n            return this._temporaryDisplayables;\r\n        };\r\n        IncrementalDisplayble.prototype.eachPendingDisplayable = function (cb) {\r\n            for (var i = this._cursor; i < this._displayables.length; i++) {\r\n                cb && cb(this._displayables[i]);\r\n            }\r\n            for (var i = 0; i < this._temporaryDisplayables.length; i++) {\r\n                cb && cb(this._temporaryDisplayables[i]);\r\n            }\r\n        };\r\n        IncrementalDisplayble.prototype.update = function () {\r\n            this.updateTransform();\r\n            for (var i = this._cursor; i < this._displayables.length; i++) {\r\n                var displayable = this._displayables[i];\r\n                displayable.parent = this;\r\n                displayable.update();\r\n                displayable.parent = null;\r\n            }\r\n            for (var i = 0; i < this._temporaryDisplayables.length; i++) {\r\n                var displayable = this._temporaryDisplayables[i];\r\n                displayable.parent = this;\r\n                displayable.update();\r\n                displayable.parent = null;\r\n            }\r\n        };\r\n        IncrementalDisplayble.prototype.getBoundingRect = function () {\r\n            if (!this._rect) {\r\n                var rect = new BoundingRect(Infinity, Infinity, -Infinity, -Infinity);\r\n                for (var i = 0; i < this._displayables.length; i++) {\r\n                    var displayable = this._displayables[i];\r\n                    var childRect = displayable.getBoundingRect().clone();\r\n                    if (displayable.needLocalTransform()) {\r\n                        childRect.applyTransform(displayable.getLocalTransform(m));\r\n                    }\r\n                    rect.union(childRect);\r\n                }\r\n                this._rect = rect;\r\n            }\r\n            return this._rect;\r\n        };\r\n        IncrementalDisplayble.prototype.contain = function (x, y) {\r\n            var localPos = this.transformCoordToLocal(x, y);\r\n            var rect = this.getBoundingRect();\r\n            if (rect.contain(localPos[0], localPos[1])) {\r\n                for (var i = 0; i < this._displayables.length; i++) {\r\n                    var displayable = this._displayables[i];\r\n                    if (displayable.contain(x, y)) {\r\n                        return true;\r\n                    }\r\n                }\r\n            }\r\n            return false;\r\n        };\r\n        return IncrementalDisplayble;\r\n    }(Displayable));\n\n    var globalImageCache = new LRU(50);\r\n    function findExistImage(newImageOrSrc) {\r\n        if (typeof newImageOrSrc === 'string') {\r\n            var cachedImgObj = globalImageCache.get(newImageOrSrc);\r\n            return cachedImgObj && cachedImgObj.image;\r\n        }\r\n        else {\r\n            return newImageOrSrc;\r\n        }\r\n    }\r\n    function createOrUpdateImage(newImageOrSrc, image, hostEl, onload, cbPayload) {\r\n        if (!newImageOrSrc) {\r\n            return image;\r\n        }\r\n        else if (typeof newImageOrSrc === 'string') {\r\n            if ((image && image.__zrImageSrc === newImageOrSrc) || !hostEl) {\r\n                return image;\r\n            }\r\n            var cachedImgObj = globalImageCache.get(newImageOrSrc);\r\n            var pendingWrap = { hostEl: hostEl, cb: onload, cbPayload: cbPayload };\r\n            if (cachedImgObj) {\r\n                image = cachedImgObj.image;\r\n                !isImageReady(image) && cachedImgObj.pending.push(pendingWrap);\r\n            }\r\n            else {\r\n                image = new Image();\r\n                image.onload = image.onerror = imageOnLoad;\r\n                globalImageCache.put(newImageOrSrc, image.__cachedImgObj = {\r\n                    image: image,\r\n                    pending: [pendingWrap]\r\n                });\r\n                image.src = image.__zrImageSrc = newImageOrSrc;\r\n            }\r\n            return image;\r\n        }\r\n        else {\r\n            return newImageOrSrc;\r\n        }\r\n    }\r\n    function imageOnLoad() {\r\n        var cachedImgObj = this.__cachedImgObj;\r\n        this.onload = this.onerror = this.__cachedImgObj = null;\r\n        for (var i = 0; i < cachedImgObj.pending.length; i++) {\r\n            var pendingWrap = cachedImgObj.pending[i];\r\n            var cb = pendingWrap.cb;\r\n            cb && cb(this, pendingWrap.cbPayload);\r\n            pendingWrap.hostEl.dirty();\r\n        }\r\n        cachedImgObj.pending.length = 0;\r\n    }\r\n    function isImageReady(image) {\r\n        return image && image.width && image.height;\r\n    }\n\n    var STYLE_REG = /\\{([a-zA-Z0-9_]+)\\|([^}]*)\\}/g;\r\n    function truncateText(text, containerWidth, font, ellipsis, options) {\r\n        if (!containerWidth) {\r\n            return '';\r\n        }\r\n        var textLines = (text + '').split('\\n');\r\n        options = prepareTruncateOptions(containerWidth, font, ellipsis, options);\r\n        for (var i = 0, len = textLines.length; i < len; i++) {\r\n            textLines[i] = truncateSingleLine(textLines[i], options);\r\n        }\r\n        return textLines.join('\\n');\r\n    }\r\n    function prepareTruncateOptions(containerWidth, font, ellipsis, options) {\r\n        options = options || {};\r\n        var preparedOpts = extend({}, options);\r\n        preparedOpts.font = font;\r\n        ellipsis = retrieve2(ellipsis, '...');\r\n        preparedOpts.maxIterations = retrieve2(options.maxIterations, 2);\r\n        var minChar = preparedOpts.minChar = retrieve2(options.minChar, 0);\r\n        preparedOpts.cnCharWidth = getWidth('国', font);\r\n        var ascCharWidth = preparedOpts.ascCharWidth = getWidth('a', font);\r\n        preparedOpts.placeholder = retrieve2(options.placeholder, '');\r\n        var contentWidth = containerWidth = Math.max(0, containerWidth - 1);\r\n        for (var i = 0; i < minChar && contentWidth >= ascCharWidth; i++) {\r\n            contentWidth -= ascCharWidth;\r\n        }\r\n        var ellipsisWidth = getWidth(ellipsis, font);\r\n        if (ellipsisWidth > contentWidth) {\r\n            ellipsis = '';\r\n            ellipsisWidth = 0;\r\n        }\r\n        contentWidth = containerWidth - ellipsisWidth;\r\n        preparedOpts.ellipsis = ellipsis;\r\n        preparedOpts.ellipsisWidth = ellipsisWidth;\r\n        preparedOpts.contentWidth = contentWidth;\r\n        preparedOpts.containerWidth = containerWidth;\r\n        return preparedOpts;\r\n    }\r\n    function truncateSingleLine(textLine, options) {\r\n        var containerWidth = options.containerWidth;\r\n        var font = options.font;\r\n        var contentWidth = options.contentWidth;\r\n        if (!containerWidth) {\r\n            return '';\r\n        }\r\n        var lineWidth = getWidth(textLine, font);\r\n        if (lineWidth <= containerWidth) {\r\n            return textLine;\r\n        }\r\n        for (var j = 0;; j++) {\r\n            if (lineWidth <= contentWidth || j >= options.maxIterations) {\r\n                textLine += options.ellipsis;\r\n                break;\r\n            }\r\n            var subLength = j === 0\r\n                ? estimateLength(textLine, contentWidth, options.ascCharWidth, options.cnCharWidth)\r\n                : lineWidth > 0\r\n                    ? Math.floor(textLine.length * contentWidth / lineWidth)\r\n                    : 0;\r\n            textLine = textLine.substr(0, subLength);\r\n            lineWidth = getWidth(textLine, font);\r\n        }\r\n        if (textLine === '') {\r\n            textLine = options.placeholder;\r\n        }\r\n        return textLine;\r\n    }\r\n    function estimateLength(text, contentWidth, ascCharWidth, cnCharWidth) {\r\n        var width = 0;\r\n        var i = 0;\r\n        for (var len = text.length; i < len && width < contentWidth; i++) {\r\n            var charCode = text.charCodeAt(i);\r\n            width += (0 <= charCode && charCode <= 127) ? ascCharWidth : cnCharWidth;\r\n        }\r\n        return i;\r\n    }\r\n    function parsePlainText(text, style) {\r\n        text != null && (text += '');\r\n        var overflow = style.overflow;\r\n        var padding = style.padding;\r\n        var font = style.font;\r\n        var truncate = overflow === 'truncate';\r\n        var calculatedLineHeight = getLineHeight(font);\r\n        var lineHeight = retrieve2(style.lineHeight, calculatedLineHeight);\r\n        var truncateLineOverflow = style.lineOverflow === 'truncate';\r\n        var width = style.width;\r\n        var lines;\r\n        if (width != null && overflow === 'break' || overflow === 'breakAll') {\r\n            lines = text ? wrapText(text, style.font, width, overflow === 'breakAll', 0).lines : [];\r\n        }\r\n        else {\r\n            lines = text ? text.split('\\n') : [];\r\n        }\r\n        var contentHeight = lines.length * lineHeight;\r\n        var height = retrieve2(style.height, contentHeight);\r\n        if (contentHeight > height && truncateLineOverflow) {\r\n            var lineCount = Math.floor(height / lineHeight);\r\n            lines = lines.slice(0, lineCount);\r\n        }\r\n        var outerHeight = height;\r\n        var outerWidth = width;\r\n        if (padding) {\r\n            outerHeight += padding[0] + padding[2];\r\n            if (outerWidth != null) {\r\n                outerWidth += padding[1] + padding[3];\r\n            }\r\n        }\r\n        if (text && truncate && outerWidth != null) {\r\n            var options = prepareTruncateOptions(width, font, style.ellipsis, {\r\n                minChar: style.truncateMinChar,\r\n                placeholder: style.placeholder\r\n            });\r\n            for (var i = 0; i < lines.length; i++) {\r\n                lines[i] = truncateSingleLine(lines[i], options);\r\n            }\r\n        }\r\n        if (width == null) {\r\n            var maxWidth = 0;\r\n            for (var i = 0; i < lines.length; i++) {\r\n                maxWidth = Math.max(getWidth(lines[i], font), maxWidth);\r\n            }\r\n            width = maxWidth;\r\n        }\r\n        return {\r\n            lines: lines,\r\n            height: height,\r\n            outerHeight: outerHeight,\r\n            lineHeight: lineHeight,\r\n            calculatedLineHeight: calculatedLineHeight,\r\n            contentHeight: contentHeight,\r\n            width: width\r\n        };\r\n    }\r\n    var RichTextToken = (function () {\r\n        function RichTextToken() {\r\n        }\r\n        return RichTextToken;\r\n    }());\r\n    var RichTextLine = (function () {\r\n        function RichTextLine(tokens) {\r\n            this.tokens = [];\r\n            if (tokens) {\r\n                this.tokens = tokens;\r\n            }\r\n        }\r\n        return RichTextLine;\r\n    }());\r\n    var RichTextContentBlock = (function () {\r\n        function RichTextContentBlock() {\r\n            this.width = 0;\r\n            this.height = 0;\r\n            this.contentWidth = 0;\r\n            this.contentHeight = 0;\r\n            this.outerWidth = 0;\r\n            this.outerHeight = 0;\r\n            this.lines = [];\r\n        }\r\n        return RichTextContentBlock;\r\n    }());\r\n    function parseRichText(text, style) {\r\n        var contentBlock = new RichTextContentBlock();\r\n        text != null && (text += '');\r\n        if (!text) {\r\n            return contentBlock;\r\n        }\r\n        var topWidth = style.width;\r\n        var topHeight = style.height;\r\n        var overflow = style.overflow;\r\n        var wrapInfo = (overflow === 'break' || overflow === 'breakAll') && topWidth != null\r\n            ? { width: topWidth, accumWidth: 0, breakAll: overflow === 'breakAll' }\r\n            : null;\r\n        var lastIndex = STYLE_REG.lastIndex = 0;\r\n        var result;\r\n        while ((result = STYLE_REG.exec(text)) != null) {\r\n            var matchedIndex = result.index;\r\n            if (matchedIndex > lastIndex) {\r\n                pushTokens(contentBlock, text.substring(lastIndex, matchedIndex), style, wrapInfo);\r\n            }\r\n            pushTokens(contentBlock, result[2], style, wrapInfo, result[1]);\r\n            lastIndex = STYLE_REG.lastIndex;\r\n        }\r\n        if (lastIndex < text.length) {\r\n            pushTokens(contentBlock, text.substring(lastIndex, text.length), style, wrapInfo);\r\n        }\r\n        var pendingList = [];\r\n        var calculatedHeight = 0;\r\n        var calculatedWidth = 0;\r\n        var stlPadding = style.padding;\r\n        var truncate = overflow === 'truncate';\r\n        var truncateLine = style.lineOverflow === 'truncate';\r\n        function finishLine(line, lineWidth, lineHeight) {\r\n            line.width = lineWidth;\r\n            line.lineHeight = lineHeight;\r\n            calculatedHeight += lineHeight;\r\n            calculatedWidth = Math.max(calculatedWidth, lineWidth);\r\n        }\r\n        outer: for (var i = 0; i < contentBlock.lines.length; i++) {\r\n            var line = contentBlock.lines[i];\r\n            var lineHeight = 0;\r\n            var lineWidth = 0;\r\n            for (var j = 0; j < line.tokens.length; j++) {\r\n                var token = line.tokens[j];\r\n                var tokenStyle = token.styleName && style.rich[token.styleName] || {};\r\n                var textPadding = token.textPadding = tokenStyle.padding;\r\n                var paddingH = textPadding ? textPadding[1] + textPadding[3] : 0;\r\n                var font = token.font = tokenStyle.font || style.font;\r\n                token.contentHeight = getLineHeight(font);\r\n                var tokenHeight = retrieve2(tokenStyle.height, token.contentHeight);\r\n                token.innerHeight = tokenHeight;\r\n                textPadding && (tokenHeight += textPadding[0] + textPadding[2]);\r\n                token.height = tokenHeight;\r\n                token.lineHeight = retrieve3(tokenStyle.lineHeight, style.lineHeight, tokenHeight);\r\n                token.align = tokenStyle && tokenStyle.align || style.align;\r\n                token.verticalAlign = tokenStyle && tokenStyle.verticalAlign || 'middle';\r\n                if (truncateLine && topHeight != null && calculatedHeight + token.lineHeight > topHeight) {\r\n                    if (j > 0) {\r\n                        line.tokens = line.tokens.slice(0, j);\r\n                        finishLine(line, lineWidth, lineHeight);\r\n                        contentBlock.lines = contentBlock.lines.slice(0, i + 1);\r\n                    }\r\n                    else {\r\n                        contentBlock.lines = contentBlock.lines.slice(0, i);\r\n                    }\r\n                    break outer;\r\n                }\r\n                var styleTokenWidth = tokenStyle.width;\r\n                var tokenWidthNotSpecified = styleTokenWidth == null || styleTokenWidth === 'auto';\r\n                if (typeof styleTokenWidth === 'string' && styleTokenWidth.charAt(styleTokenWidth.length - 1) === '%') {\r\n                    token.percentWidth = styleTokenWidth;\r\n                    pendingList.push(token);\r\n                    token.contentWidth = getWidth(token.text, font);\r\n                }\r\n                else {\r\n                    if (tokenWidthNotSpecified) {\r\n                        var textBackgroundColor = tokenStyle.backgroundColor;\r\n                        var bgImg = textBackgroundColor && textBackgroundColor.image;\r\n                        if (bgImg) {\r\n                            bgImg = findExistImage(bgImg);\r\n                            if (isImageReady(bgImg)) {\r\n                                token.width = Math.max(token.width, bgImg.width * tokenHeight / bgImg.height);\r\n                            }\r\n                        }\r\n                    }\r\n                    var remainTruncWidth = truncate && topWidth != null\r\n                        ? topWidth - lineWidth : null;\r\n                    if (remainTruncWidth != null && remainTruncWidth < token.width) {\r\n                        if (!tokenWidthNotSpecified || remainTruncWidth < paddingH) {\r\n                            token.text = '';\r\n                            token.width = token.contentWidth = 0;\r\n                        }\r\n                        else {\r\n                            token.text = truncateText(token.text, remainTruncWidth - paddingH, font, style.ellipsis, { minChar: style.truncateMinChar });\r\n                            token.width = token.contentWidth = getWidth(token.text, font);\r\n                        }\r\n                    }\r\n                    else {\r\n                        token.contentWidth = getWidth(token.text, font);\r\n                    }\r\n                }\r\n                token.width += paddingH;\r\n                lineWidth += token.width;\r\n                tokenStyle && (lineHeight = Math.max(lineHeight, token.lineHeight));\r\n            }\r\n            finishLine(line, lineWidth, lineHeight);\r\n        }\r\n        contentBlock.outerWidth = contentBlock.width = retrieve2(topWidth, calculatedWidth);\r\n        contentBlock.outerHeight = contentBlock.height = retrieve2(topHeight, calculatedHeight);\r\n        contentBlock.contentHeight = calculatedHeight;\r\n        contentBlock.contentWidth = calculatedWidth;\r\n        if (stlPadding) {\r\n            contentBlock.outerWidth += stlPadding[1] + stlPadding[3];\r\n            contentBlock.outerHeight += stlPadding[0] + stlPadding[2];\r\n        }\r\n        for (var i = 0; i < pendingList.length; i++) {\r\n            var token = pendingList[i];\r\n            var percentWidth = token.percentWidth;\r\n            token.width = parseInt(percentWidth, 10) / 100 * contentBlock.width;\r\n        }\r\n        return contentBlock;\r\n    }\r\n    function pushTokens(block, str, style, wrapInfo, styleName) {\r\n        var isEmptyStr = str === '';\r\n        var tokenStyle = styleName && style.rich[styleName] || {};\r\n        var lines = block.lines;\r\n        var font = tokenStyle.font || style.font;\r\n        var newLine = false;\r\n        var strLines;\r\n        var linesWidths;\r\n        if (wrapInfo) {\r\n            var tokenPadding = tokenStyle.padding;\r\n            var tokenPaddingH = tokenPadding ? tokenPadding[1] + tokenPadding[3] : 0;\r\n            if (tokenStyle.width != null && tokenStyle.width !== 'auto') {\r\n                var outerWidth_1 = parsePercent$1(tokenStyle.width, wrapInfo.width) + tokenPaddingH;\r\n                if (lines.length > 0) {\r\n                    if (outerWidth_1 + wrapInfo.accumWidth > wrapInfo.width) {\r\n                        strLines = str.split('\\n');\r\n                        newLine = true;\r\n                    }\r\n                }\r\n                wrapInfo.accumWidth = outerWidth_1;\r\n            }\r\n            else {\r\n                var res = wrapText(str, font, wrapInfo.width, wrapInfo.breakAll, wrapInfo.accumWidth);\r\n                wrapInfo.accumWidth = res.accumWidth + tokenPaddingH;\r\n                linesWidths = res.linesWidths;\r\n                strLines = res.lines;\r\n            }\r\n        }\r\n        else {\r\n            strLines = str.split('\\n');\r\n        }\r\n        for (var i = 0; i < strLines.length; i++) {\r\n            var text = strLines[i];\r\n            var token = new RichTextToken();\r\n            token.styleName = styleName;\r\n            token.text = text;\r\n            token.isLineHolder = !text && !isEmptyStr;\r\n            if (typeof tokenStyle.width === 'number') {\r\n                token.width = tokenStyle.width;\r\n            }\r\n            else {\r\n                token.width = linesWidths\r\n                    ? linesWidths[i]\r\n                    : getWidth(text, font);\r\n            }\r\n            if (!i && !newLine) {\r\n                var tokens = (lines[lines.length - 1] || (lines[0] = new RichTextLine())).tokens;\r\n                var tokensLen = tokens.length;\r\n                (tokensLen === 1 && tokens[0].isLineHolder)\r\n                    ? (tokens[0] = token)\r\n                    : ((text || !tokensLen || isEmptyStr) && tokens.push(token));\r\n            }\r\n            else {\r\n                lines.push(new RichTextLine([token]));\r\n            }\r\n        }\r\n    }\r\n    function isLatin(ch) {\r\n        var code = ch.charCodeAt(0);\r\n        return code >= 0x21 && code <= 0xFF;\r\n    }\r\n    var breakCharMap = reduce(',&?/;] '.split(''), function (obj, ch) {\r\n        obj[ch] = true;\r\n        return obj;\r\n    }, {});\r\n    function isWordBreakChar(ch) {\r\n        if (isLatin(ch)) {\r\n            if (breakCharMap[ch]) {\r\n                return true;\r\n            }\r\n            return false;\r\n        }\r\n        return true;\r\n    }\r\n    function wrapText(text, font, lineWidth, isBreakAll, lastAccumWidth) {\r\n        var lines = [];\r\n        var linesWidths = [];\r\n        var line = '';\r\n        var currentWord = '';\r\n        var currentWordWidth = 0;\r\n        var accumWidth = 0;\r\n        for (var i = 0; i < text.length; i++) {\r\n            var ch = text.charAt(i);\r\n            if (ch === '\\n') {\r\n                if (currentWord) {\r\n                    line += currentWord;\r\n                    accumWidth += currentWordWidth;\r\n                }\r\n                lines.push(line);\r\n                linesWidths.push(accumWidth);\r\n                line = '';\r\n                currentWord = '';\r\n                currentWordWidth = 0;\r\n                accumWidth = 0;\r\n                continue;\r\n            }\r\n            var chWidth = getWidth(ch, font);\r\n            var inWord = isBreakAll ? false : !isWordBreakChar(ch);\r\n            if (!lines.length\r\n                ? lastAccumWidth + accumWidth + chWidth > lineWidth\r\n                : accumWidth + chWidth > lineWidth) {\r\n                if (!accumWidth) {\r\n                    if (inWord) {\r\n                        lines.push(currentWord);\r\n                        linesWidths.push(currentWordWidth);\r\n                        currentWord = ch;\r\n                        currentWordWidth = chWidth;\r\n                    }\r\n                    else {\r\n                        lines.push(ch);\r\n                        linesWidths.push(chWidth);\r\n                    }\r\n                }\r\n                else if (line || currentWord) {\r\n                    if (inWord) {\r\n                        if (!line) {\r\n                            line = currentWord;\r\n                            currentWord = '';\r\n                            currentWordWidth = 0;\r\n                            accumWidth = currentWordWidth;\r\n                        }\r\n                        lines.push(line);\r\n                        linesWidths.push(accumWidth - currentWordWidth);\r\n                        currentWord += ch;\r\n                        currentWordWidth += chWidth;\r\n                        line = '';\r\n                        accumWidth = currentWordWidth;\r\n                    }\r\n                    else {\r\n                        if (currentWord) {\r\n                            line += currentWord;\r\n                            accumWidth += currentWordWidth;\r\n                            currentWord = '';\r\n                            currentWordWidth = 0;\r\n                        }\r\n                        lines.push(line);\r\n                        linesWidths.push(accumWidth);\r\n                        line = ch;\r\n                        accumWidth = chWidth;\r\n                    }\r\n                }\r\n                continue;\r\n            }\r\n            accumWidth += chWidth;\r\n            if (inWord) {\r\n                currentWord += ch;\r\n                currentWordWidth += chWidth;\r\n            }\r\n            else {\r\n                if (currentWord) {\r\n                    line += currentWord;\r\n                    currentWord = '';\r\n                    currentWordWidth = 0;\r\n                }\r\n                line += ch;\r\n            }\r\n        }\r\n        if (!lines.length && !line) {\r\n            line = text;\r\n            currentWord = '';\r\n            currentWordWidth = 0;\r\n        }\r\n        if (currentWord) {\r\n            line += currentWord;\r\n        }\r\n        if (line) {\r\n            lines.push(line);\r\n            linesWidths.push(accumWidth);\r\n        }\r\n        if (lines.length === 1) {\r\n            accumWidth += lastAccumWidth;\r\n        }\r\n        return {\r\n            accumWidth: accumWidth,\r\n            lines: lines,\r\n            linesWidths: linesWidths\r\n        };\r\n    }\r\n    function parsePercent$1(value, maxValue) {\r\n        if (typeof value === 'string') {\r\n            if (value.lastIndexOf('%') >= 0) {\r\n                return parseFloat(value) / 100 * maxValue;\r\n            }\r\n            return parseFloat(value);\r\n        }\r\n        return value;\r\n    }\n\n    var DEFAULT_RICH_TEXT_COLOR = {\r\n        fill: '#000'\r\n    };\r\n    var DEFAULT_STROKE_LINE_WIDTH = 2;\r\n    var DEFAULT_TEXT_ANIMATION_PROPS = {\r\n        style: defaults({\r\n            fill: true,\r\n            stroke: true,\r\n            fillOpacity: true,\r\n            strokeOpacity: true,\r\n            lineWidth: true,\r\n            fontSize: true,\r\n            lineHeight: true,\r\n            width: true,\r\n            height: true,\r\n            textShadowColor: true,\r\n            textShadowBlur: true,\r\n            textShadowOffsetX: true,\r\n            textShadowOffsetY: true,\r\n            backgroundColor: true,\r\n            padding: true,\r\n            borderColor: true,\r\n            borderWidth: true,\r\n            borderRadius: true\r\n        }, DEFAULT_COMMON_ANIMATION_PROPS.style)\r\n    };\r\n    var ZRText = (function (_super) {\r\n        __extends(ZRText, _super);\r\n        function ZRText(opts) {\r\n            var _this = _super.call(this) || this;\r\n            _this.type = 'text';\r\n            _this._children = [];\r\n            _this._defaultStyle = DEFAULT_RICH_TEXT_COLOR;\r\n            _this.attr(opts);\r\n            return _this;\r\n        }\r\n        ZRText.prototype.childrenRef = function () {\r\n            return this._children;\r\n        };\r\n        ZRText.prototype.update = function () {\r\n            if (this.styleChanged()) {\r\n                this._updateSubTexts();\r\n            }\r\n            for (var i = 0; i < this._children.length; i++) {\r\n                var child = this._children[i];\r\n                child.zlevel = this.zlevel;\r\n                child.z = this.z;\r\n                child.z2 = this.z2;\r\n                child.culling = this.culling;\r\n                child.cursor = this.cursor;\r\n                child.invisible = this.invisible;\r\n            }\r\n            var attachedTransform = this.attachedTransform;\r\n            if (attachedTransform) {\r\n                attachedTransform.updateTransform();\r\n                var m = attachedTransform.transform;\r\n                if (m) {\r\n                    this.transform = this.transform || [];\r\n                    copy(this.transform, m);\r\n                }\r\n                else {\r\n                    this.transform = null;\r\n                }\r\n            }\r\n            else {\r\n                _super.prototype.update.call(this);\r\n            }\r\n        };\r\n        ZRText.prototype.getComputedTransform = function () {\r\n            if (this.__hostTarget) {\r\n                this.__hostTarget.getComputedTransform();\r\n                this.__hostTarget.updateInnerText(true);\r\n            }\r\n            return this.attachedTransform ? this.attachedTransform.getComputedTransform()\r\n                : _super.prototype.getComputedTransform.call(this);\r\n        };\r\n        ZRText.prototype._updateSubTexts = function () {\r\n            this._childCursor = 0;\r\n            normalizeTextStyle(this.style);\r\n            this.style.rich\r\n                ? this._updateRichTexts()\r\n                : this._updatePlainTexts();\r\n            this._children.length = this._childCursor;\r\n            this.styleUpdated();\r\n        };\r\n        ZRText.prototype.addSelfToZr = function (zr) {\r\n            _super.prototype.addSelfToZr.call(this, zr);\r\n            for (var i = 0; i < this._children.length; i++) {\r\n                this._children[i].__zr = zr;\r\n            }\r\n        };\r\n        ZRText.prototype.removeSelfFromZr = function (zr) {\r\n            _super.prototype.removeSelfFromZr.call(this, zr);\r\n            for (var i = 0; i < this._children.length; i++) {\r\n                this._children[i].__zr = null;\r\n            }\r\n        };\r\n        ZRText.prototype.getBoundingRect = function () {\r\n            if (this.styleChanged()) {\r\n                this._updateSubTexts();\r\n            }\r\n            if (!this._rect) {\r\n                var tmpRect = new BoundingRect(0, 0, 0, 0);\r\n                var children = this._children;\r\n                var tmpMat = [];\r\n                var rect = null;\r\n                for (var i = 0; i < children.length; i++) {\r\n                    var child = children[i];\r\n                    var childRect = child.getBoundingRect();\r\n                    var transform = child.getLocalTransform(tmpMat);\r\n                    if (transform) {\r\n                        tmpRect.copy(childRect);\r\n                        tmpRect.applyTransform(transform);\r\n                        rect = rect || tmpRect.clone();\r\n                        rect.union(tmpRect);\r\n                    }\r\n                    else {\r\n                        rect = rect || childRect.clone();\r\n                        rect.union(childRect);\r\n                    }\r\n                }\r\n                this._rect = rect || tmpRect;\r\n            }\r\n            return this._rect;\r\n        };\r\n        ZRText.prototype.setDefaultTextStyle = function (defaultTextStyle) {\r\n            this._defaultStyle = defaultTextStyle || DEFAULT_RICH_TEXT_COLOR;\r\n        };\r\n        ZRText.prototype.setTextContent = function (textContent) {\r\n            throw new Error('Can\\'t attach text on another text');\r\n        };\r\n        ZRText.prototype._mergeStyle = function (targetStyle, sourceStyle) {\r\n            if (!sourceStyle) {\r\n                return targetStyle;\r\n            }\r\n            var sourceRich = sourceStyle.rich;\r\n            var targetRich = targetStyle.rich || (sourceRich && {});\r\n            extend(targetStyle, sourceStyle);\r\n            if (sourceRich && targetRich) {\r\n                this._mergeRich(targetRich, sourceRich);\r\n                targetStyle.rich = targetRich;\r\n            }\r\n            else if (targetRich) {\r\n                targetStyle.rich = targetRich;\r\n            }\r\n            return targetStyle;\r\n        };\r\n        ZRText.prototype._mergeRich = function (targetRich, sourceRich) {\r\n            var richNames = keys(sourceRich);\r\n            for (var i = 0; i < richNames.length; i++) {\r\n                var richName = richNames[i];\r\n                targetRich[richName] = targetRich[richName] || {};\r\n                extend(targetRich[richName], sourceRich[richName]);\r\n            }\r\n        };\r\n        ZRText.prototype.getAnimationStyleProps = function () {\r\n            return DEFAULT_TEXT_ANIMATION_PROPS;\r\n        };\r\n        ZRText.prototype._getOrCreateChild = function (Ctor) {\r\n            var child = this._children[this._childCursor];\r\n            if (!child || !(child instanceof Ctor)) {\r\n                child = new Ctor();\r\n            }\r\n            this._children[this._childCursor++] = child;\r\n            child.__zr = this.__zr;\r\n            child.parent = this;\r\n            return child;\r\n        };\r\n        ZRText.prototype._updatePlainTexts = function () {\r\n            var style = this.style;\r\n            var textFont = style.font || DEFAULT_FONT;\r\n            var textPadding = style.padding;\r\n            var text = getStyleText(style);\r\n            var contentBlock = parsePlainText(text, style);\r\n            var needDrawBg = needDrawBackground(style);\r\n            var bgColorDrawn = !!(style.backgroundColor);\r\n            var outerHeight = contentBlock.outerHeight;\r\n            var textLines = contentBlock.lines;\r\n            var lineHeight = contentBlock.lineHeight;\r\n            var defaultStyle = this._defaultStyle;\r\n            var baseX = style.x || 0;\r\n            var baseY = style.y || 0;\r\n            var textAlign = style.align || defaultStyle.align || 'left';\r\n            var verticalAlign = style.verticalAlign || defaultStyle.verticalAlign || 'top';\r\n            var textX = baseX;\r\n            var textY = adjustTextY(baseY, contentBlock.contentHeight, verticalAlign);\r\n            if (needDrawBg || textPadding) {\r\n                var outerWidth_1 = contentBlock.width;\r\n                textPadding && (outerWidth_1 += textPadding[1] + textPadding[3]);\r\n                var boxX = adjustTextX(baseX, outerWidth_1, textAlign);\r\n                var boxY = adjustTextY(baseY, outerHeight, verticalAlign);\r\n                needDrawBg && this._renderBackground(style, style, boxX, boxY, outerWidth_1, outerHeight);\r\n            }\r\n            textY += lineHeight / 2;\r\n            if (textPadding) {\r\n                textX = getTextXForPadding(baseX, textAlign, textPadding);\r\n                if (verticalAlign === 'top') {\r\n                    textY += textPadding[0];\r\n                }\r\n                else if (verticalAlign === 'bottom') {\r\n                    textY -= textPadding[2];\r\n                }\r\n            }\r\n            var defaultLineWidth = 0;\r\n            var useDefaultFill = false;\r\n            var textFill = getFill('fill' in style\r\n                ? style.fill\r\n                : (useDefaultFill = true, defaultStyle.fill));\r\n            var textStroke = getStroke('stroke' in style\r\n                ? style.stroke\r\n                : (!bgColorDrawn\r\n                    && (!defaultStyle.autoStroke || useDefaultFill))\r\n                    ? (defaultLineWidth = DEFAULT_STROKE_LINE_WIDTH, defaultStyle.stroke)\r\n                    : null);\r\n            var hasShadow = style.textShadowBlur > 0;\r\n            var fixedBoundingRect = style.width != null\r\n                && (style.overflow === 'truncate' || style.overflow === 'break' || style.overflow === 'breakAll');\r\n            var calculatedLineHeight = contentBlock.calculatedLineHeight;\r\n            for (var i = 0; i < textLines.length; i++) {\r\n                var el = this._getOrCreateChild(TSpan);\r\n                var subElStyle = el.createStyle();\r\n                el.useStyle(subElStyle);\r\n                subElStyle.text = textLines[i];\r\n                subElStyle.x = textX;\r\n                subElStyle.y = textY;\r\n                if (textAlign) {\r\n                    subElStyle.textAlign = textAlign;\r\n                }\r\n                subElStyle.textBaseline = 'middle';\r\n                subElStyle.opacity = style.opacity;\r\n                subElStyle.strokeFirst = true;\r\n                if (hasShadow) {\r\n                    subElStyle.shadowBlur = style.textShadowBlur || 0;\r\n                    subElStyle.shadowColor = style.textShadowColor || 'transparent';\r\n                    subElStyle.shadowOffsetX = style.textShadowOffsetX || 0;\r\n                    subElStyle.shadowOffsetY = style.textShadowOffsetY || 0;\r\n                }\r\n                if (textStroke) {\r\n                    subElStyle.stroke = textStroke;\r\n                    subElStyle.lineWidth = style.lineWidth || defaultLineWidth;\r\n                    subElStyle.lineDash = style.lineDash;\r\n                    subElStyle.lineDashOffset = style.lineDashOffset || 0;\r\n                }\r\n                if (textFill) {\r\n                    subElStyle.fill = textFill;\r\n                }\r\n                subElStyle.font = textFont;\r\n                textY += lineHeight;\r\n                if (fixedBoundingRect) {\r\n                    el.setBoundingRect(new BoundingRect(adjustTextX(subElStyle.x, style.width, subElStyle.textAlign), adjustTextY(subElStyle.y, calculatedLineHeight, subElStyle.textBaseline), style.width, calculatedLineHeight));\r\n                }\r\n            }\r\n        };\r\n        ZRText.prototype._updateRichTexts = function () {\r\n            var style = this.style;\r\n            var text = getStyleText(style);\r\n            var contentBlock = parseRichText(text, style);\r\n            var contentWidth = contentBlock.width;\r\n            var outerWidth = contentBlock.outerWidth;\r\n            var outerHeight = contentBlock.outerHeight;\r\n            var textPadding = style.padding;\r\n            var baseX = style.x || 0;\r\n            var baseY = style.y || 0;\r\n            var defaultStyle = this._defaultStyle;\r\n            var textAlign = style.align || defaultStyle.align;\r\n            var verticalAlign = style.verticalAlign || defaultStyle.verticalAlign;\r\n            var boxX = adjustTextX(baseX, outerWidth, textAlign);\r\n            var boxY = adjustTextY(baseY, outerHeight, verticalAlign);\r\n            var xLeft = boxX;\r\n            var lineTop = boxY;\r\n            if (textPadding) {\r\n                xLeft += textPadding[3];\r\n                lineTop += textPadding[0];\r\n            }\r\n            var xRight = xLeft + contentWidth;\r\n            if (needDrawBackground(style)) {\r\n                this._renderBackground(style, style, boxX, boxY, outerWidth, outerHeight);\r\n            }\r\n            var bgColorDrawn = !!(style.backgroundColor);\r\n            for (var i = 0; i < contentBlock.lines.length; i++) {\r\n                var line = contentBlock.lines[i];\r\n                var tokens = line.tokens;\r\n                var tokenCount = tokens.length;\r\n                var lineHeight = line.lineHeight;\r\n                var remainedWidth = line.width;\r\n                var leftIndex = 0;\r\n                var lineXLeft = xLeft;\r\n                var lineXRight = xRight;\r\n                var rightIndex = tokenCount - 1;\r\n                var token = void 0;\r\n                while (leftIndex < tokenCount\r\n                    && (token = tokens[leftIndex], !token.align || token.align === 'left')) {\r\n                    this._placeToken(token, style, lineHeight, lineTop, lineXLeft, 'left', bgColorDrawn);\r\n                    remainedWidth -= token.width;\r\n                    lineXLeft += token.width;\r\n                    leftIndex++;\r\n                }\r\n                while (rightIndex >= 0\r\n                    && (token = tokens[rightIndex], token.align === 'right')) {\r\n                    this._placeToken(token, style, lineHeight, lineTop, lineXRight, 'right', bgColorDrawn);\r\n                    remainedWidth -= token.width;\r\n                    lineXRight -= token.width;\r\n                    rightIndex--;\r\n                }\r\n                lineXLeft += (contentWidth - (lineXLeft - xLeft) - (xRight - lineXRight) - remainedWidth) / 2;\r\n                while (leftIndex <= rightIndex) {\r\n                    token = tokens[leftIndex];\r\n                    this._placeToken(token, style, lineHeight, lineTop, lineXLeft + token.width / 2, 'center', bgColorDrawn);\r\n                    lineXLeft += token.width;\r\n                    leftIndex++;\r\n                }\r\n                lineTop += lineHeight;\r\n            }\r\n        };\r\n        ZRText.prototype._placeToken = function (token, style, lineHeight, lineTop, x, textAlign, parentBgColorDrawn) {\r\n            var tokenStyle = style.rich[token.styleName] || {};\r\n            tokenStyle.text = token.text;\r\n            var verticalAlign = token.verticalAlign;\r\n            var y = lineTop + lineHeight / 2;\r\n            if (verticalAlign === 'top') {\r\n                y = lineTop + token.height / 2;\r\n            }\r\n            else if (verticalAlign === 'bottom') {\r\n                y = lineTop + lineHeight - token.height / 2;\r\n            }\r\n            var needDrawBg = !token.isLineHolder && needDrawBackground(tokenStyle);\r\n            needDrawBg && this._renderBackground(tokenStyle, style, textAlign === 'right'\r\n                ? x - token.width\r\n                : textAlign === 'center'\r\n                    ? x - token.width / 2\r\n                    : x, y - token.height / 2, token.width, token.height);\r\n            var bgColorDrawn = !!tokenStyle.backgroundColor;\r\n            var textPadding = token.textPadding;\r\n            if (textPadding) {\r\n                x = getTextXForPadding(x, textAlign, textPadding);\r\n                y -= token.height / 2 - textPadding[0] - token.innerHeight / 2;\r\n            }\r\n            var el = this._getOrCreateChild(TSpan);\r\n            var subElStyle = el.createStyle();\r\n            el.useStyle(subElStyle);\r\n            var defaultStyle = this._defaultStyle;\r\n            var useDefaultFill = false;\r\n            var defaultLineWidth = 0;\r\n            var textFill = getStroke('fill' in tokenStyle ? tokenStyle.fill\r\n                : 'fill' in style ? style.fill\r\n                    : (useDefaultFill = true, defaultStyle.fill));\r\n            var textStroke = getStroke('stroke' in tokenStyle ? tokenStyle.stroke\r\n                : 'stroke' in style ? style.stroke\r\n                    : (!bgColorDrawn\r\n                        && !parentBgColorDrawn\r\n                        && (!defaultStyle.autoStroke || useDefaultFill)) ? (defaultLineWidth = DEFAULT_STROKE_LINE_WIDTH, defaultStyle.stroke)\r\n                        : null);\r\n            var hasShadow = tokenStyle.textShadowBlur > 0\r\n                || style.textShadowBlur > 0;\r\n            subElStyle.text = token.text;\r\n            subElStyle.x = x;\r\n            subElStyle.y = y;\r\n            if (hasShadow) {\r\n                subElStyle.shadowBlur = tokenStyle.textShadowBlur || style.textShadowBlur || 0;\r\n                subElStyle.shadowColor = tokenStyle.textShadowColor || style.textShadowColor || 'transparent';\r\n                subElStyle.shadowOffsetX = tokenStyle.textShadowOffsetX || style.textShadowOffsetX || 0;\r\n                subElStyle.shadowOffsetY = tokenStyle.textShadowOffsetY || style.textShadowOffsetY || 0;\r\n            }\r\n            subElStyle.textAlign = textAlign;\r\n            subElStyle.textBaseline = 'middle';\r\n            subElStyle.font = token.font || DEFAULT_FONT;\r\n            subElStyle.opacity = retrieve3(tokenStyle.opacity, style.opacity, 1);\r\n            if (textStroke) {\r\n                subElStyle.lineWidth = retrieve3(tokenStyle.lineWidth, style.lineWidth, defaultLineWidth);\r\n                subElStyle.lineDash = retrieve2(tokenStyle.lineDash, style.lineDash);\r\n                subElStyle.lineDashOffset = style.lineDashOffset || 0;\r\n                subElStyle.stroke = textStroke;\r\n            }\r\n            if (textFill) {\r\n                subElStyle.fill = textFill;\r\n            }\r\n            var textWidth = token.contentWidth;\r\n            var textHeight = token.contentHeight;\r\n            el.setBoundingRect(new BoundingRect(adjustTextX(subElStyle.x, textWidth, subElStyle.textAlign), adjustTextY(subElStyle.y, textHeight, subElStyle.textBaseline), textWidth, textHeight));\r\n        };\r\n        ZRText.prototype._renderBackground = function (style, topStyle, x, y, width, height) {\r\n            var textBackgroundColor = style.backgroundColor;\r\n            var textBorderWidth = style.borderWidth;\r\n            var textBorderColor = style.borderColor;\r\n            var isPlainBg = isString(textBackgroundColor);\r\n            var textBorderRadius = style.borderRadius;\r\n            var self = this;\r\n            var rectEl;\r\n            var imgEl;\r\n            if (isPlainBg || (textBorderWidth && textBorderColor)) {\r\n                rectEl = this._getOrCreateChild(Rect);\r\n                rectEl.useStyle(rectEl.createStyle());\r\n                rectEl.style.fill = null;\r\n                var rectShape = rectEl.shape;\r\n                rectShape.x = x;\r\n                rectShape.y = y;\r\n                rectShape.width = width;\r\n                rectShape.height = height;\r\n                rectShape.r = textBorderRadius;\r\n                rectEl.dirtyShape();\r\n            }\r\n            if (isPlainBg) {\r\n                var rectStyle = rectEl.style;\r\n                rectStyle.fill = textBackgroundColor || null;\r\n                rectStyle.fillOpacity = retrieve2(style.fillOpacity, 1);\r\n            }\r\n            else if (textBackgroundColor && textBackgroundColor.image) {\r\n                imgEl = this._getOrCreateChild(ZRImage);\r\n                imgEl.onload = function () {\r\n                    self.dirtyStyle();\r\n                };\r\n                var imgStyle = imgEl.style;\r\n                imgStyle.image = textBackgroundColor.image;\r\n                imgStyle.x = x;\r\n                imgStyle.y = y;\r\n                imgStyle.width = width;\r\n                imgStyle.height = height;\r\n            }\r\n            if (textBorderWidth && textBorderColor) {\r\n                var rectStyle = rectEl.style;\r\n                rectStyle.lineWidth = textBorderWidth;\r\n                rectStyle.stroke = textBorderColor;\r\n                rectStyle.strokeOpacity = retrieve2(style.strokeOpacity, 1);\r\n                rectStyle.lineDash = style.borderDash;\r\n                rectStyle.lineDashOffset = style.borderDashOffset || 0;\r\n                rectEl.strokeContainThreshold = 0;\r\n                if (rectEl.hasFill() && rectEl.hasStroke()) {\r\n                    rectStyle.strokeFirst = true;\r\n                    rectStyle.lineWidth *= 2;\r\n                }\r\n            }\r\n            var commonStyle = (rectEl || imgEl).style;\r\n            commonStyle.shadowBlur = style.shadowBlur || 0;\r\n            commonStyle.shadowColor = style.shadowColor || 'transparent';\r\n            commonStyle.shadowOffsetX = style.shadowOffsetX || 0;\r\n            commonStyle.shadowOffsetY = style.shadowOffsetY || 0;\r\n            commonStyle.opacity = retrieve3(style.opacity, topStyle.opacity, 1);\r\n        };\r\n        ZRText.makeFont = function (style) {\r\n            var font = '';\r\n            if (style.fontSize || style.fontFamily || style.fontWeight) {\r\n                var fontSize = '';\r\n                if (typeof style.fontSize === 'string'\r\n                    && (style.fontSize.indexOf('px') !== -1\r\n                        || style.fontSize.indexOf('rem') !== -1\r\n                        || style.fontSize.indexOf('em') !== -1)) {\r\n                    fontSize = style.fontSize;\r\n                }\r\n                else if (!isNaN(+style.fontSize)) {\r\n                    fontSize = style.fontSize + 'px';\r\n                }\r\n                else {\r\n                    fontSize = '12px';\r\n                }\r\n                font = [\r\n                    style.fontStyle,\r\n                    style.fontWeight,\r\n                    fontSize,\r\n                    style.fontFamily || 'sans-serif'\r\n                ].join(' ');\r\n            }\r\n            return font && trim(font) || style.textFont || style.font;\r\n        };\r\n        return ZRText;\r\n    }(Displayable));\r\n    var VALID_TEXT_ALIGN = { left: true, right: 1, center: 1 };\r\n    var VALID_TEXT_VERTICAL_ALIGN = { top: 1, bottom: 1, middle: 1 };\r\n    function normalizeTextStyle(style) {\r\n        normalizeStyle(style);\r\n        each(style.rich, normalizeStyle);\r\n        return style;\r\n    }\r\n    function normalizeStyle(style) {\r\n        if (style) {\r\n            style.font = ZRText.makeFont(style);\r\n            var textAlign = style.align;\r\n            textAlign === 'middle' && (textAlign = 'center');\r\n            style.align = (textAlign == null || VALID_TEXT_ALIGN[textAlign]) ? textAlign : 'left';\r\n            var verticalAlign = style.verticalAlign;\r\n            verticalAlign === 'center' && (verticalAlign = 'middle');\r\n            style.verticalAlign = (verticalAlign == null || VALID_TEXT_VERTICAL_ALIGN[verticalAlign]) ? verticalAlign : 'top';\r\n            var textPadding = style.padding;\r\n            if (textPadding) {\r\n                style.padding = normalizeCssArray(style.padding);\r\n            }\r\n        }\r\n    }\r\n    function getStroke(stroke, lineWidth) {\r\n        return (stroke == null || lineWidth <= 0 || stroke === 'transparent' || stroke === 'none')\r\n            ? null\r\n            : (stroke.image || stroke.colorStops)\r\n                ? '#000'\r\n                : stroke;\r\n    }\r\n    function getFill(fill) {\r\n        return (fill == null || fill === 'none')\r\n            ? null\r\n            : (fill.image || fill.colorStops)\r\n                ? '#000'\r\n                : fill;\r\n    }\r\n    function getTextXForPadding(x, textAlign, textPadding) {\r\n        return textAlign === 'right'\r\n            ? (x - textPadding[1])\r\n            : textAlign === 'center'\r\n                ? (x + textPadding[3] / 2 - textPadding[1] / 2)\r\n                : (x + textPadding[3]);\r\n    }\r\n    function getStyleText(style) {\r\n        var text = style.text;\r\n        text != null && (text += '');\r\n        return text;\r\n    }\r\n    function needDrawBackground(style) {\r\n        return !!(style.backgroundColor\r\n            || (style.borderWidth && style.borderColor));\r\n    }\n\n    var ArcShape = (function () {\r\n        function ArcShape() {\r\n            this.cx = 0;\r\n            this.cy = 0;\r\n            this.r = 0;\r\n            this.startAngle = 0;\r\n            this.endAngle = Math.PI * 2;\r\n            this.clockwise = true;\r\n        }\r\n        return ArcShape;\r\n    }());\r\n    var Arc = (function (_super) {\r\n        __extends(Arc, _super);\r\n        function Arc(opts) {\r\n            return _super.call(this, opts) || this;\r\n        }\r\n        Arc.prototype.getDefaultStyle = function () {\r\n            return {\r\n                stroke: '#000',\r\n                fill: null\r\n            };\r\n        };\r\n        Arc.prototype.getDefaultShape = function () {\r\n            return new ArcShape();\r\n        };\r\n        Arc.prototype.buildPath = function (ctx, shape) {\r\n            var x = shape.cx;\r\n            var y = shape.cy;\r\n            var r = Math.max(shape.r, 0);\r\n            var startAngle = shape.startAngle;\r\n            var endAngle = shape.endAngle;\r\n            var clockwise = shape.clockwise;\r\n            var unitX = Math.cos(startAngle);\r\n            var unitY = Math.sin(startAngle);\r\n            ctx.moveTo(unitX * r + x, unitY * r + y);\r\n            ctx.arc(x, y, r, startAngle, endAngle, !clockwise);\r\n        };\r\n        return Arc;\r\n    }(Path));\r\n    Arc.prototype.type = 'arc';\n\n    var out = [];\r\n    var BezierCurveShape = (function () {\r\n        function BezierCurveShape() {\r\n            this.x1 = 0;\r\n            this.y1 = 0;\r\n            this.x2 = 0;\r\n            this.y2 = 0;\r\n            this.cpx1 = 0;\r\n            this.cpy1 = 0;\r\n            this.percent = 1;\r\n        }\r\n        return BezierCurveShape;\r\n    }());\r\n    function someVectorAt(shape, t, isTangent) {\r\n        var cpx2 = shape.cpx2;\r\n        var cpy2 = shape.cpy2;\r\n        if (cpx2 === null || cpy2 === null) {\r\n            return [\r\n                (isTangent ? cubicDerivativeAt : cubicAt)(shape.x1, shape.cpx1, shape.cpx2, shape.x2, t),\r\n                (isTangent ? cubicDerivativeAt : cubicAt)(shape.y1, shape.cpy1, shape.cpy2, shape.y2, t)\r\n            ];\r\n        }\r\n        else {\r\n            return [\r\n                (isTangent ? quadraticDerivativeAt : quadraticAt)(shape.x1, shape.cpx1, shape.x2, t),\r\n                (isTangent ? quadraticDerivativeAt : quadraticAt)(shape.y1, shape.cpy1, shape.y2, t)\r\n            ];\r\n        }\r\n    }\r\n    var BezierCurve = (function (_super) {\r\n        __extends(BezierCurve, _super);\r\n        function BezierCurve(opts) {\r\n            return _super.call(this, opts) || this;\r\n        }\r\n        BezierCurve.prototype.getDefaultStyle = function () {\r\n            return {\r\n                stroke: '#000',\r\n                fill: null\r\n            };\r\n        };\r\n        BezierCurve.prototype.getDefaultShape = function () {\r\n            return new BezierCurveShape();\r\n        };\r\n        BezierCurve.prototype.buildPath = function (ctx, shape) {\r\n            var x1 = shape.x1;\r\n            var y1 = shape.y1;\r\n            var x2 = shape.x2;\r\n            var y2 = shape.y2;\r\n            var cpx1 = shape.cpx1;\r\n            var cpy1 = shape.cpy1;\r\n            var cpx2 = shape.cpx2;\r\n            var cpy2 = shape.cpy2;\r\n            var percent = shape.percent;\r\n            if (percent === 0) {\r\n                return;\r\n            }\r\n            ctx.moveTo(x1, y1);\r\n            if (cpx2 == null || cpy2 == null) {\r\n                if (percent < 1) {\r\n                    quadraticSubdivide(x1, cpx1, x2, percent, out);\r\n                    cpx1 = out[1];\r\n                    x2 = out[2];\r\n                    quadraticSubdivide(y1, cpy1, y2, percent, out);\r\n                    cpy1 = out[1];\r\n                    y2 = out[2];\r\n                }\r\n                ctx.quadraticCurveTo(cpx1, cpy1, x2, y2);\r\n            }\r\n            else {\r\n                if (percent < 1) {\r\n                    cubicSubdivide(x1, cpx1, cpx2, x2, percent, out);\r\n                    cpx1 = out[1];\r\n                    cpx2 = out[2];\r\n                    x2 = out[3];\r\n                    cubicSubdivide(y1, cpy1, cpy2, y2, percent, out);\r\n                    cpy1 = out[1];\r\n                    cpy2 = out[2];\r\n                    y2 = out[3];\r\n                }\r\n                ctx.bezierCurveTo(cpx1, cpy1, cpx2, cpy2, x2, y2);\r\n            }\r\n        };\r\n        BezierCurve.prototype.pointAt = function (t) {\r\n            return someVectorAt(this.shape, t, false);\r\n        };\r\n        BezierCurve.prototype.tangentAt = function (t) {\r\n            var p = someVectorAt(this.shape, t, true);\r\n            return normalize(p, p);\r\n        };\r\n        return BezierCurve;\r\n    }(Path));\r\n    BezierCurve.prototype.type = 'bezier-curve';\n\n    var DropletShape = (function () {\r\n        function DropletShape() {\r\n            this.cx = 0;\r\n            this.cy = 0;\r\n            this.width = 0;\r\n            this.height = 0;\r\n        }\r\n        return DropletShape;\r\n    }());\r\n    var Droplet = (function (_super) {\r\n        __extends(Droplet, _super);\r\n        function Droplet(opts) {\r\n            return _super.call(this, opts) || this;\r\n        }\r\n        Droplet.prototype.getDefaultShape = function () {\r\n            return new DropletShape();\r\n        };\r\n        Droplet.prototype.buildPath = function (ctx, shape) {\r\n            var x = shape.cx;\r\n            var y = shape.cy;\r\n            var a = shape.width;\r\n            var b = shape.height;\r\n            ctx.moveTo(x, y + a);\r\n            ctx.bezierCurveTo(x + a, y + a, x + a * 3 / 2, y - a / 3, x, y - b);\r\n            ctx.bezierCurveTo(x - a * 3 / 2, y - a / 3, x - a, y + a, x, y + a);\r\n            ctx.closePath();\r\n        };\r\n        return Droplet;\r\n    }(Path));\r\n    Droplet.prototype.type = 'droplet';\n\n    var HeartShape = (function () {\r\n        function HeartShape() {\r\n            this.cx = 0;\r\n            this.cy = 0;\r\n            this.width = 0;\r\n            this.height = 0;\r\n        }\r\n        return HeartShape;\r\n    }());\r\n    var Heart = (function (_super) {\r\n        __extends(Heart, _super);\r\n        function Heart(opts) {\r\n            return _super.call(this, opts) || this;\r\n        }\r\n        Heart.prototype.getDefaultShape = function () {\r\n            return new HeartShape();\r\n        };\r\n        Heart.prototype.buildPath = function (ctx, shape) {\r\n            var x = shape.cx;\r\n            var y = shape.cy;\r\n            var a = shape.width;\r\n            var b = shape.height;\r\n            ctx.moveTo(x, y);\r\n            ctx.bezierCurveTo(x + a / 2, y - b * 2 / 3, x + a * 2, y + b / 3, x, y + b);\r\n            ctx.bezierCurveTo(x - a * 2, y + b / 3, x - a / 2, y - b * 2 / 3, x, y);\r\n        };\r\n        return Heart;\r\n    }(Path));\r\n    Heart.prototype.type = 'heart';\n\n    var PI$3 = Math.PI;\r\n    var sin = Math.sin;\r\n    var cos = Math.cos;\r\n    var IsogonShape = (function () {\r\n        function IsogonShape() {\r\n            this.x = 0;\r\n            this.y = 0;\r\n            this.r = 0;\r\n            this.n = 0;\r\n        }\r\n        return IsogonShape;\r\n    }());\r\n    var Isogon = (function (_super) {\r\n        __extends(Isogon, _super);\r\n        function Isogon(opts) {\r\n            return _super.call(this, opts) || this;\r\n        }\r\n        Isogon.prototype.getDefaultShape = function () {\r\n            return new IsogonShape();\r\n        };\r\n        Isogon.prototype.buildPath = function (ctx, shape) {\r\n            var n = shape.n;\r\n            if (!n || n < 2) {\r\n                return;\r\n            }\r\n            var x = shape.x;\r\n            var y = shape.y;\r\n            var r = shape.r;\r\n            var dStep = 2 * PI$3 / n;\r\n            var deg = -PI$3 / 2;\r\n            ctx.moveTo(x + r * cos(deg), y + r * sin(deg));\r\n            for (var i = 0, end = n - 1; i < end; i++) {\r\n                deg += dStep;\r\n                ctx.lineTo(x + r * cos(deg), y + r * sin(deg));\r\n            }\r\n            ctx.closePath();\r\n            return;\r\n        };\r\n        return Isogon;\r\n    }(Path));\r\n    Isogon.prototype.type = 'isogon';\n\n    var RingShape = (function () {\r\n        function RingShape() {\r\n            this.cx = 0;\r\n            this.cy = 0;\r\n            this.r = 0;\r\n            this.r0 = 0;\r\n        }\r\n        return RingShape;\r\n    }());\r\n    var Ring = (function (_super) {\r\n        __extends(Ring, _super);\r\n        function Ring(opts) {\r\n            return _super.call(this, opts) || this;\r\n        }\r\n        Ring.prototype.getDefaultShape = function () {\r\n            return new RingShape();\r\n        };\r\n        Ring.prototype.buildPath = function (ctx, shape) {\r\n            var x = shape.cx;\r\n            var y = shape.cy;\r\n            var PI2 = Math.PI * 2;\r\n            ctx.moveTo(x + shape.r, y);\r\n            ctx.arc(x, y, shape.r, 0, PI2, false);\r\n            ctx.moveTo(x + shape.r0, y);\r\n            ctx.arc(x, y, shape.r0, 0, PI2, true);\r\n        };\r\n        return Ring;\r\n    }(Path));\r\n    Ring.prototype.type = 'ring';\n\n    var sin$1 = Math.sin;\r\n    var cos$1 = Math.cos;\r\n    var radian = Math.PI / 180;\r\n    var RoseShape = (function () {\r\n        function RoseShape() {\r\n            this.cx = 0;\r\n            this.cy = 0;\r\n            this.r = [];\r\n            this.k = 0;\r\n            this.n = 1;\r\n        }\r\n        return RoseShape;\r\n    }());\r\n    var Rose = (function (_super) {\r\n        __extends(Rose, _super);\r\n        function Rose(opts) {\r\n            return _super.call(this, opts) || this;\r\n        }\r\n        Rose.prototype.getDefaultStyle = function () {\r\n            return {\r\n                stroke: '#000',\r\n                fill: null\r\n            };\r\n        };\r\n        Rose.prototype.getDefaultShape = function () {\r\n            return new RoseShape();\r\n        };\r\n        Rose.prototype.buildPath = function (ctx, shape) {\r\n            var R = shape.r;\r\n            var k = shape.k;\r\n            var n = shape.n;\r\n            var x0 = shape.cx;\r\n            var y0 = shape.cy;\r\n            var x;\r\n            var y;\r\n            var r;\r\n            ctx.moveTo(x0, y0);\r\n            for (var i = 0, len = R.length; i < len; i++) {\r\n                r = R[i];\r\n                for (var j = 0; j <= 360 * n; j++) {\r\n                    x = r\r\n                        * sin$1(k / n * j % 360 * radian)\r\n                        * cos$1(j * radian)\r\n                        + x0;\r\n                    y = r\r\n                        * sin$1(k / n * j % 360 * radian)\r\n                        * sin$1(j * radian)\r\n                        + y0;\r\n                    ctx.lineTo(x, y);\r\n                }\r\n            }\r\n        };\r\n        return Rose;\r\n    }(Path));\r\n    Rose.prototype.type = 'rose';\n\n    var PI$4 = Math.PI;\r\n    var cos$2 = Math.cos;\r\n    var sin$2 = Math.sin;\r\n    var StarShape = (function () {\r\n        function StarShape() {\r\n            this.cx = 0;\r\n            this.cy = 0;\r\n            this.n = 3;\r\n            this.r = 0;\r\n        }\r\n        return StarShape;\r\n    }());\r\n    var Star = (function (_super) {\r\n        __extends(Star, _super);\r\n        function Star(opts) {\r\n            return _super.call(this, opts) || this;\r\n        }\r\n        Star.prototype.getDefaultShape = function () {\r\n            return new StarShape();\r\n        };\r\n        Star.prototype.buildPath = function (ctx, shape) {\r\n            var n = shape.n;\r\n            if (!n || n < 2) {\r\n                return;\r\n            }\r\n            var x = shape.cx;\r\n            var y = shape.cy;\r\n            var r = shape.r;\r\n            var r0 = shape.r0;\r\n            if (r0 == null) {\r\n                r0 = n > 4\r\n                    ? r * cos$2(2 * PI$4 / n) / cos$2(PI$4 / n)\r\n                    : r / 3;\r\n            }\r\n            var dStep = PI$4 / n;\r\n            var deg = -PI$4 / 2;\r\n            var xStart = x + r * cos$2(deg);\r\n            var yStart = y + r * sin$2(deg);\r\n            deg += dStep;\r\n            ctx.moveTo(xStart, yStart);\r\n            for (var i = 0, end = n * 2 - 1, ri = void 0; i < end; i++) {\r\n                ri = i % 2 === 0 ? r0 : r;\r\n                ctx.lineTo(x + ri * cos$2(deg), y + ri * sin$2(deg));\r\n                deg += dStep;\r\n            }\r\n            ctx.closePath();\r\n        };\r\n        return Star;\r\n    }(Path));\r\n    Star.prototype.type = 'star';\n\n    var cos$3 = Math.cos;\r\n    var sin$3 = Math.sin;\r\n    var TrochoidShape = (function () {\r\n        function TrochoidShape() {\r\n            this.cx = 0;\r\n            this.cy = 0;\r\n            this.r = 0;\r\n            this.r0 = 0;\r\n            this.d = 0;\r\n            this.location = 'out';\r\n        }\r\n        return TrochoidShape;\r\n    }());\r\n    var Trochoid = (function (_super) {\r\n        __extends(Trochoid, _super);\r\n        function Trochoid(opts) {\r\n            return _super.call(this, opts) || this;\r\n        }\r\n        Trochoid.prototype.getDefaultStyle = function () {\r\n            return {\r\n                stroke: '#000',\r\n                fill: null\r\n            };\r\n        };\r\n        Trochoid.prototype.getDefaultShape = function () {\r\n            return new TrochoidShape();\r\n        };\r\n        Trochoid.prototype.buildPath = function (ctx, shape) {\r\n            var R = shape.r;\r\n            var r = shape.r0;\r\n            var d = shape.d;\r\n            var offsetX = shape.cx;\r\n            var offsetY = shape.cy;\r\n            var delta = shape.location === 'out' ? 1 : -1;\r\n            var x1;\r\n            var y1;\r\n            var x2;\r\n            var y2;\r\n            if (shape.location && R <= r) {\r\n                return;\r\n            }\r\n            var num = 0;\r\n            var i = 1;\r\n            var theta;\r\n            x1 = (R + delta * r) * cos$3(0)\r\n                - delta * d * cos$3(0) + offsetX;\r\n            y1 = (R + delta * r) * sin$3(0)\r\n                - d * sin$3(0) + offsetY;\r\n            ctx.moveTo(x1, y1);\r\n            do {\r\n                num++;\r\n            } while ((r * num) % (R + delta * r) !== 0);\r\n            do {\r\n                theta = Math.PI / 180 * i;\r\n                x2 = (R + delta * r) * cos$3(theta)\r\n                    - delta * d * cos$3((R / r + delta) * theta)\r\n                    + offsetX;\r\n                y2 = (R + delta * r) * sin$3(theta)\r\n                    - d * sin$3((R / r + delta) * theta)\r\n                    + offsetY;\r\n                ctx.lineTo(x2, y2);\r\n                i++;\r\n            } while (i <= (r * num) / (R + delta * r) * 360);\r\n        };\r\n        return Trochoid;\r\n    }(Path));\r\n    Trochoid.prototype.type = 'trochoid';\n\n    var RadialGradient = (function (_super) {\r\n        __extends(RadialGradient, _super);\r\n        function RadialGradient(x, y, r, colorStops, globalCoord) {\r\n            var _this = _super.call(this, colorStops) || this;\r\n            _this.x = x == null ? 0.5 : x;\r\n            _this.y = y == null ? 0.5 : y;\r\n            _this.r = r == null ? 0.5 : r;\r\n            _this.type = 'radial';\r\n            _this.global = globalCoord || false;\r\n            return _this;\r\n        }\r\n        return RadialGradient;\r\n    }(Gradient));\n\n    var extent = [0, 0];\r\n    var extent2 = [0, 0];\r\n    var minTv$1 = new Point();\r\n    var maxTv$1 = new Point();\r\n    var OrientedBoundingRect = (function () {\r\n        function OrientedBoundingRect(rect, transform) {\r\n            this._corners = [];\r\n            this._axes = [];\r\n            this._origin = [0, 0];\r\n            for (var i = 0; i < 4; i++) {\r\n                this._corners[i] = new Point();\r\n            }\r\n            for (var i = 0; i < 2; i++) {\r\n                this._axes[i] = new Point();\r\n            }\r\n            if (rect) {\r\n                this.fromBoundingRect(rect, transform);\r\n            }\r\n        }\r\n        OrientedBoundingRect.prototype.fromBoundingRect = function (rect, transform) {\r\n            var corners = this._corners;\r\n            var axes = this._axes;\r\n            var x = rect.x;\r\n            var y = rect.y;\r\n            var x2 = x + rect.width;\r\n            var y2 = y + rect.height;\r\n            corners[0].set(x, y);\r\n            corners[1].set(x2, y);\r\n            corners[2].set(x2, y2);\r\n            corners[3].set(x, y2);\r\n            if (transform) {\r\n                for (var i = 0; i < 4; i++) {\r\n                    corners[i].transform(transform);\r\n                }\r\n            }\r\n            Point.sub(axes[0], corners[1], corners[0]);\r\n            Point.sub(axes[1], corners[3], corners[0]);\r\n            axes[0].normalize();\r\n            axes[1].normalize();\r\n            for (var i = 0; i < 2; i++) {\r\n                this._origin[i] = axes[i].dot(corners[0]);\r\n            }\r\n        };\r\n        OrientedBoundingRect.prototype.intersect = function (other, mtv) {\r\n            var overlapped = true;\r\n            var noMtv = !mtv;\r\n            minTv$1.set(Infinity, Infinity);\r\n            maxTv$1.set(0, 0);\r\n            if (!this._intersectCheckOneSide(this, other, minTv$1, maxTv$1, noMtv, 1)) {\r\n                overlapped = false;\r\n                if (noMtv) {\r\n                    return overlapped;\r\n                }\r\n            }\r\n            if (!this._intersectCheckOneSide(other, this, minTv$1, maxTv$1, noMtv, -1)) {\r\n                overlapped = false;\r\n                if (noMtv) {\r\n                    return overlapped;\r\n                }\r\n            }\r\n            if (!noMtv) {\r\n                Point.copy(mtv, overlapped ? minTv$1 : maxTv$1);\r\n            }\r\n            return overlapped;\r\n        };\r\n        OrientedBoundingRect.prototype._intersectCheckOneSide = function (self, other, minTv, maxTv, noMtv, inverse) {\r\n            var overlapped = true;\r\n            for (var i = 0; i < 2; i++) {\r\n                var axis = this._axes[i];\r\n                this._getProjMinMaxOnAxis(i, self._corners, extent);\r\n                this._getProjMinMaxOnAxis(i, other._corners, extent2);\r\n                if (extent[1] < extent2[0] || extent[0] > extent2[1]) {\r\n                    overlapped = false;\r\n                    if (noMtv) {\r\n                        return overlapped;\r\n                    }\r\n                    var dist0 = Math.abs(extent2[0] - extent[1]);\r\n                    var dist1 = Math.abs(extent[0] - extent2[1]);\r\n                    if (Math.min(dist0, dist1) > maxTv.len()) {\r\n                        if (dist0 < dist1) {\r\n                            Point.scale(maxTv, axis, -dist0 * inverse);\r\n                        }\r\n                        else {\r\n                            Point.scale(maxTv, axis, dist1 * inverse);\r\n                        }\r\n                    }\r\n                }\r\n                else if (minTv) {\r\n                    var dist0 = Math.abs(extent2[0] - extent[1]);\r\n                    var dist1 = Math.abs(extent[0] - extent2[1]);\r\n                    if (Math.min(dist0, dist1) < minTv.len()) {\r\n                        if (dist0 < dist1) {\r\n                            Point.scale(minTv, axis, dist0 * inverse);\r\n                        }\r\n                        else {\r\n                            Point.scale(minTv, axis, -dist1 * inverse);\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n            return overlapped;\r\n        };\r\n        OrientedBoundingRect.prototype._getProjMinMaxOnAxis = function (dim, corners, out) {\r\n            var axis = this._axes[dim];\r\n            var origin = this._origin;\r\n            var proj = corners[0].dot(axis) + origin[dim];\r\n            var min = proj;\r\n            var max = proj;\r\n            for (var i = 1; i < corners.length; i++) {\r\n                var proj_1 = corners[i].dot(axis) + origin[dim];\r\n                min = Math.min(proj_1, min);\r\n                max = Math.max(proj_1, max);\r\n            }\r\n            out[0] = min;\r\n            out[1] = max;\r\n        };\r\n        return OrientedBoundingRect;\r\n    }());\n\n    /*!\r\n    * ZRender, a high performance 2d drawing library.\r\n    *\r\n    * Copyright (c) 2013, Baidu Inc.\r\n    * All rights reserved.\r\n    *\r\n    * LICENSE\r\n    * https://github.com/ecomfe/zrender/blob/master/LICENSE.txt\r\n    */\r\n    var useVML = !env.canvasSupported;\r\n    var painterCtors = {};\r\n    function delInstance(id) {\r\n    }\r\n    function isDarkMode(backgroundColor) {\r\n        if (!backgroundColor) {\r\n            return false;\r\n        }\r\n        if (typeof backgroundColor === 'string') {\r\n            return lum(backgroundColor, 1) < DARK_MODE_THRESHOLD;\r\n        }\r\n        else if (backgroundColor.colorStops) {\r\n            var colorStops = backgroundColor.colorStops;\r\n            var totalLum = 0;\r\n            var len = colorStops.length;\r\n            for (var i = 0; i < len; i++) {\r\n                totalLum += lum(colorStops[i].color, 1);\r\n            }\r\n            totalLum /= len;\r\n            return totalLum < DARK_MODE_THRESHOLD;\r\n        }\r\n        return false;\r\n    }\r\n    var ZRender = (function () {\r\n        function ZRender(id, dom, opts) {\r\n            var _this = this;\r\n            this._sleepAfterStill = 10;\r\n            this._stillFrameAccum = 0;\r\n            this._needsRefresh = true;\r\n            this._needsRefreshHover = true;\r\n            this._darkMode = false;\r\n            opts = opts || {};\r\n            this.dom = dom;\r\n            this.id = id;\r\n            var storage = new Storage();\r\n            var rendererType = opts.renderer;\r\n            if (useVML) {\r\n                if (!painterCtors.vml) {\r\n                    throw new Error('You need to require \\'zrender/vml/vml\\' to support IE8');\r\n                }\r\n                rendererType = 'vml';\r\n            }\r\n            else if (!rendererType) {\r\n                rendererType = 'canvas';\r\n            }\r\n            if (!painterCtors[rendererType]) {\r\n                throw new Error(\"Renderer '\" + rendererType + \"' is not imported. Please import it first.\");\r\n            }\r\n            opts.useDirtyRect = opts.useDirtyRect == null\r\n                ? false\r\n                : opts.useDirtyRect;\r\n            var painter = new painterCtors[rendererType](dom, storage, opts, id);\r\n            this.storage = storage;\r\n            this.painter = painter;\r\n            var handerProxy = (!env.node && !env.worker)\r\n                ? new HandlerDomProxy(painter.getViewportRoot(), painter.root)\r\n                : null;\r\n            this.handler = new Handler(storage, painter, handerProxy, painter.root);\r\n            this.animation = new Animation({\r\n                stage: {\r\n                    update: function () { return _this._flush(true); }\r\n                }\r\n            });\r\n            this.animation.start();\r\n        }\r\n        ZRender.prototype.add = function (el) {\r\n            if (!el) {\r\n                return;\r\n            }\r\n            this.storage.addRoot(el);\r\n            el.addSelfToZr(this);\r\n            this.refresh();\r\n        };\r\n        ZRender.prototype.remove = function (el) {\r\n            if (!el) {\r\n                return;\r\n            }\r\n            this.storage.delRoot(el);\r\n            el.removeSelfFromZr(this);\r\n            this.refresh();\r\n        };\r\n        ZRender.prototype.configLayer = function (zLevel, config) {\r\n            if (this.painter.configLayer) {\r\n                this.painter.configLayer(zLevel, config);\r\n            }\r\n            this.refresh();\r\n        };\r\n        ZRender.prototype.setBackgroundColor = function (backgroundColor) {\r\n            if (this.painter.setBackgroundColor) {\r\n                this.painter.setBackgroundColor(backgroundColor);\r\n            }\r\n            this.refresh();\r\n            this._backgroundColor = backgroundColor;\r\n            this._darkMode = isDarkMode(backgroundColor);\r\n        };\r\n        ZRender.prototype.getBackgroundColor = function () {\r\n            return this._backgroundColor;\r\n        };\r\n        ZRender.prototype.setDarkMode = function (darkMode) {\r\n            this._darkMode = darkMode;\r\n        };\r\n        ZRender.prototype.isDarkMode = function () {\r\n            return this._darkMode;\r\n        };\r\n        ZRender.prototype.refreshImmediately = function (fromInside) {\r\n            if (!fromInside) {\r\n                this.animation.update(true);\r\n            }\r\n            this._needsRefresh = false;\r\n            this.painter.refresh();\r\n            this._needsRefresh = false;\r\n        };\r\n        ZRender.prototype.refresh = function () {\r\n            this._needsRefresh = true;\r\n            this.animation.start();\r\n        };\r\n        ZRender.prototype.flush = function () {\r\n            this._flush(false);\r\n        };\r\n        ZRender.prototype._flush = function (fromInside) {\r\n            var triggerRendered;\r\n            var start = new Date().getTime();\r\n            if (this._needsRefresh) {\r\n                triggerRendered = true;\r\n                this.refreshImmediately(fromInside);\r\n            }\r\n            if (this._needsRefreshHover) {\r\n                triggerRendered = true;\r\n                this.refreshHoverImmediately();\r\n            }\r\n            var end = new Date().getTime();\r\n            if (triggerRendered) {\r\n                this._stillFrameAccum = 0;\r\n                this.trigger('rendered', {\r\n                    elapsedTime: end - start\r\n                });\r\n            }\r\n            else if (this._sleepAfterStill > 0) {\r\n                this._stillFrameAccum++;\r\n                if (this._stillFrameAccum > this._sleepAfterStill) {\r\n                    this.animation.stop();\r\n                }\r\n            }\r\n        };\r\n        ZRender.prototype.setSleepAfterStill = function (stillFramesCount) {\r\n            this._sleepAfterStill = stillFramesCount;\r\n        };\r\n        ZRender.prototype.wakeUp = function () {\r\n            this.animation.start();\r\n            this._stillFrameAccum = 0;\r\n        };\r\n        ZRender.prototype.addHover = function (el) {\r\n        };\r\n        ZRender.prototype.removeHover = function (el) {\r\n        };\r\n        ZRender.prototype.clearHover = function () {\r\n        };\r\n        ZRender.prototype.refreshHover = function () {\r\n            this._needsRefreshHover = true;\r\n        };\r\n        ZRender.prototype.refreshHoverImmediately = function () {\r\n            this._needsRefreshHover = false;\r\n            if (this.painter.refreshHover && this.painter.getType() === 'canvas') {\r\n                this.painter.refreshHover();\r\n            }\r\n        };\r\n        ZRender.prototype.resize = function (opts) {\r\n            opts = opts || {};\r\n            this.painter.resize(opts.width, opts.height);\r\n            this.handler.resize();\r\n        };\r\n        ZRender.prototype.clearAnimation = function () {\r\n            this.animation.clear();\r\n        };\r\n        ZRender.prototype.getWidth = function () {\r\n            return this.painter.getWidth();\r\n        };\r\n        ZRender.prototype.getHeight = function () {\r\n            return this.painter.getHeight();\r\n        };\r\n        ZRender.prototype.pathToImage = function (e, dpr) {\r\n            if (this.painter.pathToImage) {\r\n                return this.painter.pathToImage(e, dpr);\r\n            }\r\n        };\r\n        ZRender.prototype.setCursorStyle = function (cursorStyle) {\r\n            this.handler.setCursorStyle(cursorStyle);\r\n        };\r\n        ZRender.prototype.findHover = function (x, y) {\r\n            return this.handler.findHover(x, y);\r\n        };\r\n        ZRender.prototype.on = function (eventName, eventHandler, context) {\r\n            this.handler.on(eventName, eventHandler, context);\r\n            return this;\r\n        };\r\n        ZRender.prototype.off = function (eventName, eventHandler) {\r\n            this.handler.off(eventName, eventHandler);\r\n        };\r\n        ZRender.prototype.trigger = function (eventName, event) {\r\n            this.handler.trigger(eventName, event);\r\n        };\r\n        ZRender.prototype.clear = function () {\r\n            var roots = this.storage.getRoots();\r\n            for (var i = 0; i < roots.length; i++) {\r\n                if (roots[i] instanceof Group) {\r\n                    roots[i].removeSelfFromZr(this);\r\n                }\r\n            }\r\n            this.storage.delAllRoots();\r\n            this.painter.clear();\r\n        };\r\n        ZRender.prototype.dispose = function () {\r\n            this.animation.stop();\r\n            this.clear();\r\n            this.storage.dispose();\r\n            this.painter.dispose();\r\n            this.handler.dispose();\r\n            this.animation =\r\n                this.storage =\r\n                    this.painter =\r\n                        this.handler = null;\r\n            delInstance(this.id);\r\n        };\r\n        return ZRender;\r\n    }());\r\n    function init(dom, opts) {\r\n        var zr = new ZRender(guid(), dom, opts);\r\n        return zr;\r\n    }\r\n    function registerPainter(name, Ctor) {\r\n        painterCtors[name] = Ctor;\r\n    }\n\n    var RADIAN_EPSILON = 1e-4;\r\n    function _trim(str) {\r\n        return str.replace(/^\\s+|\\s+$/g, '');\r\n    }\r\n    function linearMap(val, domain, range, clamp) {\r\n        var subDomain = domain[1] - domain[0];\r\n        var subRange = range[1] - range[0];\r\n        if (subDomain === 0) {\r\n            return subRange === 0\r\n                ? range[0]\r\n                : (range[0] + range[1]) / 2;\r\n        }\r\n        if (clamp) {\r\n            if (subDomain > 0) {\r\n                if (val <= domain[0]) {\r\n                    return range[0];\r\n                }\r\n                else if (val >= domain[1]) {\r\n                    return range[1];\r\n                }\r\n            }\r\n            else {\r\n                if (val >= domain[0]) {\r\n                    return range[0];\r\n                }\r\n                else if (val <= domain[1]) {\r\n                    return range[1];\r\n                }\r\n            }\r\n        }\r\n        else {\r\n            if (val === domain[0]) {\r\n                return range[0];\r\n            }\r\n            if (val === domain[1]) {\r\n                return range[1];\r\n            }\r\n        }\r\n        return (val - domain[0]) / subDomain * subRange + range[0];\r\n    }\r\n    function parsePercent$2(percent, all) {\r\n        switch (percent) {\r\n            case 'center':\r\n            case 'middle':\r\n                percent = '50%';\r\n                break;\r\n            case 'left':\r\n            case 'top':\r\n                percent = '0%';\r\n                break;\r\n            case 'right':\r\n            case 'bottom':\r\n                percent = '100%';\r\n                break;\r\n        }\r\n        if (typeof percent === 'string') {\r\n            if (_trim(percent).match(/%$/)) {\r\n                return parseFloat(percent) / 100 * all;\r\n            }\r\n            return parseFloat(percent);\r\n        }\r\n        return percent == null ? NaN : +percent;\r\n    }\r\n    function round$1(x, precision, returnStr) {\r\n        if (precision == null) {\r\n            precision = 10;\r\n        }\r\n        precision = Math.min(Math.max(0, precision), 20);\r\n        x = (+x).toFixed(precision);\r\n        return (returnStr ? x : +x);\r\n    }\r\n    function getPrecisionSafe(val) {\r\n        var str = val.toString();\r\n        var eIndex = str.indexOf('e');\r\n        if (eIndex > 0) {\r\n            var precision = +str.slice(eIndex + 1);\r\n            return precision < 0 ? -precision : 0;\r\n        }\r\n        else {\r\n            var dotIndex = str.indexOf('.');\r\n            return dotIndex < 0 ? 0 : str.length - 1 - dotIndex;\r\n        }\r\n    }\r\n    function getPixelPrecision(dataExtent, pixelExtent) {\r\n        var log = Math.log;\r\n        var LN10 = Math.LN10;\r\n        var dataQuantity = Math.floor(log(dataExtent[1] - dataExtent[0]) / LN10);\r\n        var sizeQuantity = Math.round(log(Math.abs(pixelExtent[1] - pixelExtent[0])) / LN10);\r\n        var precision = Math.min(Math.max(-dataQuantity + sizeQuantity, 0), 20);\r\n        return !isFinite(precision) ? 20 : precision;\r\n    }\r\n    function getPercentWithPrecision(valueList, idx, precision) {\r\n        if (!valueList[idx]) {\r\n            return 0;\r\n        }\r\n        var sum = reduce(valueList, function (acc, val) {\r\n            return acc + (isNaN(val) ? 0 : val);\r\n        }, 0);\r\n        if (sum === 0) {\r\n            return 0;\r\n        }\r\n        var digits = Math.pow(10, precision);\r\n        var votesPerQuota = map(valueList, function (val) {\r\n            return (isNaN(val) ? 0 : val) / sum * digits * 100;\r\n        });\r\n        var targetSeats = digits * 100;\r\n        var seats = map(votesPerQuota, function (votes) {\r\n            return Math.floor(votes);\r\n        });\r\n        var currentSum = reduce(seats, function (acc, val) {\r\n            return acc + val;\r\n        }, 0);\r\n        var remainder = map(votesPerQuota, function (votes, idx) {\r\n            return votes - seats[idx];\r\n        });\r\n        while (currentSum < targetSeats) {\r\n            var max = Number.NEGATIVE_INFINITY;\r\n            var maxId = null;\r\n            for (var i = 0, len = remainder.length; i < len; ++i) {\r\n                if (remainder[i] > max) {\r\n                    max = remainder[i];\r\n                    maxId = i;\r\n                }\r\n            }\r\n            ++seats[maxId];\r\n            remainder[maxId] = 0;\r\n            ++currentSum;\r\n        }\r\n        return seats[idx] / digits;\r\n    }\r\n    function remRadian(radian) {\r\n        var pi2 = Math.PI * 2;\r\n        return (radian % pi2 + pi2) % pi2;\r\n    }\r\n    function isRadianAroundZero(val) {\r\n        return val > -RADIAN_EPSILON && val < RADIAN_EPSILON;\r\n    }\r\n    var TIME_REG = /^(?:(\\d{4})(?:[-\\/](\\d{1,2})(?:[-\\/](\\d{1,2})(?:[T ](\\d{1,2})(?::(\\d{1,2})(?::(\\d{1,2})(?:[.,](\\d+))?)?)?(Z|[\\+\\-]\\d\\d:?\\d\\d)?)?)?)?)?$/;\r\n    function parseDate(value) {\r\n        if (value instanceof Date) {\r\n            return value;\r\n        }\r\n        else if (typeof value === 'string') {\r\n            var match = TIME_REG.exec(value);\r\n            if (!match) {\r\n                return new Date(NaN);\r\n            }\r\n            if (!match[8]) {\r\n                return new Date(+match[1], +(match[2] || 1) - 1, +match[3] || 1, +match[4] || 0, +(match[5] || 0), +match[6] || 0, +match[7] || 0);\r\n            }\r\n            else {\r\n                var hour = +match[4] || 0;\r\n                if (match[8].toUpperCase() !== 'Z') {\r\n                    hour -= +match[8].slice(0, 3);\r\n                }\r\n                return new Date(Date.UTC(+match[1], +(match[2] || 1) - 1, +match[3] || 1, hour, +(match[5] || 0), +match[6] || 0, +match[7] || 0));\r\n            }\r\n        }\r\n        else if (value == null) {\r\n            return new Date(NaN);\r\n        }\r\n        return new Date(Math.round(value));\r\n    }\r\n    function quantity(val) {\r\n        return Math.pow(10, quantityExponent(val));\r\n    }\r\n    function quantityExponent(val) {\r\n        if (val === 0) {\r\n            return 0;\r\n        }\r\n        var exp = Math.floor(Math.log(val) / Math.LN10);\r\n        if (val / Math.pow(10, exp) >= 10) {\r\n            exp++;\r\n        }\r\n        return exp;\r\n    }\r\n    function nice(val, round) {\r\n        var exponent = quantityExponent(val);\r\n        var exp10 = Math.pow(10, exponent);\r\n        var f = val / exp10;\r\n        var nf;\r\n        if (round) {\r\n            if (f < 1.5) {\r\n                nf = 1;\r\n            }\r\n            else if (f < 2.5) {\r\n                nf = 2;\r\n            }\r\n            else if (f < 4) {\r\n                nf = 3;\r\n            }\r\n            else if (f < 7) {\r\n                nf = 5;\r\n            }\r\n            else {\r\n                nf = 10;\r\n            }\r\n        }\r\n        else {\r\n            if (f < 1) {\r\n                nf = 1;\r\n            }\r\n            else if (f < 2) {\r\n                nf = 2;\r\n            }\r\n            else if (f < 3) {\r\n                nf = 3;\r\n            }\r\n            else if (f < 5) {\r\n                nf = 5;\r\n            }\r\n            else {\r\n                nf = 10;\r\n            }\r\n        }\r\n        val = nf * exp10;\r\n        return exponent >= -20 ? +val.toFixed(exponent < 0 ? -exponent : 0) : val;\r\n    }\r\n    function numericToNumber(val) {\r\n        var valFloat = parseFloat(val);\r\n        return (valFloat == val\r\n            && (valFloat !== 0 || typeof val !== 'string' || val.indexOf('x') <= 0)) ? valFloat : NaN;\r\n    }\r\n    function isNumeric(val) {\r\n        return !isNaN(numericToNumber(val));\r\n    }\r\n    function getRandomIdBase() {\r\n        return Math.round(Math.random() * 9);\r\n    }\r\n    function getGreatestCommonDividor(a, b) {\r\n        if (b === 0) {\r\n            return a;\r\n        }\r\n        return getGreatestCommonDividor(b, a % b);\r\n    }\r\n    function getLeastCommonMultiple(a, b) {\r\n        if (a == null) {\r\n            return b;\r\n        }\r\n        if (b == null) {\r\n            return a;\r\n        }\r\n        return a * b / getGreatestCommonDividor(a, b);\r\n    }\n\n    var ECHARTS_PREFIX = '[ECharts] ';\r\n    var storedLogs = {};\r\n    var hasConsole = typeof console !== 'undefined'\r\n        && console.warn && console.log;\r\n    function warn(str) {\r\n        if (hasConsole) {\r\n            console.warn(ECHARTS_PREFIX + str);\r\n        }\r\n    }\r\n    function error(str) {\r\n        if (hasConsole) {\r\n            console.error(ECHARTS_PREFIX + str);\r\n        }\r\n    }\r\n    function deprecateLog(str) {\r\n        if (__DEV__) {\r\n            if (storedLogs[str]) {\r\n                return;\r\n            }\r\n            if (hasConsole) {\r\n                storedLogs[str] = true;\r\n                console.warn(ECHARTS_PREFIX + 'DEPRECATED: ' + str);\r\n            }\r\n        }\r\n    }\r\n    function deprecateReplaceLog(oldOpt, newOpt, scope) {\r\n        if (__DEV__) {\r\n            deprecateLog((scope ? \"[\" + scope + \"]\" : '') + (oldOpt + \" is deprecated, use \" + newOpt + \" instead.\"));\r\n        }\r\n    }\r\n    function consoleLog() {\r\n        var args = [];\r\n        for (var _i = 0; _i < arguments.length; _i++) {\r\n            args[_i] = arguments[_i];\r\n        }\r\n        if (__DEV__) {\r\n            if (typeof console !== 'undefined' && console.log) {\r\n                console.log.apply(console, args);\r\n            }\r\n        }\r\n    }\r\n    function makePrintable() {\r\n        var hintInfo = [];\r\n        for (var _i = 0; _i < arguments.length; _i++) {\r\n            hintInfo[_i] = arguments[_i];\r\n        }\r\n        var msg = '';\r\n        if (__DEV__) {\r\n            var makePrintableStringIfPossible_1 = function (val) {\r\n                return val === void 0 ? 'undefined'\r\n                    : val === Infinity ? 'Infinity'\r\n                        : val === -Infinity ? '-Infinity'\r\n                            : eqNaN(val) ? 'NaN'\r\n                                : val instanceof Date ? 'Date(' + val.toISOString() + ')'\r\n                                    : isFunction(val) ? 'function () { ... }'\r\n                                        : isRegExp(val) ? val + ''\r\n                                            : null;\r\n            };\r\n            msg = map(hintInfo, function (arg) {\r\n                if (isString(arg)) {\r\n                    return arg;\r\n                }\r\n                else {\r\n                    var printableStr = makePrintableStringIfPossible_1(arg);\r\n                    if (printableStr != null) {\r\n                        return printableStr;\r\n                    }\r\n                    else if (typeof JSON !== 'undefined' && JSON.stringify) {\r\n                        try {\r\n                            return JSON.stringify(arg, function (n, val) {\r\n                                var printableStr = makePrintableStringIfPossible_1(val);\r\n                                return printableStr == null ? val : printableStr;\r\n                            });\r\n                        }\r\n                        catch (err) {\r\n                            return '?';\r\n                        }\r\n                    }\r\n                    else {\r\n                        return '?';\r\n                    }\r\n                }\r\n            }).join(' ');\r\n        }\r\n        return msg;\r\n    }\r\n    function throwError(msg) {\r\n        throw new Error(msg);\r\n    }\n\n    var DUMMY_COMPONENT_NAME_PREFIX = 'series\\0';\r\n    var INTERNAL_COMPONENT_ID_PREFIX = '\\0_ec_\\0';\r\n    function normalizeToArray(value) {\r\n        return value instanceof Array\r\n            ? value\r\n            : value == null\r\n                ? []\r\n                : [value];\r\n    }\r\n    function defaultEmphasis(opt, key, subOpts) {\r\n        if (opt) {\r\n            opt[key] = opt[key] || {};\r\n            opt.emphasis = opt.emphasis || {};\r\n            opt.emphasis[key] = opt.emphasis[key] || {};\r\n            for (var i = 0, len = subOpts.length; i < len; i++) {\r\n                var subOptName = subOpts[i];\r\n                if (!opt.emphasis[key].hasOwnProperty(subOptName)\r\n                    && opt[key].hasOwnProperty(subOptName)) {\r\n                    opt.emphasis[key][subOptName] = opt[key][subOptName];\r\n                }\r\n            }\r\n        }\r\n    }\r\n    var TEXT_STYLE_OPTIONS = [\r\n        'fontStyle', 'fontWeight', 'fontSize', 'fontFamily',\r\n        'rich', 'tag', 'color', 'textBorderColor', 'textBorderWidth',\r\n        'width', 'height', 'lineHeight', 'align', 'verticalAlign', 'baseline',\r\n        'shadowColor', 'shadowBlur', 'shadowOffsetX', 'shadowOffsetY',\r\n        'textShadowColor', 'textShadowBlur', 'textShadowOffsetX', 'textShadowOffsetY',\r\n        'backgroundColor', 'borderColor', 'borderWidth', 'borderRadius', 'padding'\r\n    ];\r\n    function getDataItemValue(dataItem) {\r\n        return (isObject(dataItem) && !isArray(dataItem) && !(dataItem instanceof Date))\r\n            ? dataItem.value : dataItem;\r\n    }\r\n    function isDataItemOption(dataItem) {\r\n        return isObject(dataItem)\r\n            && !(dataItem instanceof Array);\r\n    }\r\n    function mappingToExists(existings, newCmptOptions, mode) {\r\n        var isNormalMergeMode = mode === 'normalMerge';\r\n        var isReplaceMergeMode = mode === 'replaceMerge';\r\n        var isReplaceAllMode = mode === 'replaceAll';\r\n        existings = existings || [];\r\n        newCmptOptions = (newCmptOptions || []).slice();\r\n        var existingIdIdxMap = createHashMap();\r\n        each(newCmptOptions, function (cmptOption, index) {\r\n            if (!isObject(cmptOption)) {\r\n                newCmptOptions[index] = null;\r\n                return;\r\n            }\r\n            if (__DEV__) {\r\n                if (cmptOption.id != null && !isValidIdOrName(cmptOption.id)) {\r\n                    warnInvalidateIdOrName(cmptOption.id);\r\n                }\r\n                if (cmptOption.name != null && !isValidIdOrName(cmptOption.name)) {\r\n                    warnInvalidateIdOrName(cmptOption.name);\r\n                }\r\n            }\r\n        });\r\n        var result = prepareResult(existings, existingIdIdxMap, mode);\r\n        if (isNormalMergeMode || isReplaceMergeMode) {\r\n            mappingById(result, existings, existingIdIdxMap, newCmptOptions);\r\n        }\r\n        if (isNormalMergeMode) {\r\n            mappingByName(result, newCmptOptions);\r\n        }\r\n        if (isNormalMergeMode || isReplaceMergeMode) {\r\n            mappingByIndex(result, newCmptOptions, isReplaceMergeMode);\r\n        }\r\n        else if (isReplaceAllMode) {\r\n            mappingInReplaceAllMode(result, newCmptOptions);\r\n        }\r\n        makeIdAndName(result);\r\n        return result;\r\n    }\r\n    function prepareResult(existings, existingIdIdxMap, mode) {\r\n        var result = [];\r\n        if (mode === 'replaceAll') {\r\n            return result;\r\n        }\r\n        for (var index = 0; index < existings.length; index++) {\r\n            var existing = existings[index];\r\n            if (existing && existing.id != null) {\r\n                existingIdIdxMap.set(existing.id, index);\r\n            }\r\n            result.push({\r\n                existing: (mode === 'replaceMerge' || isComponentIdInternal(existing))\r\n                    ? null\r\n                    : existing,\r\n                newOption: null,\r\n                keyInfo: null,\r\n                brandNew: null\r\n            });\r\n        }\r\n        return result;\r\n    }\r\n    function mappingById(result, existings, existingIdIdxMap, newCmptOptions) {\r\n        each(newCmptOptions, function (cmptOption, index) {\r\n            if (!cmptOption || cmptOption.id == null) {\r\n                return;\r\n            }\r\n            var optionId = makeComparableKey(cmptOption.id);\r\n            var existingIdx = existingIdIdxMap.get(optionId);\r\n            if (existingIdx != null) {\r\n                var resultItem = result[existingIdx];\r\n                assert(!resultItem.newOption, 'Duplicated option on id \"' + optionId + '\".');\r\n                resultItem.newOption = cmptOption;\r\n                resultItem.existing = existings[existingIdx];\r\n                newCmptOptions[index] = null;\r\n            }\r\n        });\r\n    }\r\n    function mappingByName(result, newCmptOptions) {\r\n        each(newCmptOptions, function (cmptOption, index) {\r\n            if (!cmptOption || cmptOption.name == null) {\r\n                return;\r\n            }\r\n            for (var i = 0; i < result.length; i++) {\r\n                var existing = result[i].existing;\r\n                if (!result[i].newOption\r\n                    && existing\r\n                    && (existing.id == null || cmptOption.id == null)\r\n                    && !isComponentIdInternal(cmptOption)\r\n                    && !isComponentIdInternal(existing)\r\n                    && keyExistAndEqual('name', existing, cmptOption)) {\r\n                    result[i].newOption = cmptOption;\r\n                    newCmptOptions[index] = null;\r\n                    return;\r\n                }\r\n            }\r\n        });\r\n    }\r\n    function mappingByIndex(result, newCmptOptions, brandNew) {\r\n        each(newCmptOptions, function (cmptOption) {\r\n            if (!cmptOption) {\r\n                return;\r\n            }\r\n            var resultItem;\r\n            var nextIdx = 0;\r\n            while ((resultItem = result[nextIdx])\r\n                && (resultItem.newOption\r\n                    || isComponentIdInternal(resultItem.existing)\r\n                    || (resultItem.existing\r\n                        && cmptOption.id != null\r\n                        && !keyExistAndEqual('id', cmptOption, resultItem.existing)))) {\r\n                nextIdx++;\r\n            }\r\n            if (resultItem) {\r\n                resultItem.newOption = cmptOption;\r\n                resultItem.brandNew = brandNew;\r\n            }\r\n            else {\r\n                result.push({\r\n                    newOption: cmptOption,\r\n                    brandNew: brandNew,\r\n                    existing: null,\r\n                    keyInfo: null\r\n                });\r\n            }\r\n            nextIdx++;\r\n        });\r\n    }\r\n    function mappingInReplaceAllMode(result, newCmptOptions) {\r\n        each(newCmptOptions, function (cmptOption) {\r\n            result.push({\r\n                newOption: cmptOption,\r\n                brandNew: true,\r\n                existing: null,\r\n                keyInfo: null\r\n            });\r\n        });\r\n    }\r\n    function makeIdAndName(mapResult) {\r\n        var idMap = createHashMap();\r\n        each(mapResult, function (item) {\r\n            var existing = item.existing;\r\n            existing && idMap.set(existing.id, item);\r\n        });\r\n        each(mapResult, function (item) {\r\n            var opt = item.newOption;\r\n            assert(!opt || opt.id == null || !idMap.get(opt.id) || idMap.get(opt.id) === item, 'id duplicates: ' + (opt && opt.id));\r\n            opt && opt.id != null && idMap.set(opt.id, item);\r\n            !item.keyInfo && (item.keyInfo = {});\r\n        });\r\n        each(mapResult, function (item, index) {\r\n            var existing = item.existing;\r\n            var opt = item.newOption;\r\n            var keyInfo = item.keyInfo;\r\n            if (!isObject(opt)) {\r\n                return;\r\n            }\r\n            keyInfo.name = opt.name != null\r\n                ? makeComparableKey(opt.name)\r\n                : existing\r\n                    ? existing.name\r\n                    : DUMMY_COMPONENT_NAME_PREFIX + index;\r\n            if (existing) {\r\n                keyInfo.id = makeComparableKey(existing.id);\r\n            }\r\n            else if (opt.id != null) {\r\n                keyInfo.id = makeComparableKey(opt.id);\r\n            }\r\n            else {\r\n                var idNum = 0;\r\n                do {\r\n                    keyInfo.id = '\\0' + keyInfo.name + '\\0' + idNum++;\r\n                } while (idMap.get(keyInfo.id));\r\n            }\r\n            idMap.set(keyInfo.id, item);\r\n        });\r\n    }\r\n    function keyExistAndEqual(attr, obj1, obj2) {\r\n        var key1 = convertOptionIdName(obj1[attr], null);\r\n        var key2 = convertOptionIdName(obj2[attr], null);\r\n        return key1 != null && key2 != null && key1 === key2;\r\n    }\r\n    function makeComparableKey(val) {\r\n        if (__DEV__) {\r\n            if (val == null) {\r\n                throw new Error();\r\n            }\r\n        }\r\n        return convertOptionIdName(val, '');\r\n    }\r\n    function convertOptionIdName(idOrName, defaultValue) {\r\n        if (idOrName == null) {\r\n            return defaultValue;\r\n        }\r\n        var type = typeof idOrName;\r\n        return type === 'string'\r\n            ? idOrName\r\n            : (type === 'number' || isStringSafe(idOrName))\r\n                ? idOrName + ''\r\n                : defaultValue;\r\n    }\r\n    function warnInvalidateIdOrName(idOrName) {\r\n        if (__DEV__) {\r\n            warn('`' + idOrName + '` is invalid id or name. Must be a string or number.');\r\n        }\r\n    }\r\n    function isValidIdOrName(idOrName) {\r\n        return isStringSafe(idOrName) || isNumeric(idOrName);\r\n    }\r\n    function isNameSpecified(componentModel) {\r\n        var name = componentModel.name;\r\n        return !!(name && name.indexOf(DUMMY_COMPONENT_NAME_PREFIX));\r\n    }\r\n    function isComponentIdInternal(cmptOption) {\r\n        return cmptOption\r\n            && cmptOption.id != null\r\n            && makeComparableKey(cmptOption.id).indexOf(INTERNAL_COMPONENT_ID_PREFIX) === 0;\r\n    }\r\n    function setComponentTypeToKeyInfo(mappingResult, mainType, componentModelCtor) {\r\n        each(mappingResult, function (item) {\r\n            var newOption = item.newOption;\r\n            if (isObject(newOption)) {\r\n                item.keyInfo.mainType = mainType;\r\n                item.keyInfo.subType = determineSubType(mainType, newOption, item.existing, componentModelCtor);\r\n            }\r\n        });\r\n    }\r\n    function determineSubType(mainType, newCmptOption, existComponent, componentModelCtor) {\r\n        var subType = newCmptOption.type\r\n            ? newCmptOption.type\r\n            : existComponent\r\n                ? existComponent.subType\r\n                : componentModelCtor.determineSubType(mainType, newCmptOption);\r\n        return subType;\r\n    }\r\n    function queryDataIndex(data, payload) {\r\n        if (payload.dataIndexInside != null) {\r\n            return payload.dataIndexInside;\r\n        }\r\n        else if (payload.dataIndex != null) {\r\n            return isArray(payload.dataIndex)\r\n                ? map(payload.dataIndex, function (value) {\r\n                    return data.indexOfRawIndex(value);\r\n                })\r\n                : data.indexOfRawIndex(payload.dataIndex);\r\n        }\r\n        else if (payload.name != null) {\r\n            return isArray(payload.name)\r\n                ? map(payload.name, function (value) {\r\n                    return data.indexOfName(value);\r\n                })\r\n                : data.indexOfName(payload.name);\r\n        }\r\n    }\r\n    function makeInner() {\r\n        var key = '__ec_inner_' + innerUniqueIndex++;\r\n        return function (hostObj) {\r\n            return hostObj[key] || (hostObj[key] = {});\r\n        };\r\n    }\r\n    var innerUniqueIndex = getRandomIdBase();\r\n    function parseFinder(ecModel, finderInput, opt) {\r\n        var finder;\r\n        if (isString(finderInput)) {\r\n            var obj = {};\r\n            obj[finderInput + 'Index'] = 0;\r\n            finder = obj;\r\n        }\r\n        else {\r\n            finder = finderInput;\r\n        }\r\n        var queryOptionMap = createHashMap();\r\n        var result = {};\r\n        var mainTypeSpecified = false;\r\n        each(finder, function (value, key) {\r\n            if (key === 'dataIndex' || key === 'dataIndexInside') {\r\n                result[key] = value;\r\n                return;\r\n            }\r\n            var parsedKey = key.match(/^(\\w+)(Index|Id|Name)$/) || [];\r\n            var mainType = parsedKey[1];\r\n            var queryType = (parsedKey[2] || '').toLowerCase();\r\n            if (!mainType\r\n                || !queryType\r\n                || (opt && opt.includeMainTypes && indexOf(opt.includeMainTypes, mainType) < 0)) {\r\n                return;\r\n            }\r\n            mainTypeSpecified = mainTypeSpecified || !!mainType;\r\n            var queryOption = queryOptionMap.get(mainType) || queryOptionMap.set(mainType, {});\r\n            queryOption[queryType] = value;\r\n        });\r\n        var defaultMainType = opt ? opt.defaultMainType : null;\r\n        if (!mainTypeSpecified && defaultMainType) {\r\n            queryOptionMap.set(defaultMainType, {});\r\n        }\r\n        queryOptionMap.each(function (queryOption, mainType) {\r\n            var queryResult = queryReferringComponents(ecModel, mainType, queryOption, {\r\n                useDefault: defaultMainType === mainType,\r\n                enableAll: (opt && opt.enableAll != null) ? opt.enableAll : true,\r\n                enableNone: (opt && opt.enableNone != null) ? opt.enableNone : true\r\n            });\r\n            result[mainType + 'Models'] = queryResult.models;\r\n            result[mainType + 'Model'] = queryResult.models[0];\r\n        });\r\n        return result;\r\n    }\r\n    var SINGLE_REFERRING = { useDefault: true, enableAll: false, enableNone: false };\r\n    function queryReferringComponents(ecModel, mainType, userOption, opt) {\r\n        opt = opt || SINGLE_REFERRING;\r\n        var indexOption = userOption.index;\r\n        var idOption = userOption.id;\r\n        var nameOption = userOption.name;\r\n        var result = {\r\n            models: null,\r\n            specified: indexOption != null || idOption != null || nameOption != null\r\n        };\r\n        if (!result.specified) {\r\n            var firstCmpt = void 0;\r\n            result.models = (opt.useDefault && (firstCmpt = ecModel.getComponent(mainType))) ? [firstCmpt] : [];\r\n            return result;\r\n        }\r\n        if (indexOption === 'none' || indexOption === false) {\r\n            assert(opt.enableNone, '`\"none\"` or `false` is not a valid value on index option.');\r\n            result.models = [];\r\n            return result;\r\n        }\r\n        if (indexOption === 'all') {\r\n            assert(opt.enableAll, '`\"all\"` is not a valid value on index option.');\r\n            indexOption = idOption = nameOption = null;\r\n        }\r\n        result.models = ecModel.queryComponents({\r\n            mainType: mainType,\r\n            index: indexOption,\r\n            id: idOption,\r\n            name: nameOption\r\n        });\r\n        return result;\r\n    }\r\n    function setAttribute(dom, key, value) {\r\n        dom.setAttribute\r\n            ? dom.setAttribute(key, value)\r\n            : (dom[key] = value);\r\n    }\r\n    function getAttribute(dom, key) {\r\n        return dom.getAttribute\r\n            ? dom.getAttribute(key)\r\n            : dom[key];\r\n    }\r\n    function interpolateRawValues(data, precision, sourceValue, targetValue, percent) {\r\n        var isAutoPrecision = precision == null || precision === 'auto';\r\n        if (targetValue == null) {\r\n            return targetValue;\r\n        }\r\n        if (typeof targetValue === 'number') {\r\n            var value = interpolateNumber(sourceValue || 0, targetValue, percent);\r\n            return round$1(value, isAutoPrecision ? Math.max(getPrecisionSafe(sourceValue || 0), getPrecisionSafe(targetValue))\r\n                : precision);\r\n        }\r\n        else if (typeof targetValue === 'string') {\r\n            return percent < 1 ? sourceValue : targetValue;\r\n        }\r\n        else {\r\n            var interpolated = [];\r\n            var leftArr = sourceValue || [];\r\n            var rightArr = targetValue;\r\n            var length_1 = Math.max(leftArr.length, rightArr.length);\r\n            for (var i = 0; i < length_1; ++i) {\r\n                var info = data.getDimensionInfo(i);\r\n                if (info.type === 'ordinal') {\r\n                    interpolated[i] = (percent < 1 ? leftArr : rightArr)[i];\r\n                }\r\n                else {\r\n                    var leftVal = leftArr && leftArr[i] ? leftArr[i] : 0;\r\n                    var rightVal = rightArr[i];\r\n                    var value = leftArr == null\r\n                        ? targetValue[i]\r\n                        : interpolateNumber(leftVal, rightVal, percent);\r\n                    interpolated[i] = round$1(value, isAutoPrecision ? Math.max(getPrecisionSafe(leftVal), getPrecisionSafe(rightVal))\r\n                        : precision);\r\n                }\r\n            }\r\n            return interpolated;\r\n        }\r\n    }\n\n    var TYPE_DELIMITER = '.';\r\n    var IS_CONTAINER = '___EC__COMPONENT__CONTAINER___';\r\n    var IS_EXTENDED_CLASS = '___EC__EXTENDED_CLASS___';\r\n    function parseClassType(componentType) {\r\n        var ret = { main: '', sub: '' };\r\n        if (componentType) {\r\n            var typeArr = componentType.split(TYPE_DELIMITER);\r\n            ret.main = typeArr[0] || '';\r\n            ret.sub = typeArr[1] || '';\r\n        }\r\n        return ret;\r\n    }\r\n    function checkClassType(componentType) {\r\n        assert(/^[a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)?$/.test(componentType), 'componentType \"' + componentType + '\" illegal');\r\n    }\r\n    function isExtendedClass(clz) {\r\n        return !!(clz && clz[IS_EXTENDED_CLASS]);\r\n    }\r\n    function enableClassExtend(rootClz, mandatoryMethods) {\r\n        rootClz.$constructor = rootClz;\r\n        rootClz.extend = function (proto) {\r\n            if (__DEV__) {\r\n                each(mandatoryMethods, function (method) {\r\n                    if (!proto[method]) {\r\n                        console.warn('Method `' + method + '` should be implemented'\r\n                            + (proto.type ? ' in ' + proto.type : '') + '.');\r\n                    }\r\n                });\r\n            }\r\n            var superClass = this;\r\n            function ExtendedClass() {\r\n                var args = [];\r\n                for (var _i = 0; _i < arguments.length; _i++) {\r\n                    args[_i] = arguments[_i];\r\n                }\r\n                if (!proto.$constructor) {\r\n                    if (!isESClass(superClass)) {\r\n                        superClass.apply(this, arguments);\r\n                    }\r\n                    else {\r\n                        var ins = createObject(ExtendedClass.prototype, new (superClass.bind.apply(superClass, __spreadArrays([void 0], args)))());\r\n                        return ins;\r\n                    }\r\n                }\r\n                else {\r\n                    proto.$constructor.apply(this, arguments);\r\n                }\r\n            }\r\n            ExtendedClass[IS_EXTENDED_CLASS] = true;\r\n            extend(ExtendedClass.prototype, proto);\r\n            ExtendedClass.extend = this.extend;\r\n            ExtendedClass.superCall = superCall;\r\n            ExtendedClass.superApply = superApply;\r\n            inherits(ExtendedClass, this);\r\n            ExtendedClass.superClass = superClass;\r\n            return ExtendedClass;\r\n        };\r\n    }\r\n    function isESClass(fn) {\r\n        return typeof fn === 'function'\r\n            && /^class\\s/.test(Function.prototype.toString.call(fn));\r\n    }\r\n    function mountExtend(SubClz, SupperClz) {\r\n        SubClz.extend = SupperClz.extend;\r\n    }\r\n    var classBase = Math.round(Math.random() * 10);\r\n    function enableClassCheck(target) {\r\n        var classAttr = ['__\\0is_clz', classBase++].join('_');\r\n        target.prototype[classAttr] = true;\r\n        if (__DEV__) {\r\n            assert(!target.isInstance, 'The method \"is\" can not be defined.');\r\n        }\r\n        target.isInstance = function (obj) {\r\n            return !!(obj && obj[classAttr]);\r\n        };\r\n    }\r\n    function superCall(context, methodName) {\r\n        var args = [];\r\n        for (var _i = 2; _i < arguments.length; _i++) {\r\n            args[_i - 2] = arguments[_i];\r\n        }\r\n        return this.superClass.prototype[methodName].apply(context, args);\r\n    }\r\n    function superApply(context, methodName, args) {\r\n        return this.superClass.prototype[methodName].apply(context, args);\r\n    }\r\n    function enableClassManagement(target, options) {\r\n        options = options || {};\r\n        var storage = {};\r\n        target.registerClass = function (clz) {\r\n            var componentFullType = clz.type || clz.prototype.type;\r\n            if (componentFullType) {\r\n                checkClassType(componentFullType);\r\n                clz.prototype.type = componentFullType;\r\n                var componentTypeInfo = parseClassType(componentFullType);\r\n                if (!componentTypeInfo.sub) {\r\n                    if (__DEV__) {\r\n                        if (storage[componentTypeInfo.main]) {\r\n                            console.warn(componentTypeInfo.main + ' exists.');\r\n                        }\r\n                    }\r\n                    storage[componentTypeInfo.main] = clz;\r\n                }\r\n                else if (componentTypeInfo.sub !== IS_CONTAINER) {\r\n                    var container = makeContainer(componentTypeInfo);\r\n                    container[componentTypeInfo.sub] = clz;\r\n                }\r\n            }\r\n            return clz;\r\n        };\r\n        target.getClass = function (mainType, subType, throwWhenNotFound) {\r\n            var clz = storage[mainType];\r\n            if (clz && clz[IS_CONTAINER]) {\r\n                clz = subType ? clz[subType] : null;\r\n            }\r\n            if (throwWhenNotFound && !clz) {\r\n                throw new Error(!subType\r\n                    ? mainType + '.' + 'type should be specified.'\r\n                    : 'Component ' + mainType + '.' + (subType || '') + ' not exists. Load it first.');\r\n            }\r\n            return clz;\r\n        };\r\n        target.getClassesByMainType = function (componentType) {\r\n            var componentTypeInfo = parseClassType(componentType);\r\n            var result = [];\r\n            var obj = storage[componentTypeInfo.main];\r\n            if (obj && obj[IS_CONTAINER]) {\r\n                each(obj, function (o, type) {\r\n                    type !== IS_CONTAINER && result.push(o);\r\n                });\r\n            }\r\n            else {\r\n                result.push(obj);\r\n            }\r\n            return result;\r\n        };\r\n        target.hasClass = function (componentType) {\r\n            var componentTypeInfo = parseClassType(componentType);\r\n            return !!storage[componentTypeInfo.main];\r\n        };\r\n        target.getAllClassMainTypes = function () {\r\n            var types = [];\r\n            each(storage, function (obj, type) {\r\n                types.push(type);\r\n            });\r\n            return types;\r\n        };\r\n        target.hasSubTypes = function (componentType) {\r\n            var componentTypeInfo = parseClassType(componentType);\r\n            var obj = storage[componentTypeInfo.main];\r\n            return obj && obj[IS_CONTAINER];\r\n        };\r\n        function makeContainer(componentTypeInfo) {\r\n            var container = storage[componentTypeInfo.main];\r\n            if (!container || !container[IS_CONTAINER]) {\r\n                container = storage[componentTypeInfo.main] = {};\r\n                container[IS_CONTAINER] = true;\r\n            }\r\n            return container;\r\n        }\r\n        if (options.registerWhenExtend) {\r\n            var originalExtend_1 = target.extend;\r\n            if (originalExtend_1) {\r\n                target.extend = function (proto) {\r\n                    var ExtendedClass = originalExtend_1.call(this, proto);\r\n                    return target.registerClass(ExtendedClass);\r\n                };\r\n            }\r\n        }\r\n    }\n\n    function makeStyleMapper(properties, ignoreParent) {\r\n        for (var i = 0; i < properties.length; i++) {\r\n            if (!properties[i][1]) {\r\n                properties[i][1] = properties[i][0];\r\n            }\r\n        }\r\n        ignoreParent = ignoreParent || false;\r\n        return function (model, excludes, includes) {\r\n            var style = {};\r\n            for (var i = 0; i < properties.length; i++) {\r\n                var propName = properties[i][1];\r\n                if ((excludes && indexOf(excludes, propName) >= 0)\r\n                    || (includes && indexOf(includes, propName) < 0)) {\r\n                    continue;\r\n                }\r\n                var val = model.getShallow(propName, ignoreParent);\r\n                if (val != null) {\r\n                    style[properties[i][0]] = val;\r\n                }\r\n            }\r\n            return style;\r\n        };\r\n    }\n\n    var AREA_STYLE_KEY_MAP = [\r\n        ['fill', 'color'],\r\n        ['shadowBlur'],\r\n        ['shadowOffsetX'],\r\n        ['shadowOffsetY'],\r\n        ['opacity'],\r\n        ['shadowColor']\r\n    ];\r\n    var getAreaStyle = makeStyleMapper(AREA_STYLE_KEY_MAP);\r\n    var AreaStyleMixin = (function () {\r\n        function AreaStyleMixin() {\r\n        }\r\n        AreaStyleMixin.prototype.getAreaStyle = function (excludes, includes) {\r\n            return getAreaStyle(this, excludes, includes);\r\n        };\r\n        return AreaStyleMixin;\r\n    }());\n\n    var getECData = makeInner();\n\n    var _highlightNextDigit = 1;\r\n    var _highlightKeyMap = {};\r\n    var getSavedStates = makeInner();\r\n    var HOVER_STATE_NORMAL = 0;\r\n    var HOVER_STATE_BLUR = 1;\r\n    var HOVER_STATE_EMPHASIS = 2;\r\n    var SPECIAL_STATES = ['emphasis', 'blur', 'select'];\r\n    var DISPLAY_STATES = ['normal', 'emphasis', 'blur', 'select'];\r\n    var Z2_EMPHASIS_LIFT = 10;\r\n    var Z2_SELECT_LIFT = 9;\r\n    var HIGHLIGHT_ACTION_TYPE = 'highlight';\r\n    var DOWNPLAY_ACTION_TYPE = 'downplay';\r\n    var SELECT_ACTION_TYPE = 'select';\r\n    var UNSELECT_ACTION_TYPE = 'unselect';\r\n    var TOGGLE_SELECT_ACTION_TYPE = 'toggleSelect';\r\n    function hasFillOrStroke(fillOrStroke) {\r\n        return fillOrStroke != null && fillOrStroke !== 'none';\r\n    }\r\n    var liftedColorCache = new LRU(100);\r\n    function liftColor(color) {\r\n        if (typeof color !== 'string') {\r\n            return color;\r\n        }\r\n        var liftedColor = liftedColorCache.get(color);\r\n        if (!liftedColor) {\r\n            liftedColor = lift(color, -0.1);\r\n            liftedColorCache.put(color, liftedColor);\r\n        }\r\n        return liftedColor;\r\n    }\r\n    function doChangeHoverState(el, stateName, hoverStateEnum) {\r\n        if (el.onHoverStateChange && (el.hoverState || 0) !== hoverStateEnum) {\r\n            el.onHoverStateChange(stateName);\r\n        }\r\n        el.hoverState = hoverStateEnum;\r\n    }\r\n    function singleEnterEmphasis(el) {\r\n        doChangeHoverState(el, 'emphasis', HOVER_STATE_EMPHASIS);\r\n    }\r\n    function singleLeaveEmphasis(el) {\r\n        if (el.hoverState === HOVER_STATE_EMPHASIS) {\r\n            doChangeHoverState(el, 'normal', HOVER_STATE_NORMAL);\r\n        }\r\n    }\r\n    function singleEnterBlur(el) {\r\n        doChangeHoverState(el, 'blur', HOVER_STATE_BLUR);\r\n    }\r\n    function singleLeaveBlur(el) {\r\n        if (el.hoverState === HOVER_STATE_BLUR) {\r\n            doChangeHoverState(el, 'normal', HOVER_STATE_NORMAL);\r\n        }\r\n    }\r\n    function singleEnterSelect(el) {\r\n        el.selected = true;\r\n    }\r\n    function singleLeaveSelect(el) {\r\n        el.selected = false;\r\n    }\r\n    function updateElementState(el, updater, commonParam) {\r\n        updater(el, commonParam);\r\n    }\r\n    function traverseUpdateState(el, updater, commonParam) {\r\n        updateElementState(el, updater, commonParam);\r\n        el.isGroup && el.traverse(function (child) {\r\n            updateElementState(child, updater, commonParam);\r\n        });\r\n    }\r\n    function setStatesFlag(el, stateName) {\r\n        switch (stateName) {\r\n            case 'emphasis':\r\n                el.hoverState = HOVER_STATE_EMPHASIS;\r\n                break;\r\n            case 'normal':\r\n                el.hoverState = HOVER_STATE_NORMAL;\r\n                break;\r\n            case 'blur':\r\n                el.hoverState = HOVER_STATE_BLUR;\r\n                break;\r\n            case 'select':\r\n                el.selected = true;\r\n        }\r\n    }\r\n    function getFromStateStyle(el, props, toStateName, defaultValue) {\r\n        var style = el.style;\r\n        var fromState = {};\r\n        for (var i = 0; i < props.length; i++) {\r\n            var propName = props[i];\r\n            var val = style[propName];\r\n            fromState[propName] = val == null ? (defaultValue && defaultValue[propName]) : val;\r\n        }\r\n        for (var i = 0; i < el.animators.length; i++) {\r\n            var animator = el.animators[i];\r\n            if (animator.__fromStateTransition\r\n                && animator.__fromStateTransition.indexOf(toStateName) < 0\r\n                && animator.targetName === 'style') {\r\n                animator.saveFinalToTarget(fromState, props);\r\n            }\r\n        }\r\n        return fromState;\r\n    }\r\n    function createEmphasisDefaultState(el, stateName, targetStates, state) {\r\n        var hasSelect = targetStates && indexOf(targetStates, 'select') >= 0;\r\n        var cloned = false;\r\n        if (el instanceof Path) {\r\n            var store = getSavedStates(el);\r\n            var fromFill = hasSelect ? (store.selectFill || store.normalFill) : store.normalFill;\r\n            var fromStroke = hasSelect ? (store.selectStroke || store.normalStroke) : store.normalStroke;\r\n            if (hasFillOrStroke(fromFill) || hasFillOrStroke(fromStroke)) {\r\n                state = state || {};\r\n                var emphasisStyle = state.style || {};\r\n                if (!hasFillOrStroke(emphasisStyle.fill) && hasFillOrStroke(fromFill)) {\r\n                    cloned = true;\r\n                    state = extend({}, state);\r\n                    emphasisStyle = extend({}, emphasisStyle);\r\n                    emphasisStyle.fill = liftColor(fromFill);\r\n                }\r\n                else if (!hasFillOrStroke(emphasisStyle.stroke) && hasFillOrStroke(fromStroke)) {\r\n                    if (!cloned) {\r\n                        state = extend({}, state);\r\n                        emphasisStyle = extend({}, emphasisStyle);\r\n                    }\r\n                    emphasisStyle.stroke = liftColor(fromStroke);\r\n                }\r\n                state.style = emphasisStyle;\r\n            }\r\n        }\r\n        if (state) {\r\n            if (state.z2 == null) {\r\n                if (!cloned) {\r\n                    state = extend({}, state);\r\n                }\r\n                var z2EmphasisLift = el.z2EmphasisLift;\r\n                state.z2 = el.z2 + (z2EmphasisLift != null ? z2EmphasisLift : Z2_EMPHASIS_LIFT);\r\n            }\r\n        }\r\n        return state;\r\n    }\r\n    function createSelectDefaultState(el, stateName, state) {\r\n        if (state) {\r\n            if (state.z2 == null) {\r\n                state = extend({}, state);\r\n                var z2SelectLift = el.z2SelectLift;\r\n                state.z2 = el.z2 + (z2SelectLift != null ? z2SelectLift : Z2_SELECT_LIFT);\r\n            }\r\n        }\r\n        return state;\r\n    }\r\n    function createBlurDefaultState(el, stateName, state) {\r\n        var hasBlur = indexOf(el.currentStates, stateName) >= 0;\r\n        var currentOpacity = el.style.opacity;\r\n        var fromState = !hasBlur\r\n            ? getFromStateStyle(el, ['opacity'], stateName, {\r\n                opacity: 1\r\n            })\r\n            : null;\r\n        state = state || {};\r\n        var blurStyle = state.style || {};\r\n        if (blurStyle.opacity == null) {\r\n            state = extend({}, state);\r\n            blurStyle = extend({\r\n                opacity: hasBlur ? currentOpacity : (fromState.opacity * 0.1)\r\n            }, blurStyle);\r\n            state.style = blurStyle;\r\n        }\r\n        return state;\r\n    }\r\n    function elementStateProxy(stateName, targetStates) {\r\n        var state = this.states[stateName];\r\n        if (this.style) {\r\n            if (stateName === 'emphasis') {\r\n                return createEmphasisDefaultState(this, stateName, targetStates, state);\r\n            }\r\n            else if (stateName === 'blur') {\r\n                return createBlurDefaultState(this, stateName, state);\r\n            }\r\n            else if (stateName === 'select') {\r\n                return createSelectDefaultState(this, stateName, state);\r\n            }\r\n        }\r\n        return state;\r\n    }\r\n    function setDefaultStateProxy(el) {\r\n        el.stateProxy = elementStateProxy;\r\n        var textContent = el.getTextContent();\r\n        var textGuide = el.getTextGuideLine();\r\n        if (textContent) {\r\n            textContent.stateProxy = elementStateProxy;\r\n        }\r\n        if (textGuide) {\r\n            textGuide.stateProxy = elementStateProxy;\r\n        }\r\n    }\r\n    function enterEmphasisWhenMouseOver(el, e) {\r\n        !shouldSilent(el, e)\r\n            && !el.__highByOuter\r\n            && traverseUpdateState(el, singleEnterEmphasis);\r\n    }\r\n    function leaveEmphasisWhenMouseOut(el, e) {\r\n        !shouldSilent(el, e)\r\n            && !el.__highByOuter\r\n            && traverseUpdateState(el, singleLeaveEmphasis);\r\n    }\r\n    function enterEmphasis(el, highlightDigit) {\r\n        el.__highByOuter |= 1 << (highlightDigit || 0);\r\n        traverseUpdateState(el, singleEnterEmphasis);\r\n    }\r\n    function leaveEmphasis(el, highlightDigit) {\r\n        !(el.__highByOuter &= ~(1 << (highlightDigit || 0)))\r\n            && traverseUpdateState(el, singleLeaveEmphasis);\r\n    }\r\n    function enterBlur(el) {\r\n        traverseUpdateState(el, singleEnterBlur);\r\n    }\r\n    function leaveBlur(el) {\r\n        traverseUpdateState(el, singleLeaveBlur);\r\n    }\r\n    function enterSelect(el) {\r\n        traverseUpdateState(el, singleEnterSelect);\r\n    }\r\n    function leaveSelect(el) {\r\n        traverseUpdateState(el, singleLeaveSelect);\r\n    }\r\n    function shouldSilent(el, e) {\r\n        return el.__highDownSilentOnTouch && e.zrByTouch;\r\n    }\r\n    function allLeaveBlur(api) {\r\n        var model = api.getModel();\r\n        model.eachComponent(function (componentType, componentModel) {\r\n            var view = componentType === 'series'\r\n                ? api.getViewOfSeriesModel(componentModel)\r\n                : api.getViewOfComponentModel(componentModel);\r\n            view.group.traverse(function (child) {\r\n                singleLeaveBlur(child);\r\n            });\r\n        });\r\n    }\r\n    function toggleSeriesBlurState(targetSeriesIndex, focus, blurScope, api, isBlur) {\r\n        var ecModel = api.getModel();\r\n        blurScope = blurScope || 'coordinateSystem';\r\n        function leaveBlurOfIndices(data, dataIndices) {\r\n            for (var i = 0; i < dataIndices.length; i++) {\r\n                var itemEl = data.getItemGraphicEl(dataIndices[i]);\r\n                itemEl && leaveBlur(itemEl);\r\n            }\r\n        }\r\n        if (!isBlur) {\r\n            allLeaveBlur(api);\r\n            return;\r\n        }\r\n        if (targetSeriesIndex == null) {\r\n            return;\r\n        }\r\n        if (!focus || focus === 'none') {\r\n            return;\r\n        }\r\n        var targetSeriesModel = ecModel.getSeriesByIndex(targetSeriesIndex);\r\n        var targetCoordSys = targetSeriesModel.coordinateSystem;\r\n        if (targetCoordSys && targetCoordSys.master) {\r\n            targetCoordSys = targetCoordSys.master;\r\n        }\r\n        var blurredSeries = [];\r\n        ecModel.eachSeries(function (seriesModel) {\r\n            var sameSeries = targetSeriesModel === seriesModel;\r\n            var coordSys = seriesModel.coordinateSystem;\r\n            if (coordSys && coordSys.master) {\r\n                coordSys = coordSys.master;\r\n            }\r\n            var sameCoordSys = coordSys && targetCoordSys\r\n                ? coordSys === targetCoordSys\r\n                : sameSeries;\r\n            if (!(blurScope === 'series' && !sameSeries\r\n                || blurScope === 'coordinateSystem' && !sameCoordSys\r\n                || focus === 'series' && sameSeries)) {\r\n                var view = api.getViewOfSeriesModel(seriesModel);\r\n                view.group.traverse(function (child) {\r\n                    singleEnterBlur(child);\r\n                });\r\n                if (isArrayLike(focus)) {\r\n                    leaveBlurOfIndices(seriesModel.getData(), focus);\r\n                }\r\n                else if (isObject(focus)) {\r\n                    var dataTypes = keys(focus);\r\n                    for (var d = 0; d < dataTypes.length; d++) {\r\n                        leaveBlurOfIndices(seriesModel.getData(dataTypes[d]), focus[dataTypes[d]]);\r\n                    }\r\n                }\r\n                blurredSeries.push(seriesModel);\r\n            }\r\n        });\r\n        ecModel.eachComponent(function (componentType, componentModel) {\r\n            if (componentType === 'series') {\r\n                return;\r\n            }\r\n            var view = api.getViewOfComponentModel(componentModel);\r\n            if (view && view.blurSeries) {\r\n                view.blurSeries(blurredSeries, ecModel);\r\n            }\r\n        });\r\n    }\r\n    function toggleSeriesBlurStateFromPayload(seriesModel, payload, api) {\r\n        if (!isHighDownPayload(payload)) {\r\n            return;\r\n        }\r\n        var isHighlight = payload.type === HIGHLIGHT_ACTION_TYPE;\r\n        var seriesIndex = seriesModel.seriesIndex;\r\n        var data = seriesModel.getData(payload.dataType);\r\n        var dataIndex = queryDataIndex(data, payload);\r\n        dataIndex = (isArray(dataIndex) ? dataIndex[0] : dataIndex) || 0;\r\n        var el = data.getItemGraphicEl(dataIndex);\r\n        if (!el) {\r\n            var count = data.count();\r\n            var current = 0;\r\n            while (!el && current < count) {\r\n                el = data.getItemGraphicEl(current++);\r\n            }\r\n        }\r\n        if (el) {\r\n            var ecData = getECData(el);\r\n            toggleSeriesBlurState(seriesIndex, ecData.focus, ecData.blurScope, api, isHighlight);\r\n        }\r\n        else {\r\n            var focus_1 = seriesModel.get(['emphasis', 'focus']);\r\n            var blurScope = seriesModel.get(['emphasis', 'blurScope']);\r\n            if (focus_1 != null) {\r\n                toggleSeriesBlurState(seriesIndex, focus_1, blurScope, api, isHighlight);\r\n            }\r\n        }\r\n    }\r\n    function toggleSelectionFromPayload(seriesModel, payload, api) {\r\n        if (!(isSelectChangePayload(payload))) {\r\n            return;\r\n        }\r\n        var dataType = payload.dataType;\r\n        var data = seriesModel.getData(dataType);\r\n        var dataIndex = queryDataIndex(data, payload);\r\n        if (!isArray(dataIndex)) {\r\n            dataIndex = [dataIndex];\r\n        }\r\n        seriesModel[payload.type === TOGGLE_SELECT_ACTION_TYPE ? 'toggleSelect'\r\n            : payload.type === SELECT_ACTION_TYPE ? 'select' : 'unselect'](dataIndex, dataType);\r\n    }\r\n    function updateSeriesElementSelection(seriesModel) {\r\n        var allData = seriesModel.getAllData();\r\n        each(allData, function (_a) {\r\n            var data = _a.data, type = _a.type;\r\n            data.eachItemGraphicEl(function (el, idx) {\r\n                seriesModel.isSelected(idx, type) ? enterSelect(el) : leaveSelect(el);\r\n            });\r\n        });\r\n    }\r\n    function getAllSelectedIndices(ecModel) {\r\n        var ret = [];\r\n        ecModel.eachSeries(function (seriesModel) {\r\n            var allData = seriesModel.getAllData();\r\n            each(allData, function (_a) {\r\n                var data = _a.data, type = _a.type;\r\n                var dataIndices = seriesModel.getSelectedDataIndices();\r\n                if (dataIndices.length > 0) {\r\n                    var item = {\r\n                        dataIndex: dataIndices,\r\n                        seriesIndex: seriesModel.seriesIndex\r\n                    };\r\n                    if (type != null) {\r\n                        item.dataType = type;\r\n                    }\r\n                    ret.push(item);\r\n                }\r\n            });\r\n        });\r\n        return ret;\r\n    }\r\n    function enableHoverEmphasis(el, focus, blurScope) {\r\n        setAsHighDownDispatcher(el, true);\r\n        traverseUpdateState(el, setDefaultStateProxy);\r\n        enableHoverFocus(el, focus, blurScope);\r\n    }\r\n    function enableHoverFocus(el, focus, blurScope) {\r\n        var ecData = getECData(el);\r\n        if (focus != null) {\r\n            ecData.focus = focus;\r\n            ecData.blurScope = blurScope;\r\n        }\r\n        else if (ecData.focus) {\r\n            ecData.focus = null;\r\n        }\r\n    }\r\n    var OTHER_STATES = ['emphasis', 'blur', 'select'];\r\n    var defaultStyleGetterMap = {\r\n        itemStyle: 'getItemStyle',\r\n        lineStyle: 'getLineStyle',\r\n        areaStyle: 'getAreaStyle'\r\n    };\r\n    function setStatesStylesFromModel(el, itemModel, styleType, getter) {\r\n        styleType = styleType || 'itemStyle';\r\n        for (var i = 0; i < OTHER_STATES.length; i++) {\r\n            var stateName = OTHER_STATES[i];\r\n            var model = itemModel.getModel([stateName, styleType]);\r\n            var state = el.ensureState(stateName);\r\n            state.style = getter ? getter(model) : model[defaultStyleGetterMap[styleType]]();\r\n        }\r\n    }\r\n    function setAsHighDownDispatcher(el, asDispatcher) {\r\n        var disable = asDispatcher === false;\r\n        var extendedEl = el;\r\n        if (el.highDownSilentOnTouch) {\r\n            extendedEl.__highDownSilentOnTouch = el.highDownSilentOnTouch;\r\n        }\r\n        if (!disable || extendedEl.__highDownDispatcher) {\r\n            extendedEl.__highByOuter = extendedEl.__highByOuter || 0;\r\n            extendedEl.__highDownDispatcher = !disable;\r\n        }\r\n    }\r\n    function isHighDownDispatcher(el) {\r\n        return !!(el && el.__highDownDispatcher);\r\n    }\r\n    function getHighlightDigit(highlightKey) {\r\n        var highlightDigit = _highlightKeyMap[highlightKey];\r\n        if (highlightDigit == null && _highlightNextDigit <= 32) {\r\n            highlightDigit = _highlightKeyMap[highlightKey] = _highlightNextDigit++;\r\n        }\r\n        return highlightDigit;\r\n    }\r\n    function isSelectChangePayload(payload) {\r\n        var payloadType = payload.type;\r\n        return payloadType === SELECT_ACTION_TYPE\r\n            || payloadType === UNSELECT_ACTION_TYPE\r\n            || payloadType === TOGGLE_SELECT_ACTION_TYPE;\r\n    }\r\n    function isHighDownPayload(payload) {\r\n        var payloadType = payload.type;\r\n        return payloadType === HIGHLIGHT_ACTION_TYPE\r\n            || payloadType === DOWNPLAY_ACTION_TYPE;\r\n    }\r\n    function savePathStates(el) {\r\n        var store = getSavedStates(el);\r\n        store.normalFill = el.style.fill;\r\n        store.normalStroke = el.style.stroke;\r\n        var selectState = el.states.select || {};\r\n        store.selectFill = (selectState.style && selectState.style.fill) || null;\r\n        store.selectStroke = (selectState.style && selectState.style.stroke) || null;\r\n    }\n\n    function makePath(pathData, opts, rect, layout) {\r\n        var path = createFromString(pathData, opts);\r\n        if (rect) {\r\n            if (layout === 'center') {\r\n                rect = centerGraphic(rect, path.getBoundingRect());\r\n            }\r\n            resizePath(path, rect);\r\n        }\r\n        return path;\r\n    }\r\n    function makeImage(imageUrl, rect, layout) {\r\n        var zrImg = new ZRImage({\r\n            style: {\r\n                image: imageUrl,\r\n                x: rect.x,\r\n                y: rect.y,\r\n                width: rect.width,\r\n                height: rect.height\r\n            },\r\n            onload: function (img) {\r\n                if (layout === 'center') {\r\n                    var boundingRect = {\r\n                        width: img.width,\r\n                        height: img.height\r\n                    };\r\n                    zrImg.setStyle(centerGraphic(rect, boundingRect));\r\n                }\r\n            }\r\n        });\r\n        return zrImg;\r\n    }\r\n    function centerGraphic(rect, boundingRect) {\r\n        var aspect = boundingRect.width / boundingRect.height;\r\n        var width = rect.height * aspect;\r\n        var height;\r\n        if (width <= rect.width) {\r\n            height = rect.height;\r\n        }\r\n        else {\r\n            width = rect.width;\r\n            height = width / aspect;\r\n        }\r\n        var cx = rect.x + rect.width / 2;\r\n        var cy = rect.y + rect.height / 2;\r\n        return {\r\n            x: cx - width / 2,\r\n            y: cy - height / 2,\r\n            width: width,\r\n            height: height\r\n        };\r\n    }\r\n    function resizePath(path, rect) {\r\n        if (!path.applyTransform) {\r\n            return;\r\n        }\r\n        var pathRect = path.getBoundingRect();\r\n        var m = pathRect.calculateTransform(rect);\r\n        path.applyTransform(m);\r\n    }\r\n    function animateOrSetProps(animationType, el, props, animatableModel, dataIndex, cb, during) {\r\n        var isFrom = false;\r\n        var removeOpt;\r\n        if (typeof dataIndex === 'function') {\r\n            during = cb;\r\n            cb = dataIndex;\r\n            dataIndex = null;\r\n        }\r\n        else if (isObject(dataIndex)) {\r\n            cb = dataIndex.cb;\r\n            during = dataIndex.during;\r\n            isFrom = dataIndex.isFrom;\r\n            removeOpt = dataIndex.removeOpt;\r\n            dataIndex = dataIndex.dataIndex;\r\n        }\r\n        var isUpdate = animationType === 'update';\r\n        var isRemove = animationType === 'remove';\r\n        var animationPayload;\r\n        if (animatableModel && animatableModel.ecModel) {\r\n            var updatePayload = animatableModel.ecModel.getUpdatePayload();\r\n            animationPayload = (updatePayload && updatePayload.animation);\r\n        }\r\n        var animationEnabled = animatableModel && animatableModel.isAnimationEnabled();\r\n        if (!isRemove) {\r\n            el.stopAnimation('remove');\r\n        }\r\n        if (animationEnabled) {\r\n            var duration = void 0;\r\n            var animationEasing = void 0;\r\n            var animationDelay = void 0;\r\n            if (animationPayload) {\r\n                duration = animationPayload.duration || 0;\r\n                animationEasing = animationPayload.easing || 'cubicOut';\r\n                animationDelay = animationPayload.delay || 0;\r\n            }\r\n            else if (isRemove) {\r\n                removeOpt = removeOpt || {};\r\n                duration = retrieve2(removeOpt.duration, 200);\r\n                animationEasing = retrieve2(removeOpt.easing, 'cubicOut');\r\n                animationDelay = 0;\r\n            }\r\n            else {\r\n                duration = animatableModel.getShallow(isUpdate ? 'animationDurationUpdate' : 'animationDuration');\r\n                animationEasing = animatableModel.getShallow(isUpdate ? 'animationEasingUpdate' : 'animationEasing');\r\n                animationDelay = animatableModel.getShallow(isUpdate ? 'animationDelayUpdate' : 'animationDelay');\r\n            }\r\n            if (typeof animationDelay === 'function') {\r\n                animationDelay = animationDelay(dataIndex, animatableModel.getAnimationDelayParams\r\n                    ? animatableModel.getAnimationDelayParams(el, dataIndex)\r\n                    : null);\r\n            }\r\n            if (typeof duration === 'function') {\r\n                duration = duration(dataIndex);\r\n            }\r\n            duration > 0\r\n                ? (isFrom\r\n                    ? el.animateFrom(props, {\r\n                        duration: duration,\r\n                        delay: animationDelay || 0,\r\n                        easing: animationEasing,\r\n                        done: cb,\r\n                        force: !!cb || !!during,\r\n                        scope: animationType,\r\n                        during: during\r\n                    })\r\n                    : el.animateTo(props, {\r\n                        duration: duration,\r\n                        delay: animationDelay || 0,\r\n                        easing: animationEasing,\r\n                        done: cb,\r\n                        force: !!cb || !!during,\r\n                        setToFinal: true,\r\n                        scope: animationType,\r\n                        during: during\r\n                    }))\r\n                : (el.stopAnimation(),\r\n                    !isFrom && el.attr(props),\r\n                    cb && cb());\r\n        }\r\n        else {\r\n            el.stopAnimation();\r\n            !isFrom && el.attr(props);\r\n            during && during(1);\r\n            cb && cb();\r\n        }\r\n    }\r\n    function updateProps(el, props, animatableModel, dataIndex, cb, during) {\r\n        animateOrSetProps('update', el, props, animatableModel, dataIndex, cb, during);\r\n    }\r\n    function initProps(el, props, animatableModel, dataIndex, cb, during) {\r\n        animateOrSetProps('init', el, props, animatableModel, dataIndex, cb, during);\r\n    }\r\n    function removeElement(el, props, animatableModel, dataIndex, cb, during) {\r\n        if (isElementRemoved(el)) {\r\n            return;\r\n        }\r\n        animateOrSetProps('remove', el, props, animatableModel, dataIndex, cb, during);\r\n    }\r\n    function fadeOutDisplayable(el, animatableModel, dataIndex, done) {\r\n        el.removeTextContent();\r\n        el.removeTextGuideLine();\r\n        removeElement(el, {\r\n            style: {\r\n                opacity: 0\r\n            }\r\n        }, animatableModel, dataIndex, done);\r\n    }\r\n    function removeElementWithFadeOut(el, animatableModel, dataIndex) {\r\n        function doRemove() {\r\n            el.parent && el.parent.remove(el);\r\n        }\r\n        if (!el.isGroup) {\r\n            fadeOutDisplayable(el, animatableModel, dataIndex, doRemove);\r\n        }\r\n        else {\r\n            el.traverse(function (disp) {\r\n                if (!disp.isGroup) {\r\n                    fadeOutDisplayable(disp, animatableModel, dataIndex, doRemove);\r\n                }\r\n            });\r\n        }\r\n    }\r\n    function isElementRemoved(el) {\r\n        if (!el.__zr) {\r\n            return true;\r\n        }\r\n        for (var i = 0; i < el.animators.length; i++) {\r\n            var animator = el.animators[i];\r\n            if (animator.scope === 'remove') {\r\n                return true;\r\n            }\r\n        }\r\n        return false;\r\n    }\r\n    function isNotGroup(el) {\r\n        return !el.isGroup;\r\n    }\r\n    function isPath(el) {\r\n        return el.shape != null;\r\n    }\r\n    function groupTransition(g1, g2, animatableModel) {\r\n        if (!g1 || !g2) {\r\n            return;\r\n        }\r\n        function getElMap(g) {\r\n            var elMap = {};\r\n            g.traverse(function (el) {\r\n                if (isNotGroup(el) && el.anid) {\r\n                    elMap[el.anid] = el;\r\n                }\r\n            });\r\n            return elMap;\r\n        }\r\n        function getAnimatableProps(el) {\r\n            var obj = {\r\n                x: el.x,\r\n                y: el.y,\r\n                rotation: el.rotation\r\n            };\r\n            if (isPath(el)) {\r\n                obj.shape = extend({}, el.shape);\r\n            }\r\n            return obj;\r\n        }\r\n        var elMap1 = getElMap(g1);\r\n        g2.traverse(function (el) {\r\n            if (isNotGroup(el) && el.anid) {\r\n                var oldEl = elMap1[el.anid];\r\n                if (oldEl) {\r\n                    var newProp = getAnimatableProps(el);\r\n                    el.attr(getAnimatableProps(oldEl));\r\n                    updateProps(el, newProp, animatableModel, getECData(el).dataIndex);\r\n                }\r\n            }\r\n        });\r\n    }\n\n    var EMPTY_OBJ = {};\r\n    function setLabelText(label, labelTexts) {\r\n        for (var i = 0; i < SPECIAL_STATES.length; i++) {\r\n            var stateName = SPECIAL_STATES[i];\r\n            var text = labelTexts[stateName];\r\n            var state = label.ensureState(stateName);\r\n            state.style = state.style || {};\r\n            state.style.text = text;\r\n        }\r\n        var oldStates = label.currentStates.slice();\r\n        label.clearStates(true);\r\n        label.setStyle({ text: labelTexts.normal });\r\n        label.useStates(oldStates, true);\r\n    }\r\n    function getLabelText(opt, stateModels, overrideValue) {\r\n        var labelFetcher = opt.labelFetcher;\r\n        var labelDataIndex = opt.labelDataIndex;\r\n        var labelDimIndex = opt.labelDimIndex;\r\n        var normalModel = stateModels.normal;\r\n        var baseText;\r\n        if (labelFetcher) {\r\n            baseText = labelFetcher.getFormattedLabel(labelDataIndex, 'normal', null, labelDimIndex, normalModel && normalModel.get('formatter'), overrideValue != null ? {\r\n                value: overrideValue\r\n            } : null);\r\n        }\r\n        if (baseText == null) {\r\n            baseText = isFunction(opt.defaultText) ? opt.defaultText(labelDataIndex, opt, overrideValue) : opt.defaultText;\r\n        }\r\n        var statesText = {\r\n            normal: baseText\r\n        };\r\n        for (var i = 0; i < SPECIAL_STATES.length; i++) {\r\n            var stateName = SPECIAL_STATES[i];\r\n            var stateModel = stateModels[stateName];\r\n            statesText[stateName] = retrieve2(labelFetcher\r\n                ? labelFetcher.getFormattedLabel(labelDataIndex, stateName, null, labelDimIndex, stateModel && stateModel.get('formatter'))\r\n                : null, baseText);\r\n        }\r\n        return statesText;\r\n    }\r\n    function setLabelStyle(targetEl, labelStatesModels, opt, stateSpecified) {\r\n        opt = opt || EMPTY_OBJ;\r\n        var isSetOnText = targetEl instanceof ZRText;\r\n        var needsCreateText = false;\r\n        for (var i = 0; i < DISPLAY_STATES.length; i++) {\r\n            var stateModel = labelStatesModels[DISPLAY_STATES[i]];\r\n            if (stateModel && stateModel.getShallow('show')) {\r\n                needsCreateText = true;\r\n                break;\r\n            }\r\n        }\r\n        var textContent = isSetOnText ? targetEl : targetEl.getTextContent();\r\n        if (needsCreateText) {\r\n            if (!isSetOnText) {\r\n                if (!textContent) {\r\n                    textContent = new ZRText();\r\n                    targetEl.setTextContent(textContent);\r\n                }\r\n                if (targetEl.stateProxy) {\r\n                    textContent.stateProxy = targetEl.stateProxy;\r\n                }\r\n            }\r\n            var labelStatesTexts = getLabelText(opt, labelStatesModels);\r\n            var normalModel = labelStatesModels.normal;\r\n            var showNormal = !!normalModel.getShallow('show');\r\n            var normalStyle = createTextStyle(normalModel, stateSpecified && stateSpecified.normal, opt, false, !isSetOnText);\r\n            normalStyle.text = labelStatesTexts.normal;\r\n            if (!isSetOnText) {\r\n                targetEl.setTextConfig(createTextConfig(normalModel, opt, false));\r\n            }\r\n            for (var i = 0; i < SPECIAL_STATES.length; i++) {\r\n                var stateName = SPECIAL_STATES[i];\r\n                var stateModel = labelStatesModels[stateName];\r\n                if (stateModel) {\r\n                    var stateObj = textContent.ensureState(stateName);\r\n                    var stateShow = !!retrieve2(stateModel.getShallow('show'), showNormal);\r\n                    if (stateShow !== showNormal) {\r\n                        stateObj.ignore = !stateShow;\r\n                    }\r\n                    stateObj.style = createTextStyle(stateModel, stateSpecified && stateSpecified[stateName], opt, true, !isSetOnText);\r\n                    stateObj.style.text = labelStatesTexts[stateName];\r\n                    if (!isSetOnText) {\r\n                        var targetElEmphasisState = targetEl.ensureState(stateName);\r\n                        targetElEmphasisState.textConfig = createTextConfig(stateModel, opt, true);\r\n                    }\r\n                }\r\n            }\r\n            textContent.silent = !!normalModel.getShallow('silent');\r\n            if (textContent.style.x != null) {\r\n                normalStyle.x = textContent.style.x;\r\n            }\r\n            if (textContent.style.y != null) {\r\n                normalStyle.y = textContent.style.y;\r\n            }\r\n            textContent.ignore = !showNormal;\r\n            textContent.useStyle(normalStyle);\r\n            textContent.dirty();\r\n            if (opt.enableTextSetter) {\r\n                labelInner(textContent).setLabelText = function (overrideValue) {\r\n                    var labelStatesTexts = getLabelText(opt, labelStatesModels, overrideValue);\r\n                    setLabelText(textContent, labelStatesTexts);\r\n                };\r\n            }\r\n        }\r\n        else if (textContent) {\r\n            textContent.ignore = true;\r\n        }\r\n        targetEl.dirty();\r\n    }\r\n    function getLabelStatesModels(itemModel, labelName) {\r\n        labelName = (labelName || 'label');\r\n        var statesModels = {\r\n            normal: itemModel.getModel(labelName)\r\n        };\r\n        for (var i = 0; i < SPECIAL_STATES.length; i++) {\r\n            var stateName = SPECIAL_STATES[i];\r\n            statesModels[stateName] = itemModel.getModel([stateName, labelName]);\r\n        }\r\n        return statesModels;\r\n    }\r\n    function createTextStyle(textStyleModel, specifiedTextStyle, opt, isNotNormal, isAttached) {\r\n        var textStyle = {};\r\n        setTextStyleCommon(textStyle, textStyleModel, opt, isNotNormal, isAttached);\r\n        specifiedTextStyle && extend(textStyle, specifiedTextStyle);\r\n        return textStyle;\r\n    }\r\n    function createTextConfig(textStyleModel, opt, isNotNormal) {\r\n        opt = opt || {};\r\n        var textConfig = {};\r\n        var labelPosition;\r\n        var labelRotate = textStyleModel.getShallow('rotate');\r\n        var labelDistance = retrieve2(textStyleModel.getShallow('distance'), isNotNormal ? null : 5);\r\n        var labelOffset = textStyleModel.getShallow('offset');\r\n        labelPosition = textStyleModel.getShallow('position')\r\n            || (isNotNormal ? null : 'inside');\r\n        labelPosition === 'outside' && (labelPosition = opt.defaultOutsidePosition || 'top');\r\n        if (labelPosition != null) {\r\n            textConfig.position = labelPosition;\r\n        }\r\n        if (labelOffset != null) {\r\n            textConfig.offset = labelOffset;\r\n        }\r\n        if (labelRotate != null) {\r\n            labelRotate *= Math.PI / 180;\r\n            textConfig.rotation = labelRotate;\r\n        }\r\n        if (labelDistance != null) {\r\n            textConfig.distance = labelDistance;\r\n        }\r\n        textConfig.outsideFill = textStyleModel.get('color') === 'inherit'\r\n            ? (opt.inheritColor || null)\r\n            : 'auto';\r\n        return textConfig;\r\n    }\r\n    function setTextStyleCommon(textStyle, textStyleModel, opt, isNotNormal, isAttached) {\r\n        opt = opt || EMPTY_OBJ;\r\n        var ecModel = textStyleModel.ecModel;\r\n        var globalTextStyle = ecModel && ecModel.option.textStyle;\r\n        var richItemNames = getRichItemNames(textStyleModel);\r\n        var richResult;\r\n        if (richItemNames) {\r\n            richResult = {};\r\n            for (var name_1 in richItemNames) {\r\n                if (richItemNames.hasOwnProperty(name_1)) {\r\n                    var richTextStyle = textStyleModel.getModel(['rich', name_1]);\r\n                    setTokenTextStyle(richResult[name_1] = {}, richTextStyle, globalTextStyle, opt, isNotNormal, isAttached, false, true);\r\n                }\r\n            }\r\n        }\r\n        if (richResult) {\r\n            textStyle.rich = richResult;\r\n        }\r\n        var overflow = textStyleModel.get('overflow');\r\n        if (overflow) {\r\n            textStyle.overflow = overflow;\r\n        }\r\n        var margin = textStyleModel.get('minMargin');\r\n        if (margin != null) {\r\n            textStyle.margin = margin;\r\n        }\r\n        setTokenTextStyle(textStyle, textStyleModel, globalTextStyle, opt, isNotNormal, isAttached, true, false);\r\n    }\r\n    function getRichItemNames(textStyleModel) {\r\n        var richItemNameMap;\r\n        while (textStyleModel && textStyleModel !== textStyleModel.ecModel) {\r\n            var rich = (textStyleModel.option || EMPTY_OBJ).rich;\r\n            if (rich) {\r\n                richItemNameMap = richItemNameMap || {};\r\n                var richKeys = keys(rich);\r\n                for (var i = 0; i < richKeys.length; i++) {\r\n                    var richKey = richKeys[i];\r\n                    richItemNameMap[richKey] = 1;\r\n                }\r\n            }\r\n            textStyleModel = textStyleModel.parentModel;\r\n        }\r\n        return richItemNameMap;\r\n    }\r\n    var TEXT_PROPS_WITH_GLOBAL = [\r\n        'fontStyle', 'fontWeight', 'fontSize', 'fontFamily',\r\n        'textShadowColor', 'textShadowBlur', 'textShadowOffsetX', 'textShadowOffsetY'\r\n    ];\r\n    var TEXT_PROPS_SELF = [\r\n        'align', 'lineHeight', 'width', 'height', 'tag', 'verticalAlign'\r\n    ];\r\n    var TEXT_PROPS_BOX = [\r\n        'padding', 'borderWidth', 'borderRadius', 'borderDashOffset',\r\n        'backgroundColor', 'borderColor',\r\n        'shadowColor', 'shadowBlur', 'shadowOffsetX', 'shadowOffsetY'\r\n    ];\r\n    function setTokenTextStyle(textStyle, textStyleModel, globalTextStyle, opt, isNotNormal, isAttached, isBlock, inRich) {\r\n        globalTextStyle = !isNotNormal && globalTextStyle || EMPTY_OBJ;\r\n        var inheritColor = opt && opt.inheritColor;\r\n        var fillColor = textStyleModel.getShallow('color');\r\n        var strokeColor = textStyleModel.getShallow('textBorderColor');\r\n        var opacity = retrieve2(textStyleModel.getShallow('opacity'), globalTextStyle.opacity);\r\n        if (fillColor === 'inherit' || fillColor === 'auto') {\r\n            if (__DEV__) {\r\n                if (fillColor === 'auto') {\r\n                    deprecateReplaceLog('color: \\'auto\\'', 'color: \\'inherit\\'');\r\n                }\r\n            }\r\n            if (inheritColor) {\r\n                fillColor = inheritColor;\r\n            }\r\n            else {\r\n                fillColor = null;\r\n            }\r\n        }\r\n        if (strokeColor === 'inherit' || (strokeColor === 'auto')) {\r\n            if (__DEV__) {\r\n                if (strokeColor === 'auto') {\r\n                    deprecateReplaceLog('color: \\'auto\\'', 'color: \\'inherit\\'');\r\n                }\r\n            }\r\n            if (inheritColor) {\r\n                strokeColor = inheritColor;\r\n            }\r\n            else {\r\n                strokeColor = null;\r\n            }\r\n        }\r\n        if (!isAttached) {\r\n            fillColor = fillColor || globalTextStyle.color;\r\n            strokeColor = strokeColor || globalTextStyle.textBorderColor;\r\n        }\r\n        if (fillColor != null) {\r\n            textStyle.fill = fillColor;\r\n        }\r\n        if (strokeColor != null) {\r\n            textStyle.stroke = strokeColor;\r\n        }\r\n        var textBorderWidth = retrieve2(textStyleModel.getShallow('textBorderWidth'), globalTextStyle.textBorderWidth);\r\n        if (textBorderWidth != null) {\r\n            textStyle.lineWidth = textBorderWidth;\r\n        }\r\n        var textBorderType = retrieve2(textStyleModel.getShallow('textBorderType'), globalTextStyle.textBorderType);\r\n        if (textBorderType != null) {\r\n            textStyle.lineDash = textBorderType;\r\n        }\r\n        var textBorderDashOffset = retrieve2(textStyleModel.getShallow('textBorderDashOffset'), globalTextStyle.textBorderDashOffset);\r\n        if (textBorderDashOffset != null) {\r\n            textStyle.lineDashOffset = textBorderDashOffset;\r\n        }\r\n        if (!isNotNormal && (opacity == null) && !inRich) {\r\n            opacity = opt && opt.defaultOpacity;\r\n        }\r\n        if (opacity != null) {\r\n            textStyle.opacity = opacity;\r\n        }\r\n        if (!isNotNormal && !isAttached) {\r\n            if (textStyle.fill == null && opt.inheritColor) {\r\n                textStyle.fill = opt.inheritColor;\r\n            }\r\n        }\r\n        for (var i = 0; i < TEXT_PROPS_WITH_GLOBAL.length; i++) {\r\n            var key = TEXT_PROPS_WITH_GLOBAL[i];\r\n            var val = retrieve2(textStyleModel.getShallow(key), globalTextStyle[key]);\r\n            if (val != null) {\r\n                textStyle[key] = val;\r\n            }\r\n        }\r\n        for (var i = 0; i < TEXT_PROPS_SELF.length; i++) {\r\n            var key = TEXT_PROPS_SELF[i];\r\n            var val = textStyleModel.getShallow(key);\r\n            if (val != null) {\r\n                textStyle[key] = val;\r\n            }\r\n        }\r\n        if (textStyle.verticalAlign == null) {\r\n            var baseline = textStyleModel.getShallow('baseline');\r\n            if (baseline != null) {\r\n                textStyle.verticalAlign = baseline;\r\n            }\r\n        }\r\n        if (!isBlock || !opt.disableBox) {\r\n            for (var i = 0; i < TEXT_PROPS_BOX.length; i++) {\r\n                var key = TEXT_PROPS_BOX[i];\r\n                var val = textStyleModel.getShallow(key);\r\n                if (val != null) {\r\n                    textStyle[key] = val;\r\n                }\r\n            }\r\n            var borderType = textStyleModel.getShallow('borderType');\r\n            if (borderType != null) {\r\n                textStyle.borderDash = borderType;\r\n            }\r\n            if ((textStyle.backgroundColor === 'auto' || textStyle.backgroundColor === 'inherit') && inheritColor) {\r\n                if (__DEV__) {\r\n                    if (textStyle.backgroundColor === 'auto') {\r\n                        deprecateReplaceLog('backgroundColor: \\'auto\\'', 'backgroundColor: \\'inherit\\'');\r\n                    }\r\n                }\r\n                textStyle.backgroundColor = inheritColor;\r\n            }\r\n            if ((textStyle.borderColor === 'auto' || textStyle.borderColor === 'inherit') && inheritColor) {\r\n                if (__DEV__) {\r\n                    if (textStyle.borderColor === 'auto') {\r\n                        deprecateReplaceLog('borderColor: \\'auto\\'', 'borderColor: \\'inherit\\'');\r\n                    }\r\n                }\r\n                textStyle.borderColor = inheritColor;\r\n            }\r\n        }\r\n    }\r\n    function getFont(opt, ecModel) {\r\n        var gTextStyleModel = ecModel && ecModel.getModel('textStyle');\r\n        return trim([\r\n            opt.fontStyle || gTextStyleModel && gTextStyleModel.getShallow('fontStyle') || '',\r\n            opt.fontWeight || gTextStyleModel && gTextStyleModel.getShallow('fontWeight') || '',\r\n            (opt.fontSize || gTextStyleModel && gTextStyleModel.getShallow('fontSize') || 12) + 'px',\r\n            opt.fontFamily || gTextStyleModel && gTextStyleModel.getShallow('fontFamily') || 'sans-serif'\r\n        ].join(' '));\r\n    }\r\n    var labelInner = makeInner();\r\n    function setLabelValueAnimation(label, labelStatesModels, value, getDefaultText) {\r\n        if (!label) {\r\n            return;\r\n        }\r\n        var obj = labelInner(label);\r\n        obj.prevValue = obj.value;\r\n        obj.value = value;\r\n        var normalLabelModel = labelStatesModels.normal;\r\n        obj.valueAnimation = normalLabelModel.get('valueAnimation');\r\n        if (obj.valueAnimation) {\r\n            obj.precision = normalLabelModel.get('precision');\r\n            obj.defaultInterpolatedText = getDefaultText;\r\n            obj.statesModels = labelStatesModels;\r\n        }\r\n    }\r\n    function animateLabelValue(textEl, dataIndex, data, seriesModel) {\r\n        var labelInnerStore = labelInner(textEl);\r\n        if (!labelInnerStore.valueAnimation) {\r\n            return;\r\n        }\r\n        var defaultInterpolatedText = labelInnerStore.defaultInterpolatedText;\r\n        var prevValue = labelInnerStore.prevValue;\r\n        var currentValue = labelInnerStore.value;\r\n        function during(percent) {\r\n            var interpolated = interpolateRawValues(data, labelInnerStore.precision, prevValue, currentValue, percent);\r\n            var labelText = getLabelText({\r\n                labelDataIndex: dataIndex,\r\n                defaultText: defaultInterpolatedText\r\n                    ? defaultInterpolatedText(interpolated)\r\n                    : interpolated + ''\r\n            }, labelInnerStore.statesModels, interpolated);\r\n            setLabelText(textEl, labelText);\r\n        }\r\n        (prevValue == null ? initProps\r\n            : updateProps)(textEl, {}, seriesModel, dataIndex, null, during);\r\n    }\n\n    var PATH_COLOR = ['textStyle', 'color'];\r\n    var tmpRichText = new ZRText();\r\n    var TextStyleMixin = (function () {\r\n        function TextStyleMixin() {\r\n        }\r\n        TextStyleMixin.prototype.getTextColor = function (isEmphasis) {\r\n            var ecModel = this.ecModel;\r\n            return this.getShallow('color')\r\n                || ((!isEmphasis && ecModel) ? ecModel.get(PATH_COLOR) : null);\r\n        };\r\n        TextStyleMixin.prototype.getFont = function () {\r\n            return getFont({\r\n                fontStyle: this.getShallow('fontStyle'),\r\n                fontWeight: this.getShallow('fontWeight'),\r\n                fontSize: this.getShallow('fontSize'),\r\n                fontFamily: this.getShallow('fontFamily')\r\n            }, this.ecModel);\r\n        };\r\n        TextStyleMixin.prototype.getTextRect = function (text) {\r\n            tmpRichText.useStyle({\r\n                text: text,\r\n                fontStyle: this.getShallow('fontStyle'),\r\n                fontWeight: this.getShallow('fontWeight'),\r\n                fontSize: this.getShallow('fontSize'),\r\n                fontFamily: this.getShallow('fontFamily'),\r\n                verticalAlign: this.getShallow('verticalAlign') || this.getShallow('baseline'),\r\n                padding: this.getShallow('padding'),\r\n                lineHeight: this.getShallow('lineHeight'),\r\n                rich: this.getShallow('rich')\r\n            });\r\n            tmpRichText.update();\r\n            return tmpRichText.getBoundingRect();\r\n        };\r\n        return TextStyleMixin;\r\n    }());\n\n    var LINE_STYLE_KEY_MAP = [\r\n        ['lineWidth', 'width'],\r\n        ['stroke', 'color'],\r\n        ['opacity'],\r\n        ['shadowBlur'],\r\n        ['shadowOffsetX'],\r\n        ['shadowOffsetY'],\r\n        ['shadowColor'],\r\n        ['lineDash', 'type'],\r\n        ['lineDashOffset', 'dashOffset'],\r\n        ['lineCap', 'cap'],\r\n        ['lineJoin', 'join'],\r\n        ['miterLimit']\r\n    ];\r\n    var getLineStyle = makeStyleMapper(LINE_STYLE_KEY_MAP);\r\n    var LineStyleMixin = (function () {\r\n        function LineStyleMixin() {\r\n        }\r\n        LineStyleMixin.prototype.getLineStyle = function (excludes) {\r\n            return getLineStyle(this, excludes);\r\n        };\r\n        return LineStyleMixin;\r\n    }());\n\n    var ITEM_STYLE_KEY_MAP = [\r\n        ['fill', 'color'],\r\n        ['stroke', 'borderColor'],\r\n        ['lineWidth', 'borderWidth'],\r\n        ['opacity'],\r\n        ['shadowBlur'],\r\n        ['shadowOffsetX'],\r\n        ['shadowOffsetY'],\r\n        ['shadowColor'],\r\n        ['lineDash', 'borderType'],\r\n        ['lineDashOffset', 'borderDashOffset'],\r\n        ['lineCap', 'borderCap'],\r\n        ['lineJoin', 'borderJoin'],\r\n        ['miterLimit', 'borderMiterLimit']\r\n    ];\r\n    var getItemStyle = makeStyleMapper(ITEM_STYLE_KEY_MAP);\r\n    var ItemStyleMixin = (function () {\r\n        function ItemStyleMixin() {\r\n        }\r\n        ItemStyleMixin.prototype.getItemStyle = function (excludes, includes) {\r\n            return getItemStyle(this, excludes, includes);\r\n        };\r\n        return ItemStyleMixin;\r\n    }());\n\n    var Model = (function () {\r\n        function Model(option, parentModel, ecModel) {\r\n            this.parentModel = parentModel;\r\n            this.ecModel = ecModel;\r\n            this.option = option;\r\n        }\r\n        Model.prototype.init = function (option, parentModel, ecModel) {\r\n            var rest = [];\r\n            for (var _i = 3; _i < arguments.length; _i++) {\r\n                rest[_i - 3] = arguments[_i];\r\n            }\r\n        };\r\n        Model.prototype.mergeOption = function (option, ecModel) {\r\n            merge(this.option, option, true);\r\n        };\r\n        Model.prototype.get = function (path, ignoreParent) {\r\n            if (path == null) {\r\n                return this.option;\r\n            }\r\n            return this._doGet(this.parsePath(path), !ignoreParent && this.parentModel);\r\n        };\r\n        Model.prototype.getShallow = function (key, ignoreParent) {\r\n            var option = this.option;\r\n            var val = option == null ? option : option[key];\r\n            if (val == null && !ignoreParent) {\r\n                var parentModel = this.parentModel;\r\n                if (parentModel) {\r\n                    val = parentModel.getShallow(key);\r\n                }\r\n            }\r\n            return val;\r\n        };\r\n        Model.prototype.getModel = function (path, parentModel) {\r\n            var hasPath = path != null;\r\n            var pathFinal = hasPath ? this.parsePath(path) : null;\r\n            var obj = hasPath\r\n                ? this._doGet(pathFinal)\r\n                : this.option;\r\n            parentModel = parentModel || (this.parentModel\r\n                && this.parentModel.getModel(this.resolveParentPath(pathFinal)));\r\n            return new Model(obj, parentModel, this.ecModel);\r\n        };\r\n        Model.prototype.isEmpty = function () {\r\n            return this.option == null;\r\n        };\r\n        Model.prototype.restoreData = function () { };\r\n        Model.prototype.clone = function () {\r\n            var Ctor = this.constructor;\r\n            return new Ctor(clone(this.option));\r\n        };\r\n        Model.prototype.parsePath = function (path) {\r\n            if (typeof path === 'string') {\r\n                return path.split('.');\r\n            }\r\n            return path;\r\n        };\r\n        Model.prototype.resolveParentPath = function (path) {\r\n            return path;\r\n        };\r\n        Model.prototype.isAnimationEnabled = function () {\r\n            if (!env.node && this.option) {\r\n                if (this.option.animation != null) {\r\n                    return !!this.option.animation;\r\n                }\r\n                else if (this.parentModel) {\r\n                    return this.parentModel.isAnimationEnabled();\r\n                }\r\n            }\r\n        };\r\n        Model.prototype._doGet = function (pathArr, parentModel) {\r\n            var obj = this.option;\r\n            if (!pathArr) {\r\n                return obj;\r\n            }\r\n            for (var i = 0; i < pathArr.length; i++) {\r\n                if (!pathArr[i]) {\r\n                    continue;\r\n                }\r\n                obj = (obj && typeof obj === 'object') ? obj[pathArr[i]] : null;\r\n                if (obj == null) {\r\n                    break;\r\n                }\r\n            }\r\n            if (obj == null && parentModel) {\r\n                obj = parentModel._doGet(this.resolveParentPath(pathArr), parentModel.parentModel);\r\n            }\r\n            return obj;\r\n        };\r\n        return Model;\r\n    }());\r\n    enableClassExtend(Model);\r\n    enableClassCheck(Model);\r\n    mixin(Model, LineStyleMixin);\r\n    mixin(Model, ItemStyleMixin);\r\n    mixin(Model, AreaStyleMixin);\r\n    mixin(Model, TextStyleMixin);\n\n    var base = Math.round(Math.random() * 10);\r\n    function getUID(type) {\r\n        return [(type || ''), base++].join('_');\r\n    }\r\n    function enableSubTypeDefaulter(target) {\r\n        var subTypeDefaulters = {};\r\n        target.registerSubTypeDefaulter = function (componentType, defaulter) {\r\n            var componentTypeInfo = parseClassType(componentType);\r\n            subTypeDefaulters[componentTypeInfo.main] = defaulter;\r\n        };\r\n        target.determineSubType = function (componentType, option) {\r\n            var type = option.type;\r\n            if (!type) {\r\n                var componentTypeMain = parseClassType(componentType).main;\r\n                if (target.hasSubTypes(componentType) && subTypeDefaulters[componentTypeMain]) {\r\n                    type = subTypeDefaulters[componentTypeMain](option);\r\n                }\r\n            }\r\n            return type;\r\n        };\r\n    }\r\n    function enableTopologicalTravel(entity, dependencyGetter) {\r\n        entity.topologicalTravel = function (targetNameList, fullNameList, callback, context) {\r\n            if (!targetNameList.length) {\r\n                return;\r\n            }\r\n            var result = makeDepndencyGraph(fullNameList);\r\n            var graph = result.graph;\r\n            var noEntryList = result.noEntryList;\r\n            var targetNameSet = {};\r\n            each(targetNameList, function (name) {\r\n                targetNameSet[name] = true;\r\n            });\r\n            while (noEntryList.length) {\r\n                var currComponentType = noEntryList.pop();\r\n                var currVertex = graph[currComponentType];\r\n                var isInTargetNameSet = !!targetNameSet[currComponentType];\r\n                if (isInTargetNameSet) {\r\n                    callback.call(context, currComponentType, currVertex.originalDeps.slice());\r\n                    delete targetNameSet[currComponentType];\r\n                }\r\n                each(currVertex.successor, isInTargetNameSet ? removeEdgeAndAdd : removeEdge);\r\n            }\r\n            each(targetNameSet, function () {\r\n                var errMsg = '';\r\n                if (__DEV__) {\r\n                    errMsg = makePrintable('Circle dependency may exists: ', targetNameSet, targetNameList, fullNameList);\r\n                }\r\n                throw new Error(errMsg);\r\n            });\r\n            function removeEdge(succComponentType) {\r\n                graph[succComponentType].entryCount--;\r\n                if (graph[succComponentType].entryCount === 0) {\r\n                    noEntryList.push(succComponentType);\r\n                }\r\n            }\r\n            function removeEdgeAndAdd(succComponentType) {\r\n                targetNameSet[succComponentType] = true;\r\n                removeEdge(succComponentType);\r\n            }\r\n        };\r\n        function makeDepndencyGraph(fullNameList) {\r\n            var graph = {};\r\n            var noEntryList = [];\r\n            each(fullNameList, function (name) {\r\n                var thisItem = createDependencyGraphItem(graph, name);\r\n                var originalDeps = thisItem.originalDeps = dependencyGetter(name);\r\n                var availableDeps = getAvailableDependencies(originalDeps, fullNameList);\r\n                thisItem.entryCount = availableDeps.length;\r\n                if (thisItem.entryCount === 0) {\r\n                    noEntryList.push(name);\r\n                }\r\n                each(availableDeps, function (dependentName) {\r\n                    if (indexOf(thisItem.predecessor, dependentName) < 0) {\r\n                        thisItem.predecessor.push(dependentName);\r\n                    }\r\n                    var thatItem = createDependencyGraphItem(graph, dependentName);\r\n                    if (indexOf(thatItem.successor, dependentName) < 0) {\r\n                        thatItem.successor.push(name);\r\n                    }\r\n                });\r\n            });\r\n            return { graph: graph, noEntryList: noEntryList };\r\n        }\r\n        function createDependencyGraphItem(graph, name) {\r\n            if (!graph[name]) {\r\n                graph[name] = { predecessor: [], successor: [] };\r\n            }\r\n            return graph[name];\r\n        }\r\n        function getAvailableDependencies(originalDeps, fullNameList) {\r\n            var availableDeps = [];\r\n            each(originalDeps, function (dep) {\r\n                indexOf(fullNameList, dep) >= 0 && availableDeps.push(dep);\r\n            });\r\n            return availableDeps;\r\n        }\r\n    }\r\n    function inheritDefaultOption(superOption, subOption) {\r\n        return merge(merge({}, superOption, true), subOption, true);\r\n    }\n\n    var langEN = {\r\n        time: {\r\n            month: [\r\n                'January', 'February', 'March', 'April', 'May', 'June',\r\n                'July', 'August', 'September', 'October', 'November', 'December'\r\n            ],\r\n            monthAbbr: [\r\n                'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',\r\n                'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'\r\n            ],\r\n            dayOfWeek: [\r\n                'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'\r\n            ],\r\n            dayOfWeekAbbr: [\r\n                'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'\r\n            ]\r\n        },\r\n        legend: {\r\n            selector: {\r\n                all: 'All',\r\n                inverse: 'Inv'\r\n            }\r\n        },\r\n        toolbox: {\r\n            brush: {\r\n                title: {\r\n                    rect: 'Box Select',\r\n                    polygon: 'Lasso Select',\r\n                    lineX: 'Horizontally Select',\r\n                    lineY: 'Vertically Select',\r\n                    keep: 'Keep Selections',\r\n                    clear: 'Clear Selections'\r\n                }\r\n            },\r\n            dataView: {\r\n                title: 'Data View',\r\n                lang: ['Data View', 'Close', 'Refresh']\r\n            },\r\n            dataZoom: {\r\n                title: {\r\n                    zoom: 'Zoom',\r\n                    back: 'Zoom Reset'\r\n                }\r\n            },\r\n            magicType: {\r\n                title: {\r\n                    line: 'Switch to Line Chart',\r\n                    bar: 'Switch to Bar Chart',\r\n                    stack: 'Stack',\r\n                    tiled: 'Tile'\r\n                }\r\n            },\r\n            restore: {\r\n                title: 'Restore'\r\n            },\r\n            saveAsImage: {\r\n                title: 'Save as Image',\r\n                lang: ['Right Click to Save Image']\r\n            }\r\n        },\r\n        series: {\r\n            typeNames: {\r\n                pie: 'Pie chart',\r\n                bar: 'Bar chart',\r\n                line: 'Line chart',\r\n                scatter: 'Scatter plot',\r\n                effectScatter: 'Ripple scatter plot',\r\n                radar: 'Radar chart',\r\n                tree: 'Tree',\r\n                treemap: 'Treemap',\r\n                boxplot: 'Boxplot',\r\n                candlestick: 'Candlestick',\r\n                k: 'K line chart',\r\n                heatmap: 'Heat map',\r\n                map: 'Map',\r\n                parallel: 'Parallel coordinate map',\r\n                lines: 'Line graph',\r\n                graph: 'Relationship graph',\r\n                sankey: 'Sankey diagram',\r\n                funnel: 'Funnel chart',\r\n                gauge: 'Guage',\r\n                pictorialBar: 'Pictorial bar',\r\n                themeRiver: 'Theme River Map',\r\n                sunburst: 'Sunburst'\r\n            }\r\n        },\r\n        aria: {\r\n            general: {\r\n                withTitle: 'This is a chart about \"{title}\"',\r\n                withoutTitle: 'This is a chart'\r\n            },\r\n            series: {\r\n                single: {\r\n                    prefix: '',\r\n                    withName: ' with type {seriesType} named {seriesName}.',\r\n                    withoutName: ' with type {seriesType}.'\r\n                },\r\n                multiple: {\r\n                    prefix: '. It consists of {seriesCount} series count.',\r\n                    withName: ' The {seriesId} series is a {seriesType} representing {seriesName}.',\r\n                    withoutName: ' The {seriesId} series is a {seriesType}.',\r\n                    separator: {\r\n                        middle: '',\r\n                        end: ''\r\n                    }\r\n                }\r\n            },\r\n            data: {\r\n                allData: 'The data is as follows: ',\r\n                partialData: 'The first {displayCnt} items are: ',\r\n                withName: 'the data for {name} is {value}',\r\n                withoutName: '{value}',\r\n                separator: {\r\n                    middle: ', ',\r\n                    end: '. '\r\n                }\r\n            }\r\n        }\r\n    };\n\n    var langZH = {\r\n        time: {\r\n            month: [\r\n                '一月', '二月', '三月', '四月', '五月', '六月',\r\n                '七月', '八月', '九月', '十月', '十一月', '十二月'\r\n            ],\r\n            monthAbbr: [\r\n                '1月', '2月', '3月', '4月', '5月', '6月',\r\n                '7月', '8月', '9月', '10月', '11月', '12月'\r\n            ],\r\n            dayOfWeek: [\r\n                '星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'\r\n            ],\r\n            dayOfWeekAbbr: [\r\n                '日', '一', '二', '三', '四', '五', '六'\r\n            ]\r\n        },\r\n        legend: {\r\n            selector: {\r\n                all: '全选',\r\n                inverse: '反选'\r\n            }\r\n        },\r\n        toolbox: {\r\n            brush: {\r\n                title: {\r\n                    rect: '矩形选择',\r\n                    polygon: '圈选',\r\n                    lineX: '横向选择',\r\n                    lineY: '纵向选择',\r\n                    keep: '保持选择',\r\n                    clear: '清除选择'\r\n                }\r\n            },\r\n            dataView: {\r\n                title: '数据视图',\r\n                lang: ['数据视图', '关闭', '刷新']\r\n            },\r\n            dataZoom: {\r\n                title: {\r\n                    zoom: '区域缩放',\r\n                    back: '区域缩放还原'\r\n                }\r\n            },\r\n            magicType: {\r\n                title: {\r\n                    line: '切换为折线图',\r\n                    bar: '切换为柱状图',\r\n                    stack: '切换为堆叠',\r\n                    tiled: '切换为平铺'\r\n                }\r\n            },\r\n            restore: {\r\n                title: '还原'\r\n            },\r\n            saveAsImage: {\r\n                title: '保存为图片',\r\n                lang: ['右键另存为图片']\r\n            }\r\n        },\r\n        series: {\r\n            typeNames: {\r\n                pie: '饼图',\r\n                bar: '柱状图',\r\n                line: '折线图',\r\n                scatter: '散点图',\r\n                effectScatter: '涟漪散点图',\r\n                radar: '雷达图',\r\n                tree: '树图',\r\n                treemap: '矩形树图',\r\n                boxplot: '箱型图',\r\n                candlestick: 'K线图',\r\n                k: 'K线图',\r\n                heatmap: '热力图',\r\n                map: '地图',\r\n                parallel: '平行坐标图',\r\n                lines: '线图',\r\n                graph: '关系图',\r\n                sankey: '桑基图',\r\n                funnel: '漏斗图',\r\n                gauge: '仪表盘图',\r\n                pictorialBar: '象形柱图',\r\n                themeRiver: '主题河流图',\r\n                sunburst: '旭日图'\r\n            }\r\n        },\r\n        aria: {\r\n            general: {\r\n                withTitle: '这是一个关于“{title}”的图表。',\r\n                withoutTitle: '这是一个图表，'\r\n            },\r\n            series: {\r\n                single: {\r\n                    prefix: '',\r\n                    withName: '图表类型是{seriesType}，表示{seriesName}。',\r\n                    withoutName: '图表类型是{seriesType}。'\r\n                },\r\n                multiple: {\r\n                    prefix: '它由{seriesCount}个图表系列组成。',\r\n                    withName: '第{seriesId}个系列是一个表示{seriesName}的{seriesType}，',\r\n                    withoutName: '第{seriesId}个系列是一个{seriesType}，',\r\n                    separator: {\r\n                        middle: '；',\r\n                        end: '。'\r\n                    }\r\n                }\r\n            },\r\n            data: {\r\n                allData: '其数据是——',\r\n                partialData: '其中，前{displayCnt}项是——',\r\n                withName: '{name}的数据是{value}',\r\n                withoutName: '{value}',\r\n                separator: {\r\n                    middle: '，',\r\n                    end: ''\r\n                }\r\n            }\r\n        }\r\n    };\n\n    var LOCALE_ZH = 'ZH';\r\n    var LOCALE_EN = 'EN';\r\n    var DEFAULT_LOCALE = LOCALE_EN;\r\n    var localeStorage = {};\r\n    var localeModels = {};\r\n    var SYSTEM_LANG = !env.domSupported ? DEFAULT_LOCALE : (function () {\r\n        var langStr = (document.documentElement.lang || navigator.language || navigator.browserLanguage).toUpperCase();\r\n        return langStr.indexOf(LOCALE_ZH) > -1 ? LOCALE_ZH : DEFAULT_LOCALE;\r\n    })();\r\n    function registerLocale(locale, localeObj) {\r\n        locale = locale.toUpperCase();\r\n        localeModels[locale] = new Model(localeObj);\r\n        localeStorage[locale] = localeObj;\r\n    }\r\n    function createLocaleObject(locale) {\r\n        if (isString(locale)) {\r\n            var localeObj = localeStorage[locale.toUpperCase()] || {};\r\n            if (locale === LOCALE_ZH || locale === LOCALE_EN) {\r\n                return clone(localeObj);\r\n            }\r\n            else {\r\n                return merge(clone(localeObj), clone(localeStorage[DEFAULT_LOCALE]), false);\r\n            }\r\n        }\r\n        else {\r\n            return merge(clone(locale), clone(localeStorage[DEFAULT_LOCALE]), false);\r\n        }\r\n    }\r\n    function getLocaleModel(lang) {\r\n        return localeModels[lang];\r\n    }\r\n    function getDefaultLocaleModel() {\r\n        return localeModels[DEFAULT_LOCALE];\r\n    }\r\n    registerLocale(LOCALE_EN, langEN);\r\n    registerLocale(LOCALE_ZH, langZH);\n\n    var ONE_SECOND = 1000;\r\n    var ONE_MINUTE = ONE_SECOND * 60;\r\n    var ONE_HOUR = ONE_MINUTE * 60;\r\n    var ONE_DAY = ONE_HOUR * 24;\r\n    var ONE_YEAR = ONE_DAY * 365;\r\n    var defaultLeveledFormatter = {\r\n        year: '{yyyy}',\r\n        month: '{MMM}',\r\n        day: '{d}',\r\n        hour: '{HH}:{mm}',\r\n        minute: '{HH}:{mm}',\r\n        second: '{HH}:{mm}:{ss}',\r\n        millisecond: '{hh}:{mm}:{ss} {SSS}',\r\n        none: '{yyyy}-{MM}-{dd} {hh}:{mm}:{ss} {SSS}'\r\n    };\r\n    var fullDayFormatter = '{yyyy}-{MM}-{dd}';\r\n    var fullLeveledFormatter = {\r\n        year: '{yyyy}',\r\n        month: '{yyyy}-{MM}',\r\n        day: fullDayFormatter,\r\n        hour: fullDayFormatter + ' ' + defaultLeveledFormatter.hour,\r\n        minute: fullDayFormatter + ' ' + defaultLeveledFormatter.minute,\r\n        second: fullDayFormatter + ' ' + defaultLeveledFormatter.second,\r\n        millisecond: defaultLeveledFormatter.none\r\n    };\r\n    var primaryTimeUnits = [\r\n        'year', 'month', 'day', 'hour', 'minute', 'second', 'millisecond'\r\n    ];\r\n    var timeUnits = [\r\n        'year', 'half-year', 'quarter', 'month', 'week', 'half-week', 'day',\r\n        'half-day', 'quarter-day', 'hour', 'minute', 'second', 'millisecond'\r\n    ];\r\n    function pad(str, len) {\r\n        str += '';\r\n        return '0000'.substr(0, len - str.length) + str;\r\n    }\r\n    function getPrimaryTimeUnit(timeUnit) {\r\n        switch (timeUnit) {\r\n            case 'half-year':\r\n            case 'quarter':\r\n                return 'month';\r\n            case 'week':\r\n            case 'half-week':\r\n                return 'day';\r\n            case 'half-day':\r\n            case 'quarter-day':\r\n                return 'hour';\r\n            default:\r\n                return timeUnit;\r\n        }\r\n    }\r\n    function isPrimaryTimeUnit(timeUnit) {\r\n        return timeUnit === getPrimaryTimeUnit(timeUnit);\r\n    }\r\n    function getDefaultFormatPrecisionOfInterval(timeUnit) {\r\n        switch (timeUnit) {\r\n            case 'year':\r\n            case 'month':\r\n                return 'day';\r\n            case 'millisecond':\r\n                return 'millisecond';\r\n            default:\r\n                return 'second';\r\n        }\r\n    }\r\n    function format(time, template, isUTC, lang) {\r\n        var date = parseDate(time);\r\n        var y = date[fullYearGetterName(isUTC)]();\r\n        var M = date[monthGetterName(isUTC)]() + 1;\r\n        var q = Math.floor((M - 1) / 4) + 1;\r\n        var d = date[dateGetterName(isUTC)]();\r\n        var e = date['get' + (isUTC ? 'UTC' : '') + 'Day']();\r\n        var H = date[hoursGetterName(isUTC)]();\r\n        var h = (H - 1) % 12 + 1;\r\n        var m = date[minutesGetterName(isUTC)]();\r\n        var s = date[secondsGetterName(isUTC)]();\r\n        var S = date[millisecondsGetterName(isUTC)]();\r\n        var localeModel = lang instanceof Model ? lang\r\n            : getLocaleModel(lang || SYSTEM_LANG) || getDefaultLocaleModel();\r\n        var timeModel = localeModel.getModel('time');\r\n        var month = timeModel.get('month');\r\n        var monthAbbr = timeModel.get('monthAbbr');\r\n        var dayOfWeek = timeModel.get('dayOfWeek');\r\n        var dayOfWeekAbbr = timeModel.get('dayOfWeekAbbr');\r\n        return (template || '')\r\n            .replace(/{yyyy}/g, y + '')\r\n            .replace(/{yy}/g, y % 100 + '')\r\n            .replace(/{Q}/g, q + '')\r\n            .replace(/{MMMM}/g, month[M - 1])\r\n            .replace(/{MMM}/g, monthAbbr[M - 1])\r\n            .replace(/{MM}/g, pad(M, 2))\r\n            .replace(/{M}/g, M + '')\r\n            .replace(/{dd}/g, pad(d, 2))\r\n            .replace(/{d}/g, d + '')\r\n            .replace(/{eeee}/g, dayOfWeek[e])\r\n            .replace(/{ee}/g, dayOfWeekAbbr[e])\r\n            .replace(/{e}/g, e + '')\r\n            .replace(/{HH}/g, pad(H, 2))\r\n            .replace(/{H}/g, H + '')\r\n            .replace(/{hh}/g, pad(h + '', 2))\r\n            .replace(/{h}/g, h + '')\r\n            .replace(/{mm}/g, pad(m, 2))\r\n            .replace(/{m}/g, m + '')\r\n            .replace(/{ss}/g, pad(s, 2))\r\n            .replace(/{s}/g, s + '')\r\n            .replace(/{SSS}/g, pad(S, 3))\r\n            .replace(/{S}/g, S + '');\r\n    }\r\n    function leveledFormat(tick, idx, formatter, lang, isUTC) {\r\n        var template = null;\r\n        if (typeof formatter === 'string') {\r\n            template = formatter;\r\n        }\r\n        else if (typeof formatter === 'function') {\r\n            template = formatter(tick.value, idx, {\r\n                level: tick.level\r\n            });\r\n        }\r\n        else {\r\n            var defaults$1 = extend({}, defaultLeveledFormatter);\r\n            if (tick.level > 0) {\r\n                for (var i = 0; i < primaryTimeUnits.length; ++i) {\r\n                    defaults$1[primaryTimeUnits[i]] = \"{primary|\" + defaults$1[primaryTimeUnits[i]] + \"}\";\r\n                }\r\n            }\r\n            var mergedFormatter = (formatter\r\n                ? (formatter.inherit === false\r\n                    ? formatter\r\n                    : defaults(formatter, defaults$1))\r\n                : defaults$1);\r\n            var unit = getUnitFromValue(tick.value, isUTC);\r\n            if (mergedFormatter[unit]) {\r\n                template = mergedFormatter[unit];\r\n            }\r\n            else if (mergedFormatter.inherit) {\r\n                var targetId = timeUnits.indexOf(unit);\r\n                for (var i = targetId - 1; i >= 0; --i) {\r\n                    if (mergedFormatter[unit]) {\r\n                        template = mergedFormatter[unit];\r\n                        break;\r\n                    }\r\n                }\r\n                template = template || defaults$1.none;\r\n            }\r\n            if (isArray(template)) {\r\n                var levelId = tick.level == null\r\n                    ? 0\r\n                    : (tick.level >= 0 ? tick.level : template.length + tick.level);\r\n                levelId = Math.min(levelId, template.length - 1);\r\n                template = template[levelId];\r\n            }\r\n        }\r\n        return format(new Date(tick.value), template, isUTC, lang);\r\n    }\r\n    function getUnitFromValue(value, isUTC) {\r\n        var date = parseDate(value);\r\n        var M = date[monthGetterName(isUTC)]() + 1;\r\n        var d = date[dateGetterName(isUTC)]();\r\n        var h = date[hoursGetterName(isUTC)]();\r\n        var m = date[minutesGetterName(isUTC)]();\r\n        var s = date[secondsGetterName(isUTC)]();\r\n        var S = date[millisecondsGetterName(isUTC)]();\r\n        var isSecond = S === 0;\r\n        var isMinute = isSecond && s === 0;\r\n        var isHour = isMinute && m === 0;\r\n        var isDay = isHour && h === 0;\r\n        var isMonth = isDay && d === 1;\r\n        var isYear = isMonth && M === 1;\r\n        if (isYear) {\r\n            return 'year';\r\n        }\r\n        else if (isMonth) {\r\n            return 'month';\r\n        }\r\n        else if (isDay) {\r\n            return 'day';\r\n        }\r\n        else if (isHour) {\r\n            return 'hour';\r\n        }\r\n        else if (isMinute) {\r\n            return 'minute';\r\n        }\r\n        else if (isSecond) {\r\n            return 'second';\r\n        }\r\n        else {\r\n            return 'millisecond';\r\n        }\r\n    }\r\n    function getUnitValue(value, unit, isUTC) {\r\n        var date = typeof value === 'number'\r\n            ? parseDate(value)\r\n            : value;\r\n        unit = unit || getUnitFromValue(value, isUTC);\r\n        switch (unit) {\r\n            case 'year':\r\n                return date[fullYearGetterName(isUTC)]();\r\n            case 'half-year':\r\n                return date[monthGetterName(isUTC)]() >= 6 ? 1 : 0;\r\n            case 'quarter':\r\n                return Math.floor((date[monthGetterName(isUTC)]() + 1) / 4);\r\n            case 'month':\r\n                return date[monthGetterName(isUTC)]();\r\n            case 'day':\r\n                return date[dateGetterName(isUTC)]();\r\n            case 'half-day':\r\n                return date[hoursGetterName(isUTC)]() / 24;\r\n            case 'hour':\r\n                return date[hoursGetterName(isUTC)]();\r\n            case 'minute':\r\n                return date[minutesGetterName(isUTC)]();\r\n            case 'second':\r\n                return date[secondsGetterName(isUTC)]();\r\n            case 'millisecond':\r\n                return date[millisecondsGetterName(isUTC)]();\r\n        }\r\n    }\r\n    function fullYearGetterName(isUTC) {\r\n        return isUTC ? 'getUTCFullYear' : 'getFullYear';\r\n    }\r\n    function monthGetterName(isUTC) {\r\n        return isUTC ? 'getUTCMonth' : 'getMonth';\r\n    }\r\n    function dateGetterName(isUTC) {\r\n        return isUTC ? 'getUTCDate' : 'getDate';\r\n    }\r\n    function hoursGetterName(isUTC) {\r\n        return isUTC ? 'getUTCHours' : 'getHours';\r\n    }\r\n    function minutesGetterName(isUTC) {\r\n        return isUTC ? 'getUTCMinutes' : 'getMinutes';\r\n    }\r\n    function secondsGetterName(isUTC) {\r\n        return isUTC ? 'getUTCSeconds' : 'getSeconds';\r\n    }\r\n    function millisecondsGetterName(isUTC) {\r\n        return isUTC ? 'getUTCSeconds' : 'getSeconds';\r\n    }\r\n    function fullYearSetterName(isUTC) {\r\n        return isUTC ? 'setUTCFullYear' : 'setFullYear';\r\n    }\r\n    function monthSetterName(isUTC) {\r\n        return isUTC ? 'setUTCMonth' : 'setMonth';\r\n    }\r\n    function dateSetterName(isUTC) {\r\n        return isUTC ? 'setUTCDate' : 'setDate';\r\n    }\r\n    function hoursSetterName(isUTC) {\r\n        return isUTC ? 'setUTCHours' : 'setHours';\r\n    }\r\n    function minutesSetterName(isUTC) {\r\n        return isUTC ? 'setUTCMinutes' : 'setMinutes';\r\n    }\r\n    function secondsSetterName(isUTC) {\r\n        return isUTC ? 'setUTCSeconds' : 'setSeconds';\r\n    }\r\n    function millisecondsSetterName(isUTC) {\r\n        return isUTC ? 'setUTCSeconds' : 'setSeconds';\r\n    }\n\n    function addCommas(x) {\r\n        if (!isNumeric(x)) {\r\n            return isString(x) ? x : '-';\r\n        }\r\n        var parts = (x + '').split('.');\r\n        return parts[0].replace(/(\\d{1,3})(?=(?:\\d{3})+(?!\\d))/g, '$1,')\r\n            + (parts.length > 1 ? ('.' + parts[1]) : '');\r\n    }\r\n    var normalizeCssArray$1 = normalizeCssArray;\r\n    var replaceReg = /([&<>\"'])/g;\r\n    var replaceMap = {\r\n        '&': '&amp;',\r\n        '<': '&lt;',\r\n        '>': '&gt;',\r\n        '\"': '&quot;',\r\n        '\\'': '&#39;'\r\n    };\r\n    function encodeHTML(source) {\r\n        return source == null\r\n            ? ''\r\n            : (source + '').replace(replaceReg, function (str, c) {\r\n                return replaceMap[c];\r\n            });\r\n    }\r\n    var TPL_VAR_ALIAS = ['a', 'b', 'c', 'd', 'e', 'f', 'g'];\r\n    var wrapVar = function (varName, seriesIdx) {\r\n        return '{' + varName + (seriesIdx == null ? '' : seriesIdx) + '}';\r\n    };\r\n    function formatTpl(tpl, paramsList, encode) {\r\n        if (!isArray(paramsList)) {\r\n            paramsList = [paramsList];\r\n        }\r\n        var seriesLen = paramsList.length;\r\n        if (!seriesLen) {\r\n            return '';\r\n        }\r\n        var $vars = paramsList[0].$vars || [];\r\n        for (var i = 0; i < $vars.length; i++) {\r\n            var alias = TPL_VAR_ALIAS[i];\r\n            tpl = tpl.replace(wrapVar(alias), wrapVar(alias, 0));\r\n        }\r\n        for (var seriesIdx = 0; seriesIdx < seriesLen; seriesIdx++) {\r\n            for (var k = 0; k < $vars.length; k++) {\r\n                var val = paramsList[seriesIdx][$vars[k]];\r\n                tpl = tpl.replace(wrapVar(TPL_VAR_ALIAS[k], seriesIdx), encode ? encodeHTML(val) : val);\r\n            }\r\n        }\r\n        return tpl;\r\n    }\r\n    function convertToColorString(color, defaultColor) {\r\n        defaultColor = defaultColor || 'transparent';\r\n        return isString(color)\r\n            ? color\r\n            : isObject(color)\r\n                ? (color.colorStops\r\n                    && (color.colorStops[0] || {}).color\r\n                    || defaultColor)\r\n                : defaultColor;\r\n    }\n\n    var each$1 = each;\r\n    var LOCATION_PARAMS = [\r\n        'left', 'right', 'top', 'bottom', 'width', 'height'\r\n    ];\r\n    var HV_NAMES = [\r\n        ['width', 'left', 'right'],\r\n        ['height', 'top', 'bottom']\r\n    ];\r\n    function boxLayout(orient, group, gap, maxWidth, maxHeight) {\r\n        var x = 0;\r\n        var y = 0;\r\n        if (maxWidth == null) {\r\n            maxWidth = Infinity;\r\n        }\r\n        if (maxHeight == null) {\r\n            maxHeight = Infinity;\r\n        }\r\n        var currentLineMaxSize = 0;\r\n        group.eachChild(function (child, idx) {\r\n            var rect = child.getBoundingRect();\r\n            var nextChild = group.childAt(idx + 1);\r\n            var nextChildRect = nextChild && nextChild.getBoundingRect();\r\n            var nextX;\r\n            var nextY;\r\n            if (orient === 'horizontal') {\r\n                var moveX = rect.width + (nextChildRect ? (-nextChildRect.x + rect.x) : 0);\r\n                nextX = x + moveX;\r\n                if (nextX > maxWidth || child.newline) {\r\n                    x = 0;\r\n                    nextX = moveX;\r\n                    y += currentLineMaxSize + gap;\r\n                    currentLineMaxSize = rect.height;\r\n                }\r\n                else {\r\n                    currentLineMaxSize = Math.max(currentLineMaxSize, rect.height);\r\n                }\r\n            }\r\n            else {\r\n                var moveY = rect.height + (nextChildRect ? (-nextChildRect.y + rect.y) : 0);\r\n                nextY = y + moveY;\r\n                if (nextY > maxHeight || child.newline) {\r\n                    x += currentLineMaxSize + gap;\r\n                    y = 0;\r\n                    nextY = moveY;\r\n                    currentLineMaxSize = rect.width;\r\n                }\r\n                else {\r\n                    currentLineMaxSize = Math.max(currentLineMaxSize, rect.width);\r\n                }\r\n            }\r\n            if (child.newline) {\r\n                return;\r\n            }\r\n            child.x = x;\r\n            child.y = y;\r\n            child.markRedraw();\r\n            orient === 'horizontal'\r\n                ? (x = nextX + gap)\r\n                : (y = nextY + gap);\r\n        });\r\n    }\r\n    var vbox = curry(boxLayout, 'vertical');\r\n    var hbox = curry(boxLayout, 'horizontal');\r\n    function getLayoutRect(positionInfo, containerRect, margin) {\r\n        margin = normalizeCssArray$1(margin || 0);\r\n        var containerWidth = containerRect.width;\r\n        var containerHeight = containerRect.height;\r\n        var left = parsePercent$2(positionInfo.left, containerWidth);\r\n        var top = parsePercent$2(positionInfo.top, containerHeight);\r\n        var right = parsePercent$2(positionInfo.right, containerWidth);\r\n        var bottom = parsePercent$2(positionInfo.bottom, containerHeight);\r\n        var width = parsePercent$2(positionInfo.width, containerWidth);\r\n        var height = parsePercent$2(positionInfo.height, containerHeight);\r\n        var verticalMargin = margin[2] + margin[0];\r\n        var horizontalMargin = margin[1] + margin[3];\r\n        var aspect = positionInfo.aspect;\r\n        if (isNaN(width)) {\r\n            width = containerWidth - right - horizontalMargin - left;\r\n        }\r\n        if (isNaN(height)) {\r\n            height = containerHeight - bottom - verticalMargin - top;\r\n        }\r\n        if (aspect != null) {\r\n            if (isNaN(width) && isNaN(height)) {\r\n                if (aspect > containerWidth / containerHeight) {\r\n                    width = containerWidth * 0.8;\r\n                }\r\n                else {\r\n                    height = containerHeight * 0.8;\r\n                }\r\n            }\r\n            if (isNaN(width)) {\r\n                width = aspect * height;\r\n            }\r\n            if (isNaN(height)) {\r\n                height = width / aspect;\r\n            }\r\n        }\r\n        if (isNaN(left)) {\r\n            left = containerWidth - right - width - horizontalMargin;\r\n        }\r\n        if (isNaN(top)) {\r\n            top = containerHeight - bottom - height - verticalMargin;\r\n        }\r\n        switch (positionInfo.left || positionInfo.right) {\r\n            case 'center':\r\n                left = containerWidth / 2 - width / 2 - margin[3];\r\n                break;\r\n            case 'right':\r\n                left = containerWidth - width - horizontalMargin;\r\n                break;\r\n        }\r\n        switch (positionInfo.top || positionInfo.bottom) {\r\n            case 'middle':\r\n            case 'center':\r\n                top = containerHeight / 2 - height / 2 - margin[0];\r\n                break;\r\n            case 'bottom':\r\n                top = containerHeight - height - verticalMargin;\r\n                break;\r\n        }\r\n        left = left || 0;\r\n        top = top || 0;\r\n        if (isNaN(width)) {\r\n            width = containerWidth - horizontalMargin - left - (right || 0);\r\n        }\r\n        if (isNaN(height)) {\r\n            height = containerHeight - verticalMargin - top - (bottom || 0);\r\n        }\r\n        var rect = new BoundingRect(left + margin[3], top + margin[0], width, height);\r\n        rect.margin = margin;\r\n        return rect;\r\n    }\r\n    function fetchLayoutMode(ins) {\r\n        var layoutMode = ins.layoutMode || ins.constructor.layoutMode;\r\n        return isObject(layoutMode)\r\n            ? layoutMode\r\n            : layoutMode\r\n                ? { type: layoutMode }\r\n                : null;\r\n    }\r\n    function mergeLayoutParam(targetOption, newOption, opt) {\r\n        var ignoreSize = opt && opt.ignoreSize;\r\n        !isArray(ignoreSize) && (ignoreSize = [ignoreSize, ignoreSize]);\r\n        var hResult = merge(HV_NAMES[0], 0);\r\n        var vResult = merge(HV_NAMES[1], 1);\r\n        copy(HV_NAMES[0], targetOption, hResult);\r\n        copy(HV_NAMES[1], targetOption, vResult);\r\n        function merge(names, hvIdx) {\r\n            var newParams = {};\r\n            var newValueCount = 0;\r\n            var merged = {};\r\n            var mergedValueCount = 0;\r\n            var enoughParamNumber = 2;\r\n            each$1(names, function (name) {\r\n                merged[name] = targetOption[name];\r\n            });\r\n            each$1(names, function (name) {\r\n                hasProp(newOption, name) && (newParams[name] = merged[name] = newOption[name]);\r\n                hasValue(newParams, name) && newValueCount++;\r\n                hasValue(merged, name) && mergedValueCount++;\r\n            });\r\n            if (ignoreSize[hvIdx]) {\r\n                if (hasValue(newOption, names[1])) {\r\n                    merged[names[2]] = null;\r\n                }\r\n                else if (hasValue(newOption, names[2])) {\r\n                    merged[names[1]] = null;\r\n                }\r\n                return merged;\r\n            }\r\n            if (mergedValueCount === enoughParamNumber || !newValueCount) {\r\n                return merged;\r\n            }\r\n            else if (newValueCount >= enoughParamNumber) {\r\n                return newParams;\r\n            }\r\n            else {\r\n                for (var i = 0; i < names.length; i++) {\r\n                    var name_1 = names[i];\r\n                    if (!hasProp(newParams, name_1) && hasProp(targetOption, name_1)) {\r\n                        newParams[name_1] = targetOption[name_1];\r\n                        break;\r\n                    }\r\n                }\r\n                return newParams;\r\n            }\r\n        }\r\n        function hasProp(obj, name) {\r\n            return obj.hasOwnProperty(name);\r\n        }\r\n        function hasValue(obj, name) {\r\n            return obj[name] != null && obj[name] !== 'auto';\r\n        }\r\n        function copy(names, target, source) {\r\n            each$1(names, function (name) {\r\n                target[name] = source[name];\r\n            });\r\n        }\r\n    }\r\n    function getLayoutParams(source) {\r\n        return copyLayoutParams({}, source);\r\n    }\r\n    function copyLayoutParams(target, source) {\r\n        source && target && each$1(LOCATION_PARAMS, function (name) {\r\n            source.hasOwnProperty(name) && (target[name] = source[name]);\r\n        });\r\n        return target;\r\n    }\n\n    var inner = makeInner();\r\n    var ComponentModel = (function (_super) {\r\n        __extends(ComponentModel, _super);\r\n        function ComponentModel(option, parentModel, ecModel) {\r\n            var _this = _super.call(this, option, parentModel, ecModel) || this;\r\n            _this.uid = getUID('ec_cpt_model');\r\n            return _this;\r\n        }\r\n        ComponentModel.prototype.init = function (option, parentModel, ecModel) {\r\n            this.mergeDefaultAndTheme(option, ecModel);\r\n        };\r\n        ComponentModel.prototype.mergeDefaultAndTheme = function (option, ecModel) {\r\n            var layoutMode = fetchLayoutMode(this);\r\n            var inputPositionParams = layoutMode\r\n                ? getLayoutParams(option) : {};\r\n            var themeModel = ecModel.getTheme();\r\n            merge(option, themeModel.get(this.mainType));\r\n            merge(option, this.getDefaultOption());\r\n            if (layoutMode) {\r\n                mergeLayoutParam(option, inputPositionParams, layoutMode);\r\n            }\r\n        };\r\n        ComponentModel.prototype.mergeOption = function (option, ecModel) {\r\n            merge(this.option, option, true);\r\n            var layoutMode = fetchLayoutMode(this);\r\n            if (layoutMode) {\r\n                mergeLayoutParam(this.option, option, layoutMode);\r\n            }\r\n        };\r\n        ComponentModel.prototype.optionUpdated = function (newCptOption, isInit) { };\r\n        ComponentModel.prototype.getDefaultOption = function () {\r\n            var ctor = this.constructor;\r\n            if (!isExtendedClass(ctor)) {\r\n                return ctor.defaultOption;\r\n            }\r\n            var fields = inner(this);\r\n            if (!fields.defaultOption) {\r\n                var optList = [];\r\n                var clz = ctor;\r\n                while (clz) {\r\n                    var opt = clz.prototype.defaultOption;\r\n                    opt && optList.push(opt);\r\n                    clz = clz.superClass;\r\n                }\r\n                var defaultOption = {};\r\n                for (var i = optList.length - 1; i >= 0; i--) {\r\n                    defaultOption = merge(defaultOption, optList[i], true);\r\n                }\r\n                fields.defaultOption = defaultOption;\r\n            }\r\n            return fields.defaultOption;\r\n        };\r\n        ComponentModel.prototype.getReferringComponents = function (mainType, opt) {\r\n            var indexKey = (mainType + 'Index');\r\n            var idKey = (mainType + 'Id');\r\n            return queryReferringComponents(this.ecModel, mainType, {\r\n                index: this.get(indexKey, true),\r\n                id: this.get(idKey, true)\r\n            }, opt);\r\n        };\r\n        ComponentModel.prototype.getBoxLayoutParams = function () {\r\n            var boxLayoutModel = this;\r\n            return {\r\n                left: boxLayoutModel.get('left'),\r\n                top: boxLayoutModel.get('top'),\r\n                right: boxLayoutModel.get('right'),\r\n                bottom: boxLayoutModel.get('bottom'),\r\n                width: boxLayoutModel.get('width'),\r\n                height: boxLayoutModel.get('height')\r\n            };\r\n        };\r\n        ComponentModel.protoInitialize = (function () {\r\n            var proto = ComponentModel.prototype;\r\n            proto.type = 'component';\r\n            proto.id = '';\r\n            proto.name = '';\r\n            proto.mainType = '';\r\n            proto.subType = '';\r\n            proto.componentIndex = 0;\r\n        })();\r\n        return ComponentModel;\r\n    }(Model));\r\n    mountExtend(ComponentModel, Model);\r\n    enableClassManagement(ComponentModel, { registerWhenExtend: true });\r\n    enableSubTypeDefaulter(ComponentModel);\r\n    enableTopologicalTravel(ComponentModel, getDependencies);\r\n    function getDependencies(componentType) {\r\n        var deps = [];\r\n        each(ComponentModel.getClassesByMainType(componentType), function (clz) {\r\n            deps = deps.concat(clz.dependencies || clz.prototype.dependencies || []);\r\n        });\r\n        deps = map(deps, function (type) {\r\n            return parseClassType(type).main;\r\n        });\r\n        if (componentType !== 'dataset' && indexOf(deps, 'dataset') <= 0) {\r\n            deps.unshift('dataset');\r\n        }\r\n        return deps;\r\n    }\n\n    var platform = '';\r\n    if (typeof navigator !== 'undefined') {\r\n        platform = navigator.platform || '';\r\n    }\r\n    var decalColor = 'rgba(0, 0, 0, 0.2)';\r\n    var globalDefault = {\r\n        darkMode: 'auto',\r\n        color: [\r\n            '#5470c6',\r\n            '#91cc75',\r\n            '#fac858',\r\n            '#ee6666',\r\n            '#73c0de',\r\n            '#3ba272',\r\n            '#fc8452',\r\n            '#9a60b4',\r\n            '#ea7ccc'\r\n        ],\r\n        gradientColor: ['#f6efa6', '#d88273', '#bf444c'],\r\n        aria: {\r\n            decal: {\r\n                decals: [{\r\n                        color: decalColor,\r\n                        dashArrayX: [1, 0],\r\n                        dashArrayY: [2, 5],\r\n                        symbolSize: 1,\r\n                        rotation: Math.PI / 6\r\n                    }, {\r\n                        color: decalColor,\r\n                        symbol: 'circle',\r\n                        dashArrayX: [[8, 8], [0, 8, 8, 0]],\r\n                        dashArrayY: [6, 0],\r\n                        symbolSize: 0.8\r\n                    }, {\r\n                        color: decalColor,\r\n                        dashArrayX: [1, 0],\r\n                        dashArrayY: [4, 3],\r\n                        dashLineOffset: 0,\r\n                        rotation: -Math.PI / 4\r\n                    }, {\r\n                        color: decalColor,\r\n                        dashArrayX: [[6, 6], [0, 6, 6, 0]],\r\n                        dashArrayY: [6, 0]\r\n                    }, {\r\n                        color: decalColor,\r\n                        dashArrayX: [[1, 0], [1, 6]],\r\n                        dashArrayY: [1, 0, 6, 0],\r\n                        rotation: Math.PI / 4\r\n                    }, {\r\n                        color: decalColor,\r\n                        symbol: 'triangle',\r\n                        dashArrayX: [[9, 9], [0, 9, 9, 0]],\r\n                        dashArrayY: [7, 2],\r\n                        symbolSize: 0.75\r\n                    }]\r\n            }\r\n        },\r\n        textStyle: {\r\n            fontFamily: platform.match(/^Win/) ? 'Microsoft YaHei' : 'sans-serif',\r\n            fontSize: 12,\r\n            fontStyle: 'normal',\r\n            fontWeight: 'normal'\r\n        },\r\n        blendMode: null,\r\n        stateAnimation: {\r\n            duration: 300,\r\n            easing: 'cubicOut'\r\n        },\r\n        animation: 'auto',\r\n        animationDuration: 1000,\r\n        animationDurationUpdate: 500,\r\n        animationEasing: 'cubicInOut',\r\n        animationEasingUpdate: 'cubicInOut',\r\n        animationThreshold: 2000,\r\n        progressiveThreshold: 3000,\r\n        progressive: 400,\r\n        hoverLayerThreshold: 3000,\r\n        useUTC: false\r\n    };\n\n    var VISUAL_DIMENSIONS = createHashMap([\r\n        'tooltip', 'label', 'itemName', 'itemId', 'seriesName'\r\n    ]);\r\n    var SOURCE_FORMAT_ORIGINAL = 'original';\r\n    var SOURCE_FORMAT_ARRAY_ROWS = 'arrayRows';\r\n    var SOURCE_FORMAT_OBJECT_ROWS = 'objectRows';\r\n    var SOURCE_FORMAT_KEYED_COLUMNS = 'keyedColumns';\r\n    var SOURCE_FORMAT_TYPED_ARRAY = 'typedArray';\r\n    var SOURCE_FORMAT_UNKNOWN = 'unknown';\r\n    var SERIES_LAYOUT_BY_COLUMN = 'column';\r\n    var SERIES_LAYOUT_BY_ROW = 'row';\n\n    var BE_ORDINAL = {\r\n        Must: 1,\r\n        Might: 2,\r\n        Not: 3\r\n    };\r\n    var innerGlobalModel = makeInner();\r\n    function resetSourceDefaulter(ecModel) {\r\n        innerGlobalModel(ecModel).datasetMap = createHashMap();\r\n    }\r\n    function inheritSourceMetaRawOption(upstream, newMetaRawOption) {\r\n        var parentMetaRawOption = upstream ? upstream.metaRawOption : null;\r\n        var seriesLayoutBy = retrieve2(newMetaRawOption.seriesLayoutBy, parentMetaRawOption ? parentMetaRawOption.seriesLayoutBy : null);\r\n        var sourceHeader = retrieve2(newMetaRawOption.sourceHeader, upstream ? upstream.startIndex : null);\r\n        var dimensions = retrieve2(newMetaRawOption.dimensions, upstream ? upstream.dimensionsDefine : null);\r\n        return { seriesLayoutBy: seriesLayoutBy, sourceHeader: sourceHeader, dimensions: dimensions };\r\n    }\r\n    function makeSeriesEncodeForAxisCoordSys(coordDimensions, seriesModel, source) {\r\n        var encode = {};\r\n        var datasetModel = querySeriesUpstreamDatasetModel(seriesModel);\r\n        if (!datasetModel || !coordDimensions) {\r\n            return encode;\r\n        }\r\n        var encodeItemName = [];\r\n        var encodeSeriesName = [];\r\n        var ecModel = seriesModel.ecModel;\r\n        var datasetMap = innerGlobalModel(ecModel).datasetMap;\r\n        var key = datasetModel.uid + '_' + source.seriesLayoutBy;\r\n        var baseCategoryDimIndex;\r\n        var categoryWayValueDimStart;\r\n        coordDimensions = coordDimensions.slice();\r\n        each(coordDimensions, function (coordDimInfoLoose, coordDimIdx) {\r\n            var coordDimInfo = isObject(coordDimInfoLoose)\r\n                ? coordDimInfoLoose\r\n                : (coordDimensions[coordDimIdx] = { name: coordDimInfoLoose });\r\n            if (coordDimInfo.type === 'ordinal' && baseCategoryDimIndex == null) {\r\n                baseCategoryDimIndex = coordDimIdx;\r\n                categoryWayValueDimStart = getDataDimCountOnCoordDim(coordDimInfo);\r\n            }\r\n            encode[coordDimInfo.name] = [];\r\n        });\r\n        var datasetRecord = datasetMap.get(key)\r\n            || datasetMap.set(key, { categoryWayDim: categoryWayValueDimStart, valueWayDim: 0 });\r\n        each(coordDimensions, function (coordDimInfo, coordDimIdx) {\r\n            var coordDimName = coordDimInfo.name;\r\n            var count = getDataDimCountOnCoordDim(coordDimInfo);\r\n            if (baseCategoryDimIndex == null) {\r\n                var start = datasetRecord.valueWayDim;\r\n                pushDim(encode[coordDimName], start, count);\r\n                pushDim(encodeSeriesName, start, count);\r\n                datasetRecord.valueWayDim += count;\r\n            }\r\n            else if (baseCategoryDimIndex === coordDimIdx) {\r\n                pushDim(encode[coordDimName], 0, count);\r\n                pushDim(encodeItemName, 0, count);\r\n            }\r\n            else {\r\n                var start = datasetRecord.categoryWayDim;\r\n                pushDim(encode[coordDimName], start, count);\r\n                pushDim(encodeSeriesName, start, count);\r\n                datasetRecord.categoryWayDim += count;\r\n            }\r\n        });\r\n        function pushDim(dimIdxArr, idxFrom, idxCount) {\r\n            for (var i = 0; i < idxCount; i++) {\r\n                dimIdxArr.push(idxFrom + i);\r\n            }\r\n        }\r\n        function getDataDimCountOnCoordDim(coordDimInfo) {\r\n            var dimsDef = coordDimInfo.dimsDef;\r\n            return dimsDef ? dimsDef.length : 1;\r\n        }\r\n        encodeItemName.length && (encode.itemName = encodeItemName);\r\n        encodeSeriesName.length && (encode.seriesName = encodeSeriesName);\r\n        return encode;\r\n    }\r\n    function makeSeriesEncodeForNameBased(seriesModel, source, dimCount) {\r\n        var encode = {};\r\n        var datasetModel = querySeriesUpstreamDatasetModel(seriesModel);\r\n        if (!datasetModel) {\r\n            return encode;\r\n        }\r\n        var sourceFormat = source.sourceFormat;\r\n        var dimensionsDefine = source.dimensionsDefine;\r\n        var potentialNameDimIndex;\r\n        if (sourceFormat === SOURCE_FORMAT_OBJECT_ROWS || sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS) {\r\n            each(dimensionsDefine, function (dim, idx) {\r\n                if ((isObject(dim) ? dim.name : dim) === 'name') {\r\n                    potentialNameDimIndex = idx;\r\n                }\r\n            });\r\n        }\r\n        var idxResult = (function () {\r\n            var idxRes0 = {};\r\n            var idxRes1 = {};\r\n            var guessRecords = [];\r\n            for (var i = 0, len = Math.min(5, dimCount); i < len; i++) {\r\n                var guessResult = doGuessOrdinal(source.data, sourceFormat, source.seriesLayoutBy, dimensionsDefine, source.startIndex, i);\r\n                guessRecords.push(guessResult);\r\n                var isPureNumber = guessResult === BE_ORDINAL.Not;\r\n                if (isPureNumber && idxRes0.v == null && i !== potentialNameDimIndex) {\r\n                    idxRes0.v = i;\r\n                }\r\n                if (idxRes0.n == null\r\n                    || (idxRes0.n === idxRes0.v)\r\n                    || (!isPureNumber && guessRecords[idxRes0.n] === BE_ORDINAL.Not)) {\r\n                    idxRes0.n = i;\r\n                }\r\n                if (fulfilled(idxRes0) && guessRecords[idxRes0.n] !== BE_ORDINAL.Not) {\r\n                    return idxRes0;\r\n                }\r\n                if (!isPureNumber) {\r\n                    if (guessResult === BE_ORDINAL.Might && idxRes1.v == null && i !== potentialNameDimIndex) {\r\n                        idxRes1.v = i;\r\n                    }\r\n                    if (idxRes1.n == null || (idxRes1.n === idxRes1.v)) {\r\n                        idxRes1.n = i;\r\n                    }\r\n                }\r\n            }\r\n            function fulfilled(idxResult) {\r\n                return idxResult.v != null && idxResult.n != null;\r\n            }\r\n            return fulfilled(idxRes0) ? idxRes0 : fulfilled(idxRes1) ? idxRes1 : null;\r\n        })();\r\n        if (idxResult) {\r\n            encode.value = [idxResult.v];\r\n            var nameDimIndex = potentialNameDimIndex != null ? potentialNameDimIndex : idxResult.n;\r\n            encode.itemName = [nameDimIndex];\r\n            encode.seriesName = [nameDimIndex];\r\n        }\r\n        return encode;\r\n    }\r\n    function querySeriesUpstreamDatasetModel(seriesModel) {\r\n        var thisData = seriesModel.get('data', true);\r\n        if (!thisData) {\r\n            return queryReferringComponents(seriesModel.ecModel, 'dataset', {\r\n                index: seriesModel.get('datasetIndex', true),\r\n                id: seriesModel.get('datasetId', true)\r\n            }, SINGLE_REFERRING).models[0];\r\n        }\r\n    }\r\n    function queryDatasetUpstreamDatasetModels(datasetModel) {\r\n        if (!datasetModel.get('transform', true)\r\n            && !datasetModel.get('fromTransformResult', true)) {\r\n            return [];\r\n        }\r\n        return queryReferringComponents(datasetModel.ecModel, 'dataset', {\r\n            index: datasetModel.get('fromDatasetIndex', true),\r\n            id: datasetModel.get('fromDatasetId', true)\r\n        }, SINGLE_REFERRING).models;\r\n    }\r\n    function guessOrdinal(source, dimIndex) {\r\n        return doGuessOrdinal(source.data, source.sourceFormat, source.seriesLayoutBy, source.dimensionsDefine, source.startIndex, dimIndex);\r\n    }\r\n    function doGuessOrdinal(data, sourceFormat, seriesLayoutBy, dimensionsDefine, startIndex, dimIndex) {\r\n        var result;\r\n        var maxLoop = 5;\r\n        if (isTypedArray(data)) {\r\n            return BE_ORDINAL.Not;\r\n        }\r\n        var dimName;\r\n        var dimType;\r\n        if (dimensionsDefine) {\r\n            var dimDefItem = dimensionsDefine[dimIndex];\r\n            if (isObject(dimDefItem)) {\r\n                dimName = dimDefItem.name;\r\n                dimType = dimDefItem.type;\r\n            }\r\n            else if (isString(dimDefItem)) {\r\n                dimName = dimDefItem;\r\n            }\r\n        }\r\n        if (dimType != null) {\r\n            return dimType === 'ordinal' ? BE_ORDINAL.Must : BE_ORDINAL.Not;\r\n        }\r\n        if (sourceFormat === SOURCE_FORMAT_ARRAY_ROWS) {\r\n            var dataArrayRows = data;\r\n            if (seriesLayoutBy === SERIES_LAYOUT_BY_ROW) {\r\n                var sample = dataArrayRows[dimIndex];\r\n                for (var i = 0; i < (sample || []).length && i < maxLoop; i++) {\r\n                    if ((result = detectValue(sample[startIndex + i])) != null) {\r\n                        return result;\r\n                    }\r\n                }\r\n            }\r\n            else {\r\n                for (var i = 0; i < dataArrayRows.length && i < maxLoop; i++) {\r\n                    var row = dataArrayRows[startIndex + i];\r\n                    if (row && (result = detectValue(row[dimIndex])) != null) {\r\n                        return result;\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        else if (sourceFormat === SOURCE_FORMAT_OBJECT_ROWS) {\r\n            var dataObjectRows = data;\r\n            if (!dimName) {\r\n                return BE_ORDINAL.Not;\r\n            }\r\n            for (var i = 0; i < dataObjectRows.length && i < maxLoop; i++) {\r\n                var item = dataObjectRows[i];\r\n                if (item && (result = detectValue(item[dimName])) != null) {\r\n                    return result;\r\n                }\r\n            }\r\n        }\r\n        else if (sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS) {\r\n            var dataKeyedColumns = data;\r\n            if (!dimName) {\r\n                return BE_ORDINAL.Not;\r\n            }\r\n            var sample = dataKeyedColumns[dimName];\r\n            if (!sample || isTypedArray(sample)) {\r\n                return BE_ORDINAL.Not;\r\n            }\r\n            for (var i = 0; i < sample.length && i < maxLoop; i++) {\r\n                if ((result = detectValue(sample[i])) != null) {\r\n                    return result;\r\n                }\r\n            }\r\n        }\r\n        else if (sourceFormat === SOURCE_FORMAT_ORIGINAL) {\r\n            var dataOriginal = data;\r\n            for (var i = 0; i < dataOriginal.length && i < maxLoop; i++) {\r\n                var item = dataOriginal[i];\r\n                var val = getDataItemValue(item);\r\n                if (!isArray(val)) {\r\n                    return BE_ORDINAL.Not;\r\n                }\r\n                if ((result = detectValue(val[dimIndex])) != null) {\r\n                    return result;\r\n                }\r\n            }\r\n        }\r\n        function detectValue(val) {\r\n            var beStr = isString(val);\r\n            if (val != null && isFinite(val) && val !== '') {\r\n                return beStr ? BE_ORDINAL.Might : BE_ORDINAL.Not;\r\n            }\r\n            else if (beStr && val !== '-') {\r\n                return BE_ORDINAL.Must;\r\n            }\r\n        }\r\n        return BE_ORDINAL.Not;\r\n    }\n\n    var internalOptionCreatorMap = createHashMap();\r\n    function concatInternalOptions(ecModel, mainType, newCmptOptionList) {\r\n        var internalOptionCreator = internalOptionCreatorMap.get(mainType);\r\n        if (!internalOptionCreator) {\r\n            return newCmptOptionList;\r\n        }\r\n        var internalOptions = internalOptionCreator(ecModel);\r\n        if (!internalOptions) {\r\n            return newCmptOptionList;\r\n        }\r\n        if (__DEV__) {\r\n            for (var i = 0; i < internalOptions.length; i++) {\r\n                assert(isComponentIdInternal(internalOptions[i]));\r\n            }\r\n        }\r\n        return newCmptOptionList.concat(internalOptions);\r\n    }\n\n    var innerColor = makeInner();\r\n    var innerDecal = makeInner();\r\n    var PaletteMixin = (function () {\r\n        function PaletteMixin() {\r\n        }\r\n        PaletteMixin.prototype.getColorFromPalette = function (name, scope, requestNum) {\r\n            var defaultPalette = normalizeToArray(this.get('color', true));\r\n            var layeredPalette = this.get('colorLayer', true);\r\n            return getFromPalette(this, innerColor, defaultPalette, layeredPalette, name, scope, requestNum);\r\n        };\r\n        PaletteMixin.prototype.clearColorPalette = function () {\r\n            clearPalette(this, innerColor);\r\n        };\r\n        return PaletteMixin;\r\n    }());\r\n    function getDecalFromPalette(ecModel, name, scope, requestNum) {\r\n        var defaultDecals = normalizeToArray(ecModel.get(['aria', 'decal', 'decals']));\r\n        return getFromPalette(ecModel, innerDecal, defaultDecals, null, name, scope, requestNum);\r\n    }\r\n    function getNearestPalette(palettes, requestColorNum) {\r\n        var paletteNum = palettes.length;\r\n        for (var i = 0; i < paletteNum; i++) {\r\n            if (palettes[i].length > requestColorNum) {\r\n                return palettes[i];\r\n            }\r\n        }\r\n        return palettes[paletteNum - 1];\r\n    }\r\n    function getFromPalette(that, inner, defaultPalette, layeredPalette, name, scope, requestNum) {\r\n        scope = scope || that;\r\n        var scopeFields = inner(scope);\r\n        var paletteIdx = scopeFields.paletteIdx || 0;\r\n        var paletteNameMap = scopeFields.paletteNameMap = scopeFields.paletteNameMap || {};\r\n        if (paletteNameMap.hasOwnProperty(name)) {\r\n            return paletteNameMap[name];\r\n        }\r\n        var palette = ((requestNum == null || !layeredPalette)\r\n            ? defaultPalette : getNearestPalette(layeredPalette, requestNum));\r\n        palette = palette || defaultPalette;\r\n        if (!palette || !palette.length) {\r\n            return;\r\n        }\r\n        var pickedPaletteItem = palette[paletteIdx];\r\n        if (name) {\r\n            paletteNameMap[name] = pickedPaletteItem;\r\n        }\r\n        scopeFields.paletteIdx = (paletteIdx + 1) % palette.length;\r\n        return pickedPaletteItem;\r\n    }\r\n    function clearPalette(that, inner) {\r\n        inner(that).paletteIdx = 0;\r\n        inner(that).paletteNameMap = {};\r\n    }\n\n    var reCreateSeriesIndices;\r\n    var assertSeriesInitialized;\r\n    var initBase;\r\n    var OPTION_INNER_KEY = '\\0_ec_inner';\r\n    var GlobalModel = (function (_super) {\r\n        __extends(GlobalModel, _super);\r\n        function GlobalModel() {\r\n            return _super !== null && _super.apply(this, arguments) || this;\r\n        }\r\n        GlobalModel.prototype.init = function (option, parentModel, ecModel, theme, locale, optionManager) {\r\n            theme = theme || {};\r\n            this.option = null;\r\n            this._theme = new Model(theme);\r\n            this._locale = new Model(locale);\r\n            this._optionManager = optionManager;\r\n        };\r\n        GlobalModel.prototype.setOption = function (option, opts, optionPreprocessorFuncs) {\r\n            assert(!(OPTION_INNER_KEY in option), 'please use chart.getOption()');\r\n            var innerOpt = normalizeSetOptionInput(opts);\r\n            this._optionManager.setOption(option, optionPreprocessorFuncs, innerOpt);\r\n            this._resetOption(null, innerOpt);\r\n        };\r\n        GlobalModel.prototype.resetOption = function (type, opt) {\r\n            return this._resetOption(type, normalizeSetOptionInput(opt));\r\n        };\r\n        GlobalModel.prototype._resetOption = function (type, opt) {\r\n            var optionChanged = false;\r\n            var optionManager = this._optionManager;\r\n            if (!type || type === 'recreate') {\r\n                var baseOption = optionManager.mountOption(type === 'recreate');\r\n                if (!this.option || type === 'recreate') {\r\n                    initBase(this, baseOption);\r\n                }\r\n                else {\r\n                    this.restoreData();\r\n                    this._mergeOption(baseOption, opt);\r\n                }\r\n                optionChanged = true;\r\n            }\r\n            if (type === 'timeline' || type === 'media') {\r\n                this.restoreData();\r\n            }\r\n            if (!type || type === 'recreate' || type === 'timeline') {\r\n                var timelineOption = optionManager.getTimelineOption(this);\r\n                if (timelineOption) {\r\n                    optionChanged = true;\r\n                    this._mergeOption(timelineOption, opt);\r\n                }\r\n            }\r\n            if (!type || type === 'recreate' || type === 'media') {\r\n                var mediaOptions = optionManager.getMediaOption(this);\r\n                if (mediaOptions.length) {\r\n                    each(mediaOptions, function (mediaOption) {\r\n                        optionChanged = true;\r\n                        this._mergeOption(mediaOption, opt);\r\n                    }, this);\r\n                }\r\n            }\r\n            return optionChanged;\r\n        };\r\n        GlobalModel.prototype.mergeOption = function (option) {\r\n            this._mergeOption(option, null);\r\n        };\r\n        GlobalModel.prototype._mergeOption = function (newOption, opt) {\r\n            var option = this.option;\r\n            var componentsMap = this._componentsMap;\r\n            var componentsCount = this._componentsCount;\r\n            var newCmptTypes = [];\r\n            var newCmptTypeMap = createHashMap();\r\n            var replaceMergeMainTypeMap = opt && opt.replaceMergeMainTypeMap;\r\n            resetSourceDefaulter(this);\r\n            each(newOption, function (componentOption, mainType) {\r\n                if (componentOption == null) {\r\n                    return;\r\n                }\r\n                if (!ComponentModel.hasClass(mainType)) {\r\n                    option[mainType] = option[mainType] == null\r\n                        ? clone(componentOption)\r\n                        : merge(option[mainType], componentOption, true);\r\n                }\r\n                else if (mainType) {\r\n                    newCmptTypes.push(mainType);\r\n                    newCmptTypeMap.set(mainType, true);\r\n                }\r\n            });\r\n            if (replaceMergeMainTypeMap) {\r\n                replaceMergeMainTypeMap.each(function (val, mainTypeInReplaceMerge) {\r\n                    if (ComponentModel.hasClass(mainTypeInReplaceMerge) && !newCmptTypeMap.get(mainTypeInReplaceMerge)) {\r\n                        newCmptTypes.push(mainTypeInReplaceMerge);\r\n                        newCmptTypeMap.set(mainTypeInReplaceMerge, true);\r\n                    }\r\n                });\r\n            }\r\n            ComponentModel.topologicalTravel(newCmptTypes, ComponentModel.getAllClassMainTypes(), visitComponent, this);\r\n            function visitComponent(mainType) {\r\n                var newCmptOptionList = concatInternalOptions(this, mainType, normalizeToArray(newOption[mainType]));\r\n                var oldCmptList = componentsMap.get(mainType);\r\n                var mergeMode = !oldCmptList ? 'replaceAll'\r\n                    : (replaceMergeMainTypeMap && replaceMergeMainTypeMap.get(mainType)) ? 'replaceMerge'\r\n                        : 'normalMerge';\r\n                var mappingResult = mappingToExists(oldCmptList, newCmptOptionList, mergeMode);\r\n                setComponentTypeToKeyInfo(mappingResult, mainType, ComponentModel);\r\n                option[mainType] = null;\r\n                componentsMap.set(mainType, null);\r\n                componentsCount.set(mainType, 0);\r\n                var optionsByMainType = [];\r\n                var cmptsByMainType = [];\r\n                var cmptsCountByMainType = 0;\r\n                each(mappingResult, function (resultItem, index) {\r\n                    var componentModel = resultItem.existing;\r\n                    var newCmptOption = resultItem.newOption;\r\n                    if (!newCmptOption) {\r\n                        if (componentModel) {\r\n                            componentModel.mergeOption({}, this);\r\n                            componentModel.optionUpdated({}, false);\r\n                        }\r\n                    }\r\n                    else {\r\n                        var ComponentModelClass = ComponentModel.getClass(mainType, resultItem.keyInfo.subType, true);\r\n                        if (componentModel && componentModel.constructor === ComponentModelClass) {\r\n                            componentModel.name = resultItem.keyInfo.name;\r\n                            componentModel.mergeOption(newCmptOption, this);\r\n                            componentModel.optionUpdated(newCmptOption, false);\r\n                        }\r\n                        else {\r\n                            var extraOpt = extend({\r\n                                componentIndex: index\r\n                            }, resultItem.keyInfo);\r\n                            componentModel = new ComponentModelClass(newCmptOption, this, this, extraOpt);\r\n                            extend(componentModel, extraOpt);\r\n                            if (resultItem.brandNew) {\r\n                                componentModel.__requireNewView = true;\r\n                            }\r\n                            componentModel.init(newCmptOption, this, this);\r\n                            componentModel.optionUpdated(null, true);\r\n                        }\r\n                    }\r\n                    if (componentModel) {\r\n                        optionsByMainType.push(componentModel.option);\r\n                        cmptsByMainType.push(componentModel);\r\n                        cmptsCountByMainType++;\r\n                    }\r\n                    else {\r\n                        optionsByMainType.push(void 0);\r\n                        cmptsByMainType.push(void 0);\r\n                    }\r\n                }, this);\r\n                option[mainType] = optionsByMainType;\r\n                componentsMap.set(mainType, cmptsByMainType);\r\n                componentsCount.set(mainType, cmptsCountByMainType);\r\n                if (mainType === 'series') {\r\n                    reCreateSeriesIndices(this);\r\n                }\r\n            }\r\n            if (!this._seriesIndices) {\r\n                reCreateSeriesIndices(this);\r\n            }\r\n        };\r\n        GlobalModel.prototype.getOption = function () {\r\n            var option = clone(this.option);\r\n            each(option, function (optInMainType, mainType) {\r\n                if (ComponentModel.hasClass(mainType)) {\r\n                    var opts = normalizeToArray(optInMainType);\r\n                    var realLen = opts.length;\r\n                    var metNonInner = false;\r\n                    for (var i = realLen - 1; i >= 0; i--) {\r\n                        if (opts[i] && !isComponentIdInternal(opts[i])) {\r\n                            metNonInner = true;\r\n                        }\r\n                        else {\r\n                            opts[i] = null;\r\n                            !metNonInner && realLen--;\r\n                        }\r\n                    }\r\n                    opts.length = realLen;\r\n                    option[mainType] = opts;\r\n                }\r\n            });\r\n            delete option[OPTION_INNER_KEY];\r\n            return option;\r\n        };\r\n        GlobalModel.prototype.getTheme = function () {\r\n            return this._theme;\r\n        };\r\n        GlobalModel.prototype.getLocaleModel = function () {\r\n            return this._locale;\r\n        };\r\n        GlobalModel.prototype.getLocale = function (localePosition) {\r\n            var locale = this.getLocaleModel();\r\n            return locale.get(localePosition);\r\n        };\r\n        GlobalModel.prototype.setUpdatePayload = function (payload) {\r\n            this._payload = payload;\r\n        };\r\n        GlobalModel.prototype.getUpdatePayload = function () {\r\n            return this._payload;\r\n        };\r\n        GlobalModel.prototype.getComponent = function (mainType, idx) {\r\n            var list = this._componentsMap.get(mainType);\r\n            if (list) {\r\n                var cmpt = list[idx || 0];\r\n                if (cmpt) {\r\n                    return cmpt;\r\n                }\r\n                else if (idx == null) {\r\n                    for (var i = 0; i < list.length; i++) {\r\n                        if (list[i]) {\r\n                            return list[i];\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n        };\r\n        GlobalModel.prototype.queryComponents = function (condition) {\r\n            var mainType = condition.mainType;\r\n            if (!mainType) {\r\n                return [];\r\n            }\r\n            var index = condition.index;\r\n            var id = condition.id;\r\n            var name = condition.name;\r\n            var cmpts = this._componentsMap.get(mainType);\r\n            if (!cmpts || !cmpts.length) {\r\n                return [];\r\n            }\r\n            var result;\r\n            if (index != null) {\r\n                result = [];\r\n                each(normalizeToArray(index), function (idx) {\r\n                    cmpts[idx] && result.push(cmpts[idx]);\r\n                });\r\n            }\r\n            else if (id != null) {\r\n                result = queryByIdOrName('id', id, cmpts);\r\n            }\r\n            else if (name != null) {\r\n                result = queryByIdOrName('name', name, cmpts);\r\n            }\r\n            else {\r\n                result = filter(cmpts, function (cmpt) { return !!cmpt; });\r\n            }\r\n            return filterBySubType(result, condition);\r\n        };\r\n        GlobalModel.prototype.findComponents = function (condition) {\r\n            var query = condition.query;\r\n            var mainType = condition.mainType;\r\n            var queryCond = getQueryCond(query);\r\n            var result = queryCond\r\n                ? this.queryComponents(queryCond)\r\n                : filter(this._componentsMap.get(mainType), function (cmpt) { return !!cmpt; });\r\n            return doFilter(filterBySubType(result, condition));\r\n            function getQueryCond(q) {\r\n                var indexAttr = mainType + 'Index';\r\n                var idAttr = mainType + 'Id';\r\n                var nameAttr = mainType + 'Name';\r\n                return q && (q[indexAttr] != null\r\n                    || q[idAttr] != null\r\n                    || q[nameAttr] != null)\r\n                    ? {\r\n                        mainType: mainType,\r\n                        index: q[indexAttr],\r\n                        id: q[idAttr],\r\n                        name: q[nameAttr]\r\n                    }\r\n                    : null;\r\n            }\r\n            function doFilter(res) {\r\n                return condition.filter\r\n                    ? filter(res, condition.filter)\r\n                    : res;\r\n            }\r\n        };\r\n        GlobalModel.prototype.eachComponent = function (mainType, cb, context) {\r\n            var componentsMap = this._componentsMap;\r\n            if (isFunction(mainType)) {\r\n                var ctxForAll_1 = cb;\r\n                var cbForAll_1 = mainType;\r\n                componentsMap.each(function (cmpts, componentType) {\r\n                    for (var i = 0; cmpts && i < cmpts.length; i++) {\r\n                        var cmpt = cmpts[i];\r\n                        cmpt && cbForAll_1.call(ctxForAll_1, componentType, cmpt, cmpt.componentIndex);\r\n                    }\r\n                });\r\n            }\r\n            else {\r\n                var cmpts = isString(mainType)\r\n                    ? componentsMap.get(mainType)\r\n                    : isObject(mainType)\r\n                        ? this.findComponents(mainType)\r\n                        : null;\r\n                for (var i = 0; cmpts && i < cmpts.length; i++) {\r\n                    var cmpt = cmpts[i];\r\n                    cmpt && cb.call(context, cmpt, cmpt.componentIndex);\r\n                }\r\n            }\r\n        };\r\n        GlobalModel.prototype.getSeriesByName = function (name) {\r\n            var nameStr = convertOptionIdName(name, null);\r\n            return filter(this._componentsMap.get('series'), function (oneSeries) { return !!oneSeries && nameStr != null && oneSeries.name === nameStr; });\r\n        };\r\n        GlobalModel.prototype.getSeriesByIndex = function (seriesIndex) {\r\n            return this._componentsMap.get('series')[seriesIndex];\r\n        };\r\n        GlobalModel.prototype.getSeriesByType = function (subType) {\r\n            return filter(this._componentsMap.get('series'), function (oneSeries) { return !!oneSeries && oneSeries.subType === subType; });\r\n        };\r\n        GlobalModel.prototype.getSeries = function () {\r\n            return filter(this._componentsMap.get('series').slice(), function (oneSeries) { return !!oneSeries; });\r\n        };\r\n        GlobalModel.prototype.getSeriesCount = function () {\r\n            return this._componentsCount.get('series');\r\n        };\r\n        GlobalModel.prototype.eachSeries = function (cb, context) {\r\n            assertSeriesInitialized(this);\r\n            each(this._seriesIndices, function (rawSeriesIndex) {\r\n                var series = this._componentsMap.get('series')[rawSeriesIndex];\r\n                cb.call(context, series, rawSeriesIndex);\r\n            }, this);\r\n        };\r\n        GlobalModel.prototype.eachRawSeries = function (cb, context) {\r\n            each(this._componentsMap.get('series'), function (series) {\r\n                series && cb.call(context, series, series.componentIndex);\r\n            });\r\n        };\r\n        GlobalModel.prototype.eachSeriesByType = function (subType, cb, context) {\r\n            assertSeriesInitialized(this);\r\n            each(this._seriesIndices, function (rawSeriesIndex) {\r\n                var series = this._componentsMap.get('series')[rawSeriesIndex];\r\n                if (series.subType === subType) {\r\n                    cb.call(context, series, rawSeriesIndex);\r\n                }\r\n            }, this);\r\n        };\r\n        GlobalModel.prototype.eachRawSeriesByType = function (subType, cb, context) {\r\n            return each(this.getSeriesByType(subType), cb, context);\r\n        };\r\n        GlobalModel.prototype.isSeriesFiltered = function (seriesModel) {\r\n            assertSeriesInitialized(this);\r\n            return this._seriesIndicesMap.get(seriesModel.componentIndex) == null;\r\n        };\r\n        GlobalModel.prototype.getCurrentSeriesIndices = function () {\r\n            return (this._seriesIndices || []).slice();\r\n        };\r\n        GlobalModel.prototype.filterSeries = function (cb, context) {\r\n            assertSeriesInitialized(this);\r\n            var newSeriesIndices = [];\r\n            each(this._seriesIndices, function (seriesRawIdx) {\r\n                var series = this._componentsMap.get('series')[seriesRawIdx];\r\n                cb.call(context, series, seriesRawIdx) && newSeriesIndices.push(seriesRawIdx);\r\n            }, this);\r\n            this._seriesIndices = newSeriesIndices;\r\n            this._seriesIndicesMap = createHashMap(newSeriesIndices);\r\n        };\r\n        GlobalModel.prototype.restoreData = function (payload) {\r\n            reCreateSeriesIndices(this);\r\n            var componentsMap = this._componentsMap;\r\n            var componentTypes = [];\r\n            componentsMap.each(function (components, componentType) {\r\n                if (ComponentModel.hasClass(componentType)) {\r\n                    componentTypes.push(componentType);\r\n                }\r\n            });\r\n            ComponentModel.topologicalTravel(componentTypes, ComponentModel.getAllClassMainTypes(), function (componentType) {\r\n                each(componentsMap.get(componentType), function (component) {\r\n                    if (component\r\n                        && (componentType !== 'series'\r\n                            || !isNotTargetSeries(component, payload))) {\r\n                        component.restoreData();\r\n                    }\r\n                });\r\n            });\r\n        };\r\n        GlobalModel.internalField = (function () {\r\n            reCreateSeriesIndices = function (ecModel) {\r\n                var seriesIndices = ecModel._seriesIndices = [];\r\n                each(ecModel._componentsMap.get('series'), function (series) {\r\n                    series && seriesIndices.push(series.componentIndex);\r\n                });\r\n                ecModel._seriesIndicesMap = createHashMap(seriesIndices);\r\n            };\r\n            assertSeriesInitialized = function (ecModel) {\r\n                if (__DEV__) {\r\n                    if (!ecModel._seriesIndices) {\r\n                        throw new Error('Option should contains series.');\r\n                    }\r\n                }\r\n            };\r\n            initBase = function (ecModel, baseOption) {\r\n                ecModel.option = {};\r\n                ecModel.option[OPTION_INNER_KEY] = 1;\r\n                ecModel._componentsMap = createHashMap({ series: [] });\r\n                ecModel._componentsCount = createHashMap();\r\n                var airaOption = baseOption.aria;\r\n                if (isObject(airaOption) && airaOption.enabled == null) {\r\n                    airaOption.enabled = true;\r\n                }\r\n                mergeTheme(baseOption, ecModel._theme.option);\r\n                merge(baseOption, globalDefault, false);\r\n                ecModel._mergeOption(baseOption, null);\r\n            };\r\n        })();\r\n        return GlobalModel;\r\n    }(Model));\r\n    function isNotTargetSeries(seriesModel, payload) {\r\n        if (payload) {\r\n            var index = payload.seriesIndex;\r\n            var id = payload.seriesId;\r\n            var name_1 = payload.seriesName;\r\n            return (index != null && seriesModel.componentIndex !== index)\r\n                || (id != null && seriesModel.id !== id)\r\n                || (name_1 != null && seriesModel.name !== name_1);\r\n        }\r\n    }\r\n    function mergeTheme(option, theme) {\r\n        var notMergeColorLayer = option.color && !option.colorLayer;\r\n        each(theme, function (themeItem, name) {\r\n            if (name === 'colorLayer' && notMergeColorLayer) {\r\n                return;\r\n            }\r\n            if (!ComponentModel.hasClass(name)) {\r\n                if (typeof themeItem === 'object') {\r\n                    option[name] = !option[name]\r\n                        ? clone(themeItem)\r\n                        : merge(option[name], themeItem, false);\r\n                }\r\n                else {\r\n                    if (option[name] == null) {\r\n                        option[name] = themeItem;\r\n                    }\r\n                }\r\n            }\r\n        });\r\n    }\r\n    function queryByIdOrName(attr, idOrName, cmpts) {\r\n        if (isArray(idOrName)) {\r\n            var keyMap_1 = createHashMap();\r\n            each(idOrName, function (idOrNameItem) {\r\n                if (idOrNameItem != null) {\r\n                    var idName = convertOptionIdName(idOrNameItem, null);\r\n                    idName != null && keyMap_1.set(idOrNameItem, true);\r\n                }\r\n            });\r\n            return filter(cmpts, function (cmpt) { return cmpt && keyMap_1.get(cmpt[attr]); });\r\n        }\r\n        else {\r\n            var idName_1 = convertOptionIdName(idOrName, null);\r\n            return filter(cmpts, function (cmpt) { return cmpt && idName_1 != null && cmpt[attr] === idName_1; });\r\n        }\r\n    }\r\n    function filterBySubType(components, condition) {\r\n        return condition.hasOwnProperty('subType')\r\n            ? filter(components, function (cmpt) { return cmpt && cmpt.subType === condition.subType; })\r\n            : components;\r\n    }\r\n    function normalizeSetOptionInput(opts) {\r\n        var replaceMergeMainTypeMap = createHashMap();\r\n        opts && each(normalizeToArray(opts.replaceMerge), function (mainType) {\r\n            if (__DEV__) {\r\n                assert(ComponentModel.hasClass(mainType), '\"' + mainType + '\" is not valid component main type in \"replaceMerge\"');\r\n            }\r\n            replaceMergeMainTypeMap.set(mainType, true);\r\n        });\r\n        return {\r\n            replaceMergeMainTypeMap: replaceMergeMainTypeMap\r\n        };\r\n    }\r\n    mixin(GlobalModel, PaletteMixin);\n\n    var availableMethods = [\r\n        'getDom',\r\n        'getZr',\r\n        'getWidth',\r\n        'getHeight',\r\n        'getDevicePixelRatio',\r\n        'dispatchAction',\r\n        'isDisposed',\r\n        'on',\r\n        'off',\r\n        'getDataURL',\r\n        'getConnectedDataURL',\r\n        'getOption',\r\n        'getId',\r\n        'updateLabelLayout'\r\n    ];\r\n    var ExtensionAPI = (function () {\r\n        function ExtensionAPI(ecInstance) {\r\n            each(availableMethods, function (methodName) {\r\n                this[methodName] = bind(ecInstance[methodName], ecInstance);\r\n            }, this);\r\n        }\r\n        return ExtensionAPI;\r\n    }());\n\n    var coordinateSystemCreators = {};\r\n    var CoordinateSystemManager = (function () {\r\n        function CoordinateSystemManager() {\r\n            this._coordinateSystems = [];\r\n        }\r\n        CoordinateSystemManager.prototype.create = function (ecModel, api) {\r\n            var coordinateSystems = [];\r\n            each(coordinateSystemCreators, function (creater, type) {\r\n                var list = creater.create(ecModel, api);\r\n                coordinateSystems = coordinateSystems.concat(list || []);\r\n            });\r\n            this._coordinateSystems = coordinateSystems;\r\n        };\r\n        CoordinateSystemManager.prototype.update = function (ecModel, api) {\r\n            each(this._coordinateSystems, function (coordSys) {\r\n                coordSys.update && coordSys.update(ecModel, api);\r\n            });\r\n        };\r\n        CoordinateSystemManager.prototype.getCoordinateSystems = function () {\r\n            return this._coordinateSystems.slice();\r\n        };\r\n        CoordinateSystemManager.register = function (type, creator) {\r\n            coordinateSystemCreators[type] = creator;\r\n        };\r\n        CoordinateSystemManager.get = function (type) {\r\n            return coordinateSystemCreators[type];\r\n        };\r\n        return CoordinateSystemManager;\r\n    }());\n\n    var QUERY_REG = /^(min|max)?(.+)$/;\r\n    var OptionManager = (function () {\r\n        function OptionManager(api) {\r\n            this._timelineOptions = [];\r\n            this._mediaList = [];\r\n            this._currentMediaIndices = [];\r\n            this._api = api;\r\n        }\r\n        OptionManager.prototype.setOption = function (rawOption, optionPreprocessorFuncs, opt) {\r\n            if (rawOption) {\r\n                each(normalizeToArray(rawOption.series), function (series) {\r\n                    series && series.data && isTypedArray(series.data) && setAsPrimitive(series.data);\r\n                });\r\n                each(normalizeToArray(rawOption.dataset), function (dataset) {\r\n                    dataset && dataset.source && isTypedArray(dataset.source) && setAsPrimitive(dataset.source);\r\n                });\r\n            }\r\n            rawOption = clone(rawOption);\r\n            var optionBackup = this._optionBackup;\r\n            var newParsedOption = parseRawOption(rawOption, optionPreprocessorFuncs, !optionBackup);\r\n            this._newBaseOption = newParsedOption.baseOption;\r\n            if (optionBackup) {\r\n                if (newParsedOption.timelineOptions.length) {\r\n                    optionBackup.timelineOptions = newParsedOption.timelineOptions;\r\n                }\r\n                if (newParsedOption.mediaList.length) {\r\n                    optionBackup.mediaList = newParsedOption.mediaList;\r\n                }\r\n                if (newParsedOption.mediaDefault) {\r\n                    optionBackup.mediaDefault = newParsedOption.mediaDefault;\r\n                }\r\n            }\r\n            else {\r\n                this._optionBackup = newParsedOption;\r\n            }\r\n        };\r\n        OptionManager.prototype.mountOption = function (isRecreate) {\r\n            var optionBackup = this._optionBackup;\r\n            this._timelineOptions = optionBackup.timelineOptions;\r\n            this._mediaList = optionBackup.mediaList;\r\n            this._mediaDefault = optionBackup.mediaDefault;\r\n            this._currentMediaIndices = [];\r\n            return clone(isRecreate\r\n                ? optionBackup.baseOption : this._newBaseOption);\r\n        };\r\n        OptionManager.prototype.getTimelineOption = function (ecModel) {\r\n            var option;\r\n            var timelineOptions = this._timelineOptions;\r\n            if (timelineOptions.length) {\r\n                var timelineModel = ecModel.getComponent('timeline');\r\n                if (timelineModel) {\r\n                    option = clone(timelineOptions[timelineModel.getCurrentIndex()]);\r\n                }\r\n            }\r\n            return option;\r\n        };\r\n        OptionManager.prototype.getMediaOption = function (ecModel) {\r\n            var ecWidth = this._api.getWidth();\r\n            var ecHeight = this._api.getHeight();\r\n            var mediaList = this._mediaList;\r\n            var mediaDefault = this._mediaDefault;\r\n            var indices = [];\r\n            var result = [];\r\n            if (!mediaList.length && !mediaDefault) {\r\n                return result;\r\n            }\r\n            for (var i = 0, len = mediaList.length; i < len; i++) {\r\n                if (applyMediaQuery(mediaList[i].query, ecWidth, ecHeight)) {\r\n                    indices.push(i);\r\n                }\r\n            }\r\n            if (!indices.length && mediaDefault) {\r\n                indices = [-1];\r\n            }\r\n            if (indices.length && !indicesEquals(indices, this._currentMediaIndices)) {\r\n                result = map(indices, function (index) {\r\n                    return clone(index === -1 ? mediaDefault.option : mediaList[index].option);\r\n                });\r\n            }\r\n            this._currentMediaIndices = indices;\r\n            return result;\r\n        };\r\n        return OptionManager;\r\n    }());\r\n    function parseRawOption(rawOption, optionPreprocessorFuncs, isNew) {\r\n        var mediaList = [];\r\n        var mediaDefault;\r\n        var baseOption;\r\n        var declaredBaseOption = rawOption.baseOption;\r\n        var timelineOnRoot = rawOption.timeline;\r\n        var timelineOptionsOnRoot = rawOption.options;\r\n        var mediaOnRoot = rawOption.media;\r\n        var hasMedia = !!rawOption.media;\r\n        var hasTimeline = !!(timelineOptionsOnRoot || timelineOnRoot || (declaredBaseOption && declaredBaseOption.timeline));\r\n        if (declaredBaseOption) {\r\n            baseOption = declaredBaseOption;\r\n            if (!baseOption.timeline) {\r\n                baseOption.timeline = timelineOnRoot;\r\n            }\r\n        }\r\n        else {\r\n            if (hasTimeline || hasMedia) {\r\n                rawOption.options = rawOption.media = null;\r\n            }\r\n            baseOption = rawOption;\r\n        }\r\n        if (hasMedia) {\r\n            if (isArray(mediaOnRoot)) {\r\n                each(mediaOnRoot, function (singleMedia) {\r\n                    if (__DEV__) {\r\n                        if (singleMedia\r\n                            && !singleMedia.option\r\n                            && isObject(singleMedia.query)\r\n                            && isObject(singleMedia.query.option)) {\r\n                            error('Illegal media option. Must be like { media: [ { query: {}, option: {} } ] }');\r\n                        }\r\n                    }\r\n                    if (singleMedia && singleMedia.option) {\r\n                        if (singleMedia.query) {\r\n                            mediaList.push(singleMedia);\r\n                        }\r\n                        else if (!mediaDefault) {\r\n                            mediaDefault = singleMedia;\r\n                        }\r\n                    }\r\n                });\r\n            }\r\n            else {\r\n                if (__DEV__) {\r\n                    error('Illegal media option. Must be an array. Like { media: [ {...}, {...} ] }');\r\n                }\r\n            }\r\n        }\r\n        doPreprocess(baseOption);\r\n        each(timelineOptionsOnRoot, function (option) { return doPreprocess(option); });\r\n        each(mediaList, function (media) { return doPreprocess(media.option); });\r\n        function doPreprocess(option) {\r\n            each(optionPreprocessorFuncs, function (preProcess) {\r\n                preProcess(option, isNew);\r\n            });\r\n        }\r\n        return {\r\n            baseOption: baseOption,\r\n            timelineOptions: timelineOptionsOnRoot || [],\r\n            mediaDefault: mediaDefault,\r\n            mediaList: mediaList\r\n        };\r\n    }\r\n    function applyMediaQuery(query, ecWidth, ecHeight) {\r\n        var realMap = {\r\n            width: ecWidth,\r\n            height: ecHeight,\r\n            aspectratio: ecWidth / ecHeight\r\n        };\r\n        var applicatable = true;\r\n        each(query, function (value, attr) {\r\n            var matched = attr.match(QUERY_REG);\r\n            if (!matched || !matched[1] || !matched[2]) {\r\n                return;\r\n            }\r\n            var operator = matched[1];\r\n            var realAttr = matched[2].toLowerCase();\r\n            if (!compare(realMap[realAttr], value, operator)) {\r\n                applicatable = false;\r\n            }\r\n        });\r\n        return applicatable;\r\n    }\r\n    function compare(real, expect, operator) {\r\n        if (operator === 'min') {\r\n            return real >= expect;\r\n        }\r\n        else if (operator === 'max') {\r\n            return real <= expect;\r\n        }\r\n        else {\r\n            return real === expect;\r\n        }\r\n    }\r\n    function indicesEquals(indices1, indices2) {\r\n        return indices1.join(',') === indices2.join(',');\r\n    }\n\n    var each$2 = each;\r\n    var isObject$1 = isObject;\r\n    var POSSIBLE_STYLES = [\r\n        'areaStyle', 'lineStyle', 'nodeStyle', 'linkStyle',\r\n        'chordStyle', 'label', 'labelLine'\r\n    ];\r\n    function compatEC2ItemStyle(opt) {\r\n        var itemStyleOpt = opt && opt.itemStyle;\r\n        if (!itemStyleOpt) {\r\n            return;\r\n        }\r\n        for (var i = 0, len = POSSIBLE_STYLES.length; i < len; i++) {\r\n            var styleName = POSSIBLE_STYLES[i];\r\n            var normalItemStyleOpt = itemStyleOpt.normal;\r\n            var emphasisItemStyleOpt = itemStyleOpt.emphasis;\r\n            if (normalItemStyleOpt && normalItemStyleOpt[styleName]) {\r\n                if (__DEV__) {\r\n                    deprecateReplaceLog(\"itemStyle.normal.\" + styleName, styleName);\r\n                }\r\n                opt[styleName] = opt[styleName] || {};\r\n                if (!opt[styleName].normal) {\r\n                    opt[styleName].normal = normalItemStyleOpt[styleName];\r\n                }\r\n                else {\r\n                    merge(opt[styleName].normal, normalItemStyleOpt[styleName]);\r\n                }\r\n                normalItemStyleOpt[styleName] = null;\r\n            }\r\n            if (emphasisItemStyleOpt && emphasisItemStyleOpt[styleName]) {\r\n                if (__DEV__) {\r\n                    deprecateReplaceLog(\"itemStyle.emphasis.\" + styleName, \"emphasis.\" + styleName);\r\n                }\r\n                opt[styleName] = opt[styleName] || {};\r\n                if (!opt[styleName].emphasis) {\r\n                    opt[styleName].emphasis = emphasisItemStyleOpt[styleName];\r\n                }\r\n                else {\r\n                    merge(opt[styleName].emphasis, emphasisItemStyleOpt[styleName]);\r\n                }\r\n                emphasisItemStyleOpt[styleName] = null;\r\n            }\r\n        }\r\n    }\r\n    function convertNormalEmphasis(opt, optType, useExtend) {\r\n        if (opt && opt[optType] && (opt[optType].normal || opt[optType].emphasis)) {\r\n            var normalOpt = opt[optType].normal;\r\n            var emphasisOpt = opt[optType].emphasis;\r\n            if (normalOpt) {\r\n                if (__DEV__) {\r\n                    deprecateLog(\"'normal' hierarchy in \" + optType + \" has been removed since 4.0. All style properties are configured in \" + optType + \" directly now.\");\r\n                }\r\n                if (useExtend) {\r\n                    opt[optType].normal = opt[optType].emphasis = null;\r\n                    defaults(opt[optType], normalOpt);\r\n                }\r\n                else {\r\n                    opt[optType] = normalOpt;\r\n                }\r\n            }\r\n            if (emphasisOpt) {\r\n                if (__DEV__) {\r\n                    deprecateLog(optType + \".emphasis has been changed to emphasis.\" + optType + \" since 4.0\");\r\n                }\r\n                opt.emphasis = opt.emphasis || {};\r\n                opt.emphasis[optType] = emphasisOpt;\r\n                if (emphasisOpt.focus) {\r\n                    opt.emphasis.focus = emphasisOpt.focus;\r\n                }\r\n                if (emphasisOpt.blurScope) {\r\n                    opt.emphasis.blurScope = emphasisOpt.blurScope;\r\n                }\r\n            }\r\n        }\r\n    }\r\n    function removeEC3NormalStatus(opt) {\r\n        convertNormalEmphasis(opt, 'itemStyle');\r\n        convertNormalEmphasis(opt, 'lineStyle');\r\n        convertNormalEmphasis(opt, 'areaStyle');\r\n        convertNormalEmphasis(opt, 'label');\r\n        convertNormalEmphasis(opt, 'labelLine');\r\n        convertNormalEmphasis(opt, 'upperLabel');\r\n        convertNormalEmphasis(opt, 'edgeLabel');\r\n    }\r\n    function compatTextStyle(opt, propName) {\r\n        var labelOptSingle = isObject$1(opt) && opt[propName];\r\n        var textStyle = isObject$1(labelOptSingle) && labelOptSingle.textStyle;\r\n        if (textStyle) {\r\n            if (__DEV__) {\r\n                deprecateLog(\"textStyle hierarchy in \" + propName + \" has been removed since 4.0. All textStyle properties are configured in \" + propName + \" directly now.\");\r\n            }\r\n            for (var i = 0, len = TEXT_STYLE_OPTIONS.length; i < len; i++) {\r\n                var textPropName = TEXT_STYLE_OPTIONS[i];\r\n                if (textStyle.hasOwnProperty(textPropName)) {\r\n                    labelOptSingle[textPropName] = textStyle[textPropName];\r\n                }\r\n            }\r\n        }\r\n    }\r\n    function compatEC3CommonStyles(opt) {\r\n        if (opt) {\r\n            removeEC3NormalStatus(opt);\r\n            compatTextStyle(opt, 'label');\r\n            opt.emphasis && compatTextStyle(opt.emphasis, 'label');\r\n        }\r\n    }\r\n    function processSeries(seriesOpt) {\r\n        if (!isObject$1(seriesOpt)) {\r\n            return;\r\n        }\r\n        compatEC2ItemStyle(seriesOpt);\r\n        removeEC3NormalStatus(seriesOpt);\r\n        compatTextStyle(seriesOpt, 'label');\r\n        compatTextStyle(seriesOpt, 'upperLabel');\r\n        compatTextStyle(seriesOpt, 'edgeLabel');\r\n        if (seriesOpt.emphasis) {\r\n            compatTextStyle(seriesOpt.emphasis, 'label');\r\n            compatTextStyle(seriesOpt.emphasis, 'upperLabel');\r\n            compatTextStyle(seriesOpt.emphasis, 'edgeLabel');\r\n        }\r\n        var markPoint = seriesOpt.markPoint;\r\n        if (markPoint) {\r\n            compatEC2ItemStyle(markPoint);\r\n            compatEC3CommonStyles(markPoint);\r\n        }\r\n        var markLine = seriesOpt.markLine;\r\n        if (markLine) {\r\n            compatEC2ItemStyle(markLine);\r\n            compatEC3CommonStyles(markLine);\r\n        }\r\n        var markArea = seriesOpt.markArea;\r\n        if (markArea) {\r\n            compatEC3CommonStyles(markArea);\r\n        }\r\n        var data = seriesOpt.data;\r\n        if (seriesOpt.type === 'graph') {\r\n            data = data || seriesOpt.nodes;\r\n            var edgeData = seriesOpt.links || seriesOpt.edges;\r\n            if (edgeData && !isTypedArray(edgeData)) {\r\n                for (var i = 0; i < edgeData.length; i++) {\r\n                    compatEC3CommonStyles(edgeData[i]);\r\n                }\r\n            }\r\n            each(seriesOpt.categories, function (opt) {\r\n                removeEC3NormalStatus(opt);\r\n            });\r\n        }\r\n        if (data && !isTypedArray(data)) {\r\n            for (var i = 0; i < data.length; i++) {\r\n                compatEC3CommonStyles(data[i]);\r\n            }\r\n        }\r\n        markPoint = seriesOpt.markPoint;\r\n        if (markPoint && markPoint.data) {\r\n            var mpData = markPoint.data;\r\n            for (var i = 0; i < mpData.length; i++) {\r\n                compatEC3CommonStyles(mpData[i]);\r\n            }\r\n        }\r\n        markLine = seriesOpt.markLine;\r\n        if (markLine && markLine.data) {\r\n            var mlData = markLine.data;\r\n            for (var i = 0; i < mlData.length; i++) {\r\n                if (isArray(mlData[i])) {\r\n                    compatEC3CommonStyles(mlData[i][0]);\r\n                    compatEC3CommonStyles(mlData[i][1]);\r\n                }\r\n                else {\r\n                    compatEC3CommonStyles(mlData[i]);\r\n                }\r\n            }\r\n        }\r\n        if (seriesOpt.type === 'gauge') {\r\n            compatTextStyle(seriesOpt, 'axisLabel');\r\n            compatTextStyle(seriesOpt, 'title');\r\n            compatTextStyle(seriesOpt, 'detail');\r\n        }\r\n        else if (seriesOpt.type === 'treemap') {\r\n            convertNormalEmphasis(seriesOpt.breadcrumb, 'itemStyle');\r\n            each(seriesOpt.levels, function (opt) {\r\n                removeEC3NormalStatus(opt);\r\n            });\r\n        }\r\n        else if (seriesOpt.type === 'tree') {\r\n            removeEC3NormalStatus(seriesOpt.leaves);\r\n        }\r\n    }\r\n    function toArr(o) {\r\n        return isArray(o) ? o : o ? [o] : [];\r\n    }\r\n    function toObj(o) {\r\n        return (isArray(o) ? o[0] : o) || {};\r\n    }\r\n    function globalCompatStyle(option, isTheme) {\r\n        each$2(toArr(option.series), function (seriesOpt) {\r\n            isObject$1(seriesOpt) && processSeries(seriesOpt);\r\n        });\r\n        var axes = ['xAxis', 'yAxis', 'radiusAxis', 'angleAxis', 'singleAxis', 'parallelAxis', 'radar'];\r\n        isTheme && axes.push('valueAxis', 'categoryAxis', 'logAxis', 'timeAxis');\r\n        each$2(axes, function (axisName) {\r\n            each$2(toArr(option[axisName]), function (axisOpt) {\r\n                if (axisOpt) {\r\n                    compatTextStyle(axisOpt, 'axisLabel');\r\n                    compatTextStyle(axisOpt.axisPointer, 'label');\r\n                }\r\n            });\r\n        });\r\n        each$2(toArr(option.parallel), function (parallelOpt) {\r\n            var parallelAxisDefault = parallelOpt && parallelOpt.parallelAxisDefault;\r\n            compatTextStyle(parallelAxisDefault, 'axisLabel');\r\n            compatTextStyle(parallelAxisDefault && parallelAxisDefault.axisPointer, 'label');\r\n        });\r\n        each$2(toArr(option.calendar), function (calendarOpt) {\r\n            convertNormalEmphasis(calendarOpt, 'itemStyle');\r\n            compatTextStyle(calendarOpt, 'dayLabel');\r\n            compatTextStyle(calendarOpt, 'monthLabel');\r\n            compatTextStyle(calendarOpt, 'yearLabel');\r\n        });\r\n        each$2(toArr(option.radar), function (radarOpt) {\r\n            compatTextStyle(radarOpt, 'name');\r\n            if (radarOpt.name && radarOpt.axisName == null) {\r\n                radarOpt.axisName = radarOpt.name;\r\n                delete radarOpt.name;\r\n                if (__DEV__) {\r\n                    deprecateLog('name property in radar component has been changed to axisName');\r\n                }\r\n            }\r\n            if (radarOpt.nameGap != null && radarOpt.axisNameGap == null) {\r\n                radarOpt.axisNameGap = radarOpt.nameGap;\r\n                delete radarOpt.nameGap;\r\n                if (__DEV__) {\r\n                    deprecateLog('nameGap property in radar component has been changed to axisNameGap');\r\n                }\r\n            }\r\n        });\r\n        each$2(toArr(option.geo), function (geoOpt) {\r\n            if (isObject$1(geoOpt)) {\r\n                compatEC3CommonStyles(geoOpt);\r\n                each$2(toArr(geoOpt.regions), function (regionObj) {\r\n                    compatEC3CommonStyles(regionObj);\r\n                });\r\n            }\r\n        });\r\n        each$2(toArr(option.timeline), function (timelineOpt) {\r\n            compatEC3CommonStyles(timelineOpt);\r\n            convertNormalEmphasis(timelineOpt, 'label');\r\n            convertNormalEmphasis(timelineOpt, 'itemStyle');\r\n            convertNormalEmphasis(timelineOpt, 'controlStyle', true);\r\n            var data = timelineOpt.data;\r\n            isArray(data) && each(data, function (item) {\r\n                if (isObject(item)) {\r\n                    convertNormalEmphasis(item, 'label');\r\n                    convertNormalEmphasis(item, 'itemStyle');\r\n                }\r\n            });\r\n        });\r\n        each$2(toArr(option.toolbox), function (toolboxOpt) {\r\n            convertNormalEmphasis(toolboxOpt, 'iconStyle');\r\n            each$2(toolboxOpt.feature, function (featureOpt) {\r\n                convertNormalEmphasis(featureOpt, 'iconStyle');\r\n            });\r\n        });\r\n        compatTextStyle(toObj(option.axisPointer), 'label');\r\n        compatTextStyle(toObj(option.tooltip).axisPointer, 'label');\r\n    }\n\n    function get(opt, path) {\r\n        var pathArr = path.split(',');\r\n        var obj = opt;\r\n        for (var i = 0; i < pathArr.length; i++) {\r\n            obj = obj && obj[pathArr[i]];\r\n            if (obj == null) {\r\n                break;\r\n            }\r\n        }\r\n        return obj;\r\n    }\r\n    function set(opt, path, val, overwrite) {\r\n        var pathArr = path.split(',');\r\n        var obj = opt;\r\n        var key;\r\n        var i = 0;\r\n        for (; i < pathArr.length - 1; i++) {\r\n            key = pathArr[i];\r\n            if (obj[key] == null) {\r\n                obj[key] = {};\r\n            }\r\n            obj = obj[key];\r\n        }\r\n        if (overwrite || obj[pathArr[i]] == null) {\r\n            obj[pathArr[i]] = val;\r\n        }\r\n    }\r\n    function compatLayoutProperties(option) {\r\n        option && each(LAYOUT_PROPERTIES, function (prop) {\r\n            if (prop[0] in option && !(prop[1] in option)) {\r\n                option[prop[1]] = option[prop[0]];\r\n            }\r\n        });\r\n    }\r\n    var LAYOUT_PROPERTIES = [\r\n        ['x', 'left'], ['y', 'top'], ['x2', 'right'], ['y2', 'bottom']\r\n    ];\r\n    var COMPATITABLE_COMPONENTS = [\r\n        'grid', 'geo', 'parallel', 'legend', 'toolbox', 'title', 'visualMap', 'dataZoom', 'timeline'\r\n    ];\r\n    var BAR_ITEM_STYLE_MAP = [\r\n        ['borderRadius', 'barBorderRadius'],\r\n        ['borderColor', 'barBorderColor'],\r\n        ['borderWidth', 'barBorderWidth']\r\n    ];\r\n    function compatBarItemStyle(option) {\r\n        var itemStyle = option && option.itemStyle;\r\n        if (itemStyle) {\r\n            for (var i = 0; i < BAR_ITEM_STYLE_MAP.length; i++) {\r\n                var oldName = BAR_ITEM_STYLE_MAP[i][1];\r\n                var newName = BAR_ITEM_STYLE_MAP[i][0];\r\n                if (itemStyle[oldName] != null) {\r\n                    itemStyle[newName] = itemStyle[oldName];\r\n                    if (__DEV__) {\r\n                        deprecateReplaceLog(oldName, newName);\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    }\r\n    function compatPieLabel(option) {\r\n        if (!option) {\r\n            return;\r\n        }\r\n        if (option.alignTo === 'edge' && option.margin != null && option.edgeDistance == null) {\r\n            if (__DEV__) {\r\n                deprecateReplaceLog('label.margin', 'label.edgeDistance', 'pie');\r\n            }\r\n            option.edgeDistance = option.margin;\r\n        }\r\n    }\r\n    function compatSunburstState(option) {\r\n        if (!option) {\r\n            return;\r\n        }\r\n        if (option.downplay && !option.blur) {\r\n            option.blur = option.downplay;\r\n            if (__DEV__) {\r\n                deprecateReplaceLog('downplay', 'blur', 'sunburst');\r\n            }\r\n        }\r\n    }\r\n    function compatGraphFocus(option) {\r\n        if (!option) {\r\n            return;\r\n        }\r\n        if (option.focusNodeAdjacency != null) {\r\n            option.emphasis = option.emphasis || {};\r\n            if (option.emphasis.focus == null) {\r\n                if (__DEV__) {\r\n                    deprecateReplaceLog('focusNodeAdjacency', 'emphasis: { focus: \\'adjacency\\'}', 'graph/sankey');\r\n                }\r\n                option.emphasis.focus = 'adjacency';\r\n            }\r\n        }\r\n    }\r\n    function traverseTree(data, cb) {\r\n        if (data) {\r\n            for (var i = 0; i < data.length; i++) {\r\n                cb(data[i]);\r\n                data[i] && traverseTree(data[i].children, cb);\r\n            }\r\n        }\r\n    }\r\n    function globalBackwardCompat(option, isTheme) {\r\n        globalCompatStyle(option, isTheme);\r\n        option.series = normalizeToArray(option.series);\r\n        each(option.series, function (seriesOpt) {\r\n            if (!isObject(seriesOpt)) {\r\n                return;\r\n            }\r\n            var seriesType = seriesOpt.type;\r\n            if (seriesType === 'line') {\r\n                if (seriesOpt.clipOverflow != null) {\r\n                    seriesOpt.clip = seriesOpt.clipOverflow;\r\n                    if (__DEV__) {\r\n                        deprecateReplaceLog('clipOverflow', 'clip', 'line');\r\n                    }\r\n                }\r\n            }\r\n            else if (seriesType === 'pie' || seriesType === 'gauge') {\r\n                if (seriesOpt.clockWise != null) {\r\n                    seriesOpt.clockwise = seriesOpt.clockWise;\r\n                    if (__DEV__) {\r\n                        deprecateReplaceLog('clockWise', 'clockwise');\r\n                    }\r\n                }\r\n                compatPieLabel(seriesOpt.label);\r\n                var data = seriesOpt.data;\r\n                if (data && !isTypedArray(data)) {\r\n                    for (var i = 0; i < data.length; i++) {\r\n                        compatPieLabel(data[i]);\r\n                    }\r\n                }\r\n                if (seriesOpt.hoverOffset != null) {\r\n                    seriesOpt.emphasis = seriesOpt.emphasis || {};\r\n                    if (seriesOpt.emphasis.scaleSize = null) {\r\n                        if (__DEV__) {\r\n                            deprecateReplaceLog('hoverOffset', 'emphasis.scaleSize');\r\n                        }\r\n                        seriesOpt.emphasis.scaleSize = seriesOpt.hoverOffset;\r\n                    }\r\n                }\r\n            }\r\n            else if (seriesType === 'gauge') {\r\n                var pointerColor = get(seriesOpt, 'pointer.color');\r\n                pointerColor != null\r\n                    && set(seriesOpt, 'itemStyle.color', pointerColor);\r\n            }\r\n            else if (seriesType === 'bar') {\r\n                compatBarItemStyle(seriesOpt);\r\n                compatBarItemStyle(seriesOpt.backgroundStyle);\r\n                compatBarItemStyle(seriesOpt.emphasis);\r\n                var data = seriesOpt.data;\r\n                if (data && !isTypedArray(data)) {\r\n                    for (var i = 0; i < data.length; i++) {\r\n                        if (typeof data[i] === 'object') {\r\n                            compatBarItemStyle(data[i]);\r\n                            compatBarItemStyle(data[i] && data[i].emphasis);\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n            else if (seriesType === 'sunburst') {\r\n                var highlightPolicy = seriesOpt.highlightPolicy;\r\n                if (highlightPolicy) {\r\n                    seriesOpt.emphasis = seriesOpt.emphasis || {};\r\n                    if (!seriesOpt.emphasis.focus) {\r\n                        seriesOpt.emphasis.focus = highlightPolicy;\r\n                        if (__DEV__) {\r\n                            deprecateReplaceLog('highlightPolicy', 'emphasis.focus', 'sunburst');\r\n                        }\r\n                    }\r\n                }\r\n                compatSunburstState(seriesOpt);\r\n                traverseTree(seriesOpt.data, compatSunburstState);\r\n            }\r\n            else if (seriesType === 'graph' || seriesType === 'sankey') {\r\n                compatGraphFocus(seriesOpt);\r\n            }\r\n            else if (seriesType === 'map') {\r\n                if (seriesOpt.mapType && !seriesOpt.map) {\r\n                    if (__DEV__) {\r\n                        deprecateReplaceLog('mapType', 'map', 'map');\r\n                    }\r\n                    seriesOpt.map = seriesOpt.mapType;\r\n                }\r\n                if (seriesOpt.mapLocation) {\r\n                    if (__DEV__) {\r\n                        deprecateLog('`mapLocation` is not used anymore.');\r\n                    }\r\n                    defaults(seriesOpt, seriesOpt.mapLocation);\r\n                }\r\n            }\r\n            if (seriesOpt.hoverAnimation != null) {\r\n                seriesOpt.emphasis = seriesOpt.emphasis || {};\r\n                if (seriesOpt.emphasis && seriesOpt.emphasis.scale == null) {\r\n                    if (__DEV__) {\r\n                        deprecateReplaceLog('hoverAnimation', 'emphasis.scale');\r\n                    }\r\n                    seriesOpt.emphasis.scale = seriesOpt.hoverAnimation;\r\n                }\r\n            }\r\n            compatLayoutProperties(seriesOpt);\r\n        });\r\n        if (option.dataRange) {\r\n            option.visualMap = option.dataRange;\r\n        }\r\n        each(COMPATITABLE_COMPONENTS, function (componentName) {\r\n            var options = option[componentName];\r\n            if (options) {\r\n                if (!isArray(options)) {\r\n                    options = [options];\r\n                }\r\n                each(options, function (option) {\r\n                    compatLayoutProperties(option);\r\n                });\r\n            }\r\n        });\r\n    }\n\n    function dataStack(ecModel) {\r\n        var stackInfoMap = createHashMap();\r\n        ecModel.eachSeries(function (seriesModel) {\r\n            var stack = seriesModel.get('stack');\r\n            if (stack) {\r\n                var stackInfoList = stackInfoMap.get(stack) || stackInfoMap.set(stack, []);\r\n                var data = seriesModel.getData();\r\n                var stackInfo = {\r\n                    stackResultDimension: data.getCalculationInfo('stackResultDimension'),\r\n                    stackedOverDimension: data.getCalculationInfo('stackedOverDimension'),\r\n                    stackedDimension: data.getCalculationInfo('stackedDimension'),\r\n                    stackedByDimension: data.getCalculationInfo('stackedByDimension'),\r\n                    isStackedByIndex: data.getCalculationInfo('isStackedByIndex'),\r\n                    data: data,\r\n                    seriesModel: seriesModel\r\n                };\r\n                if (!stackInfo.stackedDimension\r\n                    || !(stackInfo.isStackedByIndex || stackInfo.stackedByDimension)) {\r\n                    return;\r\n                }\r\n                stackInfoList.length && data.setCalculationInfo('stackedOnSeries', stackInfoList[stackInfoList.length - 1].seriesModel);\r\n                stackInfoList.push(stackInfo);\r\n            }\r\n        });\r\n        stackInfoMap.each(calculateStack);\r\n    }\r\n    function calculateStack(stackInfoList) {\r\n        each(stackInfoList, function (targetStackInfo, idxInStack) {\r\n            var resultVal = [];\r\n            var resultNaN = [NaN, NaN];\r\n            var dims = [targetStackInfo.stackResultDimension, targetStackInfo.stackedOverDimension];\r\n            var targetData = targetStackInfo.data;\r\n            var isStackedByIndex = targetStackInfo.isStackedByIndex;\r\n            var newData = targetData.map(dims, function (v0, v1, dataIndex) {\r\n                var sum = targetData.get(targetStackInfo.stackedDimension, dataIndex);\r\n                if (isNaN(sum)) {\r\n                    return resultNaN;\r\n                }\r\n                var byValue;\r\n                var stackedDataRawIndex;\r\n                if (isStackedByIndex) {\r\n                    stackedDataRawIndex = targetData.getRawIndex(dataIndex);\r\n                }\r\n                else {\r\n                    byValue = targetData.get(targetStackInfo.stackedByDimension, dataIndex);\r\n                }\r\n                var stackedOver = NaN;\r\n                for (var j = idxInStack - 1; j >= 0; j--) {\r\n                    var stackInfo = stackInfoList[j];\r\n                    if (!isStackedByIndex) {\r\n                        stackedDataRawIndex = stackInfo.data.rawIndexOf(stackInfo.stackedByDimension, byValue);\r\n                    }\r\n                    if (stackedDataRawIndex >= 0) {\r\n                        var val = stackInfo.data.getByRawIndex(stackInfo.stackResultDimension, stackedDataRawIndex);\r\n                        if ((sum >= 0 && val > 0)\r\n                            || (sum <= 0 && val < 0)) {\r\n                            sum += val;\r\n                            stackedOver = val;\r\n                            break;\r\n                        }\r\n                    }\r\n                }\r\n                resultVal[0] = sum;\r\n                resultVal[1] = stackedOver;\r\n                return resultVal;\r\n            });\r\n            targetData.hostModel.setData(newData);\r\n            targetStackInfo.data = newData;\r\n        });\r\n    }\n\n    var SourceImpl = (function () {\r\n        function SourceImpl(fields) {\r\n            this.data = fields.data || (fields.sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS ? {} : []);\r\n            this.sourceFormat = fields.sourceFormat || SOURCE_FORMAT_UNKNOWN;\r\n            this.seriesLayoutBy = fields.seriesLayoutBy || SERIES_LAYOUT_BY_COLUMN;\r\n            this.startIndex = fields.startIndex || 0;\r\n            this.dimensionsDefine = fields.dimensionsDefine;\r\n            this.dimensionsDetectedCount = fields.dimensionsDetectedCount;\r\n            this.encodeDefine = fields.encodeDefine;\r\n            this.metaRawOption = fields.metaRawOption;\r\n        }\r\n        return SourceImpl;\r\n    }());\r\n    function isSourceInstance(val) {\r\n        return val instanceof SourceImpl;\r\n    }\r\n    function createSource(sourceData, thisMetaRawOption, sourceFormat, encodeDefine) {\r\n        sourceFormat = sourceFormat || detectSourceFormat(sourceData);\r\n        var seriesLayoutBy = thisMetaRawOption.seriesLayoutBy;\r\n        var determined = determineSourceDimensions(sourceData, sourceFormat, seriesLayoutBy, thisMetaRawOption.sourceHeader, thisMetaRawOption.dimensions);\r\n        var source = new SourceImpl({\r\n            data: sourceData,\r\n            sourceFormat: sourceFormat,\r\n            seriesLayoutBy: seriesLayoutBy,\r\n            dimensionsDefine: determined.dimensionsDefine,\r\n            startIndex: determined.startIndex,\r\n            dimensionsDetectedCount: determined.dimensionsDetectedCount,\r\n            encodeDefine: makeEncodeDefine(encodeDefine),\r\n            metaRawOption: clone(thisMetaRawOption)\r\n        });\r\n        return source;\r\n    }\r\n    function createSourceFromSeriesDataOption(data) {\r\n        return new SourceImpl({\r\n            data: data,\r\n            sourceFormat: isTypedArray(data)\r\n                ? SOURCE_FORMAT_TYPED_ARRAY\r\n                : SOURCE_FORMAT_ORIGINAL\r\n        });\r\n    }\r\n    function cloneSourceShallow(source) {\r\n        return new SourceImpl({\r\n            data: source.data,\r\n            sourceFormat: source.sourceFormat,\r\n            seriesLayoutBy: source.seriesLayoutBy,\r\n            dimensionsDefine: clone(source.dimensionsDefine),\r\n            startIndex: source.startIndex,\r\n            dimensionsDetectedCount: source.dimensionsDetectedCount,\r\n            encodeDefine: makeEncodeDefine(source.encodeDefine)\r\n        });\r\n    }\r\n    function makeEncodeDefine(encodeDefine) {\r\n        return encodeDefine\r\n            ? createHashMap(encodeDefine)\r\n            : null;\r\n    }\r\n    function detectSourceFormat(data) {\r\n        var sourceFormat = SOURCE_FORMAT_UNKNOWN;\r\n        if (isTypedArray(data)) {\r\n            sourceFormat = SOURCE_FORMAT_TYPED_ARRAY;\r\n        }\r\n        else if (isArray(data)) {\r\n            if (data.length === 0) {\r\n                sourceFormat = SOURCE_FORMAT_ARRAY_ROWS;\r\n            }\r\n            for (var i = 0, len = data.length; i < len; i++) {\r\n                var item = data[i];\r\n                if (item == null) {\r\n                    continue;\r\n                }\r\n                else if (isArray(item)) {\r\n                    sourceFormat = SOURCE_FORMAT_ARRAY_ROWS;\r\n                    break;\r\n                }\r\n                else if (isObject(item)) {\r\n                    sourceFormat = SOURCE_FORMAT_OBJECT_ROWS;\r\n                    break;\r\n                }\r\n            }\r\n        }\r\n        else if (isObject(data)) {\r\n            for (var key in data) {\r\n                if (hasOwn(data, key) && isArrayLike(data[key])) {\r\n                    sourceFormat = SOURCE_FORMAT_KEYED_COLUMNS;\r\n                    break;\r\n                }\r\n            }\r\n        }\r\n        else if (data != null) {\r\n            throw new Error('Invalid data');\r\n        }\r\n        return sourceFormat;\r\n    }\r\n    function determineSourceDimensions(data, sourceFormat, seriesLayoutBy, sourceHeader, dimensionsDefine) {\r\n        var dimensionsDetectedCount;\r\n        var startIndex;\r\n        if (!data) {\r\n            return {\r\n                dimensionsDefine: normalizeDimensionsOption(dimensionsDefine),\r\n                startIndex: startIndex,\r\n                dimensionsDetectedCount: dimensionsDetectedCount\r\n            };\r\n        }\r\n        if (sourceFormat === SOURCE_FORMAT_ARRAY_ROWS) {\r\n            var dataArrayRows = data;\r\n            if (sourceHeader === 'auto' || sourceHeader == null) {\r\n                arrayRowsTravelFirst(function (val) {\r\n                    if (val != null && val !== '-') {\r\n                        if (isString(val)) {\r\n                            startIndex == null && (startIndex = 1);\r\n                        }\r\n                        else {\r\n                            startIndex = 0;\r\n                        }\r\n                    }\r\n                }, seriesLayoutBy, dataArrayRows, 10);\r\n            }\r\n            else {\r\n                startIndex = isNumber(sourceHeader) ? sourceHeader : sourceHeader ? 1 : 0;\r\n            }\r\n            if (!dimensionsDefine && startIndex === 1) {\r\n                dimensionsDefine = [];\r\n                arrayRowsTravelFirst(function (val, index) {\r\n                    dimensionsDefine[index] = (val != null ? val + '' : '');\r\n                }, seriesLayoutBy, dataArrayRows, Infinity);\r\n            }\r\n            dimensionsDetectedCount = dimensionsDefine\r\n                ? dimensionsDefine.length\r\n                : seriesLayoutBy === SERIES_LAYOUT_BY_ROW\r\n                    ? dataArrayRows.length\r\n                    : dataArrayRows[0]\r\n                        ? dataArrayRows[0].length\r\n                        : null;\r\n        }\r\n        else if (sourceFormat === SOURCE_FORMAT_OBJECT_ROWS) {\r\n            if (!dimensionsDefine) {\r\n                dimensionsDefine = objectRowsCollectDimensions(data);\r\n            }\r\n        }\r\n        else if (sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS) {\r\n            if (!dimensionsDefine) {\r\n                dimensionsDefine = [];\r\n                each(data, function (colArr, key) {\r\n                    dimensionsDefine.push(key);\r\n                });\r\n            }\r\n        }\r\n        else if (sourceFormat === SOURCE_FORMAT_ORIGINAL) {\r\n            var value0 = getDataItemValue(data[0]);\r\n            dimensionsDetectedCount = isArray(value0) && value0.length || 1;\r\n        }\r\n        else if (sourceFormat === SOURCE_FORMAT_TYPED_ARRAY) {\r\n            if (__DEV__) {\r\n                assert(!!dimensionsDefine, 'dimensions must be given if data is TypedArray.');\r\n            }\r\n        }\r\n        return {\r\n            startIndex: startIndex,\r\n            dimensionsDefine: normalizeDimensionsOption(dimensionsDefine),\r\n            dimensionsDetectedCount: dimensionsDetectedCount\r\n        };\r\n    }\r\n    function objectRowsCollectDimensions(data) {\r\n        var firstIndex = 0;\r\n        var obj;\r\n        while (firstIndex < data.length && !(obj = data[firstIndex++])) { }\r\n        if (obj) {\r\n            var dimensions_1 = [];\r\n            each(obj, function (value, key) {\r\n                dimensions_1.push(key);\r\n            });\r\n            return dimensions_1;\r\n        }\r\n    }\r\n    function normalizeDimensionsOption(dimensionsDefine) {\r\n        if (!dimensionsDefine) {\r\n            return;\r\n        }\r\n        var nameMap = createHashMap();\r\n        return map(dimensionsDefine, function (rawItem, index) {\r\n            rawItem = isObject(rawItem) ? rawItem : { name: rawItem };\r\n            var item = {\r\n                name: rawItem.name,\r\n                displayName: rawItem.displayName,\r\n                type: rawItem.type\r\n            };\r\n            if (name == null) {\r\n                return item;\r\n            }\r\n            item.name += '';\r\n            if (item.displayName == null) {\r\n                item.displayName = item.name;\r\n            }\r\n            var exist = nameMap.get(item.name);\r\n            if (!exist) {\r\n                nameMap.set(item.name, { count: 1 });\r\n            }\r\n            else {\r\n                item.name += '-' + exist.count++;\r\n            }\r\n            return item;\r\n        });\r\n    }\r\n    function arrayRowsTravelFirst(cb, seriesLayoutBy, data, maxLoop) {\r\n        if (seriesLayoutBy === SERIES_LAYOUT_BY_ROW) {\r\n            for (var i = 0; i < data.length && i < maxLoop; i++) {\r\n                cb(data[i] ? data[i][0] : null, i);\r\n            }\r\n        }\r\n        else {\r\n            var value0 = data[0] || [];\r\n            for (var i = 0; i < value0.length && i < maxLoop; i++) {\r\n                cb(value0[i], i);\r\n            }\r\n        }\r\n    }\n\n    var _a, _b, _c;\r\n    var providerMethods;\r\n    var mountMethods;\r\n    var DefaultDataProvider = (function () {\r\n        function DefaultDataProvider(sourceParam, dimSize) {\r\n            var source = !isSourceInstance(sourceParam)\r\n                ? createSourceFromSeriesDataOption(sourceParam)\r\n                : sourceParam;\r\n            this._source = source;\r\n            var data = this._data = source.data;\r\n            if (source.sourceFormat === SOURCE_FORMAT_TYPED_ARRAY) {\r\n                if (__DEV__) {\r\n                    if (dimSize == null) {\r\n                        throw new Error('Typed array data must specify dimension size');\r\n                    }\r\n                }\r\n                this._offset = 0;\r\n                this._dimSize = dimSize;\r\n                this._data = data;\r\n            }\r\n            mountMethods(this, data, source);\r\n        }\r\n        DefaultDataProvider.prototype.getSource = function () {\r\n            return this._source;\r\n        };\r\n        DefaultDataProvider.prototype.count = function () {\r\n            return 0;\r\n        };\r\n        DefaultDataProvider.prototype.getItem = function (idx, out) {\r\n            return;\r\n        };\r\n        DefaultDataProvider.prototype.appendData = function (newData) {\r\n        };\r\n        DefaultDataProvider.prototype.clean = function () {\r\n        };\r\n        DefaultDataProvider.protoInitialize = (function () {\r\n            var proto = DefaultDataProvider.prototype;\r\n            proto.pure = false;\r\n            proto.persistent = true;\r\n        })();\r\n        DefaultDataProvider.internalField = (function () {\r\n            var _a;\r\n            mountMethods = function (provider, data, source) {\r\n                var sourceFormat = source.sourceFormat;\r\n                var seriesLayoutBy = source.seriesLayoutBy;\r\n                var startIndex = source.startIndex;\r\n                var dimsDef = source.dimensionsDefine;\r\n                var methods = providerMethods[getMethodMapKey(sourceFormat, seriesLayoutBy)];\r\n                if (__DEV__) {\r\n                    assert(methods, 'Invalide sourceFormat: ' + sourceFormat);\r\n                }\r\n                extend(provider, methods);\r\n                if (sourceFormat === SOURCE_FORMAT_TYPED_ARRAY) {\r\n                    provider.getItem = getItemForTypedArray;\r\n                    provider.count = countForTypedArray;\r\n                    provider.fillStorage = fillStorageForTypedArray;\r\n                }\r\n                else {\r\n                    var rawItemGetter = getRawSourceItemGetter(sourceFormat, seriesLayoutBy);\r\n                    provider.getItem = bind(rawItemGetter, null, data, startIndex, dimsDef);\r\n                    var rawCounter = getRawSourceDataCounter(sourceFormat, seriesLayoutBy);\r\n                    provider.count = bind(rawCounter, null, data, startIndex, dimsDef);\r\n                }\r\n            };\r\n            var getItemForTypedArray = function (idx, out) {\r\n                idx = idx - this._offset;\r\n                out = out || [];\r\n                var data = this._data;\r\n                var dimSize = this._dimSize;\r\n                var offset = dimSize * idx;\r\n                for (var i = 0; i < dimSize; i++) {\r\n                    out[i] = data[offset + i];\r\n                }\r\n                return out;\r\n            };\r\n            var fillStorageForTypedArray = function (start, end, storage, extent) {\r\n                var data = this._data;\r\n                var dimSize = this._dimSize;\r\n                for (var dim = 0; dim < dimSize; dim++) {\r\n                    var dimExtent = extent[dim];\r\n                    var min = dimExtent[0] == null ? Infinity : dimExtent[0];\r\n                    var max = dimExtent[1] == null ? -Infinity : dimExtent[1];\r\n                    var count = end - start;\r\n                    var arr = storage[dim];\r\n                    for (var i = 0; i < count; i++) {\r\n                        var val = data[(start + i) * dimSize + dim];\r\n                        arr[start + i] = val;\r\n                        val < min && (min = val);\r\n                        val > max && (max = val);\r\n                    }\r\n                    dimExtent[0] = min;\r\n                    dimExtent[1] = max;\r\n                }\r\n            };\r\n            var countForTypedArray = function () {\r\n                return this._data ? (this._data.length / this._dimSize) : 0;\r\n            };\r\n            providerMethods = (_a = {},\r\n                _a[SOURCE_FORMAT_ARRAY_ROWS + '_' + SERIES_LAYOUT_BY_COLUMN] = {\r\n                    pure: true,\r\n                    appendData: appendDataSimply\r\n                },\r\n                _a[SOURCE_FORMAT_ARRAY_ROWS + '_' + SERIES_LAYOUT_BY_ROW] = {\r\n                    pure: true,\r\n                    appendData: function () {\r\n                        throw new Error('Do not support appendData when set seriesLayoutBy: \"row\".');\r\n                    }\r\n                },\r\n                _a[SOURCE_FORMAT_OBJECT_ROWS] = {\r\n                    pure: true,\r\n                    appendData: appendDataSimply\r\n                },\r\n                _a[SOURCE_FORMAT_KEYED_COLUMNS] = {\r\n                    pure: true,\r\n                    appendData: function (newData) {\r\n                        var data = this._data;\r\n                        each(newData, function (newCol, key) {\r\n                            var oldCol = data[key] || (data[key] = []);\r\n                            for (var i = 0; i < (newCol || []).length; i++) {\r\n                                oldCol.push(newCol[i]);\r\n                            }\r\n                        });\r\n                    }\r\n                },\r\n                _a[SOURCE_FORMAT_ORIGINAL] = {\r\n                    appendData: appendDataSimply\r\n                },\r\n                _a[SOURCE_FORMAT_TYPED_ARRAY] = {\r\n                    persistent: false,\r\n                    pure: true,\r\n                    appendData: function (newData) {\r\n                        if (__DEV__) {\r\n                            assert(isTypedArray(newData), 'Added data must be TypedArray if data in initialization is TypedArray');\r\n                        }\r\n                        this._data = newData;\r\n                    },\r\n                    clean: function () {\r\n                        this._offset += this.count();\r\n                        this._data = null;\r\n                    }\r\n                },\r\n                _a);\r\n            function appendDataSimply(newData) {\r\n                for (var i = 0; i < newData.length; i++) {\r\n                    this._data.push(newData[i]);\r\n                }\r\n            }\r\n        })();\r\n        return DefaultDataProvider;\r\n    }());\r\n    var getItemSimply = function (rawData, startIndex, dimsDef, idx) {\r\n        return rawData[idx];\r\n    };\r\n    var rawSourceItemGetterMap = (_a = {},\r\n        _a[SOURCE_FORMAT_ARRAY_ROWS + '_' + SERIES_LAYOUT_BY_COLUMN] = function (rawData, startIndex, dimsDef, idx) {\r\n            return rawData[idx + startIndex];\r\n        },\r\n        _a[SOURCE_FORMAT_ARRAY_ROWS + '_' + SERIES_LAYOUT_BY_ROW] = function (rawData, startIndex, dimsDef, idx) {\r\n            idx += startIndex;\r\n            var item = [];\r\n            var data = rawData;\r\n            for (var i = 0; i < data.length; i++) {\r\n                var row = data[i];\r\n                item.push(row ? row[idx] : null);\r\n            }\r\n            return item;\r\n        },\r\n        _a[SOURCE_FORMAT_OBJECT_ROWS] = getItemSimply,\r\n        _a[SOURCE_FORMAT_KEYED_COLUMNS] = function (rawData, startIndex, dimsDef, idx) {\r\n            var item = [];\r\n            for (var i = 0; i < dimsDef.length; i++) {\r\n                var dimName = dimsDef[i].name;\r\n                if (__DEV__) {\r\n                    if (dimName == null) {\r\n                        throw new Error();\r\n                    }\r\n                }\r\n                var col = rawData[dimName];\r\n                item.push(col ? col[idx] : null);\r\n            }\r\n            return item;\r\n        },\r\n        _a[SOURCE_FORMAT_ORIGINAL] = getItemSimply,\r\n        _a);\r\n    function getRawSourceItemGetter(sourceFormat, seriesLayoutBy) {\r\n        var method = rawSourceItemGetterMap[getMethodMapKey(sourceFormat, seriesLayoutBy)];\r\n        if (__DEV__) {\r\n            assert(method, 'Do not suppport get item on \"' + sourceFormat + '\", \"' + seriesLayoutBy + '\".');\r\n        }\r\n        return method;\r\n    }\r\n    var countSimply = function (rawData, startIndex, dimsDef) {\r\n        return rawData.length;\r\n    };\r\n    var rawSourceDataCounterMap = (_b = {},\r\n        _b[SOURCE_FORMAT_ARRAY_ROWS + '_' + SERIES_LAYOUT_BY_COLUMN] = function (rawData, startIndex, dimsDef) {\r\n            return Math.max(0, rawData.length - startIndex);\r\n        },\r\n        _b[SOURCE_FORMAT_ARRAY_ROWS + '_' + SERIES_LAYOUT_BY_ROW] = function (rawData, startIndex, dimsDef) {\r\n            var row = rawData[0];\r\n            return row ? Math.max(0, row.length - startIndex) : 0;\r\n        },\r\n        _b[SOURCE_FORMAT_OBJECT_ROWS] = countSimply,\r\n        _b[SOURCE_FORMAT_KEYED_COLUMNS] = function (rawData, startIndex, dimsDef) {\r\n            var dimName = dimsDef[0].name;\r\n            if (__DEV__) {\r\n                if (dimName == null) {\r\n                    throw new Error();\r\n                }\r\n            }\r\n            var col = rawData[dimName];\r\n            return col ? col.length : 0;\r\n        },\r\n        _b[SOURCE_FORMAT_ORIGINAL] = countSimply,\r\n        _b);\r\n    function getRawSourceDataCounter(sourceFormat, seriesLayoutBy) {\r\n        var method = rawSourceDataCounterMap[getMethodMapKey(sourceFormat, seriesLayoutBy)];\r\n        if (__DEV__) {\r\n            assert(method, 'Do not suppport count on \"' + sourceFormat + '\", \"' + seriesLayoutBy + '\".');\r\n        }\r\n        return method;\r\n    }\r\n    var getRawValueSimply = function (dataItem, dimIndex, dimName) {\r\n        return dimIndex != null ? dataItem[dimIndex] : dataItem;\r\n    };\r\n    var rawSourceValueGetterMap = (_c = {},\r\n        _c[SOURCE_FORMAT_ARRAY_ROWS] = getRawValueSimply,\r\n        _c[SOURCE_FORMAT_OBJECT_ROWS] = function (dataItem, dimIndex, dimName) {\r\n            return dimIndex != null ? dataItem[dimName] : dataItem;\r\n        },\r\n        _c[SOURCE_FORMAT_KEYED_COLUMNS] = getRawValueSimply,\r\n        _c[SOURCE_FORMAT_ORIGINAL] = function (dataItem, dimIndex, dimName) {\r\n            var value = getDataItemValue(dataItem);\r\n            return (dimIndex == null || !(value instanceof Array))\r\n                ? value\r\n                : value[dimIndex];\r\n        },\r\n        _c[SOURCE_FORMAT_TYPED_ARRAY] = getRawValueSimply,\r\n        _c);\r\n    function getRawSourceValueGetter(sourceFormat) {\r\n        var method = rawSourceValueGetterMap[sourceFormat];\r\n        if (__DEV__) {\r\n            assert(method, 'Do not suppport get value on \"' + sourceFormat + '\".');\r\n        }\r\n        return method;\r\n    }\r\n    function getMethodMapKey(sourceFormat, seriesLayoutBy) {\r\n        return sourceFormat === SOURCE_FORMAT_ARRAY_ROWS\r\n            ? sourceFormat + '_' + seriesLayoutBy\r\n            : sourceFormat;\r\n    }\r\n    function retrieveRawValue(data, dataIndex, dim) {\r\n        if (!data) {\r\n            return;\r\n        }\r\n        var dataItem = data.getRawDataItem(dataIndex);\r\n        if (dataItem == null) {\r\n            return;\r\n        }\r\n        var sourceFormat = data.getProvider().getSource().sourceFormat;\r\n        var dimName;\r\n        var dimIndex;\r\n        var dimInfo = data.getDimensionInfo(dim);\r\n        if (dimInfo) {\r\n            dimName = dimInfo.name;\r\n            dimIndex = dimInfo.index;\r\n        }\r\n        return getRawSourceValueGetter(sourceFormat)(dataItem, dimIndex, dimName);\r\n    }\n\n    var DIMENSION_LABEL_REG = /\\{@(.+?)\\}/g;\r\n    var DataFormatMixin = (function () {\r\n        function DataFormatMixin() {\r\n        }\r\n        DataFormatMixin.prototype.getDataParams = function (dataIndex, dataType) {\r\n            var data = this.getData(dataType);\r\n            var rawValue = this.getRawValue(dataIndex, dataType);\r\n            var rawDataIndex = data.getRawIndex(dataIndex);\r\n            var name = data.getName(dataIndex);\r\n            var itemOpt = data.getRawDataItem(dataIndex);\r\n            var style = data.getItemVisual(dataIndex, 'style');\r\n            var color = style && style[data.getItemVisual(dataIndex, 'drawType') || 'fill'];\r\n            var borderColor = style && style.stroke;\r\n            var mainType = this.mainType;\r\n            var isSeries = mainType === 'series';\r\n            var userOutput = data.userOutput;\r\n            return {\r\n                componentType: mainType,\r\n                componentSubType: this.subType,\r\n                componentIndex: this.componentIndex,\r\n                seriesType: isSeries ? this.subType : null,\r\n                seriesIndex: this.seriesIndex,\r\n                seriesId: isSeries ? this.id : null,\r\n                seriesName: isSeries ? this.name : null,\r\n                name: name,\r\n                dataIndex: rawDataIndex,\r\n                data: itemOpt,\r\n                dataType: dataType,\r\n                value: rawValue,\r\n                color: color,\r\n                borderColor: borderColor,\r\n                dimensionNames: userOutput ? userOutput.dimensionNames : null,\r\n                encode: userOutput ? userOutput.encode : null,\r\n                $vars: ['seriesName', 'name', 'value']\r\n            };\r\n        };\r\n        DataFormatMixin.prototype.getFormattedLabel = function (dataIndex, status, dataType, labelDimIndex, formatter, extendParams) {\r\n            status = status || 'normal';\r\n            var data = this.getData(dataType);\r\n            var params = this.getDataParams(dataIndex, dataType);\r\n            if (extendParams) {\r\n                extend(params, extendParams);\r\n            }\r\n            if (labelDimIndex != null && (params.value instanceof Array)) {\r\n                params.value = params.value[labelDimIndex];\r\n            }\r\n            if (!formatter) {\r\n                var itemModel = data.getItemModel(dataIndex);\r\n                formatter = itemModel.get(status === 'normal'\r\n                    ? ['label', 'formatter']\r\n                    : [status, 'label', 'formatter']);\r\n            }\r\n            if (typeof formatter === 'function') {\r\n                params.status = status;\r\n                params.dimensionIndex = labelDimIndex;\r\n                return formatter(params);\r\n            }\r\n            else if (typeof formatter === 'string') {\r\n                var str = formatTpl(formatter, params);\r\n                return str.replace(DIMENSION_LABEL_REG, function (origin, dim) {\r\n                    var len = dim.length;\r\n                    if (dim.charAt(0) === '[' && dim.charAt(len - 1) === ']') {\r\n                        dim = +dim.slice(1, len - 1);\r\n                    }\r\n                    return retrieveRawValue(data, dataIndex, dim);\r\n                });\r\n            }\r\n        };\r\n        DataFormatMixin.prototype.getRawValue = function (idx, dataType) {\r\n            return retrieveRawValue(this.getData(dataType), idx);\r\n        };\r\n        DataFormatMixin.prototype.formatTooltip = function (dataIndex, multipleSeries, dataType) {\r\n            return;\r\n        };\r\n        return DataFormatMixin;\r\n    }());\n\n    function createTask(define) {\r\n        return new Task(define);\r\n    }\r\n    var Task = (function () {\r\n        function Task(define) {\r\n            define = define || {};\r\n            this._reset = define.reset;\r\n            this._plan = define.plan;\r\n            this._count = define.count;\r\n            this._onDirty = define.onDirty;\r\n            this._dirty = true;\r\n        }\r\n        Task.prototype.perform = function (performArgs) {\r\n            var upTask = this._upstream;\r\n            var skip = performArgs && performArgs.skip;\r\n            if (this._dirty && upTask) {\r\n                var context = this.context;\r\n                context.data = context.outputData = upTask.context.outputData;\r\n            }\r\n            if (this.__pipeline) {\r\n                this.__pipeline.currentTask = this;\r\n            }\r\n            var planResult;\r\n            if (this._plan && !skip) {\r\n                planResult = this._plan(this.context);\r\n            }\r\n            var lastModBy = normalizeModBy(this._modBy);\r\n            var lastModDataCount = this._modDataCount || 0;\r\n            var modBy = normalizeModBy(performArgs && performArgs.modBy);\r\n            var modDataCount = performArgs && performArgs.modDataCount || 0;\r\n            if (lastModBy !== modBy || lastModDataCount !== modDataCount) {\r\n                planResult = 'reset';\r\n            }\r\n            function normalizeModBy(val) {\r\n                !(val >= 1) && (val = 1);\r\n                return val;\r\n            }\r\n            var forceFirstProgress;\r\n            if (this._dirty || planResult === 'reset') {\r\n                this._dirty = false;\r\n                forceFirstProgress = this._doReset(skip);\r\n            }\r\n            this._modBy = modBy;\r\n            this._modDataCount = modDataCount;\r\n            var step = performArgs && performArgs.step;\r\n            if (upTask) {\r\n                if (__DEV__) {\r\n                    assert(upTask._outputDueEnd != null);\r\n                }\r\n                this._dueEnd = upTask._outputDueEnd;\r\n            }\r\n            else {\r\n                if (__DEV__) {\r\n                    assert(!this._progress || this._count);\r\n                }\r\n                this._dueEnd = this._count ? this._count(this.context) : Infinity;\r\n            }\r\n            if (this._progress) {\r\n                var start = this._dueIndex;\r\n                var end = Math.min(step != null ? this._dueIndex + step : Infinity, this._dueEnd);\r\n                if (!skip && (forceFirstProgress || start < end)) {\r\n                    var progress = this._progress;\r\n                    if (isArray(progress)) {\r\n                        for (var i = 0; i < progress.length; i++) {\r\n                            this._doProgress(progress[i], start, end, modBy, modDataCount);\r\n                        }\r\n                    }\r\n                    else {\r\n                        this._doProgress(progress, start, end, modBy, modDataCount);\r\n                    }\r\n                }\r\n                this._dueIndex = end;\r\n                var outputDueEnd = this._settedOutputEnd != null\r\n                    ? this._settedOutputEnd : end;\r\n                if (__DEV__) {\r\n                    assert(outputDueEnd >= this._outputDueEnd);\r\n                }\r\n                this._outputDueEnd = outputDueEnd;\r\n            }\r\n            else {\r\n                this._dueIndex = this._outputDueEnd = this._settedOutputEnd != null\r\n                    ? this._settedOutputEnd : this._dueEnd;\r\n            }\r\n            return this.unfinished();\r\n        };\r\n        Task.prototype.dirty = function () {\r\n            this._dirty = true;\r\n            this._onDirty && this._onDirty(this.context);\r\n        };\r\n        Task.prototype._doProgress = function (progress, start, end, modBy, modDataCount) {\r\n            iterator.reset(start, end, modBy, modDataCount);\r\n            this._callingProgress = progress;\r\n            this._callingProgress({\r\n                start: start, end: end, count: end - start, next: iterator.next\r\n            }, this.context);\r\n        };\r\n        Task.prototype._doReset = function (skip) {\r\n            this._dueIndex = this._outputDueEnd = this._dueEnd = 0;\r\n            this._settedOutputEnd = null;\r\n            var progress;\r\n            var forceFirstProgress;\r\n            if (!skip && this._reset) {\r\n                progress = this._reset(this.context);\r\n                if (progress && progress.progress) {\r\n                    forceFirstProgress = progress.forceFirstProgress;\r\n                    progress = progress.progress;\r\n                }\r\n                if (isArray(progress) && !progress.length) {\r\n                    progress = null;\r\n                }\r\n            }\r\n            this._progress = progress;\r\n            this._modBy = this._modDataCount = null;\r\n            var downstream = this._downstream;\r\n            downstream && downstream.dirty();\r\n            return forceFirstProgress;\r\n        };\r\n        Task.prototype.unfinished = function () {\r\n            return this._progress && this._dueIndex < this._dueEnd;\r\n        };\r\n        Task.prototype.pipe = function (downTask) {\r\n            if (__DEV__) {\r\n                assert(downTask && !downTask._disposed && downTask !== this);\r\n            }\r\n            if (this._downstream !== downTask || this._dirty) {\r\n                this._downstream = downTask;\r\n                downTask._upstream = this;\r\n                downTask.dirty();\r\n            }\r\n        };\r\n        Task.prototype.dispose = function () {\r\n            if (this._disposed) {\r\n                return;\r\n            }\r\n            this._upstream && (this._upstream._downstream = null);\r\n            this._downstream && (this._downstream._upstream = null);\r\n            this._dirty = false;\r\n            this._disposed = true;\r\n        };\r\n        Task.prototype.getUpstream = function () {\r\n            return this._upstream;\r\n        };\r\n        Task.prototype.getDownstream = function () {\r\n            return this._downstream;\r\n        };\r\n        Task.prototype.setOutputEnd = function (end) {\r\n            this._outputDueEnd = this._settedOutputEnd = end;\r\n        };\r\n        return Task;\r\n    }());\r\n    var iterator = (function () {\r\n        var end;\r\n        var current;\r\n        var modBy;\r\n        var modDataCount;\r\n        var winCount;\r\n        var it = {\r\n            reset: function (s, e, sStep, sCount) {\r\n                current = s;\r\n                end = e;\r\n                modBy = sStep;\r\n                modDataCount = sCount;\r\n                winCount = Math.ceil(modDataCount / modBy);\r\n                it.next = (modBy > 1 && modDataCount > 0) ? modNext : sequentialNext;\r\n            }\r\n        };\r\n        return it;\r\n        function sequentialNext() {\r\n            return current < end ? current++ : null;\r\n        }\r\n        function modNext() {\r\n            var dataIndex = (current % winCount) * modBy + Math.ceil(current / winCount);\r\n            var result = current >= end\r\n                ? null\r\n                : dataIndex < modDataCount\r\n                    ? dataIndex\r\n                    : current;\r\n            current++;\r\n            return result;\r\n        }\r\n    })();\n\n    function parseDataValue(value, opt) {\r\n        var dimType = opt && opt.type;\r\n        if (dimType === 'ordinal') {\r\n            var ordinalMeta = opt && opt.ordinalMeta;\r\n            return ordinalMeta\r\n                ? ordinalMeta.parseAndCollect(value)\r\n                : value;\r\n        }\r\n        if (dimType === 'time'\r\n            && typeof value !== 'number'\r\n            && value != null\r\n            && value !== '-') {\r\n            value = +parseDate(value);\r\n        }\r\n        return (value == null || value === '')\r\n            ? NaN\r\n            : +value;\r\n    }\r\n    var valueParserMap = createHashMap({\r\n        'number': function (val) {\r\n            return parseFloat(val);\r\n        },\r\n        'time': function (val) {\r\n            return +parseDate(val);\r\n        },\r\n        'trim': function (val) {\r\n            return typeof val === 'string' ? trim(val) : val;\r\n        }\r\n    });\n\n    var ExternalSource = (function () {\r\n        function ExternalSource() {\r\n        }\r\n        ExternalSource.prototype.getRawData = function () {\r\n            throw new Error('not supported');\r\n        };\r\n        ExternalSource.prototype.getRawDataItem = function (dataIndex) {\r\n            throw new Error('not supported');\r\n        };\r\n        ExternalSource.prototype.cloneRawData = function () {\r\n            return;\r\n        };\r\n        ExternalSource.prototype.getDimensionInfo = function (dim) {\r\n            return;\r\n        };\r\n        ExternalSource.prototype.cloneAllDimensionInfo = function () {\r\n            return;\r\n        };\r\n        ExternalSource.prototype.count = function () {\r\n            return;\r\n        };\r\n        ExternalSource.prototype.retrieveValue = function (dataIndex, dimIndex) {\r\n            return;\r\n        };\r\n        ExternalSource.prototype.retrieveValueFromItem = function (dataItem, dimIndex) {\r\n            return;\r\n        };\r\n        ExternalSource.prototype.convertValue = function (rawVal, dimInfo) {\r\n            return parseDataValue(rawVal, dimInfo);\r\n        };\r\n        return ExternalSource;\r\n    }());\r\n    function createExternalSource(internalSource, externalTransform) {\r\n        var extSource = new ExternalSource();\r\n        var data = internalSource.data;\r\n        var sourceFormat = extSource.sourceFormat = internalSource.sourceFormat;\r\n        var sourceHeaderCount = internalSource.startIndex;\r\n        var dimensions = [];\r\n        var dimsByName = {};\r\n        var dimsDef = internalSource.dimensionsDefine;\r\n        if (dimsDef) {\r\n            each(dimsDef, function (dimDef, idx) {\r\n                var name = dimDef.name;\r\n                var dimDefExt = {\r\n                    index: idx,\r\n                    name: name,\r\n                    displayName: dimDef.displayName\r\n                };\r\n                dimensions.push(dimDefExt);\r\n                if (name != null) {\r\n                    var errMsg = '';\r\n                    if (hasOwn(dimsByName, name)) {\r\n                        if (__DEV__) {\r\n                            errMsg = 'dimension name \"' + name + '\" duplicated.';\r\n                        }\r\n                        throwError(errMsg);\r\n                    }\r\n                    dimsByName[name] = dimDefExt;\r\n                }\r\n            });\r\n        }\r\n        else {\r\n            for (var i = 0; i < internalSource.dimensionsDetectedCount || 0; i++) {\r\n                dimensions.push({ index: i });\r\n            }\r\n        }\r\n        var rawItemGetter = getRawSourceItemGetter(sourceFormat, SERIES_LAYOUT_BY_COLUMN);\r\n        if (externalTransform.__isBuiltIn) {\r\n            extSource.getRawDataItem = function (dataIndex) {\r\n                return rawItemGetter(data, sourceHeaderCount, dimensions, dataIndex);\r\n            };\r\n            extSource.getRawData = bind(getRawData, null, internalSource);\r\n        }\r\n        extSource.cloneRawData = bind(cloneRawData, null, internalSource);\r\n        var rawCounter = getRawSourceDataCounter(sourceFormat, SERIES_LAYOUT_BY_COLUMN);\r\n        extSource.count = bind(rawCounter, null, data, sourceHeaderCount, dimensions);\r\n        var rawValueGetter = getRawSourceValueGetter(sourceFormat);\r\n        extSource.retrieveValue = function (dataIndex, dimIndex) {\r\n            var rawItem = rawItemGetter(data, sourceHeaderCount, dimensions, dataIndex);\r\n            return retrieveValueFromItem(rawItem, dimIndex);\r\n        };\r\n        var retrieveValueFromItem = extSource.retrieveValueFromItem = function (dataItem, dimIndex) {\r\n            if (dataItem == null) {\r\n                return;\r\n            }\r\n            var dimDef = dimensions[dimIndex];\r\n            if (dimDef) {\r\n                return rawValueGetter(dataItem, dimIndex, dimDef.name);\r\n            }\r\n        };\r\n        extSource.getDimensionInfo = bind(getDimensionInfo, null, dimensions, dimsByName);\r\n        extSource.cloneAllDimensionInfo = bind(cloneAllDimensionInfo, null, dimensions);\r\n        return extSource;\r\n    }\r\n    function getRawData(upstream) {\r\n        var sourceFormat = upstream.sourceFormat;\r\n        var data = upstream.data;\r\n        if (sourceFormat === SOURCE_FORMAT_ARRAY_ROWS\r\n            || sourceFormat === SOURCE_FORMAT_OBJECT_ROWS\r\n            || !data\r\n            || (isArray(data) && !data.length)) {\r\n            return upstream.data;\r\n        }\r\n        var errMsg = '';\r\n        if (__DEV__) {\r\n            errMsg = '`getRawData` is not supported in source format ' + sourceFormat;\r\n        }\r\n        throwError(errMsg);\r\n    }\r\n    function cloneRawData(upstream) {\r\n        var sourceFormat = upstream.sourceFormat;\r\n        var data = upstream.data;\r\n        if (!data) {\r\n            return data;\r\n        }\r\n        else if (isArray(data) && !data.length) {\r\n            return [];\r\n        }\r\n        else if (sourceFormat === SOURCE_FORMAT_ARRAY_ROWS) {\r\n            var result = [];\r\n            for (var i = 0, len = data.length; i < len; i++) {\r\n                result.push(data[i].slice());\r\n            }\r\n            return result;\r\n        }\r\n        else if (sourceFormat === SOURCE_FORMAT_OBJECT_ROWS) {\r\n            var result = [];\r\n            for (var i = 0, len = data.length; i < len; i++) {\r\n                result.push(extend({}, data[i]));\r\n            }\r\n            return result;\r\n        }\r\n    }\r\n    function getDimensionInfo(dimensions, dimsByName, dim) {\r\n        if (dim == null) {\r\n            return;\r\n        }\r\n        if (typeof dim === 'number'\r\n            || (!isNaN(dim) && !hasOwn(dimsByName, dim))) {\r\n            return dimensions[dim];\r\n        }\r\n        else if (hasOwn(dimsByName, dim)) {\r\n            return dimsByName[dim];\r\n        }\r\n    }\r\n    function cloneAllDimensionInfo(dimensions) {\r\n        return clone(dimensions);\r\n    }\r\n    var externalTransformMap = createHashMap();\r\n    function registerExternalTransform(externalTransform) {\r\n        externalTransform = clone(externalTransform);\r\n        var type = externalTransform.type;\r\n        var errMsg = '';\r\n        if (!type) {\r\n            if (__DEV__) {\r\n                errMsg = 'Must have a `type` when `registerTransform`.';\r\n            }\r\n            throwError(errMsg);\r\n        }\r\n        var typeParsed = type.split(':');\r\n        if (typeParsed.length !== 2) {\r\n            if (__DEV__) {\r\n                errMsg = 'Name must include namespace like \"ns:regression\".';\r\n            }\r\n            throwError(errMsg);\r\n        }\r\n        var isBuiltIn = false;\r\n        if (typeParsed[0] === 'echarts') {\r\n            type = typeParsed[1];\r\n            isBuiltIn = true;\r\n        }\r\n        externalTransform.__isBuiltIn = isBuiltIn;\r\n        externalTransformMap.set(type, externalTransform);\r\n    }\r\n    function applyDataTransform(rawTransOption, sourceList, infoForPrint) {\r\n        var pipedTransOption = normalizeToArray(rawTransOption);\r\n        var pipeLen = pipedTransOption.length;\r\n        var errMsg = '';\r\n        if (!pipeLen) {\r\n            if (__DEV__) {\r\n                errMsg = 'If `transform` declared, it should at least contain one transform.';\r\n            }\r\n            throwError(errMsg);\r\n        }\r\n        for (var i = 0, len = pipeLen; i < len; i++) {\r\n            var transOption = pipedTransOption[i];\r\n            sourceList = applySingleDataTransform(transOption, sourceList, infoForPrint, pipeLen === 1 ? null : i);\r\n            if (i !== len - 1) {\r\n                sourceList.length = Math.max(sourceList.length, 1);\r\n            }\r\n        }\r\n        return sourceList;\r\n    }\r\n    function applySingleDataTransform(transOption, upSourceList, infoForPrint, pipeIndex) {\r\n        var errMsg = '';\r\n        if (!upSourceList.length) {\r\n            if (__DEV__) {\r\n                errMsg = 'Must have at least one upstream dataset.';\r\n            }\r\n            throwError(errMsg);\r\n        }\r\n        if (!isObject(transOption)) {\r\n            if (__DEV__) {\r\n                errMsg = 'transform declaration must be an object rather than ' + typeof transOption + '.';\r\n            }\r\n            throwError(errMsg);\r\n        }\r\n        var transType = transOption.type;\r\n        var externalTransform = externalTransformMap.get(transType);\r\n        if (!externalTransform) {\r\n            if (__DEV__) {\r\n                errMsg = 'Can not find transform on type \"' + transType + '\".';\r\n            }\r\n            throwError(errMsg);\r\n        }\r\n        var extUpSourceList = map(upSourceList, function (upSource) { return createExternalSource(upSource, externalTransform); });\r\n        var resultList = normalizeToArray(externalTransform.transform({\r\n            upstream: extUpSourceList[0],\r\n            upstreamList: extUpSourceList,\r\n            config: clone(transOption.config)\r\n        }));\r\n        if (__DEV__) {\r\n            if (transOption.print) {\r\n                var printStrArr = map(resultList, function (extSource) {\r\n                    var pipeIndexStr = pipeIndex != null ? ' === pipe index: ' + pipeIndex : '';\r\n                    return [\r\n                        '=== dataset index: ' + infoForPrint.datasetIndex + pipeIndexStr + ' ===',\r\n                        '- transform result data:',\r\n                        makePrintable(extSource.data),\r\n                        '- transform result dimensions:',\r\n                        makePrintable(extSource.dimensions)\r\n                    ].join('\\n');\r\n                }).join('\\n');\r\n                consoleLog(printStrArr);\r\n            }\r\n        }\r\n        return map(resultList, function (result) {\r\n            var errMsg = '';\r\n            if (!isObject(result)) {\r\n                if (__DEV__) {\r\n                    errMsg = 'A transform should not return some empty results.';\r\n                }\r\n                throwError(errMsg);\r\n            }\r\n            var resultData = result.data;\r\n            if (resultData != null) {\r\n                if (!isObject(resultData) && !isArrayLike(resultData)) {\r\n                    if (__DEV__) {\r\n                        errMsg = 'Result data should be object or array in data transform.';\r\n                    }\r\n                    throwError(errMsg);\r\n                }\r\n            }\r\n            else {\r\n                resultData = upSourceList[0].data;\r\n            }\r\n            var resultMetaRawOption = inheritSourceMetaRawOption(upSourceList[0], {\r\n                seriesLayoutBy: SERIES_LAYOUT_BY_COLUMN,\r\n                sourceHeader: 0,\r\n                dimensions: result.dimensions\r\n            });\r\n            return createSource(resultData, resultMetaRawOption, null, null);\r\n        });\r\n    }\n\n    var SourceManager = (function () {\r\n        function SourceManager(sourceHost) {\r\n            this._sourceList = [];\r\n            this._upstreamSignList = [];\r\n            this._versionSignBase = 0;\r\n            this._sourceHost = sourceHost;\r\n        }\r\n        SourceManager.prototype.dirty = function () {\r\n            this._setLocalSource([], []);\r\n        };\r\n        SourceManager.prototype._setLocalSource = function (sourceList, upstreamSignList) {\r\n            this._sourceList = sourceList;\r\n            this._upstreamSignList = upstreamSignList;\r\n            this._versionSignBase++;\r\n            if (this._versionSignBase > 9e10) {\r\n                this._versionSignBase = 0;\r\n            }\r\n        };\r\n        SourceManager.prototype._getVersionSign = function () {\r\n            return this._sourceHost.uid + '_' + this._versionSignBase;\r\n        };\r\n        SourceManager.prototype.prepareSource = function () {\r\n            if (this._isDirty()) {\r\n                this._createSource();\r\n            }\r\n        };\r\n        SourceManager.prototype._createSource = function () {\r\n            this._setLocalSource([], []);\r\n            var sourceHost = this._sourceHost;\r\n            var upSourceMgrList = this._getUpstreamSourceManagers();\r\n            var hasUpstream = !!upSourceMgrList.length;\r\n            var resultSourceList;\r\n            var upstreamSignList;\r\n            if (isSeries(sourceHost)) {\r\n                var seriesModel = sourceHost;\r\n                var data = void 0;\r\n                var sourceFormat = void 0;\r\n                var upSource = void 0;\r\n                if (hasUpstream) {\r\n                    var upSourceMgr = upSourceMgrList[0];\r\n                    upSourceMgr.prepareSource();\r\n                    upSource = upSourceMgr.getSource();\r\n                    data = upSource.data;\r\n                    sourceFormat = upSource.sourceFormat;\r\n                    upstreamSignList = [upSourceMgr._getVersionSign()];\r\n                }\r\n                else {\r\n                    data = seriesModel.get('data', true);\r\n                    sourceFormat = isTypedArray(data)\r\n                        ? SOURCE_FORMAT_TYPED_ARRAY : SOURCE_FORMAT_ORIGINAL;\r\n                    upstreamSignList = [];\r\n                }\r\n                var thisMetaRawOption = inheritSourceMetaRawOption(upSource, this._getSourceMetaRawOption());\r\n                resultSourceList = [createSource(data, thisMetaRawOption, sourceFormat, seriesModel.get('encode', true))];\r\n            }\r\n            else {\r\n                var datasetModel = sourceHost;\r\n                if (hasUpstream) {\r\n                    var result = this._applyTransform(upSourceMgrList);\r\n                    resultSourceList = result.sourceList;\r\n                    upstreamSignList = result.upstreamSignList;\r\n                }\r\n                else {\r\n                    var sourceData = datasetModel.get('source', true);\r\n                    resultSourceList = [createSource(sourceData, this._getSourceMetaRawOption(), null, null)];\r\n                    upstreamSignList = [];\r\n                }\r\n            }\r\n            if (__DEV__) {\r\n                assert(resultSourceList && upstreamSignList);\r\n            }\r\n            this._setLocalSource(resultSourceList, upstreamSignList);\r\n        };\r\n        SourceManager.prototype._applyTransform = function (upMgrList) {\r\n            var datasetModel = this._sourceHost;\r\n            var transformOption = datasetModel.get('transform', true);\r\n            var fromTransformResult = datasetModel.get('fromTransformResult', true);\r\n            if (__DEV__) {\r\n                assert(fromTransformResult != null || transformOption != null);\r\n            }\r\n            if (fromTransformResult != null) {\r\n                var errMsg = '';\r\n                if (upMgrList.length !== 1) {\r\n                    if (__DEV__) {\r\n                        errMsg = 'When using `fromTransformResult`, there should be only one upstream dataset';\r\n                    }\r\n                    doThrow(errMsg);\r\n                }\r\n            }\r\n            var sourceList;\r\n            var upSourceList = [];\r\n            var upstreamSignList = [];\r\n            each(upMgrList, function (upMgr) {\r\n                upMgr.prepareSource();\r\n                var upSource = upMgr.getSource(fromTransformResult || 0);\r\n                var errMsg = '';\r\n                if (fromTransformResult != null && !upSource) {\r\n                    if (__DEV__) {\r\n                        errMsg = 'Can not retrieve result by `fromTransformResult`: ' + fromTransformResult;\r\n                    }\r\n                    doThrow(errMsg);\r\n                }\r\n                upSourceList.push(upSource);\r\n                upstreamSignList.push(upMgr._getVersionSign());\r\n            });\r\n            if (transformOption) {\r\n                sourceList = applyDataTransform(transformOption, upSourceList, { datasetIndex: datasetModel.componentIndex });\r\n            }\r\n            else if (fromTransformResult != null) {\r\n                sourceList = [cloneSourceShallow(upSourceList[0])];\r\n            }\r\n            return { sourceList: sourceList, upstreamSignList: upstreamSignList };\r\n        };\r\n        SourceManager.prototype._isDirty = function () {\r\n            var sourceList = this._sourceList;\r\n            if (!sourceList.length) {\r\n                return true;\r\n            }\r\n            var upSourceMgrList = this._getUpstreamSourceManagers();\r\n            for (var i = 0; i < upSourceMgrList.length; i++) {\r\n                var upSrcMgr = upSourceMgrList[i];\r\n                if (upSrcMgr._isDirty()\r\n                    || this._upstreamSignList[i] !== upSrcMgr._getVersionSign()) {\r\n                    return true;\r\n                }\r\n            }\r\n        };\r\n        SourceManager.prototype.getSource = function (sourceIndex) {\r\n            return this._sourceList[sourceIndex || 0];\r\n        };\r\n        SourceManager.prototype._getUpstreamSourceManagers = function () {\r\n            var sourceHost = this._sourceHost;\r\n            if (isSeries(sourceHost)) {\r\n                var datasetModel = querySeriesUpstreamDatasetModel(sourceHost);\r\n                return !datasetModel ? [] : [datasetModel.getSourceManager()];\r\n            }\r\n            else {\r\n                return map(queryDatasetUpstreamDatasetModels(sourceHost), function (datasetModel) { return datasetModel.getSourceManager(); });\r\n            }\r\n        };\r\n        SourceManager.prototype._getSourceMetaRawOption = function () {\r\n            var sourceHost = this._sourceHost;\r\n            var seriesLayoutBy;\r\n            var sourceHeader;\r\n            var dimensions;\r\n            if (isSeries(sourceHost)) {\r\n                seriesLayoutBy = sourceHost.get('seriesLayoutBy', true);\r\n                sourceHeader = sourceHost.get('sourceHeader', true);\r\n                dimensions = sourceHost.get('dimensions', true);\r\n            }\r\n            else if (!this._getUpstreamSourceManagers().length) {\r\n                var model = sourceHost;\r\n                seriesLayoutBy = model.get('seriesLayoutBy', true);\r\n                sourceHeader = model.get('sourceHeader', true);\r\n                dimensions = model.get('dimensions', true);\r\n            }\r\n            return { seriesLayoutBy: seriesLayoutBy, sourceHeader: sourceHeader, dimensions: dimensions };\r\n        };\r\n        return SourceManager;\r\n    }());\r\n    function disableTransformOptionMerge(datasetModel) {\r\n        var transformOption = datasetModel.option.transform;\r\n        transformOption && setAsPrimitive(datasetModel.option.transform);\r\n    }\r\n    function isSeries(sourceHost) {\r\n        return sourceHost.mainType === 'series';\r\n    }\r\n    function doThrow(errMsg) {\r\n        throw new Error(errMsg);\r\n    }\n\n    function createTooltipMarkup(type, option) {\r\n        option.type = type;\r\n        return option;\r\n    }\r\n    function retrieveVisualColorForTooltipMarker(series, dataIndex) {\r\n        var style = series.getData().getItemVisual(dataIndex, 'style');\r\n        var color = style[series.visualDrawType];\r\n        return convertToColorString(color);\r\n    }\n\n    function defaultSeriesFormatTooltip(opt) {\r\n        var series = opt.series;\r\n        var dataIndex = opt.dataIndex;\r\n        var multipleSeries = opt.multipleSeries;\r\n        var data = series.getData();\r\n        var tooltipDims = data.mapDimensionsAll('defaultedTooltip');\r\n        var tooltipDimLen = tooltipDims.length;\r\n        var value = series.getRawValue(dataIndex);\r\n        var isValueArr = isArray(value);\r\n        var markerColor = retrieveVisualColorForTooltipMarker(series, dataIndex);\r\n        var inlineValue;\r\n        var inlineValueType;\r\n        var subBlocks;\r\n        var sortParam;\r\n        if (tooltipDimLen > 1 || (isValueArr && !tooltipDimLen)) {\r\n            var formatArrResult = formatTooltipArrayValue(value, series, dataIndex, tooltipDims, markerColor);\r\n            inlineValue = formatArrResult.inlineValues;\r\n            inlineValueType = formatArrResult.inlineValueTypes;\r\n            subBlocks = formatArrResult.blocks;\r\n            sortParam = formatArrResult.inlineValues[0];\r\n        }\r\n        else if (tooltipDimLen) {\r\n            var dimInfo = data.getDimensionInfo(tooltipDims[0]);\r\n            sortParam = inlineValue = retrieveRawValue(data, dataIndex, tooltipDims[0]);\r\n            inlineValueType = dimInfo.type;\r\n        }\r\n        else {\r\n            sortParam = inlineValue = isValueArr ? value[0] : value;\r\n        }\r\n        var seriesNameSpecified = isNameSpecified(series);\r\n        var seriesName = seriesNameSpecified && series.name || '';\r\n        var itemName = data.getName(dataIndex);\r\n        var inlineName = multipleSeries ? seriesName : itemName;\r\n        return createTooltipMarkup('section', {\r\n            header: seriesName,\r\n            noHeader: multipleSeries || !seriesNameSpecified,\r\n            sortParam: sortParam,\r\n            blocks: [\r\n                createTooltipMarkup('nameValue', {\r\n                    markerType: 'item',\r\n                    markerColor: markerColor,\r\n                    name: inlineName,\r\n                    noName: !trim(inlineName),\r\n                    value: inlineValue,\r\n                    valueType: inlineValueType\r\n                })\r\n            ].concat(subBlocks || [])\r\n        });\r\n    }\r\n    function formatTooltipArrayValue(value, series, dataIndex, tooltipDims, colorStr) {\r\n        var data = series.getData();\r\n        var isValueMultipleLine = reduce(value, function (isValueMultipleLine, val, idx) {\r\n            var dimItem = data.getDimensionInfo(idx);\r\n            return isValueMultipleLine = isValueMultipleLine\r\n                || (dimItem && dimItem.tooltip !== false && dimItem.displayName != null);\r\n        }, false);\r\n        var inlineValues = [];\r\n        var inlineValueTypes = [];\r\n        var blocks = [];\r\n        tooltipDims.length\r\n            ? each(tooltipDims, function (dim) {\r\n                setEachItem(retrieveRawValue(data, dataIndex, dim), dim);\r\n            })\r\n            : each(value, setEachItem);\r\n        function setEachItem(val, dim) {\r\n            var dimInfo = data.getDimensionInfo(dim);\r\n            if (!dimInfo || dimInfo.otherDims.tooltip === false) {\r\n                return;\r\n            }\r\n            if (isValueMultipleLine) {\r\n                blocks.push(createTooltipMarkup('nameValue', {\r\n                    markerType: 'subItem',\r\n                    markerColor: colorStr,\r\n                    name: dimInfo.displayName,\r\n                    value: val,\r\n                    valueType: dimInfo.type\r\n                }));\r\n            }\r\n            else {\r\n                inlineValues.push(val);\r\n                inlineValueTypes.push(dimInfo.type);\r\n            }\r\n        }\r\n        return { inlineValues: inlineValues, inlineValueTypes: inlineValueTypes, blocks: blocks };\r\n    }\n\n    var inner$1 = makeInner();\r\n    function getSelectionKey(data, dataIndex) {\r\n        return data.getName(dataIndex) || data.getId(dataIndex);\r\n    }\r\n    var SeriesModel = (function (_super) {\r\n        __extends(SeriesModel, _super);\r\n        function SeriesModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this._selectedDataIndicesMap = {};\r\n            return _this;\r\n        }\r\n        SeriesModel.prototype.init = function (option, parentModel, ecModel) {\r\n            this.seriesIndex = this.componentIndex;\r\n            this.dataTask = createTask({\r\n                count: dataTaskCount,\r\n                reset: dataTaskReset\r\n            });\r\n            this.dataTask.context = { model: this };\r\n            this.mergeDefaultAndTheme(option, ecModel);\r\n            var sourceManager = inner$1(this).sourceManager = new SourceManager(this);\r\n            sourceManager.prepareSource();\r\n            var data = this.getInitialData(option, ecModel);\r\n            wrapData(data, this);\r\n            this.dataTask.context.data = data;\r\n            if (__DEV__) {\r\n                assert(data, 'getInitialData returned invalid data.');\r\n            }\r\n            inner$1(this).dataBeforeProcessed = data;\r\n            autoSeriesName(this);\r\n            this._initSelectedMapFromData(data);\r\n        };\r\n        SeriesModel.prototype.mergeDefaultAndTheme = function (option, ecModel) {\r\n            var layoutMode = fetchLayoutMode(this);\r\n            var inputPositionParams = layoutMode\r\n                ? getLayoutParams(option) : {};\r\n            var themeSubType = this.subType;\r\n            if (ComponentModel.hasClass(themeSubType)) {\r\n                themeSubType += 'Series';\r\n            }\r\n            merge(option, ecModel.getTheme().get(this.subType));\r\n            merge(option, this.getDefaultOption());\r\n            defaultEmphasis(option, 'label', ['show']);\r\n            this.fillDataTextStyle(option.data);\r\n            if (layoutMode) {\r\n                mergeLayoutParam(option, inputPositionParams, layoutMode);\r\n            }\r\n        };\r\n        SeriesModel.prototype.mergeOption = function (newSeriesOption, ecModel) {\r\n            newSeriesOption = merge(this.option, newSeriesOption, true);\r\n            this.fillDataTextStyle(newSeriesOption.data);\r\n            var layoutMode = fetchLayoutMode(this);\r\n            if (layoutMode) {\r\n                mergeLayoutParam(this.option, newSeriesOption, layoutMode);\r\n            }\r\n            var sourceManager = inner$1(this).sourceManager;\r\n            sourceManager.dirty();\r\n            sourceManager.prepareSource();\r\n            var data = this.getInitialData(newSeriesOption, ecModel);\r\n            wrapData(data, this);\r\n            this.dataTask.dirty();\r\n            this.dataTask.context.data = data;\r\n            inner$1(this).dataBeforeProcessed = data;\r\n            autoSeriesName(this);\r\n            this._initSelectedMapFromData(data);\r\n        };\r\n        SeriesModel.prototype.fillDataTextStyle = function (data) {\r\n            if (data && !isTypedArray(data)) {\r\n                var props = ['show'];\r\n                for (var i = 0; i < data.length; i++) {\r\n                    if (data[i] && data[i].label) {\r\n                        defaultEmphasis(data[i], 'label', props);\r\n                    }\r\n                }\r\n            }\r\n        };\r\n        SeriesModel.prototype.getInitialData = function (option, ecModel) {\r\n            return;\r\n        };\r\n        SeriesModel.prototype.appendData = function (params) {\r\n            var data = this.getRawData();\r\n            data.appendData(params.data);\r\n        };\r\n        SeriesModel.prototype.getData = function (dataType) {\r\n            var task = getCurrentTask(this);\r\n            if (task) {\r\n                var data = task.context.data;\r\n                return (dataType == null ? data : data.getLinkedData(dataType));\r\n            }\r\n            else {\r\n                return inner$1(this).data;\r\n            }\r\n        };\r\n        SeriesModel.prototype.getAllData = function () {\r\n            var mainData = this.getData();\r\n            return (mainData && mainData.getLinkedDataAll)\r\n                ? mainData.getLinkedDataAll()\r\n                : [{ data: mainData }];\r\n        };\r\n        SeriesModel.prototype.setData = function (data) {\r\n            var task = getCurrentTask(this);\r\n            if (task) {\r\n                var context = task.context;\r\n                context.outputData = data;\r\n                if (task !== this.dataTask) {\r\n                    context.data = data;\r\n                }\r\n            }\r\n            inner$1(this).data = data;\r\n        };\r\n        SeriesModel.prototype.getSource = function () {\r\n            return inner$1(this).sourceManager.getSource();\r\n        };\r\n        SeriesModel.prototype.getRawData = function () {\r\n            return inner$1(this).dataBeforeProcessed;\r\n        };\r\n        SeriesModel.prototype.getBaseAxis = function () {\r\n            var coordSys = this.coordinateSystem;\r\n            return coordSys && coordSys.getBaseAxis && coordSys.getBaseAxis();\r\n        };\r\n        SeriesModel.prototype.formatTooltip = function (dataIndex, multipleSeries, dataType) {\r\n            return defaultSeriesFormatTooltip({\r\n                series: this,\r\n                dataIndex: dataIndex,\r\n                multipleSeries: multipleSeries\r\n            });\r\n        };\r\n        SeriesModel.prototype.isAnimationEnabled = function () {\r\n            if (env.node) {\r\n                return false;\r\n            }\r\n            var animationEnabled = this.getShallow('animation');\r\n            if (animationEnabled) {\r\n                if (this.getData().count() > this.getShallow('animationThreshold')) {\r\n                    animationEnabled = false;\r\n                }\r\n            }\r\n            return !!animationEnabled;\r\n        };\r\n        SeriesModel.prototype.restoreData = function () {\r\n            this.dataTask.dirty();\r\n        };\r\n        SeriesModel.prototype.getColorFromPalette = function (name, scope, requestColorNum) {\r\n            var ecModel = this.ecModel;\r\n            var color = PaletteMixin.prototype.getColorFromPalette.call(this, name, scope, requestColorNum);\r\n            if (!color) {\r\n                color = ecModel.getColorFromPalette(name, scope, requestColorNum);\r\n            }\r\n            return color;\r\n        };\r\n        SeriesModel.prototype.coordDimToDataDim = function (coordDim) {\r\n            return this.getRawData().mapDimensionsAll(coordDim);\r\n        };\r\n        SeriesModel.prototype.getProgressive = function () {\r\n            return this.get('progressive');\r\n        };\r\n        SeriesModel.prototype.getProgressiveThreshold = function () {\r\n            return this.get('progressiveThreshold');\r\n        };\r\n        SeriesModel.prototype.select = function (innerDataIndices, dataType) {\r\n            this._innerSelect(this.getData(dataType), innerDataIndices);\r\n        };\r\n        SeriesModel.prototype.unselect = function (innerDataIndices, dataType) {\r\n            var selectedMap = this.option.selectedMap;\r\n            if (!selectedMap) {\r\n                return;\r\n            }\r\n            var data = this.getData(dataType);\r\n            for (var i = 0; i < innerDataIndices.length; i++) {\r\n                var dataIndex = innerDataIndices[i];\r\n                var nameOrId = getSelectionKey(data, dataIndex);\r\n                selectedMap[nameOrId] = false;\r\n                this._selectedDataIndicesMap[nameOrId] = -1;\r\n            }\r\n        };\r\n        SeriesModel.prototype.toggleSelect = function (innerDataIndices, dataType) {\r\n            var tmpArr = [];\r\n            for (var i = 0; i < innerDataIndices.length; i++) {\r\n                tmpArr[0] = innerDataIndices[i];\r\n                this.isSelected(innerDataIndices[i], dataType)\r\n                    ? this.unselect(tmpArr, dataType)\r\n                    : this.select(tmpArr, dataType);\r\n            }\r\n        };\r\n        SeriesModel.prototype.getSelectedDataIndices = function () {\r\n            var selectedDataIndicesMap = this._selectedDataIndicesMap;\r\n            var nameOrIds = keys(selectedDataIndicesMap);\r\n            var dataIndices = [];\r\n            for (var i = 0; i < nameOrIds.length; i++) {\r\n                var dataIndex = selectedDataIndicesMap[nameOrIds[i]];\r\n                if (dataIndex >= 0) {\r\n                    dataIndices.push(dataIndex);\r\n                }\r\n            }\r\n            return dataIndices;\r\n        };\r\n        SeriesModel.prototype.isSelected = function (dataIndex, dataType) {\r\n            var selectedMap = this.option.selectedMap;\r\n            if (!selectedMap) {\r\n                return false;\r\n            }\r\n            var data = this.getData(dataType);\r\n            var nameOrId = getSelectionKey(data, dataIndex);\r\n            return selectedMap[nameOrId] || false;\r\n        };\r\n        SeriesModel.prototype._innerSelect = function (data, innerDataIndices) {\r\n            var _a, _b;\r\n            var selectedMode = this.option.selectedMode;\r\n            var len = innerDataIndices.length;\r\n            if (!selectedMode || !len) {\r\n                return;\r\n            }\r\n            if (selectedMode === 'multiple') {\r\n                var selectedMap = this.option.selectedMap || (this.option.selectedMap = {});\r\n                for (var i = 0; i < len; i++) {\r\n                    var dataIndex = innerDataIndices[i];\r\n                    var nameOrId = getSelectionKey(data, dataIndex);\r\n                    selectedMap[nameOrId] = true;\r\n                    this._selectedDataIndicesMap[nameOrId] = data.getRawIndex(dataIndex);\r\n                }\r\n            }\r\n            else if (selectedMode === 'single' || selectedMode === true) {\r\n                var lastDataIndex = innerDataIndices[len - 1];\r\n                var nameOrId = getSelectionKey(data, lastDataIndex);\r\n                this.option.selectedMap = (_a = {},\r\n                    _a[nameOrId] = true,\r\n                    _a);\r\n                this._selectedDataIndicesMap = (_b = {},\r\n                    _b[nameOrId] = data.getRawIndex(lastDataIndex),\r\n                    _b);\r\n            }\r\n        };\r\n        SeriesModel.prototype._initSelectedMapFromData = function (data) {\r\n            if (this.option.selectedMap) {\r\n                return;\r\n            }\r\n            var dataIndices = [];\r\n            if (data.hasItemOption) {\r\n                data.each(function (idx) {\r\n                    var rawItem = data.getRawDataItem(idx);\r\n                    if (typeof rawItem === 'object'\r\n                        && rawItem.selected) {\r\n                        dataIndices.push(idx);\r\n                    }\r\n                });\r\n            }\r\n            if (dataIndices.length > 0) {\r\n                this._innerSelect(data, dataIndices);\r\n            }\r\n        };\r\n        SeriesModel.registerClass = function (clz) {\r\n            return ComponentModel.registerClass(clz);\r\n        };\r\n        SeriesModel.protoInitialize = (function () {\r\n            var proto = SeriesModel.prototype;\r\n            proto.type = 'series.__base__';\r\n            proto.seriesIndex = 0;\r\n            proto.useColorPaletteOnData = false;\r\n            proto.ignoreStyleOnData = false;\r\n            proto.hasSymbolVisual = false;\r\n            proto.defaultSymbol = 'circle';\r\n            proto.visualStyleAccessPath = 'itemStyle';\r\n            proto.visualDrawType = 'fill';\r\n        })();\r\n        return SeriesModel;\r\n    }(ComponentModel));\r\n    mixin(SeriesModel, DataFormatMixin);\r\n    mixin(SeriesModel, PaletteMixin);\r\n    mountExtend(SeriesModel, ComponentModel);\r\n    function autoSeriesName(seriesModel) {\r\n        var name = seriesModel.name;\r\n        if (!isNameSpecified(seriesModel)) {\r\n            seriesModel.name = getSeriesAutoName(seriesModel) || name;\r\n        }\r\n    }\r\n    function getSeriesAutoName(seriesModel) {\r\n        var data = seriesModel.getRawData();\r\n        var dataDims = data.mapDimensionsAll('seriesName');\r\n        var nameArr = [];\r\n        each(dataDims, function (dataDim) {\r\n            var dimInfo = data.getDimensionInfo(dataDim);\r\n            dimInfo.displayName && nameArr.push(dimInfo.displayName);\r\n        });\r\n        return nameArr.join(' ');\r\n    }\r\n    function dataTaskCount(context) {\r\n        return context.model.getRawData().count();\r\n    }\r\n    function dataTaskReset(context) {\r\n        var seriesModel = context.model;\r\n        seriesModel.setData(seriesModel.getRawData().cloneShallow());\r\n        return dataTaskProgress;\r\n    }\r\n    function dataTaskProgress(param, context) {\r\n        if (context.outputData && param.end > context.outputData.count()) {\r\n            context.model.getRawData().cloneShallow(context.outputData);\r\n        }\r\n    }\r\n    function wrapData(data, seriesModel) {\r\n        each(__spreadArrays(data.CHANGABLE_METHODS, data.DOWNSAMPLE_METHODS), function (methodName) {\r\n            data.wrapMethod(methodName, curry(onDataChange, seriesModel));\r\n        });\r\n    }\r\n    function onDataChange(seriesModel, newList) {\r\n        var task = getCurrentTask(seriesModel);\r\n        if (task) {\r\n            task.setOutputEnd((newList || this).count());\r\n        }\r\n        return newList;\r\n    }\r\n    function getCurrentTask(seriesModel) {\r\n        var scheduler = (seriesModel.ecModel || {}).scheduler;\r\n        var pipeline = scheduler && scheduler.getPipeline(seriesModel.uid);\r\n        if (pipeline) {\r\n            var task = pipeline.currentTask;\r\n            if (task) {\r\n                var agentStubMap = task.agentStubMap;\r\n                if (agentStubMap) {\r\n                    task = agentStubMap.get(seriesModel.uid);\r\n                }\r\n            }\r\n            return task;\r\n        }\r\n    }\n\n    var ComponentView = (function () {\r\n        function ComponentView() {\r\n            this.group = new Group();\r\n            this.uid = getUID('viewComponent');\r\n        }\r\n        ComponentView.prototype.init = function (ecModel, api) { };\r\n        ComponentView.prototype.render = function (model, ecModel, api, payload) { };\r\n        ComponentView.prototype.dispose = function (ecModel, api) { };\r\n        ComponentView.prototype.updateView = function (model, ecModel, api, payload) {\r\n        };\r\n        ComponentView.prototype.updateLayout = function (model, ecModel, api, payload) {\r\n        };\r\n        ComponentView.prototype.updateVisual = function (model, ecModel, api, payload) {\r\n        };\r\n        ComponentView.prototype.blurSeries = function (seriesModels, ecModel) {\r\n        };\r\n        return ComponentView;\r\n    }());\r\n    enableClassExtend(ComponentView);\r\n    enableClassManagement(ComponentView, { registerWhenExtend: true });\n\n    function createRenderPlanner() {\r\n        var inner = makeInner();\r\n        return function (seriesModel) {\r\n            var fields = inner(seriesModel);\r\n            var pipelineContext = seriesModel.pipelineContext;\r\n            var originalLarge = !!fields.large;\r\n            var originalProgressive = !!fields.progressiveRender;\r\n            var large = fields.large = !!(pipelineContext && pipelineContext.large);\r\n            var progressive = fields.progressiveRender = !!(pipelineContext && pipelineContext.progressiveRender);\r\n            return (!!((originalLarge !== large) || (originalProgressive !== progressive)) && 'reset');\r\n        };\r\n    }\n\n    var inner$2 = makeInner();\r\n    var renderPlanner = createRenderPlanner();\r\n    var ChartView = (function () {\r\n        function ChartView() {\r\n            this.group = new Group();\r\n            this.uid = getUID('viewChart');\r\n            this.renderTask = createTask({\r\n                plan: renderTaskPlan,\r\n                reset: renderTaskReset\r\n            });\r\n            this.renderTask.context = { view: this };\r\n        }\r\n        ChartView.prototype.init = function (ecModel, api) { };\r\n        ChartView.prototype.render = function (seriesModel, ecModel, api, payload) { };\r\n        ChartView.prototype.highlight = function (seriesModel, ecModel, api, payload) {\r\n            toggleHighlight(seriesModel.getData(), payload, 'emphasis');\r\n        };\r\n        ChartView.prototype.downplay = function (seriesModel, ecModel, api, payload) {\r\n            toggleHighlight(seriesModel.getData(), payload, 'normal');\r\n        };\r\n        ChartView.prototype.remove = function (ecModel, api) {\r\n            this.group.removeAll();\r\n        };\r\n        ChartView.prototype.dispose = function (ecModel, api) { };\r\n        ChartView.prototype.updateView = function (seriesModel, ecModel, api, payload) {\r\n            this.render(seriesModel, ecModel, api, payload);\r\n        };\r\n        ChartView.prototype.updateLayout = function (seriesModel, ecModel, api, payload) {\r\n            this.render(seriesModel, ecModel, api, payload);\r\n        };\r\n        ChartView.prototype.updateVisual = function (seriesModel, ecModel, api, payload) {\r\n            this.render(seriesModel, ecModel, api, payload);\r\n        };\r\n        ChartView.markUpdateMethod = function (payload, methodName) {\r\n            inner$2(payload).updateMethod = methodName;\r\n        };\r\n        ChartView.protoInitialize = (function () {\r\n            var proto = ChartView.prototype;\r\n            proto.type = 'chart';\r\n        })();\r\n        return ChartView;\r\n    }());\r\n    function elSetState(el, state, highlightDigit) {\r\n        if (el) {\r\n            (state === 'emphasis' ? enterEmphasis : leaveEmphasis)(el, highlightDigit);\r\n        }\r\n    }\r\n    function toggleHighlight(data, payload, state) {\r\n        var dataIndex = queryDataIndex(data, payload);\r\n        var highlightDigit = (payload && payload.highlightKey != null)\r\n            ? getHighlightDigit(payload.highlightKey)\r\n            : null;\r\n        if (dataIndex != null) {\r\n            each(normalizeToArray(dataIndex), function (dataIdx) {\r\n                elSetState(data.getItemGraphicEl(dataIdx), state, highlightDigit);\r\n            });\r\n        }\r\n        else {\r\n            data.eachItemGraphicEl(function (el) {\r\n                elSetState(el, state, highlightDigit);\r\n            });\r\n        }\r\n    }\r\n    enableClassExtend(ChartView, ['dispose']);\r\n    enableClassManagement(ChartView, { registerWhenExtend: true });\r\n    function renderTaskPlan(context) {\r\n        return renderPlanner(context.model);\r\n    }\r\n    function renderTaskReset(context) {\r\n        var seriesModel = context.model;\r\n        var ecModel = context.ecModel;\r\n        var api = context.api;\r\n        var payload = context.payload;\r\n        var progressiveRender = seriesModel.pipelineContext.progressiveRender;\r\n        var view = context.view;\r\n        var updateMethod = payload && inner$2(payload).updateMethod;\r\n        var methodName = progressiveRender\r\n            ? 'incrementalPrepareRender'\r\n            : (updateMethod && view[updateMethod])\r\n                ? updateMethod\r\n                : 'render';\r\n        if (methodName !== 'render') {\r\n            view[methodName](seriesModel, ecModel, api, payload);\r\n        }\r\n        return progressMethodMap[methodName];\r\n    }\r\n    var progressMethodMap = {\r\n        incrementalPrepareRender: {\r\n            progress: function (params, context) {\r\n                context.view.incrementalRender(params, context.model, context.ecModel, context.api, context.payload);\r\n            }\r\n        },\r\n        render: {\r\n            forceFirstProgress: true,\r\n            progress: function (params, context) {\r\n                context.view.render(context.model, context.ecModel, context.api, context.payload);\r\n            }\r\n        }\r\n    };\n\n    function throttle(fn, delay, debounce) {\r\n        var currCall;\r\n        var lastCall = 0;\r\n        var lastExec = 0;\r\n        var timer = null;\r\n        var diff;\r\n        var scope;\r\n        var args;\r\n        var debounceNextCall;\r\n        delay = delay || 0;\r\n        function exec() {\r\n            lastExec = (new Date()).getTime();\r\n            timer = null;\r\n            fn.apply(scope, args || []);\r\n        }\r\n        var cb = function () {\r\n            var cbArgs = [];\r\n            for (var _i = 0; _i < arguments.length; _i++) {\r\n                cbArgs[_i] = arguments[_i];\r\n            }\r\n            currCall = (new Date()).getTime();\r\n            scope = this;\r\n            args = cbArgs;\r\n            var thisDelay = debounceNextCall || delay;\r\n            var thisDebounce = debounceNextCall || debounce;\r\n            debounceNextCall = null;\r\n            diff = currCall - (thisDebounce ? lastCall : lastExec) - thisDelay;\r\n            clearTimeout(timer);\r\n            if (thisDebounce) {\r\n                timer = setTimeout(exec, thisDelay);\r\n            }\r\n            else {\r\n                if (diff >= 0) {\r\n                    exec();\r\n                }\r\n                else {\r\n                    timer = setTimeout(exec, -diff);\r\n                }\r\n            }\r\n            lastCall = currCall;\r\n        };\r\n        cb.clear = function () {\r\n            if (timer) {\r\n                clearTimeout(timer);\r\n                timer = null;\r\n            }\r\n        };\r\n        cb.debounceNextCall = function (debounceDelay) {\r\n            debounceNextCall = debounceDelay;\r\n        };\r\n        return cb;\r\n    }\n\n    var inner$3 = makeInner();\r\n    var defaultStyleMappers = {\r\n        itemStyle: makeStyleMapper(ITEM_STYLE_KEY_MAP, true),\r\n        lineStyle: makeStyleMapper(LINE_STYLE_KEY_MAP, true)\r\n    };\r\n    var defaultColorKey = {\r\n        lineStyle: 'stroke',\r\n        itemStyle: 'fill'\r\n    };\r\n    function getStyleMapper(seriesModel, stylePath) {\r\n        var styleMapper = seriesModel.visualStyleMapper\r\n            || defaultStyleMappers[stylePath];\r\n        if (!styleMapper) {\r\n            console.warn(\"Unkown style type '\" + stylePath + \"'.\");\r\n            return defaultStyleMappers.itemStyle;\r\n        }\r\n        return styleMapper;\r\n    }\r\n    function getDefaultColorKey(seriesModel, stylePath) {\r\n        var colorKey = seriesModel.visualDrawType\r\n            || defaultColorKey[stylePath];\r\n        if (!colorKey) {\r\n            console.warn(\"Unkown style type '\" + stylePath + \"'.\");\r\n            return 'fill';\r\n        }\r\n        return colorKey;\r\n    }\r\n    var seriesStyleTask = {\r\n        createOnAllSeries: true,\r\n        performRawSeries: true,\r\n        reset: function (seriesModel, ecModel) {\r\n            var data = seriesModel.getData();\r\n            var stylePath = seriesModel.visualStyleAccessPath\r\n                || 'itemStyle';\r\n            var styleModel = seriesModel.getModel(stylePath);\r\n            var getStyle = getStyleMapper(seriesModel, stylePath);\r\n            var globalStyle = getStyle(styleModel);\r\n            var decalOption = styleModel.getShallow('decal');\r\n            if (decalOption) {\r\n                data.setVisual('decal', decalOption);\r\n                decalOption.dirty = true;\r\n            }\r\n            var colorKey = getDefaultColorKey(seriesModel, stylePath);\r\n            var color = globalStyle[colorKey];\r\n            var colorCallback = isFunction(color) ? color : null;\r\n            if (!globalStyle[colorKey] || colorCallback) {\r\n                globalStyle[colorKey] = seriesModel.getColorFromPalette(seriesModel.name, null, ecModel.getSeriesCount());\r\n                data.setVisual('colorFromPalette', true);\r\n            }\r\n            data.setVisual('style', globalStyle);\r\n            data.setVisual('drawType', colorKey);\r\n            if (!ecModel.isSeriesFiltered(seriesModel) && colorCallback) {\r\n                data.setVisual('colorFromPalette', false);\r\n                return {\r\n                    dataEach: function (data, idx) {\r\n                        var dataParams = seriesModel.getDataParams(idx);\r\n                        var itemStyle = extend({}, globalStyle);\r\n                        itemStyle[colorKey] = colorCallback(dataParams);\r\n                        data.setItemVisual(idx, 'style', itemStyle);\r\n                    }\r\n                };\r\n            }\r\n        }\r\n    };\r\n    var sharedModel = new Model();\r\n    var dataStyleTask = {\r\n        createOnAllSeries: true,\r\n        performRawSeries: true,\r\n        reset: function (seriesModel, ecModel) {\r\n            if (seriesModel.ignoreStyleOnData || ecModel.isSeriesFiltered(seriesModel)) {\r\n                return;\r\n            }\r\n            var data = seriesModel.getData();\r\n            var stylePath = seriesModel.visualStyleAccessPath\r\n                || 'itemStyle';\r\n            var getStyle = getStyleMapper(seriesModel, stylePath);\r\n            var colorKey = data.getVisual('drawType');\r\n            return {\r\n                dataEach: data.hasItemOption ? function (data, idx) {\r\n                    var rawItem = data.getRawDataItem(idx);\r\n                    if (rawItem && rawItem[stylePath]) {\r\n                        sharedModel.option = rawItem[stylePath];\r\n                        var style = getStyle(sharedModel);\r\n                        var existsStyle = data.ensureUniqueItemVisual(idx, 'style');\r\n                        extend(existsStyle, style);\r\n                        if (sharedModel.option.decal) {\r\n                            data.setItemVisual(idx, 'decal', sharedModel.option.decal);\r\n                            sharedModel.option.decal.dirty = true;\r\n                        }\r\n                        if (colorKey in style) {\r\n                            data.setItemVisual(idx, 'colorFromPalette', false);\r\n                        }\r\n                    }\r\n                } : null\r\n            };\r\n        }\r\n    };\r\n    var dataColorPaletteTask = {\r\n        performRawSeries: true,\r\n        overallReset: function (ecModel) {\r\n            var paletteScopeGroupByType = createHashMap();\r\n            ecModel.eachSeries(function (seriesModel) {\r\n                if (!seriesModel.useColorPaletteOnData) {\r\n                    return;\r\n                }\r\n                var colorScope = paletteScopeGroupByType.get(seriesModel.type);\r\n                if (!colorScope) {\r\n                    colorScope = {};\r\n                    paletteScopeGroupByType.set(seriesModel.type, colorScope);\r\n                }\r\n                inner$3(seriesModel).scope = colorScope;\r\n            });\r\n            ecModel.eachSeries(function (seriesModel) {\r\n                if (!seriesModel.useColorPaletteOnData || ecModel.isSeriesFiltered(seriesModel)) {\r\n                    return;\r\n                }\r\n                var dataAll = seriesModel.getRawData();\r\n                var idxMap = {};\r\n                var data = seriesModel.getData();\r\n                var colorScope = inner$3(seriesModel).scope;\r\n                var stylePath = seriesModel.visualStyleAccessPath\r\n                    || 'itemStyle';\r\n                var colorKey = getDefaultColorKey(seriesModel, stylePath);\r\n                data.each(function (idx) {\r\n                    var rawIdx = data.getRawIndex(idx);\r\n                    idxMap[rawIdx] = idx;\r\n                });\r\n                dataAll.each(function (rawIdx) {\r\n                    var idx = idxMap[rawIdx];\r\n                    var fromPalette = data.getItemVisual(idx, 'colorFromPalette');\r\n                    if (fromPalette) {\r\n                        var itemStyle = data.ensureUniqueItemVisual(idx, 'style');\r\n                        var name_1 = dataAll.getName(rawIdx) || (rawIdx + '');\r\n                        var dataCount = dataAll.count();\r\n                        itemStyle[colorKey] = seriesModel.getColorFromPalette(name_1, colorScope, dataCount);\r\n                    }\r\n                });\r\n            });\r\n        }\r\n    };\n\n    var PI$5 = Math.PI;\r\n    function defaultLoading(api, opts) {\r\n        opts = opts || {};\r\n        defaults(opts, {\r\n            text: 'loading',\r\n            textColor: '#000',\r\n            fontSize: '12px',\r\n            maskColor: 'rgba(255, 255, 255, 0.8)',\r\n            showSpinner: true,\r\n            color: '#5470c6',\r\n            spinnerRadius: 10,\r\n            lineWidth: 5,\r\n            zlevel: 0\r\n        });\r\n        var group = new Group();\r\n        var mask = new Rect({\r\n            style: {\r\n                fill: opts.maskColor\r\n            },\r\n            zlevel: opts.zlevel,\r\n            z: 10000\r\n        });\r\n        group.add(mask);\r\n        var font = opts.fontSize + ' sans-serif';\r\n        var labelRect = new Rect({\r\n            style: {\r\n                fill: 'none'\r\n            },\r\n            textContent: new ZRText({\r\n                style: {\r\n                    text: opts.text,\r\n                    fill: opts.textColor,\r\n                    font: font\r\n                }\r\n            }),\r\n            textConfig: {\r\n                position: 'right',\r\n                distance: 10\r\n            },\r\n            zlevel: opts.zlevel,\r\n            z: 10001\r\n        });\r\n        group.add(labelRect);\r\n        var arc;\r\n        if (opts.showSpinner) {\r\n            arc = new Arc({\r\n                shape: {\r\n                    startAngle: -PI$5 / 2,\r\n                    endAngle: -PI$5 / 2 + 0.1,\r\n                    r: opts.spinnerRadius\r\n                },\r\n                style: {\r\n                    stroke: opts.color,\r\n                    lineCap: 'round',\r\n                    lineWidth: opts.lineWidth\r\n                },\r\n                zlevel: opts.zlevel,\r\n                z: 10001\r\n            });\r\n            arc.animateShape(true)\r\n                .when(1000, {\r\n                endAngle: PI$5 * 3 / 2\r\n            })\r\n                .start('circularInOut');\r\n            arc.animateShape(true)\r\n                .when(1000, {\r\n                startAngle: PI$5 * 3 / 2\r\n            })\r\n                .delay(300)\r\n                .start('circularInOut');\r\n            group.add(arc);\r\n        }\r\n        group.resize = function () {\r\n            var textWidth = getWidth(opts.text, font);\r\n            var r = opts.showSpinner ? opts.spinnerRadius : 0;\r\n            var cx = (api.getWidth() - r * 2 - (opts.showSpinner && textWidth ? 10 : 0) - textWidth) / 2\r\n                - (opts.showSpinner ? 0 : textWidth / 2);\r\n            var cy = api.getHeight() / 2;\r\n            opts.showSpinner && arc.setShape({\r\n                cx: cx,\r\n                cy: cy\r\n            });\r\n            labelRect.setShape({\r\n                x: cx - r,\r\n                y: cy - r,\r\n                width: r * 2,\r\n                height: r * 2\r\n            });\r\n            mask.setShape({\r\n                x: 0,\r\n                y: 0,\r\n                width: api.getWidth(),\r\n                height: api.getHeight()\r\n            });\r\n        };\r\n        group.resize();\r\n        return group;\r\n    }\n\n    var Scheduler = (function () {\r\n        function Scheduler(ecInstance, api, dataProcessorHandlers, visualHandlers) {\r\n            this._stageTaskMap = createHashMap();\r\n            this.ecInstance = ecInstance;\r\n            this.api = api;\r\n            dataProcessorHandlers = this._dataProcessorHandlers = dataProcessorHandlers.slice();\r\n            visualHandlers = this._visualHandlers = visualHandlers.slice();\r\n            this._allHandlers = dataProcessorHandlers.concat(visualHandlers);\r\n        }\r\n        Scheduler.prototype.restoreData = function (ecModel, payload) {\r\n            ecModel.restoreData(payload);\r\n            this._stageTaskMap.each(function (taskRecord) {\r\n                var overallTask = taskRecord.overallTask;\r\n                overallTask && overallTask.dirty();\r\n            });\r\n        };\r\n        Scheduler.prototype.getPerformArgs = function (task, isBlock) {\r\n            if (!task.__pipeline) {\r\n                return;\r\n            }\r\n            var pipeline = this._pipelineMap.get(task.__pipeline.id);\r\n            var pCtx = pipeline.context;\r\n            var incremental = !isBlock\r\n                && pipeline.progressiveEnabled\r\n                && (!pCtx || pCtx.progressiveRender)\r\n                && task.__idxInPipeline > pipeline.blockIndex;\r\n            var step = incremental ? pipeline.step : null;\r\n            var modDataCount = pCtx && pCtx.modDataCount;\r\n            var modBy = modDataCount != null ? Math.ceil(modDataCount / step) : null;\r\n            return { step: step, modBy: modBy, modDataCount: modDataCount };\r\n        };\r\n        Scheduler.prototype.getPipeline = function (pipelineId) {\r\n            return this._pipelineMap.get(pipelineId);\r\n        };\r\n        Scheduler.prototype.updateStreamModes = function (seriesModel, view) {\r\n            var pipeline = this._pipelineMap.get(seriesModel.uid);\r\n            var data = seriesModel.getData();\r\n            var dataLen = data.count();\r\n            var progressiveRender = pipeline.progressiveEnabled\r\n                && view.incrementalPrepareRender\r\n                && dataLen >= pipeline.threshold;\r\n            var large = seriesModel.get('large') && dataLen >= seriesModel.get('largeThreshold');\r\n            var modDataCount = seriesModel.get('progressiveChunkMode') === 'mod' ? dataLen : null;\r\n            seriesModel.pipelineContext = pipeline.context = {\r\n                progressiveRender: progressiveRender,\r\n                modDataCount: modDataCount,\r\n                large: large\r\n            };\r\n        };\r\n        Scheduler.prototype.restorePipelines = function (ecModel) {\r\n            var scheduler = this;\r\n            var pipelineMap = scheduler._pipelineMap = createHashMap();\r\n            ecModel.eachSeries(function (seriesModel) {\r\n                var progressive = seriesModel.getProgressive();\r\n                var pipelineId = seriesModel.uid;\r\n                pipelineMap.set(pipelineId, {\r\n                    id: pipelineId,\r\n                    head: null,\r\n                    tail: null,\r\n                    threshold: seriesModel.getProgressiveThreshold(),\r\n                    progressiveEnabled: progressive\r\n                        && !(seriesModel.preventIncremental && seriesModel.preventIncremental()),\r\n                    blockIndex: -1,\r\n                    step: Math.round(progressive || 700),\r\n                    count: 0\r\n                });\r\n                scheduler._pipe(seriesModel, seriesModel.dataTask);\r\n            });\r\n        };\r\n        Scheduler.prototype.prepareStageTasks = function () {\r\n            var stageTaskMap = this._stageTaskMap;\r\n            var ecModel = this.api.getModel();\r\n            var api = this.api;\r\n            each(this._allHandlers, function (handler) {\r\n                var record = stageTaskMap.get(handler.uid) || stageTaskMap.set(handler.uid, {});\r\n                var errMsg = '';\r\n                if (__DEV__) {\r\n                    errMsg = '\"reset\" and \"overallReset\" must not be both specified.';\r\n                }\r\n                assert(!(handler.reset && handler.overallReset), errMsg);\r\n                handler.reset && this._createSeriesStageTask(handler, record, ecModel, api);\r\n                handler.overallReset && this._createOverallStageTask(handler, record, ecModel, api);\r\n            }, this);\r\n        };\r\n        Scheduler.prototype.prepareView = function (view, model, ecModel, api) {\r\n            var renderTask = view.renderTask;\r\n            var context = renderTask.context;\r\n            context.model = model;\r\n            context.ecModel = ecModel;\r\n            context.api = api;\r\n            renderTask.__block = !view.incrementalPrepareRender;\r\n            this._pipe(model, renderTask);\r\n        };\r\n        Scheduler.prototype.performDataProcessorTasks = function (ecModel, payload) {\r\n            this._performStageTasks(this._dataProcessorHandlers, ecModel, payload, { block: true });\r\n        };\r\n        Scheduler.prototype.performVisualTasks = function (ecModel, payload, opt) {\r\n            this._performStageTasks(this._visualHandlers, ecModel, payload, opt);\r\n        };\r\n        Scheduler.prototype._performStageTasks = function (stageHandlers, ecModel, payload, opt) {\r\n            opt = opt || {};\r\n            var unfinished = false;\r\n            var scheduler = this;\r\n            each(stageHandlers, function (stageHandler, idx) {\r\n                if (opt.visualType && opt.visualType !== stageHandler.visualType) {\r\n                    return;\r\n                }\r\n                var stageHandlerRecord = scheduler._stageTaskMap.get(stageHandler.uid);\r\n                var seriesTaskMap = stageHandlerRecord.seriesTaskMap;\r\n                var overallTask = stageHandlerRecord.overallTask;\r\n                if (overallTask) {\r\n                    var overallNeedDirty_1;\r\n                    var agentStubMap = overallTask.agentStubMap;\r\n                    agentStubMap.each(function (stub) {\r\n                        if (needSetDirty(opt, stub)) {\r\n                            stub.dirty();\r\n                            overallNeedDirty_1 = true;\r\n                        }\r\n                    });\r\n                    overallNeedDirty_1 && overallTask.dirty();\r\n                    scheduler.updatePayload(overallTask, payload);\r\n                    var performArgs_1 = scheduler.getPerformArgs(overallTask, opt.block);\r\n                    agentStubMap.each(function (stub) {\r\n                        stub.perform(performArgs_1);\r\n                    });\r\n                    if (overallTask.perform(performArgs_1)) {\r\n                        unfinished = true;\r\n                    }\r\n                }\r\n                else if (seriesTaskMap) {\r\n                    seriesTaskMap.each(function (task, pipelineId) {\r\n                        if (needSetDirty(opt, task)) {\r\n                            task.dirty();\r\n                        }\r\n                        var performArgs = scheduler.getPerformArgs(task, opt.block);\r\n                        performArgs.skip = !stageHandler.performRawSeries\r\n                            && ecModel.isSeriesFiltered(task.context.model);\r\n                        scheduler.updatePayload(task, payload);\r\n                        if (task.perform(performArgs)) {\r\n                            unfinished = true;\r\n                        }\r\n                    });\r\n                }\r\n            });\r\n            function needSetDirty(opt, task) {\r\n                return opt.setDirty && (!opt.dirtyMap || opt.dirtyMap.get(task.__pipeline.id));\r\n            }\r\n            this.unfinished = unfinished || this.unfinished;\r\n        };\r\n        Scheduler.prototype.performSeriesTasks = function (ecModel) {\r\n            var unfinished;\r\n            ecModel.eachSeries(function (seriesModel) {\r\n                unfinished = seriesModel.dataTask.perform() || unfinished;\r\n            });\r\n            this.unfinished = unfinished || this.unfinished;\r\n        };\r\n        Scheduler.prototype.plan = function () {\r\n            this._pipelineMap.each(function (pipeline) {\r\n                var task = pipeline.tail;\r\n                do {\r\n                    if (task.__block) {\r\n                        pipeline.blockIndex = task.__idxInPipeline;\r\n                        break;\r\n                    }\r\n                    task = task.getUpstream();\r\n                } while (task);\r\n            });\r\n        };\r\n        Scheduler.prototype.updatePayload = function (task, payload) {\r\n            payload !== 'remain' && (task.context.payload = payload);\r\n        };\r\n        Scheduler.prototype._createSeriesStageTask = function (stageHandler, stageHandlerRecord, ecModel, api) {\r\n            var scheduler = this;\r\n            var oldSeriesTaskMap = stageHandlerRecord.seriesTaskMap;\r\n            var newSeriesTaskMap = stageHandlerRecord.seriesTaskMap = createHashMap();\r\n            var seriesType = stageHandler.seriesType;\r\n            var getTargetSeries = stageHandler.getTargetSeries;\r\n            if (stageHandler.createOnAllSeries) {\r\n                ecModel.eachRawSeries(create);\r\n            }\r\n            else if (seriesType) {\r\n                ecModel.eachRawSeriesByType(seriesType, create);\r\n            }\r\n            else if (getTargetSeries) {\r\n                getTargetSeries(ecModel, api).each(create);\r\n            }\r\n            function create(seriesModel) {\r\n                var pipelineId = seriesModel.uid;\r\n                var task = newSeriesTaskMap.set(pipelineId, oldSeriesTaskMap && oldSeriesTaskMap.get(pipelineId)\r\n                    || createTask({\r\n                        plan: seriesTaskPlan,\r\n                        reset: seriesTaskReset,\r\n                        count: seriesTaskCount\r\n                    }));\r\n                task.context = {\r\n                    model: seriesModel,\r\n                    ecModel: ecModel,\r\n                    api: api,\r\n                    useClearVisual: stageHandler.isVisual && !stageHandler.isLayout,\r\n                    plan: stageHandler.plan,\r\n                    reset: stageHandler.reset,\r\n                    scheduler: scheduler\r\n                };\r\n                scheduler._pipe(seriesModel, task);\r\n            }\r\n        };\r\n        Scheduler.prototype._createOverallStageTask = function (stageHandler, stageHandlerRecord, ecModel, api) {\r\n            var scheduler = this;\r\n            var overallTask = stageHandlerRecord.overallTask = stageHandlerRecord.overallTask\r\n                || createTask({ reset: overallTaskReset });\r\n            overallTask.context = {\r\n                ecModel: ecModel,\r\n                api: api,\r\n                overallReset: stageHandler.overallReset,\r\n                scheduler: scheduler\r\n            };\r\n            var oldAgentStubMap = overallTask.agentStubMap;\r\n            var newAgentStubMap = overallTask.agentStubMap = createHashMap();\r\n            var seriesType = stageHandler.seriesType;\r\n            var getTargetSeries = stageHandler.getTargetSeries;\r\n            var overallProgress = true;\r\n            var shouldOverallTaskDirty = false;\r\n            var errMsg = '';\r\n            if (__DEV__) {\r\n                errMsg = '\"createOnAllSeries\" do not supported for \"overallReset\", '\r\n                    + 'becuase it will block all streams.';\r\n            }\r\n            assert(!stageHandler.createOnAllSeries, errMsg);\r\n            if (seriesType) {\r\n                ecModel.eachRawSeriesByType(seriesType, createStub);\r\n            }\r\n            else if (getTargetSeries) {\r\n                getTargetSeries(ecModel, api).each(createStub);\r\n            }\r\n            else {\r\n                overallProgress = false;\r\n                each(ecModel.getSeries(), createStub);\r\n            }\r\n            function createStub(seriesModel) {\r\n                var pipelineId = seriesModel.uid;\r\n                var stub = newAgentStubMap.set(pipelineId, oldAgentStubMap && oldAgentStubMap.get(pipelineId)\r\n                    || (shouldOverallTaskDirty = true,\r\n                        createTask({ reset: stubReset, onDirty: stubOnDirty })));\r\n                stub.context = {\r\n                    model: seriesModel,\r\n                    overallProgress: overallProgress\r\n                };\r\n                stub.agent = overallTask;\r\n                stub.__block = overallProgress;\r\n                scheduler._pipe(seriesModel, stub);\r\n            }\r\n            if (shouldOverallTaskDirty) {\r\n                overallTask.dirty();\r\n            }\r\n        };\r\n        Scheduler.prototype._pipe = function (seriesModel, task) {\r\n            var pipelineId = seriesModel.uid;\r\n            var pipeline = this._pipelineMap.get(pipelineId);\r\n            !pipeline.head && (pipeline.head = task);\r\n            pipeline.tail && pipeline.tail.pipe(task);\r\n            pipeline.tail = task;\r\n            task.__idxInPipeline = pipeline.count++;\r\n            task.__pipeline = pipeline;\r\n        };\r\n        Scheduler.wrapStageHandler = function (stageHandler, visualType) {\r\n            if (isFunction(stageHandler)) {\r\n                stageHandler = {\r\n                    overallReset: stageHandler,\r\n                    seriesType: detectSeriseType(stageHandler)\r\n                };\r\n            }\r\n            stageHandler.uid = getUID('stageHandler');\r\n            visualType && (stageHandler.visualType = visualType);\r\n            return stageHandler;\r\n        };\r\n        return Scheduler;\r\n    }());\r\n    function overallTaskReset(context) {\r\n        context.overallReset(context.ecModel, context.api, context.payload);\r\n    }\r\n    function stubReset(context) {\r\n        return context.overallProgress && stubProgress;\r\n    }\r\n    function stubProgress() {\r\n        this.agent.dirty();\r\n        this.getDownstream().dirty();\r\n    }\r\n    function stubOnDirty() {\r\n        this.agent && this.agent.dirty();\r\n    }\r\n    function seriesTaskPlan(context) {\r\n        return context.plan ? context.plan(context.model, context.ecModel, context.api, context.payload) : null;\r\n    }\r\n    function seriesTaskReset(context) {\r\n        if (context.useClearVisual) {\r\n            context.data.clearAllVisual();\r\n        }\r\n        var resetDefines = context.resetDefines = normalizeToArray(context.reset(context.model, context.ecModel, context.api, context.payload));\r\n        return resetDefines.length > 1\r\n            ? map(resetDefines, function (v, idx) {\r\n                return makeSeriesTaskProgress(idx);\r\n            })\r\n            : singleSeriesTaskProgress;\r\n    }\r\n    var singleSeriesTaskProgress = makeSeriesTaskProgress(0);\r\n    function makeSeriesTaskProgress(resetDefineIdx) {\r\n        return function (params, context) {\r\n            var data = context.data;\r\n            var resetDefine = context.resetDefines[resetDefineIdx];\r\n            if (resetDefine && resetDefine.dataEach) {\r\n                for (var i = params.start; i < params.end; i++) {\r\n                    resetDefine.dataEach(data, i);\r\n                }\r\n            }\r\n            else if (resetDefine && resetDefine.progress) {\r\n                resetDefine.progress(params, data);\r\n            }\r\n        };\r\n    }\r\n    function seriesTaskCount(context) {\r\n        return context.data.count();\r\n    }\r\n    function detectSeriseType(legacyFunc) {\r\n        seriesType = null;\r\n        try {\r\n            legacyFunc(ecModelMock, apiMock);\r\n        }\r\n        catch (e) {\r\n        }\r\n        return seriesType;\r\n    }\r\n    var ecModelMock = {};\r\n    var apiMock = {};\r\n    var seriesType;\r\n    mockMethods(ecModelMock, GlobalModel);\r\n    mockMethods(apiMock, ExtensionAPI);\r\n    ecModelMock.eachSeriesByType = ecModelMock.eachRawSeriesByType = function (type) {\r\n        seriesType = type;\r\n    };\r\n    ecModelMock.eachComponent = function (cond) {\r\n        if (cond.mainType === 'series' && cond.subType) {\r\n            seriesType = cond.subType;\r\n        }\r\n    };\r\n    function mockMethods(target, Clz) {\r\n        for (var name_1 in Clz.prototype) {\r\n            target[name_1] = noop;\r\n        }\r\n    }\n\n    var colorAll = [\r\n        '#37A2DA', '#32C5E9', '#67E0E3', '#9FE6B8', '#FFDB5C', '#ff9f7f',\r\n        '#fb7293', '#E062AE', '#E690D1', '#e7bcf3', '#9d96f5', '#8378EA', '#96BFFF'\r\n    ];\r\n    var lightTheme = {\r\n        color: colorAll,\r\n        colorLayer: [\r\n            ['#37A2DA', '#ffd85c', '#fd7b5f'],\r\n            ['#37A2DA', '#67E0E3', '#FFDB5C', '#ff9f7f', '#E062AE', '#9d96f5'],\r\n            ['#37A2DA', '#32C5E9', '#9FE6B8', '#FFDB5C', '#ff9f7f', '#fb7293', '#e7bcf3', '#8378EA', '#96BFFF'],\r\n            colorAll\r\n        ]\r\n    };\n\n    var contrastColor = '#B9B8CE';\r\n    var backgroundColor = '#100C2A';\r\n    var axisCommon = function () {\r\n        return {\r\n            axisLine: {\r\n                lineStyle: {\r\n                    color: contrastColor\r\n                }\r\n            },\r\n            splitLine: {\r\n                lineStyle: {\r\n                    color: '#484753'\r\n                }\r\n            },\r\n            splitArea: {\r\n                areaStyle: {\r\n                    color: ['rgba(255,255,255,0.02)', 'rgba(255,255,255,0.05)']\r\n                }\r\n            },\r\n            minorSplitLine: {\r\n                lineStyle: {\r\n                    color: '#20203B'\r\n                }\r\n            }\r\n        };\r\n    };\r\n    var colorPalette = [\r\n        '#4992ff',\r\n        '#7cffb2',\r\n        '#fddd60',\r\n        '#ff6e76',\r\n        '#58d9f9',\r\n        '#05c091',\r\n        '#ff8a45',\r\n        '#8d48e3',\r\n        '#dd79ff'\r\n    ];\r\n    var theme = {\r\n        darkMode: true,\r\n        color: colorPalette,\r\n        backgroundColor: backgroundColor,\r\n        axisPointer: {\r\n            lineStyle: {\r\n                color: '#817f91'\r\n            },\r\n            crossStyle: {\r\n                color: '#817f91'\r\n            },\r\n            label: {\r\n                color: '#fff'\r\n            }\r\n        },\r\n        legend: {\r\n            textStyle: {\r\n                color: contrastColor\r\n            }\r\n        },\r\n        textStyle: {\r\n            color: contrastColor\r\n        },\r\n        title: {\r\n            textStyle: {\r\n                color: '#EEF1FA'\r\n            },\r\n            subtextStyle: {\r\n                color: '#B9B8CE'\r\n            }\r\n        },\r\n        toolbox: {\r\n            iconStyle: {\r\n                borderColor: contrastColor\r\n            }\r\n        },\r\n        dataZoom: {\r\n            borderColor: '#71708A',\r\n            textStyle: {\r\n                color: contrastColor\r\n            },\r\n            brushStyle: {\r\n                color: 'rgba(135,163,206,0.3)'\r\n            },\r\n            handleStyle: {\r\n                color: '#353450',\r\n                borderColor: '#C5CBE3'\r\n            },\r\n            moveHandleStyle: {\r\n                color: '#B0B6C3',\r\n                opacity: 0.3\r\n            },\r\n            fillerColor: 'rgba(135,163,206,0.2)',\r\n            emphasis: {\r\n                handleStyle: {\r\n                    borderColor: '#91B7F2',\r\n                    color: '#4D587D'\r\n                },\r\n                moveHandleStyle: {\r\n                    color: '#636D9A',\r\n                    opacity: 0.7\r\n                }\r\n            },\r\n            dataBackground: {\r\n                lineStyle: {\r\n                    color: '#71708A',\r\n                    width: 1\r\n                },\r\n                areaStyle: {\r\n                    color: '#71708A'\r\n                }\r\n            },\r\n            selectedDataBackground: {\r\n                lineStyle: {\r\n                    color: '#87A3CE'\r\n                },\r\n                areaStyle: {\r\n                    color: '#87A3CE'\r\n                }\r\n            }\r\n        },\r\n        visualMap: {\r\n            textStyle: {\r\n                color: contrastColor\r\n            }\r\n        },\r\n        timeline: {\r\n            lineStyle: {\r\n                color: contrastColor\r\n            },\r\n            label: {\r\n                color: contrastColor\r\n            },\r\n            controlStyle: {\r\n                color: contrastColor,\r\n                borderColor: contrastColor\r\n            }\r\n        },\r\n        calendar: {\r\n            itemStyle: {\r\n                color: backgroundColor\r\n            },\r\n            dayLabel: {\r\n                color: contrastColor\r\n            },\r\n            monthLabel: {\r\n                color: contrastColor\r\n            },\r\n            yearLabel: {\r\n                color: contrastColor\r\n            }\r\n        },\r\n        timeAxis: axisCommon(),\r\n        logAxis: axisCommon(),\r\n        valueAxis: axisCommon(),\r\n        categoryAxis: axisCommon(),\r\n        line: {\r\n            symbol: 'circle'\r\n        },\r\n        graph: {\r\n            color: colorPalette\r\n        },\r\n        gauge: {\r\n            title: {\r\n                color: contrastColor\r\n            },\r\n            axisLine: {\r\n                lineStyle: {\r\n                    color: [[1, 'rgba(207,212,219,0.2)']]\r\n                }\r\n            },\r\n            axisLabel: {\r\n                color: contrastColor\r\n            },\r\n            detail: {\r\n                color: '#EEF1FA'\r\n            }\r\n        },\r\n        candlestick: {\r\n            itemStyle: {\r\n                color: '#FD1050',\r\n                color0: '#0CF49B',\r\n                borderColor: '#FD1050',\r\n                borderColor0: '#0CF49B'\r\n            }\r\n        }\r\n    };\r\n    theme.categoryAxis.splitLine.show = false;\n\n    var DatasetModel = (function (_super) {\r\n        __extends(DatasetModel, _super);\r\n        function DatasetModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = 'dataset';\r\n            return _this;\r\n        }\r\n        DatasetModel.prototype.init = function (option, parentModel, ecModel) {\r\n            _super.prototype.init.call(this, option, parentModel, ecModel);\r\n            this._sourceManager = new SourceManager(this);\r\n            disableTransformOptionMerge(this);\r\n        };\r\n        DatasetModel.prototype.mergeOption = function (newOption, ecModel) {\r\n            _super.prototype.mergeOption.call(this, newOption, ecModel);\r\n            disableTransformOptionMerge(this);\r\n        };\r\n        DatasetModel.prototype.optionUpdated = function () {\r\n            this._sourceManager.dirty();\r\n        };\r\n        DatasetModel.prototype.getSourceManager = function () {\r\n            return this._sourceManager;\r\n        };\r\n        DatasetModel.type = 'dataset';\r\n        DatasetModel.defaultOption = {\r\n            seriesLayoutBy: SERIES_LAYOUT_BY_COLUMN\r\n        };\r\n        return DatasetModel;\r\n    }(ComponentModel));\r\n    ComponentModel.registerClass(DatasetModel);\r\n    var DatasetView = (function (_super) {\r\n        __extends(DatasetView, _super);\r\n        function DatasetView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = 'dataset';\r\n            return _this;\r\n        }\r\n        DatasetView.type = 'dataset';\r\n        return DatasetView;\r\n    }(ComponentView));\r\n    ComponentView.registerClass(DatasetView);\n\n    var storage = createHashMap();\r\n    var mapDataStorage = {\r\n        registerMap: function (mapName, rawDef, rawSpecialAreas) {\r\n            var records;\r\n            if (isArray(rawDef)) {\r\n                records = rawDef;\r\n            }\r\n            else if (rawDef.svg) {\r\n                records = [{\r\n                        type: 'svg',\r\n                        source: rawDef.svg,\r\n                        specialAreas: rawDef.specialAreas\r\n                    }];\r\n            }\r\n            else {\r\n                var geoSource = rawDef.geoJson\r\n                    || rawDef.geoJSON;\r\n                if (geoSource && !rawDef.features) {\r\n                    rawSpecialAreas = rawDef.specialAreas;\r\n                    rawDef = geoSource;\r\n                }\r\n                records = [{\r\n                        type: 'geoJSON',\r\n                        source: rawDef,\r\n                        specialAreas: rawSpecialAreas\r\n                    }];\r\n            }\r\n            each(records, function (record) {\r\n                var type = record.type;\r\n                type === 'geoJson' && (type = record.type = 'geoJSON');\r\n                var parse = parsers[type];\r\n                if (__DEV__) {\r\n                    assert(parse, 'Illegal map type: ' + type);\r\n                }\r\n                parse(record);\r\n            });\r\n            return storage.set(mapName, records);\r\n        },\r\n        retrieveMap: function (mapName) {\r\n            return storage.get(mapName);\r\n        }\r\n    };\r\n    var parsers = {\r\n        geoJSON: function (record) {\r\n            var source = record.source;\r\n            record.geoJSON = !isString(source)\r\n                ? source\r\n                : (typeof JSON !== 'undefined' && JSON.parse)\r\n                    ? JSON.parse(source)\r\n                    : (new Function('return (' + source + ');'))();\r\n        },\r\n        svg: function (record) {\r\n            record.svgXML = parseXML(record.source);\r\n        }\r\n    };\n\n    var ECEventProcessor = (function () {\r\n        function ECEventProcessor() {\r\n        }\r\n        ECEventProcessor.prototype.normalizeQuery = function (query) {\r\n            var cptQuery = {};\r\n            var dataQuery = {};\r\n            var otherQuery = {};\r\n            if (isString(query)) {\r\n                var condCptType = parseClassType(query);\r\n                cptQuery.mainType = condCptType.main || null;\r\n                cptQuery.subType = condCptType.sub || null;\r\n            }\r\n            else {\r\n                var suffixes_1 = ['Index', 'Name', 'Id'];\r\n                var dataKeys_1 = { name: 1, dataIndex: 1, dataType: 1 };\r\n                each(query, function (val, key) {\r\n                    var reserved = false;\r\n                    for (var i = 0; i < suffixes_1.length; i++) {\r\n                        var propSuffix = suffixes_1[i];\r\n                        var suffixPos = key.lastIndexOf(propSuffix);\r\n                        if (suffixPos > 0 && suffixPos === key.length - propSuffix.length) {\r\n                            var mainType = key.slice(0, suffixPos);\r\n                            if (mainType !== 'data') {\r\n                                cptQuery.mainType = mainType;\r\n                                cptQuery[propSuffix.toLowerCase()] = val;\r\n                                reserved = true;\r\n                            }\r\n                        }\r\n                    }\r\n                    if (dataKeys_1.hasOwnProperty(key)) {\r\n                        dataQuery[key] = val;\r\n                        reserved = true;\r\n                    }\r\n                    if (!reserved) {\r\n                        otherQuery[key] = val;\r\n                    }\r\n                });\r\n            }\r\n            return {\r\n                cptQuery: cptQuery,\r\n                dataQuery: dataQuery,\r\n                otherQuery: otherQuery\r\n            };\r\n        };\r\n        ECEventProcessor.prototype.filter = function (eventType, query) {\r\n            var eventInfo = this.eventInfo;\r\n            if (!eventInfo) {\r\n                return true;\r\n            }\r\n            var targetEl = eventInfo.targetEl;\r\n            var packedEvent = eventInfo.packedEvent;\r\n            var model = eventInfo.model;\r\n            var view = eventInfo.view;\r\n            if (!model || !view) {\r\n                return true;\r\n            }\r\n            var cptQuery = query.cptQuery;\r\n            var dataQuery = query.dataQuery;\r\n            return check(cptQuery, model, 'mainType')\r\n                && check(cptQuery, model, 'subType')\r\n                && check(cptQuery, model, 'index', 'componentIndex')\r\n                && check(cptQuery, model, 'name')\r\n                && check(cptQuery, model, 'id')\r\n                && check(dataQuery, packedEvent, 'name')\r\n                && check(dataQuery, packedEvent, 'dataIndex')\r\n                && check(dataQuery, packedEvent, 'dataType')\r\n                && (!view.filterForExposedEvent || view.filterForExposedEvent(eventType, query.otherQuery, targetEl, packedEvent));\r\n            function check(query, host, prop, propOnHost) {\r\n                return query[prop] == null || host[propOnHost || prop] === query[prop];\r\n            }\r\n        };\r\n        ECEventProcessor.prototype.afterTrigger = function () {\r\n            this.eventInfo = null;\r\n        };\r\n        return ECEventProcessor;\r\n    }());\n\n    var seriesSymbolTask = {\r\n        createOnAllSeries: true,\r\n        performRawSeries: true,\r\n        reset: function (seriesModel, ecModel) {\r\n            var data = seriesModel.getData();\r\n            if (seriesModel.legendSymbol) {\r\n                data.setVisual('legendSymbol', seriesModel.legendSymbol);\r\n            }\r\n            if (!seriesModel.hasSymbolVisual) {\r\n                return;\r\n            }\r\n            var symbolType = seriesModel.get('symbol');\r\n            var symbolSize = seriesModel.get('symbolSize');\r\n            var keepAspect = seriesModel.get('symbolKeepAspect');\r\n            var symbolRotate = seriesModel.get('symbolRotate');\r\n            var hasSymbolTypeCallback = isFunction(symbolType);\r\n            var hasSymbolSizeCallback = isFunction(symbolSize);\r\n            var hasSymbolRotateCallback = isFunction(symbolRotate);\r\n            var hasCallback = hasSymbolTypeCallback || hasSymbolSizeCallback || hasSymbolRotateCallback;\r\n            var seriesSymbol = (!hasSymbolTypeCallback && symbolType) ? symbolType : seriesModel.defaultSymbol;\r\n            var seriesSymbolSize = !hasSymbolSizeCallback ? symbolSize : null;\r\n            var seriesSymbolRotate = !hasSymbolRotateCallback ? symbolRotate : null;\r\n            data.setVisual({\r\n                legendSymbol: seriesModel.legendSymbol || seriesSymbol,\r\n                symbol: seriesSymbol,\r\n                symbolSize: seriesSymbolSize,\r\n                symbolKeepAspect: keepAspect,\r\n                symbolRotate: seriesSymbolRotate\r\n            });\r\n            if (ecModel.isSeriesFiltered(seriesModel)) {\r\n                return;\r\n            }\r\n            function dataEach(data, idx) {\r\n                var rawValue = seriesModel.getRawValue(idx);\r\n                var params = seriesModel.getDataParams(idx);\r\n                hasSymbolTypeCallback && data.setItemVisual(idx, 'symbol', symbolType(rawValue, params));\r\n                hasSymbolSizeCallback && data.setItemVisual(idx, 'symbolSize', symbolSize(rawValue, params));\r\n                hasSymbolRotateCallback && data.setItemVisual(idx, 'symbolRotate', symbolRotate(rawValue, params));\r\n            }\r\n            return { dataEach: hasCallback ? dataEach : null };\r\n        }\r\n    };\r\n    var dataSymbolTask = {\r\n        createOnAllSeries: true,\r\n        performRawSeries: true,\r\n        reset: function (seriesModel, ecModel) {\r\n            if (!seriesModel.hasSymbolVisual) {\r\n                return;\r\n            }\r\n            if (ecModel.isSeriesFiltered(seriesModel)) {\r\n                return;\r\n            }\r\n            var data = seriesModel.getData();\r\n            function dataEach(data, idx) {\r\n                var itemModel = data.getItemModel(idx);\r\n                var itemSymbolType = itemModel.getShallow('symbol', true);\r\n                var itemSymbolSize = itemModel.getShallow('symbolSize', true);\r\n                var itemSymbolRotate = itemModel.getShallow('symbolRotate', true);\r\n                var itemSymbolKeepAspect = itemModel.getShallow('symbolKeepAspect', true);\r\n                if (itemSymbolType != null) {\r\n                    data.setItemVisual(idx, 'symbol', itemSymbolType);\r\n                }\r\n                if (itemSymbolSize != null) {\r\n                    data.setItemVisual(idx, 'symbolSize', itemSymbolSize);\r\n                }\r\n                if (itemSymbolRotate != null) {\r\n                    data.setItemVisual(idx, 'symbolRotate', itemSymbolRotate);\r\n                }\r\n                if (itemSymbolKeepAspect != null) {\r\n                    data.setItemVisual(idx, 'symbolKeepAspect', itemSymbolKeepAspect);\r\n                }\r\n            }\r\n            return { dataEach: data.hasItemOption ? dataEach : null };\r\n        }\r\n    };\n\n    function getItemVisualFromData(data, dataIndex, key) {\r\n        switch (key) {\r\n            case 'color':\r\n                var style = data.getItemVisual(dataIndex, 'style');\r\n                return style[data.getVisual('drawType')];\r\n            case 'opacity':\r\n                return data.getItemVisual(dataIndex, 'style').opacity;\r\n            case 'symbol':\r\n            case 'symbolSize':\r\n            case 'liftZ':\r\n                return data.getItemVisual(dataIndex, key);\r\n            default:\r\n                if (__DEV__) {\r\n                    console.warn(\"Unknown visual type \" + key);\r\n                }\r\n        }\r\n    }\r\n    function getVisualFromData(data, key) {\r\n        switch (key) {\r\n            case 'color':\r\n                var style = data.getVisual('style');\r\n                return style[data.getVisual('drawType')];\r\n            case 'opacity':\r\n                return data.getVisual('style').opacity;\r\n            case 'symbol':\r\n            case 'symbolSize':\r\n            case 'liftZ':\r\n                return data.getVisual(key);\r\n            default:\r\n                if (__DEV__) {\r\n                    console.warn(\"Unknown visual type \" + key);\r\n                }\r\n        }\r\n    }\n\n    var PI2$6 = Math.PI * 2;\r\n    var CMD$3 = PathProxy.CMD;\r\n    var DEFAULT_SEARCH_SPACE = ['top', 'right', 'bottom', 'left'];\r\n    function getCandidateAnchor(pos, distance, rect, outPt, outDir) {\r\n        var width = rect.width;\r\n        var height = rect.height;\r\n        switch (pos) {\r\n            case 'top':\r\n                outPt.set(rect.x + width / 2, rect.y - distance);\r\n                outDir.set(0, -1);\r\n                break;\r\n            case 'bottom':\r\n                outPt.set(rect.x + width / 2, rect.y + height + distance);\r\n                outDir.set(0, 1);\r\n                break;\r\n            case 'left':\r\n                outPt.set(rect.x - distance, rect.y + height / 2);\r\n                outDir.set(-1, 0);\r\n                break;\r\n            case 'right':\r\n                outPt.set(rect.x + width + distance, rect.y + height / 2);\r\n                outDir.set(1, 0);\r\n                break;\r\n        }\r\n    }\r\n    function projectPointToArc(cx, cy, r, startAngle, endAngle, anticlockwise, x, y, out) {\r\n        x -= cx;\r\n        y -= cy;\r\n        var d = Math.sqrt(x * x + y * y);\r\n        x /= d;\r\n        y /= d;\r\n        var ox = x * r + cx;\r\n        var oy = y * r + cy;\r\n        if (Math.abs(startAngle - endAngle) % PI2$6 < 1e-4) {\r\n            out[0] = ox;\r\n            out[1] = oy;\r\n            return d - r;\r\n        }\r\n        if (anticlockwise) {\r\n            var tmp = startAngle;\r\n            startAngle = normalizeRadian(endAngle);\r\n            endAngle = normalizeRadian(tmp);\r\n        }\r\n        else {\r\n            startAngle = normalizeRadian(startAngle);\r\n            endAngle = normalizeRadian(endAngle);\r\n        }\r\n        if (startAngle > endAngle) {\r\n            endAngle += PI2$6;\r\n        }\r\n        var angle = Math.atan2(y, x);\r\n        if (angle < 0) {\r\n            angle += PI2$6;\r\n        }\r\n        if ((angle >= startAngle && angle <= endAngle)\r\n            || (angle + PI2$6 >= startAngle && angle + PI2$6 <= endAngle)) {\r\n            out[0] = ox;\r\n            out[1] = oy;\r\n            return d - r;\r\n        }\r\n        var x1 = r * Math.cos(startAngle) + cx;\r\n        var y1 = r * Math.sin(startAngle) + cy;\r\n        var x2 = r * Math.cos(endAngle) + cx;\r\n        var y2 = r * Math.sin(endAngle) + cy;\r\n        var d1 = (x1 - x) * (x1 - x) + (y1 - y) * (y1 - y);\r\n        var d2 = (x2 - x) * (x2 - x) + (y2 - y) * (y2 - y);\r\n        if (d1 < d2) {\r\n            out[0] = x1;\r\n            out[1] = y1;\r\n            return Math.sqrt(d1);\r\n        }\r\n        else {\r\n            out[0] = x2;\r\n            out[1] = y2;\r\n            return Math.sqrt(d2);\r\n        }\r\n    }\r\n    function projectPointToLine(x1, y1, x2, y2, x, y, out, limitToEnds) {\r\n        var dx = x - x1;\r\n        var dy = y - y1;\r\n        var dx1 = x2 - x1;\r\n        var dy1 = y2 - y1;\r\n        var lineLen = Math.sqrt(dx1 * dx1 + dy1 * dy1);\r\n        dx1 /= lineLen;\r\n        dy1 /= lineLen;\r\n        var projectedLen = dx * dx1 + dy * dy1;\r\n        var t = projectedLen / lineLen;\r\n        if (limitToEnds) {\r\n            t = Math.min(Math.max(t, 0), 1);\r\n        }\r\n        t *= lineLen;\r\n        var ox = out[0] = x1 + t * dx1;\r\n        var oy = out[1] = y1 + t * dy1;\r\n        return Math.sqrt((ox - x) * (ox - x) + (oy - y) * (oy - y));\r\n    }\r\n    function projectPointToRect(x1, y1, width, height, x, y, out) {\r\n        if (width < 0) {\r\n            x1 = x1 + width;\r\n            width = -width;\r\n        }\r\n        if (height < 0) {\r\n            y1 = y1 + height;\r\n            height = -height;\r\n        }\r\n        var x2 = x1 + width;\r\n        var y2 = y1 + height;\r\n        var ox = out[0] = Math.min(Math.max(x, x1), x2);\r\n        var oy = out[1] = Math.min(Math.max(y, y1), y2);\r\n        return Math.sqrt((ox - x) * (ox - x) + (oy - y) * (oy - y));\r\n    }\r\n    var tmpPt = [];\r\n    function nearestPointOnRect(pt, rect, out) {\r\n        var dist = projectPointToRect(rect.x, rect.y, rect.width, rect.height, pt.x, pt.y, tmpPt);\r\n        out.set(tmpPt[0], tmpPt[1]);\r\n        return dist;\r\n    }\r\n    function nearestPointOnPath(pt, path, out) {\r\n        var xi = 0;\r\n        var yi = 0;\r\n        var x0 = 0;\r\n        var y0 = 0;\r\n        var x1;\r\n        var y1;\r\n        var minDist = Infinity;\r\n        var data = path.data;\r\n        var x = pt.x;\r\n        var y = pt.y;\r\n        for (var i = 0; i < data.length;) {\r\n            var cmd = data[i++];\r\n            if (i === 1) {\r\n                xi = data[i];\r\n                yi = data[i + 1];\r\n                x0 = xi;\r\n                y0 = yi;\r\n            }\r\n            var d = minDist;\r\n            switch (cmd) {\r\n                case CMD$3.M:\r\n                    x0 = data[i++];\r\n                    y0 = data[i++];\r\n                    xi = x0;\r\n                    yi = y0;\r\n                    break;\r\n                case CMD$3.L:\r\n                    d = projectPointToLine(xi, yi, data[i], data[i + 1], x, y, tmpPt, true);\r\n                    xi = data[i++];\r\n                    yi = data[i++];\r\n                    break;\r\n                case CMD$3.C:\r\n                    d = cubicProjectPoint(xi, yi, data[i++], data[i++], data[i++], data[i++], data[i], data[i + 1], x, y, tmpPt);\r\n                    xi = data[i++];\r\n                    yi = data[i++];\r\n                    break;\r\n                case CMD$3.Q:\r\n                    d = quadraticProjectPoint(xi, yi, data[i++], data[i++], data[i], data[i + 1], x, y, tmpPt);\r\n                    xi = data[i++];\r\n                    yi = data[i++];\r\n                    break;\r\n                case CMD$3.A:\r\n                    var cx = data[i++];\r\n                    var cy = data[i++];\r\n                    var rx = data[i++];\r\n                    var ry = data[i++];\r\n                    var theta = data[i++];\r\n                    var dTheta = data[i++];\r\n                    i += 1;\r\n                    var anticlockwise = !!(1 - data[i++]);\r\n                    x1 = Math.cos(theta) * rx + cx;\r\n                    y1 = Math.sin(theta) * ry + cy;\r\n                    if (i <= 1) {\r\n                        x0 = x1;\r\n                        y0 = y1;\r\n                    }\r\n                    var _x = (x - cx) * ry / rx + cx;\r\n                    d = projectPointToArc(cx, cy, ry, theta, theta + dTheta, anticlockwise, _x, y, tmpPt);\r\n                    xi = Math.cos(theta + dTheta) * rx + cx;\r\n                    yi = Math.sin(theta + dTheta) * ry + cy;\r\n                    break;\r\n                case CMD$3.R:\r\n                    x0 = xi = data[i++];\r\n                    y0 = yi = data[i++];\r\n                    var width = data[i++];\r\n                    var height = data[i++];\r\n                    d = projectPointToRect(x0, y0, width, height, x, y, tmpPt);\r\n                    break;\r\n                case CMD$3.Z:\r\n                    d = projectPointToLine(xi, yi, x0, y0, x, y, tmpPt, true);\r\n                    xi = x0;\r\n                    yi = y0;\r\n                    break;\r\n            }\r\n            if (d < minDist) {\r\n                minDist = d;\r\n                out.set(tmpPt[0], tmpPt[1]);\r\n            }\r\n        }\r\n        return minDist;\r\n    }\r\n    var pt0 = new Point();\r\n    var pt1 = new Point();\r\n    var pt2 = new Point();\r\n    var dir = new Point();\r\n    var dir2 = new Point();\r\n    function updateLabelLinePoints(target, labelLineModel) {\r\n        if (!target) {\r\n            return;\r\n        }\r\n        var labelLine = target.getTextGuideLine();\r\n        var label = target.getTextContent();\r\n        if (!(label && labelLine)) {\r\n            return;\r\n        }\r\n        var labelGuideConfig = target.textGuideLineConfig || {};\r\n        var points = [[0, 0], [0, 0], [0, 0]];\r\n        var searchSpace = labelGuideConfig.candidates || DEFAULT_SEARCH_SPACE;\r\n        var labelRect = label.getBoundingRect().clone();\r\n        labelRect.applyTransform(label.getComputedTransform());\r\n        var minDist = Infinity;\r\n        var anchorPoint = labelGuideConfig.anchor;\r\n        var targetTransform = target.getComputedTransform();\r\n        var targetInversedTransform = targetTransform && invert([], targetTransform);\r\n        var len = labelLineModel.get('length2') || 0;\r\n        if (anchorPoint) {\r\n            pt2.copy(anchorPoint);\r\n        }\r\n        for (var i = 0; i < searchSpace.length; i++) {\r\n            var candidate = searchSpace[i];\r\n            getCandidateAnchor(candidate, 0, labelRect, pt0, dir);\r\n            Point.scaleAndAdd(pt1, pt0, dir, len);\r\n            pt1.transform(targetInversedTransform);\r\n            var boundingRect = target.getBoundingRect();\r\n            var dist = anchorPoint ? anchorPoint.distance(pt1)\r\n                : (target instanceof Path\r\n                    ? nearestPointOnPath(pt1, target.path, pt2)\r\n                    : nearestPointOnRect(pt1, boundingRect, pt2));\r\n            if (dist < minDist) {\r\n                minDist = dist;\r\n                pt1.transform(targetTransform);\r\n                pt2.transform(targetTransform);\r\n                pt2.toArray(points[0]);\r\n                pt1.toArray(points[1]);\r\n                pt0.toArray(points[2]);\r\n            }\r\n        }\r\n        limitTurnAngle(points, labelLineModel.get('minTurnAngle'));\r\n        labelLine.setShape({ points: points });\r\n    }\r\n    var tmpArr = [];\r\n    var tmpProjPoint = new Point();\r\n    function limitTurnAngle(linePoints, minTurnAngle) {\r\n        if (!(minTurnAngle <= 180 && minTurnAngle > 0)) {\r\n            return;\r\n        }\r\n        minTurnAngle = minTurnAngle / 180 * Math.PI;\r\n        pt0.fromArray(linePoints[0]);\r\n        pt1.fromArray(linePoints[1]);\r\n        pt2.fromArray(linePoints[2]);\r\n        Point.sub(dir, pt0, pt1);\r\n        Point.sub(dir2, pt2, pt1);\r\n        var len1 = dir.len();\r\n        var len2 = dir2.len();\r\n        if (len1 < 1e-3 || len2 < 1e-3) {\r\n            return;\r\n        }\r\n        dir.scale(1 / len1);\r\n        dir2.scale(1 / len2);\r\n        var angleCos = dir.dot(dir2);\r\n        var minTurnAngleCos = Math.cos(minTurnAngle);\r\n        if (minTurnAngleCos < angleCos) {\r\n            var d = projectPointToLine(pt1.x, pt1.y, pt2.x, pt2.y, pt0.x, pt0.y, tmpArr, false);\r\n            tmpProjPoint.fromArray(tmpArr);\r\n            tmpProjPoint.scaleAndAdd(dir2, d / Math.tan(Math.PI - minTurnAngle));\r\n            var t = pt2.x !== pt1.x\r\n                ? (tmpProjPoint.x - pt1.x) / (pt2.x - pt1.x)\r\n                : (tmpProjPoint.y - pt1.y) / (pt2.y - pt1.y);\r\n            if (isNaN(t)) {\r\n                return;\r\n            }\r\n            if (t < 0) {\r\n                Point.copy(tmpProjPoint, pt1);\r\n            }\r\n            else if (t > 1) {\r\n                Point.copy(tmpProjPoint, pt2);\r\n            }\r\n            tmpProjPoint.toArray(linePoints[1]);\r\n        }\r\n    }\r\n    function limitSurfaceAngle(linePoints, surfaceNormal, maxSurfaceAngle) {\r\n        if (!(maxSurfaceAngle <= 180 && maxSurfaceAngle > 0)) {\r\n            return;\r\n        }\r\n        maxSurfaceAngle = maxSurfaceAngle / 180 * Math.PI;\r\n        pt0.fromArray(linePoints[0]);\r\n        pt1.fromArray(linePoints[1]);\r\n        pt2.fromArray(linePoints[2]);\r\n        Point.sub(dir, pt1, pt0);\r\n        Point.sub(dir2, pt2, pt1);\r\n        var len1 = dir.len();\r\n        var len2 = dir2.len();\r\n        if (len1 < 1e-3 || len2 < 1e-3) {\r\n            return;\r\n        }\r\n        dir.scale(1 / len1);\r\n        dir2.scale(1 / len2);\r\n        var angleCos = dir.dot(surfaceNormal);\r\n        var maxSurfaceAngleCos = Math.cos(maxSurfaceAngle);\r\n        if (angleCos < maxSurfaceAngleCos) {\r\n            var d = projectPointToLine(pt1.x, pt1.y, pt2.x, pt2.y, pt0.x, pt0.y, tmpArr, false);\r\n            tmpProjPoint.fromArray(tmpArr);\r\n            var HALF_PI = Math.PI / 2;\r\n            var angle2 = Math.acos(dir2.dot(surfaceNormal));\r\n            var newAngle = HALF_PI + angle2 - maxSurfaceAngle;\r\n            if (newAngle >= HALF_PI) {\r\n                Point.copy(tmpProjPoint, pt2);\r\n            }\r\n            else {\r\n                tmpProjPoint.scaleAndAdd(dir2, d / Math.tan(Math.PI / 2 - newAngle));\r\n                var t = pt2.x !== pt1.x\r\n                    ? (tmpProjPoint.x - pt1.x) / (pt2.x - pt1.x)\r\n                    : (tmpProjPoint.y - pt1.y) / (pt2.y - pt1.y);\r\n                if (isNaN(t)) {\r\n                    return;\r\n                }\r\n                if (t < 0) {\r\n                    Point.copy(tmpProjPoint, pt1);\r\n                }\r\n                else if (t > 1) {\r\n                    Point.copy(tmpProjPoint, pt2);\r\n                }\r\n            }\r\n            tmpProjPoint.toArray(linePoints[1]);\r\n        }\r\n    }\r\n    function setLabelLineState(labelLine, ignore, stateName, stateModel) {\r\n        var isNormal = stateName === 'normal';\r\n        var stateObj = isNormal ? labelLine : labelLine.ensureState(stateName);\r\n        stateObj.ignore = ignore;\r\n        var smooth = stateModel.get('smooth');\r\n        if (smooth && smooth === true) {\r\n            smooth = 0.3;\r\n        }\r\n        stateObj.shape = stateObj.shape || {};\r\n        if (smooth > 0) {\r\n            stateObj.shape.smooth = smooth;\r\n        }\r\n        var styleObj = stateModel.getModel('lineStyle').getLineStyle();\r\n        isNormal ? labelLine.useStyle(styleObj) : stateObj.style = styleObj;\r\n    }\r\n    function buildLabelLinePath(path, shape) {\r\n        var smooth = shape.smooth;\r\n        var points = shape.points;\r\n        if (!points) {\r\n            return;\r\n        }\r\n        path.moveTo(points[0][0], points[0][1]);\r\n        if (smooth > 0 && points.length >= 3) {\r\n            var len1 = dist(points[0], points[1]);\r\n            var len2 = dist(points[1], points[2]);\r\n            if (!len1 || !len2) {\r\n                path.lineTo(points[1][0], points[1][1]);\r\n                path.lineTo(points[2][0], points[2][1]);\r\n                return;\r\n            }\r\n            var moveLen = Math.min(len1, len2) * smooth;\r\n            var midPoint0 = lerp([], points[1], points[0], moveLen / len1);\r\n            var midPoint2 = lerp([], points[1], points[2], moveLen / len2);\r\n            var midPoint1 = lerp([], midPoint0, midPoint2, 0.5);\r\n            path.bezierCurveTo(midPoint0[0], midPoint0[1], midPoint0[0], midPoint0[1], midPoint1[0], midPoint1[1]);\r\n            path.bezierCurveTo(midPoint2[0], midPoint2[1], midPoint2[0], midPoint2[1], points[2][0], points[2][1]);\r\n        }\r\n        else {\r\n            for (var i = 1; i < points.length; i++) {\r\n                path.lineTo(points[i][0], points[i][1]);\r\n            }\r\n        }\r\n    }\r\n    function setLabelLineStyle(targetEl, statesModels, defaultStyle) {\r\n        var labelLine = targetEl.getTextGuideLine();\r\n        var label = targetEl.getTextContent();\r\n        if (!label) {\r\n            if (labelLine) {\r\n                targetEl.removeTextGuideLine();\r\n            }\r\n            return;\r\n        }\r\n        var normalModel = statesModels.normal;\r\n        var showNormal = normalModel.get('show');\r\n        var labelIgnoreNormal = label.ignore;\r\n        for (var i = 0; i < DISPLAY_STATES.length; i++) {\r\n            var stateName = DISPLAY_STATES[i];\r\n            var stateModel = statesModels[stateName];\r\n            var isNormal = stateName === 'normal';\r\n            if (stateModel) {\r\n                var stateShow = stateModel.get('show');\r\n                var isLabelIgnored = isNormal\r\n                    ? labelIgnoreNormal\r\n                    : retrieve2(label.states[stateName] && label.states[stateName].ignore, labelIgnoreNormal);\r\n                if (isLabelIgnored\r\n                    || !retrieve2(stateShow, showNormal)) {\r\n                    var stateObj = isNormal ? labelLine : (labelLine && labelLine.states.normal);\r\n                    if (stateObj) {\r\n                        stateObj.ignore = true;\r\n                    }\r\n                    continue;\r\n                }\r\n                if (!labelLine) {\r\n                    labelLine = new Polyline();\r\n                    targetEl.setTextGuideLine(labelLine);\r\n                    if (!isNormal && (labelIgnoreNormal || !showNormal)) {\r\n                        setLabelLineState(labelLine, true, 'normal', statesModels.normal);\r\n                    }\r\n                    if (targetEl.stateProxy) {\r\n                        labelLine.stateProxy = targetEl.stateProxy;\r\n                    }\r\n                }\r\n                setLabelLineState(labelLine, false, stateName, stateModel);\r\n            }\r\n        }\r\n        if (labelLine) {\r\n            defaults(labelLine.style, defaultStyle);\r\n            labelLine.style.fill = null;\r\n            var showAbove = normalModel.get('showAbove');\r\n            var labelLineConfig = (targetEl.textGuideLineConfig = targetEl.textGuideLineConfig || {});\r\n            labelLineConfig.showAbove = showAbove || false;\r\n            labelLine.buildPath = buildLabelLinePath;\r\n        }\r\n    }\r\n    function getLabelLineStatesModels(itemModel, labelLineName) {\r\n        labelLineName = (labelLineName || 'labelLine');\r\n        var statesModels = {\r\n            normal: itemModel.getModel(labelLineName)\r\n        };\r\n        for (var i = 0; i < SPECIAL_STATES.length; i++) {\r\n            var stateName = SPECIAL_STATES[i];\r\n            statesModels[stateName] = itemModel.getModel([stateName, labelLineName]);\r\n        }\r\n        return statesModels;\r\n    }\n\n    function prepareLayoutList(input) {\r\n        var list = [];\r\n        for (var i = 0; i < input.length; i++) {\r\n            var rawItem = input[i];\r\n            if (rawItem.defaultAttr.ignore) {\r\n                continue;\r\n            }\r\n            var label = rawItem.label;\r\n            var transform = label.getComputedTransform();\r\n            var localRect = label.getBoundingRect();\r\n            var isAxisAligned = !transform || (transform[1] < 1e-5 && transform[2] < 1e-5);\r\n            var minMargin = label.style.margin || 0;\r\n            var globalRect = localRect.clone();\r\n            globalRect.applyTransform(transform);\r\n            globalRect.x -= minMargin / 2;\r\n            globalRect.y -= minMargin / 2;\r\n            globalRect.width += minMargin;\r\n            globalRect.height += minMargin;\r\n            var obb = isAxisAligned ? new OrientedBoundingRect(localRect, transform) : null;\r\n            list.push({\r\n                label: label,\r\n                labelLine: rawItem.labelLine,\r\n                rect: globalRect,\r\n                localRect: localRect,\r\n                obb: obb,\r\n                priority: rawItem.priority,\r\n                defaultAttr: rawItem.defaultAttr,\r\n                layoutOption: rawItem.computedLayoutOption,\r\n                axisAligned: isAxisAligned,\r\n                transform: transform\r\n            });\r\n        }\r\n        return list;\r\n    }\r\n    function shiftLayout(list, xyDim, sizeDim, minBound, maxBound, balanceShift) {\r\n        var len = list.length;\r\n        if (len < 2) {\r\n            return;\r\n        }\r\n        list.sort(function (a, b) {\r\n            return a.rect[xyDim] - b.rect[xyDim];\r\n        });\r\n        var lastPos = 0;\r\n        var delta;\r\n        var adjusted = false;\r\n        var totalShifts = 0;\r\n        for (var i = 0; i < len; i++) {\r\n            var item = list[i];\r\n            var rect = item.rect;\r\n            delta = rect[xyDim] - lastPos;\r\n            if (delta < 0) {\r\n                rect[xyDim] -= delta;\r\n                item.label[xyDim] -= delta;\r\n                adjusted = true;\r\n            }\r\n            var shift = Math.max(-delta, 0);\r\n            totalShifts += shift;\r\n            lastPos = rect[xyDim] + rect[sizeDim];\r\n        }\r\n        if (totalShifts > 0 && balanceShift) {\r\n            shiftList(-totalShifts / len, 0, len);\r\n        }\r\n        var first = list[0];\r\n        var last = list[len - 1];\r\n        var minGap;\r\n        var maxGap;\r\n        updateMinMaxGap();\r\n        minGap < 0 && squeezeGaps(-minGap, 0.8);\r\n        maxGap < 0 && squeezeGaps(maxGap, 0.8);\r\n        updateMinMaxGap();\r\n        takeBoundsGap(minGap, maxGap, 1);\r\n        takeBoundsGap(maxGap, minGap, -1);\r\n        updateMinMaxGap();\r\n        if (minGap < 0) {\r\n            squeezeWhenBailout(-minGap);\r\n        }\r\n        if (maxGap < 0) {\r\n            squeezeWhenBailout(maxGap);\r\n        }\r\n        function updateMinMaxGap() {\r\n            minGap = first.rect[xyDim] - minBound;\r\n            maxGap = maxBound - last.rect[xyDim] - last.rect[sizeDim];\r\n        }\r\n        function takeBoundsGap(gapThisBound, gapOtherBound, moveDir) {\r\n            if (gapThisBound < 0) {\r\n                var moveFromMaxGap = Math.min(gapOtherBound, -gapThisBound);\r\n                if (moveFromMaxGap > 0) {\r\n                    shiftList(moveFromMaxGap * moveDir, 0, len);\r\n                    var remained = moveFromMaxGap + gapThisBound;\r\n                    if (remained < 0) {\r\n                        squeezeGaps(-remained * moveDir, 1);\r\n                    }\r\n                }\r\n                else {\r\n                    squeezeGaps(-gapThisBound * moveDir, 1);\r\n                }\r\n            }\r\n        }\r\n        function shiftList(delta, start, end) {\r\n            if (delta !== 0) {\r\n                adjusted = true;\r\n            }\r\n            for (var i = start; i < end; i++) {\r\n                var item = list[i];\r\n                var rect = item.rect;\r\n                rect[xyDim] += delta;\r\n                item.label[xyDim] += delta;\r\n            }\r\n        }\r\n        function squeezeGaps(delta, maxSqeezePercent) {\r\n            var gaps = [];\r\n            var totalGaps = 0;\r\n            for (var i = 1; i < len; i++) {\r\n                var prevItemRect = list[i - 1].rect;\r\n                var gap = Math.max(list[i].rect[xyDim] - prevItemRect[xyDim] - prevItemRect[sizeDim], 0);\r\n                gaps.push(gap);\r\n                totalGaps += gap;\r\n            }\r\n            if (!totalGaps) {\r\n                return;\r\n            }\r\n            var squeezePercent = Math.min(Math.abs(delta) / totalGaps, maxSqeezePercent);\r\n            if (delta > 0) {\r\n                for (var i = 0; i < len - 1; i++) {\r\n                    var movement = gaps[i] * squeezePercent;\r\n                    shiftList(movement, 0, i + 1);\r\n                }\r\n            }\r\n            else {\r\n                for (var i = len - 1; i > 0; i--) {\r\n                    var movement = gaps[i - 1] * squeezePercent;\r\n                    shiftList(-movement, i, len);\r\n                }\r\n            }\r\n        }\r\n        function squeezeWhenBailout(delta) {\r\n            var dir = delta < 0 ? -1 : 1;\r\n            delta = Math.abs(delta);\r\n            var moveForEachLabel = Math.ceil(delta / (len - 1));\r\n            for (var i = 0; i < len - 1; i++) {\r\n                if (dir > 0) {\r\n                    shiftList(moveForEachLabel, 0, i + 1);\r\n                }\r\n                else {\r\n                    shiftList(-moveForEachLabel, len - i - 1, len);\r\n                }\r\n                delta -= moveForEachLabel;\r\n                if (delta <= 0) {\r\n                    return;\r\n                }\r\n            }\r\n        }\r\n        return adjusted;\r\n    }\r\n    function shiftLayoutOnX(list, leftBound, rightBound, balanceShift) {\r\n        return shiftLayout(list, 'x', 'width', leftBound, rightBound, balanceShift);\r\n    }\r\n    function shiftLayoutOnY(list, topBound, bottomBound, balanceShift) {\r\n        return shiftLayout(list, 'y', 'height', topBound, bottomBound, balanceShift);\r\n    }\r\n    function hideOverlap(labelList) {\r\n        var displayedLabels = [];\r\n        labelList.sort(function (a, b) {\r\n            return b.priority - a.priority;\r\n        });\r\n        var globalRect = new BoundingRect(0, 0, 0, 0);\r\n        function hideEl(el) {\r\n            if (!el.ignore) {\r\n                var emphasisState = el.ensureState('emphasis');\r\n                if (emphasisState.ignore == null) {\r\n                    emphasisState.ignore = false;\r\n                }\r\n            }\r\n            el.ignore = true;\r\n        }\r\n        for (var i = 0; i < labelList.length; i++) {\r\n            var labelItem = labelList[i];\r\n            var isAxisAligned = labelItem.axisAligned;\r\n            var localRect = labelItem.localRect;\r\n            var transform = labelItem.transform;\r\n            var label = labelItem.label;\r\n            var labelLine = labelItem.labelLine;\r\n            globalRect.copy(labelItem.rect);\r\n            globalRect.width -= 0.1;\r\n            globalRect.height -= 0.1;\r\n            globalRect.x += 0.05;\r\n            globalRect.y += 0.05;\r\n            var obb = labelItem.obb;\r\n            var overlapped = false;\r\n            for (var j = 0; j < displayedLabels.length; j++) {\r\n                var existsTextCfg = displayedLabels[j];\r\n                if (!globalRect.intersect(existsTextCfg.rect)) {\r\n                    continue;\r\n                }\r\n                if (isAxisAligned && existsTextCfg.axisAligned) {\r\n                    overlapped = true;\r\n                    break;\r\n                }\r\n                if (!existsTextCfg.obb) {\r\n                    existsTextCfg.obb = new OrientedBoundingRect(existsTextCfg.localRect, existsTextCfg.transform);\r\n                }\r\n                if (!obb) {\r\n                    obb = new OrientedBoundingRect(localRect, transform);\r\n                }\r\n                if (obb.intersect(existsTextCfg.obb)) {\r\n                    overlapped = true;\r\n                    break;\r\n                }\r\n            }\r\n            if (overlapped) {\r\n                hideEl(label);\r\n                labelLine && hideEl(labelLine);\r\n            }\r\n            else {\r\n                label.attr('ignore', labelItem.defaultAttr.ignore);\r\n                labelLine && labelLine.attr('ignore', labelItem.defaultAttr.labelGuideIgnore);\r\n                displayedLabels.push(labelItem);\r\n            }\r\n        }\r\n    }\n\n    function cloneArr(points) {\r\n        if (points) {\r\n            var newPoints = [];\r\n            for (var i = 0; i < points.length; i++) {\r\n                newPoints.push(points[i].slice());\r\n            }\r\n            return newPoints;\r\n        }\r\n    }\r\n    function prepareLayoutCallbackParams(labelItem, hostEl) {\r\n        var label = labelItem.label;\r\n        var labelLine = hostEl && hostEl.getTextGuideLine();\r\n        return {\r\n            dataIndex: labelItem.dataIndex,\r\n            dataType: labelItem.dataType,\r\n            seriesIndex: labelItem.seriesModel.seriesIndex,\r\n            text: labelItem.label.style.text,\r\n            rect: labelItem.hostRect,\r\n            labelRect: labelItem.rect,\r\n            align: label.style.align,\r\n            verticalAlign: label.style.verticalAlign,\r\n            labelLinePoints: cloneArr(labelLine && labelLine.shape.points)\r\n        };\r\n    }\r\n    var LABEL_OPTION_TO_STYLE_KEYS = ['align', 'verticalAlign', 'width', 'height', 'fontSize'];\r\n    var dummyTransformable = new Transformable();\r\n    var labelLayoutInnerStore = makeInner();\r\n    var labelLineAnimationStore = makeInner();\r\n    function extendWithKeys(target, source, keys) {\r\n        for (var i = 0; i < keys.length; i++) {\r\n            var key = keys[i];\r\n            if (source[key] != null) {\r\n                target[key] = source[key];\r\n            }\r\n        }\r\n    }\r\n    var LABEL_LAYOUT_PROPS = ['x', 'y', 'rotation'];\r\n    var LabelManager = (function () {\r\n        function LabelManager() {\r\n            this._labelList = [];\r\n            this._chartViewList = [];\r\n        }\r\n        LabelManager.prototype.clearLabels = function () {\r\n            this._labelList = [];\r\n            this._chartViewList = [];\r\n        };\r\n        LabelManager.prototype._addLabel = function (dataIndex, dataType, seriesModel, label, layoutOption) {\r\n            var labelStyle = label.style;\r\n            var hostEl = label.__hostTarget;\r\n            var textConfig = hostEl.textConfig || {};\r\n            var labelTransform = label.getComputedTransform();\r\n            var labelRect = label.getBoundingRect().plain();\r\n            BoundingRect.applyTransform(labelRect, labelRect, labelTransform);\r\n            if (labelTransform) {\r\n                dummyTransformable.setLocalTransform(labelTransform);\r\n            }\r\n            else {\r\n                dummyTransformable.x = dummyTransformable.y = dummyTransformable.rotation =\r\n                    dummyTransformable.originX = dummyTransformable.originY = 0;\r\n                dummyTransformable.scaleX = dummyTransformable.scaleY = 1;\r\n            }\r\n            var host = label.__hostTarget;\r\n            var hostRect;\r\n            if (host) {\r\n                hostRect = host.getBoundingRect().plain();\r\n                var transform = host.getComputedTransform();\r\n                BoundingRect.applyTransform(hostRect, hostRect, transform);\r\n            }\r\n            var labelGuide = hostRect && host.getTextGuideLine();\r\n            this._labelList.push({\r\n                label: label,\r\n                labelLine: labelGuide,\r\n                seriesModel: seriesModel,\r\n                dataIndex: dataIndex,\r\n                dataType: dataType,\r\n                layoutOption: layoutOption,\r\n                computedLayoutOption: null,\r\n                rect: labelRect,\r\n                hostRect: hostRect,\r\n                priority: hostRect ? hostRect.width * hostRect.height : 0,\r\n                defaultAttr: {\r\n                    ignore: label.ignore,\r\n                    labelGuideIgnore: labelGuide && labelGuide.ignore,\r\n                    x: dummyTransformable.x,\r\n                    y: dummyTransformable.y,\r\n                    rotation: dummyTransformable.rotation,\r\n                    style: {\r\n                        x: labelStyle.x,\r\n                        y: labelStyle.y,\r\n                        align: labelStyle.align,\r\n                        verticalAlign: labelStyle.verticalAlign,\r\n                        width: labelStyle.width,\r\n                        height: labelStyle.height,\r\n                        fontSize: labelStyle.fontSize\r\n                    },\r\n                    cursor: label.cursor,\r\n                    attachedPos: textConfig.position,\r\n                    attachedRot: textConfig.rotation\r\n                }\r\n            });\r\n        };\r\n        LabelManager.prototype.addLabelsOfSeries = function (chartView) {\r\n            var _this = this;\r\n            this._chartViewList.push(chartView);\r\n            var seriesModel = chartView.__model;\r\n            var layoutOption = seriesModel.get('labelLayout');\r\n            if (!(isFunction(layoutOption) || keys(layoutOption).length)) {\r\n                return;\r\n            }\r\n            chartView.group.traverse(function (child) {\r\n                if (child.ignore) {\r\n                    return true;\r\n                }\r\n                var textEl = child.getTextContent();\r\n                var ecData = getECData(child);\r\n                if (textEl && !textEl.disableLabelLayout) {\r\n                    _this._addLabel(ecData.dataIndex, ecData.dataType, seriesModel, textEl, layoutOption);\r\n                }\r\n            });\r\n        };\r\n        LabelManager.prototype.updateLayoutConfig = function (api) {\r\n            var width = api.getWidth();\r\n            var height = api.getHeight();\r\n            function createDragHandler(el, labelLineModel) {\r\n                return function () {\r\n                    updateLabelLinePoints(el, labelLineModel);\r\n                };\r\n            }\r\n            for (var i = 0; i < this._labelList.length; i++) {\r\n                var labelItem = this._labelList[i];\r\n                var label = labelItem.label;\r\n                var hostEl = label.__hostTarget;\r\n                var defaultLabelAttr = labelItem.defaultAttr;\r\n                var layoutOption = void 0;\r\n                if (typeof labelItem.layoutOption === 'function') {\r\n                    layoutOption = labelItem.layoutOption(prepareLayoutCallbackParams(labelItem, hostEl));\r\n                }\r\n                else {\r\n                    layoutOption = labelItem.layoutOption;\r\n                }\r\n                layoutOption = layoutOption || {};\r\n                labelItem.computedLayoutOption = layoutOption;\r\n                var degreeToRadian = Math.PI / 180;\r\n                if (hostEl) {\r\n                    hostEl.setTextConfig({\r\n                        local: false,\r\n                        position: (layoutOption.x != null || layoutOption.y != null)\r\n                            ? null : defaultLabelAttr.attachedPos,\r\n                        rotation: layoutOption.rotate != null\r\n                            ? layoutOption.rotate * degreeToRadian : defaultLabelAttr.attachedRot,\r\n                        offset: [layoutOption.dx || 0, layoutOption.dy || 0]\r\n                    });\r\n                }\r\n                var needsUpdateLabelLine = false;\r\n                if (layoutOption.x != null) {\r\n                    label.x = parsePercent$2(layoutOption.x, width);\r\n                    label.setStyle('x', 0);\r\n                    needsUpdateLabelLine = true;\r\n                }\r\n                else {\r\n                    label.x = defaultLabelAttr.x;\r\n                    label.setStyle('x', defaultLabelAttr.style.x);\r\n                }\r\n                if (layoutOption.y != null) {\r\n                    label.y = parsePercent$2(layoutOption.y, height);\r\n                    label.setStyle('y', 0);\r\n                    needsUpdateLabelLine = true;\r\n                }\r\n                else {\r\n                    label.y = defaultLabelAttr.y;\r\n                    label.setStyle('y', defaultLabelAttr.style.y);\r\n                }\r\n                if (layoutOption.labelLinePoints) {\r\n                    var guideLine = hostEl.getTextGuideLine();\r\n                    if (guideLine) {\r\n                        guideLine.setShape({ points: layoutOption.labelLinePoints });\r\n                        needsUpdateLabelLine = false;\r\n                    }\r\n                }\r\n                var labelLayoutStore = labelLayoutInnerStore(label);\r\n                labelLayoutStore.needsUpdateLabelLine = needsUpdateLabelLine;\r\n                label.rotation = layoutOption.rotate != null\r\n                    ? layoutOption.rotate * degreeToRadian : defaultLabelAttr.rotation;\r\n                for (var k = 0; k < LABEL_OPTION_TO_STYLE_KEYS.length; k++) {\r\n                    var key = LABEL_OPTION_TO_STYLE_KEYS[k];\r\n                    label.setStyle(key, layoutOption[key] != null ? layoutOption[key] : defaultLabelAttr.style[key]);\r\n                }\r\n                if (layoutOption.draggable) {\r\n                    label.draggable = true;\r\n                    label.cursor = 'move';\r\n                    if (hostEl) {\r\n                        var hostModel = labelItem.seriesModel;\r\n                        if (labelItem.dataIndex != null) {\r\n                            var data = labelItem.seriesModel.getData(labelItem.dataType);\r\n                            hostModel = data.getItemModel(labelItem.dataIndex);\r\n                        }\r\n                        label.on('drag', createDragHandler(hostEl, hostModel.getModel('labelLine')));\r\n                    }\r\n                }\r\n                else {\r\n                    label.off('drag');\r\n                    label.cursor = defaultLabelAttr.cursor;\r\n                }\r\n            }\r\n        };\r\n        LabelManager.prototype.layout = function (api) {\r\n            var width = api.getWidth();\r\n            var height = api.getHeight();\r\n            var labelList = prepareLayoutList(this._labelList);\r\n            var labelsNeedsAdjustOnX = filter(labelList, function (item) {\r\n                return item.layoutOption.moveOverlap === 'shiftX';\r\n            });\r\n            var labelsNeedsAdjustOnY = filter(labelList, function (item) {\r\n                return item.layoutOption.moveOverlap === 'shiftY';\r\n            });\r\n            shiftLayoutOnX(labelsNeedsAdjustOnX, 0, width);\r\n            shiftLayoutOnY(labelsNeedsAdjustOnY, 0, height);\r\n            var labelsNeedsHideOverlap = filter(labelList, function (item) {\r\n                return item.layoutOption.hideOverlap;\r\n            });\r\n            hideOverlap(labelsNeedsHideOverlap);\r\n        };\r\n        LabelManager.prototype.processLabelsOverall = function () {\r\n            var _this = this;\r\n            each(this._chartViewList, function (chartView) {\r\n                var seriesModel = chartView.__model;\r\n                var ignoreLabelLineUpdate = chartView.ignoreLabelLineUpdate;\r\n                var animationEnabled = seriesModel.isAnimationEnabled();\r\n                chartView.group.traverse(function (child) {\r\n                    if (child.ignore) {\r\n                        return true;\r\n                    }\r\n                    var needsUpdateLabelLine = !ignoreLabelLineUpdate;\r\n                    var label = child.getTextContent();\r\n                    if (!needsUpdateLabelLine && label) {\r\n                        needsUpdateLabelLine = labelLayoutInnerStore(label).needsUpdateLabelLine;\r\n                    }\r\n                    if (needsUpdateLabelLine) {\r\n                        _this._updateLabelLine(child, seriesModel);\r\n                    }\r\n                    if (animationEnabled) {\r\n                        _this._animateLabels(child, seriesModel);\r\n                    }\r\n                });\r\n            });\r\n        };\r\n        LabelManager.prototype._updateLabelLine = function (el, seriesModel) {\r\n            var textEl = el.getTextContent();\r\n            var ecData = getECData(el);\r\n            var dataIndex = ecData.dataIndex;\r\n            if (textEl && dataIndex != null) {\r\n                var data = seriesModel.getData(ecData.dataType);\r\n                var itemModel = data.getItemModel(dataIndex);\r\n                var defaultStyle = {};\r\n                var visualStyle = data.getItemVisual(dataIndex, 'style');\r\n                var visualType = data.getVisual('drawType');\r\n                defaultStyle.stroke = visualStyle[visualType];\r\n                var labelLineModel = itemModel.getModel('labelLine');\r\n                setLabelLineStyle(el, getLabelLineStatesModels(itemModel), defaultStyle);\r\n                updateLabelLinePoints(el, labelLineModel);\r\n            }\r\n        };\r\n        LabelManager.prototype._animateLabels = function (el, seriesModel) {\r\n            var textEl = el.getTextContent();\r\n            var guideLine = el.getTextGuideLine();\r\n            if (textEl\r\n                && !textEl.ignore\r\n                && !textEl.invisible\r\n                && !el.disableLabelAnimation\r\n                && !isElementRemoved(el)) {\r\n                var layoutStore = labelLayoutInnerStore(textEl);\r\n                var oldLayout = layoutStore.oldLayout;\r\n                var ecData = getECData(el);\r\n                var dataIndex = ecData.dataIndex;\r\n                var newProps = {\r\n                    x: textEl.x,\r\n                    y: textEl.y,\r\n                    rotation: textEl.rotation\r\n                };\r\n                var data = seriesModel.getData(ecData.dataType);\r\n                if (!oldLayout) {\r\n                    textEl.attr(newProps);\r\n                    if (!labelInner(textEl).valueAnimation) {\r\n                        var oldOpacity = retrieve2(textEl.style.opacity, 1);\r\n                        textEl.style.opacity = 0;\r\n                        initProps(textEl, {\r\n                            style: { opacity: oldOpacity }\r\n                        }, seriesModel, dataIndex);\r\n                    }\r\n                }\r\n                else {\r\n                    textEl.attr(oldLayout);\r\n                    var prevStates = el.prevStates;\r\n                    if (prevStates) {\r\n                        if (indexOf(prevStates, 'select') >= 0) {\r\n                            textEl.attr(layoutStore.oldLayoutSelect);\r\n                        }\r\n                        if (indexOf(prevStates, 'emphasis') >= 0) {\r\n                            textEl.attr(layoutStore.oldLayoutEmphasis);\r\n                        }\r\n                    }\r\n                    updateProps(textEl, newProps, seriesModel, dataIndex);\r\n                }\r\n                layoutStore.oldLayout = newProps;\r\n                if (textEl.states.select) {\r\n                    var layoutSelect = layoutStore.oldLayoutSelect = {};\r\n                    extendWithKeys(layoutSelect, newProps, LABEL_LAYOUT_PROPS);\r\n                    extendWithKeys(layoutSelect, textEl.states.select, LABEL_LAYOUT_PROPS);\r\n                }\r\n                if (textEl.states.emphasis) {\r\n                    var layoutEmphasis = layoutStore.oldLayoutEmphasis = {};\r\n                    extendWithKeys(layoutEmphasis, newProps, LABEL_LAYOUT_PROPS);\r\n                    extendWithKeys(layoutEmphasis, textEl.states.emphasis, LABEL_LAYOUT_PROPS);\r\n                }\r\n                animateLabelValue(textEl, dataIndex, data, seriesModel);\r\n            }\r\n            if (guideLine && !guideLine.ignore && !guideLine.invisible) {\r\n                var layoutStore = labelLineAnimationStore(guideLine);\r\n                var oldLayout = layoutStore.oldLayout;\r\n                var newLayout = { points: guideLine.shape.points };\r\n                if (!oldLayout) {\r\n                    guideLine.setShape(newLayout);\r\n                    guideLine.style.strokePercent = 0;\r\n                    initProps(guideLine, {\r\n                        style: { strokePercent: 1 }\r\n                    }, seriesModel);\r\n                }\r\n                else {\r\n                    guideLine.attr({ shape: oldLayout });\r\n                    updateProps(guideLine, {\r\n                        shape: newLayout\r\n                    }, seriesModel);\r\n                }\r\n                layoutStore.oldLayout = newLayout;\r\n            }\r\n        };\r\n        return LabelManager;\r\n    }());\n\n    function createLegacyDataSelectAction(seriesType, ecRegisterAction) {\r\n        function getSeriesIndices(ecModel, payload) {\r\n            var seriesIndices = [];\r\n            ecModel.eachComponent({\r\n                mainType: 'series', subType: seriesType, query: payload\r\n            }, function (seriesModel) {\r\n                seriesIndices.push(seriesModel.seriesIndex);\r\n            });\r\n            return seriesIndices;\r\n        }\r\n        each([\r\n            [seriesType + 'ToggleSelect', 'toggleSelect'],\r\n            [seriesType + 'Select', 'select'],\r\n            [seriesType + 'UnSelect', 'unselect']\r\n        ], function (eventsMap) {\r\n            ecRegisterAction(eventsMap[0], function (payload, ecModel, api) {\r\n                payload = extend({}, payload);\r\n                if (__DEV__) {\r\n                    deprecateReplaceLog(payload.type, eventsMap[1]);\r\n                }\r\n                api.dispatchAction(extend(payload, {\r\n                    type: eventsMap[1],\r\n                    seriesIndex: getSeriesIndices(ecModel, payload)\r\n                }));\r\n            });\r\n        });\r\n    }\r\n    function handleSeriesLegacySelectEvents(type, eventPostfix, ecIns, ecModel, payload) {\r\n        var legacyEventName = type + eventPostfix;\r\n        if (!ecIns.isSilent(legacyEventName)) {\r\n            if (__DEV__) {\r\n                deprecateLog(\"event \" + legacyEventName + \" is deprecated.\");\r\n            }\r\n            ecModel.eachComponent({\r\n                mainType: 'series', subType: 'pie'\r\n            }, function (seriesModel) {\r\n                var seriesIndex = seriesModel.seriesIndex;\r\n                var selected = payload.selected;\r\n                for (var i = 0; i < selected.length; i++) {\r\n                    if (selected[i].seriesIndex === seriesIndex) {\r\n                        var data = seriesModel.getData();\r\n                        var dataIndex = queryDataIndex(data, payload.fromActionPayload);\r\n                        ecIns.trigger(legacyEventName, {\r\n                            type: legacyEventName,\r\n                            seriesId: seriesModel.id,\r\n                            name: isArray(dataIndex) ? data.getName(dataIndex[0]) : data.getName(dataIndex),\r\n                            selected: extend({}, seriesModel.option.selectedMap)\r\n                        });\r\n                    }\r\n                }\r\n            });\r\n        }\r\n    }\r\n    function handleLegacySelectEvents(messageCenter, ecIns, ecModel) {\r\n        messageCenter.on('selectchanged', function (params) {\r\n            if (params.isFromClick) {\r\n                handleSeriesLegacySelectEvents('map', 'selectchanged', ecIns, ecModel, params);\r\n                handleSeriesLegacySelectEvents('pie', 'selectchanged', ecIns, ecModel, params);\r\n            }\r\n            else if (params.fromAction === 'select') {\r\n                handleSeriesLegacySelectEvents('map', 'selected', ecIns, ecModel, params);\r\n                handleSeriesLegacySelectEvents('pie', 'selected', ecIns, ecModel, params);\r\n            }\r\n            else if (params.fromAction === 'unselect') {\r\n                handleSeriesLegacySelectEvents('map', 'unselected', ecIns, ecModel, params);\r\n                handleSeriesLegacySelectEvents('pie', 'unselected', ecIns, ecModel, params);\r\n            }\r\n        });\r\n    }\n\n    function createLinearGradient(ctx, obj, rect) {\r\n        var x = obj.x == null ? 0 : obj.x;\r\n        var x2 = obj.x2 == null ? 1 : obj.x2;\r\n        var y = obj.y == null ? 0 : obj.y;\r\n        var y2 = obj.y2 == null ? 0 : obj.y2;\r\n        if (!obj.global) {\r\n            x = x * rect.width + rect.x;\r\n            x2 = x2 * rect.width + rect.x;\r\n            y = y * rect.height + rect.y;\r\n            y2 = y2 * rect.height + rect.y;\r\n        }\r\n        x = isNaN(x) ? 0 : x;\r\n        x2 = isNaN(x2) ? 1 : x2;\r\n        y = isNaN(y) ? 0 : y;\r\n        y2 = isNaN(y2) ? 0 : y2;\r\n        var canvasGradient = ctx.createLinearGradient(x, y, x2, y2);\r\n        return canvasGradient;\r\n    }\r\n    function createRadialGradient(ctx, obj, rect) {\r\n        var width = rect.width;\r\n        var height = rect.height;\r\n        var min = Math.min(width, height);\r\n        var x = obj.x == null ? 0.5 : obj.x;\r\n        var y = obj.y == null ? 0.5 : obj.y;\r\n        var r = obj.r == null ? 0.5 : obj.r;\r\n        if (!obj.global) {\r\n            x = x * width + rect.x;\r\n            y = y * height + rect.y;\r\n            r = r * min;\r\n        }\r\n        var canvasGradient = ctx.createRadialGradient(x, y, 0, x, y, r);\r\n        return canvasGradient;\r\n    }\r\n    function getCanvasGradient(ctx, obj, rect) {\r\n        var canvasGradient = obj.type === 'radial'\r\n            ? createRadialGradient(ctx, obj, rect)\r\n            : createLinearGradient(ctx, obj, rect);\r\n        var colorStops = obj.colorStops;\r\n        for (var i = 0; i < colorStops.length; i++) {\r\n            canvasGradient.addColorStop(colorStops[i].offset, colorStops[i].color);\r\n        }\r\n        return canvasGradient;\r\n    }\r\n    function isClipPathChanged(clipPaths, prevClipPaths) {\r\n        if (clipPaths === prevClipPaths || (!clipPaths && !prevClipPaths)) {\r\n            return false;\r\n        }\r\n        if (!clipPaths || !prevClipPaths || (clipPaths.length !== prevClipPaths.length)) {\r\n            return true;\r\n        }\r\n        for (var i = 0; i < clipPaths.length; i++) {\r\n            if (clipPaths[i] !== prevClipPaths[i]) {\r\n                return true;\r\n            }\r\n        }\r\n        return false;\r\n    }\n\n    function normalizeLineDash(lineType, lineWidth) {\r\n        if (!lineType || lineType === 'solid' || !(lineWidth > 0)) {\r\n            return null;\r\n        }\r\n        lineWidth = lineWidth || 1;\r\n        return lineType === 'dashed'\r\n            ? [4 * lineWidth, 2 * lineWidth]\r\n            : lineType === 'dotted'\r\n                ? [lineWidth]\r\n                : isNumber(lineType)\r\n                    ? [lineType] : isArray(lineType) ? lineType : null;\r\n    }\n\n    var pathProxyForDraw = new PathProxy(true);\r\n    function styleHasStroke(style) {\r\n        var stroke = style.stroke;\r\n        return !(stroke == null || stroke === 'none' || !(style.lineWidth > 0));\r\n    }\r\n    function styleHasFill(style) {\r\n        var fill = style.fill;\r\n        return fill != null && fill !== 'none';\r\n    }\r\n    function doFillPath(ctx, style) {\r\n        if (style.fillOpacity != null && style.fillOpacity !== 1) {\r\n            var originalGlobalAlpha = ctx.globalAlpha;\r\n            ctx.globalAlpha = style.fillOpacity * style.opacity;\r\n            ctx.fill();\r\n            ctx.globalAlpha = originalGlobalAlpha;\r\n        }\r\n        else {\r\n            ctx.fill();\r\n        }\r\n    }\r\n    function doStrokePath(ctx, style) {\r\n        if (style.strokeOpacity != null && style.strokeOpacity !== 1) {\r\n            var originalGlobalAlpha = ctx.globalAlpha;\r\n            ctx.globalAlpha = style.strokeOpacity * style.opacity;\r\n            ctx.stroke();\r\n            ctx.globalAlpha = originalGlobalAlpha;\r\n        }\r\n        else {\r\n            ctx.stroke();\r\n        }\r\n    }\r\n    function createCanvasPattern(ctx, pattern, el) {\r\n        var image = createOrUpdateImage(pattern.image, pattern.__image, el);\r\n        if (isImageReady(image)) {\r\n            var canvasPattern = ctx.createPattern(image, pattern.repeat || 'repeat');\r\n            if (typeof DOMMatrix === 'function') {\r\n                var matrix = new DOMMatrix();\r\n                matrix.rotateSelf(0, 0, (pattern.rotation || 0) / Math.PI * 180);\r\n                matrix.scaleSelf((pattern.scaleX || 1), (pattern.scaleY || 1));\r\n                matrix.translateSelf((pattern.x || 0), (pattern.y || 0));\r\n                canvasPattern.setTransform(matrix);\r\n            }\r\n            return canvasPattern;\r\n        }\r\n    }\r\n    function brushPath(ctx, el, style, inBatch) {\r\n        var hasStroke = styleHasStroke(style);\r\n        var hasFill = styleHasFill(style);\r\n        var strokePercent = style.strokePercent;\r\n        var strokePart = strokePercent < 1;\r\n        var firstDraw = !el.path;\r\n        if ((!el.silent || strokePart) && firstDraw) {\r\n            el.createPathProxy();\r\n        }\r\n        var path = el.path || pathProxyForDraw;\r\n        if (!inBatch) {\r\n            var fill = style.fill;\r\n            var stroke = style.stroke;\r\n            var hasFillGradient = hasFill && !!fill.colorStops;\r\n            var hasStrokeGradient = hasStroke && !!stroke.colorStops;\r\n            var hasFillPattern = hasFill && !!fill.image;\r\n            var hasStrokePattern = hasStroke && !!stroke.image;\r\n            var fillGradient = void 0;\r\n            var strokeGradient = void 0;\r\n            var fillPattern = void 0;\r\n            var strokePattern = void 0;\r\n            var rect = void 0;\r\n            if (hasFillGradient || hasStrokeGradient) {\r\n                rect = el.getBoundingRect();\r\n            }\r\n            if (hasFillGradient) {\r\n                fillGradient = el.__dirty\r\n                    ? getCanvasGradient(ctx, fill, rect)\r\n                    : el.__canvasFillGradient;\r\n                el.__canvasFillGradient = fillGradient;\r\n            }\r\n            if (hasStrokeGradient) {\r\n                strokeGradient = el.__dirty\r\n                    ? getCanvasGradient(ctx, stroke, rect)\r\n                    : el.__canvasStrokeGradient;\r\n                el.__canvasStrokeGradient = strokeGradient;\r\n            }\r\n            if (hasFillPattern) {\r\n                fillPattern = (el.__dirty || !el.__canvasFillPattern)\r\n                    ? createCanvasPattern(ctx, fill, el)\r\n                    : el.__canvasFillPattern;\r\n                el.__canvasFillPattern = fillPattern;\r\n            }\r\n            if (hasStrokePattern) {\r\n                strokePattern = (el.__dirty || !el.__canvasStrokePattern)\r\n                    ? createCanvasPattern(ctx, stroke, el)\r\n                    : el.__canvasStrokePattern;\r\n                el.__canvasStrokePattern = fillPattern;\r\n            }\r\n            if (hasFillGradient) {\r\n                ctx.fillStyle = fillGradient;\r\n            }\r\n            else if (hasFillPattern) {\r\n                if (fillPattern) {\r\n                    ctx.fillStyle = fillPattern;\r\n                }\r\n                else {\r\n                    hasFill = false;\r\n                }\r\n            }\r\n            if (hasStrokeGradient) {\r\n                ctx.strokeStyle = strokeGradient;\r\n            }\r\n            else if (hasStrokePattern) {\r\n                if (strokePattern) {\r\n                    ctx.strokeStyle = strokePattern;\r\n                }\r\n                else {\r\n                    hasStroke = false;\r\n                }\r\n            }\r\n        }\r\n        var lineDash = style.lineDash && style.lineWidth > 0 && normalizeLineDash(style.lineDash, style.lineWidth);\r\n        var lineDashOffset = style.lineDashOffset;\r\n        var ctxLineDash = !!ctx.setLineDash;\r\n        var scale = el.getGlobalScale();\r\n        path.setScale(scale[0], scale[1], el.segmentIgnoreThreshold);\r\n        if (lineDash) {\r\n            var lineScale_1 = (style.strokeNoScale && el.getLineScale) ? el.getLineScale() : 1;\r\n            if (lineScale_1 && lineScale_1 !== 1) {\r\n                lineDash = map(lineDash, function (rawVal) {\r\n                    return rawVal / lineScale_1;\r\n                });\r\n                lineDashOffset /= lineScale_1;\r\n            }\r\n        }\r\n        var needsRebuild = true;\r\n        if (firstDraw || (el.__dirty & Path.SHAPE_CHANGED_BIT)\r\n            || (lineDash && !ctxLineDash && hasStroke)) {\r\n            path.setDPR(ctx.dpr);\r\n            if (strokePart) {\r\n                path.setContext(null);\r\n            }\r\n            else {\r\n                path.setContext(ctx);\r\n                needsRebuild = false;\r\n            }\r\n            path.reset();\r\n            if (lineDash && !ctxLineDash) {\r\n                path.setLineDash(lineDash);\r\n                path.setLineDashOffset(lineDashOffset);\r\n            }\r\n            el.buildPath(path, el.shape, inBatch);\r\n            path.toStatic();\r\n            el.pathUpdated();\r\n        }\r\n        if (needsRebuild) {\r\n            path.rebuildPath(ctx, strokePart ? strokePercent : 1);\r\n        }\r\n        if (lineDash && ctxLineDash) {\r\n            ctx.setLineDash(lineDash);\r\n            ctx.lineDashOffset = lineDashOffset;\r\n        }\r\n        if (!inBatch) {\r\n            if (style.strokeFirst) {\r\n                if (hasStroke) {\r\n                    doStrokePath(ctx, style);\r\n                }\r\n                if (hasFill) {\r\n                    doFillPath(ctx, style);\r\n                }\r\n            }\r\n            else {\r\n                if (hasFill) {\r\n                    doFillPath(ctx, style);\r\n                }\r\n                if (hasStroke) {\r\n                    doStrokePath(ctx, style);\r\n                }\r\n            }\r\n        }\r\n        if (lineDash && ctxLineDash) {\r\n            ctx.setLineDash([]);\r\n        }\r\n    }\r\n    function brushImage(ctx, el, style) {\r\n        var image = el.__image = createOrUpdateImage(style.image, el.__image, el, el.onload);\r\n        if (!image || !isImageReady(image)) {\r\n            return;\r\n        }\r\n        var x = style.x || 0;\r\n        var y = style.y || 0;\r\n        var width = el.getWidth();\r\n        var height = el.getHeight();\r\n        var aspect = image.width / image.height;\r\n        if (width == null && height != null) {\r\n            width = height * aspect;\r\n        }\r\n        else if (height == null && width != null) {\r\n            height = width / aspect;\r\n        }\r\n        else if (width == null && height == null) {\r\n            width = image.width;\r\n            height = image.height;\r\n        }\r\n        if (style.sWidth && style.sHeight) {\r\n            var sx = style.sx || 0;\r\n            var sy = style.sy || 0;\r\n            ctx.drawImage(image, sx, sy, style.sWidth, style.sHeight, x, y, width, height);\r\n        }\r\n        else if (style.sx && style.sy) {\r\n            var sx = style.sx;\r\n            var sy = style.sy;\r\n            var sWidth = width - sx;\r\n            var sHeight = height - sy;\r\n            ctx.drawImage(image, sx, sy, sWidth, sHeight, x, y, width, height);\r\n        }\r\n        else {\r\n            ctx.drawImage(image, x, y, width, height);\r\n        }\r\n    }\r\n    function brushText(ctx, el, style) {\r\n        var text = style.text;\r\n        text != null && (text += '');\r\n        if (text) {\r\n            ctx.font = style.font || DEFAULT_FONT;\r\n            ctx.textAlign = style.textAlign;\r\n            ctx.textBaseline = style.textBaseline;\r\n            var hasLineDash = void 0;\r\n            if (ctx.setLineDash) {\r\n                var lineDash = style.lineDash && style.lineWidth > 0 && normalizeLineDash(style.lineDash, style.lineWidth);\r\n                var lineDashOffset = style.lineDashOffset;\r\n                if (lineDash) {\r\n                    var lineScale_2 = (style.strokeNoScale && el.getLineScale) ? el.getLineScale() : 1;\r\n                    if (lineScale_2 && lineScale_2 !== 1) {\r\n                        lineDash = map(lineDash, function (rawVal) {\r\n                            return rawVal / lineScale_2;\r\n                        });\r\n                        lineDashOffset /= lineScale_2;\r\n                    }\r\n                    ctx.setLineDash(lineDash);\r\n                    ctx.lineDashOffset = lineDashOffset;\r\n                    hasLineDash = true;\r\n                }\r\n            }\r\n            if (style.strokeFirst) {\r\n                if (styleHasStroke(style)) {\r\n                    ctx.strokeText(text, style.x, style.y);\r\n                }\r\n                if (styleHasFill(style)) {\r\n                    ctx.fillText(text, style.x, style.y);\r\n                }\r\n            }\r\n            else {\r\n                if (styleHasFill(style)) {\r\n                    ctx.fillText(text, style.x, style.y);\r\n                }\r\n                if (styleHasStroke(style)) {\r\n                    ctx.strokeText(text, style.x, style.y);\r\n                }\r\n            }\r\n            if (hasLineDash) {\r\n                ctx.setLineDash([]);\r\n            }\r\n        }\r\n    }\r\n    var SHADOW_NUMBER_PROPS = ['shadowBlur', 'shadowOffsetX', 'shadowOffsetY'];\r\n    var STROKE_PROPS = [\r\n        ['lineCap', 'butt'], ['lineJoin', 'miter'], ['miterLimit', 10]\r\n    ];\r\n    function bindCommonProps(ctx, style, prevStyle, forceSetAll, scope) {\r\n        var styleChanged = false;\r\n        if (!forceSetAll) {\r\n            prevStyle = prevStyle || {};\r\n            if (style === prevStyle) {\r\n                return false;\r\n            }\r\n        }\r\n        if (forceSetAll || style.opacity !== prevStyle.opacity) {\r\n            if (!styleChanged) {\r\n                flushPathDrawn(ctx, scope);\r\n                styleChanged = true;\r\n            }\r\n            ctx.globalAlpha = style.opacity == null ? DEFAULT_COMMON_STYLE.opacity : style.opacity;\r\n        }\r\n        if (forceSetAll || style.blend !== prevStyle.blend) {\r\n            if (!styleChanged) {\r\n                flushPathDrawn(ctx, scope);\r\n                styleChanged = true;\r\n            }\r\n            ctx.globalCompositeOperation = style.blend || DEFAULT_COMMON_STYLE.blend;\r\n        }\r\n        for (var i = 0; i < SHADOW_NUMBER_PROPS.length; i++) {\r\n            var propName = SHADOW_NUMBER_PROPS[i];\r\n            if (forceSetAll || style[propName] !== prevStyle[propName]) {\r\n                if (!styleChanged) {\r\n                    flushPathDrawn(ctx, scope);\r\n                    styleChanged = true;\r\n                }\r\n                ctx[propName] = ctx.dpr * (style[propName] || 0);\r\n            }\r\n        }\r\n        if (forceSetAll || style.shadowColor !== prevStyle.shadowColor) {\r\n            if (!styleChanged) {\r\n                flushPathDrawn(ctx, scope);\r\n                styleChanged = true;\r\n            }\r\n            ctx.shadowColor = style.shadowColor || DEFAULT_COMMON_STYLE.shadowColor;\r\n        }\r\n        return styleChanged;\r\n    }\r\n    function bindPathAndTextCommonStyle(ctx, el, prevEl, forceSetAll, scope) {\r\n        var style = getStyle(el, scope.inHover);\r\n        var prevStyle = forceSetAll\r\n            ? null\r\n            : (prevEl && getStyle(prevEl, scope.inHover) || {});\r\n        if (style === prevStyle) {\r\n            return false;\r\n        }\r\n        var styleChanged = bindCommonProps(ctx, style, prevStyle, forceSetAll, scope);\r\n        if (forceSetAll || style.fill !== prevStyle.fill) {\r\n            if (!styleChanged) {\r\n                flushPathDrawn(ctx, scope);\r\n                styleChanged = true;\r\n            }\r\n            ctx.fillStyle = style.fill;\r\n        }\r\n        if (forceSetAll || style.stroke !== prevStyle.stroke) {\r\n            if (!styleChanged) {\r\n                flushPathDrawn(ctx, scope);\r\n                styleChanged = true;\r\n            }\r\n            ctx.strokeStyle = style.stroke;\r\n        }\r\n        if (forceSetAll || style.opacity !== prevStyle.opacity) {\r\n            if (!styleChanged) {\r\n                flushPathDrawn(ctx, scope);\r\n                styleChanged = true;\r\n            }\r\n            ctx.globalAlpha = style.opacity == null ? 1 : style.opacity;\r\n        }\r\n        if (el.hasStroke()) {\r\n            var lineWidth = style.lineWidth;\r\n            var newLineWidth = lineWidth / ((style.strokeNoScale && el && el.getLineScale) ? el.getLineScale() : 1);\r\n            if (ctx.lineWidth !== newLineWidth) {\r\n                if (!styleChanged) {\r\n                    flushPathDrawn(ctx, scope);\r\n                    styleChanged = true;\r\n                }\r\n                ctx.lineWidth = newLineWidth;\r\n            }\r\n        }\r\n        for (var i = 0; i < STROKE_PROPS.length; i++) {\r\n            var prop = STROKE_PROPS[i];\r\n            var propName = prop[0];\r\n            if (forceSetAll || style[propName] !== prevStyle[propName]) {\r\n                if (!styleChanged) {\r\n                    flushPathDrawn(ctx, scope);\r\n                    styleChanged = true;\r\n                }\r\n                ctx[propName] = style[propName] || prop[1];\r\n            }\r\n        }\r\n        return styleChanged;\r\n    }\r\n    function bindImageStyle(ctx, el, prevEl, forceSetAll, scope) {\r\n        return bindCommonProps(ctx, getStyle(el, scope.inHover), prevEl && getStyle(prevEl, scope.inHover), forceSetAll, scope);\r\n    }\r\n    function setContextTransform(ctx, el) {\r\n        var m = el.transform;\r\n        var dpr = ctx.dpr || 1;\r\n        if (m) {\r\n            ctx.setTransform(dpr * m[0], dpr * m[1], dpr * m[2], dpr * m[3], dpr * m[4], dpr * m[5]);\r\n        }\r\n        else {\r\n            ctx.setTransform(dpr, 0, 0, dpr, 0, 0);\r\n        }\r\n    }\r\n    function updateClipStatus(clipPaths, ctx, scope) {\r\n        var allClipped = false;\r\n        for (var i = 0; i < clipPaths.length; i++) {\r\n            var clipPath = clipPaths[i];\r\n            allClipped = allClipped || clipPath.isZeroArea();\r\n            setContextTransform(ctx, clipPath);\r\n            ctx.beginPath();\r\n            clipPath.buildPath(ctx, clipPath.shape);\r\n            ctx.clip();\r\n        }\r\n        scope.allClipped = allClipped;\r\n    }\r\n    function isTransformChanged(m0, m1) {\r\n        if (m0 && m1) {\r\n            return m0[0] !== m1[0]\r\n                || m0[1] !== m1[1]\r\n                || m0[2] !== m1[2]\r\n                || m0[3] !== m1[3]\r\n                || m0[4] !== m1[4]\r\n                || m0[5] !== m1[5];\r\n        }\r\n        else if (!m0 && !m1) {\r\n            return false;\r\n        }\r\n        return true;\r\n    }\r\n    var DRAW_TYPE_PATH = 1;\r\n    var DRAW_TYPE_IMAGE = 2;\r\n    var DRAW_TYPE_TEXT = 3;\r\n    var DRAW_TYPE_INCREMENTAL = 4;\r\n    function canPathBatch(style) {\r\n        var hasFill = styleHasFill(style);\r\n        var hasStroke = styleHasStroke(style);\r\n        return !(style.lineDash\r\n            || !(+hasFill ^ +hasStroke)\r\n            || (hasFill && typeof style.fill !== 'string')\r\n            || (hasStroke && typeof style.stroke !== 'string')\r\n            || style.strokePercent < 1\r\n            || style.strokeOpacity < 1\r\n            || style.fillOpacity < 1);\r\n    }\r\n    function flushPathDrawn(ctx, scope) {\r\n        scope.batchFill && ctx.fill();\r\n        scope.batchStroke && ctx.stroke();\r\n        scope.batchFill = '';\r\n        scope.batchStroke = '';\r\n    }\r\n    function getStyle(el, inHover) {\r\n        return inHover ? (el.__hoverStyle || el.style) : el.style;\r\n    }\r\n    function brushSingle(ctx, el) {\r\n        brush(ctx, el, { inHover: false, viewWidth: 0, viewHeight: 0 }, true);\r\n    }\r\n    function brush(ctx, el, scope, isLast) {\r\n        var m = el.transform;\r\n        if (!el.shouldBePainted(scope.viewWidth, scope.viewHeight, false, false)) {\r\n            el.__dirty &= ~Element.REDARAW_BIT;\r\n            el.__isRendered = false;\r\n            return;\r\n        }\r\n        var clipPaths = el.__clipPaths;\r\n        var prevElClipPaths = scope.prevElClipPaths;\r\n        var forceSetTransform = false;\r\n        var forceSetStyle = false;\r\n        if (!prevElClipPaths || isClipPathChanged(clipPaths, prevElClipPaths)) {\r\n            if (prevElClipPaths && prevElClipPaths.length) {\r\n                flushPathDrawn(ctx, scope);\r\n                ctx.restore();\r\n                forceSetStyle = forceSetTransform = true;\r\n                scope.prevElClipPaths = null;\r\n                scope.allClipped = false;\r\n                scope.prevEl = null;\r\n            }\r\n            if (clipPaths && clipPaths.length) {\r\n                flushPathDrawn(ctx, scope);\r\n                ctx.save();\r\n                updateClipStatus(clipPaths, ctx, scope);\r\n                forceSetTransform = true;\r\n            }\r\n            scope.prevElClipPaths = clipPaths;\r\n        }\r\n        if (scope.allClipped) {\r\n            el.__isRendered = false;\r\n            return;\r\n        }\r\n        el.beforeBrush && el.beforeBrush();\r\n        el.innerBeforeBrush();\r\n        var prevEl = scope.prevEl;\r\n        if (!prevEl) {\r\n            forceSetStyle = forceSetTransform = true;\r\n        }\r\n        var canBatchPath = el instanceof Path\r\n            && el.autoBatch\r\n            && canPathBatch(el.style);\r\n        if (forceSetTransform || isTransformChanged(m, prevEl.transform)) {\r\n            flushPathDrawn(ctx, scope);\r\n            setContextTransform(ctx, el);\r\n        }\r\n        else if (!canBatchPath) {\r\n            flushPathDrawn(ctx, scope);\r\n        }\r\n        var style = getStyle(el, scope.inHover);\r\n        if (el instanceof Path) {\r\n            if (scope.lastDrawType !== DRAW_TYPE_PATH) {\r\n                forceSetStyle = true;\r\n                scope.lastDrawType = DRAW_TYPE_PATH;\r\n            }\r\n            bindPathAndTextCommonStyle(ctx, el, prevEl, forceSetStyle, scope);\r\n            if (!canBatchPath || (!scope.batchFill && !scope.batchStroke)) {\r\n                ctx.beginPath();\r\n            }\r\n            brushPath(ctx, el, style, canBatchPath);\r\n            if (canBatchPath) {\r\n                scope.batchFill = style.fill || '';\r\n                scope.batchStroke = style.stroke || '';\r\n            }\r\n        }\r\n        else {\r\n            if (el instanceof TSpan) {\r\n                if (scope.lastDrawType !== DRAW_TYPE_TEXT) {\r\n                    forceSetStyle = true;\r\n                    scope.lastDrawType = DRAW_TYPE_TEXT;\r\n                }\r\n                bindPathAndTextCommonStyle(ctx, el, prevEl, forceSetStyle, scope);\r\n                brushText(ctx, el, style);\r\n            }\r\n            else if (el instanceof ZRImage) {\r\n                if (scope.lastDrawType !== DRAW_TYPE_IMAGE) {\r\n                    forceSetStyle = true;\r\n                    scope.lastDrawType = DRAW_TYPE_IMAGE;\r\n                }\r\n                bindImageStyle(ctx, el, prevEl, forceSetStyle, scope);\r\n                brushImage(ctx, el, style);\r\n            }\r\n            else if (el instanceof IncrementalDisplayble) {\r\n                if (scope.lastDrawType !== DRAW_TYPE_INCREMENTAL) {\r\n                    forceSetStyle = true;\r\n                    scope.lastDrawType = DRAW_TYPE_INCREMENTAL;\r\n                }\r\n                brushIncremental(ctx, el, scope);\r\n            }\r\n        }\r\n        if (canBatchPath && isLast) {\r\n            flushPathDrawn(ctx, scope);\r\n        }\r\n        el.innerAfterBrush();\r\n        el.afterBrush && el.afterBrush();\r\n        scope.prevEl = el;\r\n        el.__dirty = 0;\r\n        el.__isRendered = true;\r\n    }\r\n    function brushIncremental(ctx, el, scope) {\r\n        var displayables = el.getDisplayables();\r\n        var temporalDisplayables = el.getTemporalDisplayables();\r\n        ctx.save();\r\n        var innerScope = {\r\n            prevElClipPaths: null,\r\n            prevEl: null,\r\n            allClipped: false,\r\n            viewWidth: scope.viewWidth,\r\n            viewHeight: scope.viewHeight,\r\n            inHover: scope.inHover\r\n        };\r\n        var i;\r\n        var len;\r\n        for (i = el.getCursor(), len = displayables.length; i < len; i++) {\r\n            var displayable = displayables[i];\r\n            displayable.beforeBrush && displayable.beforeBrush();\r\n            displayable.innerBeforeBrush();\r\n            brush(ctx, displayable, innerScope, i === len - 1);\r\n            displayable.innerAfterBrush();\r\n            displayable.afterBrush && displayable.afterBrush();\r\n            innerScope.prevEl = displayable;\r\n        }\r\n        for (var i_1 = 0, len_1 = temporalDisplayables.length; i_1 < len_1; i_1++) {\r\n            var displayable = temporalDisplayables[i_1];\r\n            displayable.beforeBrush && displayable.beforeBrush();\r\n            displayable.innerBeforeBrush();\r\n            brush(ctx, displayable, innerScope, i_1 === len_1 - 1);\r\n            displayable.innerAfterBrush();\r\n            displayable.afterBrush && displayable.afterBrush();\r\n            innerScope.prevEl = displayable;\r\n        }\r\n        el.clearTemporalDisplayables();\r\n        el.notClear = true;\r\n        ctx.restore();\r\n    }\n\n    function returnFalse() {\r\n        return false;\r\n    }\r\n    function createDom(id, painter, dpr) {\r\n        var newDom = createCanvas();\r\n        var width = painter.getWidth();\r\n        var height = painter.getHeight();\r\n        var newDomStyle = newDom.style;\r\n        if (newDomStyle) {\r\n            newDomStyle.position = 'absolute';\r\n            newDomStyle.left = '0';\r\n            newDomStyle.top = '0';\r\n            newDomStyle.width = width + 'px';\r\n            newDomStyle.height = height + 'px';\r\n            newDom.setAttribute('data-zr-dom-id', id);\r\n        }\r\n        newDom.width = width * dpr;\r\n        newDom.height = height * dpr;\r\n        return newDom;\r\n    }\r\n    var Layer = (function (_super) {\r\n        __extends(Layer, _super);\r\n        function Layer(id, painter, dpr) {\r\n            var _this = _super.call(this) || this;\r\n            _this.motionBlur = false;\r\n            _this.lastFrameAlpha = 0.7;\r\n            _this.dpr = 1;\r\n            _this.virtual = false;\r\n            _this.config = {};\r\n            _this.incremental = false;\r\n            _this.zlevel = 0;\r\n            _this.maxRepaintRectCount = 5;\r\n            _this.__dirty = true;\r\n            _this.__firstTimePaint = true;\r\n            _this.__used = false;\r\n            _this.__drawIndex = 0;\r\n            _this.__startIndex = 0;\r\n            _this.__endIndex = 0;\r\n            _this.__prevStartIndex = null;\r\n            _this.__prevEndIndex = null;\r\n            var dom;\r\n            dpr = dpr || devicePixelRatio;\r\n            if (typeof id === 'string') {\r\n                dom = createDom(id, painter, dpr);\r\n            }\r\n            else if (isObject(id)) {\r\n                dom = id;\r\n                id = dom.id;\r\n            }\r\n            _this.id = id;\r\n            _this.dom = dom;\r\n            var domStyle = dom.style;\r\n            if (domStyle) {\r\n                dom.onselectstart = returnFalse;\r\n                domStyle.webkitUserSelect = 'none';\r\n                domStyle.userSelect = 'none';\r\n                domStyle.webkitTapHighlightColor = 'rgba(0,0,0,0)';\r\n                domStyle['-webkit-touch-callout'] = 'none';\r\n                domStyle.padding = '0';\r\n                domStyle.margin = '0';\r\n                domStyle.borderWidth = '0';\r\n            }\r\n            _this.domBack = null;\r\n            _this.ctxBack = null;\r\n            _this.painter = painter;\r\n            _this.config = null;\r\n            _this.dpr = dpr;\r\n            return _this;\r\n        }\r\n        Layer.prototype.getElementCount = function () {\r\n            return this.__endIndex - this.__startIndex;\r\n        };\r\n        Layer.prototype.afterBrush = function () {\r\n            this.__prevStartIndex = this.__startIndex;\r\n            this.__prevEndIndex = this.__endIndex;\r\n        };\r\n        Layer.prototype.initContext = function () {\r\n            this.ctx = this.dom.getContext('2d');\r\n            this.ctx.dpr = this.dpr;\r\n        };\r\n        Layer.prototype.setUnpainted = function () {\r\n            this.__firstTimePaint = true;\r\n        };\r\n        Layer.prototype.createBackBuffer = function () {\r\n            var dpr = this.dpr;\r\n            this.domBack = createDom('back-' + this.id, this.painter, dpr);\r\n            this.ctxBack = this.domBack.getContext('2d');\r\n            if (dpr !== 1) {\r\n                this.ctxBack.scale(dpr, dpr);\r\n            }\r\n        };\r\n        Layer.prototype.createRepaintRects = function (displayList, prevList, viewWidth, viewHeight) {\r\n            if (this.__firstTimePaint) {\r\n                this.__firstTimePaint = false;\r\n                return null;\r\n            }\r\n            var mergedRepaintRects = [];\r\n            var maxRepaintRectCount = this.maxRepaintRectCount;\r\n            var full = false;\r\n            var pendingRect = new BoundingRect(0, 0, 0, 0);\r\n            function addRectToMergePool(rect) {\r\n                if (!rect.isFinite() || rect.isZero()) {\r\n                    return;\r\n                }\r\n                if (mergedRepaintRects.length === 0) {\r\n                    var boundingRect = new BoundingRect(0, 0, 0, 0);\r\n                    boundingRect.copy(rect);\r\n                    mergedRepaintRects.push(boundingRect);\r\n                }\r\n                else {\r\n                    var isMerged = false;\r\n                    var minDeltaArea = Infinity;\r\n                    var bestRectToMergeIdx = 0;\r\n                    for (var i = 0; i < mergedRepaintRects.length; ++i) {\r\n                        var mergedRect = mergedRepaintRects[i];\r\n                        if (mergedRect.intersect(rect)) {\r\n                            var pendingRect_1 = new BoundingRect(0, 0, 0, 0);\r\n                            pendingRect_1.copy(mergedRect);\r\n                            pendingRect_1.union(rect);\r\n                            mergedRepaintRects[i] = pendingRect_1;\r\n                            isMerged = true;\r\n                            break;\r\n                        }\r\n                        else if (full) {\r\n                            pendingRect.copy(rect);\r\n                            pendingRect.union(mergedRect);\r\n                            var aArea = rect.width * rect.height;\r\n                            var bArea = mergedRect.width * mergedRect.height;\r\n                            var pendingArea = pendingRect.width * pendingRect.height;\r\n                            var deltaArea = pendingArea - aArea - bArea;\r\n                            if (deltaArea < minDeltaArea) {\r\n                                minDeltaArea = minDeltaArea;\r\n                                bestRectToMergeIdx = i;\r\n                            }\r\n                        }\r\n                    }\r\n                    if (full) {\r\n                        mergedRepaintRects[bestRectToMergeIdx].union(rect);\r\n                        isMerged = true;\r\n                    }\r\n                    if (!isMerged) {\r\n                        var boundingRect = new BoundingRect(0, 0, 0, 0);\r\n                        boundingRect.copy(rect);\r\n                        mergedRepaintRects.push(boundingRect);\r\n                    }\r\n                    if (!full) {\r\n                        full = mergedRepaintRects.length >= maxRepaintRectCount;\r\n                    }\r\n                }\r\n            }\r\n            for (var i = this.__startIndex; i < this.__endIndex; ++i) {\r\n                var el = displayList[i];\r\n                if (el) {\r\n                    var shouldPaint = el.shouldBePainted(viewWidth, viewHeight, true, true);\r\n                    var prevRect = el.__isRendered && ((el.__dirty & Element.REDARAW_BIT) || !shouldPaint)\r\n                        ? el.getPrevPaintRect()\r\n                        : null;\r\n                    if (prevRect) {\r\n                        addRectToMergePool(prevRect);\r\n                    }\r\n                    var curRect = shouldPaint && ((el.__dirty & Element.REDARAW_BIT) || !el.__isRendered)\r\n                        ? el.getPaintRect()\r\n                        : null;\r\n                    if (curRect) {\r\n                        addRectToMergePool(curRect);\r\n                    }\r\n                }\r\n            }\r\n            for (var i = this.__prevStartIndex; i < this.__prevEndIndex; ++i) {\r\n                var el = prevList[i];\r\n                var shouldPaint = el.shouldBePainted(viewWidth, viewHeight, true, true);\r\n                if (el && (!shouldPaint || !el.__zr) && el.__isRendered) {\r\n                    var prevRect = el.getPrevPaintRect();\r\n                    if (prevRect) {\r\n                        addRectToMergePool(prevRect);\r\n                    }\r\n                }\r\n            }\r\n            var hasIntersections;\r\n            do {\r\n                hasIntersections = false;\r\n                for (var i = 0; i < mergedRepaintRects.length;) {\r\n                    if (mergedRepaintRects[i].isZero()) {\r\n                        mergedRepaintRects.splice(i, 1);\r\n                        continue;\r\n                    }\r\n                    for (var j = i + 1; j < mergedRepaintRects.length;) {\r\n                        if (mergedRepaintRects[i].intersect(mergedRepaintRects[j])) {\r\n                            hasIntersections = true;\r\n                            mergedRepaintRects[i].union(mergedRepaintRects[j]);\r\n                            mergedRepaintRects.splice(j, 1);\r\n                        }\r\n                        else {\r\n                            j++;\r\n                        }\r\n                    }\r\n                    i++;\r\n                }\r\n            } while (hasIntersections);\r\n            this._paintRects = mergedRepaintRects;\r\n            return mergedRepaintRects;\r\n        };\r\n        Layer.prototype.debugGetPaintRects = function () {\r\n            return (this._paintRects || []).slice();\r\n        };\r\n        Layer.prototype.resize = function (width, height) {\r\n            var dpr = this.dpr;\r\n            var dom = this.dom;\r\n            var domStyle = dom.style;\r\n            var domBack = this.domBack;\r\n            if (domStyle) {\r\n                domStyle.width = width + 'px';\r\n                domStyle.height = height + 'px';\r\n            }\r\n            dom.width = width * dpr;\r\n            dom.height = height * dpr;\r\n            if (domBack) {\r\n                domBack.width = width * dpr;\r\n                domBack.height = height * dpr;\r\n                if (dpr !== 1) {\r\n                    this.ctxBack.scale(dpr, dpr);\r\n                }\r\n            }\r\n        };\r\n        Layer.prototype.clear = function (clearAll, clearColor, repaintRects) {\r\n            var dom = this.dom;\r\n            var ctx = this.ctx;\r\n            var width = dom.width;\r\n            var height = dom.height;\r\n            clearColor = clearColor || this.clearColor;\r\n            var haveMotionBLur = this.motionBlur && !clearAll;\r\n            var lastFrameAlpha = this.lastFrameAlpha;\r\n            var dpr = this.dpr;\r\n            var self = this;\r\n            if (haveMotionBLur) {\r\n                if (!this.domBack) {\r\n                    this.createBackBuffer();\r\n                }\r\n                this.ctxBack.globalCompositeOperation = 'copy';\r\n                this.ctxBack.drawImage(dom, 0, 0, width / dpr, height / dpr);\r\n            }\r\n            var domBack = this.domBack;\r\n            function doClear(x, y, width, height) {\r\n                ctx.clearRect(x, y, width, height);\r\n                if (clearColor && clearColor !== 'transparent') {\r\n                    var clearColorGradientOrPattern = void 0;\r\n                    if (isGradientObject(clearColor)) {\r\n                        clearColorGradientOrPattern = clearColor.__canvasGradient\r\n                            || getCanvasGradient(ctx, clearColor, {\r\n                                x: 0,\r\n                                y: 0,\r\n                                width: width,\r\n                                height: height\r\n                            });\r\n                        clearColor.__canvasGradient = clearColorGradientOrPattern;\r\n                    }\r\n                    else if (isPatternObject(clearColor)) {\r\n                        clearColorGradientOrPattern = createCanvasPattern(ctx, clearColor, {\r\n                            dirty: function () {\r\n                                self.setUnpainted();\r\n                                self.__painter.refresh();\r\n                            }\r\n                        });\r\n                    }\r\n                    ctx.save();\r\n                    ctx.fillStyle = clearColorGradientOrPattern || clearColor;\r\n                    ctx.fillRect(x, y, width, height);\r\n                    ctx.restore();\r\n                }\r\n                if (haveMotionBLur) {\r\n                    ctx.save();\r\n                    ctx.globalAlpha = lastFrameAlpha;\r\n                    ctx.drawImage(domBack, x, y, width, height);\r\n                    ctx.restore();\r\n                }\r\n            }\r\n            if (!repaintRects || haveMotionBLur) {\r\n                doClear(0, 0, width, height);\r\n            }\r\n            else if (repaintRects.length) {\r\n                each(repaintRects, function (rect) {\r\n                    doClear(rect.x * dpr, rect.y * dpr, rect.width * dpr, rect.height * dpr);\r\n                });\r\n            }\r\n        };\r\n        return Layer;\r\n    }(Eventful));\n\n    var HOVER_LAYER_ZLEVEL = 1e5;\r\n    var CANVAS_ZLEVEL = 314159;\r\n    var EL_AFTER_INCREMENTAL_INC = 0.01;\r\n    var INCREMENTAL_INC = 0.001;\r\n    function parseInt10(val) {\r\n        return parseInt(val, 10);\r\n    }\r\n    function isLayerValid(layer) {\r\n        if (!layer) {\r\n            return false;\r\n        }\r\n        if (layer.__builtin__) {\r\n            return true;\r\n        }\r\n        if (typeof (layer.resize) !== 'function'\r\n            || typeof (layer.refresh) !== 'function') {\r\n            return false;\r\n        }\r\n        return true;\r\n    }\r\n    function createRoot(width, height) {\r\n        var domRoot = document.createElement('div');\r\n        domRoot.style.cssText = [\r\n            'position:relative',\r\n            'width:' + width + 'px',\r\n            'height:' + height + 'px',\r\n            'padding:0',\r\n            'margin:0',\r\n            'border-width:0'\r\n        ].join(';') + ';';\r\n        return domRoot;\r\n    }\r\n    var CanvasPainter = (function () {\r\n        function CanvasPainter(root, storage, opts, id) {\r\n            this.type = 'canvas';\r\n            this._zlevelList = [];\r\n            this._prevDisplayList = [];\r\n            this._layers = {};\r\n            this._layerConfig = {};\r\n            this._needsManuallyCompositing = false;\r\n            this.type = 'canvas';\r\n            var singleCanvas = !root.nodeName\r\n                || root.nodeName.toUpperCase() === 'CANVAS';\r\n            this._opts = opts = extend({}, opts || {});\r\n            this.dpr = opts.devicePixelRatio || devicePixelRatio;\r\n            this._singleCanvas = singleCanvas;\r\n            this.root = root;\r\n            var rootStyle = root.style;\r\n            if (rootStyle) {\r\n                rootStyle.webkitTapHighlightColor = 'transparent';\r\n                rootStyle.webkitUserSelect = 'none';\r\n                rootStyle.userSelect = 'none';\r\n                rootStyle['-webkit-touch-callout'] = 'none';\r\n                root.innerHTML = '';\r\n            }\r\n            this.storage = storage;\r\n            var zlevelList = this._zlevelList;\r\n            this._prevDisplayList = [];\r\n            var layers = this._layers;\r\n            if (!singleCanvas) {\r\n                this._width = this._getSize(0);\r\n                this._height = this._getSize(1);\r\n                var domRoot = this._domRoot = createRoot(this._width, this._height);\r\n                root.appendChild(domRoot);\r\n            }\r\n            else {\r\n                var rootCanvas = root;\r\n                var width = rootCanvas.width;\r\n                var height = rootCanvas.height;\r\n                if (opts.width != null) {\r\n                    width = opts.width;\r\n                }\r\n                if (opts.height != null) {\r\n                    height = opts.height;\r\n                }\r\n                this.dpr = opts.devicePixelRatio || 1;\r\n                rootCanvas.width = width * this.dpr;\r\n                rootCanvas.height = height * this.dpr;\r\n                this._width = width;\r\n                this._height = height;\r\n                var mainLayer = new Layer(rootCanvas, this, this.dpr);\r\n                mainLayer.__builtin__ = true;\r\n                mainLayer.initContext();\r\n                layers[CANVAS_ZLEVEL] = mainLayer;\r\n                mainLayer.zlevel = CANVAS_ZLEVEL;\r\n                zlevelList.push(CANVAS_ZLEVEL);\r\n                this._domRoot = root;\r\n            }\r\n        }\r\n        CanvasPainter.prototype.getType = function () {\r\n            return 'canvas';\r\n        };\r\n        CanvasPainter.prototype.isSingleCanvas = function () {\r\n            return this._singleCanvas;\r\n        };\r\n        CanvasPainter.prototype.getViewportRoot = function () {\r\n            return this._domRoot;\r\n        };\r\n        CanvasPainter.prototype.getViewportRootOffset = function () {\r\n            var viewportRoot = this.getViewportRoot();\r\n            if (viewportRoot) {\r\n                return {\r\n                    offsetLeft: viewportRoot.offsetLeft || 0,\r\n                    offsetTop: viewportRoot.offsetTop || 0\r\n                };\r\n            }\r\n        };\r\n        CanvasPainter.prototype.refresh = function (paintAll) {\r\n            var list = this.storage.getDisplayList(true);\r\n            var prevList = this._prevDisplayList;\r\n            var zlevelList = this._zlevelList;\r\n            this._redrawId = Math.random();\r\n            this._paintList(list, prevList, paintAll, this._redrawId);\r\n            for (var i = 0; i < zlevelList.length; i++) {\r\n                var z = zlevelList[i];\r\n                var layer = this._layers[z];\r\n                if (!layer.__builtin__ && layer.refresh) {\r\n                    var clearColor = i === 0 ? this._backgroundColor : null;\r\n                    layer.refresh(clearColor);\r\n                }\r\n            }\r\n            if (this._opts.useDirtyRect) {\r\n                this._prevDisplayList = list.slice();\r\n            }\r\n            return this;\r\n        };\r\n        CanvasPainter.prototype.refreshHover = function () {\r\n            this._paintHoverList(this.storage.getDisplayList(false));\r\n        };\r\n        CanvasPainter.prototype._paintHoverList = function (list) {\r\n            var len = list.length;\r\n            var hoverLayer = this._hoverlayer;\r\n            hoverLayer && hoverLayer.clear();\r\n            if (!len) {\r\n                return;\r\n            }\r\n            var scope = {\r\n                inHover: true,\r\n                viewWidth: this._width,\r\n                viewHeight: this._height\r\n            };\r\n            var ctx;\r\n            for (var i = 0; i < len; i++) {\r\n                var el = list[i];\r\n                if (el.__inHover) {\r\n                    if (!hoverLayer) {\r\n                        hoverLayer = this._hoverlayer = this.getLayer(HOVER_LAYER_ZLEVEL);\r\n                    }\r\n                    if (!ctx) {\r\n                        ctx = hoverLayer.ctx;\r\n                        ctx.save();\r\n                    }\r\n                    brush(ctx, el, scope, i === len - 1);\r\n                }\r\n            }\r\n            if (ctx) {\r\n                ctx.restore();\r\n            }\r\n        };\r\n        CanvasPainter.prototype.getHoverLayer = function () {\r\n            return this.getLayer(HOVER_LAYER_ZLEVEL);\r\n        };\r\n        CanvasPainter.prototype.paintOne = function (ctx, el) {\r\n            brushSingle(ctx, el);\r\n        };\r\n        CanvasPainter.prototype._paintList = function (list, prevList, paintAll, redrawId) {\r\n            if (this._redrawId !== redrawId) {\r\n                return;\r\n            }\r\n            paintAll = paintAll || false;\r\n            this._updateLayerStatus(list);\r\n            var _a = this._doPaintList(list, prevList, paintAll), finished = _a.finished, needsRefreshHover = _a.needsRefreshHover;\r\n            if (this._needsManuallyCompositing) {\r\n                this._compositeManually();\r\n            }\r\n            if (needsRefreshHover) {\r\n                this._paintHoverList(list);\r\n            }\r\n            if (!finished) {\r\n                var self_1 = this;\r\n                requestAnimationFrame$1(function () {\r\n                    self_1._paintList(list, prevList, paintAll, redrawId);\r\n                });\r\n            }\r\n            else {\r\n                this.eachLayer(function (layer) {\r\n                    layer.afterBrush && layer.afterBrush();\r\n                });\r\n            }\r\n        };\r\n        CanvasPainter.prototype._compositeManually = function () {\r\n            var ctx = this.getLayer(CANVAS_ZLEVEL).ctx;\r\n            var width = this._domRoot.width;\r\n            var height = this._domRoot.height;\r\n            ctx.clearRect(0, 0, width, height);\r\n            this.eachBuiltinLayer(function (layer) {\r\n                if (layer.virtual) {\r\n                    ctx.drawImage(layer.dom, 0, 0, width, height);\r\n                }\r\n            });\r\n        };\r\n        CanvasPainter.prototype._doPaintList = function (list, prevList, paintAll) {\r\n            var _this = this;\r\n            var layerList = [];\r\n            var useDirtyRect = this._opts.useDirtyRect;\r\n            for (var zi = 0; zi < this._zlevelList.length; zi++) {\r\n                var zlevel = this._zlevelList[zi];\r\n                var layer = this._layers[zlevel];\r\n                if (layer.__builtin__\r\n                    && layer !== this._hoverlayer\r\n                    && (layer.__dirty || paintAll)) {\r\n                    layerList.push(layer);\r\n                }\r\n            }\r\n            var finished = true;\r\n            var needsRefreshHover = false;\r\n            var _loop_1 = function (k) {\r\n                var layer = layerList[k];\r\n                var ctx = layer.ctx;\r\n                var repaintRects = useDirtyRect\r\n                    && layer.createRepaintRects(list, prevList, this_1._width, this_1._height);\r\n                ctx.save();\r\n                var start = paintAll ? layer.__startIndex : layer.__drawIndex;\r\n                var useTimer = !paintAll && layer.incremental && Date.now;\r\n                var startTime = useTimer && Date.now();\r\n                var clearColor = layer.zlevel === this_1._zlevelList[0]\r\n                    ? this_1._backgroundColor : null;\r\n                if (layer.__startIndex === layer.__endIndex) {\r\n                    layer.clear(false, clearColor, repaintRects);\r\n                }\r\n                else if (start === layer.__startIndex) {\r\n                    var firstEl = list[start];\r\n                    if (!firstEl.incremental || !firstEl.notClear || paintAll) {\r\n                        layer.clear(false, clearColor, repaintRects);\r\n                    }\r\n                }\r\n                if (start === -1) {\r\n                    console.error('For some unknown reason. drawIndex is -1');\r\n                    start = layer.__startIndex;\r\n                }\r\n                var i;\r\n                var repaint = function (repaintRect) {\r\n                    var scope = {\r\n                        inHover: false,\r\n                        allClipped: false,\r\n                        prevEl: null,\r\n                        viewWidth: _this._width,\r\n                        viewHeight: _this._height\r\n                    };\r\n                    for (i = start; i < layer.__endIndex; i++) {\r\n                        var el = list[i];\r\n                        if (el.__inHover) {\r\n                            needsRefreshHover = true;\r\n                        }\r\n                        _this._doPaintEl(el, layer, useDirtyRect, repaintRect, scope, i === layer.__endIndex - 1);\r\n                        if (useTimer) {\r\n                            var dTime = Date.now() - startTime;\r\n                            if (dTime > 15) {\r\n                                break;\r\n                            }\r\n                        }\r\n                    }\r\n                    if (scope.prevElClipPaths) {\r\n                        ctx.restore();\r\n                    }\r\n                };\r\n                if (repaintRects) {\r\n                    if (repaintRects.length === 0) {\r\n                        i = layer.__endIndex;\r\n                    }\r\n                    else {\r\n                        var dpr = this_1.dpr;\r\n                        for (var r = 0; r < repaintRects.length; ++r) {\r\n                            var rect = repaintRects[r];\r\n                            ctx.save();\r\n                            ctx.beginPath();\r\n                            ctx.rect(rect.x * dpr, rect.y * dpr, rect.width * dpr, rect.height * dpr);\r\n                            ctx.clip();\r\n                            repaint(rect);\r\n                            ctx.restore();\r\n                        }\r\n                    }\r\n                }\r\n                else {\r\n                    ctx.save();\r\n                    repaint();\r\n                    ctx.restore();\r\n                }\r\n                layer.__drawIndex = i;\r\n                if (layer.__drawIndex < layer.__endIndex) {\r\n                    finished = false;\r\n                }\r\n            };\r\n            var this_1 = this;\r\n            for (var k = 0; k < layerList.length; k++) {\r\n                _loop_1(k);\r\n            }\r\n            if (env.wxa) {\r\n                each(this._layers, function (layer) {\r\n                    if (layer && layer.ctx && layer.ctx.draw) {\r\n                        layer.ctx.draw();\r\n                    }\r\n                });\r\n            }\r\n            return {\r\n                finished: finished,\r\n                needsRefreshHover: needsRefreshHover\r\n            };\r\n        };\r\n        CanvasPainter.prototype._doPaintEl = function (el, currentLayer, useDirtyRect, repaintRect, scope, isLast) {\r\n            var ctx = currentLayer.ctx;\r\n            if (useDirtyRect) {\r\n                var paintRect = el.getPaintRect();\r\n                if (!repaintRect || paintRect && paintRect.intersect(repaintRect)) {\r\n                    brush(ctx, el, scope, isLast);\r\n                    el.setPrevPaintRect(paintRect);\r\n                }\r\n            }\r\n            else {\r\n                brush(ctx, el, scope, isLast);\r\n            }\r\n        };\r\n        CanvasPainter.prototype.getLayer = function (zlevel, virtual) {\r\n            if (this._singleCanvas && !this._needsManuallyCompositing) {\r\n                zlevel = CANVAS_ZLEVEL;\r\n            }\r\n            var layer = this._layers[zlevel];\r\n            if (!layer) {\r\n                layer = new Layer('zr_' + zlevel, this, this.dpr);\r\n                layer.zlevel = zlevel;\r\n                layer.__builtin__ = true;\r\n                if (this._layerConfig[zlevel]) {\r\n                    merge(layer, this._layerConfig[zlevel], true);\r\n                }\r\n                else if (this._layerConfig[zlevel - EL_AFTER_INCREMENTAL_INC]) {\r\n                    merge(layer, this._layerConfig[zlevel - EL_AFTER_INCREMENTAL_INC], true);\r\n                }\r\n                if (virtual) {\r\n                    layer.virtual = virtual;\r\n                }\r\n                this.insertLayer(zlevel, layer);\r\n                layer.initContext();\r\n            }\r\n            return layer;\r\n        };\r\n        CanvasPainter.prototype.insertLayer = function (zlevel, layer) {\r\n            var layersMap = this._layers;\r\n            var zlevelList = this._zlevelList;\r\n            var len = zlevelList.length;\r\n            var domRoot = this._domRoot;\r\n            var prevLayer = null;\r\n            var i = -1;\r\n            if (layersMap[zlevel]) {\r\n                logError('ZLevel ' + zlevel + ' has been used already');\r\n                return;\r\n            }\r\n            if (!isLayerValid(layer)) {\r\n                logError('Layer of zlevel ' + zlevel + ' is not valid');\r\n                return;\r\n            }\r\n            if (len > 0 && zlevel > zlevelList[0]) {\r\n                for (i = 0; i < len - 1; i++) {\r\n                    if (zlevelList[i] < zlevel\r\n                        && zlevelList[i + 1] > zlevel) {\r\n                        break;\r\n                    }\r\n                }\r\n                prevLayer = layersMap[zlevelList[i]];\r\n            }\r\n            zlevelList.splice(i + 1, 0, zlevel);\r\n            layersMap[zlevel] = layer;\r\n            if (!layer.virtual) {\r\n                if (prevLayer) {\r\n                    var prevDom = prevLayer.dom;\r\n                    if (prevDom.nextSibling) {\r\n                        domRoot.insertBefore(layer.dom, prevDom.nextSibling);\r\n                    }\r\n                    else {\r\n                        domRoot.appendChild(layer.dom);\r\n                    }\r\n                }\r\n                else {\r\n                    if (domRoot.firstChild) {\r\n                        domRoot.insertBefore(layer.dom, domRoot.firstChild);\r\n                    }\r\n                    else {\r\n                        domRoot.appendChild(layer.dom);\r\n                    }\r\n                }\r\n            }\r\n            layer.__painter = this;\r\n        };\r\n        CanvasPainter.prototype.eachLayer = function (cb, context) {\r\n            var zlevelList = this._zlevelList;\r\n            for (var i = 0; i < zlevelList.length; i++) {\r\n                var z = zlevelList[i];\r\n                cb.call(context, this._layers[z], z);\r\n            }\r\n        };\r\n        CanvasPainter.prototype.eachBuiltinLayer = function (cb, context) {\r\n            var zlevelList = this._zlevelList;\r\n            for (var i = 0; i < zlevelList.length; i++) {\r\n                var z = zlevelList[i];\r\n                var layer = this._layers[z];\r\n                if (layer.__builtin__) {\r\n                    cb.call(context, layer, z);\r\n                }\r\n            }\r\n        };\r\n        CanvasPainter.prototype.eachOtherLayer = function (cb, context) {\r\n            var zlevelList = this._zlevelList;\r\n            for (var i = 0; i < zlevelList.length; i++) {\r\n                var z = zlevelList[i];\r\n                var layer = this._layers[z];\r\n                if (!layer.__builtin__) {\r\n                    cb.call(context, layer, z);\r\n                }\r\n            }\r\n        };\r\n        CanvasPainter.prototype.getLayers = function () {\r\n            return this._layers;\r\n        };\r\n        CanvasPainter.prototype._updateLayerStatus = function (list) {\r\n            this.eachBuiltinLayer(function (layer, z) {\r\n                layer.__dirty = layer.__used = false;\r\n            });\r\n            function updatePrevLayer(idx) {\r\n                if (prevLayer) {\r\n                    if (prevLayer.__endIndex !== idx) {\r\n                        prevLayer.__dirty = true;\r\n                    }\r\n                    prevLayer.__endIndex = idx;\r\n                }\r\n            }\r\n            if (this._singleCanvas) {\r\n                for (var i_1 = 1; i_1 < list.length; i_1++) {\r\n                    var el = list[i_1];\r\n                    if (el.zlevel !== list[i_1 - 1].zlevel || el.incremental) {\r\n                        this._needsManuallyCompositing = true;\r\n                        break;\r\n                    }\r\n                }\r\n            }\r\n            var prevLayer = null;\r\n            var incrementalLayerCount = 0;\r\n            var prevZlevel;\r\n            var i;\r\n            for (i = 0; i < list.length; i++) {\r\n                var el = list[i];\r\n                var zlevel = el.zlevel;\r\n                var layer = void 0;\r\n                if (prevZlevel !== zlevel) {\r\n                    prevZlevel = zlevel;\r\n                    incrementalLayerCount = 0;\r\n                }\r\n                if (el.incremental) {\r\n                    layer = this.getLayer(zlevel + INCREMENTAL_INC, this._needsManuallyCompositing);\r\n                    layer.incremental = true;\r\n                    incrementalLayerCount = 1;\r\n                }\r\n                else {\r\n                    layer = this.getLayer(zlevel + (incrementalLayerCount > 0 ? EL_AFTER_INCREMENTAL_INC : 0), this._needsManuallyCompositing);\r\n                }\r\n                if (!layer.__builtin__) {\r\n                    logError('ZLevel ' + zlevel + ' has been used by unkown layer ' + layer.id);\r\n                }\r\n                if (layer !== prevLayer) {\r\n                    layer.__used = true;\r\n                    if (layer.__startIndex !== i) {\r\n                        layer.__dirty = true;\r\n                    }\r\n                    layer.__startIndex = i;\r\n                    if (!layer.incremental) {\r\n                        layer.__drawIndex = i;\r\n                    }\r\n                    else {\r\n                        layer.__drawIndex = -1;\r\n                    }\r\n                    updatePrevLayer(i);\r\n                    prevLayer = layer;\r\n                }\r\n                if ((el.__dirty & Element.REDARAW_BIT) && !el.__inHover) {\r\n                    layer.__dirty = true;\r\n                    if (layer.incremental && layer.__drawIndex < 0) {\r\n                        layer.__drawIndex = i;\r\n                    }\r\n                }\r\n            }\r\n            updatePrevLayer(i);\r\n            this.eachBuiltinLayer(function (layer, z) {\r\n                if (!layer.__used && layer.getElementCount() > 0) {\r\n                    layer.__dirty = true;\r\n                    layer.__startIndex = layer.__endIndex = layer.__drawIndex = 0;\r\n                }\r\n                if (layer.__dirty && layer.__drawIndex < 0) {\r\n                    layer.__drawIndex = layer.__startIndex;\r\n                }\r\n            });\r\n        };\r\n        CanvasPainter.prototype.clear = function () {\r\n            this.eachBuiltinLayer(this._clearLayer);\r\n            return this;\r\n        };\r\n        CanvasPainter.prototype._clearLayer = function (layer) {\r\n            layer.clear();\r\n        };\r\n        CanvasPainter.prototype.setBackgroundColor = function (backgroundColor) {\r\n            this._backgroundColor = backgroundColor;\r\n            each(this._layers, function (layer) {\r\n                layer.setUnpainted();\r\n            });\r\n        };\r\n        CanvasPainter.prototype.configLayer = function (zlevel, config) {\r\n            if (config) {\r\n                var layerConfig = this._layerConfig;\r\n                if (!layerConfig[zlevel]) {\r\n                    layerConfig[zlevel] = config;\r\n                }\r\n                else {\r\n                    merge(layerConfig[zlevel], config, true);\r\n                }\r\n                for (var i = 0; i < this._zlevelList.length; i++) {\r\n                    var _zlevel = this._zlevelList[i];\r\n                    if (_zlevel === zlevel || _zlevel === zlevel + EL_AFTER_INCREMENTAL_INC) {\r\n                        var layer = this._layers[_zlevel];\r\n                        merge(layer, layerConfig[zlevel], true);\r\n                    }\r\n                }\r\n            }\r\n        };\r\n        CanvasPainter.prototype.delLayer = function (zlevel) {\r\n            var layers = this._layers;\r\n            var zlevelList = this._zlevelList;\r\n            var layer = layers[zlevel];\r\n            if (!layer) {\r\n                return;\r\n            }\r\n            layer.dom.parentNode.removeChild(layer.dom);\r\n            delete layers[zlevel];\r\n            zlevelList.splice(indexOf(zlevelList, zlevel), 1);\r\n        };\r\n        CanvasPainter.prototype.resize = function (width, height) {\r\n            if (!this._domRoot.style) {\r\n                if (width == null || height == null) {\r\n                    return;\r\n                }\r\n                this._width = width;\r\n                this._height = height;\r\n                this.getLayer(CANVAS_ZLEVEL).resize(width, height);\r\n            }\r\n            else {\r\n                var domRoot = this._domRoot;\r\n                domRoot.style.display = 'none';\r\n                var opts = this._opts;\r\n                width != null && (opts.width = width);\r\n                height != null && (opts.height = height);\r\n                width = this._getSize(0);\r\n                height = this._getSize(1);\r\n                domRoot.style.display = '';\r\n                if (this._width !== width || height !== this._height) {\r\n                    domRoot.style.width = width + 'px';\r\n                    domRoot.style.height = height + 'px';\r\n                    for (var id in this._layers) {\r\n                        if (this._layers.hasOwnProperty(id)) {\r\n                            this._layers[id].resize(width, height);\r\n                        }\r\n                    }\r\n                    this.refresh(true);\r\n                }\r\n                this._width = width;\r\n                this._height = height;\r\n            }\r\n            return this;\r\n        };\r\n        CanvasPainter.prototype.clearLayer = function (zlevel) {\r\n            var layer = this._layers[zlevel];\r\n            if (layer) {\r\n                layer.clear();\r\n            }\r\n        };\r\n        CanvasPainter.prototype.dispose = function () {\r\n            this.root.innerHTML = '';\r\n            this.root =\r\n                this.storage =\r\n                    this._domRoot =\r\n                        this._layers = null;\r\n        };\r\n        CanvasPainter.prototype.getRenderedCanvas = function (opts) {\r\n            opts = opts || {};\r\n            if (this._singleCanvas && !this._compositeManually) {\r\n                return this._layers[CANVAS_ZLEVEL].dom;\r\n            }\r\n            var imageLayer = new Layer('image', this, opts.pixelRatio || this.dpr);\r\n            var ctx = imageLayer.ctx;\r\n            imageLayer.initContext();\r\n            imageLayer.clear(false, opts.backgroundColor || this._backgroundColor);\r\n            if (opts.pixelRatio <= this.dpr) {\r\n                this.refresh();\r\n                var width_1 = imageLayer.dom.width;\r\n                var height_1 = imageLayer.dom.height;\r\n                var ctx_1 = imageLayer.ctx;\r\n                this.eachLayer(function (layer) {\r\n                    if (layer.__builtin__) {\r\n                        ctx_1.drawImage(layer.dom, 0, 0, width_1, height_1);\r\n                    }\r\n                    else if (layer.renderToCanvas) {\r\n                        imageLayer.ctx.save();\r\n                        layer.renderToCanvas(imageLayer.ctx);\r\n                        imageLayer.ctx.restore();\r\n                    }\r\n                });\r\n            }\r\n            else {\r\n                var scope = {\r\n                    inHover: false,\r\n                    viewWidth: this._width,\r\n                    viewHeight: this._height\r\n                };\r\n                var displayList = this.storage.getDisplayList(true);\r\n                for (var i = 0, len = displayList.length; i < len; i++) {\r\n                    var el = displayList[i];\r\n                    brush(ctx, el, scope, i === len - 1);\r\n                }\r\n            }\r\n            return imageLayer.dom;\r\n        };\r\n        CanvasPainter.prototype.getWidth = function () {\r\n            return this._width;\r\n        };\r\n        CanvasPainter.prototype.getHeight = function () {\r\n            return this._height;\r\n        };\r\n        CanvasPainter.prototype._getSize = function (whIdx) {\r\n            var opts = this._opts;\r\n            var wh = ['width', 'height'][whIdx];\r\n            var cwh = ['clientWidth', 'clientHeight'][whIdx];\r\n            var plt = ['paddingLeft', 'paddingTop'][whIdx];\r\n            var prb = ['paddingRight', 'paddingBottom'][whIdx];\r\n            if (opts[wh] != null && opts[wh] !== 'auto') {\r\n                return parseFloat(opts[wh]);\r\n            }\r\n            var root = this.root;\r\n            var stl = document.defaultView.getComputedStyle(root);\r\n            return ((root[cwh] || parseInt10(stl[wh]) || parseInt10(root.style[wh]))\r\n                - (parseInt10(stl[plt]) || 0)\r\n                - (parseInt10(stl[prb]) || 0)) | 0;\r\n        };\r\n        CanvasPainter.prototype.pathToImage = function (path, dpr) {\r\n            dpr = dpr || this.dpr;\r\n            var canvas = document.createElement('canvas');\r\n            var ctx = canvas.getContext('2d');\r\n            var rect = path.getBoundingRect();\r\n            var style = path.style;\r\n            var shadowBlurSize = style.shadowBlur * dpr;\r\n            var shadowOffsetX = style.shadowOffsetX * dpr;\r\n            var shadowOffsetY = style.shadowOffsetY * dpr;\r\n            var lineWidth = path.hasStroke() ? style.lineWidth : 0;\r\n            var leftMargin = Math.max(lineWidth / 2, -shadowOffsetX + shadowBlurSize);\r\n            var rightMargin = Math.max(lineWidth / 2, shadowOffsetX + shadowBlurSize);\r\n            var topMargin = Math.max(lineWidth / 2, -shadowOffsetY + shadowBlurSize);\r\n            var bottomMargin = Math.max(lineWidth / 2, shadowOffsetY + shadowBlurSize);\r\n            var width = rect.width + leftMargin + rightMargin;\r\n            var height = rect.height + topMargin + bottomMargin;\r\n            canvas.width = width * dpr;\r\n            canvas.height = height * dpr;\r\n            ctx.scale(dpr, dpr);\r\n            ctx.clearRect(0, 0, width, height);\r\n            ctx.dpr = dpr;\r\n            var pathTransform = {\r\n                x: path.x,\r\n                y: path.y,\r\n                scaleX: path.scaleX,\r\n                scaleY: path.scaleY,\r\n                rotation: path.rotation,\r\n                originX: path.originX,\r\n                originY: path.originY\r\n            };\r\n            path.x = leftMargin - rect.x;\r\n            path.y = topMargin - rect.y;\r\n            path.rotation = 0;\r\n            path.scaleX = 1;\r\n            path.scaleY = 1;\r\n            path.updateTransform();\r\n            if (path) {\r\n                brush(ctx, path, {\r\n                    inHover: false,\r\n                    viewWidth: this._width,\r\n                    viewHeight: this._height\r\n                }, true);\r\n            }\r\n            var imgShape = new ZRImage({\r\n                style: {\r\n                    x: 0,\r\n                    y: 0,\r\n                    image: canvas\r\n                }\r\n            });\r\n            extend(path, pathTransform);\r\n            return imgShape;\r\n        };\r\n        return CanvasPainter;\r\n    }());\n\n    registerPainter('canvas', CanvasPainter);\n\n    function findEventDispatcher(target, det, returnFirstMatch) {\r\n        var found;\r\n        while (target) {\r\n            if (det(target)) {\r\n                found = target;\r\n                if (returnFirstMatch) {\r\n                    break;\r\n                }\r\n            }\r\n            target = target.__hostTarget || target.parent;\r\n        }\r\n        return found;\r\n    }\n\n    var wmUniqueIndex = Math.round(Math.random() * 9);\r\n    var WeakMap = (function () {\r\n        function WeakMap() {\r\n            this._id = '__ec_inner_' + wmUniqueIndex++;\r\n        }\r\n        WeakMap.prototype.get = function (key) {\r\n            return this._guard(key)[this._id];\r\n        };\r\n        WeakMap.prototype.set = function (key, value) {\r\n            var target = this._guard(key);\r\n            if (typeof Object.defineProperty === 'function') {\r\n                Object.defineProperty(target, this._id, {\r\n                    value: value,\r\n                    enumerable: false,\r\n                    configurable: true\r\n                });\r\n            }\r\n            else {\r\n                target[this._id] = value;\r\n            }\r\n            return this;\r\n        };\r\n        WeakMap.prototype[\"delete\"] = function (key) {\r\n            if (this.has(key)) {\r\n                delete this._guard(key)[this._id];\r\n                return true;\r\n            }\r\n            return false;\r\n        };\r\n        WeakMap.prototype.has = function (key) {\r\n            return !!this._guard(key)[this._id];\r\n        };\r\n        WeakMap.prototype._guard = function (key) {\r\n            if (key !== Object(key)) {\r\n                throw TypeError('Value of WeakMap is not a non-null object.');\r\n            }\r\n            return key;\r\n        };\r\n        return WeakMap;\r\n    }());\n\n    var Triangle = Path.extend({\r\n        type: 'triangle',\r\n        shape: {\r\n            cx: 0,\r\n            cy: 0,\r\n            width: 0,\r\n            height: 0\r\n        },\r\n        buildPath: function (path, shape) {\r\n            var cx = shape.cx;\r\n            var cy = shape.cy;\r\n            var width = shape.width / 2;\r\n            var height = shape.height / 2;\r\n            path.moveTo(cx, cy - height);\r\n            path.lineTo(cx + width, cy + height);\r\n            path.lineTo(cx - width, cy + height);\r\n            path.closePath();\r\n        }\r\n    });\r\n    var Diamond = Path.extend({\r\n        type: 'diamond',\r\n        shape: {\r\n            cx: 0,\r\n            cy: 0,\r\n            width: 0,\r\n            height: 0\r\n        },\r\n        buildPath: function (path, shape) {\r\n            var cx = shape.cx;\r\n            var cy = shape.cy;\r\n            var width = shape.width / 2;\r\n            var height = shape.height / 2;\r\n            path.moveTo(cx, cy - height);\r\n            path.lineTo(cx + width, cy);\r\n            path.lineTo(cx, cy + height);\r\n            path.lineTo(cx - width, cy);\r\n            path.closePath();\r\n        }\r\n    });\r\n    var Pin = Path.extend({\r\n        type: 'pin',\r\n        shape: {\r\n            x: 0,\r\n            y: 0,\r\n            width: 0,\r\n            height: 0\r\n        },\r\n        buildPath: function (path, shape) {\r\n            var x = shape.x;\r\n            var y = shape.y;\r\n            var w = shape.width / 5 * 3;\r\n            var h = Math.max(w, shape.height);\r\n            var r = w / 2;\r\n            var dy = r * r / (h - r);\r\n            var cy = y - h + r + dy;\r\n            var angle = Math.asin(dy / r);\r\n            var dx = Math.cos(angle) * r;\r\n            var tanX = Math.sin(angle);\r\n            var tanY = Math.cos(angle);\r\n            var cpLen = r * 0.6;\r\n            var cpLen2 = r * 0.7;\r\n            path.moveTo(x - dx, cy + dy);\r\n            path.arc(x, cy, r, Math.PI - angle, Math.PI * 2 + angle);\r\n            path.bezierCurveTo(x + dx - tanX * cpLen, cy + dy + tanY * cpLen, x, y - cpLen2, x, y);\r\n            path.bezierCurveTo(x, y - cpLen2, x - dx + tanX * cpLen, cy + dy + tanY * cpLen, x - dx, cy + dy);\r\n            path.closePath();\r\n        }\r\n    });\r\n    var Arrow = Path.extend({\r\n        type: 'arrow',\r\n        shape: {\r\n            x: 0,\r\n            y: 0,\r\n            width: 0,\r\n            height: 0\r\n        },\r\n        buildPath: function (ctx, shape) {\r\n            var height = shape.height;\r\n            var width = shape.width;\r\n            var x = shape.x;\r\n            var y = shape.y;\r\n            var dx = width / 3 * 2;\r\n            ctx.moveTo(x, y);\r\n            ctx.lineTo(x + dx, y + height);\r\n            ctx.lineTo(x, y + height / 4 * 3);\r\n            ctx.lineTo(x - dx, y + height);\r\n            ctx.lineTo(x, y);\r\n            ctx.closePath();\r\n        }\r\n    });\r\n    var symbolCtors = {\r\n        line: Rect,\r\n        rect: Rect,\r\n        roundRect: Rect,\r\n        square: Rect,\r\n        circle: Circle,\r\n        diamond: Diamond,\r\n        pin: Pin,\r\n        arrow: Arrow,\r\n        triangle: Triangle\r\n    };\r\n    var symbolShapeMakers = {\r\n        line: function (x, y, w, h, shape) {\r\n            var thickness = 2;\r\n            shape.x = x;\r\n            shape.y = y + h / 2 - thickness / 2;\r\n            shape.width = w;\r\n            shape.height = thickness;\r\n        },\r\n        rect: function (x, y, w, h, shape) {\r\n            shape.x = x;\r\n            shape.y = y;\r\n            shape.width = w;\r\n            shape.height = h;\r\n        },\r\n        roundRect: function (x, y, w, h, shape) {\r\n            shape.x = x;\r\n            shape.y = y;\r\n            shape.width = w;\r\n            shape.height = h;\r\n            shape.r = Math.min(w, h) / 4;\r\n        },\r\n        square: function (x, y, w, h, shape) {\r\n            var size = Math.min(w, h);\r\n            shape.x = x;\r\n            shape.y = y;\r\n            shape.width = size;\r\n            shape.height = size;\r\n        },\r\n        circle: function (x, y, w, h, shape) {\r\n            shape.cx = x + w / 2;\r\n            shape.cy = y + h / 2;\r\n            shape.r = Math.min(w, h) / 2;\r\n        },\r\n        diamond: function (x, y, w, h, shape) {\r\n            shape.cx = x + w / 2;\r\n            shape.cy = y + h / 2;\r\n            shape.width = w;\r\n            shape.height = h;\r\n        },\r\n        pin: function (x, y, w, h, shape) {\r\n            shape.x = x + w / 2;\r\n            shape.y = y + h / 2;\r\n            shape.width = w;\r\n            shape.height = h;\r\n        },\r\n        arrow: function (x, y, w, h, shape) {\r\n            shape.x = x + w / 2;\r\n            shape.y = y + h / 2;\r\n            shape.width = w;\r\n            shape.height = h;\r\n        },\r\n        triangle: function (x, y, w, h, shape) {\r\n            shape.cx = x + w / 2;\r\n            shape.cy = y + h / 2;\r\n            shape.width = w;\r\n            shape.height = h;\r\n        }\r\n    };\r\n    var symbolBuildProxies = {};\r\n    each(symbolCtors, function (Ctor, name) {\r\n        symbolBuildProxies[name] = new Ctor();\r\n    });\r\n    var SymbolClz = Path.extend({\r\n        type: 'symbol',\r\n        shape: {\r\n            symbolType: '',\r\n            x: 0,\r\n            y: 0,\r\n            width: 0,\r\n            height: 0\r\n        },\r\n        calculateTextPosition: function (out, config, rect) {\r\n            var res = calculateTextPosition(out, config, rect);\r\n            var shape = this.shape;\r\n            if (shape && shape.symbolType === 'pin' && config.position === 'inside') {\r\n                res.y = rect.y + rect.height * 0.4;\r\n            }\r\n            return res;\r\n        },\r\n        buildPath: function (ctx, shape, inBundle) {\r\n            var symbolType = shape.symbolType;\r\n            if (symbolType !== 'none') {\r\n                var proxySymbol = symbolBuildProxies[symbolType];\r\n                if (!proxySymbol) {\r\n                    symbolType = 'rect';\r\n                    proxySymbol = symbolBuildProxies[symbolType];\r\n                }\r\n                symbolShapeMakers[symbolType](shape.x, shape.y, shape.width, shape.height, proxySymbol.shape);\r\n                proxySymbol.buildPath(ctx, proxySymbol.shape, inBundle);\r\n            }\r\n        }\r\n    });\r\n    function symbolPathSetColor(color, innerColor) {\r\n        if (this.type !== 'image') {\r\n            var symbolStyle = this.style;\r\n            if (this.__isEmptyBrush) {\r\n                symbolStyle.stroke = color;\r\n                symbolStyle.fill = innerColor || '#fff';\r\n                symbolStyle.lineWidth = 2;\r\n            }\r\n            else {\r\n                symbolStyle.fill = color;\r\n            }\r\n            this.markRedraw();\r\n        }\r\n    }\r\n    function createSymbol(symbolType, x, y, w, h, color, keepAspect) {\r\n        var isEmpty = symbolType.indexOf('empty') === 0;\r\n        if (isEmpty) {\r\n            symbolType = symbolType.substr(5, 1).toLowerCase() + symbolType.substr(6);\r\n        }\r\n        var symbolPath;\r\n        if (symbolType.indexOf('image://') === 0) {\r\n            symbolPath = makeImage(symbolType.slice(8), new BoundingRect(x, y, w, h), keepAspect ? 'center' : 'cover');\r\n        }\r\n        else if (symbolType.indexOf('path://') === 0) {\r\n            symbolPath = makePath(symbolType.slice(7), {}, new BoundingRect(x, y, w, h), keepAspect ? 'center' : 'cover');\r\n        }\r\n        else {\r\n            symbolPath = new SymbolClz({\r\n                shape: {\r\n                    symbolType: symbolType,\r\n                    x: x,\r\n                    y: y,\r\n                    width: w,\r\n                    height: h\r\n                }\r\n            });\r\n        }\r\n        symbolPath.__isEmptyBrush = isEmpty;\r\n        symbolPath.setColor = symbolPathSetColor;\r\n        if (color) {\r\n            symbolPath.setColor(color);\r\n        }\r\n        return symbolPath;\r\n    }\n\n    var decalMap = new WeakMap();\r\n    var decalCache = new LRU(100);\r\n    var decalKeys = [\r\n        'symbol', 'symbolSize', 'symbolKeepAspect',\r\n        'color', 'backgroundColor',\r\n        'dashArrayX', 'dashArrayY', 'dashLineOffset',\r\n        'maxTileWidth', 'maxTileHeight'\r\n    ];\r\n    function createOrUpdatePatternFromDecal(decalObject, api) {\r\n        if (decalObject === 'none') {\r\n            return null;\r\n        }\r\n        var dpr = api.getDevicePixelRatio();\r\n        var zr = api.getZr();\r\n        var isSVG = zr.painter.type === 'svg';\r\n        if (decalObject.dirty) {\r\n            decalMap[\"delete\"](decalObject);\r\n        }\r\n        var oldPattern = decalMap.get(decalObject);\r\n        if (oldPattern) {\r\n            return oldPattern;\r\n        }\r\n        var decalOpt = defaults(decalObject, {\r\n            symbol: 'rect',\r\n            symbolSize: 1,\r\n            symbolKeepAspect: true,\r\n            color: 'rgba(0, 0, 0, 0.2)',\r\n            backgroundColor: null,\r\n            dashArrayX: 5,\r\n            dashArrayY: 5,\r\n            dashLineOffset: 0,\r\n            rotation: 0,\r\n            maxTileWidth: 512,\r\n            maxTileHeight: 512\r\n        });\r\n        if (decalOpt.backgroundColor === 'none') {\r\n            decalOpt.backgroundColor = null;\r\n        }\r\n        var pattern = { repeat: 'repeat' };\r\n        setPatternnSource(pattern);\r\n        pattern.rotation = decalOpt.rotation;\r\n        pattern.scaleX = pattern.scaleY = isSVG ? 1 : 1 / dpr;\r\n        decalMap.set(decalObject, pattern);\r\n        decalObject.dirty = false;\r\n        return pattern;\r\n        function setPatternnSource(pattern) {\r\n            var keys = [dpr];\r\n            var isValidKey = true;\r\n            for (var i = 0; i < decalKeys.length; ++i) {\r\n                var value = decalOpt[decalKeys[i]];\r\n                var valueType = typeof value;\r\n                if (value != null\r\n                    && !isArray(value)\r\n                    && valueType !== 'string'\r\n                    && valueType !== 'number'\r\n                    && valueType !== 'boolean') {\r\n                    isValidKey = false;\r\n                    break;\r\n                }\r\n                keys.push(value);\r\n            }\r\n            var cacheKey;\r\n            if (isValidKey) {\r\n                cacheKey = keys.join(',') + (isSVG ? '-svg' : '');\r\n                var cache = decalCache.get(cacheKey);\r\n                if (cache) {\r\n                    isSVG ? pattern.svgElement = cache\r\n                        : pattern.image = cache;\r\n                }\r\n            }\r\n            var dashArrayX = normalizeDashArrayX(decalOpt.dashArrayX);\r\n            var dashArrayY = normalizeDashArrayY(decalOpt.dashArrayY);\r\n            var symbolArray = normalizeSymbolArray(decalOpt.symbol);\r\n            var lineBlockLengthsX = getLineBlockLengthX(dashArrayX);\r\n            var lineBlockLengthY = getLineBlockLengthY(dashArrayY);\r\n            var canvas = !isSVG && createCanvas();\r\n            var svgRoot = isSVG && zr.painter.createSVGElement('g');\r\n            var pSize = getPatternSize();\r\n            var ctx;\r\n            if (canvas) {\r\n                canvas.width = pSize.width * dpr;\r\n                canvas.height = pSize.height * dpr;\r\n                ctx = canvas.getContext('2d');\r\n            }\r\n            brushDecal();\r\n            if (isValidKey) {\r\n                decalCache.put(cacheKey, canvas || svgRoot);\r\n            }\r\n            pattern.image = canvas;\r\n            pattern.svgElement = svgRoot;\r\n            pattern.svgWidth = pSize.width;\r\n            pattern.svgHeight = pSize.height;\r\n            function getPatternSize() {\r\n                var width = 1;\r\n                for (var i = 0, xlen = lineBlockLengthsX.length; i < xlen; ++i) {\r\n                    width = getLeastCommonMultiple(width, lineBlockLengthsX[i]);\r\n                }\r\n                var symbolRepeats = 1;\r\n                for (var i = 0, xlen = symbolArray.length; i < xlen; ++i) {\r\n                    symbolRepeats = getLeastCommonMultiple(symbolRepeats, symbolArray[i].length);\r\n                }\r\n                width *= symbolRepeats;\r\n                var height = lineBlockLengthY * lineBlockLengthsX.length * symbolArray.length;\r\n                if (__DEV__) {\r\n                    var warn = function (attrName) {\r\n                        console.warn(\"Calculated decal size is greater than \" + attrName + \" due to decal option settings so \" + attrName + \" is used for the decal size. Please consider changing the decal option to make a smaller decal or set \" + attrName + \" to be larger to avoid incontinuity.\");\r\n                    };\r\n                    if (width > decalOpt.maxTileWidth) {\r\n                        warn('maxTileWidth');\r\n                    }\r\n                    if (height > decalOpt.maxTileHeight) {\r\n                        warn('maxTileHeight');\r\n                    }\r\n                }\r\n                return {\r\n                    width: Math.max(1, Math.min(width, decalOpt.maxTileWidth)),\r\n                    height: Math.max(1, Math.min(height, decalOpt.maxTileHeight))\r\n                };\r\n            }\r\n            function brushDecal() {\r\n                if (ctx) {\r\n                    ctx.clearRect(0, 0, canvas.width, canvas.height);\r\n                    if (decalOpt.backgroundColor) {\r\n                        ctx.fillStyle = decalOpt.backgroundColor;\r\n                        ctx.fillRect(0, 0, canvas.width, canvas.height);\r\n                    }\r\n                }\r\n                var ySum = 0;\r\n                for (var i = 0; i < dashArrayY.length; ++i) {\r\n                    ySum += dashArrayY[i];\r\n                }\r\n                if (ySum <= 0) {\r\n                    return;\r\n                }\r\n                var y = -lineBlockLengthY;\r\n                var yId = 0;\r\n                var yIdTotal = 0;\r\n                var xId0 = 0;\r\n                while (y < pSize.height) {\r\n                    if (yId % 2 === 0) {\r\n                        var symbolYId = (yIdTotal / 2) % symbolArray.length;\r\n                        var x = 0;\r\n                        var xId1 = 0;\r\n                        var xId1Total = 0;\r\n                        while (x < pSize.width * 2) {\r\n                            var xSum = 0;\r\n                            for (var i = 0; i < dashArrayX[xId0].length; ++i) {\r\n                                xSum += dashArrayX[xId0][i];\r\n                            }\r\n                            if (xSum <= 0) {\r\n                                break;\r\n                            }\r\n                            if (xId1 % 2 === 0) {\r\n                                var size = (1 - decalOpt.symbolSize) * 0.5;\r\n                                var left = x + dashArrayX[xId0][xId1] * size;\r\n                                var top_1 = y + dashArrayY[yId] * size;\r\n                                var width = dashArrayX[xId0][xId1] * decalOpt.symbolSize;\r\n                                var height = dashArrayY[yId] * decalOpt.symbolSize;\r\n                                var symbolXId = (xId1Total / 2) % symbolArray[symbolYId].length;\r\n                                brushSymbol(left, top_1, width, height, symbolArray[symbolYId][symbolXId]);\r\n                            }\r\n                            x += dashArrayX[xId0][xId1];\r\n                            ++xId1Total;\r\n                            ++xId1;\r\n                            if (xId1 === dashArrayX[xId0].length) {\r\n                                xId1 = 0;\r\n                            }\r\n                        }\r\n                        ++xId0;\r\n                        if (xId0 === dashArrayX.length) {\r\n                            xId0 = 0;\r\n                        }\r\n                    }\r\n                    y += dashArrayY[yId];\r\n                    ++yIdTotal;\r\n                    ++yId;\r\n                    if (yId === dashArrayY.length) {\r\n                        yId = 0;\r\n                    }\r\n                }\r\n                function brushSymbol(x, y, width, height, symbolType) {\r\n                    var scale = isSVG ? 1 : dpr;\r\n                    var symbol = createSymbol(symbolType, x * scale, y * scale, width * scale, height * scale, decalOpt.color, decalOpt.symbolKeepAspect);\r\n                    if (isSVG) {\r\n                        svgRoot.appendChild(zr.painter.paintOne(symbol));\r\n                    }\r\n                    else {\r\n                        brushSingle(ctx, symbol);\r\n                    }\r\n                }\r\n            }\r\n        }\r\n    }\r\n    function normalizeSymbolArray(symbol) {\r\n        if (!symbol || symbol.length === 0) {\r\n            return [['rect']];\r\n        }\r\n        if (typeof symbol === 'string') {\r\n            return [[symbol]];\r\n        }\r\n        var isAllString = true;\r\n        for (var i = 0; i < symbol.length; ++i) {\r\n            if (typeof symbol[i] !== 'string') {\r\n                isAllString = false;\r\n                break;\r\n            }\r\n        }\r\n        if (isAllString) {\r\n            return normalizeSymbolArray([symbol]);\r\n        }\r\n        var result = [];\r\n        for (var i = 0; i < symbol.length; ++i) {\r\n            if (typeof symbol[i] === 'string') {\r\n                result.push([symbol[i]]);\r\n            }\r\n            else {\r\n                result.push(symbol[i]);\r\n            }\r\n        }\r\n        return result;\r\n    }\r\n    function normalizeDashArrayX(dash) {\r\n        if (!dash || dash.length === 0) {\r\n            return [[0, 0]];\r\n        }\r\n        if (typeof dash === 'number') {\r\n            var dashValue = Math.ceil(dash);\r\n            return [[dashValue, dashValue]];\r\n        }\r\n        var isAllNumber = true;\r\n        for (var i = 0; i < dash.length; ++i) {\r\n            if (typeof dash[i] !== 'number') {\r\n                isAllNumber = false;\r\n                break;\r\n            }\r\n        }\r\n        if (isAllNumber) {\r\n            return normalizeDashArrayX([dash]);\r\n        }\r\n        var result = [];\r\n        for (var i = 0; i < dash.length; ++i) {\r\n            if (typeof dash[i] === 'number') {\r\n                var dashValue = Math.ceil(dash[i]);\r\n                result.push([dashValue, dashValue]);\r\n            }\r\n            else {\r\n                var dashValue = map(dash[i], function (n) { return Math.ceil(n); });\r\n                if (dashValue.length % 2 === 1) {\r\n                    result.push(dashValue.concat(dashValue));\r\n                }\r\n                else {\r\n                    result.push(dashValue);\r\n                }\r\n            }\r\n        }\r\n        return result;\r\n    }\r\n    function normalizeDashArrayY(dash) {\r\n        if (!dash || typeof dash === 'object' && dash.length === 0) {\r\n            return [0, 0];\r\n        }\r\n        if (typeof dash === 'number') {\r\n            var dashValue_1 = Math.ceil(dash);\r\n            return [dashValue_1, dashValue_1];\r\n        }\r\n        var dashValue = map(dash, function (n) { return Math.ceil(n); });\r\n        return dash.length % 2 ? dashValue.concat(dashValue) : dashValue;\r\n    }\r\n    function getLineBlockLengthX(dash) {\r\n        return map(dash, function (line) {\r\n            return getLineBlockLengthY(line);\r\n        });\r\n    }\r\n    function getLineBlockLengthY(dash) {\r\n        var blockLength = 0;\r\n        for (var i = 0; i < dash.length; ++i) {\r\n            blockLength += dash[i];\r\n        }\r\n        if (dash.length % 2 === 1) {\r\n            return blockLength * 2;\r\n        }\r\n        return blockLength;\r\n    }\n\n    function decalVisual(ecModel, api) {\r\n        ecModel.eachRawSeries(function (seriesModel) {\r\n            if (ecModel.isSeriesFiltered(seriesModel)) {\r\n                return;\r\n            }\r\n            var data = seriesModel.getData();\r\n            if (data.hasItemVisual()) {\r\n                data.each(function (idx) {\r\n                    var decal = data.getItemVisual(idx, 'decal');\r\n                    if (decal) {\r\n                        var itemStyle = data.ensureUniqueItemVisual(idx, 'style');\r\n                        itemStyle.decal = createOrUpdatePatternFromDecal(decal, api);\r\n                    }\r\n                });\r\n            }\r\n            var decal = data.getVisual('decal');\r\n            if (decal) {\r\n                var style = data.getVisual('style');\r\n                style.decal = createOrUpdatePatternFromDecal(decal, api);\r\n            }\r\n        });\r\n    }\n\n    var assert$1 = assert;\r\n    var each$3 = each;\r\n    var isFunction$1 = isFunction;\r\n    var isObject$2 = isObject;\r\n    var version = '5.0.0';\r\n    var dependencies = {\r\n        zrender: '5.0.1'\r\n    };\r\n    var TEST_FRAME_REMAIN_TIME = 1;\r\n    var PRIORITY_PROCESSOR_SERIES_FILTER = 800;\r\n    var PRIORITY_PROCESSOR_DATASTACK = 900;\r\n    var PRIORITY_PROCESSOR_FILTER = 1000;\r\n    var PRIORITY_PROCESSOR_DEFAULT = 2000;\r\n    var PRIORITY_PROCESSOR_STATISTIC = 5000;\r\n    var PRIORITY_VISUAL_LAYOUT = 1000;\r\n    var PRIORITY_VISUAL_PROGRESSIVE_LAYOUT = 1100;\r\n    var PRIORITY_VISUAL_GLOBAL = 2000;\r\n    var PRIORITY_VISUAL_CHART = 3000;\r\n    var PRIORITY_VISUAL_COMPONENT = 4000;\r\n    var PRIORITY_VISUAL_CHART_DATA_CUSTOM = 4500;\r\n    var PRIORITY_VISUAL_POST_CHART_LAYOUT = 4600;\r\n    var PRIORITY_VISUAL_BRUSH = 5000;\r\n    var PRIORITY_VISUAL_ARIA = 6000;\r\n    var PRIORITY_VISUAL_DECAL = 7000;\r\n    var PRIORITY = {\r\n        PROCESSOR: {\r\n            FILTER: PRIORITY_PROCESSOR_FILTER,\r\n            SERIES_FILTER: PRIORITY_PROCESSOR_SERIES_FILTER,\r\n            STATISTIC: PRIORITY_PROCESSOR_STATISTIC\r\n        },\r\n        VISUAL: {\r\n            LAYOUT: PRIORITY_VISUAL_LAYOUT,\r\n            PROGRESSIVE_LAYOUT: PRIORITY_VISUAL_PROGRESSIVE_LAYOUT,\r\n            GLOBAL: PRIORITY_VISUAL_GLOBAL,\r\n            CHART: PRIORITY_VISUAL_CHART,\r\n            POST_CHART_LAYOUT: PRIORITY_VISUAL_POST_CHART_LAYOUT,\r\n            COMPONENT: PRIORITY_VISUAL_COMPONENT,\r\n            BRUSH: PRIORITY_VISUAL_BRUSH,\r\n            CHART_ITEM: PRIORITY_VISUAL_CHART_DATA_CUSTOM,\r\n            ARIA: PRIORITY_VISUAL_ARIA,\r\n            DECAL: PRIORITY_VISUAL_DECAL\r\n        }\r\n    };\r\n    var IN_MAIN_PROCESS_KEY = '__flagInMainProcess';\r\n    var OPTION_UPDATED_KEY = '__optionUpdated';\r\n    var STATUS_NEEDS_UPDATE_KEY = '__needsUpdateStatus';\r\n    var ACTION_REG = /^[a-zA-Z0-9_]+$/;\r\n    var CONNECT_STATUS_KEY = '__connectUpdateStatus';\r\n    var CONNECT_STATUS_PENDING = 0;\r\n    var CONNECT_STATUS_UPDATING = 1;\r\n    var CONNECT_STATUS_UPDATED = 2;\r\n    function createRegisterEventWithLowercaseECharts(method) {\r\n        return function () {\r\n            var args = [];\r\n            for (var _i = 0; _i < arguments.length; _i++) {\r\n                args[_i] = arguments[_i];\r\n            }\r\n            if (this.isDisposed()) {\r\n                disposedWarning(this.id);\r\n                return;\r\n            }\r\n            return toLowercaseNameAndCallEventful(this, method, args);\r\n        };\r\n    }\r\n    function createRegisterEventWithLowercaseMessageCenter(method) {\r\n        return function () {\r\n            var args = [];\r\n            for (var _i = 0; _i < arguments.length; _i++) {\r\n                args[_i] = arguments[_i];\r\n            }\r\n            return toLowercaseNameAndCallEventful(this, method, args);\r\n        };\r\n    }\r\n    function toLowercaseNameAndCallEventful(host, method, args) {\r\n        args[0] = args[0] && args[0].toLowerCase();\r\n        return Eventful.prototype[method].apply(host, args);\r\n    }\r\n    var MessageCenter = (function (_super) {\r\n        __extends(MessageCenter, _super);\r\n        function MessageCenter() {\r\n            return _super !== null && _super.apply(this, arguments) || this;\r\n        }\r\n        return MessageCenter;\r\n    }(Eventful));\r\n    var messageCenterProto = MessageCenter.prototype;\r\n    messageCenterProto.on = createRegisterEventWithLowercaseMessageCenter('on');\r\n    messageCenterProto.off = createRegisterEventWithLowercaseMessageCenter('off');\r\n    var prepare;\r\n    var prepareView;\r\n    var updateDirectly;\r\n    var updateMethods;\r\n    var doConvertPixel;\r\n    var updateStreamModes;\r\n    var doDispatchAction;\r\n    var flushPendingActions;\r\n    var triggerUpdatedEvent;\r\n    var bindRenderedEvent;\r\n    var bindMouseEvent;\r\n    var clearColorPalette;\r\n    var render;\r\n    var renderComponents;\r\n    var renderSeries;\r\n    var performPostUpdateFuncs;\r\n    var createExtensionAPI;\r\n    var enableConnect;\r\n    var setTransitionOpt;\r\n    var markStatusToUpdate;\r\n    var applyChangedStates;\r\n    var ECharts = (function (_super) {\r\n        __extends(ECharts, _super);\r\n        function ECharts(dom, theme, opts) {\r\n            var _this = _super.call(this, new ECEventProcessor()) || this;\r\n            _this._chartsViews = [];\r\n            _this._chartsMap = {};\r\n            _this._componentsViews = [];\r\n            _this._componentsMap = {};\r\n            _this._pendingActions = [];\r\n            opts = opts || {};\r\n            if (typeof theme === 'string') {\r\n                theme = themeStorage[theme];\r\n            }\r\n            _this._dom = dom;\r\n            var root = (typeof window === 'undefined' ? global : window);\r\n            var defaultRenderer = 'canvas';\r\n            var defaultUseDirtyRect = false;\r\n            if (__DEV__) {\r\n                defaultRenderer = root.__ECHARTS__DEFAULT__RENDERER__ || defaultRenderer;\r\n                var devUseDirtyRect = root.__ECHARTS__DEFAULT__USE_DIRTY_RECT__;\r\n                defaultUseDirtyRect = devUseDirtyRect == null\r\n                    ? defaultUseDirtyRect\r\n                    : devUseDirtyRect;\r\n            }\r\n            var zr = _this._zr = init(dom, {\r\n                renderer: opts.renderer || defaultRenderer,\r\n                devicePixelRatio: opts.devicePixelRatio,\r\n                width: opts.width,\r\n                height: opts.height,\r\n                useDirtyRect: opts.useDirtyRect == null ? defaultUseDirtyRect : opts.useDirtyRect\r\n            });\r\n            _this._throttledZrFlush = throttle(bind(zr.flush, zr), 17);\r\n            theme = clone(theme);\r\n            theme && globalBackwardCompat(theme, true);\r\n            _this._theme = theme;\r\n            _this._locale = createLocaleObject(opts.locale || SYSTEM_LANG);\r\n            _this._coordSysMgr = new CoordinateSystemManager();\r\n            var api = _this._api = createExtensionAPI(_this);\r\n            function prioritySortFunc(a, b) {\r\n                return a.__prio - b.__prio;\r\n            }\r\n            sort(visualFuncs, prioritySortFunc);\r\n            sort(dataProcessorFuncs, prioritySortFunc);\r\n            _this._scheduler = new Scheduler(_this, api, dataProcessorFuncs, visualFuncs);\r\n            _this._messageCenter = new MessageCenter();\r\n            _this._labelManager = new LabelManager();\r\n            _this._initEvents();\r\n            _this.resize = bind(_this.resize, _this);\r\n            zr.animation.on('frame', _this._onframe, _this);\r\n            bindRenderedEvent(zr, _this);\r\n            bindMouseEvent(zr, _this);\r\n            setAsPrimitive(_this);\r\n            return _this;\r\n        }\r\n        ECharts.prototype._onframe = function () {\r\n            if (this._disposed) {\r\n                return;\r\n            }\r\n            applyChangedStates(this);\r\n            var scheduler = this._scheduler;\r\n            if (this[OPTION_UPDATED_KEY]) {\r\n                var silent = this[OPTION_UPDATED_KEY].silent;\r\n                this[IN_MAIN_PROCESS_KEY] = true;\r\n                prepare(this);\r\n                updateMethods.update.call(this);\r\n                this._zr.flush();\r\n                this[IN_MAIN_PROCESS_KEY] = false;\r\n                this[OPTION_UPDATED_KEY] = false;\r\n                flushPendingActions.call(this, silent);\r\n                triggerUpdatedEvent.call(this, silent);\r\n            }\r\n            else if (scheduler.unfinished) {\r\n                var remainTime = TEST_FRAME_REMAIN_TIME;\r\n                var ecModel = this._model;\r\n                var api = this._api;\r\n                scheduler.unfinished = false;\r\n                do {\r\n                    var startTime = +new Date();\r\n                    scheduler.performSeriesTasks(ecModel);\r\n                    scheduler.performDataProcessorTasks(ecModel);\r\n                    updateStreamModes(this, ecModel);\r\n                    scheduler.performVisualTasks(ecModel);\r\n                    renderSeries(this, this._model, api, 'remain');\r\n                    remainTime -= (+new Date() - startTime);\r\n                } while (remainTime > 0 && scheduler.unfinished);\r\n                if (!scheduler.unfinished) {\r\n                    this._zr.flush();\r\n                }\r\n            }\r\n        };\r\n        ECharts.prototype.getDom = function () {\r\n            return this._dom;\r\n        };\r\n        ECharts.prototype.getId = function () {\r\n            return this.id;\r\n        };\r\n        ECharts.prototype.getZr = function () {\r\n            return this._zr;\r\n        };\r\n        ECharts.prototype.setOption = function (option, notMerge, lazyUpdate) {\r\n            if (__DEV__) {\r\n                assert$1(!this[IN_MAIN_PROCESS_KEY], '`setOption` should not be called during main process.');\r\n            }\r\n            if (this._disposed) {\r\n                disposedWarning(this.id);\r\n                return;\r\n            }\r\n            var silent;\r\n            var replaceMerge;\r\n            var transitionOpt;\r\n            if (isObject$2(notMerge)) {\r\n                lazyUpdate = notMerge.lazyUpdate;\r\n                silent = notMerge.silent;\r\n                replaceMerge = notMerge.replaceMerge;\r\n                transitionOpt = notMerge.transition;\r\n                notMerge = notMerge.notMerge;\r\n            }\r\n            this[IN_MAIN_PROCESS_KEY] = true;\r\n            if (!this._model || notMerge) {\r\n                var optionManager = new OptionManager(this._api);\r\n                var theme = this._theme;\r\n                var ecModel = this._model = new GlobalModel();\r\n                ecModel.scheduler = this._scheduler;\r\n                ecModel.init(null, null, null, theme, this._locale, optionManager);\r\n            }\r\n            this._model.setOption(option, { replaceMerge: replaceMerge }, optionPreprocessorFuncs);\r\n            setTransitionOpt(this, transitionOpt);\r\n            if (lazyUpdate) {\r\n                this[OPTION_UPDATED_KEY] = { silent: silent };\r\n                this[IN_MAIN_PROCESS_KEY] = false;\r\n                this.getZr().wakeUp();\r\n            }\r\n            else {\r\n                prepare(this);\r\n                updateMethods.update.call(this);\r\n                this._zr.flush();\r\n                this[OPTION_UPDATED_KEY] = false;\r\n                this[IN_MAIN_PROCESS_KEY] = false;\r\n                flushPendingActions.call(this, silent);\r\n                triggerUpdatedEvent.call(this, silent);\r\n            }\r\n        };\r\n        ECharts.prototype.setTheme = function () {\r\n            console.error('ECharts#setTheme() is DEPRECATED in ECharts 3.0');\r\n        };\r\n        ECharts.prototype.getModel = function () {\r\n            return this._model;\r\n        };\r\n        ECharts.prototype.getOption = function () {\r\n            return this._model && this._model.getOption();\r\n        };\r\n        ECharts.prototype.getWidth = function () {\r\n            return this._zr.getWidth();\r\n        };\r\n        ECharts.prototype.getHeight = function () {\r\n            return this._zr.getHeight();\r\n        };\r\n        ECharts.prototype.getDevicePixelRatio = function () {\r\n            return this._zr.painter.dpr || window.devicePixelRatio || 1;\r\n        };\r\n        ECharts.prototype.getRenderedCanvas = function (opts) {\r\n            if (!env.canvasSupported) {\r\n                return;\r\n            }\r\n            opts = extend({}, opts || {});\r\n            opts.pixelRatio = opts.pixelRatio || 1;\r\n            opts.backgroundColor = opts.backgroundColor\r\n                || this._model.get('backgroundColor');\r\n            var zr = this._zr;\r\n            return zr.painter.getRenderedCanvas(opts);\r\n        };\r\n        ECharts.prototype.getSvgDataURL = function () {\r\n            if (!env.svgSupported) {\r\n                return;\r\n            }\r\n            var zr = this._zr;\r\n            var list = zr.storage.getDisplayList();\r\n            each(list, function (el) {\r\n                el.stopAnimation(null, true);\r\n            });\r\n            return zr.painter.toDataURL();\r\n        };\r\n        ECharts.prototype.getDataURL = function (opts) {\r\n            if (this._disposed) {\r\n                disposedWarning(this.id);\r\n                return;\r\n            }\r\n            opts = opts || {};\r\n            var excludeComponents = opts.excludeComponents;\r\n            var ecModel = this._model;\r\n            var excludesComponentViews = [];\r\n            var self = this;\r\n            each$3(excludeComponents, function (componentType) {\r\n                ecModel.eachComponent({\r\n                    mainType: componentType\r\n                }, function (component) {\r\n                    var view = self._componentsMap[component.__viewId];\r\n                    if (!view.group.ignore) {\r\n                        excludesComponentViews.push(view);\r\n                        view.group.ignore = true;\r\n                    }\r\n                });\r\n            });\r\n            var url = this._zr.painter.getType() === 'svg'\r\n                ? this.getSvgDataURL()\r\n                : this.getRenderedCanvas(opts).toDataURL('image/' + (opts && opts.type || 'png'));\r\n            each$3(excludesComponentViews, function (view) {\r\n                view.group.ignore = false;\r\n            });\r\n            return url;\r\n        };\r\n        ECharts.prototype.getConnectedDataURL = function (opts) {\r\n            if (this._disposed) {\r\n                disposedWarning(this.id);\r\n                return;\r\n            }\r\n            if (!env.canvasSupported) {\r\n                return;\r\n            }\r\n            var isSvg = opts.type === 'svg';\r\n            var groupId = this.group;\r\n            var mathMin = Math.min;\r\n            var mathMax = Math.max;\r\n            var MAX_NUMBER = Infinity;\r\n            if (connectedGroups[groupId]) {\r\n                var left_1 = MAX_NUMBER;\r\n                var top_1 = MAX_NUMBER;\r\n                var right_1 = -MAX_NUMBER;\r\n                var bottom_1 = -MAX_NUMBER;\r\n                var canvasList_1 = [];\r\n                var dpr_1 = (opts && opts.pixelRatio) || 1;\r\n                each(instances, function (chart, id) {\r\n                    if (chart.group === groupId) {\r\n                        var canvas = isSvg\r\n                            ? chart.getZr().painter.getSvgDom().innerHTML\r\n                            : chart.getRenderedCanvas(clone(opts));\r\n                        var boundingRect = chart.getDom().getBoundingClientRect();\r\n                        left_1 = mathMin(boundingRect.left, left_1);\r\n                        top_1 = mathMin(boundingRect.top, top_1);\r\n                        right_1 = mathMax(boundingRect.right, right_1);\r\n                        bottom_1 = mathMax(boundingRect.bottom, bottom_1);\r\n                        canvasList_1.push({\r\n                            dom: canvas,\r\n                            left: boundingRect.left,\r\n                            top: boundingRect.top\r\n                        });\r\n                    }\r\n                });\r\n                left_1 *= dpr_1;\r\n                top_1 *= dpr_1;\r\n                right_1 *= dpr_1;\r\n                bottom_1 *= dpr_1;\r\n                var width = right_1 - left_1;\r\n                var height = bottom_1 - top_1;\r\n                var targetCanvas = createCanvas();\r\n                var zr_1 = init(targetCanvas, {\r\n                    renderer: isSvg ? 'svg' : 'canvas'\r\n                });\r\n                zr_1.resize({\r\n                    width: width,\r\n                    height: height\r\n                });\r\n                if (isSvg) {\r\n                    var content_1 = '';\r\n                    each$3(canvasList_1, function (item) {\r\n                        var x = item.left - left_1;\r\n                        var y = item.top - top_1;\r\n                        content_1 += '<g transform=\"translate(' + x + ','\r\n                            + y + ')\">' + item.dom + '</g>';\r\n                    });\r\n                    zr_1.painter.getSvgRoot().innerHTML = content_1;\r\n                    if (opts.connectedBackgroundColor) {\r\n                        zr_1.painter.setBackgroundColor(opts.connectedBackgroundColor);\r\n                    }\r\n                    zr_1.refreshImmediately();\r\n                    return zr_1.painter.toDataURL();\r\n                }\r\n                else {\r\n                    if (opts.connectedBackgroundColor) {\r\n                        zr_1.add(new Rect({\r\n                            shape: {\r\n                                x: 0,\r\n                                y: 0,\r\n                                width: width,\r\n                                height: height\r\n                            },\r\n                            style: {\r\n                                fill: opts.connectedBackgroundColor\r\n                            }\r\n                        }));\r\n                    }\r\n                    each$3(canvasList_1, function (item) {\r\n                        var img = new ZRImage({\r\n                            style: {\r\n                                x: item.left * dpr_1 - left_1,\r\n                                y: item.top * dpr_1 - top_1,\r\n                                image: item.dom\r\n                            }\r\n                        });\r\n                        zr_1.add(img);\r\n                    });\r\n                    zr_1.refreshImmediately();\r\n                    return targetCanvas.toDataURL('image/' + (opts && opts.type || 'png'));\r\n                }\r\n            }\r\n            else {\r\n                return this.getDataURL(opts);\r\n            }\r\n        };\r\n        ECharts.prototype.convertToPixel = function (finder, value) {\r\n            return doConvertPixel(this, 'convertToPixel', finder, value);\r\n        };\r\n        ECharts.prototype.convertFromPixel = function (finder, value) {\r\n            return doConvertPixel(this, 'convertFromPixel', finder, value);\r\n        };\r\n        ECharts.prototype.containPixel = function (finder, value) {\r\n            if (this._disposed) {\r\n                disposedWarning(this.id);\r\n                return;\r\n            }\r\n            var ecModel = this._model;\r\n            var result;\r\n            var findResult = parseFinder(ecModel, finder);\r\n            each(findResult, function (models, key) {\r\n                key.indexOf('Models') >= 0 && each(models, function (model) {\r\n                    var coordSys = model.coordinateSystem;\r\n                    if (coordSys && coordSys.containPoint) {\r\n                        result = result || !!coordSys.containPoint(value);\r\n                    }\r\n                    else if (key === 'seriesModels') {\r\n                        var view = this._chartsMap[model.__viewId];\r\n                        if (view && view.containPoint) {\r\n                            result = result || view.containPoint(value, model);\r\n                        }\r\n                        else {\r\n                            if (__DEV__) {\r\n                                console.warn(key + ': ' + (view\r\n                                    ? 'The found component do not support containPoint.'\r\n                                    : 'No view mapping to the found component.'));\r\n                            }\r\n                        }\r\n                    }\r\n                    else {\r\n                        if (__DEV__) {\r\n                            console.warn(key + ': containPoint is not supported');\r\n                        }\r\n                    }\r\n                }, this);\r\n            }, this);\r\n            return !!result;\r\n        };\r\n        ECharts.prototype.getVisual = function (finder, visualType) {\r\n            var ecModel = this._model;\r\n            var parsedFinder = parseFinder(ecModel, finder, {\r\n                defaultMainType: 'series'\r\n            });\r\n            var seriesModel = parsedFinder.seriesModel;\r\n            if (__DEV__) {\r\n                if (!seriesModel) {\r\n                    console.warn('There is no specified seires model');\r\n                }\r\n            }\r\n            var data = seriesModel.getData();\r\n            var dataIndexInside = parsedFinder.hasOwnProperty('dataIndexInside')\r\n                ? parsedFinder.dataIndexInside\r\n                : parsedFinder.hasOwnProperty('dataIndex')\r\n                    ? data.indexOfRawIndex(parsedFinder.dataIndex)\r\n                    : null;\r\n            return dataIndexInside != null\r\n                ? getItemVisualFromData(data, dataIndexInside, visualType)\r\n                : getVisualFromData(data, visualType);\r\n        };\r\n        ECharts.prototype.getViewOfComponentModel = function (componentModel) {\r\n            return this._componentsMap[componentModel.__viewId];\r\n        };\r\n        ECharts.prototype.getViewOfSeriesModel = function (seriesModel) {\r\n            return this._chartsMap[seriesModel.__viewId];\r\n        };\r\n        ECharts.prototype._initEvents = function () {\r\n            var _this = this;\r\n            each$3(MOUSE_EVENT_NAMES, function (eveName) {\r\n                var handler = function (e) {\r\n                    var ecModel = _this.getModel();\r\n                    var el = e.target;\r\n                    var params;\r\n                    var isGlobalOut = eveName === 'globalout';\r\n                    if (isGlobalOut) {\r\n                        params = {};\r\n                    }\r\n                    else {\r\n                        el && findEventDispatcher(el, function (parent) {\r\n                            var ecData = getECData(parent);\r\n                            if (ecData && ecData.dataIndex != null) {\r\n                                var dataModel = ecData.dataModel || ecModel.getSeriesByIndex(ecData.seriesIndex);\r\n                                params = (dataModel && dataModel.getDataParams(ecData.dataIndex, ecData.dataType) || {});\r\n                                return true;\r\n                            }\r\n                            else if (ecData.eventData) {\r\n                                params = extend({}, ecData.eventData);\r\n                                return true;\r\n                            }\r\n                        }, true);\r\n                    }\r\n                    if (params) {\r\n                        var componentType = params.componentType;\r\n                        var componentIndex = params.componentIndex;\r\n                        if (componentType === 'markLine'\r\n                            || componentType === 'markPoint'\r\n                            || componentType === 'markArea') {\r\n                            componentType = 'series';\r\n                            componentIndex = params.seriesIndex;\r\n                        }\r\n                        var model = componentType && componentIndex != null\r\n                            && ecModel.getComponent(componentType, componentIndex);\r\n                        var view = model && _this[model.mainType === 'series' ? '_chartsMap' : '_componentsMap'][model.__viewId];\r\n                        if (__DEV__) {\r\n                            if (!isGlobalOut && !(model && view)) {\r\n                                console.warn('model or view can not be found by params');\r\n                            }\r\n                        }\r\n                        params.event = e;\r\n                        params.type = eveName;\r\n                        _this._$eventProcessor.eventInfo = {\r\n                            targetEl: el,\r\n                            packedEvent: params,\r\n                            model: model,\r\n                            view: view\r\n                        };\r\n                        _this.trigger(eveName, params);\r\n                    }\r\n                };\r\n                handler.zrEventfulCallAtLast = true;\r\n                _this._zr.on(eveName, handler, _this);\r\n            });\r\n            each$3(eventActionMap, function (actionType, eventType) {\r\n                _this._messageCenter.on(eventType, function (event) {\r\n                    this.trigger(eventType, event);\r\n                }, _this);\r\n            });\r\n            each$3(['selectchanged'], function (eventType) {\r\n                _this._messageCenter.on(eventType, function (event) {\r\n                    this.trigger(eventType, event);\r\n                }, _this);\r\n            });\r\n            handleLegacySelectEvents(this._messageCenter, this, this._model);\r\n        };\r\n        ECharts.prototype.isDisposed = function () {\r\n            return this._disposed;\r\n        };\r\n        ECharts.prototype.clear = function () {\r\n            if (this._disposed) {\r\n                disposedWarning(this.id);\r\n                return;\r\n            }\r\n            this.setOption({ series: [] }, true);\r\n        };\r\n        ECharts.prototype.dispose = function () {\r\n            if (this._disposed) {\r\n                disposedWarning(this.id);\r\n                return;\r\n            }\r\n            this._disposed = true;\r\n            setAttribute(this.getDom(), DOM_ATTRIBUTE_KEY, '');\r\n            var api = this._api;\r\n            var ecModel = this._model;\r\n            each$3(this._componentsViews, function (component) {\r\n                component.dispose(ecModel, api);\r\n            });\r\n            each$3(this._chartsViews, function (chart) {\r\n                chart.dispose(ecModel, api);\r\n            });\r\n            this._zr.dispose();\r\n            delete instances[this.id];\r\n        };\r\n        ECharts.prototype.resize = function (opts) {\r\n            if (__DEV__) {\r\n                assert$1(!this[IN_MAIN_PROCESS_KEY], '`resize` should not be called during main process.');\r\n            }\r\n            if (this._disposed) {\r\n                disposedWarning(this.id);\r\n                return;\r\n            }\r\n            this._zr.resize(opts);\r\n            var ecModel = this._model;\r\n            this._loadingFX && this._loadingFX.resize();\r\n            if (!ecModel) {\r\n                return;\r\n            }\r\n            var optionChanged = ecModel.resetOption('media');\r\n            var silent = opts && opts.silent;\r\n            this[IN_MAIN_PROCESS_KEY] = true;\r\n            optionChanged && prepare(this);\r\n            updateMethods.update.call(this, {\r\n                type: 'resize',\r\n                animation: {\r\n                    duration: 0\r\n                }\r\n            });\r\n            this[IN_MAIN_PROCESS_KEY] = false;\r\n            flushPendingActions.call(this, silent);\r\n            triggerUpdatedEvent.call(this, silent);\r\n        };\r\n        ECharts.prototype.showLoading = function (name, cfg) {\r\n            if (this._disposed) {\r\n                disposedWarning(this.id);\r\n                return;\r\n            }\r\n            if (isObject$2(name)) {\r\n                cfg = name;\r\n                name = '';\r\n            }\r\n            name = name || 'default';\r\n            this.hideLoading();\r\n            if (!loadingEffects[name]) {\r\n                if (__DEV__) {\r\n                    console.warn('Loading effects ' + name + ' not exists.');\r\n                }\r\n                return;\r\n            }\r\n            var el = loadingEffects[name](this._api, cfg);\r\n            var zr = this._zr;\r\n            this._loadingFX = el;\r\n            zr.add(el);\r\n        };\r\n        ECharts.prototype.hideLoading = function () {\r\n            if (this._disposed) {\r\n                disposedWarning(this.id);\r\n                return;\r\n            }\r\n            this._loadingFX && this._zr.remove(this._loadingFX);\r\n            this._loadingFX = null;\r\n        };\r\n        ECharts.prototype.makeActionFromEvent = function (eventObj) {\r\n            var payload = extend({}, eventObj);\r\n            payload.type = eventActionMap[eventObj.type];\r\n            return payload;\r\n        };\r\n        ECharts.prototype.dispatchAction = function (payload, opt) {\r\n            if (this._disposed) {\r\n                disposedWarning(this.id);\r\n                return;\r\n            }\r\n            if (!isObject$2(opt)) {\r\n                opt = { silent: !!opt };\r\n            }\r\n            if (!actions[payload.type]) {\r\n                return;\r\n            }\r\n            if (!this._model) {\r\n                return;\r\n            }\r\n            if (this[IN_MAIN_PROCESS_KEY]) {\r\n                this._pendingActions.push(payload);\r\n                return;\r\n            }\r\n            var silent = opt.silent;\r\n            doDispatchAction.call(this, payload, silent);\r\n            var flush = opt.flush;\r\n            if (flush) {\r\n                this._zr.flush();\r\n            }\r\n            else if (flush !== false && env.browser.weChat) {\r\n                this._throttledZrFlush();\r\n            }\r\n            flushPendingActions.call(this, silent);\r\n            triggerUpdatedEvent.call(this, silent);\r\n        };\r\n        ECharts.prototype.updateLabelLayout = function () {\r\n            var labelManager = this._labelManager;\r\n            labelManager.updateLayoutConfig(this._api);\r\n            labelManager.layout(this._api);\r\n            labelManager.processLabelsOverall();\r\n        };\r\n        ECharts.prototype.appendData = function (params) {\r\n            if (this._disposed) {\r\n                disposedWarning(this.id);\r\n                return;\r\n            }\r\n            var seriesIndex = params.seriesIndex;\r\n            var ecModel = this.getModel();\r\n            var seriesModel = ecModel.getSeriesByIndex(seriesIndex);\r\n            if (__DEV__) {\r\n                assert$1(params.data && seriesModel);\r\n            }\r\n            seriesModel.appendData(params);\r\n            this._scheduler.unfinished = true;\r\n            this.getZr().wakeUp();\r\n        };\r\n        ECharts.internalField = (function () {\r\n            prepare = function (ecIns) {\r\n                var scheduler = ecIns._scheduler;\r\n                scheduler.restorePipelines(ecIns._model);\r\n                scheduler.prepareStageTasks();\r\n                prepareView(ecIns, true);\r\n                prepareView(ecIns, false);\r\n                scheduler.plan();\r\n            };\r\n            prepareView = function (ecIns, isComponent) {\r\n                var ecModel = ecIns._model;\r\n                var scheduler = ecIns._scheduler;\r\n                var viewList = isComponent ? ecIns._componentsViews : ecIns._chartsViews;\r\n                var viewMap = isComponent ? ecIns._componentsMap : ecIns._chartsMap;\r\n                var zr = ecIns._zr;\r\n                var api = ecIns._api;\r\n                for (var i = 0; i < viewList.length; i++) {\r\n                    viewList[i].__alive = false;\r\n                }\r\n                isComponent\r\n                    ? ecModel.eachComponent(function (componentType, model) {\r\n                        componentType !== 'series' && doPrepare(model);\r\n                    })\r\n                    : ecModel.eachSeries(doPrepare);\r\n                function doPrepare(model) {\r\n                    var requireNewView = model.__requireNewView;\r\n                    model.__requireNewView = false;\r\n                    var viewId = '_ec_' + model.id + '_' + model.type;\r\n                    var view = !requireNewView && viewMap[viewId];\r\n                    if (!view) {\r\n                        var classType = parseClassType(model.type);\r\n                        var Clazz = isComponent\r\n                            ? ComponentView.getClass(classType.main, classType.sub)\r\n                            : (ChartView.getClass(classType.sub));\r\n                        if (__DEV__) {\r\n                            assert$1(Clazz, classType.sub + ' does not exist.');\r\n                        }\r\n                        view = new Clazz();\r\n                        view.init(ecModel, api);\r\n                        viewMap[viewId] = view;\r\n                        viewList.push(view);\r\n                        zr.add(view.group);\r\n                    }\r\n                    model.__viewId = view.__id = viewId;\r\n                    view.__alive = true;\r\n                    view.__model = model;\r\n                    view.group.__ecComponentInfo = {\r\n                        mainType: model.mainType,\r\n                        index: model.componentIndex\r\n                    };\r\n                    !isComponent && scheduler.prepareView(view, model, ecModel, api);\r\n                }\r\n                for (var i = 0; i < viewList.length;) {\r\n                    var view = viewList[i];\r\n                    if (!view.__alive) {\r\n                        !isComponent && view.renderTask.dispose();\r\n                        zr.remove(view.group);\r\n                        view.dispose(ecModel, api);\r\n                        viewList.splice(i, 1);\r\n                        if (viewMap[view.__id] === view) {\r\n                            delete viewMap[view.__id];\r\n                        }\r\n                        view.__id = view.group.__ecComponentInfo = null;\r\n                    }\r\n                    else {\r\n                        i++;\r\n                    }\r\n                }\r\n            };\r\n            updateDirectly = function (ecIns, method, payload, mainType, subType) {\r\n                var ecModel = ecIns._model;\r\n                ecModel.setUpdatePayload(payload);\r\n                if (!mainType) {\r\n                    each$3([].concat(ecIns._componentsViews).concat(ecIns._chartsViews), callView);\r\n                    return;\r\n                }\r\n                var query = {};\r\n                query[mainType + 'Id'] = payload[mainType + 'Id'];\r\n                query[mainType + 'Index'] = payload[mainType + 'Index'];\r\n                query[mainType + 'Name'] = payload[mainType + 'Name'];\r\n                var condition = { mainType: mainType, query: query };\r\n                subType && (condition.subType = subType);\r\n                var excludeSeriesId = payload.excludeSeriesId;\r\n                var excludeSeriesIdMap;\r\n                if (excludeSeriesId != null) {\r\n                    excludeSeriesIdMap = createHashMap();\r\n                    each$3(normalizeToArray(excludeSeriesId), function (id) {\r\n                        var modelId = convertOptionIdName(id, null);\r\n                        if (modelId != null) {\r\n                            excludeSeriesIdMap.set(modelId, true);\r\n                        }\r\n                    });\r\n                }\r\n                ecModel && ecModel.eachComponent(condition, function (model) {\r\n                    if (!excludeSeriesIdMap || excludeSeriesIdMap.get(model.id) == null) {\r\n                        if (isHighDownPayload(payload) && !payload.notBlur) {\r\n                            if (model instanceof SeriesModel) {\r\n                                toggleSeriesBlurStateFromPayload(model, payload, ecIns._api);\r\n                            }\r\n                        }\r\n                        else if (isSelectChangePayload(payload)) {\r\n                            if (model instanceof SeriesModel) {\r\n                                toggleSelectionFromPayload(model, payload, ecIns._api);\r\n                                updateSeriesElementSelection(model);\r\n                                markStatusToUpdate(ecIns);\r\n                            }\r\n                        }\r\n                        callView(ecIns[mainType === 'series' ? '_chartsMap' : '_componentsMap'][model.__viewId]);\r\n                    }\r\n                }, ecIns);\r\n                function callView(view) {\r\n                    view && view.__alive && view[method] && view[method](view.__model, ecModel, ecIns._api, payload);\r\n                }\r\n            };\r\n            updateMethods = {\r\n                prepareAndUpdate: function (payload) {\r\n                    prepare(this);\r\n                    updateMethods.update.call(this, payload);\r\n                },\r\n                update: function (payload) {\r\n                    var ecModel = this._model;\r\n                    var api = this._api;\r\n                    var zr = this._zr;\r\n                    var coordSysMgr = this._coordSysMgr;\r\n                    var scheduler = this._scheduler;\r\n                    if (!ecModel) {\r\n                        return;\r\n                    }\r\n                    ecModel.setUpdatePayload(payload);\r\n                    scheduler.restoreData(ecModel, payload);\r\n                    scheduler.performSeriesTasks(ecModel);\r\n                    coordSysMgr.create(ecModel, api);\r\n                    scheduler.performDataProcessorTasks(ecModel, payload);\r\n                    updateStreamModes(this, ecModel);\r\n                    coordSysMgr.update(ecModel, api);\r\n                    clearColorPalette(ecModel);\r\n                    scheduler.performVisualTasks(ecModel, payload);\r\n                    render(this, ecModel, api, payload);\r\n                    var backgroundColor = ecModel.get('backgroundColor') || 'transparent';\r\n                    var darkMode = ecModel.get('darkMode');\r\n                    if (!env.canvasSupported) {\r\n                        var colorArr = parse(backgroundColor);\r\n                        backgroundColor = stringify(colorArr, 'rgb');\r\n                        if (colorArr[3] === 0) {\r\n                            backgroundColor = 'transparent';\r\n                        }\r\n                    }\r\n                    else {\r\n                        zr.setBackgroundColor(backgroundColor);\r\n                        if (darkMode != null && darkMode !== 'auto') {\r\n                            zr.setDarkMode(darkMode);\r\n                        }\r\n                    }\r\n                    performPostUpdateFuncs(ecModel, api);\r\n                },\r\n                updateTransform: function (payload) {\r\n                    var _this = this;\r\n                    var ecModel = this._model;\r\n                    var api = this._api;\r\n                    if (!ecModel) {\r\n                        return;\r\n                    }\r\n                    ecModel.setUpdatePayload(payload);\r\n                    var componentDirtyList = [];\r\n                    ecModel.eachComponent(function (componentType, componentModel) {\r\n                        if (componentType === 'series') {\r\n                            return;\r\n                        }\r\n                        var componentView = _this.getViewOfComponentModel(componentModel);\r\n                        if (componentView && componentView.__alive) {\r\n                            if (componentView.updateTransform) {\r\n                                var result = componentView.updateTransform(componentModel, ecModel, api, payload);\r\n                                result && result.update && componentDirtyList.push(componentView);\r\n                            }\r\n                            else {\r\n                                componentDirtyList.push(componentView);\r\n                            }\r\n                        }\r\n                    });\r\n                    var seriesDirtyMap = createHashMap();\r\n                    ecModel.eachSeries(function (seriesModel) {\r\n                        var chartView = _this._chartsMap[seriesModel.__viewId];\r\n                        if (chartView.updateTransform) {\r\n                            var result = chartView.updateTransform(seriesModel, ecModel, api, payload);\r\n                            result && result.update && seriesDirtyMap.set(seriesModel.uid, 1);\r\n                        }\r\n                        else {\r\n                            seriesDirtyMap.set(seriesModel.uid, 1);\r\n                        }\r\n                    });\r\n                    clearColorPalette(ecModel);\r\n                    this._scheduler.performVisualTasks(ecModel, payload, { setDirty: true, dirtyMap: seriesDirtyMap });\r\n                    renderSeries(this, ecModel, api, payload, seriesDirtyMap);\r\n                    performPostUpdateFuncs(ecModel, this._api);\r\n                },\r\n                updateView: function (payload) {\r\n                    var ecModel = this._model;\r\n                    if (!ecModel) {\r\n                        return;\r\n                    }\r\n                    ecModel.setUpdatePayload(payload);\r\n                    ChartView.markUpdateMethod(payload, 'updateView');\r\n                    clearColorPalette(ecModel);\r\n                    this._scheduler.performVisualTasks(ecModel, payload, { setDirty: true });\r\n                    render(this, this._model, this._api, payload);\r\n                    performPostUpdateFuncs(ecModel, this._api);\r\n                },\r\n                updateVisual: function (payload) {\r\n                    var _this = this;\r\n                    var ecModel = this._model;\r\n                    if (!ecModel) {\r\n                        return;\r\n                    }\r\n                    ecModel.setUpdatePayload(payload);\r\n                    ecModel.eachSeries(function (seriesModel) {\r\n                        seriesModel.getData().clearAllVisual();\r\n                    });\r\n                    ChartView.markUpdateMethod(payload, 'updateVisual');\r\n                    clearColorPalette(ecModel);\r\n                    this._scheduler.performVisualTasks(ecModel, payload, { visualType: 'visual', setDirty: true });\r\n                    ecModel.eachComponent(function (componentType, componentModel) {\r\n                        if (componentType !== 'series') {\r\n                            var componentView = _this.getViewOfComponentModel(componentModel);\r\n                            componentView && componentView.__alive\r\n                                && componentView.updateVisual(componentModel, ecModel, _this._api, payload);\r\n                        }\r\n                    });\r\n                    ecModel.eachSeries(function (seriesModel) {\r\n                        var chartView = _this._chartsMap[seriesModel.__viewId];\r\n                        chartView.updateVisual(seriesModel, ecModel, _this._api, payload);\r\n                    });\r\n                    performPostUpdateFuncs(ecModel, this._api);\r\n                },\r\n                updateLayout: function (payload) {\r\n                    updateMethods.update.call(this, payload);\r\n                }\r\n            };\r\n            doConvertPixel = function (ecIns, methodName, finder, value) {\r\n                if (ecIns._disposed) {\r\n                    disposedWarning(ecIns.id);\r\n                    return;\r\n                }\r\n                var ecModel = ecIns._model;\r\n                var coordSysList = ecIns._coordSysMgr.getCoordinateSystems();\r\n                var result;\r\n                var parsedFinder = parseFinder(ecModel, finder);\r\n                for (var i = 0; i < coordSysList.length; i++) {\r\n                    var coordSys = coordSysList[i];\r\n                    if (coordSys[methodName]\r\n                        && (result = coordSys[methodName](ecModel, parsedFinder, value)) != null) {\r\n                        return result;\r\n                    }\r\n                }\r\n                if (__DEV__) {\r\n                    console.warn('No coordinate system that supports ' + methodName + ' found by the given finder.');\r\n                }\r\n            };\r\n            updateStreamModes = function (ecIns, ecModel) {\r\n                var chartsMap = ecIns._chartsMap;\r\n                var scheduler = ecIns._scheduler;\r\n                ecModel.eachSeries(function (seriesModel) {\r\n                    scheduler.updateStreamModes(seriesModel, chartsMap[seriesModel.__viewId]);\r\n                });\r\n            };\r\n            doDispatchAction = function (payload, silent) {\r\n                var _this = this;\r\n                var ecModel = this.getModel();\r\n                var payloadType = payload.type;\r\n                var escapeConnect = payload.escapeConnect;\r\n                var actionWrap = actions[payloadType];\r\n                var actionInfo = actionWrap.actionInfo;\r\n                var cptTypeTmp = (actionInfo.update || 'update').split(':');\r\n                var updateMethod = cptTypeTmp.pop();\r\n                var cptType = cptTypeTmp[0] != null && parseClassType(cptTypeTmp[0]);\r\n                this[IN_MAIN_PROCESS_KEY] = true;\r\n                var payloads = [payload];\r\n                var batched = false;\r\n                if (payload.batch) {\r\n                    batched = true;\r\n                    payloads = map(payload.batch, function (item) {\r\n                        item = defaults(extend({}, item), payload);\r\n                        item.batch = null;\r\n                        return item;\r\n                    });\r\n                }\r\n                var eventObjBatch = [];\r\n                var eventObj;\r\n                var isSelectChange = isSelectChangePayload(payload);\r\n                var isStatusChange = isHighDownPayload(payload) || isSelectChange;\r\n                each$3(payloads, function (batchItem) {\r\n                    eventObj = actionWrap.action(batchItem, _this._model, _this._api);\r\n                    eventObj = eventObj || extend({}, batchItem);\r\n                    eventObj.type = actionInfo.event || eventObj.type;\r\n                    eventObjBatch.push(eventObj);\r\n                    if (isStatusChange) {\r\n                        updateDirectly(_this, updateMethod, batchItem, 'series');\r\n                        markStatusToUpdate(_this);\r\n                    }\r\n                    else if (cptType) {\r\n                        updateDirectly(_this, updateMethod, batchItem, cptType.main, cptType.sub);\r\n                    }\r\n                });\r\n                if (updateMethod !== 'none' && !isStatusChange && !cptType) {\r\n                    if (this[OPTION_UPDATED_KEY]) {\r\n                        prepare(this);\r\n                        updateMethods.update.call(this, payload);\r\n                        this[OPTION_UPDATED_KEY] = false;\r\n                    }\r\n                    else {\r\n                        updateMethods[updateMethod].call(this, payload);\r\n                    }\r\n                }\r\n                if (batched) {\r\n                    eventObj = {\r\n                        type: actionInfo.event || payloadType,\r\n                        escapeConnect: escapeConnect,\r\n                        batch: eventObjBatch\r\n                    };\r\n                }\r\n                else {\r\n                    eventObj = eventObjBatch[0];\r\n                }\r\n                this[IN_MAIN_PROCESS_KEY] = false;\r\n                if (!silent) {\r\n                    var messageCenter = this._messageCenter;\r\n                    messageCenter.trigger(eventObj.type, eventObj);\r\n                    if (isSelectChange) {\r\n                        var newObj = {\r\n                            type: 'selectchanged',\r\n                            escapeConnect: escapeConnect,\r\n                            selected: getAllSelectedIndices(ecModel),\r\n                            isFromClick: payload.isFromClick || false,\r\n                            fromAction: payload.type,\r\n                            fromActionPayload: payload\r\n                        };\r\n                        messageCenter.trigger(newObj.type, newObj);\r\n                    }\r\n                }\r\n            };\r\n            flushPendingActions = function (silent) {\r\n                var pendingActions = this._pendingActions;\r\n                while (pendingActions.length) {\r\n                    var payload = pendingActions.shift();\r\n                    doDispatchAction.call(this, payload, silent);\r\n                }\r\n            };\r\n            triggerUpdatedEvent = function (silent) {\r\n                !silent && this.trigger('updated');\r\n            };\r\n            bindRenderedEvent = function (zr, ecIns) {\r\n                zr.on('rendered', function (params) {\r\n                    ecIns.trigger('rendered', params);\r\n                    if (zr.animation.isFinished()\r\n                        && !ecIns[OPTION_UPDATED_KEY]\r\n                        && !ecIns._scheduler.unfinished\r\n                        && !ecIns._pendingActions.length) {\r\n                        ecIns.trigger('finished');\r\n                    }\r\n                });\r\n            };\r\n            bindMouseEvent = function (zr, ecIns) {\r\n                zr.on('mouseover', function (e) {\r\n                    var el = e.target;\r\n                    var dispatcher = findEventDispatcher(el, isHighDownDispatcher);\r\n                    if (dispatcher) {\r\n                        var ecData = getECData(dispatcher);\r\n                        toggleSeriesBlurState(ecData.seriesIndex, ecData.focus, ecData.blurScope, ecIns._api, true);\r\n                        enterEmphasisWhenMouseOver(dispatcher, e);\r\n                        markStatusToUpdate(ecIns);\r\n                    }\r\n                }).on('mouseout', function (e) {\r\n                    var el = e.target;\r\n                    var dispatcher = findEventDispatcher(el, isHighDownDispatcher);\r\n                    if (dispatcher) {\r\n                        var ecData = getECData(dispatcher);\r\n                        toggleSeriesBlurState(ecData.seriesIndex, ecData.focus, ecData.blurScope, ecIns._api, false);\r\n                        leaveEmphasisWhenMouseOut(dispatcher, e);\r\n                        markStatusToUpdate(ecIns);\r\n                    }\r\n                }).on('click', function (e) {\r\n                    var el = e.target;\r\n                    var dispatcher = findEventDispatcher(el, function (target) { return getECData(target).dataIndex != null; }, true);\r\n                    if (dispatcher) {\r\n                        var actionType = dispatcher.selected ? 'unselect' : 'select';\r\n                        var ecData = getECData(dispatcher);\r\n                        ecIns._api.dispatchAction({\r\n                            type: actionType,\r\n                            dataType: ecData.dataType,\r\n                            dataIndexInside: ecData.dataIndex,\r\n                            seriesIndex: ecData.seriesIndex,\r\n                            isFromClick: true\r\n                        });\r\n                    }\r\n                });\r\n            };\r\n            clearColorPalette = function (ecModel) {\r\n                ecModel.clearColorPalette();\r\n                ecModel.eachSeries(function (seriesModel) {\r\n                    seriesModel.clearColorPalette();\r\n                });\r\n            };\r\n            render = function (ecIns, ecModel, api, payload) {\r\n                renderComponents(ecIns, ecModel, api, payload);\r\n                each$3(ecIns._chartsViews, function (chart) {\r\n                    chart.__alive = false;\r\n                });\r\n                renderSeries(ecIns, ecModel, api, payload);\r\n                each$3(ecIns._chartsViews, function (chart) {\r\n                    if (!chart.__alive) {\r\n                        chart.remove(ecModel, api);\r\n                    }\r\n                });\r\n            };\r\n            renderComponents = function (ecIns, ecModel, api, payload, dirtyList) {\r\n                each$3(dirtyList || ecIns._componentsViews, function (componentView) {\r\n                    var componentModel = componentView.__model;\r\n                    clearStates(componentModel, componentView);\r\n                    componentView.render(componentModel, ecModel, api, payload);\r\n                    updateZ(componentModel, componentView);\r\n                    updateStates(componentModel, componentView);\r\n                });\r\n            };\r\n            renderSeries = function (ecIns, ecModel, api, payload, dirtyMap) {\r\n                var scheduler = ecIns._scheduler;\r\n                var labelManager = ecIns._labelManager;\r\n                labelManager.clearLabels();\r\n                var unfinished = false;\r\n                ecModel.eachSeries(function (seriesModel) {\r\n                    var chartView = ecIns._chartsMap[seriesModel.__viewId];\r\n                    chartView.__alive = true;\r\n                    var renderTask = chartView.renderTask;\r\n                    scheduler.updatePayload(renderTask, payload);\r\n                    clearStates(seriesModel, chartView);\r\n                    if (dirtyMap && dirtyMap.get(seriesModel.uid)) {\r\n                        renderTask.dirty();\r\n                    }\r\n                    if (renderTask.perform(scheduler.getPerformArgs(renderTask))) {\r\n                        unfinished = true;\r\n                    }\r\n                    seriesModel.__transientTransitionOpt = null;\r\n                    chartView.group.silent = !!seriesModel.get('silent');\r\n                    updateBlend(seriesModel, chartView);\r\n                    updateSeriesElementSelection(seriesModel);\r\n                    labelManager.addLabelsOfSeries(chartView);\r\n                });\r\n                scheduler.unfinished = unfinished || scheduler.unfinished;\r\n                labelManager.updateLayoutConfig(api);\r\n                labelManager.layout(api);\r\n                labelManager.processLabelsOverall();\r\n                ecModel.eachSeries(function (seriesModel) {\r\n                    var chartView = ecIns._chartsMap[seriesModel.__viewId];\r\n                    updateZ(seriesModel, chartView);\r\n                    updateStates(seriesModel, chartView);\r\n                });\r\n                updateHoverLayerStatus(ecIns, ecModel);\r\n            };\r\n            performPostUpdateFuncs = function (ecModel, api) {\r\n                each$3(postUpdateFuncs, function (func) {\r\n                    func(ecModel, api);\r\n                });\r\n            };\r\n            markStatusToUpdate = function (ecIns) {\r\n                ecIns[STATUS_NEEDS_UPDATE_KEY] = true;\r\n                ecIns.getZr().wakeUp();\r\n            };\r\n            applyChangedStates = function (ecIns) {\r\n                if (!ecIns[STATUS_NEEDS_UPDATE_KEY]) {\r\n                    return;\r\n                }\r\n                ecIns.getZr().storage.traverse(function (el) {\r\n                    if (isElementRemoved(el)) {\r\n                        return;\r\n                    }\r\n                    applyElementStates(el);\r\n                });\r\n                ecIns[STATUS_NEEDS_UPDATE_KEY] = false;\r\n            };\r\n            function applyElementStates(el) {\r\n                var newStates = [];\r\n                var oldStates = el.currentStates;\r\n                for (var i = 0; i < oldStates.length; i++) {\r\n                    var stateName = oldStates[i];\r\n                    if (!(stateName === 'emphasis' || stateName === 'blur' || stateName === 'select')) {\r\n                        newStates.push(stateName);\r\n                    }\r\n                }\r\n                if (el.selected && el.states.select) {\r\n                    newStates.push('select');\r\n                }\r\n                if (el.hoverState === HOVER_STATE_EMPHASIS && el.states.emphasis) {\r\n                    newStates.push('emphasis');\r\n                }\r\n                else if (el.hoverState === HOVER_STATE_BLUR && el.states.blur) {\r\n                    newStates.push('blur');\r\n                }\r\n                el.useStates(newStates);\r\n            }\r\n            function updateHoverLayerStatus(ecIns, ecModel) {\r\n                var zr = ecIns._zr;\r\n                var storage = zr.storage;\r\n                var elCount = 0;\r\n                storage.traverse(function (el) {\r\n                    if (!el.isGroup) {\r\n                        elCount++;\r\n                    }\r\n                });\r\n                if (elCount > ecModel.get('hoverLayerThreshold') && !env.node && !env.worker) {\r\n                    ecModel.eachSeries(function (seriesModel) {\r\n                        if (seriesModel.preventUsingHoverLayer) {\r\n                            return;\r\n                        }\r\n                        var chartView = ecIns._chartsMap[seriesModel.__viewId];\r\n                        if (chartView.__alive) {\r\n                            chartView.group.traverse(function (el) {\r\n                                if (el.states.emphasis) {\r\n                                    el.states.emphasis.hoverLayer = true;\r\n                                }\r\n                            });\r\n                        }\r\n                    });\r\n                }\r\n            }\r\n            function updateBlend(seriesModel, chartView) {\r\n                var blendMode = seriesModel.get('blendMode') || null;\r\n                if (__DEV__) {\r\n                    if (!env.canvasSupported && blendMode && blendMode !== 'source-over') {\r\n                        console.warn('Only canvas support blendMode');\r\n                    }\r\n                }\r\n                chartView.group.traverse(function (el) {\r\n                    if (!el.isGroup) {\r\n                        el.style.blend = blendMode;\r\n                    }\r\n                    if (el.eachPendingDisplayable) {\r\n                        el.eachPendingDisplayable(function (displayable) {\r\n                            displayable.style.blend = blendMode;\r\n                        });\r\n                    }\r\n                });\r\n            }\r\n            function updateZ(model, view) {\r\n                if (model.preventAutoZ) {\r\n                    return;\r\n                }\r\n                var z = model.get('z');\r\n                var zlevel = model.get('zlevel');\r\n                view.group.traverse(function (el) {\r\n                    if (!el.isGroup) {\r\n                        z != null && (el.z = z);\r\n                        zlevel != null && (el.zlevel = zlevel);\r\n                        var label = el.getTextContent();\r\n                        var labelLine = el.getTextGuideLine();\r\n                        if (label) {\r\n                            label.z = el.z;\r\n                            label.zlevel = el.zlevel;\r\n                            label.z2 = el.z2 + 2;\r\n                        }\r\n                        if (labelLine) {\r\n                            var showAbove = el.textGuideLineConfig && el.textGuideLineConfig.showAbove;\r\n                            labelLine.z = el.z;\r\n                            labelLine.zlevel = el.zlevel;\r\n                            labelLine.z2 = el.z2 + (showAbove ? 1 : -1);\r\n                        }\r\n                    }\r\n                });\r\n            }\r\n            function clearStates(model, view) {\r\n                view.group.traverse(function (el) {\r\n                    if (isElementRemoved(el)) {\r\n                        return;\r\n                    }\r\n                    var textContent = el.getTextContent();\r\n                    var textGuide = el.getTextGuideLine();\r\n                    if (el.stateTransition) {\r\n                        el.stateTransition = null;\r\n                    }\r\n                    if (textContent && textContent.stateTransition) {\r\n                        textContent.stateTransition = null;\r\n                    }\r\n                    if (textGuide && textGuide.stateTransition) {\r\n                        textGuide.stateTransition = null;\r\n                    }\r\n                    if (el.hasState()) {\r\n                        el.prevStates = el.currentStates;\r\n                        el.clearStates();\r\n                    }\r\n                    else if (el.prevStates) {\r\n                        el.prevStates = null;\r\n                    }\r\n                });\r\n            }\r\n            function updateStates(model, view) {\r\n                var stateAnimationModel = model.getModel('stateAnimation');\r\n                var enableAnimation = model.isAnimationEnabled();\r\n                var duration = stateAnimationModel.get('duration');\r\n                var stateTransition = duration > 0 ? {\r\n                    duration: duration,\r\n                    delay: stateAnimationModel.get('delay'),\r\n                    easing: stateAnimationModel.get('easing')\r\n                } : null;\r\n                view.group.traverse(function (el) {\r\n                    if (el.states && el.states.emphasis) {\r\n                        if (isElementRemoved(el)) {\r\n                            return;\r\n                        }\r\n                        if (el instanceof Path) {\r\n                            savePathStates(el);\r\n                        }\r\n                        if (el.__dirty) {\r\n                            var prevStates = el.prevStates;\r\n                            if (prevStates) {\r\n                                el.useStates(prevStates);\r\n                            }\r\n                        }\r\n                        if (enableAnimation) {\r\n                            el.stateTransition = stateTransition;\r\n                            var textContent = el.getTextContent();\r\n                            var textGuide = el.getTextGuideLine();\r\n                            if (textContent) {\r\n                                textContent.stateTransition = stateTransition;\r\n                            }\r\n                            if (textGuide) {\r\n                                textGuide.stateTransition = stateTransition;\r\n                            }\r\n                        }\r\n                        if (el.__dirty) {\r\n                            applyElementStates(el);\r\n                        }\r\n                    }\r\n                });\r\n            }\r\n            createExtensionAPI = function (ecIns) {\r\n                return new ((function (_super) {\r\n                    __extends(class_1, _super);\r\n                    function class_1() {\r\n                        return _super !== null && _super.apply(this, arguments) || this;\r\n                    }\r\n                    class_1.prototype.getCoordinateSystems = function () {\r\n                        return ecIns._coordSysMgr.getCoordinateSystems();\r\n                    };\r\n                    class_1.prototype.getComponentByElement = function (el) {\r\n                        while (el) {\r\n                            var modelInfo = el.__ecComponentInfo;\r\n                            if (modelInfo != null) {\r\n                                return ecIns._model.getComponent(modelInfo.mainType, modelInfo.index);\r\n                            }\r\n                            el = el.parent;\r\n                        }\r\n                    };\r\n                    class_1.prototype.enterEmphasis = function (el, highlightDigit) {\r\n                        enterEmphasis(el, highlightDigit);\r\n                        markStatusToUpdate(ecIns);\r\n                    };\r\n                    class_1.prototype.leaveEmphasis = function (el, highlightDigit) {\r\n                        leaveEmphasis(el, highlightDigit);\r\n                        markStatusToUpdate(ecIns);\r\n                    };\r\n                    class_1.prototype.enterBlur = function (el) {\r\n                        enterBlur(el);\r\n                        markStatusToUpdate(ecIns);\r\n                    };\r\n                    class_1.prototype.leaveBlur = function (el) {\r\n                        leaveBlur(el);\r\n                        markStatusToUpdate(ecIns);\r\n                    };\r\n                    class_1.prototype.enterSelect = function (el) {\r\n                        enterSelect(el);\r\n                        markStatusToUpdate(ecIns);\r\n                    };\r\n                    class_1.prototype.leaveSelect = function (el) {\r\n                        leaveSelect(el);\r\n                        markStatusToUpdate(ecIns);\r\n                    };\r\n                    class_1.prototype.getModel = function () {\r\n                        return ecIns.getModel();\r\n                    };\r\n                    class_1.prototype.getViewOfComponentModel = function (componentModel) {\r\n                        return ecIns.getViewOfComponentModel(componentModel);\r\n                    };\r\n                    class_1.prototype.getViewOfSeriesModel = function (seriesModel) {\r\n                        return ecIns.getViewOfSeriesModel(seriesModel);\r\n                    };\r\n                    return class_1;\r\n                }(ExtensionAPI)))(ecIns);\r\n            };\r\n            enableConnect = function (chart) {\r\n                function updateConnectedChartsStatus(charts, status) {\r\n                    for (var i = 0; i < charts.length; i++) {\r\n                        var otherChart = charts[i];\r\n                        otherChart[CONNECT_STATUS_KEY] = status;\r\n                    }\r\n                }\r\n                each$3(eventActionMap, function (actionType, eventType) {\r\n                    chart._messageCenter.on(eventType, function (event) {\r\n                        if (connectedGroups[chart.group] && chart[CONNECT_STATUS_KEY] !== CONNECT_STATUS_PENDING) {\r\n                            if (event && event.escapeConnect) {\r\n                                return;\r\n                            }\r\n                            var action_1 = chart.makeActionFromEvent(event);\r\n                            var otherCharts_1 = [];\r\n                            each$3(instances, function (otherChart) {\r\n                                if (otherChart !== chart && otherChart.group === chart.group) {\r\n                                    otherCharts_1.push(otherChart);\r\n                                }\r\n                            });\r\n                            updateConnectedChartsStatus(otherCharts_1, CONNECT_STATUS_PENDING);\r\n                            each$3(otherCharts_1, function (otherChart) {\r\n                                if (otherChart[CONNECT_STATUS_KEY] !== CONNECT_STATUS_UPDATING) {\r\n                                    otherChart.dispatchAction(action_1);\r\n                                }\r\n                            });\r\n                            updateConnectedChartsStatus(otherCharts_1, CONNECT_STATUS_UPDATED);\r\n                        }\r\n                    });\r\n                });\r\n            };\r\n            setTransitionOpt = function (chart, transitionOpt) {\r\n                var ecModel = chart._model;\r\n                each(normalizeToArray(transitionOpt), function (transOpt) {\r\n                    var errMsg;\r\n                    var fromOpt = transOpt.from;\r\n                    var toOpt = transOpt.to;\r\n                    if (toOpt == null) {\r\n                        if (__DEV__) {\r\n                            errMsg = '`transition.to` must be specified.';\r\n                        }\r\n                        throwError(errMsg);\r\n                    }\r\n                    var finderOpt = {\r\n                        includeMainTypes: ['series'],\r\n                        enableAll: false,\r\n                        enableNone: false\r\n                    };\r\n                    var fromResult = fromOpt ? parseFinder(ecModel, fromOpt, finderOpt) : null;\r\n                    var toResult = parseFinder(ecModel, toOpt, finderOpt);\r\n                    var toSeries = toResult.seriesModel;\r\n                    if (toSeries == null) {\r\n                        errMsg = '';\r\n                        if (__DEV__) {\r\n                            errMsg = '`transition` is only supported on series.';\r\n                        }\r\n                    }\r\n                    if (fromResult && fromResult.seriesModel !== toSeries) {\r\n                        errMsg = '';\r\n                        if (__DEV__) {\r\n                            errMsg = '`transition.from` and `transition.to` must be specified to the same series.';\r\n                        }\r\n                    }\r\n                    if (errMsg != null) {\r\n                        throwError(errMsg);\r\n                    }\r\n                    toSeries.__transientTransitionOpt = {\r\n                        from: fromOpt ? fromOpt.dimension : null,\r\n                        to: toOpt.dimension,\r\n                        dividingMethod: transOpt.dividingMethod\r\n                    };\r\n                });\r\n            };\r\n        })();\r\n        return ECharts;\r\n    }(Eventful));\r\n    var echartsProto = ECharts.prototype;\r\n    echartsProto.on = createRegisterEventWithLowercaseECharts('on');\r\n    echartsProto.off = createRegisterEventWithLowercaseECharts('off');\r\n    echartsProto.one = function (eventName, cb, ctx) {\r\n        var self = this;\r\n        deprecateLog('ECharts#one is deprecated.');\r\n        function wrapped() {\r\n            var args2 = [];\r\n            for (var _i = 0; _i < arguments.length; _i++) {\r\n                args2[_i] = arguments[_i];\r\n            }\r\n            cb && cb.apply && cb.apply(this, args2);\r\n            self.off(eventName, wrapped);\r\n        }\r\n        this.on.call(this, eventName, wrapped, ctx);\r\n    };\r\n    var MOUSE_EVENT_NAMES = [\r\n        'click', 'dblclick', 'mouseover', 'mouseout', 'mousemove',\r\n        'mousedown', 'mouseup', 'globalout', 'contextmenu'\r\n    ];\r\n    function disposedWarning(id) {\r\n        if (__DEV__) {\r\n            console.warn('Instance ' + id + ' has been disposed');\r\n        }\r\n    }\r\n    var actions = {};\r\n    var eventActionMap = {};\r\n    var dataProcessorFuncs = [];\r\n    var optionPreprocessorFuncs = [];\r\n    var postInitFuncs = [];\r\n    var postUpdateFuncs = [];\r\n    var visualFuncs = [];\r\n    var themeStorage = {};\r\n    var loadingEffects = {};\r\n    var instances = {};\r\n    var connectedGroups = {};\r\n    var idBase = +(new Date()) - 0;\r\n    var groupIdBase = +(new Date()) - 0;\r\n    var DOM_ATTRIBUTE_KEY = '_echarts_instance_';\r\n    function init$1(dom, theme, opts) {\r\n        if (__DEV__) {\r\n            if (!dom) {\r\n                throw new Error('Initialize failed: invalid dom.');\r\n            }\r\n        }\r\n        var existInstance = getInstanceByDom(dom);\r\n        if (existInstance) {\r\n            if (__DEV__) {\r\n                console.warn('There is a chart instance already initialized on the dom.');\r\n            }\r\n            return existInstance;\r\n        }\r\n        if (__DEV__) {\r\n            if (isDom(dom)\r\n                && dom.nodeName.toUpperCase() !== 'CANVAS'\r\n                && ((!dom.clientWidth && (!opts || opts.width == null))\r\n                    || (!dom.clientHeight && (!opts || opts.height == null)))) {\r\n                console.warn('Can\\'t get DOM width or height. Please check '\r\n                    + 'dom.clientWidth and dom.clientHeight. They should not be 0.'\r\n                    + 'For example, you may need to call this in the callback '\r\n                    + 'of window.onload.');\r\n            }\r\n        }\r\n        var chart = new ECharts(dom, theme, opts);\r\n        chart.id = 'ec_' + idBase++;\r\n        instances[chart.id] = chart;\r\n        setAttribute(dom, DOM_ATTRIBUTE_KEY, chart.id);\r\n        enableConnect(chart);\r\n        each$3(postInitFuncs, function (postInitFunc) {\r\n            postInitFunc(chart);\r\n        });\r\n        return chart;\r\n    }\r\n    function connect(groupId) {\r\n        if (isArray(groupId)) {\r\n            var charts = groupId;\r\n            groupId = null;\r\n            each$3(charts, function (chart) {\r\n                if (chart.group != null) {\r\n                    groupId = chart.group;\r\n                }\r\n            });\r\n            groupId = groupId || ('g_' + groupIdBase++);\r\n            each$3(charts, function (chart) {\r\n                chart.group = groupId;\r\n            });\r\n        }\r\n        connectedGroups[groupId] = true;\r\n        return groupId;\r\n    }\r\n    function disConnect(groupId) {\r\n        connectedGroups[groupId] = false;\r\n    }\r\n    var disconnect = disConnect;\r\n    function dispose(chart) {\r\n        if (typeof chart === 'string') {\r\n            chart = instances[chart];\r\n        }\r\n        else if (!(chart instanceof ECharts)) {\r\n            chart = getInstanceByDom(chart);\r\n        }\r\n        if ((chart instanceof ECharts) && !chart.isDisposed()) {\r\n            chart.dispose();\r\n        }\r\n    }\r\n    function getInstanceByDom(dom) {\r\n        return instances[getAttribute(dom, DOM_ATTRIBUTE_KEY)];\r\n    }\r\n    function getInstanceById(key) {\r\n        return instances[key];\r\n    }\r\n    function registerTheme(name, theme) {\r\n        themeStorage[name] = theme;\r\n    }\r\n    function registerPreprocessor(preprocessorFunc) {\r\n        optionPreprocessorFuncs.push(preprocessorFunc);\r\n    }\r\n    function registerProcessor(priority, processor) {\r\n        normalizeRegister(dataProcessorFuncs, priority, processor, PRIORITY_PROCESSOR_DEFAULT);\r\n    }\r\n    function registerPostInit(postInitFunc) {\r\n        postInitFunc && postInitFuncs.push(postInitFunc);\r\n    }\r\n    function registerPostUpdate(postUpdateFunc) {\r\n        postUpdateFunc && postUpdateFuncs.push(postUpdateFunc);\r\n    }\r\n    function registerAction(actionInfo, eventName, action) {\r\n        if (typeof eventName === 'function') {\r\n            action = eventName;\r\n            eventName = '';\r\n        }\r\n        var actionType = isObject$2(actionInfo)\r\n            ? actionInfo.type\r\n            : ([actionInfo, actionInfo = {\r\n                    event: eventName\r\n                }][0]);\r\n        actionInfo.event = (actionInfo.event || actionType).toLowerCase();\r\n        eventName = actionInfo.event;\r\n        assert$1(ACTION_REG.test(actionType) && ACTION_REG.test(eventName));\r\n        if (!actions[actionType]) {\r\n            actions[actionType] = { action: action, actionInfo: actionInfo };\r\n        }\r\n        eventActionMap[eventName] = actionType;\r\n    }\r\n    function registerCoordinateSystem(type, coordSysCreator) {\r\n        CoordinateSystemManager.register(type, coordSysCreator);\r\n    }\r\n    function getCoordinateSystemDimensions(type) {\r\n        var coordSysCreator = CoordinateSystemManager.get(type);\r\n        if (coordSysCreator) {\r\n            return coordSysCreator.getDimensionsInfo\r\n                ? coordSysCreator.getDimensionsInfo()\r\n                : coordSysCreator.dimensions.slice();\r\n        }\r\n    }\r\n    function registerLayout(priority, layoutTask) {\r\n        normalizeRegister(visualFuncs, priority, layoutTask, PRIORITY_VISUAL_LAYOUT, 'layout');\r\n    }\r\n    function registerVisual(priority, visualTask) {\r\n        normalizeRegister(visualFuncs, priority, visualTask, PRIORITY_VISUAL_CHART, 'visual');\r\n    }\r\n    function normalizeRegister(targetList, priority, fn, defaultPriority, visualType) {\r\n        if (isFunction$1(priority) || isObject$2(priority)) {\r\n            fn = priority;\r\n            priority = defaultPriority;\r\n        }\r\n        if (__DEV__) {\r\n            if (isNaN(priority) || priority == null) {\r\n                throw new Error('Illegal priority');\r\n            }\r\n            each$3(targetList, function (wrap) {\r\n                assert$1(wrap.__raw !== fn);\r\n            });\r\n        }\r\n        var stageHandler = Scheduler.wrapStageHandler(fn, visualType);\r\n        stageHandler.__prio = priority;\r\n        stageHandler.__raw = fn;\r\n        targetList.push(stageHandler);\r\n    }\r\n    function registerLoading(name, loadingFx) {\r\n        loadingEffects[name] = loadingFx;\r\n    }\r\n    function extendComponentModel(proto) {\r\n        return ComponentModel.extend(proto);\r\n    }\r\n    function extendComponentView(proto) {\r\n        return ComponentView.extend(proto);\r\n    }\r\n    function extendSeriesModel(proto) {\r\n        return SeriesModel.extend(proto);\r\n    }\r\n    function extendChartView(proto) {\r\n        return ChartView.extend(proto);\r\n    }\r\n    function setCanvasCreator(creator) {\r\n        $override('createCanvas', creator);\r\n    }\r\n    function registerMap(mapName, geoJson, specialAreas) {\r\n        mapDataStorage.registerMap(mapName, geoJson, specialAreas);\r\n    }\r\n    function getMap(mapName) {\r\n        var records = mapDataStorage.retrieveMap(mapName);\r\n        return records && records[0] && {\r\n            geoJson: records[0].geoJSON,\r\n            specialAreas: records[0].specialAreas\r\n        };\r\n    }\r\n    var registerTransform = registerExternalTransform;\r\n    registerVisual(PRIORITY_VISUAL_GLOBAL, seriesStyleTask);\r\n    registerVisual(PRIORITY_VISUAL_CHART_DATA_CUSTOM, dataStyleTask);\r\n    registerVisual(PRIORITY_VISUAL_CHART_DATA_CUSTOM, dataColorPaletteTask);\r\n    registerVisual(PRIORITY_VISUAL_GLOBAL, seriesSymbolTask);\r\n    registerVisual(PRIORITY_VISUAL_CHART_DATA_CUSTOM, dataSymbolTask);\r\n    registerVisual(PRIORITY_VISUAL_DECAL, decalVisual);\r\n    registerPreprocessor(globalBackwardCompat);\r\n    registerProcessor(PRIORITY_PROCESSOR_DATASTACK, dataStack);\r\n    registerLoading('default', defaultLoading);\r\n    registerAction({\r\n        type: HIGHLIGHT_ACTION_TYPE,\r\n        event: HIGHLIGHT_ACTION_TYPE,\r\n        update: HIGHLIGHT_ACTION_TYPE\r\n    }, noop);\r\n    registerAction({\r\n        type: DOWNPLAY_ACTION_TYPE,\r\n        event: DOWNPLAY_ACTION_TYPE,\r\n        update: DOWNPLAY_ACTION_TYPE\r\n    }, noop);\r\n    registerAction({\r\n        type: SELECT_ACTION_TYPE,\r\n        event: SELECT_ACTION_TYPE,\r\n        update: SELECT_ACTION_TYPE\r\n    }, noop);\r\n    registerAction({\r\n        type: UNSELECT_ACTION_TYPE,\r\n        event: UNSELECT_ACTION_TYPE,\r\n        update: UNSELECT_ACTION_TYPE\r\n    }, noop);\r\n    registerAction({\r\n        type: TOGGLE_SELECT_ACTION_TYPE,\r\n        event: TOGGLE_SELECT_ACTION_TYPE,\r\n        update: TOGGLE_SELECT_ACTION_TYPE\r\n    }, noop);\r\n    registerTheme('light', lightTheme);\r\n    registerTheme('dark', theme);\r\n    var dataTool = {};\n\n    function dataIndexMapValueLength(valNumOrArrLengthMoreThan2) {\r\n        return valNumOrArrLengthMoreThan2 == null\r\n            ? 0\r\n            : (valNumOrArrLengthMoreThan2.length || 1);\r\n    }\r\n    function defaultKeyGetter(item) {\r\n        return item;\r\n    }\r\n    var DataDiffer = (function () {\r\n        function DataDiffer(oldArr, newArr, oldKeyGetter, newKeyGetter, context, diffMode) {\r\n            this._old = oldArr;\r\n            this._new = newArr;\r\n            this._oldKeyGetter = oldKeyGetter || defaultKeyGetter;\r\n            this._newKeyGetter = newKeyGetter || defaultKeyGetter;\r\n            this.context = context;\r\n            this._diffModeMultiple = diffMode === 'multiple';\r\n        }\r\n        DataDiffer.prototype.add = function (func) {\r\n            this._add = func;\r\n            return this;\r\n        };\r\n        DataDiffer.prototype.update = function (func) {\r\n            this._update = func;\r\n            return this;\r\n        };\r\n        DataDiffer.prototype.updateManyToOne = function (func) {\r\n            this._updateManyToOne = func;\r\n            return this;\r\n        };\r\n        DataDiffer.prototype.updateOneToMany = function (func) {\r\n            this._updateOneToMany = func;\r\n            return this;\r\n        };\r\n        DataDiffer.prototype.remove = function (func) {\r\n            this._remove = func;\r\n            return this;\r\n        };\r\n        DataDiffer.prototype.execute = function () {\r\n            this[this._diffModeMultiple ? '_executeMultiple' : '_executeOneToOne']();\r\n        };\r\n        DataDiffer.prototype._executeOneToOne = function () {\r\n            var oldArr = this._old;\r\n            var newArr = this._new;\r\n            var newDataIndexMap = {};\r\n            var oldDataKeyArr = new Array(oldArr.length);\r\n            var newDataKeyArr = new Array(newArr.length);\r\n            this._initIndexMap(oldArr, null, oldDataKeyArr, '_oldKeyGetter');\r\n            this._initIndexMap(newArr, newDataIndexMap, newDataKeyArr, '_newKeyGetter');\r\n            for (var i = 0; i < oldArr.length; i++) {\r\n                var oldKey = oldDataKeyArr[i];\r\n                var newIdxMapVal = newDataIndexMap[oldKey];\r\n                var newIdxMapValLen = dataIndexMapValueLength(newIdxMapVal);\r\n                if (newIdxMapValLen > 1) {\r\n                    var newIdx = newIdxMapVal.shift();\r\n                    if (newIdxMapVal.length === 1) {\r\n                        newDataIndexMap[oldKey] = newIdxMapVal[0];\r\n                    }\r\n                    this._update && this._update(newIdx, i);\r\n                }\r\n                else if (newIdxMapValLen === 1) {\r\n                    newDataIndexMap[oldKey] = null;\r\n                    this._update && this._update(newIdxMapVal, i);\r\n                }\r\n                else {\r\n                    this._remove && this._remove(i);\r\n                }\r\n            }\r\n            this._performRestAdd(newDataKeyArr, newDataIndexMap);\r\n        };\r\n        DataDiffer.prototype._executeMultiple = function () {\r\n            var oldArr = this._old;\r\n            var newArr = this._new;\r\n            var oldDataIndexMap = {};\r\n            var newDataIndexMap = {};\r\n            var oldDataKeyArr = [];\r\n            var newDataKeyArr = [];\r\n            this._initIndexMap(oldArr, oldDataIndexMap, oldDataKeyArr, '_oldKeyGetter');\r\n            this._initIndexMap(newArr, newDataIndexMap, newDataKeyArr, '_newKeyGetter');\r\n            for (var i = 0; i < oldDataKeyArr.length; i++) {\r\n                var oldKey = oldDataKeyArr[i];\r\n                var oldIdxMapVal = oldDataIndexMap[oldKey];\r\n                var newIdxMapVal = newDataIndexMap[oldKey];\r\n                var oldIdxMapValLen = dataIndexMapValueLength(oldIdxMapVal);\r\n                var newIdxMapValLen = dataIndexMapValueLength(newIdxMapVal);\r\n                if (oldIdxMapValLen > 1 && newIdxMapValLen === 1) {\r\n                    this._updateManyToOne && this._updateManyToOne(newIdxMapVal, oldIdxMapVal);\r\n                    newDataIndexMap[oldKey] = null;\r\n                }\r\n                else if (oldIdxMapValLen === 1 && newIdxMapValLen > 1) {\r\n                    this._updateOneToMany && this._updateOneToMany(newIdxMapVal, oldIdxMapVal);\r\n                    newDataIndexMap[oldKey] = null;\r\n                }\r\n                else if (oldIdxMapValLen === 1 && newIdxMapValLen === 1) {\r\n                    this._update && this._update(newIdxMapVal, oldIdxMapVal);\r\n                    newDataIndexMap[oldKey] = null;\r\n                }\r\n                else if (oldIdxMapValLen > 1) {\r\n                    for (var i_1 = 0; i_1 < oldIdxMapValLen; i_1++) {\r\n                        this._remove && this._remove(oldIdxMapVal[i_1]);\r\n                    }\r\n                }\r\n                else {\r\n                    this._remove && this._remove(oldIdxMapVal);\r\n                }\r\n            }\r\n            this._performRestAdd(newDataKeyArr, newDataIndexMap);\r\n        };\r\n        DataDiffer.prototype._performRestAdd = function (newDataKeyArr, newDataIndexMap) {\r\n            for (var i = 0; i < newDataKeyArr.length; i++) {\r\n                var newKey = newDataKeyArr[i];\r\n                var newIdxMapVal = newDataIndexMap[newKey];\r\n                var idxMapValLen = dataIndexMapValueLength(newIdxMapVal);\r\n                if (idxMapValLen > 1) {\r\n                    for (var j = 0; j < idxMapValLen; j++) {\r\n                        this._add && this._add(newIdxMapVal[j]);\r\n                    }\r\n                }\r\n                else if (idxMapValLen === 1) {\r\n                    this._add && this._add(newIdxMapVal);\r\n                }\r\n                newDataIndexMap[newKey] = null;\r\n            }\r\n        };\r\n        DataDiffer.prototype._initIndexMap = function (arr, map, keyArr, keyGetterName) {\r\n            var cbModeMultiple = this._diffModeMultiple;\r\n            for (var i = 0; i < arr.length; i++) {\r\n                var key = '_ec_' + this[keyGetterName](arr[i], i);\r\n                if (!cbModeMultiple) {\r\n                    keyArr[i] = key;\r\n                }\r\n                if (!map) {\r\n                    continue;\r\n                }\r\n                var idxMapVal = map[key];\r\n                var idxMapValLen = dataIndexMapValueLength(idxMapVal);\r\n                if (idxMapValLen === 0) {\r\n                    map[key] = i;\r\n                    if (cbModeMultiple) {\r\n                        keyArr.push(key);\r\n                    }\r\n                }\r\n                else if (idxMapValLen === 1) {\r\n                    map[key] = [idxMapVal, i];\r\n                }\r\n                else {\r\n                    idxMapVal.push(i);\r\n                }\r\n            }\r\n        };\r\n        return DataDiffer;\r\n    }());\n\n    function summarizeDimensions(data) {\r\n        var summary = {};\r\n        var encode = summary.encode = {};\r\n        var notExtraCoordDimMap = createHashMap();\r\n        var defaultedLabel = [];\r\n        var defaultedTooltip = [];\r\n        var userOutput = summary.userOutput = {\r\n            dimensionNames: data.dimensions.slice(),\r\n            encode: {}\r\n        };\r\n        each(data.dimensions, function (dimName) {\r\n            var dimItem = data.getDimensionInfo(dimName);\r\n            var coordDim = dimItem.coordDim;\r\n            if (coordDim) {\r\n                if (__DEV__) {\r\n                    assert(VISUAL_DIMENSIONS.get(coordDim) == null);\r\n                }\r\n                var coordDimIndex = dimItem.coordDimIndex;\r\n                getOrCreateEncodeArr(encode, coordDim)[coordDimIndex] = dimName;\r\n                if (!dimItem.isExtraCoord) {\r\n                    notExtraCoordDimMap.set(coordDim, 1);\r\n                    if (mayLabelDimType(dimItem.type)) {\r\n                        defaultedLabel[0] = dimName;\r\n                    }\r\n                    getOrCreateEncodeArr(userOutput.encode, coordDim)[coordDimIndex] = dimItem.index;\r\n                }\r\n                if (dimItem.defaultTooltip) {\r\n                    defaultedTooltip.push(dimName);\r\n                }\r\n            }\r\n            VISUAL_DIMENSIONS.each(function (v, otherDim) {\r\n                var encodeArr = getOrCreateEncodeArr(encode, otherDim);\r\n                var dimIndex = dimItem.otherDims[otherDim];\r\n                if (dimIndex != null && dimIndex !== false) {\r\n                    encodeArr[dimIndex] = dimItem.name;\r\n                }\r\n            });\r\n        });\r\n        var dataDimsOnCoord = [];\r\n        var encodeFirstDimNotExtra = {};\r\n        notExtraCoordDimMap.each(function (v, coordDim) {\r\n            var dimArr = encode[coordDim];\r\n            encodeFirstDimNotExtra[coordDim] = dimArr[0];\r\n            dataDimsOnCoord = dataDimsOnCoord.concat(dimArr);\r\n        });\r\n        summary.dataDimsOnCoord = dataDimsOnCoord;\r\n        summary.encodeFirstDimNotExtra = encodeFirstDimNotExtra;\r\n        var encodeLabel = encode.label;\r\n        if (encodeLabel && encodeLabel.length) {\r\n            defaultedLabel = encodeLabel.slice();\r\n        }\r\n        var encodeTooltip = encode.tooltip;\r\n        if (encodeTooltip && encodeTooltip.length) {\r\n            defaultedTooltip = encodeTooltip.slice();\r\n        }\r\n        else if (!defaultedTooltip.length) {\r\n            defaultedTooltip = defaultedLabel.slice();\r\n        }\r\n        encode.defaultedLabel = defaultedLabel;\r\n        encode.defaultedTooltip = defaultedTooltip;\r\n        return summary;\r\n    }\r\n    function getOrCreateEncodeArr(encode, dim) {\r\n        if (!encode.hasOwnProperty(dim)) {\r\n            encode[dim] = [];\r\n        }\r\n        return encode[dim];\r\n    }\r\n    function getDimensionTypeByAxis(axisType) {\r\n        return axisType === 'category'\r\n            ? 'ordinal'\r\n            : axisType === 'time'\r\n                ? 'time'\r\n                : 'float';\r\n    }\r\n    function mayLabelDimType(dimType) {\r\n        return !(dimType === 'ordinal' || dimType === 'time');\r\n    }\n\n    var DataDimensionInfo = (function () {\r\n        function DataDimensionInfo(opt) {\r\n            this.otherDims = {};\r\n            if (opt != null) {\r\n                extend(this, opt);\r\n            }\r\n        }\r\n        return DataDimensionInfo;\r\n    }());\n\n    var mathFloor = Math.floor;\r\n    var isObject$3 = isObject;\r\n    var map$1 = map;\r\n    var UNDEFINED = 'undefined';\r\n    var INDEX_NOT_FOUND = -1;\r\n    var ID_PREFIX = 'e\\0\\0';\r\n    var dataCtors = {\r\n        'float': typeof Float64Array === UNDEFINED\r\n            ? Array : Float64Array,\r\n        'int': typeof Int32Array === UNDEFINED\r\n            ? Array : Int32Array,\r\n        'ordinal': Array,\r\n        'number': Array,\r\n        'time': Array\r\n    };\r\n    var CtorUint32Array = typeof Uint32Array === UNDEFINED ? Array : Uint32Array;\r\n    var CtorInt32Array = typeof Int32Array === UNDEFINED ? Array : Int32Array;\r\n    var CtorUint16Array = typeof Uint16Array === UNDEFINED ? Array : Uint16Array;\r\n    var TRANSFERABLE_PROPERTIES = [\r\n        'hasItemOption', '_nameList', '_idList', '_invertedIndicesMap',\r\n        '_rawData', '_dimValueGetter',\r\n        '_count', '_rawCount', '_nameDimIdx', '_idDimIdx', '_nameRepeatCount'\r\n    ];\r\n    var CLONE_PROPERTIES = [\r\n        '_extent', '_approximateExtent', '_rawExtent'\r\n    ];\r\n    var defaultDimValueGetters;\r\n    var prepareInvertedIndex;\r\n    var getIndicesCtor;\r\n    var prepareStorage;\r\n    var getRawIndexWithoutIndices;\r\n    var getRawIndexWithIndices;\r\n    var getId;\r\n    var getIdNameFromStore;\r\n    var makeIdFromName;\r\n    var normalizeDimensions;\r\n    var validateDimensions;\r\n    var cloneListForMapAndSample;\r\n    var getInitialExtent;\r\n    var setItemDataAndSeriesIndex;\r\n    var transferProperties;\r\n    var List = (function () {\r\n        function List(dimensions, hostModel) {\r\n            this.type = 'list';\r\n            this._count = 0;\r\n            this._rawCount = 0;\r\n            this._storage = {};\r\n            this._storageArr = [];\r\n            this._nameList = [];\r\n            this._idList = [];\r\n            this._visual = {};\r\n            this._layout = {};\r\n            this._itemVisuals = [];\r\n            this._itemLayouts = [];\r\n            this._graphicEls = [];\r\n            this._rawExtent = {};\r\n            this._extent = {};\r\n            this._approximateExtent = {};\r\n            this._calculationInfo = {};\r\n            this.hasItemOption = true;\r\n            this.TRANSFERABLE_METHODS = ['cloneShallow', 'downSample', 'lttbDownSample', 'map'];\r\n            this.CHANGABLE_METHODS = ['filterSelf', 'selectRange'];\r\n            this.DOWNSAMPLE_METHODS = ['downSample', 'lttbDownSample'];\r\n            this.getRawIndex = getRawIndexWithoutIndices;\r\n            dimensions = dimensions || ['x', 'y'];\r\n            var dimensionInfos = {};\r\n            var dimensionNames = [];\r\n            var invertedIndicesMap = {};\r\n            for (var i = 0; i < dimensions.length; i++) {\r\n                var dimInfoInput = dimensions[i];\r\n                var dimensionInfo = isString(dimInfoInput)\r\n                    ? new DataDimensionInfo({ name: dimInfoInput })\r\n                    : !(dimInfoInput instanceof DataDimensionInfo)\r\n                        ? new DataDimensionInfo(dimInfoInput)\r\n                        : dimInfoInput;\r\n                var dimensionName = dimensionInfo.name;\r\n                dimensionInfo.type = dimensionInfo.type || 'float';\r\n                if (!dimensionInfo.coordDim) {\r\n                    dimensionInfo.coordDim = dimensionName;\r\n                    dimensionInfo.coordDimIndex = 0;\r\n                }\r\n                var otherDims = dimensionInfo.otherDims = dimensionInfo.otherDims || {};\r\n                dimensionNames.push(dimensionName);\r\n                dimensionInfos[dimensionName] = dimensionInfo;\r\n                dimensionInfo.index = i;\r\n                if (dimensionInfo.createInvertedIndices) {\r\n                    invertedIndicesMap[dimensionName] = [];\r\n                }\r\n                if (otherDims.itemName === 0) {\r\n                    this._nameDimIdx = i;\r\n                    this._nameOrdinalMeta = dimensionInfo.ordinalMeta;\r\n                }\r\n                if (otherDims.itemId === 0) {\r\n                    this._idDimIdx = i;\r\n                    this._idOrdinalMeta = dimensionInfo.ordinalMeta;\r\n                }\r\n            }\r\n            this.dimensions = dimensionNames;\r\n            this._dimensionInfos = dimensionInfos;\r\n            this.hostModel = hostModel;\r\n            this._dimensionsSummary = summarizeDimensions(this);\r\n            this._invertedIndicesMap = invertedIndicesMap;\r\n            this.userOutput = this._dimensionsSummary.userOutput;\r\n        }\r\n        List.prototype.getDimension = function (dim) {\r\n            if (typeof dim === 'number'\r\n                || (!isNaN(dim) && !this._dimensionInfos.hasOwnProperty(dim))) {\r\n                dim = this.dimensions[dim];\r\n            }\r\n            return dim;\r\n        };\r\n        List.prototype.getDimensionInfo = function (dim) {\r\n            return this._dimensionInfos[this.getDimension(dim)];\r\n        };\r\n        List.prototype.getDimensionsOnCoord = function () {\r\n            return this._dimensionsSummary.dataDimsOnCoord.slice();\r\n        };\r\n        List.prototype.mapDimension = function (coordDim, idx) {\r\n            var dimensionsSummary = this._dimensionsSummary;\r\n            if (idx == null) {\r\n                return dimensionsSummary.encodeFirstDimNotExtra[coordDim];\r\n            }\r\n            var dims = dimensionsSummary.encode[coordDim];\r\n            return dims ? dims[idx] : null;\r\n        };\r\n        List.prototype.mapDimensionsAll = function (coordDim) {\r\n            var dimensionsSummary = this._dimensionsSummary;\r\n            var dims = dimensionsSummary.encode[coordDim];\r\n            return (dims || []).slice();\r\n        };\r\n        List.prototype.initData = function (data, nameList, dimValueGetter) {\r\n            var notProvider = isSourceInstance(data) || isArrayLike(data);\r\n            var provider = notProvider\r\n                ? new DefaultDataProvider(data, this.dimensions.length)\r\n                : data;\r\n            if (__DEV__) {\r\n                assert(notProvider || (isFunction(provider.getItem)\r\n                    && isFunction(provider.count)), 'Inavlid data provider.');\r\n            }\r\n            this._rawData = provider;\r\n            var sourceFormat = provider.getSource().sourceFormat;\r\n            this._storage = {};\r\n            this._indices = null;\r\n            this._dontMakeIdFromName =\r\n                this._idDimIdx != null\r\n                    || sourceFormat === SOURCE_FORMAT_TYPED_ARRAY\r\n                    || !!provider.fillStorage;\r\n            this._nameList = (nameList || []).slice();\r\n            this._idList = [];\r\n            this._nameRepeatCount = {};\r\n            if (!dimValueGetter) {\r\n                this.hasItemOption = false;\r\n            }\r\n            this.defaultDimValueGetter = defaultDimValueGetters[sourceFormat];\r\n            this._dimValueGetter = dimValueGetter = dimValueGetter\r\n                || this.defaultDimValueGetter;\r\n            this._dimValueGetterArrayRows = defaultDimValueGetters.arrayRows;\r\n            this._rawExtent = {};\r\n            this._initDataFromProvider(0, provider.count());\r\n            if (provider.pure) {\r\n                this.hasItemOption = false;\r\n            }\r\n        };\r\n        List.prototype.getProvider = function () {\r\n            return this._rawData;\r\n        };\r\n        List.prototype.appendData = function (data) {\r\n            if (__DEV__) {\r\n                assert(!this._indices, 'appendData can only be called on raw data.');\r\n            }\r\n            var rawData = this._rawData;\r\n            var start = this.count();\r\n            rawData.appendData(data);\r\n            var end = rawData.count();\r\n            if (!rawData.persistent) {\r\n                end += start;\r\n            }\r\n            this._initDataFromProvider(start, end, true);\r\n        };\r\n        List.prototype.appendValues = function (values, names) {\r\n            var storage = this._storage;\r\n            var dimensions = this.dimensions;\r\n            var dimLen = dimensions.length;\r\n            var rawExtent = this._rawExtent;\r\n            var start = this.count();\r\n            var end = start + Math.max(values.length, names ? names.length : 0);\r\n            for (var i = 0; i < dimLen; i++) {\r\n                var dim = dimensions[i];\r\n                if (!rawExtent[dim]) {\r\n                    rawExtent[dim] = getInitialExtent();\r\n                }\r\n                prepareStorage(storage, this._dimensionInfos[dim], end, true);\r\n            }\r\n            var rawExtentArr = map$1(dimensions, function (dim) {\r\n                return rawExtent[dim];\r\n            });\r\n            var storageArr = this._storageArr = map$1(dimensions, function (dim) {\r\n                return storage[dim];\r\n            });\r\n            var emptyDataItem = [];\r\n            for (var idx = start; idx < end; idx++) {\r\n                var sourceIdx = idx - start;\r\n                for (var dimIdx = 0; dimIdx < dimLen; dimIdx++) {\r\n                    var dim = dimensions[dimIdx];\r\n                    var val = this._dimValueGetterArrayRows(values[sourceIdx] || emptyDataItem, dim, sourceIdx, dimIdx);\r\n                    storageArr[dimIdx][idx] = val;\r\n                    var dimRawExtent = rawExtentArr[dimIdx];\r\n                    val < dimRawExtent[0] && (dimRawExtent[0] = val);\r\n                    val > dimRawExtent[1] && (dimRawExtent[1] = val);\r\n                }\r\n                if (names) {\r\n                    this._nameList[idx] = names[sourceIdx];\r\n                    if (!this._dontMakeIdFromName) {\r\n                        makeIdFromName(this, idx);\r\n                    }\r\n                }\r\n            }\r\n            this._rawCount = this._count = end;\r\n            this._extent = {};\r\n            prepareInvertedIndex(this);\r\n        };\r\n        List.prototype._initDataFromProvider = function (start, end, append) {\r\n            if (start >= end) {\r\n                return;\r\n            }\r\n            var rawData = this._rawData;\r\n            var storage = this._storage;\r\n            var dimensions = this.dimensions;\r\n            var dimLen = dimensions.length;\r\n            var dimensionInfoMap = this._dimensionInfos;\r\n            var nameList = this._nameList;\r\n            var idList = this._idList;\r\n            var rawExtent = this._rawExtent;\r\n            var sourceFormat = rawData.getSource().sourceFormat;\r\n            var isFormatOriginal = sourceFormat === SOURCE_FORMAT_ORIGINAL;\r\n            for (var i = 0; i < dimLen; i++) {\r\n                var dim = dimensions[i];\r\n                if (!rawExtent[dim]) {\r\n                    rawExtent[dim] = getInitialExtent();\r\n                }\r\n                prepareStorage(storage, dimensionInfoMap[dim], end, append);\r\n            }\r\n            var storageArr = this._storageArr = map$1(dimensions, function (dim) {\r\n                return storage[dim];\r\n            });\r\n            var rawExtentArr = map$1(dimensions, function (dim) {\r\n                return rawExtent[dim];\r\n            });\r\n            if (rawData.fillStorage) {\r\n                rawData.fillStorage(start, end, storageArr, rawExtentArr);\r\n            }\r\n            else {\r\n                var dataItem = [];\r\n                for (var idx = start; idx < end; idx++) {\r\n                    dataItem = rawData.getItem(idx, dataItem);\r\n                    for (var dimIdx = 0; dimIdx < dimLen; dimIdx++) {\r\n                        var dim = dimensions[dimIdx];\r\n                        var dimStorage = storageArr[dimIdx];\r\n                        var val = this._dimValueGetter(dataItem, dim, idx, dimIdx);\r\n                        dimStorage[idx] = val;\r\n                        var dimRawExtent = rawExtentArr[dimIdx];\r\n                        val < dimRawExtent[0] && (dimRawExtent[0] = val);\r\n                        val > dimRawExtent[1] && (dimRawExtent[1] = val);\r\n                    }\r\n                    if (isFormatOriginal && !rawData.pure && dataItem) {\r\n                        var itemName = dataItem.name;\r\n                        if (nameList[idx] == null && itemName != null) {\r\n                            nameList[idx] = convertOptionIdName(itemName, null);\r\n                        }\r\n                        var itemId = dataItem.id;\r\n                        if (idList[idx] == null && itemId != null) {\r\n                            idList[idx] = convertOptionIdName(itemId, null);\r\n                        }\r\n                    }\r\n                    if (!this._dontMakeIdFromName) {\r\n                        makeIdFromName(this, idx);\r\n                    }\r\n                }\r\n            }\r\n            if (!rawData.persistent && rawData.clean) {\r\n                rawData.clean();\r\n            }\r\n            this._rawCount = this._count = end;\r\n            this._extent = {};\r\n            prepareInvertedIndex(this);\r\n        };\r\n        List.prototype.count = function () {\r\n            return this._count;\r\n        };\r\n        List.prototype.getIndices = function () {\r\n            var newIndices;\r\n            var indices = this._indices;\r\n            if (indices) {\r\n                var Ctor = indices.constructor;\r\n                var thisCount = this._count;\r\n                if (Ctor === Array) {\r\n                    newIndices = new Ctor(thisCount);\r\n                    for (var i = 0; i < thisCount; i++) {\r\n                        newIndices[i] = indices[i];\r\n                    }\r\n                }\r\n                else {\r\n                    newIndices = new Ctor(indices.buffer, 0, thisCount);\r\n                }\r\n            }\r\n            else {\r\n                var Ctor = getIndicesCtor(this);\r\n                newIndices = new Ctor(this.count());\r\n                for (var i = 0; i < newIndices.length; i++) {\r\n                    newIndices[i] = i;\r\n                }\r\n            }\r\n            return newIndices;\r\n        };\r\n        List.prototype.getByDimIdx = function (dimIdx, idx) {\r\n            if (!(idx >= 0 && idx < this._count)) {\r\n                return NaN;\r\n            }\r\n            var dimStore = this._storageArr[dimIdx];\r\n            return dimStore ? dimStore[this.getRawIndex(idx)] : NaN;\r\n        };\r\n        List.prototype.get = function (dim, idx) {\r\n            if (!(idx >= 0 && idx < this._count)) {\r\n                return NaN;\r\n            }\r\n            var dimStore = this._storage[dim];\r\n            return dimStore ? dimStore[this.getRawIndex(idx)] : NaN;\r\n        };\r\n        List.prototype.getByRawIndex = function (dim, rawIdx) {\r\n            if (!(rawIdx >= 0 && rawIdx < this._rawCount)) {\r\n                return NaN;\r\n            }\r\n            var dimStore = this._storage[dim];\r\n            return dimStore ? dimStore[rawIdx] : NaN;\r\n        };\r\n        List.prototype.getValues = function (dimensions, idx) {\r\n            var values = [];\r\n            if (!isArray(dimensions)) {\r\n                idx = dimensions;\r\n                dimensions = this.dimensions;\r\n            }\r\n            for (var i = 0, len = dimensions.length; i < len; i++) {\r\n                values.push(this.get(dimensions[i], idx));\r\n            }\r\n            return values;\r\n        };\r\n        List.prototype.hasValue = function (idx) {\r\n            var dataDimsOnCoord = this._dimensionsSummary.dataDimsOnCoord;\r\n            for (var i = 0, len = dataDimsOnCoord.length; i < len; i++) {\r\n                if (isNaN(this.get(dataDimsOnCoord[i], idx))) {\r\n                    return false;\r\n                }\r\n            }\r\n            return true;\r\n        };\r\n        List.prototype.getDataExtent = function (dim) {\r\n            dim = this.getDimension(dim);\r\n            var dimData = this._storage[dim];\r\n            var initialExtent = getInitialExtent();\r\n            if (!dimData) {\r\n                return initialExtent;\r\n            }\r\n            var currEnd = this.count();\r\n            var useRaw = !this._indices;\r\n            var dimExtent;\r\n            if (useRaw) {\r\n                return this._rawExtent[dim].slice();\r\n            }\r\n            dimExtent = this._extent[dim];\r\n            if (dimExtent) {\r\n                return dimExtent.slice();\r\n            }\r\n            dimExtent = initialExtent;\r\n            var min = dimExtent[0];\r\n            var max = dimExtent[1];\r\n            for (var i = 0; i < currEnd; i++) {\r\n                var rawIdx = this.getRawIndex(i);\r\n                var value = dimData[rawIdx];\r\n                value < min && (min = value);\r\n                value > max && (max = value);\r\n            }\r\n            dimExtent = [min, max];\r\n            this._extent[dim] = dimExtent;\r\n            return dimExtent;\r\n        };\r\n        List.prototype.getApproximateExtent = function (dim) {\r\n            dim = this.getDimension(dim);\r\n            return this._approximateExtent[dim] || this.getDataExtent(dim);\r\n        };\r\n        List.prototype.setApproximateExtent = function (extent, dim) {\r\n            dim = this.getDimension(dim);\r\n            this._approximateExtent[dim] = extent.slice();\r\n        };\r\n        List.prototype.getCalculationInfo = function (key) {\r\n            return this._calculationInfo[key];\r\n        };\r\n        List.prototype.setCalculationInfo = function (key, value) {\r\n            isObject$3(key)\r\n                ? extend(this._calculationInfo, key)\r\n                : (this._calculationInfo[key] = value);\r\n        };\r\n        List.prototype.getSum = function (dim) {\r\n            var dimData = this._storage[dim];\r\n            var sum = 0;\r\n            if (dimData) {\r\n                for (var i = 0, len = this.count(); i < len; i++) {\r\n                    var value = this.get(dim, i);\r\n                    if (!isNaN(value)) {\r\n                        sum += value;\r\n                    }\r\n                }\r\n            }\r\n            return sum;\r\n        };\r\n        List.prototype.getMedian = function (dim) {\r\n            var dimDataArray = [];\r\n            this.each(dim, function (val) {\r\n                if (!isNaN(val)) {\r\n                    dimDataArray.push(val);\r\n                }\r\n            });\r\n            var sortedDimDataArray = dimDataArray.sort(function (a, b) {\r\n                return a - b;\r\n            });\r\n            var len = this.count();\r\n            return len === 0\r\n                ? 0\r\n                : len % 2 === 1\r\n                    ? sortedDimDataArray[(len - 1) / 2]\r\n                    : (sortedDimDataArray[len / 2] + sortedDimDataArray[len / 2 - 1]) / 2;\r\n        };\r\n        List.prototype.rawIndexOf = function (dim, value) {\r\n            var invertedIndices = dim && this._invertedIndicesMap[dim];\r\n            if (__DEV__) {\r\n                if (!invertedIndices) {\r\n                    throw new Error('Do not supported yet');\r\n                }\r\n            }\r\n            var rawIndex = invertedIndices[value];\r\n            if (rawIndex == null || isNaN(rawIndex)) {\r\n                return INDEX_NOT_FOUND;\r\n            }\r\n            return rawIndex;\r\n        };\r\n        List.prototype.indexOfName = function (name) {\r\n            for (var i = 0, len = this.count(); i < len; i++) {\r\n                if (this.getName(i) === name) {\r\n                    return i;\r\n                }\r\n            }\r\n            return -1;\r\n        };\r\n        List.prototype.indexOfRawIndex = function (rawIndex) {\r\n            if (rawIndex >= this._rawCount || rawIndex < 0) {\r\n                return -1;\r\n            }\r\n            if (!this._indices) {\r\n                return rawIndex;\r\n            }\r\n            var indices = this._indices;\r\n            var rawDataIndex = indices[rawIndex];\r\n            if (rawDataIndex != null && rawDataIndex < this._count && rawDataIndex === rawIndex) {\r\n                return rawIndex;\r\n            }\r\n            var left = 0;\r\n            var right = this._count - 1;\r\n            while (left <= right) {\r\n                var mid = (left + right) / 2 | 0;\r\n                if (indices[mid] < rawIndex) {\r\n                    left = mid + 1;\r\n                }\r\n                else if (indices[mid] > rawIndex) {\r\n                    right = mid - 1;\r\n                }\r\n                else {\r\n                    return mid;\r\n                }\r\n            }\r\n            return -1;\r\n        };\r\n        List.prototype.indicesOfNearest = function (dim, value, maxDistance) {\r\n            var storage = this._storage;\r\n            var dimData = storage[dim];\r\n            var nearestIndices = [];\r\n            if (!dimData) {\r\n                return nearestIndices;\r\n            }\r\n            if (maxDistance == null) {\r\n                maxDistance = Infinity;\r\n            }\r\n            var minDist = Infinity;\r\n            var minDiff = -1;\r\n            var nearestIndicesLen = 0;\r\n            for (var i = 0, len = this.count(); i < len; i++) {\r\n                var dataIndex = this.getRawIndex(i);\r\n                var diff = value - dimData[dataIndex];\r\n                var dist = Math.abs(diff);\r\n                if (dist <= maxDistance) {\r\n                    if (dist < minDist\r\n                        || (dist === minDist && diff >= 0 && minDiff < 0)) {\r\n                        minDist = dist;\r\n                        minDiff = diff;\r\n                        nearestIndicesLen = 0;\r\n                    }\r\n                    if (diff === minDiff) {\r\n                        nearestIndices[nearestIndicesLen++] = i;\r\n                    }\r\n                }\r\n            }\r\n            nearestIndices.length = nearestIndicesLen;\r\n            return nearestIndices;\r\n        };\r\n        List.prototype.getRawDataItem = function (idx) {\r\n            if (!this._rawData.persistent) {\r\n                var val = [];\r\n                for (var i = 0; i < this.dimensions.length; i++) {\r\n                    var dim = this.dimensions[i];\r\n                    val.push(this.get(dim, idx));\r\n                }\r\n                return val;\r\n            }\r\n            else {\r\n                return this._rawData.getItem(this.getRawIndex(idx));\r\n            }\r\n        };\r\n        List.prototype.getName = function (idx) {\r\n            var rawIndex = this.getRawIndex(idx);\r\n            var name = this._nameList[rawIndex];\r\n            if (name == null && this._nameDimIdx != null) {\r\n                name = getIdNameFromStore(this, this._nameDimIdx, this._nameOrdinalMeta, rawIndex);\r\n            }\r\n            if (name == null) {\r\n                name = '';\r\n            }\r\n            return name;\r\n        };\r\n        List.prototype.getId = function (idx) {\r\n            return getId(this, this.getRawIndex(idx));\r\n        };\r\n        List.prototype.each = function (dims, cb, ctx, ctxCompat) {\r\n            var _this = this;\r\n            if (!this._count) {\r\n                return;\r\n            }\r\n            if (typeof dims === 'function') {\r\n                ctxCompat = ctx;\r\n                ctx = cb;\r\n                cb = dims;\r\n                dims = [];\r\n            }\r\n            var fCtx = (ctx || ctxCompat || this);\r\n            var dimNames = map$1(normalizeDimensions(dims), this.getDimension, this);\r\n            if (__DEV__) {\r\n                validateDimensions(this, dimNames);\r\n            }\r\n            var dimSize = dimNames.length;\r\n            var dimIndices = map$1(dimNames, function (dimName) {\r\n                return _this._dimensionInfos[dimName].index;\r\n            });\r\n            var storageArr = this._storageArr;\r\n            for (var i = 0, len = this.count(); i < len; i++) {\r\n                var rawIdx = this.getRawIndex(i);\r\n                switch (dimSize) {\r\n                    case 0:\r\n                        cb.call(fCtx, i);\r\n                        break;\r\n                    case 1:\r\n                        cb.call(fCtx, storageArr[dimIndices[0]][rawIdx], i);\r\n                        break;\r\n                    case 2:\r\n                        cb.call(fCtx, storageArr[dimIndices[0]][rawIdx], storageArr[dimIndices[1]][rawIdx], i);\r\n                        break;\r\n                    default:\r\n                        var k = 0;\r\n                        var value = [];\r\n                        for (; k < dimSize; k++) {\r\n                            value[k] = storageArr[dimIndices[k]][rawIdx];\r\n                        }\r\n                        value[k] = i;\r\n                        cb.apply(fCtx, value);\r\n                }\r\n            }\r\n        };\r\n        List.prototype.filterSelf = function (dims, cb, ctx, ctxCompat) {\r\n            var _this = this;\r\n            if (!this._count) {\r\n                return;\r\n            }\r\n            if (typeof dims === 'function') {\r\n                ctxCompat = ctx;\r\n                ctx = cb;\r\n                cb = dims;\r\n                dims = [];\r\n            }\r\n            var fCtx = (ctx || ctxCompat || this);\r\n            var dimNames = map$1(normalizeDimensions(dims), this.getDimension, this);\r\n            if (__DEV__) {\r\n                validateDimensions(this, dimNames);\r\n            }\r\n            var count = this.count();\r\n            var Ctor = getIndicesCtor(this);\r\n            var newIndices = new Ctor(count);\r\n            var value = [];\r\n            var dimSize = dimNames.length;\r\n            var offset = 0;\r\n            var dimIndices = map$1(dimNames, function (dimName) {\r\n                return _this._dimensionInfos[dimName].index;\r\n            });\r\n            var dim0 = dimIndices[0];\r\n            var storageArr = this._storageArr;\r\n            for (var i = 0; i < count; i++) {\r\n                var keep = void 0;\r\n                var rawIdx = this.getRawIndex(i);\r\n                if (dimSize === 0) {\r\n                    keep = cb.call(fCtx, i);\r\n                }\r\n                else if (dimSize === 1) {\r\n                    var val = storageArr[dim0][rawIdx];\r\n                    keep = cb.call(fCtx, val, i);\r\n                }\r\n                else {\r\n                    var k = 0;\r\n                    for (; k < dimSize; k++) {\r\n                        value[k] = storageArr[dimIndices[k]][rawIdx];\r\n                    }\r\n                    value[k] = i;\r\n                    keep = cb.apply(fCtx, value);\r\n                }\r\n                if (keep) {\r\n                    newIndices[offset++] = rawIdx;\r\n                }\r\n            }\r\n            if (offset < count) {\r\n                this._indices = newIndices;\r\n            }\r\n            this._count = offset;\r\n            this._extent = {};\r\n            this.getRawIndex = this._indices ? getRawIndexWithIndices : getRawIndexWithoutIndices;\r\n            return this;\r\n        };\r\n        List.prototype.selectRange = function (range) {\r\n            var _this = this;\r\n            var len = this._count;\r\n            if (!len) {\r\n                return;\r\n            }\r\n            var dimensions = [];\r\n            for (var dim in range) {\r\n                if (range.hasOwnProperty(dim)) {\r\n                    dimensions.push(dim);\r\n                }\r\n            }\r\n            if (__DEV__) {\r\n                validateDimensions(this, dimensions);\r\n            }\r\n            var dimSize = dimensions.length;\r\n            if (!dimSize) {\r\n                return;\r\n            }\r\n            var originalCount = this.count();\r\n            var Ctor = getIndicesCtor(this);\r\n            var newIndices = new Ctor(originalCount);\r\n            var offset = 0;\r\n            var dim0 = dimensions[0];\r\n            var dimIndices = map$1(dimensions, function (dimName) {\r\n                return _this._dimensionInfos[dimName].index;\r\n            });\r\n            var min = range[dim0][0];\r\n            var max = range[dim0][1];\r\n            var storageArr = this._storageArr;\r\n            var quickFinished = false;\r\n            if (!this._indices) {\r\n                var idx = 0;\r\n                if (dimSize === 1) {\r\n                    var dimStorage = storageArr[dimIndices[0]];\r\n                    for (var i = 0; i < len; i++) {\r\n                        var val = dimStorage[i];\r\n                        if ((val >= min && val <= max) || isNaN(val)) {\r\n                            newIndices[offset++] = idx;\r\n                        }\r\n                        idx++;\r\n                    }\r\n                    quickFinished = true;\r\n                }\r\n                else if (dimSize === 2) {\r\n                    var dimStorage = storageArr[dimIndices[0]];\r\n                    var dimStorage2 = storageArr[dimIndices[1]];\r\n                    var min2 = range[dimensions[1]][0];\r\n                    var max2 = range[dimensions[1]][1];\r\n                    for (var i = 0; i < len; i++) {\r\n                        var val = dimStorage[i];\r\n                        var val2 = dimStorage2[i];\r\n                        if (((val >= min && val <= max) || isNaN(val))\r\n                            && ((val2 >= min2 && val2 <= max2) || isNaN(val2))) {\r\n                            newIndices[offset++] = idx;\r\n                        }\r\n                        idx++;\r\n                    }\r\n                    quickFinished = true;\r\n                }\r\n            }\r\n            if (!quickFinished) {\r\n                if (dimSize === 1) {\r\n                    for (var i = 0; i < originalCount; i++) {\r\n                        var rawIndex = this.getRawIndex(i);\r\n                        var val = storageArr[dimIndices[0]][rawIndex];\r\n                        if ((val >= min && val <= max) || isNaN(val)) {\r\n                            newIndices[offset++] = rawIndex;\r\n                        }\r\n                    }\r\n                }\r\n                else {\r\n                    for (var i = 0; i < originalCount; i++) {\r\n                        var keep = true;\r\n                        var rawIndex = this.getRawIndex(i);\r\n                        for (var k = 0; k < dimSize; k++) {\r\n                            var dimk = dimensions[k];\r\n                            var val = storageArr[dimIndices[k]][rawIndex];\r\n                            if (val < range[dimk][0] || val > range[dimk][1]) {\r\n                                keep = false;\r\n                            }\r\n                        }\r\n                        if (keep) {\r\n                            newIndices[offset++] = this.getRawIndex(i);\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n            if (offset < originalCount) {\r\n                this._indices = newIndices;\r\n            }\r\n            this._count = offset;\r\n            this._extent = {};\r\n            this.getRawIndex = this._indices ? getRawIndexWithIndices : getRawIndexWithoutIndices;\r\n            return this;\r\n        };\r\n        List.prototype.mapArray = function (dims, cb, ctx, ctxCompat) {\r\n            if (typeof dims === 'function') {\r\n                ctxCompat = ctx;\r\n                ctx = cb;\r\n                cb = dims;\r\n                dims = [];\r\n            }\r\n            ctx = (ctx || ctxCompat || this);\r\n            var result = [];\r\n            this.each(dims, function () {\r\n                result.push(cb && cb.apply(this, arguments));\r\n            }, ctx);\r\n            return result;\r\n        };\r\n        List.prototype.map = function (dims, cb, ctx, ctxCompat) {\r\n            var fCtx = (ctx || ctxCompat || this);\r\n            var dimNames = map$1(normalizeDimensions(dims), this.getDimension, this);\r\n            if (__DEV__) {\r\n                validateDimensions(this, dimNames);\r\n            }\r\n            var list = cloneListForMapAndSample(this, dimNames);\r\n            var storage = list._storage;\r\n            list._indices = this._indices;\r\n            list.getRawIndex = list._indices ? getRawIndexWithIndices : getRawIndexWithoutIndices;\r\n            var tmpRetValue = [];\r\n            var dimSize = dimNames.length;\r\n            var dataCount = this.count();\r\n            var values = [];\r\n            var rawExtent = list._rawExtent;\r\n            for (var dataIndex = 0; dataIndex < dataCount; dataIndex++) {\r\n                for (var dimIndex = 0; dimIndex < dimSize; dimIndex++) {\r\n                    values[dimIndex] = this.get(dimNames[dimIndex], dataIndex);\r\n                }\r\n                values[dimSize] = dataIndex;\r\n                var retValue = cb && cb.apply(fCtx, values);\r\n                if (retValue != null) {\r\n                    if (typeof retValue !== 'object') {\r\n                        tmpRetValue[0] = retValue;\r\n                        retValue = tmpRetValue;\r\n                    }\r\n                    var rawIndex = this.getRawIndex(dataIndex);\r\n                    for (var i = 0; i < retValue.length; i++) {\r\n                        var dim = dimNames[i];\r\n                        var val = retValue[i];\r\n                        var rawExtentOnDim = rawExtent[dim];\r\n                        var dimStore = storage[dim];\r\n                        if (dimStore) {\r\n                            dimStore[rawIndex] = val;\r\n                        }\r\n                        if (val < rawExtentOnDim[0]) {\r\n                            rawExtentOnDim[0] = val;\r\n                        }\r\n                        if (val > rawExtentOnDim[1]) {\r\n                            rawExtentOnDim[1] = val;\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n            return list;\r\n        };\r\n        List.prototype.downSample = function (dimension, rate, sampleValue, sampleIndex) {\r\n            var list = cloneListForMapAndSample(this, [dimension]);\r\n            var targetStorage = list._storage;\r\n            var frameValues = [];\r\n            var frameSize = mathFloor(1 / rate);\r\n            var dimStore = targetStorage[dimension];\r\n            var len = this.count();\r\n            var rawExtentOnDim = list._rawExtent[dimension];\r\n            var newIndices = new (getIndicesCtor(this))(len);\r\n            var offset = 0;\r\n            for (var i = 0; i < len; i += frameSize) {\r\n                if (frameSize > len - i) {\r\n                    frameSize = len - i;\r\n                    frameValues.length = frameSize;\r\n                }\r\n                for (var k = 0; k < frameSize; k++) {\r\n                    var dataIdx = this.getRawIndex(i + k);\r\n                    frameValues[k] = dimStore[dataIdx];\r\n                }\r\n                var value = sampleValue(frameValues);\r\n                var sampleFrameIdx = this.getRawIndex(Math.min(i + sampleIndex(frameValues, value) || 0, len - 1));\r\n                dimStore[sampleFrameIdx] = value;\r\n                if (value < rawExtentOnDim[0]) {\r\n                    rawExtentOnDim[0] = value;\r\n                }\r\n                if (value > rawExtentOnDim[1]) {\r\n                    rawExtentOnDim[1] = value;\r\n                }\r\n                newIndices[offset++] = sampleFrameIdx;\r\n            }\r\n            list._count = offset;\r\n            list._indices = newIndices;\r\n            list.getRawIndex = getRawIndexWithIndices;\r\n            return list;\r\n        };\r\n        List.prototype.lttbDownSample = function (valueDimension, rate) {\r\n            var list = cloneListForMapAndSample(this, []);\r\n            var targetStorage = list._storage;\r\n            var dimStore = targetStorage[valueDimension];\r\n            var len = this.count();\r\n            var newIndices = new (getIndicesCtor(this))(len);\r\n            var sampledIndex = 0;\r\n            var frameSize = mathFloor(1 / rate);\r\n            var currentRawIndex = this.getRawIndex(0);\r\n            var maxArea;\r\n            var area;\r\n            var nextRawIndex;\r\n            newIndices[sampledIndex++] = currentRawIndex;\r\n            for (var i = 1; i < len - 1; i += frameSize) {\r\n                var nextFrameStart = Math.min(i + frameSize, len - 1);\r\n                var nextFrameEnd = Math.min(i + frameSize * 2, len);\r\n                var avgX = (nextFrameEnd + nextFrameStart) / 2;\r\n                var avgY = 0;\r\n                for (var idx = nextFrameStart; idx < nextFrameEnd; idx++) {\r\n                    var rawIndex = this.getRawIndex(idx);\r\n                    var y = dimStore[rawIndex];\r\n                    if (isNaN(y)) {\r\n                        continue;\r\n                    }\r\n                    avgY += y;\r\n                }\r\n                avgY /= (nextFrameEnd - nextFrameStart);\r\n                var frameStart = i;\r\n                var frameEnd = Math.min(i + frameSize, len);\r\n                var pointAX = i - 1;\r\n                var pointAY = dimStore[currentRawIndex];\r\n                maxArea = -1;\r\n                nextRawIndex = frameStart;\r\n                for (var idx = frameStart; idx < frameEnd; idx++) {\r\n                    var rawIndex = this.getRawIndex(idx);\r\n                    var y = dimStore[rawIndex];\r\n                    if (isNaN(y)) {\r\n                        continue;\r\n                    }\r\n                    area = Math.abs((pointAX - avgX) * (y - pointAY)\r\n                        - (pointAX - idx) * (avgY - pointAY));\r\n                    if (area > maxArea) {\r\n                        maxArea = area;\r\n                        nextRawIndex = rawIndex;\r\n                    }\r\n                }\r\n                newIndices[sampledIndex++] = nextRawIndex;\r\n                currentRawIndex = nextRawIndex;\r\n            }\r\n            newIndices[sampledIndex++] = this.getRawIndex(len - 1);\r\n            list._count = sampledIndex;\r\n            list._indices = newIndices;\r\n            list.getRawIndex = getRawIndexWithIndices;\r\n            return list;\r\n        };\r\n        List.prototype.getItemModel = function (idx) {\r\n            var hostModel = this.hostModel;\r\n            var dataItem = this.getRawDataItem(idx);\r\n            return new Model(dataItem, hostModel, hostModel && hostModel.ecModel);\r\n        };\r\n        List.prototype.diff = function (otherList) {\r\n            var thisList = this;\r\n            return new DataDiffer(otherList ? otherList.getIndices() : [], this.getIndices(), function (idx) {\r\n                return getId(otherList, idx);\r\n            }, function (idx) {\r\n                return getId(thisList, idx);\r\n            });\r\n        };\r\n        List.prototype.getVisual = function (key) {\r\n            var visual = this._visual;\r\n            return visual && visual[key];\r\n        };\r\n        List.prototype.setVisual = function (kvObj, val) {\r\n            this._visual = this._visual || {};\r\n            if (isObject$3(kvObj)) {\r\n                extend(this._visual, kvObj);\r\n            }\r\n            else {\r\n                this._visual[kvObj] = val;\r\n            }\r\n        };\r\n        List.prototype.getItemVisual = function (idx, key) {\r\n            var itemVisual = this._itemVisuals[idx];\r\n            var val = itemVisual && itemVisual[key];\r\n            if (val == null) {\r\n                return this.getVisual(key);\r\n            }\r\n            return val;\r\n        };\r\n        List.prototype.hasItemVisual = function () {\r\n            return this._itemVisuals.length > 0;\r\n        };\r\n        List.prototype.ensureUniqueItemVisual = function (idx, key) {\r\n            var itemVisuals = this._itemVisuals;\r\n            var itemVisual = itemVisuals[idx];\r\n            if (!itemVisual) {\r\n                itemVisual = itemVisuals[idx] = {};\r\n            }\r\n            var val = itemVisual[key];\r\n            if (val == null) {\r\n                val = this.getVisual(key);\r\n                if (isArray(val)) {\r\n                    val = val.slice();\r\n                }\r\n                else if (isObject$3(val)) {\r\n                    val = extend({}, val);\r\n                }\r\n                itemVisual[key] = val;\r\n            }\r\n            return val;\r\n        };\r\n        List.prototype.setItemVisual = function (idx, key, value) {\r\n            var itemVisual = this._itemVisuals[idx] || {};\r\n            this._itemVisuals[idx] = itemVisual;\r\n            if (isObject$3(key)) {\r\n                extend(itemVisual, key);\r\n            }\r\n            else {\r\n                itemVisual[key] = value;\r\n            }\r\n        };\r\n        List.prototype.clearAllVisual = function () {\r\n            this._visual = {};\r\n            this._itemVisuals = [];\r\n        };\r\n        List.prototype.setLayout = function (key, val) {\r\n            if (isObject$3(key)) {\r\n                for (var name_1 in key) {\r\n                    if (key.hasOwnProperty(name_1)) {\r\n                        this.setLayout(name_1, key[name_1]);\r\n                    }\r\n                }\r\n                return;\r\n            }\r\n            this._layout[key] = val;\r\n        };\r\n        List.prototype.getLayout = function (key) {\r\n            return this._layout[key];\r\n        };\r\n        List.prototype.getItemLayout = function (idx) {\r\n            return this._itemLayouts[idx];\r\n        };\r\n        List.prototype.setItemLayout = function (idx, layout, merge) {\r\n            this._itemLayouts[idx] = merge\r\n                ? extend(this._itemLayouts[idx] || {}, layout)\r\n                : layout;\r\n        };\r\n        List.prototype.clearItemLayouts = function () {\r\n            this._itemLayouts.length = 0;\r\n        };\r\n        List.prototype.setItemGraphicEl = function (idx, el) {\r\n            var hostModel = this.hostModel;\r\n            if (el) {\r\n                var ecData = getECData(el);\r\n                ecData.dataIndex = idx;\r\n                ecData.dataType = this.dataType;\r\n                ecData.seriesIndex = hostModel && hostModel.seriesIndex;\r\n                if (el.type === 'group') {\r\n                    el.traverse(setItemDataAndSeriesIndex, el);\r\n                }\r\n            }\r\n            this._graphicEls[idx] = el;\r\n        };\r\n        List.prototype.getItemGraphicEl = function (idx) {\r\n            return this._graphicEls[idx];\r\n        };\r\n        List.prototype.eachItemGraphicEl = function (cb, context) {\r\n            each(this._graphicEls, function (el, idx) {\r\n                if (el) {\r\n                    cb && cb.call(context, el, idx);\r\n                }\r\n            });\r\n        };\r\n        List.prototype.cloneShallow = function (list) {\r\n            if (!list) {\r\n                var dimensionInfoList = map$1(this.dimensions, this.getDimensionInfo, this);\r\n                list = new List(dimensionInfoList, this.hostModel);\r\n            }\r\n            list._storage = this._storage;\r\n            list._storageArr = this._storageArr;\r\n            transferProperties(list, this);\r\n            if (this._indices) {\r\n                var Ctor = this._indices.constructor;\r\n                if (Ctor === Array) {\r\n                    var thisCount = this._indices.length;\r\n                    list._indices = new Ctor(thisCount);\r\n                    for (var i = 0; i < thisCount; i++) {\r\n                        list._indices[i] = this._indices[i];\r\n                    }\r\n                }\r\n                else {\r\n                    list._indices = new Ctor(this._indices);\r\n                }\r\n            }\r\n            else {\r\n                list._indices = null;\r\n            }\r\n            list.getRawIndex = list._indices ? getRawIndexWithIndices : getRawIndexWithoutIndices;\r\n            return list;\r\n        };\r\n        List.prototype.wrapMethod = function (methodName, injectFunction) {\r\n            var originalMethod = this[methodName];\r\n            if (typeof originalMethod !== 'function') {\r\n                return;\r\n            }\r\n            this.__wrappedMethods = this.__wrappedMethods || [];\r\n            this.__wrappedMethods.push(methodName);\r\n            this[methodName] = function () {\r\n                var res = originalMethod.apply(this, arguments);\r\n                return injectFunction.apply(this, [res].concat(slice(arguments)));\r\n            };\r\n        };\r\n        List.internalField = (function () {\r\n            defaultDimValueGetters = {\r\n                arrayRows: getDimValueSimply,\r\n                objectRows: function (dataItem, dimName, dataIndex, dimIndex) {\r\n                    return parseDataValue(dataItem[dimName], this._dimensionInfos[dimName]);\r\n                },\r\n                keyedColumns: getDimValueSimply,\r\n                original: function (dataItem, dimName, dataIndex, dimIndex) {\r\n                    var value = dataItem && (dataItem.value == null ? dataItem : dataItem.value);\r\n                    if (!this._rawData.pure && isDataItemOption(dataItem)) {\r\n                        this.hasItemOption = true;\r\n                    }\r\n                    return parseDataValue((value instanceof Array)\r\n                        ? value[dimIndex]\r\n                        : value, this._dimensionInfos[dimName]);\r\n                },\r\n                typedArray: function (dataItem, dimName, dataIndex, dimIndex) {\r\n                    return dataItem[dimIndex];\r\n                }\r\n            };\r\n            function getDimValueSimply(dataItem, dimName, dataIndex, dimIndex) {\r\n                return parseDataValue(dataItem[dimIndex], this._dimensionInfos[dimName]);\r\n            }\r\n            prepareInvertedIndex = function (list) {\r\n                var invertedIndicesMap = list._invertedIndicesMap;\r\n                each(invertedIndicesMap, function (invertedIndices, dim) {\r\n                    var dimInfo = list._dimensionInfos[dim];\r\n                    var ordinalMeta = dimInfo.ordinalMeta;\r\n                    if (ordinalMeta) {\r\n                        invertedIndices = invertedIndicesMap[dim] = new CtorInt32Array(ordinalMeta.categories.length);\r\n                        for (var i = 0; i < invertedIndices.length; i++) {\r\n                            invertedIndices[i] = INDEX_NOT_FOUND;\r\n                        }\r\n                        for (var i = 0; i < list._count; i++) {\r\n                            invertedIndices[list.get(dim, i)] = i;\r\n                        }\r\n                    }\r\n                });\r\n            };\r\n            getIdNameFromStore = function (list, dimIdx, ordinalMeta, rawIndex) {\r\n                var val;\r\n                var chunk = list._storageArr[dimIdx];\r\n                if (chunk) {\r\n                    val = chunk[rawIndex];\r\n                    if (ordinalMeta && ordinalMeta.categories.length) {\r\n                        val = ordinalMeta.categories[val];\r\n                    }\r\n                }\r\n                return convertOptionIdName(val, null);\r\n            };\r\n            getIndicesCtor = function (list) {\r\n                return list._rawCount > 65535 ? CtorUint32Array : CtorUint16Array;\r\n            };\r\n            prepareStorage = function (storage, dimInfo, end, append) {\r\n                var DataCtor = dataCtors[dimInfo.type];\r\n                var dim = dimInfo.name;\r\n                if (append) {\r\n                    var oldStore = storage[dim];\r\n                    var oldLen = oldStore && oldStore.length;\r\n                    if (!(oldLen === end)) {\r\n                        var newStore = new DataCtor(end);\r\n                        for (var j = 0; j < oldLen; j++) {\r\n                            newStore[j] = oldStore[j];\r\n                        }\r\n                        storage[dim] = newStore;\r\n                    }\r\n                }\r\n                else {\r\n                    storage[dim] = new DataCtor(end);\r\n                }\r\n            };\r\n            getRawIndexWithoutIndices = function (idx) {\r\n                return idx;\r\n            };\r\n            getRawIndexWithIndices = function (idx) {\r\n                if (idx < this._count && idx >= 0) {\r\n                    return this._indices[idx];\r\n                }\r\n                return -1;\r\n            };\r\n            getId = function (list, rawIndex) {\r\n                var id = list._idList[rawIndex];\r\n                if (id == null && list._idDimIdx != null) {\r\n                    id = getIdNameFromStore(list, list._idDimIdx, list._idOrdinalMeta, rawIndex);\r\n                }\r\n                if (id == null) {\r\n                    id = ID_PREFIX + rawIndex;\r\n                }\r\n                return id;\r\n            };\r\n            normalizeDimensions = function (dimensions) {\r\n                if (!isArray(dimensions)) {\r\n                    dimensions = dimensions != null ? [dimensions] : [];\r\n                }\r\n                return dimensions;\r\n            };\r\n            validateDimensions = function (list, dims) {\r\n                for (var i = 0; i < dims.length; i++) {\r\n                    if (!list._dimensionInfos[dims[i]]) {\r\n                        console.error('Unkown dimension ' + dims[i]);\r\n                    }\r\n                }\r\n            };\r\n            cloneListForMapAndSample = function (original, excludeDimensions) {\r\n                var allDimensions = original.dimensions;\r\n                var list = new List(map$1(allDimensions, original.getDimensionInfo, original), original.hostModel);\r\n                transferProperties(list, original);\r\n                var storage = list._storage = {};\r\n                var originalStorage = original._storage;\r\n                var storageArr = list._storageArr = [];\r\n                for (var i = 0; i < allDimensions.length; i++) {\r\n                    var dim = allDimensions[i];\r\n                    if (originalStorage[dim]) {\r\n                        if (indexOf(excludeDimensions, dim) >= 0) {\r\n                            storage[dim] = cloneChunk(originalStorage[dim]);\r\n                            list._rawExtent[dim] = getInitialExtent();\r\n                            list._extent[dim] = null;\r\n                        }\r\n                        else {\r\n                            storage[dim] = originalStorage[dim];\r\n                        }\r\n                        storageArr.push(storage[dim]);\r\n                    }\r\n                }\r\n                return list;\r\n            };\r\n            function cloneChunk(originalChunk) {\r\n                var Ctor = originalChunk.constructor;\r\n                return Ctor === Array\r\n                    ? originalChunk.slice()\r\n                    : new Ctor(originalChunk);\r\n            }\r\n            getInitialExtent = function () {\r\n                return [Infinity, -Infinity];\r\n            };\r\n            setItemDataAndSeriesIndex = function (child) {\r\n                var childECData = getECData(child);\r\n                var thisECData = getECData(this);\r\n                childECData.seriesIndex = thisECData.seriesIndex;\r\n                childECData.dataIndex = thisECData.dataIndex;\r\n                childECData.dataType = thisECData.dataType;\r\n            };\r\n            transferProperties = function (target, source) {\r\n                each(TRANSFERABLE_PROPERTIES.concat(source.__wrappedMethods || []), function (propName) {\r\n                    if (source.hasOwnProperty(propName)) {\r\n                        target[propName] = source[propName];\r\n                    }\r\n                });\r\n                target.__wrappedMethods = source.__wrappedMethods;\r\n                each(CLONE_PROPERTIES, function (propName) {\r\n                    target[propName] = clone(source[propName]);\r\n                });\r\n                target._calculationInfo = extend({}, source._calculationInfo);\r\n            };\r\n            makeIdFromName = function (list, idx) {\r\n                var nameList = list._nameList;\r\n                var idList = list._idList;\r\n                var nameDimIdx = list._nameDimIdx;\r\n                var idDimIdx = list._idDimIdx;\r\n                var name = nameList[idx];\r\n                var id = idList[idx];\r\n                if (name == null && nameDimIdx != null) {\r\n                    nameList[idx] = name = getIdNameFromStore(list, nameDimIdx, list._nameOrdinalMeta, idx);\r\n                }\r\n                if (id == null && idDimIdx != null) {\r\n                    idList[idx] = id = getIdNameFromStore(list, idDimIdx, list._idOrdinalMeta, idx);\r\n                }\r\n                if (id == null && name != null) {\r\n                    var nameRepeatCount = list._nameRepeatCount;\r\n                    var nmCnt = nameRepeatCount[name] = (nameRepeatCount[name] || 0) + 1;\r\n                    id = name;\r\n                    if (nmCnt > 1) {\r\n                        id += '__ec__' + nmCnt;\r\n                    }\r\n                    idList[idx] = id;\r\n                }\r\n            };\r\n        })();\r\n        return List;\r\n    }());\n\n    function completeDimensions(sysDims, source, opt) {\r\n        if (!isSourceInstance(source)) {\r\n            source = createSourceFromSeriesDataOption(source);\r\n        }\r\n        opt = opt || {};\r\n        sysDims = (sysDims || []).slice();\r\n        var dimsDef = (opt.dimsDef || []).slice();\r\n        var dataDimNameMap = createHashMap();\r\n        var coordDimNameMap = createHashMap();\r\n        var result = [];\r\n        var dimCount = getDimCount(source, sysDims, dimsDef, opt.dimCount);\r\n        for (var i = 0; i < dimCount; i++) {\r\n            var dimDefItemRaw = dimsDef[i];\r\n            var dimDefItem = dimsDef[i] = extend({}, isObject(dimDefItemRaw) ? dimDefItemRaw : { name: dimDefItemRaw });\r\n            var userDimName = dimDefItem.name;\r\n            var resultItem = result[i] = new DataDimensionInfo();\r\n            if (userDimName != null && dataDimNameMap.get(userDimName) == null) {\r\n                resultItem.name = resultItem.displayName = userDimName;\r\n                dataDimNameMap.set(userDimName, i);\r\n            }\r\n            dimDefItem.type != null && (resultItem.type = dimDefItem.type);\r\n            dimDefItem.displayName != null && (resultItem.displayName = dimDefItem.displayName);\r\n        }\r\n        var encodeDef = opt.encodeDef;\r\n        if (!encodeDef && opt.encodeDefaulter) {\r\n            encodeDef = opt.encodeDefaulter(source, dimCount);\r\n        }\r\n        var encodeDefMap = createHashMap(encodeDef);\r\n        encodeDefMap.each(function (dataDimsRaw, coordDim) {\r\n            var dataDims = normalizeToArray(dataDimsRaw).slice();\r\n            if (dataDims.length === 1 && !isString(dataDims[0]) && dataDims[0] < 0) {\r\n                encodeDefMap.set(coordDim, false);\r\n                return;\r\n            }\r\n            var validDataDims = encodeDefMap.set(coordDim, []);\r\n            each(dataDims, function (resultDimIdxOrName, idx) {\r\n                var resultDimIdx = isString(resultDimIdxOrName)\r\n                    ? dataDimNameMap.get(resultDimIdxOrName)\r\n                    : resultDimIdxOrName;\r\n                if (resultDimIdx != null && resultDimIdx < dimCount) {\r\n                    validDataDims[idx] = resultDimIdx;\r\n                    applyDim(result[resultDimIdx], coordDim, idx);\r\n                }\r\n            });\r\n        });\r\n        var availDimIdx = 0;\r\n        each(sysDims, function (sysDimItemRaw) {\r\n            var coordDim;\r\n            var sysDimItemDimsDef;\r\n            var sysDimItemOtherDims;\r\n            var sysDimItem;\r\n            if (isString(sysDimItemRaw)) {\r\n                coordDim = sysDimItemRaw;\r\n                sysDimItem = {};\r\n            }\r\n            else {\r\n                sysDimItem = sysDimItemRaw;\r\n                coordDim = sysDimItem.name;\r\n                var ordinalMeta = sysDimItem.ordinalMeta;\r\n                sysDimItem.ordinalMeta = null;\r\n                sysDimItem = clone(sysDimItem);\r\n                sysDimItem.ordinalMeta = ordinalMeta;\r\n                sysDimItemDimsDef = sysDimItem.dimsDef;\r\n                sysDimItemOtherDims = sysDimItem.otherDims;\r\n                sysDimItem.name = sysDimItem.coordDim = sysDimItem.coordDimIndex =\r\n                    sysDimItem.dimsDef = sysDimItem.otherDims = null;\r\n            }\r\n            var dataDims = encodeDefMap.get(coordDim);\r\n            if (dataDims === false) {\r\n                return;\r\n            }\r\n            dataDims = normalizeToArray(dataDims);\r\n            if (!dataDims.length) {\r\n                for (var i = 0; i < (sysDimItemDimsDef && sysDimItemDimsDef.length || 1); i++) {\r\n                    while (availDimIdx < result.length && result[availDimIdx].coordDim != null) {\r\n                        availDimIdx++;\r\n                    }\r\n                    availDimIdx < result.length && dataDims.push(availDimIdx++);\r\n                }\r\n            }\r\n            each(dataDims, function (resultDimIdx, coordDimIndex) {\r\n                var resultItem = result[resultDimIdx];\r\n                applyDim(defaults(resultItem, sysDimItem), coordDim, coordDimIndex);\r\n                if (resultItem.name == null && sysDimItemDimsDef) {\r\n                    var sysDimItemDimsDefItem = sysDimItemDimsDef[coordDimIndex];\r\n                    !isObject(sysDimItemDimsDefItem) && (sysDimItemDimsDefItem = { name: sysDimItemDimsDefItem });\r\n                    resultItem.name = resultItem.displayName = sysDimItemDimsDefItem.name;\r\n                    resultItem.defaultTooltip = sysDimItemDimsDefItem.defaultTooltip;\r\n                }\r\n                sysDimItemOtherDims && defaults(resultItem.otherDims, sysDimItemOtherDims);\r\n            });\r\n        });\r\n        function applyDim(resultItem, coordDim, coordDimIndex) {\r\n            if (VISUAL_DIMENSIONS.get(coordDim) != null) {\r\n                resultItem.otherDims[coordDim] = coordDimIndex;\r\n            }\r\n            else {\r\n                resultItem.coordDim = coordDim;\r\n                resultItem.coordDimIndex = coordDimIndex;\r\n                coordDimNameMap.set(coordDim, true);\r\n            }\r\n        }\r\n        var generateCoord = opt.generateCoord;\r\n        var generateCoordCount = opt.generateCoordCount;\r\n        var fromZero = generateCoordCount != null;\r\n        generateCoordCount = generateCoord ? (generateCoordCount || 1) : 0;\r\n        var extra = generateCoord || 'value';\r\n        for (var resultDimIdx = 0; resultDimIdx < dimCount; resultDimIdx++) {\r\n            var resultItem = result[resultDimIdx] = result[resultDimIdx] || new DataDimensionInfo();\r\n            var coordDim = resultItem.coordDim;\r\n            if (coordDim == null) {\r\n                resultItem.coordDim = genName(extra, coordDimNameMap, fromZero);\r\n                resultItem.coordDimIndex = 0;\r\n                if (!generateCoord || generateCoordCount <= 0) {\r\n                    resultItem.isExtraCoord = true;\r\n                }\r\n                generateCoordCount--;\r\n            }\r\n            resultItem.name == null && (resultItem.name = genName(resultItem.coordDim, dataDimNameMap, false));\r\n            if (resultItem.type == null\r\n                && (guessOrdinal(source, resultDimIdx) === BE_ORDINAL.Must\r\n                    || (resultItem.isExtraCoord\r\n                        && (resultItem.otherDims.itemName != null\r\n                            || resultItem.otherDims.seriesName != null)))) {\r\n                resultItem.type = 'ordinal';\r\n            }\r\n        }\r\n        return result;\r\n    }\r\n    function getDimCount(source, sysDims, dimsDef, optDimCount) {\r\n        var dimCount = Math.max(source.dimensionsDetectedCount || 1, sysDims.length, dimsDef.length, optDimCount || 0);\r\n        each(sysDims, function (sysDimItem) {\r\n            var sysDimItemDimsDef;\r\n            if (isObject(sysDimItem) && (sysDimItemDimsDef = sysDimItem.dimsDef)) {\r\n                dimCount = Math.max(dimCount, sysDimItemDimsDef.length);\r\n            }\r\n        });\r\n        return dimCount;\r\n    }\r\n    function genName(name, map, fromZero) {\r\n        if (fromZero || map.get(name) != null) {\r\n            var i = 0;\r\n            while (map.get(name + i) != null) {\r\n                i++;\r\n            }\r\n            name += i;\r\n        }\r\n        map.set(name, true);\r\n        return name;\r\n    }\n\n    function createDimensions(source, opt) {\r\n        opt = opt || {};\r\n        return completeDimensions(opt.coordDimensions || [], source, {\r\n            dimsDef: opt.dimensionsDefine || source.dimensionsDefine,\r\n            encodeDef: opt.encodeDefine || source.encodeDefine,\r\n            dimCount: opt.dimensionsCount,\r\n            encodeDefaulter: opt.encodeDefaulter,\r\n            generateCoord: opt.generateCoord,\r\n            generateCoordCount: opt.generateCoordCount\r\n        });\r\n    }\n\n    var CoordSysInfo = (function () {\r\n        function CoordSysInfo(coordSysName) {\r\n            this.coordSysDims = [];\r\n            this.axisMap = createHashMap();\r\n            this.categoryAxisMap = createHashMap();\r\n            this.coordSysName = coordSysName;\r\n        }\r\n        return CoordSysInfo;\r\n    }());\r\n    function getCoordSysInfoBySeries(seriesModel) {\r\n        var coordSysName = seriesModel.get('coordinateSystem');\r\n        var result = new CoordSysInfo(coordSysName);\r\n        var fetch = fetchers[coordSysName];\r\n        if (fetch) {\r\n            fetch(seriesModel, result, result.axisMap, result.categoryAxisMap);\r\n            return result;\r\n        }\r\n    }\r\n    var fetchers = {\r\n        cartesian2d: function (seriesModel, result, axisMap, categoryAxisMap) {\r\n            var xAxisModel = seriesModel.getReferringComponents('xAxis', SINGLE_REFERRING).models[0];\r\n            var yAxisModel = seriesModel.getReferringComponents('yAxis', SINGLE_REFERRING).models[0];\r\n            if (__DEV__) {\r\n                if (!xAxisModel) {\r\n                    throw new Error('xAxis \"' + retrieve(seriesModel.get('xAxisIndex'), seriesModel.get('xAxisId'), 0) + '\" not found');\r\n                }\r\n                if (!yAxisModel) {\r\n                    throw new Error('yAxis \"' + retrieve(seriesModel.get('xAxisIndex'), seriesModel.get('yAxisId'), 0) + '\" not found');\r\n                }\r\n            }\r\n            result.coordSysDims = ['x', 'y'];\r\n            axisMap.set('x', xAxisModel);\r\n            axisMap.set('y', yAxisModel);\r\n            if (isCategory(xAxisModel)) {\r\n                categoryAxisMap.set('x', xAxisModel);\r\n                result.firstCategoryDimIndex = 0;\r\n            }\r\n            if (isCategory(yAxisModel)) {\r\n                categoryAxisMap.set('y', yAxisModel);\r\n                result.firstCategoryDimIndex == null && (result.firstCategoryDimIndex = 1);\r\n            }\r\n        },\r\n        singleAxis: function (seriesModel, result, axisMap, categoryAxisMap) {\r\n            var singleAxisModel = seriesModel.getReferringComponents('singleAxis', SINGLE_REFERRING).models[0];\r\n            if (__DEV__) {\r\n                if (!singleAxisModel) {\r\n                    throw new Error('singleAxis should be specified.');\r\n                }\r\n            }\r\n            result.coordSysDims = ['single'];\r\n            axisMap.set('single', singleAxisModel);\r\n            if (isCategory(singleAxisModel)) {\r\n                categoryAxisMap.set('single', singleAxisModel);\r\n                result.firstCategoryDimIndex = 0;\r\n            }\r\n        },\r\n        polar: function (seriesModel, result, axisMap, categoryAxisMap) {\r\n            var polarModel = seriesModel.getReferringComponents('polar', SINGLE_REFERRING).models[0];\r\n            var radiusAxisModel = polarModel.findAxisModel('radiusAxis');\r\n            var angleAxisModel = polarModel.findAxisModel('angleAxis');\r\n            if (__DEV__) {\r\n                if (!angleAxisModel) {\r\n                    throw new Error('angleAxis option not found');\r\n                }\r\n                if (!radiusAxisModel) {\r\n                    throw new Error('radiusAxis option not found');\r\n                }\r\n            }\r\n            result.coordSysDims = ['radius', 'angle'];\r\n            axisMap.set('radius', radiusAxisModel);\r\n            axisMap.set('angle', angleAxisModel);\r\n            if (isCategory(radiusAxisModel)) {\r\n                categoryAxisMap.set('radius', radiusAxisModel);\r\n                result.firstCategoryDimIndex = 0;\r\n            }\r\n            if (isCategory(angleAxisModel)) {\r\n                categoryAxisMap.set('angle', angleAxisModel);\r\n                result.firstCategoryDimIndex == null && (result.firstCategoryDimIndex = 1);\r\n            }\r\n        },\r\n        geo: function (seriesModel, result, axisMap, categoryAxisMap) {\r\n            result.coordSysDims = ['lng', 'lat'];\r\n        },\r\n        parallel: function (seriesModel, result, axisMap, categoryAxisMap) {\r\n            var ecModel = seriesModel.ecModel;\r\n            var parallelModel = ecModel.getComponent('parallel', seriesModel.get('parallelIndex'));\r\n            var coordSysDims = result.coordSysDims = parallelModel.dimensions.slice();\r\n            each(parallelModel.parallelAxisIndex, function (axisIndex, index) {\r\n                var axisModel = ecModel.getComponent('parallelAxis', axisIndex);\r\n                var axisDim = coordSysDims[index];\r\n                axisMap.set(axisDim, axisModel);\r\n                if (isCategory(axisModel)) {\r\n                    categoryAxisMap.set(axisDim, axisModel);\r\n                    if (result.firstCategoryDimIndex == null) {\r\n                        result.firstCategoryDimIndex = index;\r\n                    }\r\n                }\r\n            });\r\n        }\r\n    };\r\n    function isCategory(axisModel) {\r\n        return axisModel.get('type') === 'category';\r\n    }\n\n    function enableDataStack(seriesModel, dimensionInfoList, opt) {\r\n        opt = opt || {};\r\n        var byIndex = opt.byIndex;\r\n        var stackedCoordDimension = opt.stackedCoordDimension;\r\n        var mayStack = !!(seriesModel && seriesModel.get('stack'));\r\n        var stackedByDimInfo;\r\n        var stackedDimInfo;\r\n        var stackResultDimension;\r\n        var stackedOverDimension;\r\n        each(dimensionInfoList, function (dimensionInfo, index) {\r\n            if (isString(dimensionInfo)) {\r\n                dimensionInfoList[index] = dimensionInfo = {\r\n                    name: dimensionInfo\r\n                };\r\n            }\r\n            if (mayStack && !dimensionInfo.isExtraCoord) {\r\n                if (!byIndex && !stackedByDimInfo && dimensionInfo.ordinalMeta) {\r\n                    stackedByDimInfo = dimensionInfo;\r\n                }\r\n                if (!stackedDimInfo\r\n                    && dimensionInfo.type !== 'ordinal'\r\n                    && dimensionInfo.type !== 'time'\r\n                    && (!stackedCoordDimension || stackedCoordDimension === dimensionInfo.coordDim)) {\r\n                    stackedDimInfo = dimensionInfo;\r\n                }\r\n            }\r\n        });\r\n        if (stackedDimInfo && !byIndex && !stackedByDimInfo) {\r\n            byIndex = true;\r\n        }\r\n        if (stackedDimInfo) {\r\n            stackResultDimension = '__\\0ecstackresult';\r\n            stackedOverDimension = '__\\0ecstackedover';\r\n            if (stackedByDimInfo) {\r\n                stackedByDimInfo.createInvertedIndices = true;\r\n            }\r\n            var stackedDimCoordDim_1 = stackedDimInfo.coordDim;\r\n            var stackedDimType = stackedDimInfo.type;\r\n            var stackedDimCoordIndex_1 = 0;\r\n            each(dimensionInfoList, function (dimensionInfo) {\r\n                if (dimensionInfo.coordDim === stackedDimCoordDim_1) {\r\n                    stackedDimCoordIndex_1++;\r\n                }\r\n            });\r\n            dimensionInfoList.push({\r\n                name: stackResultDimension,\r\n                coordDim: stackedDimCoordDim_1,\r\n                coordDimIndex: stackedDimCoordIndex_1,\r\n                type: stackedDimType,\r\n                isExtraCoord: true,\r\n                isCalculationCoord: true\r\n            });\r\n            stackedDimCoordIndex_1++;\r\n            dimensionInfoList.push({\r\n                name: stackedOverDimension,\r\n                coordDim: stackedOverDimension,\r\n                coordDimIndex: stackedDimCoordIndex_1,\r\n                type: stackedDimType,\r\n                isExtraCoord: true,\r\n                isCalculationCoord: true\r\n            });\r\n        }\r\n        return {\r\n            stackedDimension: stackedDimInfo && stackedDimInfo.name,\r\n            stackedByDimension: stackedByDimInfo && stackedByDimInfo.name,\r\n            isStackedByIndex: byIndex,\r\n            stackedOverDimension: stackedOverDimension,\r\n            stackResultDimension: stackResultDimension\r\n        };\r\n    }\r\n    function isDimensionStacked(data, stackedDim) {\r\n        return !!stackedDim && stackedDim === data.getCalculationInfo('stackedDimension');\r\n    }\r\n    function getStackedDimension(data, targetDim) {\r\n        return isDimensionStacked(data, targetDim)\r\n            ? data.getCalculationInfo('stackResultDimension')\r\n            : targetDim;\r\n    }\n\n    function createListFromArray(source, seriesModel, opt) {\r\n        opt = opt || {};\r\n        if (!isSourceInstance(source)) {\r\n            source = createSourceFromSeriesDataOption(source);\r\n        }\r\n        var coordSysName = seriesModel.get('coordinateSystem');\r\n        var registeredCoordSys = CoordinateSystemManager.get(coordSysName);\r\n        var coordSysInfo = getCoordSysInfoBySeries(seriesModel);\r\n        var coordSysDimDefs;\r\n        if (coordSysInfo && coordSysInfo.coordSysDims) {\r\n            coordSysDimDefs = map(coordSysInfo.coordSysDims, function (dim) {\r\n                var dimInfo = {\r\n                    name: dim\r\n                };\r\n                var axisModel = coordSysInfo.axisMap.get(dim);\r\n                if (axisModel) {\r\n                    var axisType = axisModel.get('type');\r\n                    dimInfo.type = getDimensionTypeByAxis(axisType);\r\n                }\r\n                return dimInfo;\r\n            });\r\n        }\r\n        if (!coordSysDimDefs) {\r\n            coordSysDimDefs = (registeredCoordSys && (registeredCoordSys.getDimensionsInfo\r\n                ? registeredCoordSys.getDimensionsInfo()\r\n                : registeredCoordSys.dimensions.slice())) || ['x', 'y'];\r\n        }\r\n        var useEncodeDefaulter = opt.useEncodeDefaulter;\r\n        var dimInfoList = createDimensions(source, {\r\n            coordDimensions: coordSysDimDefs,\r\n            generateCoord: opt.generateCoord,\r\n            encodeDefaulter: isFunction(useEncodeDefaulter)\r\n                ? useEncodeDefaulter\r\n                : useEncodeDefaulter\r\n                    ? curry(makeSeriesEncodeForAxisCoordSys, coordSysDimDefs, seriesModel)\r\n                    : null\r\n        });\r\n        var firstCategoryDimIndex;\r\n        var hasNameEncode;\r\n        coordSysInfo && each(dimInfoList, function (dimInfo, dimIndex) {\r\n            var coordDim = dimInfo.coordDim;\r\n            var categoryAxisModel = coordSysInfo.categoryAxisMap.get(coordDim);\r\n            if (categoryAxisModel) {\r\n                if (firstCategoryDimIndex == null) {\r\n                    firstCategoryDimIndex = dimIndex;\r\n                }\r\n                dimInfo.ordinalMeta = categoryAxisModel.getOrdinalMeta();\r\n            }\r\n            if (dimInfo.otherDims.itemName != null) {\r\n                hasNameEncode = true;\r\n            }\r\n        });\r\n        if (!hasNameEncode && firstCategoryDimIndex != null) {\r\n            dimInfoList[firstCategoryDimIndex].otherDims.itemName = 0;\r\n        }\r\n        var stackCalculationInfo = enableDataStack(seriesModel, dimInfoList);\r\n        var list = new List(dimInfoList, seriesModel);\r\n        list.setCalculationInfo(stackCalculationInfo);\r\n        var dimValueGetter = (firstCategoryDimIndex != null && isNeedCompleteOrdinalData(source))\r\n            ? function (itemOpt, dimName, dataIndex, dimIndex) {\r\n                return dimIndex === firstCategoryDimIndex\r\n                    ? dataIndex\r\n                    : this.defaultDimValueGetter(itemOpt, dimName, dataIndex, dimIndex);\r\n            }\r\n            : null;\r\n        list.hasItemOption = false;\r\n        list.initData(source, null, dimValueGetter);\r\n        return list;\r\n    }\r\n    function isNeedCompleteOrdinalData(source) {\r\n        if (source.sourceFormat === SOURCE_FORMAT_ORIGINAL) {\r\n            var sampleItem = firstDataNotNull(source.data || []);\r\n            return sampleItem != null\r\n                && !isArray(getDataItemValue(sampleItem));\r\n        }\r\n    }\r\n    function firstDataNotNull(data) {\r\n        var i = 0;\r\n        while (i < data.length && data[i] == null) {\r\n            i++;\r\n        }\r\n        return data[i];\r\n    }\n\n    var LineSeriesModel = (function (_super) {\r\n        __extends(LineSeriesModel, _super);\r\n        function LineSeriesModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = LineSeriesModel.type;\r\n            _this.hasSymbolVisual = true;\r\n            _this.legendSymbol = 'line';\r\n            return _this;\r\n        }\r\n        LineSeriesModel.prototype.getInitialData = function (option) {\r\n            if (__DEV__) {\r\n                var coordSys = option.coordinateSystem;\r\n                if (coordSys !== 'polar' && coordSys !== 'cartesian2d') {\r\n                    throw new Error('Line not support coordinateSystem besides cartesian and polar');\r\n                }\r\n            }\r\n            return createListFromArray(this.getSource(), this, {\r\n                useEncodeDefaulter: true\r\n            });\r\n        };\r\n        LineSeriesModel.type = 'series.line';\r\n        LineSeriesModel.dependencies = ['grid', 'polar'];\r\n        LineSeriesModel.defaultOption = {\r\n            zlevel: 0,\r\n            z: 3,\r\n            coordinateSystem: 'cartesian2d',\r\n            legendHoverLink: true,\r\n            clip: true,\r\n            label: {\r\n                position: 'top'\r\n            },\r\n            endLabel: {\r\n                show: false,\r\n                valueAnimation: true,\r\n                distance: 8\r\n            },\r\n            lineStyle: {\r\n                width: 2,\r\n                type: 'solid'\r\n            },\r\n            emphasis: {\r\n                scale: true,\r\n                lineStyle: {\r\n                    width: 'bolder'\r\n                }\r\n            },\r\n            step: false,\r\n            smooth: false,\r\n            smoothMonotone: null,\r\n            symbol: 'emptyCircle',\r\n            symbolSize: 4,\r\n            symbolRotate: null,\r\n            showSymbol: true,\r\n            showAllSymbol: 'auto',\r\n            connectNulls: false,\r\n            sampling: 'none',\r\n            animationEasing: 'linear',\r\n            progressive: 0,\r\n            hoverLayerThreshold: Infinity\r\n        };\r\n        return LineSeriesModel;\r\n    }(SeriesModel));\r\n    SeriesModel.registerClass(LineSeriesModel);\n\n    function getDefaultLabel(data, dataIndex) {\r\n        var labelDims = data.mapDimensionsAll('defaultedLabel');\r\n        var len = labelDims.length;\r\n        if (len === 1) {\r\n            return retrieveRawValue(data, dataIndex, labelDims[0]);\r\n        }\r\n        else if (len) {\r\n            var vals = [];\r\n            for (var i = 0; i < labelDims.length; i++) {\r\n                vals.push(retrieveRawValue(data, dataIndex, labelDims[i]));\r\n            }\r\n            return vals.join(' ');\r\n        }\r\n    }\r\n    function getDefaultInterpolatedLabel(data, interpolatedValue) {\r\n        var labelDims = data.mapDimensionsAll('defaultedLabel');\r\n        if (!isArray(interpolatedValue)) {\r\n            return interpolatedValue + '';\r\n        }\r\n        var vals = [];\r\n        for (var i = 0; i < labelDims.length; i++) {\r\n            var dimInfo = data.getDimensionInfo(labelDims[i]);\r\n            if (dimInfo) {\r\n                vals.push(interpolatedValue[dimInfo.index]);\r\n            }\r\n        }\r\n        return vals.join(' ');\r\n    }\n\n    var Symbol = (function (_super) {\r\n        __extends(Symbol, _super);\r\n        function Symbol(data, idx, seriesScope, opts) {\r\n            var _this = _super.call(this) || this;\r\n            _this.updateData(data, idx, seriesScope, opts);\r\n            return _this;\r\n        }\r\n        Symbol.prototype._createSymbol = function (symbolType, data, idx, symbolSize, keepAspect) {\r\n            this.removeAll();\r\n            var symbolPath = createSymbol(symbolType, -1, -1, 2, 2, null, keepAspect);\r\n            symbolPath.attr({\r\n                z2: 100,\r\n                culling: true,\r\n                scaleX: symbolSize[0] / 2,\r\n                scaleY: symbolSize[1] / 2\r\n            });\r\n            symbolPath.drift = driftSymbol;\r\n            this._symbolType = symbolType;\r\n            this.add(symbolPath);\r\n        };\r\n        Symbol.prototype.stopSymbolAnimation = function (toLastFrame) {\r\n            this.childAt(0).stopAnimation(null, toLastFrame);\r\n        };\r\n        Symbol.prototype.getSymbolPath = function () {\r\n            return this.childAt(0);\r\n        };\r\n        Symbol.prototype.highlight = function () {\r\n            enterEmphasis(this.childAt(0));\r\n        };\r\n        Symbol.prototype.downplay = function () {\r\n            leaveEmphasis(this.childAt(0));\r\n        };\r\n        Symbol.prototype.setZ = function (zlevel, z) {\r\n            var symbolPath = this.childAt(0);\r\n            symbolPath.zlevel = zlevel;\r\n            symbolPath.z = z;\r\n        };\r\n        Symbol.prototype.setDraggable = function (draggable) {\r\n            var symbolPath = this.childAt(0);\r\n            symbolPath.draggable = draggable;\r\n            symbolPath.cursor = draggable ? 'move' : symbolPath.cursor;\r\n        };\r\n        Symbol.prototype.updateData = function (data, idx, seriesScope, opts) {\r\n            this.silent = false;\r\n            var symbolType = data.getItemVisual(idx, 'symbol') || 'circle';\r\n            var seriesModel = data.hostModel;\r\n            var symbolSize = Symbol.getSymbolSize(data, idx);\r\n            var isInit = symbolType !== this._symbolType;\r\n            var disableAnimation = opts && opts.disableAnimation;\r\n            if (isInit) {\r\n                var keepAspect = data.getItemVisual(idx, 'symbolKeepAspect');\r\n                this._createSymbol(symbolType, data, idx, symbolSize, keepAspect);\r\n            }\r\n            else {\r\n                var symbolPath = this.childAt(0);\r\n                symbolPath.silent = false;\r\n                var target = {\r\n                    scaleX: symbolSize[0] / 2,\r\n                    scaleY: symbolSize[1] / 2\r\n                };\r\n                disableAnimation ? symbolPath.attr(target)\r\n                    : updateProps(symbolPath, target, seriesModel, idx);\r\n            }\r\n            this._updateCommon(data, idx, symbolSize, seriesScope, opts);\r\n            if (isInit) {\r\n                var symbolPath = this.childAt(0);\r\n                if (!disableAnimation) {\r\n                    var target = {\r\n                        scaleX: this._sizeX,\r\n                        scaleY: this._sizeY,\r\n                        style: {\r\n                            opacity: symbolPath.style.opacity\r\n                        }\r\n                    };\r\n                    symbolPath.scaleX = symbolPath.scaleY = 0;\r\n                    symbolPath.style.opacity = 0;\r\n                    initProps(symbolPath, target, seriesModel, idx);\r\n                }\r\n            }\r\n            if (disableAnimation) {\r\n                this.childAt(0).stopAnimation('remove');\r\n            }\r\n            this._seriesModel = seriesModel;\r\n        };\r\n        Symbol.prototype._updateCommon = function (data, idx, symbolSize, seriesScope, opts) {\r\n            var symbolPath = this.childAt(0);\r\n            var seriesModel = data.hostModel;\r\n            var emphasisItemStyle;\r\n            var blurItemStyle;\r\n            var selectItemStyle;\r\n            var focus;\r\n            var blurScope;\r\n            var symbolOffset;\r\n            var labelStatesModels;\r\n            var hoverScale;\r\n            var cursorStyle;\r\n            if (seriesScope) {\r\n                emphasisItemStyle = seriesScope.emphasisItemStyle;\r\n                blurItemStyle = seriesScope.blurItemStyle;\r\n                selectItemStyle = seriesScope.selectItemStyle;\r\n                focus = seriesScope.focus;\r\n                blurScope = seriesScope.blurScope;\r\n                symbolOffset = seriesScope.symbolOffset;\r\n                labelStatesModels = seriesScope.labelStatesModels;\r\n                hoverScale = seriesScope.hoverScale;\r\n                cursorStyle = seriesScope.cursorStyle;\r\n            }\r\n            if (!seriesScope || data.hasItemOption) {\r\n                var itemModel = (seriesScope && seriesScope.itemModel)\r\n                    ? seriesScope.itemModel : data.getItemModel(idx);\r\n                var emphasisModel = itemModel.getModel('emphasis');\r\n                emphasisItemStyle = emphasisModel.getModel('itemStyle').getItemStyle();\r\n                selectItemStyle = itemModel.getModel(['select', 'itemStyle']).getItemStyle();\r\n                blurItemStyle = itemModel.getModel(['blur', 'itemStyle']).getItemStyle();\r\n                focus = emphasisModel.get('focus');\r\n                blurScope = emphasisModel.get('blurScope');\r\n                symbolOffset = itemModel.getShallow('symbolOffset');\r\n                labelStatesModels = getLabelStatesModels(itemModel);\r\n                hoverScale = emphasisModel.getShallow('scale');\r\n                cursorStyle = itemModel.getShallow('cursor');\r\n            }\r\n            var symbolRotate = data.getItemVisual(idx, 'symbolRotate');\r\n            symbolPath.attr('rotation', (symbolRotate || 0) * Math.PI / 180 || 0);\r\n            if (symbolOffset) {\r\n                symbolPath.x = parsePercent$2(symbolOffset[0], symbolSize[0]);\r\n                symbolPath.y = parsePercent$2(symbolOffset[1], symbolSize[1]);\r\n            }\r\n            cursorStyle && symbolPath.attr('cursor', cursorStyle);\r\n            var symbolStyle = data.getItemVisual(idx, 'style');\r\n            var visualColor = symbolStyle.fill;\r\n            if (symbolPath instanceof ZRImage) {\r\n                var pathStyle = symbolPath.style;\r\n                symbolPath.useStyle(extend({\r\n                    image: pathStyle.image,\r\n                    x: pathStyle.x, y: pathStyle.y,\r\n                    width: pathStyle.width, height: pathStyle.height\r\n                }, symbolStyle));\r\n            }\r\n            else {\r\n                if (symbolPath.__isEmptyBrush) {\r\n                    symbolPath.useStyle(extend({}, symbolStyle));\r\n                }\r\n                else {\r\n                    symbolPath.useStyle(symbolStyle);\r\n                }\r\n                symbolPath.style.decal = null;\r\n                symbolPath.setColor(visualColor, opts && opts.symbolInnerColor);\r\n                symbolPath.style.strokeNoScale = true;\r\n            }\r\n            var liftZ = data.getItemVisual(idx, 'liftZ');\r\n            var z2Origin = this._z2;\r\n            if (liftZ != null) {\r\n                if (z2Origin == null) {\r\n                    this._z2 = symbolPath.z2;\r\n                    symbolPath.z2 += liftZ;\r\n                }\r\n            }\r\n            else if (z2Origin != null) {\r\n                symbolPath.z2 = z2Origin;\r\n                this._z2 = null;\r\n            }\r\n            var useNameLabel = opts && opts.useNameLabel;\r\n            setLabelStyle(symbolPath, labelStatesModels, {\r\n                labelFetcher: seriesModel,\r\n                labelDataIndex: idx,\r\n                defaultText: getLabelDefaultText,\r\n                inheritColor: visualColor,\r\n                defaultOpacity: symbolStyle.opacity\r\n            });\r\n            function getLabelDefaultText(idx) {\r\n                return useNameLabel ? data.getName(idx) : getDefaultLabel(data, idx);\r\n            }\r\n            this._sizeX = symbolSize[0] / 2;\r\n            this._sizeY = symbolSize[1] / 2;\r\n            var emphasisState = symbolPath.ensureState('emphasis');\r\n            emphasisState.style = emphasisItemStyle;\r\n            symbolPath.ensureState('select').style = selectItemStyle;\r\n            symbolPath.ensureState('blur').style = blurItemStyle;\r\n            if (hoverScale) {\r\n                var scaleRatio = Math.max(1.1, 3 / this._sizeY);\r\n                emphasisState.scaleX = this._sizeX * scaleRatio;\r\n                emphasisState.scaleY = this._sizeY * scaleRatio;\r\n            }\r\n            this.setSymbolScale(1);\r\n            enableHoverEmphasis(this, focus, blurScope);\r\n        };\r\n        Symbol.prototype.setSymbolScale = function (scale) {\r\n            this.scaleX = this.scaleY = scale;\r\n        };\r\n        Symbol.prototype.fadeOut = function (cb, opt) {\r\n            var symbolPath = this.childAt(0);\r\n            var seriesModel = this._seriesModel;\r\n            var dataIndex = getECData(this).dataIndex;\r\n            var animationOpt = opt && opt.animation;\r\n            this.silent = symbolPath.silent = true;\r\n            if (opt && opt.fadeLabel) {\r\n                var textContent = symbolPath.getTextContent();\r\n                if (textContent) {\r\n                    removeElement(textContent, {\r\n                        style: {\r\n                            opacity: 0\r\n                        }\r\n                    }, seriesModel, {\r\n                        dataIndex: dataIndex,\r\n                        removeOpt: animationOpt,\r\n                        cb: function () {\r\n                            symbolPath.removeTextContent();\r\n                        }\r\n                    });\r\n                }\r\n            }\r\n            else {\r\n                symbolPath.removeTextContent();\r\n            }\r\n            removeElement(symbolPath, {\r\n                style: {\r\n                    opacity: 0\r\n                },\r\n                scaleX: 0,\r\n                scaleY: 0\r\n            }, seriesModel, { dataIndex: dataIndex, cb: cb, removeOpt: animationOpt });\r\n        };\r\n        Symbol.getSymbolSize = function (data, idx) {\r\n            var symbolSize = data.getItemVisual(idx, 'symbolSize');\r\n            return symbolSize instanceof Array\r\n                ? symbolSize.slice()\r\n                : [+symbolSize, +symbolSize];\r\n        };\r\n        return Symbol;\r\n    }(Group));\r\n    function driftSymbol(dx, dy) {\r\n        this.parent.drift(dx, dy);\r\n    }\n\n    function symbolNeedsDraw(data, point, idx, opt) {\r\n        return point && !isNaN(point[0]) && !isNaN(point[1])\r\n            && !(opt.isIgnore && opt.isIgnore(idx))\r\n            && !(opt.clipShape && !opt.clipShape.contain(point[0], point[1]))\r\n            && data.getItemVisual(idx, 'symbol') !== 'none';\r\n    }\r\n    function normalizeUpdateOpt(opt) {\r\n        if (opt != null && !isObject(opt)) {\r\n            opt = { isIgnore: opt };\r\n        }\r\n        return opt || {};\r\n    }\r\n    function makeSeriesScope(data) {\r\n        var seriesModel = data.hostModel;\r\n        var emphasisModel = seriesModel.getModel('emphasis');\r\n        return {\r\n            emphasisItemStyle: emphasisModel.getModel('itemStyle').getItemStyle(),\r\n            blurItemStyle: seriesModel.getModel(['blur', 'itemStyle']).getItemStyle(),\r\n            selectItemStyle: seriesModel.getModel(['select', 'itemStyle']).getItemStyle(),\r\n            focus: emphasisModel.get('focus'),\r\n            blurScope: emphasisModel.get('blurScope'),\r\n            symbolRotate: seriesModel.get('symbolRotate'),\r\n            symbolOffset: seriesModel.get('symbolOffset'),\r\n            hoverScale: emphasisModel.get('scale'),\r\n            labelStatesModels: getLabelStatesModels(seriesModel),\r\n            cursorStyle: seriesModel.get('cursor')\r\n        };\r\n    }\r\n    var SymbolDraw = (function () {\r\n        function SymbolDraw(SymbolCtor) {\r\n            this.group = new Group();\r\n            this._SymbolCtor = SymbolCtor || Symbol;\r\n        }\r\n        SymbolDraw.prototype.updateData = function (data, opt) {\r\n            opt = normalizeUpdateOpt(opt);\r\n            var group = this.group;\r\n            var seriesModel = data.hostModel;\r\n            var oldData = this._data;\r\n            var SymbolCtor = this._SymbolCtor;\r\n            var disableAnimation = opt.disableAnimation;\r\n            var seriesScope = makeSeriesScope(data);\r\n            var symbolUpdateOpt = { disableAnimation: disableAnimation };\r\n            var getSymbolPoint = opt.getSymbolPoint || function (idx) {\r\n                return data.getItemLayout(idx);\r\n            };\r\n            if (!oldData) {\r\n                group.removeAll();\r\n            }\r\n            data.diff(oldData)\r\n                .add(function (newIdx) {\r\n                var point = getSymbolPoint(newIdx);\r\n                if (symbolNeedsDraw(data, point, newIdx, opt)) {\r\n                    var symbolEl = new SymbolCtor(data, newIdx, seriesScope, symbolUpdateOpt);\r\n                    symbolEl.setPosition(point);\r\n                    data.setItemGraphicEl(newIdx, symbolEl);\r\n                    group.add(symbolEl);\r\n                }\r\n            })\r\n                .update(function (newIdx, oldIdx) {\r\n                var symbolEl = oldData.getItemGraphicEl(oldIdx);\r\n                var point = getSymbolPoint(newIdx);\r\n                if (!symbolNeedsDraw(data, point, newIdx, opt)) {\r\n                    group.remove(symbolEl);\r\n                    return;\r\n                }\r\n                if (!symbolEl) {\r\n                    symbolEl = new SymbolCtor(data, newIdx);\r\n                    symbolEl.setPosition(point);\r\n                }\r\n                else {\r\n                    symbolEl.updateData(data, newIdx, seriesScope, symbolUpdateOpt);\r\n                    var target = {\r\n                        x: point[0],\r\n                        y: point[1]\r\n                    };\r\n                    disableAnimation\r\n                        ? symbolEl.attr(target)\r\n                        : updateProps(symbolEl, target, seriesModel);\r\n                }\r\n                group.add(symbolEl);\r\n                data.setItemGraphicEl(newIdx, symbolEl);\r\n            })\r\n                .remove(function (oldIdx) {\r\n                var el = oldData.getItemGraphicEl(oldIdx);\r\n                el && el.fadeOut(function () {\r\n                    group.remove(el);\r\n                });\r\n            })\r\n                .execute();\r\n            this._getSymbolPoint = getSymbolPoint;\r\n            this._data = data;\r\n        };\r\n        SymbolDraw.prototype.isPersistent = function () {\r\n            return true;\r\n        };\r\n        SymbolDraw.prototype.updateLayout = function () {\r\n            var _this = this;\r\n            var data = this._data;\r\n            if (data) {\r\n                data.eachItemGraphicEl(function (el, idx) {\r\n                    var point = _this._getSymbolPoint(idx);\r\n                    el.setPosition(point);\r\n                    el.markRedraw();\r\n                });\r\n            }\r\n        };\r\n        SymbolDraw.prototype.incrementalPrepareUpdate = function (data) {\r\n            this._seriesScope = makeSeriesScope(data);\r\n            this._data = null;\r\n            this.group.removeAll();\r\n        };\r\n        SymbolDraw.prototype.incrementalUpdate = function (taskParams, data, opt) {\r\n            opt = normalizeUpdateOpt(opt);\r\n            function updateIncrementalAndHover(el) {\r\n                if (!el.isGroup) {\r\n                    el.incremental = true;\r\n                    el.ensureState('emphasis').hoverLayer = true;\r\n                }\r\n            }\r\n            for (var idx = taskParams.start; idx < taskParams.end; idx++) {\r\n                var point = data.getItemLayout(idx);\r\n                if (symbolNeedsDraw(data, point, idx, opt)) {\r\n                    var el = new this._SymbolCtor(data, idx, this._seriesScope);\r\n                    el.traverse(updateIncrementalAndHover);\r\n                    el.setPosition(point);\r\n                    this.group.add(el);\r\n                    data.setItemGraphicEl(idx, el);\r\n                }\r\n            }\r\n        };\r\n        SymbolDraw.prototype.remove = function (enableAnimation) {\r\n            var group = this.group;\r\n            var data = this._data;\r\n            if (data && enableAnimation) {\r\n                data.eachItemGraphicEl(function (el) {\r\n                    el.fadeOut(function () {\r\n                        group.remove(el);\r\n                    });\r\n                });\r\n            }\r\n            else {\r\n                group.removeAll();\r\n            }\r\n        };\r\n        return SymbolDraw;\r\n    }());\n\n    function prepareDataCoordInfo(coordSys, data, valueOrigin) {\r\n        var baseAxis = coordSys.getBaseAxis();\r\n        var valueAxis = coordSys.getOtherAxis(baseAxis);\r\n        var valueStart = getValueStart(valueAxis, valueOrigin);\r\n        var baseAxisDim = baseAxis.dim;\r\n        var valueAxisDim = valueAxis.dim;\r\n        var valueDim = data.mapDimension(valueAxisDim);\r\n        var baseDim = data.mapDimension(baseAxisDim);\r\n        var baseDataOffset = valueAxisDim === 'x' || valueAxisDim === 'radius' ? 1 : 0;\r\n        var dims = map(coordSys.dimensions, function (coordDim) {\r\n            return data.mapDimension(coordDim);\r\n        });\r\n        var stacked = false;\r\n        var stackResultDim = data.getCalculationInfo('stackResultDimension');\r\n        if (isDimensionStacked(data, dims[0])) {\r\n            stacked = true;\r\n            dims[0] = stackResultDim;\r\n        }\r\n        if (isDimensionStacked(data, dims[1])) {\r\n            stacked = true;\r\n            dims[1] = stackResultDim;\r\n        }\r\n        return {\r\n            dataDimsForPoint: dims,\r\n            valueStart: valueStart,\r\n            valueAxisDim: valueAxisDim,\r\n            baseAxisDim: baseAxisDim,\r\n            stacked: !!stacked,\r\n            valueDim: valueDim,\r\n            baseDim: baseDim,\r\n            baseDataOffset: baseDataOffset,\r\n            stackedOverDimension: data.getCalculationInfo('stackedOverDimension')\r\n        };\r\n    }\r\n    function getValueStart(valueAxis, valueOrigin) {\r\n        var valueStart = 0;\r\n        var extent = valueAxis.scale.getExtent();\r\n        if (valueOrigin === 'start') {\r\n            valueStart = extent[0];\r\n        }\r\n        else if (valueOrigin === 'end') {\r\n            valueStart = extent[1];\r\n        }\r\n        else {\r\n            if (extent[0] > 0) {\r\n                valueStart = extent[0];\r\n            }\r\n            else if (extent[1] < 0) {\r\n                valueStart = extent[1];\r\n            }\r\n        }\r\n        return valueStart;\r\n    }\r\n    function getStackedOnPoint(dataCoordInfo, coordSys, data, idx) {\r\n        var value = NaN;\r\n        if (dataCoordInfo.stacked) {\r\n            value = data.get(data.getCalculationInfo('stackedOverDimension'), idx);\r\n        }\r\n        if (isNaN(value)) {\r\n            value = dataCoordInfo.valueStart;\r\n        }\r\n        var baseDataOffset = dataCoordInfo.baseDataOffset;\r\n        var stackedData = [];\r\n        stackedData[baseDataOffset] = data.get(dataCoordInfo.baseDim, idx);\r\n        stackedData[1 - baseDataOffset] = value;\r\n        return coordSys.dataToPoint(stackedData);\r\n    }\n\n    var supportFloat32Array = typeof Float32Array !== 'undefined';\r\n    var Float32ArrayCtor = !supportFloat32Array ? Array : Float32Array;\r\n    function createFloat32Array(arg) {\r\n        if (isArray(arg)) {\r\n            return supportFloat32Array ? new Float32Array(arg) : arg;\r\n        }\r\n        return new Float32ArrayCtor(arg);\r\n    }\n\n    function diffData(oldData, newData) {\r\n        var diffResult = [];\r\n        newData.diff(oldData)\r\n            .add(function (idx) {\r\n            diffResult.push({ cmd: '+', idx: idx });\r\n        })\r\n            .update(function (newIdx, oldIdx) {\r\n            diffResult.push({ cmd: '=', idx: oldIdx, idx1: newIdx });\r\n        })\r\n            .remove(function (idx) {\r\n            diffResult.push({ cmd: '-', idx: idx });\r\n        })\r\n            .execute();\r\n        return diffResult;\r\n    }\r\n    function lineAnimationDiff(oldData, newData, oldStackedOnPoints, newStackedOnPoints, oldCoordSys, newCoordSys, oldValueOrigin, newValueOrigin) {\r\n        var diff = diffData(oldData, newData);\r\n        var currPoints = [];\r\n        var nextPoints = [];\r\n        var currStackedPoints = [];\r\n        var nextStackedPoints = [];\r\n        var status = [];\r\n        var sortedIndices = [];\r\n        var rawIndices = [];\r\n        var newDataOldCoordInfo = prepareDataCoordInfo(oldCoordSys, newData, oldValueOrigin);\r\n        var oldDataNewCoordInfo = prepareDataCoordInfo(newCoordSys, oldData, newValueOrigin);\r\n        var oldPoints = oldData.getLayout('points') || [];\r\n        var newPoints = newData.getLayout('points') || [];\r\n        for (var i = 0; i < diff.length; i++) {\r\n            var diffItem = diff[i];\r\n            var pointAdded = true;\r\n            var oldIdx2 = void 0;\r\n            var newIdx2 = void 0;\r\n            switch (diffItem.cmd) {\r\n                case '=':\r\n                    oldIdx2 = diffItem.idx * 2;\r\n                    newIdx2 = diffItem.idx1 * 2;\r\n                    var currentX = oldPoints[oldIdx2];\r\n                    var currentY = oldPoints[oldIdx2 + 1];\r\n                    var nextX = newPoints[newIdx2];\r\n                    var nextY = newPoints[newIdx2 + 1];\r\n                    if (isNaN(currentX) || isNaN(currentY)) {\r\n                        currentX = nextX;\r\n                        currentY = nextY;\r\n                    }\r\n                    currPoints.push(currentX, currentY);\r\n                    nextPoints.push(nextX, nextY);\r\n                    currStackedPoints.push(oldStackedOnPoints[oldIdx2], oldStackedOnPoints[oldIdx2 + 1]);\r\n                    nextStackedPoints.push(newStackedOnPoints[newIdx2], newStackedOnPoints[newIdx2 + 1]);\r\n                    rawIndices.push(newData.getRawIndex(diffItem.idx1));\r\n                    break;\r\n                case '+':\r\n                    var newIdx = diffItem.idx;\r\n                    var newDataDimsForPoint = newDataOldCoordInfo.dataDimsForPoint;\r\n                    var oldPt = oldCoordSys.dataToPoint([\r\n                        newData.get(newDataDimsForPoint[0], newIdx),\r\n                        newData.get(newDataDimsForPoint[1], newIdx)\r\n                    ]);\r\n                    newIdx2 = newIdx * 2;\r\n                    currPoints.push(oldPt[0], oldPt[1]);\r\n                    nextPoints.push(newPoints[newIdx2], newPoints[newIdx2 + 1]);\r\n                    var stackedOnPoint = getStackedOnPoint(newDataOldCoordInfo, oldCoordSys, newData, newIdx);\r\n                    currStackedPoints.push(stackedOnPoint[0], stackedOnPoint[1]);\r\n                    nextStackedPoints.push(newStackedOnPoints[newIdx2], newStackedOnPoints[newIdx2 + 1]);\r\n                    rawIndices.push(newData.getRawIndex(newIdx));\r\n                    break;\r\n                case '-':\r\n                    var oldIdx = diffItem.idx;\r\n                    var rawIndex = oldData.getRawIndex(oldIdx);\r\n                    var oldDataDimsForPoint = oldDataNewCoordInfo.dataDimsForPoint;\r\n                    oldIdx2 = oldIdx * 2;\r\n                    if (rawIndex !== oldIdx) {\r\n                        var newPt = newCoordSys.dataToPoint([\r\n                            oldData.get(oldDataDimsForPoint[0], oldIdx),\r\n                            oldData.get(oldDataDimsForPoint[1], oldIdx)\r\n                        ]);\r\n                        var newStackedOnPt = getStackedOnPoint(oldDataNewCoordInfo, newCoordSys, oldData, oldIdx);\r\n                        currPoints.push(oldPoints[oldIdx2], oldPoints[oldIdx2 + 1]);\r\n                        nextPoints.push(newPt[0], newPt[1]);\r\n                        currStackedPoints.push(oldStackedOnPoints[oldIdx2], oldStackedOnPoints[oldIdx2 + 1]);\r\n                        nextStackedPoints.push(newStackedOnPt[0], newStackedOnPt[1]);\r\n                        rawIndices.push(rawIndex);\r\n                    }\r\n                    else {\r\n                        pointAdded = false;\r\n                    }\r\n            }\r\n            if (pointAdded) {\r\n                status.push(diffItem);\r\n                sortedIndices.push(sortedIndices.length);\r\n            }\r\n        }\r\n        sortedIndices.sort(function (a, b) {\r\n            return rawIndices[a] - rawIndices[b];\r\n        });\r\n        var len = currPoints.length;\r\n        var sortedCurrPoints = createFloat32Array(len);\r\n        var sortedNextPoints = createFloat32Array(len);\r\n        var sortedCurrStackedPoints = createFloat32Array(len);\r\n        var sortedNextStackedPoints = createFloat32Array(len);\r\n        var sortedStatus = [];\r\n        for (var i = 0; i < sortedIndices.length; i++) {\r\n            var idx = sortedIndices[i];\r\n            var i2 = i * 2;\r\n            var idx2 = idx * 2;\r\n            sortedCurrPoints[i2] = currPoints[idx2];\r\n            sortedCurrPoints[i2 + 1] = currPoints[idx2 + 1];\r\n            sortedNextPoints[i2] = nextPoints[idx2];\r\n            sortedNextPoints[i2 + 1] = nextPoints[idx2 + 1];\r\n            sortedCurrStackedPoints[i2] = currStackedPoints[idx2];\r\n            sortedCurrStackedPoints[i2 + 1] = currStackedPoints[idx2 + 1];\r\n            sortedNextStackedPoints[i2] = nextStackedPoints[idx2];\r\n            sortedNextStackedPoints[i2 + 1] = nextStackedPoints[idx2 + 1];\r\n            sortedStatus[i] = status[idx];\r\n        }\r\n        return {\r\n            current: sortedCurrPoints,\r\n            next: sortedNextPoints,\r\n            stackedOnCurrent: sortedCurrStackedPoints,\r\n            stackedOnNext: sortedNextStackedPoints,\r\n            status: sortedStatus\r\n        };\r\n    }\n\n    var mathMin$4 = Math.min;\r\n    var mathMax$4 = Math.max;\r\n    function isPointNull(x, y) {\r\n        return isNaN(x) || isNaN(y);\r\n    }\r\n    function drawSegment(ctx, points, start, segLen, allLen, dir, smooth, smoothMonotone, connectNulls) {\r\n        var prevX;\r\n        var prevY;\r\n        var cpx0;\r\n        var cpy0;\r\n        var cpx1;\r\n        var cpy1;\r\n        var idx = start;\r\n        var k = 0;\r\n        for (; k < segLen; k++) {\r\n            var x = points[idx * 2];\r\n            var y = points[idx * 2 + 1];\r\n            if (idx >= allLen || idx < 0) {\r\n                break;\r\n            }\r\n            if (isPointNull(x, y)) {\r\n                if (connectNulls) {\r\n                    idx += dir;\r\n                    continue;\r\n                }\r\n                break;\r\n            }\r\n            if (idx === start) {\r\n                ctx[dir > 0 ? 'moveTo' : 'lineTo'](x, y);\r\n                cpx0 = x;\r\n                cpy0 = y;\r\n            }\r\n            else {\r\n                var dx = x - prevX;\r\n                var dy = y - prevY;\r\n                if ((dx * dx + dy * dy) < 0.5) {\r\n                    idx += dir;\r\n                    continue;\r\n                }\r\n                if (smooth > 0) {\r\n                    var nextIdx = idx + dir;\r\n                    var nextX = points[nextIdx * 2];\r\n                    var nextY = points[nextIdx * 2 + 1];\r\n                    var tmpK = k + 1;\r\n                    if (connectNulls) {\r\n                        while (isPointNull(nextX, nextY) && tmpK < segLen) {\r\n                            tmpK++;\r\n                            nextIdx += dir;\r\n                            nextX = points[nextIdx * 2];\r\n                            nextY = points[nextIdx * 2 + 1];\r\n                        }\r\n                    }\r\n                    var ratioNextSeg = 0.5;\r\n                    var vx = 0;\r\n                    var vy = 0;\r\n                    var nextCpx0 = void 0;\r\n                    var nextCpy0 = void 0;\r\n                    if (tmpK >= segLen || isPointNull(nextX, nextY)) {\r\n                        cpx1 = x;\r\n                        cpy1 = y;\r\n                    }\r\n                    else {\r\n                        vx = nextX - prevX;\r\n                        vy = nextY - prevY;\r\n                        var dx0 = x - prevX;\r\n                        var dx1 = nextX - x;\r\n                        var dy0 = y - prevY;\r\n                        var dy1 = nextY - y;\r\n                        var lenPrevSeg = void 0;\r\n                        var lenNextSeg = void 0;\r\n                        if (smoothMonotone === 'x') {\r\n                            lenPrevSeg = Math.abs(dx0);\r\n                            lenNextSeg = Math.abs(dx1);\r\n                            cpx1 = x - lenPrevSeg * smooth;\r\n                            cpy1 = y;\r\n                            nextCpx0 = x + lenPrevSeg * smooth;\r\n                            nextCpy0 = y;\r\n                        }\r\n                        else if (smoothMonotone === 'y') {\r\n                            lenPrevSeg = Math.abs(dy0);\r\n                            lenNextSeg = Math.abs(dy1);\r\n                            cpx1 = x;\r\n                            cpy1 = y - lenPrevSeg * smooth;\r\n                            nextCpx0 = x;\r\n                            nextCpy0 = y + lenPrevSeg * smooth;\r\n                        }\r\n                        else {\r\n                            lenPrevSeg = Math.sqrt(dx0 * dx0 + dy0 * dy0);\r\n                            lenNextSeg = Math.sqrt(dx1 * dx1 + dy1 * dy1);\r\n                            ratioNextSeg = lenNextSeg / (lenNextSeg + lenPrevSeg);\r\n                            cpx1 = x - vx * smooth * (1 - ratioNextSeg);\r\n                            cpy1 = y - vy * smooth * (1 - ratioNextSeg);\r\n                            nextCpx0 = x + vx * smooth * ratioNextSeg;\r\n                            nextCpy0 = y + vy * smooth * ratioNextSeg;\r\n                            nextCpx0 = mathMin$4(nextCpx0, mathMax$4(nextX, x));\r\n                            nextCpy0 = mathMin$4(nextCpy0, mathMax$4(nextY, y));\r\n                            nextCpx0 = mathMax$4(nextCpx0, mathMin$4(nextX, x));\r\n                            nextCpy0 = mathMax$4(nextCpy0, mathMin$4(nextY, y));\r\n                            vx = nextCpx0 - x;\r\n                            vy = nextCpy0 - y;\r\n                            cpx1 = x - vx * lenPrevSeg / lenNextSeg;\r\n                            cpy1 = y - vy * lenPrevSeg / lenNextSeg;\r\n                            cpx1 = mathMin$4(cpx1, mathMax$4(prevX, x));\r\n                            cpy1 = mathMin$4(cpy1, mathMax$4(prevY, y));\r\n                            cpx1 = mathMax$4(cpx1, mathMin$4(prevX, x));\r\n                            cpy1 = mathMax$4(cpy1, mathMin$4(prevY, y));\r\n                            vx = x - cpx1;\r\n                            vy = y - cpy1;\r\n                            nextCpx0 = x + vx * lenNextSeg / lenPrevSeg;\r\n                            nextCpy0 = y + vy * lenNextSeg / lenPrevSeg;\r\n                        }\r\n                    }\r\n                    ctx.bezierCurveTo(cpx0, cpy0, cpx1, cpy1, x, y);\r\n                    cpx0 = nextCpx0;\r\n                    cpy0 = nextCpy0;\r\n                }\r\n                else {\r\n                    ctx.lineTo(x, y);\r\n                }\r\n            }\r\n            prevX = x;\r\n            prevY = y;\r\n            idx += dir;\r\n        }\r\n        return k;\r\n    }\r\n    var ECPolylineShape = (function () {\r\n        function ECPolylineShape() {\r\n            this.smooth = 0;\r\n            this.smoothConstraint = true;\r\n        }\r\n        return ECPolylineShape;\r\n    }());\r\n    var ECPolyline = (function (_super) {\r\n        __extends(ECPolyline, _super);\r\n        function ECPolyline(opts) {\r\n            var _this = _super.call(this, opts) || this;\r\n            _this.type = 'ec-polyline';\r\n            return _this;\r\n        }\r\n        ECPolyline.prototype.getDefaultStyle = function () {\r\n            return {\r\n                stroke: '#000',\r\n                fill: null\r\n            };\r\n        };\r\n        ECPolyline.prototype.getDefaultShape = function () {\r\n            return new ECPolylineShape();\r\n        };\r\n        ECPolyline.prototype.buildPath = function (ctx, shape) {\r\n            var points = shape.points;\r\n            var i = 0;\r\n            var len = points.length / 2;\r\n            if (shape.connectNulls) {\r\n                for (; len > 0; len--) {\r\n                    if (!isPointNull(points[len * 2 - 2], points[len * 2 - 1])) {\r\n                        break;\r\n                    }\r\n                }\r\n                for (; i < len; i++) {\r\n                    if (!isPointNull(points[i * 2], points[i * 2 + 1])) {\r\n                        break;\r\n                    }\r\n                }\r\n            }\r\n            while (i < len) {\r\n                i += drawSegment(ctx, points, i, len, len, 1, shape.smooth, shape.smoothMonotone, shape.connectNulls) + 1;\r\n            }\r\n        };\r\n        ECPolyline.prototype.getPointOn = function (xOrY, dim) {\r\n            if (!this.path) {\r\n                this.createPathProxy();\r\n                this.buildPath(this.path, this.shape);\r\n            }\r\n            var path = this.path;\r\n            var data = path.data;\r\n            var CMD = PathProxy.CMD;\r\n            var x0;\r\n            var y0;\r\n            var isDimX = dim === 'x';\r\n            var roots = [];\r\n            for (var i = 0; i < data.length;) {\r\n                var cmd = data[i++];\r\n                var x = void 0;\r\n                var y = void 0;\r\n                var x2 = void 0;\r\n                var y2 = void 0;\r\n                var x3 = void 0;\r\n                var y3 = void 0;\r\n                var t = void 0;\r\n                switch (cmd) {\r\n                    case CMD.M:\r\n                        x0 = data[i++];\r\n                        y0 = data[i++];\r\n                        break;\r\n                    case CMD.L:\r\n                        x = data[i++];\r\n                        y = data[i++];\r\n                        t = isDimX ? (xOrY - x0) / (x - x0)\r\n                            : (xOrY - y0) / (y - y0);\r\n                        if (t <= 1 && t >= 0) {\r\n                            var val = isDimX ? (y - y0) * t + y0\r\n                                : (x - x0) * t + x0;\r\n                            return isDimX ? [xOrY, val] : [val, xOrY];\r\n                        }\r\n                        x0 = x;\r\n                        y0 = y;\r\n                        break;\r\n                    case CMD.C:\r\n                        x = data[i++];\r\n                        y = data[i++];\r\n                        x2 = data[i++];\r\n                        y2 = data[i++];\r\n                        x3 = data[i++];\r\n                        y3 = data[i++];\r\n                        var nRoot = isDimX ? cubicRootAt(x0, x, x2, x3, xOrY, roots)\r\n                            : cubicRootAt(y0, y, y2, y3, xOrY, roots);\r\n                        if (nRoot > 0) {\r\n                            for (var i_1 = 0; i_1 < nRoot; i_1++) {\r\n                                var t_1 = roots[i_1];\r\n                                if (t_1 <= 1 && t_1 >= 0) {\r\n                                    var val = isDimX ? cubicAt(y0, y, y2, y3, t_1)\r\n                                        : cubicAt(x0, x, x2, x3, t_1);\r\n                                    return isDimX ? [xOrY, val] : [val, xOrY];\r\n                                }\r\n                            }\r\n                        }\r\n                        x0 = x3;\r\n                        y0 = y3;\r\n                        break;\r\n                }\r\n            }\r\n        };\r\n        return ECPolyline;\r\n    }(Path));\r\n    var ECPolygonShape = (function (_super) {\r\n        __extends(ECPolygonShape, _super);\r\n        function ECPolygonShape() {\r\n            return _super !== null && _super.apply(this, arguments) || this;\r\n        }\r\n        return ECPolygonShape;\r\n    }(ECPolylineShape));\r\n    var ECPolygon = (function (_super) {\r\n        __extends(ECPolygon, _super);\r\n        function ECPolygon(opts) {\r\n            var _this = _super.call(this, opts) || this;\r\n            _this.type = 'ec-polygon';\r\n            return _this;\r\n        }\r\n        ECPolygon.prototype.getDefaultShape = function () {\r\n            return new ECPolygonShape();\r\n        };\r\n        ECPolygon.prototype.buildPath = function (ctx, shape) {\r\n            var points = shape.points;\r\n            var stackedOnPoints = shape.stackedOnPoints;\r\n            var i = 0;\r\n            var len = points.length / 2;\r\n            var smoothMonotone = shape.smoothMonotone;\r\n            if (shape.connectNulls) {\r\n                for (; len > 0; len--) {\r\n                    if (!isPointNull(points[len * 2 - 2], points[len * 2 - 1])) {\r\n                        break;\r\n                    }\r\n                }\r\n                for (; i < len; i++) {\r\n                    if (!isPointNull(points[i * 2], points[i * 2 + 1])) {\r\n                        break;\r\n                    }\r\n                }\r\n            }\r\n            while (i < len) {\r\n                var k = drawSegment(ctx, points, i, len, len, 1, shape.smooth, smoothMonotone, shape.connectNulls);\r\n                drawSegment(ctx, stackedOnPoints, i + k - 1, k, len, -1, shape.stackedOnSmooth, smoothMonotone, shape.connectNulls);\r\n                i += k + 1;\r\n                ctx.closePath();\r\n            }\r\n        };\r\n        return ECPolygon;\r\n    }(Path));\n\n    function createGridClipPath(cartesian, hasAnimation, seriesModel, done, during) {\r\n        var rect = cartesian.getArea();\r\n        var x = rect.x;\r\n        var y = rect.y;\r\n        var width = rect.width;\r\n        var height = rect.height;\r\n        var lineWidth = seriesModel.get(['lineStyle', 'width']) || 2;\r\n        x -= lineWidth / 2;\r\n        y -= lineWidth / 2;\r\n        width += lineWidth;\r\n        height += lineWidth;\r\n        x = Math.floor(x);\r\n        width = Math.round(width);\r\n        var clipPath = new Rect({\r\n            shape: {\r\n                x: x,\r\n                y: y,\r\n                width: width,\r\n                height: height\r\n            }\r\n        });\r\n        if (hasAnimation) {\r\n            var baseAxis = cartesian.getBaseAxis();\r\n            var isHorizontal = baseAxis.isHorizontal();\r\n            var isAxisInversed = baseAxis.inverse;\r\n            if (isHorizontal) {\r\n                if (isAxisInversed) {\r\n                    clipPath.shape.x += width;\r\n                }\r\n                clipPath.shape.width = 0;\r\n            }\r\n            else {\r\n                if (!isAxisInversed) {\r\n                    clipPath.shape.y += height;\r\n                }\r\n                clipPath.shape.height = 0;\r\n            }\r\n            var duringCb = typeof during === 'function'\r\n                ? function (percent) {\r\n                    during(percent, clipPath);\r\n                }\r\n                : null;\r\n            initProps(clipPath, {\r\n                shape: {\r\n                    width: width,\r\n                    height: height,\r\n                    x: x,\r\n                    y: y\r\n                }\r\n            }, seriesModel, null, done, duringCb);\r\n        }\r\n        return clipPath;\r\n    }\r\n    function createPolarClipPath(polar, hasAnimation, seriesModel) {\r\n        var sectorArea = polar.getArea();\r\n        var r0 = round$1(sectorArea.r0, 1);\r\n        var r = round$1(sectorArea.r, 1);\r\n        var clipPath = new Sector({\r\n            shape: {\r\n                cx: round$1(polar.cx, 1),\r\n                cy: round$1(polar.cy, 1),\r\n                r0: r0,\r\n                r: r,\r\n                startAngle: sectorArea.startAngle,\r\n                endAngle: sectorArea.endAngle,\r\n                clockwise: sectorArea.clockwise\r\n            }\r\n        });\r\n        if (hasAnimation) {\r\n            var isRadial = polar.getBaseAxis().dim === 'angle';\r\n            if (isRadial) {\r\n                clipPath.shape.endAngle = sectorArea.startAngle;\r\n            }\r\n            else {\r\n                clipPath.shape.r = r0;\r\n            }\r\n            initProps(clipPath, {\r\n                shape: {\r\n                    endAngle: sectorArea.endAngle,\r\n                    r: r\r\n                }\r\n            }, seriesModel);\r\n        }\r\n        return clipPath;\r\n    }\r\n    function createClipPath(coordSys, hasAnimation, seriesModel, done, during) {\r\n        if (!coordSys) {\r\n            return null;\r\n        }\r\n        else if (coordSys.type === 'polar') {\r\n            return createPolarClipPath(coordSys, hasAnimation, seriesModel);\r\n        }\r\n        else if (coordSys.type === 'cartesian2d') {\r\n            return createGridClipPath(coordSys, hasAnimation, seriesModel, done, during);\r\n        }\r\n        return null;\r\n    }\n\n    function isCoordinateSystemType(coordSys, type) {\r\n        return coordSys.type === type;\r\n    }\n\n    function isPointsSame(points1, points2) {\r\n        if (points1.length !== points2.length) {\r\n            return;\r\n        }\r\n        for (var i = 0; i < points1.length; i++) {\r\n            if (points1[i] !== points2[i]) {\r\n                return;\r\n            }\r\n        }\r\n        return true;\r\n    }\r\n    function bboxFromPoints(points) {\r\n        var minX = Infinity;\r\n        var minY = Infinity;\r\n        var maxX = -Infinity;\r\n        var maxY = -Infinity;\r\n        for (var i = 0; i < points.length;) {\r\n            var x = points[i++];\r\n            var y = points[i++];\r\n            if (!isNaN(x)) {\r\n                minX = Math.min(x, minX);\r\n                maxX = Math.max(x, maxX);\r\n            }\r\n            if (!isNaN(y)) {\r\n                minY = Math.min(y, minY);\r\n                maxY = Math.max(y, maxY);\r\n            }\r\n        }\r\n        return [\r\n            [minX, minY],\r\n            [maxX, maxY]\r\n        ];\r\n    }\r\n    function getBoundingDiff(points1, points2) {\r\n        var _a = bboxFromPoints(points1), min1 = _a[0], max1 = _a[1];\r\n        var _b = bboxFromPoints(points2), min2 = _b[0], max2 = _b[1];\r\n        return Math.max(Math.abs(min1[0] - min2[0]), Math.abs(min1[1] - min2[1]), Math.abs(max1[0] - max2[0]), Math.abs(max1[1] - max2[1]));\r\n    }\r\n    function getSmooth(smooth) {\r\n        return typeof smooth === 'number' ? smooth : (smooth ? 0.5 : 0);\r\n    }\r\n    function getStackedOnPoints(coordSys, data, dataCoordInfo) {\r\n        if (!dataCoordInfo.valueDim) {\r\n            return [];\r\n        }\r\n        var len = data.count();\r\n        var points = createFloat32Array(len * 2);\r\n        for (var idx = 0; idx < len; idx++) {\r\n            var pt = getStackedOnPoint(dataCoordInfo, coordSys, data, idx);\r\n            points[idx * 2] = pt[0];\r\n            points[idx * 2 + 1] = pt[1];\r\n        }\r\n        return points;\r\n    }\r\n    function turnPointsIntoStep(points, coordSys, stepTurnAt) {\r\n        var baseAxis = coordSys.getBaseAxis();\r\n        var baseIndex = baseAxis.dim === 'x' || baseAxis.dim === 'radius' ? 0 : 1;\r\n        var stepPoints = [];\r\n        var i = 0;\r\n        var stepPt = [];\r\n        var pt = [];\r\n        var nextPt = [];\r\n        for (; i < points.length - 2; i += 2) {\r\n            nextPt[0] = points[i + 2];\r\n            nextPt[1] = points[i + 3];\r\n            pt[0] = points[i];\r\n            pt[1] = points[i + 1];\r\n            stepPoints.push(pt[0], pt[1]);\r\n            switch (stepTurnAt) {\r\n                case 'end':\r\n                    stepPt[baseIndex] = nextPt[baseIndex];\r\n                    stepPt[1 - baseIndex] = pt[1 - baseIndex];\r\n                    stepPoints.push(stepPt[0], stepPt[1]);\r\n                    break;\r\n                case 'middle':\r\n                    var middle = (pt[baseIndex] + nextPt[baseIndex]) / 2;\r\n                    var stepPt2 = [];\r\n                    stepPt[baseIndex] = stepPt2[baseIndex] = middle;\r\n                    stepPt[1 - baseIndex] = pt[1 - baseIndex];\r\n                    stepPt2[1 - baseIndex] = nextPt[1 - baseIndex];\r\n                    stepPoints.push(stepPt[0], stepPt[1]);\r\n                    stepPoints.push(stepPt2[0], stepPt2[1]);\r\n                    break;\r\n                default:\r\n                    stepPt[baseIndex] = pt[baseIndex];\r\n                    stepPt[1 - baseIndex] = nextPt[1 - baseIndex];\r\n                    stepPoints.push(stepPt[0], stepPt[1]);\r\n            }\r\n        }\r\n        stepPoints.push(points[i++], points[i++]);\r\n        return stepPoints;\r\n    }\r\n    function getVisualGradient(data, coordSys) {\r\n        var visualMetaList = data.getVisual('visualMeta');\r\n        if (!visualMetaList || !visualMetaList.length || !data.count()) {\r\n            return;\r\n        }\r\n        if (coordSys.type !== 'cartesian2d') {\r\n            if (__DEV__) {\r\n                console.warn('Visual map on line style is only supported on cartesian2d.');\r\n            }\r\n            return;\r\n        }\r\n        var coordDim;\r\n        var visualMeta;\r\n        for (var i = visualMetaList.length - 1; i >= 0; i--) {\r\n            var dimIndex = visualMetaList[i].dimension;\r\n            var dimName = data.dimensions[dimIndex];\r\n            var dimInfo = data.getDimensionInfo(dimName);\r\n            coordDim = (dimInfo && dimInfo.coordDim);\r\n            if (coordDim === 'x' || coordDim === 'y') {\r\n                visualMeta = visualMetaList[i];\r\n                break;\r\n            }\r\n        }\r\n        if (!visualMeta) {\r\n            if (__DEV__) {\r\n                console.warn('Visual map on line style only support x or y dimension.');\r\n            }\r\n            return;\r\n        }\r\n        var axis = coordSys.getAxis(coordDim);\r\n        var colorStops = map(visualMeta.stops, function (stop) {\r\n            return {\r\n                offset: 0,\r\n                coord: axis.toGlobalCoord(axis.dataToCoord(stop.value)),\r\n                color: stop.color\r\n            };\r\n        });\r\n        var stopLen = colorStops.length;\r\n        var outerColors = visualMeta.outerColors.slice();\r\n        if (stopLen && colorStops[0].coord > colorStops[stopLen - 1].coord) {\r\n            colorStops.reverse();\r\n            outerColors.reverse();\r\n        }\r\n        var tinyExtent = 10;\r\n        var minCoord = colorStops[0].coord - tinyExtent;\r\n        var maxCoord = colorStops[stopLen - 1].coord + tinyExtent;\r\n        var coordSpan = maxCoord - minCoord;\r\n        if (coordSpan < 1e-3) {\r\n            return 'transparent';\r\n        }\r\n        each(colorStops, function (stop) {\r\n            stop.offset = (stop.coord - minCoord) / coordSpan;\r\n        });\r\n        colorStops.push({\r\n            offset: stopLen ? colorStops[stopLen - 1].offset : 0.5,\r\n            color: outerColors[1] || 'transparent'\r\n        });\r\n        colorStops.unshift({\r\n            offset: stopLen ? colorStops[0].offset : 0.5,\r\n            color: outerColors[0] || 'transparent'\r\n        });\r\n        var gradient = new LinearGradient(0, 0, 0, 0, colorStops, true);\r\n        gradient[coordDim] = minCoord;\r\n        gradient[coordDim + '2'] = maxCoord;\r\n        return gradient;\r\n    }\r\n    function getIsIgnoreFunc(seriesModel, data, coordSys) {\r\n        var showAllSymbol = seriesModel.get('showAllSymbol');\r\n        var isAuto = showAllSymbol === 'auto';\r\n        if (showAllSymbol && !isAuto) {\r\n            return;\r\n        }\r\n        var categoryAxis = coordSys.getAxesByScale('ordinal')[0];\r\n        if (!categoryAxis) {\r\n            return;\r\n        }\r\n        if (isAuto\r\n            && canShowAllSymbolForCategory(categoryAxis, data)) {\r\n            return;\r\n        }\r\n        var categoryDataDim = data.mapDimension(categoryAxis.dim);\r\n        var labelMap = {};\r\n        each(categoryAxis.getViewLabels(), function (labelItem) {\r\n            labelMap[labelItem.tickValue] = 1;\r\n        });\r\n        return function (dataIndex) {\r\n            return !labelMap.hasOwnProperty(data.get(categoryDataDim, dataIndex));\r\n        };\r\n    }\r\n    function canShowAllSymbolForCategory(categoryAxis, data) {\r\n        var axisExtent = categoryAxis.getExtent();\r\n        var availSize = Math.abs(axisExtent[1] - axisExtent[0]) / categoryAxis.scale.count();\r\n        isNaN(availSize) && (availSize = 0);\r\n        var dataLen = data.count();\r\n        var step = Math.max(1, Math.round(dataLen / 5));\r\n        for (var dataIndex = 0; dataIndex < dataLen; dataIndex += step) {\r\n            if (Symbol.getSymbolSize(data, dataIndex)[categoryAxis.isHorizontal() ? 1 : 0]\r\n                * 1.5 > availSize) {\r\n                return false;\r\n            }\r\n        }\r\n        return true;\r\n    }\r\n    function isPointNull$1(x, y) {\r\n        return isNaN(x) || isNaN(y);\r\n    }\r\n    function getLastIndexNotNull(points) {\r\n        var len = points.length / 2;\r\n        for (; len > 0; len--) {\r\n            if (!isPointNull$1(points[len * 2 - 2], points[len * 2 - 1])) {\r\n                break;\r\n            }\r\n        }\r\n        return len - 1;\r\n    }\r\n    function getPointAtIndex(points, idx) {\r\n        return [points[idx * 2], points[idx * 2 + 1]];\r\n    }\r\n    function getIndexRange(points, xOrY, dim) {\r\n        var len = points.length / 2;\r\n        var dimIdx = dim === 'x' ? 0 : 1;\r\n        var a;\r\n        var b;\r\n        var prevIndex = 0;\r\n        var nextIndex = -1;\r\n        for (var i = 0; i < len; i++) {\r\n            b = points[i * 2 + dimIdx];\r\n            if (isNaN(b) || isNaN(points[i * 2 + 1 - dimIdx])) {\r\n                continue;\r\n            }\r\n            if (i === 0) {\r\n                a = b;\r\n                continue;\r\n            }\r\n            if (a <= xOrY && b >= xOrY || a >= xOrY && b <= xOrY) {\r\n                nextIndex = i;\r\n                break;\r\n            }\r\n            prevIndex = i;\r\n            a = b;\r\n        }\r\n        return {\r\n            range: [prevIndex, nextIndex],\r\n            t: (xOrY - a) / (b - a)\r\n        };\r\n    }\r\n    function createLineClipPath(lineView, coordSys, hasAnimation, seriesModel) {\r\n        if (isCoordinateSystemType(coordSys, 'cartesian2d')) {\r\n            var endLabelModel_1 = seriesModel.getModel('endLabel');\r\n            var showEndLabel = endLabelModel_1.get('show');\r\n            var valueAnimation_1 = endLabelModel_1.get('valueAnimation');\r\n            var data_1 = seriesModel.getData();\r\n            var labelAnimationRecord_1 = { lastFrameIndex: 0 };\r\n            var during = showEndLabel\r\n                ? function (percent, clipRect) {\r\n                    lineView._endLabelOnDuring(percent, clipRect, data_1, labelAnimationRecord_1, valueAnimation_1, endLabelModel_1, coordSys);\r\n                }\r\n                : null;\r\n            var isHorizontal = coordSys.getBaseAxis().isHorizontal();\r\n            var clipPath = createGridClipPath(coordSys, hasAnimation, seriesModel, function () {\r\n                var endLabel = lineView._endLabel;\r\n                if (endLabel && hasAnimation) {\r\n                    if (labelAnimationRecord_1.originalX != null) {\r\n                        endLabel.attr({\r\n                            x: labelAnimationRecord_1.originalX,\r\n                            y: labelAnimationRecord_1.originalY\r\n                        });\r\n                    }\r\n                }\r\n            }, during);\r\n            if (!seriesModel.get('clip', true)) {\r\n                var rectShape = clipPath.shape;\r\n                var expandSize = Math.max(rectShape.width, rectShape.height);\r\n                if (isHorizontal) {\r\n                    rectShape.y -= expandSize;\r\n                    rectShape.height += expandSize * 2;\r\n                }\r\n                else {\r\n                    rectShape.x -= expandSize;\r\n                    rectShape.width += expandSize * 2;\r\n                }\r\n            }\r\n            if (during) {\r\n                during(1, clipPath);\r\n            }\r\n            return clipPath;\r\n        }\r\n        else {\r\n            if (__DEV__) {\r\n                if (seriesModel.get(['endLabel', 'show'])) {\r\n                    console.warn('endLabel is not supported for lines in polar systems.');\r\n                }\r\n            }\r\n            return createPolarClipPath(coordSys, hasAnimation, seriesModel);\r\n        }\r\n    }\r\n    function getEndLabelStateSpecified(endLabelModel, coordSys) {\r\n        var baseAxis = coordSys.getBaseAxis();\r\n        var isHorizontal = baseAxis.isHorizontal();\r\n        var isBaseInversed = baseAxis.inverse;\r\n        var align = isHorizontal\r\n            ? isBaseInversed ? 'right' : 'left'\r\n            : 'center';\r\n        var verticalAlign = isHorizontal\r\n            ? 'middle'\r\n            : (isBaseInversed ? 'top' : 'bottom');\r\n        return {\r\n            normal: {\r\n                align: endLabelModel.get('align') || align,\r\n                verticalAlign: endLabelModel.get('verticalAlign') || verticalAlign,\r\n                padding: endLabelModel.get('distance') || 0\r\n            }\r\n        };\r\n    }\r\n    var LineView = (function (_super) {\r\n        __extends(LineView, _super);\r\n        function LineView() {\r\n            return _super !== null && _super.apply(this, arguments) || this;\r\n        }\r\n        LineView.prototype.init = function () {\r\n            var lineGroup = new Group();\r\n            var symbolDraw = new SymbolDraw();\r\n            this.group.add(symbolDraw.group);\r\n            this._symbolDraw = symbolDraw;\r\n            this._lineGroup = lineGroup;\r\n        };\r\n        LineView.prototype.render = function (seriesModel, ecModel, api) {\r\n            var _this = this;\r\n            var coordSys = seriesModel.coordinateSystem;\r\n            var group = this.group;\r\n            var data = seriesModel.getData();\r\n            var lineStyleModel = seriesModel.getModel('lineStyle');\r\n            var areaStyleModel = seriesModel.getModel('areaStyle');\r\n            var points = data.getLayout('points') || [];\r\n            var isCoordSysPolar = coordSys.type === 'polar';\r\n            var prevCoordSys = this._coordSys;\r\n            var symbolDraw = this._symbolDraw;\r\n            var polyline = this._polyline;\r\n            var polygon = this._polygon;\r\n            var lineGroup = this._lineGroup;\r\n            var hasAnimation = seriesModel.get('animation');\r\n            var isAreaChart = !areaStyleModel.isEmpty();\r\n            var valueOrigin = areaStyleModel.get('origin');\r\n            var dataCoordInfo = prepareDataCoordInfo(coordSys, data, valueOrigin);\r\n            var stackedOnPoints = isAreaChart && getStackedOnPoints(coordSys, data, dataCoordInfo);\r\n            var showSymbol = seriesModel.get('showSymbol');\r\n            var isIgnoreFunc = showSymbol && !isCoordSysPolar\r\n                && getIsIgnoreFunc(seriesModel, data, coordSys);\r\n            var oldData = this._data;\r\n            oldData && oldData.eachItemGraphicEl(function (el, idx) {\r\n                if (el.__temp) {\r\n                    group.remove(el);\r\n                    oldData.setItemGraphicEl(idx, null);\r\n                }\r\n            });\r\n            if (!showSymbol) {\r\n                symbolDraw.remove();\r\n            }\r\n            group.add(lineGroup);\r\n            var step = !isCoordSysPolar ? seriesModel.get('step') : false;\r\n            var clipShapeForSymbol;\r\n            if (coordSys && coordSys.getArea && seriesModel.get('clip', true)) {\r\n                clipShapeForSymbol = coordSys.getArea();\r\n                if (clipShapeForSymbol.width != null) {\r\n                    clipShapeForSymbol.x -= 0.1;\r\n                    clipShapeForSymbol.y -= 0.1;\r\n                    clipShapeForSymbol.width += 0.2;\r\n                    clipShapeForSymbol.height += 0.2;\r\n                }\r\n                else if (clipShapeForSymbol.r0) {\r\n                    clipShapeForSymbol.r0 -= 0.5;\r\n                    clipShapeForSymbol.r += 0.5;\r\n                }\r\n            }\r\n            this._clipShapeForSymbol = clipShapeForSymbol;\r\n            if (!(polyline && prevCoordSys.type === coordSys.type && step === this._step)) {\r\n                showSymbol && symbolDraw.updateData(data, {\r\n                    isIgnore: isIgnoreFunc,\r\n                    clipShape: clipShapeForSymbol,\r\n                    disableAnimation: true,\r\n                    getSymbolPoint: function (idx) {\r\n                        return [points[idx * 2], points[idx * 2 + 1]];\r\n                    }\r\n                });\r\n                hasAnimation && this._initSymbolLabelAnimation(data, coordSys, clipShapeForSymbol);\r\n                if (step) {\r\n                    points = turnPointsIntoStep(points, coordSys, step);\r\n                    if (stackedOnPoints) {\r\n                        stackedOnPoints = turnPointsIntoStep(stackedOnPoints, coordSys, step);\r\n                    }\r\n                }\r\n                polyline = this._newPolyline(points);\r\n                if (isAreaChart) {\r\n                    polygon = this._newPolygon(points, stackedOnPoints);\r\n                }\r\n                if (!isCoordSysPolar) {\r\n                    this._initOrUpdateEndLabel(seriesModel, coordSys);\r\n                }\r\n                lineGroup.setClipPath(createLineClipPath(this, coordSys, true, seriesModel));\r\n            }\r\n            else {\r\n                if (isAreaChart && !polygon) {\r\n                    polygon = this._newPolygon(points, stackedOnPoints);\r\n                }\r\n                else if (polygon && !isAreaChart) {\r\n                    lineGroup.remove(polygon);\r\n                    polygon = this._polygon = null;\r\n                }\r\n                if (!isCoordSysPolar) {\r\n                    this._initOrUpdateEndLabel(seriesModel, coordSys);\r\n                }\r\n                lineGroup.setClipPath(createLineClipPath(this, coordSys, false, seriesModel));\r\n                showSymbol && symbolDraw.updateData(data, {\r\n                    isIgnore: isIgnoreFunc,\r\n                    clipShape: clipShapeForSymbol,\r\n                    disableAnimation: true,\r\n                    getSymbolPoint: function (idx) {\r\n                        return [points[idx * 2], points[idx * 2 + 1]];\r\n                    }\r\n                });\r\n                if (!isPointsSame(this._stackedOnPoints, stackedOnPoints)\r\n                    || !isPointsSame(this._points, points)) {\r\n                    if (hasAnimation) {\r\n                        this._doUpdateAnimation(data, stackedOnPoints, coordSys, api, step, valueOrigin);\r\n                    }\r\n                    else {\r\n                        if (step) {\r\n                            points = turnPointsIntoStep(points, coordSys, step);\r\n                            if (stackedOnPoints) {\r\n                                stackedOnPoints = turnPointsIntoStep(stackedOnPoints, coordSys, step);\r\n                            }\r\n                        }\r\n                        polyline.setShape({\r\n                            points: points\r\n                        });\r\n                        polygon && polygon.setShape({\r\n                            points: points,\r\n                            stackedOnPoints: stackedOnPoints\r\n                        });\r\n                    }\r\n                }\r\n            }\r\n            var visualColor = getVisualGradient(data, coordSys)\r\n                || data.getVisual('style')[data.getVisual('drawType')];\r\n            var focus = seriesModel.get(['emphasis', 'focus']);\r\n            var blurScope = seriesModel.get(['emphasis', 'blurScope']);\r\n            polyline.useStyle(defaults(lineStyleModel.getLineStyle(), {\r\n                fill: 'none',\r\n                stroke: visualColor,\r\n                lineJoin: 'bevel'\r\n            }));\r\n            setStatesStylesFromModel(polyline, seriesModel, 'lineStyle');\r\n            if (polyline.style.lineWidth > 0 && seriesModel.get(['emphasis', 'lineStyle', 'width']) === 'bolder') {\r\n                var emphasisLineStyle = polyline.getState('emphasis').style;\r\n                emphasisLineStyle.lineWidth = polyline.style.lineWidth + 1;\r\n            }\r\n            getECData(polyline).seriesIndex = seriesModel.seriesIndex;\r\n            enableHoverEmphasis(polyline, focus, blurScope);\r\n            var smooth = getSmooth(seriesModel.get('smooth'));\r\n            var smoothMonotone = seriesModel.get('smoothMonotone');\r\n            var connectNulls = seriesModel.get('connectNulls');\r\n            polyline.setShape({\r\n                smooth: smooth,\r\n                smoothMonotone: smoothMonotone,\r\n                connectNulls: connectNulls\r\n            });\r\n            if (polygon) {\r\n                var stackedOnSeries = data.getCalculationInfo('stackedOnSeries');\r\n                var stackedOnSmooth = 0;\r\n                polygon.useStyle(defaults(areaStyleModel.getAreaStyle(), {\r\n                    fill: visualColor,\r\n                    opacity: 0.7,\r\n                    lineJoin: 'bevel',\r\n                    decal: data.getVisual('style').decal\r\n                }));\r\n                if (stackedOnSeries) {\r\n                    stackedOnSmooth = getSmooth(stackedOnSeries.get('smooth'));\r\n                }\r\n                polygon.setShape({\r\n                    smooth: smooth,\r\n                    stackedOnSmooth: stackedOnSmooth,\r\n                    smoothMonotone: smoothMonotone,\r\n                    connectNulls: connectNulls\r\n                });\r\n                setStatesStylesFromModel(polygon, seriesModel, 'areaStyle');\r\n                getECData(polygon).seriesIndex = seriesModel.seriesIndex;\r\n                enableHoverEmphasis(polygon, focus, blurScope);\r\n            }\r\n            var changePolyState = function (toState) {\r\n                _this._changePolyState(toState);\r\n            };\r\n            data.eachItemGraphicEl(function (el) {\r\n                el && (el.onHoverStateChange = changePolyState);\r\n            });\r\n            this._polyline.onHoverStateChange = changePolyState;\r\n            this._data = data;\r\n            this._coordSys = coordSys;\r\n            this._stackedOnPoints = stackedOnPoints;\r\n            this._points = points;\r\n            this._step = step;\r\n            this._valueOrigin = valueOrigin;\r\n        };\r\n        LineView.prototype.dispose = function () { };\r\n        LineView.prototype.highlight = function (seriesModel, ecModel, api, payload) {\r\n            var data = seriesModel.getData();\r\n            var dataIndex = queryDataIndex(data, payload);\r\n            this._changePolyState('emphasis');\r\n            if (!(dataIndex instanceof Array) && dataIndex != null && dataIndex >= 0) {\r\n                var points = data.getLayout('points');\r\n                var symbol = data.getItemGraphicEl(dataIndex);\r\n                if (!symbol) {\r\n                    var x = points[dataIndex * 2];\r\n                    var y = points[dataIndex * 2 + 1];\r\n                    if (isNaN(x) || isNaN(y)) {\r\n                        return;\r\n                    }\r\n                    if (this._clipShapeForSymbol && !this._clipShapeForSymbol.contain(x, y)) {\r\n                        return;\r\n                    }\r\n                    symbol = new Symbol(data, dataIndex);\r\n                    symbol.x = x;\r\n                    symbol.y = y;\r\n                    symbol.setZ(seriesModel.get('zlevel'), seriesModel.get('z'));\r\n                    symbol.__temp = true;\r\n                    data.setItemGraphicEl(dataIndex, symbol);\r\n                    symbol.stopSymbolAnimation(true);\r\n                    this.group.add(symbol);\r\n                }\r\n                symbol.highlight();\r\n            }\r\n            else {\r\n                ChartView.prototype.highlight.call(this, seriesModel, ecModel, api, payload);\r\n            }\r\n        };\r\n        LineView.prototype.downplay = function (seriesModel, ecModel, api, payload) {\r\n            var data = seriesModel.getData();\r\n            var dataIndex = queryDataIndex(data, payload);\r\n            this._changePolyState('normal');\r\n            if (dataIndex != null && dataIndex >= 0) {\r\n                var symbol = data.getItemGraphicEl(dataIndex);\r\n                if (symbol) {\r\n                    if (symbol.__temp) {\r\n                        data.setItemGraphicEl(dataIndex, null);\r\n                        this.group.remove(symbol);\r\n                    }\r\n                    else {\r\n                        symbol.downplay();\r\n                    }\r\n                }\r\n            }\r\n            else {\r\n                ChartView.prototype.downplay.call(this, seriesModel, ecModel, api, payload);\r\n            }\r\n        };\r\n        LineView.prototype._changePolyState = function (toState) {\r\n            var polygon = this._polygon;\r\n            setStatesFlag(this._polyline, toState);\r\n            polygon && setStatesFlag(polygon, toState);\r\n        };\r\n        LineView.prototype._newPolyline = function (points) {\r\n            var polyline = this._polyline;\r\n            if (polyline) {\r\n                this._lineGroup.remove(polyline);\r\n            }\r\n            polyline = new ECPolyline({\r\n                shape: {\r\n                    points: points\r\n                },\r\n                segmentIgnoreThreshold: 2,\r\n                z2: 10\r\n            });\r\n            this._lineGroup.add(polyline);\r\n            this._polyline = polyline;\r\n            return polyline;\r\n        };\r\n        LineView.prototype._newPolygon = function (points, stackedOnPoints) {\r\n            var polygon = this._polygon;\r\n            if (polygon) {\r\n                this._lineGroup.remove(polygon);\r\n            }\r\n            polygon = new ECPolygon({\r\n                shape: {\r\n                    points: points,\r\n                    stackedOnPoints: stackedOnPoints\r\n                },\r\n                segmentIgnoreThreshold: 2\r\n            });\r\n            this._lineGroup.add(polygon);\r\n            this._polygon = polygon;\r\n            return polygon;\r\n        };\r\n        LineView.prototype._initSymbolLabelAnimation = function (data, coordSys, clipShape) {\r\n            var isHorizontalOrRadial;\r\n            var isCoordSysPolar;\r\n            var baseAxis = coordSys.getBaseAxis();\r\n            var isAxisInverse = baseAxis.inverse;\r\n            if (coordSys.type === 'cartesian2d') {\r\n                isHorizontalOrRadial = baseAxis.isHorizontal();\r\n                isCoordSysPolar = false;\r\n            }\r\n            else if (coordSys.type === 'polar') {\r\n                isHorizontalOrRadial = baseAxis.dim === 'angle';\r\n                isCoordSysPolar = true;\r\n            }\r\n            var seriesModel = data.hostModel;\r\n            var seriesDuration = seriesModel.get('animationDuration');\r\n            if (typeof seriesDuration === 'function') {\r\n                seriesDuration = seriesDuration(null);\r\n            }\r\n            var seriesDalay = seriesModel.get('animationDelay') || 0;\r\n            var seriesDalayValue = typeof seriesDalay === 'function'\r\n                ? seriesDalay(null)\r\n                : seriesDalay;\r\n            data.eachItemGraphicEl(function (symbol, idx) {\r\n                var el = symbol;\r\n                if (el) {\r\n                    var point = [symbol.x, symbol.y];\r\n                    var start = void 0;\r\n                    var end = void 0;\r\n                    var current = void 0;\r\n                    if (isCoordSysPolar) {\r\n                        var polarClip = clipShape;\r\n                        var coord = coordSys.pointToCoord(point);\r\n                        if (isHorizontalOrRadial) {\r\n                            start = polarClip.startAngle;\r\n                            end = polarClip.endAngle;\r\n                            current = -coord[1] / 180 * Math.PI;\r\n                        }\r\n                        else {\r\n                            start = polarClip.r0;\r\n                            end = polarClip.r;\r\n                            current = coord[0];\r\n                        }\r\n                    }\r\n                    else {\r\n                        var gridClip = clipShape;\r\n                        if (isHorizontalOrRadial) {\r\n                            start = gridClip.x;\r\n                            end = gridClip.x + gridClip.width;\r\n                            current = symbol.x;\r\n                        }\r\n                        else {\r\n                            start = gridClip.y + gridClip.height;\r\n                            end = gridClip.y;\r\n                            current = symbol.y;\r\n                        }\r\n                    }\r\n                    var ratio = end === start ? 0 : (current - start) / (end - start);\r\n                    if (isAxisInverse) {\r\n                        ratio = 1 - ratio;\r\n                    }\r\n                    var delay = typeof seriesDalay === 'function' ? seriesDalay(idx)\r\n                        : (seriesDuration * ratio) + seriesDalayValue;\r\n                    var symbolPath = el.getSymbolPath();\r\n                    var text = symbolPath.getTextContent();\r\n                    el.attr({ scaleX: 0, scaleY: 0 });\r\n                    el.animateTo({\r\n                        scaleX: 1,\r\n                        scaleY: 1\r\n                    }, {\r\n                        duration: 200,\r\n                        delay: delay\r\n                    });\r\n                    if (text) {\r\n                        text.animateFrom({\r\n                            style: {\r\n                                opacity: 0\r\n                            }\r\n                        }, {\r\n                            duration: 300,\r\n                            delay: delay\r\n                        });\r\n                    }\r\n                    symbolPath.disableLabelAnimation = true;\r\n                }\r\n            });\r\n        };\r\n        LineView.prototype._initOrUpdateEndLabel = function (seriesModel, coordSys) {\r\n            var endLabelModel = seriesModel.getModel('endLabel');\r\n            if (endLabelModel.get('show')) {\r\n                var data_2 = seriesModel.getData();\r\n                var polyline = this._polyline;\r\n                var endLabel = this._endLabel;\r\n                if (!endLabel) {\r\n                    endLabel = this._endLabel = new ZRText({\r\n                        z2: 200\r\n                    });\r\n                    endLabel.ignoreClip = true;\r\n                    polyline.setTextContent(this._endLabel);\r\n                    polyline.disableLabelAnimation = true;\r\n                }\r\n                var dataIndex = getLastIndexNotNull(data_2.getLayout('points'));\r\n                if (dataIndex >= 0) {\r\n                    setLabelStyle(endLabel, getLabelStatesModels(seriesModel, 'endLabel'), {\r\n                        labelFetcher: seriesModel,\r\n                        labelDataIndex: dataIndex,\r\n                        defaultText: function (dataIndex, opt, overrideValue) {\r\n                            return overrideValue ? getDefaultInterpolatedLabel(data_2, overrideValue)\r\n                                : getDefaultLabel(data_2, dataIndex);\r\n                        },\r\n                        enableTextSetter: true\r\n                    }, getEndLabelStateSpecified(endLabelModel, coordSys));\r\n                }\r\n            }\r\n            else if (this._endLabel) {\r\n                this._polyline.removeTextContent();\r\n                this._endLabel = null;\r\n            }\r\n        };\r\n        LineView.prototype._endLabelOnDuring = function (percent, clipRect, data, animationRecord, valueAnimation, endLabelModel, coordSys) {\r\n            var endLabel = this._endLabel;\r\n            var polyline = this._polyline;\r\n            if (endLabel) {\r\n                if (percent < 1 && animationRecord.originalX == null) {\r\n                    animationRecord.originalX = endLabel.x;\r\n                    animationRecord.originalY = endLabel.y;\r\n                }\r\n                var points = data.getLayout('points');\r\n                var seriesModel = data.hostModel;\r\n                var connectNulls = seriesModel.get('connectNulls');\r\n                var precision = endLabelModel.get('precision');\r\n                var baseAxis = coordSys.getBaseAxis();\r\n                var isHorizontal = baseAxis.isHorizontal();\r\n                var isBaseInversed = baseAxis.inverse;\r\n                var clipShape = clipRect.shape;\r\n                var xOrY = isBaseInversed\r\n                    ? isHorizontal ? clipShape.x : (clipShape.y + clipShape.height)\r\n                    : isHorizontal ? (clipShape.x + clipShape.width) : clipShape.y;\r\n                var dim = isHorizontal ? 'x' : 'y';\r\n                var dataIndexRange = getIndexRange(points, xOrY, dim);\r\n                var indices = dataIndexRange.range;\r\n                var diff = indices[1] - indices[0];\r\n                var value = void 0;\r\n                if (diff >= 1) {\r\n                    if (diff > 1 && !connectNulls) {\r\n                        var pt = getPointAtIndex(points, indices[0]);\r\n                        endLabel.attr({ x: pt[0], y: pt[1] });\r\n                        valueAnimation && (value = seriesModel.getRawValue(indices[0]));\r\n                    }\r\n                    else {\r\n                        var pt = polyline.getPointOn(xOrY, dim);\r\n                        pt && endLabel.attr({ x: pt[0], y: pt[1] });\r\n                        var startValue = seriesModel.getRawValue(indices[0]);\r\n                        var endValue = seriesModel.getRawValue(indices[1]);\r\n                        valueAnimation && (value = interpolateRawValues(data, precision, startValue, endValue, dataIndexRange.t));\r\n                    }\r\n                    animationRecord.lastFrameIndex = indices[0];\r\n                }\r\n                else {\r\n                    var idx = (percent === 1 || animationRecord.lastFrameIndex > 0) ? indices[0] : 0;\r\n                    var pt = getPointAtIndex(points, idx);\r\n                    valueAnimation && (value = seriesModel.getRawValue(idx));\r\n                    endLabel.attr({ x: pt[0], y: pt[1] });\r\n                }\r\n                if (valueAnimation) {\r\n                    labelInner(endLabel).setLabelText(value);\r\n                }\r\n            }\r\n        };\r\n        LineView.prototype._doUpdateAnimation = function (data, stackedOnPoints, coordSys, api, step, valueOrigin) {\r\n            var polyline = this._polyline;\r\n            var polygon = this._polygon;\r\n            var seriesModel = data.hostModel;\r\n            var diff = lineAnimationDiff(this._data, data, this._stackedOnPoints, stackedOnPoints, this._coordSys, coordSys, this._valueOrigin, valueOrigin);\r\n            var current = diff.current;\r\n            var stackedOnCurrent = diff.stackedOnCurrent;\r\n            var next = diff.next;\r\n            var stackedOnNext = diff.stackedOnNext;\r\n            if (step) {\r\n                current = turnPointsIntoStep(diff.current, coordSys, step);\r\n                stackedOnCurrent = turnPointsIntoStep(diff.stackedOnCurrent, coordSys, step);\r\n                next = turnPointsIntoStep(diff.next, coordSys, step);\r\n                stackedOnNext = turnPointsIntoStep(diff.stackedOnNext, coordSys, step);\r\n            }\r\n            if (getBoundingDiff(current, next) > 3000\r\n                || (polygon && getBoundingDiff(stackedOnCurrent, stackedOnNext) > 3000)) {\r\n                polyline.setShape({\r\n                    points: next\r\n                });\r\n                if (polygon) {\r\n                    polygon.setShape({\r\n                        points: next,\r\n                        stackedOnPoints: stackedOnNext\r\n                    });\r\n                }\r\n                return;\r\n            }\r\n            polyline.shape.__points = diff.current;\r\n            polyline.shape.points = current;\r\n            var target = {\r\n                shape: {\r\n                    points: next\r\n                }\r\n            };\r\n            if (diff.current !== current) {\r\n                target.shape.__points = diff.next;\r\n            }\r\n            polyline.stopAnimation();\r\n            updateProps(polyline, target, seriesModel);\r\n            if (polygon) {\r\n                polygon.setShape({\r\n                    points: current,\r\n                    stackedOnPoints: stackedOnCurrent\r\n                });\r\n                polygon.stopAnimation();\r\n                updateProps(polygon, {\r\n                    shape: {\r\n                        stackedOnPoints: stackedOnNext\r\n                    }\r\n                }, seriesModel);\r\n                if (polyline.shape.points !== polygon.shape.points) {\r\n                    polygon.shape.points = polyline.shape.points;\r\n                }\r\n            }\r\n            var updatedDataInfo = [];\r\n            var diffStatus = diff.status;\r\n            for (var i = 0; i < diffStatus.length; i++) {\r\n                var cmd = diffStatus[i].cmd;\r\n                if (cmd === '=') {\r\n                    var el = data.getItemGraphicEl(diffStatus[i].idx1);\r\n                    if (el) {\r\n                        updatedDataInfo.push({\r\n                            el: el,\r\n                            ptIdx: i\r\n                        });\r\n                    }\r\n                }\r\n            }\r\n            if (polyline.animators && polyline.animators.length) {\r\n                polyline.animators[0].during(function () {\r\n                    polygon && polygon.dirtyShape();\r\n                    var points = polyline.shape.__points;\r\n                    for (var i = 0; i < updatedDataInfo.length; i++) {\r\n                        var el = updatedDataInfo[i].el;\r\n                        var offset = updatedDataInfo[i].ptIdx * 2;\r\n                        el.x = points[offset];\r\n                        el.y = points[offset + 1];\r\n                        el.markRedraw();\r\n                    }\r\n                });\r\n            }\r\n        };\r\n        LineView.prototype.remove = function (ecModel) {\r\n            var group = this.group;\r\n            var oldData = this._data;\r\n            this._lineGroup.removeAll();\r\n            this._symbolDraw.remove(true);\r\n            oldData && oldData.eachItemGraphicEl(function (el, idx) {\r\n                if (el.__temp) {\r\n                    group.remove(el);\r\n                    oldData.setItemGraphicEl(idx, null);\r\n                }\r\n            });\r\n            this._polyline =\r\n                this._polygon =\r\n                    this._coordSys =\r\n                        this._points =\r\n                            this._stackedOnPoints =\r\n                                this._endLabel =\r\n                                    this._data = null;\r\n        };\r\n        LineView.type = 'line';\r\n        return LineView;\r\n    }(ChartView));\r\n    ChartView.registerClass(LineView);\n\n    function pointsLayout(seriesType, forceStoreInTypedArray) {\r\n        return {\r\n            seriesType: seriesType,\r\n            plan: createRenderPlanner(),\r\n            reset: function (seriesModel) {\r\n                var data = seriesModel.getData();\r\n                var coordSys = seriesModel.coordinateSystem;\r\n                var pipelineContext = seriesModel.pipelineContext;\r\n                var useTypedArray = forceStoreInTypedArray || pipelineContext.large;\r\n                if (!coordSys) {\r\n                    return;\r\n                }\r\n                var dims = map(coordSys.dimensions, function (dim) {\r\n                    return data.mapDimension(dim);\r\n                }).slice(0, 2);\r\n                var dimLen = dims.length;\r\n                var stackResultDim = data.getCalculationInfo('stackResultDimension');\r\n                if (isDimensionStacked(data, dims[0])) {\r\n                    dims[0] = stackResultDim;\r\n                }\r\n                if (isDimensionStacked(data, dims[1])) {\r\n                    dims[1] = stackResultDim;\r\n                }\r\n                var dimInfo0 = data.getDimensionInfo(dims[0]);\r\n                var dimInfo1 = data.getDimensionInfo(dims[1]);\r\n                var dimIdx0 = dimInfo0 && dimInfo0.index;\r\n                var dimIdx1 = dimInfo1 && dimInfo1.index;\r\n                return dimLen && {\r\n                    progress: function (params, data) {\r\n                        var segCount = params.end - params.start;\r\n                        var points = useTypedArray && createFloat32Array(segCount * dimLen);\r\n                        var tmpIn = [];\r\n                        var tmpOut = [];\r\n                        for (var i = params.start, offset = 0; i < params.end; i++) {\r\n                            var point = void 0;\r\n                            if (dimLen === 1) {\r\n                                var x = data.getByDimIdx(dimIdx0, i);\r\n                                point = coordSys.dataToPoint(x, null, tmpOut);\r\n                            }\r\n                            else {\r\n                                tmpIn[0] = data.getByDimIdx(dimIdx0, i);\r\n                                tmpIn[1] = data.getByDimIdx(dimIdx1, i);\r\n                                point = coordSys.dataToPoint(tmpIn, null, tmpOut);\r\n                            }\r\n                            if (useTypedArray) {\r\n                                points[offset++] = point[0];\r\n                                points[offset++] = point[1];\r\n                            }\r\n                            else {\r\n                                data.setItemLayout(i, point.slice());\r\n                            }\r\n                        }\r\n                        useTypedArray && data.setLayout('points', points);\r\n                    }\r\n                };\r\n            }\r\n        };\r\n    }\n\n    var samplers = {\r\n        average: function (frame) {\r\n            var sum = 0;\r\n            var count = 0;\r\n            for (var i = 0; i < frame.length; i++) {\r\n                if (!isNaN(frame[i])) {\r\n                    sum += frame[i];\r\n                    count++;\r\n                }\r\n            }\r\n            return count === 0 ? NaN : sum / count;\r\n        },\r\n        sum: function (frame) {\r\n            var sum = 0;\r\n            for (var i = 0; i < frame.length; i++) {\r\n                sum += frame[i] || 0;\r\n            }\r\n            return sum;\r\n        },\r\n        max: function (frame) {\r\n            var max = -Infinity;\r\n            for (var i = 0; i < frame.length; i++) {\r\n                frame[i] > max && (max = frame[i]);\r\n            }\r\n            return isFinite(max) ? max : NaN;\r\n        },\r\n        min: function (frame) {\r\n            var min = Infinity;\r\n            for (var i = 0; i < frame.length; i++) {\r\n                frame[i] < min && (min = frame[i]);\r\n            }\r\n            return isFinite(min) ? min : NaN;\r\n        },\r\n        nearest: function (frame) {\r\n            return frame[0];\r\n        }\r\n    };\r\n    var indexSampler = function (frame) {\r\n        return Math.round(frame.length / 2);\r\n    };\r\n    function dataSample(seriesType) {\r\n        return {\r\n            seriesType: seriesType,\r\n            reset: function (seriesModel, ecModel, api) {\r\n                var data = seriesModel.getData();\r\n                var sampling = seriesModel.get('sampling');\r\n                var coordSys = seriesModel.coordinateSystem;\r\n                var count = data.count();\r\n                if (count > 10 && coordSys.type === 'cartesian2d' && sampling) {\r\n                    var baseAxis = coordSys.getBaseAxis();\r\n                    var valueAxis = coordSys.getOtherAxis(baseAxis);\r\n                    var extent = baseAxis.getExtent();\r\n                    var dpr = api.getDevicePixelRatio();\r\n                    var size = Math.abs(extent[1] - extent[0]) * (dpr || 1);\r\n                    var rate = Math.round(count / size);\r\n                    if (rate > 1) {\r\n                        if (sampling === 'lttb') {\r\n                            seriesModel.setData(data.lttbDownSample(data.mapDimension(valueAxis.dim), 1 / rate));\r\n                        }\r\n                        var sampler = void 0;\r\n                        if (typeof sampling === 'string') {\r\n                            sampler = samplers[sampling];\r\n                        }\r\n                        else if (typeof sampling === 'function') {\r\n                            sampler = sampling;\r\n                        }\r\n                        if (sampler) {\r\n                            seriesModel.setData(data.downSample(data.mapDimension(valueAxis.dim), 1 / rate, sampler, indexSampler));\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n        };\r\n    }\n\n    var defaultOption = {\r\n        show: true,\r\n        zlevel: 0,\r\n        z: 0,\r\n        inverse: false,\r\n        name: '',\r\n        nameLocation: 'end',\r\n        nameRotate: null,\r\n        nameTruncate: {\r\n            maxWidth: null,\r\n            ellipsis: '...',\r\n            placeholder: '.'\r\n        },\r\n        nameTextStyle: {},\r\n        nameGap: 15,\r\n        silent: false,\r\n        triggerEvent: false,\r\n        tooltip: {\r\n            show: false\r\n        },\r\n        axisPointer: {},\r\n        axisLine: {\r\n            show: true,\r\n            onZero: true,\r\n            onZeroAxisIndex: null,\r\n            lineStyle: {\r\n                color: '#6E7079',\r\n                width: 1,\r\n                type: 'solid'\r\n            },\r\n            symbol: ['none', 'none'],\r\n            symbolSize: [10, 15]\r\n        },\r\n        axisTick: {\r\n            show: true,\r\n            inside: false,\r\n            length: 5,\r\n            lineStyle: {\r\n                width: 1\r\n            }\r\n        },\r\n        axisLabel: {\r\n            show: true,\r\n            inside: false,\r\n            rotate: 0,\r\n            showMinLabel: null,\r\n            showMaxLabel: null,\r\n            margin: 8,\r\n            fontSize: 12\r\n        },\r\n        splitLine: {\r\n            show: true,\r\n            lineStyle: {\r\n                color: ['#E0E6F1'],\r\n                width: 1,\r\n                type: 'solid'\r\n            }\r\n        },\r\n        splitArea: {\r\n            show: false,\r\n            areaStyle: {\r\n                color: ['rgba(250,250,250,0.2)', 'rgba(210,219,238,0.2)']\r\n            }\r\n        }\r\n    };\r\n    var categoryAxis = merge({\r\n        boundaryGap: true,\r\n        deduplication: null,\r\n        splitLine: {\r\n            show: false\r\n        },\r\n        axisTick: {\r\n            alignWithLabel: false,\r\n            interval: 'auto'\r\n        },\r\n        axisLabel: {\r\n            interval: 'auto'\r\n        }\r\n    }, defaultOption);\r\n    var valueAxis = merge({\r\n        boundaryGap: [0, 0],\r\n        axisLine: {\r\n            show: 'auto'\r\n        },\r\n        axisTick: {\r\n            show: 'auto'\r\n        },\r\n        splitNumber: 5,\r\n        minorTick: {\r\n            show: false,\r\n            splitNumber: 5,\r\n            length: 3,\r\n            lineStyle: {}\r\n        },\r\n        minorSplitLine: {\r\n            show: false,\r\n            lineStyle: {\r\n                color: '#F4F7FD',\r\n                width: 1\r\n            }\r\n        }\r\n    }, defaultOption);\r\n    var timeAxis = merge({\r\n        scale: true,\r\n        splitNumber: 6,\r\n        axisLabel: {\r\n            showMinLabel: false,\r\n            showMaxLabel: false,\r\n            rich: {\r\n                primary: {\r\n                    fontWeight: 'bold'\r\n                }\r\n            }\r\n        },\r\n        splitLine: {\r\n            show: false\r\n        }\r\n    }, valueAxis);\r\n    var logAxis = defaults({\r\n        scale: true,\r\n        logBase: 10\r\n    }, valueAxis);\r\n    var axisDefault = {\r\n        category: categoryAxis,\r\n        value: valueAxis,\r\n        time: timeAxis,\r\n        log: logAxis\r\n    };\n\n    var OrdinalMeta = (function () {\r\n        function OrdinalMeta(opt) {\r\n            this.categories = opt.categories || [];\r\n            this._needCollect = opt.needCollect;\r\n            this._deduplication = opt.deduplication;\r\n        }\r\n        OrdinalMeta.createByAxisModel = function (axisModel) {\r\n            var option = axisModel.option;\r\n            var data = option.data;\r\n            var categories = data && map(data, getName);\r\n            return new OrdinalMeta({\r\n                categories: categories,\r\n                needCollect: !categories,\r\n                deduplication: option.dedplication !== false\r\n            });\r\n        };\r\n        OrdinalMeta.prototype.getOrdinal = function (category) {\r\n            return this._getOrCreateMap().get(category);\r\n        };\r\n        OrdinalMeta.prototype.parseAndCollect = function (category) {\r\n            var index;\r\n            var needCollect = this._needCollect;\r\n            if (typeof category !== 'string' && !needCollect) {\r\n                return category;\r\n            }\r\n            if (needCollect && !this._deduplication) {\r\n                index = this.categories.length;\r\n                this.categories[index] = category;\r\n                return index;\r\n            }\r\n            var map = this._getOrCreateMap();\r\n            index = map.get(category);\r\n            if (index == null) {\r\n                if (needCollect) {\r\n                    index = this.categories.length;\r\n                    this.categories[index] = category;\r\n                    map.set(category, index);\r\n                }\r\n                else {\r\n                    index = NaN;\r\n                }\r\n            }\r\n            return index;\r\n        };\r\n        OrdinalMeta.prototype._getOrCreateMap = function () {\r\n            return this._map || (this._map = createHashMap(this.categories));\r\n        };\r\n        return OrdinalMeta;\r\n    }());\r\n    function getName(obj) {\r\n        if (isObject(obj) && obj.value != null) {\r\n            return obj.value;\r\n        }\r\n        else {\r\n            return obj + '';\r\n        }\r\n    }\n\n    var AXIS_TYPES = { value: 1, category: 1, time: 1, log: 1 };\n\n    function axisModelCreator(axisName, BaseAxisModelClass, extraDefaultOption) {\r\n        each(AXIS_TYPES, function (v, axisType) {\r\n            var defaultOption = merge(merge({}, axisDefault[axisType], true), extraDefaultOption, true);\r\n            var AxisModel = (function (_super) {\r\n                __extends(AxisModel, _super);\r\n                function AxisModel() {\r\n                    var args = [];\r\n                    for (var _i = 0; _i < arguments.length; _i++) {\r\n                        args[_i] = arguments[_i];\r\n                    }\r\n                    var _this = _super.apply(this, args) || this;\r\n                    _this.type = axisName + 'Axis.' + axisType;\r\n                    return _this;\r\n                }\r\n                AxisModel.prototype.mergeDefaultAndTheme = function (option, ecModel) {\r\n                    var layoutMode = fetchLayoutMode(this);\r\n                    var inputPositionParams = layoutMode\r\n                        ? getLayoutParams(option) : {};\r\n                    var themeModel = ecModel.getTheme();\r\n                    merge(option, themeModel.get(axisType + 'Axis'));\r\n                    merge(option, this.getDefaultOption());\r\n                    option.type = getAxisType(option);\r\n                    if (layoutMode) {\r\n                        mergeLayoutParam(option, inputPositionParams, layoutMode);\r\n                    }\r\n                };\r\n                AxisModel.prototype.optionUpdated = function () {\r\n                    var thisOption = this.option;\r\n                    if (thisOption.type === 'category') {\r\n                        this.__ordinalMeta = OrdinalMeta.createByAxisModel(this);\r\n                    }\r\n                };\r\n                AxisModel.prototype.getCategories = function (rawData) {\r\n                    var option = this.option;\r\n                    if (option.type === 'category') {\r\n                        if (rawData) {\r\n                            return option.data;\r\n                        }\r\n                        return this.__ordinalMeta.categories;\r\n                    }\r\n                };\r\n                AxisModel.prototype.getOrdinalMeta = function () {\r\n                    return this.__ordinalMeta;\r\n                };\r\n                AxisModel.type = axisName + 'Axis.' + axisType;\r\n                AxisModel.defaultOption = defaultOption;\r\n                return AxisModel;\r\n            }(BaseAxisModelClass));\r\n            ComponentModel.registerClass(AxisModel);\r\n        });\r\n        ComponentModel.registerSubTypeDefaulter(axisName + 'Axis', getAxisType);\r\n    }\r\n    function getAxisType(option) {\r\n        return option.type || (option.data ? 'category' : 'value');\r\n    }\n\n    var AxisModelCommonMixin = (function () {\r\n        function AxisModelCommonMixin() {\r\n        }\r\n        AxisModelCommonMixin.prototype.getNeedCrossZero = function () {\r\n            var option = this.option;\r\n            return !option.scale;\r\n        };\r\n        AxisModelCommonMixin.prototype.getCoordSysModel = function () {\r\n            return;\r\n        };\r\n        return AxisModelCommonMixin;\r\n    }());\n\n    var CartesianAxisModel = (function (_super) {\r\n        __extends(CartesianAxisModel, _super);\r\n        function CartesianAxisModel() {\r\n            return _super !== null && _super.apply(this, arguments) || this;\r\n        }\r\n        CartesianAxisModel.prototype.getCoordSysModel = function () {\r\n            return this.getReferringComponents('grid', SINGLE_REFERRING).models[0];\r\n        };\r\n        CartesianAxisModel.type = 'cartesian2dAxis';\r\n        return CartesianAxisModel;\r\n    }(ComponentModel));\r\n    mixin(CartesianAxisModel, AxisModelCommonMixin);\r\n    var extraOption = {\r\n        offset: 0,\r\n        categorySortInfo: []\r\n    };\r\n    axisModelCreator('x', CartesianAxisModel, extraOption);\r\n    axisModelCreator('y', CartesianAxisModel, extraOption);\n\n    var Scale = (function () {\r\n        function Scale(setting) {\r\n            this._setting = setting || {};\r\n            this._extent = [Infinity, -Infinity];\r\n        }\r\n        Scale.prototype.getSetting = function (name) {\r\n            return this._setting[name];\r\n        };\r\n        Scale.prototype.unionExtent = function (other) {\r\n            var extent = this._extent;\r\n            other[0] < extent[0] && (extent[0] = other[0]);\r\n            other[1] > extent[1] && (extent[1] = other[1]);\r\n        };\r\n        Scale.prototype.unionExtentFromData = function (data, dim) {\r\n            this.unionExtent(data.getApproximateExtent(dim));\r\n        };\r\n        Scale.prototype.getExtent = function () {\r\n            return this._extent.slice();\r\n        };\r\n        Scale.prototype.setExtent = function (start, end) {\r\n            var thisExtent = this._extent;\r\n            if (!isNaN(start)) {\r\n                thisExtent[0] = start;\r\n            }\r\n            if (!isNaN(end)) {\r\n                thisExtent[1] = end;\r\n            }\r\n        };\r\n        Scale.prototype.isInExtentRange = function (value) {\r\n            return this._extent[0] <= value && this._extent[1] >= value;\r\n        };\r\n        Scale.prototype.isBlank = function () {\r\n            return this._isBlank;\r\n        };\r\n        Scale.prototype.setBlank = function (isBlank) {\r\n            this._isBlank = isBlank;\r\n        };\r\n        return Scale;\r\n    }());\r\n    enableClassManagement(Scale, {\r\n        registerWhenExtend: true\r\n    });\n\n    var roundNumber = round$1;\r\n    function intervalScaleNiceTicks(extent, splitNumber, minInterval, maxInterval) {\r\n        var result = {};\r\n        var span = extent[1] - extent[0];\r\n        var interval = result.interval = nice(span / splitNumber, true);\r\n        if (minInterval != null && interval < minInterval) {\r\n            interval = result.interval = minInterval;\r\n        }\r\n        if (maxInterval != null && interval > maxInterval) {\r\n            interval = result.interval = maxInterval;\r\n        }\r\n        var precision = result.intervalPrecision = getIntervalPrecision(interval);\r\n        var niceTickExtent = result.niceTickExtent = [\r\n            roundNumber(Math.ceil(extent[0] / interval) * interval, precision),\r\n            roundNumber(Math.floor(extent[1] / interval) * interval, precision)\r\n        ];\r\n        fixExtent(niceTickExtent, extent);\r\n        return result;\r\n    }\r\n    function getIntervalPrecision(interval) {\r\n        return getPrecisionSafe(interval) + 2;\r\n    }\r\n    function clamp(niceTickExtent, idx, extent) {\r\n        niceTickExtent[idx] = Math.max(Math.min(niceTickExtent[idx], extent[1]), extent[0]);\r\n    }\r\n    function fixExtent(niceTickExtent, extent) {\r\n        !isFinite(niceTickExtent[0]) && (niceTickExtent[0] = extent[0]);\r\n        !isFinite(niceTickExtent[1]) && (niceTickExtent[1] = extent[1]);\r\n        clamp(niceTickExtent, 0, extent);\r\n        clamp(niceTickExtent, 1, extent);\r\n        if (niceTickExtent[0] > niceTickExtent[1]) {\r\n            niceTickExtent[0] = niceTickExtent[1];\r\n        }\r\n    }\r\n    function contain$1(val, extent) {\r\n        return val >= extent[0] && val <= extent[1];\r\n    }\r\n    function normalize$1(val, extent) {\r\n        if (extent[1] === extent[0]) {\r\n            return 0.5;\r\n        }\r\n        return (val - extent[0]) / (extent[1] - extent[0]);\r\n    }\r\n    function scale$2(val, extent) {\r\n        return val * (extent[1] - extent[0]) + extent[0];\r\n    }\n\n    var OrdinalScale = (function (_super) {\r\n        __extends(OrdinalScale, _super);\r\n        function OrdinalScale(setting) {\r\n            var _this = _super.call(this, setting) || this;\r\n            _this.type = 'ordinal';\r\n            var ordinalMeta = _this.getSetting('ordinalMeta');\r\n            if (!ordinalMeta) {\r\n                ordinalMeta = new OrdinalMeta({});\r\n            }\r\n            if (isArray(ordinalMeta)) {\r\n                ordinalMeta = new OrdinalMeta({\r\n                    categories: map(ordinalMeta, function (item) { return (isObject(item) ? item.value : item); })\r\n                });\r\n            }\r\n            _this._ordinalMeta = ordinalMeta;\r\n            _this._categorySortInfo = [];\r\n            _this._extent = _this.getSetting('extent') || [0, ordinalMeta.categories.length - 1];\r\n            return _this;\r\n        }\r\n        OrdinalScale.prototype.parse = function (val) {\r\n            return typeof val === 'string'\r\n                ? this._ordinalMeta.getOrdinal(val)\r\n                : Math.round(val);\r\n        };\r\n        OrdinalScale.prototype.contain = function (rank) {\r\n            rank = this.parse(rank);\r\n            return contain$1(rank, this._extent)\r\n                && this._ordinalMeta.categories[rank] != null;\r\n        };\r\n        OrdinalScale.prototype.normalize = function (val) {\r\n            val = this.getCategoryIndex(this.parse(val));\r\n            return normalize$1(val, this._extent);\r\n        };\r\n        OrdinalScale.prototype.scale = function (val) {\r\n            val = this.getCategoryIndex(val);\r\n            return Math.round(scale$2(val, this._extent));\r\n        };\r\n        OrdinalScale.prototype.getTicks = function () {\r\n            var ticks = [];\r\n            var extent = this._extent;\r\n            var rank = extent[0];\r\n            while (rank <= extent[1]) {\r\n                ticks.push({\r\n                    value: this.getCategoryIndex(rank)\r\n                });\r\n                rank++;\r\n            }\r\n            return ticks;\r\n        };\r\n        OrdinalScale.prototype.getMinorTicks = function (splitNumber) {\r\n            return;\r\n        };\r\n        OrdinalScale.prototype.setCategorySortInfo = function (info) {\r\n            this._categorySortInfo = info;\r\n        };\r\n        OrdinalScale.prototype.getCategorySortInfo = function () {\r\n            return this._categorySortInfo;\r\n        };\r\n        OrdinalScale.prototype.getCategoryIndex = function (n) {\r\n            if (this._categorySortInfo.length) {\r\n                return this._categorySortInfo[n].beforeSortIndex;\r\n            }\r\n            else {\r\n                return n;\r\n            }\r\n        };\r\n        OrdinalScale.prototype.getRawIndex = function (displayIndex) {\r\n            if (this._categorySortInfo.length) {\r\n                return this._categorySortInfo[displayIndex].ordinalNumber;\r\n            }\r\n            else {\r\n                return displayIndex;\r\n            }\r\n        };\r\n        OrdinalScale.prototype.getLabel = function (tick) {\r\n            if (!this.isBlank()) {\r\n                var rawIndex = this.getRawIndex(tick.value);\r\n                var cateogry = this._ordinalMeta.categories[rawIndex];\r\n                return cateogry == null ? '' : cateogry + '';\r\n            }\r\n        };\r\n        OrdinalScale.prototype.count = function () {\r\n            return this._extent[1] - this._extent[0] + 1;\r\n        };\r\n        OrdinalScale.prototype.unionExtentFromData = function (data, dim) {\r\n            this.unionExtent(data.getApproximateExtent(dim));\r\n        };\r\n        OrdinalScale.prototype.isInExtentRange = function (value) {\r\n            value = this.getCategoryIndex(value);\r\n            return this._extent[0] <= value && this._extent[1] >= value;\r\n        };\r\n        OrdinalScale.prototype.getOrdinalMeta = function () {\r\n            return this._ordinalMeta;\r\n        };\r\n        OrdinalScale.prototype.niceTicks = function () { };\r\n        OrdinalScale.prototype.niceExtent = function () { };\r\n        OrdinalScale.type = 'ordinal';\r\n        return OrdinalScale;\r\n    }(Scale));\r\n    Scale.registerClass(OrdinalScale);\n\n    var roundNumber$1 = round$1;\r\n    var IntervalScale = (function (_super) {\r\n        __extends(IntervalScale, _super);\r\n        function IntervalScale() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = 'interval';\r\n            _this._interval = 0;\r\n            _this._intervalPrecision = 2;\r\n            return _this;\r\n        }\r\n        IntervalScale.prototype.parse = function (val) {\r\n            return val;\r\n        };\r\n        IntervalScale.prototype.contain = function (val) {\r\n            return contain$1(val, this._extent);\r\n        };\r\n        IntervalScale.prototype.normalize = function (val) {\r\n            return normalize$1(val, this._extent);\r\n        };\r\n        IntervalScale.prototype.scale = function (val) {\r\n            return scale$2(val, this._extent);\r\n        };\r\n        IntervalScale.prototype.setExtent = function (start, end) {\r\n            var thisExtent = this._extent;\r\n            if (!isNaN(start)) {\r\n                thisExtent[0] = parseFloat(start);\r\n            }\r\n            if (!isNaN(end)) {\r\n                thisExtent[1] = parseFloat(end);\r\n            }\r\n        };\r\n        IntervalScale.prototype.unionExtent = function (other) {\r\n            var extent = this._extent;\r\n            other[0] < extent[0] && (extent[0] = other[0]);\r\n            other[1] > extent[1] && (extent[1] = other[1]);\r\n            this.setExtent(extent[0], extent[1]);\r\n        };\r\n        IntervalScale.prototype.getInterval = function () {\r\n            return this._interval;\r\n        };\r\n        IntervalScale.prototype.setInterval = function (interval) {\r\n            this._interval = interval;\r\n            this._niceExtent = this._extent.slice();\r\n            this._intervalPrecision = getIntervalPrecision(interval);\r\n        };\r\n        IntervalScale.prototype.getTicks = function (expandToNicedExtent) {\r\n            var interval = this._interval;\r\n            var extent = this._extent;\r\n            var niceTickExtent = this._niceExtent;\r\n            var intervalPrecision = this._intervalPrecision;\r\n            var ticks = [];\r\n            if (!interval) {\r\n                return ticks;\r\n            }\r\n            var safeLimit = 10000;\r\n            if (extent[0] < niceTickExtent[0]) {\r\n                if (expandToNicedExtent) {\r\n                    ticks.push({\r\n                        value: roundNumber$1(niceTickExtent[0] - interval, intervalPrecision)\r\n                    });\r\n                }\r\n                else {\r\n                    ticks.push({\r\n                        value: extent[0]\r\n                    });\r\n                }\r\n            }\r\n            var tick = niceTickExtent[0];\r\n            while (tick <= niceTickExtent[1]) {\r\n                ticks.push({\r\n                    value: tick\r\n                });\r\n                tick = roundNumber$1(tick + interval, intervalPrecision);\r\n                if (tick === ticks[ticks.length - 1].value) {\r\n                    break;\r\n                }\r\n                if (ticks.length > safeLimit) {\r\n                    return [];\r\n                }\r\n            }\r\n            var lastNiceTick = ticks.length ? ticks[ticks.length - 1].value : niceTickExtent[1];\r\n            if (extent[1] > lastNiceTick) {\r\n                if (expandToNicedExtent) {\r\n                    ticks.push({\r\n                        value: roundNumber$1(lastNiceTick + interval, intervalPrecision)\r\n                    });\r\n                }\r\n                else {\r\n                    ticks.push({\r\n                        value: extent[1]\r\n                    });\r\n                }\r\n            }\r\n            return ticks;\r\n        };\r\n        IntervalScale.prototype.getMinorTicks = function (splitNumber) {\r\n            var ticks = this.getTicks(true);\r\n            var minorTicks = [];\r\n            var extent = this.getExtent();\r\n            for (var i = 1; i < ticks.length; i++) {\r\n                var nextTick = ticks[i];\r\n                var prevTick = ticks[i - 1];\r\n                var count = 0;\r\n                var minorTicksGroup = [];\r\n                var interval = nextTick.value - prevTick.value;\r\n                var minorInterval = interval / splitNumber;\r\n                while (count < splitNumber - 1) {\r\n                    var minorTick = roundNumber$1(prevTick.value + (count + 1) * minorInterval);\r\n                    if (minorTick > extent[0] && minorTick < extent[1]) {\r\n                        minorTicksGroup.push(minorTick);\r\n                    }\r\n                    count++;\r\n                }\r\n                minorTicks.push(minorTicksGroup);\r\n            }\r\n            return minorTicks;\r\n        };\r\n        IntervalScale.prototype.getLabel = function (data, opt) {\r\n            if (data == null) {\r\n                return '';\r\n            }\r\n            var precision = opt && opt.precision;\r\n            if (precision == null) {\r\n                precision = getPrecisionSafe(data.value) || 0;\r\n            }\r\n            else if (precision === 'auto') {\r\n                precision = this._intervalPrecision;\r\n            }\r\n            var dataNum = roundNumber$1(data.value, precision, true);\r\n            return addCommas(dataNum);\r\n        };\r\n        IntervalScale.prototype.niceTicks = function (splitNumber, minInterval, maxInterval) {\r\n            splitNumber = splitNumber || 5;\r\n            var extent = this._extent;\r\n            var span = extent[1] - extent[0];\r\n            if (!isFinite(span)) {\r\n                return;\r\n            }\r\n            if (span < 0) {\r\n                span = -span;\r\n                extent.reverse();\r\n            }\r\n            var result = intervalScaleNiceTicks(extent, splitNumber, minInterval, maxInterval);\r\n            this._intervalPrecision = result.intervalPrecision;\r\n            this._interval = result.interval;\r\n            this._niceExtent = result.niceTickExtent;\r\n        };\r\n        IntervalScale.prototype.niceExtent = function (opt) {\r\n            var extent = this._extent;\r\n            if (extent[0] === extent[1]) {\r\n                if (extent[0] !== 0) {\r\n                    var expandSize = extent[0];\r\n                    if (!opt.fixMax) {\r\n                        extent[1] += expandSize / 2;\r\n                        extent[0] -= expandSize / 2;\r\n                    }\r\n                    else {\r\n                        extent[0] -= expandSize / 2;\r\n                    }\r\n                }\r\n                else {\r\n                    extent[1] = 1;\r\n                }\r\n            }\r\n            var span = extent[1] - extent[0];\r\n            if (!isFinite(span)) {\r\n                extent[0] = 0;\r\n                extent[1] = 1;\r\n            }\r\n            this.niceTicks(opt.splitNumber, opt.minInterval, opt.maxInterval);\r\n            var interval = this._interval;\r\n            if (!opt.fixMin) {\r\n                extent[0] = roundNumber$1(Math.floor(extent[0] / interval) * interval);\r\n            }\r\n            if (!opt.fixMax) {\r\n                extent[1] = roundNumber$1(Math.ceil(extent[1] / interval) * interval);\r\n            }\r\n        };\r\n        IntervalScale.type = 'interval';\r\n        return IntervalScale;\r\n    }(Scale));\r\n    Scale.registerClass(IntervalScale);\n\n    var STACK_PREFIX = '__ec_stack_';\r\n    var LARGE_BAR_MIN_WIDTH = 0.5;\r\n    var LargeArr = typeof Float32Array !== 'undefined' ? Float32Array : Array;\r\n    function getSeriesStackId(seriesModel) {\r\n        return seriesModel.get('stack') || STACK_PREFIX + seriesModel.seriesIndex;\r\n    }\r\n    function getAxisKey(axis) {\r\n        return axis.dim + axis.index;\r\n    }\r\n    function prepareLayoutBarSeries(seriesType, ecModel) {\r\n        var seriesModels = [];\r\n        ecModel.eachSeriesByType(seriesType, function (seriesModel) {\r\n            if (isOnCartesian(seriesModel) && !isInLargeMode(seriesModel)) {\r\n                seriesModels.push(seriesModel);\r\n            }\r\n        });\r\n        return seriesModels;\r\n    }\r\n    function getValueAxesMinGaps(barSeries) {\r\n        var axisValues = {};\r\n        each(barSeries, function (seriesModel) {\r\n            var cartesian = seriesModel.coordinateSystem;\r\n            var baseAxis = cartesian.getBaseAxis();\r\n            if (baseAxis.type !== 'time' && baseAxis.type !== 'value') {\r\n                return;\r\n            }\r\n            var data = seriesModel.getData();\r\n            var key = baseAxis.dim + '_' + baseAxis.index;\r\n            var dim = data.mapDimension(baseAxis.dim);\r\n            for (var i = 0, cnt = data.count(); i < cnt; ++i) {\r\n                var value = data.get(dim, i);\r\n                if (!axisValues[key]) {\r\n                    axisValues[key] = [value];\r\n                }\r\n                else {\r\n                    axisValues[key].push(value);\r\n                }\r\n            }\r\n        });\r\n        var axisMinGaps = {};\r\n        for (var key in axisValues) {\r\n            if (axisValues.hasOwnProperty(key)) {\r\n                var valuesInAxis = axisValues[key];\r\n                if (valuesInAxis) {\r\n                    valuesInAxis.sort(function (a, b) {\r\n                        return a - b;\r\n                    });\r\n                    var min = null;\r\n                    for (var j = 1; j < valuesInAxis.length; ++j) {\r\n                        var delta = valuesInAxis[j] - valuesInAxis[j - 1];\r\n                        if (delta > 0) {\r\n                            min = min === null ? delta : Math.min(min, delta);\r\n                        }\r\n                    }\r\n                    axisMinGaps[key] = min;\r\n                }\r\n            }\r\n        }\r\n        return axisMinGaps;\r\n    }\r\n    function makeColumnLayout(barSeries) {\r\n        var axisMinGaps = getValueAxesMinGaps(barSeries);\r\n        var seriesInfoList = [];\r\n        each(barSeries, function (seriesModel) {\r\n            var cartesian = seriesModel.coordinateSystem;\r\n            var baseAxis = cartesian.getBaseAxis();\r\n            var axisExtent = baseAxis.getExtent();\r\n            var bandWidth;\r\n            if (baseAxis.type === 'category') {\r\n                bandWidth = baseAxis.getBandWidth();\r\n            }\r\n            else if (baseAxis.type === 'value' || baseAxis.type === 'time') {\r\n                var key = baseAxis.dim + '_' + baseAxis.index;\r\n                var minGap = axisMinGaps[key];\r\n                var extentSpan = Math.abs(axisExtent[1] - axisExtent[0]);\r\n                var scale = baseAxis.scale.getExtent();\r\n                var scaleSpan = Math.abs(scale[1] - scale[0]);\r\n                bandWidth = minGap\r\n                    ? extentSpan / scaleSpan * minGap\r\n                    : extentSpan;\r\n            }\r\n            else {\r\n                var data = seriesModel.getData();\r\n                bandWidth = Math.abs(axisExtent[1] - axisExtent[0]) / data.count();\r\n            }\r\n            var barWidth = parsePercent$2(seriesModel.get('barWidth'), bandWidth);\r\n            var barMaxWidth = parsePercent$2(seriesModel.get('barMaxWidth'), bandWidth);\r\n            var barMinWidth = parsePercent$2(seriesModel.get('barMinWidth') || 1, bandWidth);\r\n            var barGap = seriesModel.get('barGap');\r\n            var barCategoryGap = seriesModel.get('barCategoryGap');\r\n            seriesInfoList.push({\r\n                bandWidth: bandWidth,\r\n                barWidth: barWidth,\r\n                barMaxWidth: barMaxWidth,\r\n                barMinWidth: barMinWidth,\r\n                barGap: barGap,\r\n                barCategoryGap: barCategoryGap,\r\n                axisKey: getAxisKey(baseAxis),\r\n                stackId: getSeriesStackId(seriesModel)\r\n            });\r\n        });\r\n        return doCalBarWidthAndOffset(seriesInfoList);\r\n    }\r\n    function doCalBarWidthAndOffset(seriesInfoList) {\r\n        var columnsMap = {};\r\n        each(seriesInfoList, function (seriesInfo, idx) {\r\n            var axisKey = seriesInfo.axisKey;\r\n            var bandWidth = seriesInfo.bandWidth;\r\n            var columnsOnAxis = columnsMap[axisKey] || {\r\n                bandWidth: bandWidth,\r\n                remainedWidth: bandWidth,\r\n                autoWidthCount: 0,\r\n                categoryGap: null,\r\n                gap: '20%',\r\n                stacks: {}\r\n            };\r\n            var stacks = columnsOnAxis.stacks;\r\n            columnsMap[axisKey] = columnsOnAxis;\r\n            var stackId = seriesInfo.stackId;\r\n            if (!stacks[stackId]) {\r\n                columnsOnAxis.autoWidthCount++;\r\n            }\r\n            stacks[stackId] = stacks[stackId] || {\r\n                width: 0,\r\n                maxWidth: 0\r\n            };\r\n            var barWidth = seriesInfo.barWidth;\r\n            if (barWidth && !stacks[stackId].width) {\r\n                stacks[stackId].width = barWidth;\r\n                barWidth = Math.min(columnsOnAxis.remainedWidth, barWidth);\r\n                columnsOnAxis.remainedWidth -= barWidth;\r\n            }\r\n            var barMaxWidth = seriesInfo.barMaxWidth;\r\n            barMaxWidth && (stacks[stackId].maxWidth = barMaxWidth);\r\n            var barMinWidth = seriesInfo.barMinWidth;\r\n            barMinWidth && (stacks[stackId].minWidth = barMinWidth);\r\n            var barGap = seriesInfo.barGap;\r\n            (barGap != null) && (columnsOnAxis.gap = barGap);\r\n            var barCategoryGap = seriesInfo.barCategoryGap;\r\n            (barCategoryGap != null) && (columnsOnAxis.categoryGap = barCategoryGap);\r\n        });\r\n        var result = {};\r\n        each(columnsMap, function (columnsOnAxis, coordSysName) {\r\n            result[coordSysName] = {};\r\n            var stacks = columnsOnAxis.stacks;\r\n            var bandWidth = columnsOnAxis.bandWidth;\r\n            var categoryGapPercent = columnsOnAxis.categoryGap;\r\n            if (categoryGapPercent == null) {\r\n                var columnCount = keys(stacks).length;\r\n                categoryGapPercent = Math.max((35 - columnCount * 4), 15) + '%';\r\n            }\r\n            var categoryGap = parsePercent$2(categoryGapPercent, bandWidth);\r\n            var barGapPercent = parsePercent$2(columnsOnAxis.gap, 1);\r\n            var remainedWidth = columnsOnAxis.remainedWidth;\r\n            var autoWidthCount = columnsOnAxis.autoWidthCount;\r\n            var autoWidth = (remainedWidth - categoryGap)\r\n                / (autoWidthCount + (autoWidthCount - 1) * barGapPercent);\r\n            autoWidth = Math.max(autoWidth, 0);\r\n            each(stacks, function (column) {\r\n                var maxWidth = column.maxWidth;\r\n                var minWidth = column.minWidth;\r\n                if (!column.width) {\r\n                    var finalWidth = autoWidth;\r\n                    if (maxWidth && maxWidth < finalWidth) {\r\n                        finalWidth = Math.min(maxWidth, remainedWidth);\r\n                    }\r\n                    if (minWidth && minWidth > finalWidth) {\r\n                        finalWidth = minWidth;\r\n                    }\r\n                    if (finalWidth !== autoWidth) {\r\n                        column.width = finalWidth;\r\n                        remainedWidth -= finalWidth + barGapPercent * finalWidth;\r\n                        autoWidthCount--;\r\n                    }\r\n                }\r\n                else {\r\n                    var finalWidth = column.width;\r\n                    if (maxWidth) {\r\n                        finalWidth = Math.min(finalWidth, maxWidth);\r\n                    }\r\n                    if (minWidth) {\r\n                        finalWidth = Math.max(finalWidth, minWidth);\r\n                    }\r\n                    column.width = finalWidth;\r\n                    remainedWidth -= finalWidth + barGapPercent * finalWidth;\r\n                    autoWidthCount--;\r\n                }\r\n            });\r\n            autoWidth = (remainedWidth - categoryGap)\r\n                / (autoWidthCount + (autoWidthCount - 1) * barGapPercent);\r\n            autoWidth = Math.max(autoWidth, 0);\r\n            var widthSum = 0;\r\n            var lastColumn;\r\n            each(stacks, function (column, idx) {\r\n                if (!column.width) {\r\n                    column.width = autoWidth;\r\n                }\r\n                lastColumn = column;\r\n                widthSum += column.width * (1 + barGapPercent);\r\n            });\r\n            if (lastColumn) {\r\n                widthSum -= lastColumn.width * barGapPercent;\r\n            }\r\n            var offset = -widthSum / 2;\r\n            each(stacks, function (column, stackId) {\r\n                result[coordSysName][stackId] = result[coordSysName][stackId] || {\r\n                    bandWidth: bandWidth,\r\n                    offset: offset,\r\n                    width: column.width\r\n                };\r\n                offset += column.width * (1 + barGapPercent);\r\n            });\r\n        });\r\n        return result;\r\n    }\r\n    function retrieveColumnLayout(barWidthAndOffset, axis, seriesModel) {\r\n        if (barWidthAndOffset && axis) {\r\n            var result = barWidthAndOffset[getAxisKey(axis)];\r\n            if (result != null && seriesModel != null) {\r\n                return result[getSeriesStackId(seriesModel)];\r\n            }\r\n            return result;\r\n        }\r\n    }\r\n    function layout(seriesType, ecModel) {\r\n        var seriesModels = prepareLayoutBarSeries(seriesType, ecModel);\r\n        var barWidthAndOffset = makeColumnLayout(seriesModels);\r\n        var lastStackCoords = {};\r\n        each(seriesModels, function (seriesModel) {\r\n            var data = seriesModel.getData();\r\n            var cartesian = seriesModel.coordinateSystem;\r\n            var baseAxis = cartesian.getBaseAxis();\r\n            var stackId = getSeriesStackId(seriesModel);\r\n            var columnLayoutInfo = barWidthAndOffset[getAxisKey(baseAxis)][stackId];\r\n            var columnOffset = columnLayoutInfo.offset;\r\n            var columnWidth = columnLayoutInfo.width;\r\n            var valueAxis = cartesian.getOtherAxis(baseAxis);\r\n            var barMinHeight = seriesModel.get('barMinHeight') || 0;\r\n            lastStackCoords[stackId] = lastStackCoords[stackId] || [];\r\n            data.setLayout({\r\n                bandWidth: columnLayoutInfo.bandWidth,\r\n                offset: columnOffset,\r\n                size: columnWidth\r\n            });\r\n            var valueDim = data.mapDimension(valueAxis.dim);\r\n            var baseDim = data.mapDimension(baseAxis.dim);\r\n            var stacked = isDimensionStacked(data, valueDim);\r\n            var isValueAxisH = valueAxis.isHorizontal();\r\n            var valueAxisStart = getValueAxisStart(baseAxis, valueAxis);\r\n            for (var idx = 0, len = data.count(); idx < len; idx++) {\r\n                var value = data.get(valueDim, idx);\r\n                var baseValue = data.get(baseDim, idx);\r\n                var sign = value >= 0 ? 'p' : 'n';\r\n                var baseCoord = valueAxisStart;\r\n                if (stacked) {\r\n                    if (!lastStackCoords[stackId][baseValue]) {\r\n                        lastStackCoords[stackId][baseValue] = {\r\n                            p: valueAxisStart,\r\n                            n: valueAxisStart\r\n                        };\r\n                    }\r\n                    baseCoord = lastStackCoords[stackId][baseValue][sign];\r\n                }\r\n                var x = void 0;\r\n                var y = void 0;\r\n                var width = void 0;\r\n                var height = void 0;\r\n                if (isValueAxisH) {\r\n                    var coord = cartesian.dataToPoint([value, baseValue]);\r\n                    x = baseCoord;\r\n                    y = coord[1] + columnOffset;\r\n                    width = coord[0] - valueAxisStart;\r\n                    height = columnWidth;\r\n                    if (Math.abs(width) < barMinHeight) {\r\n                        width = (width < 0 ? -1 : 1) * barMinHeight;\r\n                    }\r\n                    if (!isNaN(width)) {\r\n                        stacked && (lastStackCoords[stackId][baseValue][sign] += width);\r\n                    }\r\n                }\r\n                else {\r\n                    var coord = cartesian.dataToPoint([baseValue, value]);\r\n                    x = coord[0] + columnOffset;\r\n                    y = baseCoord;\r\n                    width = columnWidth;\r\n                    height = coord[1] - valueAxisStart;\r\n                    if (Math.abs(height) < barMinHeight) {\r\n                        height = (height <= 0 ? -1 : 1) * barMinHeight;\r\n                    }\r\n                    if (!isNaN(height)) {\r\n                        stacked && (lastStackCoords[stackId][baseValue][sign] += height);\r\n                    }\r\n                }\r\n                data.setItemLayout(idx, {\r\n                    x: x,\r\n                    y: y,\r\n                    width: width,\r\n                    height: height\r\n                });\r\n            }\r\n        });\r\n    }\r\n    var largeLayout = {\r\n        seriesType: 'bar',\r\n        plan: createRenderPlanner(),\r\n        reset: function (seriesModel) {\r\n            if (!isOnCartesian(seriesModel) || !isInLargeMode(seriesModel)) {\r\n                return;\r\n            }\r\n            var data = seriesModel.getData();\r\n            var cartesian = seriesModel.coordinateSystem;\r\n            var coordLayout = cartesian.master.getRect();\r\n            var baseAxis = cartesian.getBaseAxis();\r\n            var valueAxis = cartesian.getOtherAxis(baseAxis);\r\n            var valueDim = data.mapDimension(valueAxis.dim);\r\n            var baseDim = data.mapDimension(baseAxis.dim);\r\n            var valueAxisHorizontal = valueAxis.isHorizontal();\r\n            var valueDimIdx = valueAxisHorizontal ? 0 : 1;\r\n            var barWidth = retrieveColumnLayout(makeColumnLayout([seriesModel]), baseAxis, seriesModel).width;\r\n            if (!(barWidth > LARGE_BAR_MIN_WIDTH)) {\r\n                barWidth = LARGE_BAR_MIN_WIDTH;\r\n            }\r\n            return {\r\n                progress: function (params, data) {\r\n                    var count = params.count;\r\n                    var largePoints = new LargeArr(count * 2);\r\n                    var largeBackgroundPoints = new LargeArr(count * 2);\r\n                    var largeDataIndices = new LargeArr(count);\r\n                    var dataIndex;\r\n                    var coord = [];\r\n                    var valuePair = [];\r\n                    var pointsOffset = 0;\r\n                    var idxOffset = 0;\r\n                    while ((dataIndex = params.next()) != null) {\r\n                        valuePair[valueDimIdx] = data.get(valueDim, dataIndex);\r\n                        valuePair[1 - valueDimIdx] = data.get(baseDim, dataIndex);\r\n                        coord = cartesian.dataToPoint(valuePair, null, coord);\r\n                        largeBackgroundPoints[pointsOffset] =\r\n                            valueAxisHorizontal ? coordLayout.x + coordLayout.width : coord[0];\r\n                        largePoints[pointsOffset++] = coord[0];\r\n                        largeBackgroundPoints[pointsOffset] =\r\n                            valueAxisHorizontal ? coord[1] : coordLayout.y + coordLayout.height;\r\n                        largePoints[pointsOffset++] = coord[1];\r\n                        largeDataIndices[idxOffset++] = dataIndex;\r\n                    }\r\n                    data.setLayout({\r\n                        largePoints: largePoints,\r\n                        largeDataIndices: largeDataIndices,\r\n                        largeBackgroundPoints: largeBackgroundPoints,\r\n                        barWidth: barWidth,\r\n                        valueAxisStart: getValueAxisStart(baseAxis, valueAxis),\r\n                        backgroundStart: valueAxisHorizontal ? coordLayout.x : coordLayout.y,\r\n                        valueAxisHorizontal: valueAxisHorizontal\r\n                    });\r\n                }\r\n            };\r\n        }\r\n    };\r\n    function isOnCartesian(seriesModel) {\r\n        return seriesModel.coordinateSystem && seriesModel.coordinateSystem.type === 'cartesian2d';\r\n    }\r\n    function isInLargeMode(seriesModel) {\r\n        return seriesModel.pipelineContext && seriesModel.pipelineContext.large;\r\n    }\r\n    function getValueAxisStart(baseAxis, valueAxis, stacked) {\r\n        return valueAxis.toGlobalCoord(valueAxis.dataToCoord(valueAxis.type === 'log' ? 1 : 0));\r\n    }\n\n    var bisect = function (a, x, lo, hi) {\r\n        while (lo < hi) {\r\n            var mid = lo + hi >>> 1;\r\n            if (a[mid][1] < x) {\r\n                lo = mid + 1;\r\n            }\r\n            else {\r\n                hi = mid;\r\n            }\r\n        }\r\n        return lo;\r\n    };\r\n    var TimeScale = (function (_super) {\r\n        __extends(TimeScale, _super);\r\n        function TimeScale(settings) {\r\n            var _this = _super.call(this, settings) || this;\r\n            _this.type = 'time';\r\n            return _this;\r\n        }\r\n        TimeScale.prototype.getLabel = function (tick) {\r\n            var useUTC = this.getSetting('useUTC');\r\n            return format(tick.value, fullLeveledFormatter[getDefaultFormatPrecisionOfInterval(getPrimaryTimeUnit(this._minLevelUnit))] || fullLeveledFormatter.second, useUTC, this.getSetting('locale'));\r\n        };\r\n        TimeScale.prototype.getFormattedLabel = function (tick, idx, labelFormatter) {\r\n            var isUTC = this.getSetting('useUTC');\r\n            var lang = this.getSetting('locale');\r\n            return leveledFormat(tick, idx, labelFormatter, lang, isUTC);\r\n        };\r\n        TimeScale.prototype.getTicks = function (expandToNicedExtent) {\r\n            var interval = this._interval;\r\n            var extent = this._extent;\r\n            var ticks = [];\r\n            if (!interval) {\r\n                return ticks;\r\n            }\r\n            ticks.push({\r\n                value: extent[0],\r\n                level: 0\r\n            });\r\n            var useUTC = this.getSetting('useUTC');\r\n            var innerTicks = getIntervalTicks(this._minLevelUnit, this._approxInterval, useUTC, extent);\r\n            ticks = ticks.concat(innerTicks);\r\n            ticks.push({\r\n                value: extent[1],\r\n                level: 0\r\n            });\r\n            return ticks;\r\n        };\r\n        TimeScale.prototype.niceExtent = function (opt) {\r\n            var extent = this._extent;\r\n            if (extent[0] === extent[1]) {\r\n                extent[0] -= ONE_DAY;\r\n                extent[1] += ONE_DAY;\r\n            }\r\n            if (extent[1] === -Infinity && extent[0] === Infinity) {\r\n                var d = new Date();\r\n                extent[1] = +new Date(d.getFullYear(), d.getMonth(), d.getDate());\r\n                extent[0] = extent[1] - ONE_DAY;\r\n            }\r\n            this.niceTicks(opt.splitNumber, opt.minInterval, opt.maxInterval);\r\n        };\r\n        TimeScale.prototype.niceTicks = function (approxTickNum, minInterval, maxInterval) {\r\n            approxTickNum = approxTickNum || 10;\r\n            var extent = this._extent;\r\n            var span = extent[1] - extent[0];\r\n            this._approxInterval = span / approxTickNum;\r\n            if (minInterval != null && this._approxInterval < minInterval) {\r\n                this._approxInterval = minInterval;\r\n            }\r\n            if (maxInterval != null && this._approxInterval > maxInterval) {\r\n                this._approxInterval = maxInterval;\r\n            }\r\n            var scaleIntervalsLen = scaleIntervals.length;\r\n            var idx = Math.min(bisect(scaleIntervals, this._approxInterval, 0, scaleIntervalsLen), scaleIntervalsLen - 1);\r\n            this._interval = scaleIntervals[idx][1];\r\n            this._minLevelUnit = scaleIntervals[Math.max(idx - 1, 0)][0];\r\n        };\r\n        TimeScale.prototype.parse = function (val) {\r\n            return typeof val === 'number' ? val : +parseDate(val);\r\n        };\r\n        TimeScale.prototype.contain = function (val) {\r\n            return contain$1(this.parse(val), this._extent);\r\n        };\r\n        TimeScale.prototype.normalize = function (val) {\r\n            return normalize$1(this.parse(val), this._extent);\r\n        };\r\n        TimeScale.prototype.scale = function (val) {\r\n            return scale$2(val, this._extent);\r\n        };\r\n        TimeScale.type = 'time';\r\n        return TimeScale;\r\n    }(IntervalScale));\r\n    var scaleIntervals = [\r\n        ['second', ONE_SECOND],\r\n        ['minute', ONE_MINUTE],\r\n        ['hour', ONE_HOUR],\r\n        ['quarter-day', ONE_HOUR * 6],\r\n        ['half-day', ONE_HOUR * 12],\r\n        ['day', ONE_DAY * 1.2],\r\n        ['half-week', ONE_DAY * 3.5],\r\n        ['week', ONE_DAY * 7],\r\n        ['month', ONE_DAY * 31],\r\n        ['quarter', ONE_DAY * 95],\r\n        ['half-year', ONE_YEAR / 2],\r\n        ['year', ONE_YEAR]\r\n    ];\r\n    function isUnitValueSame(unit, valueA, valueB, isUTC) {\r\n        var dateA = parseDate(valueA);\r\n        var dateB = parseDate(valueB);\r\n        var isSame = function (unit) {\r\n            return getUnitValue(dateA, unit, isUTC)\r\n                === getUnitValue(dateB, unit, isUTC);\r\n        };\r\n        var isSameYear = function () { return isSame('year'); };\r\n        var isSameMonth = function () { return isSameYear() && isSame('month'); };\r\n        var isSameDay = function () { return isSameMonth() && isSame('day'); };\r\n        var isSameHour = function () { return isSameDay() && isSame('hour'); };\r\n        var isSameMinute = function () { return isSameHour() && isSame('minute'); };\r\n        var isSameSecond = function () { return isSameMinute() && isSame('second'); };\r\n        var isSameMilliSecond = function () { return isSameSecond() && isSame('millisecond'); };\r\n        switch (unit) {\r\n            case 'year':\r\n                return isSameYear();\r\n            case 'month':\r\n                return isSameMonth();\r\n            case 'day':\r\n                return isSameDay();\r\n            case 'hour':\r\n                return isSameHour();\r\n            case 'minute':\r\n                return isSameMinute();\r\n            case 'second':\r\n                return isSameSecond();\r\n            case 'millisecond':\r\n                return isSameMilliSecond();\r\n        }\r\n    }\r\n    function getDateInterval(approxInterval, daysInMonth) {\r\n        approxInterval /= ONE_DAY;\r\n        return approxInterval > 16 ? 16\r\n            : approxInterval > 7.5 ? 7\r\n                : approxInterval > 3.5 ? 4\r\n                    : approxInterval > 1.5 ? 2 : 1;\r\n    }\r\n    function getMonthInterval(approxInterval) {\r\n        var APPROX_ONE_MONTH = 30 * ONE_DAY;\r\n        approxInterval /= APPROX_ONE_MONTH;\r\n        return approxInterval > 6 ? 6\r\n            : approxInterval > 3 ? 3\r\n                : approxInterval > 2 ? 2 : 1;\r\n    }\r\n    function getHourInterval(approxInterval) {\r\n        approxInterval /= ONE_HOUR;\r\n        return approxInterval > 12 ? 12\r\n            : approxInterval > 6 ? 6\r\n                : approxInterval > 3.5 ? 4\r\n                    : approxInterval > 2 ? 2 : 1;\r\n    }\r\n    function getMinutesAndSecondsInterval(approxInterval, isMinutes) {\r\n        approxInterval /= isMinutes ? ONE_MINUTE : ONE_SECOND;\r\n        return approxInterval > 30 ? 30\r\n            : approxInterval > 20 ? 20\r\n                : approxInterval > 15 ? 15\r\n                    : approxInterval > 10 ? 10\r\n                        : approxInterval > 5 ? 5\r\n                            : approxInterval > 2 ? 2 : 1;\r\n    }\r\n    function getMillisecondsInterval(approxInterval) {\r\n        return nice(approxInterval, true);\r\n    }\r\n    function getFirstTimestampOfUnit(date, unitName, isUTC) {\r\n        var outDate = new Date(date);\r\n        switch (getPrimaryTimeUnit(unitName)) {\r\n            case 'year':\r\n            case 'month':\r\n                outDate[monthSetterName(isUTC)](0);\r\n            case 'day':\r\n                outDate[dateSetterName(isUTC)](1);\r\n            case 'hour':\r\n                outDate[hoursSetterName(isUTC)](0);\r\n            case 'minute':\r\n                outDate[minutesSetterName(isUTC)](0);\r\n            case 'second':\r\n                outDate[secondsSetterName(isUTC)](0);\r\n                outDate[millisecondsSetterName(isUTC)](0);\r\n        }\r\n        return outDate.getTime();\r\n    }\r\n    function getIntervalTicks(bottomUnitName, approxInterval, isUTC, extent) {\r\n        var safeLimit = 10000;\r\n        var unitNames = timeUnits;\r\n        var iter = 0;\r\n        function addTicksInSpan(interval, minTimestamp, maxTimestamp, getMethodName, setMethodName, isDate, out) {\r\n            var date = new Date(minTimestamp);\r\n            var dateTime = minTimestamp;\r\n            var d = date[getMethodName]();\r\n            while (dateTime < maxTimestamp && dateTime <= extent[1]) {\r\n                out.push({\r\n                    value: dateTime\r\n                });\r\n                d += interval;\r\n                date[setMethodName](d);\r\n                dateTime = date.getTime();\r\n            }\r\n            out.push({\r\n                value: dateTime,\r\n                notAdd: true\r\n            });\r\n        }\r\n        function addLevelTicks(unitName, lastLevelTicks, levelTicks) {\r\n            var newAddedTicks = [];\r\n            var isFirstLevel = !lastLevelTicks.length;\r\n            if (isUnitValueSame(getPrimaryTimeUnit(unitName), extent[0], extent[1], isUTC)) {\r\n                return;\r\n            }\r\n            if (isFirstLevel) {\r\n                lastLevelTicks = [{\r\n                        value: getFirstTimestampOfUnit(new Date(extent[0]), unitName, isUTC)\r\n                    }, {\r\n                        value: extent[1]\r\n                    }];\r\n            }\r\n            for (var i = 0; i < lastLevelTicks.length - 1; i++) {\r\n                var startTick = lastLevelTicks[i].value;\r\n                var endTick = lastLevelTicks[i + 1].value;\r\n                if (startTick === endTick) {\r\n                    continue;\r\n                }\r\n                var interval = void 0;\r\n                var getterName = void 0;\r\n                var setterName = void 0;\r\n                var isDate = false;\r\n                switch (unitName) {\r\n                    case 'year':\r\n                        interval = Math.max(1, Math.round(approxInterval / ONE_DAY / 365));\r\n                        getterName = fullYearGetterName(isUTC);\r\n                        setterName = fullYearSetterName(isUTC);\r\n                        break;\r\n                    case 'half-year':\r\n                    case 'quarter':\r\n                    case 'month':\r\n                        interval = getMonthInterval(approxInterval);\r\n                        getterName = monthGetterName(isUTC);\r\n                        setterName = monthSetterName(isUTC);\r\n                        break;\r\n                    case 'week':\r\n                    case 'half-week':\r\n                    case 'day':\r\n                        interval = getDateInterval(approxInterval);\r\n                        getterName = dateGetterName(isUTC);\r\n                        setterName = dateSetterName(isUTC);\r\n                        isDate = true;\r\n                        break;\r\n                    case 'half-day':\r\n                    case 'quarter-day':\r\n                    case 'hour':\r\n                        interval = getHourInterval(approxInterval);\r\n                        getterName = hoursGetterName(isUTC);\r\n                        setterName = hoursSetterName(isUTC);\r\n                        break;\r\n                    case 'minute':\r\n                        interval = getMinutesAndSecondsInterval(approxInterval, true);\r\n                        getterName = minutesGetterName(isUTC);\r\n                        setterName = minutesSetterName(isUTC);\r\n                        break;\r\n                    case 'second':\r\n                        interval = getMinutesAndSecondsInterval(approxInterval, false);\r\n                        getterName = secondsGetterName(isUTC);\r\n                        setterName = secondsSetterName(isUTC);\r\n                        break;\r\n                    case 'millisecond':\r\n                        interval = getMillisecondsInterval(approxInterval);\r\n                        getterName = millisecondsGetterName(isUTC);\r\n                        setterName = millisecondsSetterName(isUTC);\r\n                        break;\r\n                }\r\n                addTicksInSpan(interval, startTick, endTick, getterName, setterName, isDate, newAddedTicks);\r\n                if (unitName === 'year' && levelTicks.length > 1 && i === 0) {\r\n                    levelTicks.unshift({\r\n                        value: levelTicks[0].value - interval\r\n                    });\r\n                }\r\n            }\r\n            for (var i = 0; i < newAddedTicks.length; i++) {\r\n                levelTicks.push(newAddedTicks[i]);\r\n            }\r\n            return newAddedTicks;\r\n        }\r\n        var levelsTicks = [];\r\n        var currentLevelTicks = [];\r\n        var tickCount = 0;\r\n        var lastLevelTickCount = 0;\r\n        for (var i = 0; i < unitNames.length && iter++ < safeLimit; ++i) {\r\n            var primaryTimeUnit = getPrimaryTimeUnit(unitNames[i]);\r\n            if (!isPrimaryTimeUnit(unitNames[i])) {\r\n                continue;\r\n            }\r\n            addLevelTicks(unitNames[i], levelsTicks[levelsTicks.length - 1] || [], currentLevelTicks);\r\n            var nextPrimaryTimeUnit = unitNames[i + 1] ? getPrimaryTimeUnit(unitNames[i + 1]) : null;\r\n            if (primaryTimeUnit !== nextPrimaryTimeUnit) {\r\n                if (currentLevelTicks.length) {\r\n                    lastLevelTickCount = tickCount;\r\n                    currentLevelTicks.sort(function (a, b) { return a.value - b.value; });\r\n                    var levelTicksRemoveDuplicated = [];\r\n                    for (var i_1 = 0; i_1 < currentLevelTicks.length; ++i_1) {\r\n                        var tickValue = currentLevelTicks[i_1].value;\r\n                        if (i_1 === 0 || currentLevelTicks[i_1 - 1].value !== tickValue) {\r\n                            levelTicksRemoveDuplicated.push(currentLevelTicks[i_1]);\r\n                            if (tickValue >= extent[0] && tickValue <= extent[1]) {\r\n                                tickCount++;\r\n                            }\r\n                        }\r\n                    }\r\n                    var targetTickNum = (extent[1] - extent[0]) / approxInterval;\r\n                    if (tickCount > targetTickNum * 1.5 && lastLevelTickCount > targetTickNum / 1.5) {\r\n                        break;\r\n                    }\r\n                    levelsTicks.push(levelTicksRemoveDuplicated);\r\n                    if (tickCount > targetTickNum || bottomUnitName === unitNames[i]) {\r\n                        break;\r\n                    }\r\n                }\r\n                currentLevelTicks = [];\r\n            }\r\n        }\r\n        if (__DEV__) {\r\n            if (iter >= safeLimit) {\r\n                warn('Exceed safe limit.');\r\n            }\r\n        }\r\n        var levelsTicksInExtent = filter(map(levelsTicks, function (levelTicks) {\r\n            return filter(levelTicks, function (tick) { return tick.value >= extent[0] && tick.value <= extent[1] && !tick.notAdd; });\r\n        }), function (levelTicks) { return levelTicks.length > 0; });\r\n        var ticks = [];\r\n        var maxLevel = levelsTicksInExtent.length - 1;\r\n        for (var i = 0; i < levelsTicksInExtent.length; ++i) {\r\n            var levelTicks = levelsTicksInExtent[i];\r\n            for (var k = 0; k < levelTicks.length; ++k) {\r\n                ticks.push({\r\n                    value: levelTicks[k].value,\r\n                    level: maxLevel - i\r\n                });\r\n            }\r\n        }\r\n        ticks.sort(function (a, b) { return a.value - b.value; });\r\n        var result = [];\r\n        for (var i = 0; i < ticks.length; ++i) {\r\n            if (i === 0 || ticks[i].value !== ticks[i - 1].value) {\r\n                result.push(ticks[i]);\r\n            }\r\n        }\r\n        return result;\r\n    }\r\n    Scale.registerClass(TimeScale);\n\n    var scaleProto = Scale.prototype;\r\n    var intervalScaleProto = IntervalScale.prototype;\r\n    var getPrecisionSafe$1 = getPrecisionSafe;\r\n    var roundingErrorFix = round$1;\r\n    var mathFloor$1 = Math.floor;\r\n    var mathCeil = Math.ceil;\r\n    var mathPow$1 = Math.pow;\r\n    var mathLog = Math.log;\r\n    var LogScale = (function (_super) {\r\n        __extends(LogScale, _super);\r\n        function LogScale() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = 'log';\r\n            _this.base = 10;\r\n            _this._originalScale = new IntervalScale();\r\n            _this._interval = 0;\r\n            return _this;\r\n        }\r\n        LogScale.prototype.getTicks = function (expandToNicedExtent) {\r\n            var originalScale = this._originalScale;\r\n            var extent = this._extent;\r\n            var originalExtent = originalScale.getExtent();\r\n            var ticks = intervalScaleProto.getTicks.call(this, expandToNicedExtent);\r\n            return map(ticks, function (tick) {\r\n                var val = tick.value;\r\n                var powVal = round$1(mathPow$1(this.base, val));\r\n                powVal = (val === extent[0] && this._fixMin)\r\n                    ? fixRoundingError(powVal, originalExtent[0])\r\n                    : powVal;\r\n                powVal = (val === extent[1] && this._fixMax)\r\n                    ? fixRoundingError(powVal, originalExtent[1])\r\n                    : powVal;\r\n                return {\r\n                    value: powVal\r\n                };\r\n            }, this);\r\n        };\r\n        LogScale.prototype.setExtent = function (start, end) {\r\n            var base = this.base;\r\n            start = mathLog(start) / mathLog(base);\r\n            end = mathLog(end) / mathLog(base);\r\n            intervalScaleProto.setExtent.call(this, start, end);\r\n        };\r\n        LogScale.prototype.getExtent = function () {\r\n            var base = this.base;\r\n            var extent = scaleProto.getExtent.call(this);\r\n            extent[0] = mathPow$1(base, extent[0]);\r\n            extent[1] = mathPow$1(base, extent[1]);\r\n            var originalScale = this._originalScale;\r\n            var originalExtent = originalScale.getExtent();\r\n            this._fixMin && (extent[0] = fixRoundingError(extent[0], originalExtent[0]));\r\n            this._fixMax && (extent[1] = fixRoundingError(extent[1], originalExtent[1]));\r\n            return extent;\r\n        };\r\n        LogScale.prototype.unionExtent = function (extent) {\r\n            this._originalScale.unionExtent(extent);\r\n            var base = this.base;\r\n            extent[0] = mathLog(extent[0]) / mathLog(base);\r\n            extent[1] = mathLog(extent[1]) / mathLog(base);\r\n            scaleProto.unionExtent.call(this, extent);\r\n        };\r\n        LogScale.prototype.unionExtentFromData = function (data, dim) {\r\n            this.unionExtent(data.getApproximateExtent(dim));\r\n        };\r\n        LogScale.prototype.niceTicks = function (approxTickNum) {\r\n            approxTickNum = approxTickNum || 10;\r\n            var extent = this._extent;\r\n            var span = extent[1] - extent[0];\r\n            if (span === Infinity || span <= 0) {\r\n                return;\r\n            }\r\n            var interval = quantity(span);\r\n            var err = approxTickNum / span * interval;\r\n            if (err <= 0.5) {\r\n                interval *= 10;\r\n            }\r\n            while (!isNaN(interval) && Math.abs(interval) < 1 && Math.abs(interval) > 0) {\r\n                interval *= 10;\r\n            }\r\n            var niceExtent = [\r\n                round$1(mathCeil(extent[0] / interval) * interval),\r\n                round$1(mathFloor$1(extent[1] / interval) * interval)\r\n            ];\r\n            this._interval = interval;\r\n            this._niceExtent = niceExtent;\r\n        };\r\n        LogScale.prototype.niceExtent = function (opt) {\r\n            intervalScaleProto.niceExtent.call(this, opt);\r\n            this._fixMin = opt.fixMin;\r\n            this._fixMax = opt.fixMax;\r\n        };\r\n        LogScale.prototype.parse = function (val) {\r\n            return val;\r\n        };\r\n        LogScale.prototype.contain = function (val) {\r\n            val = mathLog(val) / mathLog(this.base);\r\n            return contain$1(val, this._extent);\r\n        };\r\n        LogScale.prototype.normalize = function (val) {\r\n            val = mathLog(val) / mathLog(this.base);\r\n            return normalize$1(val, this._extent);\r\n        };\r\n        LogScale.prototype.scale = function (val) {\r\n            val = scale$2(val, this._extent);\r\n            return mathPow$1(this.base, val);\r\n        };\r\n        LogScale.type = 'log';\r\n        return LogScale;\r\n    }(Scale));\r\n    var proto = LogScale.prototype;\r\n    proto.getMinorTicks = intervalScaleProto.getMinorTicks;\r\n    proto.getLabel = intervalScaleProto.getLabel;\r\n    function fixRoundingError(val, originalVal) {\r\n        return roundingErrorFix(val, getPrecisionSafe$1(originalVal));\r\n    }\r\n    Scale.registerClass(LogScale);\n\n    var ScaleRawExtentInfo = (function () {\r\n        function ScaleRawExtentInfo(scale, model, originalExtent) {\r\n            this._prepareParams(scale, model, originalExtent);\r\n        }\r\n        ScaleRawExtentInfo.prototype._prepareParams = function (scale, model, dataExtent) {\r\n            if (dataExtent[1] < dataExtent[0]) {\r\n                dataExtent = [NaN, NaN];\r\n            }\r\n            this._dataMin = dataExtent[0];\r\n            this._dataMax = dataExtent[1];\r\n            var isOrdinal = this._isOrdinal = scale.type === 'ordinal';\r\n            this._needCrossZero = model.getNeedCrossZero && model.getNeedCrossZero();\r\n            var modelMinRaw = this._modelMinRaw = model.get('min', true);\r\n            if (isFunction(modelMinRaw)) {\r\n                this._modelMinNum = parseAxisModelMinMax(scale, modelMinRaw({\r\n                    min: dataExtent[0],\r\n                    max: dataExtent[1]\r\n                }));\r\n            }\r\n            else if (modelMinRaw !== 'dataMin') {\r\n                this._modelMinNum = parseAxisModelMinMax(scale, modelMinRaw);\r\n            }\r\n            var modelMaxRaw = this._modelMaxRaw = model.get('max', true);\r\n            if (isFunction(modelMaxRaw)) {\r\n                this._modelMaxNum = parseAxisModelMinMax(scale, modelMaxRaw({\r\n                    min: dataExtent[0],\r\n                    max: dataExtent[1]\r\n                }));\r\n            }\r\n            else if (modelMaxRaw !== 'dataMax') {\r\n                this._modelMaxNum = parseAxisModelMinMax(scale, modelMaxRaw);\r\n            }\r\n            if (isOrdinal) {\r\n                this._axisDataLen = model.getCategories().length;\r\n            }\r\n            else {\r\n                var boundaryGap = model.get('boundaryGap');\r\n                var boundaryGapArr = isArray(boundaryGap)\r\n                    ? boundaryGap : [boundaryGap || 0, boundaryGap || 0];\r\n                if (typeof boundaryGapArr[0] === 'boolean' || typeof boundaryGapArr[1] === 'boolean') {\r\n                    if (__DEV__) {\r\n                        console.warn('Boolean type for boundaryGap is only '\r\n                            + 'allowed for ordinal axis. Please use string in '\r\n                            + 'percentage instead, e.g., \"20%\". Currently, '\r\n                            + 'boundaryGap is set to be 0.');\r\n                    }\r\n                    this._boundaryGapInner = [0, 0];\r\n                }\r\n                else {\r\n                    this._boundaryGapInner = [\r\n                        parsePercent(boundaryGapArr[0], 1),\r\n                        parsePercent(boundaryGapArr[1], 1)\r\n                    ];\r\n                }\r\n            }\r\n        };\r\n        ScaleRawExtentInfo.prototype.calculate = function () {\r\n            var isOrdinal = this._isOrdinal;\r\n            var dataMin = this._dataMin;\r\n            var dataMax = this._dataMax;\r\n            var axisDataLen = this._axisDataLen;\r\n            var boundaryGapInner = this._boundaryGapInner;\r\n            var span = !isOrdinal\r\n                ? ((dataMax - dataMin) || Math.abs(dataMin))\r\n                : null;\r\n            var min = this._modelMinRaw === 'dataMin' ? dataMin : this._modelMinNum;\r\n            var max = this._modelMaxRaw === 'dataMax' ? dataMax : this._modelMaxNum;\r\n            var minFixed = min != null;\r\n            var maxFixed = max != null;\r\n            if (min == null) {\r\n                min = isOrdinal\r\n                    ? (axisDataLen ? 0 : NaN)\r\n                    : dataMin - boundaryGapInner[0] * span;\r\n            }\r\n            if (max == null) {\r\n                max = isOrdinal\r\n                    ? (axisDataLen ? axisDataLen - 1 : NaN)\r\n                    : dataMax + boundaryGapInner[1] * span;\r\n            }\r\n            (min == null || !isFinite(min)) && (min = NaN);\r\n            (max == null || !isFinite(max)) && (max = NaN);\r\n            if (min > max) {\r\n                min = NaN;\r\n                max = NaN;\r\n            }\r\n            var isBlank = eqNaN(min)\r\n                || eqNaN(max)\r\n                || (isOrdinal && !axisDataLen);\r\n            if (this._needCrossZero) {\r\n                if (min > 0 && max > 0 && !minFixed) {\r\n                    min = 0;\r\n                }\r\n                if (min < 0 && max < 0 && !maxFixed) {\r\n                    max = 0;\r\n                }\r\n            }\r\n            var determinedMin = this._determinedMin;\r\n            var determinedMax = this._determinedMax;\r\n            if (determinedMin != null) {\r\n                min = determinedMin;\r\n                minFixed = true;\r\n            }\r\n            if (determinedMax != null) {\r\n                max = determinedMax;\r\n                maxFixed = true;\r\n            }\r\n            return {\r\n                min: min,\r\n                max: max,\r\n                minFixed: minFixed,\r\n                maxFixed: maxFixed,\r\n                isBlank: isBlank\r\n            };\r\n        };\r\n        ScaleRawExtentInfo.prototype.modifyDataMinMax = function (minMaxName, val) {\r\n            if (__DEV__) {\r\n                assert(!this.frozen);\r\n            }\r\n            this[DATA_MIN_MAX_ATTR[minMaxName]] = val;\r\n        };\r\n        ScaleRawExtentInfo.prototype.setDeterminedMinMax = function (minMaxName, val) {\r\n            var attr = DETERMINED_MIN_MAX_ATTR[minMaxName];\r\n            if (__DEV__) {\r\n                assert(!this.frozen\r\n                    && (this[attr] == null));\r\n            }\r\n            this[attr] = val;\r\n        };\r\n        ScaleRawExtentInfo.prototype.freeze = function () {\r\n            this.frozen = true;\r\n        };\r\n        return ScaleRawExtentInfo;\r\n    }());\r\n    var DETERMINED_MIN_MAX_ATTR = { min: '_determinedMin', max: '_determinedMax' };\r\n    var DATA_MIN_MAX_ATTR = { min: '_dataMin', max: '_dataMax' };\r\n    function ensureScaleRawExtentInfo(scale, model, originalExtent) {\r\n        var rawExtentInfo = scale.rawExtentInfo;\r\n        if (rawExtentInfo) {\r\n            return rawExtentInfo;\r\n        }\r\n        rawExtentInfo = new ScaleRawExtentInfo(scale, model, originalExtent);\r\n        scale.rawExtentInfo = rawExtentInfo;\r\n        return rawExtentInfo;\r\n    }\r\n    function parseAxisModelMinMax(scale, minMax) {\r\n        return minMax == null ? null\r\n            : eqNaN(minMax) ? NaN\r\n                : scale.parse(minMax);\r\n    }\n\n    function getScaleExtent(scale, model) {\r\n        var scaleType = scale.type;\r\n        var rawExtentResult = ensureScaleRawExtentInfo(scale, model, scale.getExtent()).calculate();\r\n        scale.setBlank(rawExtentResult.isBlank);\r\n        var min = rawExtentResult.min;\r\n        var max = rawExtentResult.max;\r\n        var ecModel = model.ecModel;\r\n        if (ecModel && (scaleType === 'time')) {\r\n            var barSeriesModels = prepareLayoutBarSeries('bar', ecModel);\r\n            var isBaseAxisAndHasBarSeries_1 = false;\r\n            each(barSeriesModels, function (seriesModel) {\r\n                isBaseAxisAndHasBarSeries_1 = isBaseAxisAndHasBarSeries_1 || seriesModel.getBaseAxis() === model.axis;\r\n            });\r\n            if (isBaseAxisAndHasBarSeries_1) {\r\n                var barWidthAndOffset = makeColumnLayout(barSeriesModels);\r\n                var adjustedScale = adjustScaleForOverflow(min, max, model, barWidthAndOffset);\r\n                min = adjustedScale.min;\r\n                max = adjustedScale.max;\r\n            }\r\n        }\r\n        return {\r\n            extent: [min, max],\r\n            fixMin: rawExtentResult.minFixed,\r\n            fixMax: rawExtentResult.maxFixed\r\n        };\r\n    }\r\n    function adjustScaleForOverflow(min, max, model, barWidthAndOffset) {\r\n        var axisExtent = model.axis.getExtent();\r\n        var axisLength = axisExtent[1] - axisExtent[0];\r\n        var barsOnCurrentAxis = retrieveColumnLayout(barWidthAndOffset, model.axis);\r\n        if (barsOnCurrentAxis === undefined) {\r\n            return { min: min, max: max };\r\n        }\r\n        var minOverflow = Infinity;\r\n        each(barsOnCurrentAxis, function (item) {\r\n            minOverflow = Math.min(item.offset, minOverflow);\r\n        });\r\n        var maxOverflow = -Infinity;\r\n        each(barsOnCurrentAxis, function (item) {\r\n            maxOverflow = Math.max(item.offset + item.width, maxOverflow);\r\n        });\r\n        minOverflow = Math.abs(minOverflow);\r\n        maxOverflow = Math.abs(maxOverflow);\r\n        var totalOverFlow = minOverflow + maxOverflow;\r\n        var oldRange = max - min;\r\n        var oldRangePercentOfNew = (1 - (minOverflow + maxOverflow) / axisLength);\r\n        var overflowBuffer = ((oldRange / oldRangePercentOfNew) - oldRange);\r\n        max += overflowBuffer * (maxOverflow / totalOverFlow);\r\n        min -= overflowBuffer * (minOverflow / totalOverFlow);\r\n        return { min: min, max: max };\r\n    }\r\n    function niceScaleExtent(scale, model) {\r\n        var extentInfo = getScaleExtent(scale, model);\r\n        var extent = extentInfo.extent;\r\n        var splitNumber = model.get('splitNumber');\r\n        if (scale instanceof LogScale) {\r\n            scale.base = model.get('logBase');\r\n        }\r\n        var scaleType = scale.type;\r\n        scale.setExtent(extent[0], extent[1]);\r\n        scale.niceExtent({\r\n            splitNumber: splitNumber,\r\n            fixMin: extentInfo.fixMin,\r\n            fixMax: extentInfo.fixMax,\r\n            minInterval: (scaleType === 'interval' || scaleType === 'time')\r\n                ? model.get('minInterval') : null,\r\n            maxInterval: (scaleType === 'interval' || scaleType === 'time')\r\n                ? model.get('maxInterval') : null\r\n        });\r\n        var interval = model.get('interval');\r\n        if (interval != null) {\r\n            scale.setInterval && scale.setInterval(interval);\r\n        }\r\n    }\r\n    function createScaleByModel(model, axisType) {\r\n        axisType = axisType || model.get('type');\r\n        if (axisType) {\r\n            switch (axisType) {\r\n                case 'category':\r\n                    return new OrdinalScale({\r\n                        ordinalMeta: model.getOrdinalMeta\r\n                            ? model.getOrdinalMeta()\r\n                            : model.getCategories(),\r\n                        extent: [Infinity, -Infinity]\r\n                    });\r\n                case 'time':\r\n                    return new TimeScale({\r\n                        locale: model.ecModel.getLocaleModel(),\r\n                        useUTC: model.ecModel.get('useUTC')\r\n                    });\r\n                default:\r\n                    return new (Scale.getClass(axisType) || IntervalScale)();\r\n            }\r\n        }\r\n    }\r\n    function ifAxisCrossZero(axis) {\r\n        var dataExtent = axis.scale.getExtent();\r\n        var min = dataExtent[0];\r\n        var max = dataExtent[1];\r\n        return !((min > 0 && max > 0) || (min < 0 && max < 0));\r\n    }\r\n    function makeLabelFormatter(axis) {\r\n        var labelFormatter = axis.getLabelModel().get('formatter');\r\n        var categoryTickStart = axis.type === 'category' ? axis.scale.getExtent()[0] : null;\r\n        if (axis.scale.type === 'time') {\r\n            return (function (tpl) {\r\n                return function (tick, idx) {\r\n                    return axis.scale.getFormattedLabel(tick, idx, tpl);\r\n                };\r\n            })(labelFormatter);\r\n        }\r\n        else if (typeof labelFormatter === 'string') {\r\n            return (function (tpl) {\r\n                return function (tick) {\r\n                    var label = axis.scale.getLabel(tick);\r\n                    var text = tpl.replace('{value}', label != null ? label : '');\r\n                    return text;\r\n                };\r\n            })(labelFormatter);\r\n        }\r\n        else if (typeof labelFormatter === 'function') {\r\n            return (function (cb) {\r\n                return function (tick, idx) {\r\n                    if (categoryTickStart != null) {\r\n                        idx = tick.value - categoryTickStart;\r\n                    }\r\n                    return cb(getAxisRawValue(axis, tick), idx, tick.level != null ? {\r\n                        level: tick.level\r\n                    } : null);\r\n                };\r\n            })(labelFormatter);\r\n        }\r\n        else {\r\n            return function (tick) {\r\n                return axis.scale.getLabel(tick);\r\n            };\r\n        }\r\n    }\r\n    function getAxisRawValue(axis, tick) {\r\n        return axis.type === 'category' ? axis.scale.getLabel(tick) : tick.value;\r\n    }\r\n    function estimateLabelUnionRect(axis) {\r\n        var axisModel = axis.model;\r\n        var scale = axis.scale;\r\n        if (!axisModel.get(['axisLabel', 'show']) || scale.isBlank()) {\r\n            return;\r\n        }\r\n        var realNumberScaleTicks;\r\n        var tickCount;\r\n        var categoryScaleExtent = scale.getExtent();\r\n        if (scale instanceof OrdinalScale) {\r\n            tickCount = scale.count();\r\n        }\r\n        else {\r\n            realNumberScaleTicks = scale.getTicks();\r\n            tickCount = realNumberScaleTicks.length;\r\n        }\r\n        var axisLabelModel = axis.getLabelModel();\r\n        var labelFormatter = makeLabelFormatter(axis);\r\n        var rect;\r\n        var step = 1;\r\n        if (tickCount > 40) {\r\n            step = Math.ceil(tickCount / 40);\r\n        }\r\n        for (var i = 0; i < tickCount; i += step) {\r\n            var tick = realNumberScaleTicks\r\n                ? realNumberScaleTicks[i]\r\n                : {\r\n                    value: categoryScaleExtent[0] + i\r\n                };\r\n            var label = labelFormatter(tick, i);\r\n            var unrotatedSingleRect = axisLabelModel.getTextRect(label);\r\n            var singleRect = rotateTextRect(unrotatedSingleRect, axisLabelModel.get('rotate') || 0);\r\n            rect ? rect.union(singleRect) : (rect = singleRect);\r\n        }\r\n        return rect;\r\n    }\r\n    function rotateTextRect(textRect, rotate) {\r\n        var rotateRadians = rotate * Math.PI / 180;\r\n        var beforeWidth = textRect.width;\r\n        var beforeHeight = textRect.height;\r\n        var afterWidth = beforeWidth * Math.abs(Math.cos(rotateRadians))\r\n            + Math.abs(beforeHeight * Math.sin(rotateRadians));\r\n        var afterHeight = beforeWidth * Math.abs(Math.sin(rotateRadians))\r\n            + Math.abs(beforeHeight * Math.cos(rotateRadians));\r\n        var rotatedRect = new BoundingRect(textRect.x, textRect.y, afterWidth, afterHeight);\r\n        return rotatedRect;\r\n    }\r\n    function getOptionCategoryInterval(model) {\r\n        var interval = model.get('interval');\r\n        return interval == null ? 'auto' : interval;\r\n    }\r\n    function shouldShowAllLabels(axis) {\r\n        return axis.type === 'category'\r\n            && getOptionCategoryInterval(axis.getLabelModel()) === 0;\r\n    }\r\n    function getDataDimensionsOnAxis(data, axisDim) {\r\n        var dataDimMap = {};\r\n        each(data.mapDimensionsAll(axisDim), function (dataDim) {\r\n            dataDimMap[getStackedDimension(data, dataDim)] = true;\r\n        });\r\n        return keys(dataDimMap);\r\n    }\r\n    function unionAxisExtentFromData(dataExtent, data, axisDim) {\r\n        if (data) {\r\n            each(getDataDimensionsOnAxis(data, axisDim), function (dim) {\r\n                var seriesExtent = data.getApproximateExtent(dim);\r\n                seriesExtent[0] < dataExtent[0] && (dataExtent[0] = seriesExtent[0]);\r\n                seriesExtent[1] > dataExtent[1] && (dataExtent[1] = seriesExtent[1]);\r\n            });\r\n        }\r\n    }\n\n    var PI$6 = Math.PI;\r\n    var AxisBuilder = (function () {\r\n        function AxisBuilder(axisModel, opt) {\r\n            this.group = new Group();\r\n            this.opt = opt;\r\n            this.axisModel = axisModel;\r\n            defaults(opt, {\r\n                labelOffset: 0,\r\n                nameDirection: 1,\r\n                tickDirection: 1,\r\n                labelDirection: 1,\r\n                silent: true,\r\n                handleAutoShown: function () { return true; }\r\n            });\r\n            var transformGroup = new Group({\r\n                x: opt.position[0],\r\n                y: opt.position[1],\r\n                rotation: opt.rotation\r\n            });\r\n            transformGroup.updateTransform();\r\n            this._transformGroup = transformGroup;\r\n        }\r\n        AxisBuilder.prototype.hasBuilder = function (name) {\r\n            return !!builders[name];\r\n        };\r\n        AxisBuilder.prototype.add = function (name) {\r\n            builders[name](this.opt, this.axisModel, this.group, this._transformGroup);\r\n        };\r\n        AxisBuilder.prototype.getGroup = function () {\r\n            return this.group;\r\n        };\r\n        AxisBuilder.innerTextLayout = function (axisRotation, textRotation, direction) {\r\n            var rotationDiff = remRadian(textRotation - axisRotation);\r\n            var textAlign;\r\n            var textVerticalAlign;\r\n            if (isRadianAroundZero(rotationDiff)) {\r\n                textVerticalAlign = direction > 0 ? 'top' : 'bottom';\r\n                textAlign = 'center';\r\n            }\r\n            else if (isRadianAroundZero(rotationDiff - PI$6)) {\r\n                textVerticalAlign = direction > 0 ? 'bottom' : 'top';\r\n                textAlign = 'center';\r\n            }\r\n            else {\r\n                textVerticalAlign = 'middle';\r\n                if (rotationDiff > 0 && rotationDiff < PI$6) {\r\n                    textAlign = direction > 0 ? 'right' : 'left';\r\n                }\r\n                else {\r\n                    textAlign = direction > 0 ? 'left' : 'right';\r\n                }\r\n            }\r\n            return {\r\n                rotation: rotationDiff,\r\n                textAlign: textAlign,\r\n                textVerticalAlign: textVerticalAlign\r\n            };\r\n        };\r\n        AxisBuilder.makeAxisEventDataBase = function (axisModel) {\r\n            var eventData = {\r\n                componentType: axisModel.mainType,\r\n                componentIndex: axisModel.componentIndex\r\n            };\r\n            eventData[axisModel.mainType + 'Index'] = axisModel.componentIndex;\r\n            return eventData;\r\n        };\r\n        AxisBuilder.isLabelSilent = function (axisModel) {\r\n            var tooltipOpt = axisModel.get('tooltip');\r\n            return axisModel.get('silent')\r\n                || !(axisModel.get('triggerEvent') || (tooltipOpt && tooltipOpt.show));\r\n        };\r\n        return AxisBuilder;\r\n    }());\r\n    var builders = {\r\n        axisLine: function (opt, axisModel, group, transformGroup) {\r\n            var shown = axisModel.get(['axisLine', 'show']);\r\n            if (shown === 'auto' && opt.handleAutoShown) {\r\n                shown = opt.handleAutoShown('axisLine');\r\n            }\r\n            if (!shown) {\r\n                return;\r\n            }\r\n            var extent = axisModel.axis.getExtent();\r\n            var matrix = transformGroup.transform;\r\n            var pt1 = [extent[0], 0];\r\n            var pt2 = [extent[1], 0];\r\n            if (matrix) {\r\n                applyTransform(pt1, pt1, matrix);\r\n                applyTransform(pt2, pt2, matrix);\r\n            }\r\n            var lineStyle = extend({\r\n                lineCap: 'round'\r\n            }, axisModel.getModel(['axisLine', 'lineStyle']).getLineStyle());\r\n            var line = new Line({\r\n                subPixelOptimize: true,\r\n                shape: {\r\n                    x1: pt1[0],\r\n                    y1: pt1[1],\r\n                    x2: pt2[0],\r\n                    y2: pt2[1]\r\n                },\r\n                style: lineStyle,\r\n                strokeContainThreshold: opt.strokeContainThreshold || 5,\r\n                silent: true,\r\n                z2: 1\r\n            });\r\n            line.anid = 'line';\r\n            group.add(line);\r\n            var arrows = axisModel.get(['axisLine', 'symbol']);\r\n            var arrowSize = axisModel.get(['axisLine', 'symbolSize']);\r\n            var arrowOffset = axisModel.get(['axisLine', 'symbolOffset']) || 0;\r\n            if (typeof arrowOffset === 'number') {\r\n                arrowOffset = [arrowOffset, arrowOffset];\r\n            }\r\n            if (arrows != null) {\r\n                if (typeof arrows === 'string') {\r\n                    arrows = [arrows, arrows];\r\n                }\r\n                if (typeof arrowSize === 'string'\r\n                    || typeof arrowSize === 'number') {\r\n                    arrowSize = [arrowSize, arrowSize];\r\n                }\r\n                var symbolWidth_1 = arrowSize[0];\r\n                var symbolHeight_1 = arrowSize[1];\r\n                each([{\r\n                        rotate: opt.rotation + Math.PI / 2,\r\n                        offset: arrowOffset[0],\r\n                        r: 0\r\n                    }, {\r\n                        rotate: opt.rotation - Math.PI / 2,\r\n                        offset: arrowOffset[1],\r\n                        r: Math.sqrt((pt1[0] - pt2[0]) * (pt1[0] - pt2[0])\r\n                            + (pt1[1] - pt2[1]) * (pt1[1] - pt2[1]))\r\n                    }], function (point, index) {\r\n                    if (arrows[index] !== 'none' && arrows[index] != null) {\r\n                        var symbol = createSymbol(arrows[index], -symbolWidth_1 / 2, -symbolHeight_1 / 2, symbolWidth_1, symbolHeight_1, lineStyle.stroke, true);\r\n                        var r = point.r + point.offset;\r\n                        symbol.attr({\r\n                            rotation: point.rotate,\r\n                            x: pt1[0] + r * Math.cos(opt.rotation),\r\n                            y: pt1[1] - r * Math.sin(opt.rotation),\r\n                            silent: true,\r\n                            z2: 11\r\n                        });\r\n                        group.add(symbol);\r\n                    }\r\n                });\r\n            }\r\n        },\r\n        axisTickLabel: function (opt, axisModel, group, transformGroup) {\r\n            var ticksEls = buildAxisMajorTicks(group, transformGroup, axisModel, opt);\r\n            var labelEls = buildAxisLabel(group, transformGroup, axisModel, opt);\r\n            fixMinMaxLabelShow(axisModel, labelEls, ticksEls);\r\n            buildAxisMinorTicks(group, transformGroup, axisModel, opt.tickDirection);\r\n        },\r\n        axisName: function (opt, axisModel, group, transformGroup) {\r\n            var name = retrieve(opt.axisName, axisModel.get('name'));\r\n            if (!name) {\r\n                return;\r\n            }\r\n            var nameLocation = axisModel.get('nameLocation');\r\n            var nameDirection = opt.nameDirection;\r\n            var textStyleModel = axisModel.getModel('nameTextStyle');\r\n            var gap = axisModel.get('nameGap') || 0;\r\n            var extent = axisModel.axis.getExtent();\r\n            var gapSignal = extent[0] > extent[1] ? -1 : 1;\r\n            var pos = [\r\n                nameLocation === 'start'\r\n                    ? extent[0] - gapSignal * gap\r\n                    : nameLocation === 'end'\r\n                        ? extent[1] + gapSignal * gap\r\n                        : (extent[0] + extent[1]) / 2,\r\n                isNameLocationCenter(nameLocation) ? opt.labelOffset + nameDirection * gap : 0\r\n            ];\r\n            var labelLayout;\r\n            var nameRotation = axisModel.get('nameRotate');\r\n            if (nameRotation != null) {\r\n                nameRotation = nameRotation * PI$6 / 180;\r\n            }\r\n            var axisNameAvailableWidth;\r\n            if (isNameLocationCenter(nameLocation)) {\r\n                labelLayout = AxisBuilder.innerTextLayout(opt.rotation, nameRotation != null ? nameRotation : opt.rotation, nameDirection);\r\n            }\r\n            else {\r\n                labelLayout = endTextLayout(opt.rotation, nameLocation, nameRotation || 0, extent);\r\n                axisNameAvailableWidth = opt.axisNameAvailableWidth;\r\n                if (axisNameAvailableWidth != null) {\r\n                    axisNameAvailableWidth = Math.abs(axisNameAvailableWidth / Math.sin(labelLayout.rotation));\r\n                    !isFinite(axisNameAvailableWidth) && (axisNameAvailableWidth = null);\r\n                }\r\n            }\r\n            var textFont = textStyleModel.getFont();\r\n            var truncateOpt = axisModel.get('nameTruncate', true) || {};\r\n            var ellipsis = truncateOpt.ellipsis;\r\n            var maxWidth = retrieve(opt.nameTruncateMaxWidth, truncateOpt.maxWidth, axisNameAvailableWidth);\r\n            var tooltipOpt = axisModel.get('tooltip', true);\r\n            var mainType = axisModel.mainType;\r\n            var formatterParams = {\r\n                componentType: mainType,\r\n                name: name,\r\n                $vars: ['name']\r\n            };\r\n            formatterParams[mainType + 'Index'] = axisModel.componentIndex;\r\n            var textEl = new ZRText({\r\n                x: pos[0],\r\n                y: pos[1],\r\n                rotation: labelLayout.rotation,\r\n                silent: AxisBuilder.isLabelSilent(axisModel),\r\n                style: createTextStyle(textStyleModel, {\r\n                    text: name,\r\n                    font: textFont,\r\n                    overflow: 'truncate',\r\n                    width: maxWidth,\r\n                    ellipsis: ellipsis,\r\n                    fill: textStyleModel.getTextColor()\r\n                        || axisModel.get(['axisLine', 'lineStyle', 'color']),\r\n                    align: textStyleModel.get('align')\r\n                        || labelLayout.textAlign,\r\n                    verticalAlign: textStyleModel.get('verticalAlign')\r\n                        || labelLayout.textVerticalAlign\r\n                }),\r\n                z2: 1\r\n            });\r\n            textEl.tooltip = (tooltipOpt && tooltipOpt.show)\r\n                ? extend({\r\n                    content: name,\r\n                    formatter: function () {\r\n                        return name;\r\n                    },\r\n                    formatterParams: formatterParams\r\n                }, tooltipOpt)\r\n                : null;\r\n            textEl.__fullText = name;\r\n            textEl.anid = 'name';\r\n            if (axisModel.get('triggerEvent')) {\r\n                var eventData = AxisBuilder.makeAxisEventDataBase(axisModel);\r\n                eventData.targetType = 'axisName';\r\n                eventData.name = name;\r\n                getECData(textEl).eventData = eventData;\r\n            }\r\n            transformGroup.add(textEl);\r\n            textEl.updateTransform();\r\n            group.add(textEl);\r\n            textEl.decomposeTransform();\r\n        }\r\n    };\r\n    function endTextLayout(rotation, textPosition, textRotate, extent) {\r\n        var rotationDiff = remRadian(textRotate - rotation);\r\n        var textAlign;\r\n        var textVerticalAlign;\r\n        var inverse = extent[0] > extent[1];\r\n        var onLeft = (textPosition === 'start' && !inverse)\r\n            || (textPosition !== 'start' && inverse);\r\n        if (isRadianAroundZero(rotationDiff - PI$6 / 2)) {\r\n            textVerticalAlign = onLeft ? 'bottom' : 'top';\r\n            textAlign = 'center';\r\n        }\r\n        else if (isRadianAroundZero(rotationDiff - PI$6 * 1.5)) {\r\n            textVerticalAlign = onLeft ? 'top' : 'bottom';\r\n            textAlign = 'center';\r\n        }\r\n        else {\r\n            textVerticalAlign = 'middle';\r\n            if (rotationDiff < PI$6 * 1.5 && rotationDiff > PI$6 / 2) {\r\n                textAlign = onLeft ? 'left' : 'right';\r\n            }\r\n            else {\r\n                textAlign = onLeft ? 'right' : 'left';\r\n            }\r\n        }\r\n        return {\r\n            rotation: rotationDiff,\r\n            textAlign: textAlign,\r\n            textVerticalAlign: textVerticalAlign\r\n        };\r\n    }\r\n    function fixMinMaxLabelShow(axisModel, labelEls, tickEls) {\r\n        if (shouldShowAllLabels(axisModel.axis)) {\r\n            return;\r\n        }\r\n        var showMinLabel = axisModel.get(['axisLabel', 'showMinLabel']);\r\n        var showMaxLabel = axisModel.get(['axisLabel', 'showMaxLabel']);\r\n        labelEls = labelEls || [];\r\n        tickEls = tickEls || [];\r\n        var firstLabel = labelEls[0];\r\n        var nextLabel = labelEls[1];\r\n        var lastLabel = labelEls[labelEls.length - 1];\r\n        var prevLabel = labelEls[labelEls.length - 2];\r\n        var firstTick = tickEls[0];\r\n        var nextTick = tickEls[1];\r\n        var lastTick = tickEls[tickEls.length - 1];\r\n        var prevTick = tickEls[tickEls.length - 2];\r\n        if (showMinLabel === false) {\r\n            ignoreEl(firstLabel);\r\n            ignoreEl(firstTick);\r\n        }\r\n        else if (isTwoLabelOverlapped(firstLabel, nextLabel)) {\r\n            if (showMinLabel) {\r\n                ignoreEl(nextLabel);\r\n                ignoreEl(nextTick);\r\n            }\r\n            else {\r\n                ignoreEl(firstLabel);\r\n                ignoreEl(firstTick);\r\n            }\r\n        }\r\n        if (showMaxLabel === false) {\r\n            ignoreEl(lastLabel);\r\n            ignoreEl(lastTick);\r\n        }\r\n        else if (isTwoLabelOverlapped(prevLabel, lastLabel)) {\r\n            if (showMaxLabel) {\r\n                ignoreEl(prevLabel);\r\n                ignoreEl(prevTick);\r\n            }\r\n            else {\r\n                ignoreEl(lastLabel);\r\n                ignoreEl(lastTick);\r\n            }\r\n        }\r\n    }\r\n    function ignoreEl(el) {\r\n        el && (el.ignore = true);\r\n    }\r\n    function isTwoLabelOverlapped(current, next) {\r\n        var firstRect = current && current.getBoundingRect().clone();\r\n        var nextRect = next && next.getBoundingRect().clone();\r\n        if (!firstRect || !nextRect) {\r\n            return;\r\n        }\r\n        var mRotationBack = identity([]);\r\n        rotate(mRotationBack, mRotationBack, -current.rotation);\r\n        firstRect.applyTransform(mul([], mRotationBack, current.getLocalTransform()));\r\n        nextRect.applyTransform(mul([], mRotationBack, next.getLocalTransform()));\r\n        return firstRect.intersect(nextRect);\r\n    }\r\n    function isNameLocationCenter(nameLocation) {\r\n        return nameLocation === 'middle' || nameLocation === 'center';\r\n    }\r\n    function createTicks(ticksCoords, tickTransform, tickEndCoord, tickLineStyle, anidPrefix) {\r\n        var tickEls = [];\r\n        var pt1 = [];\r\n        var pt2 = [];\r\n        for (var i = 0; i < ticksCoords.length; i++) {\r\n            var tickCoord = ticksCoords[i].coord;\r\n            pt1[0] = tickCoord;\r\n            pt1[1] = 0;\r\n            pt2[0] = tickCoord;\r\n            pt2[1] = tickEndCoord;\r\n            if (tickTransform) {\r\n                applyTransform(pt1, pt1, tickTransform);\r\n                applyTransform(pt2, pt2, tickTransform);\r\n            }\r\n            var tickEl = new Line({\r\n                subPixelOptimize: true,\r\n                shape: {\r\n                    x1: pt1[0],\r\n                    y1: pt1[1],\r\n                    x2: pt2[0],\r\n                    y2: pt2[1]\r\n                },\r\n                style: tickLineStyle,\r\n                z2: 2,\r\n                autoBatch: true,\r\n                silent: true\r\n            });\r\n            tickEl.anid = anidPrefix + '_' + ticksCoords[i].tickValue;\r\n            tickEls.push(tickEl);\r\n        }\r\n        return tickEls;\r\n    }\r\n    function buildAxisMajorTicks(group, transformGroup, axisModel, opt) {\r\n        var axis = axisModel.axis;\r\n        var tickModel = axisModel.getModel('axisTick');\r\n        var shown = tickModel.get('show');\r\n        if (shown === 'auto' && opt.handleAutoShown) {\r\n            shown = opt.handleAutoShown('axisTick');\r\n        }\r\n        if (!shown || axis.scale.isBlank()) {\r\n            return;\r\n        }\r\n        var lineStyleModel = tickModel.getModel('lineStyle');\r\n        var tickEndCoord = opt.tickDirection * tickModel.get('length');\r\n        var ticksCoords = axis.getTicksCoords();\r\n        var ticksEls = createTicks(ticksCoords, transformGroup.transform, tickEndCoord, defaults(lineStyleModel.getLineStyle(), {\r\n            stroke: axisModel.get(['axisLine', 'lineStyle', 'color'])\r\n        }), 'ticks');\r\n        for (var i = 0; i < ticksEls.length; i++) {\r\n            group.add(ticksEls[i]);\r\n        }\r\n        return ticksEls;\r\n    }\r\n    function buildAxisMinorTicks(group, transformGroup, axisModel, tickDirection) {\r\n        var axis = axisModel.axis;\r\n        var minorTickModel = axisModel.getModel('minorTick');\r\n        if (!minorTickModel.get('show') || axis.scale.isBlank()) {\r\n            return;\r\n        }\r\n        var minorTicksCoords = axis.getMinorTicksCoords();\r\n        if (!minorTicksCoords.length) {\r\n            return;\r\n        }\r\n        var lineStyleModel = minorTickModel.getModel('lineStyle');\r\n        var tickEndCoord = tickDirection * minorTickModel.get('length');\r\n        var minorTickLineStyle = defaults(lineStyleModel.getLineStyle(), defaults(axisModel.getModel('axisTick').getLineStyle(), {\r\n            stroke: axisModel.get(['axisLine', 'lineStyle', 'color'])\r\n        }));\r\n        for (var i = 0; i < minorTicksCoords.length; i++) {\r\n            var minorTicksEls = createTicks(minorTicksCoords[i], transformGroup.transform, tickEndCoord, minorTickLineStyle, 'minorticks_' + i);\r\n            for (var k = 0; k < minorTicksEls.length; k++) {\r\n                group.add(minorTicksEls[k]);\r\n            }\r\n        }\r\n    }\r\n    function buildAxisLabel(group, transformGroup, axisModel, opt) {\r\n        var axis = axisModel.axis;\r\n        var show = retrieve(opt.axisLabelShow, axisModel.get(['axisLabel', 'show']));\r\n        if (!show || axis.scale.isBlank()) {\r\n            return;\r\n        }\r\n        var labelModel = axisModel.getModel('axisLabel');\r\n        var labelMargin = labelModel.get('margin');\r\n        var labels = axis.getViewLabels();\r\n        var labelRotation = (retrieve(opt.labelRotate, labelModel.get('rotate')) || 0) * PI$6 / 180;\r\n        var labelLayout = AxisBuilder.innerTextLayout(opt.rotation, labelRotation, opt.labelDirection);\r\n        var rawCategoryData = axisModel.getCategories && axisModel.getCategories(true);\r\n        var labelEls = [];\r\n        var silent = AxisBuilder.isLabelSilent(axisModel);\r\n        var triggerEvent = axisModel.get('triggerEvent');\r\n        each(labels, function (labelItem, index) {\r\n            var tickValue = axis.scale.type === 'ordinal'\r\n                ? axis.scale.getRawIndex(labelItem.tickValue)\r\n                : labelItem.tickValue;\r\n            var formattedLabel = labelItem.formattedLabel;\r\n            var rawLabel = labelItem.rawLabel;\r\n            var itemLabelModel = labelModel;\r\n            if (rawCategoryData && rawCategoryData[tickValue]) {\r\n                var rawCategoryItem = rawCategoryData[tickValue];\r\n                if (isObject(rawCategoryItem) && rawCategoryItem.textStyle) {\r\n                    itemLabelModel = new Model(rawCategoryItem.textStyle, labelModel, axisModel.ecModel);\r\n                }\r\n            }\r\n            var textColor = itemLabelModel.getTextColor()\r\n                || axisModel.get(['axisLine', 'lineStyle', 'color']);\r\n            var tickCoord = axis.dataToCoord(tickValue);\r\n            var textEl = new ZRText({\r\n                x: tickCoord,\r\n                y: opt.labelOffset + opt.labelDirection * labelMargin,\r\n                rotation: labelLayout.rotation,\r\n                silent: silent,\r\n                z2: 10,\r\n                style: createTextStyle(itemLabelModel, {\r\n                    text: formattedLabel,\r\n                    align: itemLabelModel.getShallow('align', true)\r\n                        || labelLayout.textAlign,\r\n                    verticalAlign: itemLabelModel.getShallow('verticalAlign', true)\r\n                        || itemLabelModel.getShallow('baseline', true)\r\n                        || labelLayout.textVerticalAlign,\r\n                    fill: typeof textColor === 'function'\r\n                        ? textColor(axis.type === 'category'\r\n                            ? rawLabel\r\n                            : axis.type === 'value'\r\n                                ? tickValue + ''\r\n                                : tickValue, index)\r\n                        : textColor\r\n                })\r\n            });\r\n            textEl.anid = 'label_' + tickValue;\r\n            if (triggerEvent) {\r\n                var eventData = AxisBuilder.makeAxisEventDataBase(axisModel);\r\n                eventData.targetType = 'axisLabel';\r\n                eventData.value = rawLabel;\r\n                getECData(textEl).eventData = eventData;\r\n            }\r\n            transformGroup.add(textEl);\r\n            textEl.updateTransform();\r\n            labelEls.push(textEl);\r\n            group.add(textEl);\r\n            textEl.decomposeTransform();\r\n        });\r\n        return labelEls;\r\n    }\n\n    function fixValue(axisModel) {\r\n        var axisInfo = getAxisInfo(axisModel);\r\n        if (!axisInfo) {\r\n            return;\r\n        }\r\n        var axisPointerModel = axisInfo.axisPointerModel;\r\n        var scale = axisInfo.axis.scale;\r\n        var option = axisPointerModel.option;\r\n        var status = axisPointerModel.get('status');\r\n        var value = axisPointerModel.get('value');\r\n        if (value != null) {\r\n            value = scale.parse(value);\r\n        }\r\n        var useHandle = isHandleTrigger(axisPointerModel);\r\n        if (status == null) {\r\n            option.status = useHandle ? 'show' : 'hide';\r\n        }\r\n        var extent = scale.getExtent().slice();\r\n        extent[0] > extent[1] && extent.reverse();\r\n        if (value == null\r\n            || value > extent[1]) {\r\n            value = extent[1];\r\n        }\r\n        if (value < extent[0]) {\r\n            value = extent[0];\r\n        }\r\n        option.value = value;\r\n        if (useHandle) {\r\n            option.status = axisInfo.axis.scale.isBlank() ? 'hide' : 'show';\r\n        }\r\n    }\r\n    function getAxisInfo(axisModel) {\r\n        var coordSysAxesInfo = (axisModel.ecModel.getComponent('axisPointer') || {})\r\n            .coordSysAxesInfo;\r\n        return coordSysAxesInfo && coordSysAxesInfo.axesInfo[makeKey(axisModel)];\r\n    }\r\n    function getAxisPointerModel(axisModel) {\r\n        var axisInfo = getAxisInfo(axisModel);\r\n        return axisInfo && axisInfo.axisPointerModel;\r\n    }\r\n    function isHandleTrigger(axisPointerModel) {\r\n        return !!axisPointerModel.get(['handle', 'show']);\r\n    }\r\n    function makeKey(model) {\r\n        return model.type + '||' + model.id;\r\n    }\n\n    var axisPointerClazz = {};\r\n    var AxisView = (function (_super) {\r\n        __extends(AxisView, _super);\r\n        function AxisView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = AxisView.type;\r\n            return _this;\r\n        }\r\n        AxisView.prototype.render = function (axisModel, ecModel, api, payload) {\r\n            this.axisPointerClass && fixValue(axisModel);\r\n            _super.prototype.render.apply(this, arguments);\r\n            this._doUpdateAxisPointerClass(axisModel, api, true);\r\n        };\r\n        AxisView.prototype.updateAxisPointer = function (axisModel, ecModel, api, payload) {\r\n            this._doUpdateAxisPointerClass(axisModel, api, false);\r\n        };\r\n        AxisView.prototype.remove = function (ecModel, api) {\r\n            var axisPointer = this._axisPointer;\r\n            axisPointer && axisPointer.remove(api);\r\n        };\r\n        AxisView.prototype.dispose = function (ecModel, api) {\r\n            this._disposeAxisPointer(api);\r\n            _super.prototype.dispose.apply(this, arguments);\r\n        };\r\n        AxisView.prototype._doUpdateAxisPointerClass = function (axisModel, api, forceRender) {\r\n            var Clazz = AxisView.getAxisPointerClass(this.axisPointerClass);\r\n            if (!Clazz) {\r\n                return;\r\n            }\r\n            var axisPointerModel = getAxisPointerModel(axisModel);\r\n            axisPointerModel\r\n                ? (this._axisPointer || (this._axisPointer = new Clazz()))\r\n                    .render(axisModel, axisPointerModel, api, forceRender)\r\n                : this._disposeAxisPointer(api);\r\n        };\r\n        AxisView.prototype._disposeAxisPointer = function (api) {\r\n            this._axisPointer && this._axisPointer.dispose(api);\r\n            this._axisPointer = null;\r\n        };\r\n        AxisView.registerAxisPointerClass = function (type, clazz) {\r\n            if (__DEV__) {\r\n                if (axisPointerClazz[type]) {\r\n                    throw new Error('axisPointer ' + type + ' exists');\r\n                }\r\n            }\r\n            axisPointerClazz[type] = clazz;\r\n        };\r\n        AxisView.getAxisPointerClass = function (type) {\r\n            return type && axisPointerClazz[type];\r\n        };\r\n        AxisView.type = 'axis';\r\n        return AxisView;\r\n    }(ComponentView));\n\n    function layout$1(gridModel, axisModel, opt) {\r\n        opt = opt || {};\r\n        var grid = gridModel.coordinateSystem;\r\n        var axis = axisModel.axis;\r\n        var layout = {};\r\n        var otherAxisOnZeroOf = axis.getAxesOnZeroOf()[0];\r\n        var rawAxisPosition = axis.position;\r\n        var axisPosition = otherAxisOnZeroOf ? 'onZero' : rawAxisPosition;\r\n        var axisDim = axis.dim;\r\n        var rect = grid.getRect();\r\n        var rectBound = [rect.x, rect.x + rect.width, rect.y, rect.y + rect.height];\r\n        var idx = { left: 0, right: 1, top: 0, bottom: 1, onZero: 2 };\r\n        var axisOffset = axisModel.get('offset') || 0;\r\n        var posBound = axisDim === 'x'\r\n            ? [rectBound[2] - axisOffset, rectBound[3] + axisOffset]\r\n            : [rectBound[0] - axisOffset, rectBound[1] + axisOffset];\r\n        if (otherAxisOnZeroOf) {\r\n            var onZeroCoord = otherAxisOnZeroOf.toGlobalCoord(otherAxisOnZeroOf.dataToCoord(0));\r\n            posBound[idx.onZero] = Math.max(Math.min(onZeroCoord, posBound[1]), posBound[0]);\r\n        }\r\n        layout.position = [\r\n            axisDim === 'y' ? posBound[idx[axisPosition]] : rectBound[0],\r\n            axisDim === 'x' ? posBound[idx[axisPosition]] : rectBound[3]\r\n        ];\r\n        layout.rotation = Math.PI / 2 * (axisDim === 'x' ? 0 : 1);\r\n        var dirMap = { top: -1, bottom: 1, left: -1, right: 1 };\r\n        layout.labelDirection = layout.tickDirection = layout.nameDirection = dirMap[rawAxisPosition];\r\n        layout.labelOffset = otherAxisOnZeroOf ? posBound[idx[rawAxisPosition]] - posBound[idx.onZero] : 0;\r\n        if (axisModel.get(['axisTick', 'inside'])) {\r\n            layout.tickDirection = -layout.tickDirection;\r\n        }\r\n        if (retrieve(opt.labelInside, axisModel.get(['axisLabel', 'inside']))) {\r\n            layout.labelDirection = -layout.labelDirection;\r\n        }\r\n        var labelRotate = axisModel.get(['axisLabel', 'rotate']);\r\n        layout.labelRotate = axisPosition === 'top' ? -labelRotate : labelRotate;\r\n        layout.z2 = 1;\r\n        return layout;\r\n    }\r\n    function isCartesian2DSeries(seriesModel) {\r\n        return seriesModel.get('coordinateSystem') === 'cartesian2d';\r\n    }\r\n    function findAxisModels(seriesModel) {\r\n        var axisModelMap = {\r\n            xAxisModel: null,\r\n            yAxisModel: null\r\n        };\r\n        each(axisModelMap, function (v, key) {\r\n            var axisType = key.replace(/Model$/, '');\r\n            var axisModel = seriesModel.getReferringComponents(axisType, SINGLE_REFERRING).models[0];\r\n            if (__DEV__) {\r\n                if (!axisModel) {\r\n                    throw new Error(axisType + ' \"' + retrieve3(seriesModel.get(axisType + 'Index'), seriesModel.get(axisType + 'Id'), 0) + '\" not found');\r\n                }\r\n            }\r\n            axisModelMap[key] = axisModel;\r\n        });\r\n        return axisModelMap;\r\n    }\n\n    var inner$4 = makeInner();\r\n    function rectCoordAxisBuildSplitArea(axisView, axisGroup, axisModel, gridModel) {\r\n        var axis = axisModel.axis;\r\n        if (axis.scale.isBlank()) {\r\n            return;\r\n        }\r\n        var splitAreaModel = axisModel.getModel('splitArea');\r\n        var areaStyleModel = splitAreaModel.getModel('areaStyle');\r\n        var areaColors = areaStyleModel.get('color');\r\n        var gridRect = gridModel.coordinateSystem.getRect();\r\n        var ticksCoords = axis.getTicksCoords({\r\n            tickModel: splitAreaModel,\r\n            clamp: true\r\n        });\r\n        if (!ticksCoords.length) {\r\n            return;\r\n        }\r\n        var areaColorsLen = areaColors.length;\r\n        var lastSplitAreaColors = inner$4(axisView).splitAreaColors;\r\n        var newSplitAreaColors = createHashMap();\r\n        var colorIndex = 0;\r\n        if (lastSplitAreaColors) {\r\n            for (var i = 0; i < ticksCoords.length; i++) {\r\n                var cIndex = lastSplitAreaColors.get(ticksCoords[i].tickValue);\r\n                if (cIndex != null) {\r\n                    colorIndex = (cIndex + (areaColorsLen - 1) * i) % areaColorsLen;\r\n                    break;\r\n                }\r\n            }\r\n        }\r\n        var prev = axis.toGlobalCoord(ticksCoords[0].coord);\r\n        var areaStyle = areaStyleModel.getAreaStyle();\r\n        areaColors = isArray(areaColors) ? areaColors : [areaColors];\r\n        for (var i = 1; i < ticksCoords.length; i++) {\r\n            var tickCoord = axis.toGlobalCoord(ticksCoords[i].coord);\r\n            var x = void 0;\r\n            var y = void 0;\r\n            var width = void 0;\r\n            var height = void 0;\r\n            if (axis.isHorizontal()) {\r\n                x = prev;\r\n                y = gridRect.y;\r\n                width = tickCoord - x;\r\n                height = gridRect.height;\r\n                prev = x + width;\r\n            }\r\n            else {\r\n                x = gridRect.x;\r\n                y = prev;\r\n                width = gridRect.width;\r\n                height = tickCoord - y;\r\n                prev = y + height;\r\n            }\r\n            var tickValue = ticksCoords[i - 1].tickValue;\r\n            tickValue != null && newSplitAreaColors.set(tickValue, colorIndex);\r\n            axisGroup.add(new Rect({\r\n                anid: tickValue != null ? 'area_' + tickValue : null,\r\n                shape: {\r\n                    x: x,\r\n                    y: y,\r\n                    width: width,\r\n                    height: height\r\n                },\r\n                style: defaults({\r\n                    fill: areaColors[colorIndex]\r\n                }, areaStyle),\r\n                autoBatch: true,\r\n                silent: true\r\n            }));\r\n            colorIndex = (colorIndex + 1) % areaColorsLen;\r\n        }\r\n        inner$4(axisView).splitAreaColors = newSplitAreaColors;\r\n    }\r\n    function rectCoordAxisHandleRemove(axisView) {\r\n        inner$4(axisView).splitAreaColors = null;\r\n    }\n\n    var axisBuilderAttrs = [\r\n        'axisLine', 'axisTickLabel', 'axisName'\r\n    ];\r\n    var selfBuilderAttrs = [\r\n        'splitArea', 'splitLine', 'minorSplitLine'\r\n    ];\r\n    var CartesianAxisView = (function (_super) {\r\n        __extends(CartesianAxisView, _super);\r\n        function CartesianAxisView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = CartesianAxisView.type;\r\n            _this.axisPointerClass = 'CartesianAxisPointer';\r\n            return _this;\r\n        }\r\n        CartesianAxisView.prototype.render = function (axisModel, ecModel, api, payload) {\r\n            this.group.removeAll();\r\n            var oldAxisGroup = this._axisGroup;\r\n            this._axisGroup = new Group();\r\n            this.group.add(this._axisGroup);\r\n            if (!axisModel.get('show')) {\r\n                return;\r\n            }\r\n            var gridModel = axisModel.getCoordSysModel();\r\n            var layout = layout$1(gridModel, axisModel);\r\n            var axisBuilder = new AxisBuilder(axisModel, extend({\r\n                handleAutoShown: function (elementType) {\r\n                    var cartesians = gridModel.coordinateSystem.getCartesians();\r\n                    for (var i = 0; i < cartesians.length; i++) {\r\n                        var otherAxisType = cartesians[i].getOtherAxis(axisModel.axis).type;\r\n                        if (otherAxisType === 'value' || otherAxisType === 'log') {\r\n                            return true;\r\n                        }\r\n                    }\r\n                    return false;\r\n                }\r\n            }, layout));\r\n            each(axisBuilderAttrs, axisBuilder.add, axisBuilder);\r\n            this._axisGroup.add(axisBuilder.getGroup());\r\n            each(selfBuilderAttrs, function (name) {\r\n                if (axisModel.get([name, 'show'])) {\r\n                    axisElementBuilders[name](this, this._axisGroup, axisModel, gridModel);\r\n                }\r\n            }, this);\r\n            groupTransition(oldAxisGroup, this._axisGroup, axisModel);\r\n            _super.prototype.render.call(this, axisModel, ecModel, api, payload);\r\n        };\r\n        CartesianAxisView.prototype.remove = function () {\r\n            rectCoordAxisHandleRemove(this);\r\n        };\r\n        CartesianAxisView.type = 'cartesianAxis';\r\n        return CartesianAxisView;\r\n    }(AxisView));\r\n    var axisElementBuilders = {\r\n        splitLine: function (axisView, axisGroup, axisModel, gridModel) {\r\n            var axis = axisModel.axis;\r\n            if (axis.scale.isBlank()) {\r\n                return;\r\n            }\r\n            var splitLineModel = axisModel.getModel('splitLine');\r\n            var lineStyleModel = splitLineModel.getModel('lineStyle');\r\n            var lineColors = lineStyleModel.get('color');\r\n            lineColors = isArray(lineColors) ? lineColors : [lineColors];\r\n            var gridRect = gridModel.coordinateSystem.getRect();\r\n            var isHorizontal = axis.isHorizontal();\r\n            var lineCount = 0;\r\n            var ticksCoords = axis.getTicksCoords({\r\n                tickModel: splitLineModel\r\n            });\r\n            var p1 = [];\r\n            var p2 = [];\r\n            var lineStyle = lineStyleModel.getLineStyle();\r\n            for (var i = 0; i < ticksCoords.length; i++) {\r\n                var tickCoord = axis.toGlobalCoord(ticksCoords[i].coord);\r\n                if (isHorizontal) {\r\n                    p1[0] = tickCoord;\r\n                    p1[1] = gridRect.y;\r\n                    p2[0] = tickCoord;\r\n                    p2[1] = gridRect.y + gridRect.height;\r\n                }\r\n                else {\r\n                    p1[0] = gridRect.x;\r\n                    p1[1] = tickCoord;\r\n                    p2[0] = gridRect.x + gridRect.width;\r\n                    p2[1] = tickCoord;\r\n                }\r\n                var colorIndex = (lineCount++) % lineColors.length;\r\n                var tickValue = ticksCoords[i].tickValue;\r\n                axisGroup.add(new Line({\r\n                    anid: tickValue != null ? 'line_' + ticksCoords[i].tickValue : null,\r\n                    subPixelOptimize: true,\r\n                    autoBatch: true,\r\n                    shape: {\r\n                        x1: p1[0],\r\n                        y1: p1[1],\r\n                        x2: p2[0],\r\n                        y2: p2[1]\r\n                    },\r\n                    style: defaults({\r\n                        stroke: lineColors[colorIndex]\r\n                    }, lineStyle),\r\n                    silent: true\r\n                }));\r\n            }\r\n        },\r\n        minorSplitLine: function (axisView, axisGroup, axisModel, gridModel) {\r\n            var axis = axisModel.axis;\r\n            var minorSplitLineModel = axisModel.getModel('minorSplitLine');\r\n            var lineStyleModel = minorSplitLineModel.getModel('lineStyle');\r\n            var gridRect = gridModel.coordinateSystem.getRect();\r\n            var isHorizontal = axis.isHorizontal();\r\n            var minorTicksCoords = axis.getMinorTicksCoords();\r\n            if (!minorTicksCoords.length) {\r\n                return;\r\n            }\r\n            var p1 = [];\r\n            var p2 = [];\r\n            var lineStyle = lineStyleModel.getLineStyle();\r\n            for (var i = 0; i < minorTicksCoords.length; i++) {\r\n                for (var k = 0; k < minorTicksCoords[i].length; k++) {\r\n                    var tickCoord = axis.toGlobalCoord(minorTicksCoords[i][k].coord);\r\n                    if (isHorizontal) {\r\n                        p1[0] = tickCoord;\r\n                        p1[1] = gridRect.y;\r\n                        p2[0] = tickCoord;\r\n                        p2[1] = gridRect.y + gridRect.height;\r\n                    }\r\n                    else {\r\n                        p1[0] = gridRect.x;\r\n                        p1[1] = tickCoord;\r\n                        p2[0] = gridRect.x + gridRect.width;\r\n                        p2[1] = tickCoord;\r\n                    }\r\n                    axisGroup.add(new Line({\r\n                        anid: 'minor_line_' + minorTicksCoords[i][k].tickValue,\r\n                        subPixelOptimize: true,\r\n                        autoBatch: true,\r\n                        shape: {\r\n                            x1: p1[0],\r\n                            y1: p1[1],\r\n                            x2: p2[0],\r\n                            y2: p2[1]\r\n                        },\r\n                        style: lineStyle,\r\n                        silent: true\r\n                    }));\r\n                }\r\n            }\r\n        },\r\n        splitArea: function (axisView, axisGroup, axisModel, gridModel) {\r\n            rectCoordAxisBuildSplitArea(axisView, axisGroup, axisModel, gridModel);\r\n        }\r\n    };\r\n    var CartesianXAxisView = (function (_super) {\r\n        __extends(CartesianXAxisView, _super);\r\n        function CartesianXAxisView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = CartesianXAxisView.type;\r\n            return _this;\r\n        }\r\n        CartesianXAxisView.type = 'xAxis';\r\n        return CartesianXAxisView;\r\n    }(CartesianAxisView));\r\n    var CartesianYAxisView = (function (_super) {\r\n        __extends(CartesianYAxisView, _super);\r\n        function CartesianYAxisView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = CartesianXAxisView.type;\r\n            return _this;\r\n        }\r\n        CartesianYAxisView.type = 'yAxis';\r\n        return CartesianYAxisView;\r\n    }(CartesianAxisView));\r\n    ComponentView.registerClass(CartesianXAxisView);\r\n    ComponentView.registerClass(CartesianYAxisView);\n\n    registerProcessor(PRIORITY.PROCESSOR.FILTER + 10, {\r\n        getTargetSeries: function (ecModel) {\r\n            var seriesModelMap = createHashMap();\r\n            ecModel.eachSeries(function (seriesModel) {\r\n                isCartesian2DSeries(seriesModel) && seriesModelMap.set(seriesModel.uid, seriesModel);\r\n            });\r\n            return seriesModelMap;\r\n        },\r\n        overallReset: function (ecModel, api) {\r\n            var seriesRecords = [];\r\n            var axisRecordMap = createHashMap();\r\n            prepareDataExtentOnAxis(ecModel, axisRecordMap, seriesRecords);\r\n            calculateFilteredExtent(axisRecordMap, seriesRecords);\r\n            shrinkAxisExtent(axisRecordMap);\r\n        }\r\n    });\r\n    function prepareDataExtentOnAxis(ecModel, axisRecordMap, seriesRecords) {\r\n        ecModel.eachSeries(function (seriesModel) {\r\n            if (!isCartesian2DSeries(seriesModel)) {\r\n                return;\r\n            }\r\n            var axesModelMap = findAxisModels(seriesModel);\r\n            var xAxisModel = axesModelMap.xAxisModel;\r\n            var yAxisModel = axesModelMap.yAxisModel;\r\n            var xAxis = xAxisModel.axis;\r\n            var yAxis = yAxisModel.axis;\r\n            var xRawExtentInfo = xAxis.scale.rawExtentInfo;\r\n            var yRawExtentInfo = yAxis.scale.rawExtentInfo;\r\n            var data = seriesModel.getData();\r\n            if ((xRawExtentInfo && xRawExtentInfo.frozen)\r\n                || (yRawExtentInfo && yRawExtentInfo.frozen)) {\r\n                return;\r\n            }\r\n            seriesRecords.push({\r\n                seriesModel: seriesModel,\r\n                xAxisModel: xAxisModel,\r\n                yAxisModel: yAxisModel\r\n            });\r\n            unionAxisExtentFromData(prepareAxisRecord(axisRecordMap, xAxisModel).condExtent, data, xAxis.dim);\r\n            unionAxisExtentFromData(prepareAxisRecord(axisRecordMap, yAxisModel).condExtent, data, yAxis.dim);\r\n        });\r\n    }\r\n    function calculateFilteredExtent(axisRecordMap, seriesRecords) {\r\n        each(seriesRecords, function (seriesRecord) {\r\n            var xAxisModel = seriesRecord.xAxisModel;\r\n            var yAxisModel = seriesRecord.yAxisModel;\r\n            var xAxis = xAxisModel.axis;\r\n            var yAxis = yAxisModel.axis;\r\n            var xAxisRecord = prepareAxisRecord(axisRecordMap, xAxisModel);\r\n            var yAxisRecord = prepareAxisRecord(axisRecordMap, yAxisModel);\r\n            xAxisRecord.rawExtentInfo = ensureScaleRawExtentInfo(xAxis.scale, xAxisModel, xAxisRecord.condExtent);\r\n            yAxisRecord.rawExtentInfo = ensureScaleRawExtentInfo(yAxis.scale, yAxisModel, yAxisRecord.condExtent);\r\n            xAxisRecord.rawExtentResult = xAxisRecord.rawExtentInfo.calculate();\r\n            yAxisRecord.rawExtentResult = yAxisRecord.rawExtentInfo.calculate();\r\n            var data = seriesRecord.seriesModel.getData();\r\n            var condDimMap = {};\r\n            var tarDimMap = {};\r\n            var condAxis;\r\n            var tarAxisRecord;\r\n            function addCondition(axis, axisRecord) {\r\n                var condExtent = axisRecord.condExtent;\r\n                var rawExtentResult = axisRecord.rawExtentResult;\r\n                if (axis.type === 'category'\r\n                    && (condExtent[0] < rawExtentResult.min || rawExtentResult.max < condExtent[1])) {\r\n                    each(getDataDimensionsOnAxis(data, axis.dim), function (dataDim) {\r\n                        if (!hasOwn(condDimMap, dataDim)) {\r\n                            condDimMap[dataDim] = true;\r\n                            condAxis = axis;\r\n                        }\r\n                    });\r\n                }\r\n            }\r\n            function addTarget(axis, axisRecord) {\r\n                var rawExtentResult = axisRecord.rawExtentResult;\r\n                if (axis.type !== 'category'\r\n                    && (!rawExtentResult.minFixed || !rawExtentResult.maxFixed)) {\r\n                    each(getDataDimensionsOnAxis(data, axis.dim), function (dataDim) {\r\n                        if (!hasOwn(condDimMap, dataDim) && !hasOwn(tarDimMap, dataDim)) {\r\n                            tarDimMap[dataDim] = true;\r\n                            tarAxisRecord = axisRecord;\r\n                        }\r\n                    });\r\n                }\r\n            }\r\n            addCondition(xAxis, xAxisRecord);\r\n            addCondition(yAxis, yAxisRecord);\r\n            addTarget(xAxis, xAxisRecord);\r\n            addTarget(yAxis, yAxisRecord);\r\n            var condDims = keys(condDimMap);\r\n            var tarDims = keys(tarDimMap);\r\n            var tarDimExtents = map(tarDims, function () {\r\n                return initExtent();\r\n            });\r\n            var condDimsLen = condDims.length;\r\n            var tarDimsLen = tarDims.length;\r\n            if (!condDimsLen || !tarDimsLen) {\r\n                return;\r\n            }\r\n            var singleCondDim = condDimsLen === 1 ? condDims[0] : null;\r\n            var singleTarDim = tarDimsLen === 1 ? tarDims[0] : null;\r\n            var dataLen = data.count();\r\n            if (singleCondDim && singleTarDim) {\r\n                for (var dataIdx = 0; dataIdx < dataLen; dataIdx++) {\r\n                    var condVal = data.get(singleCondDim, dataIdx);\r\n                    if (condAxis.scale.isInExtentRange(condVal)) {\r\n                        unionExtent(tarDimExtents[0], data.get(singleTarDim, dataIdx));\r\n                    }\r\n                }\r\n            }\r\n            else {\r\n                for (var dataIdx = 0; dataIdx < dataLen; dataIdx++) {\r\n                    for (var j = 0; j < condDimsLen; j++) {\r\n                        var condVal = data.get(condDims[j], dataIdx);\r\n                        if (condAxis.scale.isInExtentRange(condVal)) {\r\n                            for (var k = 0; k < tarDimsLen; k++) {\r\n                                unionExtent(tarDimExtents[k], data.get(tarDims[k], dataIdx));\r\n                            }\r\n                            break;\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n            each(tarDimExtents, function (tarDimExtent, i) {\r\n                var dim = tarDims[i];\r\n                data.setApproximateExtent(tarDimExtent, dim);\r\n                var tarAxisExtent = tarAxisRecord.tarExtent = tarAxisRecord.tarExtent || initExtent();\r\n                unionExtent(tarAxisExtent, tarDimExtent[0]);\r\n                unionExtent(tarAxisExtent, tarDimExtent[1]);\r\n            });\r\n        });\r\n    }\r\n    function shrinkAxisExtent(axisRecordMap) {\r\n        axisRecordMap.each(function (axisRecord) {\r\n            var tarAxisExtent = axisRecord.tarExtent;\r\n            if (tarAxisExtent) {\r\n                var rawExtentResult = axisRecord.rawExtentResult;\r\n                var rawExtentInfo = axisRecord.rawExtentInfo;\r\n                if (!rawExtentResult.minFixed && tarAxisExtent[0] > rawExtentResult.min) {\r\n                    rawExtentInfo.modifyDataMinMax('min', tarAxisExtent[0]);\r\n                }\r\n                if (!rawExtentResult.maxFixed && tarAxisExtent[1] < rawExtentResult.max) {\r\n                    rawExtentInfo.modifyDataMinMax('max', tarAxisExtent[1]);\r\n                }\r\n            }\r\n        });\r\n    }\r\n    function prepareAxisRecord(axisRecordMap, axisModel) {\r\n        return axisRecordMap.get(axisModel.uid)\r\n            || axisRecordMap.set(axisModel.uid, { condExtent: initExtent() });\r\n    }\r\n    function initExtent() {\r\n        return [Infinity, -Infinity];\r\n    }\r\n    function unionExtent(extent, val) {\r\n        val < extent[0] && (extent[0] = val);\r\n        val > extent[1] && (extent[1] = val);\r\n    }\n\n    var GridModel = (function (_super) {\r\n        __extends(GridModel, _super);\r\n        function GridModel() {\r\n            return _super !== null && _super.apply(this, arguments) || this;\r\n        }\r\n        GridModel.type = 'grid';\r\n        GridModel.dependencies = ['xAxis', 'yAxis'];\r\n        GridModel.layoutMode = 'box';\r\n        GridModel.defaultOption = {\r\n            show: false,\r\n            zlevel: 0,\r\n            z: 0,\r\n            left: '10%',\r\n            top: 60,\r\n            right: '10%',\r\n            bottom: 70,\r\n            containLabel: false,\r\n            backgroundColor: 'rgba(0,0,0,0)',\r\n            borderWidth: 1,\r\n            borderColor: '#ccc'\r\n        };\r\n        return GridModel;\r\n    }(ComponentModel));\n\n    var GridView = (function (_super) {\r\n        __extends(GridView, _super);\r\n        function GridView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = 'grid';\r\n            return _this;\r\n        }\r\n        GridView.prototype.render = function (gridModel, ecModel) {\r\n            this.group.removeAll();\r\n            if (gridModel.get('show')) {\r\n                this.group.add(new Rect({\r\n                    shape: gridModel.coordinateSystem.getRect(),\r\n                    style: defaults({\r\n                        fill: gridModel.get('backgroundColor')\r\n                    }, gridModel.getItemStyle()),\r\n                    silent: true,\r\n                    z2: -1\r\n                }));\r\n            }\r\n        };\r\n        GridView.type = 'grid';\r\n        return GridView;\r\n    }(ComponentView));\r\n    ComponentView.registerClass(GridView);\r\n    ComponentModel.registerClass(GridModel);\r\n    registerPreprocessor(function (option) {\r\n        if (option.xAxis && option.yAxis && !option.grid) {\r\n            option.grid = {};\r\n        }\r\n    });\n\n    registerLayout(pointsLayout('line', true));\r\n    registerProcessor(PRIORITY.PROCESSOR.STATISTIC, dataSample('line'));\n\n    var Cartesian = (function () {\r\n        function Cartesian(name) {\r\n            this.type = 'cartesian';\r\n            this._dimList = [];\r\n            this._axes = {};\r\n            this.name = name || '';\r\n        }\r\n        Cartesian.prototype.getAxis = function (dim) {\r\n            return this._axes[dim];\r\n        };\r\n        Cartesian.prototype.getAxes = function () {\r\n            return map(this._dimList, function (dim) {\r\n                return this._axes[dim];\r\n            }, this);\r\n        };\r\n        Cartesian.prototype.getAxesByScale = function (scaleType) {\r\n            scaleType = scaleType.toLowerCase();\r\n            return filter(this.getAxes(), function (axis) {\r\n                return axis.scale.type === scaleType;\r\n            });\r\n        };\r\n        Cartesian.prototype.addAxis = function (axis) {\r\n            var dim = axis.dim;\r\n            this._axes[dim] = axis;\r\n            this._dimList.push(dim);\r\n        };\r\n        return Cartesian;\r\n    }());\n\n    var cartesian2DDimensions = ['x', 'y'];\r\n    function canCalculateAffineTransform(scale) {\r\n        return scale.type === 'interval' || scale.type === 'time';\r\n    }\r\n    var Cartesian2D = (function (_super) {\r\n        __extends(Cartesian2D, _super);\r\n        function Cartesian2D() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = 'cartesian2d';\r\n            _this.dimensions = cartesian2DDimensions;\r\n            return _this;\r\n        }\r\n        Cartesian2D.prototype.calcAffineTransform = function () {\r\n            this._transform = this._invTransform = null;\r\n            var xAxisScale = this.getAxis('x').scale;\r\n            var yAxisScale = this.getAxis('y').scale;\r\n            if (!canCalculateAffineTransform(xAxisScale) || !canCalculateAffineTransform(yAxisScale)) {\r\n                return;\r\n            }\r\n            var xScaleExtent = xAxisScale.getExtent();\r\n            var yScaleExtent = yAxisScale.getExtent();\r\n            var start = this.dataToPoint([xScaleExtent[0], yScaleExtent[0]]);\r\n            var end = this.dataToPoint([xScaleExtent[1], yScaleExtent[1]]);\r\n            var xScaleSpan = xScaleExtent[1] - xScaleExtent[0];\r\n            var yScaleSpan = yScaleExtent[1] - yScaleExtent[0];\r\n            if (!xScaleSpan || !yScaleSpan) {\r\n                return;\r\n            }\r\n            var scaleX = (end[0] - start[0]) / xScaleSpan;\r\n            var scaleY = (end[1] - start[1]) / yScaleSpan;\r\n            var translateX = start[0] - xScaleExtent[0] * scaleX;\r\n            var translateY = start[1] - yScaleExtent[0] * scaleY;\r\n            var m = this._transform = [scaleX, 0, 0, scaleY, translateX, translateY];\r\n            this._invTransform = invert([], m);\r\n        };\r\n        Cartesian2D.prototype.getBaseAxis = function () {\r\n            return this.getAxesByScale('ordinal')[0]\r\n                || this.getAxesByScale('time')[0]\r\n                || this.getAxis('x');\r\n        };\r\n        Cartesian2D.prototype.containPoint = function (point) {\r\n            var axisX = this.getAxis('x');\r\n            var axisY = this.getAxis('y');\r\n            return axisX.contain(axisX.toLocalCoord(point[0]))\r\n                && axisY.contain(axisY.toLocalCoord(point[1]));\r\n        };\r\n        Cartesian2D.prototype.containData = function (data) {\r\n            return this.getAxis('x').containData(data[0])\r\n                && this.getAxis('y').containData(data[1]);\r\n        };\r\n        Cartesian2D.prototype.dataToPoint = function (data, reserved, out) {\r\n            out = out || [];\r\n            var xVal = data[0];\r\n            var yVal = data[1];\r\n            if (this._transform\r\n                && xVal != null\r\n                && isFinite(xVal)\r\n                && yVal != null\r\n                && isFinite(yVal)) {\r\n                return applyTransform(out, data, this._transform);\r\n            }\r\n            var xAxis = this.getAxis('x');\r\n            var yAxis = this.getAxis('y');\r\n            out[0] = xAxis.toGlobalCoord(xAxis.dataToCoord(xVal));\r\n            out[1] = yAxis.toGlobalCoord(yAxis.dataToCoord(yVal));\r\n            return out;\r\n        };\r\n        Cartesian2D.prototype.clampData = function (data, out) {\r\n            var xScale = this.getAxis('x').scale;\r\n            var yScale = this.getAxis('y').scale;\r\n            var xAxisExtent = xScale.getExtent();\r\n            var yAxisExtent = yScale.getExtent();\r\n            var x = xScale.parse(data[0]);\r\n            var y = yScale.parse(data[1]);\r\n            out = out || [];\r\n            out[0] = Math.min(Math.max(Math.min(xAxisExtent[0], xAxisExtent[1]), x), Math.max(xAxisExtent[0], xAxisExtent[1]));\r\n            out[1] = Math.min(Math.max(Math.min(yAxisExtent[0], yAxisExtent[1]), y), Math.max(yAxisExtent[0], yAxisExtent[1]));\r\n            return out;\r\n        };\r\n        Cartesian2D.prototype.pointToData = function (point, out) {\r\n            out = out || [];\r\n            if (this._invTransform) {\r\n                return applyTransform(out, point, this._invTransform);\r\n            }\r\n            var xAxis = this.getAxis('x');\r\n            var yAxis = this.getAxis('y');\r\n            out[0] = xAxis.coordToData(xAxis.toLocalCoord(point[0]));\r\n            out[1] = yAxis.coordToData(yAxis.toLocalCoord(point[1]));\r\n            return out;\r\n        };\r\n        Cartesian2D.prototype.getOtherAxis = function (axis) {\r\n            return this.getAxis(axis.dim === 'x' ? 'y' : 'x');\r\n        };\r\n        Cartesian2D.prototype.getArea = function () {\r\n            var xExtent = this.getAxis('x').getGlobalExtent();\r\n            var yExtent = this.getAxis('y').getGlobalExtent();\r\n            var x = Math.min(xExtent[0], xExtent[1]);\r\n            var y = Math.min(yExtent[0], yExtent[1]);\r\n            var width = Math.max(xExtent[0], xExtent[1]) - x;\r\n            var height = Math.max(yExtent[0], yExtent[1]) - y;\r\n            return new BoundingRect(x, y, width, height);\r\n        };\r\n        return Cartesian2D;\r\n    }(Cartesian));\n\n    var inner$5 = makeInner();\r\n    function createAxisLabels(axis) {\r\n        return axis.type === 'category'\r\n            ? makeCategoryLabels(axis)\r\n            : makeRealNumberLabels(axis);\r\n    }\r\n    function createAxisTicks(axis, tickModel) {\r\n        return axis.type === 'category'\r\n            ? makeCategoryTicks(axis, tickModel)\r\n            : { ticks: map(axis.scale.getTicks(), function (tick) { return tick.value; }) };\r\n    }\r\n    function makeCategoryLabels(axis) {\r\n        var labelModel = axis.getLabelModel();\r\n        var result = makeCategoryLabelsActually(axis, labelModel);\r\n        return (!labelModel.get('show') || axis.scale.isBlank())\r\n            ? { labels: [], labelCategoryInterval: result.labelCategoryInterval }\r\n            : result;\r\n    }\r\n    function makeCategoryLabelsActually(axis, labelModel) {\r\n        var labelsCache = getListCache(axis, 'labels');\r\n        var optionLabelInterval = getOptionCategoryInterval(labelModel);\r\n        var result = listCacheGet(labelsCache, optionLabelInterval);\r\n        if (result) {\r\n            return result;\r\n        }\r\n        var labels;\r\n        var numericLabelInterval;\r\n        if (isFunction(optionLabelInterval)) {\r\n            labels = makeLabelsByCustomizedCategoryInterval(axis, optionLabelInterval);\r\n        }\r\n        else {\r\n            numericLabelInterval = optionLabelInterval === 'auto'\r\n                ? makeAutoCategoryInterval(axis) : optionLabelInterval;\r\n            labels = makeLabelsByNumericCategoryInterval(axis, numericLabelInterval);\r\n        }\r\n        return listCacheSet(labelsCache, optionLabelInterval, {\r\n            labels: labels, labelCategoryInterval: numericLabelInterval\r\n        });\r\n    }\r\n    function makeCategoryTicks(axis, tickModel) {\r\n        var ticksCache = getListCache(axis, 'ticks');\r\n        var optionTickInterval = getOptionCategoryInterval(tickModel);\r\n        var result = listCacheGet(ticksCache, optionTickInterval);\r\n        if (result) {\r\n            return result;\r\n        }\r\n        var ticks;\r\n        var tickCategoryInterval;\r\n        if (!tickModel.get('show') || axis.scale.isBlank()) {\r\n            ticks = [];\r\n        }\r\n        if (isFunction(optionTickInterval)) {\r\n            ticks = makeLabelsByCustomizedCategoryInterval(axis, optionTickInterval, true);\r\n        }\r\n        else if (optionTickInterval === 'auto') {\r\n            var labelsResult = makeCategoryLabelsActually(axis, axis.getLabelModel());\r\n            tickCategoryInterval = labelsResult.labelCategoryInterval;\r\n            ticks = map(labelsResult.labels, function (labelItem) {\r\n                return labelItem.tickValue;\r\n            });\r\n        }\r\n        else {\r\n            tickCategoryInterval = optionTickInterval;\r\n            ticks = makeLabelsByNumericCategoryInterval(axis, tickCategoryInterval, true);\r\n        }\r\n        return listCacheSet(ticksCache, optionTickInterval, {\r\n            ticks: ticks, tickCategoryInterval: tickCategoryInterval\r\n        });\r\n    }\r\n    function makeRealNumberLabels(axis) {\r\n        var ticks = axis.scale.getTicks();\r\n        var labelFormatter = makeLabelFormatter(axis);\r\n        return {\r\n            labels: map(ticks, function (tick, idx) {\r\n                return {\r\n                    formattedLabel: labelFormatter(tick, idx),\r\n                    rawLabel: axis.scale.getLabel(tick),\r\n                    tickValue: tick.value\r\n                };\r\n            })\r\n        };\r\n    }\r\n    function getListCache(axis, prop) {\r\n        return inner$5(axis)[prop] || (inner$5(axis)[prop] = []);\r\n    }\r\n    function listCacheGet(cache, key) {\r\n        for (var i = 0; i < cache.length; i++) {\r\n            if (cache[i].key === key) {\r\n                return cache[i].value;\r\n            }\r\n        }\r\n    }\r\n    function listCacheSet(cache, key, value) {\r\n        cache.push({ key: key, value: value });\r\n        return value;\r\n    }\r\n    function makeAutoCategoryInterval(axis) {\r\n        var result = inner$5(axis).autoInterval;\r\n        return result != null\r\n            ? result\r\n            : (inner$5(axis).autoInterval = axis.calculateCategoryInterval());\r\n    }\r\n    function calculateCategoryInterval(axis) {\r\n        var params = fetchAutoCategoryIntervalCalculationParams(axis);\r\n        var labelFormatter = makeLabelFormatter(axis);\r\n        var rotation = (params.axisRotate - params.labelRotate) / 180 * Math.PI;\r\n        var ordinalScale = axis.scale;\r\n        var ordinalExtent = ordinalScale.getExtent();\r\n        var tickCount = ordinalScale.count();\r\n        if (ordinalExtent[1] - ordinalExtent[0] < 1) {\r\n            return 0;\r\n        }\r\n        var step = 1;\r\n        if (tickCount > 40) {\r\n            step = Math.max(1, Math.floor(tickCount / 40));\r\n        }\r\n        var tickValue = ordinalExtent[0];\r\n        var unitSpan = axis.dataToCoord(tickValue + 1) - axis.dataToCoord(tickValue);\r\n        var unitW = Math.abs(unitSpan * Math.cos(rotation));\r\n        var unitH = Math.abs(unitSpan * Math.sin(rotation));\r\n        var maxW = 0;\r\n        var maxH = 0;\r\n        for (; tickValue <= ordinalExtent[1]; tickValue += step) {\r\n            var width = 0;\r\n            var height = 0;\r\n            var rect = getBoundingRect(labelFormatter({ value: tickValue }), params.font, 'center', 'top');\r\n            width = rect.width * 1.3;\r\n            height = rect.height * 1.3;\r\n            maxW = Math.max(maxW, width, 7);\r\n            maxH = Math.max(maxH, height, 7);\r\n        }\r\n        var dw = maxW / unitW;\r\n        var dh = maxH / unitH;\r\n        isNaN(dw) && (dw = Infinity);\r\n        isNaN(dh) && (dh = Infinity);\r\n        var interval = Math.max(0, Math.floor(Math.min(dw, dh)));\r\n        var cache = inner$5(axis.model);\r\n        var axisExtent = axis.getExtent();\r\n        var lastAutoInterval = cache.lastAutoInterval;\r\n        var lastTickCount = cache.lastTickCount;\r\n        if (lastAutoInterval != null\r\n            && lastTickCount != null\r\n            && Math.abs(lastAutoInterval - interval) <= 1\r\n            && Math.abs(lastTickCount - tickCount) <= 1\r\n            && lastAutoInterval > interval\r\n            && cache.axisExtent0 === axisExtent[0]\r\n            && cache.axisExtent1 === axisExtent[1]) {\r\n            interval = lastAutoInterval;\r\n        }\r\n        else {\r\n            cache.lastTickCount = tickCount;\r\n            cache.lastAutoInterval = interval;\r\n            cache.axisExtent0 = axisExtent[0];\r\n            cache.axisExtent1 = axisExtent[1];\r\n        }\r\n        return interval;\r\n    }\r\n    function fetchAutoCategoryIntervalCalculationParams(axis) {\r\n        var labelModel = axis.getLabelModel();\r\n        return {\r\n            axisRotate: axis.getRotate\r\n                ? axis.getRotate()\r\n                : (axis.isHorizontal && !axis.isHorizontal())\r\n                    ? 90\r\n                    : 0,\r\n            labelRotate: labelModel.get('rotate') || 0,\r\n            font: labelModel.getFont()\r\n        };\r\n    }\r\n    function makeLabelsByNumericCategoryInterval(axis, categoryInterval, onlyTick) {\r\n        var labelFormatter = makeLabelFormatter(axis);\r\n        var ordinalScale = axis.scale;\r\n        var ordinalExtent = ordinalScale.getExtent();\r\n        var labelModel = axis.getLabelModel();\r\n        var result = [];\r\n        var step = Math.max((categoryInterval || 0) + 1, 1);\r\n        var startTick = ordinalExtent[0];\r\n        var tickCount = ordinalScale.count();\r\n        if (startTick !== 0 && step > 1 && tickCount / step > 2) {\r\n            startTick = Math.round(Math.ceil(startTick / step) * step);\r\n        }\r\n        var showAllLabel = shouldShowAllLabels(axis);\r\n        var includeMinLabel = labelModel.get('showMinLabel') || showAllLabel;\r\n        var includeMaxLabel = labelModel.get('showMaxLabel') || showAllLabel;\r\n        if (includeMinLabel && startTick !== ordinalExtent[0]) {\r\n            addItem(ordinalExtent[0]);\r\n        }\r\n        var tickValue = startTick;\r\n        for (; tickValue <= ordinalExtent[1]; tickValue += step) {\r\n            addItem(tickValue);\r\n        }\r\n        if (includeMaxLabel && tickValue - step !== ordinalExtent[1]) {\r\n            addItem(ordinalExtent[1]);\r\n        }\r\n        function addItem(tickValue) {\r\n            var tickObj = { value: tickValue };\r\n            result.push(onlyTick\r\n                ? tickValue\r\n                : {\r\n                    formattedLabel: labelFormatter(tickObj),\r\n                    rawLabel: ordinalScale.getLabel(tickObj),\r\n                    tickValue: tickValue\r\n                });\r\n        }\r\n        return result;\r\n    }\r\n    function makeLabelsByCustomizedCategoryInterval(axis, categoryInterval, onlyTick) {\r\n        var ordinalScale = axis.scale;\r\n        var labelFormatter = makeLabelFormatter(axis);\r\n        var result = [];\r\n        each(ordinalScale.getTicks(), function (tick) {\r\n            var rawLabel = ordinalScale.getLabel(tick);\r\n            var tickValue = tick.value;\r\n            if (categoryInterval(tick.value, rawLabel)) {\r\n                result.push(onlyTick\r\n                    ? tickValue\r\n                    : {\r\n                        formattedLabel: labelFormatter(tick),\r\n                        rawLabel: rawLabel,\r\n                        tickValue: tickValue\r\n                    });\r\n            }\r\n        });\r\n        return result;\r\n    }\n\n    var NORMALIZED_EXTENT = [0, 1];\r\n    var Axis = (function () {\r\n        function Axis(dim, scale, extent) {\r\n            this.onBand = false;\r\n            this.inverse = false;\r\n            this.dim = dim;\r\n            this.scale = scale;\r\n            this._extent = extent || [0, 0];\r\n        }\r\n        Axis.prototype.contain = function (coord) {\r\n            var extent = this._extent;\r\n            var min = Math.min(extent[0], extent[1]);\r\n            var max = Math.max(extent[0], extent[1]);\r\n            return coord >= min && coord <= max;\r\n        };\r\n        Axis.prototype.containData = function (data) {\r\n            return this.scale.contain(data);\r\n        };\r\n        Axis.prototype.getExtent = function () {\r\n            return this._extent.slice();\r\n        };\r\n        Axis.prototype.getPixelPrecision = function (dataExtent) {\r\n            return getPixelPrecision(dataExtent || this.scale.getExtent(), this._extent);\r\n        };\r\n        Axis.prototype.setExtent = function (start, end) {\r\n            var extent = this._extent;\r\n            extent[0] = start;\r\n            extent[1] = end;\r\n        };\r\n        Axis.prototype.dataToCoord = function (data, clamp) {\r\n            var extent = this._extent;\r\n            var scale = this.scale;\r\n            data = scale.normalize(data);\r\n            if (this.onBand && scale.type === 'ordinal') {\r\n                extent = extent.slice();\r\n                fixExtentWithBands(extent, scale.count());\r\n            }\r\n            return linearMap(data, NORMALIZED_EXTENT, extent, clamp);\r\n        };\r\n        Axis.prototype.coordToData = function (coord, clamp) {\r\n            var extent = this._extent;\r\n            var scale = this.scale;\r\n            if (this.onBand && scale.type === 'ordinal') {\r\n                extent = extent.slice();\r\n                fixExtentWithBands(extent, scale.count());\r\n            }\r\n            var t = linearMap(coord, extent, NORMALIZED_EXTENT, clamp);\r\n            return this.scale.scale(t);\r\n        };\r\n        Axis.prototype.pointToData = function (point, clamp) {\r\n            return;\r\n        };\r\n        Axis.prototype.getTicksCoords = function (opt) {\r\n            opt = opt || {};\r\n            var tickModel = opt.tickModel || this.getTickModel();\r\n            var result = createAxisTicks(this, tickModel);\r\n            var ticks = result.ticks;\r\n            var ticksCoords = map(ticks, function (tickVal) {\r\n                return {\r\n                    coord: this.dataToCoord(this.scale.type === 'ordinal'\r\n                        ? this.scale.getRawIndex(tickVal)\r\n                        : tickVal),\r\n                    tickValue: tickVal\r\n                };\r\n            }, this);\r\n            var alignWithLabel = tickModel.get('alignWithLabel');\r\n            fixOnBandTicksCoords(this, ticksCoords, alignWithLabel, opt.clamp);\r\n            return ticksCoords;\r\n        };\r\n        Axis.prototype.getMinorTicksCoords = function () {\r\n            if (this.scale.type === 'ordinal') {\r\n                return [];\r\n            }\r\n            var minorTickModel = this.model.getModel('minorTick');\r\n            var splitNumber = minorTickModel.get('splitNumber');\r\n            if (!(splitNumber > 0 && splitNumber < 100)) {\r\n                splitNumber = 5;\r\n            }\r\n            var minorTicks = this.scale.getMinorTicks(splitNumber);\r\n            var minorTicksCoords = map(minorTicks, function (minorTicksGroup) {\r\n                return map(minorTicksGroup, function (minorTick) {\r\n                    return {\r\n                        coord: this.dataToCoord(minorTick),\r\n                        tickValue: minorTick\r\n                    };\r\n                }, this);\r\n            }, this);\r\n            return minorTicksCoords;\r\n        };\r\n        Axis.prototype.getViewLabels = function () {\r\n            return createAxisLabels(this).labels;\r\n        };\r\n        Axis.prototype.getLabelModel = function () {\r\n            return this.model.getModel('axisLabel');\r\n        };\r\n        Axis.prototype.getTickModel = function () {\r\n            return this.model.getModel('axisTick');\r\n        };\r\n        Axis.prototype.getBandWidth = function () {\r\n            var axisExtent = this._extent;\r\n            var dataExtent = this.scale.getExtent();\r\n            var len = dataExtent[1] - dataExtent[0] + (this.onBand ? 1 : 0);\r\n            len === 0 && (len = 1);\r\n            var size = Math.abs(axisExtent[1] - axisExtent[0]);\r\n            return Math.abs(size) / len;\r\n        };\r\n        Axis.prototype.calculateCategoryInterval = function () {\r\n            return calculateCategoryInterval(this);\r\n        };\r\n        return Axis;\r\n    }());\r\n    function fixExtentWithBands(extent, nTick) {\r\n        var size = extent[1] - extent[0];\r\n        var len = nTick;\r\n        var margin = size / len / 2;\r\n        extent[0] += margin;\r\n        extent[1] -= margin;\r\n    }\r\n    function fixOnBandTicksCoords(axis, ticksCoords, alignWithLabel, clamp) {\r\n        var ticksLen = ticksCoords.length;\r\n        if (!axis.onBand || alignWithLabel || !ticksLen) {\r\n            return;\r\n        }\r\n        var axisExtent = axis.getExtent();\r\n        var last;\r\n        var diffSize;\r\n        if (ticksLen === 1) {\r\n            ticksCoords[0].coord = axisExtent[0];\r\n            last = ticksCoords[1] = { coord: axisExtent[0] };\r\n        }\r\n        else {\r\n            var crossLen = ticksCoords[ticksLen - 1].tickValue - ticksCoords[0].tickValue;\r\n            var shift_1 = (ticksCoords[ticksLen - 1].coord - ticksCoords[0].coord) / crossLen;\r\n            each(ticksCoords, function (ticksItem) {\r\n                ticksItem.coord -= shift_1 / 2;\r\n            });\r\n            var dataExtent = axis.scale.getExtent();\r\n            diffSize = 1 + dataExtent[1] - ticksCoords[ticksLen - 1].tickValue;\r\n            last = { coord: ticksCoords[ticksLen - 1].coord + shift_1 * diffSize };\r\n            ticksCoords.push(last);\r\n        }\r\n        var inverse = axisExtent[0] > axisExtent[1];\r\n        if (littleThan(ticksCoords[0].coord, axisExtent[0])) {\r\n            clamp ? (ticksCoords[0].coord = axisExtent[0]) : ticksCoords.shift();\r\n        }\r\n        if (clamp && littleThan(axisExtent[0], ticksCoords[0].coord)) {\r\n            ticksCoords.unshift({ coord: axisExtent[0] });\r\n        }\r\n        if (littleThan(axisExtent[1], last.coord)) {\r\n            clamp ? (last.coord = axisExtent[1]) : ticksCoords.pop();\r\n        }\r\n        if (clamp && littleThan(last.coord, axisExtent[1])) {\r\n            ticksCoords.push({ coord: axisExtent[1] });\r\n        }\r\n        function littleThan(a, b) {\r\n            a = round$1(a);\r\n            b = round$1(b);\r\n            return inverse ? a > b : a < b;\r\n        }\r\n    }\n\n    var Axis2D = (function (_super) {\r\n        __extends(Axis2D, _super);\r\n        function Axis2D(dim, scale, coordExtent, axisType, position) {\r\n            var _this = _super.call(this, dim, scale, coordExtent) || this;\r\n            _this.index = 0;\r\n            _this.type = axisType || 'value';\r\n            _this.position = position || 'bottom';\r\n            return _this;\r\n        }\r\n        Axis2D.prototype.isHorizontal = function () {\r\n            var position = this.position;\r\n            return position === 'top' || position === 'bottom';\r\n        };\r\n        Axis2D.prototype.getGlobalExtent = function (asc) {\r\n            var ret = this.getExtent();\r\n            ret[0] = this.toGlobalCoord(ret[0]);\r\n            ret[1] = this.toGlobalCoord(ret[1]);\r\n            asc && ret[0] > ret[1] && ret.reverse();\r\n            return ret;\r\n        };\r\n        Axis2D.prototype.pointToData = function (point, clamp) {\r\n            return this.coordToData(this.toLocalCoord(point[this.dim === 'x' ? 0 : 1]), clamp);\r\n        };\r\n        Axis2D.prototype.setCategorySortInfo = function (info) {\r\n            if (this.type !== 'category') {\r\n                return false;\r\n            }\r\n            this.model.option.categorySortInfo = info;\r\n            this.scale.setCategorySortInfo(info);\r\n        };\r\n        return Axis2D;\r\n    }(Axis));\n\n    var Grid = (function () {\r\n        function Grid(gridModel, ecModel, api) {\r\n            this.type = 'grid';\r\n            this._coordsMap = {};\r\n            this._coordsList = [];\r\n            this._axesMap = {};\r\n            this._axesList = [];\r\n            this.axisPointerEnabled = true;\r\n            this.dimensions = cartesian2DDimensions;\r\n            this._initCartesian(gridModel, ecModel, api);\r\n            this.model = gridModel;\r\n        }\r\n        Grid.prototype.getRect = function () {\r\n            return this._rect;\r\n        };\r\n        Grid.prototype.update = function (ecModel, api) {\r\n            var axesMap = this._axesMap;\r\n            this._updateScale(ecModel, this.model);\r\n            each(axesMap.x, function (xAxis) {\r\n                niceScaleExtent(xAxis.scale, xAxis.model);\r\n            });\r\n            each(axesMap.y, function (yAxis) {\r\n                niceScaleExtent(yAxis.scale, yAxis.model);\r\n            });\r\n            var onZeroRecords = {};\r\n            each(axesMap.x, function (xAxis) {\r\n                fixAxisOnZero(axesMap, 'y', xAxis, onZeroRecords);\r\n            });\r\n            each(axesMap.y, function (yAxis) {\r\n                fixAxisOnZero(axesMap, 'x', yAxis, onZeroRecords);\r\n            });\r\n            this.resize(this.model, api);\r\n        };\r\n        Grid.prototype.resize = function (gridModel, api, ignoreContainLabel) {\r\n            var boxLayoutParams = gridModel.getBoxLayoutParams();\r\n            var isContainLabel = !ignoreContainLabel && gridModel.get('containLabel');\r\n            var gridRect = getLayoutRect(boxLayoutParams, {\r\n                width: api.getWidth(),\r\n                height: api.getHeight()\r\n            });\r\n            this._rect = gridRect;\r\n            var axesList = this._axesList;\r\n            adjustAxes();\r\n            if (isContainLabel) {\r\n                each(axesList, function (axis) {\r\n                    if (!axis.model.get(['axisLabel', 'inside'])) {\r\n                        var labelUnionRect = estimateLabelUnionRect(axis);\r\n                        if (labelUnionRect) {\r\n                            var dim = axis.isHorizontal() ? 'height' : 'width';\r\n                            var margin = axis.model.get(['axisLabel', 'margin']);\r\n                            gridRect[dim] -= labelUnionRect[dim] + margin;\r\n                            if (axis.position === 'top') {\r\n                                gridRect.y += labelUnionRect.height + margin;\r\n                            }\r\n                            else if (axis.position === 'left') {\r\n                                gridRect.x += labelUnionRect.width + margin;\r\n                            }\r\n                        }\r\n                    }\r\n                });\r\n                adjustAxes();\r\n            }\r\n            each(this._coordsList, function (coord) {\r\n                coord.calcAffineTransform();\r\n            });\r\n            function adjustAxes() {\r\n                each(axesList, function (axis) {\r\n                    var isHorizontal = axis.isHorizontal();\r\n                    var extent = isHorizontal ? [0, gridRect.width] : [0, gridRect.height];\r\n                    var idx = axis.inverse ? 1 : 0;\r\n                    axis.setExtent(extent[idx], extent[1 - idx]);\r\n                    updateAxisTransform(axis, isHorizontal ? gridRect.x : gridRect.y);\r\n                });\r\n            }\r\n        };\r\n        Grid.prototype.getAxis = function (dim, axisIndex) {\r\n            var axesMapOnDim = this._axesMap[dim];\r\n            if (axesMapOnDim != null) {\r\n                return axesMapOnDim[axisIndex || 0];\r\n            }\r\n        };\r\n        Grid.prototype.getAxes = function () {\r\n            return this._axesList.slice();\r\n        };\r\n        Grid.prototype.getCartesian = function (xAxisIndex, yAxisIndex) {\r\n            if (xAxisIndex != null && yAxisIndex != null) {\r\n                var key = 'x' + xAxisIndex + 'y' + yAxisIndex;\r\n                return this._coordsMap[key];\r\n            }\r\n            if (isObject(xAxisIndex)) {\r\n                yAxisIndex = xAxisIndex.yAxisIndex;\r\n                xAxisIndex = xAxisIndex.xAxisIndex;\r\n            }\r\n            for (var i = 0, coordList = this._coordsList; i < coordList.length; i++) {\r\n                if (coordList[i].getAxis('x').index === xAxisIndex\r\n                    || coordList[i].getAxis('y').index === yAxisIndex) {\r\n                    return coordList[i];\r\n                }\r\n            }\r\n        };\r\n        Grid.prototype.getCartesians = function () {\r\n            return this._coordsList.slice();\r\n        };\r\n        Grid.prototype.convertToPixel = function (ecModel, finder, value) {\r\n            var target = this._findConvertTarget(finder);\r\n            return target.cartesian\r\n                ? target.cartesian.dataToPoint(value)\r\n                : target.axis\r\n                    ? target.axis.toGlobalCoord(target.axis.dataToCoord(value))\r\n                    : null;\r\n        };\r\n        Grid.prototype.convertFromPixel = function (ecModel, finder, value) {\r\n            var target = this._findConvertTarget(finder);\r\n            return target.cartesian\r\n                ? target.cartesian.pointToData(value)\r\n                : target.axis\r\n                    ? target.axis.coordToData(target.axis.toLocalCoord(value))\r\n                    : null;\r\n        };\r\n        Grid.prototype._findConvertTarget = function (finder) {\r\n            var seriesModel = finder.seriesModel;\r\n            var xAxisModel = finder.xAxisModel\r\n                || (seriesModel && seriesModel.getReferringComponents('xAxis', SINGLE_REFERRING).models[0]);\r\n            var yAxisModel = finder.yAxisModel\r\n                || (seriesModel && seriesModel.getReferringComponents('yAxis', SINGLE_REFERRING).models[0]);\r\n            var gridModel = finder.gridModel;\r\n            var coordsList = this._coordsList;\r\n            var cartesian;\r\n            var axis;\r\n            if (seriesModel) {\r\n                cartesian = seriesModel.coordinateSystem;\r\n                indexOf(coordsList, cartesian) < 0 && (cartesian = null);\r\n            }\r\n            else if (xAxisModel && yAxisModel) {\r\n                cartesian = this.getCartesian(xAxisModel.componentIndex, yAxisModel.componentIndex);\r\n            }\r\n            else if (xAxisModel) {\r\n                axis = this.getAxis('x', xAxisModel.componentIndex);\r\n            }\r\n            else if (yAxisModel) {\r\n                axis = this.getAxis('y', yAxisModel.componentIndex);\r\n            }\r\n            else if (gridModel) {\r\n                var grid = gridModel.coordinateSystem;\r\n                if (grid === this) {\r\n                    cartesian = this._coordsList[0];\r\n                }\r\n            }\r\n            return { cartesian: cartesian, axis: axis };\r\n        };\r\n        Grid.prototype.containPoint = function (point) {\r\n            var coord = this._coordsList[0];\r\n            if (coord) {\r\n                return coord.containPoint(point);\r\n            }\r\n        };\r\n        Grid.prototype._initCartesian = function (gridModel, ecModel, api) {\r\n            var _this = this;\r\n            var grid = this;\r\n            var axisPositionUsed = {\r\n                left: false,\r\n                right: false,\r\n                top: false,\r\n                bottom: false\r\n            };\r\n            var axesMap = {\r\n                x: {},\r\n                y: {}\r\n            };\r\n            var axesCount = {\r\n                x: 0,\r\n                y: 0\r\n            };\r\n            ecModel.eachComponent('xAxis', createAxisCreator('x'), this);\r\n            ecModel.eachComponent('yAxis', createAxisCreator('y'), this);\r\n            if (!axesCount.x || !axesCount.y) {\r\n                this._axesMap = {};\r\n                this._axesList = [];\r\n                return;\r\n            }\r\n            this._axesMap = axesMap;\r\n            each(axesMap.x, function (xAxis, xAxisIndex) {\r\n                each(axesMap.y, function (yAxis, yAxisIndex) {\r\n                    var key = 'x' + xAxisIndex + 'y' + yAxisIndex;\r\n                    var cartesian = new Cartesian2D(key);\r\n                    cartesian.master = _this;\r\n                    cartesian.model = gridModel;\r\n                    _this._coordsMap[key] = cartesian;\r\n                    _this._coordsList.push(cartesian);\r\n                    cartesian.addAxis(xAxis);\r\n                    cartesian.addAxis(yAxis);\r\n                });\r\n            });\r\n            function createAxisCreator(dimName) {\r\n                return function (axisModel, idx) {\r\n                    if (!isAxisUsedInTheGrid(axisModel, gridModel)) {\r\n                        return;\r\n                    }\r\n                    var axisPosition = axisModel.get('position');\r\n                    if (dimName === 'x') {\r\n                        if (axisPosition !== 'top' && axisPosition !== 'bottom') {\r\n                            axisPosition = axisPositionUsed.bottom ? 'top' : 'bottom';\r\n                        }\r\n                    }\r\n                    else {\r\n                        if (axisPosition !== 'left' && axisPosition !== 'right') {\r\n                            axisPosition = axisPositionUsed.left ? 'right' : 'left';\r\n                        }\r\n                    }\r\n                    axisPositionUsed[axisPosition] = true;\r\n                    var axis = new Axis2D(dimName, createScaleByModel(axisModel), [0, 0], axisModel.get('type'), axisPosition);\r\n                    var isCategory = axis.type === 'category';\r\n                    axis.onBand = isCategory && axisModel.get('boundaryGap');\r\n                    axis.inverse = axisModel.get('inverse');\r\n                    axisModel.axis = axis;\r\n                    axis.model = axisModel;\r\n                    axis.grid = grid;\r\n                    axis.index = idx;\r\n                    grid._axesList.push(axis);\r\n                    axesMap[dimName][idx] = axis;\r\n                    axesCount[dimName]++;\r\n                };\r\n            }\r\n        };\r\n        Grid.prototype._updateScale = function (ecModel, gridModel) {\r\n            each(this._axesList, function (axis) {\r\n                axis.scale.setExtent(Infinity, -Infinity);\r\n                if (axis.type === 'category') {\r\n                    var categorySortInfo = axis.model.get('categorySortInfo');\r\n                    axis.scale.setCategorySortInfo(categorySortInfo);\r\n                }\r\n            });\r\n            ecModel.eachSeries(function (seriesModel) {\r\n                if (isCartesian2DSeries(seriesModel)) {\r\n                    var axesModelMap = findAxisModels(seriesModel);\r\n                    var xAxisModel = axesModelMap.xAxisModel;\r\n                    var yAxisModel = axesModelMap.yAxisModel;\r\n                    if (!isAxisUsedInTheGrid(xAxisModel, gridModel)\r\n                        || !isAxisUsedInTheGrid(yAxisModel, gridModel)) {\r\n                        return;\r\n                    }\r\n                    var cartesian = this.getCartesian(xAxisModel.componentIndex, yAxisModel.componentIndex);\r\n                    var data = seriesModel.getData();\r\n                    var xAxis = cartesian.getAxis('x');\r\n                    var yAxis = cartesian.getAxis('y');\r\n                    if (data.type === 'list') {\r\n                        unionExtent(data, xAxis);\r\n                        unionExtent(data, yAxis);\r\n                    }\r\n                }\r\n            }, this);\r\n            function unionExtent(data, axis) {\r\n                each(getDataDimensionsOnAxis(data, axis.dim), function (dim) {\r\n                    axis.scale.unionExtentFromData(data, dim);\r\n                });\r\n            }\r\n        };\r\n        Grid.prototype.getTooltipAxes = function (dim) {\r\n            var baseAxes = [];\r\n            var otherAxes = [];\r\n            each(this.getCartesians(), function (cartesian) {\r\n                var baseAxis = (dim != null && dim !== 'auto')\r\n                    ? cartesian.getAxis(dim) : cartesian.getBaseAxis();\r\n                var otherAxis = cartesian.getOtherAxis(baseAxis);\r\n                indexOf(baseAxes, baseAxis) < 0 && baseAxes.push(baseAxis);\r\n                indexOf(otherAxes, otherAxis) < 0 && otherAxes.push(otherAxis);\r\n            });\r\n            return { baseAxes: baseAxes, otherAxes: otherAxes };\r\n        };\r\n        Grid.create = function (ecModel, api) {\r\n            var grids = [];\r\n            ecModel.eachComponent('grid', function (gridModel, idx) {\r\n                var grid = new Grid(gridModel, ecModel, api);\r\n                grid.name = 'grid_' + idx;\r\n                grid.resize(gridModel, api, true);\r\n                gridModel.coordinateSystem = grid;\r\n                grids.push(grid);\r\n            });\r\n            ecModel.eachSeries(function (seriesModel) {\r\n                if (!isCartesian2DSeries(seriesModel)) {\r\n                    return;\r\n                }\r\n                var axesModelMap = findAxisModels(seriesModel);\r\n                var xAxisModel = axesModelMap.xAxisModel;\r\n                var yAxisModel = axesModelMap.yAxisModel;\r\n                var gridModel = xAxisModel.getCoordSysModel();\r\n                if (__DEV__) {\r\n                    if (!gridModel) {\r\n                        throw new Error('Grid \"' + retrieve3(xAxisModel.get('gridIndex'), xAxisModel.get('gridId'), 0) + '\" not found');\r\n                    }\r\n                    if (xAxisModel.getCoordSysModel() !== yAxisModel.getCoordSysModel()) {\r\n                        throw new Error('xAxis and yAxis must use the same grid');\r\n                    }\r\n                }\r\n                var grid = gridModel.coordinateSystem;\r\n                seriesModel.coordinateSystem = grid.getCartesian(xAxisModel.componentIndex, yAxisModel.componentIndex);\r\n            });\r\n            return grids;\r\n        };\r\n        Grid.dimensions = cartesian2DDimensions;\r\n        return Grid;\r\n    }());\r\n    function isAxisUsedInTheGrid(axisModel, gridModel) {\r\n        return axisModel.getCoordSysModel() === gridModel;\r\n    }\r\n    function fixAxisOnZero(axesMap, otherAxisDim, axis, onZeroRecords) {\r\n        axis.getAxesOnZeroOf = function () {\r\n            return otherAxisOnZeroOf ? [otherAxisOnZeroOf] : [];\r\n        };\r\n        var otherAxes = axesMap[otherAxisDim];\r\n        var otherAxisOnZeroOf;\r\n        var axisModel = axis.model;\r\n        var onZero = axisModel.get(['axisLine', 'onZero']);\r\n        var onZeroAxisIndex = axisModel.get(['axisLine', 'onZeroAxisIndex']);\r\n        if (!onZero) {\r\n            return;\r\n        }\r\n        if (onZeroAxisIndex != null) {\r\n            if (canOnZeroToAxis(otherAxes[onZeroAxisIndex])) {\r\n                otherAxisOnZeroOf = otherAxes[onZeroAxisIndex];\r\n            }\r\n        }\r\n        else {\r\n            for (var idx in otherAxes) {\r\n                if (otherAxes.hasOwnProperty(idx)\r\n                    && canOnZeroToAxis(otherAxes[idx])\r\n                    && !onZeroRecords[getOnZeroRecordKey(otherAxes[idx])]) {\r\n                    otherAxisOnZeroOf = otherAxes[idx];\r\n                    break;\r\n                }\r\n            }\r\n        }\r\n        if (otherAxisOnZeroOf) {\r\n            onZeroRecords[getOnZeroRecordKey(otherAxisOnZeroOf)] = true;\r\n        }\r\n        function getOnZeroRecordKey(axis) {\r\n            return axis.dim + '_' + axis.index;\r\n        }\r\n    }\r\n    function canOnZeroToAxis(axis) {\r\n        return axis && axis.type !== 'category' && axis.type !== 'time' && ifAxisCrossZero(axis);\r\n    }\r\n    function updateAxisTransform(axis, coordBase) {\r\n        var axisExtent = axis.getExtent();\r\n        var axisExtentSum = axisExtent[0] + axisExtent[1];\r\n        axis.toGlobalCoord = axis.dim === 'x'\r\n            ? function (coord) {\r\n                return coord + coordBase;\r\n            }\r\n            : function (coord) {\r\n                return axisExtentSum - coord + coordBase;\r\n            };\r\n        axis.toLocalCoord = axis.dim === 'x'\r\n            ? function (coord) {\r\n                return coord - coordBase;\r\n            }\r\n            : function (coord) {\r\n                return axisExtentSum - coord + coordBase;\r\n            };\r\n    }\r\n    CoordinateSystemManager.register('cartesian2d', Grid);\n\n    var BaseBarSeriesModel = (function (_super) {\r\n        __extends(BaseBarSeriesModel, _super);\r\n        function BaseBarSeriesModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = BaseBarSeriesModel.type;\r\n            return _this;\r\n        }\r\n        BaseBarSeriesModel.prototype.getInitialData = function (option, ecModel) {\r\n            return createListFromArray(this.getSource(), this, { useEncodeDefaulter: true });\r\n        };\r\n        BaseBarSeriesModel.prototype.getMarkerPosition = function (value) {\r\n            var coordSys = this.coordinateSystem;\r\n            if (coordSys) {\r\n                var pt = coordSys.dataToPoint(coordSys.clampData(value));\r\n                var data = this.getData();\r\n                var offset = data.getLayout('offset');\r\n                var size = data.getLayout('size');\r\n                var offsetIndex = coordSys.getBaseAxis().isHorizontal() ? 0 : 1;\r\n                pt[offsetIndex] += offset + size / 2;\r\n                return pt;\r\n            }\r\n            return [NaN, NaN];\r\n        };\r\n        BaseBarSeriesModel.type = 'series.__base_bar__';\r\n        BaseBarSeriesModel.defaultOption = {\r\n            zlevel: 0,\r\n            z: 2,\r\n            coordinateSystem: 'cartesian2d',\r\n            legendHoverLink: true,\r\n            barMinHeight: 0,\r\n            barMinAngle: 0,\r\n            large: false,\r\n            largeThreshold: 400,\r\n            progressive: 3e3,\r\n            progressiveChunkMode: 'mod'\r\n        };\r\n        return BaseBarSeriesModel;\r\n    }(SeriesModel));\r\n    SeriesModel.registerClass(BaseBarSeriesModel);\n\n    var BarSeriesModel = (function (_super) {\r\n        __extends(BarSeriesModel, _super);\r\n        function BarSeriesModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.type = BarSeriesModel.type;\r\n            return _this;\r\n        }\r\n        BarSeriesModel.prototype.getProgressive = function () {\r\n            return this.get('large')\r\n                ? this.get('progressive')\r\n                : false;\r\n        };\r\n        BarSeriesModel.prototype.getProgressiveThreshold = function () {\r\n            var progressiveThreshold = this.get('progressiveThreshold');\r\n            var largeThreshold = this.get('largeThreshold');\r\n            if (largeThreshold > progressiveThreshold) {\r\n                progressiveThreshold = largeThreshold;\r\n            }\r\n            return progressiveThreshold;\r\n        };\r\n        BarSeriesModel.prototype.brushSelector = function (dataIndex, data, selectors) {\r\n            return selectors.rect(data.getItemLayout(dataIndex));\r\n        };\r\n        BarSeriesModel.type = 'series.bar';\r\n        BarSeriesModel.dependencies = ['grid', 'polar'];\r\n        BarSeriesModel.defaultOption = inheritDefaultOption(BaseBarSeriesModel.defaultOption, {\r\n            clip: true,\r\n            roundCap: false,\r\n            showBackground: false,\r\n            backgroundStyle: {\r\n                color: 'rgba(180, 180, 180, 0.2)',\r\n                borderColor: null,\r\n                borderWidth: 0,\r\n                borderType: 'solid',\r\n                borderRadius: 0,\r\n                shadowBlur: 0,\r\n                shadowColor: null,\r\n                shadowOffsetX: 0,\r\n                shadowOffsetY: 0,\r\n                opacity: 1\r\n            },\r\n            select: {\r\n                itemStyle: {\r\n                    borderColor: '#212121'\r\n                }\r\n            },\r\n            realtimeSort: false\r\n        });\r\n        return BarSeriesModel;\r\n    }(BaseBarSeriesModel));\r\n    SeriesModel.registerClass(BarSeriesModel);\n\n    var SausageShape = (function () {\r\n        function SausageShape() {\r\n            this.cx = 0;\r\n            this.cy = 0;\r\n            this.r0 = 0;\r\n            this.r = 0;\r\n            this.startAngle = 0;\r\n            this.endAngle = Math.PI * 2;\r\n            this.clockwise = true;\r\n        }\r\n        return SausageShape;\r\n    }());\r\n    var SausagePath = (function (_super) {\r\n        __extends(SausagePath, _super);\r\n        function SausagePath(opts) {\r\n            var _this = _super.call(this, opts) || this;\r\n            _this.type = 'sausage';\r\n            return _this;\r\n        }\r\n        SausagePath.prototype.getDefaultShape = function () {\r\n            return new SausageShape();\r\n        };\r\n        SausagePath.prototype.buildPath = function (ctx, shape) {\r\n            var x = shape.cx;\r\n            var y = shape.cy;\r\n            var r0 = Math.max(shape.r0 || 0, 0);\r\n            var r = Math.max(shape.r, 0);\r\n            var dr = (r - r0) * 0.5;\r\n            var rCenter = r0 + dr;\r\n            var startAngle = shape.startAngle;\r\n            var endAngle = shape.endAngle;\r\n            var clockwise = shape.clockwise;\r\n            var unitStartX = Math.cos(startAngle);\r\n            var unitStartY = Math.sin(startAngle);\r\n            var unitEndX = Math.cos(endAngle);\r\n            var unitEndY = Math.sin(endAngle);\r\n            var lessThanCircle = clockwise\r\n                ? endAngle - startAngle < Math.PI * 2\r\n                : startAngle - endAngle < Math.PI * 2;\r\n            if (lessThanCircle) {\r\n                ctx.moveTo(unitStartX * r0 + x, unitStartY * r0 + y);\r\n                ctx.arc(unitStartX * rCenter + x, unitStartY * rCenter + y, dr, -Math.PI + startAngle, startAngle, !clockwise);\r\n            }\r\n            ctx.arc(x, y, r, startAngle, endAngle, !clockwise);\r\n            ctx.moveTo(unitEndX * r + x, unitEndY * r + y);\r\n            ctx.arc(unitEndX * rCenter + x, unitEndY * rCenter + y, dr, endAngle - Math.PI * 2, endAngle - Math.PI, !clockwise);\r\n            if (r0 !== 0) {\r\n                ctx.arc(x, y, r0, endAngle, startAngle, clockwise);\r\n                ctx.moveTo(unitStartX * r0 + x, unitEndY * r0 + y);\r\n            }\r\n            ctx.closePath();\r\n        };\r\n        return SausagePath;\r\n    }(Path));\n\n    var BAR_BORDER_WIDTH_QUERY = ['itemStyle', 'borderWidth'];\r\n    var BAR_BORDER_RADIUS_QUERY = ['itemStyle', 'borderRadius'];\r\n    var _eventPos = [0, 0];\r\n    var mathMax$5 = Math.max;\r\n    var mathMin$5 = Math.min;\r\n    function getClipArea(coord, data) {\r\n        var coordSysClipArea = coord.getArea && coord.getArea();\r\n        if (isCoordinateSystemType(coord, 'cartesian2d')) {\r\n            var baseAxis = coord.getBaseAxis();\r\n            if (baseAxis.type !== 'category' || !baseAxis.onBand) {\r\n                var expandWidth = data.getLayout('bandWidth');\r\n                if (baseAxis.isHorizontal()) {\r\n                    coordSysClipArea.x -= expandWidth;\r\n                    coordSysClipArea.width += expandWidth * 2;\r\n                }\r\n                else {\r\n                    coordSysClipArea.y -= expandWidth;\r\n                    coordSysClipArea.height += expandWidth * 2;\r\n                }\r\n            }\r\n        }\r\n        return coordSysClipArea;\r\n    }\r\n    var BarView = (function (_super) {\r\n        __extends(BarView, _super);\r\n        function BarView() {\r\n            var _this = _super.call(this) || this;\r\n            _this.type = BarView.type;\r\n            _this._isFirstFrame = true;\r\n            return _this;\r\n        }\r\n        BarView.prototype.render = function (seriesModel, ecModel, api, payload) {\r\n            this._model = seriesModel;\r\n            this.removeOnRenderedListener(api);\r\n            this._updateDrawMode(seriesModel);\r\n            var coordinateSystemType = seriesModel.get('coordinateSystem');\r\n            if (coordinateSystemType === 'cartesian2d'\r\n                || coordinateSystemType === 'polar') {\r\n                this._isLargeDraw\r\n                    ? this._renderLarge(seriesModel, ecModel, api)\r\n                    : this._renderNormal(seriesModel, ecModel, api, payload);\r\n            }\r\n            else if (__DEV__) {\r\n                console.warn('Only cartesian2d and polar supported for bar.');\r\n            }\r\n        };\r\n        BarView.prototype.incrementalPrepareRender = function (seriesModel) {\r\n            this._clear();\r\n            this._updateDrawMode(seriesModel);\r\n            this._updateLargeClip(seriesModel);\r\n        };\r\n        BarView.prototype.incrementalRender = function (params, seriesModel) {\r\n            this._incrementalRenderLarge(params, seriesModel);\r\n        };\r\n        BarView.prototype._updateDrawMode = function (seriesModel) {\r\n            var isLargeDraw = seriesModel.pipelineContext.large;\r\n            if (this._isLargeDraw == null || isLargeDraw !== this._isLargeDraw) {\r\n                this._isLargeDraw = isLargeDraw;\r\n                this._clear();\r\n            }\r\n        };\r\n        BarView.prototype._renderNormal = function (seriesModel, ecModel, api, payload) {\r\n            var _this = this;\r\n            var group = this.group;\r\n            var data = seriesModel.getData();\r\n            var oldData = this._data;\r\n            var coord = seriesModel.coordinateSystem;\r\n            var baseAxis = coord.getBaseAxis();\r\n            var isHorizontalOrRadial;\r\n            if (coord.type === 'cartesian2d') {\r\n                isHorizontalOrRadial = baseAxis.isHorizontal();\r\n            }\r\n            else if (coord.type === 'polar') {\r\n                isHorizontalOrRadial = baseAxis.dim === 'angle';\r\n            }\r\n            var animationModel = seriesModel.isAnimationEnabled() ? seriesModel : null;\r\n            var axis2DModel = baseAxis.model;\r\n            var realtimeSort = seriesModel.get('realtimeSort');\r\n            if (realtimeSort && data.count()) {\r\n                if (this._isFirstFrame) {\r\n                    this._initSort(data, isHorizontalOrRadial, baseAxis, api);\r\n                    this._isFirstFrame = false;\r\n                    return;\r\n                }\r\n                else {\r\n                    this._onRendered = function () {\r\n                        var orderMap = function (idx) {\r\n                            var el = data.getItemGraphicEl(idx);\r\n                            if (el) {\r\n                                var shape = el.shape;\r\n                                return (isHorizontalOrRadial ? shape.y + shape.height : shape.x + shape.width) || 0;\r\n                            }\r\n                            else {\r\n                                return 0;\r\n                            }\r\n                        };\r\n                        _this._updateSort(data, orderMap, baseAxis, api);\r\n                    };\r\n                    api.getZr().on('rendered', this._onRendered);\r\n                }\r\n            }\r\n            var needsClip = seriesModel.get('clip', true) || realtimeSort;\r\n            var coordSysClipArea = getClipArea(coord, data);\r\n            group.removeClipPath();\r\n            var roundCap = seriesModel.get('roundCap', true);\r\n            var drawBackground = seriesModel.get('showBackground', true);\r\n            var backgroundModel = seriesModel.getModel('backgroundStyle');\r\n            var barBorderRadius = backgroundModel.get('borderRadius') || 0;\r\n            var bgEls = [];\r\n            var oldBgEls = this._backgroundEls;\r\n            var isInitSort = payload && payload.isInitSort;\r\n            var isChangeOrder = payload && payload.type === 'changeAxisOrder';\r\n            function createBackground(dataIndex) {\r\n                var bgLayout = getLayout[coord.type](data, dataIndex);\r\n                var bgEl = createBackgroundEl(coord, isHorizontalOrRadial, bgLayout);\r\n                bgEl.useStyle(backgroundModel.getItemStyle());\r\n                if (coord.type === 'cartesian2d') {\r\n                    bgEl.setShape('r', barBorderRadius);\r\n                }\r\n                bgEls[dataIndex] = bgEl;\r\n                return bgEl;\r\n            }\r\n            data.diff(oldData)\r\n                .add(function (dataIndex) {\r\n                var itemModel = data.getItemModel(dataIndex);\r\n                var layout = getLayout[coord.type](data, dataIndex, itemModel);\r\n                if (drawBackground) {\r\n                    createBackground(dataIndex);\r\n                }\r\n                if (!data.hasValue(dataIndex)) {\r\n                    return;\r\n                }\r\n                var isClipped = false;\r\n                if (needsClip) {\r\n                    isClipped = clip[coord.type](coordSysClipArea, layout);\r\n                }\r\n                var el = elementCreator[coord.type](seriesModel, data, dataIndex, layout, isHorizontalOrRadial, animationModel, baseAxis.model, false, roundCap);\r\n                updateStyle(el, data, dataIndex, itemModel, layout, seriesModel, isHorizontalOrRadial, coord.type === 'polar');\r\n                if (isInitSort) {\r\n                    el.attr({ shape: layout });\r\n                }\r\n                else if (realtimeSort) {\r\n                    updateRealtimeAnimation(seriesModel, axis2DModel, animationModel, el, layout, dataIndex, isHorizontalOrRadial, false, false);\r\n                }\r\n                else {\r\n                    initProps(el, { shape: layout }, seriesModel, dataIndex);\r\n                }\r\n                data.setItemGraphicEl(dataIndex, el);\r\n                group.add(el);\r\n                el.ignore = isClipped;\r\n            })\r\n                .update(function (newIndex, oldIndex) {\r\n                var itemModel = data.getItemModel(newIndex);\r\n                var layout = getLayout[coord.type](data, newIndex, itemModel);\r\n                if (drawBackground) {\r\n                    var bgEl = void 0;\r\n                    if (oldBgEls.length === 0) {\r\n                        bgEl = createBackground(oldIndex);\r\n                    }\r\n                    else {\r\n                        bgEl = oldBgEls[oldIndex];\r\n                        bgEl.useStyle(backgroundModel.getItemStyle());\r\n                        if (coord.type === 'cartesian2d') {\r\n                            bgEl.setShape('r', barBorderRadius);\r\n                        }\r\n                        bgEls[newIndex] = bgEl;\r\n                    }\r\n                    var bgLayout = getLayout[coord.type](data, newIndex);\r\n                    var shape = createBackgroundShape(isHorizontalOrRadial, bgLayout, coord);\r\n                    updateProps(bgEl, { shape: shape }, animationModel, newIndex);\r\n                }\r\n                var el = oldData.getItemGraphicEl(oldIndex);\r\n                if (!data.hasValue(newIndex)) {\r\n                    group.remove(el);\r\n                    el = null;\r\n                    return;\r\n                }\r\n                var isClipped = false;\r\n                if (needsClip) {\r\n                    isClipped = clip[coord.type](coordSysClipArea, layout);\r\n                    if (isClipped) {\r\n                        group.remove(el);\r\n                    }\r\n                }\r\n                if (!el) {\r\n                    el = elementCreator[coord.type](seriesModel, data, newIndex, layout, isHorizontalOrRadial, animationModel, baseAxis.model, !!el, roundCap);\r\n                }\r\n                if (!isChangeOrder) {\r\n                    updateStyle(el, data, newIndex, itemModel, layout, seriesModel, isHorizontalOrRadial, coord.type === 'polar');\r\n                }\r\n                if (isInitSort) {\r\n                    el.attr({ shape: layout });\r\n                }\r\n                else if (realtimeSort) {\r\n                    updateRealtimeAnimation(seriesModel, axis2DModel, animationModel, el, layout, newIndex, isHorizontalOrRadial, true, isChangeOrder);\r\n                }\r\n                else {\r\n                    updateProps(el, {\r\n                        shape: layout\r\n                    }, seriesModel, newIndex, null);\r\n                }\r\n                data.setItemGraphicEl(newIndex, el);\r\n                el.ignore = isClipped;\r\n                group.add(el);\r\n            })\r\n                .remove(function (dataIndex) {\r\n                var el = oldData.getItemGraphicEl(dataIndex);\r\n                el && removeElementWithFadeOut(el, seriesModel, dataIndex);\r\n            })\r\n                .execute();\r\n            var bgGroup = this._backgroundGroup || (this._backgroundGroup = new Group());\r\n            bgGroup.removeAll();\r\n            for (var i = 0; i < bgEls.length; ++i) {\r\n                bgGroup.add(bgEls[i]);\r\n            }\r\n            group.add(bgGroup);\r\n            this._backgroundEls = bgEls;\r\n            this._data = data;\r\n        };\r\n        BarView.prototype._renderLarge = function (seriesModel, ecModel, api) {\r\n            this._clear();\r\n            createLarge(seriesModel, this.group);\r\n            this._updateLargeClip(seriesModel);\r\n        };\r\n        BarView.prototype._incrementalRenderLarge = function (params, seriesModel) {\r\n            this._removeBackground();\r\n            createLarge(seriesModel, this.group, true);\r\n        };\r\n        BarView.prototype._updateLargeClip = function (seriesModel) {\r\n            var clipPath = seriesModel.get('clip', true)\r\n                ? createClipPath(seriesModel.coordinateSystem, false, seriesModel)\r\n                : null;\r\n            if (clipPath) {\r\n                this.group.setClipPath(clipPath);\r\n            }\r\n            else {\r\n                this.group.removeClipPath();\r\n            }\r\n        };\r\n        BarView.prototype._dataSort = function (data, idxMap) {\r\n            var info = [];\r\n            data.each(function (idx) {\r\n                info.push({\r\n                    mappedValue: idxMap(idx),\r\n                    ordinalNumber: idx,\r\n                    beforeSortIndex: null\r\n                });\r\n            });\r\n            info.sort(function (a, b) {\r\n                return b.mappedValue - a.mappedValue;\r\n            });\r\n            for (var i = 0; i < info.length; ++i) {\r\n                info[info[i].ordinalNumber].beforeSortIndex = i;\r\n            }\r\n            return map(info, function (item) {\r\n                return {\r\n                    ordinalNumber: item.ordinalNumber,\r\n                    beforeSortIndex: item.beforeSortIndex\r\n                };\r\n            });\r\n        };\r\n        BarView.prototype._isDataOrderChanged = function (data, orderMap, oldOrder) {\r\n            var oldCount = oldOrder ? oldOrder.length : 0;\r\n            if (oldCount !== data.count()) {\r\n                return true;\r\n            }\r\n            var lastValue = Number.MAX_VALUE;\r\n            for (var i = 0; i < oldOrder.length; ++i) {\r\n                var value = orderMap(oldOrder[i].ordinalNumber);\r\n                if (value > lastValue) {\r\n                    return true;\r\n                }\r\n                lastValue = value;\r\n            }\r\n            return false;\r\n        };\r\n        BarView.prototype._updateSort = function (data, orderMap, baseAxis, api) {\r\n            var oldOrder = baseAxis.scale.getCategorySortInfo();\r\n            var isOrderChanged = this._isDataOrderChanged(data, orderMap, oldOrder);\r\n            if (isOrderChanged) {\r\n                var newOrder = this._dataSort(data, orderMap);\r\n                var extent = baseAxis.scale.getExtent();\r\n                for (var i = extent[0]; i < extent[1]; ++i) {\r\n                    if (!oldOrder[i] || oldOrder[i].ordinalNumber !== newOrder[i].ordinalNumber) {\r\n                        this.removeOnRenderedListener(api);\r\n                        var action = {\r\n                            type: 'changeAxisOrder',\r\n                            componentType: baseAxis.dim + 'Axis',\r\n                            axisId: baseAxis.index,\r\n                            sortInfo: newOrder\r\n                        };\r\n                        api.dispatchAction(action);\r\n                        break;\r\n                    }\r\n                }\r\n            }\r\n        };\r\n        BarView.prototype._initSort = function (data, isHorizontal, baseAxis, api) {\r\n            var action = {\r\n                type: 'changeAxisOrder',\r\n                componentType: baseAxis.dim + 'Axis',\r\n                isInitSort: true,\r\n                axisId: baseAxis.index,\r\n                sortInfo: this._dataSort(data, function (idx) { return parseFloat(data.get(isHorizontal ? 'y' : 'x', idx)) || 0; })\r\n            };\r\n            api.dispatchAction(action);\r\n        };\r\n        BarView.prototype.remove = function (ecModel, api) {\r\n            this._clear(this._model);\r\n            this.removeOnRenderedListener(api);\r\n        };\r\n        BarView.prototype.dispose = function (ecModel, api) {\r\n            this.removeOnRenderedListener(api);\r\n        };\r\n        BarView.prototype.removeOnRenderedListener = function (api) {\r\n            if (this._onRendered) {\r\n                api.getZr().off('rendered', this._onRendered);\r\n                this._onRendered = null;\r\n            }\r\n        };\r\n        BarView.prototype._clear = function (model) {\r\n            var group = this.group;\r\n            var data = this._data;\r\n            if (model && model.isAnimationEnabled() && data && !this._isLargeDraw) {\r\n                this._removeBackground();\r\n                this._backgroundEls = [];\r\n                data.eachItemGraphicEl(function (el) {\r\n                    removeElementWithFadeOut(el, model, getECData(el).dataIndex);\r\n                });\r\n            }\r\n            else {\r\n                group.removeAll();\r\n            }\r\n            this._data = null;\r\n            this._isFirstFrame = true;\r\n        };\r\n        BarView.prototype._removeBackground = function () {\r\n            this.group.remove(this._backgroundGroup);\r\n            this._backgroundGroup = null;\r\n        };\r\n        BarView.type = 'bar';\r\n        return BarView;\r\n    }(ChartView));\r\n    var clip = {\r\n        cartesian2d: function (coordSysBoundingRect, layout) {\r\n            var signWidth = layout.width < 0 ? -1 : 1;\r\n            var signHeight = layout.height < 0 ? -1 : 1;\r\n            if (signWidth < 0) {\r\n                layout.x += layout.width;\r\n                layout.width = -layout.width;\r\n            }\r\n            if (signHeight < 0) {\r\n                layout.y += layout.height;\r\n                layout.height = -layout.height;\r\n            }\r\n            var x = mathMax$5(layout.x, coordSysBoundingRect.x);\r\n            var x2 = mathMin$5(layout.x + layout.width, coordSysBoundingRect.x + coordSysBoundingRect.width);\r\n            var y = mathMax$5(layout.y, coordSysBoundingRect.y);\r\n            var y2 = mathMin$5(layout.y + layout.height, coordSysBoundingRect.y + coordSysBoundingRect.height);\r\n            layout.x = x;\r\n            layout.y = y;\r\n            layout.width = x2 - x;\r\n            layout.height = y2 - y;\r\n            var clipped = layout.width < 0 || layout.height < 0;\r\n            if (signWidth < 0) {\r\n                layout.x += layout.width;\r\n                layout.width = -layout.width;\r\n            }\r\n            if (signHeight < 0) {\r\n                layout.y += layout.height;\r\n                layout.height = -layout.height;\r\n            }\r\n            return clipped;\r\n        },\r\n        polar: function (coordSysClipArea, layout) {\r\n            var signR = layout.r0 <= layout.r ? 1 : -1;\r\n            if (signR < 0) {\r\n                var tmp = layout.r;\r\n                layout.r = layout.r0;\r\n                layout.r0 = tmp;\r\n            }\r\n            var r = mathMin$5(layout.r, coordSysClipArea.r);\r\n            var r0 = mathMax$5(layout.r0, coordSysClipArea.r0);\r\n            layout.r = r;\r\n            layout.r0 = r0;\r\n            var clipped = r - r0 < 0;\r\n            if (signR < 0) {\r\n                var tmp = layout.r;\r\n                layout.r = layout.r0;\r\n                layout.r0 = tmp;\r\n            }\r\n            return clipped;\r\n        }\r\n    };\r\n    var elementCreator = {\r\n        cartesian2d: function (seriesModel, data, newIndex, layout, isHorizontal, animationModel, axisModel, isUpdate, roundCap) {\r\n            var rect = new Rect({\r\n                shape: extend({}, layout),\r\n                z2: 1\r\n            });\r\n            rect.__dataIndex = newIndex;\r\n            rect.name = 'item';\r\n            if (animationModel) {\r\n                var rectShape = rect.shape;\r\n                var animateProperty = isHorizontal ? 'height' : 'width';\r\n                rectShape[animateProperty] = 0;\r\n            }\r\n            return rect;\r\n        },\r\n        polar: function (seriesModel, data, newIndex, layout, isRadial, animationModel, axisModel, isUpdate, roundCap) {\r\n            var clockwise = layout.startAngle < layout.endAngle;\r\n            var ShapeClass = (!isRadial && roundCap) ? SausagePath : Sector;\r\n            var sector = new ShapeClass({\r\n                shape: defaults({ clockwise: clockwise }, layout),\r\n                z2: 1\r\n            });\r\n            sector.name = 'item';\r\n            if (animationModel) {\r\n                var sectorShape = sector.shape;\r\n                var animateProperty = isRadial ? 'r' : 'endAngle';\r\n                var animateTarget = {};\r\n                sectorShape[animateProperty] = isRadial ? 0 : layout.startAngle;\r\n                animateTarget[animateProperty] = layout[animateProperty];\r\n                (isUpdate ? updateProps : initProps)(sector, {\r\n                    shape: animateTarget\r\n                }, animationModel);\r\n            }\r\n            return sector;\r\n        }\r\n    };\r\n    function updateRealtimeAnimation(seriesModel, axisModel, animationModel, el, layout, newIndex, isHorizontal, isUpdate, isChangeOrder) {\r\n        if (animationModel || axisModel) {\r\n            var seriesTarget = void 0;\r\n            var axisTarget = void 0;\r\n            if (isHorizontal) {\r\n                axisTarget = {\r\n                    x: layout.x,\r\n                    width: layout.width\r\n                };\r\n                seriesTarget = {\r\n                    y: layout.y,\r\n                    height: layout.height\r\n                };\r\n            }\r\n            else {\r\n                axisTarget = {\r\n                    y: layout.y,\r\n                    height: layout.height\r\n                };\r\n                seriesTarget = {\r\n                    x: layout.x,\r\n                    width: layout.width\r\n                };\r\n            }\r\n            if (!isChangeOrder) {\r\n                (isUpdate ? updateProps : initProps)(el, {\r\n                    shape: seriesTarget\r\n                }, seriesModel, newIndex, null);\r\n            }\r\n            (isUpdate ? updateProps : initProps)(el, {\r\n                shape: axisTarget\r\n            }, axisModel, newIndex);\r\n        }\r\n    }\r\n    var getLayout = {\r\n        cartesian2d: function (data, dataIndex, itemModel) {\r\n            var layout = data.getItemLayout(dataIndex);\r\n            var fixedLineWidth = itemModel ? getLineWidth(itemModel, layout) : 0;\r\n            var signX = layout.width > 0 ? 1 : -1;\r\n            var signY = layout.height > 0 ? 1 : -1;\r\n            return {\r\n                x: layout.x + signX * fixedLineWidth / 2,\r\n                y: layout.y + signY * fixedLineWidth / 2,\r\n                width: layout.width - signX * fixedLineWidth,\r\n                height: layout.height - signY * fixedLineWidth\r\n            };\r\n        },\r\n        polar: function (data, dataIndex, itemModel) {\r\n            var layout = data.getItemLayout(dataIndex);\r\n            return {\r\n                cx: layout.cx,\r\n                cy: layout.cy,\r\n                r0: layout.r0,\r\n                r: layout.r,\r\n                startAngle: layout.startAngle,\r\n                endAngle: layout.endAngle\r\n            };\r\n        }\r\n    };\r\n    function isZeroOnPolar(layout) {\r\n        return layout.startAngle != null\r\n            && layout.endAngle != null\r\n            && layout.startAngle === layout.endAngle;\r\n    }\r\n    function updateStyle(el, data, dataIndex, itemModel, layout, seriesModel, isHorizontal, isPolar) {\r\n        var style = data.getItemVisual(dataIndex, 'style');\r\n        if (!isPolar) {\r\n            el.setShape('r', itemModel.get(BAR_BORDER_RADIUS_QUERY) || 0);\r\n        }\r\n        el.useStyle(style);\r\n        var cursorStyle = itemModel.getShallow('cursor');\r\n        cursorStyle && el.attr('cursor', cursorStyle);\r\n        if (!isPolar) {\r\n            var labelPositionOutside = isHorizontal\r\n                ? (layout.height > 0 ? 'bottom' : 'top')\r\n                : (layout.width > 0 ? 'left' : 'right');\r\n            var labelStatesModels = getLabelStatesModels(itemModel);\r\n            setLabelStyle(el, labelStatesModels, {\r\n                labelFetcher: seriesModel,\r\n                labelDataIndex: dataIndex,\r\n                defaultText: getDefaultLabel(seriesModel.getData(), dataIndex),\r\n                inheritColor: style.fill,\r\n                defaultOpacity: style.opacity,\r\n                defaultOutsidePosition: labelPositionOutside\r\n            });\r\n            var label = el.getTextContent();\r\n            setLabelValueAnimation(label, labelStatesModels, seriesModel.getRawValue(dataIndex), function (value) { return getDefaultInterpolatedLabel(data, value); });\r\n        }\r\n        var emphasisModel = itemModel.getModel(['emphasis']);\r\n        enableHoverEmphasis(el, emphasisModel.get('focus'), emphasisModel.get('blurScope'));\r\n        setStatesStylesFromModel(el, itemModel);\r\n        if (isZeroOnPolar(layout)) {\r\n            el.style.fill = 'none';\r\n            el.style.stroke = 'none';\r\n            each(el.states, function (state) {\r\n                if (state.style) {\r\n                    state.style.fill = state.style.stroke = 'none';\r\n                }\r\n            });\r\n        }\r\n    }\r\n    function getLineWidth(itemModel, rawLayout) {\r\n        var lineWidth = itemModel.get(BAR_BORDER_WIDTH_QUERY) || 0;\r\n        var width = isNaN(rawLayout.width) ? Number.MAX_VALUE : Math.abs(rawLayout.width);\r\n        var height = isNaN(rawLayout.height) ? Number.MAX_VALUE : Math.abs(rawLayout.height);\r\n        return Math.min(lineWidth, width, height);\r\n    }\r\n    var LagePathShape = (function () {\r\n        function LagePathShape() {\r\n        }\r\n        return LagePathShape;\r\n    }());\r\n    var LargePath = (function (_super) {\r\n        __extends(LargePath, _super);\r\n        function LargePath(opts) {\r\n            var _this = _super.call(this, opts) || this;\r\n            _this.type = 'largeBar';\r\n            return _this;\r\n        }\r\n        LargePath.prototype.getDefaultShape = function () {\r\n            return new LagePathShape();\r\n        };\r\n        LargePath.prototype.buildPath = function (ctx, shape) {\r\n            var points = shape.points;\r\n            var startPoint = this.__startPoint;\r\n            var baseDimIdx = this.__baseDimIdx;\r\n            for (var i = 0; i < points.length; i += 2) {\r\n                startPoint[baseDimIdx] = points[i + baseDimIdx];\r\n                ctx.moveTo(startPoint[0], startPoint[1]);\r\n                ctx.lineTo(points[i], points[i + 1]);\r\n            }\r\n        };\r\n        return LargePath;\r\n    }(Path));\r\n    function createLarge(seriesModel, group, incremental) {\r\n        var data = seriesModel.getData();\r\n        var startPoint = [];\r\n        var baseDimIdx = data.getLayout('valueAxisHorizontal') ? 1 : 0;\r\n        startPoint[1 - baseDimIdx] = data.getLayout('valueAxisStart');\r\n        var largeDataIndices = data.getLayout('largeDataIndices');\r\n        var barWidth = data.getLayout('barWidth');\r\n        var backgroundModel = seriesModel.getModel('backgroundStyle');\r\n        var drawBackground = seriesModel.get('showBackground', true);\r\n        if (drawBackground) {\r\n            var points = data.getLayout('largeBackgroundPoints');\r\n            var backgroundStartPoint = [];\r\n            backgroundStartPoint[1 - baseDimIdx] = data.getLayout('backgroundStart');\r\n            var bgEl = new LargePath({\r\n                shape: { points: points },\r\n                incremental: !!incremental,\r\n                silent: true,\r\n                z2: 0\r\n            });\r\n            bgEl.__startPoint = backgroundStartPoint;\r\n            bgEl.__baseDimIdx = baseDimIdx;\r\n            bgEl.__largeDataIndices = largeDataIndices;\r\n            bgEl.__barWidth = barWidth;\r\n            setLargeBackgroundStyle(bgEl, backgroundModel, data);\r\n            group.add(bgEl);\r\n        }\r\n        var el = new LargePath({\r\n            shape: { points: data.getLayout('largePoints') },\r\n            incremental: !!incremental\r\n        });\r\n        el.__startPoint = startPoint;\r\n        el.__baseDimIdx = baseDimIdx;\r\n        el.__largeDataIndices = largeDataIndices;\r\n        el.__barWidth = barWidth;\r\n        group.add(el);\r\n        setLargeStyle(el, seriesModel, data);\r\n        getECData(el).seriesIndex = seriesModel.seriesIndex;\r\n        if (!seriesModel.get('silent')) {\r\n            el.on('mousedown', largePathUpdateDataIndex);\r\n            el.on('mousemove', largePathUpdateDataIndex);\r\n        }\r\n    }\r\n    var largePathUpdateDataIndex = throttle(function (event) {\r\n        var largePath = this;\r\n        var dataIndex = largePathFindDataIndex(largePath, event.offsetX, event.offsetY);\r\n        getECData(largePath).dataIndex = dataIndex >= 0 ? dataIndex : null;\r\n    }, 30, false);\r\n    function largePathFindDataIndex(largePath, x, y) {\r\n        var baseDimIdx = largePath.__baseDimIdx;\r\n        var valueDimIdx = 1 - baseDimIdx;\r\n        var points = largePath.shape.points;\r\n        var largeDataIndices = largePath.__largeDataIndices;\r\n        var barWidthHalf = Math.abs(largePath.__barWidth / 2);\r\n        var startValueVal = largePath.__startPoint[valueDimIdx];\r\n        _eventPos[0] = x;\r\n        _eventPos[1] = y;\r\n        var pointerBaseVal = _eventPos[baseDimIdx];\r\n        var pointerValueVal = _eventPos[1 - baseDimIdx];\r\n        var baseLowerBound = pointerBaseVal - barWidthHalf;\r\n        var baseUpperBound = pointerBaseVal + barWidthHalf;\r\n        for (var i = 0, len = points.length / 2; i < len; i++) {\r\n            var ii = i * 2;\r\n            var barBaseVal = points[ii + baseDimIdx];\r\n            var barValueVal = points[ii + valueDimIdx];\r\n            if (barBaseVal >= baseLowerBound && barBaseVal <= baseUpperBound\r\n                && (startValueVal <= barValueVal\r\n                    ? (pointerValueVal >= startValueVal && pointerValueVal <= barValueVal)\r\n                    : (pointerValueVal >= barValueVal && pointerValueVal <= startValueVal))) {\r\n                return largeDataIndices[i];\r\n            }\r\n        }\r\n        return -1;\r\n    }\r\n    function setLargeStyle(el, seriesModel, data) {\r\n        var globalStyle = data.getVisual('style');\r\n        el.useStyle(extend({}, globalStyle));\r\n        el.style.fill = null;\r\n        el.style.stroke = globalStyle.fill;\r\n        el.style.lineWidth = data.getLayout('barWidth');\r\n    }\r\n    function setLargeBackgroundStyle(el, backgroundModel, data) {\r\n        var borderColor = backgroundModel.get('borderColor') || backgroundModel.get('color');\r\n        var itemStyle = backgroundModel.getItemStyle();\r\n        el.useStyle(itemStyle);\r\n        el.style.fill = null;\r\n        el.style.stroke = borderColor;\r\n        el.style.lineWidth = data.getLayout('barWidth');\r\n    }\r\n    function createBackgroundShape(isHorizontalOrRadial, layout, coord) {\r\n        if (isCoordinateSystemType(coord, 'cartesian2d')) {\r\n            var rectShape = layout;\r\n            var coordLayout = coord.getArea();\r\n            return {\r\n                x: isHorizontalOrRadial ? rectShape.x : coordLayout.x,\r\n                y: isHorizontalOrRadial ? coordLayout.y : rectShape.y,\r\n                width: isHorizontalOrRadial ? rectShape.width : coordLayout.width,\r\n                height: isHorizontalOrRadial ? coordLayout.height : rectShape.height\r\n            };\r\n        }\r\n        else {\r\n            var coordLayout = coord.getArea();\r\n            var sectorShape = layout;\r\n            return {\r\n                cx: coordLayout.cx,\r\n                cy: coordLayout.cy,\r\n                r0: isHorizontalOrRadial ? coordLayout.r0 : sectorShape.r0,\r\n                r: isHorizontalOrRadial ? coordLayout.r : sectorShape.r,\r\n                startAngle: isHorizontalOrRadial ? sectorShape.startAngle : 0,\r\n                endAngle: isHorizontalOrRadial ? sectorShape.endAngle : Math.PI * 2\r\n            };\r\n        }\r\n    }\r\n    function createBackgroundEl(coord, isHorizontalOrRadial, layout) {\r\n        var ElementClz = coord.type === 'polar' ? Sector : Rect;\r\n        return new ElementClz({\r\n            shape: createBackgroundShape(isHorizontalOrRadial, layout, coord),\r\n            silent: true,\r\n            z2: 0\r\n        });\r\n    }\r\n    ChartView.registerClass(BarView);\n\n    registerAction({\r\n        type: 'changeAxisOrder',\r\n        event: 'changeAxisOrder',\r\n        update: 'update'\r\n    }, function (payload, ecModel) {\r\n        var componentType = payload.componentType || 'series';\r\n        ecModel.eachComponent({ mainType: componentType, query: payload }, function (componentModel) {\r\n            if (payload.sortInfo) {\r\n                componentModel.axis.setCategorySortInfo(payload.sortInfo);\r\n            }\r\n        });\r\n    });\n\n    registerLayout(PRIORITY.VISUAL.LAYOUT, curry(layout, 'bar'));\r\n    registerLayout(PRIORITY.VISUAL.PROGRESSIVE_LAYOUT, largeLayout);\r\n    registerVisual({\r\n        seriesType: 'bar',\r\n        reset: function (seriesModel) {\r\n            seriesModel.getData().setVisual('legendSymbol', 'roundRect');\r\n        }\r\n    });\r\n    registerProcessor(PRIORITY.PROCESSOR.STATISTIC, dataSample('bar'));\n\n    function createListSimply(seriesModel, opt, nameList) {\r\n        opt = isArray(opt) && { coordDimensions: opt } || extend({}, opt);\r\n        var source = seriesModel.getSource();\r\n        var dimensionsInfo = createDimensions(source, opt);\r\n        var list = new List(dimensionsInfo, seriesModel);\r\n        list.initData(source, nameList);\r\n        return list;\r\n    }\n\n    var LegendVisualProvider = (function () {\r\n        function LegendVisualProvider(getDataWithEncodedVisual, getRawData) {\r\n            this._getDataWithEncodedVisual = getDataWithEncodedVisual;\r\n            this._getRawData = getRawData;\r\n        }\r\n        LegendVisualProvider.prototype.getAllNames = function () {\r\n            var rawData = this._getRawData();\r\n            return rawData.mapArray(rawData.getName);\r\n        };\r\n        LegendVisualProvider.prototype.containName = function (name) {\r\n            var rawData = this._getRawData();\r\n            return rawData.indexOfName(name) >= 0;\r\n        };\r\n        LegendVisualProvider.prototype.indexOfName = function (name) {\r\n            var dataWithEncodedVisual = this._getDataWithEncodedVisual();\r\n            return dataWithEncodedVisual.indexOfName(name);\r\n        };\r\n        LegendVisualProvider.prototype.getItemVisual = function (dataIndex, key) {\r\n            var dataWithEncodedVisual = this._getDataWithEncodedVisual();\r\n            return dataWithEncodedVisual.getItemVisual(dataIndex, key);\r\n        };\r\n        return LegendVisualProvider;\r\n    }());\n\n    var PieSeriesModel = (function (_super) {\r\n        __extends(PieSeriesModel, _super);\r\n        function PieSeriesModel() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.useColorPaletteOnData = true;\r\n            return _this;\r\n        }\r\n        PieSeriesModel.prototype.init = function (option) {\r\n            _super.prototype.init.apply(this, arguments);\r\n            this.legendVisualProvider = new LegendVisualProvider(bind(this.getData, this), bind(this.getRawData, this));\r\n            this._defaultLabelLine(option);\r\n        };\r\n        PieSeriesModel.prototype.mergeOption = function () {\r\n            _super.prototype.mergeOption.apply(this, arguments);\r\n        };\r\n        PieSeriesModel.prototype.getInitialData = function () {\r\n            return createListSimply(this, {\r\n                coordDimensions: ['value'],\r\n                encodeDefaulter: curry(makeSeriesEncodeForNameBased, this)\r\n            });\r\n        };\r\n        PieSeriesModel.prototype.getDataParams = function (dataIndex) {\r\n            var data = this.getData();\r\n            var params = _super.prototype.getDataParams.call(this, dataIndex);\r\n            var valueList = [];\r\n            data.each(data.mapDimension('value'), function (value) {\r\n                valueList.push(value);\r\n            });\r\n            params.percent = getPercentWithPrecision(valueList, dataIndex, data.hostModel.get('percentPrecision'));\r\n            params.$vars.push('percent');\r\n            return params;\r\n        };\r\n        PieSeriesModel.prototype._defaultLabelLine = function (option) {\r\n            defaultEmphasis(option, 'labelLine', ['show']);\r\n            var labelLineNormalOpt = option.labelLine;\r\n            var labelLineEmphasisOpt = option.emphasis.labelLine;\r\n            labelLineNormalOpt.show = labelLineNormalOpt.show\r\n                && option.label.show;\r\n            labelLineEmphasisOpt.show = labelLineEmphasisOpt.show\r\n                && option.emphasis.label.show;\r\n        };\r\n        PieSeriesModel.type = 'series.pie';\r\n        PieSeriesModel.defaultOption = {\r\n            zlevel: 0,\r\n            z: 2,\r\n            legendHoverLink: true,\r\n            center: ['50%', '50%'],\r\n            radius: [0, '75%'],\r\n            clockwise: true,\r\n            startAngle: 90,\r\n            minAngle: 0,\r\n            minShowLabelAngle: 0,\r\n            selectedOffset: 10,\r\n            percentPrecision: 2,\r\n            stillShowZeroSum: true,\r\n            left: 0,\r\n            top: 0,\r\n            right: 0,\r\n            bottom: 0,\r\n            width: null,\r\n            height: null,\r\n            label: {\r\n                rotate: 0,\r\n                show: true,\r\n                overflow: 'truncate',\r\n                position: 'outer',\r\n                alignTo: 'none',\r\n                edgeDistance: '25%',\r\n                bleedMargin: 10,\r\n                distanceToLabelLine: 5\r\n            },\r\n            labelLine: {\r\n                show: true,\r\n                length: 15,\r\n                length2: 15,\r\n                smooth: false,\r\n                minTurnAngle: 90,\r\n                maxSurfaceAngle: 90,\r\n                lineStyle: {\r\n                    width: 1,\r\n                    type: 'solid'\r\n                }\r\n            },\r\n            itemStyle: {\r\n                borderWidth: 1\r\n            },\r\n            labelLayout: {\r\n                hideOverlap: true\r\n            },\r\n            emphasis: {\r\n                scale: true,\r\n                scaleSize: 5\r\n            },\r\n            avoidLabelOverlap: true,\r\n            animationType: 'expansion',\r\n            animationDuration: 1000,\r\n            animationTypeUpdate: 'transition',\r\n            animationEasingUpdate: 'cubicInOut',\r\n            animationDurationUpdate: 500,\r\n            animationEasing: 'cubicInOut'\r\n        };\r\n        return PieSeriesModel;\r\n    }(SeriesModel));\r\n    SeriesModel.registerClass(PieSeriesModel);\n\n    var RADIAN = Math.PI / 180;\r\n    function adjustSingleSide(list, cx, cy, r, dir, viewWidth, viewHeight, viewLeft, viewTop, farthestX) {\r\n        if (list.length < 2) {\r\n            return;\r\n        }\r\n        function recalculateXOnSemiToAlignOnEllipseCurve(semi) {\r\n            var rB = semi.rB;\r\n            var rB2 = rB * rB;\r\n            for (var i = 0; i < semi.list.length; i++) {\r\n                var item = semi.list[i];\r\n                var dy = Math.abs(item.label.y - cy);\r\n                var rA = r + item.len;\r\n                var rA2 = rA * rA;\r\n                var dx = Math.sqrt((1 - Math.abs(dy * dy / rB2)) * rA2);\r\n                item.label.x = cx + (dx + item.len2) * dir;\r\n            }\r\n        }\r\n        function recalculateX(items) {\r\n            var topSemi = { list: [], maxY: 0 };\r\n            var bottomSemi = { list: [], maxY: 0 };\r\n            for (var i = 0; i < items.length; i++) {\r\n                if (items[i].labelAlignTo !== 'none') {\r\n                    continue;\r\n                }\r\n                var item = items[i];\r\n                var semi = item.label.y > cy ? bottomSemi : topSemi;\r\n                var dy = Math.abs(item.label.y - cy);\r\n                if (dy > semi.maxY) {\r\n                    var dx = item.label.x - cx - item.len2 * dir;\r\n                    var rA = r + item.len;\r\n                    var rB = dx < rA\r\n                        ? Math.sqrt(dy * dy / (1 - dx * dx / rA / rA))\r\n                        : rA;\r\n                    semi.rB = rB;\r\n                    semi.maxY = dy;\r\n                }\r\n                semi.list.push(item);\r\n            }\r\n            recalculateXOnSemiToAlignOnEllipseCurve(topSemi);\r\n            recalculateXOnSemiToAlignOnEllipseCurve(bottomSemi);\r\n        }\r\n        var len = list.length;\r\n        for (var i = 0; i < len; i++) {\r\n            if (list[i].position === 'outer' && list[i].labelAlignTo === 'labelLine') {\r\n                var dx = list[i].label.x - farthestX;\r\n                list[i].linePoints[1][0] += dx;\r\n                list[i].label.x = farthestX;\r\n            }\r\n        }\r\n        if (shiftLayoutOnY(list, viewTop, viewTop + viewHeight)) {\r\n            recalculateX(list);\r\n        }\r\n    }\r\n    function avoidOverlap(labelLayoutList, cx, cy, r, viewWidth, viewHeight, viewLeft, viewTop) {\r\n        var leftList = [];\r\n        var rightList = [];\r\n        var leftmostX = Number.MAX_VALUE;\r\n        var rightmostX = -Number.MAX_VALUE;\r\n        for (var i = 0; i < labelLayoutList.length; i++) {\r\n            var label = labelLayoutList[i].label;\r\n            if (isPositionCenter(labelLayoutList[i])) {\r\n                continue;\r\n            }\r\n            if (label.x < cx) {\r\n                leftmostX = Math.min(leftmostX, label.x);\r\n                leftList.push(labelLayoutList[i]);\r\n            }\r\n            else {\r\n                rightmostX = Math.max(rightmostX, label.x);\r\n                rightList.push(labelLayoutList[i]);\r\n            }\r\n        }\r\n        adjustSingleSide(rightList, cx, cy, r, 1, viewWidth, viewHeight, viewLeft, viewTop, rightmostX);\r\n        adjustSingleSide(leftList, cx, cy, r, -1, viewWidth, viewHeight, viewLeft, viewTop, leftmostX);\r\n        for (var i = 0; i < labelLayoutList.length; i++) {\r\n            var layout = labelLayoutList[i];\r\n            var label = layout.label;\r\n            if (isPositionCenter(layout)) {\r\n                continue;\r\n            }\r\n            var linePoints = layout.linePoints;\r\n            if (linePoints) {\r\n                var isAlignToEdge = layout.labelAlignTo === 'edge';\r\n                var realTextWidth = layout.rect.width;\r\n                var targetTextWidth = void 0;\r\n                if (isAlignToEdge) {\r\n                    if (label.x < cx) {\r\n                        targetTextWidth = linePoints[2][0] - layout.labelDistance\r\n                            - viewLeft - layout.edgeDistance;\r\n                    }\r\n                    else {\r\n                        targetTextWidth = viewLeft + viewWidth - layout.edgeDistance\r\n                            - linePoints[2][0] - layout.labelDistance;\r\n                    }\r\n                }\r\n                else {\r\n                    if (label.x < cx) {\r\n                        targetTextWidth = label.x - viewLeft - layout.bleedMargin;\r\n                    }\r\n                    else {\r\n                        targetTextWidth = viewLeft + viewWidth - label.x - layout.bleedMargin;\r\n                    }\r\n                }\r\n                if (targetTextWidth < layout.rect.width) {\r\n                    layout.label.style.width = targetTextWidth;\r\n                    if (layout.labelAlignTo === 'edge') {\r\n                        realTextWidth = targetTextWidth;\r\n                    }\r\n                }\r\n                var dist = linePoints[1][0] - linePoints[2][0];\r\n                if (isAlignToEdge) {\r\n                    if (label.x < cx) {\r\n                        linePoints[2][0] = viewLeft + layout.edgeDistance + realTextWidth + layout.labelDistance;\r\n                    }\r\n                    else {\r\n                        linePoints[2][0] = viewLeft + viewWidth - layout.edgeDistance\r\n                            - realTextWidth - layout.labelDistance;\r\n                    }\r\n                }\r\n                else {\r\n                    if (label.x < cx) {\r\n                        linePoints[2][0] = label.x + layout.labelDistance;\r\n                    }\r\n                    else {\r\n                        linePoints[2][0] = label.x - layout.labelDistance;\r\n                    }\r\n                    linePoints[1][0] = linePoints[2][0] + dist;\r\n                }\r\n                linePoints[1][1] = linePoints[2][1] = label.y;\r\n            }\r\n        }\r\n    }\r\n    function isPositionCenter(sectorShape) {\r\n        return sectorShape.position === 'center';\r\n    }\r\n    function pieLabelLayout(seriesModel) {\r\n        var data = seriesModel.getData();\r\n        var labelLayoutList = [];\r\n        var cx;\r\n        var cy;\r\n        var hasLabelRotate = false;\r\n        var minShowLabelRadian = (seriesModel.get('minShowLabelAngle') || 0) * RADIAN;\r\n        var viewRect = data.getLayout('viewRect');\r\n        var r = data.getLayout('r');\r\n        var viewWidth = viewRect.width;\r\n        var viewLeft = viewRect.x;\r\n        var viewTop = viewRect.y;\r\n        var viewHeight = viewRect.height;\r\n        function setNotShow(el) {\r\n            el.ignore = true;\r\n        }\r\n        function isLabelShown(label) {\r\n            if (!label.ignore) {\r\n                return true;\r\n            }\r\n            for (var key in label.states) {\r\n                if (label.states[key].ignore === false) {\r\n                    return true;\r\n                }\r\n            }\r\n            return false;\r\n        }\r\n        data.each(function (idx) {\r\n            var sector = data.getItemGraphicEl(idx);\r\n            var sectorShape = sector.shape;\r\n            var label = sector.getTextContent();\r\n            var labelLine = sector.getTextGuideLine();\r\n            var itemModel = data.getItemModel(idx);\r\n            var labelModel = itemModel.getModel('label');\r\n            var labelPosition = labelModel.get('position') || itemModel.get(['emphasis', 'label', 'position']);\r\n            var labelDistance = labelModel.get('distanceToLabelLine');\r\n            var labelAlignTo = labelModel.get('alignTo');\r\n            var edgeDistance = parsePercent$2(labelModel.get('edgeDistance'), viewWidth);\r\n            var bleedMargin = labelModel.get('bleedMargin');\r\n            var labelLineModel = itemModel.getModel('labelLine');\r\n            var labelLineLen = labelLineModel.get('length');\r\n            labelLineLen = parsePercent$2(labelLineLen, viewWidth);\r\n            var labelLineLen2 = labelLineModel.get('length2');\r\n            labelLineLen2 = parsePercent$2(labelLineLen2, viewWidth);\r\n            if (Math.abs(sectorShape.endAngle - sectorShape.startAngle) < minShowLabelRadian) {\r\n                each(label.states, setNotShow);\r\n                label.ignore = true;\r\n                return;\r\n            }\r\n            if (!isLabelShown(label)) {\r\n                return;\r\n            }\r\n            var midAngle = (sectorShape.startAngle + sectorShape.endAngle) / 2;\r\n            var nx = Math.cos(midAngle);\r\n            var ny = Math.sin(midAngle);\r\n            var textX;\r\n            var textY;\r\n            var linePoints;\r\n            var textAlign;\r\n            cx = sectorShape.cx;\r\n            cy = sectorShape.cy;\r\n            var isLabelInside = labelPosition === 'inside' || labelPosition === 'inner';\r\n            if (labelPosition === 'center') {\r\n                textX = sectorShape.cx;\r\n                textY = sectorShape.cy;\r\n                textAlign = 'center';\r\n            }\r\n            else {\r\n                var x1 = (isLabelInside ? (sectorShape.r + sectorShape.r0) / 2 * nx : sectorShape.r * nx) + cx;\r\n                var y1 = (isLabelInside ? (sectorShape.r + sectorShape.r0) / 2 * ny : sectorShape.r * ny) + cy;\r\n                textX = x1 + nx * 3;\r\n                textY = y1 + ny * 3;\r\n                if (!isLabelInside) {\r\n                    var x2 = x1 + nx * (labelLineLen + r - sectorShape.r);\r\n                    var y2 = y1 + ny * (labelLineLen + r - sectorShape.r);\r\n                    var x3 = x2 + ((nx < 0 ? -1 : 1) * labelLineLen2);\r\n                    var y3 = y2;\r\n                    if (labelAlignTo === 'edge') {\r\n                        textX = nx < 0\r\n                            ? viewLeft + edgeDistance\r\n                            : viewLeft + viewWidth - edgeDistance;\r\n                    }\r\n                    else {\r\n                        textX = x3 + (nx < 0 ? -labelDistance : labelDistance);\r\n                    }\r\n                    textY = y3;\r\n                    linePoints = [[x1, y1], [x2, y2], [x3, y3]];\r\n                }\r\n                textAlign = isLabelInside\r\n                    ? 'center'\r\n                    : (labelAlignTo === 'edge'\r\n                        ? (nx > 0 ? 'right' : 'left')\r\n                        : (nx > 0 ? 'left' : 'right'));\r\n            }\r\n            var labelRotate;\r\n            var rotate = labelModel.get('rotate');\r\n            if (typeof rotate === 'number') {\r\n                labelRotate = rotate * (Math.PI / 180);\r\n            }\r\n            else {\r\n                labelRotate = rotate\r\n                    ? (nx < 0 ? -midAngle + Math.PI : -midAngle)\r\n                    : 0;\r\n            }\r\n            hasLabelRotate = !!labelRotate;\r\n            label.x = textX;\r\n            label.y = textY;\r\n            label.rotation = labelRotate;\r\n            label.setStyle({\r\n                verticalAlign: 'middle'\r\n            });\r\n            if (!isLabelInside) {\r\n                var textRect = label.getBoundingRect().clone();\r\n                textRect.applyTransform(label.getComputedTransform());\r\n                var margin = (label.style.margin || 0) + 2.1;\r\n                textRect.y -= margin / 2;\r\n                textRect.height += margin;\r\n                labelLayoutList.push({\r\n                    label: label,\r\n                    labelLine: labelLine,\r\n                    position: labelPosition,\r\n                    len: labelLineLen,\r\n                    len2: labelLineLen2,\r\n                    minTurnAngle: labelLineModel.get('minTurnAngle'),\r\n                    maxSurfaceAngle: labelLineModel.get('maxSurfaceAngle'),\r\n                    surfaceNormal: new Point(nx, ny),\r\n                    linePoints: linePoints,\r\n                    textAlign: textAlign,\r\n                    labelDistance: labelDistance,\r\n                    labelAlignTo: labelAlignTo,\r\n                    edgeDistance: edgeDistance,\r\n                    bleedMargin: bleedMargin,\r\n                    rect: textRect\r\n                });\r\n            }\r\n            else {\r\n                label.setStyle({\r\n                    align: textAlign\r\n                });\r\n                var selectState = label.states.select;\r\n                if (selectState) {\r\n                    selectState.x += label.x;\r\n                    selectState.y += label.y;\r\n                }\r\n            }\r\n            sector.setTextConfig({\r\n                inside: isLabelInside\r\n            });\r\n        });\r\n        if (!hasLabelRotate && seriesModel.get('avoidLabelOverlap')) {\r\n            avoidOverlap(labelLayoutList, cx, cy, r, viewWidth, viewHeight, viewLeft, viewTop);\r\n        }\r\n        for (var i = 0; i < labelLayoutList.length; i++) {\r\n            var layout = labelLayoutList[i];\r\n            var label = layout.label;\r\n            var labelLine = layout.labelLine;\r\n            var notShowLabel = isNaN(label.x) || isNaN(label.y);\r\n            if (label) {\r\n                label.setStyle({\r\n                    align: layout.textAlign\r\n                });\r\n                if (notShowLabel) {\r\n                    each(label.states, setNotShow);\r\n                    label.ignore = true;\r\n                }\r\n                var selectState = label.states.select;\r\n                if (selectState) {\r\n                    selectState.x += label.x;\r\n                    selectState.y += label.y;\r\n                }\r\n            }\r\n            if (labelLine) {\r\n                var linePoints = layout.linePoints;\r\n                if (notShowLabel || !linePoints) {\r\n                    each(labelLine.states, setNotShow);\r\n                    labelLine.ignore = true;\r\n                }\r\n                else {\r\n                    limitTurnAngle(linePoints, layout.minTurnAngle);\r\n                    limitSurfaceAngle(linePoints, layout.surfaceNormal, layout.maxSurfaceAngle);\r\n                    labelLine.setShape({ points: linePoints });\r\n                    label.__hostTarget.textGuideLineConfig = {\r\n                        anchor: new Point(linePoints[0][0], linePoints[0][1])\r\n                    };\r\n                }\r\n            }\r\n        }\r\n    }\n\n    function getSectorCornerRadius(model, shape) {\r\n        var cornerRadius = model.get('borderRadius');\r\n        if (cornerRadius == null) {\r\n            return null;\r\n        }\r\n        if (!isArray(cornerRadius)) {\r\n            cornerRadius = [cornerRadius, cornerRadius];\r\n        }\r\n        return {\r\n            innerCornerRadius: parsePercent(cornerRadius[0], shape.r0),\r\n            cornerRadius: parsePercent(cornerRadius[1], shape.r)\r\n        };\r\n    }\n\n    var PiePiece = (function (_super) {\r\n        __extends(PiePiece, _super);\r\n        function PiePiece(data, idx, startAngle) {\r\n            var _this = _super.call(this) || this;\r\n            _this.z2 = 2;\r\n            var polyline = new Polyline();\r\n            var text = new ZRText();\r\n            _this.setTextGuideLine(polyline);\r\n            _this.setTextContent(text);\r\n            _this.updateData(data, idx, startAngle, true);\r\n            return _this;\r\n        }\r\n        PiePiece.prototype.updateData = function (data, idx, startAngle, firstCreate) {\r\n            var sector = this;\r\n            var seriesModel = data.hostModel;\r\n            var itemModel = data.getItemModel(idx);\r\n            var emphasisModel = itemModel.getModel('emphasis');\r\n            var layout = data.getItemLayout(idx);\r\n            var sectorShape = extend(getSectorCornerRadius(itemModel.getModel('itemStyle'), layout) || {}, layout);\r\n            if (firstCreate) {\r\n                sector.setShape(sectorShape);\r\n                var animationType = seriesModel.getShallow('animationType');\r\n                if (animationType === 'scale') {\r\n                    sector.shape.r = layout.r0;\r\n                    initProps(sector, {\r\n                        shape: {\r\n                            r: layout.r\r\n                        }\r\n                    }, seriesModel, idx);\r\n                }\r\n                else {\r\n                    if (startAngle != null) {\r\n                        sector.setShape({ startAngle: startAngle, endAngle: startAngle });\r\n                        initProps(sector, {\r\n                            shape: {\r\n                                startAngle: layout.startAngle,\r\n                                endAngle: layout.endAngle\r\n                            }\r\n                        }, seriesModel, idx);\r\n                    }\r\n                    else {\r\n                        sector.shape.endAngle = layout.startAngle;\r\n                        updateProps(sector, {\r\n                            shape: {\r\n                                endAngle: layout.endAngle\r\n                            }\r\n                        }, seriesModel, idx);\r\n                    }\r\n                }\r\n            }\r\n            else {\r\n                updateProps(sector, {\r\n                    shape: sectorShape\r\n                }, seriesModel, idx);\r\n            }\r\n            sector.useStyle(data.getItemVisual(idx, 'style'));\r\n            setStatesStylesFromModel(sector, itemModel);\r\n            var midAngle = (layout.startAngle + layout.endAngle) / 2;\r\n            var offset = seriesModel.get('selectedOffset');\r\n            var dx = Math.cos(midAngle) * offset;\r\n            var dy = Math.sin(midAngle) * offset;\r\n            var cursorStyle = itemModel.getShallow('cursor');\r\n            cursorStyle && sector.attr('cursor', cursorStyle);\r\n            this._updateLabel(seriesModel, data, idx);\r\n            sector.ensureState('emphasis').shape = __assign({ r: layout.r + (emphasisModel.get('scale')\r\n                    ? (emphasisModel.get('scaleSize') || 0) : 0) }, getSectorCornerRadius(emphasisModel.getModel('itemStyle'), layout));\r\n            extend(sector.ensureState('select'), {\r\n                x: dx,\r\n                y: dy,\r\n                shape: getSectorCornerRadius(itemModel.getModel(['select', 'itemStyle']), layout)\r\n            });\r\n            extend(sector.ensureState('blur'), {\r\n                shape: getSectorCornerRadius(itemModel.getModel(['blur', 'itemStyle']), layout)\r\n            });\r\n            var labelLine = sector.getTextGuideLine();\r\n            var labelText = sector.getTextContent();\r\n            extend(labelLine.ensureState('select'), {\r\n                x: dx,\r\n                y: dy\r\n            });\r\n            extend(labelText.ensureState('select'), {\r\n                x: dx,\r\n                y: dy\r\n            });\r\n            enableHoverEmphasis(this, emphasisModel.get('focus'), emphasisModel.get('blurScope'));\r\n        };\r\n        PiePiece.prototype._updateLabel = function (seriesModel, data, idx) {\r\n            var sector = this;\r\n            var itemModel = data.getItemModel(idx);\r\n            var labelLineModel = itemModel.getModel('labelLine');\r\n            var style = data.getItemVisual(idx, 'style');\r\n            var visualColor = style && style.fill;\r\n            var visualOpacity = style && style.opacity;\r\n            setLabelStyle(sector, getLabelStatesModels(itemModel), {\r\n                labelFetcher: data.hostModel,\r\n                labelDataIndex: idx,\r\n                inheritColor: visualColor,\r\n                defaultOpacity: visualOpacity,\r\n                defaultText: seriesModel.getFormattedLabel(idx, 'normal')\r\n                    || data.getName(idx)\r\n            });\r\n            var labelText = sector.getTextContent();\r\n            sector.setTextConfig({\r\n                position: null,\r\n                rotation: null\r\n            });\r\n            labelText.attr({\r\n                z2: 10\r\n            });\r\n            setLabelLineStyle(this, getLabelLineStatesModels(itemModel), {\r\n                stroke: visualColor,\r\n                opacity: retrieve3(labelLineModel.get(['lineStyle', 'opacity']), visualOpacity, 1)\r\n            });\r\n        };\r\n        return PiePiece;\r\n    }(Sector));\r\n    var PieView = (function (_super) {\r\n        __extends(PieView, _super);\r\n        function PieView() {\r\n            var _this = _super !== null && _super.apply(this, arguments) || this;\r\n            _this.ignoreLabelLineUpdate = true;\r\n            return _this;\r\n        }\r\n        PieView.prototype.init = function () {\r\n            var sectorGroup = new Group();\r\n            this._sectorGroup = sectorGroup;\r\n        };\r\n        PieView.prototype.render = function (seriesModel, ecModel, api, payload) {\r\n            var data = seriesModel.getData();\r\n            var oldData = this._data;\r\n            var group = this.group;\r\n            var startAngle;\r\n            if (!oldData && data.count() > 0) {\r\n                var shape = data.getItemLayout(0);\r\n                for (var s = 1; isNaN(shape && shape.startAngle) && s < data.count(); ++s) {\r\n                    shape = data.getItemLayout(s);\r\n                }\r\n                if (shape) {\r\n                    startAngle = shape.startAngle;\r\n                }\r\n            }\r\n            data.diff(oldData)\r\n                .add(function (idx) {\r\n                var piePiece = new PiePiece(data, idx, startAngle);\r\n                data.setItemGraphicEl(idx, piePiece);\r\n                group.add(piePiece);\r\n            })\r\n                .update(function (newIdx, oldIdx) {\r\n                var piePiece = oldData.getItemGraphicEl(oldIdx);\r\n                piePiece.updateData(data, newIdx, startAngle);\r\n                piePiece.off('click');\r\n                group.add(piePiece);\r\n                data.setItemGraphicEl(newIdx, piePiece);\r\n            })\r\n                .remove(function (idx) {\r\n                var piePiece = oldData.getItemGraphicEl(idx);\r\n                removeElementWithFadeOut(piePiece, seriesModel, idx);\r\n            })\r\n                .execute();\r\n            pieLabelLayout(seriesModel);\r\n            if (seriesModel.get('animationTypeUpdate') !== 'expansion') {\r\n                this._data = data;\r\n            }\r\n        };\r\n        PieView.prototype.dispose = function () { };\r\n        PieView.prototype.containPoint = function (point, seriesModel) {\r\n            var data = seriesModel.getData();\r\n            var itemLayout = data.getItemLayout(0);\r\n            if (itemLayout) {\r\n                var dx = point[0] - itemLayout.cx;\r\n                var dy = point[1] - itemLayout.cy;\r\n                var radius = Math.sqrt(dx * dx + dy * dy);\r\n                return radius <= itemLayout.r && radius >= itemLayout.r0;\r\n            }\r\n        };\r\n        PieView.type = 'pie';\r\n        return PieView;\r\n    }(ChartView));\r\n    ChartView.registerClass(PieView);\n\n    var PI2$7 = Math.PI * 2;\r\n    var RADIAN$1 = Math.PI / 180;\r\n    function getViewRect(seriesModel, api) {\r\n        return getLayoutRect(seriesModel.getBoxLayoutParams(), {\r\n            width: api.getWidth(),\r\n            height: api.getHeight()\r\n        });\r\n    }\r\n    function pieLayout(seriesType, ecModel, api) {\r\n        ecModel.eachSeriesByType(seriesType, function (seriesModel) {\r\n            var data = seriesModel.getData();\r\n            var valueDim = data.mapDimension('value');\r\n            var viewRect = getViewRect(seriesModel, api);\r\n            var center = seriesModel.get('center');\r\n            var radius = seriesModel.get('radius');\r\n            if (!isArray(radius)) {\r\n                radius = [0, radius];\r\n            }\r\n            if (!isArray(center)) {\r\n                center = [center, center];\r\n            }\r\n            var width = parsePercent$2(viewRect.width, api.getWidth());\r\n            var height = parsePercent$2(viewRect.height, api.getHeight());\r\n            var size = Math.min(width, height);\r\n            var cx = parsePercent$2(center[0], width) + viewRect.x;\r\n            var cy = parsePercent$2(center[1], height) + viewRect.y;\r\n            var r0 = parsePercent$2(radius[0], size / 2);\r\n            var r = parsePercent$2(radius[1], size / 2);\r\n            var startAngle = -seriesModel.get('startAngle') * RADIAN$1;\r\n            var minAngle = seriesModel.get('minAngle') * RADIAN$1;\r\n            var validDataCount = 0;\r\n            data.each(valueDim, function (value) {\r\n                !isNaN(value) && validDataCount++;\r\n            });\r\n            var sum = data.getSum(valueDim);\r\n            var unitRadian = Math.PI / (sum || validDataCount) * 2;\r\n            var clockwise = seriesModel.get('clockwise');\r\n            var roseType = seriesModel.get('roseType');\r\n            var stillShowZeroSum = seriesModel.get('stillShowZeroSum');\r\n            var extent = data.getDataExtent(valueDim);\r\n            extent[0] = 0;\r\n            var restAngle = PI2$7;\r\n            var valueSumLargerThanMinAngle = 0;\r\n            var currentAngle = startAngle;\r\n            var dir = clockwise ? 1 : -1;\r\n            data.setLayout({ viewRect: viewRect, r: r });\r\n            data.each(valueDim, function (value, idx) {\r\n                var angle;\r\n                if (isNaN(value)) {\r\n                    data.setItemLayout(idx, {\r\n                        angle: NaN,\r\n                        startAngle: NaN,\r\n                        endAngle: NaN,\r\n                        clockwise: clockwise,\r\n                        cx: cx,\r\n                        cy: cy,\r\n                        r0: r0,\r\n                        r: roseType\r\n                            ? NaN\r\n                            : r\r\n                    });\r\n                    return;\r\n                }\r\n                if (roseType !== 'area') {\r\n                    angle = (sum === 0 && stillShowZeroSum)\r\n                        ? unitRadian : (value * unitRadian);\r\n                }\r\n                else {\r\n                    angle = PI2$7 / validDataCount;\r\n                }\r\n                if (angle < minAngle) {\r\n                    angle = minAngle;\r\n                    restAngle -= minAngle;\r\n                }\r\n                else {\r\n                    valueSumLargerThanMinAngle += value;\r\n                }\r\n                var endAngle = currentAngle + dir * angle;\r\n                data.setItemLayout(idx, {\r\n                    angle: angle,\r\n                    startAngle: currentAngle,\r\n                    endAngle: endAngle,\r\n                    clockwise: clockwise,\r\n                    cx: cx,\r\n                    cy: cy,\r\n                    r0: r0,\r\n                    r: roseType\r\n                        ? linearMap(value, extent, [r0, r])\r\n                        : r\r\n                });\r\n                currentAngle = endAngle;\r\n            });\r\n            if (restAngle < PI2$7 && validDataCount) {\r\n                if (restAngle <= 1e-3) {\r\n                    var angle_1 = PI2$7 / validDataCount;\r\n                    data.each(valueDim, function (value, idx) {\r\n                        if (!isNaN(value)) {\r\n                            var layout_1 = data.getItemLayout(idx);\r\n                            layout_1.angle = angle_1;\r\n                            layout_1.startAngle = startAngle + dir * idx * angle_1;\r\n                            layout_1.endAngle = startAngle + dir * (idx + 1) * angle_1;\r\n                        }\r\n                    });\r\n                }\r\n                else {\r\n                    unitRadian = restAngle / valueSumLargerThanMinAngle;\r\n                    currentAngle = startAngle;\r\n                    data.each(valueDim, function (value, idx) {\r\n                        if (!isNaN(value)) {\r\n                            var layout_2 = data.getItemLayout(idx);\r\n                            var angle = layout_2.angle === minAngle\r\n                                ? minAngle : value * unitRadian;\r\n                            layout_2.startAngle = currentAngle;\r\n                            layout_2.endAngle = currentAngle + dir * angle;\r\n                            currentAngle += dir * angle;\r\n                        }\r\n                    });\r\n                }\r\n            }\r\n        });\r\n    }\n\n    function dataFilter(seriesType) {\r\n        return {\r\n            seriesType: seriesType,\r\n            reset: function (seriesModel, ecModel) {\r\n                var legendModels = ecModel.findComponents({\r\n                    mainType: 'legend'\r\n                });\r\n                if (!legendModels || !legendModels.length) {\r\n                    return;\r\n                }\r\n                var data = seriesModel.getData();\r\n                data.filterSelf(function (idx) {\r\n                    var name = data.getName(idx);\r\n                    for (var i = 0; i < legendModels.length; i++) {\r\n                        if (!legendModels[i].isSelected(name)) {\r\n                            return false;\r\n                        }\r\n                    }\r\n                    return true;\r\n                });\r\n            }\r\n        };\r\n    }\n\n    createLegacyDataSelectAction('pie', registerAction);\r\n    registerLayout(curry(pieLayout, 'pie'));\r\n    registerProcessor(dataFilter('pie'));\n\n    var DEFAULT_OPTION = {\r\n        label: {\r\n            enabled: true\r\n        },\r\n        decal: {\r\n            show: false\r\n        }\r\n    };\r\n    var inner$6 = makeInner();\r\n    var decalPaletteScope = {};\r\n    function ariaVisual(ecModel, api) {\r\n        var ariaModel = ecModel.getModel('aria');\r\n        if (!ariaModel.get('enabled')) {\r\n            return;\r\n        }\r\n        var defaultOption = clone(DEFAULT_OPTION);\r\n        merge(defaultOption.label, ecModel.getLocaleModel().get('aria'), false);\r\n        merge(ariaModel.option, defaultOption, false);\r\n        setDecal();\r\n        setLabel();\r\n        function setDecal() {\r\n            var decalModel = ariaModel.getModel('decal');\r\n            var useDecal = decalModel.get('show');\r\n            if (useDecal) {\r\n                var paletteScopeGroupByType_1 = createHashMap();\r\n                ecModel.eachSeries(function (seriesModel) {\r\n                    if (!seriesModel.useColorPaletteOnData) {\r\n                        return;\r\n                    }\r\n                    var decalScope = paletteScopeGroupByType_1.get(seriesModel.type);\r\n                    if (!decalScope) {\r\n                        decalScope = {};\r\n                        paletteScopeGroupByType_1.set(seriesModel.type, decalScope);\r\n                    }\r\n                    inner$6(seriesModel).scope = decalScope;\r\n                });\r\n                ecModel.eachRawSeries(function (seriesModel) {\r\n                    if (ecModel.isSeriesFiltered(seriesModel)) {\r\n                        return;\r\n                    }\r\n                    if (typeof seriesModel.enableAriaDecal === 'function') {\r\n                        seriesModel.enableAriaDecal();\r\n                        return;\r\n                    }\r\n                    var data = seriesModel.getData();\r\n                    if (seriesModel.useColorPaletteOnData) {\r\n                        var dataAll_1 = seriesModel.getRawData();\r\n                        var idxMap_1 = {};\r\n                        var decalScope_1 = inner$6(seriesModel).scope;\r\n                        data.each(function (idx) {\r\n                            var rawIdx = data.getRawIndex(idx);\r\n                            idxMap_1[rawIdx] = idx;\r\n                        });\r\n                        var dataCount_1 = dataAll_1.count();\r\n                        dataAll_1.each(function (rawIdx) {\r\n                            var idx = idxMap_1[rawIdx];\r\n                            var name = dataAll_1.getName(rawIdx) || (rawIdx + '');\r\n                            var paletteDecal = getDecalFromPalette(seriesModel.ecModel, name, decalScope_1, dataCount_1);\r\n                            var specifiedDecal = data.getItemVisual(idx, 'decal');\r\n                            data.setItemVisual(idx, 'decal', mergeDecal(specifiedDecal, paletteDecal));\r\n                        });\r\n                    }\r\n                    else {\r\n                        var paletteDecal = getDecalFromPalette(seriesModel.ecModel, seriesModel.name, decalPaletteScope, ecModel.getSeriesCount());\r\n                        var specifiedDecal = data.getVisual('decal');\r\n                        data.setVisual('decal', mergeDecal(specifiedDecal, paletteDecal));\r\n                    }\r\n                    function mergeDecal(specifiedDecal, paletteDecal) {\r\n                        var resultDecal = specifiedDecal\r\n                            ? extend(extend({}, paletteDecal), specifiedDecal)\r\n                            : paletteDecal;\r\n                        resultDecal.dirty = true;\r\n                        return resultDecal;\r\n                    }\r\n                });\r\n            }\r\n        }\r\n        function setLabel() {\r\n            var labelLocale = ecModel.getLocaleModel().get('aria');\r\n            var labelModel = ariaModel.getModel('label');\r\n            labelModel.option = defaults(labelModel.option, labelLocale);\r\n            if (!labelModel.get('enabled')) {\r\n                return;\r\n            }\r\n            var dom = api.getZr().dom;\r\n            if (labelModel.get('description')) {\r\n                dom.setAttribute('aria-label', labelModel.get('description'));\r\n                return;\r\n            }\r\n            var seriesCnt = ecModel.getSeriesCount();\r\n            var maxDataCnt = labelModel.get(['data', 'maxCount']) || 10;\r\n            var maxSeriesCnt = labelModel.get(['series', 'maxCount']) || 10;\r\n            var displaySeriesCnt = Math.min(seriesCnt, maxSeriesCnt);\r\n            var ariaLabel;\r\n            if (seriesCnt < 1) {\r\n                return;\r\n            }\r\n            else {\r\n                var title = getTitle();\r\n                if (title) {\r\n                    var withTitle = labelModel.get(['general', 'withTitle']);\r\n                    ariaLabel = replace(withTitle, {\r\n                        title: title\r\n                    });\r\n                }\r\n                else {\r\n                    ariaLabel = labelModel.get(['general', 'withoutTitle']);\r\n                }\r\n                var seriesLabels_1 = [];\r\n                var prefix = seriesCnt > 1\r\n                    ? labelModel.get(['series', 'multiple', 'prefix'])\r\n                    : labelModel.get(['series', 'single', 'prefix']);\r\n                ariaLabel += replace(prefix, { seriesCount: seriesCnt });\r\n                ecModel.eachSeries(function (seriesModel, idx) {\r\n                    if (idx < displaySeriesCnt) {\r\n                        var seriesLabel = void 0;\r\n                        var seriesName = seriesModel.get('name');\r\n                        var withName = seriesName ? 'withName' : 'withoutName';\r\n                        seriesLabel = seriesCnt > 1\r\n                            ? labelModel.get(['series', 'multiple', withName])\r\n                            : labelModel.get(['series', 'single', withName]);\r\n                        seriesLabel = replace(seriesLabel, {\r\n                            seriesId: seriesModel.seriesIndex,\r\n                            seriesName: seriesModel.get('name'),\r\n                            seriesType: getSeriesTypeName(seriesModel.subType)\r\n                        });\r\n                        var data = seriesModel.getData();\r\n                        if (data.count() > maxDataCnt) {\r\n                            var partialLabel = labelModel.get(['data', 'partialData']);\r\n                            seriesLabel += replace(partialLabel, {\r\n                                displayCnt: maxDataCnt\r\n                            });\r\n                        }\r\n                        else {\r\n                            seriesLabel += labelModel.get(['data', 'allData']);\r\n                        }\r\n                        var dataLabels = [];\r\n                        for (var i = 0; i < data.count(); i++) {\r\n                            if (i < maxDataCnt) {\r\n                                var name_1 = data.getName(i);\r\n                                var value = retrieveRawValue(data, i);\r\n                                var dataLabel = labelModel.get(['data', name_1 ? 'withName' : 'withoutName']);\r\n                                dataLabels.push(replace(dataLabel, {\r\n                                    name: name_1,\r\n                                    value: value\r\n                                }));\r\n                            }\r\n                        }\r\n                        var middleSeparator_1 = labelModel.get(['data', 'separator', 'middle']);\r\n                        var endSeparator_1 = labelModel.get(['data', 'separator', 'end']);\r\n                        seriesLabel += dataLabels.join(middleSeparator_1) + endSeparator_1;\r\n                        seriesLabels_1.push(seriesLabel);\r\n                    }\r\n                });\r\n                var separatorModel = labelModel.getModel(['series', 'multiple', 'separator']);\r\n                var middleSeparator = separatorModel.get('middle');\r\n                var endSeparator = separatorModel.get('end');\r\n                ariaLabel += seriesLabels_1.join(middleSeparator) + endSeparator;\r\n                dom.setAttribute('aria-label', ariaLabel);\r\n            }\r\n        }\r\n        function replace(str, keyValues) {\r\n            if (typeof str !== 'string') {\r\n                return str;\r\n            }\r\n            var result = str;\r\n            each(keyValues, function (value, key) {\r\n                result = result.replace(new RegExp('\\\\{\\\\s*' + key + '\\\\s*\\\\}', 'g'), value);\r\n            });\r\n            return result;\r\n        }\r\n        function getTitle() {\r\n            var title = ecModel.get('title');\r\n            if (title && title.length) {\r\n                title = title[0];\r\n            }\r\n            return title && title.text;\r\n        }\r\n        function getSeriesTypeName(type) {\r\n            return ecModel.getLocaleModel().get(['series', 'typeNames'])[type] || '自定义图';\r\n        }\r\n    }\n\n    function ariaPreprocessor(option) {\r\n        if (!option || !option.aria) {\r\n            return;\r\n        }\r\n        var aria = option.aria;\r\n        if (aria.show != null) {\r\n            aria.enabled = aria.show;\r\n        }\r\n        aria.label = aria.label || {};\r\n        each(['description', 'general', 'series', 'data'], function (name) {\r\n            if (aria[name] != null) {\r\n                aria.label[name] = aria[name];\r\n            }\r\n        });\r\n    }\n\n    var PRIORITY_VISUAL_ARIA$1 = PRIORITY.VISUAL.ARIA;\r\n    registerPreprocessor(ariaPreprocessor);\r\n    registerVisual(PRIORITY_VISUAL_ARIA$1, ariaVisual);\n\n    exports.PRIORITY = PRIORITY;\n    exports.connect = connect;\n    exports.dataTool = dataTool;\n    exports.dependencies = dependencies;\n    exports.disConnect = disConnect;\n    exports.disconnect = disconnect;\n    exports.dispose = dispose;\n    exports.extendChartView = extendChartView;\n    exports.extendComponentModel = extendComponentModel;\n    exports.extendComponentView = extendComponentView;\n    exports.extendSeriesModel = extendSeriesModel;\n    exports.getCoordinateSystemDimensions = getCoordinateSystemDimensions;\n    exports.getInstanceByDom = getInstanceByDom;\n    exports.getInstanceById = getInstanceById;\n    exports.getMap = getMap;\n    exports.init = init$1;\n    exports.registerAction = registerAction;\n    exports.registerCoordinateSystem = registerCoordinateSystem;\n    exports.registerLayout = registerLayout;\n    exports.registerLoading = registerLoading;\n    exports.registerLocale = registerLocale;\n    exports.registerMap = registerMap;\n    exports.registerPostInit = registerPostInit;\n    exports.registerPostUpdate = registerPostUpdate;\n    exports.registerPreprocessor = registerPreprocessor;\n    exports.registerProcessor = registerProcessor;\n    exports.registerTheme = registerTheme;\n    exports.registerTransform = registerTransform;\n    exports.registerVisual = registerVisual;\n    exports.setCanvasCreator = setCanvasCreator;\n    exports.version = version;\n\n    Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n\n"]}