You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@echarts.apache.org by gi...@apache.org on 2025/02/04 13:52:51 UTC

(echarts-website) branch asf-site updated: Deploying to asf-site from @ apache/echarts-website@4d6c56cb23edf24fedda3467f31caa25e102ea92 🚀

This is an automated email from the ASF dual-hosted git repository.

github-bot pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/echarts-website.git


The following commit(s) were added to refs/heads/asf-site by this push:
     new 3c6ab3b71 Deploying to asf-site from @ apache/echarts-website@4d6c56cb23edf24fedda3467f31caa25e102ea92 🚀
3c6ab3b71 is described below

commit 3c6ab3b7121979a58876c72a20bd96484b6ab432
Author: pissang <pi...@users.noreply.github.com>
AuthorDate: Tue Feb 4 13:52:40 2025 +0000

    Deploying to asf-site from @ apache/echarts-website@4d6c56cb23edf24fedda3467f31caa25e102ea92 🚀
---
 components/builder.html                            |    23 +-
 components/download.html                           |    23 +-
 en/404.html                                        |    21 +-
 en/api.html                                        |    23 +-
 en/builder.html                                    |    23 +-
 en/builder/echarts.html                            |     2 +-
 en/changelog.html                                  |    23 +-
 en/cheat-sheet.html                                |    23 +-
 en/coding-standard.html                            |    23 +-
 en/committers.html                                 |    21 +-
 en/contributing.html                               |    21 +-
 en/dependencies.html                               |    21 +-
 en/download-extension.html                         |    21 +-
 en/download-map.html                               |    21 +-
 en/download-theme.html                             |    23 +-
 en/download.html                                   |    23 +-
 en/events.html                                     |    23 +-
 en/events/2021-05-13-iscas.html                    |    23 +-
 en/events/2021-07-05-apachecon.html                |    23 +-
 en/faq.html                                        |    21 +-
 en/feature.html                                    |    23 +-
 en/index.html                                      |    23 +-
 en/js/doc-bundle.js                                |     2 +-
 .../echarts-www-landing-animation.js               |    93 +
 en/js/echarts-www-landing-animation/style.css      |     1 +
 en/js/index.js                                     |     2 +-
 .../ace-builds@1.4.12/src-min-noconflict/ace.js    |    17 +
 .../src-min-noconflict/ext-language_tools.js       |     8 +
 .../src-min-noconflict/mode-javascript.js          |     8 +
 .../src-min-noconflict/snippets/javascript.js      |     8 +
 .../src-min-noconflict/snippets/json.js            |     8 +
 .../src-min-noconflict/worker-javascript.js        |     1 +
 en/js/vendors/acorn@8.7.1/dist/acorn.min.js        |     8 +
 .../vendors/bootstrap@3.3.7/css/bootstrap.min.css  |     6 +
 en/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js  |     7 +
 en/js/vendors/code-prettify@0.1.0/lang-css.js      |   160 +
 en/js/vendors/code-prettify@0.1.0/prettify.min.js  |    24 +
 en/js/vendors/codemirror@5.56.0/codemirror.min.js  |     8 +
 .../mode/javascript/javascript.js                  |   935 +
 en/js/vendors/dat.gui@0.6.5/build/dat.gui.min.js   |     2 +
 en/js/vendors/echarts-gl/LICENSE                   |    29 +
 en/js/vendors/echarts-gl/asset/logo.png            |   Bin 0 -> 3944 bytes
 en/js/vendors/echarts-gl/babel.config.js           |     4 +
 en/js/vendors/echarts-gl/charts.js                 |     1 +
 en/js/vendors/echarts-gl/components.js             |     1 +
 en/js/vendors/echarts-gl/dist/echarts-gl.js        | 65729 ++++++++++++++
 en/js/vendors/echarts-gl/dist/echarts-gl.js.map    |     1 +
 en/js/vendors/echarts-gl/dist/echarts-gl.min.js    |     1 +
 .../echarts-gl/dist/echarts-gl.min.js.LICENSE.txt  |    14 +
 en/js/vendors/echarts-gl/index.js                  |     1 +
 en/js/vendors/echarts-gl/jsconfig.json             |    10 +
 en/js/vendors/echarts-gl/lib/chart/bar3D.js        |     3 +
 .../echarts-gl/lib/chart/bar3D/Bar3DSeries.js      |    64 +
 .../echarts-gl/lib/chart/bar3D/Bar3DView.js        |   299 +
 .../echarts-gl/lib/chart/bar3D/bar3DLayout.js      |   144 +
 .../lib/chart/bar3D/cartesian3DLayout.js           |    73 +
 .../lib/chart/bar3D/evaluateBarSparseness.js       |    29 +
 .../vendors/echarts-gl/lib/chart/bar3D/install.js  |    18 +
 .../echarts-gl/lib/chart/common/GLViewHelper.js    |    80 +
 .../echarts-gl/lib/chart/common/PointsBuilder.js   |   548 +
 .../echarts-gl/lib/chart/common/PointsMesh.js      |   102 +
 .../echarts-gl/lib/chart/common/createList.js      |    40 +
 .../echarts-gl/lib/chart/common/formatTooltip.js   |    65 +
 .../echarts-gl/lib/chart/common/sdfSprite.glsl.js  |     1 +
 en/js/vendors/echarts-gl/lib/chart/flowGL.js       |     3 +
 .../echarts-gl/lib/chart/flowGL/FlowGLSeries.js    |    45 +
 .../echarts-gl/lib/chart/flowGL/FlowGLView.js      |   332 +
 .../vendors/echarts-gl/lib/chart/flowGL/Line2D.js  |    65 +
 .../lib/chart/flowGL/VectorFieldParticleSurface.js |   404 +
 .../vendors/echarts-gl/lib/chart/flowGL/install.js |     8 +
 .../lib/chart/flowGL/vectorFieldParticle.glsl.js   |     1 +
 en/js/vendors/echarts-gl/lib/chart/graphGL.js      |     3 +
 .../echarts-gl/lib/chart/graphGL/ForceAtlas2.js    |   257 +
 .../echarts-gl/lib/chart/graphGL/ForceAtlas2GPU.js |   481 +
 .../echarts-gl/lib/chart/graphGL/GraphGLSeries.js  |   244 +
 .../echarts-gl/lib/chart/graphGL/GraphGLView.js    |   716 +
 .../lib/chart/graphGL/createGraphFromNodeEdge.js   |    56 +
 .../lib/chart/graphGL/forceAtlas2.glsl.js          |     1 +
 .../lib/chart/graphGL/forceAtlas2Worker.js         |   635 +
 .../echarts-gl/lib/chart/graphGL/install.js        |   153 +
 en/js/vendors/echarts-gl/lib/chart/line3D.js       |     3 +
 .../echarts-gl/lib/chart/line3D/Line3DSeries.js    |    26 +
 .../echarts-gl/lib/chart/line3D/Line3DView.js      |   233 +
 .../vendors/echarts-gl/lib/chart/line3D/install.js |    46 +
 en/js/vendors/echarts-gl/lib/chart/lines3D.js      |     3 +
 .../echarts-gl/lib/chart/lines3D/Lines3DSeries.js  |    48 +
 .../echarts-gl/lib/chart/lines3D/Lines3DView.js    |   166 +
 .../echarts-gl/lib/chart/lines3D/TrailGeometry.js  |   151 +
 .../echarts-gl/lib/chart/lines3D/TrailMesh.js      |    98 +
 .../echarts-gl/lib/chart/lines3D/TrailMesh2.js     |   123 +
 .../echarts-gl/lib/chart/lines3D/install.js        |    25 +
 .../echarts-gl/lib/chart/lines3D/lines3DLayout.js  |   147 +
 .../lib/chart/lines3D/shader/trail.glsl.js         |     1 +
 .../lib/chart/lines3D/shader/trail2.glsl.js        |     1 +
 en/js/vendors/echarts-gl/lib/chart/linesGL.js      |     3 +
 .../echarts-gl/lib/chart/linesGL/LinesGLSeries.js  |   191 +
 .../echarts-gl/lib/chart/linesGL/LinesGLView.js    |   187 +
 .../echarts-gl/lib/chart/linesGL/install.js        |     8 +
 en/js/vendors/echarts-gl/lib/chart/map3D.js        |     3 +
 .../echarts-gl/lib/chart/map3D/Map3DSeries.js      |   145 +
 .../echarts-gl/lib/chart/map3D/Map3DView.js        |   110 +
 .../vendors/echarts-gl/lib/chart/map3D/install.js  |    24 +
 en/js/vendors/echarts-gl/lib/chart/polygons3D.js   |     3 +
 .../lib/chart/polygons3D/Polygons3DSeries.js       |   100 +
 .../lib/chart/polygons3D/Polygons3DView.js         |    84 +
 .../echarts-gl/lib/chart/polygons3D/install.js     |     8 +
 en/js/vendors/echarts-gl/lib/chart/scatter3D.js    |     3 +
 .../lib/chart/scatter3D/Scatter3DSeries.js         |    62 +
 .../lib/chart/scatter3D/Scatter3DView.js           |   119 +
 .../echarts-gl/lib/chart/scatter3D/install.js      |    50 +
 en/js/vendors/echarts-gl/lib/chart/scatterGL.js    |     3 +
 .../lib/chart/scatterGL/ScatterGLSeries.js         |    43 +
 .../lib/chart/scatterGL/ScatterGLView.js           |   111 +
 .../echarts-gl/lib/chart/scatterGL/install.js      |    60 +
 en/js/vendors/echarts-gl/lib/chart/surface.js      |     3 +
 .../echarts-gl/lib/chart/surface/SurfaceSeries.js  |   186 +
 .../echarts-gl/lib/chart/surface/SurfaceView.js    |   479 +
 .../echarts-gl/lib/chart/surface/install.js        |    45 +
 .../echarts-gl/lib/chart/surface/surfaceLayout.js  |    41 +
 .../lib/component/common/Geo3DBuilder.js           |   713 +
 .../lib/component/common/LabelsBuilder.js          |   172 +
 .../echarts-gl/lib/component/common/SceneHelper.js |   175 +
 .../lib/component/common/componentLightMixin.js    |    32 +
 .../component/common/componentPostEffectMixin.js   |    51 +
 .../lib/component/common/componentShadingMixin.js  |    25 +
 .../component/common/componentViewControlMixin.js  |    73 +
 en/js/vendors/echarts-gl/lib/component/geo3D.js    |     3 +
 .../echarts-gl/lib/component/geo3D/Geo3DModel.js   |    86 +
 .../echarts-gl/lib/component/geo3D/Geo3DView.js    |    89 +
 .../echarts-gl/lib/component/geo3D/install.js      |    22 +
 en/js/vendors/echarts-gl/lib/component/globe.js    |     3 +
 .../echarts-gl/lib/component/globe/GlobeModel.js   |   168 +
 .../echarts-gl/lib/component/globe/GlobeView.js    |   411 +
 .../lib/component/globe/atmosphere.glsl.js         |     1 +
 .../echarts-gl/lib/component/globe/install.js      |    28 +
 en/js/vendors/echarts-gl/lib/component/grid3D.js   |     3 +
 .../echarts-gl/lib/component/grid3D/Axis3DModel.js |    18 +
 .../echarts-gl/lib/component/grid3D/Grid3DAxis.js  |   203 +
 .../echarts-gl/lib/component/grid3D/Grid3DFace.js  |   179 +
 .../echarts-gl/lib/component/grid3D/Grid3DModel.js |   121 +
 .../echarts-gl/lib/component/grid3D/Grid3DView.js  |   573 +
 .../lib/component/grid3D/axis3DDefault.js          |    79 +
 .../lib/component/grid3D/createAxis3DModel.js      |    55 +
 .../echarts-gl/lib/component/grid3D/install.js     |    49 +
 en/js/vendors/echarts-gl/lib/component/mapbox3D.js |     3 +
 .../lib/component/mapbox3D/Mapbox3DLayer.js        |    77 +
 .../lib/component/mapbox3D/Mapbox3DModel.js        |    55 +
 .../lib/component/mapbox3D/Mapbox3DView.js         |   137 +
 .../echarts-gl/lib/component/mapbox3D/install.js   |    22 +
 .../vendors/echarts-gl/lib/component/maptalks3D.js |     4 +
 .../lib/component/maptalks3D/Maptalks3DLayer.js    |    88 +
 .../lib/component/maptalks3D/Maptalks3DModel.js    |    56 +
 .../lib/component/maptalks3D/Maptalks3DView.js     |   161 +
 .../echarts-gl/lib/component/maptalks3D/install.js |    22 +
 en/js/vendors/echarts-gl/lib/coord/geo3D/Geo3D.js  |   153 +
 .../echarts-gl/lib/coord/geo3D/geo3DModelMixin.js  |   119 +
 en/js/vendors/echarts-gl/lib/coord/geo3DCreator.js |   180 +
 en/js/vendors/echarts-gl/lib/coord/globe/Globe.js  |    86 +
 en/js/vendors/echarts-gl/lib/coord/globeCreator.js |   147 +
 .../vendors/echarts-gl/lib/coord/grid3D/Axis3D.js  |    23 +
 .../echarts-gl/lib/coord/grid3D/Cartesian3D.js     |    36 +
 .../vendors/echarts-gl/lib/coord/grid3DCreator.js  |   170 +
 .../lib/coord/mapServiceCommon/MapService3D.js     |   165 +
 .../mapServiceCommon/createMapService3DCreator.js  |    85 +
 .../echarts-gl/lib/coord/mapbox3D/Mapbox3D.js      |    10 +
 .../echarts-gl/lib/coord/mapbox3DCreator.js        |     8 +
 .../echarts-gl/lib/coord/maptalks3D/Maptalks3D.js  |    12 +
 .../echarts-gl/lib/coord/maptalks3DCreator.js      |     8 +
 en/js/vendors/echarts-gl/lib/core/LayerGL.js       |   713 +
 en/js/vendors/echarts-gl/lib/core/ViewGL.js        |   465 +
 en/js/vendors/echarts-gl/lib/echarts-gl.js         |   252 +
 en/js/vendors/echarts-gl/lib/effect/DOF.glsl.js    |     1 +
 en/js/vendors/echarts-gl/lib/effect/EdgePass.js    |    61 +
 .../echarts-gl/lib/effect/EffectCompositor.js      |   615 +
 en/js/vendors/echarts-gl/lib/effect/NormalPass.js  |   197 +
 en/js/vendors/echarts-gl/lib/effect/SSAO.glsl.js   |     1 +
 en/js/vendors/echarts-gl/lib/effect/SSAOPass.js    |   233 +
 en/js/vendors/echarts-gl/lib/effect/SSR.glsl.js    |     1 +
 en/js/vendors/echarts-gl/lib/effect/SSRPass.js     |   219 +
 .../echarts-gl/lib/effect/TemporalSuperSampling.js |   164 +
 en/js/vendors/echarts-gl/lib/effect/composite.js   |   524 +
 .../echarts-gl/lib/effect/compositeMobile.js       |   422 +
 en/js/vendors/echarts-gl/lib/effect/edge.glsl.js   |     1 +
 en/js/vendors/echarts-gl/lib/effect/halton.js      |    17 +
 .../vendors/echarts-gl/lib/effect/poissonKernel.js |     2 +
 en/js/vendors/echarts-gl/lib/export/all.js         |    17 +
 en/js/vendors/echarts-gl/lib/export/charts.js      |    11 +
 en/js/vendors/echarts-gl/lib/export/components.js  |     5 +
 .../echarts-gl/lib/preprocessor/backwardCompat.js  |    62 +
 .../vendors/echarts-gl/lib/util/EChartsSurface.js  |   168 +
 en/js/vendors/echarts-gl/lib/util/OrbitControl.js  |   752 +
 .../echarts-gl/lib/util/ProgressiveQuickSort.js    |   125 +
 en/js/vendors/echarts-gl/lib/util/Roam2DControl.js |   158 +
 en/js/vendors/echarts-gl/lib/util/Triangulation.js |   642 +
 .../echarts-gl/lib/util/ZRTextureAtlasSurface.js   |   344 +
 .../vendors/echarts-gl/lib/util/animatableMixin.js |    85 +
 en/js/vendors/echarts-gl/lib/util/earcut.js        |   577 +
 en/js/vendors/echarts-gl/lib/util/format.js        |    42 +
 .../echarts-gl/lib/util/geometry/Bars3DGeometry.js |   365 +
 .../echarts-gl/lib/util/geometry/Lines2D.js        |   447 +
 .../echarts-gl/lib/util/geometry/Lines3D.js        |   456 +
 .../vendors/echarts-gl/lib/util/geometry/Quads.js  |   103 +
 .../echarts-gl/lib/util/geometry/Sprites.js        |   137 +
 .../lib/util/geometry/dynamicConvertMixin.js       |    40 +
 .../lib/util/geometry/trianglesSortMixin.js        |   124 +
 .../lib/util/geometry/verticesSortMixin.js         |   101 +
 en/js/vendors/echarts-gl/lib/util/graphicGL.js     |   684 +
 .../vendors/echarts-gl/lib/util/mesh/LabelsMesh.js |    21 +
 en/js/vendors/echarts-gl/lib/util/retrieve.js      |    31 +
 .../echarts-gl/lib/util/shader/color.glsl.js       |     1 +
 .../echarts-gl/lib/util/shader/common.glsl.js      |     1 +
 .../lib/util/shader/displayShadow.glsl.js          |     1 +
 .../echarts-gl/lib/util/shader/hatching.glsl.js    |     1 +
 .../echarts-gl/lib/util/shader/labels.glsl.js      |     1 +
 .../echarts-gl/lib/util/shader/lambert.glsl.js     |     1 +
 .../echarts-gl/lib/util/shader/lines2D.glsl.js     |     1 +
 .../echarts-gl/lib/util/shader/lines3D.glsl.js     |     1 +
 .../echarts-gl/lib/util/shader/motionBlur.glsl.js  |     1 +
 .../echarts-gl/lib/util/shader/normal.glsl.js      |     1 +
 .../echarts-gl/lib/util/shader/realistic.glsl.js   |     1 +
 .../echarts-gl/lib/util/shader/shadow.glsl.js      |     1 +
 en/js/vendors/echarts-gl/lib/util/sprite.js        |   163 +
 en/js/vendors/echarts-gl/lib/util/sunCalc.js       |    87 +
 en/js/vendors/echarts-gl/lib/util/visual.js        |    24 +
 en/js/vendors/echarts-gl/src/chart/bar3D.js        |     3 +
 .../echarts-gl/src/chart/bar3D/Bar3DSeries.js      |    85 +
 .../echarts-gl/src/chart/bar3D/Bar3DView.js        |   324 +
 .../echarts-gl/src/chart/bar3D/bar3DLayout.js      |   176 +
 .../src/chart/bar3D/cartesian3DLayout.js           |    80 +
 .../src/chart/bar3D/evaluateBarSparseness.js       |    25 +
 .../vendors/echarts-gl/src/chart/bar3D/install.js  |    23 +
 .../echarts-gl/src/chart/common/GLViewHelper.js    |    83 +
 .../echarts-gl/src/chart/common/PointsBuilder.js   |   585 +
 .../echarts-gl/src/chart/common/PointsMesh.js      |   115 +
 .../echarts-gl/src/chart/common/createList.js      |    44 +
 .../echarts-gl/src/chart/common/formatTooltip.js   |    82 +
 .../echarts-gl/src/chart/common/sdfSprite.glsl     |   132 +
 .../echarts-gl/src/chart/common/sdfSprite.glsl.js  |     1 +
 en/js/vendors/echarts-gl/src/chart/flowGL.js       |     3 +
 .../echarts-gl/src/chart/flowGL/FlowGLSeries.js    |    56 +
 .../echarts-gl/src/chart/flowGL/FlowGLView.js      |   358 +
 .../vendors/echarts-gl/src/chart/flowGL/Line2D.js  |    81 +
 .../src/chart/flowGL/VectorFieldParticleSurface.js |   442 +
 .../vendors/echarts-gl/src/chart/flowGL/install.js |    10 +
 .../src/chart/flowGL/vectorFieldParticle.glsl      |   191 +
 .../src/chart/flowGL/vectorFieldParticle.glsl.js   |     1 +
 en/js/vendors/echarts-gl/src/chart/graphGL.js      |     3 +
 .../echarts-gl/src/chart/graphGL/ForceAtlas2.js    |   281 +
 .../echarts-gl/src/chart/graphGL/ForceAtlas2GPU.js |   467 +
 .../echarts-gl/src/chart/graphGL/GraphGLSeries.js  |   281 +
 .../echarts-gl/src/chart/graphGL/GraphGLView.js    |   731 +
 .../src/chart/graphGL/createGraphFromNodeEdge.js   |    58 +
 .../echarts-gl/src/chart/graphGL/forceAtlas2.glsl  |   244 +
 .../src/chart/graphGL/forceAtlas2.glsl.js          |     1 +
 .../src/chart/graphGL/forceAtlas2Worker.js         |   661 +
 .../echarts-gl/src/chart/graphGL/install.js        |   169 +
 en/js/vendors/echarts-gl/src/chart/line3D.js       |     3 +
 .../echarts-gl/src/chart/line3D/Line3DSeries.js    |    37 +
 .../echarts-gl/src/chart/line3D/Line3DView.js      |   296 +
 .../vendors/echarts-gl/src/chart/line3D/install.js |    49 +
 en/js/vendors/echarts-gl/src/chart/lines3D.js      |     3 +
 .../echarts-gl/src/chart/lines3D/Lines3DSeries.js  |    65 +
 .../echarts-gl/src/chart/lines3D/Lines3DView.js    |   188 +
 .../echarts-gl/src/chart/lines3D/TrailGeometry.js  |   164 +
 .../echarts-gl/src/chart/lines3D/TrailMesh.js      |   120 +
 .../echarts-gl/src/chart/lines3D/TrailMesh2.js     |   155 +
 .../echarts-gl/src/chart/lines3D/install.js        |    31 +
 .../echarts-gl/src/chart/lines3D/lines3DLayout.js  |   166 +
 .../echarts-gl/src/chart/lines3D/shader/trail.glsl |    69 +
 .../src/chart/lines3D/shader/trail.glsl.js         |     1 +
 .../src/chart/lines3D/shader/trail2.glsl           |   103 +
 .../src/chart/lines3D/shader/trail2.glsl.js        |     1 +
 en/js/vendors/echarts-gl/src/chart/linesGL.js      |     3 +
 .../echarts-gl/src/chart/linesGL/LinesGLSeries.js  |   203 +
 .../echarts-gl/src/chart/linesGL/LinesGLView.js    |   202 +
 .../echarts-gl/src/chart/linesGL/install.js        |    10 +
 en/js/vendors/echarts-gl/src/chart/map3D.js        |     3 +
 .../echarts-gl/src/chart/map3D/Map3DSeries.js      |   158 +
 .../echarts-gl/src/chart/map3D/Map3DView.js        |   111 +
 .../vendors/echarts-gl/src/chart/map3D/install.js  |    26 +
 en/js/vendors/echarts-gl/src/chart/polygons3D.js   |     3 +
 .../src/chart/polygons3D/Polygons3DSeries.js       |   110 +
 .../src/chart/polygons3D/Polygons3DView.js         |    95 +
 .../echarts-gl/src/chart/polygons3D/install.js     |    10 +
 en/js/vendors/echarts-gl/src/chart/scatter3D.js    |     3 +
 .../src/chart/scatter3D/Scatter3DSeries.js         |    79 +
 .../src/chart/scatter3D/Scatter3DView.js           |   134 +
 .../echarts-gl/src/chart/scatter3D/install.js      |    50 +
 en/js/vendors/echarts-gl/src/chart/scatterGL.js    |     3 +
 .../src/chart/scatterGL/ScatterGLSeries.js         |    62 +
 .../src/chart/scatterGL/ScatterGLView.js           |   121 +
 .../echarts-gl/src/chart/scatterGL/install.js      |    58 +
 en/js/vendors/echarts-gl/src/chart/surface.js      |     3 +
 .../echarts-gl/src/chart/surface/SurfaceSeries.js  |   204 +
 .../echarts-gl/src/chart/surface/SurfaceView.js    |   492 +
 .../echarts-gl/src/chart/surface/install.js        |    44 +
 .../src/component/common/Geo3DBuilder.js           |   772 +
 .../src/component/common/LabelsBuilder.js          |   180 +
 .../echarts-gl/src/component/common/SceneHelper.js |   183 +
 .../src/component/common/componentLightMixin.js    |    34 +
 .../component/common/componentPostEffectMixin.js   |    63 +
 .../src/component/common/componentShadingMixin.js  |    33 +
 .../component/common/componentViewControlMixin.js  |    78 +
 en/js/vendors/echarts-gl/src/component/geo3D.js    |     3 +
 .../echarts-gl/src/component/geo3D/Geo3DModel.js   |   103 +
 .../echarts-gl/src/component/geo3D/Geo3DView.js    |    96 +
 .../echarts-gl/src/component/geo3D/install.js      |    26 +
 en/js/vendors/echarts-gl/src/component/globe.js    |     3 +
 .../echarts-gl/src/component/globe/GlobeModel.js   |   208 +
 .../echarts-gl/src/component/globe/GlobeView.js    |   457 +
 .../echarts-gl/src/component/globe/atmosphere.glsl |    27 +
 .../src/component/globe/atmosphere.glsl.js         |     1 +
 .../echarts-gl/src/component/globe/install.js      |    34 +
 en/js/vendors/echarts-gl/src/component/grid3D.js   |     3 +
 .../echarts-gl/src/component/grid3D/Axis3DModel.js |    23 +
 .../echarts-gl/src/component/grid3D/Grid3DAxis.js  |   223 +
 .../echarts-gl/src/component/grid3D/Grid3DFace.js  |   194 +
 .../echarts-gl/src/component/grid3D/Grid3DModel.js |   145 +
 .../echarts-gl/src/component/grid3D/Grid3DView.js  |   587 +
 .../src/component/grid3D/axis3DDefault.js          |    91 +
 .../src/component/grid3D/createAxis3DModel.js      |    73 +
 .../echarts-gl/src/component/grid3D/install.js     |    59 +
 en/js/vendors/echarts-gl/src/component/mapbox3D.js |     3 +
 .../src/component/mapbox3D/Mapbox3DLayer.js        |    78 +
 .../src/component/mapbox3D/Mapbox3DModel.js        |    74 +
 .../src/component/mapbox3D/Mapbox3DView.js         |   147 +
 .../echarts-gl/src/component/mapbox3D/install.js   |    25 +
 .../vendors/echarts-gl/src/component/maptalks3D.js |     4 +
 .../src/component/maptalks3D/Maptalks3DLayer.js    |    89 +
 .../src/component/maptalks3D/Maptalks3DModel.js    |    75 +
 .../src/component/maptalks3D/Maptalks3DView.js     |   171 +
 .../echarts-gl/src/component/maptalks3D/install.js |    25 +
 en/js/vendors/echarts-gl/src/coord/geo3D/Geo3D.js  |   184 +
 .../echarts-gl/src/coord/geo3D/geo3DModelMixin.js  |   138 +
 en/js/vendors/echarts-gl/src/coord/geo3DCreator.js |   209 +
 en/js/vendors/echarts-gl/src/coord/globe/Globe.js  |   102 +
 en/js/vendors/echarts-gl/src/coord/globeCreator.js |   177 +
 .../vendors/echarts-gl/src/coord/grid3D/Axis3D.js  |    29 +
 .../echarts-gl/src/coord/grid3D/Cartesian3D.js     |    53 +
 .../vendors/echarts-gl/src/coord/grid3DCreator.js  |   189 +
 .../src/coord/mapServiceCommon/MapService3D.js     |   188 +
 .../mapServiceCommon/createMapService3DCreator.js  |   108 +
 .../echarts-gl/src/coord/mapbox3D/Mapbox3D.js      |    11 +
 .../echarts-gl/src/coord/mapbox3DCreator.js        |    10 +
 .../echarts-gl/src/coord/maptalks3D/Maptalks3D.js  |    14 +
 .../echarts-gl/src/coord/maptalks3DCreator.js      |    10 +
 en/js/vendors/echarts-gl/src/core/LayerGL.js       |   678 +
 en/js/vendors/echarts-gl/src/core/ViewGL.js        |   453 +
 en/js/vendors/echarts-gl/src/echarts-gl.js         |   260 +
 en/js/vendors/echarts-gl/src/effect/DOF.glsl       |   206 +
 en/js/vendors/echarts-gl/src/effect/DOF.glsl.js    |     1 +
 en/js/vendors/echarts-gl/src/effect/EdgePass.js    |    57 +
 .../echarts-gl/src/effect/EffectCompositor.js      |   540 +
 en/js/vendors/echarts-gl/src/effect/NormalPass.js  |   207 +
 en/js/vendors/echarts-gl/src/effect/SSAO.glsl      |   198 +
 en/js/vendors/echarts-gl/src/effect/SSAO.glsl.js   |     1 +
 en/js/vendors/echarts-gl/src/effect/SSAOPass.js    |   228 +
 en/js/vendors/echarts-gl/src/effect/SSR.glsl       |   446 +
 en/js/vendors/echarts-gl/src/effect/SSR.glsl.js    |     1 +
 en/js/vendors/echarts-gl/src/effect/SSRPass.js     |   221 +
 .../echarts-gl/src/effect/TemporalSuperSampling.js |   166 +
 en/js/vendors/echarts-gl/src/effect/composite.js   |   578 +
 .../echarts-gl/src/effect/compositeMobile.js       |   465 +
 en/js/vendors/echarts-gl/src/effect/edge.glsl      |    68 +
 en/js/vendors/echarts-gl/src/effect/edge.glsl.js   |     1 +
 en/js/vendors/echarts-gl/src/effect/halton.js      |    18 +
 .../vendors/echarts-gl/src/effect/poissonKernel.js |    36 +
 en/js/vendors/echarts-gl/src/export/all.js         |    20 +
 en/js/vendors/echarts-gl/src/export/charts.js      |    12 +
 en/js/vendors/echarts-gl/src/export/components.js  |     5 +
 .../echarts-gl/src/preprocessor/backwardCompat.js  |    62 +
 .../vendors/echarts-gl/src/util/EChartsSurface.js  |   177 +
 en/js/vendors/echarts-gl/src/util/OrbitControl.js  |   835 +
 .../echarts-gl/src/util/ProgressiveQuickSort.js    |   129 +
 en/js/vendors/echarts-gl/src/util/Roam2DControl.js |   197 +
 en/js/vendors/echarts-gl/src/util/Triangulation.js |   618 +
 .../echarts-gl/src/util/ZRTextureAtlasSurface.js   |   366 +
 .../vendors/echarts-gl/src/util/animatableMixin.js |    93 +
 en/js/vendors/echarts-gl/src/util/earcut.js        |   618 +
 en/js/vendors/echarts-gl/src/util/format.js        |    42 +
 .../echarts-gl/src/util/geometry/Bars3DGeometry.js |   393 +
 .../echarts-gl/src/util/geometry/Lines2D.js        |   466 +
 .../echarts-gl/src/util/geometry/Lines3D.js        |   464 +
 .../vendors/echarts-gl/src/util/geometry/Quads.js  |   108 +
 .../echarts-gl/src/util/geometry/Sprites.js        |   138 +
 .../src/util/geometry/dynamicConvertMixin.js       |    39 +
 .../src/util/geometry/trianglesSortMixin.js        |   135 +
 .../src/util/geometry/verticesSortMixin.js         |   104 +
 en/js/vendors/echarts-gl/src/util/graphicGL.js     |   685 +
 .../vendors/echarts-gl/src/util/mesh/LabelsMesh.js |    24 +
 en/js/vendors/echarts-gl/src/util/retrieve.js      |    40 +
 .../vendors/echarts-gl/src/util/shader/color.glsl  |   111 +
 .../echarts-gl/src/util/shader/color.glsl.js       |     1 +
 .../vendors/echarts-gl/src/util/shader/common.glsl |   303 +
 .../echarts-gl/src/util/shader/common.glsl.js      |     1 +
 .../echarts-gl/src/util/shader/displayShadow.glsl  |    68 +
 .../src/util/shader/displayShadow.glsl.js          |     1 +
 .../echarts-gl/src/util/shader/hatching.glsl       |   174 +
 .../echarts-gl/src/util/shader/hatching.glsl.js    |     1 +
 .../vendors/echarts-gl/src/util/shader/labels.glsl |    57 +
 .../echarts-gl/src/util/shader/labels.glsl.js      |     1 +
 .../echarts-gl/src/util/shader/lambert.glsl        |   206 +
 .../echarts-gl/src/util/shader/lambert.glsl.js     |     1 +
 .../echarts-gl/src/util/shader/lines2D.glsl        |    81 +
 .../echarts-gl/src/util/shader/lines2D.glsl.js     |     1 +
 .../echarts-gl/src/util/shader/lines3D.glsl        |   160 +
 .../echarts-gl/src/util/shader/lines3D.glsl.js     |     1 +
 .../echarts-gl/src/util/shader/motionBlur.glsl     |    18 +
 .../echarts-gl/src/util/shader/motionBlur.glsl.js  |     1 +
 .../vendors/echarts-gl/src/util/shader/normal.glsl |    93 +
 .../echarts-gl/src/util/shader/normal.glsl.js      |     1 +
 .../echarts-gl/src/util/shader/realistic.glsl      |   296 +
 .../echarts-gl/src/util/shader/realistic.glsl.js   |     1 +
 .../vendors/echarts-gl/src/util/shader/shadow.glsl |    38 +
 .../echarts-gl/src/util/shader/shadow.glsl.js      |     1 +
 en/js/vendors/echarts-gl/src/util/sprite.js        |   180 +
 en/js/vendors/echarts-gl/src/util/sunCalc.js       |    85 +
 en/js/vendors/echarts-gl/src/util/visual.js        |    22 +
 en/js/vendors/echarts-gl/webpack.config.js         |    25 +
 .../dist/echarts-graph-modularity.js               |  1900 +
 .../dist/echarts-graph-modularity.js.map           |     1 +
 .../dist/echarts-graph-modularity.min.js           |     2 +
 .../dist/echarts-graph-modularity.min.js.map       |     1 +
 .../echarts-graph-modularity/example/example.html  |    93 +
 .../example/modularity.png                         |   Bin 0 -> 104501 bytes
 en/js/vendors/echarts-graph-modularity/index.js    |     1 +
 en/js/vendors/echarts-graph-modularity/src/main.js |    81 +
 .../echarts-graph-modularity/webpack.config.js     |    20 +
 en/js/vendors/echarts-stat/README.zh-CN.md         |   596 +
 en/js/vendors/echarts-stat/dist/ecStat.js          |  1998 +
 en/js/vendors/echarts-stat/dist/ecStat.min.js      |     1 +
 en/js/vendors/echarts-stat/img/exponential.png     |   Bin 0 -> 106510 bytes
 en/js/vendors/echarts-stat/img/histogram.png       |   Bin 0 -> 89002 bytes
 en/js/vendors/echarts-stat/img/linear.png          |   Bin 0 -> 128325 bytes
 en/js/vendors/echarts-stat/img/logarithmic.png     |   Bin 0 -> 121104 bytes
 en/js/vendors/echarts-stat/img/polynomial.png      |   Bin 0 -> 142671 bytes
 .../vendors/echarts-stat/img/static-clustering.png |   Bin 0 -> 145367 bytes
 en/js/vendors/echarts-stat/index.js                |     1 +
 en/js/vendors/echarts-stat/src/clustering.js       |   427 +
 en/js/vendors/echarts-stat/src/ecStat.d.ts         |    57 +
 en/js/vendors/echarts-stat/src/ecStat.js           |    18 +
 en/js/vendors/echarts-stat/src/histogram.js        |   141 +
 en/js/vendors/echarts-stat/src/regression.js       |   345 +
 en/js/vendors/echarts-stat/src/statistics.js       |    16 +
 .../echarts-stat/src/statistics/deviation.js       |    16 +
 en/js/vendors/echarts-stat/src/statistics/max.js   |    25 +
 en/js/vendors/echarts-stat/src/statistics/mean.js  |    26 +
 .../vendors/echarts-stat/src/statistics/median.js  |    17 +
 en/js/vendors/echarts-stat/src/statistics/min.js   |    25 +
 .../echarts-stat/src/statistics/quantile.js        |    31 +
 .../echarts-stat/src/statistics/sampleVariance.js  |    36 +
 en/js/vendors/echarts-stat/src/statistics/sum.js   |    30 +
 .../echarts-stat/src/transform/clustering.js       |    88 +
 en/js/vendors/echarts-stat/src/transform/helper.js |    79 +
 .../echarts-stat/src/transform/histogram.js        |    33 +
 .../echarts-stat/src/transform/regression.js       |    59 +
 en/js/vendors/echarts-stat/src/util/array.js       |   150 +
 en/js/vendors/echarts-stat/src/util/dataProcess.js |   107 +
 en/js/vendors/echarts-stat/src/util/number.js      |    41 +
 en/js/vendors/echarts-stat/src/util/object.js      |    27 +
 en/js/vendors/echarts-stat/src/util/range.js       |    43 +
 en/js/vendors/echarts-stat/src/util/tickStep.js    |    41 +
 .../test/data/clustering_dataset2.json             |    62 +
 .../echarts-stat/test/data/regression_data0.json   |   202 +
 .../echarts-stat/test/data/regression_test.json    |    18 +
 en/js/vendors/echarts-stat/test/lib/config.js      |    23 +
 en/js/vendors/echarts-stat/test/lib/esl.js         |     1 +
 en/js/vendors/echarts-stat/test/lib/jquery.min.js  |     5 +
 .../test/standalone/clustering_animation.html      |   135 +
 .../test/standalone/clustering_bikmeans.html       |   105 +
 .../test/standalone/histogram_bar.html             |    71 +
 .../test/standalone/histogram_custom.html          |    94 +
 .../test/standalone/regression_exponential.html    |   125 +
 .../test/standalone/regression_linear.html         |    98 +
 .../standalone/regression_linearThroughOrigin.html |    90 +
 .../test/standalone/regression_logarithmic.html    |   241 +
 .../test/standalone/regression_polynomial.html     |   124 +
 .../test/transform/clustering_bikmeans.html        |   102 +
 .../echarts-stat/test/transform/histogram_bar.html |   151 +
 .../test/transform/regression_exponential.html     |   109 +
 .../test/transform/regression_linear.html          |    83 +
 .../transform/regression_linearThroughOrigin.html  |    91 +
 .../test/transform/regression_logarithmic.html     |   149 +
 .../test/transform/regression_polynomial.html      |   124 +
 en/js/vendors/echarts-stat/webpack.config.js       |    21 +
 en/js/vendors/echarts/KEYS                         |   419 +
 en/js/vendors/echarts/LICENSE                      |   222 +
 en/js/vendors/echarts/NOTICE                       |     5 +
 en/js/vendors/echarts/asset/logo.png               |   Bin 0 -> 7323 bytes
 en/js/vendors/echarts/charts.d.ts                  |    20 +
 en/js/vendors/echarts/charts.js                    |    27 +
 en/js/vendors/echarts/components.d.ts              |    20 +
 en/js/vendors/echarts/components.js                |    20 +
 en/js/vendors/echarts/core.d.ts                    |    20 +
 en/js/vendors/echarts/core.js                      |    20 +
 en/js/vendors/echarts/dist/echarts.common.js       | 56711 ++++++++++++
 en/js/vendors/echarts/dist/echarts.common.js.map   |     1 +
 en/js/vendors/echarts/dist/echarts.common.min.js   |    45 +
 en/js/vendors/echarts/dist/echarts.esm.js          | 85886 ++++++++++++++++++
 en/js/vendors/echarts/dist/echarts.esm.js.map      |     1 +
 en/js/vendors/echarts/dist/echarts.esm.min.js      |    45 +
 en/js/vendors/echarts/dist/echarts.esm.min.mjs     |    45 +
 en/js/vendors/echarts/dist/echarts.esm.mjs         | 85886 ++++++++++++++++++
 en/js/vendors/echarts/dist/echarts.esm.mjs.map     |     1 +
 en/js/vendors/echarts/dist/echarts.js              | 85952 +++++++++++++++++++
 en/js/vendors/echarts/dist/echarts.js.map          |     1 +
 en/js/vendors/echarts/dist/echarts.min.js          |    45 +
 en/js/vendors/echarts/dist/echarts.simple.js       | 41512 +++++++++
 en/js/vendors/echarts/dist/echarts.simple.js.map   |     1 +
 en/js/vendors/echarts/dist/echarts.simple.min.js   |    45 +
 en/js/vendors/echarts/dist/extension/bmap.js       |   368 +
 en/js/vendors/echarts/dist/extension/bmap.js.map   |     1 +
 en/js/vendors/echarts/dist/extension/bmap.min.js   |    22 +
 en/js/vendors/echarts/dist/extension/dataTool.js   |   402 +
 .../vendors/echarts/dist/extension/dataTool.js.map |     1 +
 .../vendors/echarts/dist/extension/dataTool.min.js |    22 +
 .../vendors/echarts/extension/bmap/BMapCoordSys.js |   235 +
 en/js/vendors/echarts/extension/bmap/BMapModel.js  |    74 +
 en/js/vendors/echarts/extension/bmap/BMapView.js   |   146 +
 en/js/vendors/echarts/extension/bmap/bmap.js       |    65 +
 en/js/vendors/echarts/extension/dataTool/gexf.js   |   202 +
 en/js/vendors/echarts/extension/dataTool/index.js  |    62 +
 .../extension/dataTool/prepareBoxplotData.js       |   116 +
 en/js/vendors/echarts/features.d.ts                |    20 +
 en/js/vendors/echarts/features.js                  |    20 +
 en/js/vendors/echarts/i18n/langAR-obj.js           |   178 +
 en/js/vendors/echarts/i18n/langAR.js               |   174 +
 en/js/vendors/echarts/i18n/langCS-obj.js           |   175 +
 en/js/vendors/echarts/i18n/langCS.js               |   171 +
 en/js/vendors/echarts/i18n/langDE-obj.js           |   175 +
 en/js/vendors/echarts/i18n/langDE.js               |   171 +
 en/js/vendors/echarts/i18n/langEN-obj.js           |   175 +
 en/js/vendors/echarts/i18n/langEN.js               |   171 +
 en/js/vendors/echarts/i18n/langES-obj.js           |   171 +
 en/js/vendors/echarts/i18n/langES.js               |   167 +
 en/js/vendors/echarts/i18n/langFA-obj.js           |   175 +
 en/js/vendors/echarts/i18n/langFA.js               |   171 +
 en/js/vendors/echarts/i18n/langFI-obj.js           |   171 +
 en/js/vendors/echarts/i18n/langFI.js               |   167 +
 en/js/vendors/echarts/i18n/langFR-obj.js           |   175 +
 en/js/vendors/echarts/i18n/langFR.js               |   171 +
 en/js/vendors/echarts/i18n/langHU-obj.js           |   175 +
 en/js/vendors/echarts/i18n/langHU.js               |   171 +
 en/js/vendors/echarts/i18n/langIT-obj.js           |   175 +
 en/js/vendors/echarts/i18n/langIT.js               |   171 +
 en/js/vendors/echarts/i18n/langJA-obj.js           |   175 +
 en/js/vendors/echarts/i18n/langJA.js               |   171 +
 en/js/vendors/echarts/i18n/langKO-obj.js           |   175 +
 en/js/vendors/echarts/i18n/langKO.js               |   171 +
 en/js/vendors/echarts/i18n/langNL-obj.js           |   175 +
 en/js/vendors/echarts/i18n/langNL.js               |   171 +
 en/js/vendors/echarts/i18n/langPL-obj.js           |   175 +
 en/js/vendors/echarts/i18n/langPL.js               |   171 +
 en/js/vendors/echarts/i18n/langPT-br-obj.js        |   176 +
 en/js/vendors/echarts/i18n/langPT-br.js            |   172 +
 en/js/vendors/echarts/i18n/langRO-obj.js           |   175 +
 en/js/vendors/echarts/i18n/langRO.js               |   171 +
 en/js/vendors/echarts/i18n/langRU-obj.js           |   176 +
 en/js/vendors/echarts/i18n/langRU.js               |   172 +
 en/js/vendors/echarts/i18n/langSI-obj.js           |   175 +
 en/js/vendors/echarts/i18n/langSI.js               |   171 +
 en/js/vendors/echarts/i18n/langSV-obj.js           |   174 +
 en/js/vendors/echarts/i18n/langSV.js               |   170 +
 en/js/vendors/echarts/i18n/langTH-obj.js           |   171 +
 en/js/vendors/echarts/i18n/langTH.js               |   167 +
 en/js/vendors/echarts/i18n/langTR-obj.js           |   175 +
 en/js/vendors/echarts/i18n/langTR.js               |   171 +
 en/js/vendors/echarts/i18n/langUK-obj.js           |   176 +
 en/js/vendors/echarts/i18n/langUK.js               |   172 +
 en/js/vendors/echarts/i18n/langVI-obj.js           |   200 +
 en/js/vendors/echarts/i18n/langVI.js               |   196 +
 en/js/vendors/echarts/i18n/langZH-obj.js           |   171 +
 en/js/vendors/echarts/i18n/langZH.js               |   167 +
 en/js/vendors/echarts/index.blank.js               |    44 +
 en/js/vendors/echarts/index.common.js              |    68 +
 en/js/vendors/echarts/index.d.ts                   |    23 +
 en/js/vendors/echarts/index.js                     |   250 +
 en/js/vendors/echarts/index.simple.js              |    55 +
 en/js/vendors/echarts/lib/action/roamHelper.js     |    80 +
 .../echarts/lib/animation/basicTransition.js       |   243 +
 .../animation/customGraphicKeyframeAnimation.js    |   143 +
 .../lib/animation/customGraphicTransition.js       |   480 +
 .../echarts/lib/animation/morphTransitionHelper.js |   203 +
 .../echarts/lib/animation/universalTransition.js   |   649 +
 en/js/vendors/echarts/lib/chart/bar.js             |    46 +
 en/js/vendors/echarts/lib/chart/bar/BarSeries.js   |   112 +
 en/js/vendors/echarts/lib/chart/bar/BarView.js     |   894 +
 .../vendors/echarts/lib/chart/bar/BaseBarSeries.js |   159 +
 .../echarts/lib/chart/bar/PictorialBarSeries.js    |    95 +
 .../echarts/lib/chart/bar/PictorialBarView.js      |   632 +
 en/js/vendors/echarts/lib/chart/bar/install.js     |    81 +
 .../echarts/lib/chart/bar/installPictorialBar.js   |    54 +
 en/js/vendors/echarts/lib/chart/boxplot.js         |    46 +
 .../echarts/lib/chart/boxplot/BoxplotSeries.js     |   108 +
 .../echarts/lib/chart/boxplot/BoxplotView.js       |   172 +
 .../echarts/lib/chart/boxplot/boxplotLayout.js     |   181 +
 .../echarts/lib/chart/boxplot/boxplotTransform.js  |    66 +
 en/js/vendors/echarts/lib/chart/boxplot/install.js |    53 +
 .../lib/chart/boxplot/prepareBoxplotData.js        |    96 +
 en/js/vendors/echarts/lib/chart/candlestick.js     |    46 +
 .../lib/chart/candlestick/CandlestickSeries.js     |   119 +
 .../lib/chart/candlestick/CandlestickView.js       |   341 +
 .../lib/chart/candlestick/candlestickLayout.js     |   204 +
 .../lib/chart/candlestick/candlestickVisual.js     |    84 +
 .../echarts/lib/chart/candlestick/install.js       |    55 +
 .../echarts/lib/chart/candlestick/preprocessor.js  |    55 +
 en/js/vendors/echarts/lib/chart/custom.js          |    46 +
 .../echarts/lib/chart/custom/CustomSeries.js       |   105 +
 .../vendors/echarts/lib/chart/custom/CustomView.js |   923 +
 en/js/vendors/echarts/lib/chart/custom/install.js  |    49 +
 en/js/vendors/echarts/lib/chart/effectScatter.js   |    46 +
 .../lib/chart/effectScatter/EffectScatterSeries.js |   104 +
 .../lib/chart/effectScatter/EffectScatterView.js   |    99 +
 .../echarts/lib/chart/effectScatter/install.js     |    51 +
 en/js/vendors/echarts/lib/chart/funnel.js          |    46 +
 .../echarts/lib/chart/funnel/FunnelSeries.js       |   144 +
 .../vendors/echarts/lib/chart/funnel/FunnelView.js |   198 +
 .../echarts/lib/chart/funnel/funnelLayout.js       |   344 +
 en/js/vendors/echarts/lib/chart/funnel/install.js  |    53 +
 en/js/vendors/echarts/lib/chart/gauge.js           |    46 +
 .../vendors/echarts/lib/chart/gauge/GaugeSeries.js |   185 +
 en/js/vendors/echarts/lib/chart/gauge/GaugeView.js |   560 +
 .../vendors/echarts/lib/chart/gauge/PointerPath.js |    83 +
 en/js/vendors/echarts/lib/chart/gauge/install.js   |    49 +
 en/js/vendors/echarts/lib/chart/graph.js           |    46 +
 .../vendors/echarts/lib/chart/graph/GraphSeries.js |   275 +
 en/js/vendors/echarts/lib/chart/graph/GraphView.js |   266 +
 .../vendors/echarts/lib/chart/graph/adjustEdge.js  |   173 +
 .../echarts/lib/chart/graph/categoryFilter.js      |    74 +
 .../echarts/lib/chart/graph/categoryVisual.js      |    90 +
 .../echarts/lib/chart/graph/circularLayout.js      |    51 +
 .../lib/chart/graph/circularLayoutHelper.js        |   191 +
 .../vendors/echarts/lib/chart/graph/createView.js  |   103 +
 .../vendors/echarts/lib/chart/graph/edgeVisual.js  |    93 +
 .../vendors/echarts/lib/chart/graph/forceHelper.js |   185 +
 .../vendors/echarts/lib/chart/graph/forceLayout.js |   160 +
 .../vendors/echarts/lib/chart/graph/graphHelper.js |    62 +
 en/js/vendors/echarts/lib/chart/graph/install.js   |    97 +
 .../echarts/lib/chart/graph/simpleLayout.js        |    78 +
 .../echarts/lib/chart/graph/simpleLayoutHelper.js  |    70 +
 en/js/vendors/echarts/lib/chart/heatmap.js         |    46 +
 .../echarts/lib/chart/heatmap/HeatmapLayer.js      |   166 +
 .../echarts/lib/chart/heatmap/HeatmapSeries.js     |    89 +
 .../echarts/lib/chart/heatmap/HeatmapView.js       |   310 +
 en/js/vendors/echarts/lib/chart/heatmap/install.js |    49 +
 .../vendors/echarts/lib/chart/helper/EffectLine.js |   207 +
 .../echarts/lib/chart/helper/EffectPolyline.js     |   134 +
 .../echarts/lib/chart/helper/EffectSymbol.js       |   207 +
 .../echarts/lib/chart/helper/LargeLineDraw.js      |   302 +
 .../echarts/lib/chart/helper/LargeSymbolDraw.js    |   309 +
 en/js/vendors/echarts/lib/chart/helper/Line.js     |   417 +
 en/js/vendors/echarts/lib/chart/helper/LineDraw.js |   167 +
 en/js/vendors/echarts/lib/chart/helper/LinePath.js |   111 +
 en/js/vendors/echarts/lib/chart/helper/Polyline.js |   107 +
 en/js/vendors/echarts/lib/chart/helper/Symbol.js   |   333 +
 .../vendors/echarts/lib/chart/helper/SymbolDraw.js |   216 +
 .../lib/chart/helper/createClipPathFromCoordSys.js |   145 +
 .../lib/chart/helper/createGraphFromNodeEdge.js    |   114 +
 .../lib/chart/helper/createRenderPlanner.js        |    62 +
 .../echarts/lib/chart/helper/createSeriesData.js   |   162 +
 .../lib/chart/helper/createSeriesDataSimply.js     |    68 +
 .../lib/chart/helper/enableAriaDecalForTree.js     |    58 +
 .../echarts/lib/chart/helper/labelHelper.js        |    77 +
 .../lib/chart/helper/multipleGraphEdgeHelper.js    |   226 +
 .../echarts/lib/chart/helper/sectorHelper.js       |    62 +
 .../vendors/echarts/lib/chart/helper/treeHelper.js |    92 +
 .../echarts/lib/chart/helper/whiskerBoxCommon.js   |   145 +
 en/js/vendors/echarts/lib/chart/line.js            |    46 +
 en/js/vendors/echarts/lib/chart/line/LineSeries.js |   152 +
 en/js/vendors/echarts/lib/chart/line/LineView.js   |  1119 +
 en/js/vendors/echarts/lib/chart/line/helper.js     |   122 +
 en/js/vendors/echarts/lib/chart/line/install.js    |    69 +
 .../echarts/lib/chart/line/lineAnimationDiff.js    |   165 +
 en/js/vendors/echarts/lib/chart/line/poly.js       |   353 +
 en/js/vendors/echarts/lib/chart/lines.js           |    46 +
 .../vendors/echarts/lib/chart/lines/LinesSeries.js |   309 +
 en/js/vendors/echarts/lib/chart/lines/LinesView.js |   184 +
 en/js/vendors/echarts/lib/chart/lines/install.js   |    53 +
 .../vendors/echarts/lib/chart/lines/linesLayout.js |   113 +
 .../vendors/echarts/lib/chart/lines/linesVisual.js |    74 +
 en/js/vendors/echarts/lib/chart/map.js             |    46 +
 en/js/vendors/echarts/lib/chart/map/MapSeries.js   |   257 +
 en/js/vendors/echarts/lib/chart/map/MapView.js     |   177 +
 en/js/vendors/echarts/lib/chart/map/install.js     |    58 +
 .../echarts/lib/chart/map/mapDataStatistic.js      |   104 +
 .../echarts/lib/chart/map/mapSymbolLayout.js       |    86 +
 en/js/vendors/echarts/lib/chart/parallel.js        |    46 +
 .../echarts/lib/chart/parallel/ParallelSeries.js   |   127 +
 .../echarts/lib/chart/parallel/ParallelView.js     |   220 +
 .../vendors/echarts/lib/chart/parallel/install.js  |    54 +
 .../echarts/lib/chart/parallel/parallelVisual.js   |    69 +
 en/js/vendors/echarts/lib/chart/pictorialBar.js    |    46 +
 en/js/vendors/echarts/lib/chart/pie.js             |    46 +
 en/js/vendors/echarts/lib/chart/pie/PieSeries.js   |   215 +
 en/js/vendors/echarts/lib/chart/pie/PieView.js     |   283 +
 en/js/vendors/echarts/lib/chart/pie/install.js     |    58 +
 en/js/vendors/echarts/lib/chart/pie/labelLayout.js |   474 +
 en/js/vendors/echarts/lib/chart/pie/pieLayout.js   |   238 +
 en/js/vendors/echarts/lib/chart/radar.js           |    46 +
 .../vendors/echarts/lib/chart/radar/RadarSeries.js |   133 +
 en/js/vendors/echarts/lib/chart/radar/RadarView.js |   225 +
 .../echarts/lib/chart/radar/backwardCompat.js      |    75 +
 en/js/vendors/echarts/lib/chart/radar/install.js   |    58 +
 .../vendors/echarts/lib/chart/radar/radarLayout.js |    82 +
 en/js/vendors/echarts/lib/chart/sankey.js          |    46 +
 .../echarts/lib/chart/sankey/SankeySeries.js       |   213 +
 .../vendors/echarts/lib/chart/sankey/SankeyView.js |   326 +
 en/js/vendors/echarts/lib/chart/sankey/install.js  |    67 +
 .../echarts/lib/chart/sankey/sankeyLayout.js       |   489 +
 .../echarts/lib/chart/sankey/sankeyVisual.js       |    92 +
 en/js/vendors/echarts/lib/chart/scatter.js         |    46 +
 .../echarts/lib/chart/scatter/ScatterSeries.js     |   118 +
 .../echarts/lib/chart/scatter/ScatterView.js       |   133 +
 en/js/vendors/echarts/lib/chart/scatter/install.js |    55 +
 en/js/vendors/echarts/lib/chart/sunburst.js        |    46 +
 .../echarts/lib/chart/sunburst/SunburstPiece.js    |   230 +
 .../echarts/lib/chart/sunburst/SunburstSeries.js   |   206 +
 .../echarts/lib/chart/sunburst/SunburstView.js     |   206 +
 .../vendors/echarts/lib/chart/sunburst/install.js  |    58 +
 .../echarts/lib/chart/sunburst/sunburstAction.js   |   108 +
 .../echarts/lib/chart/sunburst/sunburstLayout.js   |   216 +
 .../echarts/lib/chart/sunburst/sunburstVisual.js   |    75 +
 en/js/vendors/echarts/lib/chart/themeRiver.js      |    46 +
 .../lib/chart/themeRiver/ThemeRiverSeries.js       |   260 +
 .../echarts/lib/chart/themeRiver/ThemeRiverView.js |   185 +
 .../echarts/lib/chart/themeRiver/install.js        |    35 +
 .../lib/chart/themeRiver/themeRiverLayout.js       |   157 +
 en/js/vendors/echarts/lib/chart/tree.js            |    46 +
 en/js/vendors/echarts/lib/chart/tree/TreeSeries.js |   187 +
 en/js/vendors/echarts/lib/chart/tree/TreeView.js   |   622 +
 en/js/vendors/echarts/lib/chart/tree/install.js    |    55 +
 .../vendors/echarts/lib/chart/tree/layoutHelper.js |   288 +
 .../echarts/lib/chart/tree/traversalHelper.js      |    87 +
 en/js/vendors/echarts/lib/chart/tree/treeAction.js |    82 +
 en/js/vendors/echarts/lib/chart/tree/treeLayout.js |   139 +
 en/js/vendors/echarts/lib/chart/tree/treeVisual.js |    57 +
 en/js/vendors/echarts/lib/chart/treemap.js         |    46 +
 .../echarts/lib/chart/treemap/Breadcrumb.js        |   187 +
 .../echarts/lib/chart/treemap/TreemapSeries.js     |   364 +
 .../echarts/lib/chart/treemap/TreemapView.js       |   884 +
 en/js/vendors/echarts/lib/chart/treemap/install.js |    55 +
 .../echarts/lib/chart/treemap/treemapAction.js     |    75 +
 .../echarts/lib/chart/treemap/treemapLayout.js     |   498 +
 .../echarts/lib/chart/treemap/treemapVisual.js     |   194 +
 en/js/vendors/echarts/lib/component/aria.js        |    46 +
 .../vendors/echarts/lib/component/aria/install.js  |    49 +
 .../echarts/lib/component/aria/preprocessor.js     |    61 +
 .../echarts/lib/component/axis/AngleAxisView.js    |   323 +
 .../echarts/lib/component/axis/AxisBuilder.js      |   585 +
 .../vendors/echarts/lib/component/axis/AxisView.js |   119 +
 .../lib/component/axis/CartesianAxisView.js        |   237 +
 .../echarts/lib/component/axis/ParallelAxisView.js |   174 +
 .../echarts/lib/component/axis/RadiusAxisView.js   |   206 +
 .../echarts/lib/component/axis/SingleAxisView.js   |   146 +
 .../echarts/lib/component/axis/axisSplitHelper.js  |   124 +
 .../lib/component/axis/parallelAxisAction.js       |    69 +
 en/js/vendors/echarts/lib/component/axisPointer.js |    46 +
 .../lib/component/axisPointer/AxisPointer.js       |    44 +
 .../lib/component/axisPointer/AxisPointerModel.js  |   112 +
 .../lib/component/axisPointer/AxisPointerView.js   |    80 +
 .../lib/component/axisPointer/BaseAxisPointer.js   |   392 +
 .../component/axisPointer/CartesianAxisPointer.js  |   148 +
 .../lib/component/axisPointer/PolarAxisPointer.js  |   144 +
 .../lib/component/axisPointer/SingleAxisPointer.js |   145 +
 .../lib/component/axisPointer/axisTrigger.js       |   378 +
 .../component/axisPointer/findPointFromSeries.js   |    98 +
 .../lib/component/axisPointer/globalListener.js    |   138 +
 .../echarts/lib/component/axisPointer/install.js   |    84 +
 .../lib/component/axisPointer/modelHelper.js       |   295 +
 .../lib/component/axisPointer/viewHelper.js        |   195 +
 en/js/vendors/echarts/lib/component/brush.js       |    46 +
 .../echarts/lib/component/brush/BrushModel.js      |   136 +
 .../echarts/lib/component/brush/BrushView.js       |   111 +
 .../vendors/echarts/lib/component/brush/install.js |   101 +
 .../echarts/lib/component/brush/preprocessor.js    |    87 +
 .../echarts/lib/component/brush/selector.js        |   115 +
 .../echarts/lib/component/brush/visualEncoding.js  |   257 +
 en/js/vendors/echarts/lib/component/calendar.js    |    46 +
 .../echarts/lib/component/calendar/CalendarView.js |   395 +
 .../echarts/lib/component/calendar/install.js      |    51 +
 en/js/vendors/echarts/lib/component/dataZoom.js    |    46 +
 .../echarts/lib/component/dataZoom/AxisProxy.js    |   341 +
 .../lib/component/dataZoom/DataZoomModel.js        |   429 +
 .../echarts/lib/component/dataZoom/DataZoomView.js |    61 +
 .../lib/component/dataZoom/InsideZoomModel.js      |    65 +
 .../lib/component/dataZoom/InsideZoomView.js       |   198 +
 .../lib/component/dataZoom/SelectZoomModel.js      |    56 +
 .../lib/component/dataZoom/SelectZoomView.js       |    56 +
 .../lib/component/dataZoom/SliderZoomModel.js      |   129 +
 .../lib/component/dataZoom/SliderZoomView.js       |   822 +
 .../lib/component/dataZoom/dataZoomAction.js       |    58 +
 .../lib/component/dataZoom/dataZoomProcessor.js    |   130 +
 .../echarts/lib/component/dataZoom/helper.js       |   172 +
 .../echarts/lib/component/dataZoom/history.js      |   116 +
 .../echarts/lib/component/dataZoom/install.js      |    52 +
 .../lib/component/dataZoom/installCommon.js        |    58 +
 .../component/dataZoom/installDataZoomInside.js    |    53 +
 .../component/dataZoom/installDataZoomSelect.js    |    51 +
 .../component/dataZoom/installDataZoomSlider.js    |    51 +
 .../echarts/lib/component/dataZoom/roams.js        |   227 +
 .../echarts/lib/component/dataZoomInside.js        |    46 +
 .../echarts/lib/component/dataZoomSelect.js        |    50 +
 .../echarts/lib/component/dataZoomSlider.js        |    46 +
 en/js/vendors/echarts/lib/component/dataset.js     |    46 +
 .../echarts/lib/component/dataset/install.js       |    99 +
 en/js/vendors/echarts/lib/component/geo.js         |    46 +
 en/js/vendors/echarts/lib/component/geo/GeoView.js |   110 +
 en/js/vendors/echarts/lib/component/geo/install.js |   141 +
 en/js/vendors/echarts/lib/component/graphic.js     |    46 +
 .../echarts/lib/component/graphic/GraphicModel.js  |   246 +
 .../echarts/lib/component/graphic/GraphicView.js   |   391 +
 .../echarts/lib/component/graphic/install.js       |    74 +
 en/js/vendors/echarts/lib/component/grid.js        |    46 +
 .../vendors/echarts/lib/component/grid/install.js  |    50 +
 .../echarts/lib/component/grid/installSimple.js    |    96 +
 en/js/vendors/echarts/lib/component/gridSimple.js  |    46 +
 .../lib/component/helper/BrushController.js        |   745 +
 .../lib/component/helper/BrushTargetManager.js     |   343 +
 .../echarts/lib/component/helper/MapDraw.js        |   678 +
 .../echarts/lib/component/helper/RoamController.js |   245 +
 .../echarts/lib/component/helper/brushHelper.js    |    71 +
 .../echarts/lib/component/helper/cursorHelper.js   |    58 +
 .../lib/component/helper/interactionMutex.js       |    77 +
 .../echarts/lib/component/helper/listComponent.js  |    87 +
 .../echarts/lib/component/helper/roamHelper.js     |    74 +
 .../echarts/lib/component/helper/sliderMove.js     |   114 +
 en/js/vendors/echarts/lib/component/legend.js      |    47 +
 .../echarts/lib/component/legend/LegendModel.js    |   317 +
 .../echarts/lib/component/legend/LegendView.js     |   525 +
 .../lib/component/legend/ScrollableLegendModel.js  |   105 +
 .../lib/component/legend/ScrollableLegendView.js   |   401 +
 .../echarts/lib/component/legend/install.js        |    50 +
 .../lib/component/legend/installLegendPlain.js     |    56 +
 .../lib/component/legend/installLegendScroll.js    |    54 +
 .../echarts/lib/component/legend/legendAction.js   |   126 +
 .../echarts/lib/component/legend/legendFilter.js   |    60 +
 .../lib/component/legend/scrollableLegendAction.js |    61 +
 en/js/vendors/echarts/lib/component/legendPlain.js |    47 +
 .../vendors/echarts/lib/component/legendScroll.js  |    49 +
 en/js/vendors/echarts/lib/component/markArea.js    |    46 +
 en/js/vendors/echarts/lib/component/markLine.js    |    46 +
 en/js/vendors/echarts/lib/component/markPoint.js   |    47 +
 .../echarts/lib/component/marker/MarkAreaModel.js  |    85 +
 .../echarts/lib/component/marker/MarkAreaView.js   |   362 +
 .../echarts/lib/component/marker/MarkLineModel.js  |    88 +
 .../echarts/lib/component/marker/MarkLineView.js   |   363 +
 .../echarts/lib/component/marker/MarkPointModel.js |    82 +
 .../echarts/lib/component/marker/MarkPointView.js  |   191 +
 .../echarts/lib/component/marker/MarkerModel.js    |   176 +
 .../echarts/lib/component/marker/MarkerView.js     |    95 +
 .../lib/component/marker/checkMarkerInSeries.js    |    56 +
 .../lib/component/marker/installMarkArea.js        |    56 +
 .../lib/component/marker/installMarkLine.js        |    38 +
 .../lib/component/marker/installMarkPoint.js       |    38 +
 .../echarts/lib/component/marker/markerHelper.js   |   188 +
 en/js/vendors/echarts/lib/component/parallel.js    |    46 +
 .../echarts/lib/component/parallel/ParallelView.js |   136 +
 .../echarts/lib/component/parallel/install.js      |    73 +
 en/js/vendors/echarts/lib/component/polar.js       |    46 +
 .../vendors/echarts/lib/component/polar/install.js |    91 +
 en/js/vendors/echarts/lib/component/radar.js       |    46 +
 .../echarts/lib/component/radar/RadarView.js       |   203 +
 .../vendors/echarts/lib/component/radar/install.js |    63 +
 en/js/vendors/echarts/lib/component/singleAxis.js  |    46 +
 .../echarts/lib/component/singleAxis/install.js    |    73 +
 en/js/vendors/echarts/lib/component/timeline.js    |    49 +
 .../lib/component/timeline/SliderTimelineModel.js  |   158 +
 .../lib/component/timeline/SliderTimelineView.js   |   653 +
 .../echarts/lib/component/timeline/TimelineAxis.js |    71 +
 .../lib/component/timeline/TimelineModel.js        |   188 +
 .../echarts/lib/component/timeline/TimelineView.js |    56 +
 .../echarts/lib/component/timeline/install.js      |    39 +
 .../echarts/lib/component/timeline/preprocessor.js |   113 +
 .../lib/component/timeline/timelineAction.js       |    82 +
 en/js/vendors/echarts/lib/component/title.js       |    46 +
 .../vendors/echarts/lib/component/title/install.js |   225 +
 en/js/vendors/echarts/lib/component/toolbox.js     |    46 +
 .../echarts/lib/component/toolbox/ToolboxModel.js  |   108 +
 .../echarts/lib/component/toolbox/ToolboxView.js   |   298 +
 .../echarts/lib/component/toolbox/feature/Brush.js |   133 +
 .../lib/component/toolbox/feature/DataView.js      |   448 +
 .../lib/component/toolbox/feature/DataZoom.js      |   251 +
 .../lib/component/toolbox/feature/MagicType.js     |   209 +
 .../lib/component/toolbox/feature/Restore.js       |    79 +
 .../lib/component/toolbox/feature/SaveAsImage.js   |   145 +
 .../lib/component/toolbox/featureManager.js        |    37 +
 .../echarts/lib/component/toolbox/install.js       |    64 +
 en/js/vendors/echarts/lib/component/tooltip.js     |    46 +
 .../lib/component/tooltip/TooltipHTMLContent.js    |   400 +
 .../echarts/lib/component/tooltip/TooltipModel.js  |   124 +
 .../lib/component/tooltip/TooltipRichContent.js    |   209 +
 .../echarts/lib/component/tooltip/TooltipView.js   |   852 +
 .../echarts/lib/component/tooltip/helper.js        |    78 +
 .../echarts/lib/component/tooltip/install.js       |    71 +
 .../lib/component/tooltip/seriesFormatTooltip.js   |   142 +
 .../echarts/lib/component/tooltip/tooltipMarkup.js |   334 +
 en/js/vendors/echarts/lib/component/transform.js   |    46 +
 .../lib/component/transform/filterTransform.js     |    96 +
 .../echarts/lib/component/transform/install.js     |    49 +
 .../lib/component/transform/sortTransform.js       |   155 +
 en/js/vendors/echarts/lib/component/visualMap.js   |    46 +
 .../lib/component/visualMap/ContinuousModel.js     |   255 +
 .../lib/component/visualMap/ContinuousView.js      |   695 +
 .../lib/component/visualMap/PiecewiseModel.js      |   438 +
 .../lib/component/visualMap/PiecewiseView.js       |   217 +
 .../lib/component/visualMap/VisualMapModel.js      |   412 +
 .../lib/component/visualMap/VisualMapView.js       |   154 +
 .../echarts/lib/component/visualMap/helper.js      |    90 +
 .../echarts/lib/component/visualMap/install.js     |    52 +
 .../lib/component/visualMap/installCommon.js       |    63 +
 .../visualMap/installVisualMapContinuous.js        |    51 +
 .../visualMap/installVisualMapPiecewise.js         |    51 +
 .../lib/component/visualMap/preprocessor.js        |    78 +
 .../lib/component/visualMap/typeDefaulter.js       |    48 +
 .../lib/component/visualMap/visualEncoding.js      |   107 +
 .../lib/component/visualMap/visualMapAction.js     |    57 +
 .../echarts/lib/component/visualMapContinuous.js   |    46 +
 .../echarts/lib/component/visualMapPiecewise.js    |    46 +
 en/js/vendors/echarts/lib/coord/Axis.js            |   281 +
 en/js/vendors/echarts/lib/coord/AxisBaseModel.js   |    44 +
 .../vendors/echarts/lib/coord/CoordinateSystem.js  |    46 +
 en/js/vendors/echarts/lib/coord/View.js            |   250 +
 en/js/vendors/echarts/lib/coord/axisAlignTicks.js  |   137 +
 en/js/vendors/echarts/lib/coord/axisCommonTypes.js |    49 +
 en/js/vendors/echarts/lib/coord/axisDefault.js     |   204 +
 en/js/vendors/echarts/lib/coord/axisHelper.js      |   348 +
 .../echarts/lib/coord/axisModelCommonMixin.js      |    60 +
 .../vendors/echarts/lib/coord/axisModelCreator.js  |   110 +
 .../echarts/lib/coord/axisTickLabelBuilder.js      |   367 +
 .../vendors/echarts/lib/coord/calendar/Calendar.js |   374 +
 .../echarts/lib/coord/calendar/CalendarModel.js    |   159 +
 .../echarts/lib/coord/calendar/prepareCustom.js    |    69 +
 .../vendors/echarts/lib/coord/cartesian/Axis2D.js  |    94 +
 .../echarts/lib/coord/cartesian/AxisModel.js       |    62 +
 .../echarts/lib/coord/cartesian/Cartesian.js       |    74 +
 .../echarts/lib/coord/cartesian/Cartesian2D.js     |   169 +
 en/js/vendors/echarts/lib/coord/cartesian/Grid.js  |   493 +
 .../echarts/lib/coord/cartesian/GridModel.js       |    72 +
 .../lib/coord/cartesian/cartesianAxisHelper.js     |   119 +
 .../coord/cartesian/defaultAxisExtentFromData.js   |   223 +
 .../echarts/lib/coord/cartesian/prepareCustom.js   |    74 +
 en/js/vendors/echarts/lib/coord/geo/Geo.js         |   209 +
 .../echarts/lib/coord/geo/GeoJSONResource.js       |   144 +
 en/js/vendors/echarts/lib/coord/geo/GeoModel.js    |   210 +
 .../echarts/lib/coord/geo/GeoSVGResource.js        |   333 +
 en/js/vendors/echarts/lib/coord/geo/Region.js      |   286 +
 .../echarts/lib/coord/geo/fix/diaoyuIsland.js      |    56 +
 .../vendors/echarts/lib/coord/geo/fix/geoCoord.js  |    57 +
 en/js/vendors/echarts/lib/coord/geo/fix/nanhai.js  |    73 +
 .../vendors/echarts/lib/coord/geo/fix/textCoord.js |    63 +
 en/js/vendors/echarts/lib/coord/geo/geoCreator.js  |   243 +
 .../echarts/lib/coord/geo/geoSourceManager.js      |   121 +
 en/js/vendors/echarts/lib/coord/geo/geoTypes.js    |    54 +
 .../vendors/echarts/lib/coord/geo/parseGeoJson.js  |   146 +
 .../vendors/echarts/lib/coord/geo/prepareCustom.js |    79 +
 .../echarts/lib/coord/parallel/AxisModel.js        |   114 +
 .../vendors/echarts/lib/coord/parallel/Parallel.js |   410 +
 .../echarts/lib/coord/parallel/ParallelAxis.js     |    59 +
 .../echarts/lib/coord/parallel/ParallelModel.js    |   122 +
 .../echarts/lib/coord/parallel/parallelCreator.js  |    71 +
 .../lib/coord/parallel/parallelPreprocessor.js     |    84 +
 en/js/vendors/echarts/lib/coord/polar/AngleAxis.js |   111 +
 en/js/vendors/echarts/lib/coord/polar/AxisModel.js |    83 +
 en/js/vendors/echarts/lib/coord/polar/Polar.js     |   218 +
 .../vendors/echarts/lib/coord/polar/PolarModel.js  |    73 +
 .../vendors/echarts/lib/coord/polar/RadiusAxis.js  |    58 +
 .../echarts/lib/coord/polar/polarCreator.js        |   158 +
 .../echarts/lib/coord/polar/prepareCustom.js       |    86 +
 .../echarts/lib/coord/radar/IndicatorAxis.js       |    57 +
 en/js/vendors/echarts/lib/coord/radar/Radar.js     |   193 +
 .../vendors/echarts/lib/coord/radar/RadarModel.js  |   158 +
 .../echarts/lib/coord/scaleRawExtentInfo.js        |   243 +
 .../vendors/echarts/lib/coord/single/AxisModel.js  |   103 +
 en/js/vendors/echarts/lib/coord/single/Single.js   |   210 +
 .../vendors/echarts/lib/coord/single/SingleAxis.js |    66 +
 .../echarts/lib/coord/single/prepareCustom.js      |    70 +
 .../echarts/lib/coord/single/singleAxisHelper.js   |    88 +
 .../echarts/lib/coord/single/singleCreator.js      |    73 +
 en/js/vendors/echarts/lib/core/CoordinateSystem.js |    74 +
 en/js/vendors/echarts/lib/core/ExtensionAPI.js     |    59 +
 en/js/vendors/echarts/lib/core/Scheduler.js        |   489 +
 en/js/vendors/echarts/lib/core/echarts.js          |  2272 +
 en/js/vendors/echarts/lib/core/impl.js             |    65 +
 en/js/vendors/echarts/lib/core/lifecycle.js        |    47 +
 en/js/vendors/echarts/lib/core/locale.js           |    88 +
 en/js/vendors/echarts/lib/core/task.js             |   345 +
 en/js/vendors/echarts/lib/data/DataDiffer.js       |   253 +
 en/js/vendors/echarts/lib/data/DataStore.js        |  1054 +
 en/js/vendors/echarts/lib/data/Graph.js            |   459 +
 en/js/vendors/echarts/lib/data/OrdinalMeta.js      |   124 +
 en/js/vendors/echarts/lib/data/SeriesData.js       |   997 +
 .../echarts/lib/data/SeriesDimensionDefine.js      |    91 +
 en/js/vendors/echarts/lib/data/Source.js           |   299 +
 en/js/vendors/echarts/lib/data/Tree.js             |   353 +
 .../echarts/lib/data/helper/SeriesDataSchema.js    |   224 +
 .../echarts/lib/data/helper/createDimensions.js    |   322 +
 .../echarts/lib/data/helper/dataProvider.js        |   343 +
 .../echarts/lib/data/helper/dataStackHelper.js     |   179 +
 .../echarts/lib/data/helper/dataValueHelper.js     |   238 +
 .../echarts/lib/data/helper/dimensionHelper.js     |   172 +
 en/js/vendors/echarts/lib/data/helper/linkList.js  |    46 +
 .../echarts/lib/data/helper/linkSeriesData.js      |   150 +
 .../echarts/lib/data/helper/sourceHelper.js        |   353 +
 .../echarts/lib/data/helper/sourceManager.js       |   417 +
 en/js/vendors/echarts/lib/data/helper/transform.js |   417 +
 en/js/vendors/echarts/lib/echarts.js               |    66 +
 en/js/vendors/echarts/lib/export/all.js            |    46 +
 en/js/vendors/echarts/lib/export/api.js            |   113 +
 en/js/vendors/echarts/lib/export/api/format.js     |    44 +
 en/js/vendors/echarts/lib/export/api/graphic.js    |    44 +
 en/js/vendors/echarts/lib/export/api/helper.js     |   127 +
 en/js/vendors/echarts/lib/export/api/number.js     |    44 +
 en/js/vendors/echarts/lib/export/api/time.js       |    45 +
 en/js/vendors/echarts/lib/export/api/util.js       |    44 +
 en/js/vendors/echarts/lib/export/charts.js         |    70 +
 en/js/vendors/echarts/lib/export/components.js     |    73 +
 en/js/vendors/echarts/lib/export/core.js           |    51 +
 en/js/vendors/echarts/lib/export/features.js       |    46 +
 en/js/vendors/echarts/lib/export/option.js         |    44 +
 en/js/vendors/echarts/lib/export/renderers.js      |    45 +
 en/js/vendors/echarts/lib/extension.js             |   110 +
 en/js/vendors/echarts/lib/i18n/langAR.js           |   157 +
 en/js/vendors/echarts/lib/i18n/langCS.js           |   157 +
 en/js/vendors/echarts/lib/i18n/langDE.js           |   157 +
 en/js/vendors/echarts/lib/i18n/langEN.js           |   157 +
 en/js/vendors/echarts/lib/i18n/langES.js           |   154 +
 en/js/vendors/echarts/lib/i18n/langFA.js           |   157 +
 en/js/vendors/echarts/lib/i18n/langFI.js           |   154 +
 en/js/vendors/echarts/lib/i18n/langFR.js           |   157 +
 en/js/vendors/echarts/lib/i18n/langHU.js           |   157 +
 en/js/vendors/echarts/lib/i18n/langIT.js           |   157 +
 en/js/vendors/echarts/lib/i18n/langJA.js           |   157 +
 en/js/vendors/echarts/lib/i18n/langKO.js           |   157 +
 en/js/vendors/echarts/lib/i18n/langNL.js           |   157 +
 en/js/vendors/echarts/lib/i18n/langPL.js           |   157 +
 en/js/vendors/echarts/lib/i18n/langPT-br.js        |   157 +
 en/js/vendors/echarts/lib/i18n/langRO.js           |   157 +
 en/js/vendors/echarts/lib/i18n/langRU.js           |   157 +
 en/js/vendors/echarts/lib/i18n/langSI.js           |   157 +
 en/js/vendors/echarts/lib/i18n/langSV.js           |   157 +
 en/js/vendors/echarts/lib/i18n/langTH.js           |   154 +
 en/js/vendors/echarts/lib/i18n/langTR.js           |   157 +
 en/js/vendors/echarts/lib/i18n/langUK.js           |   157 +
 en/js/vendors/echarts/lib/i18n/langVI.js           |   157 +
 en/js/vendors/echarts/lib/i18n/langZH.js           |   154 +
 en/js/vendors/echarts/lib/label/LabelManager.js    |   434 +
 .../echarts/lib/label/installLabelLayout.js        |    65 +
 .../vendors/echarts/lib/label/labelGuideHelper.js  |   541 +
 .../vendors/echarts/lib/label/labelLayoutHelper.js |   301 +
 en/js/vendors/echarts/lib/label/labelStyle.js      |   484 +
 en/js/vendors/echarts/lib/label/sectorLabel.js     |   201 +
 en/js/vendors/echarts/lib/layout/barGrid.js        |   480 +
 en/js/vendors/echarts/lib/layout/barPolar.js       |   256 +
 en/js/vendors/echarts/lib/layout/points.js         |   105 +
 .../vendors/echarts/lib/legacy/dataSelectAction.js |   116 +
 en/js/vendors/echarts/lib/legacy/getTextRect.js    |    59 +
 en/js/vendors/echarts/lib/loading/default.js       |   160 +
 en/js/vendors/echarts/lib/model/Component.js       |   233 +
 en/js/vendors/echarts/lib/model/Global.js          |   747 +
 en/js/vendors/echarts/lib/model/Model.js           |   178 +
 en/js/vendors/echarts/lib/model/OptionManager.js   |   457 +
 en/js/vendors/echarts/lib/model/Series.js          |   542 +
 en/js/vendors/echarts/lib/model/globalDefault.js   |   131 +
 .../echarts/lib/model/internalComponentCreator.js  |    66 +
 en/js/vendors/echarts/lib/model/mixin/areaStyle.js |    58 +
 .../vendors/echarts/lib/model/mixin/dataFormat.js  |   202 +
 en/js/vendors/echarts/lib/model/mixin/itemStyle.js |    57 +
 en/js/vendors/echarts/lib/model/mixin/lineStyle.js |    58 +
 .../echarts/lib/model/mixin/makeStyleMapper.js     |    70 +
 en/js/vendors/echarts/lib/model/mixin/palette.js   |   105 +
 en/js/vendors/echarts/lib/model/mixin/textStyle.js |    87 +
 en/js/vendors/echarts/lib/model/referHelper.js     |   175 +
 .../echarts/lib/preprocessor/backwardCompat.js     |   255 +
 .../echarts/lib/preprocessor/helper/compatStyle.js |   330 +
 en/js/vendors/echarts/lib/processor/dataFilter.js  |    68 +
 en/js/vendors/echarts/lib/processor/dataSample.js  |   130 +
 en/js/vendors/echarts/lib/processor/dataStack.js   |   133 +
 .../echarts/lib/processor/negativeDataFilter.js    |    61 +
 .../echarts/lib/renderer/installCanvasRenderer.js  |    47 +
 .../echarts/lib/renderer/installSVGRenderer.js     |    47 +
 en/js/vendors/echarts/lib/scale/Interval.js        |   267 +
 en/js/vendors/echarts/lib/scale/Log.js             |   178 +
 en/js/vendors/echarts/lib/scale/Ordinal.js         |   214 +
 en/js/vendors/echarts/lib/scale/Scale.js           |   112 +
 en/js/vendors/echarts/lib/scale/Time.js            |   509 +
 en/js/vendors/echarts/lib/scale/helper.js          |   122 +
 en/js/vendors/echarts/lib/theme/dark.js            |   225 +
 en/js/vendors/echarts/lib/theme/light.js           |    48 +
 en/js/vendors/echarts/lib/util/ECEventProcessor.js |   144 +
 en/js/vendors/echarts/lib/util/KDTree.js           |   255 +
 en/js/vendors/echarts/lib/util/animation.js        |   120 +
 en/js/vendors/echarts/lib/util/clazz.js            |   305 +
 en/js/vendors/echarts/lib/util/component.js        |   186 +
 .../echarts/lib/util/conditionalExpression.js      |   257 +
 en/js/vendors/echarts/lib/util/decal.js            |   392 +
 en/js/vendors/echarts/lib/util/event.js            |    56 +
 en/js/vendors/echarts/lib/util/format.js           |   240 +
 en/js/vendors/echarts/lib/util/graphic.js          |   522 +
 en/js/vendors/echarts/lib/util/innerStore.js       |    66 +
 en/js/vendors/echarts/lib/util/layout.js           |   449 +
 en/js/vendors/echarts/lib/util/log.js              |   134 +
 en/js/vendors/echarts/lib/util/model.js            |   695 +
 en/js/vendors/echarts/lib/util/number.js           |   563 +
 en/js/vendors/echarts/lib/util/quickSelect.js      |    92 +
 en/js/vendors/echarts/lib/util/shape/sausage.js    |   106 +
 en/js/vendors/echarts/lib/util/states.js           |   704 +
 en/js/vendors/echarts/lib/util/styleCompat.js      |   226 +
 en/js/vendors/echarts/lib/util/symbol.js           |   334 +
 en/js/vendors/echarts/lib/util/throttle.js         |   172 +
 en/js/vendors/echarts/lib/util/time.js             |   273 +
 en/js/vendors/echarts/lib/util/types.js            |    60 +
 en/js/vendors/echarts/lib/util/vendor.js           |    55 +
 en/js/vendors/echarts/lib/view/Chart.js            |   201 +
 en/js/vendors/echarts/lib/view/Component.js        |    88 +
 .../echarts/lib/visual/LegendVisualProvider.js     |    81 +
 en/js/vendors/echarts/lib/visual/VisualMapping.js  |   478 +
 en/js/vendors/echarts/lib/visual/aria.js           |   237 +
 .../echarts/lib/visual/commonVisualTypes.js        |    44 +
 en/js/vendors/echarts/lib/visual/decal.js          |    66 +
 en/js/vendors/echarts/lib/visual/helper.js         |   100 +
 en/js/vendors/echarts/lib/visual/style.js          |   216 +
 en/js/vendors/echarts/lib/visual/symbol.js         |   124 +
 en/js/vendors/echarts/lib/visual/visualDefault.js  |    91 +
 en/js/vendors/echarts/lib/visual/visualSolution.js |   202 +
 en/js/vendors/echarts/licenses/LICENSE-d3          |    27 +
 en/js/vendors/echarts/package.README.md            |    40 +
 en/js/vendors/echarts/renderers.d.ts               |    20 +
 en/js/vendors/echarts/renderers.js                 |    20 +
 en/js/vendors/echarts/ssr/client/dist/index.js     |   105 +
 en/js/vendors/echarts/ssr/client/dist/index.js.map |     1 +
 en/js/vendors/echarts/ssr/client/index.d.ts        |    20 +
 en/js/vendors/echarts/ssr/client/index.js          |    20 +
 en/js/vendors/echarts/ssr/client/lib/index.js      |    73 +
 en/js/vendors/echarts/ssr/client/types/index.d.ts  |    18 +
 en/js/vendors/echarts/theme/azul.js                |   163 +
 en/js/vendors/echarts/theme/bee-inspired.js        |   178 +
 en/js/vendors/echarts/theme/blue.js                |   178 +
 en/js/vendors/echarts/theme/caravan.js             |   178 +
 en/js/vendors/echarts/theme/carp.js                |   163 +
 en/js/vendors/echarts/theme/cool.js                |   180 +
 en/js/vendors/echarts/theme/dark-blue.js           |   164 +
 en/js/vendors/echarts/theme/dark-bold.js           |   164 +
 en/js/vendors/echarts/theme/dark-digerati.js       |   164 +
 en/js/vendors/echarts/theme/dark-fresh-cut.js      |   164 +
 en/js/vendors/echarts/theme/dark-mushroom.js       |   164 +
 en/js/vendors/echarts/theme/dark.js                |   224 +
 en/js/vendors/echarts/theme/eduardo.js             |   178 +
 en/js/vendors/echarts/theme/forest.js              |   163 +
 en/js/vendors/echarts/theme/fresh-cut.js           |   163 +
 en/js/vendors/echarts/theme/fruit.js               |   178 +
 en/js/vendors/echarts/theme/gray.js                |   220 +
 en/js/vendors/echarts/theme/green.js               |   222 +
 en/js/vendors/echarts/theme/helianthus.js          |   263 +
 en/js/vendors/echarts/theme/infographic.js         |   236 +
 en/js/vendors/echarts/theme/inspired.js            |   163 +
 en/js/vendors/echarts/theme/jazz.js                |   163 +
 en/js/vendors/echarts/theme/london.js              |   163 +
 en/js/vendors/echarts/theme/macarons.js            |   242 +
 en/js/vendors/echarts/theme/macarons2.js           |   246 +
 en/js/vendors/echarts/theme/mint.js                |   155 +
 en/js/vendors/echarts/theme/red-velvet.js          |   163 +
 en/js/vendors/echarts/theme/red.js                 |   225 +
 en/js/vendors/echarts/theme/roma.js                |   119 +
 en/js/vendors/echarts/theme/royal.js               |   163 +
 en/js/vendors/echarts/theme/sakura.js              |   140 +
 en/js/vendors/echarts/theme/shine.js               |   175 +
 en/js/vendors/echarts/theme/tech-blue.js           |   184 +
 en/js/vendors/echarts/theme/vintage.js             |    63 +
 en/js/vendors/echarts/types/dist/charts.d.ts       |     1 +
 en/js/vendors/echarts/types/dist/components.d.ts   |     1 +
 en/js/vendors/echarts/types/dist/core.d.ts         |     1 +
 en/js/vendors/echarts/types/dist/echarts.d.ts      | 11029 +++
 en/js/vendors/echarts/types/dist/features.d.ts     |     1 +
 en/js/vendors/echarts/types/dist/option.d.ts       |     1 +
 en/js/vendors/echarts/types/dist/renderers.d.ts    |     1 +
 en/js/vendors/echarts/types/dist/shared.d.ts       | 11139 +++
 .../echarts/types/src/action/roamHelper.d.ts       |    17 +
 .../types/src/animation/basicTransition.d.ts       |    63 +
 .../animation/customGraphicKeyframeAnimation.d.ts  |    19 +
 .../src/animation/customGraphicTransition.d.ts     |    48 +
 .../types/src/animation/morphTransitionHelper.d.ts |     9 +
 .../types/src/animation/universalTransition.d.ts   |     2 +
 en/js/vendors/echarts/types/src/chart/bar.d.ts     |     1 +
 .../echarts/types/src/chart/bar/BarSeries.d.ts     |    58 +
 .../echarts/types/src/chart/bar/BarView.d.ts       |    40 +
 .../echarts/types/src/chart/bar/BaseBarSeries.d.ts |    43 +
 .../types/src/chart/bar/PictorialBarSeries.d.ts    |    78 +
 .../types/src/chart/bar/PictorialBarView.d.ts      |    12 +
 .../echarts/types/src/chart/bar/install.d.ts       |     2 +
 .../types/src/chart/bar/installPictorialBar.d.ts   |     2 +
 en/js/vendors/echarts/types/src/chart/boxplot.d.ts |     1 +
 .../types/src/chart/boxplot/BoxplotSeries.d.ts     |    52 +
 .../types/src/chart/boxplot/BoxplotView.d.ts       |    12 +
 .../types/src/chart/boxplot/boxplotLayout.d.ts     |     6 +
 .../types/src/chart/boxplot/boxplotTransform.d.ts  |     7 +
 .../echarts/types/src/chart/boxplot/install.d.ts   |     2 +
 .../src/chart/boxplot/prepareBoxplotData.d.ts      |    27 +
 .../echarts/types/src/chart/candlestick.d.ts       |     1 +
 .../src/chart/candlestick/CandlestickSeries.d.ts   |    53 +
 .../src/chart/candlestick/CandlestickView.d.ts     |    25 +
 .../src/chart/candlestick/candlestickLayout.d.ts   |    14 +
 .../src/chart/candlestick/candlestickVisual.d.ts   |     7 +
 .../types/src/chart/candlestick/install.d.ts       |     2 +
 .../types/src/chart/candlestick/preprocessor.d.ts  |     2 +
 en/js/vendors/echarts/types/src/chart/custom.d.ts  |     1 +
 .../types/src/chart/custom/CustomSeries.d.ts       |   244 +
 .../echarts/types/src/chart/custom/CustomView.d.ts |    17 +
 .../echarts/types/src/chart/custom/install.d.ts    |     2 +
 .../echarts/types/src/chart/effectScatter.d.ts     |     1 +
 .../chart/effectScatter/EffectScatterSeries.d.ts   |    47 +
 .../src/chart/effectScatter/EffectScatterView.d.ts |    16 +
 .../types/src/chart/effectScatter/install.d.ts     |     2 +
 en/js/vendors/echarts/types/src/chart/funnel.d.ts  |     1 +
 .../types/src/chart/funnel/FunnelSeries.d.ts       |    49 +
 .../echarts/types/src/chart/funnel/FunnelView.d.ts |    14 +
 .../types/src/chart/funnel/funnelLayout.d.ts       |     3 +
 .../echarts/types/src/chart/funnel/install.d.ts    |     2 +
 en/js/vendors/echarts/types/src/chart/gauge.d.ts   |     1 +
 .../echarts/types/src/chart/gauge/GaugeSeries.d.ts |   132 +
 .../echarts/types/src/chart/gauge/GaugeView.d.ts   |    26 +
 .../echarts/types/src/chart/gauge/PointerPath.d.ts |    19 +
 .../echarts/types/src/chart/gauge/install.d.ts     |     2 +
 en/js/vendors/echarts/types/src/chart/graph.d.ts   |     1 +
 .../echarts/types/src/chart/graph/GraphSeries.d.ts |   153 +
 .../echarts/types/src/chart/graph/GraphView.d.ts   |    25 +
 .../echarts/types/src/chart/graph/adjustEdge.d.ts  |     2 +
 .../types/src/chart/graph/categoryFilter.d.ts      |     2 +
 .../types/src/chart/graph/categoryVisual.d.ts      |     2 +
 .../types/src/chart/graph/circularLayout.d.ts      |     2 +
 .../src/chart/graph/circularLayoutHelper.d.ts      |    23 +
 .../echarts/types/src/chart/graph/createView.d.ts  |     4 +
 .../echarts/types/src/chart/graph/edgeVisual.d.ts  |     2 +
 .../echarts/types/src/chart/graph/forceHelper.d.ts |    49 +
 .../echarts/types/src/chart/graph/forceLayout.d.ts |     8 +
 .../echarts/types/src/chart/graph/graphHelper.d.ts |     4 +
 .../echarts/types/src/chart/graph/install.d.ts     |     2 +
 .../types/src/chart/graph/simpleLayout.d.ts        |     3 +
 .../types/src/chart/graph/simpleLayoutHelper.d.ts  |     4 +
 en/js/vendors/echarts/types/src/chart/heatmap.d.ts |     1 +
 .../types/src/chart/heatmap/HeatmapLayer.d.ts      |    29 +
 .../types/src/chart/heatmap/HeatmapSeries.d.ts     |    39 +
 .../types/src/chart/heatmap/HeatmapView.d.ts       |    26 +
 .../echarts/types/src/chart/heatmap/install.d.ts   |     2 +
 .../echarts/types/src/chart/helper/EffectLine.d.ts |    32 +
 .../types/src/chart/helper/EffectPolyline.d.ts     |    16 +
 .../types/src/chart/helper/EffectSymbol.d.ts       |    41 +
 .../types/src/chart/helper/LargeLineDraw.d.ts      |    42 +
 .../types/src/chart/helper/LargeSymbolDraw.d.ts    |    25 +
 .../echarts/types/src/chart/helper/Line.d.ts       |    24 +
 .../echarts/types/src/chart/helper/LineDraw.d.ts   |    73 +
 .../echarts/types/src/chart/helper/LinePath.d.ts   |    33 +
 .../echarts/types/src/chart/helper/Polyline.d.ts   |    11 +
 .../echarts/types/src/chart/helper/Symbol.d.ts     |    63 +
 .../echarts/types/src/chart/helper/SymbolDraw.d.ts |    82 +
 .../chart/helper/createClipPathFromCoordSys.d.ts   |    15 +
 .../src/chart/helper/createGraphFromNodeEdge.d.ts  |     5 +
 .../src/chart/helper/createRenderPlanner.d.ts      |     6 +
 .../types/src/chart/helper/createSeriesData.d.ts   |    13 +
 .../src/chart/helper/createSeriesDataSimply.d.ts   |    14 +
 .../src/chart/helper/enableAriaDecalForTree.d.ts   |     2 +
 .../types/src/chart/helper/labelHelper.d.ts        |     7 +
 .../src/chart/helper/multipleGraphEdgeHelper.d.ts  |    21 +
 .../types/src/chart/helper/sectorHelper.d.ts       |     9 +
 .../echarts/types/src/chart/helper/treeHelper.d.ts |    16 +
 .../types/src/chart/helper/whiskerBoxCommon.d.ts   |    33 +
 en/js/vendors/echarts/types/src/chart/line.d.ts    |     1 +
 .../echarts/types/src/chart/line/LineSeries.d.ts   |    68 +
 .../echarts/types/src/chart/line/LineView.d.ts     |    52 +
 .../echarts/types/src/chart/line/helper.d.ts       |    18 +
 .../echarts/types/src/chart/line/install.d.ts      |     2 +
 .../types/src/chart/line/lineAnimationDiff.d.ts    |    17 +
 .../vendors/echarts/types/src/chart/line/poly.d.ts |    39 +
 en/js/vendors/echarts/types/src/chart/lines.d.ts   |     1 +
 .../echarts/types/src/chart/lines/LinesSeries.d.ts |    74 +
 .../echarts/types/src/chart/lines/LinesView.d.ts   |    32 +
 .../echarts/types/src/chart/lines/install.d.ts     |     2 +
 .../echarts/types/src/chart/lines/linesLayout.d.ts |     3 +
 .../echarts/types/src/chart/lines/linesVisual.d.ts |     3 +
 en/js/vendors/echarts/types/src/chart/map.d.ts     |     1 +
 .../echarts/types/src/chart/map/MapSeries.d.ts     |    65 +
 .../echarts/types/src/chart/map/MapView.d.ts       |    15 +
 .../echarts/types/src/chart/map/install.d.ts       |     2 +
 .../types/src/chart/map/mapDataStatistic.d.ts      |     2 +
 .../types/src/chart/map/mapSymbolLayout.d.ts       |     2 +
 .../vendors/echarts/types/src/chart/parallel.d.ts  |     1 +
 .../types/src/chart/parallel/ParallelSeries.d.ts   |    47 +
 .../types/src/chart/parallel/ParallelView.d.ts     |    22 +
 .../echarts/types/src/chart/parallel/install.d.ts  |     2 +
 .../types/src/chart/parallel/parallelVisual.d.ts   |     3 +
 .../echarts/types/src/chart/pictorialBar.d.ts      |     1 +
 en/js/vendors/echarts/types/src/chart/pie.d.ts     |     1 +
 .../echarts/types/src/chart/pie/PieSeries.d.ts     |    85 +
 .../echarts/types/src/chart/pie/PieView.d.ts       |    15 +
 .../echarts/types/src/chart/pie/install.d.ts       |     2 +
 .../echarts/types/src/chart/pie/labelLayout.d.ts   |     2 +
 .../echarts/types/src/chart/pie/pieLayout.d.ts     |    11 +
 en/js/vendors/echarts/types/src/chart/radar.d.ts   |     1 +
 .../echarts/types/src/chart/radar/RadarSeries.d.ts |    37 +
 .../echarts/types/src/chart/radar/RadarView.d.ts   |    12 +
 .../types/src/chart/radar/backwardCompat.d.ts      |     1 +
 .../echarts/types/src/chart/radar/install.d.ts     |     2 +
 .../echarts/types/src/chart/radar/radarLayout.d.ts |     2 +
 en/js/vendors/echarts/types/src/chart/sankey.d.ts  |     1 +
 .../types/src/chart/sankey/SankeySeries.d.ts       |   106 +
 .../echarts/types/src/chart/sankey/SankeyView.d.ts |    14 +
 .../echarts/types/src/chart/sankey/install.d.ts    |     2 +
 .../types/src/chart/sankey/sankeyLayout.d.ts       |     3 +
 .../types/src/chart/sankey/sankeyVisual.d.ts       |     2 +
 en/js/vendors/echarts/types/src/chart/scatter.d.ts |     1 +
 .../types/src/chart/scatter/ScatterSeries.d.ts     |    37 +
 .../types/src/chart/scatter/ScatterView.d.ts       |    28 +
 .../echarts/types/src/chart/scatter/install.d.ts   |     2 +
 .../vendors/echarts/types/src/chart/sunburst.d.ts  |     1 +
 .../types/src/chart/sunburst/SunburstPiece.d.ts    |    17 +
 .../types/src/chart/sunburst/SunburstSeries.d.ts   |   100 +
 .../types/src/chart/sunburst/SunburstView.d.ts     |    34 +
 .../echarts/types/src/chart/sunburst/install.d.ts  |     2 +
 .../types/src/chart/sunburst/sunburstAction.d.ts   |     3 +
 .../types/src/chart/sunburst/sunburstLayout.d.ts   |     3 +
 .../types/src/chart/sunburst/sunburstVisual.d.ts   |     2 +
 .../echarts/types/src/chart/themeRiver.d.ts        |     1 +
 .../src/chart/themeRiver/ThemeRiverSeries.d.ts     |    73 +
 .../types/src/chart/themeRiver/ThemeRiverView.d.ts |    12 +
 .../types/src/chart/themeRiver/install.d.ts        |     2 +
 .../src/chart/themeRiver/themeRiverLayout.d.ts     |     9 +
 en/js/vendors/echarts/types/src/chart/tree.d.ts    |     1 +
 .../echarts/types/src/chart/tree/TreeSeries.d.ts   |    87 +
 .../echarts/types/src/chart/tree/TreeView.d.ts     |    24 +
 .../echarts/types/src/chart/tree/install.d.ts      |     2 +
 .../echarts/types/src/chart/tree/layoutHelper.d.ts |    64 +
 .../types/src/chart/tree/traversalHelper.d.ts      |    10 +
 .../echarts/types/src/chart/tree/treeAction.d.ts   |     6 +
 .../echarts/types/src/chart/tree/treeLayout.d.ts   |     3 +
 .../echarts/types/src/chart/tree/treeVisual.d.ts   |     2 +
 en/js/vendors/echarts/types/src/chart/treemap.d.ts |     1 +
 .../types/src/chart/treemap/Breadcrumb.d.ts        |    42 +
 .../types/src/chart/treemap/TreemapSeries.d.ts     |   183 +
 .../types/src/chart/treemap/TreemapView.d.ts       |    56 +
 .../echarts/types/src/chart/treemap/install.d.ts   |     2 +
 .../types/src/chart/treemap/treemapAction.d.ts     |    22 +
 .../types/src/chart/treemap/treemapLayout.d.ts     |    30 +
 .../types/src/chart/treemap/treemapVisual.d.ts     |     6 +
 .../vendors/echarts/types/src/component/aria.d.ts  |     1 +
 .../echarts/types/src/component/aria/install.d.ts  |     2 +
 .../types/src/component/aria/preprocessor.d.ts     |     2 +
 .../types/src/component/axis/AngleAxisView.d.ts    |    10 +
 .../types/src/component/axis/AxisBuilder.d.ts      |    90 +
 .../echarts/types/src/component/axis/AxisView.d.ts |    45 +
 .../src/component/axis/CartesianAxisView.d.ts      |    25 +
 .../types/src/component/axis/ParallelAxisView.d.ts |    22 +
 .../types/src/component/axis/RadiusAxisView.d.ts   |    11 +
 .../types/src/component/axis/SingleAxisView.d.ts   |    14 +
 .../types/src/component/axis/axisSplitHelper.d.ts  |     8 +
 .../src/component/axis/parallelAxisAction.d.ts     |     6 +
 .../echarts/types/src/component/axisPointer.d.ts   |     1 +
 .../src/component/axisPointer/AxisPointer.d.ts     |    15 +
 .../component/axisPointer/AxisPointerModel.d.ts    |    38 +
 .../src/component/axisPointer/AxisPointerView.d.ts |    12 +
 .../src/component/axisPointer/BaseAxisPointer.d.ts |   126 +
 .../axisPointer/CartesianAxisPointer.d.ts          |    38 +
 .../component/axisPointer/PolarAxisPointer.d.ts    |    12 +
 .../component/axisPointer/SingleAxisPointer.d.ts   |    37 +
 .../src/component/axisPointer/axisTrigger.d.ts     |    59 +
 .../component/axisPointer/findPointFromSeries.d.ts |    17 +
 .../src/component/axisPointer/globalListener.d.ts  |    14 +
 .../types/src/component/axisPointer/install.d.ts   |     2 +
 .../src/component/axisPointer/modelHelper.d.ts     |    56 +
 .../src/component/axisPointer/viewHelper.d.ts      |    58 +
 .../vendors/echarts/types/src/component/brush.d.ts |     1 +
 .../types/src/component/brush/BrushModel.d.ts      |    92 +
 .../types/src/component/brush/BrushView.d.ts       |    22 +
 .../echarts/types/src/component/brush/install.d.ts |     2 +
 .../types/src/component/brush/preprocessor.d.ts    |     2 +
 .../types/src/component/brush/selector.d.ts        |    32 +
 .../types/src/component/brush/visualEncoding.d.ts  |     8 +
 .../echarts/types/src/component/calendar.d.ts      |     1 +
 .../types/src/component/calendar/CalendarView.d.ts |    47 +
 .../types/src/component/calendar/install.d.ts      |     2 +
 .../echarts/types/src/component/dataZoom.d.ts      |     1 +
 .../types/src/component/dataZoom/AxisProxy.d.ts    |    67 +
 .../src/component/dataZoom/DataZoomModel.d.ts      |   171 +
 .../types/src/component/dataZoom/DataZoomView.d.ts |    13 +
 .../src/component/dataZoom/InsideZoomModel.d.ts    |    25 +
 .../src/component/dataZoom/InsideZoomView.d.ts     |    28 +
 .../src/component/dataZoom/SelectZoomModel.d.ts    |     6 +
 .../src/component/dataZoom/SelectZoomView.d.ts     |     6 +
 .../src/component/dataZoom/SliderZoomModel.d.ts    |    83 +
 .../src/component/dataZoom/SliderZoomView.d.ts     |    71 +
 .../src/component/dataZoom/dataZoomAction.d.ts     |     2 +
 .../src/component/dataZoom/dataZoomProcessor.d.ts  |     3 +
 .../types/src/component/dataZoom/helper.d.ts       |    57 +
 .../types/src/component/dataZoom/history.d.ts      |    12 +
 .../types/src/component/dataZoom/install.d.ts      |     2 +
 .../src/component/dataZoom/installCommon.d.ts      |     2 +
 .../component/dataZoom/installDataZoomInside.d.ts  |     2 +
 .../component/dataZoom/installDataZoomSelect.d.ts  |     2 +
 .../component/dataZoom/installDataZoomSlider.d.ts  |     2 +
 .../types/src/component/dataZoom/roams.d.ts        |     7 +
 .../types/src/component/dataZoomInside.d.ts        |     1 +
 .../types/src/component/dataZoomSelect.d.ts        |     1 +
 .../types/src/component/dataZoomSlider.d.ts        |     1 +
 .../echarts/types/src/component/dataset.d.ts       |     1 +
 .../types/src/component/dataset/install.d.ts       |    36 +
 en/js/vendors/echarts/types/src/component/geo.d.ts |     1 +
 .../echarts/types/src/component/geo/GeoView.d.ts   |    21 +
 .../echarts/types/src/component/geo/install.d.ts   |     2 +
 .../echarts/types/src/component/graphic.d.ts       |     1 +
 .../types/src/component/graphic/GraphicModel.d.ts  |   134 +
 .../types/src/component/graphic/GraphicView.d.ts   |    34 +
 .../types/src/component/graphic/install.d.ts       |     2 +
 .../vendors/echarts/types/src/component/grid.d.ts  |     1 +
 .../echarts/types/src/component/grid/install.d.ts  |     2 +
 .../types/src/component/grid/installSimple.d.ts    |     2 +
 .../echarts/types/src/component/gridSimple.d.ts    |     1 +
 .../src/component/helper/BrushController.d.ts      |   154 +
 .../src/component/helper/BrushTargetManager.d.ts   |    79 +
 .../types/src/component/helper/MapDraw.d.ts        |    52 +
 .../types/src/component/helper/RoamController.d.ts |    72 +
 .../types/src/component/helper/brushHelper.d.ts    |     7 +
 .../types/src/component/helper/cursorHelper.d.ts   |     8 +
 .../src/component/helper/interactionMutex.d.ts     |     3 +
 .../types/src/component/helper/listComponent.d.ts  |     9 +
 .../types/src/component/helper/roamHelper.d.ts     |    18 +
 .../types/src/component/helper/sliderMove.d.ts     |    21 +
 .../echarts/types/src/component/legend.d.ts        |     1 +
 .../types/src/component/legend/LegendModel.d.ts    |   190 +
 .../types/src/component/legend/LegendView.d.ts     |    45 +
 .../component/legend/ScrollableLegendModel.d.ts    |    44 +
 .../src/component/legend/ScrollableLegendView.d.ts |    54 +
 .../types/src/component/legend/install.d.ts        |     2 +
 .../src/component/legend/installLegendPlain.d.ts   |     2 +
 .../src/component/legend/installLegendScroll.d.ts  |     2 +
 .../types/src/component/legend/legendAction.d.ts   |     2 +
 .../types/src/component/legend/legendFilter.d.ts   |     2 +
 .../component/legend/scrollableLegendAction.d.ts   |     2 +
 .../echarts/types/src/component/legendPlain.d.ts   |     1 +
 .../echarts/types/src/component/legendScroll.d.ts  |     1 +
 .../echarts/types/src/component/markArea.d.ts      |     1 +
 .../echarts/types/src/component/markLine.d.ts      |     1 +
 .../echarts/types/src/component/markPoint.d.ts     |     1 +
 .../types/src/component/marker/MarkAreaModel.d.ts  |    35 +
 .../types/src/component/marker/MarkAreaView.d.ts   |    19 +
 .../types/src/component/marker/MarkLineModel.d.ts  |    57 +
 .../types/src/component/marker/MarkLineView.d.ts   |    15 +
 .../types/src/component/marker/MarkPointModel.d.ts |    22 +
 .../types/src/component/marker/MarkPointView.d.ts  |    15 +
 .../types/src/component/marker/MarkerModel.d.ts    |    74 +
 .../types/src/component/marker/MarkerView.d.ts     |    24 +
 .../src/component/marker/checkMarkerInSeries.d.ts  |     4 +
 .../src/component/marker/installMarkArea.d.ts      |     2 +
 .../src/component/marker/installMarkLine.d.ts      |     2 +
 .../src/component/marker/installMarkPoint.d.ts     |     2 +
 .../types/src/component/marker/markerHelper.d.ts   |    34 +
 .../echarts/types/src/component/parallel.d.ts      |     1 +
 .../types/src/component/parallel/ParallelView.d.ts |    25 +
 .../types/src/component/parallel/install.d.ts      |     2 +
 .../vendors/echarts/types/src/component/polar.d.ts |     1 +
 .../echarts/types/src/component/polar/install.d.ts |     2 +
 .../vendors/echarts/types/src/component/radar.d.ts |     1 +
 .../types/src/component/radar/RadarView.d.ts       |    12 +
 .../echarts/types/src/component/radar/install.d.ts |     2 +
 .../echarts/types/src/component/singleAxis.d.ts    |     1 +
 .../types/src/component/singleAxis/install.d.ts    |     2 +
 .../echarts/types/src/component/timeline.d.ts      |     1 +
 .../component/timeline/SliderTimelineModel.d.ts    |    17 +
 .../src/component/timeline/SliderTimelineView.d.ts |    53 +
 .../types/src/component/timeline/TimelineAxis.d.ts |    22 +
 .../src/component/timeline/TimelineModel.d.ts      |   140 +
 .../types/src/component/timeline/TimelineView.d.ts |     6 +
 .../types/src/component/timeline/install.d.ts      |     2 +
 .../types/src/component/timeline/preprocessor.d.ts |     1 +
 .../src/component/timeline/timelineAction.d.ts     |    11 +
 .../vendors/echarts/types/src/component/title.d.ts |     1 +
 .../echarts/types/src/component/title/install.d.ts |    42 +
 .../echarts/types/src/component/toolbox.d.ts       |     1 +
 .../types/src/component/toolbox/ToolboxModel.d.ts  |    41 +
 .../types/src/component/toolbox/ToolboxView.d.ts   |    18 +
 .../types/src/component/toolbox/feature/Brush.d.ts |    31 +
 .../src/component/toolbox/feature/DataView.d.ts    |    26 +
 .../src/component/toolbox/feature/DataZoom.d.ts    |    37 +
 .../src/component/toolbox/feature/MagicType.d.ts   |    40 +
 .../src/component/toolbox/feature/Restore.d.ts     |    12 +
 .../src/component/toolbox/feature/SaveAsImage.d.ts |    20 +
 .../src/component/toolbox/featureManager.d.ts      |    73 +
 .../types/src/component/toolbox/install.d.ts       |     2 +
 .../echarts/types/src/component/tooltip.d.ts       |     1 +
 .../src/component/tooltip/TooltipHTMLContent.d.ts  |    53 +
 .../types/src/component/tooltip/TooltipModel.d.ts  |    51 +
 .../src/component/tooltip/TooltipRichContent.d.ts  |    40 +
 .../types/src/component/tooltip/TooltipView.d.ts   |    93 +
 .../types/src/component/tooltip/helper.d.ts        |     7 +
 .../types/src/component/tooltip/install.d.ts       |     2 +
 .../src/component/tooltip/seriesFormatTooltip.d.ts |     7 +
 .../types/src/component/tooltip/tooltipMarkup.d.ts |    99 +
 .../echarts/types/src/component/transform.d.ts     |     1 +
 .../src/component/transform/filterTransform.d.ts   |     7 +
 .../types/src/component/transform/install.d.ts     |     2 +
 .../src/component/transform/sortTransform.d.ts     |    32 +
 .../echarts/types/src/component/visualMap.d.ts     |     1 +
 .../src/component/visualMap/ContinuousModel.d.ts   |    89 +
 .../src/component/visualMap/ContinuousView.d.ts    |    58 +
 .../src/component/visualMap/PiecewiseModel.d.ts    |   133 +
 .../src/component/visualMap/PiecewiseView.d.ts     |    19 +
 .../src/component/visualMap/VisualMapModel.d.ts    |   229 +
 .../src/component/visualMap/VisualMapView.d.ts     |    44 +
 .../types/src/component/visualMap/helper.d.ts      |    20 +
 .../types/src/component/visualMap/install.d.ts     |     2 +
 .../src/component/visualMap/installCommon.d.ts     |     2 +
 .../visualMap/installVisualMapContinuous.d.ts      |     2 +
 .../visualMap/installVisualMapPiecewise.d.ts       |     2 +
 .../src/component/visualMap/preprocessor.d.ts      |     1 +
 .../src/component/visualMap/typeDefaulter.d.ts     |     1 +
 .../src/component/visualMap/visualEncoding.d.ts    |     2 +
 .../src/component/visualMap/visualMapAction.d.ts   |     8 +
 .../types/src/component/visualMapContinuous.d.ts   |     1 +
 .../types/src/component/visualMapPiecewise.d.ts    |     1 +
 en/js/vendors/echarts/types/src/coord/Axis.d.ts    |   101 +
 .../echarts/types/src/coord/AxisBaseModel.d.ts     |    11 +
 .../echarts/types/src/coord/CoordinateSystem.d.ts  |    90 +
 en/js/vendors/echarts/types/src/coord/View.d.ts    |   105 +
 .../echarts/types/src/coord/axisAlignTicks.d.ts    |     5 +
 .../echarts/types/src/coord/axisCommonTypes.d.ts   |   208 +
 .../echarts/types/src/coord/axisDefault.d.ts       |     8 +
 .../echarts/types/src/coord/axisHelper.d.ts        |    59 +
 .../types/src/coord/axisModelCommonMixin.d.ts      |    16 +
 .../echarts/types/src/coord/axisModelCreator.d.ts  |    16 +
 .../types/src/coord/axisTickLabelBuilder.d.ts      |    29 +
 .../echarts/types/src/coord/calendar/Calendar.d.ts |   145 +
 .../types/src/coord/calendar/CalendarModel.d.ts    |   119 +
 .../types/src/coord/calendar/prepareCustom.d.ts    |    22 +
 .../echarts/types/src/coord/cartesian/Axis2D.d.ts  |    65 +
 .../types/src/coord/cartesian/AxisModel.d.ts       |    30 +
 .../types/src/coord/cartesian/Cartesian.d.ts       |    14 +
 .../types/src/coord/cartesian/Cartesian2D.d.ts     |    40 +
 .../echarts/types/src/coord/cartesian/Grid.d.ts    |    78 +
 .../types/src/coord/cartesian/GridModel.d.ts       |    21 +
 .../src/coord/cartesian/cartesianAxisHelper.d.ts   |    26 +
 .../coord/cartesian/defaultAxisExtentFromData.d.ts |     1 +
 .../types/src/coord/cartesian/prepareCustom.d.ts   |    14 +
 en/js/vendors/echarts/types/src/coord/geo/Geo.d.ts |    49 +
 .../types/src/coord/geo/GeoJSONResource.d.ts       |    30 +
 .../echarts/types/src/coord/geo/GeoModel.d.ts      |    89 +
 .../types/src/coord/geo/GeoSVGResource.d.ts        |    41 +
 .../echarts/types/src/coord/geo/Region.d.ts        |    56 +
 .../types/src/coord/geo/fix/diaoyuIsland.d.ts      |     2 +
 .../echarts/types/src/coord/geo/fix/geoCoord.d.ts  |     2 +
 .../echarts/types/src/coord/geo/fix/nanhai.d.ts    |     2 +
 .../echarts/types/src/coord/geo/fix/textCoord.d.ts |     2 +
 .../echarts/types/src/coord/geo/geoCreator.d.ts    |    23 +
 .../types/src/coord/geo/geoSourceManager.d.ts      |    51 +
 .../echarts/types/src/coord/geo/geoTypes.d.ts      |   123 +
 .../echarts/types/src/coord/geo/parseGeoJson.d.ts  |     3 +
 .../echarts/types/src/coord/geo/prepareCustom.d.ts |    15 +
 .../types/src/coord/parallel/AxisModel.d.ts        |    57 +
 .../echarts/types/src/coord/parallel/Parallel.d.ts |    95 +
 .../types/src/coord/parallel/ParallelAxis.d.ts     |    14 +
 .../types/src/coord/parallel/ParallelModel.d.ts    |    52 +
 .../types/src/coord/parallel/parallelCreator.d.ts  |     8 +
 .../src/coord/parallel/parallelPreprocessor.d.ts   |     2 +
 .../echarts/types/src/coord/polar/AngleAxis.d.ts   |    23 +
 .../echarts/types/src/coord/polar/AxisModel.d.ts   |    52 +
 .../echarts/types/src/coord/polar/Polar.d.ts       |    90 +
 .../echarts/types/src/coord/polar/PolarModel.d.ts  |    17 +
 .../echarts/types/src/coord/polar/RadiusAxis.d.ts  |    15 +
 .../types/src/coord/polar/polarCreator.d.ts        |     8 +
 .../types/src/coord/polar/prepareCustom.d.ts       |    14 +
 .../types/src/coord/radar/IndicatorAxis.d.ts       |    13 +
 .../echarts/types/src/coord/radar/Radar.d.ts       |    38 +
 .../echarts/types/src/coord/radar/RadarModel.d.ts  |    50 +
 .../types/src/coord/scaleRawExtentInfo.d.ts        |    58 +
 .../echarts/types/src/coord/single/AxisModel.d.ts  |    26 +
 .../echarts/types/src/coord/single/Single.d.ts     |    70 +
 .../echarts/types/src/coord/single/SingleAxis.d.ts |    31 +
 .../types/src/coord/single/prepareCustom.d.ts      |    14 +
 .../types/src/coord/single/singleAxisHelper.d.ts   |    15 +
 .../types/src/coord/single/singleCreator.d.ts      |    15 +
 .../echarts/types/src/core/CoordinateSystem.d.ts   |    12 +
 .../echarts/types/src/core/ExtensionAPI.d.ts       |    26 +
 .../vendors/echarts/types/src/core/Scheduler.d.ts  |   104 +
 en/js/vendors/echarts/types/src/core/echarts.d.ts  |   381 +
 en/js/vendors/echarts/types/src/core/impl.d.ts     |     2 +
 .../vendors/echarts/types/src/core/lifecycle.d.ts  |    43 +
 en/js/vendors/echarts/types/src/core/locale.d.ts   |     8 +
 en/js/vendors/echarts/types/src/core/task.d.ts     |    89 +
 .../vendors/echarts/types/src/data/DataDiffer.d.ts |    82 +
 .../vendors/echarts/types/src/data/DataStore.d.ts  |   200 +
 en/js/vendors/echarts/types/src/data/Graph.d.ts    |   139 +
 .../echarts/types/src/data/OrdinalMeta.d.ts        |    22 +
 .../vendors/echarts/types/src/data/SeriesData.d.ts |   478 +
 .../types/src/data/SeriesDimensionDefine.d.ts      |   100 +
 en/js/vendors/echarts/types/src/data/Source.d.ts   |   116 +
 en/js/vendors/echarts/types/src/data/Tree.d.ts     |   168 +
 .../types/src/data/helper/SeriesDataSchema.d.ts    |    66 +
 .../types/src/data/helper/createDimensions.d.ts    |    57 +
 .../types/src/data/helper/dataProvider.d.ts        |    71 +
 .../types/src/data/helper/dataStackHelper.d.ts     |    38 +
 .../types/src/data/helper/dataValueHelper.d.ts     |    75 +
 .../types/src/data/helper/dimensionHelper.d.ts     |    42 +
 .../echarts/types/src/data/helper/linkList.d.ts    |     2 +
 .../types/src/data/helper/linkSeriesData.d.ts      |    22 +
 .../types/src/data/helper/sourceHelper.d.ts        |    56 +
 .../types/src/data/helper/sourceManager.d.ts       |   143 +
 .../echarts/types/src/data/helper/transform.d.ts   |    87 +
 en/js/vendors/echarts/types/src/echarts.all.d.ts   |     1 +
 en/js/vendors/echarts/types/src/echarts.blank.d.ts |     1 +
 .../vendors/echarts/types/src/echarts.common.d.ts  |     1 +
 en/js/vendors/echarts/types/src/echarts.d.ts       |     5 +
 .../vendors/echarts/types/src/echarts.simple.d.ts  |     1 +
 en/js/vendors/echarts/types/src/export/all.d.ts    |     2 +
 en/js/vendors/echarts/types/src/export/api.d.ts    |    31 +
 .../echarts/types/src/export/api/format.d.ts       |     1 +
 .../echarts/types/src/export/api/graphic.d.ts      |     1 +
 .../echarts/types/src/export/api/helper.d.ts       |    51 +
 .../echarts/types/src/export/api/number.d.ts       |     1 +
 .../vendors/echarts/types/src/export/api/time.d.ts |     2 +
 .../vendors/echarts/types/src/export/api/util.d.ts |     1 +
 en/js/vendors/echarts/types/src/export/charts.d.ts |    23 +
 .../echarts/types/src/export/components.d.ts       |    31 +
 en/js/vendors/echarts/types/src/export/core.d.ts   |    37 +
 .../vendors/echarts/types/src/export/features.d.ts |     2 +
 en/js/vendors/echarts/types/src/export/option.d.ts |   175 +
 .../echarts/types/src/export/renderers.d.ts        |     2 +
 en/js/vendors/echarts/types/src/extension.d.ts     |    65 +
 en/js/vendors/echarts/types/src/i18n/langAR.d.ts   |   115 +
 en/js/vendors/echarts/types/src/i18n/langCS.d.ts   |   115 +
 en/js/vendors/echarts/types/src/i18n/langDE.d.ts   |   115 +
 en/js/vendors/echarts/types/src/i18n/langEN.d.ts   |   115 +
 en/js/vendors/echarts/types/src/i18n/langES.d.ts   |   112 +
 en/js/vendors/echarts/types/src/i18n/langFA.d.ts   |   115 +
 en/js/vendors/echarts/types/src/i18n/langFI.d.ts   |   112 +
 en/js/vendors/echarts/types/src/i18n/langFR.d.ts   |   115 +
 en/js/vendors/echarts/types/src/i18n/langHU.d.ts   |   115 +
 en/js/vendors/echarts/types/src/i18n/langIT.d.ts   |   115 +
 en/js/vendors/echarts/types/src/i18n/langJA.d.ts   |   115 +
 en/js/vendors/echarts/types/src/i18n/langKO.d.ts   |   115 +
 en/js/vendors/echarts/types/src/i18n/langNL.d.ts   |   115 +
 en/js/vendors/echarts/types/src/i18n/langPL.d.ts   |   115 +
 .../vendors/echarts/types/src/i18n/langPT-br.d.ts  |   115 +
 en/js/vendors/echarts/types/src/i18n/langRO.d.ts   |   115 +
 en/js/vendors/echarts/types/src/i18n/langRU.d.ts   |   115 +
 en/js/vendors/echarts/types/src/i18n/langSI.d.ts   |   115 +
 en/js/vendors/echarts/types/src/i18n/langSV.d.ts   |   115 +
 en/js/vendors/echarts/types/src/i18n/langTH.d.ts   |   112 +
 en/js/vendors/echarts/types/src/i18n/langTR.d.ts   |   115 +
 en/js/vendors/echarts/types/src/i18n/langUK.d.ts   |   115 +
 en/js/vendors/echarts/types/src/i18n/langVI.d.ts   |   115 +
 en/js/vendors/echarts/types/src/i18n/langZH.d.ts   |   112 +
 .../echarts/types/src/label/LabelManager.d.ts      |    22 +
 .../types/src/label/installLabelLayout.d.ts        |     2 +
 .../echarts/types/src/label/labelGuideHelper.d.ts  |    31 +
 .../echarts/types/src/label/labelLayoutHelper.d.ts |    39 +
 .../echarts/types/src/label/labelStyle.d.ts        |   108 +
 .../echarts/types/src/label/sectorLabel.d.ts       |    20 +
 .../vendors/echarts/types/src/layout/barGrid.d.ts  |    45 +
 .../vendors/echarts/types/src/layout/barPolar.d.ts |     4 +
 en/js/vendors/echarts/types/src/layout/points.d.ts |     2 +
 .../echarts/types/src/legacy/dataSelectAction.d.ts |     5 +
 .../echarts/types/src/legacy/getTextRect.d.ts      |     4 +
 .../vendors/echarts/types/src/loading/default.d.ts |    24 +
 .../vendors/echarts/types/src/model/Component.d.ts |   158 +
 en/js/vendors/echarts/types/src/model/Global.d.ts  |   219 +
 en/js/vendors/echarts/types/src/model/Model.d.ts   |    40 +
 .../echarts/types/src/model/OptionManager.d.ts     |    58 +
 en/js/vendors/echarts/types/src/model/Series.d.ts  |   171 +
 .../echarts/types/src/model/globalDefault.d.ts     |    68 +
 .../types/src/model/internalComponentCreator.d.ts  |     8 +
 .../echarts/types/src/model/mixin/areaStyle.d.ts   |     9 +
 .../echarts/types/src/model/mixin/dataFormat.d.ts  |    51 +
 .../echarts/types/src/model/mixin/itemStyle.d.ts   |    10 +
 .../echarts/types/src/model/mixin/lineStyle.d.ts   |    10 +
 .../types/src/model/mixin/makeStyleMapper.d.ts     |     3 +
 .../echarts/types/src/model/mixin/palette.d.ts     |    11 +
 .../echarts/types/src/model/mixin/textStyle.d.ts   |    18 +
 .../echarts/types/src/model/referHelper.d.ts       |    37 +
 .../types/src/preprocessor/backwardCompat.d.ts     |     2 +
 .../types/src/preprocessor/helper/compatStyle.d.ts |     1 +
 .../echarts/types/src/processor/dataFilter.d.ts    |     2 +
 .../echarts/types/src/processor/dataSample.d.ts    |     2 +
 .../echarts/types/src/processor/dataStack.d.ts     |     2 +
 .../types/src/processor/negativeDataFilter.d.ts    |     2 +
 .../types/src/renderer/installCanvasRenderer.d.ts  |     2 +
 .../types/src/renderer/installSVGRenderer.d.ts     |     2 +
 .../vendors/echarts/types/src/scale/Interval.d.ts  |    43 +
 en/js/vendors/echarts/types/src/scale/Log.d.ts     |    44 +
 en/js/vendors/echarts/types/src/scale/Ordinal.d.ts |   127 +
 en/js/vendors/echarts/types/src/scale/Scale.d.ts   |    92 +
 en/js/vendors/echarts/types/src/scale/Time.d.ts    |    39 +
 en/js/vendors/echarts/types/src/scale/helper.d.ts  |    26 +
 en/js/vendors/echarts/types/src/theme/dark.d.ts    |   235 +
 en/js/vendors/echarts/types/src/theme/light.d.ts   |     5 +
 .../echarts/types/src/util/ECEventProcessor.d.ts   |    34 +
 en/js/vendors/echarts/types/src/util/KDTree.d.ts   |    48 +
 .../vendors/echarts/types/src/util/animation.d.ts  |    37 +
 en/js/vendors/echarts/types/src/util/clazz.d.ts    |    84 +
 .../vendors/echarts/types/src/util/component.d.ts  |    32 +
 .../types/src/util/conditionalExpression.d.ts      |   142 +
 en/js/vendors/echarts/types/src/util/decal.d.ts    |    10 +
 en/js/vendors/echarts/types/src/util/event.d.ts    |     2 +
 en/js/vendors/echarts/types/src/util/format.d.ts   |    76 +
 en/js/vendors/echarts/types/src/util/graphic.d.ts  |   225 +
 .../vendors/echarts/types/src/util/innerStore.d.ts |    25 +
 en/js/vendors/echarts/types/src/util/layout.d.ts   |   162 +
 en/js/vendors/echarts/types/src/util/log.d.ts      |    19 +
 en/js/vendors/echarts/types/src/util/model.d.ts    |   282 +
 en/js/vendors/echarts/types/src/util/number.d.ts   |   195 +
 .../echarts/types/src/util/quickSelect.d.ts        |    17 +
 .../echarts/types/src/util/shape/sausage.d.ts      |    24 +
 en/js/vendors/echarts/types/src/util/states.d.ts   |   115 +
 .../echarts/types/src/util/styleCompat.d.ts        |    34 +
 en/js/vendors/echarts/types/src/util/symbol.d.ts   |    15 +
 en/js/vendors/echarts/types/src/util/throttle.d.ts |    43 +
 en/js/vendors/echarts/types/src/util/time.d.ts     |    54 +
 en/js/vendors/echarts/types/src/util/types.d.ts    |  1335 +
 en/js/vendors/echarts/types/src/util/vendor.d.ts   |     1 +
 en/js/vendors/echarts/types/src/view/Chart.d.ts    |    85 +
 .../vendors/echarts/types/src/view/Component.d.ts  |    61 +
 .../types/src/visual/LegendVisualProvider.d.ts     |    15 +
 .../echarts/types/src/visual/VisualMapping.d.ts    |   160 +
 en/js/vendors/echarts/types/src/visual/aria.d.ts   |     3 +
 .../types/src/visual/commonVisualTypes.d.ts        |    13 +
 en/js/vendors/echarts/types/src/visual/decal.d.ts  |     3 +
 en/js/vendors/echarts/types/src/visual/helper.d.ts |    11 +
 en/js/vendors/echarts/types/src/visual/style.d.ts  |     5 +
 en/js/vendors/echarts/types/src/visual/symbol.d.ts |     4 +
 .../echarts/types/src/visual/visualDefault.d.ts    |     7 +
 .../echarts/types/src/visual/visualSolution.d.ts   |    33 +
 en/js/vendors/echarts@4.8.0/echarts.min.js         |    22 +
 en/js/vendors/ecurl                                |     1 +
 en/js/vendors/element-ui@2.15.14/index.js          |     1 +
 en/js/vendors/element-ui@2.15.14/lib/index.js      |     1 +
 .../lib/theme-chalk/fonts/element-icons.ttf        |   Bin 0 -> 55956 bytes
 .../lib/theme-chalk/fonts/element-icons.woff       |   Bin 0 -> 28200 bytes
 .../element-ui@2.15.14/lib/theme-chalk/index.css   |     1 +
 en/js/vendors/jquery@3.7.1/dist/jquery.min.js      |     2 +
 en/js/vendors/js-beautify@1.11.0/beautifier.min.js |     2 +
 en/js/vendors/lodash@3.10.1/lodash.min.js          |    17 +
 en/js/vendors/lottie-web@5.7.6/lottie.min.js       |    15 +
 .../base/browser/ui/codicons/codicon/codicon.ttf   |   Bin 0 -> 66044 bytes
 .../min/vs/base/worker/workerMain.js               |    18 +
 .../min/vs/basic-languages/css/css.js              |     7 +
 .../min/vs/basic-languages/html/html.js            |     7 +
 .../vs/basic-languages/javascript/javascript.js    |     7 +
 .../vs/basic-languages/typescript/typescript.js    |     7 +
 .../min/vs/editor/editor.main.css                  |     6 +
 .../min/vs/editor/editor.main.js                   |   764 +
 .../min/vs/editor/editor.main.nls.js               |    11 +
 .../min/vs/editor/editor.main.nls.zh-cn.js         |    13 +
 .../min/vs/language/typescript/tsMode.js           |     7 +
 .../min/vs/language/typescript/tsWorker.js         |    21 +
 .../vendors/monaco-editor@0.27.0/min/vs/loader.js  |    11 +
 en/js/vendors/pace-js@1.2.4/pace.min.js            |     6 +
 en/js/vendors/prettier@2.3.2/parser-babel.js       |    22 +
 en/js/vendors/prettier@2.3.2/parser-typescript.js  |    22 +
 en/js/vendors/prettier@2.3.2/standalone.js         |    76 +
 en/js/vendors/prettier@2.3.2/third-party.js        | 11283 +++
 .../scrollReveal.js@4.0.7/scrollreveal.min.js      |    12 +
 en/js/vendors/seedrandom@3.0.5/seedrandom.min.js   |     1 +
 en/js/vendors/sweetalert@2.1.2/sweetalert.min.js   |     1 +
 .../vanilla-lazyload@12.0.3/lazyload.min.js        |     2 +
 en/js/vendors/vue@2.6.14/vue.min.js                |     6 +
 en/maillist.html                                   |    21 +-
 en/option-gl.html                                  |    23 +-
 en/option.html                                     |    23 +-
 en/option3.html                                    |    23 +-
 en/resources.html                                  |    21 +-
 en/security.html                                   |    21 +-
 en/spreadsheet.html                                |    27 +-
 en/theme-builder.html                              |    21 +-
 en/theme-builder/main.css                          |   235 +-
 en/tutorial.html                                   |    23 +-
 examples/en/editor.html                            |    25 +-
 examples/en/index.html                             |    25 +-
 examples/en/view.html                              |    29 +-
 examples/js/example-bundle.js                      |     2 +-
 examples/zh/editor.html                            |    25 +-
 examples/zh/index.html                             |    25 +-
 examples/zh/view.html                              |    29 +-
 handbook/200.html                                  |     4 +-
 handbook/_nuxt/{ad9bc19.js => e375200.js}          |     2 +-
 handbook/_nuxt/js/042e89c9a39f79298e3f.js          |     1 -
 handbook/_nuxt/js/cddc47d2302434b029f9.js          |     1 +
 handbook/en/basics/download/index.html             |     4 +-
 handbook/en/basics/help/index.html                 |     4 +-
 handbook/en/basics/import/index.html               |     4 +-
 handbook/en/basics/release-note/5-2-0/index.html   |     4 +-
 handbook/en/basics/release-note/5-3-0/index.html   |     4 +-
 handbook/en/basics/release-note/5-4-0/index.html   |     4 +-
 handbook/en/basics/release-note/5-5-0/index.html   |     4 +-
 handbook/en/basics/release-note/5-6-0/index.html   |     4 +-
 .../en/basics/release-note/v5-feature/index.html   |     4 +-
 .../release-note/v5-upgrade-guide/index.html       |     4 +-
 handbook/en/best-practices/aria/index.html         |     4 +-
 .../en/best-practices/canvas-vs-svg/index.html     |     4 +-
 handbook/en/concepts/axis/index.html               |     4 +-
 handbook/en/concepts/chart-size/index.html         |     4 +-
 handbook/en/concepts/data-transform/index.html     |     4 +-
 handbook/en/concepts/dataset/index.html            |     4 +-
 handbook/en/concepts/event/index.html              |     4 +-
 handbook/en/concepts/legend/index.html             |     4 +-
 handbook/en/concepts/style/index.html              |     4 +-
 handbook/en/concepts/visual-map/index.html         |     4 +-
 handbook/en/get-started/index.html                 |     4 +-
 handbook/en/how-to/animation/transition/index.html |     4 +-
 .../en/how-to/chart-types/bar/bar-race/index.html  |     4 +-
 .../en/how-to/chart-types/bar/basic-bar/index.html |     4 +-
 .../how-to/chart-types/bar/stacked-bar/index.html  |     4 +-
 .../en/how-to/chart-types/bar/waterfall/index.html |     4 +-
 .../how-to/chart-types/line/area-line/index.html   |     4 +-
 .../how-to/chart-types/line/basic-line/index.html  |     4 +-
 .../how-to/chart-types/line/smooth-line/index.html |     4 +-
 .../chart-types/line/stacked-line/index.html       |     4 +-
 .../how-to/chart-types/line/step-line/index.html   |     4 +-
 .../en/how-to/chart-types/pie/basic-pie/index.html |     4 +-
 .../en/how-to/chart-types/pie/doughnut/index.html  |     4 +-
 handbook/en/how-to/chart-types/pie/rose/index.html |     4 +-
 .../chart-types/scatter/basic-scatter/index.html   |     4 +-
 .../en/how-to/cross-platform/server/index.html     |     4 +-
 handbook/en/how-to/data/dynamic-data/index.html    |     4 +-
 .../how-to/interaction/coarse-pointer/index.html   |     4 +-
 handbook/en/how-to/interaction/drag/index.html     |     4 +-
 handbook/en/how-to/label/rich-text/index.html      |     4 +-
 handbook/en/index.html                             |     4 +-
 handbook/en/meta/edit-guide/index.html             |     4 +-
 handbook/index.html                                |     4 +-
 handbook/zh/basics/download/index.html             |     4 +-
 handbook/zh/basics/help/index.html                 |     4 +-
 handbook/zh/basics/import/index.html               |     4 +-
 handbook/zh/basics/release-note/5-2-0/index.html   |     4 +-
 handbook/zh/basics/release-note/5-3-0/index.html   |     4 +-
 handbook/zh/basics/release-note/5-4-0/index.html   |     4 +-
 handbook/zh/basics/release-note/5-5-0/index.html   |     4 +-
 handbook/zh/basics/release-note/5-6-0/index.html   |     4 +-
 .../zh/basics/release-note/v5-feature/index.html   |     4 +-
 .../release-note/v5-upgrade-guide/index.html       |     4 +-
 handbook/zh/best-practices/aria/index.html         |     4 +-
 .../zh/best-practices/canvas-vs-svg/index.html     |     4 +-
 handbook/zh/concepts/axis/index.html               |     4 +-
 handbook/zh/concepts/chart-size/index.html         |     4 +-
 handbook/zh/concepts/data-transform/index.html     |     4 +-
 handbook/zh/concepts/dataset/index.html            |     4 +-
 handbook/zh/concepts/event/index.html              |     4 +-
 handbook/zh/concepts/legend/index.html             |     4 +-
 handbook/zh/concepts/style/index.html              |     4 +-
 handbook/zh/concepts/visual-map/index.html         |     4 +-
 handbook/zh/get-started/index.html                 |     4 +-
 handbook/zh/how-to/animation/transition/index.html |     4 +-
 .../zh/how-to/chart-types/bar/bar-race/index.html  |     4 +-
 .../zh/how-to/chart-types/bar/basic-bar/index.html |     4 +-
 .../how-to/chart-types/bar/stacked-bar/index.html  |     4 +-
 .../zh/how-to/chart-types/bar/waterfall/index.html |     4 +-
 .../how-to/chart-types/line/area-line/index.html   |     4 +-
 .../how-to/chart-types/line/basic-line/index.html  |     4 +-
 .../how-to/chart-types/line/smooth-line/index.html |     4 +-
 .../chart-types/line/stacked-line/index.html       |     4 +-
 .../how-to/chart-types/line/step-line/index.html   |     4 +-
 .../zh/how-to/chart-types/pie/basic-pie/index.html |     4 +-
 .../zh/how-to/chart-types/pie/doughnut/index.html  |     4 +-
 handbook/zh/how-to/chart-types/pie/rose/index.html |     4 +-
 .../chart-types/scatter/basic-scatter/index.html   |     4 +-
 .../zh/how-to/cross-platform/baidu-app/index.html  |     4 +-
 .../zh/how-to/cross-platform/server/index.html     |     4 +-
 .../zh/how-to/cross-platform/wechat-app/index.html |     4 +-
 handbook/zh/how-to/data/dynamic-data/index.html    |     4 +-
 .../how-to/interaction/coarse-pointer/index.html   |     4 +-
 handbook/zh/how-to/interaction/drag/index.html     |     4 +-
 handbook/zh/how-to/label/rich-text/index.html      |     4 +-
 handbook/zh/index.html                             |     4 +-
 handbook/zh/meta/edit-guide/index.html             |     4 +-
 layouts/basic.html                                 |    21 +-
 layouts/doc-old.html                               |    23 +-
 layouts/doc.html                                   |    23 +-
 layouts/example-simple.html                        |    27 +-
 layouts/example.html                               |    25 +-
 layouts/tool-spa.html                              |    21 +-
 zh/404.html                                        |    21 +-
 zh/api.html                                        |    23 +-
 zh/builder.html                                    |    23 +-
 zh/builder/echarts.html                            |     2 +-
 zh/builder3.html                                   |    23 +-
 zh/changelog.html                                  |    21 +-
 zh/cheat-sheet.html                                |    23 +-
 zh/coding-standard.html                            |    23 +-
 zh/committers.html                                 |    23 +-
 zh/contributing.html                               |    21 +-
 zh/css/only_for_cdn_ready_check.css                |     2 +-
 zh/dependencies.html                               |    21 +-
 zh/download-extension.html                         |    21 +-
 zh/download-map.html                               |    23 +-
 zh/download-theme.html                             |    23 +-
 zh/download.html                                   |    23 +-
 zh/download3.html                                  |    23 +-
 zh/events.html                                     |    23 +-
 zh/events/2021-05-13-iscas.html                    |    23 +-
 zh/events/2021-07-05-apachecon.html                |    23 +-
 zh/faq.html                                        |    21 +-
 zh/feature.html                                    |    23 +-
 zh/index.html                                      |    23 +-
 zh/js/doc-bundle.js                                |     2 +-
 .../echarts-www-landing-animation.js               |    93 +
 zh/js/echarts-www-landing-animation/style.css      |     1 +
 zh/js/index.js                                     |     2 +-
 .../ace-builds@1.4.12/src-min-noconflict/ace.js    |    17 +
 .../src-min-noconflict/ext-language_tools.js       |     8 +
 .../src-min-noconflict/mode-javascript.js          |     8 +
 .../src-min-noconflict/snippets/javascript.js      |     8 +
 .../src-min-noconflict/snippets/json.js            |     8 +
 .../src-min-noconflict/worker-javascript.js        |     1 +
 zh/js/vendors/acorn@8.7.1/dist/acorn.min.js        |     8 +
 .../vendors/bootstrap@3.3.7/css/bootstrap.min.css  |     6 +
 zh/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js  |     7 +
 zh/js/vendors/code-prettify@0.1.0/lang-css.js      |   160 +
 zh/js/vendors/code-prettify@0.1.0/prettify.min.js  |    24 +
 zh/js/vendors/codemirror@5.56.0/codemirror.min.js  |     8 +
 .../mode/javascript/javascript.js                  |   935 +
 zh/js/vendors/dat.gui@0.6.5/build/dat.gui.min.js   |     2 +
 zh/js/vendors/echarts-gl/LICENSE                   |    29 +
 zh/js/vendors/echarts-gl/asset/logo.png            |   Bin 0 -> 3944 bytes
 zh/js/vendors/echarts-gl/babel.config.js           |     4 +
 zh/js/vendors/echarts-gl/charts.js                 |     1 +
 zh/js/vendors/echarts-gl/components.js             |     1 +
 zh/js/vendors/echarts-gl/dist/echarts-gl.js        | 65729 ++++++++++++++
 zh/js/vendors/echarts-gl/dist/echarts-gl.js.map    |     1 +
 zh/js/vendors/echarts-gl/dist/echarts-gl.min.js    |     1 +
 .../echarts-gl/dist/echarts-gl.min.js.LICENSE.txt  |    14 +
 zh/js/vendors/echarts-gl/index.js                  |     1 +
 zh/js/vendors/echarts-gl/jsconfig.json             |    10 +
 zh/js/vendors/echarts-gl/lib/chart/bar3D.js        |     3 +
 .../echarts-gl/lib/chart/bar3D/Bar3DSeries.js      |    64 +
 .../echarts-gl/lib/chart/bar3D/Bar3DView.js        |   299 +
 .../echarts-gl/lib/chart/bar3D/bar3DLayout.js      |   144 +
 .../lib/chart/bar3D/cartesian3DLayout.js           |    73 +
 .../lib/chart/bar3D/evaluateBarSparseness.js       |    29 +
 .../vendors/echarts-gl/lib/chart/bar3D/install.js  |    18 +
 .../echarts-gl/lib/chart/common/GLViewHelper.js    |    80 +
 .../echarts-gl/lib/chart/common/PointsBuilder.js   |   548 +
 .../echarts-gl/lib/chart/common/PointsMesh.js      |   102 +
 .../echarts-gl/lib/chart/common/createList.js      |    40 +
 .../echarts-gl/lib/chart/common/formatTooltip.js   |    65 +
 .../echarts-gl/lib/chart/common/sdfSprite.glsl.js  |     1 +
 zh/js/vendors/echarts-gl/lib/chart/flowGL.js       |     3 +
 .../echarts-gl/lib/chart/flowGL/FlowGLSeries.js    |    45 +
 .../echarts-gl/lib/chart/flowGL/FlowGLView.js      |   332 +
 .../vendors/echarts-gl/lib/chart/flowGL/Line2D.js  |    65 +
 .../lib/chart/flowGL/VectorFieldParticleSurface.js |   404 +
 .../vendors/echarts-gl/lib/chart/flowGL/install.js |     8 +
 .../lib/chart/flowGL/vectorFieldParticle.glsl.js   |     1 +
 zh/js/vendors/echarts-gl/lib/chart/graphGL.js      |     3 +
 .../echarts-gl/lib/chart/graphGL/ForceAtlas2.js    |   257 +
 .../echarts-gl/lib/chart/graphGL/ForceAtlas2GPU.js |   481 +
 .../echarts-gl/lib/chart/graphGL/GraphGLSeries.js  |   244 +
 .../echarts-gl/lib/chart/graphGL/GraphGLView.js    |   716 +
 .../lib/chart/graphGL/createGraphFromNodeEdge.js   |    56 +
 .../lib/chart/graphGL/forceAtlas2.glsl.js          |     1 +
 .../lib/chart/graphGL/forceAtlas2Worker.js         |   635 +
 .../echarts-gl/lib/chart/graphGL/install.js        |   153 +
 zh/js/vendors/echarts-gl/lib/chart/line3D.js       |     3 +
 .../echarts-gl/lib/chart/line3D/Line3DSeries.js    |    26 +
 .../echarts-gl/lib/chart/line3D/Line3DView.js      |   233 +
 .../vendors/echarts-gl/lib/chart/line3D/install.js |    46 +
 zh/js/vendors/echarts-gl/lib/chart/lines3D.js      |     3 +
 .../echarts-gl/lib/chart/lines3D/Lines3DSeries.js  |    48 +
 .../echarts-gl/lib/chart/lines3D/Lines3DView.js    |   166 +
 .../echarts-gl/lib/chart/lines3D/TrailGeometry.js  |   151 +
 .../echarts-gl/lib/chart/lines3D/TrailMesh.js      |    98 +
 .../echarts-gl/lib/chart/lines3D/TrailMesh2.js     |   123 +
 .../echarts-gl/lib/chart/lines3D/install.js        |    25 +
 .../echarts-gl/lib/chart/lines3D/lines3DLayout.js  |   147 +
 .../lib/chart/lines3D/shader/trail.glsl.js         |     1 +
 .../lib/chart/lines3D/shader/trail2.glsl.js        |     1 +
 zh/js/vendors/echarts-gl/lib/chart/linesGL.js      |     3 +
 .../echarts-gl/lib/chart/linesGL/LinesGLSeries.js  |   191 +
 .../echarts-gl/lib/chart/linesGL/LinesGLView.js    |   187 +
 .../echarts-gl/lib/chart/linesGL/install.js        |     8 +
 zh/js/vendors/echarts-gl/lib/chart/map3D.js        |     3 +
 .../echarts-gl/lib/chart/map3D/Map3DSeries.js      |   145 +
 .../echarts-gl/lib/chart/map3D/Map3DView.js        |   110 +
 .../vendors/echarts-gl/lib/chart/map3D/install.js  |    24 +
 zh/js/vendors/echarts-gl/lib/chart/polygons3D.js   |     3 +
 .../lib/chart/polygons3D/Polygons3DSeries.js       |   100 +
 .../lib/chart/polygons3D/Polygons3DView.js         |    84 +
 .../echarts-gl/lib/chart/polygons3D/install.js     |     8 +
 zh/js/vendors/echarts-gl/lib/chart/scatter3D.js    |     3 +
 .../lib/chart/scatter3D/Scatter3DSeries.js         |    62 +
 .../lib/chart/scatter3D/Scatter3DView.js           |   119 +
 .../echarts-gl/lib/chart/scatter3D/install.js      |    50 +
 zh/js/vendors/echarts-gl/lib/chart/scatterGL.js    |     3 +
 .../lib/chart/scatterGL/ScatterGLSeries.js         |    43 +
 .../lib/chart/scatterGL/ScatterGLView.js           |   111 +
 .../echarts-gl/lib/chart/scatterGL/install.js      |    60 +
 zh/js/vendors/echarts-gl/lib/chart/surface.js      |     3 +
 .../echarts-gl/lib/chart/surface/SurfaceSeries.js  |   186 +
 .../echarts-gl/lib/chart/surface/SurfaceView.js    |   479 +
 .../echarts-gl/lib/chart/surface/install.js        |    45 +
 .../echarts-gl/lib/chart/surface/surfaceLayout.js  |    41 +
 .../lib/component/common/Geo3DBuilder.js           |   713 +
 .../lib/component/common/LabelsBuilder.js          |   172 +
 .../echarts-gl/lib/component/common/SceneHelper.js |   175 +
 .../lib/component/common/componentLightMixin.js    |    32 +
 .../component/common/componentPostEffectMixin.js   |    51 +
 .../lib/component/common/componentShadingMixin.js  |    25 +
 .../component/common/componentViewControlMixin.js  |    73 +
 zh/js/vendors/echarts-gl/lib/component/geo3D.js    |     3 +
 .../echarts-gl/lib/component/geo3D/Geo3DModel.js   |    86 +
 .../echarts-gl/lib/component/geo3D/Geo3DView.js    |    89 +
 .../echarts-gl/lib/component/geo3D/install.js      |    22 +
 zh/js/vendors/echarts-gl/lib/component/globe.js    |     3 +
 .../echarts-gl/lib/component/globe/GlobeModel.js   |   168 +
 .../echarts-gl/lib/component/globe/GlobeView.js    |   411 +
 .../lib/component/globe/atmosphere.glsl.js         |     1 +
 .../echarts-gl/lib/component/globe/install.js      |    28 +
 zh/js/vendors/echarts-gl/lib/component/grid3D.js   |     3 +
 .../echarts-gl/lib/component/grid3D/Axis3DModel.js |    18 +
 .../echarts-gl/lib/component/grid3D/Grid3DAxis.js  |   203 +
 .../echarts-gl/lib/component/grid3D/Grid3DFace.js  |   179 +
 .../echarts-gl/lib/component/grid3D/Grid3DModel.js |   121 +
 .../echarts-gl/lib/component/grid3D/Grid3DView.js  |   573 +
 .../lib/component/grid3D/axis3DDefault.js          |    79 +
 .../lib/component/grid3D/createAxis3DModel.js      |    55 +
 .../echarts-gl/lib/component/grid3D/install.js     |    49 +
 zh/js/vendors/echarts-gl/lib/component/mapbox3D.js |     3 +
 .../lib/component/mapbox3D/Mapbox3DLayer.js        |    77 +
 .../lib/component/mapbox3D/Mapbox3DModel.js        |    55 +
 .../lib/component/mapbox3D/Mapbox3DView.js         |   137 +
 .../echarts-gl/lib/component/mapbox3D/install.js   |    22 +
 .../vendors/echarts-gl/lib/component/maptalks3D.js |     4 +
 .../lib/component/maptalks3D/Maptalks3DLayer.js    |    88 +
 .../lib/component/maptalks3D/Maptalks3DModel.js    |    56 +
 .../lib/component/maptalks3D/Maptalks3DView.js     |   161 +
 .../echarts-gl/lib/component/maptalks3D/install.js |    22 +
 zh/js/vendors/echarts-gl/lib/coord/geo3D/Geo3D.js  |   153 +
 .../echarts-gl/lib/coord/geo3D/geo3DModelMixin.js  |   119 +
 zh/js/vendors/echarts-gl/lib/coord/geo3DCreator.js |   180 +
 zh/js/vendors/echarts-gl/lib/coord/globe/Globe.js  |    86 +
 zh/js/vendors/echarts-gl/lib/coord/globeCreator.js |   147 +
 .../vendors/echarts-gl/lib/coord/grid3D/Axis3D.js  |    23 +
 .../echarts-gl/lib/coord/grid3D/Cartesian3D.js     |    36 +
 .../vendors/echarts-gl/lib/coord/grid3DCreator.js  |   170 +
 .../lib/coord/mapServiceCommon/MapService3D.js     |   165 +
 .../mapServiceCommon/createMapService3DCreator.js  |    85 +
 .../echarts-gl/lib/coord/mapbox3D/Mapbox3D.js      |    10 +
 .../echarts-gl/lib/coord/mapbox3DCreator.js        |     8 +
 .../echarts-gl/lib/coord/maptalks3D/Maptalks3D.js  |    12 +
 .../echarts-gl/lib/coord/maptalks3DCreator.js      |     8 +
 zh/js/vendors/echarts-gl/lib/core/LayerGL.js       |   713 +
 zh/js/vendors/echarts-gl/lib/core/ViewGL.js        |   465 +
 zh/js/vendors/echarts-gl/lib/echarts-gl.js         |   252 +
 zh/js/vendors/echarts-gl/lib/effect/DOF.glsl.js    |     1 +
 zh/js/vendors/echarts-gl/lib/effect/EdgePass.js    |    61 +
 .../echarts-gl/lib/effect/EffectCompositor.js      |   615 +
 zh/js/vendors/echarts-gl/lib/effect/NormalPass.js  |   197 +
 zh/js/vendors/echarts-gl/lib/effect/SSAO.glsl.js   |     1 +
 zh/js/vendors/echarts-gl/lib/effect/SSAOPass.js    |   233 +
 zh/js/vendors/echarts-gl/lib/effect/SSR.glsl.js    |     1 +
 zh/js/vendors/echarts-gl/lib/effect/SSRPass.js     |   219 +
 .../echarts-gl/lib/effect/TemporalSuperSampling.js |   164 +
 zh/js/vendors/echarts-gl/lib/effect/composite.js   |   524 +
 .../echarts-gl/lib/effect/compositeMobile.js       |   422 +
 zh/js/vendors/echarts-gl/lib/effect/edge.glsl.js   |     1 +
 zh/js/vendors/echarts-gl/lib/effect/halton.js      |    17 +
 .../vendors/echarts-gl/lib/effect/poissonKernel.js |     2 +
 zh/js/vendors/echarts-gl/lib/export/all.js         |    17 +
 zh/js/vendors/echarts-gl/lib/export/charts.js      |    11 +
 zh/js/vendors/echarts-gl/lib/export/components.js  |     5 +
 .../echarts-gl/lib/preprocessor/backwardCompat.js  |    62 +
 .../vendors/echarts-gl/lib/util/EChartsSurface.js  |   168 +
 zh/js/vendors/echarts-gl/lib/util/OrbitControl.js  |   752 +
 .../echarts-gl/lib/util/ProgressiveQuickSort.js    |   125 +
 zh/js/vendors/echarts-gl/lib/util/Roam2DControl.js |   158 +
 zh/js/vendors/echarts-gl/lib/util/Triangulation.js |   642 +
 .../echarts-gl/lib/util/ZRTextureAtlasSurface.js   |   344 +
 .../vendors/echarts-gl/lib/util/animatableMixin.js |    85 +
 zh/js/vendors/echarts-gl/lib/util/earcut.js        |   577 +
 zh/js/vendors/echarts-gl/lib/util/format.js        |    42 +
 .../echarts-gl/lib/util/geometry/Bars3DGeometry.js |   365 +
 .../echarts-gl/lib/util/geometry/Lines2D.js        |   447 +
 .../echarts-gl/lib/util/geometry/Lines3D.js        |   456 +
 .../vendors/echarts-gl/lib/util/geometry/Quads.js  |   103 +
 .../echarts-gl/lib/util/geometry/Sprites.js        |   137 +
 .../lib/util/geometry/dynamicConvertMixin.js       |    40 +
 .../lib/util/geometry/trianglesSortMixin.js        |   124 +
 .../lib/util/geometry/verticesSortMixin.js         |   101 +
 zh/js/vendors/echarts-gl/lib/util/graphicGL.js     |   684 +
 .../vendors/echarts-gl/lib/util/mesh/LabelsMesh.js |    21 +
 zh/js/vendors/echarts-gl/lib/util/retrieve.js      |    31 +
 .../echarts-gl/lib/util/shader/color.glsl.js       |     1 +
 .../echarts-gl/lib/util/shader/common.glsl.js      |     1 +
 .../lib/util/shader/displayShadow.glsl.js          |     1 +
 .../echarts-gl/lib/util/shader/hatching.glsl.js    |     1 +
 .../echarts-gl/lib/util/shader/labels.glsl.js      |     1 +
 .../echarts-gl/lib/util/shader/lambert.glsl.js     |     1 +
 .../echarts-gl/lib/util/shader/lines2D.glsl.js     |     1 +
 .../echarts-gl/lib/util/shader/lines3D.glsl.js     |     1 +
 .../echarts-gl/lib/util/shader/motionBlur.glsl.js  |     1 +
 .../echarts-gl/lib/util/shader/normal.glsl.js      |     1 +
 .../echarts-gl/lib/util/shader/realistic.glsl.js   |     1 +
 .../echarts-gl/lib/util/shader/shadow.glsl.js      |     1 +
 zh/js/vendors/echarts-gl/lib/util/sprite.js        |   163 +
 zh/js/vendors/echarts-gl/lib/util/sunCalc.js       |    87 +
 zh/js/vendors/echarts-gl/lib/util/visual.js        |    24 +
 zh/js/vendors/echarts-gl/src/chart/bar3D.js        |     3 +
 .../echarts-gl/src/chart/bar3D/Bar3DSeries.js      |    85 +
 .../echarts-gl/src/chart/bar3D/Bar3DView.js        |   324 +
 .../echarts-gl/src/chart/bar3D/bar3DLayout.js      |   176 +
 .../src/chart/bar3D/cartesian3DLayout.js           |    80 +
 .../src/chart/bar3D/evaluateBarSparseness.js       |    25 +
 .../vendors/echarts-gl/src/chart/bar3D/install.js  |    23 +
 .../echarts-gl/src/chart/common/GLViewHelper.js    |    83 +
 .../echarts-gl/src/chart/common/PointsBuilder.js   |   585 +
 .../echarts-gl/src/chart/common/PointsMesh.js      |   115 +
 .../echarts-gl/src/chart/common/createList.js      |    44 +
 .../echarts-gl/src/chart/common/formatTooltip.js   |    82 +
 .../echarts-gl/src/chart/common/sdfSprite.glsl     |   132 +
 .../echarts-gl/src/chart/common/sdfSprite.glsl.js  |     1 +
 zh/js/vendors/echarts-gl/src/chart/flowGL.js       |     3 +
 .../echarts-gl/src/chart/flowGL/FlowGLSeries.js    |    56 +
 .../echarts-gl/src/chart/flowGL/FlowGLView.js      |   358 +
 .../vendors/echarts-gl/src/chart/flowGL/Line2D.js  |    81 +
 .../src/chart/flowGL/VectorFieldParticleSurface.js |   442 +
 .../vendors/echarts-gl/src/chart/flowGL/install.js |    10 +
 .../src/chart/flowGL/vectorFieldParticle.glsl      |   191 +
 .../src/chart/flowGL/vectorFieldParticle.glsl.js   |     1 +
 zh/js/vendors/echarts-gl/src/chart/graphGL.js      |     3 +
 .../echarts-gl/src/chart/graphGL/ForceAtlas2.js    |   281 +
 .../echarts-gl/src/chart/graphGL/ForceAtlas2GPU.js |   467 +
 .../echarts-gl/src/chart/graphGL/GraphGLSeries.js  |   281 +
 .../echarts-gl/src/chart/graphGL/GraphGLView.js    |   731 +
 .../src/chart/graphGL/createGraphFromNodeEdge.js   |    58 +
 .../echarts-gl/src/chart/graphGL/forceAtlas2.glsl  |   244 +
 .../src/chart/graphGL/forceAtlas2.glsl.js          |     1 +
 .../src/chart/graphGL/forceAtlas2Worker.js         |   661 +
 .../echarts-gl/src/chart/graphGL/install.js        |   169 +
 zh/js/vendors/echarts-gl/src/chart/line3D.js       |     3 +
 .../echarts-gl/src/chart/line3D/Line3DSeries.js    |    37 +
 .../echarts-gl/src/chart/line3D/Line3DView.js      |   296 +
 .../vendors/echarts-gl/src/chart/line3D/install.js |    49 +
 zh/js/vendors/echarts-gl/src/chart/lines3D.js      |     3 +
 .../echarts-gl/src/chart/lines3D/Lines3DSeries.js  |    65 +
 .../echarts-gl/src/chart/lines3D/Lines3DView.js    |   188 +
 .../echarts-gl/src/chart/lines3D/TrailGeometry.js  |   164 +
 .../echarts-gl/src/chart/lines3D/TrailMesh.js      |   120 +
 .../echarts-gl/src/chart/lines3D/TrailMesh2.js     |   155 +
 .../echarts-gl/src/chart/lines3D/install.js        |    31 +
 .../echarts-gl/src/chart/lines3D/lines3DLayout.js  |   166 +
 .../echarts-gl/src/chart/lines3D/shader/trail.glsl |    69 +
 .../src/chart/lines3D/shader/trail.glsl.js         |     1 +
 .../src/chart/lines3D/shader/trail2.glsl           |   103 +
 .../src/chart/lines3D/shader/trail2.glsl.js        |     1 +
 zh/js/vendors/echarts-gl/src/chart/linesGL.js      |     3 +
 .../echarts-gl/src/chart/linesGL/LinesGLSeries.js  |   203 +
 .../echarts-gl/src/chart/linesGL/LinesGLView.js    |   202 +
 .../echarts-gl/src/chart/linesGL/install.js        |    10 +
 zh/js/vendors/echarts-gl/src/chart/map3D.js        |     3 +
 .../echarts-gl/src/chart/map3D/Map3DSeries.js      |   158 +
 .../echarts-gl/src/chart/map3D/Map3DView.js        |   111 +
 .../vendors/echarts-gl/src/chart/map3D/install.js  |    26 +
 zh/js/vendors/echarts-gl/src/chart/polygons3D.js   |     3 +
 .../src/chart/polygons3D/Polygons3DSeries.js       |   110 +
 .../src/chart/polygons3D/Polygons3DView.js         |    95 +
 .../echarts-gl/src/chart/polygons3D/install.js     |    10 +
 zh/js/vendors/echarts-gl/src/chart/scatter3D.js    |     3 +
 .../src/chart/scatter3D/Scatter3DSeries.js         |    79 +
 .../src/chart/scatter3D/Scatter3DView.js           |   134 +
 .../echarts-gl/src/chart/scatter3D/install.js      |    50 +
 zh/js/vendors/echarts-gl/src/chart/scatterGL.js    |     3 +
 .../src/chart/scatterGL/ScatterGLSeries.js         |    62 +
 .../src/chart/scatterGL/ScatterGLView.js           |   121 +
 .../echarts-gl/src/chart/scatterGL/install.js      |    58 +
 zh/js/vendors/echarts-gl/src/chart/surface.js      |     3 +
 .../echarts-gl/src/chart/surface/SurfaceSeries.js  |   204 +
 .../echarts-gl/src/chart/surface/SurfaceView.js    |   492 +
 .../echarts-gl/src/chart/surface/install.js        |    44 +
 .../src/component/common/Geo3DBuilder.js           |   772 +
 .../src/component/common/LabelsBuilder.js          |   180 +
 .../echarts-gl/src/component/common/SceneHelper.js |   183 +
 .../src/component/common/componentLightMixin.js    |    34 +
 .../component/common/componentPostEffectMixin.js   |    63 +
 .../src/component/common/componentShadingMixin.js  |    33 +
 .../component/common/componentViewControlMixin.js  |    78 +
 zh/js/vendors/echarts-gl/src/component/geo3D.js    |     3 +
 .../echarts-gl/src/component/geo3D/Geo3DModel.js   |   103 +
 .../echarts-gl/src/component/geo3D/Geo3DView.js    |    96 +
 .../echarts-gl/src/component/geo3D/install.js      |    26 +
 zh/js/vendors/echarts-gl/src/component/globe.js    |     3 +
 .../echarts-gl/src/component/globe/GlobeModel.js   |   208 +
 .../echarts-gl/src/component/globe/GlobeView.js    |   457 +
 .../echarts-gl/src/component/globe/atmosphere.glsl |    27 +
 .../src/component/globe/atmosphere.glsl.js         |     1 +
 .../echarts-gl/src/component/globe/install.js      |    34 +
 zh/js/vendors/echarts-gl/src/component/grid3D.js   |     3 +
 .../echarts-gl/src/component/grid3D/Axis3DModel.js |    23 +
 .../echarts-gl/src/component/grid3D/Grid3DAxis.js  |   223 +
 .../echarts-gl/src/component/grid3D/Grid3DFace.js  |   194 +
 .../echarts-gl/src/component/grid3D/Grid3DModel.js |   145 +
 .../echarts-gl/src/component/grid3D/Grid3DView.js  |   587 +
 .../src/component/grid3D/axis3DDefault.js          |    91 +
 .../src/component/grid3D/createAxis3DModel.js      |    73 +
 .../echarts-gl/src/component/grid3D/install.js     |    59 +
 zh/js/vendors/echarts-gl/src/component/mapbox3D.js |     3 +
 .../src/component/mapbox3D/Mapbox3DLayer.js        |    78 +
 .../src/component/mapbox3D/Mapbox3DModel.js        |    74 +
 .../src/component/mapbox3D/Mapbox3DView.js         |   147 +
 .../echarts-gl/src/component/mapbox3D/install.js   |    25 +
 .../vendors/echarts-gl/src/component/maptalks3D.js |     4 +
 .../src/component/maptalks3D/Maptalks3DLayer.js    |    89 +
 .../src/component/maptalks3D/Maptalks3DModel.js    |    75 +
 .../src/component/maptalks3D/Maptalks3DView.js     |   171 +
 .../echarts-gl/src/component/maptalks3D/install.js |    25 +
 zh/js/vendors/echarts-gl/src/coord/geo3D/Geo3D.js  |   184 +
 .../echarts-gl/src/coord/geo3D/geo3DModelMixin.js  |   138 +
 zh/js/vendors/echarts-gl/src/coord/geo3DCreator.js |   209 +
 zh/js/vendors/echarts-gl/src/coord/globe/Globe.js  |   102 +
 zh/js/vendors/echarts-gl/src/coord/globeCreator.js |   177 +
 .../vendors/echarts-gl/src/coord/grid3D/Axis3D.js  |    29 +
 .../echarts-gl/src/coord/grid3D/Cartesian3D.js     |    53 +
 .../vendors/echarts-gl/src/coord/grid3DCreator.js  |   189 +
 .../src/coord/mapServiceCommon/MapService3D.js     |   188 +
 .../mapServiceCommon/createMapService3DCreator.js  |   108 +
 .../echarts-gl/src/coord/mapbox3D/Mapbox3D.js      |    11 +
 .../echarts-gl/src/coord/mapbox3DCreator.js        |    10 +
 .../echarts-gl/src/coord/maptalks3D/Maptalks3D.js  |    14 +
 .../echarts-gl/src/coord/maptalks3DCreator.js      |    10 +
 zh/js/vendors/echarts-gl/src/core/LayerGL.js       |   678 +
 zh/js/vendors/echarts-gl/src/core/ViewGL.js        |   453 +
 zh/js/vendors/echarts-gl/src/echarts-gl.js         |   260 +
 zh/js/vendors/echarts-gl/src/effect/DOF.glsl       |   206 +
 zh/js/vendors/echarts-gl/src/effect/DOF.glsl.js    |     1 +
 zh/js/vendors/echarts-gl/src/effect/EdgePass.js    |    57 +
 .../echarts-gl/src/effect/EffectCompositor.js      |   540 +
 zh/js/vendors/echarts-gl/src/effect/NormalPass.js  |   207 +
 zh/js/vendors/echarts-gl/src/effect/SSAO.glsl      |   198 +
 zh/js/vendors/echarts-gl/src/effect/SSAO.glsl.js   |     1 +
 zh/js/vendors/echarts-gl/src/effect/SSAOPass.js    |   228 +
 zh/js/vendors/echarts-gl/src/effect/SSR.glsl       |   446 +
 zh/js/vendors/echarts-gl/src/effect/SSR.glsl.js    |     1 +
 zh/js/vendors/echarts-gl/src/effect/SSRPass.js     |   221 +
 .../echarts-gl/src/effect/TemporalSuperSampling.js |   166 +
 zh/js/vendors/echarts-gl/src/effect/composite.js   |   578 +
 .../echarts-gl/src/effect/compositeMobile.js       |   465 +
 zh/js/vendors/echarts-gl/src/effect/edge.glsl      |    68 +
 zh/js/vendors/echarts-gl/src/effect/edge.glsl.js   |     1 +
 zh/js/vendors/echarts-gl/src/effect/halton.js      |    18 +
 .../vendors/echarts-gl/src/effect/poissonKernel.js |    36 +
 zh/js/vendors/echarts-gl/src/export/all.js         |    20 +
 zh/js/vendors/echarts-gl/src/export/charts.js      |    12 +
 zh/js/vendors/echarts-gl/src/export/components.js  |     5 +
 .../echarts-gl/src/preprocessor/backwardCompat.js  |    62 +
 .../vendors/echarts-gl/src/util/EChartsSurface.js  |   177 +
 zh/js/vendors/echarts-gl/src/util/OrbitControl.js  |   835 +
 .../echarts-gl/src/util/ProgressiveQuickSort.js    |   129 +
 zh/js/vendors/echarts-gl/src/util/Roam2DControl.js |   197 +
 zh/js/vendors/echarts-gl/src/util/Triangulation.js |   618 +
 .../echarts-gl/src/util/ZRTextureAtlasSurface.js   |   366 +
 .../vendors/echarts-gl/src/util/animatableMixin.js |    93 +
 zh/js/vendors/echarts-gl/src/util/earcut.js        |   618 +
 zh/js/vendors/echarts-gl/src/util/format.js        |    42 +
 .../echarts-gl/src/util/geometry/Bars3DGeometry.js |   393 +
 .../echarts-gl/src/util/geometry/Lines2D.js        |   466 +
 .../echarts-gl/src/util/geometry/Lines3D.js        |   464 +
 .../vendors/echarts-gl/src/util/geometry/Quads.js  |   108 +
 .../echarts-gl/src/util/geometry/Sprites.js        |   138 +
 .../src/util/geometry/dynamicConvertMixin.js       |    39 +
 .../src/util/geometry/trianglesSortMixin.js        |   135 +
 .../src/util/geometry/verticesSortMixin.js         |   104 +
 zh/js/vendors/echarts-gl/src/util/graphicGL.js     |   685 +
 .../vendors/echarts-gl/src/util/mesh/LabelsMesh.js |    24 +
 zh/js/vendors/echarts-gl/src/util/retrieve.js      |    40 +
 .../vendors/echarts-gl/src/util/shader/color.glsl  |   111 +
 .../echarts-gl/src/util/shader/color.glsl.js       |     1 +
 .../vendors/echarts-gl/src/util/shader/common.glsl |   303 +
 .../echarts-gl/src/util/shader/common.glsl.js      |     1 +
 .../echarts-gl/src/util/shader/displayShadow.glsl  |    68 +
 .../src/util/shader/displayShadow.glsl.js          |     1 +
 .../echarts-gl/src/util/shader/hatching.glsl       |   174 +
 .../echarts-gl/src/util/shader/hatching.glsl.js    |     1 +
 .../vendors/echarts-gl/src/util/shader/labels.glsl |    57 +
 .../echarts-gl/src/util/shader/labels.glsl.js      |     1 +
 .../echarts-gl/src/util/shader/lambert.glsl        |   206 +
 .../echarts-gl/src/util/shader/lambert.glsl.js     |     1 +
 .../echarts-gl/src/util/shader/lines2D.glsl        |    81 +
 .../echarts-gl/src/util/shader/lines2D.glsl.js     |     1 +
 .../echarts-gl/src/util/shader/lines3D.glsl        |   160 +
 .../echarts-gl/src/util/shader/lines3D.glsl.js     |     1 +
 .../echarts-gl/src/util/shader/motionBlur.glsl     |    18 +
 .../echarts-gl/src/util/shader/motionBlur.glsl.js  |     1 +
 .../vendors/echarts-gl/src/util/shader/normal.glsl |    93 +
 .../echarts-gl/src/util/shader/normal.glsl.js      |     1 +
 .../echarts-gl/src/util/shader/realistic.glsl      |   296 +
 .../echarts-gl/src/util/shader/realistic.glsl.js   |     1 +
 .../vendors/echarts-gl/src/util/shader/shadow.glsl |    38 +
 .../echarts-gl/src/util/shader/shadow.glsl.js      |     1 +
 zh/js/vendors/echarts-gl/src/util/sprite.js        |   180 +
 zh/js/vendors/echarts-gl/src/util/sunCalc.js       |    85 +
 zh/js/vendors/echarts-gl/src/util/visual.js        |    22 +
 zh/js/vendors/echarts-gl/webpack.config.js         |    25 +
 .../dist/echarts-graph-modularity.js               |  1900 +
 .../dist/echarts-graph-modularity.js.map           |     1 +
 .../dist/echarts-graph-modularity.min.js           |     2 +
 .../dist/echarts-graph-modularity.min.js.map       |     1 +
 .../echarts-graph-modularity/example/example.html  |    93 +
 .../example/modularity.png                         |   Bin 0 -> 104501 bytes
 zh/js/vendors/echarts-graph-modularity/index.js    |     1 +
 zh/js/vendors/echarts-graph-modularity/src/main.js |    81 +
 .../echarts-graph-modularity/webpack.config.js     |    20 +
 zh/js/vendors/echarts-stat/README.zh-CN.md         |   596 +
 zh/js/vendors/echarts-stat/dist/ecStat.js          |  1998 +
 zh/js/vendors/echarts-stat/dist/ecStat.min.js      |     1 +
 zh/js/vendors/echarts-stat/img/exponential.png     |   Bin 0 -> 106510 bytes
 zh/js/vendors/echarts-stat/img/histogram.png       |   Bin 0 -> 89002 bytes
 zh/js/vendors/echarts-stat/img/linear.png          |   Bin 0 -> 128325 bytes
 zh/js/vendors/echarts-stat/img/logarithmic.png     |   Bin 0 -> 121104 bytes
 zh/js/vendors/echarts-stat/img/polynomial.png      |   Bin 0 -> 142671 bytes
 .../vendors/echarts-stat/img/static-clustering.png |   Bin 0 -> 145367 bytes
 zh/js/vendors/echarts-stat/index.js                |     1 +
 zh/js/vendors/echarts-stat/src/clustering.js       |   427 +
 zh/js/vendors/echarts-stat/src/ecStat.d.ts         |    57 +
 zh/js/vendors/echarts-stat/src/ecStat.js           |    18 +
 zh/js/vendors/echarts-stat/src/histogram.js        |   141 +
 zh/js/vendors/echarts-stat/src/regression.js       |   345 +
 zh/js/vendors/echarts-stat/src/statistics.js       |    16 +
 .../echarts-stat/src/statistics/deviation.js       |    16 +
 zh/js/vendors/echarts-stat/src/statistics/max.js   |    25 +
 zh/js/vendors/echarts-stat/src/statistics/mean.js  |    26 +
 .../vendors/echarts-stat/src/statistics/median.js  |    17 +
 zh/js/vendors/echarts-stat/src/statistics/min.js   |    25 +
 .../echarts-stat/src/statistics/quantile.js        |    31 +
 .../echarts-stat/src/statistics/sampleVariance.js  |    36 +
 zh/js/vendors/echarts-stat/src/statistics/sum.js   |    30 +
 .../echarts-stat/src/transform/clustering.js       |    88 +
 zh/js/vendors/echarts-stat/src/transform/helper.js |    79 +
 .../echarts-stat/src/transform/histogram.js        |    33 +
 .../echarts-stat/src/transform/regression.js       |    59 +
 zh/js/vendors/echarts-stat/src/util/array.js       |   150 +
 zh/js/vendors/echarts-stat/src/util/dataProcess.js |   107 +
 zh/js/vendors/echarts-stat/src/util/number.js      |    41 +
 zh/js/vendors/echarts-stat/src/util/object.js      |    27 +
 zh/js/vendors/echarts-stat/src/util/range.js       |    43 +
 zh/js/vendors/echarts-stat/src/util/tickStep.js    |    41 +
 .../test/data/clustering_dataset2.json             |    62 +
 .../echarts-stat/test/data/regression_data0.json   |   202 +
 .../echarts-stat/test/data/regression_test.json    |    18 +
 zh/js/vendors/echarts-stat/test/lib/config.js      |    23 +
 zh/js/vendors/echarts-stat/test/lib/esl.js         |     1 +
 zh/js/vendors/echarts-stat/test/lib/jquery.min.js  |     5 +
 .../test/standalone/clustering_animation.html      |   135 +
 .../test/standalone/clustering_bikmeans.html       |   105 +
 .../test/standalone/histogram_bar.html             |    71 +
 .../test/standalone/histogram_custom.html          |    94 +
 .../test/standalone/regression_exponential.html    |   125 +
 .../test/standalone/regression_linear.html         |    98 +
 .../standalone/regression_linearThroughOrigin.html |    90 +
 .../test/standalone/regression_logarithmic.html    |   241 +
 .../test/standalone/regression_polynomial.html     |   124 +
 .../test/transform/clustering_bikmeans.html        |   102 +
 .../echarts-stat/test/transform/histogram_bar.html |   151 +
 .../test/transform/regression_exponential.html     |   109 +
 .../test/transform/regression_linear.html          |    83 +
 .../transform/regression_linearThroughOrigin.html  |    91 +
 .../test/transform/regression_logarithmic.html     |   149 +
 .../test/transform/regression_polynomial.html      |   124 +
 zh/js/vendors/echarts-stat/webpack.config.js       |    21 +
 zh/js/vendors/echarts/KEYS                         |   419 +
 zh/js/vendors/echarts/LICENSE                      |   222 +
 zh/js/vendors/echarts/NOTICE                       |     5 +
 zh/js/vendors/echarts/asset/logo.png               |   Bin 0 -> 7323 bytes
 zh/js/vendors/echarts/charts.d.ts                  |    20 +
 zh/js/vendors/echarts/charts.js                    |    27 +
 zh/js/vendors/echarts/components.d.ts              |    20 +
 zh/js/vendors/echarts/components.js                |    20 +
 zh/js/vendors/echarts/core.d.ts                    |    20 +
 zh/js/vendors/echarts/core.js                      |    20 +
 zh/js/vendors/echarts/dist/echarts.common.js       | 56711 ++++++++++++
 zh/js/vendors/echarts/dist/echarts.common.js.map   |     1 +
 zh/js/vendors/echarts/dist/echarts.common.min.js   |    45 +
 zh/js/vendors/echarts/dist/echarts.esm.js          | 85886 ++++++++++++++++++
 zh/js/vendors/echarts/dist/echarts.esm.js.map      |     1 +
 zh/js/vendors/echarts/dist/echarts.esm.min.js      |    45 +
 zh/js/vendors/echarts/dist/echarts.esm.min.mjs     |    45 +
 zh/js/vendors/echarts/dist/echarts.esm.mjs         | 85886 ++++++++++++++++++
 zh/js/vendors/echarts/dist/echarts.esm.mjs.map     |     1 +
 zh/js/vendors/echarts/dist/echarts.js              | 85952 +++++++++++++++++++
 zh/js/vendors/echarts/dist/echarts.js.map          |     1 +
 zh/js/vendors/echarts/dist/echarts.min.js          |    45 +
 zh/js/vendors/echarts/dist/echarts.simple.js       | 41512 +++++++++
 zh/js/vendors/echarts/dist/echarts.simple.js.map   |     1 +
 zh/js/vendors/echarts/dist/echarts.simple.min.js   |    45 +
 zh/js/vendors/echarts/dist/extension/bmap.js       |   368 +
 zh/js/vendors/echarts/dist/extension/bmap.js.map   |     1 +
 zh/js/vendors/echarts/dist/extension/bmap.min.js   |    22 +
 zh/js/vendors/echarts/dist/extension/dataTool.js   |   402 +
 .../vendors/echarts/dist/extension/dataTool.js.map |     1 +
 .../vendors/echarts/dist/extension/dataTool.min.js |    22 +
 .../vendors/echarts/extension/bmap/BMapCoordSys.js |   235 +
 zh/js/vendors/echarts/extension/bmap/BMapModel.js  |    74 +
 zh/js/vendors/echarts/extension/bmap/BMapView.js   |   146 +
 zh/js/vendors/echarts/extension/bmap/bmap.js       |    65 +
 zh/js/vendors/echarts/extension/dataTool/gexf.js   |   202 +
 zh/js/vendors/echarts/extension/dataTool/index.js  |    62 +
 .../extension/dataTool/prepareBoxplotData.js       |   116 +
 zh/js/vendors/echarts/features.d.ts                |    20 +
 zh/js/vendors/echarts/features.js                  |    20 +
 zh/js/vendors/echarts/i18n/langAR-obj.js           |   178 +
 zh/js/vendors/echarts/i18n/langAR.js               |   174 +
 zh/js/vendors/echarts/i18n/langCS-obj.js           |   175 +
 zh/js/vendors/echarts/i18n/langCS.js               |   171 +
 zh/js/vendors/echarts/i18n/langDE-obj.js           |   175 +
 zh/js/vendors/echarts/i18n/langDE.js               |   171 +
 zh/js/vendors/echarts/i18n/langEN-obj.js           |   175 +
 zh/js/vendors/echarts/i18n/langEN.js               |   171 +
 zh/js/vendors/echarts/i18n/langES-obj.js           |   171 +
 zh/js/vendors/echarts/i18n/langES.js               |   167 +
 zh/js/vendors/echarts/i18n/langFA-obj.js           |   175 +
 zh/js/vendors/echarts/i18n/langFA.js               |   171 +
 zh/js/vendors/echarts/i18n/langFI-obj.js           |   171 +
 zh/js/vendors/echarts/i18n/langFI.js               |   167 +
 zh/js/vendors/echarts/i18n/langFR-obj.js           |   175 +
 zh/js/vendors/echarts/i18n/langFR.js               |   171 +
 zh/js/vendors/echarts/i18n/langHU-obj.js           |   175 +
 zh/js/vendors/echarts/i18n/langHU.js               |   171 +
 zh/js/vendors/echarts/i18n/langIT-obj.js           |   175 +
 zh/js/vendors/echarts/i18n/langIT.js               |   171 +
 zh/js/vendors/echarts/i18n/langJA-obj.js           |   175 +
 zh/js/vendors/echarts/i18n/langJA.js               |   171 +
 zh/js/vendors/echarts/i18n/langKO-obj.js           |   175 +
 zh/js/vendors/echarts/i18n/langKO.js               |   171 +
 zh/js/vendors/echarts/i18n/langNL-obj.js           |   175 +
 zh/js/vendors/echarts/i18n/langNL.js               |   171 +
 zh/js/vendors/echarts/i18n/langPL-obj.js           |   175 +
 zh/js/vendors/echarts/i18n/langPL.js               |   171 +
 zh/js/vendors/echarts/i18n/langPT-br-obj.js        |   176 +
 zh/js/vendors/echarts/i18n/langPT-br.js            |   172 +
 zh/js/vendors/echarts/i18n/langRO-obj.js           |   175 +
 zh/js/vendors/echarts/i18n/langRO.js               |   171 +
 zh/js/vendors/echarts/i18n/langRU-obj.js           |   176 +
 zh/js/vendors/echarts/i18n/langRU.js               |   172 +
 zh/js/vendors/echarts/i18n/langSI-obj.js           |   175 +
 zh/js/vendors/echarts/i18n/langSI.js               |   171 +
 zh/js/vendors/echarts/i18n/langSV-obj.js           |   174 +
 zh/js/vendors/echarts/i18n/langSV.js               |   170 +
 zh/js/vendors/echarts/i18n/langTH-obj.js           |   171 +
 zh/js/vendors/echarts/i18n/langTH.js               |   167 +
 zh/js/vendors/echarts/i18n/langTR-obj.js           |   175 +
 zh/js/vendors/echarts/i18n/langTR.js               |   171 +
 zh/js/vendors/echarts/i18n/langUK-obj.js           |   176 +
 zh/js/vendors/echarts/i18n/langUK.js               |   172 +
 zh/js/vendors/echarts/i18n/langVI-obj.js           |   200 +
 zh/js/vendors/echarts/i18n/langVI.js               |   196 +
 zh/js/vendors/echarts/i18n/langZH-obj.js           |   171 +
 zh/js/vendors/echarts/i18n/langZH.js               |   167 +
 zh/js/vendors/echarts/index.blank.js               |    44 +
 zh/js/vendors/echarts/index.common.js              |    68 +
 zh/js/vendors/echarts/index.d.ts                   |    23 +
 zh/js/vendors/echarts/index.js                     |   250 +
 zh/js/vendors/echarts/index.simple.js              |    55 +
 zh/js/vendors/echarts/lib/action/roamHelper.js     |    80 +
 .../echarts/lib/animation/basicTransition.js       |   243 +
 .../animation/customGraphicKeyframeAnimation.js    |   143 +
 .../lib/animation/customGraphicTransition.js       |   480 +
 .../echarts/lib/animation/morphTransitionHelper.js |   203 +
 .../echarts/lib/animation/universalTransition.js   |   649 +
 zh/js/vendors/echarts/lib/chart/bar.js             |    46 +
 zh/js/vendors/echarts/lib/chart/bar/BarSeries.js   |   112 +
 zh/js/vendors/echarts/lib/chart/bar/BarView.js     |   894 +
 .../vendors/echarts/lib/chart/bar/BaseBarSeries.js |   159 +
 .../echarts/lib/chart/bar/PictorialBarSeries.js    |    95 +
 .../echarts/lib/chart/bar/PictorialBarView.js      |   632 +
 zh/js/vendors/echarts/lib/chart/bar/install.js     |    81 +
 .../echarts/lib/chart/bar/installPictorialBar.js   |    54 +
 zh/js/vendors/echarts/lib/chart/boxplot.js         |    46 +
 .../echarts/lib/chart/boxplot/BoxplotSeries.js     |   108 +
 .../echarts/lib/chart/boxplot/BoxplotView.js       |   172 +
 .../echarts/lib/chart/boxplot/boxplotLayout.js     |   181 +
 .../echarts/lib/chart/boxplot/boxplotTransform.js  |    66 +
 zh/js/vendors/echarts/lib/chart/boxplot/install.js |    53 +
 .../lib/chart/boxplot/prepareBoxplotData.js        |    96 +
 zh/js/vendors/echarts/lib/chart/candlestick.js     |    46 +
 .../lib/chart/candlestick/CandlestickSeries.js     |   119 +
 .../lib/chart/candlestick/CandlestickView.js       |   341 +
 .../lib/chart/candlestick/candlestickLayout.js     |   204 +
 .../lib/chart/candlestick/candlestickVisual.js     |    84 +
 .../echarts/lib/chart/candlestick/install.js       |    55 +
 .../echarts/lib/chart/candlestick/preprocessor.js  |    55 +
 zh/js/vendors/echarts/lib/chart/custom.js          |    46 +
 .../echarts/lib/chart/custom/CustomSeries.js       |   105 +
 .../vendors/echarts/lib/chart/custom/CustomView.js |   923 +
 zh/js/vendors/echarts/lib/chart/custom/install.js  |    49 +
 zh/js/vendors/echarts/lib/chart/effectScatter.js   |    46 +
 .../lib/chart/effectScatter/EffectScatterSeries.js |   104 +
 .../lib/chart/effectScatter/EffectScatterView.js   |    99 +
 .../echarts/lib/chart/effectScatter/install.js     |    51 +
 zh/js/vendors/echarts/lib/chart/funnel.js          |    46 +
 .../echarts/lib/chart/funnel/FunnelSeries.js       |   144 +
 .../vendors/echarts/lib/chart/funnel/FunnelView.js |   198 +
 .../echarts/lib/chart/funnel/funnelLayout.js       |   344 +
 zh/js/vendors/echarts/lib/chart/funnel/install.js  |    53 +
 zh/js/vendors/echarts/lib/chart/gauge.js           |    46 +
 .../vendors/echarts/lib/chart/gauge/GaugeSeries.js |   185 +
 zh/js/vendors/echarts/lib/chart/gauge/GaugeView.js |   560 +
 .../vendors/echarts/lib/chart/gauge/PointerPath.js |    83 +
 zh/js/vendors/echarts/lib/chart/gauge/install.js   |    49 +
 zh/js/vendors/echarts/lib/chart/graph.js           |    46 +
 .../vendors/echarts/lib/chart/graph/GraphSeries.js |   275 +
 zh/js/vendors/echarts/lib/chart/graph/GraphView.js |   266 +
 .../vendors/echarts/lib/chart/graph/adjustEdge.js  |   173 +
 .../echarts/lib/chart/graph/categoryFilter.js      |    74 +
 .../echarts/lib/chart/graph/categoryVisual.js      |    90 +
 .../echarts/lib/chart/graph/circularLayout.js      |    51 +
 .../lib/chart/graph/circularLayoutHelper.js        |   191 +
 .../vendors/echarts/lib/chart/graph/createView.js  |   103 +
 .../vendors/echarts/lib/chart/graph/edgeVisual.js  |    93 +
 .../vendors/echarts/lib/chart/graph/forceHelper.js |   185 +
 .../vendors/echarts/lib/chart/graph/forceLayout.js |   160 +
 .../vendors/echarts/lib/chart/graph/graphHelper.js |    62 +
 zh/js/vendors/echarts/lib/chart/graph/install.js   |    97 +
 .../echarts/lib/chart/graph/simpleLayout.js        |    78 +
 .../echarts/lib/chart/graph/simpleLayoutHelper.js  |    70 +
 zh/js/vendors/echarts/lib/chart/heatmap.js         |    46 +
 .../echarts/lib/chart/heatmap/HeatmapLayer.js      |   166 +
 .../echarts/lib/chart/heatmap/HeatmapSeries.js     |    89 +
 .../echarts/lib/chart/heatmap/HeatmapView.js       |   310 +
 zh/js/vendors/echarts/lib/chart/heatmap/install.js |    49 +
 .../vendors/echarts/lib/chart/helper/EffectLine.js |   207 +
 .../echarts/lib/chart/helper/EffectPolyline.js     |   134 +
 .../echarts/lib/chart/helper/EffectSymbol.js       |   207 +
 .../echarts/lib/chart/helper/LargeLineDraw.js      |   302 +
 .../echarts/lib/chart/helper/LargeSymbolDraw.js    |   309 +
 zh/js/vendors/echarts/lib/chart/helper/Line.js     |   417 +
 zh/js/vendors/echarts/lib/chart/helper/LineDraw.js |   167 +
 zh/js/vendors/echarts/lib/chart/helper/LinePath.js |   111 +
 zh/js/vendors/echarts/lib/chart/helper/Polyline.js |   107 +
 zh/js/vendors/echarts/lib/chart/helper/Symbol.js   |   333 +
 .../vendors/echarts/lib/chart/helper/SymbolDraw.js |   216 +
 .../lib/chart/helper/createClipPathFromCoordSys.js |   145 +
 .../lib/chart/helper/createGraphFromNodeEdge.js    |   114 +
 .../lib/chart/helper/createRenderPlanner.js        |    62 +
 .../echarts/lib/chart/helper/createSeriesData.js   |   162 +
 .../lib/chart/helper/createSeriesDataSimply.js     |    68 +
 .../lib/chart/helper/enableAriaDecalForTree.js     |    58 +
 .../echarts/lib/chart/helper/labelHelper.js        |    77 +
 .../lib/chart/helper/multipleGraphEdgeHelper.js    |   226 +
 .../echarts/lib/chart/helper/sectorHelper.js       |    62 +
 .../vendors/echarts/lib/chart/helper/treeHelper.js |    92 +
 .../echarts/lib/chart/helper/whiskerBoxCommon.js   |   145 +
 zh/js/vendors/echarts/lib/chart/line.js            |    46 +
 zh/js/vendors/echarts/lib/chart/line/LineSeries.js |   152 +
 zh/js/vendors/echarts/lib/chart/line/LineView.js   |  1119 +
 zh/js/vendors/echarts/lib/chart/line/helper.js     |   122 +
 zh/js/vendors/echarts/lib/chart/line/install.js    |    69 +
 .../echarts/lib/chart/line/lineAnimationDiff.js    |   165 +
 zh/js/vendors/echarts/lib/chart/line/poly.js       |   353 +
 zh/js/vendors/echarts/lib/chart/lines.js           |    46 +
 .../vendors/echarts/lib/chart/lines/LinesSeries.js |   309 +
 zh/js/vendors/echarts/lib/chart/lines/LinesView.js |   184 +
 zh/js/vendors/echarts/lib/chart/lines/install.js   |    53 +
 .../vendors/echarts/lib/chart/lines/linesLayout.js |   113 +
 .../vendors/echarts/lib/chart/lines/linesVisual.js |    74 +
 zh/js/vendors/echarts/lib/chart/map.js             |    46 +
 zh/js/vendors/echarts/lib/chart/map/MapSeries.js   |   257 +
 zh/js/vendors/echarts/lib/chart/map/MapView.js     |   177 +
 zh/js/vendors/echarts/lib/chart/map/install.js     |    58 +
 .../echarts/lib/chart/map/mapDataStatistic.js      |   104 +
 .../echarts/lib/chart/map/mapSymbolLayout.js       |    86 +
 zh/js/vendors/echarts/lib/chart/parallel.js        |    46 +
 .../echarts/lib/chart/parallel/ParallelSeries.js   |   127 +
 .../echarts/lib/chart/parallel/ParallelView.js     |   220 +
 .../vendors/echarts/lib/chart/parallel/install.js  |    54 +
 .../echarts/lib/chart/parallel/parallelVisual.js   |    69 +
 zh/js/vendors/echarts/lib/chart/pictorialBar.js    |    46 +
 zh/js/vendors/echarts/lib/chart/pie.js             |    46 +
 zh/js/vendors/echarts/lib/chart/pie/PieSeries.js   |   215 +
 zh/js/vendors/echarts/lib/chart/pie/PieView.js     |   283 +
 zh/js/vendors/echarts/lib/chart/pie/install.js     |    58 +
 zh/js/vendors/echarts/lib/chart/pie/labelLayout.js |   474 +
 zh/js/vendors/echarts/lib/chart/pie/pieLayout.js   |   238 +
 zh/js/vendors/echarts/lib/chart/radar.js           |    46 +
 .../vendors/echarts/lib/chart/radar/RadarSeries.js |   133 +
 zh/js/vendors/echarts/lib/chart/radar/RadarView.js |   225 +
 .../echarts/lib/chart/radar/backwardCompat.js      |    75 +
 zh/js/vendors/echarts/lib/chart/radar/install.js   |    58 +
 .../vendors/echarts/lib/chart/radar/radarLayout.js |    82 +
 zh/js/vendors/echarts/lib/chart/sankey.js          |    46 +
 .../echarts/lib/chart/sankey/SankeySeries.js       |   213 +
 .../vendors/echarts/lib/chart/sankey/SankeyView.js |   326 +
 zh/js/vendors/echarts/lib/chart/sankey/install.js  |    67 +
 .../echarts/lib/chart/sankey/sankeyLayout.js       |   489 +
 .../echarts/lib/chart/sankey/sankeyVisual.js       |    92 +
 zh/js/vendors/echarts/lib/chart/scatter.js         |    46 +
 .../echarts/lib/chart/scatter/ScatterSeries.js     |   118 +
 .../echarts/lib/chart/scatter/ScatterView.js       |   133 +
 zh/js/vendors/echarts/lib/chart/scatter/install.js |    55 +
 zh/js/vendors/echarts/lib/chart/sunburst.js        |    46 +
 .../echarts/lib/chart/sunburst/SunburstPiece.js    |   230 +
 .../echarts/lib/chart/sunburst/SunburstSeries.js   |   206 +
 .../echarts/lib/chart/sunburst/SunburstView.js     |   206 +
 .../vendors/echarts/lib/chart/sunburst/install.js  |    58 +
 .../echarts/lib/chart/sunburst/sunburstAction.js   |   108 +
 .../echarts/lib/chart/sunburst/sunburstLayout.js   |   216 +
 .../echarts/lib/chart/sunburst/sunburstVisual.js   |    75 +
 zh/js/vendors/echarts/lib/chart/themeRiver.js      |    46 +
 .../lib/chart/themeRiver/ThemeRiverSeries.js       |   260 +
 .../echarts/lib/chart/themeRiver/ThemeRiverView.js |   185 +
 .../echarts/lib/chart/themeRiver/install.js        |    35 +
 .../lib/chart/themeRiver/themeRiverLayout.js       |   157 +
 zh/js/vendors/echarts/lib/chart/tree.js            |    46 +
 zh/js/vendors/echarts/lib/chart/tree/TreeSeries.js |   187 +
 zh/js/vendors/echarts/lib/chart/tree/TreeView.js   |   622 +
 zh/js/vendors/echarts/lib/chart/tree/install.js    |    55 +
 .../vendors/echarts/lib/chart/tree/layoutHelper.js |   288 +
 .../echarts/lib/chart/tree/traversalHelper.js      |    87 +
 zh/js/vendors/echarts/lib/chart/tree/treeAction.js |    82 +
 zh/js/vendors/echarts/lib/chart/tree/treeLayout.js |   139 +
 zh/js/vendors/echarts/lib/chart/tree/treeVisual.js |    57 +
 zh/js/vendors/echarts/lib/chart/treemap.js         |    46 +
 .../echarts/lib/chart/treemap/Breadcrumb.js        |   187 +
 .../echarts/lib/chart/treemap/TreemapSeries.js     |   364 +
 .../echarts/lib/chart/treemap/TreemapView.js       |   884 +
 zh/js/vendors/echarts/lib/chart/treemap/install.js |    55 +
 .../echarts/lib/chart/treemap/treemapAction.js     |    75 +
 .../echarts/lib/chart/treemap/treemapLayout.js     |   498 +
 .../echarts/lib/chart/treemap/treemapVisual.js     |   194 +
 zh/js/vendors/echarts/lib/component/aria.js        |    46 +
 .../vendors/echarts/lib/component/aria/install.js  |    49 +
 .../echarts/lib/component/aria/preprocessor.js     |    61 +
 .../echarts/lib/component/axis/AngleAxisView.js    |   323 +
 .../echarts/lib/component/axis/AxisBuilder.js      |   585 +
 .../vendors/echarts/lib/component/axis/AxisView.js |   119 +
 .../lib/component/axis/CartesianAxisView.js        |   237 +
 .../echarts/lib/component/axis/ParallelAxisView.js |   174 +
 .../echarts/lib/component/axis/RadiusAxisView.js   |   206 +
 .../echarts/lib/component/axis/SingleAxisView.js   |   146 +
 .../echarts/lib/component/axis/axisSplitHelper.js  |   124 +
 .../lib/component/axis/parallelAxisAction.js       |    69 +
 zh/js/vendors/echarts/lib/component/axisPointer.js |    46 +
 .../lib/component/axisPointer/AxisPointer.js       |    44 +
 .../lib/component/axisPointer/AxisPointerModel.js  |   112 +
 .../lib/component/axisPointer/AxisPointerView.js   |    80 +
 .../lib/component/axisPointer/BaseAxisPointer.js   |   392 +
 .../component/axisPointer/CartesianAxisPointer.js  |   148 +
 .../lib/component/axisPointer/PolarAxisPointer.js  |   144 +
 .../lib/component/axisPointer/SingleAxisPointer.js |   145 +
 .../lib/component/axisPointer/axisTrigger.js       |   378 +
 .../component/axisPointer/findPointFromSeries.js   |    98 +
 .../lib/component/axisPointer/globalListener.js    |   138 +
 .../echarts/lib/component/axisPointer/install.js   |    84 +
 .../lib/component/axisPointer/modelHelper.js       |   295 +
 .../lib/component/axisPointer/viewHelper.js        |   195 +
 zh/js/vendors/echarts/lib/component/brush.js       |    46 +
 .../echarts/lib/component/brush/BrushModel.js      |   136 +
 .../echarts/lib/component/brush/BrushView.js       |   111 +
 .../vendors/echarts/lib/component/brush/install.js |   101 +
 .../echarts/lib/component/brush/preprocessor.js    |    87 +
 .../echarts/lib/component/brush/selector.js        |   115 +
 .../echarts/lib/component/brush/visualEncoding.js  |   257 +
 zh/js/vendors/echarts/lib/component/calendar.js    |    46 +
 .../echarts/lib/component/calendar/CalendarView.js |   395 +
 .../echarts/lib/component/calendar/install.js      |    51 +
 zh/js/vendors/echarts/lib/component/dataZoom.js    |    46 +
 .../echarts/lib/component/dataZoom/AxisProxy.js    |   341 +
 .../lib/component/dataZoom/DataZoomModel.js        |   429 +
 .../echarts/lib/component/dataZoom/DataZoomView.js |    61 +
 .../lib/component/dataZoom/InsideZoomModel.js      |    65 +
 .../lib/component/dataZoom/InsideZoomView.js       |   198 +
 .../lib/component/dataZoom/SelectZoomModel.js      |    56 +
 .../lib/component/dataZoom/SelectZoomView.js       |    56 +
 .../lib/component/dataZoom/SliderZoomModel.js      |   129 +
 .../lib/component/dataZoom/SliderZoomView.js       |   822 +
 .../lib/component/dataZoom/dataZoomAction.js       |    58 +
 .../lib/component/dataZoom/dataZoomProcessor.js    |   130 +
 .../echarts/lib/component/dataZoom/helper.js       |   172 +
 .../echarts/lib/component/dataZoom/history.js      |   116 +
 .../echarts/lib/component/dataZoom/install.js      |    52 +
 .../lib/component/dataZoom/installCommon.js        |    58 +
 .../component/dataZoom/installDataZoomInside.js    |    53 +
 .../component/dataZoom/installDataZoomSelect.js    |    51 +
 .../component/dataZoom/installDataZoomSlider.js    |    51 +
 .../echarts/lib/component/dataZoom/roams.js        |   227 +
 .../echarts/lib/component/dataZoomInside.js        |    46 +
 .../echarts/lib/component/dataZoomSelect.js        |    50 +
 .../echarts/lib/component/dataZoomSlider.js        |    46 +
 zh/js/vendors/echarts/lib/component/dataset.js     |    46 +
 .../echarts/lib/component/dataset/install.js       |    99 +
 zh/js/vendors/echarts/lib/component/geo.js         |    46 +
 zh/js/vendors/echarts/lib/component/geo/GeoView.js |   110 +
 zh/js/vendors/echarts/lib/component/geo/install.js |   141 +
 zh/js/vendors/echarts/lib/component/graphic.js     |    46 +
 .../echarts/lib/component/graphic/GraphicModel.js  |   246 +
 .../echarts/lib/component/graphic/GraphicView.js   |   391 +
 .../echarts/lib/component/graphic/install.js       |    74 +
 zh/js/vendors/echarts/lib/component/grid.js        |    46 +
 .../vendors/echarts/lib/component/grid/install.js  |    50 +
 .../echarts/lib/component/grid/installSimple.js    |    96 +
 zh/js/vendors/echarts/lib/component/gridSimple.js  |    46 +
 .../lib/component/helper/BrushController.js        |   745 +
 .../lib/component/helper/BrushTargetManager.js     |   343 +
 .../echarts/lib/component/helper/MapDraw.js        |   678 +
 .../echarts/lib/component/helper/RoamController.js |   245 +
 .../echarts/lib/component/helper/brushHelper.js    |    71 +
 .../echarts/lib/component/helper/cursorHelper.js   |    58 +
 .../lib/component/helper/interactionMutex.js       |    77 +
 .../echarts/lib/component/helper/listComponent.js  |    87 +
 .../echarts/lib/component/helper/roamHelper.js     |    74 +
 .../echarts/lib/component/helper/sliderMove.js     |   114 +
 zh/js/vendors/echarts/lib/component/legend.js      |    47 +
 .../echarts/lib/component/legend/LegendModel.js    |   317 +
 .../echarts/lib/component/legend/LegendView.js     |   525 +
 .../lib/component/legend/ScrollableLegendModel.js  |   105 +
 .../lib/component/legend/ScrollableLegendView.js   |   401 +
 .../echarts/lib/component/legend/install.js        |    50 +
 .../lib/component/legend/installLegendPlain.js     |    56 +
 .../lib/component/legend/installLegendScroll.js    |    54 +
 .../echarts/lib/component/legend/legendAction.js   |   126 +
 .../echarts/lib/component/legend/legendFilter.js   |    60 +
 .../lib/component/legend/scrollableLegendAction.js |    61 +
 zh/js/vendors/echarts/lib/component/legendPlain.js |    47 +
 .../vendors/echarts/lib/component/legendScroll.js  |    49 +
 zh/js/vendors/echarts/lib/component/markArea.js    |    46 +
 zh/js/vendors/echarts/lib/component/markLine.js    |    46 +
 zh/js/vendors/echarts/lib/component/markPoint.js   |    47 +
 .../echarts/lib/component/marker/MarkAreaModel.js  |    85 +
 .../echarts/lib/component/marker/MarkAreaView.js   |   362 +
 .../echarts/lib/component/marker/MarkLineModel.js  |    88 +
 .../echarts/lib/component/marker/MarkLineView.js   |   363 +
 .../echarts/lib/component/marker/MarkPointModel.js |    82 +
 .../echarts/lib/component/marker/MarkPointView.js  |   191 +
 .../echarts/lib/component/marker/MarkerModel.js    |   176 +
 .../echarts/lib/component/marker/MarkerView.js     |    95 +
 .../lib/component/marker/checkMarkerInSeries.js    |    56 +
 .../lib/component/marker/installMarkArea.js        |    56 +
 .../lib/component/marker/installMarkLine.js        |    38 +
 .../lib/component/marker/installMarkPoint.js       |    38 +
 .../echarts/lib/component/marker/markerHelper.js   |   188 +
 zh/js/vendors/echarts/lib/component/parallel.js    |    46 +
 .../echarts/lib/component/parallel/ParallelView.js |   136 +
 .../echarts/lib/component/parallel/install.js      |    73 +
 zh/js/vendors/echarts/lib/component/polar.js       |    46 +
 .../vendors/echarts/lib/component/polar/install.js |    91 +
 zh/js/vendors/echarts/lib/component/radar.js       |    46 +
 .../echarts/lib/component/radar/RadarView.js       |   203 +
 .../vendors/echarts/lib/component/radar/install.js |    63 +
 zh/js/vendors/echarts/lib/component/singleAxis.js  |    46 +
 .../echarts/lib/component/singleAxis/install.js    |    73 +
 zh/js/vendors/echarts/lib/component/timeline.js    |    49 +
 .../lib/component/timeline/SliderTimelineModel.js  |   158 +
 .../lib/component/timeline/SliderTimelineView.js   |   653 +
 .../echarts/lib/component/timeline/TimelineAxis.js |    71 +
 .../lib/component/timeline/TimelineModel.js        |   188 +
 .../echarts/lib/component/timeline/TimelineView.js |    56 +
 .../echarts/lib/component/timeline/install.js      |    39 +
 .../echarts/lib/component/timeline/preprocessor.js |   113 +
 .../lib/component/timeline/timelineAction.js       |    82 +
 zh/js/vendors/echarts/lib/component/title.js       |    46 +
 .../vendors/echarts/lib/component/title/install.js |   225 +
 zh/js/vendors/echarts/lib/component/toolbox.js     |    46 +
 .../echarts/lib/component/toolbox/ToolboxModel.js  |   108 +
 .../echarts/lib/component/toolbox/ToolboxView.js   |   298 +
 .../echarts/lib/component/toolbox/feature/Brush.js |   133 +
 .../lib/component/toolbox/feature/DataView.js      |   448 +
 .../lib/component/toolbox/feature/DataZoom.js      |   251 +
 .../lib/component/toolbox/feature/MagicType.js     |   209 +
 .../lib/component/toolbox/feature/Restore.js       |    79 +
 .../lib/component/toolbox/feature/SaveAsImage.js   |   145 +
 .../lib/component/toolbox/featureManager.js        |    37 +
 .../echarts/lib/component/toolbox/install.js       |    64 +
 zh/js/vendors/echarts/lib/component/tooltip.js     |    46 +
 .../lib/component/tooltip/TooltipHTMLContent.js    |   400 +
 .../echarts/lib/component/tooltip/TooltipModel.js  |   124 +
 .../lib/component/tooltip/TooltipRichContent.js    |   209 +
 .../echarts/lib/component/tooltip/TooltipView.js   |   852 +
 .../echarts/lib/component/tooltip/helper.js        |    78 +
 .../echarts/lib/component/tooltip/install.js       |    71 +
 .../lib/component/tooltip/seriesFormatTooltip.js   |   142 +
 .../echarts/lib/component/tooltip/tooltipMarkup.js |   334 +
 zh/js/vendors/echarts/lib/component/transform.js   |    46 +
 .../lib/component/transform/filterTransform.js     |    96 +
 .../echarts/lib/component/transform/install.js     |    49 +
 .../lib/component/transform/sortTransform.js       |   155 +
 zh/js/vendors/echarts/lib/component/visualMap.js   |    46 +
 .../lib/component/visualMap/ContinuousModel.js     |   255 +
 .../lib/component/visualMap/ContinuousView.js      |   695 +
 .../lib/component/visualMap/PiecewiseModel.js      |   438 +
 .../lib/component/visualMap/PiecewiseView.js       |   217 +
 .../lib/component/visualMap/VisualMapModel.js      |   412 +
 .../lib/component/visualMap/VisualMapView.js       |   154 +
 .../echarts/lib/component/visualMap/helper.js      |    90 +
 .../echarts/lib/component/visualMap/install.js     |    52 +
 .../lib/component/visualMap/installCommon.js       |    63 +
 .../visualMap/installVisualMapContinuous.js        |    51 +
 .../visualMap/installVisualMapPiecewise.js         |    51 +
 .../lib/component/visualMap/preprocessor.js        |    78 +
 .../lib/component/visualMap/typeDefaulter.js       |    48 +
 .../lib/component/visualMap/visualEncoding.js      |   107 +
 .../lib/component/visualMap/visualMapAction.js     |    57 +
 .../echarts/lib/component/visualMapContinuous.js   |    46 +
 .../echarts/lib/component/visualMapPiecewise.js    |    46 +
 zh/js/vendors/echarts/lib/coord/Axis.js            |   281 +
 zh/js/vendors/echarts/lib/coord/AxisBaseModel.js   |    44 +
 .../vendors/echarts/lib/coord/CoordinateSystem.js  |    46 +
 zh/js/vendors/echarts/lib/coord/View.js            |   250 +
 zh/js/vendors/echarts/lib/coord/axisAlignTicks.js  |   137 +
 zh/js/vendors/echarts/lib/coord/axisCommonTypes.js |    49 +
 zh/js/vendors/echarts/lib/coord/axisDefault.js     |   204 +
 zh/js/vendors/echarts/lib/coord/axisHelper.js      |   348 +
 .../echarts/lib/coord/axisModelCommonMixin.js      |    60 +
 .../vendors/echarts/lib/coord/axisModelCreator.js  |   110 +
 .../echarts/lib/coord/axisTickLabelBuilder.js      |   367 +
 .../vendors/echarts/lib/coord/calendar/Calendar.js |   374 +
 .../echarts/lib/coord/calendar/CalendarModel.js    |   159 +
 .../echarts/lib/coord/calendar/prepareCustom.js    |    69 +
 .../vendors/echarts/lib/coord/cartesian/Axis2D.js  |    94 +
 .../echarts/lib/coord/cartesian/AxisModel.js       |    62 +
 .../echarts/lib/coord/cartesian/Cartesian.js       |    74 +
 .../echarts/lib/coord/cartesian/Cartesian2D.js     |   169 +
 zh/js/vendors/echarts/lib/coord/cartesian/Grid.js  |   493 +
 .../echarts/lib/coord/cartesian/GridModel.js       |    72 +
 .../lib/coord/cartesian/cartesianAxisHelper.js     |   119 +
 .../coord/cartesian/defaultAxisExtentFromData.js   |   223 +
 .../echarts/lib/coord/cartesian/prepareCustom.js   |    74 +
 zh/js/vendors/echarts/lib/coord/geo/Geo.js         |   209 +
 .../echarts/lib/coord/geo/GeoJSONResource.js       |   144 +
 zh/js/vendors/echarts/lib/coord/geo/GeoModel.js    |   210 +
 .../echarts/lib/coord/geo/GeoSVGResource.js        |   333 +
 zh/js/vendors/echarts/lib/coord/geo/Region.js      |   286 +
 .../echarts/lib/coord/geo/fix/diaoyuIsland.js      |    56 +
 .../vendors/echarts/lib/coord/geo/fix/geoCoord.js  |    57 +
 zh/js/vendors/echarts/lib/coord/geo/fix/nanhai.js  |    73 +
 .../vendors/echarts/lib/coord/geo/fix/textCoord.js |    63 +
 zh/js/vendors/echarts/lib/coord/geo/geoCreator.js  |   243 +
 .../echarts/lib/coord/geo/geoSourceManager.js      |   121 +
 zh/js/vendors/echarts/lib/coord/geo/geoTypes.js    |    54 +
 .../vendors/echarts/lib/coord/geo/parseGeoJson.js  |   146 +
 .../vendors/echarts/lib/coord/geo/prepareCustom.js |    79 +
 .../echarts/lib/coord/parallel/AxisModel.js        |   114 +
 .../vendors/echarts/lib/coord/parallel/Parallel.js |   410 +
 .../echarts/lib/coord/parallel/ParallelAxis.js     |    59 +
 .../echarts/lib/coord/parallel/ParallelModel.js    |   122 +
 .../echarts/lib/coord/parallel/parallelCreator.js  |    71 +
 .../lib/coord/parallel/parallelPreprocessor.js     |    84 +
 zh/js/vendors/echarts/lib/coord/polar/AngleAxis.js |   111 +
 zh/js/vendors/echarts/lib/coord/polar/AxisModel.js |    83 +
 zh/js/vendors/echarts/lib/coord/polar/Polar.js     |   218 +
 .../vendors/echarts/lib/coord/polar/PolarModel.js  |    73 +
 .../vendors/echarts/lib/coord/polar/RadiusAxis.js  |    58 +
 .../echarts/lib/coord/polar/polarCreator.js        |   158 +
 .../echarts/lib/coord/polar/prepareCustom.js       |    86 +
 .../echarts/lib/coord/radar/IndicatorAxis.js       |    57 +
 zh/js/vendors/echarts/lib/coord/radar/Radar.js     |   193 +
 .../vendors/echarts/lib/coord/radar/RadarModel.js  |   158 +
 .../echarts/lib/coord/scaleRawExtentInfo.js        |   243 +
 .../vendors/echarts/lib/coord/single/AxisModel.js  |   103 +
 zh/js/vendors/echarts/lib/coord/single/Single.js   |   210 +
 .../vendors/echarts/lib/coord/single/SingleAxis.js |    66 +
 .../echarts/lib/coord/single/prepareCustom.js      |    70 +
 .../echarts/lib/coord/single/singleAxisHelper.js   |    88 +
 .../echarts/lib/coord/single/singleCreator.js      |    73 +
 zh/js/vendors/echarts/lib/core/CoordinateSystem.js |    74 +
 zh/js/vendors/echarts/lib/core/ExtensionAPI.js     |    59 +
 zh/js/vendors/echarts/lib/core/Scheduler.js        |   489 +
 zh/js/vendors/echarts/lib/core/echarts.js          |  2272 +
 zh/js/vendors/echarts/lib/core/impl.js             |    65 +
 zh/js/vendors/echarts/lib/core/lifecycle.js        |    47 +
 zh/js/vendors/echarts/lib/core/locale.js           |    88 +
 zh/js/vendors/echarts/lib/core/task.js             |   345 +
 zh/js/vendors/echarts/lib/data/DataDiffer.js       |   253 +
 zh/js/vendors/echarts/lib/data/DataStore.js        |  1054 +
 zh/js/vendors/echarts/lib/data/Graph.js            |   459 +
 zh/js/vendors/echarts/lib/data/OrdinalMeta.js      |   124 +
 zh/js/vendors/echarts/lib/data/SeriesData.js       |   997 +
 .../echarts/lib/data/SeriesDimensionDefine.js      |    91 +
 zh/js/vendors/echarts/lib/data/Source.js           |   299 +
 zh/js/vendors/echarts/lib/data/Tree.js             |   353 +
 .../echarts/lib/data/helper/SeriesDataSchema.js    |   224 +
 .../echarts/lib/data/helper/createDimensions.js    |   322 +
 .../echarts/lib/data/helper/dataProvider.js        |   343 +
 .../echarts/lib/data/helper/dataStackHelper.js     |   179 +
 .../echarts/lib/data/helper/dataValueHelper.js     |   238 +
 .../echarts/lib/data/helper/dimensionHelper.js     |   172 +
 zh/js/vendors/echarts/lib/data/helper/linkList.js  |    46 +
 .../echarts/lib/data/helper/linkSeriesData.js      |   150 +
 .../echarts/lib/data/helper/sourceHelper.js        |   353 +
 .../echarts/lib/data/helper/sourceManager.js       |   417 +
 zh/js/vendors/echarts/lib/data/helper/transform.js |   417 +
 zh/js/vendors/echarts/lib/echarts.js               |    66 +
 zh/js/vendors/echarts/lib/export/all.js            |    46 +
 zh/js/vendors/echarts/lib/export/api.js            |   113 +
 zh/js/vendors/echarts/lib/export/api/format.js     |    44 +
 zh/js/vendors/echarts/lib/export/api/graphic.js    |    44 +
 zh/js/vendors/echarts/lib/export/api/helper.js     |   127 +
 zh/js/vendors/echarts/lib/export/api/number.js     |    44 +
 zh/js/vendors/echarts/lib/export/api/time.js       |    45 +
 zh/js/vendors/echarts/lib/export/api/util.js       |    44 +
 zh/js/vendors/echarts/lib/export/charts.js         |    70 +
 zh/js/vendors/echarts/lib/export/components.js     |    73 +
 zh/js/vendors/echarts/lib/export/core.js           |    51 +
 zh/js/vendors/echarts/lib/export/features.js       |    46 +
 zh/js/vendors/echarts/lib/export/option.js         |    44 +
 zh/js/vendors/echarts/lib/export/renderers.js      |    45 +
 zh/js/vendors/echarts/lib/extension.js             |   110 +
 zh/js/vendors/echarts/lib/i18n/langAR.js           |   157 +
 zh/js/vendors/echarts/lib/i18n/langCS.js           |   157 +
 zh/js/vendors/echarts/lib/i18n/langDE.js           |   157 +
 zh/js/vendors/echarts/lib/i18n/langEN.js           |   157 +
 zh/js/vendors/echarts/lib/i18n/langES.js           |   154 +
 zh/js/vendors/echarts/lib/i18n/langFA.js           |   157 +
 zh/js/vendors/echarts/lib/i18n/langFI.js           |   154 +
 zh/js/vendors/echarts/lib/i18n/langFR.js           |   157 +
 zh/js/vendors/echarts/lib/i18n/langHU.js           |   157 +
 zh/js/vendors/echarts/lib/i18n/langIT.js           |   157 +
 zh/js/vendors/echarts/lib/i18n/langJA.js           |   157 +
 zh/js/vendors/echarts/lib/i18n/langKO.js           |   157 +
 zh/js/vendors/echarts/lib/i18n/langNL.js           |   157 +
 zh/js/vendors/echarts/lib/i18n/langPL.js           |   157 +
 zh/js/vendors/echarts/lib/i18n/langPT-br.js        |   157 +
 zh/js/vendors/echarts/lib/i18n/langRO.js           |   157 +
 zh/js/vendors/echarts/lib/i18n/langRU.js           |   157 +
 zh/js/vendors/echarts/lib/i18n/langSI.js           |   157 +
 zh/js/vendors/echarts/lib/i18n/langSV.js           |   157 +
 zh/js/vendors/echarts/lib/i18n/langTH.js           |   154 +
 zh/js/vendors/echarts/lib/i18n/langTR.js           |   157 +
 zh/js/vendors/echarts/lib/i18n/langUK.js           |   157 +
 zh/js/vendors/echarts/lib/i18n/langVI.js           |   157 +
 zh/js/vendors/echarts/lib/i18n/langZH.js           |   154 +
 zh/js/vendors/echarts/lib/label/LabelManager.js    |   434 +
 .../echarts/lib/label/installLabelLayout.js        |    65 +
 .../vendors/echarts/lib/label/labelGuideHelper.js  |   541 +
 .../vendors/echarts/lib/label/labelLayoutHelper.js |   301 +
 zh/js/vendors/echarts/lib/label/labelStyle.js      |   484 +
 zh/js/vendors/echarts/lib/label/sectorLabel.js     |   201 +
 zh/js/vendors/echarts/lib/layout/barGrid.js        |   480 +
 zh/js/vendors/echarts/lib/layout/barPolar.js       |   256 +
 zh/js/vendors/echarts/lib/layout/points.js         |   105 +
 .../vendors/echarts/lib/legacy/dataSelectAction.js |   116 +
 zh/js/vendors/echarts/lib/legacy/getTextRect.js    |    59 +
 zh/js/vendors/echarts/lib/loading/default.js       |   160 +
 zh/js/vendors/echarts/lib/model/Component.js       |   233 +
 zh/js/vendors/echarts/lib/model/Global.js          |   747 +
 zh/js/vendors/echarts/lib/model/Model.js           |   178 +
 zh/js/vendors/echarts/lib/model/OptionManager.js   |   457 +
 zh/js/vendors/echarts/lib/model/Series.js          |   542 +
 zh/js/vendors/echarts/lib/model/globalDefault.js   |   131 +
 .../echarts/lib/model/internalComponentCreator.js  |    66 +
 zh/js/vendors/echarts/lib/model/mixin/areaStyle.js |    58 +
 .../vendors/echarts/lib/model/mixin/dataFormat.js  |   202 +
 zh/js/vendors/echarts/lib/model/mixin/itemStyle.js |    57 +
 zh/js/vendors/echarts/lib/model/mixin/lineStyle.js |    58 +
 .../echarts/lib/model/mixin/makeStyleMapper.js     |    70 +
 zh/js/vendors/echarts/lib/model/mixin/palette.js   |   105 +
 zh/js/vendors/echarts/lib/model/mixin/textStyle.js |    87 +
 zh/js/vendors/echarts/lib/model/referHelper.js     |   175 +
 .../echarts/lib/preprocessor/backwardCompat.js     |   255 +
 .../echarts/lib/preprocessor/helper/compatStyle.js |   330 +
 zh/js/vendors/echarts/lib/processor/dataFilter.js  |    68 +
 zh/js/vendors/echarts/lib/processor/dataSample.js  |   130 +
 zh/js/vendors/echarts/lib/processor/dataStack.js   |   133 +
 .../echarts/lib/processor/negativeDataFilter.js    |    61 +
 .../echarts/lib/renderer/installCanvasRenderer.js  |    47 +
 .../echarts/lib/renderer/installSVGRenderer.js     |    47 +
 zh/js/vendors/echarts/lib/scale/Interval.js        |   267 +
 zh/js/vendors/echarts/lib/scale/Log.js             |   178 +
 zh/js/vendors/echarts/lib/scale/Ordinal.js         |   214 +
 zh/js/vendors/echarts/lib/scale/Scale.js           |   112 +
 zh/js/vendors/echarts/lib/scale/Time.js            |   509 +
 zh/js/vendors/echarts/lib/scale/helper.js          |   122 +
 zh/js/vendors/echarts/lib/theme/dark.js            |   225 +
 zh/js/vendors/echarts/lib/theme/light.js           |    48 +
 zh/js/vendors/echarts/lib/util/ECEventProcessor.js |   144 +
 zh/js/vendors/echarts/lib/util/KDTree.js           |   255 +
 zh/js/vendors/echarts/lib/util/animation.js        |   120 +
 zh/js/vendors/echarts/lib/util/clazz.js            |   305 +
 zh/js/vendors/echarts/lib/util/component.js        |   186 +
 .../echarts/lib/util/conditionalExpression.js      |   257 +
 zh/js/vendors/echarts/lib/util/decal.js            |   392 +
 zh/js/vendors/echarts/lib/util/event.js            |    56 +
 zh/js/vendors/echarts/lib/util/format.js           |   240 +
 zh/js/vendors/echarts/lib/util/graphic.js          |   522 +
 zh/js/vendors/echarts/lib/util/innerStore.js       |    66 +
 zh/js/vendors/echarts/lib/util/layout.js           |   449 +
 zh/js/vendors/echarts/lib/util/log.js              |   134 +
 zh/js/vendors/echarts/lib/util/model.js            |   695 +
 zh/js/vendors/echarts/lib/util/number.js           |   563 +
 zh/js/vendors/echarts/lib/util/quickSelect.js      |    92 +
 zh/js/vendors/echarts/lib/util/shape/sausage.js    |   106 +
 zh/js/vendors/echarts/lib/util/states.js           |   704 +
 zh/js/vendors/echarts/lib/util/styleCompat.js      |   226 +
 zh/js/vendors/echarts/lib/util/symbol.js           |   334 +
 zh/js/vendors/echarts/lib/util/throttle.js         |   172 +
 zh/js/vendors/echarts/lib/util/time.js             |   273 +
 zh/js/vendors/echarts/lib/util/types.js            |    60 +
 zh/js/vendors/echarts/lib/util/vendor.js           |    55 +
 zh/js/vendors/echarts/lib/view/Chart.js            |   201 +
 zh/js/vendors/echarts/lib/view/Component.js        |    88 +
 .../echarts/lib/visual/LegendVisualProvider.js     |    81 +
 zh/js/vendors/echarts/lib/visual/VisualMapping.js  |   478 +
 zh/js/vendors/echarts/lib/visual/aria.js           |   237 +
 .../echarts/lib/visual/commonVisualTypes.js        |    44 +
 zh/js/vendors/echarts/lib/visual/decal.js          |    66 +
 zh/js/vendors/echarts/lib/visual/helper.js         |   100 +
 zh/js/vendors/echarts/lib/visual/style.js          |   216 +
 zh/js/vendors/echarts/lib/visual/symbol.js         |   124 +
 zh/js/vendors/echarts/lib/visual/visualDefault.js  |    91 +
 zh/js/vendors/echarts/lib/visual/visualSolution.js |   202 +
 zh/js/vendors/echarts/licenses/LICENSE-d3          |    27 +
 zh/js/vendors/echarts/package.README.md            |    40 +
 zh/js/vendors/echarts/renderers.d.ts               |    20 +
 zh/js/vendors/echarts/renderers.js                 |    20 +
 zh/js/vendors/echarts/ssr/client/dist/index.js     |   105 +
 zh/js/vendors/echarts/ssr/client/dist/index.js.map |     1 +
 zh/js/vendors/echarts/ssr/client/index.d.ts        |    20 +
 zh/js/vendors/echarts/ssr/client/index.js          |    20 +
 zh/js/vendors/echarts/ssr/client/lib/index.js      |    73 +
 zh/js/vendors/echarts/ssr/client/types/index.d.ts  |    18 +
 zh/js/vendors/echarts/theme/azul.js                |   163 +
 zh/js/vendors/echarts/theme/bee-inspired.js        |   178 +
 zh/js/vendors/echarts/theme/blue.js                |   178 +
 zh/js/vendors/echarts/theme/caravan.js             |   178 +
 zh/js/vendors/echarts/theme/carp.js                |   163 +
 zh/js/vendors/echarts/theme/cool.js                |   180 +
 zh/js/vendors/echarts/theme/dark-blue.js           |   164 +
 zh/js/vendors/echarts/theme/dark-bold.js           |   164 +
 zh/js/vendors/echarts/theme/dark-digerati.js       |   164 +
 zh/js/vendors/echarts/theme/dark-fresh-cut.js      |   164 +
 zh/js/vendors/echarts/theme/dark-mushroom.js       |   164 +
 zh/js/vendors/echarts/theme/dark.js                |   224 +
 zh/js/vendors/echarts/theme/eduardo.js             |   178 +
 zh/js/vendors/echarts/theme/forest.js              |   163 +
 zh/js/vendors/echarts/theme/fresh-cut.js           |   163 +
 zh/js/vendors/echarts/theme/fruit.js               |   178 +
 zh/js/vendors/echarts/theme/gray.js                |   220 +
 zh/js/vendors/echarts/theme/green.js               |   222 +
 zh/js/vendors/echarts/theme/helianthus.js          |   263 +
 zh/js/vendors/echarts/theme/infographic.js         |   236 +
 zh/js/vendors/echarts/theme/inspired.js            |   163 +
 zh/js/vendors/echarts/theme/jazz.js                |   163 +
 zh/js/vendors/echarts/theme/london.js              |   163 +
 zh/js/vendors/echarts/theme/macarons.js            |   242 +
 zh/js/vendors/echarts/theme/macarons2.js           |   246 +
 zh/js/vendors/echarts/theme/mint.js                |   155 +
 zh/js/vendors/echarts/theme/red-velvet.js          |   163 +
 zh/js/vendors/echarts/theme/red.js                 |   225 +
 zh/js/vendors/echarts/theme/roma.js                |   119 +
 zh/js/vendors/echarts/theme/royal.js               |   163 +
 zh/js/vendors/echarts/theme/sakura.js              |   140 +
 zh/js/vendors/echarts/theme/shine.js               |   175 +
 zh/js/vendors/echarts/theme/tech-blue.js           |   184 +
 zh/js/vendors/echarts/theme/vintage.js             |    63 +
 zh/js/vendors/echarts/types/dist/charts.d.ts       |     1 +
 zh/js/vendors/echarts/types/dist/components.d.ts   |     1 +
 zh/js/vendors/echarts/types/dist/core.d.ts         |     1 +
 zh/js/vendors/echarts/types/dist/echarts.d.ts      | 11029 +++
 zh/js/vendors/echarts/types/dist/features.d.ts     |     1 +
 zh/js/vendors/echarts/types/dist/option.d.ts       |     1 +
 zh/js/vendors/echarts/types/dist/renderers.d.ts    |     1 +
 zh/js/vendors/echarts/types/dist/shared.d.ts       | 11139 +++
 .../echarts/types/src/action/roamHelper.d.ts       |    17 +
 .../types/src/animation/basicTransition.d.ts       |    63 +
 .../animation/customGraphicKeyframeAnimation.d.ts  |    19 +
 .../src/animation/customGraphicTransition.d.ts     |    48 +
 .../types/src/animation/morphTransitionHelper.d.ts |     9 +
 .../types/src/animation/universalTransition.d.ts   |     2 +
 zh/js/vendors/echarts/types/src/chart/bar.d.ts     |     1 +
 .../echarts/types/src/chart/bar/BarSeries.d.ts     |    58 +
 .../echarts/types/src/chart/bar/BarView.d.ts       |    40 +
 .../echarts/types/src/chart/bar/BaseBarSeries.d.ts |    43 +
 .../types/src/chart/bar/PictorialBarSeries.d.ts    |    78 +
 .../types/src/chart/bar/PictorialBarView.d.ts      |    12 +
 .../echarts/types/src/chart/bar/install.d.ts       |     2 +
 .../types/src/chart/bar/installPictorialBar.d.ts   |     2 +
 zh/js/vendors/echarts/types/src/chart/boxplot.d.ts |     1 +
 .../types/src/chart/boxplot/BoxplotSeries.d.ts     |    52 +
 .../types/src/chart/boxplot/BoxplotView.d.ts       |    12 +
 .../types/src/chart/boxplot/boxplotLayout.d.ts     |     6 +
 .../types/src/chart/boxplot/boxplotTransform.d.ts  |     7 +
 .../echarts/types/src/chart/boxplot/install.d.ts   |     2 +
 .../src/chart/boxplot/prepareBoxplotData.d.ts      |    27 +
 .../echarts/types/src/chart/candlestick.d.ts       |     1 +
 .../src/chart/candlestick/CandlestickSeries.d.ts   |    53 +
 .../src/chart/candlestick/CandlestickView.d.ts     |    25 +
 .../src/chart/candlestick/candlestickLayout.d.ts   |    14 +
 .../src/chart/candlestick/candlestickVisual.d.ts   |     7 +
 .../types/src/chart/candlestick/install.d.ts       |     2 +
 .../types/src/chart/candlestick/preprocessor.d.ts  |     2 +
 zh/js/vendors/echarts/types/src/chart/custom.d.ts  |     1 +
 .../types/src/chart/custom/CustomSeries.d.ts       |   244 +
 .../echarts/types/src/chart/custom/CustomView.d.ts |    17 +
 .../echarts/types/src/chart/custom/install.d.ts    |     2 +
 .../echarts/types/src/chart/effectScatter.d.ts     |     1 +
 .../chart/effectScatter/EffectScatterSeries.d.ts   |    47 +
 .../src/chart/effectScatter/EffectScatterView.d.ts |    16 +
 .../types/src/chart/effectScatter/install.d.ts     |     2 +
 zh/js/vendors/echarts/types/src/chart/funnel.d.ts  |     1 +
 .../types/src/chart/funnel/FunnelSeries.d.ts       |    49 +
 .../echarts/types/src/chart/funnel/FunnelView.d.ts |    14 +
 .../types/src/chart/funnel/funnelLayout.d.ts       |     3 +
 .../echarts/types/src/chart/funnel/install.d.ts    |     2 +
 zh/js/vendors/echarts/types/src/chart/gauge.d.ts   |     1 +
 .../echarts/types/src/chart/gauge/GaugeSeries.d.ts |   132 +
 .../echarts/types/src/chart/gauge/GaugeView.d.ts   |    26 +
 .../echarts/types/src/chart/gauge/PointerPath.d.ts |    19 +
 .../echarts/types/src/chart/gauge/install.d.ts     |     2 +
 zh/js/vendors/echarts/types/src/chart/graph.d.ts   |     1 +
 .../echarts/types/src/chart/graph/GraphSeries.d.ts |   153 +
 .../echarts/types/src/chart/graph/GraphView.d.ts   |    25 +
 .../echarts/types/src/chart/graph/adjustEdge.d.ts  |     2 +
 .../types/src/chart/graph/categoryFilter.d.ts      |     2 +
 .../types/src/chart/graph/categoryVisual.d.ts      |     2 +
 .../types/src/chart/graph/circularLayout.d.ts      |     2 +
 .../src/chart/graph/circularLayoutHelper.d.ts      |    23 +
 .../echarts/types/src/chart/graph/createView.d.ts  |     4 +
 .../echarts/types/src/chart/graph/edgeVisual.d.ts  |     2 +
 .../echarts/types/src/chart/graph/forceHelper.d.ts |    49 +
 .../echarts/types/src/chart/graph/forceLayout.d.ts |     8 +
 .../echarts/types/src/chart/graph/graphHelper.d.ts |     4 +
 .../echarts/types/src/chart/graph/install.d.ts     |     2 +
 .../types/src/chart/graph/simpleLayout.d.ts        |     3 +
 .../types/src/chart/graph/simpleLayoutHelper.d.ts  |     4 +
 zh/js/vendors/echarts/types/src/chart/heatmap.d.ts |     1 +
 .../types/src/chart/heatmap/HeatmapLayer.d.ts      |    29 +
 .../types/src/chart/heatmap/HeatmapSeries.d.ts     |    39 +
 .../types/src/chart/heatmap/HeatmapView.d.ts       |    26 +
 .../echarts/types/src/chart/heatmap/install.d.ts   |     2 +
 .../echarts/types/src/chart/helper/EffectLine.d.ts |    32 +
 .../types/src/chart/helper/EffectPolyline.d.ts     |    16 +
 .../types/src/chart/helper/EffectSymbol.d.ts       |    41 +
 .../types/src/chart/helper/LargeLineDraw.d.ts      |    42 +
 .../types/src/chart/helper/LargeSymbolDraw.d.ts    |    25 +
 .../echarts/types/src/chart/helper/Line.d.ts       |    24 +
 .../echarts/types/src/chart/helper/LineDraw.d.ts   |    73 +
 .../echarts/types/src/chart/helper/LinePath.d.ts   |    33 +
 .../echarts/types/src/chart/helper/Polyline.d.ts   |    11 +
 .../echarts/types/src/chart/helper/Symbol.d.ts     |    63 +
 .../echarts/types/src/chart/helper/SymbolDraw.d.ts |    82 +
 .../chart/helper/createClipPathFromCoordSys.d.ts   |    15 +
 .../src/chart/helper/createGraphFromNodeEdge.d.ts  |     5 +
 .../src/chart/helper/createRenderPlanner.d.ts      |     6 +
 .../types/src/chart/helper/createSeriesData.d.ts   |    13 +
 .../src/chart/helper/createSeriesDataSimply.d.ts   |    14 +
 .../src/chart/helper/enableAriaDecalForTree.d.ts   |     2 +
 .../types/src/chart/helper/labelHelper.d.ts        |     7 +
 .../src/chart/helper/multipleGraphEdgeHelper.d.ts  |    21 +
 .../types/src/chart/helper/sectorHelper.d.ts       |     9 +
 .../echarts/types/src/chart/helper/treeHelper.d.ts |    16 +
 .../types/src/chart/helper/whiskerBoxCommon.d.ts   |    33 +
 zh/js/vendors/echarts/types/src/chart/line.d.ts    |     1 +
 .../echarts/types/src/chart/line/LineSeries.d.ts   |    68 +
 .../echarts/types/src/chart/line/LineView.d.ts     |    52 +
 .../echarts/types/src/chart/line/helper.d.ts       |    18 +
 .../echarts/types/src/chart/line/install.d.ts      |     2 +
 .../types/src/chart/line/lineAnimationDiff.d.ts    |    17 +
 .../vendors/echarts/types/src/chart/line/poly.d.ts |    39 +
 zh/js/vendors/echarts/types/src/chart/lines.d.ts   |     1 +
 .../echarts/types/src/chart/lines/LinesSeries.d.ts |    74 +
 .../echarts/types/src/chart/lines/LinesView.d.ts   |    32 +
 .../echarts/types/src/chart/lines/install.d.ts     |     2 +
 .../echarts/types/src/chart/lines/linesLayout.d.ts |     3 +
 .../echarts/types/src/chart/lines/linesVisual.d.ts |     3 +
 zh/js/vendors/echarts/types/src/chart/map.d.ts     |     1 +
 .../echarts/types/src/chart/map/MapSeries.d.ts     |    65 +
 .../echarts/types/src/chart/map/MapView.d.ts       |    15 +
 .../echarts/types/src/chart/map/install.d.ts       |     2 +
 .../types/src/chart/map/mapDataStatistic.d.ts      |     2 +
 .../types/src/chart/map/mapSymbolLayout.d.ts       |     2 +
 .../vendors/echarts/types/src/chart/parallel.d.ts  |     1 +
 .../types/src/chart/parallel/ParallelSeries.d.ts   |    47 +
 .../types/src/chart/parallel/ParallelView.d.ts     |    22 +
 .../echarts/types/src/chart/parallel/install.d.ts  |     2 +
 .../types/src/chart/parallel/parallelVisual.d.ts   |     3 +
 .../echarts/types/src/chart/pictorialBar.d.ts      |     1 +
 zh/js/vendors/echarts/types/src/chart/pie.d.ts     |     1 +
 .../echarts/types/src/chart/pie/PieSeries.d.ts     |    85 +
 .../echarts/types/src/chart/pie/PieView.d.ts       |    15 +
 .../echarts/types/src/chart/pie/install.d.ts       |     2 +
 .../echarts/types/src/chart/pie/labelLayout.d.ts   |     2 +
 .../echarts/types/src/chart/pie/pieLayout.d.ts     |    11 +
 zh/js/vendors/echarts/types/src/chart/radar.d.ts   |     1 +
 .../echarts/types/src/chart/radar/RadarSeries.d.ts |    37 +
 .../echarts/types/src/chart/radar/RadarView.d.ts   |    12 +
 .../types/src/chart/radar/backwardCompat.d.ts      |     1 +
 .../echarts/types/src/chart/radar/install.d.ts     |     2 +
 .../echarts/types/src/chart/radar/radarLayout.d.ts |     2 +
 zh/js/vendors/echarts/types/src/chart/sankey.d.ts  |     1 +
 .../types/src/chart/sankey/SankeySeries.d.ts       |   106 +
 .../echarts/types/src/chart/sankey/SankeyView.d.ts |    14 +
 .../echarts/types/src/chart/sankey/install.d.ts    |     2 +
 .../types/src/chart/sankey/sankeyLayout.d.ts       |     3 +
 .../types/src/chart/sankey/sankeyVisual.d.ts       |     2 +
 zh/js/vendors/echarts/types/src/chart/scatter.d.ts |     1 +
 .../types/src/chart/scatter/ScatterSeries.d.ts     |    37 +
 .../types/src/chart/scatter/ScatterView.d.ts       |    28 +
 .../echarts/types/src/chart/scatter/install.d.ts   |     2 +
 .../vendors/echarts/types/src/chart/sunburst.d.ts  |     1 +
 .../types/src/chart/sunburst/SunburstPiece.d.ts    |    17 +
 .../types/src/chart/sunburst/SunburstSeries.d.ts   |   100 +
 .../types/src/chart/sunburst/SunburstView.d.ts     |    34 +
 .../echarts/types/src/chart/sunburst/install.d.ts  |     2 +
 .../types/src/chart/sunburst/sunburstAction.d.ts   |     3 +
 .../types/src/chart/sunburst/sunburstLayout.d.ts   |     3 +
 .../types/src/chart/sunburst/sunburstVisual.d.ts   |     2 +
 .../echarts/types/src/chart/themeRiver.d.ts        |     1 +
 .../src/chart/themeRiver/ThemeRiverSeries.d.ts     |    73 +
 .../types/src/chart/themeRiver/ThemeRiverView.d.ts |    12 +
 .../types/src/chart/themeRiver/install.d.ts        |     2 +
 .../src/chart/themeRiver/themeRiverLayout.d.ts     |     9 +
 zh/js/vendors/echarts/types/src/chart/tree.d.ts    |     1 +
 .../echarts/types/src/chart/tree/TreeSeries.d.ts   |    87 +
 .../echarts/types/src/chart/tree/TreeView.d.ts     |    24 +
 .../echarts/types/src/chart/tree/install.d.ts      |     2 +
 .../echarts/types/src/chart/tree/layoutHelper.d.ts |    64 +
 .../types/src/chart/tree/traversalHelper.d.ts      |    10 +
 .../echarts/types/src/chart/tree/treeAction.d.ts   |     6 +
 .../echarts/types/src/chart/tree/treeLayout.d.ts   |     3 +
 .../echarts/types/src/chart/tree/treeVisual.d.ts   |     2 +
 zh/js/vendors/echarts/types/src/chart/treemap.d.ts |     1 +
 .../types/src/chart/treemap/Breadcrumb.d.ts        |    42 +
 .../types/src/chart/treemap/TreemapSeries.d.ts     |   183 +
 .../types/src/chart/treemap/TreemapView.d.ts       |    56 +
 .../echarts/types/src/chart/treemap/install.d.ts   |     2 +
 .../types/src/chart/treemap/treemapAction.d.ts     |    22 +
 .../types/src/chart/treemap/treemapLayout.d.ts     |    30 +
 .../types/src/chart/treemap/treemapVisual.d.ts     |     6 +
 .../vendors/echarts/types/src/component/aria.d.ts  |     1 +
 .../echarts/types/src/component/aria/install.d.ts  |     2 +
 .../types/src/component/aria/preprocessor.d.ts     |     2 +
 .../types/src/component/axis/AngleAxisView.d.ts    |    10 +
 .../types/src/component/axis/AxisBuilder.d.ts      |    90 +
 .../echarts/types/src/component/axis/AxisView.d.ts |    45 +
 .../src/component/axis/CartesianAxisView.d.ts      |    25 +
 .../types/src/component/axis/ParallelAxisView.d.ts |    22 +
 .../types/src/component/axis/RadiusAxisView.d.ts   |    11 +
 .../types/src/component/axis/SingleAxisView.d.ts   |    14 +
 .../types/src/component/axis/axisSplitHelper.d.ts  |     8 +
 .../src/component/axis/parallelAxisAction.d.ts     |     6 +
 .../echarts/types/src/component/axisPointer.d.ts   |     1 +
 .../src/component/axisPointer/AxisPointer.d.ts     |    15 +
 .../component/axisPointer/AxisPointerModel.d.ts    |    38 +
 .../src/component/axisPointer/AxisPointerView.d.ts |    12 +
 .../src/component/axisPointer/BaseAxisPointer.d.ts |   126 +
 .../axisPointer/CartesianAxisPointer.d.ts          |    38 +
 .../component/axisPointer/PolarAxisPointer.d.ts    |    12 +
 .../component/axisPointer/SingleAxisPointer.d.ts   |    37 +
 .../src/component/axisPointer/axisTrigger.d.ts     |    59 +
 .../component/axisPointer/findPointFromSeries.d.ts |    17 +
 .../src/component/axisPointer/globalListener.d.ts  |    14 +
 .../types/src/component/axisPointer/install.d.ts   |     2 +
 .../src/component/axisPointer/modelHelper.d.ts     |    56 +
 .../src/component/axisPointer/viewHelper.d.ts      |    58 +
 .../vendors/echarts/types/src/component/brush.d.ts |     1 +
 .../types/src/component/brush/BrushModel.d.ts      |    92 +
 .../types/src/component/brush/BrushView.d.ts       |    22 +
 .../echarts/types/src/component/brush/install.d.ts |     2 +
 .../types/src/component/brush/preprocessor.d.ts    |     2 +
 .../types/src/component/brush/selector.d.ts        |    32 +
 .../types/src/component/brush/visualEncoding.d.ts  |     8 +
 .../echarts/types/src/component/calendar.d.ts      |     1 +
 .../types/src/component/calendar/CalendarView.d.ts |    47 +
 .../types/src/component/calendar/install.d.ts      |     2 +
 .../echarts/types/src/component/dataZoom.d.ts      |     1 +
 .../types/src/component/dataZoom/AxisProxy.d.ts    |    67 +
 .../src/component/dataZoom/DataZoomModel.d.ts      |   171 +
 .../types/src/component/dataZoom/DataZoomView.d.ts |    13 +
 .../src/component/dataZoom/InsideZoomModel.d.ts    |    25 +
 .../src/component/dataZoom/InsideZoomView.d.ts     |    28 +
 .../src/component/dataZoom/SelectZoomModel.d.ts    |     6 +
 .../src/component/dataZoom/SelectZoomView.d.ts     |     6 +
 .../src/component/dataZoom/SliderZoomModel.d.ts    |    83 +
 .../src/component/dataZoom/SliderZoomView.d.ts     |    71 +
 .../src/component/dataZoom/dataZoomAction.d.ts     |     2 +
 .../src/component/dataZoom/dataZoomProcessor.d.ts  |     3 +
 .../types/src/component/dataZoom/helper.d.ts       |    57 +
 .../types/src/component/dataZoom/history.d.ts      |    12 +
 .../types/src/component/dataZoom/install.d.ts      |     2 +
 .../src/component/dataZoom/installCommon.d.ts      |     2 +
 .../component/dataZoom/installDataZoomInside.d.ts  |     2 +
 .../component/dataZoom/installDataZoomSelect.d.ts  |     2 +
 .../component/dataZoom/installDataZoomSlider.d.ts  |     2 +
 .../types/src/component/dataZoom/roams.d.ts        |     7 +
 .../types/src/component/dataZoomInside.d.ts        |     1 +
 .../types/src/component/dataZoomSelect.d.ts        |     1 +
 .../types/src/component/dataZoomSlider.d.ts        |     1 +
 .../echarts/types/src/component/dataset.d.ts       |     1 +
 .../types/src/component/dataset/install.d.ts       |    36 +
 zh/js/vendors/echarts/types/src/component/geo.d.ts |     1 +
 .../echarts/types/src/component/geo/GeoView.d.ts   |    21 +
 .../echarts/types/src/component/geo/install.d.ts   |     2 +
 .../echarts/types/src/component/graphic.d.ts       |     1 +
 .../types/src/component/graphic/GraphicModel.d.ts  |   134 +
 .../types/src/component/graphic/GraphicView.d.ts   |    34 +
 .../types/src/component/graphic/install.d.ts       |     2 +
 .../vendors/echarts/types/src/component/grid.d.ts  |     1 +
 .../echarts/types/src/component/grid/install.d.ts  |     2 +
 .../types/src/component/grid/installSimple.d.ts    |     2 +
 .../echarts/types/src/component/gridSimple.d.ts    |     1 +
 .../src/component/helper/BrushController.d.ts      |   154 +
 .../src/component/helper/BrushTargetManager.d.ts   |    79 +
 .../types/src/component/helper/MapDraw.d.ts        |    52 +
 .../types/src/component/helper/RoamController.d.ts |    72 +
 .../types/src/component/helper/brushHelper.d.ts    |     7 +
 .../types/src/component/helper/cursorHelper.d.ts   |     8 +
 .../src/component/helper/interactionMutex.d.ts     |     3 +
 .../types/src/component/helper/listComponent.d.ts  |     9 +
 .../types/src/component/helper/roamHelper.d.ts     |    18 +
 .../types/src/component/helper/sliderMove.d.ts     |    21 +
 .../echarts/types/src/component/legend.d.ts        |     1 +
 .../types/src/component/legend/LegendModel.d.ts    |   190 +
 .../types/src/component/legend/LegendView.d.ts     |    45 +
 .../component/legend/ScrollableLegendModel.d.ts    |    44 +
 .../src/component/legend/ScrollableLegendView.d.ts |    54 +
 .../types/src/component/legend/install.d.ts        |     2 +
 .../src/component/legend/installLegendPlain.d.ts   |     2 +
 .../src/component/legend/installLegendScroll.d.ts  |     2 +
 .../types/src/component/legend/legendAction.d.ts   |     2 +
 .../types/src/component/legend/legendFilter.d.ts   |     2 +
 .../component/legend/scrollableLegendAction.d.ts   |     2 +
 .../echarts/types/src/component/legendPlain.d.ts   |     1 +
 .../echarts/types/src/component/legendScroll.d.ts  |     1 +
 .../echarts/types/src/component/markArea.d.ts      |     1 +
 .../echarts/types/src/component/markLine.d.ts      |     1 +
 .../echarts/types/src/component/markPoint.d.ts     |     1 +
 .../types/src/component/marker/MarkAreaModel.d.ts  |    35 +
 .../types/src/component/marker/MarkAreaView.d.ts   |    19 +
 .../types/src/component/marker/MarkLineModel.d.ts  |    57 +
 .../types/src/component/marker/MarkLineView.d.ts   |    15 +
 .../types/src/component/marker/MarkPointModel.d.ts |    22 +
 .../types/src/component/marker/MarkPointView.d.ts  |    15 +
 .../types/src/component/marker/MarkerModel.d.ts    |    74 +
 .../types/src/component/marker/MarkerView.d.ts     |    24 +
 .../src/component/marker/checkMarkerInSeries.d.ts  |     4 +
 .../src/component/marker/installMarkArea.d.ts      |     2 +
 .../src/component/marker/installMarkLine.d.ts      |     2 +
 .../src/component/marker/installMarkPoint.d.ts     |     2 +
 .../types/src/component/marker/markerHelper.d.ts   |    34 +
 .../echarts/types/src/component/parallel.d.ts      |     1 +
 .../types/src/component/parallel/ParallelView.d.ts |    25 +
 .../types/src/component/parallel/install.d.ts      |     2 +
 .../vendors/echarts/types/src/component/polar.d.ts |     1 +
 .../echarts/types/src/component/polar/install.d.ts |     2 +
 .../vendors/echarts/types/src/component/radar.d.ts |     1 +
 .../types/src/component/radar/RadarView.d.ts       |    12 +
 .../echarts/types/src/component/radar/install.d.ts |     2 +
 .../echarts/types/src/component/singleAxis.d.ts    |     1 +
 .../types/src/component/singleAxis/install.d.ts    |     2 +
 .../echarts/types/src/component/timeline.d.ts      |     1 +
 .../component/timeline/SliderTimelineModel.d.ts    |    17 +
 .../src/component/timeline/SliderTimelineView.d.ts |    53 +
 .../types/src/component/timeline/TimelineAxis.d.ts |    22 +
 .../src/component/timeline/TimelineModel.d.ts      |   140 +
 .../types/src/component/timeline/TimelineView.d.ts |     6 +
 .../types/src/component/timeline/install.d.ts      |     2 +
 .../types/src/component/timeline/preprocessor.d.ts |     1 +
 .../src/component/timeline/timelineAction.d.ts     |    11 +
 .../vendors/echarts/types/src/component/title.d.ts |     1 +
 .../echarts/types/src/component/title/install.d.ts |    42 +
 .../echarts/types/src/component/toolbox.d.ts       |     1 +
 .../types/src/component/toolbox/ToolboxModel.d.ts  |    41 +
 .../types/src/component/toolbox/ToolboxView.d.ts   |    18 +
 .../types/src/component/toolbox/feature/Brush.d.ts |    31 +
 .../src/component/toolbox/feature/DataView.d.ts    |    26 +
 .../src/component/toolbox/feature/DataZoom.d.ts    |    37 +
 .../src/component/toolbox/feature/MagicType.d.ts   |    40 +
 .../src/component/toolbox/feature/Restore.d.ts     |    12 +
 .../src/component/toolbox/feature/SaveAsImage.d.ts |    20 +
 .../src/component/toolbox/featureManager.d.ts      |    73 +
 .../types/src/component/toolbox/install.d.ts       |     2 +
 .../echarts/types/src/component/tooltip.d.ts       |     1 +
 .../src/component/tooltip/TooltipHTMLContent.d.ts  |    53 +
 .../types/src/component/tooltip/TooltipModel.d.ts  |    51 +
 .../src/component/tooltip/TooltipRichContent.d.ts  |    40 +
 .../types/src/component/tooltip/TooltipView.d.ts   |    93 +
 .../types/src/component/tooltip/helper.d.ts        |     7 +
 .../types/src/component/tooltip/install.d.ts       |     2 +
 .../src/component/tooltip/seriesFormatTooltip.d.ts |     7 +
 .../types/src/component/tooltip/tooltipMarkup.d.ts |    99 +
 .../echarts/types/src/component/transform.d.ts     |     1 +
 .../src/component/transform/filterTransform.d.ts   |     7 +
 .../types/src/component/transform/install.d.ts     |     2 +
 .../src/component/transform/sortTransform.d.ts     |    32 +
 .../echarts/types/src/component/visualMap.d.ts     |     1 +
 .../src/component/visualMap/ContinuousModel.d.ts   |    89 +
 .../src/component/visualMap/ContinuousView.d.ts    |    58 +
 .../src/component/visualMap/PiecewiseModel.d.ts    |   133 +
 .../src/component/visualMap/PiecewiseView.d.ts     |    19 +
 .../src/component/visualMap/VisualMapModel.d.ts    |   229 +
 .../src/component/visualMap/VisualMapView.d.ts     |    44 +
 .../types/src/component/visualMap/helper.d.ts      |    20 +
 .../types/src/component/visualMap/install.d.ts     |     2 +
 .../src/component/visualMap/installCommon.d.ts     |     2 +
 .../visualMap/installVisualMapContinuous.d.ts      |     2 +
 .../visualMap/installVisualMapPiecewise.d.ts       |     2 +
 .../src/component/visualMap/preprocessor.d.ts      |     1 +
 .../src/component/visualMap/typeDefaulter.d.ts     |     1 +
 .../src/component/visualMap/visualEncoding.d.ts    |     2 +
 .../src/component/visualMap/visualMapAction.d.ts   |     8 +
 .../types/src/component/visualMapContinuous.d.ts   |     1 +
 .../types/src/component/visualMapPiecewise.d.ts    |     1 +
 zh/js/vendors/echarts/types/src/coord/Axis.d.ts    |   101 +
 .../echarts/types/src/coord/AxisBaseModel.d.ts     |    11 +
 .../echarts/types/src/coord/CoordinateSystem.d.ts  |    90 +
 zh/js/vendors/echarts/types/src/coord/View.d.ts    |   105 +
 .../echarts/types/src/coord/axisAlignTicks.d.ts    |     5 +
 .../echarts/types/src/coord/axisCommonTypes.d.ts   |   208 +
 .../echarts/types/src/coord/axisDefault.d.ts       |     8 +
 .../echarts/types/src/coord/axisHelper.d.ts        |    59 +
 .../types/src/coord/axisModelCommonMixin.d.ts      |    16 +
 .../echarts/types/src/coord/axisModelCreator.d.ts  |    16 +
 .../types/src/coord/axisTickLabelBuilder.d.ts      |    29 +
 .../echarts/types/src/coord/calendar/Calendar.d.ts |   145 +
 .../types/src/coord/calendar/CalendarModel.d.ts    |   119 +
 .../types/src/coord/calendar/prepareCustom.d.ts    |    22 +
 .../echarts/types/src/coord/cartesian/Axis2D.d.ts  |    65 +
 .../types/src/coord/cartesian/AxisModel.d.ts       |    30 +
 .../types/src/coord/cartesian/Cartesian.d.ts       |    14 +
 .../types/src/coord/cartesian/Cartesian2D.d.ts     |    40 +
 .../echarts/types/src/coord/cartesian/Grid.d.ts    |    78 +
 .../types/src/coord/cartesian/GridModel.d.ts       |    21 +
 .../src/coord/cartesian/cartesianAxisHelper.d.ts   |    26 +
 .../coord/cartesian/defaultAxisExtentFromData.d.ts |     1 +
 .../types/src/coord/cartesian/prepareCustom.d.ts   |    14 +
 zh/js/vendors/echarts/types/src/coord/geo/Geo.d.ts |    49 +
 .../types/src/coord/geo/GeoJSONResource.d.ts       |    30 +
 .../echarts/types/src/coord/geo/GeoModel.d.ts      |    89 +
 .../types/src/coord/geo/GeoSVGResource.d.ts        |    41 +
 .../echarts/types/src/coord/geo/Region.d.ts        |    56 +
 .../types/src/coord/geo/fix/diaoyuIsland.d.ts      |     2 +
 .../echarts/types/src/coord/geo/fix/geoCoord.d.ts  |     2 +
 .../echarts/types/src/coord/geo/fix/nanhai.d.ts    |     2 +
 .../echarts/types/src/coord/geo/fix/textCoord.d.ts |     2 +
 .../echarts/types/src/coord/geo/geoCreator.d.ts    |    23 +
 .../types/src/coord/geo/geoSourceManager.d.ts      |    51 +
 .../echarts/types/src/coord/geo/geoTypes.d.ts      |   123 +
 .../echarts/types/src/coord/geo/parseGeoJson.d.ts  |     3 +
 .../echarts/types/src/coord/geo/prepareCustom.d.ts |    15 +
 .../types/src/coord/parallel/AxisModel.d.ts        |    57 +
 .../echarts/types/src/coord/parallel/Parallel.d.ts |    95 +
 .../types/src/coord/parallel/ParallelAxis.d.ts     |    14 +
 .../types/src/coord/parallel/ParallelModel.d.ts    |    52 +
 .../types/src/coord/parallel/parallelCreator.d.ts  |     8 +
 .../src/coord/parallel/parallelPreprocessor.d.ts   |     2 +
 .../echarts/types/src/coord/polar/AngleAxis.d.ts   |    23 +
 .../echarts/types/src/coord/polar/AxisModel.d.ts   |    52 +
 .../echarts/types/src/coord/polar/Polar.d.ts       |    90 +
 .../echarts/types/src/coord/polar/PolarModel.d.ts  |    17 +
 .../echarts/types/src/coord/polar/RadiusAxis.d.ts  |    15 +
 .../types/src/coord/polar/polarCreator.d.ts        |     8 +
 .../types/src/coord/polar/prepareCustom.d.ts       |    14 +
 .../types/src/coord/radar/IndicatorAxis.d.ts       |    13 +
 .../echarts/types/src/coord/radar/Radar.d.ts       |    38 +
 .../echarts/types/src/coord/radar/RadarModel.d.ts  |    50 +
 .../types/src/coord/scaleRawExtentInfo.d.ts        |    58 +
 .../echarts/types/src/coord/single/AxisModel.d.ts  |    26 +
 .../echarts/types/src/coord/single/Single.d.ts     |    70 +
 .../echarts/types/src/coord/single/SingleAxis.d.ts |    31 +
 .../types/src/coord/single/prepareCustom.d.ts      |    14 +
 .../types/src/coord/single/singleAxisHelper.d.ts   |    15 +
 .../types/src/coord/single/singleCreator.d.ts      |    15 +
 .../echarts/types/src/core/CoordinateSystem.d.ts   |    12 +
 .../echarts/types/src/core/ExtensionAPI.d.ts       |    26 +
 .../vendors/echarts/types/src/core/Scheduler.d.ts  |   104 +
 zh/js/vendors/echarts/types/src/core/echarts.d.ts  |   381 +
 zh/js/vendors/echarts/types/src/core/impl.d.ts     |     2 +
 .../vendors/echarts/types/src/core/lifecycle.d.ts  |    43 +
 zh/js/vendors/echarts/types/src/core/locale.d.ts   |     8 +
 zh/js/vendors/echarts/types/src/core/task.d.ts     |    89 +
 .../vendors/echarts/types/src/data/DataDiffer.d.ts |    82 +
 .../vendors/echarts/types/src/data/DataStore.d.ts  |   200 +
 zh/js/vendors/echarts/types/src/data/Graph.d.ts    |   139 +
 .../echarts/types/src/data/OrdinalMeta.d.ts        |    22 +
 .../vendors/echarts/types/src/data/SeriesData.d.ts |   478 +
 .../types/src/data/SeriesDimensionDefine.d.ts      |   100 +
 zh/js/vendors/echarts/types/src/data/Source.d.ts   |   116 +
 zh/js/vendors/echarts/types/src/data/Tree.d.ts     |   168 +
 .../types/src/data/helper/SeriesDataSchema.d.ts    |    66 +
 .../types/src/data/helper/createDimensions.d.ts    |    57 +
 .../types/src/data/helper/dataProvider.d.ts        |    71 +
 .../types/src/data/helper/dataStackHelper.d.ts     |    38 +
 .../types/src/data/helper/dataValueHelper.d.ts     |    75 +
 .../types/src/data/helper/dimensionHelper.d.ts     |    42 +
 .../echarts/types/src/data/helper/linkList.d.ts    |     2 +
 .../types/src/data/helper/linkSeriesData.d.ts      |    22 +
 .../types/src/data/helper/sourceHelper.d.ts        |    56 +
 .../types/src/data/helper/sourceManager.d.ts       |   143 +
 .../echarts/types/src/data/helper/transform.d.ts   |    87 +
 zh/js/vendors/echarts/types/src/echarts.all.d.ts   |     1 +
 zh/js/vendors/echarts/types/src/echarts.blank.d.ts |     1 +
 .../vendors/echarts/types/src/echarts.common.d.ts  |     1 +
 zh/js/vendors/echarts/types/src/echarts.d.ts       |     5 +
 .../vendors/echarts/types/src/echarts.simple.d.ts  |     1 +
 zh/js/vendors/echarts/types/src/export/all.d.ts    |     2 +
 zh/js/vendors/echarts/types/src/export/api.d.ts    |    31 +
 .../echarts/types/src/export/api/format.d.ts       |     1 +
 .../echarts/types/src/export/api/graphic.d.ts      |     1 +
 .../echarts/types/src/export/api/helper.d.ts       |    51 +
 .../echarts/types/src/export/api/number.d.ts       |     1 +
 .../vendors/echarts/types/src/export/api/time.d.ts |     2 +
 .../vendors/echarts/types/src/export/api/util.d.ts |     1 +
 zh/js/vendors/echarts/types/src/export/charts.d.ts |    23 +
 .../echarts/types/src/export/components.d.ts       |    31 +
 zh/js/vendors/echarts/types/src/export/core.d.ts   |    37 +
 .../vendors/echarts/types/src/export/features.d.ts |     2 +
 zh/js/vendors/echarts/types/src/export/option.d.ts |   175 +
 .../echarts/types/src/export/renderers.d.ts        |     2 +
 zh/js/vendors/echarts/types/src/extension.d.ts     |    65 +
 zh/js/vendors/echarts/types/src/i18n/langAR.d.ts   |   115 +
 zh/js/vendors/echarts/types/src/i18n/langCS.d.ts   |   115 +
 zh/js/vendors/echarts/types/src/i18n/langDE.d.ts   |   115 +
 zh/js/vendors/echarts/types/src/i18n/langEN.d.ts   |   115 +
 zh/js/vendors/echarts/types/src/i18n/langES.d.ts   |   112 +
 zh/js/vendors/echarts/types/src/i18n/langFA.d.ts   |   115 +
 zh/js/vendors/echarts/types/src/i18n/langFI.d.ts   |   112 +
 zh/js/vendors/echarts/types/src/i18n/langFR.d.ts   |   115 +
 zh/js/vendors/echarts/types/src/i18n/langHU.d.ts   |   115 +
 zh/js/vendors/echarts/types/src/i18n/langIT.d.ts   |   115 +
 zh/js/vendors/echarts/types/src/i18n/langJA.d.ts   |   115 +
 zh/js/vendors/echarts/types/src/i18n/langKO.d.ts   |   115 +
 zh/js/vendors/echarts/types/src/i18n/langNL.d.ts   |   115 +
 zh/js/vendors/echarts/types/src/i18n/langPL.d.ts   |   115 +
 .../vendors/echarts/types/src/i18n/langPT-br.d.ts  |   115 +
 zh/js/vendors/echarts/types/src/i18n/langRO.d.ts   |   115 +
 zh/js/vendors/echarts/types/src/i18n/langRU.d.ts   |   115 +
 zh/js/vendors/echarts/types/src/i18n/langSI.d.ts   |   115 +
 zh/js/vendors/echarts/types/src/i18n/langSV.d.ts   |   115 +
 zh/js/vendors/echarts/types/src/i18n/langTH.d.ts   |   112 +
 zh/js/vendors/echarts/types/src/i18n/langTR.d.ts   |   115 +
 zh/js/vendors/echarts/types/src/i18n/langUK.d.ts   |   115 +
 zh/js/vendors/echarts/types/src/i18n/langVI.d.ts   |   115 +
 zh/js/vendors/echarts/types/src/i18n/langZH.d.ts   |   112 +
 .../echarts/types/src/label/LabelManager.d.ts      |    22 +
 .../types/src/label/installLabelLayout.d.ts        |     2 +
 .../echarts/types/src/label/labelGuideHelper.d.ts  |    31 +
 .../echarts/types/src/label/labelLayoutHelper.d.ts |    39 +
 .../echarts/types/src/label/labelStyle.d.ts        |   108 +
 .../echarts/types/src/label/sectorLabel.d.ts       |    20 +
 .../vendors/echarts/types/src/layout/barGrid.d.ts  |    45 +
 .../vendors/echarts/types/src/layout/barPolar.d.ts |     4 +
 zh/js/vendors/echarts/types/src/layout/points.d.ts |     2 +
 .../echarts/types/src/legacy/dataSelectAction.d.ts |     5 +
 .../echarts/types/src/legacy/getTextRect.d.ts      |     4 +
 .../vendors/echarts/types/src/loading/default.d.ts |    24 +
 .../vendors/echarts/types/src/model/Component.d.ts |   158 +
 zh/js/vendors/echarts/types/src/model/Global.d.ts  |   219 +
 zh/js/vendors/echarts/types/src/model/Model.d.ts   |    40 +
 .../echarts/types/src/model/OptionManager.d.ts     |    58 +
 zh/js/vendors/echarts/types/src/model/Series.d.ts  |   171 +
 .../echarts/types/src/model/globalDefault.d.ts     |    68 +
 .../types/src/model/internalComponentCreator.d.ts  |     8 +
 .../echarts/types/src/model/mixin/areaStyle.d.ts   |     9 +
 .../echarts/types/src/model/mixin/dataFormat.d.ts  |    51 +
 .../echarts/types/src/model/mixin/itemStyle.d.ts   |    10 +
 .../echarts/types/src/model/mixin/lineStyle.d.ts   |    10 +
 .../types/src/model/mixin/makeStyleMapper.d.ts     |     3 +
 .../echarts/types/src/model/mixin/palette.d.ts     |    11 +
 .../echarts/types/src/model/mixin/textStyle.d.ts   |    18 +
 .../echarts/types/src/model/referHelper.d.ts       |    37 +
 .../types/src/preprocessor/backwardCompat.d.ts     |     2 +
 .../types/src/preprocessor/helper/compatStyle.d.ts |     1 +
 .../echarts/types/src/processor/dataFilter.d.ts    |     2 +
 .../echarts/types/src/processor/dataSample.d.ts    |     2 +
 .../echarts/types/src/processor/dataStack.d.ts     |     2 +
 .../types/src/processor/negativeDataFilter.d.ts    |     2 +
 .../types/src/renderer/installCanvasRenderer.d.ts  |     2 +
 .../types/src/renderer/installSVGRenderer.d.ts     |     2 +
 .../vendors/echarts/types/src/scale/Interval.d.ts  |    43 +
 zh/js/vendors/echarts/types/src/scale/Log.d.ts     |    44 +
 zh/js/vendors/echarts/types/src/scale/Ordinal.d.ts |   127 +
 zh/js/vendors/echarts/types/src/scale/Scale.d.ts   |    92 +
 zh/js/vendors/echarts/types/src/scale/Time.d.ts    |    39 +
 zh/js/vendors/echarts/types/src/scale/helper.d.ts  |    26 +
 zh/js/vendors/echarts/types/src/theme/dark.d.ts    |   235 +
 zh/js/vendors/echarts/types/src/theme/light.d.ts   |     5 +
 .../echarts/types/src/util/ECEventProcessor.d.ts   |    34 +
 zh/js/vendors/echarts/types/src/util/KDTree.d.ts   |    48 +
 .../vendors/echarts/types/src/util/animation.d.ts  |    37 +
 zh/js/vendors/echarts/types/src/util/clazz.d.ts    |    84 +
 .../vendors/echarts/types/src/util/component.d.ts  |    32 +
 .../types/src/util/conditionalExpression.d.ts      |   142 +
 zh/js/vendors/echarts/types/src/util/decal.d.ts    |    10 +
 zh/js/vendors/echarts/types/src/util/event.d.ts    |     2 +
 zh/js/vendors/echarts/types/src/util/format.d.ts   |    76 +
 zh/js/vendors/echarts/types/src/util/graphic.d.ts  |   225 +
 .../vendors/echarts/types/src/util/innerStore.d.ts |    25 +
 zh/js/vendors/echarts/types/src/util/layout.d.ts   |   162 +
 zh/js/vendors/echarts/types/src/util/log.d.ts      |    19 +
 zh/js/vendors/echarts/types/src/util/model.d.ts    |   282 +
 zh/js/vendors/echarts/types/src/util/number.d.ts   |   195 +
 .../echarts/types/src/util/quickSelect.d.ts        |    17 +
 .../echarts/types/src/util/shape/sausage.d.ts      |    24 +
 zh/js/vendors/echarts/types/src/util/states.d.ts   |   115 +
 .../echarts/types/src/util/styleCompat.d.ts        |    34 +
 zh/js/vendors/echarts/types/src/util/symbol.d.ts   |    15 +
 zh/js/vendors/echarts/types/src/util/throttle.d.ts |    43 +
 zh/js/vendors/echarts/types/src/util/time.d.ts     |    54 +
 zh/js/vendors/echarts/types/src/util/types.d.ts    |  1335 +
 zh/js/vendors/echarts/types/src/util/vendor.d.ts   |     1 +
 zh/js/vendors/echarts/types/src/view/Chart.d.ts    |    85 +
 .../vendors/echarts/types/src/view/Component.d.ts  |    61 +
 .../types/src/visual/LegendVisualProvider.d.ts     |    15 +
 .../echarts/types/src/visual/VisualMapping.d.ts    |   160 +
 zh/js/vendors/echarts/types/src/visual/aria.d.ts   |     3 +
 .../types/src/visual/commonVisualTypes.d.ts        |    13 +
 zh/js/vendors/echarts/types/src/visual/decal.d.ts  |     3 +
 zh/js/vendors/echarts/types/src/visual/helper.d.ts |    11 +
 zh/js/vendors/echarts/types/src/visual/style.d.ts  |     5 +
 zh/js/vendors/echarts/types/src/visual/symbol.d.ts |     4 +
 .../echarts/types/src/visual/visualDefault.d.ts    |     7 +
 .../echarts/types/src/visual/visualSolution.d.ts   |    33 +
 zh/js/vendors/echarts@4.8.0/echarts.min.js         |    22 +
 zh/js/vendors/ecurl                                |     1 +
 zh/js/vendors/element-ui@2.15.14/index.js          |     1 +
 zh/js/vendors/element-ui@2.15.14/lib/index.js      |     1 +
 .../lib/theme-chalk/fonts/element-icons.ttf        |   Bin 0 -> 55956 bytes
 .../lib/theme-chalk/fonts/element-icons.woff       |   Bin 0 -> 28200 bytes
 .../element-ui@2.15.14/lib/theme-chalk/index.css   |     1 +
 zh/js/vendors/jquery@3.7.1/dist/jquery.min.js      |     2 +
 zh/js/vendors/js-beautify@1.11.0/beautifier.min.js |     2 +
 zh/js/vendors/lodash@3.10.1/lodash.min.js          |    17 +
 zh/js/vendors/lottie-web@5.7.6/lottie.min.js       |    15 +
 .../base/browser/ui/codicons/codicon/codicon.ttf   |   Bin 0 -> 66044 bytes
 .../min/vs/base/worker/workerMain.js               |    18 +
 .../min/vs/basic-languages/css/css.js              |     7 +
 .../min/vs/basic-languages/html/html.js            |     7 +
 .../vs/basic-languages/javascript/javascript.js    |     7 +
 .../vs/basic-languages/typescript/typescript.js    |     7 +
 .../min/vs/editor/editor.main.css                  |     6 +
 .../min/vs/editor/editor.main.js                   |   764 +
 .../min/vs/editor/editor.main.nls.js               |    11 +
 .../min/vs/editor/editor.main.nls.zh-cn.js         |    13 +
 .../min/vs/language/typescript/tsMode.js           |     7 +
 .../min/vs/language/typescript/tsWorker.js         |    21 +
 .../vendors/monaco-editor@0.27.0/min/vs/loader.js  |    11 +
 zh/js/vendors/pace-js@1.2.4/pace.min.js            |     6 +
 zh/js/vendors/prettier@2.3.2/parser-babel.js       |    22 +
 zh/js/vendors/prettier@2.3.2/parser-typescript.js  |    22 +
 zh/js/vendors/prettier@2.3.2/standalone.js         |    76 +
 zh/js/vendors/prettier@2.3.2/third-party.js        | 11283 +++
 .../scrollReveal.js@4.0.7/scrollreveal.min.js      |    12 +
 zh/js/vendors/seedrandom@3.0.5/seedrandom.min.js   |     1 +
 zh/js/vendors/sweetalert@2.1.2/sweetalert.min.js   |     1 +
 .../vanilla-lazyload@12.0.3/lazyload.min.js        |     2 +
 zh/js/vendors/vue@2.6.14/vue.min.js                |     6 +
 zh/maillist.html                                   |    21 +-
 zh/option-gl.html                                  |    23 +-
 zh/option.html                                     |    23 +-
 zh/option3.html                                    |    23 +-
 zh/resources.html                                  |    21 +-
 zh/security.html                                   |    21 +-
 zh/spreadsheet.html                                |    27 +-
 zh/theme-builder.html                              |    21 +-
 zh/theme-builder/main.css                          |   235 +-
 zh/tutorial.html                                   |    23 +-
 3645 files changed, 1306590 insertions(+), 1406 deletions(-)

diff --git a/components/builder.html b/components/builder.html
index f7c2cdc14..40266ea98 100644
--- a/components/builder.html
+++ b/components/builder.html
@@ -1,13 +1,14 @@
-<!DOCTYPE html><html lang="zh-CN"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no"><meta name="description" content="Apache ECharts,一款基于JavaScript的数据可视化图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表。"><meta name="keywords" content="echarts,apache,charts,data-visualization,charting-library,visualization,data-viz,canvas,svg,plot,graph"><link rel="shortcut icon" href="https://echarts [...]
-</script><script type="text/javascript" src="https://lib.baomitu.com/pace/1.2.4/pace.min.js"></script><script id="font-hack" type="text/javascript">if (/windows/i.test(navigator.userAgent)) {
+<!DOCTYPE html><html lang="zh-CN"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no"><meta name="description" content="Apache ECharts,一款基于JavaScript的数据可视化图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表。"><meta name="keywords" content="echarts,apache,charts,data-visualization,charting-library,visualization,data-viz,canvas,svg,plot,graph"><link rel="shortcut icon" href="https://echarts [...]
+</script><script type="text/javascript" src="https://echarts.apache.org/zh/./js/vendors/pace-js@1.2.4/pace.min.js"></script><script id="font-hack" type="text/javascript">if (/windows/i.test(navigator.userAgent)) {
     var el = document.createElement('style');
     el.innerText = ''
         + '@font-face {font-family:"noto-thin";src:local("Microsoft Yahei");}'
         + '@font-face {font-family:"noto-light";src:local("Microsoft Yahei");}';
     document.head.insertBefore(el, document.getElementById('font-hack'));
 }
-</script><title>ECharts 在线构建</title><script type="text/javascript" src="https://registry.npmmirror.com/jquery/3.7.1/files/dist/jquery.min.js"></script></head><!--[if lte IE 8]><body class="lower-ie"><div id="lowie-main"><img src="https://echarts.apache.org/zh/images/forie.png?_v_=20240226" alt="ie tip"></div></body><![endif]-->
-<!--[if (gt IE 8)|!(IE)]><body></body><![endif]--><noscript><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript><div id="apache-banner"><div class="txt"><p>请访问 Apache ECharts 的官网 &nbsp;</p><a id="a1" href="https://echarts.apache.org/zh/index.html">https://echarts.apache.org</a></div><a href="https://echarts.apache.org" target="_blank" onclick="logApache()" class="btn btn-main"><div>访问官网</div></a><a href="javascript:;" onclick="closeApacheB [...]
+</script><title>ECharts 在线构建</title><script type="text/javascript" src="https://echarts.apache.org/zh/./js/vendors/jquery@3.7.1/dist/jquery.min.js"></script></head><!--[if lte IE 8]><body class="lower-ie"><div id="lowie-main"><img src="https://echarts.apache.org/zh/images/forie.png?_v_=20240226" alt="ie tip"></div></body><![endif]-->
+<!--[if (gt IE 8)|!(IE)]><body></body><![endif]--><noscript><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript><div id="apache-banner"><div class="txt"><p>请访问 Apache ECharts 的官网 &nbsp;</p><a id="a1" href="https://echarts.apache.org/zh/index.html">https://echarts.apache.org</a></div><a href="https://echarts.apache.org" target="_blank" onclick="logApache()" class="btn btn-main"><div>访问官网</div></a><a href="javascript:;" onclick="closeApacheB [...]
+</script><script src="https://registry.npmmirror.com/compare-versions/3.6.0/files/index.js"></script><script>var $versionsDom = document.querySelector('#versions'); 
 
 fetch('https://registry.npmmirror.com/-/v1/search?text=echarts&size=1').then(res => res.json()).then(json => {
     var versions = json.objects[0].package.versions.sort((v1, v2) => compareVersions(v2, v1, '>'));
@@ -74,16 +75,4 @@ $("#build").click(function () {
     _hmt.push(['_trackEvent', 'builder', 'build', $versionsDom.value || '5', log]);
 
     window.open('https://echarts.apache.org/zh/builder/echarts.html?' + parameters);
-});</script><!-- Baidu Tongji--><script type="text/javascript">var _hmt = _hmt || [];
-(function() {
-var hm = document.createElement("script");
-
-hm.src = "https://hm.baidu.com/hm.js?54b918eee37cb8a7045f0fd0f0b24395";
-
-var s = document.getElementsByTagName("script")[0];
-s.parentNode.insertBefore(hm, s);
-})();
-</script><!-- Google Analytics--><script type="text/javascript" async src="https://www.googletagmanager.com/gtag/js?id=UA-141228404-1"></script><script type="text/javascript">window.dataLayer = window.dataLayer || [];
-function gtag(){dataLayer.push(arguments);}
-gtag('js', new Date());
-gtag('config', 'UA-141228404-1');</script></html>
\ No newline at end of file
+});</script></html>
\ No newline at end of file
diff --git a/components/download.html b/components/download.html
index bcd622182..47bb26f3d 100644
--- a/components/download.html
+++ b/components/download.html
@@ -1,13 +1,14 @@
-<!DOCTYPE html><html lang="zh-CN"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no"><meta name="description" content="Apache ECharts,一款基于JavaScript的数据可视化图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表。"><meta name="keywords" content="echarts,apache,charts,data-visualization,charting-library,visualization,data-viz,canvas,svg,plot,graph"><link rel="shortcut icon" href="https://echarts [...]
-</script><script type="text/javascript" src="https://lib.baomitu.com/pace/1.2.4/pace.min.js"></script><script id="font-hack" type="text/javascript">if (/windows/i.test(navigator.userAgent)) {
+<!DOCTYPE html><html lang="zh-CN"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no"><meta name="description" content="Apache ECharts,一款基于JavaScript的数据可视化图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表。"><meta name="keywords" content="echarts,apache,charts,data-visualization,charting-library,visualization,data-viz,canvas,svg,plot,graph"><link rel="shortcut icon" href="https://echarts [...]
+</script><script type="text/javascript" src="https://echarts.apache.org/zh/./js/vendors/pace-js@1.2.4/pace.min.js"></script><script id="font-hack" type="text/javascript">if (/windows/i.test(navigator.userAgent)) {
     var el = document.createElement('style');
     el.innerText = ''
         + '@font-face {font-family:"noto-thin";src:local("Microsoft Yahei");}'
         + '@font-face {font-family:"noto-light";src:local("Microsoft Yahei");}';
     document.head.insertBefore(el, document.getElementById('font-hack'));
 }
-</script><title>下载 - Apache ECharts</title><script type="text/javascript" src="https://registry.npmmirror.com/jquery/3.7.1/files/dist/jquery.min.js"></script></head><!--[if lte IE 8]><body class="lower-ie"><div id="lowie-main"><img src="https://echarts.apache.org/zh/images/forie.png?_v_=20240226" alt="ie tip"></div></body><![endif]-->
-<!--[if (gt IE 8)|!(IE)]><body></body><![endif]--><noscript><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript><div id="apache-banner"><div class="txt"><p>请访问 Apache ECharts 的官网 &nbsp;</p><a id="a1" href="https://echarts.apache.org/zh/index.html">https://echarts.apache.org</a></div><a href="https://echarts.apache.org" target="_blank" onclick="logApache()" class="btn btn-main"><div>访问官网</div></a><a href="javascript:;" onclick="closeApacheB [...]
+</script><title>下载 - Apache ECharts</title><script type="text/javascript" src="https://echarts.apache.org/zh/./js/vendors/jquery@3.7.1/dist/jquery.min.js"></script></head><!--[if lte IE 8]><body class="lower-ie"><div id="lowie-main"><img src="https://echarts.apache.org/zh/images/forie.png?_v_=20240226" alt="ie tip"></div></body><![endif]-->
+<!--[if (gt IE 8)|!(IE)]><body></body><![endif]--><noscript><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript><div id="apache-banner"><div class="txt"><p>请访问 Apache ECharts 的官网 &nbsp;</p><a id="a1" href="https://echarts.apache.org/zh/index.html">https://echarts.apache.org</a></div><a href="https://echarts.apache.org" target="_blank" onclick="logApache()" class="btn btn-main"><div>访问官网</div></a><a href="javascript:;" onclick="closeApacheB [...]
+</script><script src="https://echarts.apache.org/zh/js/download.js?_v_=74452f1763"></script><script type="text/javascript">document.getElementById('nav-download').className = 'active';
 
 //- $('.download-echarts').click(function (e) {
 //-     var el = document.createElement('div');
@@ -27,16 +28,4 @@
 //- });
 //- $('.download-theme').click(function () {
 //-     _hmt.push(['_trackEvent', 'download', 'download-theme', '5.0.0']);
-//- });</script><!-- Baidu Tongji--><script type="text/javascript">var _hmt = _hmt || [];
-(function() {
-var hm = document.createElement("script");
-
-hm.src = "https://hm.baidu.com/hm.js?54b918eee37cb8a7045f0fd0f0b24395";
-
-var s = document.getElementsByTagName("script")[0];
-s.parentNode.insertBefore(hm, s);
-})();
-</script><!-- Google Analytics--><script type="text/javascript" async src="https://www.googletagmanager.com/gtag/js?id=UA-141228404-1"></script><script type="text/javascript">window.dataLayer = window.dataLayer || [];
-function gtag(){dataLayer.push(arguments);}
-gtag('js', new Date());
-gtag('config', 'UA-141228404-1');</script></html>
\ No newline at end of file
+//- });</script></html>
\ No newline at end of file
diff --git a/en/404.html b/en/404.html
index 156259abd..862871f96 100644
--- a/en/404.html
+++ b/en/404.html
@@ -1,22 +1,11 @@
-<!DOCTYPE html><html lang="zh-CN"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no"><meta name="description" content="Apache ECharts,一款基于JavaScript的数据可视化图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表。"><meta name="keywords" content="echarts,apache,charts,data-visualization,charting-library,visualization,data-viz,canvas,svg,plot,graph"><link rel="shortcut icon" href="https://echarts [...]
-</script><script type="text/javascript" src="https://lib.baomitu.com/pace/1.2.4/pace.min.js"></script><script id="font-hack" type="text/javascript">if (/windows/i.test(navigator.userAgent)) {
+<!DOCTYPE html><html lang="zh-CN"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no"><meta name="description" content="Apache ECharts,一款基于JavaScript的数据可视化图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表。"><meta name="keywords" content="echarts,apache,charts,data-visualization,charting-library,visualization,data-viz,canvas,svg,plot,graph"><link rel="shortcut icon" href="https://echarts [...]
+</script><script type="text/javascript" src="https://echarts.apache.org/zh/./js/vendors/pace-js@1.2.4/pace.min.js"></script><script id="font-hack" type="text/javascript">if (/windows/i.test(navigator.userAgent)) {
     var el = document.createElement('style');
     el.innerText = ''
         + '@font-face {font-family:"noto-thin";src:local("Microsoft Yahei");}'
         + '@font-face {font-family:"noto-light";src:local("Microsoft Yahei");}';
     document.head.insertBefore(el, document.getElementById('font-hack'));
 }
-</script><script type="text/javascript" src="https://registry.npmmirror.com/jquery/3.7.1/files/dist/jquery.min.js"></script></head><!--[if lte IE 8]><body class="lower-ie"><div id="lowie-main"><img src="https://echarts.apache.org/zh/images/forie.png?_v_=20240226" alt="ie tip"></div></body><![endif]-->
-<!--[if (gt IE 8)|!(IE)]><body></body><![endif]--><noscript><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript><div id="apache-banner"><div class="txt"><p>请访问 Apache ECharts 的官网 &nbsp;</p><a id="a1" href="https://echarts.apache.org/zh/index.html">https://echarts.apache.org</a></div><a href="https://echarts.apache.org" target="_blank" onclick="logApache()" class="btn btn-main"><div>访问官网</div></a><a href="javascript:;" onclick="closeApacheB [...]
-(function() {
-var hm = document.createElement("script");
-
-hm.src = "https://hm.baidu.com/hm.js?54b918eee37cb8a7045f0fd0f0b24395";
-
-var s = document.getElementsByTagName("script")[0];
-s.parentNode.insertBefore(hm, s);
-})();
-</script><!-- Google Analytics--><script type="text/javascript" async src="https://www.googletagmanager.com/gtag/js?id=UA-141228404-1"></script><script type="text/javascript">window.dataLayer = window.dataLayer || [];
-function gtag(){dataLayer.push(arguments);}
-gtag('js', new Date());
-gtag('config', 'UA-141228404-1');</script></html>
\ No newline at end of file
+</script><script type="text/javascript" src="https://echarts.apache.org/zh/./js/vendors/jquery@3.7.1/dist/jquery.min.js"></script></head><!--[if lte IE 8]><body class="lower-ie"><div id="lowie-main"><img src="https://echarts.apache.org/zh/images/forie.png?_v_=20240226" alt="ie tip"></div></body><![endif]-->
+<!--[if (gt IE 8)|!(IE)]><body></body><![endif]--><noscript><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript><div id="apache-banner"><div class="txt"><p>请访问 Apache ECharts 的官网 &nbsp;</p><a id="a1" href="https://echarts.apache.org/zh/index.html">https://echarts.apache.org</a></div><a href="https://echarts.apache.org" target="_blank" onclick="logApache()" class="btn btn-main"><div>访问官网</div></a><a href="javascript:;" onclick="closeApacheB [...]
+</script><script type="text/javascript"></script></html>
\ No newline at end of file
diff --git a/en/api.html b/en/api.html
index 1184de200..9d02976e4 100644
--- a/en/api.html
+++ b/en/api.html
@@ -1,5 +1,5 @@
-<!DOCTYPE html><html lang="en-US"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no"><meta name="description" content="Apache ECharts, a powerful, interactive charting and visualization library for browser"><meta name="keywords" content="echarts,apache,charts,data-visualization,charting-library,visualization,data-viz,canvas,svg,plot,graph"><link rel="shortcut icon" h [...]
-</script><script type="text/javascript" src="https://fastly.jsdelivr.net/npm/pace-js@1.2.4/pace.min.js"></script><script id="font-hack" type="text/javascript">if (/windows/i.test(navigator.userAgent)) {
+<!DOCTYPE html><html lang="en-US"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no"><meta name="description" content="Apache ECharts, a powerful, interactive charting and visualization library for browser"><meta name="keywords" content="echarts,apache,charts,data-visualization,charting-library,visualization,data-viz,canvas,svg,plot,graph"><link rel="shortcut icon" h [...]
+</script><script type="text/javascript" src="https://echarts.apache.org/en/./js/vendors/pace-js@1.2.4/pace.min.js"></script><script id="font-hack" type="text/javascript">if (/windows/i.test(navigator.userAgent)) {
     var el = document.createElement('style');
     el.innerText = ''
         + '@font-face {font-family:"noto-thin";src:local("Microsoft Yahei");}'
@@ -9,8 +9,9 @@
 </script><title>Documentation - Apache ECharts</title><style>html, body {
     /* position: sticky should not have overflow parents.*/
     overflow-x: hidden;
-}</style><link rel="stylesheet" href="https://fastly.jsdelivr.net/npm/element-ui@2.15.14/lib/theme-chalk/index.css"><link rel="stylesheet" href="https://echarts.apache.org/en/css/doc-bundle.css?_v_=6abf01cb4e"><script type="text/javascript" src="https://fastly.jsdelivr.net/npm/jquery@3.7.1/dist/jquery.min.js"></script></head><!--[if lte IE 8]><body class="lower-ie"><div id="lowie-main"><img src="https://echarts.apache.org/en/images/forie.png?_v_=20240226" alt="ie tip"></div></body><![endif]-->
-<!--[if (gt IE 8)|!(IE)]><body></body><![endif]--><noscript><div class="no-script"><strong>We're sorry, but Apache ECharts website doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></div></noscript><div id="apache-banner"><div class="txt"><p>Please visit the official Apache ECharts Website at</p><a id="a2" href="https://echarts.apache.org/en/index.html">https://echarts.apache.org</a></div><a href="https://echarts.apache.org" target="_blank" onclick=" [...]
+}</style><link rel="stylesheet" href="https://echarts.apache.org/en/./js/vendors/element-ui@2.15.14/lib/theme-chalk/index.css"><link rel="stylesheet" href="https://echarts.apache.org/en/css/doc-bundle.css?_v_=6abf01cb4e"><script type="text/javascript" src="https://echarts.apache.org/en/./js/vendors/jquery@3.7.1/dist/jquery.min.js"></script></head><!--[if lte IE 8]><body class="lower-ie"><div id="lowie-main"><img src="https://echarts.apache.org/en/images/forie.png?_v_=20240226" alt="ie ti [...]
+<!--[if (gt IE 8)|!(IE)]><body></body><![endif]--><noscript><div class="no-script"><strong>We're sorry, but Apache ECharts website doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></div></noscript><div id="apache-banner"><div class="txt"><p>Please visit the official Apache ECharts Website at</p><a id="a2" href="https://echarts.apache.org/en/index.html">https://echarts.apache.org</a></div><a href="https://echarts.apache.org" target="_blank" onclick=" [...]
+</script><script src="https://echarts.apache.org/en/./js/vendors/vue@2.6.14/vue.min.js"></script><script src="https://echarts.apache.org/en/./js/vendors/element-ui@2.15.14/index.js"></script><script src="https://echarts.apache.org/en/./js/vendors/codemirror@5.56.0/codemirror.min.js"></script><script src="https://echarts.apache.org/en/./js/vendors/codemirror@5.56.0/mode/javascript/javascript.js"></script><script src="https://echarts.apache.org/en/./js/vendors/js-beautify@1.11.0/beautifier [...]
 window.EC_WWW_CDN_PAY_ROOT = 'https://echarts.apache.org';
 </script><script type="text/javascript">window.globalArgsExtra = {
     baseUrl: 'documents/api-parts',
@@ -20,16 +21,4 @@ window.EC_WWW_CDN_PAY_ROOT = 'https://echarts.apache.org';
 if (window.EC_WWW_CDN_PAY_ROOT) {
     window.globalArgsExtra.cdnRoot = window.EC_WWW_CDN_PAY_ROOT + '/en/' + window.globalArgsExtra.baseUrl
 }</script><script type="text/javascript">window.globalArgsExtra.version = '5d44d5e381';
-echartsDoc.init('#ec-doc-main', window.globalArgsExtra);</script><!-- Baidu Tongji--><script type="text/javascript">var _hmt = _hmt || [];
-(function() {
-var hm = document.createElement("script");
-
-hm.src = "https://hm.baidu.com/hm.js?54b918eee37cb8a7045f0fd0f0b24395";
-
-var s = document.getElementsByTagName("script")[0];
-s.parentNode.insertBefore(hm, s);
-})();
-</script><!-- Google Analytics--><script type="text/javascript" async src="https://www.googletagmanager.com/gtag/js?id=UA-141228404-1"></script><script type="text/javascript">window.dataLayer = window.dataLayer || [];
-function gtag(){dataLayer.push(arguments);}
-gtag('js', new Date());
-gtag('config', 'UA-141228404-1');</script></html>
\ No newline at end of file
+echartsDoc.init('#ec-doc-main', window.globalArgsExtra);</script></html>
\ No newline at end of file
diff --git a/en/builder.html b/en/builder.html
index f61b11eae..0b08b2e33 100644
--- a/en/builder.html
+++ b/en/builder.html
@@ -1,13 +1,14 @@
-<!DOCTYPE html><html lang="en-US"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no"><meta name="description" content="Apache ECharts, a powerful, interactive charting and visualization library for browser"><meta name="keywords" content="echarts,apache,charts,data-visualization,charting-library,visualization,data-viz,canvas,svg,plot,graph"><link rel="shortcut icon" h [...]
-</script><script type="text/javascript" src="https://fastly.jsdelivr.net/npm/pace-js@1.2.4/pace.min.js"></script><script id="font-hack" type="text/javascript">if (/windows/i.test(navigator.userAgent)) {
+<!DOCTYPE html><html lang="en-US"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no"><meta name="description" content="Apache ECharts, a powerful, interactive charting and visualization library for browser"><meta name="keywords" content="echarts,apache,charts,data-visualization,charting-library,visualization,data-viz,canvas,svg,plot,graph"><link rel="shortcut icon" h [...]
+</script><script type="text/javascript" src="https://echarts.apache.org/en/./js/vendors/pace-js@1.2.4/pace.min.js"></script><script id="font-hack" type="text/javascript">if (/windows/i.test(navigator.userAgent)) {
     var el = document.createElement('style');
     el.innerText = ''
         + '@font-face {font-family:"noto-thin";src:local("Microsoft Yahei");}'
         + '@font-face {font-family:"noto-light";src:local("Microsoft Yahei");}';
     document.head.insertBefore(el, document.getElementById('font-hack'));
 }
-</script><title>ECharts Online Builder</title><script type="text/javascript" src="https://fastly.jsdelivr.net/npm/jquery@3.7.1/dist/jquery.min.js"></script></head><!--[if lte IE 8]><body class="lower-ie"><div id="lowie-main"><img src="https://echarts.apache.org/en/images/forie.png?_v_=20240226" alt="ie tip"></div></body><![endif]-->
-<!--[if (gt IE 8)|!(IE)]><body></body><![endif]--><noscript><div class="no-script"><strong>We're sorry, but Apache ECharts website doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></div></noscript><div id="apache-banner"><div class="txt"><p>Please visit the official Apache ECharts Website at</p><a id="a2" href="https://echarts.apache.org/en/index.html">https://echarts.apache.org</a></div><a href="https://echarts.apache.org" target="_blank" onclick=" [...]
+</script><title>ECharts Online Builder</title><script type="text/javascript" src="https://echarts.apache.org/en/./js/vendors/jquery@3.7.1/dist/jquery.min.js"></script></head><!--[if lte IE 8]><body class="lower-ie"><div id="lowie-main"><img src="https://echarts.apache.org/en/images/forie.png?_v_=20240226" alt="ie tip"></div></body><![endif]-->
+<!--[if (gt IE 8)|!(IE)]><body></body><![endif]--><noscript><div class="no-script"><strong>We're sorry, but Apache ECharts website doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></div></noscript><div id="apache-banner"><div class="txt"><p>Please visit the official Apache ECharts Website at</p><a id="a2" href="https://echarts.apache.org/en/index.html">https://echarts.apache.org</a></div><a href="https://echarts.apache.org" target="_blank" onclick=" [...]
+</script><script src="https://fastly.jsdelivr.net/npm/compare-versions@3.6.0/index.min.js"></script><script>var $versionsDom = document.querySelector('#versions'); 
 
 fetch('https://data.jsdelivr.com/v1/package/npm/echarts').then(res => res.json()).then(json => {
     var versions = json.versions;
@@ -74,16 +75,4 @@ $("#build").click(function () {
     _hmt.push(['_trackEvent', 'builder', 'build', $versionsDom.value || '5', log]);
 
     window.open('https://echarts.apache.org/en/builder/echarts.html?' + parameters);
-});</script><!-- Baidu Tongji--><script type="text/javascript">var _hmt = _hmt || [];
-(function() {
-var hm = document.createElement("script");
-
-hm.src = "https://hm.baidu.com/hm.js?54b918eee37cb8a7045f0fd0f0b24395";
-
-var s = document.getElementsByTagName("script")[0];
-s.parentNode.insertBefore(hm, s);
-})();
-</script><!-- Google Analytics--><script type="text/javascript" async src="https://www.googletagmanager.com/gtag/js?id=UA-141228404-1"></script><script type="text/javascript">window.dataLayer = window.dataLayer || [];
-function gtag(){dataLayer.push(arguments);}
-gtag('js', new Date());
-gtag('config', 'UA-141228404-1');</script></html>
\ No newline at end of file
+});</script></html>
\ No newline at end of file
diff --git a/en/builder/echarts.html b/en/builder/echarts.html
index 3912f5226..6ea982d5d 100644
--- a/en/builder/echarts.html
+++ b/en/builder/echarts.html
@@ -64,7 +64,7 @@
                 'rollup': 'lib/rollup.browser',
                 'transformDev': 'lib/transform-dev-bundle'
             },
-            urlArgs: 'v=1737096470827'
+            urlArgs: 'v=1738677094048'
         });
 
         require(['build']);
diff --git a/en/changelog.html b/en/changelog.html
index 16a4427ea..0b03e25e4 100644
--- a/en/changelog.html
+++ b/en/changelog.html
@@ -1,12 +1,12 @@
-<!DOCTYPE html><html lang="en-US"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no"><meta name="description" content="Apache ECharts, a powerful, interactive charting and visualization library for browser"><meta name="keywords" content="echarts,apache,charts,data-visualization,charting-library,visualization,data-viz,canvas,svg,plot,graph"><link rel="shortcut icon" h [...]
-</script><script type="text/javascript" src="https://fastly.jsdelivr.net/npm/pace-js@1.2.4/pace.min.js"></script><script id="font-hack" type="text/javascript">if (/windows/i.test(navigator.userAgent)) {
+<!DOCTYPE html><html lang="en-US"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no"><meta name="description" content="Apache ECharts, a powerful, interactive charting and visualization library for browser"><meta name="keywords" content="echarts,apache,charts,data-visualization,charting-library,visualization,data-viz,canvas,svg,plot,graph"><link rel="shortcut icon" h [...]
+</script><script type="text/javascript" src="https://echarts.apache.org/en/./js/vendors/pace-js@1.2.4/pace.min.js"></script><script id="font-hack" type="text/javascript">if (/windows/i.test(navigator.userAgent)) {
     var el = document.createElement('style');
     el.innerText = ''
         + '@font-face {font-family:"noto-thin";src:local("Microsoft Yahei");}'
         + '@font-face {font-family:"noto-light";src:local("Microsoft Yahei");}';
     document.head.insertBefore(el, document.getElementById('font-hack'));
 }
-</script><title>Changelog - Apache ECharts</title><script type="text/javascript" src="https://fastly.jsdelivr.net/npm/jquery@3.7.1/dist/jquery.min.js"></script></head><!--[if lte IE 8]><body class="lower-ie"><div id="lowie-main"><img src="https://echarts.apache.org/en/images/forie.png?_v_=20240226" alt="ie tip"></div></body><![endif]-->
+</script><title>Changelog - Apache ECharts</title><script type="text/javascript" src="https://echarts.apache.org/en/./js/vendors/jquery@3.7.1/dist/jquery.min.js"></script></head><!--[if lte IE 8]><body class="lower-ie"><div id="lowie-main"><img src="https://echarts.apache.org/en/images/forie.png?_v_=20240226" alt="ie tip"></div></body><![endif]-->
 <!--[if (gt IE 8)|!(IE)]><body></body><![endif]--><noscript><div class="no-script"><strong>We're sorry, but Apache ECharts website doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></div></noscript><div id="apache-banner"><div class="txt"><p>Please visit the official Apache ECharts Website at</p><a id="a2" href="https://echarts.apache.org/en/index.html">https://echarts.apache.org</a></div><a href="https://echarts.apache.org" target="_blank" onclick=" [...]
 <div class="time">2024-12-28</div>
 
@@ -2163,21 +2163,10 @@ Fix the line label can not be returned to its original opacity after <code>&quot
 <ul>
 <li>The new echarts</li>
 </ul>
-<footer class="inner-footer"><div class="container"><div class="row"><div class="col-md-8"><p>Copyright © 2017-2025, The Apache Software Foundation Apache ECharts, ECharts, Apache, the Apache feather, and the Apache ECharts project logo are either registered trademarks or trademarks of the Apache Software Foundation.</p></div><div id="footer-icon-panel" class="col-md-4"><a href="https://www.apache.org"><img src="https://echarts.apache.org/en/images/asf_logo.svg?_v_=20240226" class="foote [...]
+<footer class="inner-footer"><div class="container"><div class="row"><div class="col-md-8"><p>Copyright © 2017-2025, The Apache Software Foundation Apache ECharts, ECharts, Apache, the Apache feather, and the Apache ECharts project logo are either registered trademarks or trademarks of the Apache Software Foundation.</p></div><div id="footer-icon-panel" class="col-md-4"><a href="https://www.apache.org"><img src="https://echarts.apache.org/en/images/asf_logo.svg?_v_=20240226" class="foote [...]
+</script><script type="text/javascript">document.getElementById('nav-doc').className = 'active';
 
 // Fix scroll position covered by nav
 window.addEventListener('hashchange', function() {
     scrollBy(0, -50);
-});</script><!-- Baidu Tongji--><script type="text/javascript">var _hmt = _hmt || [];
-(function() {
-var hm = document.createElement("script");
-
-hm.src = "https://hm.baidu.com/hm.js?54b918eee37cb8a7045f0fd0f0b24395";
-
-var s = document.getElementsByTagName("script")[0];
-s.parentNode.insertBefore(hm, s);
-})();
-</script><!-- Google Analytics--><script type="text/javascript" async src="https://www.googletagmanager.com/gtag/js?id=UA-141228404-1"></script><script type="text/javascript">window.dataLayer = window.dataLayer || [];
-function gtag(){dataLayer.push(arguments);}
-gtag('js', new Date());
-gtag('config', 'UA-141228404-1');</script></html>
\ No newline at end of file
+});</script></html>
\ No newline at end of file
diff --git a/en/cheat-sheet.html b/en/cheat-sheet.html
index a27368972..229720685 100644
--- a/en/cheat-sheet.html
+++ b/en/cheat-sheet.html
@@ -1,23 +1,12 @@
-<!DOCTYPE html><html lang="en-US"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no"><meta name="description" content="Apache ECharts, a powerful, interactive charting and visualization library for browser"><meta name="keywords" content="echarts,apache,charts,data-visualization,charting-library,visualization,data-viz,canvas,svg,plot,graph"><link rel="shortcut icon" h [...]
-</script><script type="text/javascript" src="https://fastly.jsdelivr.net/npm/pace-js@1.2.4/pace.min.js"></script><script id="font-hack" type="text/javascript">if (/windows/i.test(navigator.userAgent)) {
+<!DOCTYPE html><html lang="en-US"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no"><meta name="description" content="Apache ECharts, a powerful, interactive charting and visualization library for browser"><meta name="keywords" content="echarts,apache,charts,data-visualization,charting-library,visualization,data-viz,canvas,svg,plot,graph"><link rel="shortcut icon" h [...]
+</script><script type="text/javascript" src="https://echarts.apache.org/en/./js/vendors/pace-js@1.2.4/pace.min.js"></script><script id="font-hack" type="text/javascript">if (/windows/i.test(navigator.userAgent)) {
     var el = document.createElement('style');
     el.innerText = ''
         + '@font-face {font-family:"noto-thin";src:local("Microsoft Yahei");}'
         + '@font-face {font-family:"noto-light";src:local("Microsoft Yahei");}';
     document.head.insertBefore(el, document.getElementById('font-hack'));
 }
-</script><title>Cheat Sheet - Apache ECharts</title><script type="text/javascript" src="https://fastly.jsdelivr.net/npm/jquery@3.7.1/dist/jquery.min.js"></script></head><!--[if lte IE 8]><body class="lower-ie"><div id="lowie-main"><img src="https://echarts.apache.org/en/images/forie.png?_v_=20240226" alt="ie tip"></div></body><![endif]-->
-<!--[if (gt IE 8)|!(IE)]><body></body><![endif]--><noscript><div class="no-script"><strong>We're sorry, but Apache ECharts website doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></div></noscript><div id="apache-banner"><div class="txt"><p>Please visit the official Apache ECharts Website at</p><a id="a2" href="https://echarts.apache.org/en/index.html">https://echarts.apache.org</a></div><a href="https://echarts.apache.org" target="_blank" onclick=" [...]
-</script><script src="https://fastly.jsdelivr.net/npm/echarts@4.8.0/dist/echarts.min.js"></script><script src="https://echarts.apache.org/en/js/cheat-sheet-en.js?_v_=88bd4e804a"></script><!-- Baidu Tongji--><script type="text/javascript">var _hmt = _hmt || [];
-(function() {
-var hm = document.createElement("script");
-
-hm.src = "https://hm.baidu.com/hm.js?54b918eee37cb8a7045f0fd0f0b24395";
-
-var s = document.getElementsByTagName("script")[0];
-s.parentNode.insertBefore(hm, s);
-})();
-</script><!-- Google Analytics--><script type="text/javascript" async src="https://www.googletagmanager.com/gtag/js?id=UA-141228404-1"></script><script type="text/javascript">window.dataLayer = window.dataLayer || [];
-function gtag(){dataLayer.push(arguments);}
-gtag('js', new Date());
-gtag('config', 'UA-141228404-1');</script></html>
\ No newline at end of file
+</script><title>Cheat Sheet - Apache ECharts</title><script type="text/javascript" src="https://echarts.apache.org/en/./js/vendors/jquery@3.7.1/dist/jquery.min.js"></script></head><!--[if lte IE 8]><body class="lower-ie"><div id="lowie-main"><img src="https://echarts.apache.org/en/images/forie.png?_v_=20240226" alt="ie tip"></div></body><![endif]-->
+<!--[if (gt IE 8)|!(IE)]><body></body><![endif]--><noscript><div class="no-script"><strong>We're sorry, but Apache ECharts website doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></div></noscript><div id="apache-banner"><div class="txt"><p>Please visit the official Apache ECharts Website at</p><a id="a2" href="https://echarts.apache.org/en/index.html">https://echarts.apache.org</a></div><a href="https://echarts.apache.org" target="_blank" onclick=" [...]
+</script><script type="text/javascript">document.getElementById('nav-resources').className = 'active';
+</script><script src="https://echarts.apache.org/en/./js/vendors/echarts@4.8.0/echarts.min.js"></script><script src="https://echarts.apache.org/en/js/cheat-sheet-en.js?_v_=88bd4e804a"></script></html>
\ No newline at end of file
diff --git a/en/coding-standard.html b/en/coding-standard.html
index 35d2f496a..35e8eece6 100644
--- a/en/coding-standard.html
+++ b/en/coding-standard.html
@@ -1,12 +1,12 @@
-<!DOCTYPE html><html lang="en-US"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no"><meta name="description" content="Apache ECharts, a powerful, interactive charting and visualization library for browser"><meta name="keywords" content="echarts,apache,charts,data-visualization,charting-library,visualization,data-viz,canvas,svg,plot,graph"><link rel="shortcut icon" h [...]
-</script><script type="text/javascript" src="https://fastly.jsdelivr.net/npm/pace-js@1.2.4/pace.min.js"></script><script id="font-hack" type="text/javascript">if (/windows/i.test(navigator.userAgent)) {
+<!DOCTYPE html><html lang="en-US"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no"><meta name="description" content="Apache ECharts, a powerful, interactive charting and visualization library for browser"><meta name="keywords" content="echarts,apache,charts,data-visualization,charting-library,visualization,data-viz,canvas,svg,plot,graph"><link rel="shortcut icon" h [...]
+</script><script type="text/javascript" src="https://echarts.apache.org/en/./js/vendors/pace-js@1.2.4/pace.min.js"></script><script id="font-hack" type="text/javascript">if (/windows/i.test(navigator.userAgent)) {
     var el = document.createElement('style');
     el.innerText = ''
         + '@font-face {font-family:"noto-thin";src:local("Microsoft Yahei");}'
         + '@font-face {font-family:"noto-light";src:local("Microsoft Yahei");}';
     document.head.insertBefore(el, document.getElementById('font-hack'));
 }
-</script><title>Coding Standard - Apache ECharts</title><link rel="stylesheet" type="text/css" href="https://echarts.apache.org/en/vendors/prettify/prettify.css?_v_=20240226"><script type="text/javascript" src="https://fastly.jsdelivr.net/npm/code-prettify@0.1.0/src/prettify.min.js"></script><script type="text/javascript" src="https://fastly.jsdelivr.net/npm/code-prettify@0.1.0/src/lang-css.js"></script><script type="text/javascript" src="https://fastly.jsdelivr.net/npm/jquery@3.7.1/dist [...]
+</script><title>Coding Standard - Apache ECharts</title><link rel="stylesheet" type="text/css" href="https://echarts.apache.org/en/vendors/prettify/prettify.css?_v_=20240226"><script type="text/javascript" src="https://echarts.apache.org/en/./js/vendors/code-prettify@0.1.0/prettify.min.js"></script><script type="text/javascript" src="https://echarts.apache.org/en/./js/vendors/code-prettify@0.1.0/lang-css.js"></script><script type="text/javascript" src="https://echarts.apache.org/en/./js/ [...]
 <!--[if (gt IE 8)|!(IE)]><body></body><![endif]--><noscript><div class="no-script"><strong>We're sorry, but Apache ECharts website doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></div></noscript><div id="apache-banner"><div class="txt"><p>Please visit the official Apache ECharts Website at</p><a id="a2" href="https://echarts.apache.org/en/index.html">https://echarts.apache.org</a></div><a href="https://echarts.apache.org" target="_blank" onclick=" [...]
 <h3 id="file">File</h3>
 <p><strong>[MUST]</strong> JavaScript Source files must be encoded in UTF-8 without BOM.</p>
@@ -572,7 +572,8 @@ const arr = new Array();
 <p><strong>[MUST]</strong> Do not use <code>for in</code> in array traverse.</p>
 <h3 id="others">Others</h3>
 <p><strong>[MUST]</strong> Do not use <code>eval</code> and <code>with</code>. <code>new Function</code> can be used.</p>
-<footer class="inner-footer"><div class="container"><div class="row"><div class="col-md-8"><p>Copyright © 2017-2025, The Apache Software Foundation Apache ECharts, ECharts, Apache, the Apache feather, and the Apache ECharts project logo are either registered trademarks or trademarks of the Apache Software Foundation.</p></div><div id="footer-icon-panel" class="col-md-4"><a href="https://www.apache.org"><img src="https://echarts.apache.org/en/images/asf_logo.svg?_v_=20240226" class="foote [...]
+<footer class="inner-footer"><div class="container"><div class="row"><div class="col-md-8"><p>Copyright © 2017-2025, The Apache Software Foundation Apache ECharts, ECharts, Apache, the Apache feather, and the Apache ECharts project logo are either registered trademarks or trademarks of the Apache Software Foundation.</p></div><div id="footer-icon-panel" class="col-md-4"><a href="https://www.apache.org"><img src="https://echarts.apache.org/en/images/asf_logo.svg?_v_=20240226" class="foote [...]
+</script><script type="text/javascript">$(document).ready(function() {
     document.getElementById('nav-contribute').className = 'active';
 
     var $list = $('#standard-nav').empty();
@@ -605,16 +606,4 @@ const arr = new Array();
         $(el).addClass('prettyprint');
     });
     prettyPrint();
-});</script><!-- Baidu Tongji--><script type="text/javascript">var _hmt = _hmt || [];
-(function() {
-var hm = document.createElement("script");
-
-hm.src = "https://hm.baidu.com/hm.js?54b918eee37cb8a7045f0fd0f0b24395";
-
-var s = document.getElementsByTagName("script")[0];
-s.parentNode.insertBefore(hm, s);
-})();
-</script><!-- Google Analytics--><script type="text/javascript" async src="https://www.googletagmanager.com/gtag/js?id=UA-141228404-1"></script><script type="text/javascript">window.dataLayer = window.dataLayer || [];
-function gtag(){dataLayer.push(arguments);}
-gtag('js', new Date());
-gtag('config', 'UA-141228404-1');</script></html>
\ No newline at end of file
+});</script></html>
\ No newline at end of file
diff --git a/en/committers.html b/en/committers.html
index f7c213041..49e50a38b 100644
--- a/en/committers.html
+++ b/en/committers.html
@@ -1,22 +1,11 @@
-<!DOCTYPE html><html lang="en-US"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no"><meta name="description" content="Apache ECharts, a powerful, interactive charting and visualization library for browser"><meta name="keywords" content="echarts,apache,charts,data-visualization,charting-library,visualization,data-viz,canvas,svg,plot,graph"><link rel="shortcut icon" h [...]
-</script><script type="text/javascript" src="https://fastly.jsdelivr.net/npm/pace-js@1.2.4/pace.min.js"></script><script id="font-hack" type="text/javascript">if (/windows/i.test(navigator.userAgent)) {
+<!DOCTYPE html><html lang="en-US"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no"><meta name="description" content="Apache ECharts, a powerful, interactive charting and visualization library for browser"><meta name="keywords" content="echarts,apache,charts,data-visualization,charting-library,visualization,data-viz,canvas,svg,plot,graph"><link rel="shortcut icon" h [...]
+</script><script type="text/javascript" src="https://echarts.apache.org/en/./js/vendors/pace-js@1.2.4/pace.min.js"></script><script id="font-hack" type="text/javascript">if (/windows/i.test(navigator.userAgent)) {
     var el = document.createElement('style');
     el.innerText = ''
         + '@font-face {font-family:"noto-thin";src:local("Microsoft Yahei");}'
         + '@font-face {font-family:"noto-light";src:local("Microsoft Yahei");}';
     document.head.insertBefore(el, document.getElementById('font-hack'));
 }
-</script><title>Committers - Apache ECharts</title><script type="text/javascript" src="https://fastly.jsdelivr.net/npm/jquery@3.7.1/dist/jquery.min.js"></script></head><!--[if lte IE 8]><body class="lower-ie"><div id="lowie-main"><img src="https://echarts.apache.org/en/images/forie.png?_v_=20240226" alt="ie tip"></div></body><![endif]-->
-<!--[if (gt IE 8)|!(IE)]><body></body><![endif]--><noscript><div class="no-script"><strong>We're sorry, but Apache ECharts website doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></div></noscript><div id="apache-banner"><div class="txt"><p>Please visit the official Apache ECharts Website at</p><a id="a2" href="https://echarts.apache.org/en/index.html">https://echarts.apache.org</a></div><a href="https://echarts.apache.org" target="_blank" onclick=" [...]
-(function() {
-var hm = document.createElement("script");
-
-hm.src = "https://hm.baidu.com/hm.js?54b918eee37cb8a7045f0fd0f0b24395";
-
-var s = document.getElementsByTagName("script")[0];
-s.parentNode.insertBefore(hm, s);
-})();
-</script><!-- Google Analytics--><script type="text/javascript" async src="https://www.googletagmanager.com/gtag/js?id=UA-141228404-1"></script><script type="text/javascript">window.dataLayer = window.dataLayer || [];
-function gtag(){dataLayer.push(arguments);}
-gtag('js', new Date());
-gtag('config', 'UA-141228404-1');</script></html>
\ No newline at end of file
+</script><title>Committers - Apache ECharts</title><script type="text/javascript" src="https://echarts.apache.org/en/./js/vendors/jquery@3.7.1/dist/jquery.min.js"></script></head><!--[if lte IE 8]><body class="lower-ie"><div id="lowie-main"><img src="https://echarts.apache.org/en/images/forie.png?_v_=20240226" alt="ie tip"></div></body><![endif]-->
+<!--[if (gt IE 8)|!(IE)]><body></body><![endif]--><noscript><div class="no-script"><strong>We're sorry, but Apache ECharts website doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></div></noscript><div id="apache-banner"><div class="txt"><p>Please visit the official Apache ECharts Website at</p><a id="a2" href="https://echarts.apache.org/en/index.html">https://echarts.apache.org</a></div><a href="https://echarts.apache.org" target="_blank" onclick=" [...]
+</script><script type="text/javascript">document.getElementById('nav-contribute').className = 'active';</script></html>
\ No newline at end of file
diff --git a/en/contributing.html b/en/contributing.html
index 90f1f7ba5..c1e52825d 100644
--- a/en/contributing.html
+++ b/en/contributing.html
@@ -1,22 +1,11 @@
-<!DOCTYPE html><html lang="zh-CN"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no"><meta name="description" content="Apache ECharts,一款基于JavaScript的数据可视化图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表。"><meta name="keywords" content="echarts,apache,charts,data-visualization,charting-library,visualization,data-viz,canvas,svg,plot,graph"><link rel="shortcut icon" href="https://echarts [...]
-</script><script type="text/javascript" src="https://lib.baomitu.com/pace/1.2.4/pace.min.js"></script><script id="font-hack" type="text/javascript">if (/windows/i.test(navigator.userAgent)) {
+<!DOCTYPE html><html lang="zh-CN"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no"><meta name="description" content="Apache ECharts,一款基于JavaScript的数据可视化图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表。"><meta name="keywords" content="echarts,apache,charts,data-visualization,charting-library,visualization,data-viz,canvas,svg,plot,graph"><link rel="shortcut icon" href="https://echarts [...]
+</script><script type="text/javascript" src="https://echarts.apache.org/zh/./js/vendors/pace-js@1.2.4/pace.min.js"></script><script id="font-hack" type="text/javascript">if (/windows/i.test(navigator.userAgent)) {
     var el = document.createElement('style');
     el.innerText = ''
         + '@font-face {font-family:"noto-thin";src:local("Microsoft Yahei");}'
         + '@font-face {font-family:"noto-light";src:local("Microsoft Yahei");}';
     document.head.insertBefore(el, document.getElementById('font-hack'));
 }
-</script><title>Contributing - Apache ECharts</title><script type="text/javascript" src="https://registry.npmmirror.com/jquery/3.7.1/files/dist/jquery.min.js"></script></head><!--[if lte IE 8]><body class="lower-ie"><div id="lowie-main"><img src="https://echarts.apache.org/zh/images/forie.png?_v_=20240226" alt="ie tip"></div></body><![endif]-->
-<!--[if (gt IE 8)|!(IE)]><body></body><![endif]--><noscript><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript><div id="apache-banner"><div class="txt"><p>请访问 Apache ECharts 的官网 &nbsp;</p><a id="a1" href="https://echarts.apache.org/zh/index.html">https://echarts.apache.org</a></div><a href="https://echarts.apache.org" target="_blank" onclick="logApache()" class="btn btn-main"><div>访问官网</div></a><a href="javascript:;" onclick="closeApacheB [...]
-(function() {
-var hm = document.createElement("script");
-
-hm.src = "https://hm.baidu.com/hm.js?54b918eee37cb8a7045f0fd0f0b24395";
-
-var s = document.getElementsByTagName("script")[0];
-s.parentNode.insertBefore(hm, s);
-})();
-</script><!-- Google Analytics--><script type="text/javascript" async src="https://www.googletagmanager.com/gtag/js?id=UA-141228404-1"></script><script type="text/javascript">window.dataLayer = window.dataLayer || [];
-function gtag(){dataLayer.push(arguments);}
-gtag('js', new Date());
-gtag('config', 'UA-141228404-1');</script></html>
\ No newline at end of file
+</script><title>Contributing - Apache ECharts</title><script type="text/javascript" src="https://echarts.apache.org/zh/./js/vendors/jquery@3.7.1/dist/jquery.min.js"></script></head><!--[if lte IE 8]><body class="lower-ie"><div id="lowie-main"><img src="https://echarts.apache.org/zh/images/forie.png?_v_=20240226" alt="ie tip"></div></body><![endif]-->
+<!--[if (gt IE 8)|!(IE)]><body></body><![endif]--><noscript><div class="no-script"><strong>很抱歉,Apache ECharts 网站需要启用 JavaScript 才能正常运行。</strong></div></noscript><div id="apache-banner"><div class="txt"><p>请访问 Apache ECharts 的官网 &nbsp;</p><a id="a1" href="https://echarts.apache.org/zh/index.html">https://echarts.apache.org</a></div><a href="https://echarts.apache.org" target="_blank" onclick="logApache()" class="btn btn-main"><div>访问官网</div></a><a href="javascript:;" onclick="closeApacheB [...]
+</script><script type="text/javascript">document.getElementById('nav-contribute').className = 'active';</script></html>
\ No newline at end of file
diff --git a/en/dependencies.html b/en/dependencies.html
index a30fe15be..7af6e6662 100644
--- a/en/dependencies.html
+++ b/en/dependencies.html
@@ -1,22 +1,11 @@
-<!DOCTYPE html><html lang="en-US"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no"><meta name="description" content="Apache ECharts, a powerful, interactive charting and visualization library for browser"><meta name="keywords" content="echarts,apache,charts,data-visualization,charting-library,visualization,data-viz,canvas,svg,plot,graph"><link rel="shortcut icon" h [...]
-</script><script type="text/javascript" src="https://fastly.jsdelivr.net/npm/pace-js@1.2.4/pace.min.js"></script><script id="font-hack" type="text/javascript">if (/windows/i.test(navigator.userAgent)) {
+<!DOCTYPE html><html lang="en-US"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no"><meta name="description" content="Apache ECharts, a powerful, interactive charting and visualization library for browser"><meta name="keywords" content="echarts,apache,charts,data-visualization,charting-library,visualization,data-viz,canvas,svg,plot,graph"><link rel="shortcut icon" h [...]
+</script><script type="text/javascript" src="https://echarts.apache.org/en/./js/vendors/pace-js@1.2.4/pace.min.js"></script><script id="font-hack" type="text/javascript">if (/windows/i.test(navigator.userAgent)) {
     var el = document.createElement('style');
     el.innerText = ''
         + '@font-face {font-family:"noto-thin";src:local("Microsoft Yahei");}'
         + '@font-face {font-family:"noto-light";src:local("Microsoft Yahei");}';
     document.head.insertBefore(el, document.getElementById('font-hack'));
 }
-</script><title>Dependencies - Apache ECharts</title><script type="text/javascript" src="https://fastly.jsdelivr.net/npm/jquery@3.7.1/dist/jquery.min.js"></script></head><!--[if lte IE 8]><body class="lower-ie"><div id="lowie-main"><img src="https://echarts.apache.org/en/images/forie.png?_v_=20240226" alt="ie tip"></div></body><![endif]-->
-<!--[if (gt IE 8)|!(IE)]><body></body><![endif]--><noscript><div class="no-script"><strong>We're sorry, but Apache ECharts website doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></div></noscript><div id="apache-banner"><div class="txt"><p>Please visit the official Apache ECharts Website at</p><a id="a2" href="https://echarts.apache.org/en/index.html">https://echarts.apache.org</a></div><a href="https://echarts.apache.org" target="_blank" onclick=" [...]
-(function() {
-var hm = document.createElement("script");
-
-hm.src = "https://hm.baidu.com/hm.js?54b918eee37cb8a7045f0fd0f0b24395";
-
-var s = document.getElementsByTagName("script")[0];
-s.parentNode.insertBefore(hm, s);
-})();
-</script><!-- Google Analytics--><script type="text/javascript" async src="https://www.googletagmanager.com/gtag/js?id=UA-141228404-1"></script><script type="text/javascript">window.dataLayer = window.dataLayer || [];
-function gtag(){dataLayer.push(arguments);}
-gtag('js', new Date());
-gtag('config', 'UA-141228404-1');</script></html>
\ No newline at end of file
+</script><title>Dependencies - Apache ECharts</title><script type="text/javascript" src="https://echarts.apache.org/en/./js/vendors/jquery@3.7.1/dist/jquery.min.js"></script></head><!--[if lte IE 8]><body class="lower-ie"><div id="lowie-main"><img src="https://echarts.apache.org/en/images/forie.png?_v_=20240226" alt="ie tip"></div></body><![endif]-->
+<!--[if (gt IE 8)|!(IE)]><body></body><![endif]--><noscript><div class="no-script"><strong>We're sorry, but Apache ECharts website doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></div></noscript><div id="apache-banner"><div class="txt"><p>Please visit the official Apache ECharts Website at</p><a id="a2" href="https://echarts.apache.org/en/index.html">https://echarts.apache.org</a></div><a href="https://echarts.apache.org" target="_blank" onclick=" [...]
+</script><script type="text/javascript">document.getElementById('nav-contribute').className = 'active';</script></html>
\ No newline at end of file
diff --git a/en/download-extension.html b/en/download-extension.html
index b6cf603b9..483be2472 100644
--- a/en/download-extension.html
+++ b/en/download-extension.html
@@ -1,22 +1,11 @@
-<!DOCTYPE html><html lang="en-US"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no"><meta name="description" content="Apache ECharts, a powerful, interactive charting and visualization library for browser"><meta name="keywords" content="echarts,apache,charts,data-visualization,charting-library,visualization,data-viz,canvas,svg,plot,graph"><link rel="shortcut icon" h [...]
-</script><script type="text/javascript" src="https://fastly.jsdelivr.net/npm/pace-js@1.2.4/pace.min.js"></script><script id="font-hack" type="text/javascript">if (/windows/i.test(navigator.userAgent)) {
+<!DOCTYPE html><html lang="en-US"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no"><meta name="description" content="Apache ECharts, a powerful, interactive charting and visualization library for browser"><meta name="keywords" content="echarts,apache,charts,data-visualization,charting-library,visualization,data-viz,canvas,svg,plot,graph"><link rel="shortcut icon" h [...]
+</script><script type="text/javascript" src="https://echarts.apache.org/en/./js/vendors/pace-js@1.2.4/pace.min.js"></script><script id="font-hack" type="text/javascript">if (/windows/i.test(navigator.userAgent)) {
     var el = document.createElement('style');
     el.innerText = ''
         + '@font-face {font-family:"noto-thin";src:local("Microsoft Yahei");}'
         + '@font-face {font-family:"noto-light";src:local("Microsoft Yahei");}';
     document.head.insertBefore(el, document.getElementById('font-hack'));
 }
-</script><title>Download Extensions - Apache ECharts</title><script type="text/javascript" src="https://fastly.jsdelivr.net/npm/jquery@3.7.1/dist/jquery.min.js"></script></head><!--[if lte IE 8]><body class="lower-ie"><div id="lowie-main"><img src="https://echarts.apache.org/en/images/forie.png?_v_=20240226" alt="ie tip"></div></body><![endif]-->
-<!--[if (gt IE 8)|!(IE)]><body></body><![endif]--><noscript><div class="no-script"><strong>We're sorry, but Apache ECharts website doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></div></noscript><div id="apache-banner"><div class="txt"><p>Please visit the official Apache ECharts Website at</p><a id="a2" href="https://echarts.apache.org/en/index.html">https://echarts.apache.org</a></div><a href="https://echarts.apache.org" target="_blank" onclick=" [...]
-(function() {
-var hm = document.createElement("script");
-
-hm.src = "https://hm.baidu.com/hm.js?54b918eee37cb8a7045f0fd0f0b24395";
-
-var s = document.getElementsByTagName("script")[0];
-s.parentNode.insertBefore(hm, s);
-})();
-</script><!-- Google Analytics--><script type="text/javascript" async src="https://www.googletagmanager.com/gtag/js?id=UA-141228404-1"></script><script type="text/javascript">window.dataLayer = window.dataLayer || [];
-function gtag(){dataLayer.push(arguments);}
-gtag('js', new Date());
-gtag('config', 'UA-141228404-1');</script></html>
\ No newline at end of file
+</script><title>Download Extensions - Apache ECharts</title><script type="text/javascript" src="https://echarts.apache.org/en/./js/vendors/jquery@3.7.1/dist/jquery.min.js"></script></head><!--[if lte IE 8]><body class="lower-ie"><div id="lowie-main"><img src="https://echarts.apache.org/en/images/forie.png?_v_=20240226" alt="ie tip"></div></body><![endif]-->
+<!--[if (gt IE 8)|!(IE)]><body></body><![endif]--><noscript><div class="no-script"><strong>We're sorry, but Apache ECharts website doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></div></noscript><div id="apache-banner"><div class="txt"><p>Please visit the official Apache ECharts Website at</p><a id="a2" href="https://echarts.apache.org/en/index.html">https://echarts.apache.org</a></div><a href="https://echarts.apache.org" target="_blank" onclick=" [...]
+</script><script type="text/javascript">document.getElementById('nav-download').className = 'active';</script></html>
\ No newline at end of file
diff --git a/en/download-map.html b/en/download-map.html
index 930232d33..47357f8e4 100644
--- a/en/download-map.html
+++ b/en/download-map.html
@@ -1,23 +1,12 @@
-<!DOCTYPE html><html lang="en-US"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no"><meta name="description" content="Apache ECharts, a powerful, interactive charting and visualization library for browser"><meta name="keywords" content="echarts,apache,charts,data-visualization,charting-library,visualization,data-viz,canvas,svg,plot,graph"><link rel="shortcut icon" h [...]
-</script><script type="text/javascript" src="https://fastly.jsdelivr.net/npm/pace-js@1.2.4/pace.min.js"></script><script id="font-hack" type="text/javascript">if (/windows/i.test(navigator.userAgent)) {
+<!DOCTYPE html><html lang="en-US"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no"><meta name="description" content="Apache ECharts, a powerful, interactive charting and visualization library for browser"><meta name="keywords" content="echarts,apache,charts,data-visualization,charting-library,visualization,data-viz,canvas,svg,plot,graph"><link rel="shortcut icon" h [...]
+</script><script type="text/javascript" src="https://echarts.apache.org/en/./js/vendors/pace-js@1.2.4/pace.min.js"></script><script id="font-hack" type="text/javascript">if (/windows/i.test(navigator.userAgent)) {
     var el = document.createElement('style');
     el.innerText = ''
         + '@font-face {font-family:"noto-thin";src:local("Microsoft Yahei");}'
         + '@font-face {font-family:"noto-light";src:local("Microsoft Yahei");}';
     document.head.insertBefore(el, document.getElementById('font-hack'));
 }
-</script><title>Download Maps - Apache ECharts</title><script type="text/javascript" src="https://fastly.jsdelivr.net/npm/jquery@3.7.1/dist/jquery.min.js"></script></head><!--[if lte IE 8]><body class="lower-ie"><div id="lowie-main"><img src="https://echarts.apache.org/en/images/forie.png?_v_=20240226" alt="ie tip"></div></body><![endif]-->
+</script><title>Download Maps - Apache ECharts</title><script type="text/javascript" src="https://echarts.apache.org/en/./js/vendors/jquery@3.7.1/dist/jquery.min.js"></script></head><!--[if lte IE 8]><body class="lower-ie"><div id="lowie-main"><img src="https://echarts.apache.org/en/images/forie.png?_v_=20240226" alt="ie tip"></div></body><![endif]-->
 <!--[if (gt IE 8)|!(IE)]><body></body><![endif]--><noscript><div class="no-script"><strong>We're sorry, but Apache ECharts website doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></div></noscript><div id="apache-banner"><div class="txt"><p>Please visit the official Apache ECharts Website at</p><a id="a2" href="https://echarts.apache.org/en/index.html">https://echarts.apache.org</a></div><a href="https://echarts.apache.org" target="_blank" onclick=" [...]
-</script><footer><div class="container"><div class="row"><div class="col-md-9"><p>Copyright © 2017-2025, The Apache Software Foundation Apache ECharts, ECharts, Apache, the Apache feather, and the Apache ECharts project logo are either registered trademarks or trademarks of the Apache Software Foundation.</p><div class="icon-panel"><a href="mailto:dev@echarts.apache.org?body=%28Thanks%20for%20using%20ECharts.%20Email%20us%20if%20you%20have%20non-technical%20problems%20using%20ECharts.%20 [...]
-(function() {
-var hm = document.createElement("script");
-
-hm.src = "https://hm.baidu.com/hm.js?54b918eee37cb8a7045f0fd0f0b24395";
-
-var s = document.getElementsByTagName("script")[0];
-s.parentNode.insertBefore(hm, s);
-})();
-</script><!-- Google Analytics--><script type="text/javascript" async src="https://www.googletagmanager.com/gtag/js?id=UA-141228404-1"></script><script type="text/javascript">window.dataLayer = window.dataLayer || [];
-function gtag(){dataLayer.push(arguments);}
-gtag('js', new Date());
-gtag('config', 'UA-141228404-1');</script></html>
\ No newline at end of file
+</script><footer><div class="container"><div class="row"><div class="col-md-9"><p>Copyright © 2017-2025, The Apache Software Foundation Apache ECharts, ECharts, Apache, the Apache feather, and the Apache ECharts project logo are either registered trademarks or trademarks of the Apache Software Foundation.</p><div class="icon-panel"><a href="mailto:dev@echarts.apache.org?body=%28Thanks%20for%20using%20ECharts.%20Email%20us%20if%20you%20have%20non-technical%20problems%20using%20ECharts.%20 [...]
+</script></html>
\ No newline at end of file
diff --git a/en/download-theme.html b/en/download-theme.html
index 545ecc67a..9e775c122 100644
--- a/en/download-theme.html
+++ b/en/download-theme.html
@@ -1,12 +1,12 @@
-<!DOCTYPE html><html lang="en-US"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no"><meta name="description" content="Apache ECharts, a powerful, interactive charting and visualization library for browser"><meta name="keywords" content="echarts,apache,charts,data-visualization,charting-library,visualization,data-viz,canvas,svg,plot,graph"><link rel="shortcut icon" h [...]
-</script><script type="text/javascript" src="https://fastly.jsdelivr.net/npm/pace-js@1.2.4/pace.min.js"></script><script id="font-hack" type="text/javascript">if (/windows/i.test(navigator.userAgent)) {
+<!DOCTYPE html><html lang="en-US"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no"><meta name="description" content="Apache ECharts, a powerful, interactive charting and visualization library for browser"><meta name="keywords" content="echarts,apache,charts,data-visualization,charting-library,visualization,data-viz,canvas,svg,plot,graph"><link rel="shortcut icon" h [...]
+</script><script type="text/javascript" src="https://echarts.apache.org/en/./js/vendors/pace-js@1.2.4/pace.min.js"></script><script id="font-hack" type="text/javascript">if (/windows/i.test(navigator.userAgent)) {
     var el = document.createElement('style');
     el.innerText = ''
         + '@font-face {font-family:"noto-thin";src:local("Microsoft Yahei");}'
         + '@font-face {font-family:"noto-light";src:local("Microsoft Yahei");}';
     document.head.insertBefore(el, document.getElementById('font-hack'));
 }
-</script><title>Download Themes - Apache ECharts</title><link rel="stylesheet" type="text/css" href="https://echarts.apache.org/en/vendors/prettify/prettify.css?_v_=20240226"><script type="text/javascript" src="https://fastly.jsdelivr.net/npm/jquery@3.7.1/dist/jquery.min.js"></script></head><!--[if lte IE 8]><body class="lower-ie"><div id="lowie-main"><img src="https://echarts.apache.org/en/images/forie.png?_v_=20240226" alt="ie tip"></div></body><![endif]-->
+</script><title>Download Themes - Apache ECharts</title><link rel="stylesheet" type="text/css" href="https://echarts.apache.org/en/vendors/prettify/prettify.css?_v_=20240226"><script type="text/javascript" src="https://echarts.apache.org/en/./js/vendors/jquery@3.7.1/dist/jquery.min.js"></script></head><!--[if lte IE 8]><body class="lower-ie"><div id="lowie-main"><img src="https://echarts.apache.org/en/images/forie.png?_v_=20240226" alt="ie tip"></div></body><![endif]-->
 <!--[if (gt IE 8)|!(IE)]><body></body><![endif]--><noscript><div class="no-script"><strong>We're sorry, but Apache ECharts website doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></div></noscript><div id="apache-banner"><div class="txt"><p>Please visit the official Apache ECharts Website at</p><a id="a2" href="https://echarts.apache.org/en/index.html">https://echarts.apache.org</a></div><a href="https://echarts.apache.org" target="_blank" onclick=" [...]
 &lt;!-- import vintage theme --&gt;
 &lt;script src="theme/vintage.js"&gt;&lt;/script&gt;
@@ -17,7 +17,8 @@ chart.setOption({
     ...
 });
 &lt;/script&gt;
-</pre></div></div></section><footer><div class="container"><div class="row"><div class="col-md-9"><p>Copyright © 2017-2025, The Apache Software Foundation Apache ECharts, ECharts, Apache, the Apache feather, and the Apache ECharts project logo are either registered trademarks or trademarks of the Apache Software Foundation.</p><div class="icon-panel"><a href="mailto:dev@echarts.apache.org?body=%28Thanks%20for%20using%20ECharts.%20Email%20us%20if%20you%20have%20non-technical%20problems%20 [...]
+</pre></div></div></section><footer><div class="container"><div class="row"><div class="col-md-9"><p>Copyright © 2017-2025, The Apache Software Foundation Apache ECharts, ECharts, Apache, the Apache feather, and the Apache ECharts project logo are either registered trademarks or trademarks of the Apache Software Foundation.</p><div class="icon-panel"><a href="mailto:dev@echarts.apache.org?body=%28Thanks%20for%20using%20ECharts.%20Email%20us%20if%20you%20have%20non-technical%20problems%20 [...]
+</script><script src="https://echarts.apache.org/en/./js/vendors/code-prettify@0.1.0/prettify.min.js"></script><script src="https://echarts.apache.org/en/./js/vendors/code-prettify@0.1.0/lang-css.js"></script><script>document.getElementById('nav-download').className = 'active';
 
 $('pre').addClass('prettyprint');
 prettyPrint();
@@ -67,16 +68,4 @@ $('.download-theme').click(function (e) {
         onload();
     }
     _hmt.push(['_trackEvent', 'download-theme', 'download-theme', '']);
-});</script><!-- Baidu Tongji--><script type="text/javascript">var _hmt = _hmt || [];
-(function() {
-var hm = document.createElement("script");
-
-hm.src = "https://hm.baidu.com/hm.js?54b918eee37cb8a7045f0fd0f0b24395";
-
-var s = document.getElementsByTagName("script")[0];
-s.parentNode.insertBefore(hm, s);
-})();
-</script><!-- Google Analytics--><script type="text/javascript" async src="https://www.googletagmanager.com/gtag/js?id=UA-141228404-1"></script><script type="text/javascript">window.dataLayer = window.dataLayer || [];
-function gtag(){dataLayer.push(arguments);}
-gtag('js', new Date());
-gtag('config', 'UA-141228404-1');</script></html>
\ No newline at end of file
+});</script></html>
\ No newline at end of file
diff --git a/en/download.html b/en/download.html
index 5597ec223..4af58029c 100644
--- a/en/download.html
+++ b/en/download.html
@@ -1,12 +1,12 @@
-<!DOCTYPE html><html lang="en-US"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no"><meta name="description" content="Apache ECharts, a powerful, interactive charting and visualization library for browser"><meta name="keywords" content="echarts,apache,charts,data-visualization,charting-library,visualization,data-viz,canvas,svg,plot,graph"><link rel="shortcut icon" h [...]
-</script><script type="text/javascript" src="https://fastly.jsdelivr.net/npm/pace-js@1.2.4/pace.min.js"></script><script id="font-hack" type="text/javascript">if (/windows/i.test(navigator.userAgent)) {
+<!DOCTYPE html><html lang="en-US"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no"><meta name="description" content="Apache ECharts, a powerful, interactive charting and visualization library for browser"><meta name="keywords" content="echarts,apache,charts,data-visualization,charting-library,visualization,data-viz,canvas,svg,plot,graph"><link rel="shortcut icon" h [...]
+</script><script type="text/javascript" src="https://echarts.apache.org/en/./js/vendors/pace-js@1.2.4/pace.min.js"></script><script id="font-hack" type="text/javascript">if (/windows/i.test(navigator.userAgent)) {
     var el = document.createElement('style');
     el.innerText = ''
         + '@font-face {font-family:"noto-thin";src:local("Microsoft Yahei");}'
         + '@font-face {font-family:"noto-light";src:local("Microsoft Yahei");}';
     document.head.insertBefore(el, document.getElementById('font-hack'));
 }
-</script><title>Download - Apache ECharts</title><script type="text/javascript" src="https://fastly.jsdelivr.net/npm/jquery@3.7.1/dist/jquery.min.js"></script></head><!--[if lte IE 8]><body class="lower-ie"><div id="lowie-main"><img src="https://echarts.apache.org/en/images/forie.png?_v_=20240226" alt="ie tip"></div></body><![endif]-->
+</script><title>Download - Apache ECharts</title><script type="text/javascript" src="https://echarts.apache.org/en/./js/vendors/jquery@3.7.1/dist/jquery.min.js"></script></head><!--[if lte IE 8]><body class="lower-ie"><div id="lowie-main"><img src="https://echarts.apache.org/en/images/forie.png?_v_=20240226" alt="ie tip"></div></body><![endif]-->
 <!--[if (gt IE 8)|!(IE)]><body></body><![endif]--><noscript><div class="no-script"><strong>We're sorry, but Apache ECharts website doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></div></noscript><div id="apache-banner"><div class="txt"><p>Please visit the official Apache ECharts Website at</p><a id="a2" href="https://echarts.apache.org/en/index.html">https://echarts.apache.org</a></div><a href="https://echarts.apache.org" target="_blank" onclick=" [...]
 #download-main .d-section-version .circle-wrap {
     line-height: 120px;
@@ -16,7 +16,8 @@
     font-weight: normal;
 }
 */
-</style><nav class="navbar navbar-default navbar-fixed-top"><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache [...]
+</style><nav class="navbar navbar-default navbar-fixed-top"><nav role="navigation" class="navbar navbar-default navbar-fixed-top"><div class="container-fluid"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a href="https://echarts.apache [...]
+</script><script src="https://echarts.apache.org/en/js/download.js?_v_=74452f1763"></script><script type="text/javascript">document.getElementById('nav-download').className = 'active';
 
 //- var list = [
 //-         {
@@ -54,16 +55,4 @@
 //-                 .replace(/>/g, '&gt;')
 //-                 .replace(/"/g, '&quot;')
 //-                 .replace(/'/g, '&#39;');
-//-     }</script><!-- Baidu Tongji--><script type="text/javascript">var _hmt = _hmt || [];
-(function() {
-var hm = document.createElement("script");
-
-hm.src = "https://hm.baidu.com/hm.js?54b918eee37cb8a7045f0fd0f0b24395";
-
-var s = document.getElementsByTagName("script")[0];
-s.parentNode.insertBefore(hm, s);
-})();
-</script><!-- Google Analytics--><script type="text/javascript" async src="https://www.googletagmanager.com/gtag/js?id=UA-141228404-1"></script><script type="text/javascript">window.dataLayer = window.dataLayer || [];
-function gtag(){dataLayer.push(arguments);}
-gtag('js', new Date());
-gtag('config', 'UA-141228404-1');</script></html>
\ No newline at end of file
+//-     }</script></html>
\ No newline at end of file
diff --git a/en/events.html b/en/events.html
index c955e9a0f..b7ebf4148 100644
--- a/en/events.html
+++ b/en/events.html
@@ -1,25 +1,14 @@
-<!DOCTYPE html><html lang="en-US"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no"><meta name="description" content="Apache ECharts, a powerful, interactive charting and visualization library for browser"><meta name="keywords" content="echarts,apache,charts,data-visualization,charting-library,visualization,data-viz,canvas,svg,plot,graph"><link rel="shortcut icon" h [...]
-</script><script type="text/javascript" src="https://fastly.jsdelivr.net/npm/pace-js@1.2.4/pace.min.js"></script><script id="font-hack" type="text/javascript">if (/windows/i.test(navigator.userAgent)) {
+<!DOCTYPE html><html lang="en-US"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no"><meta name="description" content="Apache ECharts, a powerful, interactive charting and visualization library for browser"><meta name="keywords" content="echarts,apache,charts,data-visualization,charting-library,visualization,data-viz,canvas,svg,plot,graph"><link rel="shortcut icon" h [...]
+</script><script type="text/javascript" src="https://echarts.apache.org/en/./js/vendors/pace-js@1.2.4/pace.min.js"></script><script id="font-hack" type="text/javascript">if (/windows/i.test(navigator.userAgent)) {
     var el = document.createElement('style');
     el.innerText = ''
         + '@font-face {font-family:"noto-thin";src:local("Microsoft Yahei");}'
         + '@font-face {font-family:"noto-light";src:local("Microsoft Yahei");}';
     document.head.insertBefore(el, document.getElementById('font-hack'));
 }
-</script><title>Events - Apache ECharts</title><script type="text/javascript" src="https://fastly.jsdelivr.net/npm/jquery@3.7.1/dist/jquery.min.js"></script></head><!--[if lte IE 8]><body class="lower-ie"><div id="lowie-main"><img src="https://echarts.apache.org/en/images/forie.png?_v_=20240226" alt="ie tip"></div></body><![endif]-->
-<!--[if (gt IE 8)|!(IE)]><body></body><![endif]--><noscript><div class="no-script"><strong>We're sorry, but Apache ECharts website doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></div></noscript><div id="apache-banner"><div class="txt"><p>Please visit the official Apache ECharts Website at</p><a id="a2" href="https://echarts.apache.org/en/index.html">https://echarts.apache.org</a></div><a href="https://echarts.apache.org" target="_blank" onclick=" [...]
+</script><title>Events - Apache ECharts</title><script type="text/javascript" src="https://echarts.apache.org/en/./js/vendors/jquery@3.7.1/dist/jquery.min.js"></script></head><!--[if lte IE 8]><body class="lower-ie"><div id="lowie-main"><img src="https://echarts.apache.org/en/images/forie.png?_v_=20240226" alt="ie tip"></div></body><![endif]-->
+<!--[if (gt IE 8)|!(IE)]><body></body><![endif]--><noscript><div class="no-script"><strong>We're sorry, but Apache ECharts website doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></div></noscript><div id="apache-banner"><div class="txt"><p>Please visit the official Apache ECharts Website at</p><a id="a2" href="https://echarts.apache.org/en/index.html">https://echarts.apache.org</a></div><a href="https://echarts.apache.org" target="_blank" onclick=" [...]
+</script><script type="text/javascript">window.lazyLoadOptions = {
     elements_selector: ".lazy"
 };
-document.getElementById('nav-contribute').className = 'active';</script><script src="https://fastly.jsdelivr.net/npm/vanilla-lazyload@12.0.0/dist/lazyload.min.js"></script><!-- Baidu Tongji--><script type="text/javascript">var _hmt = _hmt || [];
-(function() {
-var hm = document.createElement("script");
-
-hm.src = "https://hm.baidu.com/hm.js?54b918eee37cb8a7045f0fd0f0b24395";
-
-var s = document.getElementsByTagName("script")[0];
-s.parentNode.insertBefore(hm, s);
-})();
-</script><!-- Google Analytics--><script type="text/javascript" async src="https://www.googletagmanager.com/gtag/js?id=UA-141228404-1"></script><script type="text/javascript">window.dataLayer = window.dataLayer || [];
-function gtag(){dataLayer.push(arguments);}
-gtag('js', new Date());
-gtag('config', 'UA-141228404-1');</script></html>
\ No newline at end of file
+document.getElementById('nav-contribute').className = 'active';</script><script src="https://echarts.apache.org/en/./js/vendors/vanilla-lazyload@12.0.3/lazyload.min.js"></script></html>
\ No newline at end of file
diff --git a/en/events/2021-05-13-iscas.html b/en/events/2021-05-13-iscas.html
index 9b7e349fa..39e15b2f7 100644
--- a/en/events/2021-05-13-iscas.html
+++ b/en/events/2021-05-13-iscas.html
@@ -1,25 +1,14 @@
-<!DOCTYPE html><html lang="en-US"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no"><meta name="description" content="Apache ECharts, a powerful, interactive charting and visualization library for browser"><meta name="keywords" content="echarts,apache,charts,data-visualization,charting-library,visualization,data-viz,canvas,svg,plot,graph"><link rel="shortcut icon" h [...]
-</script><script type="text/javascript" src="https://fastly.jsdelivr.net/npm/pace-js@1.2.4/pace.min.js"></script><script id="font-hack" type="text/javascript">if (/windows/i.test(navigator.userAgent)) {
+<!DOCTYPE html><html lang="en-US"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no"><meta name="description" content="Apache ECharts, a powerful, interactive charting and visualization library for browser"><meta name="keywords" content="echarts,apache,charts,data-visualization,charting-library,visualization,data-viz,canvas,svg,plot,graph"><link rel="shortcut icon" h [...]
+</script><script type="text/javascript" src="https://echarts.apache.org/en/./js/vendors/pace-js@1.2.4/pace.min.js"></script><script id="font-hack" type="text/javascript">if (/windows/i.test(navigator.userAgent)) {
     var el = document.createElement('style');
     el.innerText = ''
         + '@font-face {font-family:"noto-thin";src:local("Microsoft Yahei");}'
         + '@font-face {font-family:"noto-light";src:local("Microsoft Yahei");}';
     document.head.insertBefore(el, document.getElementById('font-hack'));
 }
-</script><title>Events - Apache ECharts</title><script type="text/javascript" src="https://fastly.jsdelivr.net/npm/jquery@3.7.1/dist/jquery.min.js"></script></head><!--[if lte IE 8]><body class="lower-ie"><div id="lowie-main"><img src="https://echarts.apache.org/en/images/forie.png?_v_=20240226" alt="ie tip"></div></body><![endif]-->
-<!--[if (gt IE 8)|!(IE)]><body></body><![endif]--><noscript><div class="no-script"><strong>We're sorry, but Apache ECharts website doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></div></noscript><div id="apache-banner"><div class="txt"><p>Please visit the official Apache ECharts Website at</p><a id="a2" href="https://echarts.apache.org/en/index.html">https://echarts.apache.org</a></div><a href="https://echarts.apache.org" target="_blank" onclick=" [...]
+</script><title>Events - Apache ECharts</title><script type="text/javascript" src="https://echarts.apache.org/en/./js/vendors/jquery@3.7.1/dist/jquery.min.js"></script></head><!--[if lte IE 8]><body class="lower-ie"><div id="lowie-main"><img src="https://echarts.apache.org/en/images/forie.png?_v_=20240226" alt="ie tip"></div></body><![endif]-->
+<!--[if (gt IE 8)|!(IE)]><body></body><![endif]--><noscript><div class="no-script"><strong>We're sorry, but Apache ECharts website doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></div></noscript><div id="apache-banner"><div class="txt"><p>Please visit the official Apache ECharts Website at</p><a id="a2" href="https://echarts.apache.org/en/index.html">https://echarts.apache.org</a></div><a href="https://echarts.apache.org" target="_blank" onclick=" [...]
+</script><script type="text/javascript">window.lazyLoadOptions = {
     elements_selector: ".lazy"
 };
-document.getElementById('nav-contribute').className = 'active';</script><script src="https://fastly.jsdelivr.net/npm/vanilla-lazyload@12.0.0/dist/lazyload.min.js"></script><!-- Baidu Tongji--><script type="text/javascript">var _hmt = _hmt || [];
-(function() {
-var hm = document.createElement("script");
-
-hm.src = "https://hm.baidu.com/hm.js?54b918eee37cb8a7045f0fd0f0b24395";
-
-var s = document.getElementsByTagName("script")[0];
-s.parentNode.insertBefore(hm, s);
-})();
-</script><!-- Google Analytics--><script type="text/javascript" async src="https://www.googletagmanager.com/gtag/js?id=UA-141228404-1"></script><script type="text/javascript">window.dataLayer = window.dataLayer || [];
-function gtag(){dataLayer.push(arguments);}
-gtag('js', new Date());
-gtag('config', 'UA-141228404-1');</script></html>
\ No newline at end of file
+document.getElementById('nav-contribute').className = 'active';</script><script src="https://fastly.jsdelivr.net/npm/vanilla-lazyload@12.0.0/dist/lazyload.min.js"></script></html>
\ No newline at end of file
diff --git a/en/events/2021-07-05-apachecon.html b/en/events/2021-07-05-apachecon.html
index 0859bfe11..fe6da4951 100644
--- a/en/events/2021-07-05-apachecon.html
+++ b/en/events/2021-07-05-apachecon.html
@@ -1,25 +1,14 @@
-<!DOCTYPE html><html lang="en-US"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no"><meta name="description" content="Apache ECharts, a powerful, interactive charting and visualization library for browser"><meta name="keywords" content="echarts,apache,charts,data-visualization,charting-library,visualization,data-viz,canvas,svg,plot,graph"><link rel="shortcut icon" h [...]
-</script><script type="text/javascript" src="https://fastly.jsdelivr.net/npm/pace-js@1.2.4/pace.min.js"></script><script id="font-hack" type="text/javascript">if (/windows/i.test(navigator.userAgent)) {
+<!DOCTYPE html><html lang="en-US"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no"><meta name="description" content="Apache ECharts, a powerful, interactive charting and visualization library for browser"><meta name="keywords" content="echarts,apache,charts,data-visualization,charting-library,visualization,data-viz,canvas,svg,plot,graph"><link rel="shortcut icon" h [...]
+</script><script type="text/javascript" src="https://echarts.apache.org/en/./js/vendors/pace-js@1.2.4/pace.min.js"></script><script id="font-hack" type="text/javascript">if (/windows/i.test(navigator.userAgent)) {
     var el = document.createElement('style');
     el.innerText = ''
         + '@font-face {font-family:"noto-thin";src:local("Microsoft Yahei");}'
         + '@font-face {font-family:"noto-light";src:local("Microsoft Yahei");}';
     document.head.insertBefore(el, document.getElementById('font-hack'));
 }
-</script><title>Events - Apache ECharts</title><script type="text/javascript" src="https://fastly.jsdelivr.net/npm/jquery@3.7.1/dist/jquery.min.js"></script></head><!--[if lte IE 8]><body class="lower-ie"><div id="lowie-main"><img src="https://echarts.apache.org/en/images/forie.png?_v_=20240226" alt="ie tip"></div></body><![endif]-->
-<!--[if (gt IE 8)|!(IE)]><body></body><![endif]--><noscript><div class="no-script"><strong>We're sorry, but Apache ECharts website doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></div></noscript><div id="apache-banner"><div class="txt"><p>Please visit the official Apache ECharts Website at</p><a id="a2" href="https://echarts.apache.org/en/index.html">https://echarts.apache.org</a></div><a href="https://echarts.apache.org" target="_blank" onclick=" [...]
+</script><title>Events - Apache ECharts</title><script type="text/javascript" src="https://echarts.apache.org/en/./js/vendors/jquery@3.7.1/dist/jquery.min.js"></script></head><!--[if lte IE 8]><body class="lower-ie"><div id="lowie-main"><img src="https://echarts.apache.org/en/images/forie.png?_v_=20240226" alt="ie tip"></div></body><![endif]-->
+<!--[if (gt IE 8)|!(IE)]><body></body><![endif]--><noscript><div class="no-script"><strong>We're sorry, but Apache ECharts website doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></div></noscript><div id="apache-banner"><div class="txt"><p>Please visit the official Apache ECharts Website at</p><a id="a2" href="https://echarts.apache.org/en/index.html">https://echarts.apache.org</a></div><a href="https://echarts.apache.org" target="_blank" onclick=" [...]
+</script><script type="text/javascript">window.lazyLoadOptions = {
     elements_selector: ".lazy"
 };
-document.getElementById('nav-contribute').className = 'active';</script><script src="https://fastly.jsdelivr.net/npm/vanilla-lazyload@12.0.0/dist/lazyload.min.js"></script><!-- Baidu Tongji--><script type="text/javascript">var _hmt = _hmt || [];
-(function() {
-var hm = document.createElement("script");
-
-hm.src = "https://hm.baidu.com/hm.js?54b918eee37cb8a7045f0fd0f0b24395";
-
-var s = document.getElementsByTagName("script")[0];
-s.parentNode.insertBefore(hm, s);
-})();
-</script><!-- Google Analytics--><script type="text/javascript" async src="https://www.googletagmanager.com/gtag/js?id=UA-141228404-1"></script><script type="text/javascript">window.dataLayer = window.dataLayer || [];
-function gtag(){dataLayer.push(arguments);}
-gtag('js', new Date());
-gtag('config', 'UA-141228404-1');</script></html>
\ No newline at end of file
+document.getElementById('nav-contribute').className = 'active';</script><script src="https://echarts.apache.org/en/./js/vendors/vanilla-lazyload@12.0.3/lazyload.min.js"></script></html>
\ No newline at end of file
diff --git a/en/faq.html b/en/faq.html
index 0f37af4df..b3e995d8c 100644
--- a/en/faq.html
+++ b/en/faq.html
@@ -1,24 +1,13 @@
-<!DOCTYPE html><html lang="en-US"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no"><meta name="description" content="Apache ECharts, a powerful, interactive charting and visualization library for browser"><meta name="keywords" content="echarts,apache,charts,data-visualization,charting-library,visualization,data-viz,canvas,svg,plot,graph"><link rel="shortcut icon" h [...]
-</script><script type="text/javascript" src="https://fastly.jsdelivr.net/npm/pace-js@1.2.4/pace.min.js"></script><script id="font-hack" type="text/javascript">if (/windows/i.test(navigator.userAgent)) {
+<!DOCTYPE html><html lang="en-US"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no"><meta name="description" content="Apache ECharts, a powerful, interactive charting and visualization library for browser"><meta name="keywords" content="echarts,apache,charts,data-visualization,charting-library,visualization,data-viz,canvas,svg,plot,graph"><link rel="shortcut icon" h [...]
+</script><script type="text/javascript" src="https://echarts.apache.org/en/./js/vendors/pace-js@1.2.4/pace.min.js"></script><script id="font-hack" type="text/javascript">if (/windows/i.test(navigator.userAgent)) {
     var el = document.createElement('style');
     el.innerText = ''
         + '@font-face {font-family:"noto-thin";src:local("Microsoft Yahei");}'
         + '@font-face {font-family:"noto-light";src:local("Microsoft Yahei");}';
     document.head.insertBefore(el, document.getElementById('font-hack'));
 }
-</script><title>FAQ - Apache ECharts</title><script type="text/javascript" src="https://fastly.jsdelivr.net/npm/jquery@3.7.1/dist/jquery.min.js"></script></head><!--[if lte IE 8]><body class="lower-ie"><div id="lowie-main"><img src="https://echarts.apache.org/en/images/forie.png?_v_=20240226" alt="ie tip"></div></body><![endif]-->
+</script><title>FAQ - Apache ECharts</title><script type="text/javascript" src="https://echarts.apache.org/en/./js/vendors/jquery@3.7.1/dist/jquery.min.js"></script></head><!--[if lte IE 8]><body class="lower-ie"><div id="lowie-main"><img src="https://echarts.apache.org/en/images/forie.png?_v_=20240226" alt="ie tip"></div></body><![endif]-->
 <!--[if (gt IE 8)|!(IE)]><body></body><![endif]--><noscript><div class="no-script"><strong>We're sorry, but Apache ECharts website doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></div></noscript><div id="apache-banner"><div class="txt"><p>Please visit the official Apache ECharts Website at</p><a id="a2" href="https://echarts.apache.org/en/index.html">https://echarts.apache.org</a></div><a href="https://echarts.apache.org" target="_blank" onclick=" [...]
    console.log(params);
-});</code></pre><h3>How to make my custom map?</h3><p>The ECharts map is <a href="https://github.com/apache/echarts/blob/8eeb7e5abe207d0536c62ce1f4ddecc6adfdf85e/src/util/mapData/rawData/encode.js">additionally encoded</a> from original coordinates. You can use the <a href="https://github.com/giscafer/mapshaper-plus">mapshaper-plus tool</a> to upload a custom geojson file and then generate a map file that can be used in Echarts.</p><h2 id="baidu-map">baidu-map</h2><h3>How to use ECharts  [...]
-(function() {
-var hm = document.createElement("script");
-
-hm.src = "https://hm.baidu.com/hm.js?54b918eee37cb8a7045f0fd0f0b24395";
-
-var s = document.getElementsByTagName("script")[0];
-s.parentNode.insertBefore(hm, s);
-})();
-</script><!-- Google Analytics--><script type="text/javascript" async src="https://www.googletagmanager.com/gtag/js?id=UA-141228404-1"></script><script type="text/javascript">window.dataLayer = window.dataLayer || [];
-function gtag(){dataLayer.push(arguments);}
-gtag('js', new Date());
-gtag('config', 'UA-141228404-1');</script></html>
\ No newline at end of file
+});</code></pre><h3>How to make my custom map?</h3><p>The ECharts map is <a href="https://github.com/apache/echarts/blob/8eeb7e5abe207d0536c62ce1f4ddecc6adfdf85e/src/util/mapData/rawData/encode.js">additionally encoded</a> from original coordinates. You can use the <a href="https://github.com/giscafer/mapshaper-plus">mapshaper-plus tool</a> to upload a custom geojson file and then generate a map file that can be used in Echarts.</p><h2 id="baidu-map">baidu-map</h2><h3>How to use ECharts  [...]
+</script><script type="text/javascript">document.getElementById('nav-doc').className = 'active';</script></html>
\ No newline at end of file
diff --git a/en/feature.html b/en/feature.html
index e72fbeafa..696c208e3 100644
--- a/en/feature.html
+++ b/en/feature.html
@@ -1,24 +1,13 @@
-<!DOCTYPE html><html lang="en-US"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no"><meta name="description" content="Apache ECharts, a powerful, interactive charting and visualization library for browser"><meta name="keywords" content="echarts,apache,charts,data-visualization,charting-library,visualization,data-viz,canvas,svg,plot,graph"><link rel="shortcut icon" h [...]
-</script><script type="text/javascript" src="https://fastly.jsdelivr.net/npm/pace-js@1.2.4/pace.min.js"></script><script id="font-hack" type="text/javascript">if (/windows/i.test(navigator.userAgent)) {
+<!DOCTYPE html><html lang="en-US"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no"><meta name="description" content="Apache ECharts, a powerful, interactive charting and visualization library for browser"><meta name="keywords" content="echarts,apache,charts,data-visualization,charting-library,visualization,data-viz,canvas,svg,plot,graph"><link rel="shortcut icon" h [...]
+</script><script type="text/javascript" src="https://echarts.apache.org/en/./js/vendors/pace-js@1.2.4/pace.min.js"></script><script id="font-hack" type="text/javascript">if (/windows/i.test(navigator.userAgent)) {
     var el = document.createElement('style');
     el.innerText = ''
         + '@font-face {font-family:"noto-thin";src:local("Microsoft Yahei");}'
         + '@font-face {font-family:"noto-light";src:local("Microsoft Yahei");}';
     document.head.insertBefore(el, document.getElementById('font-hack'));
 }
-</script><title>Features - Apache ECharts</title><script type="text/javascript" src="https://fastly.jsdelivr.net/npm/jquery@3.7.1/dist/jquery.min.js"></script></head><!--[if lte IE 8]><body class="lower-ie"><div id="lowie-main"><img src="https://echarts.apache.org/en/images/forie.png?_v_=20240226" alt="ie tip"></div></body><![endif]-->
-<!--[if (gt IE 8)|!(IE)]><body></body><![endif]--><noscript><div class="no-script"><strong>We're sorry, but Apache ECharts website doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></div></noscript><div id="apache-banner"><div class="txt"><p>Please visit the official Apache ECharts Website at</p><a id="a2" href="https://echarts.apache.org/en/index.html">https://echarts.apache.org</a></div><a href="https://echarts.apache.org" target="_blank" onclick=" [...]
+</script><title>Features - Apache ECharts</title><script type="text/javascript" src="https://echarts.apache.org/en/./js/vendors/jquery@3.7.1/dist/jquery.min.js"></script></head><!--[if lte IE 8]><body class="lower-ie"><div id="lowie-main"><img src="https://echarts.apache.org/en/images/forie.png?_v_=20240226" alt="ie tip"></div></body><![endif]-->
+<!--[if (gt IE 8)|!(IE)]><body></body><![endif]--><noscript><div class="no-script"><strong>We're sorry, but Apache ECharts website doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></div></noscript><div id="apache-banner"><div class="txt"><p>Please visit the official Apache ECharts Website at</p><a id="a2" href="https://echarts.apache.org/en/index.html">https://echarts.apache.org</a></div><a href="https://echarts.apache.org" target="_blank" onclick=" [...]
+</script><script>window.lazyLoadOptions = {
     elements_selector: 'iframe'
-};</script><script src="https://fastly.jsdelivr.net/npm/vanilla-lazyload@12.0.0/dist/lazyload.min.js"></script><script type="text/javascript">document.getElementById('nav-doc').className = 'active';</script><!-- Baidu Tongji--><script type="text/javascript">var _hmt = _hmt || [];
-(function() {
-var hm = document.createElement("script");
-
-hm.src = "https://hm.baidu.com/hm.js?54b918eee37cb8a7045f0fd0f0b24395";
-
-var s = document.getElementsByTagName("script")[0];
-s.parentNode.insertBefore(hm, s);
-})();
-</script><!-- Google Analytics--><script type="text/javascript" async src="https://www.googletagmanager.com/gtag/js?id=UA-141228404-1"></script><script type="text/javascript">window.dataLayer = window.dataLayer || [];
-function gtag(){dataLayer.push(arguments);}
-gtag('js', new Date());
-gtag('config', 'UA-141228404-1');</script></html>
\ No newline at end of file
+};</script><script src="https://echarts.apache.org/en/./js/vendors/vanilla-lazyload@12.0.3/lazyload.min.js"></script><script type="text/javascript">document.getElementById('nav-doc').className = 'active';</script></html>
\ No newline at end of file
diff --git a/en/index.html b/en/index.html
index 3ddfe30b5..3203a012c 100644
--- a/en/index.html
+++ b/en/index.html
@@ -1,12 +1,12 @@
-<!DOCTYPE html><html lang="en-US"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no"><meta name="description" content="Apache ECharts, a powerful, interactive charting and visualization library for browser"><meta name="keywords" content="echarts,apache,charts,data-visualization,charting-library,visualization,data-viz,canvas,svg,plot,graph"><link rel="shortcut icon" h [...]
-</script><script type="text/javascript" src="https://fastly.jsdelivr.net/npm/pace-js@1.2.4/pace.min.js"></script><script id="font-hack" type="text/javascript">if (/windows/i.test(navigator.userAgent)) {
+<!DOCTYPE html><html lang="en-US"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no"><meta name="description" content="Apache ECharts, a powerful, interactive charting and visualization library for browser"><meta name="keywords" content="echarts,apache,charts,data-visualization,charting-library,visualization,data-viz,canvas,svg,plot,graph"><link rel="shortcut icon" h [...]
+</script><script type="text/javascript" src="https://echarts.apache.org/en/./js/vendors/pace-js@1.2.4/pace.min.js"></script><script id="font-hack" type="text/javascript">if (/windows/i.test(navigator.userAgent)) {
     var el = document.createElement('style');
     el.innerText = ''
         + '@font-face {font-family:"noto-thin";src:local("Microsoft Yahei");}'
         + '@font-face {font-family:"noto-light";src:local("Microsoft Yahei");}';
     document.head.insertBefore(el, document.getElementById('font-hack'));
 }
-</script><title>Apache ECharts</title><script src="https://fastly.jsdelivr.net/npm/scrollreveal@4.0.7/dist/scrollreveal.min.js"></script><script src="https://fastly.jsdelivr.net/npm/lottie-web@5.7.6/build/player/lottie.min.js"></script><script type="text/javascript" src="https://fastly.jsdelivr.net/npm/jquery@3.7.1/dist/jquery.min.js"></script></head><!--[if lte IE 8]><body class="lower-ie"><div id="lowie-main"><img src="https://echarts.apache.org/en/images/forie.png?_v_=20240226" alt="i [...]
+</script><title>Apache ECharts</title><script src="https://echarts.apache.org/en/./js/vendors/scrollReveal.js@4.0.7/scrollreveal.min.js"></script><script src="https://echarts.apache.org/en/./js/vendors/lottie-web@5.7.6/lottie.min.js"></script><script type="text/javascript" src="https://echarts.apache.org/en/./js/vendors/jquery@3.7.1/dist/jquery.min.js"></script></head><!--[if lte IE 8]><body class="lower-ie"><div id="lowie-main"><img src="https://echarts.apache.org/en/images/forie.png?_v [...]
 <!--[if (gt IE 8)|!(IE)]><body></body><![endif]--><noscript><div class="no-script"><strong>We're sorry, but Apache ECharts website doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></div></noscript><div id="apache-banner"><div class="txt"><p>Please visit the official Apache ECharts Website at</p><a id="a2" href="https://echarts.apache.org/en/index.html">https://echarts.apache.org</a></div><a href="https://echarts.apache.org" target="_blank" onclick=" [...]
 <rect width="510" height="510" x="0" y="0" id="0" fill="none" fill-opacity="1"></rect>
 <path d="M255 25.9A20 20 0 0 1 276.7 5.9A250 250 0 0 1 496.5 190.3A20 20 0 0 1 480.6 215.2L308.9 245.5A5 5 0 0 1 303.2 241.9A50 50 0 0 0 259.5 205.2A5 5 0 0 1 255 200.2Z" fill="#5470c6" stroke="white" stroke-width="4" stroke-linejoin="round" transform-origin="255px 255px" class="zr0-cls-0"></path>
@@ -125,18 +125,7 @@ transform:scale(0,0);
  </path>
 </svg></div></div></div><div id="home-landing-animation-container"><div id="home-landing-animation-viewport"></div><div id="home-landing-animation-close-btn"><svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6" fill="none" viewBox="0 0 24 24" stroke="currentColor">
     <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12" />
-</svg></div></div></div></div></section><section id="new-version-section">📣 Apache ECharts 5.6 is out! See <a href='https://echarts.apache.org/handbook/en/basics/release-note/5-6-0?ref=banner' target='_blank'>what's new</a></section><section id="feature-section"><div class="container"><div class="index-features"><h2 class="reveal">Features</h2><hr class="reveal"><a href="https://echarts.apache.org/en/feature.html" class="more reveal">View More</a></div><div class="row"><div class="col-md [...]
+</svg></div></div></div></div></section><section id="new-version-section">📣 Apache ECharts 5.6 is out! See <a href='https://echarts.apache.org/handbook/en/basics/release-note/5-6-0?ref=banner' target='_blank'>what's new</a></section><section id="feature-section"><div class="container"><div class="index-features"><h2 class="reveal">Features</h2><hr class="reveal"><a href="https://echarts.apache.org/en/feature.html" class="more reveal">View More</a></div><div class="row"><div class="col-md [...]
+</script><script type="text/javascript">window.lazyLoadOptions = {
     elements_selector: ".lazy"
-};</script><script src="https://fastly.jsdelivr.net/npm/vanilla-lazyload@12.0.0/dist/lazyload.min.js"></script><script src="https://echarts.apache.org/en/js/index.js?_v_=1737096470827"></script><!-- Baidu Tongji--><script type="text/javascript">var _hmt = _hmt || [];
-(function() {
-var hm = document.createElement("script");
-
-hm.src = "https://hm.baidu.com/hm.js?54b918eee37cb8a7045f0fd0f0b24395";
-
-var s = document.getElementsByTagName("script")[0];
-s.parentNode.insertBefore(hm, s);
-})();
-</script><!-- Google Analytics--><script type="text/javascript" async src="https://www.googletagmanager.com/gtag/js?id=UA-141228404-1"></script><script type="text/javascript">window.dataLayer = window.dataLayer || [];
-function gtag(){dataLayer.push(arguments);}
-gtag('js', new Date());
-gtag('config', 'UA-141228404-1');</script></html>
\ No newline at end of file
+};</script><script src="https://echarts.apache.org/en/./js/vendors/vanilla-lazyload@12.0.3/lazyload.min.js"></script><script src="https://echarts.apache.org/en/js/index.js?_v_=1738677094048"></script></html>
\ No newline at end of file
diff --git a/en/js/doc-bundle.js b/en/js/doc-bundle.js
index d87a8e82b..a196db244 100644
--- a/en/js/doc-bundle.js
+++ b/en/js/doc-bundle.js
@@ -5,4 +5,4 @@
 * Copyright (c) 2014–2018, Julian Kühnel
 * Released under the MIT license https://git.io/vwTVl
 *****************************************************/
-e.exports=function(){"use strict";var e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},t=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},n=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.def [...]
\ No newline at end of file
+e.exports=function(){"use strict";var e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},t=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},n=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.def [...]
\ No newline at end of file
diff --git a/en/js/echarts-www-landing-animation/echarts-www-landing-animation.js b/en/js/echarts-www-landing-animation/echarts-www-landing-animation.js
new file mode 100644
index 000000000..ed381a82b
--- /dev/null
+++ b/en/js/echarts-www-landing-animation/echarts-www-landing-animation.js
@@ -0,0 +1,93 @@
+var $Z=Object.defineProperty,KZ=Object.defineProperties;var YZ=Object.getOwnPropertyDescriptors;var Fx=Object.getOwnPropertySymbols;var ZZ=Object.prototype.hasOwnProperty,XZ=Object.prototype.propertyIsEnumerable;var C2=(ut,ct,ot)=>ct in ut?$Z(ut,ct,{enumerable:!0,configurable:!0,writable:!0,value:ot}):ut[ct]=ot,Su=(ut,ct)=>{for(var ot in ct||(ct={}))ZZ.call(ct,ot)&&C2(ut,ot,ct[ot]);if(Fx)for(var ot of Fx(ct))XZ.call(ct,ot)&&C2(ut,ot,ct[ot]);return ut},ch=(ut,ct)=>KZ(ut,YZ(ct));var On=(ut [...]
+  * @intlify/shared v9.1.9
+  * (c) 2021 kazuya kawaguchi
+  * Released under the MIT License.
+  */const ct=typeof Symbol=="function"&&typeof Symbol.toStringTag=="symbol",ot=t=>ct?Symbol(t):t,Nx=(t,e,r)=>Vx({l:t,k:e,s:r}),Vx=t=>JSON.stringify(t).replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029").replace(/\u0027/g,"\\u0027"),bt=t=>typeof t=="number"&&isFinite(t),Bx=t=>fh(t)==="[object Date]",Qi=t=>fh(t)==="[object RegExp]",wu=t=>Ie(t)&&Object.keys(t).length===0;function Gx(t,e){typeof console!="undefined"&&(console.warn("[intlify] "+t),e&&console.warn(e.stack))}const xt=Obje [...]
+  * @intlify/message-resolver v9.1.9
+  * (c) 2021 kazuya kawaguchi
+  * Released under the MIT License.
+  */const Wx=Object.prototype.hasOwnProperty;function $x(t,e){return Wx.call(t,e)}const bu=t=>t!==null&&typeof t=="object",ua=[];ua[0]={w:[0],i:[3,0],["["]:[4],o:[7]},ua[1]={w:[1],["."]:[2],["["]:[4],o:[7]},ua[2]={w:[2],i:[3,0],["0"]:[3,0]},ua[3]={i:[3,0],["0"]:[3,0],w:[1,1],["."]:[2,1],["["]:[4,1],o:[7,1]},ua[4]={["'"]:[5,0],['"']:[6,0],["["]:[4,2],["]"]:[1,3],o:8,l:[4,0]},ua[5]={["'"]:[4,0],o:8,l:[5,0]},ua[6]={['"']:[4,0],o:8,l:[6,0]};const Kx=/^\s?(?:true|false|-?[\d.]+|'[^']*'|"[^"]* [...]
+  * @intlify/runtime v9.1.9
+  * (c) 2021 kazuya kawaguchi
+  * Released under the MIT License.
+  */const jx=t=>t,Qx=t=>"",eC="text",tC=t=>t.length===0?"":t.join(""),rC=Ux;function L2(t,e){return t=Math.abs(t),e===2?t?t>1?1:0:1:t?Math.min(t,2):0}function nC(t){const e=bt(t.pluralIndex)?t.pluralIndex:-1;return t.named&&(bt(t.named.count)||bt(t.named.n))?bt(t.named.count)?t.named.count:bt(t.named.n)?t.named.n:e:e}function aC(t,e){e.count||(e.count=t),e.n||(e.n=t)}function iC(t={}){const e=t.locale,r=nC(t),n=It(t.pluralRules)&&de(e)&&Ct(t.pluralRules[e])?t.pluralRules[e]:L2,a=It(t.plu [...]
+  * @intlify/message-compiler v9.1.9
+  * (c) 2021 kazuya kawaguchi
+  * Released under the MIT License.
+  */function Cu(t,e,r={}){const{domain:n,messages:a,args:i}=r,o=t,s=new SyntaxError(String(o));return s.code=t,e&&(s.location=e),s.domain=n,s}function oC(t){throw t}function sC(t,e,r){return{line:t,column:e,offset:r}}function dh(t,e,r){const n={start:t,end:e};return r!=null&&(n.source=r),n}const Fn=" ",lC="\r",Ht=`
+`,uC=String.fromCharCode(8232),cC=String.fromCharCode(8233);function fC(t){const e=t;let r=0,n=1,a=1,i=0;const o=x=>e[x]===lC&&e[x+1]===Ht,s=x=>e[x]===Ht,l=x=>e[x]===cC,u=x=>e[x]===uC,c=x=>o(x)||s(x)||l(x)||u(x),f=()=>r,h=()=>n,v=()=>a,d=()=>i,g=x=>o(x)||l(x)||u(x)?Ht:e[x],p=()=>g(r),m=()=>g(r+i);function y(){return i=0,c(r)&&(n++,a=0),o(r)&&r++,r++,a++,e[r]}function _(){return o(r+i)&&i++,i++,e[r+i]}function S(){r=0,n=1,a=1,i=0}function b(x=0){i=x}function w(){const x=r+i;for(;x!==r;)y( [...]
+`,o=e.needIndent?e.needIndent:r!=="arrow",s=t.helpers||[],l=SC(t,{mode:r,filename:n,sourceMap:a,breakLineCode:i,needIndent:o});l.push(r==="normal"?"function __msg__ (ctx) {":"(ctx) => {"),l.indent(o),s.length>0&&(l.push(`const { ${s.map(f=>`${f}: _${f}`).join(", ")} } = ctx`),l.newline()),l.push("return "),to(l,t),l.deindent(o),l.push("}");const{code:u,map:c}=l.context();return{ast:t,code:u,map:c?c.toJSON():void 0}};function MC(t,e={}){const r=xt({},e),a=mC(r).parse(t);return _C(a,r),TC( [...]
+  * @intlify/devtools-if v9.1.9
+  * (c) 2021 kazuya kawaguchi
+  * Released under the MIT License.
+  */const R2={I18nInit:"i18n:init",FunctionTranslate:"function:translate"};/*!
+  * @intlify/core-base v9.1.9
+  * (c) 2021 kazuya kawaguchi
+  * Released under the MIT License.
+  */let As=null;function AC(t){As=t}function IC(t,e,r){As&&As.emit(R2.I18nInit,{timestamp:Date.now(),i18n:t,version:e,meta:r})}const DC=LC(R2.FunctionTranslate);function LC(t){return e=>As&&As.emit(t,e)}const PC="9.1.9",Tu=-1,z2="";function EC(){return{upper:t=>de(t)?t.toUpperCase():t,lower:t=>de(t)?t.toLowerCase():t,capitalize:t=>de(t)?`${t.charAt(0).toLocaleUpperCase()}${t.substr(1)}`:t}}let k2;function RC(t){k2=t}let O2=null;const F2=t=>{O2=t},zC=()=>O2;let N2=0;function kC(t={}){cons [...]
+  * @intlify/vue-devtools v9.1.9
+  * (c) 2021 kazuya kawaguchi
+  * Released under the MIT License.
+  */const sv={["vue-devtools-plugin-vue-i18n"]:"Vue I18n devtools",["vue-i18n-resource-inspector"]:"I18n Resources",["vue-i18n-timeline"]:"Vue I18n"},SA={["vue-i18n-resource-inspector"]:"Search for scopes ..."},wA={["vue-i18n-timeline"]:16764185};/*!
+  * vue-i18n v9.1.9
+  * (c) 2021 kazuya kawaguchi
+  * Released under the MIT License.
+  */const bA="9.1.9";function xA(){typeof __VUE_I18N_FULL_INSTALL__!="boolean"&&(eo().__VUE_I18N_FULL_INSTALL__=!0),typeof __VUE_I18N_LEGACY_API__!="boolean"&&(eo().__VUE_I18N_LEGACY_API__=!0),typeof __VUE_I18N_PROD_DEVTOOLS__!="boolean"&&(eo().__VUE_I18N_PROD_DEVTOOLS__=!1),typeof __INTLIFY_PROD_DEVTOOLS__!="boolean"&&(eo().__INTLIFY_PROD_DEVTOOLS__=!1)}function Pt(t,...e){return Cu(t,null,void 0)}const lv="__INTLIFY_META__",uv=ot("__transrateVNode"),cv=ot("__datetimeParts"),fv=ot("__nu [...]
+  Copyright (c) Microsoft Corporation.
+
+  Permission to use, copy, modify, and/or distribute this software for any
+  purpose with or without fee is hereby granted.
+
+  THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+  REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+  AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+  INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+  LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+  OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+  PERFORMANCE OF THIS SOFTWARE.
+  ***************************************************************************** */var wv=function(t,e){return wv=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,n){r.__proto__=n}||function(r,n){for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(r[a]=n[a])},wv(t,e)};function j(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");wv(t,e);function r(){this.constructor=t}t.prototype=e===null?Obj [...]
+`),i=a.length;if(i===1)return H3(a[0],e,r,n);for(var o=new xe(0,0,0,0),s=0;s<a.length;s++){var l=H3(a[s],e,r,n);s===0?o.copy(l):o.union(l)}return o}function nl(t,e,r){return r==="right"?t-=e:r==="center"&&(t-=e/2),t}function zo(t,e,r){return r==="middle"?t-=e/2:r==="bottom"&&(t-=e),t}function f1(t){return mr("\u56FD",t)}function wn(t,e){return typeof t=="string"?t.lastIndexOf("%")>=0?parseFloat(t)/100*e:parseFloat(t):t}function Pc(t,e,r){var n=e.position||"inside",a=e.distance!=null?e.di [...]
+* ZRender, a high performance 2d drawing library.
+*
+* Copyright (c) 2013, Baidu Inc.
+* All rights reserved.
+*
+* LICENSE
+* https://github.com/ecomfe/zrender/blob/master/LICENSE.txt
+*/var Ec={},K3={};function QD(t){delete K3[t]}function eL(t){if(!t)return!1;if(typeof t=="string")return _c(t,1)<a1;if(t.colorStops){for(var e=t.colorStops,r=0,n=e.length,a=0;a<n;a++)r+=_c(e[a].color,1);return r/=n,r<a1}return!1}var tL=function(){function t(e,r,n){var a=this;this._sleepAfterStill=10,this._stillFrameAccum=0,this._needsRefresh=!0,this._needsRefreshHover=!0,this._darkMode=!1,n=n||{},this.dom=r,this.id=e;var i=new hD,o=n.renderer||"canvas";Ec[o]||(o=Ne(Ec)[0]),n.useDirtyRect [...]
+`);a=p5(e,r,n,a);for(var o=0,s=i.length;o<s;o++)i[o]=g5(i[o],a);return i.join(`
+`)}function p5(t,e,r,n){n=n||{};var a=ne({},n);a.font=e,r=ze(r,"..."),a.maxIterations=ze(n.maxIterations,2);var i=a.minChar=ze(n.minChar,0);a.cnCharWidth=mr("\u56FD",e);var o=a.ascCharWidth=mr("a",e);a.placeholder=ze(n.placeholder,"");for(var s=t=Math.max(0,t-1),l=0;l<i&&s>=o;l++)s-=o;var u=mr(r,e);return u>s&&(r="",u=0),s=t-u,a.ellipsis=r,a.ellipsisWidth=u,a.contentWidth=s,a.containerWidth=t,a}function g5(t,e){var r=e.containerWidth,n=e.font,a=e.contentWidth;if(!r)return"";var i=mr(t,n) [...]
+`):[];var h=f.length*s,v=ze(e.height,h);if(h>v&&u){var d=Math.floor(v/s);f=f.slice(0,d)}if(t&&i&&c!=null)for(var g=p5(c,a,e.ellipsis,{minChar:e.truncateMinChar,placeholder:e.placeholder}),p=0;p<f.length;p++)f[p]=g5(f[p],g);for(var m=v,y=0,p=0;p<f.length;p++)y=Math.max(mr(f[p],a),y);c==null&&(c=y);var _=y;return n&&(m+=n[0]+n[2],_+=n[1]+n[3],c+=n[1]+n[3]),l&&(_=c),{lines:f,height:v,outerWidth:_,outerHeight:m,lineHeight:s,calculatedLineHeight:o,contentWidth:y,contentHeight:h,width:c}}var B [...]
+`),u=!0),n.accumWidth=d}else{var g=y5(e,l,n.width,n.breakAll,n.accumWidth);n.accumWidth=g.accumWidth+v,f=g.linesWidths,c=g.lines}}else c=e.split(`
+`);for(var p=0;p<c.length;p++){var m=c[p],y=new BL;if(y.styleName=a,y.text=m,y.isLineHolder=!m&&!i,typeof o.width=="number"?y.width=o.width:y.width=f?f[p]:mr(m,l),!p&&!u){var _=(s[s.length-1]||(s[0]=new m5)).tokens,S=_.length;S===1&&_[0].isLineHolder?_[0]=y:(m||!S||i)&&_.push(y)}else s.push(new m5([y]))}}function UL(t){var e=t.charCodeAt(0);return e>=33&&e<=383}var WL=mn(",&?/;] ".split(""),function(t,e){return t[e]=!0,t},{});function $L(t){return UL(t)?!!WL[t]:!0}function y5(t,e,r,n,a){ [...]
+`){l&&(s+=l,c+=u),i.push(s),o.push(c),s="",l="",u=0,c=0;continue}var v=mr(h,e),d=n?!1:!$L(h);if(i.length?c+v>r:a+c+v>r){c?(s||l)&&(d?(s||(s=l,l="",u=0,c=u),i.push(s),o.push(c-u),l+=h,u+=v,s="",c=u):(l&&(s+=l,l="",u=0),i.push(s),o.push(c),s=h,c=v)):d?(i.push(l),o.push(u),l=h,u=v):(i.push(h),o.push(v));continue}c+=v,d?(l+=h,u+=v):(l&&(s+=l,l="",u=0),s+=h)}return!i.length&&!s&&(s=t,l="",u=0),l&&(s+=l),s&&(i.push(s),o.push(c)),i.length===1&&(c+=a),{accumWidth:c,lines:i,linesWidths:o}}var C1= [...]
+`):"",u=+e.value(1)*2,c=i.r/2;return{type:"circle",shape:{cx:i.x,cy:i.y,r:i.r},z2:u,textContent:c>4?{type:"text",style:{text:l,width:i.r*1.3,overflow:"truncate",fontSize:i.r/3},emphasis:{style:{overflow:void 0,fontSize:Math.max(i.r/3,10)}}}:void 0,textConfig:{position:"inside"},style:{fill:e.visual("color"),text:l,font:s},emphasis:{style:{shadowBlur:20,shadowOffsetX:3,shadowOffsetY:5,shadowColor:"rgba(0,0,0,0.3)"}}}},coordinateSystem:void 0,animationDurationUpdate:1e3,universalTransition [...]
+{unit|km / h}`,offsetCenter:[0,"50%"],rich:{unit:{lineHeight:80,color:"#fff",fontSize:30}},fontSize:50,color:"#fff"},data:[{value:288,name:"SPEED"}]}]})];var YN=new pt({option:KN,duration:5e3,file:"gaugeCar",title:"Gauge",dark:!0,background:"#001122"});const ZN=2.4,eu=.5;function J8([t,e],[r,n]){return((t-r)**2+(e-n)**2)**.5}function XN([t,e],[r,n]){return Math.atan2(e-n,t-r)}function ka([t,e],r,n){return[t+n*Math.cos(r),e+n*Math.sin(r)]}const qN=nd({type:"metaball",buildPath(t,e){const  [...]
+ * wordcloud2.js
+ * http://timdream.org/wordcloud2.js/
+ *
+ * Copyright 2011 - 2013 Tim Chien
+ * Released under the MIT license
+ */window.setImmediate||(window.setImmediate=function(){return window.msSetImmediate||window.webkitSetImmediate||window.mozSetImmediate||window.oSetImmediate||function(){if(!window.postMessage||!window.addEventListener)return null;var r=[void 0],n="zero-timeout-message",a=function(o){var s=r.length;return r.push(o),window.postMessage(n+s.toString(36),"*"),s};return window.addEventListener("message",function(o){if(!(typeof o.data!="string"||o.data.substr(0,n.length)!==n)){o.stopImmediateP [...]
+	<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+		 width="420px" height="420px" viewBox="0 0 420 420" enable-background="new 0 0 420 420" xml:space="preserve">
+	<g>
+		<path fill="#e43a61" d="M210.17,1.366C94.513,1.366,0.746,95.105,0.746,210.781c0,115.649,93.767,209.397,209.424,209.397
+			c23.672,0,46.357-4.132,67.586-11.348c75.374-25.733,131.396-93.069,140.459-174.717c0.853-7.686,1.365-15.438,1.365-23.333
+			C419.58,95.105,325.812,1.366,210.17,1.366z"/>
+	</g>
+	<g>
+		<path fill="#FFFFFF" d="M351.269,267.318c-3.24-1.219-6.557-1.729-9.81-1.572c0.569-2.573,0.735-5.157,0.509-7.685
+			c-0.832-9.167-6.753-17.495-15.909-20.991c-9.421-3.563-19.64-1.026-26.333,5.641c2.641,0.026,5.345,0.529,7.955,1.524
+			c11.991,4.539,18.018,17.948,13.496,29.945c-1.685,4.429-4.562,8.022-8.122,10.605c-6.123,4.412-14.258,5.768-21.833,2.888
+			c-11.994-4.529-18.018-17.938-13.479-29.938c0.579-1.565,1.332-3.018,2.211-4.399h-0.014l0,0c3.876-6.023,7.183-12.563,9.83-19.532
+			c20.505-54.17-6.779-114.73-60.966-135.25c-54.188-20.522-114.735,6.763-135.25,60.936c-5.616,14.779-7.646,30.04-6.542,44.828
+			c0.027,0.488,0.073,0.987,0.118,1.488c4.371,50.291,36.778,96.136,87.144,115.186c51.223,19.39,106.825,5.75,143.413-30.352
+			c6.251-6.067,15.694-8.318,24.365-5.028c10.445,3.952,16.35,14.611,14.734,25.224c3.905-2.754,7.072-6.67,8.904-11.494
+			C370.548,286.519,364.078,272.173,351.269,267.318z"/>
+	</g>
+	</svg>`);function Vp(t){return Math.round(t.getWidth()/15)}const vV=[t=>{const e=Vp(t)*1.2;return{graphic:{elements:[{type:"image",style:{image:l_,x:-e/2,y:-e/2,width:e,height:e},x:t.getWidth()/2-Vp(t)*5.5,y:t.getHeight()/2,enterAnimation:{easing:"cubicOut",duration:1e3},enterFrom:{x:t.getWidth()/2}},{type:"text",left:"center",top:"center",style:{text:"Apache ECharts",fontSize:e,fontWeight:"bold",lineDash:[0,200],lineDashOffset:0,fill:"transparent",stroke:"#000",lineWidth:1,fontFamily:" [...]
+`+p.message)}var a=new Ce;a.add(n),a.isGeoSVGGraphicRoot=!0;var i=r.width,o=r.height,s=r.viewBoxRect,l=this._boundingRect;if(!l){var u=void 0,c=void 0,f=void 0,h=void 0;if(i!=null?(u=0,f=i):s&&(u=s.x,f=s.width),o!=null?(c=0,h=o):s&&(c=s.y,h=s.height),u==null||c==null){var v=n.getBoundingRect();u==null&&(u=v.x,f=v.width),c==null&&(c=v.y,h=v.height)}l=this._boundingRect=new xe(u,c,f,h)}if(s){var d=KS(s,l);n.scaleX=n.scaleY=d.scale,n.x=d.x,n.y=d.y}a.setClipPath(new Ye({shape:l.plain()}));va [...]
+`+i.message)}return OH(r,a),D(a,function(i){var o=i.name;NH(r,i),BH(r,i);var s=this._specialAreas&&this._specialAreas[o];s&&i.transformTo(s.left,s.top,s.width,s.height)},this),a},t.prototype.getMapForUser=function(){return{geoJson:this._geoJSON,geoJSON:this._geoJSON,specialAreas:this._specialAreas}},t}();function UH(t){for(var e,r=0;r<t.length;r++){var n=t[r].getBoundingRect();e=e||n.clone(),e.union(n)}return e}function WH(t){return ge(t)?typeof JSON!="undefined"&&JSON.parse?JSON.parse(t [...]
+`)){var p=new nh;p.newline=!0,u.add(p);return}var m=a.getSeriesByName(g)[0];if(!c.get(g))if(m){var y=m.getData(),_=y.getVisual("legendLineStyle")||{},S=y.getVisual("legendIcon"),b=y.getVisual("style"),w=this._createItem(m,g,d,v,n,r,_,b,S,f);w.on("click",ws(Wb,g,null,i,h)).on("mouseover",ws(f2,m.name,null,i,h)).on("mouseout",ws(h2,m.name,null,i,h)),c.set(g,!0)}else a.eachRawSeries(function(x){if(!c.get(g)&&x.legendVisualProvider){var C=x.legendVisualProvider;if(!C.containName(g))return;va [...]
+`||u==="")){var c=o.isSelected(u);n.hasOwnProperty(u)?n[u]=n[u]&&c:n[u]=c}})}),t==="allSelect"||t==="inverseSelect"?{selected:n}:{name:e.name,selected:n}}function mY(t){t.registerAction("legendToggleSelect","legendselectchanged",$e(gu,"toggleSelected")),t.registerAction("legendAllSelect","legendselectall",$e(gu,"allSelect")),t.registerAction("legendInverseSelect","legendinverseselect",$e(gu,"inverseSelect")),t.registerAction("legendSelect","legendselected",$e(gu,"select")),t.registerActi [...]
diff --git a/en/js/echarts-www-landing-animation/style.css b/en/js/echarts-www-landing-animation/style.css
new file mode 100644
index 000000000..d3f98c291
--- /dev/null
+++ b/en/js/echarts-www-landing-animation/style.css
@@ -0,0 +1 @@
+@import"https://fonts.googleapis.com/css2?family=Open+Sans+Condensed:wght@700&display=swap";#stage-main[data-v-41c361dc]{position:absolute;left:0;top:0;height:100%;width:100%;transition:linear .2s background;user-select:none;color:#111}#stage-viewport[data-v-41c361dc]{position:absolute;left:0;top:0;height:100%;width:100%}#stage-title[data-v-41c361dc]{position:absolute;left:20px;bottom:30px;font-size:30px;transition:linear .2s color;z-index:1;font-family:"Open Sans Condensed",sans-serif}# [...]
diff --git a/en/js/index.js b/en/js/index.js
index 454f83368..4d9449e3d 100644
--- a/en/js/index.js
+++ b/en/js/index.js
@@ -1 +1 @@
-window.lazyLoadOptions={elements_selector:".lazy"},function(){if(!$(".lower-ie").length){document.getElementById("nav-index").className="active";var n=navigator.userAgent,e=n.match(/MSIE\s([\d.]+)/)||n.match(/Trident\/.+?rv:(([\d.]+))/),n=n.match(/Edge\/([\d.]+)/),i=(window.supportTouch="ontouchstart"in window&&!e&&!n,ScrollReveal().reveal(".reveal",{container:"#page-index",delay:300}),ScrollReveal().reveal(".reveal-later",{container:"#page-index",delay:600}),ScrollReveal().reveal(".reve [...]
\ No newline at end of file
+window.lazyLoadOptions={elements_selector:".lazy"},function(){if(!$(".lower-ie").length){document.getElementById("nav-index").className="active";var e=navigator.userAgent,n=e.match(/MSIE\s([\d.]+)/)||e.match(/Trident\/.+?rv:(([\d.]+))/),e=e.match(/Edge\/([\d.]+)/),o=(window.supportTouch="ontouchstart"in window&&!n&&!e,ScrollReveal().reveal(".reveal",{container:"#page-index",delay:300}),ScrollReveal().reveal(".reveal-later",{container:"#page-index",delay:600}),ScrollReveal().reveal(".reve [...]
\ No newline at end of file
diff --git a/en/js/vendors/ace-builds@1.4.12/src-min-noconflict/ace.js b/en/js/vendors/ace-builds@1.4.12/src-min-noconflict/ace.js
new file mode 100644
index 000000000..f259ac20a
--- /dev/null
+++ b/en/js/vendors/ace-builds@1.4.12/src-min-noconflict/ace.js
@@ -0,0 +1,17 @@
+(function(){function o(n){var i=e;n&&(e[n]||(e[n]={}),i=e[n]);if(!i.define||!i.define.packaged)t.original=i.define,i.define=t,i.define.packaged=!0;if(!i.require||!i.require.packaged)r.original=i.require,i.require=r,i.require.packaged=!0}var ACE_NAMESPACE = "ace",e=function(){return this}();!e&&typeof window!="undefined"&&(e=window);if(!ACE_NAMESPACE&&typeof requirejs!="undefined")return;var t=function(e,n,r){if(typeof e!="string"){t.original?t.original.apply(this,arguments):(console.erro [...]
+                ace.require(["ace/ace"], function(a) {
+                    if (a) {
+                        a.config.init(true);
+                        a.define = ace.define;
+                    }
+                    if (!window.ace)
+                        window.ace = a;
+                    for (var key in a) if (a.hasOwnProperty(key))
+                        window.ace[key] = a[key];
+                    window.ace["default"] = window.ace;
+                    if (typeof module == "object" && typeof exports == "object" && module) {
+                        module.exports = window.ace;
+                    }
+                });
+            })();
+        
\ No newline at end of file
diff --git a/en/js/vendors/ace-builds@1.4.12/src-min-noconflict/ext-language_tools.js b/en/js/vendors/ace-builds@1.4.12/src-min-noconflict/ext-language_tools.js
new file mode 100644
index 000000000..ea60a1e91
--- /dev/null
+++ b/en/js/vendors/ace-builds@1.4.12/src-min-noconflict/ext-language_tools.js
@@ -0,0 +1,8 @@
+ace.define("ace/snippets",["require","exports","module","ace/lib/oop","ace/lib/event_emitter","ace/lib/lang","ace/range","ace/range_list","ace/keyboard/hash_handler","ace/tokenizer","ace/clipboard","ace/lib/dom","ace/editor"],function(e,t,n){"use strict";function h(e){var t=(new Date).toLocaleString("en-us",e);return t.length==1?"0"+t:t}var r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,s=e("./lib/lang"),o=e("./range").Range,u=e("./range_list").RangeList,a=e("./keyboard/hash_ha [...]
+                    ace.require(["ace/ext/language_tools"], function(m) {
+                        if (typeof module == "object" && typeof exports == "object" && module) {
+                            module.exports = m;
+                        }
+                    });
+                })();
+            
\ No newline at end of file
diff --git a/en/js/vendors/ace-builds@1.4.12/src-min-noconflict/mode-javascript.js b/en/js/vendors/ace-builds@1.4.12/src-min-noconflict/mode-javascript.js
new file mode 100644
index 000000000..8cb6143aa
--- /dev/null
+++ b/en/js/vendors/ace-builds@1.4.12/src-min-noconflict/mode-javascript.js
@@ -0,0 +1,8 @@
+ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\ [...]
+                    ace.require(["ace/mode/javascript"], function(m) {
+                        if (typeof module == "object" && typeof exports == "object" && module) {
+                            module.exports = m;
+                        }
+                    });
+                })();
+            
\ No newline at end of file
diff --git a/en/js/vendors/ace-builds@1.4.12/src-min-noconflict/snippets/javascript.js b/en/js/vendors/ace-builds@1.4.12/src-min-noconflict/snippets/javascript.js
new file mode 100644
index 000000000..efe9568cd
--- /dev/null
+++ b/en/js/vendors/ace-builds@1.4.12/src-min-noconflict/snippets/javascript.js
@@ -0,0 +1,8 @@
+ace.define("ace/snippets/javascript",["require","exports","module"],function(e,t,n){"use strict";t.snippetText='# Prototype\nsnippet proto\n	${1:class_name}.prototype.${2:method_name} = function(${3:first_argument}) {\n		${4:// body...}\n	};\n# Function\nsnippet fun\n	function ${1?:function_name}(${2:argument}) {\n		${3:// body...}\n	}\n# Anonymous Function\nregex /((=)\\s*|(:)\\s*|(\\()|\\b)/f/(\\))?/\nsnippet f\n	function${M1?: ${1:functionName}}($2) {\n		${0:$TM_SELECTED_TEXT}\n	}${M2 [...]
+                    ace.require(["ace/snippets/javascript"], function(m) {
+                        if (typeof module == "object" && typeof exports == "object" && module) {
+                            module.exports = m;
+                        }
+                    });
+                })();
+            
\ No newline at end of file
diff --git a/en/js/vendors/ace-builds@1.4.12/src-min-noconflict/snippets/json.js b/en/js/vendors/ace-builds@1.4.12/src-min-noconflict/snippets/json.js
new file mode 100644
index 000000000..43f3e0a2d
--- /dev/null
+++ b/en/js/vendors/ace-builds@1.4.12/src-min-noconflict/snippets/json.js
@@ -0,0 +1,8 @@
+;                (function() {
+                    ace.require(["ace/snippets/json"], function(m) {
+                        if (typeof module == "object" && typeof exports == "object" && module) {
+                            module.exports = m;
+                        }
+                    });
+                })();
+            
\ No newline at end of file
diff --git a/en/js/vendors/ace-builds@1.4.12/src-min-noconflict/worker-javascript.js b/en/js/vendors/ace-builds@1.4.12/src-min-noconflict/worker-javascript.js
new file mode 100644
index 000000000..9070cb7d6
--- /dev/null
+++ b/en/js/vendors/ace-builds@1.4.12/src-min-noconflict/worker-javascript.js
@@ -0,0 +1 @@
+"no use strict";!function(e){function t(e,t){var n=e,r="";while(n){var i=t[n];if(typeof i=="string")return i+r;if(i)return i.location.replace(/\/*$/,"/")+(r||i.main||i.name);if(i===!1)return"";var s=n.lastIndexOf("/");if(s===-1)break;r=n.substr(s)+r,n=n.slice(0,s)}return e}if(typeof e.window!="undefined"&&e.document)return;if(e.require&&e.define)return;e.console||(e.console=function(){var e=Array.prototype.slice.call(arguments,0);postMessage({type:"log",data:e})},e.console.error=e.consol [...]
\ No newline at end of file
diff --git a/en/js/vendors/acorn@8.7.1/dist/acorn.min.js b/en/js/vendors/acorn@8.7.1/dist/acorn.min.js
new file mode 100644
index 000000000..d9372d3d5
--- /dev/null
+++ b/en/js/vendors/acorn@8.7.1/dist/acorn.min.js
@@ -0,0 +1,8 @@
+/**
+ * Minified by jsDelivr using Terser v5.19.2.
+ * Original file: /npm/acorn@8.7.1/dist/acorn.js
+ *
+ * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
+ */
+!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).acorn={})}(this,(function(t){"use strict";var e=[509,0,227,0,150,4,294,9,1368,2,2,1,6,3,41,2,5,0,166,1,574,3,9,9,370,1,154,10,50,3,123,2,54,14,32,10,3,1,11,3,46,10,8,0,46,9,7,2,37,13,2,9,6,1,45,0,13,2,49,13,9,3,2,11,83,11,7,0,161,11,6,9,7,3,56,1,2,6,3,1,3,2,10,0,11,1,3,6,4,4,193,17,10,9,5,0,82,19 [...]
+//# sourceMappingURL=/sm/acf470258aaa33b9c56585ddc5fff40cce1a3c7761aee9bee37e393cfc0d9d4f.map
\ No newline at end of file
diff --git a/en/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css b/en/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css
new file mode 100644
index 000000000..ed3905e0e
--- /dev/null
+++ b/en/js/vendors/bootstrap@3.3.7/css/bootstrap.min.css
@@ -0,0 +1,6 @@
+/*!
+ * Bootstrap v3.3.7 (http://getbootstrap.com)
+ * Copyright 2011-2016 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr [...]
+/*# sourceMappingURL=bootstrap.min.css.map */
\ No newline at end of file
diff --git a/en/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js b/en/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js
new file mode 100644
index 000000000..9bcd2fcca
--- /dev/null
+++ b/en/js/vendors/bootstrap@3.3.7/js/bootstrap.min.js
@@ -0,0 +1,7 @@
+/*!
+ * Bootstrap v3.3.7 (http://getbootstrap.com)
+ * Copyright 2011-2016 Twitter, Inc.
+ * Licensed under the MIT license
+ */
+if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1||b[0]>3)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4")}(jQuery),+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:" [...]
+this.activeTarget=b,this.clear();var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate.bs.scrollspy")},b.prototype.clear=function(){a(this.selector).parentsUntil(this.options.target,".active").removeClass("active")};var d=a.fn.scrollspy;a.fn.scrollspy=c,a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return  [...]
\ No newline at end of file
diff --git a/en/js/vendors/code-prettify@0.1.0/lang-css.js b/en/js/vendors/code-prettify@0.1.0/lang-css.js
new file mode 100644
index 000000000..c6f7c36b0
--- /dev/null
+++ b/en/js/vendors/code-prettify@0.1.0/lang-css.js
@@ -0,0 +1,160 @@
+/**
+ * @license
+ * Copyright (C) 2009 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * @fileoverview
+ * Registers a language handler for CSS.
+ *
+ *
+ * To use, include prettify.js and this file in your HTML page.
+ * Then put your code in an HTML tag like
+ *      <pre class="prettyprint lang-css"></pre>
+ *
+ *
+ * http://www.w3.org/TR/CSS21/grammar.html Section G2 defines the lexical
+ * grammar.  This scheme does not recognize keywords containing escapes.
+ *
+ * @author mikesamuel@gmail.com
+ */
+
+// This file is a call to a function defined in prettify.js which defines a
+// lexical scanner for CSS and maps tokens to styles.
+
+// The call to PR['registerLangHandler'] is quoted so that Closure Compiler
+// will not rename the call so that this language extensions can be
+// compiled/minified separately from one another.  Other symbols defined in
+// prettify.js are similarly quoted.
+
+// The call is structured thus:
+// PR['registerLangHandler'](
+//    PR['createSimpleLexer'](
+//        shortcutPatterns,
+//        fallThroughPatterns),
+//    [languageId0, ..., languageIdN])
+
+// Langugage IDs
+// =============
+// The language IDs are typically the file extensions of source files for
+// that language so that users can syntax highlight arbitrary files based
+// on just the extension.  This is heuristic, but works pretty well in
+// practice.
+
+// Patterns
+// ========
+// Lexers are typically implemented as a set of regular expressions.
+// The SimpleLexer function takes regular expressions, styles, and some
+// pragma-info and produces a lexer.  A token description looks like
+//   [STYLE_NAME, /regular-expression/, pragmas]
+
+// Initially, simple lexer's inner loop looked like:
+
+//    while sourceCode is not empty:
+//      try each regular expression in order until one matches
+//      remove the matched portion from sourceCode
+
+// This was really slow for large files because some JS interpreters
+// do a buffer copy on the matched portion which is O(n*n)
+
+// The current loop now looks like
+
+//    1. use js-modules/combinePrefixPatterns.js to 
+//       combine all regular expressions into one 
+//    2. use a single global regular expresion match to extract all tokens
+//    3. for each token try regular expressions in order until one matches it
+//       and classify it using the associated style
+
+// This is a lot more efficient but it does mean that lookahead and lookbehind
+// can't be used across boundaries to classify tokens.
+
+// Sometimes we need lookahead and lookbehind and sometimes we want to handle
+// embedded language -- JavaScript or CSS embedded in HTML, or inline assembly
+// in C.
+
+// If a particular pattern has a numbered group, and its style pattern starts
+// with "lang-" as in
+//    ['lang-js', /<script>(.*?)<\/script>/]
+// then the token classification step breaks the token into pieces.
+// Group 1 is re-parsed using the language handler for "lang-js", and the
+// surrounding portions are reclassified using the current language handler.
+// This mechanism gives us both lookahead, lookbehind, and language embedding.
+
+// Shortcut Patterns
+// =================
+// A shortcut pattern is one that is tried before other patterns if the first
+// character in the token is in the string of characters.
+// This very effectively lets us make quick correct decisions for common token
+// types.
+
+// All other patterns are fall-through patterns.
+
+
+
+// The comments inline below refer to productions in the CSS specification's
+// lexical grammar.  See link above.
+PR['registerLangHandler'](
+    PR['createSimpleLexer'](
+        // Shortcut patterns.
+        [
+         // The space production <s>
+         [PR['PR_PLAIN'],       /^[ \t\r\n\f]+/, null, ' \t\r\n\f']
+        ],
+        // Fall-through patterns.
+        [
+         // Quoted strings.  <string1> and <string2>
+         [PR['PR_STRING'],
+          /^\"(?:[^\n\r\f\\\"]|\\(?:\r\n?|\n|\f)|\\[\s\S])*\"/, null],
+         [PR['PR_STRING'],
+          /^\'(?:[^\n\r\f\\\']|\\(?:\r\n?|\n|\f)|\\[\s\S])*\'/, null],
+         ['lang-css-str', /^url\(([^\)\"\']+)\)/i],
+         [PR['PR_KEYWORD'],
+          /^(?:url|rgb|\!important|@import|@page|@media|@charset|inherit)(?=[^\-\w]|$)/i,
+          null],
+         // A property name -- an identifier followed by a colon.
+         ['lang-css-kw', /^(-?(?:[_a-z]|(?:\\[0-9a-f]+ ?))(?:[_a-z0-9\-]|\\(?:\\[0-9a-f]+ ?))*)\s*:/i],
+         // A C style block comment.  The <comment> production.
+         [PR['PR_COMMENT'], /^\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\//],
+         // Escaping text spans
+         [PR['PR_COMMENT'], /^(?:<!--|-->)/],
+         // A number possibly containing a suffix.
+         [PR['PR_LITERAL'], /^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],
+         // A hex color
+         [PR['PR_LITERAL'], /^#(?:[0-9a-f]{3}){1,2}\b/i],
+         // An identifier
+         [PR['PR_PLAIN'],
+          /^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i],
+         // A run of punctuation
+         [PR['PR_PUNCTUATION'], /^[^\s\w\'\"]+/]
+        ]),
+    ['css']);
+// Above we use embedded languages to highlight property names (identifiers
+// followed by a colon) differently from identifiers in values.
+PR['registerLangHandler'](
+    PR['createSimpleLexer']([],
+        [
+         [PR['PR_KEYWORD'],
+          /^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i]
+        ]),
+    ['css-kw']);
+// The content of an unquoted URL literal like url(http://foo/img.png) should
+// be colored as string content.  This language handler is used above in the
+// URL production to do so.
+PR['registerLangHandler'](
+    PR['createSimpleLexer']([],
+        [
+         [PR['PR_STRING'], /^[^\)\"\']+/]
+        ]),
+    ['css-str']);
diff --git a/en/js/vendors/code-prettify@0.1.0/prettify.min.js b/en/js/vendors/code-prettify@0.1.0/prettify.min.js
new file mode 100644
index 000000000..f56b8ddab
--- /dev/null
+++ b/en/js/vendors/code-prettify@0.1.0/prettify.min.js
@@ -0,0 +1,24 @@
+/**
+ * Minified by jsDelivr using Terser v5.19.2.
+ * Original file: /npm/code-prettify@0.1.0/src/prettify.js
+ *
+ * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
+ */
+/**
+ * @license
+ * Copyright (C) 2006 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+var DecorationsT,JobT,SourceSpansT,HACK_TO_FIX_JS_INCLUDE_PL,PR,prettyPrintOne,prettyPrint,IN_GLOBAL_SCOPE=!1;window.PR_SHOULD_USE_CONTINUATION=!0,function(){var e=window,n=["break,continue,do,else,for,if,return,while"],t=[[n,"auto,case,char,const,default,double,enum,extern,float,goto,inline,int,long,register,restrict,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"],"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,t [...]
+//# sourceMappingURL=/sm/71945ec171a5d0bd4638c8e3f6d54f58c8a78a1a9dcb8ad8abc797e91a4e0319.map
\ No newline at end of file
diff --git a/en/js/vendors/codemirror@5.56.0/codemirror.min.js b/en/js/vendors/codemirror@5.56.0/codemirror.min.js
new file mode 100644
index 000000000..a920ea3c3
--- /dev/null
+++ b/en/js/vendors/codemirror@5.56.0/codemirror.min.js
@@ -0,0 +1,8 @@
+/**
+ * Minified by jsDelivr using Terser v5.19.2.
+ * Original file: /npm/codemirror@5.56.0/lib/codemirror.js
+ *
+ * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
+ */
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).CodeMirror=t()}(this,(function(){"use strict";var e=navigator.userAgent,t=navigator.platform,r=/gecko\/\d/i.test(e),n=/MSIE \d/.test(e),i=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(e),o=/Edge\/(\d+)/.exec(e),l=n||i||o,s=l&&(n?document.documentMode||6:+(o||i)[1]),a=!o&&/WebKit\//.test(e),u=a&&/Qt\/\d+\.\d+/.test(e),c=!o&&/Chrome\//.test(e),h= [...]
+//# sourceMappingURL=/sm/884a0317f2ab2316cced1bf38aa8f6a746f28dff49bc71fc0d10dd8552bdcd7a.map
\ No newline at end of file
diff --git a/en/js/vendors/codemirror@5.56.0/mode/javascript/javascript.js b/en/js/vendors/codemirror@5.56.0/mode/javascript/javascript.js
new file mode 100644
index 000000000..a25a1cfe0
--- /dev/null
+++ b/en/js/vendors/codemirror@5.56.0/mode/javascript/javascript.js
@@ -0,0 +1,935 @@
+// CodeMirror, copyright (c) by Marijn Haverbeke and others
+// Distributed under an MIT license: https://codemirror.net/LICENSE
+
+(function(mod) {
+    if (typeof exports == "object" && typeof module == "object") // CommonJS
+      mod(require("../../lib/codemirror"));
+    else if (typeof define == "function" && define.amd) // AMD
+      define(["../../lib/codemirror"], mod);
+    else // Plain browser env
+      mod(CodeMirror);
+  })(function(CodeMirror) {
+  "use strict";
+  
+  CodeMirror.defineMode("javascript", function(config, parserConfig) {
+    var indentUnit = config.indentUnit;
+    var statementIndent = parserConfig.statementIndent;
+    var jsonldMode = parserConfig.jsonld;
+    var jsonMode = parserConfig.json || jsonldMode;
+    var isTS = parserConfig.typescript;
+    var wordRE = parserConfig.wordCharacters || /[\w$\xa1-\uffff]/;
+  
+    // Tokenizer
+  
+    var keywords = function(){
+      function kw(type) {return {type: type, style: "keyword"};}
+      var A = kw("keyword a"), B = kw("keyword b"), C = kw("keyword c"), D = kw("keyword d");
+      var operator = kw("operator"), atom = {type: "atom", style: "atom"};
+  
+      return {
+        "if": kw("if"), "while": A, "with": A, "else": B, "do": B, "try": B, "finally": B,
+        "return": D, "break": D, "continue": D, "new": kw("new"), "delete": C, "void": C, "throw": C,
+        "debugger": kw("debugger"), "var": kw("var"), "const": kw("var"), "let": kw("var"),
+        "function": kw("function"), "catch": kw("catch"),
+        "for": kw("for"), "switch": kw("switch"), "case": kw("case"), "default": kw("default"),
+        "in": operator, "typeof": operator, "instanceof": operator,
+        "true": atom, "false": atom, "null": atom, "undefined": atom, "NaN": atom, "Infinity": atom,
+        "this": kw("this"), "class": kw("class"), "super": kw("atom"),
+        "yield": C, "export": kw("export"), "import": kw("import"), "extends": C,
+        "await": C
+      };
+    }();
+  
+    var isOperatorChar = /[+\-*&%=<>!?|~^@]/;
+    var isJsonldKeyword = /^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)"/;
+  
+    function readRegexp(stream) {
+      var escaped = false, next, inSet = false;
+      while ((next = stream.next()) != null) {
+        if (!escaped) {
+          if (next == "/" && !inSet) return;
+          if (next == "[") inSet = true;
+          else if (inSet && next == "]") inSet = false;
+        }
+        escaped = !escaped && next == "\\";
+      }
+    }
+  
+    // Used as scratch variables to communicate multiple values without
+    // consing up tons of objects.
+    var type, content;
+    function ret(tp, style, cont) {
+      type = tp; content = cont;
+      return style;
+    }
+    function tokenBase(stream, state) {
+      var ch = stream.next();
+      if (ch == '"' || ch == "'") {
+        state.tokenize = tokenString(ch);
+        return state.tokenize(stream, state);
+      } else if (ch == "." && stream.match(/^\d[\d_]*(?:[eE][+\-]?[\d_]+)?/)) {
+        return ret("number", "number");
+      } else if (ch == "." && stream.match("..")) {
+        return ret("spread", "meta");
+      } else if (/[\[\]{}\(\),;\:\.]/.test(ch)) {
+        return ret(ch);
+      } else if (ch == "=" && stream.eat(">")) {
+        return ret("=>", "operator");
+      } else if (ch == "0" && stream.match(/^(?:x[\dA-Fa-f_]+|o[0-7_]+|b[01_]+)n?/)) {
+        return ret("number", "number");
+      } else if (/\d/.test(ch)) {
+        stream.match(/^[\d_]*(?:n|(?:\.[\d_]*)?(?:[eE][+\-]?[\d_]+)?)?/);
+        return ret("number", "number");
+      } else if (ch == "/") {
+        if (stream.eat("*")) {
+          state.tokenize = tokenComment;
+          return tokenComment(stream, state);
+        } else if (stream.eat("/")) {
+          stream.skipToEnd();
+          return ret("comment", "comment");
+        } else if (expressionAllowed(stream, state, 1)) {
+          readRegexp(stream);
+          stream.match(/^\b(([gimyus])(?![gimyus]*\2))+\b/);
+          return ret("regexp", "string-2");
+        } else {
+          stream.eat("=");
+          return ret("operator", "operator", stream.current());
+        }
+      } else if (ch == "`") {
+        state.tokenize = tokenQuasi;
+        return tokenQuasi(stream, state);
+      } else if (ch == "#" && stream.peek() == "!") {
+        stream.skipToEnd();
+        return ret("meta", "meta");
+      } else if (ch == "#" && stream.eatWhile(wordRE)) {
+        return ret("variable", "property")
+      } else if (ch == "<" && stream.match("!--") ||
+                 (ch == "-" && stream.match("->") && !/\S/.test(stream.string.slice(0, stream.start)))) {
+        stream.skipToEnd()
+        return ret("comment", "comment")
+      } else if (isOperatorChar.test(ch)) {
+        if (ch != ">" || !state.lexical || state.lexical.type != ">") {
+          if (stream.eat("=")) {
+            if (ch == "!" || ch == "=") stream.eat("=")
+          } else if (/[<>*+\-]/.test(ch)) {
+            stream.eat(ch)
+            if (ch == ">") stream.eat(ch)
+          }
+        }
+        if (ch == "?" && stream.eat(".")) return ret(".")
+        return ret("operator", "operator", stream.current());
+      } else if (wordRE.test(ch)) {
+        stream.eatWhile(wordRE);
+        var word = stream.current()
+        if (state.lastType != ".") {
+          if (keywords.propertyIsEnumerable(word)) {
+            var kw = keywords[word]
+            return ret(kw.type, kw.style, word)
+          }
+          if (word == "async" && stream.match(/^(\s|\/\*.*?\*\/)*[\[\(\w]/, false))
+            return ret("async", "keyword", word)
+        }
+        return ret("variable", "variable", word)
+      }
+    }
+  
+    function tokenString(quote) {
+      return function(stream, state) {
+        var escaped = false, next;
+        if (jsonldMode && stream.peek() == "@" && stream.match(isJsonldKeyword)){
+          state.tokenize = tokenBase;
+          return ret("jsonld-keyword", "meta");
+        }
+        while ((next = stream.next()) != null) {
+          if (next == quote && !escaped) break;
+          escaped = !escaped && next == "\\";
+        }
+        if (!escaped) state.tokenize = tokenBase;
+        return ret("string", "string");
+      };
+    }
+  
+    function tokenComment(stream, state) {
+      var maybeEnd = false, ch;
+      while (ch = stream.next()) {
+        if (ch == "/" && maybeEnd) {
+          state.tokenize = tokenBase;
+          break;
+        }
+        maybeEnd = (ch == "*");
+      }
+      return ret("comment", "comment");
+    }
+  
+    function tokenQuasi(stream, state) {
+      var escaped = false, next;
+      while ((next = stream.next()) != null) {
+        if (!escaped && (next == "`" || next == "$" && stream.eat("{"))) {
+          state.tokenize = tokenBase;
+          break;
+        }
+        escaped = !escaped && next == "\\";
+      }
+      return ret("quasi", "string-2", stream.current());
+    }
+  
+    var brackets = "([{}])";
+    // This is a crude lookahead trick to try and notice that we're
+    // parsing the argument patterns for a fat-arrow function before we
+    // actually hit the arrow token. It only works if the arrow is on
+    // the same line as the arguments and there's no strange noise
+    // (comments) in between. Fallback is to only notice when we hit the
+    // arrow, and not declare the arguments as locals for the arrow
+    // body.
+    function findFatArrow(stream, state) {
+      if (state.fatArrowAt) state.fatArrowAt = null;
+      var arrow = stream.string.indexOf("=>", stream.start);
+      if (arrow < 0) return;
+  
+      if (isTS) { // Try to skip TypeScript return type declarations after the arguments
+        var m = /:\s*(?:\w+(?:<[^>]*>|\[\])?|\{[^}]*\})\s*$/.exec(stream.string.slice(stream.start, arrow))
+        if (m) arrow = m.index
+      }
+  
+      var depth = 0, sawSomething = false;
+      for (var pos = arrow - 1; pos >= 0; --pos) {
+        var ch = stream.string.charAt(pos);
+        var bracket = brackets.indexOf(ch);
+        if (bracket >= 0 && bracket < 3) {
+          if (!depth) { ++pos; break; }
+          if (--depth == 0) { if (ch == "(") sawSomething = true; break; }
+        } else if (bracket >= 3 && bracket < 6) {
+          ++depth;
+        } else if (wordRE.test(ch)) {
+          sawSomething = true;
+        } else if (/["'\/`]/.test(ch)) {
+          for (;; --pos) {
+            if (pos == 0) return
+            var next = stream.string.charAt(pos - 1)
+            if (next == ch && stream.string.charAt(pos - 2) != "\\") { pos--; break }
+          }
+        } else if (sawSomething && !depth) {
+          ++pos;
+          break;
+        }
+      }
+      if (sawSomething && !depth) state.fatArrowAt = pos;
+    }
+  
+    // Parser
+  
+    var atomicTypes = {"atom": true, "number": true, "variable": true, "string": true, "regexp": true, "this": true, "jsonld-keyword": true};
+  
+    function JSLexical(indented, column, type, align, prev, info) {
+      this.indented = indented;
+      this.column = column;
+      this.type = type;
+      this.prev = prev;
+      this.info = info;
+      if (align != null) this.align = align;
+    }
+  
+    function inScope(state, varname) {
+      for (var v = state.localVars; v; v = v.next)
+        if (v.name == varname) return true;
+      for (var cx = state.context; cx; cx = cx.prev) {
+        for (var v = cx.vars; v; v = v.next)
+          if (v.name == varname) return true;
+      }
+    }
+  
+    function parseJS(state, style, type, content, stream) {
+      var cc = state.cc;
+      // Communicate our context to the combinators.
+      // (Less wasteful than consing up a hundred closures on every call.)
+      cx.state = state; cx.stream = stream; cx.marked = null, cx.cc = cc; cx.style = style;
+  
+      if (!state.lexical.hasOwnProperty("align"))
+        state.lexical.align = true;
+  
+      while(true) {
+        var combinator = cc.length ? cc.pop() : jsonMode ? expression : statement;
+        if (combinator(type, content)) {
+          while(cc.length && cc[cc.length - 1].lex)
+            cc.pop()();
+          if (cx.marked) return cx.marked;
+          if (type == "variable" && inScope(state, content)) return "variable-2";
+          return style;
+        }
+      }
+    }
+  
+    // Combinator utils
+  
+    var cx = {state: null, column: null, marked: null, cc: null};
+    function pass() {
+      for (var i = arguments.length - 1; i >= 0; i--) cx.cc.push(arguments[i]);
+    }
+    function cont() {
+      pass.apply(null, arguments);
+      return true;
+    }
+    function inList(name, list) {
+      for (var v = list; v; v = v.next) if (v.name == name) return true
+      return false;
+    }
+    function register(varname) {
+      var state = cx.state;
+      cx.marked = "def";
+      if (state.context) {
+        if (state.lexical.info == "var" && state.context && state.context.block) {
+          // FIXME function decls are also not block scoped
+          var newContext = registerVarScoped(varname, state.context)
+          if (newContext != null) {
+            state.context = newContext
+            return
+          }
+        } else if (!inList(varname, state.localVars)) {
+          state.localVars = new Var(varname, state.localVars)
+          return
+        }
+      }
+      // Fall through means this is global
+      if (parserConfig.globalVars && !inList(varname, state.globalVars))
+        state.globalVars = new Var(varname, state.globalVars)
+    }
+    function registerVarScoped(varname, context) {
+      if (!context) {
+        return null
+      } else if (context.block) {
+        var inner = registerVarScoped(varname, context.prev)
+        if (!inner) return null
+        if (inner == context.prev) return context
+        return new Context(inner, context.vars, true)
+      } else if (inList(varname, context.vars)) {
+        return context
+      } else {
+        return new Context(context.prev, new Var(varname, context.vars), false)
+      }
+    }
+  
+    function isModifier(name) {
+      return name == "public" || name == "private" || name == "protected" || name == "abstract" || name == "readonly"
+    }
+  
+    // Combinators
+  
+    function Context(prev, vars, block) { this.prev = prev; this.vars = vars; this.block = block }
+    function Var(name, next) { this.name = name; this.next = next }
+  
+    var defaultVars = new Var("this", new Var("arguments", null))
+    function pushcontext() {
+      cx.state.context = new Context(cx.state.context, cx.state.localVars, false)
+      cx.state.localVars = defaultVars
+    }
+    function pushblockcontext() {
+      cx.state.context = new Context(cx.state.context, cx.state.localVars, true)
+      cx.state.localVars = null
+    }
+    function popcontext() {
+      cx.state.localVars = cx.state.context.vars
+      cx.state.context = cx.state.context.prev
+    }
+    popcontext.lex = true
+    function pushlex(type, info) {
+      var result = function() {
+        var state = cx.state, indent = state.indented;
+        if (state.lexical.type == "stat") indent = state.lexical.indented;
+        else for (var outer = state.lexical; outer && outer.type == ")" && outer.align; outer = outer.prev)
+          indent = outer.indented;
+        state.lexical = new JSLexical(indent, cx.stream.column(), type, null, state.lexical, info);
+      };
+      result.lex = true;
+      return result;
+    }
+    function poplex() {
+      var state = cx.state;
+      if (state.lexical.prev) {
+        if (state.lexical.type == ")")
+          state.indented = state.lexical.indented;
+        state.lexical = state.lexical.prev;
+      }
+    }
+    poplex.lex = true;
+  
+    function expect(wanted) {
+      function exp(type) {
+        if (type == wanted) return cont();
+        else if (wanted == ";" || type == "}" || type == ")" || type == "]") return pass();
+        else return cont(exp);
+      };
+      return exp;
+    }
+  
+    function statement(type, value) {
+      if (type == "var") return cont(pushlex("vardef", value), vardef, expect(";"), poplex);
+      if (type == "keyword a") return cont(pushlex("form"), parenExpr, statement, poplex);
+      if (type == "keyword b") return cont(pushlex("form"), statement, poplex);
+      if (type == "keyword d") return cx.stream.match(/^\s*$/, false) ? cont() : cont(pushlex("stat"), maybeexpression, expect(";"), poplex);
+      if (type == "debugger") return cont(expect(";"));
+      if (type == "{") return cont(pushlex("}"), pushblockcontext, block, poplex, popcontext);
+      if (type == ";") return cont();
+      if (type == "if") {
+        if (cx.state.lexical.info == "else" && cx.state.cc[cx.state.cc.length - 1] == poplex)
+          cx.state.cc.pop()();
+        return cont(pushlex("form"), parenExpr, statement, poplex, maybeelse);
+      }
+      if (type == "function") return cont(functiondef);
+      if (type == "for") return cont(pushlex("form"), forspec, statement, poplex);
+      if (type == "class" || (isTS && value == "interface")) {
+        cx.marked = "keyword"
+        return cont(pushlex("form", type == "class" ? type : value), className, poplex)
+      }
+      if (type == "variable") {
+        if (isTS && value == "declare") {
+          cx.marked = "keyword"
+          return cont(statement)
+        } else if (isTS && (value == "module" || value == "enum" || value == "type") && cx.stream.match(/^\s*\w/, false)) {
+          cx.marked = "keyword"
+          if (value == "enum") return cont(enumdef);
+          else if (value == "type") return cont(typename, expect("operator"), typeexpr, expect(";"));
+          else return cont(pushlex("form"), pattern, expect("{"), pushlex("}"), block, poplex, poplex)
+        } else if (isTS && value == "namespace") {
+          cx.marked = "keyword"
+          return cont(pushlex("form"), expression, statement, poplex)
+        } else if (isTS && value == "abstract") {
+          cx.marked = "keyword"
+          return cont(statement)
+        } else {
+          return cont(pushlex("stat"), maybelabel);
+        }
+      }
+      if (type == "switch") return cont(pushlex("form"), parenExpr, expect("{"), pushlex("}", "switch"), pushblockcontext,
+                                        block, poplex, poplex, popcontext);
+      if (type == "case") return cont(expression, expect(":"));
+      if (type == "default") return cont(expect(":"));
+      if (type == "catch") return cont(pushlex("form"), pushcontext, maybeCatchBinding, statement, poplex, popcontext);
+      if (type == "export") return cont(pushlex("stat"), afterExport, poplex);
+      if (type == "import") return cont(pushlex("stat"), afterImport, poplex);
+      if (type == "async") return cont(statement)
+      if (value == "@") return cont(expression, statement)
+      return pass(pushlex("stat"), expression, expect(";"), poplex);
+    }
+    function maybeCatchBinding(type) {
+      if (type == "(") return cont(funarg, expect(")"))
+    }
+    function expression(type, value) {
+      return expressionInner(type, value, false);
+    }
+    function expressionNoComma(type, value) {
+      return expressionInner(type, value, true);
+    }
+    function parenExpr(type) {
+      if (type != "(") return pass()
+      return cont(pushlex(")"), maybeexpression, expect(")"), poplex)
+    }
+    function expressionInner(type, value, noComma) {
+      if (cx.state.fatArrowAt == cx.stream.start) {
+        var body = noComma ? arrowBodyNoComma : arrowBody;
+        if (type == "(") return cont(pushcontext, pushlex(")"), commasep(funarg, ")"), poplex, expect("=>"), body, popcontext);
+        else if (type == "variable") return pass(pushcontext, pattern, expect("=>"), body, popcontext);
+      }
+  
+      var maybeop = noComma ? maybeoperatorNoComma : maybeoperatorComma;
+      if (atomicTypes.hasOwnProperty(type)) return cont(maybeop);
+      if (type == "function") return cont(functiondef, maybeop);
+      if (type == "class" || (isTS && value == "interface")) { cx.marked = "keyword"; return cont(pushlex("form"), classExpression, poplex); }
+      if (type == "keyword c" || type == "async") return cont(noComma ? expressionNoComma : expression);
+      if (type == "(") return cont(pushlex(")"), maybeexpression, expect(")"), poplex, maybeop);
+      if (type == "operator" || type == "spread") return cont(noComma ? expressionNoComma : expression);
+      if (type == "[") return cont(pushlex("]"), arrayLiteral, poplex, maybeop);
+      if (type == "{") return contCommasep(objprop, "}", null, maybeop);
+      if (type == "quasi") return pass(quasi, maybeop);
+      if (type == "new") return cont(maybeTarget(noComma));
+      if (type == "import") return cont(expression);
+      return cont();
+    }
+    function maybeexpression(type) {
+      if (type.match(/[;\}\)\],]/)) return pass();
+      return pass(expression);
+    }
+  
+    function maybeoperatorComma(type, value) {
+      if (type == ",") return cont(maybeexpression);
+      return maybeoperatorNoComma(type, value, false);
+    }
+    function maybeoperatorNoComma(type, value, noComma) {
+      var me = noComma == false ? maybeoperatorComma : maybeoperatorNoComma;
+      var expr = noComma == false ? expression : expressionNoComma;
+      if (type == "=>") return cont(pushcontext, noComma ? arrowBodyNoComma : arrowBody, popcontext);
+      if (type == "operator") {
+        if (/\+\+|--/.test(value) || isTS && value == "!") return cont(me);
+        if (isTS && value == "<" && cx.stream.match(/^([^<>]|<[^<>]*>)*>\s*\(/, false))
+          return cont(pushlex(">"), commasep(typeexpr, ">"), poplex, me);
+        if (value == "?") return cont(expression, expect(":"), expr);
+        return cont(expr);
+      }
+      if (type == "quasi") { return pass(quasi, me); }
+      if (type == ";") return;
+      if (type == "(") return contCommasep(expressionNoComma, ")", "call", me);
+      if (type == ".") return cont(property, me);
+      if (type == "[") return cont(pushlex("]"), maybeexpression, expect("]"), poplex, me);
+      if (isTS && value == "as") { cx.marked = "keyword"; return cont(typeexpr, me) }
+      if (type == "regexp") {
+        cx.state.lastType = cx.marked = "operator"
+        cx.stream.backUp(cx.stream.pos - cx.stream.start - 1)
+        return cont(expr)
+      }
+    }
+    function quasi(type, value) {
+      if (type != "quasi") return pass();
+      if (value.slice(value.length - 2) != "${") return cont(quasi);
+      return cont(expression, continueQuasi);
+    }
+    function continueQuasi(type) {
+      if (type == "}") {
+        cx.marked = "string-2";
+        cx.state.tokenize = tokenQuasi;
+        return cont(quasi);
+      }
+    }
+    function arrowBody(type) {
+      findFatArrow(cx.stream, cx.state);
+      return pass(type == "{" ? statement : expression);
+    }
+    function arrowBodyNoComma(type) {
+      findFatArrow(cx.stream, cx.state);
+      return pass(type == "{" ? statement : expressionNoComma);
+    }
+    function maybeTarget(noComma) {
+      return function(type) {
+        if (type == ".") return cont(noComma ? targetNoComma : target);
+        else if (type == "variable" && isTS) return cont(maybeTypeArgs, noComma ? maybeoperatorNoComma : maybeoperatorComma)
+        else return pass(noComma ? expressionNoComma : expression);
+      };
+    }
+    function target(_, value) {
+      if (value == "target") { cx.marked = "keyword"; return cont(maybeoperatorComma); }
+    }
+    function targetNoComma(_, value) {
+      if (value == "target") { cx.marked = "keyword"; return cont(maybeoperatorNoComma); }
+    }
+    function maybelabel(type) {
+      if (type == ":") return cont(poplex, statement);
+      return pass(maybeoperatorComma, expect(";"), poplex);
+    }
+    function property(type) {
+      if (type == "variable") {cx.marked = "property"; return cont();}
+    }
+    function objprop(type, value) {
+      if (type == "async") {
+        cx.marked = "property";
+        return cont(objprop);
+      } else if (type == "variable" || cx.style == "keyword") {
+        cx.marked = "property";
+        if (value == "get" || value == "set") return cont(getterSetter);
+        var m // Work around fat-arrow-detection complication for detecting typescript typed arrow params
+        if (isTS && cx.state.fatArrowAt == cx.stream.start && (m = cx.stream.match(/^\s*:\s*/, false)))
+          cx.state.fatArrowAt = cx.stream.pos + m[0].length
+        return cont(afterprop);
+      } else if (type == "number" || type == "string") {
+        cx.marked = jsonldMode ? "property" : (cx.style + " property");
+        return cont(afterprop);
+      } else if (type == "jsonld-keyword") {
+        return cont(afterprop);
+      } else if (isTS && isModifier(value)) {
+        cx.marked = "keyword"
+        return cont(objprop)
+      } else if (type == "[") {
+        return cont(expression, maybetype, expect("]"), afterprop);
+      } else if (type == "spread") {
+        return cont(expressionNoComma, afterprop);
+      } else if (value == "*") {
+        cx.marked = "keyword";
+        return cont(objprop);
+      } else if (type == ":") {
+        return pass(afterprop)
+      }
+    }
+    function getterSetter(type) {
+      if (type != "variable") return pass(afterprop);
+      cx.marked = "property";
+      return cont(functiondef);
+    }
+    function afterprop(type) {
+      if (type == ":") return cont(expressionNoComma);
+      if (type == "(") return pass(functiondef);
+    }
+    function commasep(what, end, sep) {
+      function proceed(type, value) {
+        if (sep ? sep.indexOf(type) > -1 : type == ",") {
+          var lex = cx.state.lexical;
+          if (lex.info == "call") lex.pos = (lex.pos || 0) + 1;
+          return cont(function(type, value) {
+            if (type == end || value == end) return pass()
+            return pass(what)
+          }, proceed);
+        }
+        if (type == end || value == end) return cont();
+        if (sep && sep.indexOf(";") > -1) return pass(what)
+        return cont(expect(end));
+      }
+      return function(type, value) {
+        if (type == end || value == end) return cont();
+        return pass(what, proceed);
+      };
+    }
+    function contCommasep(what, end, info) {
+      for (var i = 3; i < arguments.length; i++)
+        cx.cc.push(arguments[i]);
+      return cont(pushlex(end, info), commasep(what, end), poplex);
+    }
+    function block(type) {
+      if (type == "}") return cont();
+      return pass(statement, block);
+    }
+    function maybetype(type, value) {
+      if (isTS) {
+        if (type == ":") return cont(typeexpr);
+        if (value == "?") return cont(maybetype);
+      }
+    }
+    function maybetypeOrIn(type, value) {
+      if (isTS && (type == ":" || value == "in")) return cont(typeexpr)
+    }
+    function mayberettype(type) {
+      if (isTS && type == ":") {
+        if (cx.stream.match(/^\s*\w+\s+is\b/, false)) return cont(expression, isKW, typeexpr)
+        else return cont(typeexpr)
+      }
+    }
+    function isKW(_, value) {
+      if (value == "is") {
+        cx.marked = "keyword"
+        return cont()
+      }
+    }
+    function typeexpr(type, value) {
+      if (value == "keyof" || value == "typeof" || value == "infer") {
+        cx.marked = "keyword"
+        return cont(value == "typeof" ? expressionNoComma : typeexpr)
+      }
+      if (type == "variable" || value == "void") {
+        cx.marked = "type"
+        return cont(afterType)
+      }
+      if (value == "|" || value == "&") return cont(typeexpr)
+      if (type == "string" || type == "number" || type == "atom") return cont(afterType);
+      if (type == "[") return cont(pushlex("]"), commasep(typeexpr, "]", ","), poplex, afterType)
+      if (type == "{") return cont(pushlex("}"), commasep(typeprop, "}", ",;"), poplex, afterType)
+      if (type == "(") return cont(commasep(typearg, ")"), maybeReturnType, afterType)
+      if (type == "<") return cont(commasep(typeexpr, ">"), typeexpr)
+    }
+    function maybeReturnType(type) {
+      if (type == "=>") return cont(typeexpr)
+    }
+    function typeprop(type, value) {
+      if (type == "variable" || cx.style == "keyword") {
+        cx.marked = "property"
+        return cont(typeprop)
+      } else if (value == "?" || type == "number" || type == "string") {
+        return cont(typeprop)
+      } else if (type == ":") {
+        return cont(typeexpr)
+      } else if (type == "[") {
+        return cont(expect("variable"), maybetypeOrIn, expect("]"), typeprop)
+      } else if (type == "(") {
+        return pass(functiondecl, typeprop)
+      }
+    }
+    function typearg(type, value) {
+      if (type == "variable" && cx.stream.match(/^\s*[?:]/, false) || value == "?") return cont(typearg)
+      if (type == ":") return cont(typeexpr)
+      if (type == "spread") return cont(typearg)
+      return pass(typeexpr)
+    }
+    function afterType(type, value) {
+      if (value == "<") return cont(pushlex(">"), commasep(typeexpr, ">"), poplex, afterType)
+      if (value == "|" || type == "." || value == "&") return cont(typeexpr)
+      if (type == "[") return cont(typeexpr, expect("]"), afterType)
+      if (value == "extends" || value == "implements") { cx.marked = "keyword"; return cont(typeexpr) }
+      if (value == "?") return cont(typeexpr, expect(":"), typeexpr)
+    }
+    function maybeTypeArgs(_, value) {
+      if (value == "<") return cont(pushlex(">"), commasep(typeexpr, ">"), poplex, afterType)
+    }
+    function typeparam() {
+      return pass(typeexpr, maybeTypeDefault)
+    }
+    function maybeTypeDefault(_, value) {
+      if (value == "=") return cont(typeexpr)
+    }
+    function vardef(_, value) {
+      if (value == "enum") {cx.marked = "keyword"; return cont(enumdef)}
+      return pass(pattern, maybetype, maybeAssign, vardefCont);
+    }
+    function pattern(type, value) {
+      if (isTS && isModifier(value)) { cx.marked = "keyword"; return cont(pattern) }
+      if (type == "variable") { register(value); return cont(); }
+      if (type == "spread") return cont(pattern);
+      if (type == "[") return contCommasep(eltpattern, "]");
+      if (type == "{") return contCommasep(proppattern, "}");
+    }
+    function proppattern(type, value) {
+      if (type == "variable" && !cx.stream.match(/^\s*:/, false)) {
+        register(value);
+        return cont(maybeAssign);
+      }
+      if (type == "variable") cx.marked = "property";
+      if (type == "spread") return cont(pattern);
+      if (type == "}") return pass();
+      if (type == "[") return cont(expression, expect(']'), expect(':'), proppattern);
+      return cont(expect(":"), pattern, maybeAssign);
+    }
+    function eltpattern() {
+      return pass(pattern, maybeAssign)
+    }
+    function maybeAssign(_type, value) {
+      if (value == "=") return cont(expressionNoComma);
+    }
+    function vardefCont(type) {
+      if (type == ",") return cont(vardef);
+    }
+    function maybeelse(type, value) {
+      if (type == "keyword b" && value == "else") return cont(pushlex("form", "else"), statement, poplex);
+    }
+    function forspec(type, value) {
+      if (value == "await") return cont(forspec);
+      if (type == "(") return cont(pushlex(")"), forspec1, poplex);
+    }
+    function forspec1(type) {
+      if (type == "var") return cont(vardef, forspec2);
+      if (type == "variable") return cont(forspec2);
+      return pass(forspec2)
+    }
+    function forspec2(type, value) {
+      if (type == ")") return cont()
+      if (type == ";") return cont(forspec2)
+      if (value == "in" || value == "of") { cx.marked = "keyword"; return cont(expression, forspec2) }
+      return pass(expression, forspec2)
+    }
+    function functiondef(type, value) {
+      if (value == "*") {cx.marked = "keyword"; return cont(functiondef);}
+      if (type == "variable") {register(value); return cont(functiondef);}
+      if (type == "(") return cont(pushcontext, pushlex(")"), commasep(funarg, ")"), poplex, mayberettype, statement, popcontext);
+      if (isTS && value == "<") return cont(pushlex(">"), commasep(typeparam, ">"), poplex, functiondef)
+    }
+    function functiondecl(type, value) {
+      if (value == "*") {cx.marked = "keyword"; return cont(functiondecl);}
+      if (type == "variable") {register(value); return cont(functiondecl);}
+      if (type == "(") return cont(pushcontext, pushlex(")"), commasep(funarg, ")"), poplex, mayberettype, popcontext);
+      if (isTS && value == "<") return cont(pushlex(">"), commasep(typeparam, ">"), poplex, functiondecl)
+    }
+    function typename(type, value) {
+      if (type == "keyword" || type == "variable") {
+        cx.marked = "type"
+        return cont(typename)
+      } else if (value == "<") {
+        return cont(pushlex(">"), commasep(typeparam, ">"), poplex)
+      }
+    }
+    function funarg(type, value) {
+      if (value == "@") cont(expression, funarg)
+      if (type == "spread") return cont(funarg);
+      if (isTS && isModifier(value)) { cx.marked = "keyword"; return cont(funarg); }
+      if (isTS && type == "this") return cont(maybetype, maybeAssign)
+      return pass(pattern, maybetype, maybeAssign);
+    }
+    function classExpression(type, value) {
+      // Class expressions may have an optional name.
+      if (type == "variable") return className(type, value);
+      return classNameAfter(type, value);
+    }
+    function className(type, value) {
+      if (type == "variable") {register(value); return cont(classNameAfter);}
+    }
+    function classNameAfter(type, value) {
+      if (value == "<") return cont(pushlex(">"), commasep(typeparam, ">"), poplex, classNameAfter)
+      if (value == "extends" || value == "implements" || (isTS && type == ",")) {
+        if (value == "implements") cx.marked = "keyword";
+        return cont(isTS ? typeexpr : expression, classNameAfter);
+      }
+      if (type == "{") return cont(pushlex("}"), classBody, poplex);
+    }
+    function classBody(type, value) {
+      if (type == "async" ||
+          (type == "variable" &&
+           (value == "static" || value == "get" || value == "set" || (isTS && isModifier(value))) &&
+           cx.stream.match(/^\s+[\w$\xa1-\uffff]/, false))) {
+        cx.marked = "keyword";
+        return cont(classBody);
+      }
+      if (type == "variable" || cx.style == "keyword") {
+        cx.marked = "property";
+        return cont(classfield, classBody);
+      }
+      if (type == "number" || type == "string") return cont(classfield, classBody);
+      if (type == "[")
+        return cont(expression, maybetype, expect("]"), classfield, classBody)
+      if (value == "*") {
+        cx.marked = "keyword";
+        return cont(classBody);
+      }
+      if (isTS && type == "(") return pass(functiondecl, classBody)
+      if (type == ";" || type == ",") return cont(classBody);
+      if (type == "}") return cont();
+      if (value == "@") return cont(expression, classBody)
+    }
+    function classfield(type, value) {
+      if (value == "?") return cont(classfield)
+      if (type == ":") return cont(typeexpr, maybeAssign)
+      if (value == "=") return cont(expressionNoComma)
+      var context = cx.state.lexical.prev, isInterface = context && context.info == "interface"
+      return pass(isInterface ? functiondecl : functiondef)
+    }
+    function afterExport(type, value) {
+      if (value == "*") { cx.marked = "keyword"; return cont(maybeFrom, expect(";")); }
+      if (value == "default") { cx.marked = "keyword"; return cont(expression, expect(";")); }
+      if (type == "{") return cont(commasep(exportField, "}"), maybeFrom, expect(";"));
+      return pass(statement);
+    }
+    function exportField(type, value) {
+      if (value == "as") { cx.marked = "keyword"; return cont(expect("variable")); }
+      if (type == "variable") return pass(expressionNoComma, exportField);
+    }
+    function afterImport(type) {
+      if (type == "string") return cont();
+      if (type == "(") return pass(expression);
+      return pass(importSpec, maybeMoreImports, maybeFrom);
+    }
+    function importSpec(type, value) {
+      if (type == "{") return contCommasep(importSpec, "}");
+      if (type == "variable") register(value);
+      if (value == "*") cx.marked = "keyword";
+      return cont(maybeAs);
+    }
+    function maybeMoreImports(type) {
+      if (type == ",") return cont(importSpec, maybeMoreImports)
+    }
+    function maybeAs(_type, value) {
+      if (value == "as") { cx.marked = "keyword"; return cont(importSpec); }
+    }
+    function maybeFrom(_type, value) {
+      if (value == "from") { cx.marked = "keyword"; return cont(expression); }
+    }
+    function arrayLiteral(type) {
+      if (type == "]") return cont();
+      return pass(commasep(expressionNoComma, "]"));
+    }
+    function enumdef() {
+      return pass(pushlex("form"), pattern, expect("{"), pushlex("}"), commasep(enummember, "}"), poplex, poplex)
+    }
+    function enummember() {
+      return pass(pattern, maybeAssign);
+    }
+  
+    function isContinuedStatement(state, textAfter) {
+      return state.lastType == "operator" || state.lastType == "," ||
+        isOperatorChar.test(textAfter.charAt(0)) ||
+        /[,.]/.test(textAfter.charAt(0));
+    }
+  
+    function expressionAllowed(stream, state, backUp) {
+      return state.tokenize == tokenBase &&
+        /^(?:operator|sof|keyword [bcd]|case|new|export|default|spread|[\[{}\(,;:]|=>)$/.test(state.lastType) ||
+        (state.lastType == "quasi" && /\{\s*$/.test(stream.string.slice(0, stream.pos - (backUp || 0))))
+    }
+  
+    // Interface
+  
+    return {
+      startState: function(basecolumn) {
+        var state = {
+          tokenize: tokenBase,
+          lastType: "sof",
+          cc: [],
+          lexical: new JSLexical((basecolumn || 0) - indentUnit, 0, "block", false),
+          localVars: parserConfig.localVars,
+          context: parserConfig.localVars && new Context(null, null, false),
+          indented: basecolumn || 0
+        };
+        if (parserConfig.globalVars && typeof parserConfig.globalVars == "object")
+          state.globalVars = parserConfig.globalVars;
+        return state;
+      },
+  
+      token: function(stream, state) {
+        if (stream.sol()) {
+          if (!state.lexical.hasOwnProperty("align"))
+            state.lexical.align = false;
+          state.indented = stream.indentation();
+          findFatArrow(stream, state);
+        }
+        if (state.tokenize != tokenComment && stream.eatSpace()) return null;
+        var style = state.tokenize(stream, state);
+        if (type == "comment") return style;
+        state.lastType = type == "operator" && (content == "++" || content == "--") ? "incdec" : type;
+        return parseJS(state, style, type, content, stream);
+      },
+  
+      indent: function(state, textAfter) {
+        if (state.tokenize == tokenComment) return CodeMirror.Pass;
+        if (state.tokenize != tokenBase) return 0;
+        var firstChar = textAfter && textAfter.charAt(0), lexical = state.lexical, top
+        // Kludge to prevent 'maybelse' from blocking lexical scope pops
+        if (!/^\s*else\b/.test(textAfter)) for (var i = state.cc.length - 1; i >= 0; --i) {
+          var c = state.cc[i];
+          if (c == poplex) lexical = lexical.prev;
+          else if (c != maybeelse) break;
+        }
+        while ((lexical.type == "stat" || lexical.type == "form") &&
+               (firstChar == "}" || ((top = state.cc[state.cc.length - 1]) &&
+                                     (top == maybeoperatorComma || top == maybeoperatorNoComma) &&
+                                     !/^[,\.=+\-*:?[\(]/.test(textAfter))))
+          lexical = lexical.prev;
+        if (statementIndent && lexical.type == ")" && lexical.prev.type == "stat")
+          lexical = lexical.prev;
+        var type = lexical.type, closing = firstChar == type;
+  
+        if (type == "vardef") return lexical.indented + (state.lastType == "operator" || state.lastType == "," ? lexical.info.length + 1 : 0);
+        else if (type == "form" && firstChar == "{") return lexical.indented;
+        else if (type == "form") return lexical.indented + indentUnit;
+        else if (type == "stat")
+          return lexical.indented + (isContinuedStatement(state, textAfter) ? statementIndent || indentUnit : 0);
+        else if (lexical.info == "switch" && !closing && parserConfig.doubleIndentSwitch != false)
+          return lexical.indented + (/^(?:case|default)\b/.test(textAfter) ? indentUnit : 2 * indentUnit);
+        else if (lexical.align) return lexical.column + (closing ? 0 : 1);
+        else return lexical.indented + (closing ? 0 : indentUnit);
+      },
+  
+      electricInput: /^\s*(?:case .*?:|default:|\{|\})$/,
+      blockCommentStart: jsonMode ? null : "/*",
+      blockCommentEnd: jsonMode ? null : "*/",
+      blockCommentContinue: jsonMode ? null : " * ",
+      lineComment: jsonMode ? null : "//",
+      fold: "brace",
+      closeBrackets: "()[]{}''\"\"``",
+  
+      helperType: jsonMode ? "json" : "javascript",
+      jsonldMode: jsonldMode,
+      jsonMode: jsonMode,
+  
+      expressionAllowed: expressionAllowed,
+  
+      skipExpression: function(state) {
+        var top = state.cc[state.cc.length - 1]
+        if (top == expression || top == expressionNoComma) state.cc.pop()
+      }
+    };
+  });
+  
+  CodeMirror.registerHelper("wordChars", "javascript", /[\w$]/);
+  
+  CodeMirror.defineMIME("text/javascript", "javascript");
+  CodeMirror.defineMIME("text/ecmascript", "javascript");
+  CodeMirror.defineMIME("application/javascript", "javascript");
+  CodeMirror.defineMIME("application/x-javascript", "javascript");
+  CodeMirror.defineMIME("application/ecmascript", "javascript");
+  CodeMirror.defineMIME("application/json", {name: "javascript", json: true});
+  CodeMirror.defineMIME("application/x-json", {name: "javascript", json: true});
+  CodeMirror.defineMIME("application/ld+json", {name: "javascript", jsonld: true});
+  CodeMirror.defineMIME("text/typescript", { name: "javascript", typescript: true });
+  CodeMirror.defineMIME("application/typescript", { name: "javascript", typescript: true });
+  
+  });
+  
\ No newline at end of file
diff --git a/en/js/vendors/dat.gui@0.6.5/build/dat.gui.min.js b/en/js/vendors/dat.gui@0.6.5/build/dat.gui.min.js
new file mode 100644
index 000000000..b148734cc
--- /dev/null
+++ b/en/js/vendors/dat.gui@0.6.5/build/dat.gui.min.js
@@ -0,0 +1,2 @@
+!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.dat=t():e.dat=t()}(this,function(){return function(e){function t(o){if(n[o])return n[o].exports;var i=n[o]={exports:{},id:o,loaded:!1};return e[o].call(i.exports,i,i.exports,t),i.loaded=!0,i.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}t._ [...]
+min:n.__min,max:n.__max,step:n.__step});U.default.each(["updateDisplay","onChange","onFinishChange","step"],function(e){var t=n[e],i=o[e];n[e]=o[e]=function(){var e=Array.prototype.slice.call(arguments);return i.apply(o,e),t.apply(n,e)}}),z.default.addClass(t,"has-slider"),n.domElement.insertBefore(o.domElement,n.domElement.firstElementChild)}else if(n instanceof B.default){var i=function(t){if(U.default.isNumber(n.__min)&&U.default.isNumber(n.__max)){var o=n.__li.firstElementChild.first [...]
\ No newline at end of file
diff --git a/en/js/vendors/echarts-gl/LICENSE b/en/js/vendors/echarts-gl/LICENSE
new file mode 100644
index 000000000..c3c39451c
--- /dev/null
+++ b/en/js/vendors/echarts-gl/LICENSE
@@ -0,0 +1,29 @@
+BSD 3-Clause License
+
+Copyright (c) 2017, Baidu Inc.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+  list of conditions and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright notice,
+  this list of conditions and the following disclaimer in the documentation
+  and/or other materials provided with the distribution.
+
+* Neither the name of the copyright holder nor the names of its
+  contributors may be used to endorse or promote products derived from
+  this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/en/js/vendors/echarts-gl/asset/logo.png b/en/js/vendors/echarts-gl/asset/logo.png
new file mode 100644
index 000000000..213f2b79d
Binary files /dev/null and b/en/js/vendors/echarts-gl/asset/logo.png differ
diff --git a/en/js/vendors/echarts-gl/babel.config.js b/en/js/vendors/echarts-gl/babel.config.js
new file mode 100644
index 000000000..3b27df838
--- /dev/null
+++ b/en/js/vendors/echarts-gl/babel.config.js
@@ -0,0 +1,4 @@
+module.exports = {
+    plugins: [
+    ]
+};
\ No newline at end of file
diff --git a/en/js/vendors/echarts-gl/charts.js b/en/js/vendors/echarts-gl/charts.js
new file mode 100644
index 000000000..c399ec022
--- /dev/null
+++ b/en/js/vendors/echarts-gl/charts.js
@@ -0,0 +1 @@
+export * from './lib/export/charts';
\ No newline at end of file
diff --git a/en/js/vendors/echarts-gl/components.js b/en/js/vendors/echarts-gl/components.js
new file mode 100644
index 000000000..d97086427
--- /dev/null
+++ b/en/js/vendors/echarts-gl/components.js
@@ -0,0 +1 @@
+export * from './lib/export/components';
\ No newline at end of file
diff --git a/en/js/vendors/echarts-gl/dist/echarts-gl.js b/en/js/vendors/echarts-gl/dist/echarts-gl.js
new file mode 100644
index 000000000..bbd083317
--- /dev/null
+++ b/en/js/vendors/echarts-gl/dist/echarts-gl.js
@@ -0,0 +1,65729 @@
+(function webpackUniversalModuleDefinition(root, factory) {
+	if(typeof exports === 'object' && typeof module === 'object')
+		module.exports = factory(require("echarts"));
+	else if(typeof define === 'function' && define.amd)
+		define(["echarts"], factory);
+	else if(typeof exports === 'object')
+		exports["echarts-gl"] = factory(require("echarts"));
+	else
+		root["echarts-gl"] = factory(root["echarts"]);
+})(self, function(__WEBPACK_EXTERNAL_MODULE_echarts_lib_echarts__) {
+return /******/ (() => { // webpackBootstrap
+/******/ 	"use strict";
+/******/ 	var __webpack_modules__ = ({
+
+/***/ "./src/export/all.js":
+/*!*****************************************!*\
+  !*** ./src/export/all.js + 360 modules ***!
+  \*****************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+// ESM COMPAT FLAG
+__webpack_require__.r(__webpack_exports__);
+
+// EXTERNAL MODULE: external "echarts"
+var external_echarts_ = __webpack_require__("echarts/lib/echarts");
+;// CONCATENATED MODULE: ./node_modules/claygl/src/core/mixin/extend.js
+/**
+ * Extend a sub class from base class
+ * @param {object|Function} makeDefaultOpt default option of this sub class, method of the sub can use this.xxx to access this option
+ * @param {Function} [initialize] Initialize after the sub class is instantiated
+ * @param {Object} [proto] Prototype methods/properties of the sub class
+ * @memberOf clay.core.mixin.extend
+ * @return {Function}
+ */
+function derive(makeDefaultOpt, initialize/*optional*/, proto/*optional*/) {
+
+    if (typeof initialize == 'object') {
+        proto = initialize;
+        initialize = null;
+    }
+
+    var _super = this;
+
+    var propList;
+    if (!(makeDefaultOpt instanceof Function)) {
+        // Optimize the property iterate if it have been fixed
+        propList = [];
+        for (var propName in makeDefaultOpt) {
+            if (makeDefaultOpt.hasOwnProperty(propName)) {
+                propList.push(propName);
+            }
+        }
+    }
+
+    var sub = function(options) {
+
+        // call super constructor
+        _super.apply(this, arguments);
+
+        if (makeDefaultOpt instanceof Function) {
+            // Invoke makeDefaultOpt each time if it is a function, So we can make sure each
+            // property in the object will not be shared by mutiple instances
+            extend(this, makeDefaultOpt.call(this, options));
+        }
+        else {
+            extendWithPropList(this, makeDefaultOpt, propList);
+        }
+
+        if (this.constructor === sub) {
+            // Initialize function will be called in the order of inherit
+            var initializers = sub.__initializers__;
+            for (var i = 0; i < initializers.length; i++) {
+                initializers[i].apply(this, arguments);
+            }
+        }
+    };
+    // save super constructor
+    sub.__super__ = _super;
+    // Initialize function will be called after all the super constructor is called
+    if (!_super.__initializers__) {
+        sub.__initializers__ = [];
+    } else {
+        sub.__initializers__ = _super.__initializers__.slice();
+    }
+    if (initialize) {
+        sub.__initializers__.push(initialize);
+    }
+
+    var Ctor = function() {};
+    Ctor.prototype = _super.prototype;
+    sub.prototype = new Ctor();
+    sub.prototype.constructor = sub;
+    extend(sub.prototype, proto);
+
+    // extend the derive method as a static method;
+    sub.extend = _super.extend;
+
+    // DEPCRATED
+    sub.derive = _super.extend;
+
+    return sub;
+}
+
+function extend(target, source) {
+    if (!source) {
+        return;
+    }
+    for (var name in source) {
+        if (source.hasOwnProperty(name)) {
+            target[name] = source[name];
+        }
+    }
+}
+
+function extendWithPropList(target, source, propList) {
+    for (var i = 0; i < propList.length; i++) {
+        var propName = propList[i];
+        target[propName] = source[propName];
+    }
+}
+
+/**
+ * @alias clay.core.mixin.extend
+ * @mixin
+ */
+/* harmony default export */ const mixin_extend = ({
+
+    extend: derive,
+
+    // DEPCRATED
+    derive: derive
+});
+
+;// CONCATENATED MODULE: ./node_modules/claygl/src/core/mixin/notifier.js
+function Handler(action, context) {
+    this.action = action;
+    this.context = context;
+}
+/**
+ * @mixin
+ * @alias clay.core.mixin.notifier
+ */
+var notifier = {
+    /**
+     * Trigger event
+     * @param  {string} name
+     */
+    trigger: function(name) {
+        if (!this.hasOwnProperty('__handlers__')) {
+            return;
+        }
+        if (!this.__handlers__.hasOwnProperty(name)) {
+            return;
+        }
+
+        var hdls = this.__handlers__[name];
+        var l = hdls.length, i = -1, args = arguments;
+        // Optimize advise from backbone
+        switch (args.length) {
+            case 1:
+                while (++i < l) {
+                    hdls[i].action.call(hdls[i].context);
+                }
+                return;
+            case 2:
+                while (++i < l) {
+                    hdls[i].action.call(hdls[i].context, args[1]);
+                }
+                return;
+            case 3:
+                while (++i < l) {
+                    hdls[i].action.call(hdls[i].context, args[1], args[2]);
+                }
+                return;
+            case 4:
+                while (++i < l) {
+                    hdls[i].action.call(hdls[i].context, args[1], args[2], args[3]);
+                }
+                return;
+            case 5:
+                while (++i < l) {
+                    hdls[i].action.call(hdls[i].context, args[1], args[2], args[3], args[4]);
+                }
+                return;
+            default:
+                while (++i < l) {
+                    hdls[i].action.apply(hdls[i].context, Array.prototype.slice.call(args, 1));
+                }
+                return;
+        }
+    },
+    /**
+     * Register event handler
+     * @param  {string} name
+     * @param  {Function} action
+     * @param  {Object} [context]
+     * @chainable
+     */
+    on: function(name, action, context) {
+        if (!name || !action) {
+            return;
+        }
+        var handlers = this.__handlers__ || (this.__handlers__={});
+        if (!handlers[name]) {
+            handlers[name] = [];
+        }
+        else {
+            if (this.has(name, action)) {
+                return;
+            }
+        }
+        var handler = new Handler(action, context || this);
+        handlers[name].push(handler);
+
+        return this;
+    },
+
+    /**
+     * Register event, event will only be triggered once and then removed
+     * @param  {string} name
+     * @param  {Function} action
+     * @param  {Object} [context]
+     * @chainable
+     */
+    once: function(name, action, context) {
+        if (!name || !action) {
+            return;
+        }
+        var self = this;
+        function wrapper() {
+            self.off(name, wrapper);
+            action.apply(this, arguments);
+        }
+        return this.on(name, wrapper, context);
+    },
+
+    /**
+     * Alias of once('before' + name)
+     * @param  {string} name
+     * @param  {Function} action
+     * @param  {Object} [context]
+     * @chainable
+     */
+    before: function(name, action, context) {
+        if (!name || !action) {
+            return;
+        }
+        name = 'before' + name;
+        return this.on(name, action, context);
+    },
+
+    /**
+     * Alias of once('after' + name)
+     * @param  {string} name
+     * @param  {Function} action
+     * @param  {Object} [context]
+     * @chainable
+     */
+    after: function(name, action, context) {
+        if (!name || !action) {
+            return;
+        }
+        name = 'after' + name;
+        return this.on(name, action, context);
+    },
+
+    /**
+     * Alias of on('success')
+     * @param  {Function} action
+     * @param  {Object} [context]
+     * @chainable
+     */
+    success: function(action, context) {
+        return this.once('success', action, context);
+    },
+
+    /**
+     * Alias of on('error')
+     * @param  {Function} action
+     * @param  {Object} [context]
+     * @chainable
+     */
+    error: function(action, context) {
+        return this.once('error', action, context);
+    },
+
+    /**
+     * Remove event listener
+     * @param  {Function} action
+     * @param  {Object} [context]
+     * @chainable
+     */
+    off: function(name, action) {
+
+        var handlers = this.__handlers__ || (this.__handlers__={});
+
+        if (!action) {
+            handlers[name] = [];
+            return;
+        }
+        if (handlers[name]) {
+            var hdls = handlers[name];
+            var retains = [];
+            for (var i = 0; i < hdls.length; i++) {
+                if (action && hdls[i].action !== action) {
+                    retains.push(hdls[i]);
+                }
+            }
+            handlers[name] = retains;
+        }
+
+        return this;
+    },
+
+    /**
+     * If registered the event handler
+     * @param  {string}  name
+     * @param  {Function}  action
+     * @return {boolean}
+     */
+    has: function(name, action) {
+        var handlers = this.__handlers__;
+
+        if (! handlers ||
+            ! handlers[name]) {
+            return false;
+        }
+        var hdls = handlers[name];
+        for (var i = 0; i < hdls.length; i++) {
+            if (hdls[i].action === action) {
+                return true;
+            }
+        }
+    }
+};
+
+/* harmony default export */ const mixin_notifier = (notifier);
+;// CONCATENATED MODULE: ./node_modules/claygl/src/core/util.js
+var guid = 0;
+
+var ArrayProto = Array.prototype;
+var nativeForEach = ArrayProto.forEach;
+
+/**
+ * Util functions
+ * @namespace clay.core.util
+ */
+var util = {
+
+    /**
+     * Generate GUID
+     * @return {number}
+     * @memberOf clay.core.util
+     */
+    genGUID: function () {
+        return ++guid;
+    },
+    /**
+     * Relative path to absolute path
+     * @param  {string} path
+     * @param  {string} basePath
+     * @return {string}
+     * @memberOf clay.core.util
+     */
+    relative2absolute: function (path, basePath) {
+        if (!basePath || path.match(/^\//)) {
+            return path;
+        }
+        var pathParts = path.split('/');
+        var basePathParts = basePath.split('/');
+
+        var item = pathParts[0];
+        while(item === '.' || item === '..') {
+            if (item === '..') {
+                basePathParts.pop();
+            }
+            pathParts.shift();
+            item = pathParts[0];
+        }
+        return basePathParts.join('/') + '/' + pathParts.join('/');
+    },
+
+    /**
+     * Extend target with source
+     * @param  {Object} target
+     * @param  {Object} source
+     * @return {Object}
+     * @memberOf clay.core.util
+     */
+    extend: function (target, source) {
+        if (source) {
+            for (var name in source) {
+                if (source.hasOwnProperty(name)) {
+                    target[name] = source[name];
+                }
+            }
+        }
+        return target;
+    },
+
+    /**
+     * Extend properties to target if not exist.
+     * @param  {Object} target
+     * @param  {Object} source
+     * @return {Object}
+     * @memberOf clay.core.util
+     */
+    defaults: function (target, source) {
+        if (source) {
+            for (var propName in source) {
+                if (target[propName] === undefined) {
+                    target[propName] = source[propName];
+                }
+            }
+        }
+        return target;
+    },
+    /**
+     * Extend properties with a given property list to avoid for..in.. iteration.
+     * @param  {Object} target
+     * @param  {Object} source
+     * @param  {Array.<string>} propList
+     * @return {Object}
+     * @memberOf clay.core.util
+     */
+    extendWithPropList: function (target, source, propList) {
+        if (source) {
+            for (var i = 0; i < propList.length; i++) {
+                var propName = propList[i];
+                target[propName] = source[propName];
+            }
+        }
+        return target;
+    },
+    /**
+     * Extend properties to target if not exist. With a given property list avoid for..in.. iteration.
+     * @param  {Object} target
+     * @param  {Object} source
+     * @param  {Array.<string>} propList
+     * @return {Object}
+     * @memberOf clay.core.util
+     */
+    defaultsWithPropList: function (target, source, propList) {
+        if (source) {
+            for (var i = 0; i < propList.length; i++) {
+                var propName = propList[i];
+                if (target[propName] == null) {
+                    target[propName] = source[propName];
+                }
+            }
+        }
+        return target;
+    },
+    /**
+     * @param  {Object|Array} obj
+     * @param  {Function} iterator
+     * @param  {Object} [context]
+     * @memberOf clay.core.util
+     */
+    each: function (obj, iterator, context) {
+        if (!(obj && iterator)) {
+            return;
+        }
+        if (obj.forEach && obj.forEach === nativeForEach) {
+            obj.forEach(iterator, context);
+        }
+        else if (obj.length === + obj.length) {
+            for (var i = 0, len = obj.length; i < len; i++) {
+                iterator.call(context, obj[i], i, obj);
+            }
+        }
+        else {
+            for (var key in obj) {
+                if (obj.hasOwnProperty(key)) {
+                    iterator.call(context, obj[key], key, obj);
+                }
+            }
+        }
+    },
+
+    /**
+     * Is object
+     * @param  {}  obj
+     * @return {boolean}
+     * @memberOf clay.core.util
+     */
+    isObject: function (obj) {
+        return obj === Object(obj);
+    },
+
+    /**
+     * Is array ?
+     * @param  {}  obj
+     * @return {boolean}
+     * @memberOf clay.core.util
+     */
+    isArray: function (obj) {
+        return Array.isArray(obj);
+    },
+
+    /**
+     * Is array like, which have a length property
+     * @param  {}  obj
+     * @return {boolean}
+     * @memberOf clay.core.util
+     */
+    isArrayLike: function (obj) {
+        if (!obj) {
+            return false;
+        }
+        else {
+            return obj.length === + obj.length;
+        }
+    },
+
+    /**
+     * @param  {} obj
+     * @return {}
+     * @memberOf clay.core.util
+     */
+    clone: function (obj) {
+        if (!util.isObject(obj)) {
+            return obj;
+        }
+        else if (util.isArray(obj)) {
+            return obj.slice();
+        }
+        else if (util.isArrayLike(obj)) { // is typed array
+            var ret = new obj.constructor(obj.length);
+            for (var i = 0; i < obj.length; i++) {
+                ret[i] = obj[i];
+            }
+            return ret;
+        }
+        else {
+            return util.extend({}, obj);
+        }
+    }
+};
+
+/* harmony default export */ const core_util = (util);
+
+;// CONCATENATED MODULE: ./node_modules/claygl/src/core/Base.js
+
+
+
+
+/**
+ * Base class of all objects
+ * @constructor
+ * @alias clay.core.Base
+ * @mixes clay.core.mixin.notifier
+ */
+var Base = function () {
+    /**
+     * @type {number}
+     */
+    this.__uid__ = core_util.genGUID();
+};
+
+Base.__initializers__ = [
+    function (opts) {
+        core_util.extend(this, opts);
+    }
+];
+
+core_util.extend(Base, mixin_extend);
+core_util.extend(Base.prototype, mixin_notifier);
+
+/* harmony default export */ const core_Base = (Base);
+
+;// CONCATENATED MODULE: ./node_modules/claygl/src/core/GLInfo.js
+var EXTENSION_LIST = [
+    'OES_texture_float',
+    'OES_texture_half_float',
+    'OES_texture_float_linear',
+    'OES_texture_half_float_linear',
+    'OES_standard_derivatives',
+    'OES_vertex_array_object',
+    'OES_element_index_uint',
+    'WEBGL_compressed_texture_s3tc',
+    'WEBGL_depth_texture',
+    'EXT_texture_filter_anisotropic',
+    'EXT_shader_texture_lod',
+    'WEBGL_draw_buffers',
+    'EXT_frag_depth',
+    'EXT_sRGB',
+    'ANGLE_instanced_arrays'
+];
+
+var PARAMETER_NAMES = [
+    'MAX_TEXTURE_SIZE',
+    'MAX_CUBE_MAP_TEXTURE_SIZE'
+];
+
+function GLInfo(_gl) {
+    var extensions = {};
+    var parameters = {};
+
+    // Get webgl extension
+    for (var i = 0; i < EXTENSION_LIST.length; i++) {
+        var extName = EXTENSION_LIST[i];
+        createExtension(extName);
+    }
+    // Get parameters
+    for (var i = 0; i < PARAMETER_NAMES.length; i++) {
+        var name = PARAMETER_NAMES[i];
+        parameters[name] = _gl.getParameter(_gl[name]);
+    }
+
+    this.getExtension = function (name) {
+        if (!(name in extensions)) {
+            createExtension(name);
+        }
+        return extensions[name];
+    };
+
+    this.getParameter = function (name) {
+        return parameters[name];
+    };
+
+    function createExtension(name) {
+        if (_gl.getExtension) {
+            var ext = _gl.getExtension(name);
+            if (!ext) {
+                ext = _gl.getExtension('MOZ_' + name);
+            }
+            if (!ext) {
+                ext = _gl.getExtension('WEBKIT_' + name);
+            }
+            extensions[name] = ext;
+        }
+    }
+}
+
+/* harmony default export */ const core_GLInfo = (GLInfo);
+
+;// CONCATENATED MODULE: ./node_modules/claygl/src/core/glenum.js
+/**
+ * @namespace clay.core.glenum
+ * @see http://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14
+ */
+/* harmony default export */ const glenum = ({
+    /* ClearBufferMask */
+    DEPTH_BUFFER_BIT               : 0x00000100,
+    STENCIL_BUFFER_BIT             : 0x00000400,
+    COLOR_BUFFER_BIT               : 0x00004000,
+
+    /* BeginMode */
+    POINTS                         : 0x0000,
+    LINES                          : 0x0001,
+    LINE_LOOP                      : 0x0002,
+    LINE_STRIP                     : 0x0003,
+    TRIANGLES                      : 0x0004,
+    TRIANGLE_STRIP                 : 0x0005,
+    TRIANGLE_FAN                   : 0x0006,
+
+    /* AlphaFunction (not supported in ES20) */
+    /*      NEVER */
+    /*      LESS */
+    /*      EQUAL */
+    /*      LEQUAL */
+    /*      GREATER */
+    /*      NOTEQUAL */
+    /*      GEQUAL */
+    /*      ALWAYS */
+
+    /* BlendingFactorDest */
+    ZERO                           : 0,
+    ONE                            : 1,
+    SRC_COLOR                      : 0x0300,
+    ONE_MINUS_SRC_COLOR            : 0x0301,
+    SRC_ALPHA                      : 0x0302,
+    ONE_MINUS_SRC_ALPHA            : 0x0303,
+    DST_ALPHA                      : 0x0304,
+    ONE_MINUS_DST_ALPHA            : 0x0305,
+
+    /* BlendingFactorSrc */
+    /*      ZERO */
+    /*      ONE */
+    DST_COLOR                      : 0x0306,
+    ONE_MINUS_DST_COLOR            : 0x0307,
+    SRC_ALPHA_SATURATE             : 0x0308,
+    /*      SRC_ALPHA */
+    /*      ONE_MINUS_SRC_ALPHA */
+    /*      DST_ALPHA */
+    /*      ONE_MINUS_DST_ALPHA */
+
+    /* BlendEquationSeparate */
+    FUNC_ADD                       : 0x8006,
+    BLEND_EQUATION                 : 0x8009,
+    BLEND_EQUATION_RGB             : 0x8009, /* same as BLEND_EQUATION */
+    BLEND_EQUATION_ALPHA           : 0x883D,
+
+    /* BlendSubtract */
+    FUNC_SUBTRACT                  : 0x800A,
+    FUNC_REVERSE_SUBTRACT          : 0x800B,
+
+    /* Separate Blend Functions */
+    BLEND_DST_RGB                  : 0x80C8,
+    BLEND_SRC_RGB                  : 0x80C9,
+    BLEND_DST_ALPHA                : 0x80CA,
+    BLEND_SRC_ALPHA                : 0x80CB,
+    CONSTANT_COLOR                 : 0x8001,
+    ONE_MINUS_CONSTANT_COLOR       : 0x8002,
+    CONSTANT_ALPHA                 : 0x8003,
+    ONE_MINUS_CONSTANT_ALPHA       : 0x8004,
+    BLEND_COLOR                    : 0x8005,
+
+    /* Buffer Objects */
+    ARRAY_BUFFER                   : 0x8892,
+    ELEMENT_ARRAY_BUFFER           : 0x8893,
+    ARRAY_BUFFER_BINDING           : 0x8894,
+    ELEMENT_ARRAY_BUFFER_BINDING   : 0x8895,
+
+    STREAM_DRAW                    : 0x88E0,
+    STATIC_DRAW                    : 0x88E4,
+    DYNAMIC_DRAW                   : 0x88E8,
+
+    BUFFER_SIZE                    : 0x8764,
+    BUFFER_USAGE                   : 0x8765,
+
+    CURRENT_VERTEX_ATTRIB          : 0x8626,
+
+    /* CullFaceMode */
+    FRONT                          : 0x0404,
+    BACK                           : 0x0405,
+    FRONT_AND_BACK                 : 0x0408,
+
+    /* DepthFunction */
+    /*      NEVER */
+    /*      LESS */
+    /*      EQUAL */
+    /*      LEQUAL */
+    /*      GREATER */
+    /*      NOTEQUAL */
+    /*      GEQUAL */
+    /*      ALWAYS */
+
+    /* EnableCap */
+    /* TEXTURE_2D */
+    CULL_FACE                      : 0x0B44,
+    BLEND                          : 0x0BE2,
+    DITHER                         : 0x0BD0,
+    STENCIL_TEST                   : 0x0B90,
+    DEPTH_TEST                     : 0x0B71,
+    SCISSOR_TEST                   : 0x0C11,
+    POLYGON_OFFSET_FILL            : 0x8037,
+    SAMPLE_ALPHA_TO_COVERAGE       : 0x809E,
+    SAMPLE_COVERAGE                : 0x80A0,
+
+    /* ErrorCode */
+    NO_ERROR                       : 0,
+    INVALID_ENUM                   : 0x0500,
+    INVALID_VALUE                  : 0x0501,
+    INVALID_OPERATION              : 0x0502,
+    OUT_OF_MEMORY                  : 0x0505,
+
+    /* FrontFaceDirection */
+    CW                             : 0x0900,
+    CCW                            : 0x0901,
+
+    /* GetPName */
+    LINE_WIDTH                     : 0x0B21,
+    ALIASED_POINT_SIZE_RANGE       : 0x846D,
+    ALIASED_LINE_WIDTH_RANGE       : 0x846E,
+    CULL_FACE_MODE                 : 0x0B45,
+    FRONT_FACE                     : 0x0B46,
+    DEPTH_RANGE                    : 0x0B70,
+    DEPTH_WRITEMASK                : 0x0B72,
+    DEPTH_CLEAR_VALUE              : 0x0B73,
+    DEPTH_FUNC                     : 0x0B74,
+    STENCIL_CLEAR_VALUE            : 0x0B91,
+    STENCIL_FUNC                   : 0x0B92,
+    STENCIL_FAIL                   : 0x0B94,
+    STENCIL_PASS_DEPTH_FAIL        : 0x0B95,
+    STENCIL_PASS_DEPTH_PASS        : 0x0B96,
+    STENCIL_REF                    : 0x0B97,
+    STENCIL_VALUE_MASK             : 0x0B93,
+    STENCIL_WRITEMASK              : 0x0B98,
+    STENCIL_BACK_FUNC              : 0x8800,
+    STENCIL_BACK_FAIL              : 0x8801,
+    STENCIL_BACK_PASS_DEPTH_FAIL   : 0x8802,
+    STENCIL_BACK_PASS_DEPTH_PASS   : 0x8803,
+    STENCIL_BACK_REF               : 0x8CA3,
+    STENCIL_BACK_VALUE_MASK        : 0x8CA4,
+    STENCIL_BACK_WRITEMASK         : 0x8CA5,
+    VIEWPORT                       : 0x0BA2,
+    SCISSOR_BOX                    : 0x0C10,
+    /*      SCISSOR_TEST */
+    COLOR_CLEAR_VALUE              : 0x0C22,
+    COLOR_WRITEMASK                : 0x0C23,
+    UNPACK_ALIGNMENT               : 0x0CF5,
+    PACK_ALIGNMENT                 : 0x0D05,
+    MAX_TEXTURE_SIZE               : 0x0D33,
+    MAX_VIEWPORT_DIMS              : 0x0D3A,
+    SUBPIXEL_BITS                  : 0x0D50,
+    RED_BITS                       : 0x0D52,
+    GREEN_BITS                     : 0x0D53,
+    BLUE_BITS                      : 0x0D54,
+    ALPHA_BITS                     : 0x0D55,
+    DEPTH_BITS                     : 0x0D56,
+    STENCIL_BITS                   : 0x0D57,
+    POLYGON_OFFSET_UNITS           : 0x2A00,
+    /*      POLYGON_OFFSET_FILL */
+    POLYGON_OFFSET_FACTOR          : 0x8038,
+    TEXTURE_BINDING_2D             : 0x8069,
+    SAMPLE_BUFFERS                 : 0x80A8,
+    SAMPLES                        : 0x80A9,
+    SAMPLE_COVERAGE_VALUE          : 0x80AA,
+    SAMPLE_COVERAGE_INVERT         : 0x80AB,
+
+    /* GetTextureParameter */
+    /*      TEXTURE_MAG_FILTER */
+    /*      TEXTURE_MIN_FILTER */
+    /*      TEXTURE_WRAP_S */
+    /*      TEXTURE_WRAP_T */
+
+    COMPRESSED_TEXTURE_FORMATS     : 0x86A3,
+
+    /* HintMode */
+    DONT_CARE                      : 0x1100,
+    FASTEST                        : 0x1101,
+    NICEST                         : 0x1102,
+
+    /* HintTarget */
+    GENERATE_MIPMAP_HINT            : 0x8192,
+
+    /* DataType */
+    BYTE                           : 0x1400,
+    UNSIGNED_BYTE                  : 0x1401,
+    SHORT                          : 0x1402,
+    UNSIGNED_SHORT                 : 0x1403,
+    INT                            : 0x1404,
+    UNSIGNED_INT                   : 0x1405,
+    FLOAT                          : 0x1406,
+
+    /* PixelFormat */
+    DEPTH_COMPONENT                : 0x1902,
+    ALPHA                          : 0x1906,
+    RGB                            : 0x1907,
+    RGBA                           : 0x1908,
+    LUMINANCE                      : 0x1909,
+    LUMINANCE_ALPHA                : 0x190A,
+
+    /* PixelType */
+    /*      UNSIGNED_BYTE */
+    UNSIGNED_SHORT_4_4_4_4         : 0x8033,
+    UNSIGNED_SHORT_5_5_5_1         : 0x8034,
+    UNSIGNED_SHORT_5_6_5           : 0x8363,
+
+    /* Shaders */
+    FRAGMENT_SHADER                  : 0x8B30,
+    VERTEX_SHADER                    : 0x8B31,
+    MAX_VERTEX_ATTRIBS               : 0x8869,
+    MAX_VERTEX_UNIFORM_VECTORS       : 0x8DFB,
+    MAX_VARYING_VECTORS              : 0x8DFC,
+    MAX_COMBINED_TEXTURE_IMAGE_UNITS : 0x8B4D,
+    MAX_VERTEX_TEXTURE_IMAGE_UNITS   : 0x8B4C,
+    MAX_TEXTURE_IMAGE_UNITS          : 0x8872,
+    MAX_FRAGMENT_UNIFORM_VECTORS     : 0x8DFD,
+    SHADER_TYPE                      : 0x8B4F,
+    DELETE_STATUS                    : 0x8B80,
+    LINK_STATUS                      : 0x8B82,
+    VALIDATE_STATUS                  : 0x8B83,
+    ATTACHED_SHADERS                 : 0x8B85,
+    ACTIVE_UNIFORMS                  : 0x8B86,
+    ACTIVE_ATTRIBUTES                : 0x8B89,
+    SHADING_LANGUAGE_VERSION         : 0x8B8C,
+    CURRENT_PROGRAM                  : 0x8B8D,
+
+    /* StencilFunction */
+    NEVER                          : 0x0200,
+    LESS                           : 0x0201,
+    EQUAL                          : 0x0202,
+    LEQUAL                         : 0x0203,
+    GREATER                        : 0x0204,
+    NOTEQUAL                       : 0x0205,
+    GEQUAL                         : 0x0206,
+    ALWAYS                         : 0x0207,
+
+    /* StencilOp */
+    /*      ZERO */
+    KEEP                           : 0x1E00,
+    REPLACE                        : 0x1E01,
+    INCR                           : 0x1E02,
+    DECR                           : 0x1E03,
+    INVERT                         : 0x150A,
+    INCR_WRAP                      : 0x8507,
+    DECR_WRAP                      : 0x8508,
+
+    /* StringName */
+    VENDOR                         : 0x1F00,
+    RENDERER                       : 0x1F01,
+    VERSION                        : 0x1F02,
+
+    /* TextureMagFilter */
+    NEAREST                        : 0x2600,
+    LINEAR                         : 0x2601,
+
+    /* TextureMinFilter */
+    /*      NEAREST */
+    /*      LINEAR */
+    NEAREST_MIPMAP_NEAREST         : 0x2700,
+    LINEAR_MIPMAP_NEAREST          : 0x2701,
+    NEAREST_MIPMAP_LINEAR          : 0x2702,
+    LINEAR_MIPMAP_LINEAR           : 0x2703,
+
+    /* TextureParameterName */
+    TEXTURE_MAG_FILTER             : 0x2800,
+    TEXTURE_MIN_FILTER             : 0x2801,
+    TEXTURE_WRAP_S                 : 0x2802,
+    TEXTURE_WRAP_T                 : 0x2803,
+
+    /* TextureTarget */
+    TEXTURE_2D                     : 0x0DE1,
+    TEXTURE                        : 0x1702,
+
+    TEXTURE_CUBE_MAP               : 0x8513,
+    TEXTURE_BINDING_CUBE_MAP       : 0x8514,
+    TEXTURE_CUBE_MAP_POSITIVE_X    : 0x8515,
+    TEXTURE_CUBE_MAP_NEGATIVE_X    : 0x8516,
+    TEXTURE_CUBE_MAP_POSITIVE_Y    : 0x8517,
+    TEXTURE_CUBE_MAP_NEGATIVE_Y    : 0x8518,
+    TEXTURE_CUBE_MAP_POSITIVE_Z    : 0x8519,
+    TEXTURE_CUBE_MAP_NEGATIVE_Z    : 0x851A,
+    MAX_CUBE_MAP_TEXTURE_SIZE      : 0x851C,
+
+    /* TextureUnit */
+    TEXTURE0                       : 0x84C0,
+    TEXTURE1                       : 0x84C1,
+    TEXTURE2                       : 0x84C2,
+    TEXTURE3                       : 0x84C3,
+    TEXTURE4                       : 0x84C4,
+    TEXTURE5                       : 0x84C5,
+    TEXTURE6                       : 0x84C6,
+    TEXTURE7                       : 0x84C7,
+    TEXTURE8                       : 0x84C8,
+    TEXTURE9                       : 0x84C9,
+    TEXTURE10                      : 0x84CA,
+    TEXTURE11                      : 0x84CB,
+    TEXTURE12                      : 0x84CC,
+    TEXTURE13                      : 0x84CD,
+    TEXTURE14                      : 0x84CE,
+    TEXTURE15                      : 0x84CF,
+    TEXTURE16                      : 0x84D0,
+    TEXTURE17                      : 0x84D1,
+    TEXTURE18                      : 0x84D2,
+    TEXTURE19                      : 0x84D3,
+    TEXTURE20                      : 0x84D4,
+    TEXTURE21                      : 0x84D5,
+    TEXTURE22                      : 0x84D6,
+    TEXTURE23                      : 0x84D7,
+    TEXTURE24                      : 0x84D8,
+    TEXTURE25                      : 0x84D9,
+    TEXTURE26                      : 0x84DA,
+    TEXTURE27                      : 0x84DB,
+    TEXTURE28                      : 0x84DC,
+    TEXTURE29                      : 0x84DD,
+    TEXTURE30                      : 0x84DE,
+    TEXTURE31                      : 0x84DF,
+    ACTIVE_TEXTURE                 : 0x84E0,
+
+    /* TextureWrapMode */
+    REPEAT                         : 0x2901,
+    CLAMP_TO_EDGE                  : 0x812F,
+    MIRRORED_REPEAT                : 0x8370,
+
+    /* Uniform Types */
+    FLOAT_VEC2                     : 0x8B50,
+    FLOAT_VEC3                     : 0x8B51,
+    FLOAT_VEC4                     : 0x8B52,
+    INT_VEC2                       : 0x8B53,
+    INT_VEC3                       : 0x8B54,
+    INT_VEC4                       : 0x8B55,
+    BOOL                           : 0x8B56,
+    BOOL_VEC2                      : 0x8B57,
+    BOOL_VEC3                      : 0x8B58,
+    BOOL_VEC4                      : 0x8B59,
+    FLOAT_MAT2                     : 0x8B5A,
+    FLOAT_MAT3                     : 0x8B5B,
+    FLOAT_MAT4                     : 0x8B5C,
+    SAMPLER_2D                     : 0x8B5E,
+    SAMPLER_CUBE                   : 0x8B60,
+
+    /* Vertex Arrays */
+    VERTEX_ATTRIB_ARRAY_ENABLED        : 0x8622,
+    VERTEX_ATTRIB_ARRAY_SIZE           : 0x8623,
+    VERTEX_ATTRIB_ARRAY_STRIDE         : 0x8624,
+    VERTEX_ATTRIB_ARRAY_TYPE           : 0x8625,
+    VERTEX_ATTRIB_ARRAY_NORMALIZED     : 0x886A,
+    VERTEX_ATTRIB_ARRAY_POINTER        : 0x8645,
+    VERTEX_ATTRIB_ARRAY_BUFFER_BINDING : 0x889F,
+
+    /* Shader Source */
+    COMPILE_STATUS                 : 0x8B81,
+
+    /* Shader Precision-Specified Types */
+    LOW_FLOAT                      : 0x8DF0,
+    MEDIUM_FLOAT                   : 0x8DF1,
+    HIGH_FLOAT                     : 0x8DF2,
+    LOW_INT                        : 0x8DF3,
+    MEDIUM_INT                     : 0x8DF4,
+    HIGH_INT                       : 0x8DF5,
+
+    /* Framebuffer Object. */
+    FRAMEBUFFER                    : 0x8D40,
+    RENDERBUFFER                   : 0x8D41,
+
+    RGBA4                          : 0x8056,
+    RGB5_A1                        : 0x8057,
+    RGB565                         : 0x8D62,
+    DEPTH_COMPONENT16              : 0x81A5,
+    STENCIL_INDEX                  : 0x1901,
+    STENCIL_INDEX8                 : 0x8D48,
+    DEPTH_STENCIL                  : 0x84F9,
+
+    RENDERBUFFER_WIDTH             : 0x8D42,
+    RENDERBUFFER_HEIGHT            : 0x8D43,
+    RENDERBUFFER_INTERNAL_FORMAT   : 0x8D44,
+    RENDERBUFFER_RED_SIZE          : 0x8D50,
+    RENDERBUFFER_GREEN_SIZE        : 0x8D51,
+    RENDERBUFFER_BLUE_SIZE         : 0x8D52,
+    RENDERBUFFER_ALPHA_SIZE        : 0x8D53,
+    RENDERBUFFER_DEPTH_SIZE        : 0x8D54,
+    RENDERBUFFER_STENCIL_SIZE      : 0x8D55,
+
+    FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE           : 0x8CD0,
+    FRAMEBUFFER_ATTACHMENT_OBJECT_NAME           : 0x8CD1,
+    FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL         : 0x8CD2,
+    FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE : 0x8CD3,
+
+    COLOR_ATTACHMENT0              : 0x8CE0,
+    DEPTH_ATTACHMENT               : 0x8D00,
+    STENCIL_ATTACHMENT             : 0x8D20,
+    DEPTH_STENCIL_ATTACHMENT       : 0x821A,
+
+    NONE                           : 0,
+
+    FRAMEBUFFER_COMPLETE                      : 0x8CD5,
+    FRAMEBUFFER_INCOMPLETE_ATTACHMENT         : 0x8CD6,
+    FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT : 0x8CD7,
+    FRAMEBUFFER_INCOMPLETE_DIMENSIONS         : 0x8CD9,
+    FRAMEBUFFER_UNSUPPORTED                   : 0x8CDD,
+
+    FRAMEBUFFER_BINDING            : 0x8CA6,
+    RENDERBUFFER_BINDING           : 0x8CA7,
+    MAX_RENDERBUFFER_SIZE          : 0x84E8,
+
+    INVALID_FRAMEBUFFER_OPERATION  : 0x0506,
+
+    /* WebGL-specific enums */
+    UNPACK_FLIP_Y_WEBGL            : 0x9240,
+    UNPACK_PREMULTIPLY_ALPHA_WEBGL : 0x9241,
+    CONTEXT_LOST_WEBGL             : 0x9242,
+    UNPACK_COLORSPACE_CONVERSION_WEBGL : 0x9243,
+    BROWSER_DEFAULT_WEBGL          : 0x9244,
+});
+
+;// CONCATENATED MODULE: ./node_modules/claygl/src/core/request.js
+function get(options) {
+
+    var xhr = new XMLHttpRequest();
+
+    xhr.open('get', options.url);
+    // With response type set browser can get and put binary data
+    // https://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest/Sending_and_Receiving_Binary_Data
+    // Default is text, and it can be set
+    // arraybuffer, blob, document, json, text
+    xhr.responseType = options.responseType || 'text';
+
+    if (options.onprogress) {
+        //https://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest/Using_XMLHttpRequest
+        xhr.onprogress = function(e) {
+            if (e.lengthComputable) {
+                var percent = e.loaded / e.total;
+                options.onprogress(percent, e.loaded, e.total);
+            }
+            else {
+                options.onprogress(null);
+            }
+        };
+    }
+    xhr.onload = function(e) {
+        if (xhr.status >= 400) {
+            options.onerror && options.onerror();
+        }
+        else {
+            options.onload && options.onload(xhr.response);
+        }
+    };
+    if (options.onerror) {
+        xhr.onerror = options.onerror;
+    }
+    xhr.send(null);
+}
+
+/* harmony default export */ const request = ({
+    get: get
+});
+
+;// CONCATENATED MODULE: ./node_modules/claygl/src/core/vendor.js
+
+
+var supportWebGL;
+
+var vendor = {};
+
+/**
+ * If support WebGL
+ * @return {boolean}
+ */
+vendor.supportWebGL = function () {
+    if (supportWebGL == null) {
+        try {
+            var canvas = document.createElement('canvas');
+            var gl = canvas.getContext('webgl') || canvas.getContext('experimental-webgl');
+            if (!gl) {
+                throw new Error();
+            }
+        }
+        catch (e) {
+            supportWebGL = false;
+        }
+
+    }
+    return supportWebGL;
+};
+
+vendor.Int8Array = typeof Int8Array === 'undefined' ? Array : Int8Array;
+
+vendor.Uint8Array = typeof Uint8Array === 'undefined' ? Array : Uint8Array;
+
+vendor.Uint16Array = typeof Uint16Array === 'undefined' ? Array : Uint16Array;
+
+vendor.Uint32Array = typeof Uint32Array === 'undefined' ? Array : Uint32Array;
+
+vendor.Int16Array = typeof Int16Array === 'undefined' ? Array : Int16Array;
+
+vendor.Float32Array = typeof Float32Array === 'undefined' ? Array : Float32Array;
+
+vendor.Float64Array = typeof Float64Array === 'undefined' ? Array : Float64Array;
+
+var g = {};
+if (typeof window !== 'undefined') {
+    g = window;
+}
+else if (typeof __webpack_require__.g !== 'undefined') {
+    g = __webpack_require__.g;
+}
+
+
+vendor.requestAnimationFrame = g.requestAnimationFrame
+    || g.msRequestAnimationFrame
+    || g.mozRequestAnimationFrame
+    || g.webkitRequestAnimationFrame
+    || function (func){ setTimeout(func, 16); };
+
+vendor.createCanvas = function () {
+    return document.createElement('canvas');
+};
+
+vendor.createImage = function () {
+    return new g.Image();
+};
+
+vendor.request = {
+    get: request.get
+};
+
+vendor.addEventListener = function (dom, type, func, useCapture) {
+    dom.addEventListener(type, func, useCapture);
+};
+
+vendor.removeEventListener = function (dom, type, func) {
+    dom.removeEventListener(type, func);
+};
+
+/* harmony default export */ const core_vendor = (vendor);
+
+;// CONCATENATED MODULE: ./node_modules/claygl/src/core/LinkedList.js
+/**
+ * Simple double linked list. Compared with array, it has O(1) remove operation.
+ * @constructor
+ * @alias clay.core.LinkedList
+ */
+var LinkedList = function () {
+
+    /**
+     * @type {clay.core.LinkedList.Entry}
+     */
+    this.head = null;
+
+    /**
+     * @type {clay.core.LinkedList.Entry}
+     */
+    this.tail = null;
+
+    this._length = 0;
+};
+
+/**
+ * Insert a new value at the tail
+ * @param  {} val
+ * @return {clay.core.LinkedList.Entry}
+ */
+LinkedList.prototype.insert = function (val) {
+    var entry = new LinkedList.Entry(val);
+    this.insertEntry(entry);
+    return entry;
+};
+
+/**
+ * Insert a new value at idx
+ * @param {number} idx
+ * @param  {} val
+ * @return {clay.core.LinkedList.Entry}
+ */
+LinkedList.prototype.insertAt = function (idx, val) {
+    if (idx < 0) {
+        return;
+    }
+    var next = this.head;
+    var cursor = 0;
+    while (next && cursor != idx) {
+        next = next.next;
+        cursor++;
+    }
+    if (next) {
+        var entry = new LinkedList.Entry(val);
+        var prev = next.prev;
+        if (!prev) { //next is head
+            this.head = entry;
+        }
+        else {
+            prev.next = entry;
+            entry.prev = prev;
+        }
+        entry.next = next;
+        next.prev = entry;
+    }
+    else {
+        this.insert(val);
+    }
+};
+
+LinkedList.prototype.insertBeforeEntry = function (val, next) {
+    var entry = new LinkedList.Entry(val);
+    var prev = next.prev;
+    if (!prev) { //next is head
+        this.head = entry;
+    }
+    else {
+        prev.next = entry;
+        entry.prev = prev;
+    }
+    entry.next = next;
+    next.prev = entry;
+
+    this._length++;
+};
+
+/**
+ * Insert an entry at the tail
+ * @param  {clay.core.LinkedList.Entry} entry
+ */
+LinkedList.prototype.insertEntry = function (entry) {
+    if (!this.head) {
+        this.head = this.tail = entry;
+    }
+    else {
+        this.tail.next = entry;
+        entry.prev = this.tail;
+        this.tail = entry;
+    }
+    this._length++;
+};
+
+/**
+ * Remove entry.
+ * @param  {clay.core.LinkedList.Entry} entry
+ */
+LinkedList.prototype.remove = function (entry) {
+    var prev = entry.prev;
+    var next = entry.next;
+    if (prev) {
+        prev.next = next;
+    }
+    else {
+        // Is head
+        this.head = next;
+    }
+    if (next) {
+        next.prev = prev;
+    }
+    else {
+        // Is tail
+        this.tail = prev;
+    }
+    entry.next = entry.prev = null;
+    this._length--;
+};
+
+/**
+ * Remove entry at index.
+ * @param  {number} idx
+ * @return {}
+ */
+LinkedList.prototype.removeAt = function (idx) {
+    if (idx < 0) {
+        return;
+    }
+    var curr = this.head;
+    var cursor = 0;
+    while (curr && cursor != idx) {
+        curr = curr.next;
+        cursor++;
+    }
+    if (curr) {
+        this.remove(curr);
+        return curr.value;
+    }
+};
+/**
+ * Get head value
+ * @return {}
+ */
+LinkedList.prototype.getHead = function () {
+    if (this.head) {
+        return this.head.value;
+    }
+};
+/**
+ * Get tail value
+ * @return {}
+ */
+LinkedList.prototype.getTail = function () {
+    if (this.tail) {
+        return this.tail.value;
+    }
+};
+/**
+ * Get value at idx
+ * @param {number} idx
+ * @return {}
+ */
+LinkedList.prototype.getAt = function (idx) {
+    if (idx < 0) {
+        return;
+    }
+    var curr = this.head;
+    var cursor = 0;
+    while (curr && cursor != idx) {
+        curr = curr.next;
+        cursor++;
+    }
+    return curr.value;
+};
+
+/**
+ * @param  {} value
+ * @return {number}
+ */
+LinkedList.prototype.indexOf = function (value) {
+    var curr = this.head;
+    var cursor = 0;
+    while (curr) {
+        if (curr.value === value) {
+            return cursor;
+        }
+        curr = curr.next;
+        cursor++;
+    }
+};
+
+/**
+ * @return {number}
+ */
+LinkedList.prototype.length = function () {
+    return this._length;
+};
+
+/**
+ * If list is empty
+ */
+LinkedList.prototype.isEmpty = function () {
+    return this._length === 0;
+};
+
+/**
+ * @param  {Function} cb
+ * @param  {} context
+ */
+LinkedList.prototype.forEach = function (cb, context) {
+    var curr = this.head;
+    var idx = 0;
+    var haveContext = typeof(context) != 'undefined';
+    while (curr) {
+        if (haveContext) {
+            cb.call(context, curr.value, idx);
+        }
+        else {
+            cb(curr.value, idx);
+        }
+        curr = curr.next;
+        idx++;
+    }
+};
+
+/**
+ * Clear the list
+ */
+LinkedList.prototype.clear = function () {
+    this.tail = this.head = null;
+    this._length = 0;
+};
+
+/**
+ * @constructor
+ * @param {} val
+ */
+LinkedList.Entry = function (val) {
+    /**
+     * @type {}
+     */
+    this.value = val;
+
+    /**
+     * @type {clay.core.LinkedList.Entry}
+     */
+    this.next = null;
+
+    /**
+     * @type {clay.core.LinkedList.Entry}
+     */
+    this.prev = null;
+};
+
+/* harmony default export */ const core_LinkedList = (LinkedList);
+
+;// CONCATENATED MODULE: ./node_modules/claygl/src/core/LRU.js
+
+
+/**
+ * LRU Cache
+ * @constructor
+ * @alias clay.core.LRU
+ */
+var LRU = function (maxSize) {
+
+    this._list = new core_LinkedList();
+
+    this._map = {};
+
+    this._maxSize = maxSize || 10;
+};
+
+/**
+ * Set cache max size
+ * @param {number} size
+ */
+LRU.prototype.setMaxSize = function (size) {
+    this._maxSize = size;
+};
+
+/**
+ * @param  {string} key
+ * @param  {} value
+ */
+LRU.prototype.put = function (key, value) {
+    if (!this._map.hasOwnProperty(key)) {
+        var len = this._list.length();
+        if (len >= this._maxSize && len > 0) {
+            // Remove the least recently used
+            var leastUsedEntry = this._list.head;
+            this._list.remove(leastUsedEntry);
+            delete this._map[leastUsedEntry.key];
+        }
+
+        var entry = this._list.insert(value);
+        entry.key = key;
+        this._map[key] = entry;
+    }
+};
+
+/**
+ * @param  {string} key
+ * @return {}
+ */
+LRU.prototype.get = function (key) {
+    var entry = this._map[key];
+    if (this._map.hasOwnProperty(key)) {
+        // Put the latest used entry in the tail
+        if (entry !== this._list.tail) {
+            this._list.remove(entry);
+            this._list.insertEntry(entry);
+        }
+
+        return entry.value;
+    }
+};
+
+/**
+ * @param {string} key
+ */
+LRU.prototype.remove = function (key) {
+    var entry = this._map[key];
+    if (typeof(entry) !== 'undefined') {
+        delete this._map[key];
+        this._list.remove(entry);
+    }
+};
+
+/**
+ * Clear the cache
+ */
+LRU.prototype.clear = function () {
+    this._list.clear();
+    this._map = {};
+};
+
+/* harmony default export */ const core_LRU = (LRU);
+
+;// CONCATENATED MODULE: ./node_modules/claygl/src/core/color.js
+/**
+ * @namespace clay.core.color
+ */
+
+
+var colorUtil = {};
+
+var kCSSColorTable = {
+    'transparent': [0,0,0,0], 'aliceblue': [240,248,255,1],
+    'antiquewhite': [250,235,215,1], 'aqua': [0,255,255,1],
+    'aquamarine': [127,255,212,1], 'azure': [240,255,255,1],
+    'beige': [245,245,220,1], 'bisque': [255,228,196,1],
+    'black': [0,0,0,1], 'blanchedalmond': [255,235,205,1],
+    'blue': [0,0,255,1], 'blueviolet': [138,43,226,1],
+    'brown': [165,42,42,1], 'burlywood': [222,184,135,1],
+    'cadetblue': [95,158,160,1], 'chartreuse': [127,255,0,1],
+    'chocolate': [210,105,30,1], 'coral': [255,127,80,1],
+    'cornflowerblue': [100,149,237,1], 'cornsilk': [255,248,220,1],
+    'crimson': [220,20,60,1], 'cyan': [0,255,255,1],
+    'darkblue': [0,0,139,1], 'darkcyan': [0,139,139,1],
+    'darkgoldenrod': [184,134,11,1], 'darkgray': [169,169,169,1],
+    'darkgreen': [0,100,0,1], 'darkgrey': [169,169,169,1],
+    'darkkhaki': [189,183,107,1], 'darkmagenta': [139,0,139,1],
+    'darkolivegreen': [85,107,47,1], 'darkorange': [255,140,0,1],
+    'darkorchid': [153,50,204,1], 'darkred': [139,0,0,1],
+    'darksalmon': [233,150,122,1], 'darkseagreen': [143,188,143,1],
+    'darkslateblue': [72,61,139,1], 'darkslategray': [47,79,79,1],
+    'darkslategrey': [47,79,79,1], 'darkturquoise': [0,206,209,1],
+    'darkviolet': [148,0,211,1], 'deeppink': [255,20,147,1],
+    'deepskyblue': [0,191,255,1], 'dimgray': [105,105,105,1],
+    'dimgrey': [105,105,105,1], 'dodgerblue': [30,144,255,1],
+    'firebrick': [178,34,34,1], 'floralwhite': [255,250,240,1],
+    'forestgreen': [34,139,34,1], 'fuchsia': [255,0,255,1],
+    'gainsboro': [220,220,220,1], 'ghostwhite': [248,248,255,1],
+    'gold': [255,215,0,1], 'goldenrod': [218,165,32,1],
+    'gray': [128,128,128,1], 'green': [0,128,0,1],
+    'greenyellow': [173,255,47,1], 'grey': [128,128,128,1],
+    'honeydew': [240,255,240,1], 'hotpink': [255,105,180,1],
+    'indianred': [205,92,92,1], 'indigo': [75,0,130,1],
+    'ivory': [255,255,240,1], 'khaki': [240,230,140,1],
+    'lavender': [230,230,250,1], 'lavenderblush': [255,240,245,1],
+    'lawngreen': [124,252,0,1], 'lemonchiffon': [255,250,205,1],
+    'lightblue': [173,216,230,1], 'lightcoral': [240,128,128,1],
+    'lightcyan': [224,255,255,1], 'lightgoldenrodyellow': [250,250,210,1],
+    'lightgray': [211,211,211,1], 'lightgreen': [144,238,144,1],
+    'lightgrey': [211,211,211,1], 'lightpink': [255,182,193,1],
+    'lightsalmon': [255,160,122,1], 'lightseagreen': [32,178,170,1],
+    'lightskyblue': [135,206,250,1], 'lightslategray': [119,136,153,1],
+    'lightslategrey': [119,136,153,1], 'lightsteelblue': [176,196,222,1],
+    'lightyellow': [255,255,224,1], 'lime': [0,255,0,1],
+    'limegreen': [50,205,50,1], 'linen': [250,240,230,1],
+    'magenta': [255,0,255,1], 'maroon': [128,0,0,1],
+    'mediumaquamarine': [102,205,170,1], 'mediumblue': [0,0,205,1],
+    'mediumorchid': [186,85,211,1], 'mediumpurple': [147,112,219,1],
+    'mediumseagreen': [60,179,113,1], 'mediumslateblue': [123,104,238,1],
+    'mediumspringgreen': [0,250,154,1], 'mediumturquoise': [72,209,204,1],
+    'mediumvioletred': [199,21,133,1], 'midnightblue': [25,25,112,1],
+    'mintcream': [245,255,250,1], 'mistyrose': [255,228,225,1],
+    'moccasin': [255,228,181,1], 'navajowhite': [255,222,173,1],
+    'navy': [0,0,128,1], 'oldlace': [253,245,230,1],
+    'olive': [128,128,0,1], 'olivedrab': [107,142,35,1],
+    'orange': [255,165,0,1], 'orangered': [255,69,0,1],
+    'orchid': [218,112,214,1], 'palegoldenrod': [238,232,170,1],
+    'palegreen': [152,251,152,1], 'paleturquoise': [175,238,238,1],
+    'palevioletred': [219,112,147,1], 'papayawhip': [255,239,213,1],
+    'peachpuff': [255,218,185,1], 'peru': [205,133,63,1],
+    'pink': [255,192,203,1], 'plum': [221,160,221,1],
+    'powderblue': [176,224,230,1], 'purple': [128,0,128,1],
+    'red': [255,0,0,1], 'rosybrown': [188,143,143,1],
+    'royalblue': [65,105,225,1], 'saddlebrown': [139,69,19,1],
+    'salmon': [250,128,114,1], 'sandybrown': [244,164,96,1],
+    'seagreen': [46,139,87,1], 'seashell': [255,245,238,1],
+    'sienna': [160,82,45,1], 'silver': [192,192,192,1],
+    'skyblue': [135,206,235,1], 'slateblue': [106,90,205,1],
+    'slategray': [112,128,144,1], 'slategrey': [112,128,144,1],
+    'snow': [255,250,250,1], 'springgreen': [0,255,127,1],
+    'steelblue': [70,130,180,1], 'tan': [210,180,140,1],
+    'teal': [0,128,128,1], 'thistle': [216,191,216,1],
+    'tomato': [255,99,71,1], 'turquoise': [64,224,208,1],
+    'violet': [238,130,238,1], 'wheat': [245,222,179,1],
+    'white': [255,255,255,1], 'whitesmoke': [245,245,245,1],
+    'yellow': [255,255,0,1], 'yellowgreen': [154,205,50,1]
+};
+
+function clampCssByte(i) {  // Clamp to integer 0 .. 255.
+    i = Math.round(i);  // Seems to be what Chrome does (vs truncation).
+    return i < 0 ? 0 : i > 255 ? 255 : i;
+}
+
+function clampCssAngle(i) {  // Clamp to integer 0 .. 360.
+    i = Math.round(i);  // Seems to be what Chrome does (vs truncation).
+    return i < 0 ? 0 : i > 360 ? 360 : i;
+}
+
+function clampCssFloat(f) {  // Clamp to float 0.0 .. 1.0.
+    return f < 0 ? 0 : f > 1 ? 1 : f;
+}
+
+function parseCssInt(str) {  // int or percentage.
+    if (str.length && str.charAt(str.length - 1) === '%') {
+        return clampCssByte(parseFloat(str) / 100 * 255);
+    }
+    return clampCssByte(parseInt(str, 10));
+}
+
+function parseCssFloat(str) {  // float or percentage.
+    if (str.length && str.charAt(str.length - 1) === '%') {
+        return clampCssFloat(parseFloat(str) / 100);
+    }
+    return clampCssFloat(parseFloat(str));
+}
+
+function cssHueToRgb(m1, m2, h) {
+    if (h < 0) {
+        h += 1;
+    }
+    else if (h > 1) {
+        h -= 1;
+    }
+
+    if (h * 6 < 1) {
+        return m1 + (m2 - m1) * h * 6;
+    }
+    if (h * 2 < 1) {
+        return m2;
+    }
+    if (h * 3 < 2) {
+        return m1 + (m2 - m1) * (2/3 - h) * 6;
+    }
+    return m1;
+}
+
+function lerpNumber(a, b, p) {
+    return a + (b - a) * p;
+}
+
+function setRgba(out, r, g, b, a) {
+    out[0] = r; out[1] = g; out[2] = b; out[3] = a;
+    return out;
+}
+function copyRgba(out, a) {
+    out[0] = a[0]; out[1] = a[1]; out[2] = a[2]; out[3] = a[3];
+    return out;
+}
+
+var colorCache = new core_LRU(20);
+var lastRemovedArr = null;
+
+function putToCache(colorStr, rgbaArr) {
+    // Reuse removed array
+    if (lastRemovedArr) {
+        copyRgba(lastRemovedArr, rgbaArr);
+    }
+    lastRemovedArr = colorCache.put(colorStr, lastRemovedArr || (rgbaArr.slice()));
+}
+
+/**
+ * @name clay.core.color.parse
+ * @param {string} colorStr
+ * @param {Array.<number>} out
+ * @return {Array.<number>}
+ */
+colorUtil.parse = function (colorStr, rgbaArr) {
+    if (!colorStr) {
+        return;
+    }
+    rgbaArr = rgbaArr || [];
+
+    var cached = colorCache.get(colorStr);
+    if (cached) {
+        return copyRgba(rgbaArr, cached);
+    }
+
+    // colorStr may be not string
+    colorStr = colorStr + '';
+    // Remove all whitespace, not compliant, but should just be more accepting.
+    var str = colorStr.replace(/ /g, '').toLowerCase();
+
+    // Color keywords (and transparent) lookup.
+    if (str in kCSSColorTable) {
+        copyRgba(rgbaArr, kCSSColorTable[str]);
+        putToCache(colorStr, rgbaArr);
+        return rgbaArr;
+    }
+
+    // #abc and #abc123 syntax.
+    if (str.charAt(0) === '#') {
+        if (str.length === 4) {
+            var iv = parseInt(str.substr(1), 16);  // TODO(deanm): Stricter parsing.
+            if (!(iv >= 0 && iv <= 0xfff)) {
+                setRgba(rgbaArr, 0, 0, 0, 1);
+                return;  // Covers NaN.
+            }
+            setRgba(rgbaArr,
+                ((iv & 0xf00) >> 4) | ((iv & 0xf00) >> 8),
+                (iv & 0xf0) | ((iv & 0xf0) >> 4),
+                (iv & 0xf) | ((iv & 0xf) << 4),
+                1
+            );
+            putToCache(colorStr, rgbaArr);
+            return rgbaArr;
+        }
+        else if (str.length === 7) {
+            var iv = parseInt(str.substr(1), 16);  // TODO(deanm): Stricter parsing.
+            if (!(iv >= 0 && iv <= 0xffffff)) {
+                setRgba(rgbaArr, 0, 0, 0, 1);
+                return;  // Covers NaN.
+            }
+            setRgba(rgbaArr,
+                (iv & 0xff0000) >> 16,
+                (iv & 0xff00) >> 8,
+                iv & 0xff,
+                1
+            );
+            putToCache(colorStr, rgbaArr);
+            return rgbaArr;
+        }
+
+        return;
+    }
+    var op = str.indexOf('('), ep = str.indexOf(')');
+    if (op !== -1 && ep + 1 === str.length) {
+        var fname = str.substr(0, op);
+        var params = str.substr(op + 1, ep - (op + 1)).split(',');
+        var alpha = 1;  // To allow case fallthrough.
+        switch (fname) {
+            case 'rgba':
+                if (params.length !== 4) {
+                    setRgba(rgbaArr, 0, 0, 0, 1);
+                    return;
+                }
+                alpha = parseCssFloat(params.pop()); // jshint ignore:line
+            // Fall through.
+            case 'rgb':
+                if (params.length !== 3) {
+                    setRgba(rgbaArr, 0, 0, 0, 1);
+                    return;
+                }
+                setRgba(rgbaArr,
+                    parseCssInt(params[0]),
+                    parseCssInt(params[1]),
+                    parseCssInt(params[2]),
+                    alpha
+                );
+                putToCache(colorStr, rgbaArr);
+                return rgbaArr;
+            case 'hsla':
+                if (params.length !== 4) {
+                    setRgba(rgbaArr, 0, 0, 0, 1);
+                    return;
+                }
+                params[3] = parseCssFloat(params[3]);
+                hsla2rgba(params, rgbaArr);
+                putToCache(colorStr, rgbaArr);
+                return rgbaArr;
+            case 'hsl':
+                if (params.length !== 3) {
+                    setRgba(rgbaArr, 0, 0, 0, 1);
+                    return;
+                }
+                hsla2rgba(params, rgbaArr);
+                putToCache(colorStr, rgbaArr);
+                return rgbaArr;
+            default:
+                return;
+        }
+    }
+
+    setRgba(rgbaArr, 0, 0, 0, 1);
+    return;
+};
+
+colorUtil.parseToFloat = function (colorStr, rgbaArr) {
+    rgbaArr = colorUtil.parse(colorStr, rgbaArr);
+    if (!rgbaArr) {
+        return;
+    }
+    rgbaArr[0] /= 255;
+    rgbaArr[1] /= 255;
+    rgbaArr[2] /= 255;
+    return rgbaArr;
+}
+
+/**
+ * @name clay.core.color.hsla2rgba
+ * @param {Array.<number>} hsla
+ * @param {Array.<number>} rgba
+ * @return {Array.<number>} rgba
+ */
+function hsla2rgba(hsla, rgba) {
+    var h = (((parseFloat(hsla[0]) % 360) + 360) % 360) / 360;  // 0 .. 1
+    // NOTE(deanm): According to the CSS spec s/l should only be
+    // percentages, but we don't bother and let float or percentage.
+    var s = parseCssFloat(hsla[1]);
+    var l = parseCssFloat(hsla[2]);
+    var m2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;
+    var m1 = l * 2 - m2;
+
+    rgba = rgba || [];
+    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
+    );
+
+    if (hsla.length === 4) {
+        rgba[3] = hsla[3];
+    }
+
+    return rgba;
+}
+
+/**
+ * @name clay.core.color.rgba2hsla
+ * @param {Array.<number>} rgba
+ * @return {Array.<number>} hsla
+ */
+function rgba2hsla(rgba) {
+    if (!rgba) {
+        return;
+    }
+
+    // RGB from 0 to 255
+    var R = rgba[0] / 255;
+    var G = rgba[1] / 255;
+    var B = rgba[2] / 255;
+
+    var vMin = Math.min(R, G, B); // Min. value of RGB
+    var vMax = Math.max(R, G, B); // Max. value of RGB
+    var delta = vMax - vMin; // Delta RGB value
+
+    var L = (vMax + vMin) / 2;
+    var H;
+    var S;
+    // HSL results from 0 to 1
+    if (delta === 0) {
+        H = 0;
+        S = 0;
+    }
+    else {
+        if (L < 0.5) {
+            S = delta / (vMax + vMin);
+        }
+        else {
+            S = delta / (2 - vMax - vMin);
+        }
+
+        var deltaR = (((vMax - R) / 6) + (delta / 2)) / delta;
+        var deltaG = (((vMax - G) / 6) + (delta / 2)) / delta;
+        var deltaB = (((vMax - B) / 6) + (delta / 2)) / delta;
+
+        if (R === vMax) {
+            H = deltaB - deltaG;
+        }
+        else if (G === vMax) {
+            H = (1 / 3) + deltaR - deltaB;
+        }
+        else if (B === vMax) {
+            H = (2 / 3) + deltaG - deltaR;
+        }
+
+        if (H < 0) {
+            H += 1;
+        }
+
+        if (H > 1) {
+            H -= 1;
+        }
+    }
+
+    var hsla = [H * 360, S, L];
+
+    if (rgba[3] != null) {
+        hsla.push(rgba[3]);
+    }
+
+    return hsla;
+}
+
+/**
+ * @name clay.core.color.lift
+ * @param {string} color
+ * @param {number} level
+ * @return {string}
+ */
+colorUtil.lift = function (color, level) {
+    var colorArr = colorUtil.parse(color);
+    if (colorArr) {
+        for (var i = 0; i < 3; i++) {
+            if (level < 0) {
+                colorArr[i] = colorArr[i] * (1 - level) | 0;
+            }
+            else {
+                colorArr[i] = ((255 - colorArr[i]) * level + colorArr[i]) | 0;
+            }
+        }
+        return colorUtil.stringify(colorArr, colorArr.length === 4 ? 'rgba' : 'rgb');
+    }
+}
+
+/**
+ * @name clay.core.color.toHex
+ * @param {string} color
+ * @return {string}
+ */
+colorUtil.toHex = function (color) {
+    var colorArr = colorUtil.parse(color);
+    if (colorArr) {
+        return ((1 << 24) + (colorArr[0] << 16) + (colorArr[1] << 8) + (+colorArr[2])).toString(16).slice(1);
+    }
+};
+
+/**
+ * Map value to color. Faster than lerp methods because color is represented by rgba array.
+ * @name clay.core.color
+ * @param {number} normalizedValue A float between 0 and 1.
+ * @param {Array.<Array.<number>>} colors List of rgba color array
+ * @param {Array.<number>} [out] Mapped gba color array
+ * @return {Array.<number>} will be null/undefined if input illegal.
+ */
+colorUtil.fastLerp = function (normalizedValue, colors, out) {
+    if (!(colors && colors.length)
+        || !(normalizedValue >= 0 && normalizedValue <= 1)
+    ) {
+        return;
+    }
+
+    out = out || [];
+
+    var value = normalizedValue * (colors.length - 1);
+    var leftIndex = Math.floor(value);
+    var rightIndex = Math.ceil(value);
+    var leftColor = colors[leftIndex];
+    var rightColor = colors[rightIndex];
+    var dv = value - leftIndex;
+    out[0] = clampCssByte(lerpNumber(leftColor[0], rightColor[0], dv));
+    out[1] = clampCssByte(lerpNumber(leftColor[1], rightColor[1], dv));
+    out[2] = clampCssByte(lerpNumber(leftColor[2], rightColor[2], dv));
+    out[3] = clampCssFloat(lerpNumber(leftColor[3], rightColor[3], dv));
+
+    return out;
+}
+
+colorUtil.fastMapToColor = colorUtil.fastLerp;
+
+/**
+ * @param {number} normalizedValue A float between 0 and 1.
+ * @param {Array.<string>} colors Color list.
+ * @param {boolean=} fullOutput Default false.
+ * @return {(string|Object)} Result color. If fullOutput,
+ *                           return {color: ..., leftIndex: ..., rightIndex: ..., value: ...},
+ */
+colorUtil.lerp = function (normalizedValue, colors, fullOutput) {
+    if (!(colors && colors.length)
+        || !(normalizedValue >= 0 && normalizedValue <= 1)
+    ) {
+        return;
+    }
+
+    var value = normalizedValue * (colors.length - 1);
+    var leftIndex = Math.floor(value);
+    var rightIndex = Math.ceil(value);
+    var leftColor = colorUtil.parse(colors[leftIndex]);
+    var rightColor = colorUtil.parse(colors[rightIndex]);
+    var dv = value - leftIndex;
+
+    var color = colorUtil.stringify(
+        [
+            clampCssByte(lerpNumber(leftColor[0], rightColor[0], dv)),
+            clampCssByte(lerpNumber(leftColor[1], rightColor[1], dv)),
+            clampCssByte(lerpNumber(leftColor[2], rightColor[2], dv)),
+            clampCssFloat(lerpNumber(leftColor[3], rightColor[3], dv))
+        ],
+        'rgba'
+    );
+
+    return fullOutput
+        ? {
+            color: color,
+            leftIndex: leftIndex,
+            rightIndex: rightIndex,
+            value: value
+        }
+        : color;
+}
+
+/**
+ * @deprecated
+ */
+colorUtil.mapToColor = colorUtil.lerp;
+
+/**
+ * @name clay.core.color
+ * @param {string} color
+ * @param {number=} h 0 ~ 360, ignore when null.
+ * @param {number=} s 0 ~ 1, ignore when null.
+ * @param {number=} l 0 ~ 1, ignore when null.
+ * @return {string} Color string in rgba format.
+ */
+colorUtil.modifyHSL = function (color, h, s, l) {
+    color = colorUtil.parse(color);
+
+    if (color) {
+        color = rgba2hsla(color);
+        h != null && (color[0] = clampCssAngle(h));
+        s != null && (color[1] = parseCssFloat(s));
+        l != null && (color[2] = parseCssFloat(l));
+
+        return colorUtil.stringify(hsla2rgba(color), 'rgba');
+    }
+}
+
+/**
+ * @param {string} color
+ * @param {number=} alpha 0 ~ 1
+ * @return {string} Color string in rgba format.
+ */
+colorUtil.modifyAlpha = function (color, alpha) {
+    color = colorUtil.parse(color);
+
+    if (color && alpha != null) {
+        color[3] = clampCssFloat(alpha);
+        return colorUtil.stringify(color, 'rgba');
+    }
+}
+
+/**
+ * @param {Array.<number>} arrColor like [12,33,44,0.4]
+ * @param {string} type 'rgba', 'hsva', ...
+ * @return {string} Result color. (If input illegal, return undefined).
+ */
+colorUtil.stringify = function (arrColor, type) {
+    if (!arrColor || !arrColor.length) {
+        return;
+    }
+    var colorStr = arrColor[0] + ',' + arrColor[1] + ',' + arrColor[2];
+    if (type === 'rgba' || type === 'hsva' || type === 'hsla') {
+        colorStr += ',' + arrColor[3];
+    }
+    return type + '(' + colorStr + ')';
+};
+
+
+
+/* harmony default export */ const color = (colorUtil);
+;// CONCATENATED MODULE: ./node_modules/claygl/src/Material.js
+
+
+
+var parseColor = color.parseToFloat;
+
+var programKeyCache = {};
+
+function getDefineCode(defines) {
+    var defineKeys = Object.keys(defines);
+    defineKeys.sort();
+    var defineStr = [];
+    // Custom Defines
+    for (var i = 0; i < defineKeys.length; i++) {
+        var key = defineKeys[i];
+        var value = defines[key];
+        if (value === null) {
+            defineStr.push(key);
+        }
+        else{
+            defineStr.push(key + ' ' + value.toString());
+        }
+    }
+    return defineStr.join('\n');
+}
+
+function getProgramKey(vertexDefines, fragmentDefines, enabledTextures) {
+    enabledTextures.sort();
+    var defineStr = [];
+    for (var i = 0; i < enabledTextures.length; i++) {
+        var symbol = enabledTextures[i];
+        defineStr.push(symbol);
+    }
+    var key = getDefineCode(vertexDefines) + '\n'
+        + getDefineCode(fragmentDefines) + '\n'
+        + defineStr.join('\n');
+
+    if (programKeyCache[key]) {
+        return programKeyCache[key];
+    }
+
+    var id = core_util.genGUID();
+    programKeyCache[key] = id;
+    return id;
+}
+
+/**
+ * Material defines the appearance of mesh surface, like `color`, `roughness`, `metalness`, etc.
+ * It contains a {@link clay.Shader} and corresponding uniforms.
+ *
+ * Here is a basic example to create a standard material
+```js
+var material = new clay.Material({
+    shader: new clay.Shader(
+        clay.Shader.source('clay.vertex'),
+        clay.Shader.source('clay.fragment')
+    )
+});
+```
+ * @constructor clay.Material
+ * @extends clay.core.Base
+ */
+var Material = core_Base.extend(function () {
+    return /** @lends clay.Material# */ {
+        /**
+         * @type {string}
+         */
+        name: '',
+
+        /**
+         * @type {Object}
+         */
+        // uniforms: null,
+
+        /**
+         * @type {clay.Shader}
+         */
+        // shader: null,
+
+        /**
+         * @type {boolean}
+         */
+        depthTest: true,
+
+        /**
+         * @type {boolean}
+         */
+        depthMask: true,
+
+        /**
+         * @type {boolean}
+         */
+        transparent: false,
+        /**
+         * Blend func is a callback function when the material
+         * have custom blending
+         * The gl context will be the only argument passed in tho the
+         * blend function
+         * Detail of blend function in WebGL:
+         * http://www.khronos.org/registry/gles/specs/2.0/es_full_spec_2.0.25.pdf
+         *
+         * Example :
+         * function(_gl) {
+         *  _gl.blendEquation(_gl.FUNC_ADD);
+         *  _gl.blendFunc(_gl.SRC_ALPHA, _gl.ONE_MINUS_SRC_ALPHA);
+         * }
+         */
+        blend: null,
+
+        /**
+         * If update texture status automatically.
+         */
+        autoUpdateTextureStatus: true,
+
+        uniforms: {},
+        vertexDefines: {},
+        fragmentDefines: {},
+        _textureStatus: {},
+
+        // shadowTransparentMap : null
+
+        // PENDING enable the uniform that only used in shader.
+        _enabledUniforms: null,
+    };
+}, function () {
+    if (!this.name) {
+        this.name = 'MATERIAL_' + this.__uid__;
+    }
+
+    if (this.shader) {
+        // Keep status, mainly preset uniforms, vertexDefines and fragmentDefines
+        this.attachShader(this.shader, true);
+    }
+},
+/** @lends clay.Material.prototype */
+{
+    precision: 'highp',
+
+    /**
+     * Set material uniform
+     * @example
+     *  mat.setUniform('color', [1, 1, 1, 1]);
+     * @param {string} symbol
+     * @param {number|array|clay.Texture|ArrayBufferView} value
+     */
+    setUniform: function (symbol, value) {
+        if (value === undefined) {
+            console.warn('Uniform value "' + symbol + '" is undefined');
+        }
+        var uniform = this.uniforms[symbol];
+        if (uniform) {
+
+            if (typeof value === 'string') {
+                // Try to parse as a color. Invalid color string will return null.
+                value = parseColor(value) || value;
+            }
+
+            uniform.value = value;
+
+            if (this.autoUpdateTextureStatus && uniform.type === 't') {
+                if (value) {
+                    this.enableTexture(symbol);
+                }
+                else {
+                    this.disableTexture(symbol);
+                }
+            }
+        }
+    },
+
+    /**
+     * @param {Object} obj
+     */
+    setUniforms: function(obj) {
+        for (var key in obj) {
+            var val = obj[key];
+            this.setUniform(key, val);
+        }
+    },
+
+    /**
+     * @param  {string}  symbol
+     * @return {boolean}
+     */
+    isUniformEnabled: function (symbol) {
+        return this._enabledUniforms.indexOf(symbol) >= 0;
+    },
+
+    getEnabledUniforms: function () {
+        return this._enabledUniforms;
+    },
+    getTextureUniforms: function () {
+        return this._textureUniforms;
+    },
+
+    /**
+     * Alias of setUniform and setUniforms
+     * @param {object|string} symbol
+     * @param {number|array|clay.Texture|ArrayBufferView} [value]
+     */
+    set: function (symbol, value) {
+        if (typeof(symbol) === 'object') {
+            for (var key in symbol) {
+                var val = symbol[key];
+                this.setUniform(key, val);
+            }
+        }
+        else {
+            this.setUniform(symbol, value);
+        }
+    },
+    /**
+     * Get uniform value
+     * @param  {string} symbol
+     * @return {number|array|clay.Texture|ArrayBufferView}
+     */
+    get: function (symbol) {
+        var uniform = this.uniforms[symbol];
+        if (uniform) {
+            return uniform.value;
+        }
+    },
+    /**
+     * Attach a shader instance
+     * @param  {clay.Shader} shader
+     * @param  {boolean} keepStatus If try to keep uniform and texture
+     */
+    attachShader: function(shader, keepStatus) {
+        var originalUniforms = this.uniforms;
+
+        // Ignore if uniform can use in shader.
+        this.uniforms = shader.createUniforms();
+        this.shader = shader;
+
+        var uniforms = this.uniforms;
+        this._enabledUniforms = Object.keys(uniforms);
+        // Make sure uniforms are set in same order to avoid texture slot wrong
+        this._enabledUniforms.sort();
+        this._textureUniforms = this._enabledUniforms.filter(function (uniformName) {
+            var type = this.uniforms[uniformName].type;
+            return type === 't' || type === 'tv';
+        }, this);
+
+        var originalVertexDefines = this.vertexDefines;
+        var originalFragmentDefines = this.fragmentDefines;
+
+        this.vertexDefines = core_util.clone(shader.vertexDefines);
+        this.fragmentDefines = core_util.clone(shader.fragmentDefines);
+
+        if (keepStatus) {
+            for (var symbol in originalUniforms) {
+                if (uniforms[symbol]) {
+                    uniforms[symbol].value = originalUniforms[symbol].value;
+                }
+            }
+
+            core_util.defaults(this.vertexDefines, originalVertexDefines);
+            core_util.defaults(this.fragmentDefines, originalFragmentDefines);
+        }
+
+        var textureStatus = {};
+        for (var key in shader.textures) {
+            textureStatus[key] = {
+                shaderType: shader.textures[key].shaderType,
+                type: shader.textures[key].type,
+                enabled: (keepStatus && this._textureStatus[key]) ? this._textureStatus[key].enabled : false
+            };
+        }
+
+        this._textureStatus = textureStatus;
+
+        this._programKey = '';
+    },
+
+    /**
+     * Clone a new material and keep uniforms, shader will not be cloned
+     * @return {clay.Material}
+     */
+    clone: function () {
+        var material = new this.constructor({
+            name: this.name,
+            shader: this.shader
+        });
+        for (var symbol in this.uniforms) {
+            material.uniforms[symbol].value = this.uniforms[symbol].value;
+        }
+        material.depthTest = this.depthTest;
+        material.depthMask = this.depthMask;
+        material.transparent = this.transparent;
+        material.blend = this.blend;
+
+        material.vertexDefines = core_util.clone(this.vertexDefines);
+        material.fragmentDefines = core_util.clone(this.fragmentDefines);
+        material.enableTexture(this.getEnabledTextures());
+        material.precision = this.precision;
+
+        return material;
+    },
+
+    /**
+     * Add a #define macro in shader code
+     * @param  {string} shaderType Can be vertex, fragment or both
+     * @param  {string} symbol
+     * @param  {number} [val]
+     */
+    define: function (shaderType, symbol, val) {
+        var vertexDefines = this.vertexDefines;
+        var fragmentDefines = this.fragmentDefines;
+        if (shaderType !== 'vertex' && shaderType !== 'fragment' && shaderType !== 'both'
+            && arguments.length < 3
+        ) {
+            // shaderType default to be 'both'
+            val = symbol;
+            symbol = shaderType;
+            shaderType = 'both';
+        }
+        val = val != null ? val : null;
+        if (shaderType === 'vertex' || shaderType === 'both') {
+            if (vertexDefines[symbol] !== val) {
+                vertexDefines[symbol] = val;
+                // Mark as dirty
+                this._programKey = '';
+            }
+        }
+        if (shaderType === 'fragment' || shaderType === 'both') {
+            if (fragmentDefines[symbol] !== val) {
+                fragmentDefines[symbol] = val;
+                if (shaderType !== 'both') {
+                    this._programKey = '';
+                }
+            }
+        }
+    },
+
+    /**
+     * Remove a #define macro in shader code
+     * @param  {string} shaderType Can be vertex, fragment or both
+     * @param  {string} symbol
+     */
+    undefine: function (shaderType, symbol) {
+        if (shaderType !== 'vertex' && shaderType !== 'fragment' && shaderType !== 'both'
+            && arguments.length < 2
+        ) {
+            // shaderType default to be 'both'
+            symbol = shaderType;
+            shaderType = 'both';
+        }
+        if (shaderType === 'vertex' || shaderType === 'both') {
+            if (this.isDefined('vertex', symbol)) {
+                delete this.vertexDefines[symbol];
+                // Mark as dirty
+                this._programKey = '';
+            }
+        }
+        if (shaderType === 'fragment' || shaderType === 'both') {
+            if (this.isDefined('fragment', symbol)) {
+                delete this.fragmentDefines[symbol];
+                if (shaderType !== 'both') {
+                    this._programKey = '';
+                }
+            }
+        }
+    },
+
+    /**
+     * If macro is defined in shader.
+     * @param  {string} shaderType Can be vertex, fragment or both
+     * @param  {string} symbol
+     */
+    isDefined: function (shaderType, symbol) {
+        // PENDING hasOwnProperty ?
+        switch (shaderType) {
+            case 'vertex':
+                return this.vertexDefines[symbol] !== undefined;
+            case 'fragment':
+                return this.fragmentDefines[symbol] !== undefined;
+        }
+    },
+    /**
+     * Get macro value defined in shader.
+     * @param  {string} shaderType Can be vertex, fragment or both
+     * @param  {string} symbol
+     */
+    getDefine: function (shaderType, symbol) {
+        switch(shaderType) {
+            case 'vertex':
+                return this.vertexDefines[symbol];
+            case 'fragment':
+                return this.fragmentDefines[symbol];
+        }
+    },
+    /**
+     * Enable a texture, actually it will add a #define macro in the shader code
+     * For example, if texture symbol is diffuseMap, it will add a line `#define DIFFUSEMAP_ENABLED` in the shader code
+     * @param  {string} symbol
+     */
+    enableTexture: function (symbol) {
+        if (Array.isArray(symbol)) {
+            for (var i = 0; i < symbol.length; i++) {
+                this.enableTexture(symbol[i]);
+            }
+            return;
+        }
+
+        var status = this._textureStatus[symbol];
+        if (status) {
+            var isEnabled = status.enabled;
+            if (!isEnabled) {
+                status.enabled = true;
+                this._programKey = '';
+            }
+        }
+    },
+    /**
+     * Enable all textures used in the shader
+     */
+    enableTexturesAll: function () {
+        var textureStatus = this._textureStatus;
+        for (var symbol in textureStatus) {
+            textureStatus[symbol].enabled = true;
+        }
+
+        this._programKey = '';
+    },
+    /**
+     * Disable a texture, it remove a #define macro in the shader
+     * @param  {string} symbol
+     */
+    disableTexture: function (symbol) {
+        if (Array.isArray(symbol)) {
+            for (var i = 0; i < symbol.length; i++) {
+                this.disableTexture(symbol[i]);
+            }
+            return;
+        }
+
+        var status = this._textureStatus[symbol];
+        if (status) {
+            var isDisabled = ! status.enabled;
+            if (!isDisabled) {
+                status.enabled = false;
+                this._programKey = '';
+            }
+        }
+    },
+    /**
+     * Disable all textures used in the shader
+     */
+    disableTexturesAll: function () {
+        var textureStatus = this._textureStatus;
+        for (var symbol in textureStatus) {
+            textureStatus[symbol].enabled = false;
+        }
+
+        this._programKey = '';
+    },
+    /**
+     * If texture of given type is enabled.
+     * @param  {string}  symbol
+     * @return {boolean}
+     */
+    isTextureEnabled: function (symbol) {
+        var textureStatus = this._textureStatus;
+        return !!textureStatus[symbol]
+            && textureStatus[symbol].enabled;
+    },
+
+    /**
+     * Get all enabled textures
+     * @return {string[]}
+     */
+    getEnabledTextures: function () {
+        var enabledTextures = [];
+        var textureStatus = this._textureStatus;
+        for (var symbol in textureStatus) {
+            if (textureStatus[symbol].enabled) {
+                enabledTextures.push(symbol);
+            }
+        }
+        return enabledTextures;
+    },
+
+    /**
+     * Mark defines are updated.
+     */
+    dirtyDefines: function () {
+        this._programKey = '';
+    },
+
+    getProgramKey: function () {
+        if (!this._programKey) {
+            this._programKey = getProgramKey(
+                this.vertexDefines, this.fragmentDefines, this.getEnabledTextures()
+            );
+        }
+        return this._programKey;
+    }
+});
+
+/* harmony default export */ const src_Material = (Material);
+
+;// CONCATENATED MODULE: ./node_modules/claygl/src/glmatrix/common.js
+
+var GLMAT_EPSILON = 0.000001;
+
+// Use Array instead of Float32Array. It seems to be much faster and higher precision.
+var GLMAT_ARRAY_TYPE = Array;
+// if(!GLMAT_ARRAY_TYPE) {
+//     GLMAT_ARRAY_TYPE = (typeof Float32Array !== 'undefined') ? Float32Array : Array;
+// }
+
+var common_GLMAT_RANDOM = Math.random;
+
+;// CONCATENATED MODULE: ./node_modules/claygl/src/glmatrix/vec2.js
+
+/* Copyright (c) 2013, Brandon Jones, Colin MacKenzie IV. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+  * Redistributions of source code must retain the above copyright notice, this
+    list of conditions and the following disclaimer.
+  * Redistributions in binary form must reproduce the above copyright notice,
+    this list of conditions and the following disclaimer in the documentation
+    and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
+
+
+
+/**
+ * @class 2 Dimensional Vector
+ * @name vec2
+ */
+
+var vec2 = {};
+
+/**
+ * Creates a new, empty vec2
+ *
+ * @returns {vec2} a new 2D vector
+ */
+vec2.create = function() {
+    var out = new GLMAT_ARRAY_TYPE(2);
+    out[0] = 0;
+    out[1] = 0;
+    return out;
+};
+
+/**
+ * Creates a new vec2 initialized with values from an existing vector
+ *
+ * @param {vec2} a vector to clone
+ * @returns {vec2} a new 2D vector
+ */
+vec2.clone = function(a) {
+    var out = new GLMAT_ARRAY_TYPE(2);
+    out[0] = a[0];
+    out[1] = a[1];
+    return out;
+};
+
+/**
+ * Creates a new vec2 initialized with the given values
+ *
+ * @param {Number} x X component
+ * @param {Number} y Y component
+ * @returns {vec2} a new 2D vector
+ */
+vec2.fromValues = function(x, y) {
+    var out = new GLMAT_ARRAY_TYPE(2);
+    out[0] = x;
+    out[1] = y;
+    return out;
+};
+
+/**
+ * Copy the values from one vec2 to another
+ *
+ * @param {vec2} out the receiving vector
+ * @param {vec2} a the source vector
+ * @returns {vec2} out
+ */
+vec2.copy = function(out, a) {
+    out[0] = a[0];
+    out[1] = a[1];
+    return out;
+};
+
+/**
+ * Set the components of a vec2 to the given values
+ *
+ * @param {vec2} out the receiving vector
+ * @param {Number} x X component
+ * @param {Number} y Y component
+ * @returns {vec2} out
+ */
+vec2.set = function(out, x, y) {
+    out[0] = x;
+    out[1] = y;
+    return out;
+};
+
+/**
+ * Adds two vec2's
+ *
+ * @param {vec2} out the receiving vector
+ * @param {vec2} a the first operand
+ * @param {vec2} b the second operand
+ * @returns {vec2} out
+ */
+vec2.add = function(out, a, b) {
+    out[0] = a[0] + b[0];
+    out[1] = a[1] + b[1];
+    return out;
+};
+
+/**
+ * Subtracts vector b from vector a
+ *
+ * @param {vec2} out the receiving vector
+ * @param {vec2} a the first operand
+ * @param {vec2} b the second operand
+ * @returns {vec2} out
+ */
+vec2.subtract = function(out, a, b) {
+    out[0] = a[0] - b[0];
+    out[1] = a[1] - b[1];
+    return out;
+};
+
+/**
+ * Alias for {@link vec2.subtract}
+ * @function
+ */
+vec2.sub = vec2.subtract;
+
+/**
+ * Multiplies two vec2's
+ *
+ * @param {vec2} out the receiving vector
+ * @param {vec2} a the first operand
+ * @param {vec2} b the second operand
+ * @returns {vec2} out
+ */
+vec2.multiply = function(out, a, b) {
+    out[0] = a[0] * b[0];
+    out[1] = a[1] * b[1];
+    return out;
+};
+
+/**
+ * Alias for {@link vec2.multiply}
+ * @function
+ */
+vec2.mul = vec2.multiply;
+
+/**
+ * Divides two vec2's
+ *
+ * @param {vec2} out the receiving vector
+ * @param {vec2} a the first operand
+ * @param {vec2} b the second operand
+ * @returns {vec2} out
+ */
+vec2.divide = function(out, a, b) {
+    out[0] = a[0] / b[0];
+    out[1] = a[1] / b[1];
+    return out;
+};
+
+/**
+ * Alias for {@link vec2.divide}
+ * @function
+ */
+vec2.div = vec2.divide;
+
+/**
+ * Returns the minimum of two vec2's
+ *
+ * @param {vec2} out the receiving vector
+ * @param {vec2} a the first operand
+ * @param {vec2} b the second operand
+ * @returns {vec2} out
+ */
+vec2.min = function(out, a, b) {
+    out[0] = Math.min(a[0], b[0]);
+    out[1] = Math.min(a[1], b[1]);
+    return out;
+};
+
+/**
+ * Returns the maximum of two vec2's
+ *
+ * @param {vec2} out the receiving vector
+ * @param {vec2} a the first operand
+ * @param {vec2} b the second operand
+ * @returns {vec2} out
+ */
+vec2.max = function(out, a, b) {
+    out[0] = Math.max(a[0], b[0]);
+    out[1] = Math.max(a[1], b[1]);
+    return out;
+};
+
+/**
+ * Scales a vec2 by a scalar number
+ *
+ * @param {vec2} out the receiving vector
+ * @param {vec2} a the vector to scale
+ * @param {Number} b amount to scale the vector by
+ * @returns {vec2} out
+ */
+vec2.scale = function(out, a, b) {
+    out[0] = a[0] * b;
+    out[1] = a[1] * b;
+    return out;
+};
+
+/**
+ * Adds two vec2's after scaling the second operand by a scalar value
+ *
+ * @param {vec2} out the receiving vector
+ * @param {vec2} a the first operand
+ * @param {vec2} b the second operand
+ * @param {Number} scale the amount to scale b by before adding
+ * @returns {vec2} out
+ */
+vec2.scaleAndAdd = function(out, a, b, scale) {
+    out[0] = a[0] + (b[0] * scale);
+    out[1] = a[1] + (b[1] * scale);
+    return out;
+};
+
+/**
+ * Calculates the euclidian distance between two vec2's
+ *
+ * @param {vec2} a the first operand
+ * @param {vec2} b the second operand
+ * @returns {Number} distance between a and b
+ */
+vec2.distance = function(a, b) {
+    var x = b[0] - a[0],
+        y = b[1] - a[1];
+    return Math.sqrt(x*x + y*y);
+};
+
+/**
+ * Alias for {@link vec2.distance}
+ * @function
+ */
+vec2.dist = vec2.distance;
+
+/**
+ * Calculates the squared euclidian distance between two vec2's
+ *
+ * @param {vec2} a the first operand
+ * @param {vec2} b the second operand
+ * @returns {Number} squared distance between a and b
+ */
+vec2.squaredDistance = function(a, b) {
+    var x = b[0] - a[0],
+        y = b[1] - a[1];
+    return x*x + y*y;
+};
+
+/**
+ * Alias for {@link vec2.squaredDistance}
+ * @function
+ */
+vec2.sqrDist = vec2.squaredDistance;
+
+/**
+ * Calculates the length of a vec2
+ *
+ * @param {vec2} a vector to calculate length of
+ * @returns {Number} length of a
+ */
+vec2.length = function (a) {
+    var x = a[0],
+        y = a[1];
+    return Math.sqrt(x*x + y*y);
+};
+
+/**
+ * Alias for {@link vec2.length}
+ * @function
+ */
+vec2.len = vec2.length;
+
+/**
+ * Calculates the squared length of a vec2
+ *
+ * @param {vec2} a vector to calculate squared length of
+ * @returns {Number} squared length of a
+ */
+vec2.squaredLength = function (a) {
+    var x = a[0],
+        y = a[1];
+    return x*x + y*y;
+};
+
+/**
+ * Alias for {@link vec2.squaredLength}
+ * @function
+ */
+vec2.sqrLen = vec2.squaredLength;
+
+/**
+ * Negates the components of a vec2
+ *
+ * @param {vec2} out the receiving vector
+ * @param {vec2} a vector to negate
+ * @returns {vec2} out
+ */
+vec2.negate = function(out, a) {
+    out[0] = -a[0];
+    out[1] = -a[1];
+    return out;
+};
+
+/**
+ * Returns the inverse of the components of a vec2
+ *
+ * @param {vec2} out the receiving vector
+ * @param {vec2} a vector to invert
+ * @returns {vec2} out
+ */
+vec2.inverse = function(out, a) {
+  out[0] = 1.0 / a[0];
+  out[1] = 1.0 / a[1];
+  return out;
+};
+
+/**
+ * Normalize a vec2
+ *
+ * @param {vec2} out the receiving vector
+ * @param {vec2} a vector to normalize
+ * @returns {vec2} out
+ */
+vec2.normalize = function(out, a) {
+    var x = a[0],
+        y = a[1];
+    var len = x*x + y*y;
+    if (len > 0) {
+        //TODO: evaluate use of glm_invsqrt here?
+        len = 1 / Math.sqrt(len);
+        out[0] = a[0] * len;
+        out[1] = a[1] * len;
+    }
+    return out;
+};
+
+/**
+ * Calculates the dot product of two vec2's
+ *
+ * @param {vec2} a the first operand
+ * @param {vec2} b the second operand
+ * @returns {Number} dot product of a and b
+ */
+vec2.dot = function (a, b) {
+    return a[0] * b[0] + a[1] * b[1];
+};
+
+/**
+ * Computes the cross product of two vec2's
+ * Note that the cross product must by definition produce a 3D vector
+ *
+ * @param {vec3} out the receiving vector
+ * @param {vec2} a the first operand
+ * @param {vec2} b the second operand
+ * @returns {vec3} out
+ */
+vec2.cross = function(out, a, b) {
+    var z = a[0] * b[1] - a[1] * b[0];
+    out[0] = out[1] = 0;
+    out[2] = z;
+    return out;
+};
+
+/**
+ * Performs a linear interpolation between two vec2's
+ *
+ * @param {vec2} out the receiving vector
+ * @param {vec2} a the first operand
+ * @param {vec2} b the second operand
+ * @param {Number} t interpolation amount between the two inputs
+ * @returns {vec2} out
+ */
+vec2.lerp = function (out, a, b, t) {
+    var ax = a[0],
+        ay = a[1];
+    out[0] = ax + t * (b[0] - ax);
+    out[1] = ay + t * (b[1] - ay);
+    return out;
+};
+
+/**
+ * Generates a random vector with the given scale
+ *
+ * @param {vec2} out the receiving vector
+ * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned
+ * @returns {vec2} out
+ */
+vec2.random = function (out, scale) {
+    scale = scale || 1.0;
+    var r = GLMAT_RANDOM() * 2.0 * Math.PI;
+    out[0] = Math.cos(r) * scale;
+    out[1] = Math.sin(r) * scale;
+    return out;
+};
+
+/**
+ * Transforms the vec2 with a mat2
+ *
+ * @param {vec2} out the receiving vector
+ * @param {vec2} a the vector to transform
+ * @param {mat2} m matrix to transform with
+ * @returns {vec2} out
+ */
+vec2.transformMat2 = function(out, a, m) {
+    var x = a[0],
+        y = a[1];
+    out[0] = m[0] * x + m[2] * y;
+    out[1] = m[1] * x + m[3] * y;
+    return out;
+};
+
+/**
+ * Transforms the vec2 with a mat2d
+ *
+ * @param {vec2} out the receiving vector
+ * @param {vec2} a the vector to transform
+ * @param {mat2d} m matrix to transform with
+ * @returns {vec2} out
+ */
+vec2.transformMat2d = function(out, a, m) {
+    var x = a[0],
+        y = a[1];
+    out[0] = m[0] * x + m[2] * y + m[4];
+    out[1] = m[1] * x + m[3] * y + m[5];
+    return out;
+};
+
+/**
+ * Transforms the vec2 with a mat3
+ * 3rd vector component is implicitly '1'
+ *
+ * @param {vec2} out the receiving vector
+ * @param {vec2} a the vector to transform
+ * @param {mat3} m matrix to transform with
+ * @returns {vec2} out
+ */
+vec2.transformMat3 = function(out, a, m) {
+    var x = a[0],
+        y = a[1];
+    out[0] = m[0] * x + m[3] * y + m[6];
+    out[1] = m[1] * x + m[4] * y + m[7];
+    return out;
+};
+
+/**
+ * Transforms the vec2 with a mat4
+ * 3rd vector component is implicitly '0'
+ * 4th vector component is implicitly '1'
+ *
+ * @param {vec2} out the receiving vector
+ * @param {vec2} a the vector to transform
+ * @param {mat4} m matrix to transform with
+ * @returns {vec2} out
+ */
+vec2.transformMat4 = function(out, a, m) {
+    var x = a[0],
+        y = a[1];
+    out[0] = m[0] * x + m[4] * y + m[12];
+    out[1] = m[1] * x + m[5] * y + m[13];
+    return out;
+};
+
+/**
+ * Perform some operation over an array of vec2s.
+ *
+ * @param {Array} a the array of vectors to iterate over
+ * @param {Number} stride Number of elements between the start of each vec2. If 0 assumes tightly packed
+ * @param {Number} offset Number of elements to skip at the beginning of the array
+ * @param {Number} count Number of vec2s to iterate over. If 0 iterates over entire array
+ * @param {Function} fn Function to call for each vector in the array
+ * @param {Object} [arg] additional argument to pass to fn
+ * @returns {Array} a
+ * @function
+ */
+vec2.forEach = (function() {
+    var vec = vec2.create();
+
+    return function(a, stride, offset, count, fn, arg) {
+        var i, l;
+        if(!stride) {
+            stride = 2;
+        }
+
+        if(!offset) {
+            offset = 0;
+        }
+
+        if(count) {
+            l = Math.min((count * stride) + offset, a.length);
+        } else {
+            l = a.length;
+        }
+
+        for(i = offset; i < l; i += stride) {
+            vec[0] = a[i]; vec[1] = a[i+1];
+            fn(vec, vec, arg);
+            a[i] = vec[0]; a[i+1] = vec[1];
+        }
+
+        return a;
+    };
+})();
+
+/* harmony default export */ const glmatrix_vec2 = (vec2);
+;// CONCATENATED MODULE: ./node_modules/claygl/src/math/Vector2.js
+
+
+/**
+ * @constructor
+ * @alias clay.Vector2
+ * @param {number} x
+ * @param {number} y
+ */
+var Vector2 = function(x, y) {
+
+    x = x || 0;
+    y = y || 0;
+
+    /**
+     * Storage of Vector2, read and write of x, y will change the values in array
+     * All methods also operate on the array instead of x, y components
+     * @name array
+     * @type {Float32Array}
+     * @memberOf clay.Vector2#
+     */
+    this.array = glmatrix_vec2.fromValues(x, y);
+
+    /**
+     * Dirty flag is used by the Node to determine
+     * if the matrix is updated to latest
+     * @name _dirty
+     * @type {boolean}
+     * @memberOf clay.Vector2#
+     */
+    this._dirty = true;
+};
+
+Vector2.prototype = {
+
+    constructor: Vector2,
+
+    /**
+     * Add b to self
+     * @param  {clay.Vector2} b
+     * @return {clay.Vector2}
+     */
+    add: function(b) {
+        glmatrix_vec2.add(this.array, this.array, b.array);
+        this._dirty = true;
+        return this;
+    },
+
+    /**
+     * Set x and y components
+     * @param  {number}  x
+     * @param  {number}  y
+     * @return {clay.Vector2}
+     */
+    set: function(x, y) {
+        this.array[0] = x;
+        this.array[1] = y;
+        this._dirty = true;
+        return this;
+    },
+
+    /**
+     * Set x and y components from array
+     * @param  {Float32Array|number[]} arr
+     * @return {clay.Vector2}
+     */
+    setArray: function(arr) {
+        this.array[0] = arr[0];
+        this.array[1] = arr[1];
+
+        this._dirty = true;
+        return this;
+    },
+
+    /**
+     * Clone a new Vector2
+     * @return {clay.Vector2}
+     */
+    clone: function() {
+        return new Vector2(this.x, this.y);
+    },
+
+    /**
+     * Copy x, y from b
+     * @param  {clay.Vector2} b
+     * @return {clay.Vector2}
+     */
+    copy: function(b) {
+        glmatrix_vec2.copy(this.array, b.array);
+        this._dirty = true;
+        return this;
+    },
+
+    /**
+     * Cross product of self and b, written to a Vector3 out
+     * @param  {clay.Vector3} out
+     * @param  {clay.Vector2} b
+     * @return {clay.Vector2}
+     */
+    cross: function(out, b) {
+        glmatrix_vec2.cross(out.array, this.array, b.array);
+        out._dirty = true;
+        return this;
+    },
+
+    /**
+     * Alias for distance
+     * @param  {clay.Vector2} b
+     * @return {number}
+     */
+    dist: function(b) {
+        return glmatrix_vec2.dist(this.array, b.array);
+    },
+
+    /**
+     * Distance between self and b
+     * @param  {clay.Vector2} b
+     * @return {number}
+     */
+    distance: function(b) {
+        return glmatrix_vec2.distance(this.array, b.array);
+    },
+
+    /**
+     * Alias for divide
+     * @param  {clay.Vector2} b
+     * @return {clay.Vector2}
+     */
+    div: function(b) {
+        glmatrix_vec2.div(this.array, this.array, b.array);
+        this._dirty = true;
+        return this;
+    },
+
+    /**
+     * Divide self by b
+     * @param  {clay.Vector2} b
+     * @return {clay.Vector2}
+     */
+    divide: function(b) {
+        glmatrix_vec2.divide(this.array, this.array, b.array);
+        this._dirty = true;
+        return this;
+    },
+
+    /**
+     * Dot product of self and b
+     * @param  {clay.Vector2} b
+     * @return {number}
+     */
+    dot: function(b) {
+        return glmatrix_vec2.dot(this.array, b.array);
+    },
+
+    /**
+     * Alias of length
+     * @return {number}
+     */
+    len: function() {
+        return glmatrix_vec2.len(this.array);
+    },
+
+    /**
+     * Calculate the length
+     * @return {number}
+     */
+    length: function() {
+        return glmatrix_vec2.length(this.array);
+    },
+
+    /**
+     * Linear interpolation between a and b
+     * @param  {clay.Vector2} a
+     * @param  {clay.Vector2} b
+     * @param  {number}  t
+     * @return {clay.Vector2}
+     */
+    lerp: function(a, b, t) {
+        glmatrix_vec2.lerp(this.array, a.array, b.array, t);
+        this._dirty = true;
+        return this;
+    },
+
+    /**
+     * Minimum of self and b
+     * @param  {clay.Vector2} b
+     * @return {clay.Vector2}
+     */
+    min: function(b) {
+        glmatrix_vec2.min(this.array, this.array, b.array);
+        this._dirty = true;
+        return this;
+    },
+
+    /**
+     * Maximum of self and b
+     * @param  {clay.Vector2} b
+     * @return {clay.Vector2}
+     */
+    max: function(b) {
+        glmatrix_vec2.max(this.array, this.array, b.array);
+        this._dirty = true;
+        return this;
+    },
+
+    /**
+     * Alias for multiply
+     * @param  {clay.Vector2} b
+     * @return {clay.Vector2}
+     */
+    mul: function(b) {
+        glmatrix_vec2.mul(this.array, this.array, b.array);
+        this._dirty = true;
+        return this;
+    },
+
+    /**
+     * Mutiply self and b
+     * @param  {clay.Vector2} b
+     * @return {clay.Vector2}
+     */
+    multiply: function(b) {
+        glmatrix_vec2.multiply(this.array, this.array, b.array);
+        this._dirty = true;
+        return this;
+    },
+
+    /**
+     * Negate self
+     * @return {clay.Vector2}
+     */
+    negate: function() {
+        glmatrix_vec2.negate(this.array, this.array);
+        this._dirty = true;
+        return this;
+    },
+
+    /**
+     * Normalize self
+     * @return {clay.Vector2}
+     */
+    normalize: function() {
+        glmatrix_vec2.normalize(this.array, this.array);
+        this._dirty = true;
+        return this;
+    },
+
+    /**
+     * Generate random x, y components with a given scale
+     * @param  {number} scale
+     * @return {clay.Vector2}
+     */
+    random: function(scale) {
+        glmatrix_vec2.random(this.array, scale);
+        this._dirty = true;
+        return this;
+    },
+
+    /**
+     * Scale self
+     * @param  {number}  scale
+     * @return {clay.Vector2}
+     */
+    scale: function(s) {
+        glmatrix_vec2.scale(this.array, this.array, s);
+        this._dirty = true;
+        return this;
+    },
+
+    /**
+     * Scale b and add to self
+     * @param  {clay.Vector2} b
+     * @param  {number}  scale
+     * @return {clay.Vector2}
+     */
+    scaleAndAdd: function(b, s) {
+        glmatrix_vec2.scaleAndAdd(this.array, this.array, b.array, s);
+        this._dirty = true;
+        return this;
+    },
+
+    /**
+     * Alias for squaredDistance
+     * @param  {clay.Vector2} b
+     * @return {number}
+     */
+    sqrDist: function(b) {
+        return glmatrix_vec2.sqrDist(this.array, b.array);
+    },
+
+    /**
+     * Squared distance between self and b
+     * @param  {clay.Vector2} b
+     * @return {number}
+     */
+    squaredDistance: function(b) {
+        return glmatrix_vec2.squaredDistance(this.array, b.array);
+    },
+
+    /**
+     * Alias for squaredLength
+     * @return {number}
+     */
+    sqrLen: function() {
+        return glmatrix_vec2.sqrLen(this.array);
+    },
+
+    /**
+     * Squared length of self
+     * @return {number}
+     */
+    squaredLength: function() {
+        return glmatrix_vec2.squaredLength(this.array);
+    },
+
+    /**
+     * Alias for subtract
+     * @param  {clay.Vector2} b
+     * @return {clay.Vector2}
+     */
+    sub: function(b) {
+        glmatrix_vec2.sub(this.array, this.array, b.array);
+        this._dirty = true;
+        return this;
+    },
+
+    /**
+     * Subtract b from self
+     * @param  {clay.Vector2} b
+     * @return {clay.Vector2}
+     */
+    subtract: function(b) {
+        glmatrix_vec2.subtract(this.array, this.array, b.array);
+        this._dirty = true;
+        return this;
+    },
+
+    /**
+     * Transform self with a Matrix2 m
+     * @param  {clay.Matrix2} m
+     * @return {clay.Vector2}
+     */
+    transformMat2: function(m) {
+        glmatrix_vec2.transformMat2(this.array, this.array, m.array);
+        this._dirty = true;
+        return this;
+    },
+
+    /**
+     * Transform self with a Matrix2d m
+     * @param  {clay.Matrix2d} m
+     * @return {clay.Vector2}
+     */
+    transformMat2d: function(m) {
+        glmatrix_vec2.transformMat2d(this.array, this.array, m.array);
+        this._dirty = true;
+        return this;
+    },
+
+    /**
+     * Transform self with a Matrix3 m
+     * @param  {clay.Matrix3} m
+     * @return {clay.Vector2}
+     */
+    transformMat3: function(m) {
+        glmatrix_vec2.transformMat3(this.array, this.array, m.array);
+        this._dirty = true;
+        return this;
+    },
+
+    /**
+     * Transform self with a Matrix4 m
+     * @param  {clay.Matrix4} m
+     * @return {clay.Vector2}
+     */
+    transformMat4: function(m) {
+        glmatrix_vec2.transformMat4(this.array, this.array, m.array);
+        this._dirty = true;
+        return this;
+    },
+
+    toString: function() {
+        return '[' + Array.prototype.join.call(this.array, ',') + ']';
+    },
+
+    toArray: function () {
+        return Array.prototype.slice.call(this.array);
+    }
+};
+
+// Getter and Setter
+if (Object.defineProperty) {
+
+    var proto = Vector2.prototype;
+    /**
+     * @name x
+     * @type {number}
+     * @memberOf clay.Vector2
+     * @instance
+     */
+    Object.defineProperty(proto, 'x', {
+        get: function () {
+            return this.array[0];
+        },
+        set: function (value) {
+            this.array[0] = value;
+            this._dirty = true;
+        }
+    });
+
+    /**
+     * @name y
+     * @type {number}
+     * @memberOf clay.Vector2
+     * @instance
+     */
+    Object.defineProperty(proto, 'y', {
+        get: function () {
+            return this.array[1];
+        },
+        set: function (value) {
+            this.array[1] = value;
+            this._dirty = true;
+        }
+    });
+}
+
+// Supply methods that are not in place
+
+/**
+ * @param  {clay.Vector2} out
+ * @param  {clay.Vector2} a
+ * @param  {clay.Vector2} b
+ * @return {clay.Vector2}
+ */
+Vector2.add = function(out, a, b) {
+    glmatrix_vec2.add(out.array, a.array, b.array);
+    out._dirty = true;
+    return out;
+};
+
+/**
+ * @param  {clay.Vector2} out
+ * @param  {number}  x
+ * @param  {number}  y
+ * @return {clay.Vector2}
+ */
+Vector2.set = function(out, x, y) {
+    glmatrix_vec2.set(out.array, x, y);
+    out._dirty = true;
+    return out;
+};
+
+/**
+ * @param  {clay.Vector2} out
+ * @param  {clay.Vector2} b
+ * @return {clay.Vector2}
+ */
+Vector2.copy = function(out, b) {
+    glmatrix_vec2.copy(out.array, b.array);
+    out._dirty = true;
+    return out;
+};
+
+/**
+ * @param  {clay.Vector3} out
+ * @param  {clay.Vector2} a
+ * @param  {clay.Vector2} b
+ * @return {clay.Vector2}
+ */
+Vector2.cross = function(out, a, b) {
+    glmatrix_vec2.cross(out.array, a.array, b.array);
+    out._dirty = true;
+    return out;
+};
+/**
+ * @param  {clay.Vector2} a
+ * @param  {clay.Vector2} b
+ * @return {number}
+ */
+Vector2.dist = function(a, b) {
+    return glmatrix_vec2.distance(a.array, b.array);
+};
+/**
+ * @function
+ * @param  {clay.Vector2} a
+ * @param  {clay.Vector2} b
+ * @return {number}
+ */
+Vector2.distance = Vector2.dist;
+/**
+ * @param  {clay.Vector2} out
+ * @param  {clay.Vector2} a
+ * @param  {clay.Vector2} b
+ * @return {clay.Vector2}
+ */
+Vector2.div = function(out, a, b) {
+    glmatrix_vec2.divide(out.array, a.array, b.array);
+    out._dirty = true;
+    return out;
+};
+/**
+ * @function
+ * @param  {clay.Vector2} out
+ * @param  {clay.Vector2} a
+ * @param  {clay.Vector2} b
+ * @return {clay.Vector2}
+ */
+Vector2.divide = Vector2.div;
+/**
+ * @param  {clay.Vector2} a
+ * @param  {clay.Vector2} b
+ * @return {number}
+ */
+Vector2.dot = function(a, b) {
+    return glmatrix_vec2.dot(a.array, b.array);
+};
+
+/**
+ * @param  {clay.Vector2} a
+ * @return {number}
+ */
+Vector2.len = function(b) {
+    return glmatrix_vec2.length(b.array);
+};
+
+// Vector2.length = Vector2.len;
+
+/**
+ * @param  {clay.Vector2} out
+ * @param  {clay.Vector2} a
+ * @param  {clay.Vector2} b
+ * @param  {number}  t
+ * @return {clay.Vector2}
+ */
+Vector2.lerp = function(out, a, b, t) {
+    glmatrix_vec2.lerp(out.array, a.array, b.array, t);
+    out._dirty = true;
+    return out;
+};
+/**
+ * @param  {clay.Vector2} out
+ * @param  {clay.Vector2} a
+ * @param  {clay.Vector2} b
+ * @return {clay.Vector2}
+ */
+Vector2.min = function(out, a, b) {
+    glmatrix_vec2.min(out.array, a.array, b.array);
+    out._dirty = true;
+    return out;
+};
+
+/**
+ * @param  {clay.Vector2} out
+ * @param  {clay.Vector2} a
+ * @param  {clay.Vector2} b
+ * @return {clay.Vector2}
+ */
+Vector2.max = function(out, a, b) {
+    glmatrix_vec2.max(out.array, a.array, b.array);
+    out._dirty = true;
+    return out;
+};
+/**
+ * @param  {clay.Vector2} out
+ * @param  {clay.Vector2} a
+ * @param  {clay.Vector2} b
+ * @return {clay.Vector2}
+ */
+Vector2.mul = function(out, a, b) {
+    glmatrix_vec2.multiply(out.array, a.array, b.array);
+    out._dirty = true;
+    return out;
+};
+/**
+ * @function
+ * @param  {clay.Vector2} out
+ * @param  {clay.Vector2} a
+ * @param  {clay.Vector2} b
+ * @return {clay.Vector2}
+ */
+Vector2.multiply = Vector2.mul;
+/**
+ * @param  {clay.Vector2} out
+ * @param  {clay.Vector2} a
+ * @return {clay.Vector2}
+ */
+Vector2.negate = function(out, a) {
+    glmatrix_vec2.negate(out.array, a.array);
+    out._dirty = true;
+    return out;
+};
+/**
+ * @param  {clay.Vector2} out
+ * @param  {clay.Vector2} a
+ * @return {clay.Vector2}
+ */
+Vector2.normalize = function(out, a) {
+    glmatrix_vec2.normalize(out.array, a.array);
+    out._dirty = true;
+    return out;
+};
+/**
+ * @param  {clay.Vector2} out
+ * @param  {number}  scale
+ * @return {clay.Vector2}
+ */
+Vector2.random = function(out, scale) {
+    glmatrix_vec2.random(out.array, scale);
+    out._dirty = true;
+    return out;
+};
+/**
+ * @param  {clay.Vector2} out
+ * @param  {clay.Vector2} a
+ * @param  {number}  scale
+ * @return {clay.Vector2}
+ */
+Vector2.scale = function(out, a, scale) {
+    glmatrix_vec2.scale(out.array, a.array, scale);
+    out._dirty = true;
+    return out;
+};
+/**
+ * @param  {clay.Vector2} out
+ * @param  {clay.Vector2} a
+ * @param  {clay.Vector2} b
+ * @param  {number}  scale
+ * @return {clay.Vector2}
+ */
+Vector2.scaleAndAdd = function(out, a, b, scale) {
+    glmatrix_vec2.scaleAndAdd(out.array, a.array, b.array, scale);
+    out._dirty = true;
+    return out;
+};
+/**
+ * @param  {clay.Vector2} a
+ * @param  {clay.Vector2} b
+ * @return {number}
+ */
+Vector2.sqrDist = function(a, b) {
+    return glmatrix_vec2.sqrDist(a.array, b.array);
+};
+/**
+ * @function
+ * @param  {clay.Vector2} a
+ * @param  {clay.Vector2} b
+ * @return {number}
+ */
+Vector2.squaredDistance = Vector2.sqrDist;
+
+/**
+ * @param  {clay.Vector2} a
+ * @return {number}
+ */
+Vector2.sqrLen = function(a) {
+    return glmatrix_vec2.sqrLen(a.array);
+};
+/**
+ * @function
+ * @param  {clay.Vector2} a
+ * @return {number}
+ */
+Vector2.squaredLength = Vector2.sqrLen;
+
+/**
+ * @param  {clay.Vector2} out
+ * @param  {clay.Vector2} a
+ * @param  {clay.Vector2} b
+ * @return {clay.Vector2}
+ */
+Vector2.sub = function(out, a, b) {
+    glmatrix_vec2.subtract(out.array, a.array, b.array);
+    out._dirty = true;
+    return out;
+};
+/**
+ * @function
+ * @param  {clay.Vector2} out
+ * @param  {clay.Vector2} a
+ * @param  {clay.Vector2} b
+ * @return {clay.Vector2}
+ */
+Vector2.subtract = Vector2.sub;
+/**
+ * @param  {clay.Vector2} out
+ * @param  {clay.Vector2} a
+ * @param  {clay.Matrix2} m
+ * @return {clay.Vector2}
+ */
+Vector2.transformMat2 = function(out, a, m) {
+    glmatrix_vec2.transformMat2(out.array, a.array, m.array);
+    out._dirty = true;
+    return out;
+};
+/**
+ * @param  {clay.Vector2}  out
+ * @param  {clay.Vector2}  a
+ * @param  {clay.Matrix2d} m
+ * @return {clay.Vector2}
+ */
+Vector2.transformMat2d = function(out, a, m) {
+    glmatrix_vec2.transformMat2d(out.array, a.array, m.array);
+    out._dirty = true;
+    return out;
+};
+/**
+ * @param  {clay.Vector2} out
+ * @param  {clay.Vector2} a
+ * @param  {Matrix3} m
+ * @return {clay.Vector2}
+ */
+Vector2.transformMat3 = function(out, a, m) {
+    glmatrix_vec2.transformMat3(out.array, a.array, m.array);
+    out._dirty = true;
+    return out;
+};
+/**
+ * @param  {clay.Vector2} out
+ * @param  {clay.Vector2} a
+ * @param  {clay.Matrix4} m
+ * @return {clay.Vector2}
+ */
+Vector2.transformMat4 = function(out, a, m) {
+    glmatrix_vec2.transformMat4(out.array, a.array, m.array);
+    out._dirty = true;
+    return out;
+};
+
+/* harmony default export */ const math_Vector2 = (Vector2);
+
+;// CONCATENATED MODULE: ./node_modules/claygl/src/gpu/GLProgram.js
+
+
+
+var SHADER_STATE_TO_ENABLE = 1;
+var SHADER_STATE_KEEP_ENABLE = 2;
+var SHADER_STATE_PENDING = 3;
+
+// Enable attribute operation is global to all programs
+// Here saved the list of all enabled attribute index
+// http://www.mjbshaw.com/2013/03/webgl-fixing-invalidoperation.html
+var enabledAttributeList = {};
+
+// some util functions
+function addLineNumbers(string) {
+    var chunks = string.split('\n');
+    for (var i = 0, il = chunks.length; i < il; i ++) {
+        // Chrome reports shader errors on lines
+        // starting counting from 1
+        chunks[i] = (i + 1) + ': ' + chunks[i];
+    }
+    return chunks.join('\n');
+}
+
+// Return true or error msg if error happened
+function checkShaderErrorMsg(_gl, shader, shaderString) {
+    if (!_gl.getShaderParameter(shader, _gl.COMPILE_STATUS)) {
+        return [_gl.getShaderInfoLog(shader), addLineNumbers(shaderString)].join('\n');
+    }
+}
+
+var tmpFloat32Array16 = new core_vendor.Float32Array(16);
+
+var GLProgram = core_Base.extend({
+
+    uniformSemantics: {},
+    attributes: {}
+
+}, function () {
+    this._locations = {};
+
+    this._textureSlot = 0;
+
+    this._program = null;
+}, {
+
+    bind: function (renderer) {
+        this._textureSlot = 0;
+        renderer.gl.useProgram(this._program);
+    },
+
+    hasUniform: function (symbol) {
+        var location = this._locations[symbol];
+        return location !== null && location !== undefined;
+    },
+
+    useTextureSlot: function (renderer, texture, slot) {
+        if (texture) {
+            renderer.gl.activeTexture(renderer.gl.TEXTURE0 + slot);
+            // Maybe texture is not loaded yet;
+            if (texture.isRenderable()) {
+                texture.bind(renderer);
+            }
+            else {
+                // Bind texture to null
+                texture.unbind(renderer);
+            }
+        }
+    },
+
+    currentTextureSlot: function () {
+        return this._textureSlot;
+    },
+
+    resetTextureSlot: function (slot) {
+        this._textureSlot = slot || 0;
+    },
+
+    takeCurrentTextureSlot: function (renderer, texture) {
+        var textureSlot = this._textureSlot;
+
+        this.useTextureSlot(renderer, texture, textureSlot);
+
+        this._textureSlot++;
+
+        return textureSlot;
+    },
+
+    setUniform: function (_gl, type, symbol, value) {
+        var locationMap = this._locations;
+        var location = locationMap[symbol];
+        // Uniform is not existed in the shader
+        if (location === null || location === undefined) {
+            return false;
+        }
+
+        switch (type) {
+            case 'm4':
+                if (!(value instanceof Float32Array)) {
+                    // Use Float32Array is much faster than array when uniformMatrix4fv.
+                    for (var i = 0; i < value.length; i++) {
+                        tmpFloat32Array16[i] = value[i];
+                    }
+                    value = tmpFloat32Array16;
+                }
+                _gl.uniformMatrix4fv(location, false, value);
+                break;
+            case '2i':
+                _gl.uniform2i(location, value[0], value[1]);
+                break;
+            case '2f':
+                _gl.uniform2f(location, value[0], value[1]);
+                break;
+            case '3i':
+                _gl.uniform3i(location, value[0], value[1], value[2]);
+                break;
+            case '3f':
+                _gl.uniform3f(location, value[0], value[1], value[2]);
+                break;
+            case '4i':
+                _gl.uniform4i(location, value[0], value[1], value[2], value[3]);
+                break;
+            case '4f':
+                _gl.uniform4f(location, value[0], value[1], value[2], value[3]);
+                break;
+            case '1i':
+                _gl.uniform1i(location, value);
+                break;
+            case '1f':
+                _gl.uniform1f(location, value);
+                break;
+            case '1fv':
+                _gl.uniform1fv(location, value);
+                break;
+            case '1iv':
+                _gl.uniform1iv(location, value);
+                break;
+            case '2iv':
+                _gl.uniform2iv(location, value);
+                break;
+            case '2fv':
+                _gl.uniform2fv(location, value);
+                break;
+            case '3iv':
+                _gl.uniform3iv(location, value);
+                break;
+            case '3fv':
+                _gl.uniform3fv(location, value);
+                break;
+            case '4iv':
+                _gl.uniform4iv(location, value);
+                break;
+            case '4fv':
+                _gl.uniform4fv(location, value);
+                break;
+            case 'm2':
+            case 'm2v':
+                _gl.uniformMatrix2fv(location, false, value);
+                break;
+            case 'm3':
... 1327480 lines suppressed ...


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@echarts.apache.org
For additional commands, e-mail: commits-help@echarts.apache.org